{"version":3,"file":"index-5261a7f4.js","sources":["../../src/navigations/Routes/MainRoute.ts","../../src/utils/localeUtils.tsx","../../src/WebApiController.ts","../../src/utils/constants/contentId.ts","../../src/utils/constants/contentIdDataMap.ts","../../src/utils/constants/formatContentId.ts","../../src/utils/constants/formatContentIdDataMap.ts","../../src/contexts/ScreenSizeContext/ScreenSizeContext.tsx","../../src/core/themes/responsiveStyle.ts","../../src/hooks/useMatchMedia.ts","../../src/utils/contentUtils.tsx","../../src/utils/stores/memoryStore.ts","../../src/utils/stores/sessionStorageStore.ts","../../src/contexts/ContentContext/ContentContext.tsx","../../src/contexts/ContentContext/Content.tsx","../../src/core/utils/constants.ts","../../src/core/utils/mergeProps.ts","../../src/core/utils/mergeRefs.ts","../../src/core/utils/styled.ts","../../src/core/ui/Button/Button.tsx","../../src/core/ui/Card/Card.tsx","../../src/core/ui/CountBadge/CountBadge.tsx","../../src/core/ui/DividerLine/DividerLine.tsx","../../src/core/ui/DropdownMenu/DropdownMenu.tsx","../../src/core/ui/Popover/Popover.tsx","../../src/core/ui/Stack/Stack.tsx","../../src/core/ui/RadioGroup/RadioGroup.tsx","../../src/core/themes/constants/colors.ts","../../src/core/themes/legacy/shared/base/media-queries.ts","../../src/core/themes/legacy/shared/base/typography-config.ts","../../src/core/themes/legacy/shared/base/typography.ts","../../src/core/themes/legacy/shared/colors.ts","../../src/core/themes/legacy/shared/palette/common-palette-light.ts","../../src/core/themes/legacy/shared/palette/stubhub-brand-palette.ts","../../src/core/themes/legacy/shared/shape.ts","../../src/core/themes/legacy/shared/spacing.ts","../../src/core/themes/legacy/base-theme.ts","../../src/core/themes/legacy/purple-theme.ts","../../src/core/themes/purpleLegacyTheme.ts","../../src/core/themes/ticketUtilLegacyTheme.ts","../../src/core/themes/index.ts","../../src/svgs/Viagogo/enums.ts","../../src/svgs/Viagogo/svg-wrapper/icon-wrapper.tsx","../../src/svgs/Viagogo/functional-svgs/Accessibility.tsx","../../src/svgs/Viagogo/functional-svgs/AisleSeat.tsx","../../src/svgs/Viagogo/functional-svgs/Artist.tsx","../../src/svgs/Viagogo/functional-svgs/Back.tsx","../../src/svgs/Viagogo/functional-svgs/Barcode.tsx","../../src/svgs/Viagogo/functional-svgs/CalendarOutline.tsx","../../src/svgs/Viagogo/functional-svgs/Chat.tsx","../../src/svgs/Viagogo/functional-svgs/Check.tsx","../../src/svgs/Viagogo/functional-svgs/Clock.tsx","../../src/svgs/Viagogo/functional-svgs/Connected.tsx","../../src/svgs/Viagogo/functional-svgs/Cross.tsx","../../src/svgs/Viagogo/functional-svgs/Delete.tsx","../../src/svgs/Viagogo/functional-svgs/Dollar.tsx","../../src/svgs/Viagogo/functional-svgs/Download.tsx","../../src/svgs/Viagogo/functional-svgs/Edit.tsx","../../src/svgs/Viagogo/functional-svgs/ErrorOutline.tsx","../../src/svgs/Viagogo/functional-svgs/ErrorSolid.tsx","../../src/svgs/Viagogo/functional-svgs/Expand.tsx","../../src/svgs/Viagogo/functional-svgs/Filter.tsx","../../src/svgs/Viagogo/functional-svgs/Fold.tsx","../../src/svgs/Viagogo/functional-svgs/Forward.tsx","../../src/svgs/Viagogo/functional-svgs/GenericDisclosures.tsx","../../src/svgs/Viagogo/functional-svgs/GenericFeature.tsx","../../src/svgs/Viagogo/functional-svgs/Hide.tsx","../../src/svgs/Viagogo/functional-svgs/History.tsx","../../src/svgs/Viagogo/functional-svgs/HomeOutline.tsx","../../src/svgs/Viagogo/functional-svgs/InfoOutline.tsx","../../src/svgs/Viagogo/functional-svgs/InfoSolid.tsx","../../src/svgs/Viagogo/functional-svgs/List.tsx","../../src/svgs/Viagogo/functional-svgs/Loading.tsx","../../src/svgs/Viagogo/functional-svgs/LocationOutline.tsx","../../src/svgs/Viagogo/functional-svgs/Lock.tsx","../../src/svgs/Viagogo/functional-svgs/Mail.tsx","../../src/svgs/Viagogo/functional-svgs/Minus.tsx","../../src/svgs/Viagogo/functional-svgs/MobileTicket.tsx","../../src/svgs/Viagogo/functional-svgs/MobileTransfer.tsx","../../src/svgs/Viagogo/functional-svgs/More.tsx","../../src/svgs/Viagogo/functional-svgs/MyTicketsOutline.tsx","../../src/svgs/Viagogo/functional-svgs/Notify.tsx","../../src/svgs/Viagogo/functional-svgs/ObstructedView.tsx","../../src/svgs/Viagogo/functional-svgs/PaperTicketOutline.tsx","../../src/svgs/Viagogo/functional-svgs/PaperTicketsOutline.tsx","../../src/svgs/Viagogo/functional-svgs/ParkingPass.tsx","../../src/svgs/Viagogo/functional-svgs/Pdf.tsx","../../src/svgs/Viagogo/functional-svgs/Plus.tsx","../../src/svgs/Viagogo/functional-svgs/PrintAtHome.tsx","../../src/svgs/Viagogo/functional-svgs/Processing.tsx","../../src/svgs/Viagogo/functional-svgs/ProfileOutline.tsx","../../src/svgs/Viagogo/functional-svgs/Reload.tsx","../../src/svgs/Viagogo/functional-svgs/Reset.tsx","../../src/svgs/Viagogo/functional-svgs/SearchOutline.tsx","../../src/svgs/Viagogo/functional-svgs/SearchSolid.tsx","../../src/svgs/Viagogo/functional-svgs/Seat.tsx","../../src/svgs/Viagogo/functional-svgs/SeatMap.tsx","../../src/svgs/Viagogo/functional-svgs/SellOutline.tsx","../../src/svgs/Viagogo/functional-svgs/Settings.tsx","../../src/svgs/Viagogo/functional-svgs/Share.tsx","../../src/svgs/Viagogo/functional-svgs/SuccessOutline.tsx","../../src/svgs/SvgWrapper.tsx","../../src/svgs/Viagogo/functional-svgs/TicketAlertOutline.tsx","../../src/svgs/Viagogo/functional-svgs/ToBeDetermined.tsx","../../src/svgs/Viagogo/functional-svgs/UnHide.tsx","../../src/svgs/Viagogo/functional-svgs/Upload.tsx","../../src/svgs/Viagogo/functional-svgs/Wallet.tsx","../../src/svgs/Viagogo/functional-svgs/WarningOutline.tsx","../../src/svgs/Viagogo/functional-svgs/WarningSolid.tsx","../../src/svgs/Viagogo/goicons/ArrowDownIcon.tsx","../../src/svgs/Viagogo/goicons/ArrowDownIcon7.tsx","../../src/svgs/Viagogo/goicons/ArrowUpIcon.tsx","../../src/svgs/Viagogo/goicons/ArrowUpIcon7.tsx","../../src/svgs/Viagogo/goicons/CalendarIcon.tsx","../../src/svgs/Viagogo/goicons/ChevronDownIcon.tsx","../../src/svgs/Viagogo/goicons/ChevronLeftIcon.tsx","../../src/svgs/Viagogo/goicons/ChevronRightIcon.tsx","../../src/svgs/Viagogo/goicons/ChevronUpIcon.tsx","../../src/svgs/Viagogo/goicons/SigninIcon.tsx","../../src/svgs/Viagogo/goicons/SignoutIcon.tsx","../../src/svgs/Viagogo/svg-wrapper/payment-wrapper.tsx","../../src/svgs/Viagogo/payment-svgs/BankAccount.tsx","../../src/svgs/Viagogo/payment-svgs/General.tsx","../../src/svgs/Viagogo/payment-svgs/Paypal.tsx","../../src/svgs/Viagogo/payment-svgs/Wallet.tsx","../../src/svgs/Viagogo/payment-svgs/Wire.tsx","../../src/core/ui/ScrollArea/useAnimateScroll.ts","../../src/core/ui/ScrollArea/useScrollEdges.ts","../../src/core/ui/ScrollArea/ScrollArea.tsx","../../src/core/ui/Select/Select.tsx","../../src/core/ui/SimpleTable/SimpleTable.tsx","../../src/core/ui/Switch/Switch.tsx","../../src/core/ui/TextArea/TextArea.tsx","../../src/core/ui/TextField/TextField.tsx","../../src/core/ui/Tooltip/Tooltip.tsx","../../src/core/ui/TooltipPopover/TooltipPopover.tsx","../../src/core/ui/UpDownComboButton/UpDownComboButton.tsx","../../src/components/Buttons/OkButton.tsx","../../src/contexts/GenericDialogContext/GenericDialogContext.tsx","../../src/hooks/useDefaultZoomOption.tsx","../../src/utils/tryExecuteUtils.ts","../../src/contexts/AppContext/AppContext.tsx","../../src/utils/constants/constants.ts","../../src/contexts/AppContext/AppTelemetryProvider.tsx","../../src/contexts/SellerUserSettingsContext/SellerUserSettingsContext.tsx","../../src/hooks/useUserSetting.ts","../../src/contexts/SiteTheme/SiteThemeContext.tsx","../../src/hooks/useKeyPress.tsx","../../src/hooks/useListenForEscapeKeyPressed.ts","../../src/core/interim/dialogs/GenericDialog/GenericDialog.styled.tsx","../../src/core/interim/dialogs/GenericDialog/GenericDialog.tsx","../../src/utils/errorUtils.tsx","../../src/dialogs/ErrorDialog/ErrorDialog.tsx","../../src/hooks/useBasicDialog.tsx","../../src/contexts/ErrorBoundaryContext/ErrorBoundaryContext.tsx","../../src/contexts/ContentContext/SiteContentProvider.tsx","../../src/utils/userPermissionUtils.ts","../../src/utils/userUtils.ts","../../src/hooks/useUserHasFeature.tsx","../../src/tables/Table/constants.ts","../../src/contexts/ActiveFocusContext/ActiveFocusContext.tsx","../../src/components/Buttons/IconButton/IconButton.styled.tsx","../../src/components/Buttons/IconButton/IconButton.tsx","../../src/components/Buttons/ButtonWithIcon.tsx","../../src/components/Buttons/CancelButton.tsx","../../src/components/Buttons/ConfirmButton.tsx","../../src/components/Buttons/ExpireHoldButton.tsx","../../src/hooks/useListExpansion.tsx","../../src/modals/MergeListings/utils.ts","../../src/contexts/CatalogDataContext/CatalogDataContext.utils.ts","../../src/utils/stringUtils.ts","../../src/contexts/SiteTimezoneContext/SiteTimezoneContext.constants.ts","../../src/modals/EditTableColumns/EditTableColumns.constants.ts","../../src/utils/dateTimeUtils.tsx","../../src/utils/numberFormatter.ts","../../src/utils/seatScoreUtils.ts","../../src/components/Events/VenueMap/shared/components/SectionDisplays/SectionDisplay.tsx","../../src/components/Events/VenueMap/shared/components/SectionDisplays/MultiSectionsDisplay.tsx","../../src/components/Events/VenueMap/GeneralAdmissionMessage.tsx","../../src/components/Events/VenueMap/shared/utils/rawFetch.ts","../../src/components/Events/VenueMap/shared/components/ColorBand/ColorBand.tsx","../../src/images/CircleArrowUp.png","../../src/components/Events/VenueMap/shared/utils/addFocalPoint.ts","../../src/components/Events/VenueMap/VenueMap.styled.tsx","../../src/utils/venueConfigUtils.ts","../../src/components/Events/VenueMap/VenueMapContent.hooks.ts","../../src/svgs/AddFileIcon.tsx","../../src/svgs/SignalStep0Icon.tsx","../../src/svgs/SignalStep1Icon.tsx","../../src/svgs/SignalStep2Icon.tsx","../../src/svgs/SignalStep3Icon.tsx","../../src/svgs/AnimatedBroadcastIcon.tsx","../../src/svgs/AnimatedUnbroadcastIcon.tsx","../../src/svgs/AxsLogo.tsx","../../src/svgs/BroadcastFailedIcon.tsx","../../src/svgs/BroadcastIcon.tsx","../../src/svgs/BroadcastIconInverted.tsx","../../src/svgs/BroadcastWithErrorIcon.tsx","../../src/svgs/CompanionIcon.tsx","../../src/svgs/ConfigureIcon.tsx","../../src/svgs/CopyIcon.tsx","../../src/svgs/DiskSaveIcon.tsx","../../src/svgs/DotIcon.tsx","../../src/svgs/DuplicateOutlinedIcon.tsx","../../src/svgs/FlattenedViewIcon.tsx","../../src/svgs/FullPageIcon.tsx","../../src/svgs/FullySoldIcon.tsx","../../src/svgs/GametimeLogo.tsx","../../src/svgs/GroupItemIcon.tsx","../../src/svgs/HamburgerMenuIcon.tsx","../../src/svgs/HistoryIcon.tsx","../../src/svgs/LayoutIcon.tsx","../../src/svgs/ListingGroupIcon.tsx","../../src/svgs/ListingIcon.tsx","../../src/svgs/MailIcon.tsx","../../src/svgs/MapIcon.tsx","../../src/svgs/MarginMetricIcon.tsx","../../src/svgs/MergeIcon.tsx","../../src/svgs/MobileQRIcon.tsx","../../src/svgs/MoneyIcon.tsx","../../src/svgs/OpenLinkIcon.tsx","../../src/svgs/PurchaseIcon.tsx","../../src/svgs/RecenterIcon.tsx","../../src/svgs/SaleAlertIcon.tsx","../../src/svgs/SalesMetricIcon.tsx","../../src/svgs/SeatGeekLogo.tsx","../../src/svgs/SeatSaverIcon.tsx","../../src/svgs/SignalIcon.tsx","../../src/svgs/SplitIcon.tsx","../../src/svgs/StubHubLogo.tsx","../../src/svgs/StubHubProLogo.tsx","../../src/svgs/TagIcon.tsx","../../src/svgs/TicketmasterLogo.tsx","../../src/svgs/TicketUtilLogo.tsx","../../src/svgs/TickPickLogo.tsx","../../src/svgs/UnbroadcastIcon.tsx","../../src/svgs/ViagogoLogo.tsx","../../src/svgs/VividSeatsLogo.tsx","../../src/components/Events/VenueMap/shared/components/ColorBand/CondensedColorBand.tsx","../../src/components/Events/VenueMap/VenueMapContentCondensed.tsx","../../src/components/Events/VenueMap/VenueMapContent.tsx","../../src/components/Events/VenueMap/VenueMap.tsx","../../src/svgs/DealUndercutIcon.tsx","../../src/svgs/ParentListingModeIcon.tsx","../../src/svgs/QualityScoreModeIcon.tsx","../../src/svgs/RowExtrapolationUndercutIcon.tsx","../../src/svgs/SameEventModeIcon.tsx","../../src/svgs/SameSectionModeIcon.tsx","../../src/svgs/SameZoneModeIcon.tsx","../../src/svgs/SimpleUndercutIcon.tsx","../../src/utils/autoPricingUtils.tsx","../../src/utils/eventWithDataUtils.tsx","../../src/hooks/api/useCustomTimeZoneSettings.tsx","../../src/contexts/SiteTimezoneContext/SiteTimezoneContext.tsx","../../src/svgs/AdminHoldIcon.tsx","../../src/components/Listings/AdminHoldBadge/AdminHoldBadge.tsx","../../src/core/POS/PosDropdown/PosDropdown.tsx","../../src/contexts/ActivePosEntityContext/ActivePosEntityContext.tsx","../../src/contexts/EventMapContext/useGetEventMapConfig.tsx","../../src/contexts/EventMapContext/useGetEventMapConfigOverrides.tsx","../../src/contexts/EventMapContext/useGetEventMapsByScoreModelConfig.tsx","../../src/hooks/useGetEventAutoPricingSettings.tsx","../../src/utils/eventQueryUtils.ts","../../src/contexts/FilterQueryContext/FilterQueryContext.tsx","../../src/core/POS/DateRangeSelector/DateRangePresets/DateRangePresets.styled.tsx","../../src/core/POS/DateRangeSelector/DateRangePresets/DateRangePresets.tsx","../../src/core/POS/DateRangeSelector/DateRangePresets/DateRangeRelativePresets.tsx","../../src/core/POS/DateRangeSelector/DateRangeSelector.styled.tsx","../../src/core/POS/DateRangeSelector/DateRangeSelector.tsx","../../src/core/POS/PosSelect/PosEnumSelect.tsx","../../src/core/POS/PosTextField/PosTextField.tsx","../../src/core/POS/PosSelect/SelectInputSearch.tsx","../../src/core/POS/PosSpinner/PosSpinner.styled.tsx","../../src/core/POS/PosSpinner/PosSpinner.tsx","../../src/hooks/useFlexSearchIndex.tsx","../../src/core/POS/PosSelect/PosSelect.tsx","../../src/components/Filters/StackedFilter/StackedFilter.tsx","../../src/components/Filters/StackedFilter/PriceUpdatedDateStackedFilter.tsx","../../src/components/Filters/StackedFilter/SaleDateStackedFilter.tsx","../../src/utils/constants/global.ts","../../src/contexts/MultiSelectionContext/useShiftKeySelection.ts","../../src/contexts/MultiSelectionContext/MultiSelectionContext.tsx","../../src/contexts/MultiSelectionContext/MultiSelectionContext.utils.ts","../../src/contexts/PurchaseDataContext/PurchaseDataContext.constants.ts","../../src/contexts/PurchaseDataContext/useGetAllPurchasesQuery.tsx","../../src/contexts/PurchaseDataContext/useGetTimePeriodPurchasesQuery.tsx","../../src/contexts/PurchaseDataContext/PurchaseDataContext.tsx","../../src/contexts/CatalogMultiSelectionContext/CatalogMultiSelectionContext.tsx","../../src/components/MainFilterBar/useFilterQueryState.ts","../../src/utils/idUtils.ts","../../src/utils/kmeans.ts","../../src/modals/GroupListings/components/groupingTypes.ts","../../src/modals/GroupListings/components/groupingUtils.ts","../../src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/useInventoryEventBulkActionsState.ts","../../src/modals/Modal/Modal.styled.tsx","../../src/modals/Modal/ModalHeader.tsx","../../src/modals/Modal/Modal.tsx","../../src/utils/deepLinkUtils.ts","../../src/contexts/ModalContext/ModalContext.tsx","../../src/contexts/DialogContext/DialogContext.tsx","../../src/contexts/DialogContext/useDialog.tsx","../../src/hooks/useUserHasAnyOfPermissions.tsx","../../src/utils/format.ts","../../src/components/Selectors/PurchaseVendorSelector/usePurchaseVendorSelector.tsx","../../src/hooks/api/useTicketTypes.tsx","../../src/svgs/CustomDeliveryIcon.tsx","../../src/utils/arrayUtils.ts","../../src/utils/ticketTypeUtils.tsx","../../src/navigations/Routes/Settings/Views/SyncCenter/SyncCenter.utils.ts","../../src/components/common/TicketTypePriorityInput/TicketTypePriorityInput.tsx","../../src/components/Purchases/PurchaseActionDropdown/PurchaseActionDropdown.constants.ts","../../src/components/Buttons/DownloadButton.tsx","../../src/core/POS/DnDFileUploader/DnDFileUploader.styled.tsx","../../src/core/POS/DnDFileUploader/SelectedFile/SelectedFile.styled.tsx","../../src/core/POS/DnDFileUploader/SelectedFile/SelectedFile.tsx","../../src/core/POS/DnDFileUploader/DnDFileUploader.tsx","../../src/hooks/useBulkEditHub.ts","../../src/utils/fileUtils.ts","../../src/dialogs/BulkEdits/common/BulkEditHeader/BulkEditHeader.tsx","../../src/dialogs/BulkEdits/BulkUploadPurchaseDialog/components/RequestEventDetailsView.tsx","../../src/dialogs/BulkEdits/BulkUploadPurchaseDialog/BulkUploadPurchaseDialog.tsx","../../src/dialogs/BulkEdits/BulkUploadPurchaseDialog/LaunchBulkUploadPurchaseDialog.tsx","../../src/components/Purchases/PurchaseActionDropdown/PurchaseGlobalActionDropdown.tsx","../../src/components/Selectors/DeliveryTypeSelector/DeliveryTypeSelector.utils.tsx","../../src/components/Selectors/DeliveryTypeSelector/DeliveryTypeSelector.tsx","../../src/components/Selectors/PurchasePaymentMethodSelector/usePurchasePaymentMethodSelector.tsx","../../src/components/Selectors/PurchasePaymentMethodSelector/PurchasePaymentMethodSelector.tsx","../../src/contexts/SellerAccountContext/SellerAccountContext.tsx","../../src/core/POS/PosMultiSelect/PosMultiSelectOptions.tsx","../../src/core/POS/PosMultiSelect/PosMultiSelect.tsx","../../src/components/Selectors/SellerAccountEmployeeSelector/SellerAccountEmployeeMultiSelector.tsx","../../src/hooks/useGetFulfillmentProviderSettings.ts","../../src/navigations/Routes/Settings/Views/FulfillmentProviders/FulfillmentProviderCard.tsx","../../src/svgs/TradedeskTransferLogo.tsx","../../src/svgs/TdcTransferLogo.tsx","../../src/svgs/TaciyonLogo.tsx","../../src/svgs/StubhubFulfillmentLogo.tsx","../../src/navigations/Routes/Settings/Views/FulfillmentProviders/FulfillmentProviders.tsx","../../src/components/Selectors/SellerAccountEmployeeSelector/SellerAccountEmployeeSelector.tsx","../../src/core/interim/Checkbox/Checkbox.tsx","../../src/core/POS/PosFormField/PosFormField.tsx","../../src/components/Events/EventInfo/EventDateDisplay/EventDateDisplay.tsx","../../src/core/POS/PosLink/PosLink.tsx","../../src/core/POS/MessageWithIcon/FailureMessage.tsx","../../src/core/POS/MessageWithIcon/SuccessMessage.tsx","../../src/core/POS/MessageWithIcon/WarningMessage.tsx","../../src/core/ui/AnimatingWrapper/BlinkingWrapper.styled.tsx","../../src/core/ui/AnimatingWrapper/RotatingWrapper.styled.tsx","../../src/core/POS/MessageWithIcon/WorkingMessage.tsx","../../src/components/Events/EventInfo/EventMappingStateDisplay.tsx","../../src/components/Events/EventInfo/EventNameDisplay/EventNameDisplay.tsx","../../src/components/Events/EventInfo/VenueNameDisplay/VenueNameDisplay.tsx","../../src/components/Events/EventInfo/EventInfo.tsx","../../src/components/Events/ConnectedEventInfo/ConnectedEventInfo.tsx","../../src/components/Events/EventItemHeader/EventItemHeader.tsx","../../src/components/Metrics/ListingMetrics.tsx","../../src/components/Metrics/MetricsDisplay/MetricsDisplay.styled.tsx","../../src/components/Metrics/MetricsDisplay/MetricsDisplay.tsx","../../src/core/POS/ContentPlaceholder/ContentPlaceholder.tsx","../../src/components/Metrics/MetricsDisplay/MetricsDisplayPlaceholder.tsx","../../src/core/POS/CircleProgressBar/CircleProgressBar.tsx","../../src/components/Metrics/MetricTile/MetricTile.tsx","../../src/components/Metrics/ListingMetricsV2.tsx","../../src/svgs/UnlistedTicketsIcon.tsx","../../src/utils/ticketMetricUtils.tsx","../../src/components/Metrics/SaleMetrics.tsx","../../src/modals/common/Purchase/PurchaseEventItemHeader/PurchaseEventItemHeader.tsx","../../src/hooks/useTagsForEntityType.tsx","../../src/core/ui/DivWithTitle/DivWithTitle.tsx","../../src/hooks/useUserGroups.ts","../../src/components/TagsFormBody/TagValueCell/TagValueDisplay.tsx","../../src/components/Selectors/PurchaseVendorSelector/PurchaseVendorSelector.tsx","../../src/components/Selectors/UserGroupSelector/UserGroupMultiSelector.tsx","../../src/components/Selectors/UserGroupSelector/UserGroupSelector.tsx","../../src/core/POS/DateSelector/DatePickerInput.tsx","../../src/core/POS/DateSelector/TimePickerInput.tsx","../../src/utils/tagUtils.ts","../../src/components/TagsFormBody/TagValueCell/TagValueInput.tsx","../../src/components/TagsFormBody/TagsFormBody.util.tsx","../../src/components/TagsFormBody/TagValueCell/TagValueInputCell.tsx","../../src/components/TagsFormBody/TagsPanelDisplayMode.tsx","../../src/core/POS/DragAndDropSort/DragAndDrop.tsx","../../src/svgs/EventIcon.tsx","../../src/utils/columns/inventory/inventoryColumnUtils.types.ts","../../src/utils/reportsUtils.tsx","../../src/hooks/useReportConfigs.ts","../../src/hooks/useGetMetricsInUse.ts","../../src/components/TagsFormBody/CreateTagMetadataForm.tsx","../../src/core/interim/dialogs/ConfirmDialog/ConfirmDialog.tsx","../../src/components/TagsFormBody/EditTagMetadataForm.tsx","../../src/components/TagsFormBody/TagsPanelEditMode.tsx","../../src/components/TagsFormBody/TagsFormBodyV2.tsx","../../src/contexts/LocalizationContext/LocalizationContext.tsx","../../src/dialogs/AddPurchasePaymentDialog/AddPurchasePaymentDialog.styled.tsx","../../src/components/Selectors/CurrencyFilterSelector/CurrencyFilterMultiSelector.tsx","../../src/components/Selectors/CurrencyFilterSelector/CurrencyFilterSelector.tsx","../../src/core/interim/Switch/Switch.tsx","../../src/core/POS/PosCurrencyField/PosCurrencyField.tsx","../../src/dialogs/AddPurchasePaymentDialog/components/AddPurchasePaymentTable.styled.tsx","../../src/dialogs/AddPurchasePaymentDialog/components/AddPurchasePaymentTable.tsx","../../src/dialogs/AddPurchasePaymentDialog/components/AddPurchasePaymentTiles.styled.tsx","../../src/dialogs/AddPurchasePaymentDialog/components/GeneratePurchasePaymentsForm.styled.tsx","../../src/dialogs/AddPurchasePaymentDialog/components/AddPurchasePaymentTiles.tsx","../../src/dialogs/AddPurchasePaymentDialog/components/GeneratePurchasePaymentsForm.tsx","../../src/dialogs/AddPurchasePaymentDialog/AddPurchasePaymentDialog.tsx","../../src/modals/common/BackToModalButton.tsx","../../src/dialogs/UnsavedChanges/UnsavedChanges.tsx","../../src/modals/common/CancellableFormFooter.tsx","../../src/modals/common/CloseModalButton.tsx","../../src/modals/common/Detail/Detail.tsx","../../src/modals/common/Detail/Detail.styled.tsx","../../src/modals/common/DetailSection/DetailSection.tsx","../../src/utils/listingNotesUtils.tsx","../../src/components/Selectors/ListingNotesSelector/useListingNotesSelector.tsx","../../src/core/ui/ScrollableToolbar/ScrollableToolbar.tsx","../../src/core/ui/PillList/PillItem.tsx","../../src/core/ui/PillList/PillList.tsx","../../src/core/POS/MultiSelectDropBoxWithPills/MultiSelectDropBoxWithPills.tsx","../../src/components/Input/ListingNoteSelectionInput/ListingNoteSelectionInput.tsx","../../src/core/POS/HorizontalTextList/HorizontalTextList.tsx","../../src/hooks/useGetEventListingConstraints.tsx","../../src/core/POS/PosTextArea/PosTextArea.tsx","../../src/modals/AddNote/AddNote.tsx","../../src/modals/common/ListingNotesSection/ListingNotesSection.tsx","../../src/modals/common/MultiDetailSection/MultiDetailSection.tsx","../../src/modals/common/NextFooter.tsx","../../src/utils/currencyUtils.ts","../../src/dialogs/ConvertCurrency/ConvertCurrencyDialog.tsx","../../src/dialogs/EditPurchasePaymentDialog/EditPurchasePaymentDialog.tsx","../../src/dialogs/PurchaseCostDialog/PurchaseCostDialog.tsx","../../src/hooks/useGetDefaultAutoGeneratedPaymentMethod.tsx","../../src/hooks/useUserHasPurchasePermissions.tsx","../../src/utils/posFieldUtils.ts","../../src/utils/ticketUtils.ts","../../src/tables/PurchaseTicketTable/PurchaseTicketTable.styled.tsx","../../src/contexts/MultiSelectionContext/useClearShiftSelectionOnSortingChange.ts","../../src/utils/dataTableUtils.ts","../../src/app/constants.ts","../../src/core/themes/darkLegacyTheme.ts","../../src/utils/clientLogUtils.ts","../../src/core/utils/createIndexDBPersister.ts","../../src/hooks/useNetworkState.tsx","../../src/views/SomethingWentWrong/SomethingWentWrong.tsx","../../src/views/SomethingWentWrong/RootErrorPage.tsx","../../src/tables/Table/hooks/usePaginationSettings.tsx","../../src/svgs/ClockTrashIcon.tsx","../../src/components/common/SeatingInfo/SeatingInfo.tsx","../../src/utils/getServerSideOnlyMetricsQuery.ts","../../src/contexts/CatalogMetricsContext/CatalogMetrics.type.ts","../../src/contexts/CatalogMetricsContext/CatalogMetrics.utils.ts","../../src/contexts/CatalogMetricsContext/CatalogMetricsContextV2.tsx","../../src/contexts/CatalogMetricsContext/CatalogMetricsContext.tsx","../../src/contexts/CatalogMetricsContext/useCatalogMetricsContext.ts","../../src/components/Filters/Filter.utils.ts","../../src/components/Filters/hooks/useFilterFiltersByPermission.ts","../../src/components/Filters/TextFilter/TextFilter.tsx","../../src/components/Filters/InternalNotesFilter/InternalNotesFilter.tsx","../../src/components/Filters/InternalNotesFilter/useMultipleInternalNotesFilter.tsx","../../src/components/Filters/InternalNotesFilter/useInternalNotesFilter.tsx","../../src/hooks/api/useCities.ts","../../src/hooks/api/useStateProvinces.ts","../../src/components/Selectors/LocationSelector/CityMultiSelector.tsx","../../src/hooks/api/useKnownCountries.ts","../../src/components/Selectors/LocationSelector/CountryMultiSelector.tsx","../../src/components/Selectors/LocationSelector/StateProvinceMultiSelector.tsx","../../src/components/Filters/LocationFilter/useLocationFilter.tsx","../../src/components/Filters/RowFilter/RowFilter.tsx","../../src/components/Filters/SectionFilter/SectionFilter.tsx","../../src/components/FilterToolbar/FilterDialog/FilterDialog.styled.tsx","../../src/components/FilterToolbar/FilterDialog/FilterDialog.tsx","../../src/components/FilterToolbar/FilterToolbar.styled.tsx","../../src/core/POS/PosSearchBox/PosSearchBox.tsx","../../src/core/POS/PosSearchBox/PosSelectableSearchBox.tsx","../../src/dialogs/RequestEventDialog/RequestEventDialog.tsx","../../src/components/Events/EventSearch/EventSearch.styled.tsx","../../src/components/Events/EventSearch/EventSearchDropdownResult/EventSearchDropdownResult.styled.tsx","../../src/components/Events/EventSearch/EventSearchDropdownResult/EventSearchResultItem.tsx","../../src/components/Events/EventSearch/EventSearchDropdownResult/PerformerSearchResultItem.tsx","../../src/components/Events/EventSearch/EventSearchDropdownResult/VenueConfigSearchResultItem.tsx","../../src/components/Events/EventSearch/EventSearchDropdownResult/VenueSearchResultItem.tsx","../../src/components/Events/EventSearch/EventSearchDropdownResult/EventSearchDropdownResult.tsx","../../src/components/Events/EventSearch/EventSearchItem.tsx","../../src/components/Events/EventSearch/EventSearch.tsx","../../src/dialogs/BulkEdits/common/BulkEditFooter/BulkEditFooter.tsx","../../src/dialogs/BulkEdits/BulkChangeEventDialog/BulkChangeEventDialog.tsx","../../src/dialogs/TicketGroupIntentionDialog/TicketGroupIntentionDialog.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkChangeEventAction/LaunchChangeEvent.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkChangeEventAction/useBulkChangeEventAction.tsx","../../src/core/ui/TableCellDiv/TableCellDiv.tsx","../../src/core/ui/TableHeaderCellDiv/TableHeaderCellDiv.tsx","../../src/hooks/useCopyToClipboard.tsx","../../src/hooks/useMapDeliveryTypesToString.ts","../../src/modals/PurchaseWizard/LaunchDownloadUserDocuments.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlow/components/PredeliveryActionsDropdown.tsx","../../src/tables/Table/Table.styled.tsx","../../src/utils/miscUtils.ts","../../src/utils/tableUtils.ts","../../src/modals/common/Purchase/hooks/useGetListingAndSaleIds.ts","../../src/tables/PurchaseTicketTable/configs/TicketGroupStatusIndicator.tsx","../../src/tables/PurchaseTicketTable/configs/TicketGroupTableColumnsConfig.tsx","../../src/tables/PurchaseTicketTable/TicketGroupTable.tsx","../../src/tables/PurchaseTicketTable/PurchaseTicketTable.tsx","../../src/dialogs/SaleCommissionOverrideDialog/SaleCommissionOverrideDialog.constants.ts","../../src/components/common/SetCommissions/SetCommissionsForm.tsx","../../src/svgs/LockedIcon.tsx","../../src/svgs/UnlockedIcon.tsx","../../src/modals/common/Purchase/CommissionSection/LockCommissions/LockCommissions.tsx","../../src/modals/common/Purchase/CommissionSection/CommissionSection.tsx","../../src/modals/common/Purchase/PurchaseModal.styled.tsx","../../src/modals/common/Purchase/CostDetailsTable/CostDetailsTable.styled.tsx","../../src/modals/common/Purchase/CostDetailsTable/CostDetailsTable.tsx","../../src/contexts/DealContext/DealContext.tsx","../../src/core/POS/PosCollapsible/PosCollapsible.tsx","../../src/modals/common/Purchase/Deal/DealConfigHurdle/DealConfigHurdleSplitCommissions.tsx","../../src/modals/common/Purchase/Deal/DealConfigHurdle/DealConfigHurdleSplit.tsx","../../src/modals/common/Purchase/Deal/DealConfigHurdle/DealConfigFallbackHurdle.tsx","../../src/modals/common/Purchase/Deal/DealConfigHurdle/DealConfigHurdle.tsx","../../src/modals/common/Purchase/Deal/DealConfigSection.tsx","../../src/modals/common/Purchase/Deal/DealDateRangeSection.tsx","../../src/modals/common/Purchase/Deal/DealSplitTypeSection.tsx","../../src/modals/common/Purchase/Deal/DealTypeSection.tsx","../../src/modals/common/Purchase/Deal/DealSection.tsx","../../src/modals/common/Purchase/DeliverySection/DeliverySection.styled.tsx","../../src/modals/common/Purchase/DeliverySection/DeliverySection.tsx","../../src/hooks/userGetUserInfo.tsx","../../src/modals/common/Purchase/PaymentDetailsTable/PaymentDetailsTable.styled.tsx","../../src/svgs/ConvertCurrencyIcon.tsx","../../src/utils/paymentMethodUtils.tsx","../../src/modals/common/Purchase/PaymentDetailsTable/PaymentDetailsTable.tsx","../../src/modals/common/Purchase/PurchaseMainDetails.tsx","../../src/dialogs/AddPurchasePaymentMethodDialog/AddPurchasePaymentMethodDialog.tsx","../../src/modals/common/Purchase/PurchasePaymentMethodSelectionInput/PurchasePaymentMethodSelectionInput.tsx","../../src/dialogs/CancelPurchaseDialog/CancelPurchaseDialog.tsx","../../src/dialogs/RestorePurchaseDialog/RestorePurchaseDialog.tsx","../../src/hooks/api/useSyncCenterSetting.ts","../../src/hooks/useGetIsPurchaseIdsInUsedForVendorId.tsx","../../src/core/ui/Tabs/Tabs.tsx","../../src/core/ui/TabPanel/TabPanel.tsx","../../src/core/ui/TabPanel/TabPanel.util.ts","../../src/modals/common/EventEntityHeader/EventEntityHeader.styled.tsx","../../src/modals/common/EventEntityHeader/EventEntityHeader.tsx","../../src/modals/common/EventEntityHeader/ConnectedEventEntityHeader.tsx","../../src/hooks/useEventItemLoadingDisplay.tsx","../../src/modals/common/CancellableFormHeader.tsx","../../src/modals/ActivityLog/ActivityLogModal.constants.ts","../../src/modals/ActivityLog/ActivityLogModal.utils.ts","../../src/modals/ActivityLog/useGetActivityLogByFilter.tsx","../../src/modals/ActivityLog/ActivityLogModal.tsx","../../src/modals/ActivityLog/ActivityLogModal.styled.tsx","../../src/modals/ActivityLog/LaunchActivityLog.tsx","../../src/modals/common/Purchase/PurchaseCurrency/PurchaseCurrency.tsx","../../src/modals/common/Purchase/PurchaseSellerAccountSelector/PurchaseSellerAccountSelector.tsx","../../src/modals/common/ShareButton/ShareButton.tsx","../../src/components/Selectors/PurchaseVendorAccountSelector/usePurchaseVendorAccountSelector.tsx","../../src/modals/common/Purchase/PurchaseVendorAccountSelectionInput/PurchaseVendorAccountSelectionInput.tsx","../../src/svgs/ChevronAccordionIcon.tsx","../../src/core/ui/Accordion/Accordion.tsx","../../src/dialogs/PurchaseVendorDialog/PurchaseVendorDeliveryOverrideInput.tsx","../../src/dialogs/PurchaseVendorDialog/PurchaseVendorDialog.tsx","../../src/modals/common/Purchase/PurchaseVendorSelectionInput/PurchaseVendorSelectionInput.tsx","../../src/modals/common/Purchase/PurchaseVendorHeader/PurchaseVendorHeader.styled.tsx","../../src/modals/common/Purchase/PurchaseVendorHeader/PurchaseVendorHeader.tsx","../../src/modals/common/Purchase/PurchaseWizardFooter.tsx","../../src/dialogs/BulkEdits/BulkUpdateDeliveryOverrideDialog/BulkUpdateDeliveryOverrideDialog.tsx","../../src/dialogs/PurchaseVendorAccountDialog/PurchaseVendorAccountDialog.tsx","../../src/contexts/EmailPurchaseOrderContext/EmailPurchaseOrderContext.tsx","../../src/components/Messages/EmailBody/EmailRenderer.tsx","../../src/components/Messages/EmailBody/EmailBody.tsx","../../src/dialogs/AlertWithSuppressionDialog/AlertWithSuppressionDialog.tsx","../../src/dialogs/AlertWithSuppressionDialog/useAlertWithSuppressionDialog.tsx","../../src/dialogs/AlertWithSuppressionDialog/useCancelTicketGroupDialog.tsx","../../src/dialogs/AlertWithSuppressionDialog/useManualPriceDisableAutoPricingDialog.tsx","../../src/dialogs/AlertWithSuppressionDialog/useSuspiciousPriceChangeDialog.tsx","../../src/dialogs/InternationalComplianceDialog/InternationalComplianceDialog.tsx","../../src/dialogs/InternationalComplianceDialog/useInternationalComplianceDialog.tsx","../../src/dialogs/SecondaryVendorAccountDialog/SecondaryVendorAccountDialog.styled.tsx","../../src/dialogs/SecondaryVendorAccountDialog/SecondaryVendorAccountDialog.tsx","../../src/core/POS/DnDFileUploader/DndFileUploaderContext.tsx","../../src/core/POS/DnDFileUploader/components/DndGlobalFileDrop.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlow/components/PurchaseTicketFlowTitle.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/PurchaseTicketGroupHeader.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/PurchaseTicketGroupPageAdditionalInput.tsx","../../src/components/Events/VenueMap/EventVenueMap.hooks.ts","../../src/components/Events/VenueMap/v3/VenueMapV3Content.utils.ts","../../src/components/Events/VenueMap/v3/VenueMapV3Content.hook.ts","../../src/components/Events/VenueMap/v3/VenueMapV3Content.tsx","../../src/components/Events/VenueMap/v3/VenueMapV3.tsx","../../src/components/Events/VenueMap/EventVenueMap.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/PurchaseTicketGroupVenueMap.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/TicketGroupInputTable/hooks/useTicketGroupListingNotes.tsx","../../src/hooks/api/useDeliveryOverrideForNewTicketGroup.tsx","../../src/tables/SpreadsheetTable/hooks/useSelectionPos.tsx","../../src/tables/SpreadsheetTable/utils.ts","../../src/tables/SpreadsheetTable/hooks/useSpreadsheetCopyPaste.tsx","../../src/tables/SpreadsheetTable/hooks/useSpreadsheetSelection.tsx","../../src/tables/SpreadsheetTable/SpreadsheetSelectionBox.tsx","../../src/core/ui/SortButton/SortButton.utils.ts","../../src/tables/SpreadsheetTable/SpreadsheetTableHeader.tsx","../../src/core/POS/PosFormField/PosFormFieldCell.tsx","../../src/tables/SpreadsheetTable/SpreadsheetTd.tsx","../../src/tables/SpreadsheetTable/SpreadsheetTable.tsx","../../src/contexts/ColumnResizingContext/ColumnResizingContext.types.ts","../../src/tables/SpreadsheetTable/SpreadsheetCell/CurrencyCell.tsx","../../src/tables/SpreadsheetTable/SpreadsheetCell/InputCell.tsx","../../src/tables/SpreadsheetTable/SpreadsheetCell/SpreadsheetCell.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/TicketGroupInputTable/TableGroupInputQuantity.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/TicketGroupInputTable/TicketGroupInputDeliveryType.tsx","../../src/components/Selectors/SectionRowSelector/RowSelector.tsx","../../src/components/Selectors/SectionRowSelector/SectionSelector.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/TicketGroupInputTable/TicketGroupInputRowSelector.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/TicketGroupInputTable/utils/seatRangeUtils.ts","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/TicketGroupInputTable/TicketGroupInputSeatRange.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/TicketGroupInputTable/TicketGroupInputSeatTrait.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/TicketGroupInputTable/TicketGroupInputVenueInput.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/TicketGroupInputTable/hooks/useTicketGroupDeliveryTypes.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/TicketGroupInputTable/hooks/useTicketGroupInputTableColumns.tsx","../../src/components/Listings/ListingsCarousel/ListingsCarousel.styled.ts","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/TicketGroupInputTable/SeatRangeInputModal.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/TicketGroupInputTable/TicketGroupInputTableFooter.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/TicketGroupInputTable/TicketGroupInputTableHeader.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/TicketGroupInputTable/TicketGroupInputTable.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/PurchaseTicketGroupPage.tsx","../../src/components/UploadArtifacts/UploadETickets/UploadETickets.utils.ts","../../src/components/UploadArtifacts/UploadETickets/UploadETicketsForm.tsx","../../src/components/UploadArtifacts/UploadETickets/UploadETickets.styled.tsx","../../src/core/POS/ErrorMessage/ErrorMessage.tsx","../../src/core/POS/ImageMagnifier/ImageMagnifier.tsx","../../src/core/POS/PosDragNDrop/PosDraggable.tsx","../../src/images/Horizontal.png","../../src/images/Vertical.png","../../src/core/POS/PosDragNDrop/PosDragNDrop.styled.tsx","../../src/core/POS/PosDragNDrop/PosDraggableIndicator.tsx","../../src/core/POS/PosDragNDrop/PosDroppable.tsx","../../src/core/POS/PosDragNDrop/PosCustomDragLayer.tsx","../../src/components/UploadArtifacts/UploadETickets/views/UploadETicketsSeatingSection.tsx","../../src/components/UploadArtifacts/UploadETickets/views/UploadETicketsFinalPreviewBody.tsx","../../src/core/POS/SingleFileUploadWithPreview/SingleFileUploadWithPreview.styled.tsx","../../src/core/POS/SingleFileUploadWithPreview/SingleFileUploadWithPreview.tsx","../../src/components/UploadArtifacts/UploadETickets/views/UploadETicketsThumbnailSection.tsx","../../src/components/UploadArtifacts/UploadETickets/views/UploadETicketsSeatAssignmentBody.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlow/components/UploadETicketsSection.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/UploadETickets.utils.ts","../../src/components/UploadArtifacts/UploadETicketsV2/UploadETicketsForm.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/constants.ts","../../src/components/UploadArtifacts/UploadETicketsV2/UploadETicketsContext.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/Draggable/constants.ts","../../src/svgs/SeatIcon.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/Seats/SeatInfo/SeatInfo.tsx","../../src/svgs/PageIcon.tsx","../../src/svgs/PaperTicketsIcon.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/PreviewModal/PreviewInfo/PreviewInfo.tsx","../../src/core/ui/Key/PosKey.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/PreviewModal/PreviewModalNavigationFooter/PreviewModalNavigationFooter.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/UploadETicketsDraggableData.ts","../../src/components/UploadArtifacts/UploadETicketsV2/views/PreviewModal/UploadETicketsPreviewTicketModalBody/UploadETicketsPreviewTicketModalBody.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/PreviewModal/UploadETicketsPreviewTicketModal.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/ClearButton/ClearButton.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/MappedLabel/MappedPageLabel.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/MultiplePageDocument/MultiplePageDocumentPage.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/SinglePageDocument/SinglePageDocumentPage.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/Draggable/PageDragPreview/PageDragPreview.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/MultiplePageDocument/MultipleDraggableDocumentPage.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/MultiplePageDocument/MultiplePageDocument.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/SinglePageDocument/SingleDraggablePageDocument.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/UploadETickets.styled.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/UploadETicketsUploadingFile.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/UploadETicketsTicketsSection.tsx","../../src/hooks/useOnElementResize.ts","../../src/hooks/useTimeoutFlag.ts","../../src/components/UploadArtifacts/UploadETicketsV2/views/Seats/MappedSeat/MappedSeat.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/Seats/UnmappedSeat/UnmappedSeat.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/UploadETicketsSeatingSection.tsx","../../src/components/UploadArtifacts/UploadETicketsV2/views/UploadETicketsSeatAssignmentBody.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlowV2/components/UploadETicketsSectionV2.tsx","../../src/modals/PurchaseWizard/UploadETicketsSectionSelector.tsx","../../src/utils/validation/helpers.ts","../../src/utils/validation/rules.ts","../../src/components/UploadArtifacts/UploadBarcodes/UploadBarcodes.utils.ts","../../src/components/UploadArtifacts/UploadBarcodes/BulkBarcodeInput/BulkBarcodeInput.styled.tsx","../../src/components/UploadArtifacts/UploadBarcodes/BulkBarcodeInput/BulkBarcodeInput.tsx","../../src/components/UploadArtifacts/UploadBarcodes/SeatBarcodeInput/SeatBarcodeInput.tsx","../../src/components/UploadArtifacts/UploadBarcodes/ManualBarcodeEntry/BarcodeInput.tsx","../../src/components/UploadArtifacts/UploadBarcodes/ManualBarcodeEntry/ManualBarcodeEntry.tsx","../../src/components/UploadArtifacts/UploadBarcodes/UploadBarcodesBody.tsx","../../src/components/UploadArtifacts/UploadBarcodes/UploadBarcodesForm.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlow/components/UploadBarcodesSection.tsx","../../src/components/UploadArtifacts/UploadExternalIds/UploadExternalIds.utils.ts","../../src/components/UploadArtifacts/UploadStringArtifacts/BulkStringArtifactInput/BulkExternalIdInput.tsx","../../src/components/UploadArtifacts/UploadStringArtifacts/BulkStringArtifactInput/BulkTicketUrlInput.tsx","../../src/components/UploadArtifacts/UploadStringArtifacts/ManualStringArtifactEntry/ManualExternalIdEntry.tsx","../../src/components/UploadArtifacts/UploadStringArtifacts/ManualStringArtifactEntry/ManualTicketUrlEntry.tsx","../../src/components/UploadArtifacts/UploadExternalIds/UploadExternalIdsBody.tsx","../../src/components/UploadArtifacts/UploadExternalIds/UploadExternalIdsForm.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlow/components/UploadExternalIdsSection.tsx","../../src/components/UploadArtifacts/UploadTicketUrls/UploadTicketUrls.utils.ts","../../src/components/UploadArtifacts/UploadTicketUrls/UploadTicketUrlsBody.tsx","../../src/components/UploadArtifacts/UploadTicketUrls/UploadTicketUrlsForm.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlow/components/UploadTicketUrlsSection.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlow/components/PredeliverySection.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlow/SearchPurchasedEvents.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlow/PurchaseMultiTicketsFlow.tsx","../../src/hooks/useGetEventFullInfo.tsx","../../src/modals/common/Summary/SummaryWrapper.tsx","../../src/modals/common/EventEntityHeader/ListingInfoDisplay.tsx","../../src/hooks/features/useHasSaleDetailsMarketplaceTermsFeature.ts","../../src/hooks/useUserHasSalePermissions.tsx","../../src/modals/SaleDetails/components/CommentSection.tsx","../../src/core/POS/PosPill/PosPill.tsx","../../src/components/common/MarketplacePaymentStatePill/MarketplacePaymentStatePill.tsx","../../src/modals/SaleDetails/components/MarketplacePaymentSection/MarketplacePaymentLineDialog/MarketplacePaymentLineDialog.utils.ts","../../src/modals/SaleDetails/components/MarketplacePaymentSection/MarketplacePaymentLineDialog/MarketplacePaymentLineDialog.tsx","../../src/modals/SaleDetails/components/MarketplacePaymentSection/SetMarketplaceCharge.tsx","../../src/components/MarketplacePayments/hooks/useGetMarketplacePaymentIdQueryParam.ts","../../src/components/common/EmptySectionContent/EmptySectionContent.tsx","../../src/hooks/api/useGetMarketplacePaymentById.ts","../../src/contexts/MarketplacePaymentDataContext/MarketplacePaymentDataContext.constants.ts","../../src/contexts/MarketplacePaymentDataContext/useGetMonthMarketplacePaymentsQuery.tsx","../../src/contexts/MarketplacePaymentDataContext/MarketplacePaymentDataContext.tsx","../../src/contexts/MarketplacePaymentDataContext/useGetMarketplacePaymentLinesWithSales.tsx","../../src/contexts/MarketplacePaymentDataContext/useSingleMonthMarketplacePaymentsQuery.tsx","../../src/hooks/api/useGetCatalogBySaleIds.ts","../../src/hooks/useGetMarketplacePaymentLineTableData.ts","../../src/svgs/AutomatiqLogo.tsx","../../src/svgs/GoTicketsLogo.tsx","../../src/svgs/TicketEvolutionLogo.tsx","../../src/svgs/TicketNetworkLogo.tsx","../../src/components/common/MarketplaceLogo/MarketplaceLogo.tsx","../../src/modals/MaketplacePayments/MarketplacePaymentHeaderDetails.tsx","../../src/components/Accordions/constants.ts","../../src/components/Accordions/useSetEventsAccordionMaxHeight.ts","../../src/components/common/PageSection/PageSection.tsx","../../src/components/common/PageSection/index.ts","../../src/components/Events/EventListing/EventVirtualizedList/useSetTopListItemPosition.ts","../../src/core/ui/Virtuoso/VirtuosoTopListItemWrapper.tsx","../../src/components/Events/EventListing/EventVirtualizedList/EventVirtualizedList.tsx","../../src/components/Events/EventListing/EventVirtualizedList/EventCheckbox.tsx","../../src/components/Events/EventStatus/EventStatus.tsx","../../src/contexts/InputPriceFocusContext/InputPriceFocusContext.tsx","../../src/components/Accordions/EventsAccordion/useGetGroupingTitle.ts","../../src/components/Accordions/EventsAccordion/EventsAccordion.tsx","../../src/contexts/CollapsableViewContext/CollapsableViewContext.tsx","../../src/components/Events/EventPage/hooks/useSingleTableShortcutSelection.tsx","../../src/components/Listings/ListingDisplay/ListingNotesDisplay.tsx","../../src/components/Listings/ListingDisplay/ListingDisplay.tsx","../../src/components/Listings/constants.ts","../../src/components/Listings/listingUtils.tsx","../../src/contexts/ActiveSortTableColumnContext/ActiveSortTableColumnContext.tsx","../../src/utils/columns/purchases/purchasesColumnUtils.types.ts","../../src/utils/columns/sales/salesColumnUtils.types.ts","../../src/modals/EditTableColumns/EditTableColumns.util.ts","../../src/utils/types/sectionType.ts","../../src/modals/EditTableColumns/FormatOptionPill/FormatOptionPill.base.tsx","../../src/modals/EditTableColumns/FormatOptionPill/FormatOptionPill.select.tsx","../../src/modals/EditTableColumns/FormatOptionPill/FormatOptionPill.container.tsx","../../src/navigations/Routes/OnSaleEvent/OnSaleEventView.types.ts","../../src/utils/columns/events/eventsColumnUtils.types.ts","../../src/utils/columns/events/eventsColumnUtils.constants.ts","../../src/utils/columns/inventory/inventoryColumnUtils.constants.ts","../../src/utils/columns/marketplacePayments/marketplacePaymentsColumnsUtils.types.ts","../../src/utils/columns/payments/paymentsColumnUtils.constants.ts","../../src/utils/columns/purchases/purchasesColumnUtils.constants.ts","../../src/utils/columns/sales/salesColumnUtils.constants.ts","../../src/utils/columns/sales/salesReportColumnUtils.constants.ts","../../src/hooks/useColumnUserSetting.tsx","../../src/tables/common/hooks/useSeatingColumnSorting.tsx","../../src/hooks/useSortListingTableSeatingColumn.ts","../../src/utils/columns/customColumnUtils.ts","../../src/utils/columns/customColumnMathUtils.ts","../../src/utils/columns/inventory/inventoryCustomColumnUtils.ts","../../src/navigations/Routes/InventoryEvent/InventoryEvent.constants.ts","../../src/components/Listings/InventoryEventPage/InventoryEventPage.hooks.ts","../../src/contexts/EventHubContext/EventHubContext.tsx","../../src/dialogs/AlertWithSuppressionDialog/useManualPriceAdjustFloorOrCeilingDialog.tsx","../../src/tables/ListingTable/configs/ListingPriceForm.tsx","../../src/core/POS/PosHotkeys/PosHotkeys.tsx","../../src/components/common/MultiSelect/MultiSelectAll.tsx","../../src/components/Listings/AutoPriceResultDisplay/AutoPriceResultDisplay.tsx","../../src/svgs/CheckCircleIcon.tsx","../../src/components/Listings/ListingDeliveryTypeDisplay/ListingDeliveryTypeDisplay.tsx","../../src/svgs/CopyIcon2.tsx","../../src/core/ui/CopyToClipboard/CopyToClipboardV2.tsx","../../src/hooks/useListAndAllInPrice.ts","../../src/modals/InventoryTableColumns/CustomColumnName.tsx","../../src/components/Listings/InventoryActionDropdown/InventoryActionDropdown.constants.ts","../../src/components/common/OpenSubhubDropdownAction/OpenStubhubDropdownAction.tsx","../../src/components/Input/DeliveryTypeRadioInput/DeliveryTypeRadioInput.tsx","../../src/core/POS/DateSelector/DatePickerPresets/DatePickerPresets.tsx","../../src/core/POS/DateSelector/DateSelector.tsx","../../src/components/Input/InHandDateInput/InHandDateInput.tsx","../../src/core/POS/FormPage/FormPage.tsx","../../src/modals/SeatSaverListingWizard/components/DeliverySection.tsx","../../src/modals/SeatSaverListingWizard/components/ListingSection.tsx","../../src/components/Input/VenueRowInput/VenueRowInput.tsx","../../src/components/Input/VenueSectionInput/VenueSectionInput.tsx","../../src/modals/SeatSaverListingWizard/components/SeatingSection.tsx","../../src/modals/SeatSaverListingWizard/components/SeatSaverInput.tsx","../../src/modals/SeatSaverListingWizard/SeatSaverListingWizardBody.tsx","../../src/modals/SeatSaverListingWizard/SeatSaverListingWizard.tsx","../../src/components/Listings/InventoryActionDropdown/components/AddSeatSaverAction/LaunchAddSeatSaver.tsx","../../src/components/Listings/InventoryActionDropdown/components/EnterCompanionModeAction/EnterCompanionModeAction.tsx","../../src/hooks/api/useGetListingMergeSuggestions.utils.ts","../../src/hooks/api/useGetListingMergeSuggestionsByEvent.tsx","../../src/modals/MergeListings/MergeListings.styled.tsx","../../src/dialogs/AlertWithSuppressionDialog/useMergeGroupedListingDialog.tsx","../../src/modals/MergeListings/MergeListingsSuggestionsDisplay.tsx","../../src/modals/MergeListings/MergeListingsBody.tsx","../../src/modals/MergeListings/useMergeGroupedListingsDialog.tsx","../../src/modals/MergeListings/MergeListings.tsx","../../src/hooks/api/useGetListingMergeSuggestions.tsx","../../src/modals/MergeListings/BulkMergeListings/BulkMergeListings.utils.ts","../../src/modals/MergeListings/BulkMergeListings/MergeSuggestionsDisplay.tsx","../../src/modals/MergeListings/BulkMergeListings/EventMergeSuggestionsAccordion.tsx","../../src/modals/MergeListings/BulkMergeListings.tsx","../../src/components/Listings/InventoryActionDropdown/components/MergeListingsAction/LaunchMergeListings.tsx","../../src/components/Listings/InventoryActionDropdown/InventoryEventActionDropdown.tsx","../../src/components/common/BulkActions/BulkBroadcastActions/useBulkBroadcastActionsPermission.ts","../../src/components/Listings/InventoryActionDropdown/components/GroupListingsAction/LaunchGroupListings.tsx","../../src/components/Listings/InventoryActionDropdown/InventoryGlobalActionDropdown.tsx","../../src/hooks/api/useListingGroupPricingSettings.ts","../../src/hooks/useEventMarketplaceSettings.ts","../../src/modals/common/Summary/Summary.styled.tsx","../../src/modals/common/Summary/VenueConfigSummary.tsx","../../src/core/ui/Slider/Slider.tsx","../../src/core/ui/ToggleGroup/ToggleGroup.tsx","../../src/modals/ListingDetails/components/PricingSection/AutoPricingSection.types.ts","../../src/hooks/useAvailableAutopricingModes.tsx","../../src/hooks/useGetAccountAutoPricingSettings.tsx","../../src/utils/types/selectedSectionSettingsWithOptionals.ts","../../src/modals/GroupListings/components/AutoPricingSettings/useListingGroupAutoPricingSettings.ts","../../src/modals/GroupListings/components/AutoPricingSettings/AdvancePricingSettings.tsx","../../src/components/common/FilterPill/FilterPillList.constants.ts","../../src/components/common/FilterPill/RowIdFilterDropdown.tsx","../../src/components/common/FilterPill/FilterPillList.tsx","../../src/hooks/useUserHasListingPermissions.tsx","../../src/modals/ListingDetails/components/useHasListingPricePermissions.tsx","../../src/modals/ListingDetails/components/useListingAutoPricingSettings.tsx","../../src/components/AutoPricing/components/SectionFilterRowNudger.tsx","../../src/components/AutoPricing/components/AutoPricingSectionRowIdFilter.tsx","../../src/dialogs/SectionSelectDialog/SectionSelector.tsx","../../src/dialogs/SectionSelectDialog/SectionSelectDialog.tsx","../../src/hooks/useCompQuantitiesFilter.ts","../../src/hooks/useUndercutAmountSettings.tsx","../../src/modals/GroupListings/components/AutoPricingSettings/AutoPricingSettingsSection.tsx","../../src/modals/GroupListings/components/AutoPricingSettings/AutoPricingSettings.tsx","../../src/components/AutoPricing/useAutoPricingSettingsFormContext.ts","../../src/components/AutoPricing/AutoPricingCompFloorAndCeilingInput/AutoPricingCompFloorAndCeilingInput.tsx","../../src/components/AutoPricing/AutoPricingCompListingModeSelector/AutoPricingCompListingModeSelector.tsx","../../src/components/AutoPricing/AutoPricingCompQuantitiesSelector/AutoPricingCompQuantitiesSelector.tsx","../../src/components/AutoPricing/AutoPricingOutlierDetectionModeSelector/AutoPricingOutlierDetectionModeSelector.tsx","../../src/components/AutoPricing/AutoPricingOutlierDetectionSettingsInput/AutoPricingOutlierDetectionSettingsInput.tsx","../../src/components/AutoPricing/AutoPricingSelectedSectionSettingsInput/AutoPricingSelectedSectionSettingsInput.hooks.ts","../../src/components/AutoPricing/AutoPricingSelectedSectionSettingsInput/AutoPricingSelectedSectionSettingsInput.tsx","../../src/components/AutoPricing/AutoPricingUnderCutRelativeAndAbsoluteAmountsInput/AutoPricingUnderCutRelativeAndAbsoluteAmountsInput.tsx","../../src/components/AutoPricing/AutoPricingSettingsFormContent/AutoPricingSettingsFormContent.tsx","../../src/modals/GroupListings/components/ListingGroupAutoPricingSettingsFormContent/ListingGroupAutoPricingSettingsFormContent.tsx","../../src/modals/GroupListings/components/ListingGroupAutoPricingSettingsFormContentWrapper/ListingGroupAutoPricingSettingsFormContentWrapper.tsx","../../src/modals/GroupListings/components/MarketplaceBroadcast/MarketplaceDisplay.tsx","../../src/modals/GroupListings/components/MarketplaceBroadcast/ListingGroupMarketplaceBroadcast.tsx","../../src/modals/GroupListings/components/GroupingTemplates/GroupTemplateTable.tsx","../../src/modals/GroupListings/components/GroupingTemplates/SeatingSelectionTable.tsx","../../src/modals/GroupListings/components/GroupingTemplates/GroupingTemplates.tsx","../../src/svgs/ShuffleIcon.tsx","../../src/modals/GroupListings/components/ListingGroupInput.hook.ts","../../src/modals/GroupListings/components/ListingGroupTableColumnsConfig.tsx","../../src/modals/GroupListings/components/ListingGroupInputTable.tsx","../../src/modals/GroupListings/components/ListingGroupInput.tsx","../../src/modals/GroupListings/components/GroupingBucketOptions.tsx","../../src/modals/GroupListings/components/ListingTableForGroups.tsx","../../src/modals/GroupListings/components/EventGroupings.tsx","../../src/modals/GroupListings/GroupListingsBody.hook.ts","../../src/modals/GroupListings/GroupListingsBody.tsx","../../src/modals/GroupListings/GroupListings.tsx","../../src/modals/GroupListings/AddToGroupModal.tsx","../../src/tables/ListingTable/configs/ListingGroupActions.tsx","../../src/tables/ListingTable/configs/ListingGroupStatusSummary.tsx","../../src/tables/ListingTable/configs/ListingActionsCell.tsx","../../src/tables/Table/TableCells/DateCell.tsx","../../src/components/common/InHandDateDisplay/InHandDateDisplay.tsx","../../src/tables/Table/TableCells/InHandCell.tsx","../../src/tables/ListingTable/ListingTable.types.ts","../../src/hooks/useListingHasVenueMapInfo.tsx","../../src/tables/ListingTable/configs/AutoPricingToggleCell.tsx","../../src/tables/ListingTable/configs/CompListingBoundsCell.tsx","../../src/utils/columns/columnUtils.types.ts","../../src/utils/columns/events/eventsCustomColumnUtils.constants.ts","../../src/utils/columns/events/eventsCustomColumnUtils.ts","../../src/utils/columns/inventory/inventoryReportCustomColumnUtils.ts","../../src/utils/columns/sales/salesCustomColumnUtils.ts","../../src/utils/columns/columnPersonalizationUtils.ts","../../src/tables/ListingTable/configs/CustomNumericCell.tsx","../../src/tables/ListingTable/configs/ListingPriceCell.styled.tsx","../../src/tables/ListingTable/configs/ListingPriceCell.tsx","../../src/tables/ListingTable/configs/ListingProceedsFloorCell.tsx","../../src/tables/ListingTable/configs/PricingModeCell.tsx","../../src/tables/ListingTable/configs/PricingSettings/CircuitBreakerMinCompListingCount.tsx","../../src/tables/ListingTable/configs/PricingSettings/CircuitBreakerVelocity.tsx","../../src/tables/ListingTable/configs/PricingSettings/CircuitBreakerVelocityPeriod.tsx","../../src/tables/ListingTable/configs/PricingSettings/CompListingExcludeFanInventory.tsx","../../src/tables/ListingTable/configs/PricingSettings/CompListingMinQuantity.tsx","../../src/tables/ListingTable/configs/PricingSettings/OutlierDetectionMode.tsx","../../src/tables/ListingTable/configs/PricingSettings/OutlierFiltering.tsx","../../src/tables/ListingTable/configs/PricingSettings/OutlierLimit.tsx","../../src/tables/ListingTable/configs/PricingSettings/OutlierSpacing.tsx","../../src/tables/ListingTable/configs/UndercutAmountCell.tsx","../../src/tables/ListingTable/configs/ListingTableColumnsConfig.tsx","../../src/tables/ListingTable/ListingTable.tsx","../../src/tables/ListingTable/configs/ListingTableFlattenedColumnsConfig.tsx","../../src/tables/ListingTable/ListingTableFlattened.tsx","../../src/tiles/Tile/Tile.styled.ts","../../src/tiles/ListingTiles/ListingTile.styled.tsx","../../src/tiles/ListingTiles/ListingTiles.tsx","../../src/components/Accordions/InventoryEventsAccordion/InventoryEventsBody.tsx","../../src/components/common/MultiSelect/MultiSelectCloseButton.tsx","../../src/components/common/MultiSelect/MultiSelectActionBar.tsx","../../src/components/common/MultiSelect/MultiSelectActionsContainer.tsx","../../src/components/common/BulkActions/useBulkActionsState.ts","../../src/dialogs/AddAdminHoldDialog/AddAdminHoldInput.tsx","../../src/dialogs/BulkEdits/BulkAddListingAdminHoldDialog/BulkAddListingAdminHoldDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkAddHoldAction/LaunchAddHold.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkAddHoldAction/useBulkAddHoldAction.tsx","../../src/dialogs/BulkEdits/BulkEditBroadcastSettingsDialog/MarketplaceDisplay.tsx","../../src/dialogs/BulkEdits/BulkEditBroadcastSettingsDialog/BulkEditBroadcastSettingsDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkEditBroadcastSettingsAction/useBulkEditBroadcastSettingsAction.tsx","../../src/dialogs/BulkEdits/BulkRemoveHoldDialog/BulkRemoveHoldDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkRemoveHoldAction/LaunchRemoveHold.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkRemoveHoldAction/useBulkRemoveHoldAction.tsx","../../src/dialogs/BulkEdits/BulkUngroupListingsDialog/BulkUngroupListingsDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/LaunchUngroupListingsAction/LaunchUngroupListings.tsx","../../src/components/Listings/InventoryActionDropdown/components/LaunchUngroupListingsAction/useBulkUngroupListings.tsx","../../src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/Actions/BroadcastActions.tsx","../../src/modals/GroupListings/components/AutoPricingSettings/BulkEditAdvancePricingSettings.tsx","../../src/modals/GroupListings/components/AutoPricingSettings/BulkEditAutoPricingSettingsSection.tsx","../../src/modals/GroupListings/components/MarketplaceBroadcast/BulkEditListingGroupSettingsMarketplaceBroadcast.tsx","../../src/dialogs/BulkEdits/BulkEditListingGroupSettingsDialog/BulkEditListingGroupSettingsDialogBody.tsx","../../src/dialogs/BulkEdits/BulkEditListingGroupSettingsDialog/BulkEditListingGroupSettingsDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkEditListingGroupSettingsAction/LaunchBulkEditListingGroupSettings.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkEditListingGroupSettingsAction/useBulkEditListingGroupSettings.tsx","../../src/dialogs/AddSectionGroupDialog/AddSectionGroupDialog.tsx","../../src/core/POS/PosDropdownAnimated/PosDropdownAnimated.tsx","../../src/hooks/useAutoCompMapSectionHandler.tsx","../../src/dialogs/BulkEdits/AddToGroupDialog/AddToGroupDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/GroupListingsAction/LaunchAddToGroup.tsx","../../src/modals/GroupListingsV2/GroupListingsV2.types.ts","../../src/modals/GroupListingsV2/components/GroupsPreview/GroupListingsPreviewTable.constants.tsx","../../src/modals/GroupListingsV2/components/Broadcast/BroadcastMarketplace.tsx","../../src/modals/GroupListingsV2/components/Broadcast/Broadcast.tsx","../../src/modals/GroupListingsV2/GroupListingsV2.constants.ts","../../src/modals/GroupListingsV2/components/SettingsTitle/SettingsTitle.tsx","../../src/modals/GroupListingsV2/components/GroupingMethods/InputRowRanges.tsx","../../src/components/Listings/InventoryEventPage/utils/colorUtils.ts","../../src/modals/GroupListingsV2/components/GroupingMethods/ZoneMap.tsx","../../src/modals/GroupListingsV2/components/GroupingMethods/GroupingMethods.tsx","../../src/modals/GroupListingsV2/components/GroupListingsSetting/GroupListingsSetting.tsx","../../src/modals/GroupListingsV2/ZoneMapGroupsGenerator.ts","../../src/modals/GroupListingsV2/GroupListingsV2.hooks.ts","../../src/modals/GroupListingsV2/components/GroupsPreview/GroupsPreview.utils.ts","../../src/modals/GroupListingsV2/components/GroupsPreview/MoveListingGroupDialog.tsx","../../src/modals/GroupListingsV2/components/GroupsPreview/GroupListingsPreviewTable.tsx","../../src/modals/GroupListingsV2/components/GroupsPreview/GroupListingsPreview.tsx","../../src/modals/GroupListingsV2/components/GroupsPreview/GroupsPreview.tsx","../../src/modals/GroupListingsV2/components/OrderingMethods/OrderingMethods.tsx","../../src/modals/GroupListingsV2/components/RankPremium/RankPremium.tsx","../../src/modals/GroupListingsV2/GroupListingsBody.tsx","../../src/modals/GroupListingsV2/GroupListingsV2.tsx","../../src/components/Listings/InventoryActionDropdown/components/GroupListingsAction/LaunchGroupingWizard.tsx","../../src/components/Listings/InventoryActionDropdown/components/GroupListingsAction/LaunchMoveToGroup.tsx","../../src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/Actions/GroupActions.tsx","../../src/components/common/BulkActions/BulkPricingActions/useBulkPricingActionsPermissions.ts","../../src/dialogs/BulkEdits/BulkEditListingPriceDialog/BulkEditListingPriceDialog.styled.tsx","../../src/dialogs/BulkEdits/BulkEditListingPriceDialog/BulkEditListingPriceDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkChangeListingPriceAction/LaunchChangeListingPrice.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkChangeListingPriceAction/useBulkChangeListingPriceAction.tsx","../../src/dialogs/AlertWithSuppressionDialog/useDeliveryInfoChangeDialog.tsx","../../src/hooks/useMarketplaceHandledByProcessor.ts","../../src/modals/TransferTickets/views/TransferTicketmasterBarcodes.tsx","../../src/modals/TransferTickets/ViewTransferTickets.tsx","../../src/modals/UploadBarcodes/UploadBarcodes.tsx","../../src/modals/UploadBarcodes/ViewBarcodes.tsx","../../src/components/Buttons/BackButton.tsx","../../src/modals/UploadETickets/UploadETickets.tsx","../../src/modals/UploadETickets/ViewETickets.tsx","../../src/modals/UploadExternalIds/UploadExternalIds.tsx","../../src/modals/UploadExternalIds/ViewExternalIds.tsx","../../src/modals/UploadTicketUrls/UploadTicketUrls.tsx","../../src/modals/UploadTicketUrls/ViewTicketUrls.tsx","../../src/modals/ViewTickets/ViewTickets.tsx","../../src/modals/ListingDetails/components/DeliverySection/TicketTypePrioritySection.tsx","../../src/modals/ListingDetails/components/DeliverySection/DeliverySection.tsx","../../src/components/Input/ListingPriceInput/ListingPriceInput.tsx","../../src/modals/ListingDetails/components/EconomicsSection.tsx","../../src/core/POS/ErrorIconMessage/ErrorIconMessage.tsx","../../src/dialogs/DuplicateSeatsSelectionDialog.tsx/DuplicateSeatDialogEntry.tsx","../../src/dialogs/DuplicateSeatsSelectionDialog.tsx/DuplicateSeatsSelectionDialog.tsx","../../src/dialogs/DuplicateSeatsSelectionDialog.tsx/LaunchDuplicateSeatsSelectionDialog.tsx","../../src/modals/ListingDetails/components/DuplicateListingSection/DuplicateListingSection.tsx","../../src/modals/ListingDetails/components/EnableNativeSyncSection/EnableNativeSyncSection.tsx","../../src/components/Input/UploadDocumentInput/UploadDocumentInput.tsx","../../src/dialogs/ProofOfPurchaseUploadDialog/ProofOfPurchaseUploadDialog.tsx","../../src/dialogs/ProofOfPurchaseUploadDialog/LaunchProofOfPurchaseUploadDialog.tsx","../../src/modals/ListingDetails/components/ProofOfPurchaseSection/ProofOfPurchaseSection.tsx","../../src/utils/activityLogUtils.tsx","../../src/modals/ViewSeatsListModal/ViewSeatsListBody.tsx","../../src/modals/ViewSeatsListModal/ViewSeatsListModal.tsx","../../src/modals/ListingDetails/actions/LaunchViewAllSeats.tsx","../../src/modals/ListingDetails/components/TicketsSection.tsx","../../src/dialogs/BulkEdits/BulkEditMarketplacePricesDialog/BulkEditMarketplacePricesDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkChangeMarketplacePriceAction/LaunchChangeMarketplacePrice.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkChangeMarketplacePriceAction/useBulkChangeMarketplacePriceAction.tsx","../../src/hooks/useUserHasAutopricingFeature.tsx","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/BulkEditAutoPricingSettingsDialog.utils.ts","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/useBulkAutoPricingSettings.ts","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/components/PricingSetting.tsx","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/components/AutoPricingEnabled.tsx","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/components/AutoPricingSettings.styled.ts","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/components/PricingSubheader/SettingsSubheader.tsx","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/components/PricingAdvancedSettings/PricingAdvancedSettings.tsx","../../src/contexts/EventMapContext/useGetVenueZoneMapConfigInfo.tsx","../../src/contexts/EventMapContext/useGetVenueZoneMapConfigInfoOverrides.tsx","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/components/PricingAgainst/RowComp.tsx","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/components/PricingAgainst/PricingAgainst.tsx","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/components/PricingProtection/FloorAdjustmentInput.tsx","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/components/PricingProtection/PricingProtection.tsx","../../src/core/interim/dialogs/ConfirmDialog/ConfirmDialogV2.tsx","../../src/core/interim/dialogs/ConfirmDialog/useConfirmDialog.tsx","../../src/hooks/api/useAutoPricingStrategies.tsx","../../src/components/AutoPricing/SimplifiedAutopricingSection/SimplifiedAutopricingGuidedPrice.tsx","../../src/modals/ListingDetails/components/PricingSection/AutoPricingStrategySection.tsx","../../src/components/AutoPricing/SimplifiedAutopricingSection/SimplifiedAutopricingSection.tsx","../../src/components/AutoPricing/SimplifiedAutopricingSectionV2/SimplifiedAutopricingSection.tsx","../../src/components/Listings/ListingNoteBadge/ListingNoteBadge.tsx","../../src/components/Listings/ComparableListingDisplay/ComparableListingDisplayTooltip/DividerLine.tsx","../../src/components/Listings/ComparableListingDisplay/ComparableListingDisplayTooltip/ComparableListingDisplayTooltip.tsx","../../src/components/Listings/ComparableListingDisplay/ComparableListingDisplay.tsx","../../src/components/Listings/ComparableListings/ComparableListingItem/ConnectedComparableListingDisplay.tsx","../../src/components/Listings/ComparableListings/ComparableListingItem/FloorCeilingBarDisplay.tsx","../../src/components/Listings/ComparableListings/ComparableListingItem/YourAutoPricerResultsDisplay.tsx","../../src/components/Listings/ComparableListings/ComparableListingItem/ComparableListingItem.tsx","../../src/components/Listings/ComparableListings/ComparableListings.tsx","../../src/components/Listings/ConnectedComparableListings/ConnectedComparableListings.tsx","../../src/components/Listings/MapWithCompListingsPreview/MapWithCompListingsPreview.hooks.ts","../../src/components/AutoPricing/QuickFloorInput/QuickFloorInput.tsx","../../src/core/ui/FloatingToolbar/FloatingToolbar.tsx","../../src/svgs/QuickAtionShieldIcon.tsx","../../src/components/Listings/MapWithCompListingsPreview/QuickFloorToolbar.tsx","../../src/components/Listings/MapWithCompListingsPreview/MapWithCompListingsPreview.tsx","../../src/hooks/useComparableListingsVenueMapColor.tsx","../../src/hooks/useCompListingDisabledSections.tsx","../../src/hooks/useGetCompListings.tsx","../../src/modals/ListingDetails/components/AutoPricePreview/useAutoPricePreview.tsx","../../src/modals/ListingDetails/components/ListingDetailsModalSidePanel/ListingDetailsModalSidePanelContext.tsx","../../src/modals/ListingDetails/components/AutoPricePreview/AutoPricePreview.tsx","../../src/modals/ListingDetails/components/listingDetailsUtils.tsx","../../src/modals/ListingDetails/components/PricingSection/AdvancePricingSection.tsx","../../src/modals/ListingDetails/components/PricingSection/AutoPricingSettingsSection.hook.tsx","../../src/modals/ListingDetails/components/PricingSection/AutoPricingSettingsSection.tsx","../../src/modals/ListingDetails/components/PricingSection/PricingProtection.tsx","../../src/modals/ListingDetails/components/PricingSection/AutoPricingSection.tsx","../../src/dialogs/AutoPricingStrategyDialog/AutoPricingStrategyDialog.tsx","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/components/PricingStrategy.tsx","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/components/AutoPricingSettings.tsx","../../src/hooks/useOverflowX.ts","../../src/components/Listings/ListingsCarouselCard/ListingsCarouselCard.tsx","../../src/components/Listings/ListingsCarousel/ListingsCarousel.tsx","../../src/components/Listings/CompListingsPreview/CompListingsPreview.tsx","../../src/contexts/EventMapContext/useGetActiveVenueZoneMapSectionGroups.tsx","../../src/hooks/useEventVenueMapSectionHandler.tsx","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/components/BulkEditAutoPricingSettingsSidePanel/BulkEditAutoPricingSettingsSidePanel.hooks.ts","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/components/BulkEditAutoPricingSettingsSidePanel/BulkEditAutoPricingSettingsSidePanel.tsx","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/PricingSettingsPreview/PricingSettingsPreview.types.ts","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/PricingSettingsPreview/PricingSettingsPreview.constants.tsx","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/PricingSettingsPreview/PricingSettingsPreview.hooks.tsx","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/PricingSettingsPreview/PricingSettingsPreview.tsx","../../src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/BulkEditAutoPricingSettingsDialog.tsx","../../src/hooks/api/usePricingConfigFromEventIds.ts","../../src/components/Listings/InventoryActionDropdown/components/BulkEditAutoPricingSettingsAction/LaunchEditAutoPricingSettings.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkEditAutoPricingSettingsAction/useBulkEidtAutoPricingSettings.tsx","../../src/components/common/BulkActions/BulkEditNumber/BulkEditNumber.tsx","../../src/dialogs/BulkEdits/BulkEditListingPricingFloorCeilingDialog/BulkEditListingPricingFloorCeilingDialog.constants.ts","../../src/dialogs/BulkEdits/BulkEditListingPricingFloorCeilingDialog/BulkEditListingPricingFloorCeilingDialog.styled.tsx","../../src/dialogs/BulkEdits/BulkEditListingPricingFloorCeilingDialog/BulkEditListingPricingFloorCeilingDialog.tsx","../../src/hooks/useBulkChangeFloorCeilingActions.tsx","../../src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/Actions/PricingActions.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkChangeEventAction/LaunchChangeEvent.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkChangeEventAction/useBulkChangeEventAction.tsx","../../src/core/POS/MessageWithIcon/InfoMessage.tsx","../../src/dialogs/BulkEdits/BulkChangeTicketTypeRuleDialog/BulkChangeTicketTypeRuleDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkChangeTicketTypeRuleAction/LaunchChangeTicketTypeRule.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkChangeTicketTypeRuleAction/useBulkChangeTicketTypeRuleAction.tsx","../../src/components/Purchases/BulkActions/useUpdatePurchasesPermissions.ts","../../src/components/common/BulkActions/BulkEditCommissionAction/LaunchBulkEditCommission.tsx","../../src/dialogs/BulkEdits/BulkEditCommissionDialog/BulkEditCommissionDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkEditCommissionAction/useBulkEditCommissionAction.tsx","../../src/dialogs/BulkEdits/BulkEditMarketplaceSeatingDialog/BulkEditMarketplaceSeatingDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkEditMarketplaceSeating/LaunchEditMarketplaceSeating.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkEditMarketplaceSeating/useBulkEditMarketplaceSeatingAction.tsx","../../src/dialogs/BulkEdits/BulkRemovePredeliveryDialog/BulkRemovePredeliveryDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkRemovePredeliveryAction/LaunchRemovePredelivery.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkRemovePredeliveryAction/useBulkRemovePredelivery.tsx","../../src/components/common/BulkActions/BulkUpdateAutoFulfillAction/useBulkUpdateAutoFulfillPermissions.ts","../../src/components/common/BulkActions/BulkUpdateAutoFulfillAction/LaunchBulkUpdateAutoFulfill.tsx","../../src/dialogs/BulkEdits/BulkUpdateAutoFulfillDialog/BulkUpdateAutoFulfillDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkUpdateAutoFulfillAction/useBulkUpdateAutoFulfillAction.tsx","../../src/dialogs/BulkEdits/BulkEditDeliveryTypeDialog/BulkEditDeliveryTypeDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkUpdateDeliveryType/LaunchBulkUpdateDeliveryType.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkUpdateDeliveryType/useBulkUpdateDeliveryType.tsx","../../src/components/common/BulkActions/BulkUpdateInternalNotesAction/useBulkUpdateInternalNotesPermissions.ts","../../src/components/common/BulkActions/BulkUpdateInternalNotesAction/LaunchBulkUpdateInternalNotes.tsx","../../src/dialogs/BulkEdits/BulkUpdateInternalNotesDialog/BulkUpdateInternalNotesDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkUpdateInternalNotesAction/useBulkUpdateInternalNotesAction.tsx","../../src/dialogs/BulkEdits/BulkEditSeatTraitsDialog/BulkEditSeatTraitsDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkUpdateSeatTraits/LaunchBulkUpdateSeatTraits.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkUpdateSeatTraits/useBulkUpdateSeatTraits.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkWasteTicketsAction/LaunchBulkWasteTickets.tsx","../../src/dialogs/BulkEdits/BulkWasteTicketsDialog/BulkWasteTicketsDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkWasteTicketsAction/useBulkWasteTicketsAction.tsx","../../src/dialogs/BulkEdits/BulkDeleteSeatSaversDialog/BulkDeleteSeatSaversDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/LaunchDeleteSeatSaversAction/LaunchDeleteSeatSavers.tsx","../../src/components/Listings/InventoryActionDropdown/components/LaunchDeleteSeatSaversAction/useBulkDeleteSeatSavers.tsx","../../src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/Actions/SettingsActions.tsx","../../src/components/common/BulkActions/BulkEditTagsAction/useBulkEditTagsPermissions.ts","../../src/components/common/BulkActions/BulkEditTagsAction/BulkEditTagsActionPermissionsHandler.tsx","../../src/dialogs/BulkEdits/BulkEditTagDialog/BulkEditTagDialog.styled.tsx","../../src/dialogs/BulkEdits/BulkEditTagDialog/BulkEditTagDialog.tsx","../../src/components/common/BulkActions/BulkEditTagsAction/LaunchBulkEditTags.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkEditTagsAction/useBulkEditTagsAction.tsx","../../src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/Actions/TagsActions.tsx","../../src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/InventoryEventBulkActions.tsx","../../src/components/Listings/InventoryEventPage/Sections/ManualPricingSection.utils.ts","../../src/utils/groupingUtils.ts","../../src/tables/EventsTable/configs/EventDisplayCell.tsx","../../src/navigations/Routes/InventoryEvent/InventoryEvent.utils.ts","../../src/tables/EventsTable/configs/EventsActionCell.tsx","../../src/tables/EventsTable/configs/LocationDisplayCell.tsx","../../src/tables/EventsTable/configs/VenueDisplayCell.tsx","../../src/tables/EventsTable/configs/EventsTableColumnsConfig.tsx","../../src/components/Reports/ReportsExport/ReportsExport.types.ts","../../src/tables/ReportTableCommon/LinkCell.tsx","../../src/tables/ReportTableCommon/ReportTableCommon.constants.ts","../../src/tables/ReportTableCommon/TableHeader.tsx","../../src/tables/ReportTableCommon/TextCell.tsx","../../src/tables/ListingTable/configs/CustomNumericFooterCell.tsx","../../src/tables/ListingTable/configs/ListingReportTableColumnsConfig.tsx","../../src/svgs/AutomatiqSquareLogo.tsx","../../src/svgs/AxsSquareLogo.tsx","../../src/svgs/FaxExchangeSquareLogo.tsx","../../src/svgs/GametimeSquareLogo.tsx","../../src/svgs/GoTicketsSquareLogo.tsx","../../src/svgs/LyteSquareLogo.tsx","../../src/svgs/SeatGeekSquareLogo.tsx","../../src/svgs/StubHubSquareLogo.tsx","../../src/svgs/TicketEvolutionSquareLogo.tsx","../../src/svgs/TicketmasterSquareLogo.tsx","../../src/svgs/TicketNetworkSquareLogo.tsx","../../src/svgs/TickPickSquareLogo.tsx","../../src/svgs/VividSeatsSquareLogo.tsx","../../src/components/common/MarketplaceSquareLogo/MarketplaceSquareLogo.tsx","../../src/components/MarketplacePayments/ConvertPaymentAmount/ConvertPaymentAmount.tsx","../../src/tables/MarketplacePaymentsTable/Cells/MarketplacePaymentOptionsAction.tsx","../../src/tables/MarketplacePaymentsTable/Cells/MarketplacePaymentsActionsCell.tsx","../../src/tables/MarketplacePaymentsTable/MarketplacePaymentsTableCommon.constants.ts","../../src/tables/MarketplacePaymentsTable/useMarketplacePaymentsTableColumnsConfig.tsx","../../src/tables/PaymentsTable/useDefaultPaymentsColumnConfig.tsx","../../src/tables/PurchaseTable/PurchaseTable.types.ts","../../src/components/Purchases/CommissionsCell/CommissionsCell.tsx","../../src/tables/PurchaseTable/configs/PurchaseActionsCell.tsx","../../src/tables/PurchaseTable/configs/PurchaseIdCell.tsx","../../src/tables/PurchaseTable/configs/PurchaseTableColumnsConfig.tsx","../../src/tables/SalesTable/configs/SaleReportTableColumnsAccessor.tsx","../../src/tables/SalesTable/configs/SaleReportTableColumnsConfig.utils.ts","../../src/tables/SalesTable/configs/SaleReportTableColumnsConfig.tsx","../../src/components/common/MerchantDisplay/MerchantDisplay.tsx","../../src/components/Sales/SaleMarketplaceIdDisplay/SaleMarketplaceIdDisplay.tsx","../../src/tables/SalesTable/configs/ProceedsCell.tsx","../../src/tables/SalesTable/SalesTable.type.ts","../../src/tables/SalesTable/configs/SalesActionsCell.tsx","../../src/tables/SalesTable/configs/SaleTableColumnsConfig.tsx","../../src/tables/SalesTable/configs/SaleTableFlattenedColumnsConfig.tsx","../../src/modals/InventoryTableColumns/ColumnListItem/ColumnListItem.tsx","../../src/modals/InventoryTableColumns/useColumnDisplayName.tsx","../../src/modals/ColumnSettings/ColumnsSection.tsx","../../src/svgs/OperatorsIcon.tsx","../../src/modals/ColumnSettings/CustomColumnInstruction.tsx","../../src/modals/ColumnSettings/TableCustomColumnModal.tsx","../../src/modals/ColumnSettings/TableColumnsInput.tsx","../../src/modals/ColumnSettings/ColumnSettings.tsx","../../src/components/common/MultiSelect/Toggle/contants.ts","../../src/svgs/MultiEditCheckboxChecked.tsx","../../src/svgs/MultiEditCheckboxUnchecked.tsx","../../src/components/common/MultiSelect/Toggle/MultiSelectionToggle.tsx","../../src/components/common/MultiSelect/Toggle/MultiSelectionToggleGroup.tsx","../../src/components/Accordions/InventoryEventsAccordion/EventListingHeader.tsx","../../src/components/Accordions/InventoryEventsAccordion/InventoryEventsAccordion.tsx","../../src/tables/SalesTable/SalesTable.tsx","../../src/tiles/SaleTiles/SaleTiles.styled.tsx","../../src/tiles/SaleTiles/SaleTiles.tsx","../../src/components/Accordions/SalesEventsAccordion/EventSaleBody.tsx","../../src/components/Sales/BulkActions/SalesBulkActionsPermissions.tsx","../../src/components/Sales/BulkActions/useUpdateSalesSettingsPermissions.ts","../../src/components/Sales/SalesActionDropdown/SalesActionDropdown.constants.ts","../../src/components/Sales/SalesActionDropdown/components/BulkEditCommissionAction/useBulkEditCommissionAction.tsx","../../src/dialogs/BulkEdits/BulkMarkSaleAsPaidDialog/BulkMarkSaleAsPaidDialog.tsx","../../src/components/Sales/SalesActionDropdown/components/BulkMarkSaleAsPaid/LaunchBulkMarkSaleAsPaid.tsx","../../src/components/Sales/SalesActionDropdown/components/BulkMarkSaleAsPaid/useBulkMarkSaleAsPaid.tsx","../../src/components/Sales/SalesActionDropdown/components/BulkUpdateInternalNotesAction/useBulkUpdateInternalNotesAction.tsx","../../src/modals/SaleDetails/components/PaymentCurrencyConversionSection.tsx","../../src/modals/SaleDetails/components/PaymentSection/SaleLineItemModal/ChargeOrCreditReason/ChargeReasonSelector.tsx","../../src/modals/SaleDetails/components/PaymentSection/SaleLineItemModal/ChargeOrCreditReason/CreditReasonSelector.tsx","../../src/modals/SaleDetails/hooks/useHasPaymentsSectionsV2Feature.ts","../../src/modals/SaleDetails/components/PaymentSection/SaleLineItemModal/ChargeOrCreditReason/ChargeOrCreditReasonSelector.tsx","../../src/modals/SaleDetails/components/PaymentSection/SaleLineItemModal/SaleLineItemModal.tsx","../../src/hooks/features/useHasWasteSaleFeature.ts","../../src/modals/SaleDetails/hooks/useShouldHideForWastedSale.ts","../../src/modals/SaleDetailsV2/SaleDetails.constants.ts","../../src/modals/SaleDetailsV2/hooks/useGetModalGridFormat.ts","../../src/modals/SaleDetails/components/PaymentSection/PaymentSection.tsx","../../src/modals/SaleDetails/components/SaleCancellationReason.tsx","../../src/modals/SaleDetailsV2/components/DeliverySection.tsx","../../src/modals/SaleDetailsV2/components/FulfillmentSection.tsx","../../src/dialogs/BulkEdits/BulkEditSalesSettingsDialog/BulkEditSalesSettingsDialog.tsx","../../src/components/Sales/SalesActionDropdown/components/BulkUpdateSalesGeneralSettings/LaunchUpdateSaleSettings.tsx","../../src/components/Sales/SalesActionDropdown/components/BulkUpdateSalesGeneralSettings/useBulkUpdateSalesSettings.tsx","../../src/components/Sales/BulkActions/useSalesBulkActionsState.ts","../../src/components/Sales/BulkActions/SalesEventBulkActions/Actions/SettingsActions.tsx","../../src/components/Sales/SalesActionDropdown/components/BulkEditTagsAction/useBulkEditTagsAction.tsx","../../src/components/Sales/BulkActions/SalesEventBulkActions/Actions/TagsActions.tsx","../../src/components/common/BulkActions/BulkMarkAsFulfilled/LaunchBulkMarkAsFulfilled.tsx","../../src/components/Sales/SalesActionDropdown/SalesGlobalActionDropdown.tsx","../../src/dialogs/BulkEdits/BulkMarkAsFulfilledDialog/BulkMarkAsFulfilledDialog.tsx","../../src/components/Sales/SalesActionDropdown/components/BulkMarkAsFulfilled/useBulkMarkAsFulfilledAction.tsx","../../src/components/Sales/SalesActionDropdown/components/BulkUpdateAutoFulfillAction/useBulkUpdateAutoFulfillAction.tsx","../../src/components/Sales/BulkActions/SalesGlobalBulkActions/Actions/FulfillmentActions.tsx","../../src/components/Sales/BulkActions/SalesEventBulkActions/SalesEventBulkActions.tsx","../../src/components/Accordions/SalesEventsAccordion/EventSaleHeader.styled.tsx","../../src/components/Accordions/SalesEventsAccordion/FullPageEventAction.tsx","../../src/components/Accordions/SalesEventsAccordion/EventSaleHeader.tsx","../../src/components/Accordions/SalesEventsAccordion/SalesEventsAccordion.tsx","../../src/tables/MarketplacePaymentLinesTable/MarketplacePaymentLinesTableCommon.constants.ts","../../src/utils/columns/marketplacePaymentLines/marketplacePaymentLinesColumnsUtils.types.ts","../../src/dialogs/LinkMarketplacePaymentToSaleDialog/useGetRemainingBalance.ts","../../src/dialogs/LinkMarketplacePaymentToSaleDialog/SaleLineItemModalWrapper.tsx","../../src/hooks/api/useGetSaleLineItemsBySaleId.ts","../../src/dialogs/LinkMarketplacePaymentToSaleDialog/SaleChargesTable.tsx","../../src/dialogs/LinkMarketplacePaymentToSaleDialog/LinkMarketplacePaymentToSaleDialog.tsx","../../src/hooks/api/useUnlinkMarketplacePaymentLineToSale.ts","../../src/dialogs/UnlinkMarketplacePaymentLineDialog/UnlinkMarketplacePaymentLineToSaleDialog.tsx","../../src/hooks/api/useGetSaleByAmbiguousIdWithCatalogData.ts","../../src/dialogs/LinkMarketplacePaymentLineDialog/SaleEventBox/SaleEventBox.tsx","../../src/hooks/api/useLinkMarketplacePaymentLineToSale.ts","../../src/dialogs/LinkMarketplacePaymentLineDialog/LinkMarketplacePaymentLineToSaleDialog.tsx","../../src/tables/MarketplacePaymentLinesTable/Cell/LinkMarketplacePaymentLineToSale.tsx","../../src/tables/MarketplacePaymentLinesTable/Cell/MarketplacePaymentLinesActionsCell.tsx","../../src/tables/MarketplacePaymentLinesTable/useMarketplacePaymentLinesTableColumnsConfig.tsx","../../src/tables/MarketplacePaymentLinesTable/MarketplacePaymentLinesTable.tsx","../../src/modals/MaketplacePayments/MarketplacePaymentsDetailsModalBody.tsx","../../src/modals/MaketplacePayments/MarketplacePaymentsDetailsModal.tsx","../../src/modals/MaketplacePayments/MarketplacePaymentsDetails.tsx","../../src/utils/marketplacePaymentUtils.ts","../../src/modals/SaleDetails/components/MarketplacePaymentSection/MarketplacePaymentLines.tsx","../../src/modals/SaleDetails/components/MarketplacePaymentSection/MarketplacePaymentSection.tsx","../../src/modals/SaleDetails/components/MarketplacePaymentTerms/MarketplacePaymentTerms.tsx","../../src/modals/SaleDetails/components/PaymentSectionV2/PaymentSectionTable/PaymentSectionTable.tsx","../../src/modals/SaleDetails/components/PaymentSectionV2/PaymentSectionV2.tsx","../../src/modals/SaleDetails/components/PaymentSectionSelector.tsx","../../src/modals/SaleDetails/components/TagsSection.tsx","../../src/modals/SaleDetails/SaleDetails.constants.ts","../../src/modals/SaleDetails/SaleDetailsFooter.tsx","../../src/modals/SaleDetails/components/AutoSourceTickets.tsx","../../src/core/ui/CopyToClipboard/CopyToClipboard.tsx","../../src/components/common/LinkAndCopy/LinkAndCopy.tsx","../../src/modals/SaleDetails/components/ListingLinksDetail.tsx","../../src/modals/SaleDetailsV2/components/SaleTickets/AllocatedListing.tsx","../../src/modals/SaleDetailsV2/components/SaleTickets/OriginalListing.tsx","../../src/modals/SaleDetailsV2/components/SaleTickets/SaleTickets.tsx","../../src/modals/common/PurchaseInfoSection/PurchaseInfoSection.tsx","../../src/dialogs/SaleCommissionOverrideDialog/SaleCommissionOverrideFormWrapper.tsx","../../src/dialogs/SaleCommissionOverrideDialog/SaleCommissionOverrideDialog.tsx","../../src/modals/SaleDetails/components/Commissions/Commissions.constants.ts","../../src/modals/SaleDetails/components/Commissions/CommissionsOverrideTable/CommissionsOverridesTable.tsx","../../src/modals/SaleDetails/components/Commissions/CommissionsTable/CommissionsTable.tsx","../../src/modals/SaleDetails/components/Commissions/CommissionsSection.tsx","../../src/modals/SaleDetailsV2/components/YourSaleSection.tsx","../../src/modals/SaleDetailsV2/SaleDetailsModalBody.tsx","../../src/modals/SaleDetails/SaleDetails.tsx","../../src/modals/SaleDetails/components/TicketsSection.tsx","../../src/modals/ConfirmSale/SeatingAllocationInput/SeatingAllocationInput.tsx","../../src/modals/ConfirmSale/SeatingAllocationInput/SeatingAllocationInputV1.tsx","../../src/modals/ConfirmSale/SeatingAllocationInput/SeatingSingleTicketAllocationInput.tsx","../../src/modals/ConfirmSale/SeatingAllocationInput/SeatingAllocationInputV2.tsx","../../src/modals/ConfirmSale/ConfirmSale.tsx","../../src/modals/SaleDetails/actions/LaunchConfirmSale.tsx","../../src/components/Buttons/DeallocateButton.tsx","../../src/modals/SaleDetails/actions/LaunchDeallocateSale.tsx","../../src/modals/SaleDetails/actions/LaunchDownloadUserDocuments.tsx","../../src/components/Selectors/BuyerSelector/useBuyerSelector.tsx","../../src/modals/ManagedMarketplaceSale/components/BuyerSection.tsx","../../src/modals/ManagedMarketplaceSale/components/MarketplaceSaleInfoSection.tsx","../../src/modals/ManagedMarketplaceSale/components/TicketSection.tsx","../../src/modals/ManagedMarketplaceSale/ManagedMarketplaceSaleBody.tsx","../../src/modals/ManagedMarketplaceSale/ManagedMarketplaceSale.tsx","../../src/modals/SaleDetails/actions/LaunchEditOfflineSale.tsx","../../src/modals/SaleDetails/actions/LaunchExpireHold.tsx","../../src/modals/SaleDetails/actions/LaunchMarkAsFulfilled.tsx","../../src/components/Buttons/RejectButton.tsx","../../src/modals/SaleDetails/actions/LaunchRejectSale.tsx","../../src/modals/SaleDetails/actions/LaunchResetFulfillment.tsx","../../src/modals/SaleDetails/components/ResetFulfillmentDialog.tsx","../../src/modals/SaleDetails/actions/LaunchResetFulfillmentV2.tsx","../../src/modals/SaleDetails/actions/LaunchResetFulfillmentButton.tsx","../../src/dialogs/TurnOnSaleAutoFulfillDialog/TurnOnSaleAutoFulfillDialog.tsx","../../src/modals/TransferTickets/views/ImageProof.tsx","../../src/modals/TransferTickets/views/ProofTypeSelection.tsx","../../src/modals/TransferTickets/views/TransferIdProof.tsx","../../src/modals/TransferTickets/views/TransferTicketsRecipientBody.tsx","../../src/modals/TransferTickets/views/UrlProof/URLInput.tsx","../../src/modals/TransferTickets/views/UrlProof/UrlProof.tsx","../../src/modals/TransferTickets/TransferTickets.tsx","../../src/modals/SaleDetails/actions/LaunchTransferTickets.tsx","../../src/hooks/api/useUnwasteSale.ts","../../src/modals/SaleDetails/components/UnwasteTickets/UnwasteTicketsButton.tsx","../../src/modals/UploadBarcodes/LaunchUploadBarcodes.tsx","../../src/modals/UploadETickets/UploadETicketsV2.tsx","../../src/modals/PurchaseWizard/UploadETicketsSelector.tsx","../../src/modals/UploadETickets/LaunchUploadETickets.tsx","../../src/svgs/CancelledHoldIcon.tsx","../../src/svgs/FulfilledIcon.tsx","../../src/svgs/FulfillmentFailedIcon.tsx","../../src/svgs/HoldIcon.tsx","../../src/svgs/PendingAllocationIcon.tsx","../../src/svgs/PendingFulfillmentIcon.tsx","../../src/svgs/PendingRejectionIcon.tsx","../../src/svgs/ProcessingFulfillmentIcon.tsx","../../src/svgs/SaleCancelledIcon.tsx","../../src/utils/saleUtils.tsx","../../src/modals/common/EventEntityHeader/SaleInfoDisplay.tsx","../../src/modals/common/Summary/Summary.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlow/components/PurchaseTicketFlowEventHeader.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlow/components/CostSection.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlow/components/DeliverySection.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlow/components/NewListingSection.tsx","../../src/modals/common/Purchase/SeatTraitsSelectionInput/SeatTraitsSelectionInput.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlow/components/SeatingSection.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlow/TicketGroupInput.tsx","../../src/modals/PurchaseWizard/PurchaseTicketsFlow/PurchaseTicketsFlow.tsx","../../src/modals/PurchaseWizard/PurchaseWizard.types.tsx","../../src/modals/PurchaseWizard/PurchaseWizardBody.tsx","../../src/modals/PurchaseWizard/PurchaseWizard.tsx","../../src/modals/PurchaseWizard/PurchaseWizardModalConfig.tsx","../../src/utils/purchaseUtils.tsx","../../src/contexts/NotificationsContext/NativeNotification.tsx","../../src/contexts/NotificationsContext/NotificationsContext.tsx","../../src/contexts/BulkEditHubContext/BulkEditHubContext.tsx","../../src/components/common/BulkActions/BulkEditStatus/components/BulkEditErrorList/BulkEditErrorList.tsx","../../src/components/common/BulkActions/BulkEditStatus/components/BulkEditPreviewDisplay/BulkEditGettingPreview.tsx","../../src/components/common/BulkActions/BulkEditStatus/components/BulkEditPreviewDisplay/BulkEditPreviewListingDetails.tsx","../../src/tables/PurchaseTicketTable/useGetPurchasesTableColumns.ts","../../src/tables/PurchaseTable/usePurchaseTableData.tsx","../../src/tables/PurchaseTable/usePurchaseTableSelection.tsx","../../src/tables/PurchaseTable/PurchaseTable.tsx","../../src/components/common/BulkActions/BulkEditStatus/components/BulkEditPreviewDisplay/BulkEditPreviewPurchaseDetails.tsx","../../src/tables/SalesTable/SalesTableFlattened.tsx","../../src/components/common/BulkActions/BulkEditStatus/components/BulkEditPreviewDisplay/BulkEditPreviewSaleDetails.tsx","../../src/components/common/BulkActions/BulkEditStatus/components/BulkEditPreviewDisplay/BulkEditPreviewTicketGroupDetails.tsx","../../src/components/common/BulkActions/BulkEditStatus/components/BulkEditPreviewDisplay/BulkEditPreviewDisplay.tsx","../../src/components/common/BulkActions/BulkEditStatus/components/BulkEditProgressDisplay/CountsByEntityDisplay.tsx","../../src/components/common/BulkActions/BulkEditStatus/components/BulkEditProgressDisplay/BulkEditProgressDisplay.tsx","../../src/components/common/BulkActions/BulkEditStatus/components/BulkEditWarningList/BulkEditWarningList.tsx","../../src/components/common/BulkActions/BulkEditStatus/BulkEditStatus.tsx","../../src/components/common/BulkActions/BulkEditStatus/bulkEditUtils.ts","../../src/hooks/useGetListingAutoPricingSettings.tsx","../../src/modals/ListingDetails/ListingForms/AutoPricingForm/useAutoPricingSettings.ts","../../src/modals/ListingDetails/ListingForms/AutoPricingForm/Sections/AutoPricingStrategySection.tsx","../../src/modals/ListingDetails/ListingForms/AutoPricingForm/components/ListingAutoPricingSettingsFormContent/ListingAutoPricingSettingsFormContent.tsx","../../src/modals/ListingDetails/ListingForms/AutoPricingForm/components/ListingAutoPricingSettingsFormContentWrapper/ListingAutoPricingSettingsFormContentWrapper.tsx","../../src/dialogs/BulkEdits/BulkEditListingSettingsDialog/components/AutoPricingSettings.tsx","../../src/dialogs/BulkEdits/BulkEditListingSettingsDialog/components/GeneralSettings.tsx","../../src/dialogs/BulkEdits/BulkEditListingSettingsDialog/BulkEditListingSettingsDialog.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkUpdateListingSettingsAction/LaunchUpdateListingSettings.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkUpdateListingSettingsAction/useBulkUpdateListingSettings.tsx","../../src/components/Listings/InventoryEventPage/CommandMenu/CommandMenu.tsx","../../src/navigations/Routes/Settings/constants.ts","../../src/utils/columns/adCampaigns/adCampaignsColumnUtils.types.ts","../../src/utils/columns/adGroups/adGroupsColumnUtils.types.ts","../../src/utils/columns/commission/commissionColumnUtils.types.ts","../../src/utils/reportsFilterUtils.tsx","../../src/utils/constants/contentIdMaps.ts","../../src/contexts/EventMapContext/useVenueZoneMapIntegration.ts","../../src/contexts/EventMapContext/EventMapContext.tsx","../../src/contexts/EventMapContext/useGetSectionRowFromVenueMapConfig.tsx","../../src/hooks/api/useListingCanBeWasted.tsx","../../src/modals/ListingDetails/components/WasteUnsoldTickets/SaleWasteInfo.tsx","../../src/modals/ListingDetails/components/WasteUnsoldTickets/WasteUnsoldTickets.tsx","../../src/modals/ListingDetails/actions/LaunchWasteUnsoldTickets.tsx","../../src/modals/ListingDetails/actions/LaunchDeleteSeatSaver.tsx","../../src/modals/ViewCompsModal/ViewCompsBody.tsx","../../src/modals/ViewCompsModal/ViewCompsModal.tsx","../../src/modals/ListingDetails/actions/LaunchViewComps.tsx","../../src/modals/ListingDetails/ListingDetailsFooter.tsx","../../src/modals/ListingDetails/ListingForms/AutoPricingForm/AutoPricingForm.hooks.ts","../../src/modals/ListingDetails/ListingForms/BroadcastForm/AdminHoldNotes/AdminHoldNotes.tsx","../../src/modals/ListingDetails/ListingForms/BroadcastForm/MarketplaceBroadcastSection/MarketplaceDisplay.tsx","../../src/modals/ListingDetails/ListingForms/BroadcastForm/MarketplaceBroadcastSection/MarketplaceTable.tsx","../../src/modals/ListingDetails/ListingForms/BroadcastForm/MarketplaceBroadcastSection/useGetMarketplaceFailures.tsx","../../src/modals/ListingDetails/ListingForms/BroadcastForm/MarketplaceBroadcastSection/MarketplaceBroadcastSection.tsx","../../src/modals/ListingDetails/ListingForms/BroadcastForm/BroadcastForm.tsx","../../src/modals/ListingDetails/ListingForms/BroadcastForm/BroadcastForm.hooks.ts","../../src/utils/constants/knownVendors.ts","../../src/utils/constants/colorMaps.ts","../../src/modals/ListingDetails/components/HistoricalPricingGraph/HistoricalPricingGraph.tsx","../../src/modals/ListingDetails/components/HistoricalPricingGraphSection.tsx","../../src/modals/ListingDetails/ListingForms/AutoPricingForm/Sections/PricingProtection.tsx","../../src/modals/ListingDetails/ListingForms/PricingForm/EconomicsSection/EconomicsSection.tsx","../../src/modals/ListingDetails/ListingForms/PricingForm/PricingForm.tsx","../../src/modals/ListingDetails/ListingForms/PricingForm/PricingForm.hooks.ts","../../src/modals/ListingDetails/ListingForms/TagsForm/TagsSection/TagsSection.tsx","../../src/modals/ListingDetails/ListingForms/TagsForm/TagsForm.tsx","../../src/modals/ListingDetails/ListingForms/TagsForm/TagsForm.hooks.ts","../../src/modals/ListingDetails/components/NotesSection.tsx","../../src/modals/ListingDetails/ListingForms/TicketsForm/DeliverySection/TicketTypePrioritySection.tsx","../../src/modals/ListingDetails/ListingForms/TicketsForm/DeliverySection/DeliverySection.tsx","../../src/modals/ListingDetails/ListingForms/TicketsForm/TicketsSection.tsx","../../src/modals/ListingDetails/ListingForms/TicketsForm/TicketsForm.tsx","../../src/modals/ListingDetails/ListingForms/TicketsForm/TicketsForm.hooks.ts","../../src/modals/ListingDetails/ListingDetailsModalV2.hooks.tsx","../../src/modals/ListingDetails/ListingForms/AutoPricingSidePanel/SectionSelectionPanel/SectionSelector.tsx","../../src/modals/ListingDetails/ListingForms/AutoPricingSidePanel/SectionSelectionPanel/SectionSelectionPanel.tsx","../../src/modals/ListingDetails/ListingForms/AutoPricingSidePanel/AutoPricingSidePanel.tsx","../../src/modals/ListingDetails/ListingForms/AutoPricingSidePanel/AutoPricingSidePanelContext.tsx","../../src/modals/ListingDetails/ListingForms/AutoPricingForm/components/AutoPricePreview/useAutoPricePreview.tsx","../../src/modals/ListingDetails/ListingForms/AutoPricingForm/components/AutoPricePreview/AutoPricePreview.tsx","../../src/modals/ListingDetails/ListingForms/AutoPricingForm/components/AutoPricingSectionRowIdFilter.tsx","../../src/modals/ListingDetails/ListingForms/AutoPricingForm/components/SimplifiedAutopricingGuidedPrice.tsx","../../src/modals/ListingDetails/ListingForms/AutoPricingForm/Sections/AdvancePricingSection.tsx","../../src/modals/ListingDetails/ListingForms/AutoPricingForm/Sections/AutoPricingSection.types.ts","../../src/modals/ListingDetails/ListingForms/AutoPricingForm/Sections/AutoPricingSettingsSection.hook.tsx","../../src/modals/ListingDetails/ListingForms/AutoPricingForm/Sections/AutoPricingSettingsSection.tsx","../../src/modals/ListingDetails/ListingForms/AutoPricingForm/Sections/AutoPricingSection.tsx","../../src/modals/ListingDetails/ListingForms/AutoPricingForm/AutoPricingForm.tsx","../../src/modals/ListingDetails/ListingForms/PurchaseForm/PurchaseForm.tsx","../../src/modals/ListingDetails/ListingForms/SalesForm/SalesDetailsSection.tsx","../../src/modals/ListingDetails/ListingForms/SalesForm/SalesForm.tsx","../../src/modals/ListingDetails/ListingDetailsModalV2Context.tsx","../../src/modals/ListingDetails/ListingDetailsModalV2.tsx","../../src/modals/ListingDetails/ListingDetails.tsx","../../src/svgs/PendingQC.tsx","../../src/modals/ListingDetails/actions/LaunchBroadcastListing.tsx","../../src/modals/MarketplaceSale/components/MarketplaceSection.tsx","../../src/modals/MarketplaceSale/MarketplaceSaleBody.tsx","../../src/modals/MarketplaceSale/MarketplaceSale.tsx","../../src/modals/ListingDetails/actions/LaunchCreateMarketplaceSale.tsx","../../src/modals/ListingDetails/actions/LaunchCreateOfflineSale.tsx","../../src/modals/ListingDetails/actions/LaunchDownloadUserDocuments.tsx","../../src/modals/SplitListing/SplitListing.styled.tsx","../../src/modals/SplitListing/SplitListingBody.tsx","../../src/modals/SplitListing/SplitListing.tsx","../../src/modals/ListingDetails/actions/LaunchSplitListing.tsx","../../src/dialogs/SplitListingToOriginalDialog/SplitListingToOriginal.util.ts","../../src/dialogs/SplitListingToOriginalDialog/SplitListingToOriginalDialog.tsx","../../src/modals/ListingDetails/actions/LaunchSplitListingToOriginal.tsx","../../src/dialogs/AddAdminHoldDialog/AddAdminHoldDialog.tsx","../../src/modals/ListingDetails/actions/LaunchUpdateAdminHold.tsx","../../src/modals/UploadExternalIds/LaunchUploadExternalIds.tsx","../../src/modals/UploadTicketUrls/LaunchUploadTicketUrls.tsx","../../src/utils/inventoryUtils.tsx","../../src/contexts/CatalogDataContext/CatalogDataContext.types.ts","../../src/contexts/CatalogDataContext/CatalogDataContextV2.tsx","../../src/contexts/CatalogDataContext/CatalogDataContext.tsx","../../src/contexts/CatalogDataContext/useCatalogDataContext.ts","../../src/components/Buttons/ExportInventoryButton.tsx","../../src/components/Buttons/ExportPurchasesButton.tsx","../../src/components/Buttons/ExportSalesButton.tsx","../../src/components/Buttons/ReloadButton.tsx","../../src/components/Buttons/TransferButton.tsx","../../src/components/Buttons/UploadButton.tsx","../../src/navigations/Routes/OnSaleEvent/OnSaleEventView.constants.tsx","../../src/utils/columns/columnUtils.ts","../../src/contexts/ColumnResizingContext/ColumnResizingContext.tsx","../../src/tables/Table/Table.utils.ts","../../src/tables/Table/TableCells/PinnedCellGradient.tsx","../../src/tables/Table/components/TableTd.tsx","../../src/tables/Table/GroupedVirtuosoTable/PosGroupedVirtuosoGroup.tsx","../../src/tables/Table/PosVirtuosoTableComponent/PosVirtuosoTableRow.tsx","../../src/tables/Table/GroupedVirtuosoTable/PosGroupedVirtuosoItem.tsx","../../src/core/ui/SortButton/SortButton.tsx","../../src/svgs/TableSortingIcon.tsx","../../src/core/ui/SortButton/SortButtonV2.tsx","../../src/svgs/TableFilterIcon.tsx","../../src/core/ui/ColumnFilterButton/ColumnFilterButton.tsx","../../src/tables/Table/hooks/useColumnFilter.tsx","../../src/tables/Table/components/ColumnRangeFilterInput.tsx","../../src/tables/Table/components/ColumnHeaderFilter.tsx","../../src/tables/Table/components/ColumnHeader.tsx","../../src/tables/Table/components/PaginationFooter.tsx","../../src/tables/Table/GroupedVirtuosoTable/PosGroupedVirtuosoList.tsx","../../src/tables/Table/GroupedVirtuosoTable/PosGroupedVirtuosoScroller.tsx","../../src/tables/Table/GroupedVirtuosoTable/useGetVirtuosoGroups.ts","../../src/tables/Table/GroupedVirtuosoTable/PosGroupedVirtuosoTable.tsx","../../src/tables/Table/hooks/useColumnVirtualizer.tsx","../../src/tables/Table/PosVirtuosoTableComponent/PosVirtuosoTable.tsx","../../src/tables/Table/PosVirtuosoTableComponent/PosVirtuosoTableFooter.tsx","../../src/tables/Table/PosVirtuosoTableComponent/PosVirtuosoTableHead.tsx","../../src/tables/Table/Table.hooks.tsx","../../src/tables/Table/Table.tsx","../../src/components/ActivityLog/ActivityLogAdditionalInfo.tsx","../../src/tables/ActivityLogTable/ActivityLogTable.styled.tsx","../../src/tables/ActivityLogTable/configs/ActivityLogDateCell.tsx","../../src/tables/ActivityLogTable/configs/ActivityLogDateRangeCell.tsx","../../src/tables/ActivityLogTable/configs/ActivityLogGroupedTableColumnsConfig.tsx","../../src/tables/ActivityLogTable/configs/ActivityLogTableColumnsConfig.tsx","../../src/tables/ActivityLogTable/ActivityLogTable.tsx","../../src/components/ActivityLog/ActivityLog.styled.tsx","../../src/components/FilterToolbar/FilterDialogV2/FiltersDropdown/FiltersDropdown.tsx","../../src/components/FilterToolbar/FilterDialogV2/FiltersList/FiltersListEmbedded.tsx","../../src/components/FilterToolbar/FilterDialogV2/FiltersList/ReportFilterEditabilityDropdown.tsx","../../src/components/FilterToolbar/FilterDialogV2/FiltersList/FiltersList.tsx","../../src/components/FilterToolbar/FilterDialogV2/FilterDialogV2.tsx","../../src/core/POS/ToolbarButton/ToolbarButton.tsx","../../src/components/FilterToolbar/CustomFilterButton/CustomFilterButton.tsx","../../src/components/FilterToolbar/CustomFilterButton/CustomFilterDialog.tsx","../../src/components/FilterToolbar/MobileFilterToolbar.tsx","../../src/components/FilterToolbar/FilterToolbar.tsx","../../src/components/ActivityLog/ActivityLogFilter.tsx","../../src/components/ActivityLog/ActivityLog.tsx","../../src/components/ActivityLog/ActivityLogDisplay/ActivityLogDisplay.tsx","../../src/contexts/MenuContext/MenuContext.tsx","../../src/hooks/useFetchLoginContext.ts","../../src/hooks/useMainAccessibleRoute.tsx","../../src/contexts/ListingNotificationContext/ListingNotificationContext.tsx","../../src/hooks/useRefreshListingOnNotification.tsx","../../src/dialogs/SearchResultPickerDialog/SearchResultPickerDialog.tsx","../../src/hooks/useHasReleaseNotesUnread.ts","../../src/hooks/api/useGetReleaseNoteHtml.ts","../../src/hooks/useReleaseNotes.ts","../../src/navigations/Routes/ReleaseNotes/ReleaseNotes.tsx","../../src/images/StarburstLogo.png","../../src/components/common/ProLogo/ProLogo.tsx","../../src/components/SellerAccountBasicInfo/SellerAccountBasicInfo.style.tsx","../../src/components/SellerAccountBasicInfo/SellerAccountBasicInfo.tsx","../../src/navigations/MainNav/UserInfoDisplay/UserInfoDisplay.styled.tsx","../../src/navigations/MainNav/UserInfoDisplay/UserInfoDisplay.tsx","../../src/navigations/MainNav/MainNavTopBar/MainNavTitle.tsx","../../src/navigations/MainNav/MainNavTopBar/MainNavTopBar.styled.tsx","../../src/navigations/MainNav/MainNavTopBar/MainNavTopBar.tsx","../../src/navigations/MainNav/MainNavTopBar/MainNavTopBarEmpty.tsx","../../src/navigations/Routes/Offline/Offline.tsx","../../src/navigations/MainNav/MainNavSideBar/MenuItem/MenuItem.tsx","../../src/navigations/MainNav/MainNavSideBar/MainMenu/MainMenu.tsx","../../src/navigations/MainNav/MainNavSideBar/UserMenu/UserMenu.tsx","../../src/navigations/MainNav/MainNavSideBar/MainNavSideBar.tsx","../../src/navigations/MainNav/MobileTopBar/MobileTopBar.tsx","../../src/navigations/LayoutContent/LayoutContent.styled.tsx","../../src/components/common/BackSection/BackSection.tsx","../../src/navigations/LayoutContent/LayoutContentHeader.tsx","../../src/navigations/LayoutContent/LayoutContent.tsx","../../src/navigations/Routes/Activity/Activity.tsx","../../src/contexts/AdGroupsDataContext/AdGroupsDataContext.tsx","../../src/contexts/AdPlatformCatalogDataContext/AdPlatformCatalogDataContext.tsx","../../src/contexts/AdPlatformReportingContext/AdPlatformReportingContext.tsx","../../src/tables/AdGroupsTable/AdGroupsTable.type.ts","../../src/utils/adGroupListingsUtils.tsx","../../src/tables/AdGroupsTable/configs/AdGroupsActionsCell.tsx","../../src/tables/AdGroupsTable/configs/AdGroupsTableColumnConfig.tsx","../../src/tables/AdGroupsTable/useGetAdGroupsTableColumns.ts","../../src/tables/AdGroupsTable/AdGroupsTable.tsx","../../src/utils/adGroupUtils.tsx","../../src/components/AdGroupsFlattenedView/AdGroupsFlattenedView.tsx","../../src/contexts/AdCampaignIdContext/AdCampaignIdContext.tsx","../../src/contexts/AdCampaignsDataContext/AdCampaignsDataContext.tsx","../../src/navigations/Routes/InventoryEvent/constants.ts","../../src/components/Selectors/AdGroupEventSelector/AdGroupEventSelector.tsx","../../src/modals/AdGroupCreate/AdGroupCreate.styled.tsx","../../src/modals/AdGroupCreate/AdGroupSelectError.tsx","../../src/modals/AdGroupCreate/AdGroupSelectEventSection.tsx","../../src/components/common/PerformerCategoryIcon/PerformerCategoryIcon.tsx","../../src/components/Selectors/AdGroupGenreSelector/AdGroupGenreSelector.tsx","../../src/modals/AdGroupCreate/AdGroupSelectGenreSection.tsx","../../src/components/Selectors/AdGroupListingSelector/AdGroupListingSelector.tsx","../../src/modals/AdGroupCreate/AdGroupSelectListingSection.tsx","../../src/components/Selectors/AdGroupPerformerSelector/AdGroupPerformerSelector.tsx","../../src/modals/AdGroupCreate/AdGroupSelectPerformerSection.tsx","../../src/components/Selectors/AdGroupSectionSelector/AdGroupSectionSelector.tsx","../../src/modals/AdGroupCreate/AdGroupSelectSeatingSection.tsx","../../src/components/Selectors/AdGroupTicketClassSelector/AdGroupTicketClassSelector.tsx","../../src/modals/AdGroupCreate/AdGroupSelectTicketClassSection.tsx","../../src/modals/AdGroupCreate/AdGroupCreate.tsx","../../src/navigations/Routes/SponsoredListings/AdGroupsToolbar/AdGroupsToolbar.styled.tsx","../../src/navigations/Routes/SponsoredListings/AdGroupsToolbar/AdGroupsToolbar.tsx","../../src/navigations/Routes/AdCampaign/AdCampaign.tsx","../../src/components/common/CollapsableContent/ExpandCollapsableContentButton.tsx","../../src/components/AdGroupsFlattenedView/AdGroupListingsFlattenedView.tsx","../../src/navigations/Routes/AdGroupListings/AdGroupListings.tsx","../../src/hooks/api/useGetInboundEmailSellerGuidIds.ts","../../src/modals/MessagesAddSourceModal/MessagesAddSourceModal.tsx","../../src/core/ui/Badge/Badge.tsx","../../src/navigations/Routes/Email/EmailNavToolbar.tsx","../../src/components/common/AccountDisabledNotification/AccountDisabledNotification.tsx","../../src/components/common/MerchantColorBadge/MerchantColorBadge.tsx","../../src/contexts/ConversationDataContext/ConversationDataContext.tsx","../../src/components/Messages/ConversationSidePanel/ConversationListItem/ConversationListItem.tsx","../../src/components/Messages/EmailThread/EmailThreadItem.tsx","../../src/components/Messages/EmailThread/EmailThread.tsx","../../src/contexts/SellerSupportCaseDataContext/SellerSupportCaseDataContext.tsx","../../src/components/Messages/AttachmentsPanel/AttachmentsPanel.tsx","../../src/components/Messages/SupportCaseNoteDisplay/SupportCaseNoteDisplay.tsx","../../src/components/Messages/SupportCaseBody/SupportCaseReplyInput.tsx","../../src/components/Messages/SupportCaseBody/SupportCaseBody.tsx","../../src/hooks/api/useGetSaleWithCatalogData.ts","../../src/components/Buttons/SwiperButton.tsx","../../src/core/POS/HotkeyDisplay/HotkeyDisplay.tsx","../../src/contexts/SidePanelContext/SidePanelContext.tsx","../../src/components/common/MultiSelect/useGetNoSelectedItemsLabel.ts","../../src/components/Events/EventListing/useEventsAccordionSelectedLegend.ts","../../src/components/Events/EventListing/InventoryEventListing/SetInventoryEventAccordionSelectionCountLabel.tsx","../../src/components/Events/EventListing/InventoryEventListing/SetInventoryMetricsViewSelectionCountLabel.tsx","../../src/components/Listings/InventoryActionDropdown/components/BulkEditBroadcastSettingsAction/useBulkEditBroadcastGlobalSettingsAction.tsx","../../src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryGlobalBulkActions/Actions/BroadcastActions.tsx","../../src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryGlobalBulkActions/Actions/CatchUpAction.tsx","../../src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryGlobalBulkActions/Actions/PricingActions.tsx","../../src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryGlobalBulkActions/Actions/SettingsActions.tsx","../../src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryGlobalBulkActions/Actions/TagsActions.tsx","../../src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryGlobalBulkActions/InventoryGlobalBulkActions.tsx","../../src/tables/EventsTable/EventsTable.tsx","../../src/tables/EventsTable/EventsTableWithInnerGrouping.tsx","../../src/components/Events/EventListing/InventoryEventListing/InventoryDetailedEventView.tsx","../../src/components/common/SummaryTile/SummaryTile.tsx","../../src/components/Listings/InventorySummaryWidgets/AverageTicketPriceDisplay.tsx","../../src/components/Listings/InventorySummaryWidgets/SalesAndMarginDisplay.tsx","../../src/components/Listings/InventorySummaryWidgets/TicketsListedAndSoldDisplay.tsx","../../src/contexts/CatalogMetricsContext/useGetSummaryMetricsQuery.ts","../../src/hooks/useGetActiveAccountClientConfig.ts","../../src/tables/EventsTable/EventsTable.constants.ts","../../src/navigations/Routes/Inventory/Inventory.utils.ts","../../src/components/Events/PerformerVenueList/PerformerVenueDisplay/PerformerVenueDisplay.styled.tsx","../../src/components/Events/PerformerVenueList/PerformerVenueDisplay/PerformerVenueDisplay.tsx","../../src/components/Events/PerformerVenueList/PerformerVenueFilterBar/PerformerVenueFilterBar.styled.tsx","../../src/components/Events/PerformerVenueList/PerformerVenueFilterBar/PerformerVenueFilterBar.tsx","../../src/components/Events/PerformerVenueList/PerformerVenueList.styled.tsx","../../src/components/Events/PerformerVenueList/SelectedPerformerVenueList/SelectedPerformerVenueList.styled.tsx","../../src/components/Events/PerformerVenueList/SelectedPerformerVenueList/SelectedPerformerVenueList.tsx","../../src/components/Events/PerformerVenueList/SelectedPerformerVenueListDivider/SelectedPerformerVenueListDivider.tsx","../../src/components/Events/PerformerVenueList/PerformerVenueList.tsx","../../src/components/common/BulkActions/BulkEditStatusPopover/BulkEditStatusPopover.tsx","../../src/components/common/MultiSelect/Toggle/MultiSelectionToggleGlobal.tsx","../../src/components/FilterToolbar/useFiltersHelpers.ts","../../src/components/Events/EventDateSelector/EventDateSelector.tsx","../../src/components/MainFilterBar/useDiscoveryFilters.tsx","../../src/hooks/useQuickFilters.ts","../../src/svgs/MetricViewIcon.tsx","../../src/components/Accordions/EventEntitySearchBox/EventEntitySearchBox.tsx","../../src/components/OnSaleEvent/OnSaleEventSearchBox/OnSaleEventSearchBox.tsx","../../src/components/OnSaleEvent/OnSaleEventFilterBar/hooks/useDefaultOnSaleEventFilter.tsx","../../src/components/OnSaleEvent/OnSaleEventFilterBar/OnSaleEventFilterBar.tsx","../../src/components/MainFilterBar/Tags/useMergedTagFilters.tsx","../../src/components/Selectors/PurchaseVendorAccountSelector/StandaloneMultiplePurchaseVendorAccountSelector/useStandalonePurchaseVendorAccountSelector.ts","../../src/components/Selectors/PurchaseVendorAccountSelector/StandaloneMultiplePurchaseVendorAccountSelector/StandalonePurchaseVendorAccountsSelector.tsx","../../src/svgs/MetricsIcon.tsx","../../src/components/Selectors/VendorAccessControlProvidersSelector/useVendorAccessControlProvidersSelector.tsx","../../src/components/Selectors/VendorAccessControlProvidersSelector/VendorAccessControlProvidersSelector.tsx","../../src/components/MainFilterBar/usePurchaseInfoFilters.tsx","../../src/core/POS/PosMultiSelect/PosEnumMultiSelect.tsx","../../src/components/Selectors/EventSelector/EventSelector.tsx","../../src/components/MainFilterBar/useEventStateFilters.tsx","../../src/components/MainFilterBar/useCommonEventFilters.tsx","../../src/components/MainFilterBar/usePurchaseFilters.tsx","../../src/components/Purchases/PurchaseFilterBar/PurchaseGlobalActionsPermissionsWrapper.tsx","../../src/components/Purchases/PurchaseFilterBar/hooks/useDefaultPurchaseFilters.tsx","../../src/svgs/TileViewIcon.tsx","../../src/components/Purchases/PurchaseFilterBar/PurchaseFilterBar.types.tsx","../../src/components/Purchases/PurchaseOrderBasicInfo/PurchaseOrderBasicInfo.tsx","../../src/components/Purchases/PurchaseFilterBar/PurchaseSearchBox.tsx","../../src/components/Purchases/PurchaseFilterBar/PurchaseFilterBar.tsx","../../src/components/Sales/SaleFilterBar/hooks/useDefaultSaleFilters.tsx","../../src/components/Sales/SaleFilterBar/SaleFilterBar.types.tsx","../../src/components/Sales/SaleBasicInfo/SaleBasicInfo.styled.tsx","../../src/components/Sales/SaleBasicInfo/SaleBasicInfo.tsx","../../src/components/Sales/SaleFilterBar/SaleSearchBox.tsx","../../src/components/Sales/SaleFilterBar/SaleFilterBar.tsx","../../src/components/MainFilterBar/MainFilterBar.tsx","../../src/components/MainFilterBar/Tags/TagValueFilterInput.tsx","../../src/components/MainFilterBar/Tags/useEventTagFilters.tsx","../../src/components/MainFilterBar/Tags/useTagFilters.tsx","../../src/components/MainFilterBar/useEventLastReviewedFilter.tsx","../../src/components/MainFilterBar/useListingFilters.tsx","../../src/components/MainFilterBar/useSaleFilters.tsx","../../src/components/MainFilterBar/ViewModeSelector.tsx","../../src/core/ui/ResizablePanel/ResizablePanel.styled.tsx","../../src/core/ui/ResizablePanel/ResizablePanel.tsx","../../src/components/Buttons/SidePanelButton/SidePanelButton.tsx","../../src/components/Listings/ListingFilterBar/hooks/useDefaultListingFilter.tsx","../../src/components/Listings/ListingFilterBar/ListingFilterBar.types.tsx","../../src/components/Listings/ListingBasicInfo/ListingBasicInfo.styled.tsx","../../src/components/Listings/ListingBasicInfo/ListingBasicInfo.tsx","../../src/components/Listings/ListingFilterBar/ListingSearchBox.tsx","../../src/components/Listings/ListingFilterBar/ListingFilterBar.tsx","../../src/core/POS/FlyoverPanel/FlyoverPanel.tsx","../../src/core/layouts/ExplorerLayout/ExplorerLayout.tsx","../../src/utils/advancedSearchUtils.tsx","../../src/navigations/Routes/Inventory/InventoryEventsExplorer.tsx","../../src/navigations/Routes/Inventory/Inventory.tsx","../../src/components/Events/EventListing/InventoryEventListing/InventoryEventSummaryMetrics.tsx","../../src/components/Events/EventListing/useEventFlattedViewSelectedLegend.ts","../../src/components/Events/EventListing/InventoryEventListing/SetInventoryFlattenedViewSelectionCountLabel.tsx","../../src/components/Events/EventListing/InventoryEventListing/InventoryFlattenedView.tsx","../../src/components/Events/EventListing/InventoryEventListing/InventoryEventListing.tsx","../../src/components/Events/EventListing/SalesEventListing/SetSalesEventAccordionSelectionCountLabel.tsx","../../src/components/Events/EventListing/SalesEventListing/SetSalesFlattenedViewSelectionCountLabel.tsx","../../src/components/Sales/BulkActions/SalesGlobalBulkActions/Actions/SettingsActions.tsx","../../src/components/Sales/BulkActions/SalesGlobalBulkActions/Actions/TagsActions.tsx","../../src/components/Sales/BulkActions/SalesGlobalBulkActions/SalesGlobalBulkActions.tsx","../../src/components/SubfilterGroup/SubfilterGroup.styled.tsx","../../src/components/SubfilterGroup/SubfilterGroup.tsx","../../src/hooks/useQuickSubfilters.ts","../../src/components/Events/EventListing/SalesEventListing/SalesFlattenedView.tsx","../../src/components/Events/EventListing/SalesEventListing/SalesEventListing.tsx","../../src/components/Events/EventListing/EventListing.tsx","../../src/navigations/Routes/Sales/SalesEventsExplorer.tsx","../../src/navigations/Routes/Sales/Sales.tsx","../../src/modals/ClassifyEmail/SaleSearchAccordionList.tsx","../../src/modals/ClassifyEmail/SaleSearchBox.tsx","../../src/modals/ClassifyEmail/ClassifyEmail.tsx","../../src/modals/ClassifyEmail/index.tsx","../../src/components/Messages/ConversationMainPanel/ConversationHeaderDisplay/ConversationHeaderDisplay.tsx","../../src/components/Messages/ConversationMainPanel/ConversationMainPanel.tsx","../../src/hooks/api/useClassifiedInboundEmails.ts","../../src/components/Messages/ConversationSidePanel/ConversationFilter.tsx","../../src/components/Messages/ConversationSidePanel/ConversationSidePanel.tsx","../../src/components/Purchases/PurchaseEmailDisplay/PurchaseEmailDisplay.tsx","../../src/hooks/api/usePartialPurchaseOrderInboundEmails.ts","../../src/navigations/Routes/Email/EmailList.tsx","../../src/navigations/Routes/Email/MessagesExplorer.tsx","../../src/navigations/Routes/Email/Email.tsx","../../src/core/ui/DocumentTree/DocumentTree.tsx","../../src/navigations/Routes/HelpCenter/useGetHelpData.ts","../../src/navigations/Routes/HelpCenter/HelpCenter.tsx","../../src/dialogs/ReleaseNoteDisplayDialog/ReleaseNoteDisplayDialog.tsx","../../src/hooks/useLiveActivityLog.tsx","../../src/navigations/Routes/Home/ActivitySection/ActivitySection.tsx","../../src/navigations/Routes/Home/MetricsSection/MetricsSection.tsx","../../src/components/ConnectedNotificationDisplay/NotificationDisplay/NotificationDisplay.tsx","../../src/components/ConnectedNotificationDisplay/ConnectedNotificationDisplay.tsx","../../src/navigations/Routes/Home/NotificationsSection/NotificationsSection.tsx","../../src/navigations/Routes/Home/RecentSalesSection/RecentSalesTable.tsx","../../src/navigations/Routes/Home/RecentSalesSection/RecentSalesSection.tsx","../../src/navigations/Routes/Home/Home.tsx","../../src/components/Listings/InventoryEventPage/MarketListings/StubHubListingsManualPricingContext.tsx","../../src/hooks/api/useEventLastReviewedDateTime.ts","../../src/contexts/SellerEventLastReviewContext/SellerEventLastReviewContext.tsx","../../src/core/POS/LoadingButton/LoadingButton.tsx","../../src/hooks/api/useSellerEventNote.ts","../../src/components/Listings/InventoryEventPage/InventoryEventCatchUp/InventoryEventCatchUpBarButtons.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventCatchUp/InventoryEventCatchUpCard.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventCatchUp/InventoryEventCatchUpDropdown.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventCatchUp/InventoryEventCatchUpBar.tsx","../../src/hooks/api/useEventMetrics.ts","../../src/contexts/EventMetricsContext/EventMetricsContext.tsx","../../src/hooks/useHeatMapColor.tsx","../../src/components/Listings/InventoryEventPage/DashboardSection/HeaderWidgetContainer.tsx","../../src/components/Listings/InventoryEventPage/DashboardSection/Widgets/EventSectionClearingPrices/EventSectionClearingPriceSectionDisplay.tsx","../../src/components/Listings/InventoryEventPage/DashboardSection/Widgets/EventSectionClearingPrices/EventSectionClearingPricesTableColumnsConfig.tsx","../../src/components/Listings/InventoryEventPage/DashboardSection/Widgets/EventSectionClearingPrices/EventSectionClearingPricesTable.tsx","../../src/components/Listings/InventoryEventPage/DashboardSection/Widgets/EventSectionClearingPrices/EventSectionClearingPricesWidgetsContainer.tsx","../../src/components/Listings/InventoryEventPage/DashboardSection/Widgets/TimeSeriesLineChart/TimeSeriesLineChart.types.ts","../../src/components/Listings/InventoryEventPage/DashboardSection/Widgets/TimeSeriesLineChart/TimeSeriesLineChart.tsx","../../src/components/Listings/InventoryEventPage/DashboardSection/Widgets/DashboardWidgetTile/DashboardWidgetTile.tsx","../../src/components/Listings/InventoryEventPage/DashboardSection/Widgets/EventSupply/EventSupplyWidget.tsx","../../src/components/Listings/InventoryEventPage/DashboardSection/Widgets/EventSupply/EventSupplyContainer.tsx","../../src/components/Listings/InventoryEventPage/DashboardSection/Widgets/EventWebsiteMetric/EventWebsiteMetricWidget.tsx","../../src/components/Listings/InventoryEventPage/DashboardSection/Widgets/EventWebsiteMetric/EventWebsiteMetricWidgetsContainer.tsx","../../src/components/Listings/InventoryEventPage/DashboardSection/Widgets/DistributionPieChart/DistributionPieChart.tsx","../../src/components/Listings/InventoryEventPage/DashboardSection/Widgets/SellerEventPerformanceMetric/SellerEventPerformanceMetricWidgetsBody.tsx","../../src/components/Listings/InventoryEventPage/DashboardSection/Widgets/SellerEventPerformanceMetric/SellerEventPerformanceMetricWidgetsContainer.tsx","../../src/components/Listings/InventoryEventPage/DashboardSection/DashboardSection.tsx","../../src/components/Listings/InventoryEventPage/Sections/InventoryEventDashboardSection.tsx","../../src/dialogs/ApplyHeatMapToAllEventsDialog/ApplyHeatMapToAllEventsDialog.tsx","../../src/components/Events/RowRelativeScoreDisplay/RowRelativeScoreDisplay.tsx","../../src/core/POS/BezierGraph/BezierGraphManager.ts","../../src/core/POS/BezierGraph/BezierGraph.tsx","../../src/dialogs/ChangeRowScoreDialog/ChangeRowScoreBody.tsx","../../src/dialogs/ChangeRowScoreDialog/ChangeRowScoreBodyMultiSection.tsx","../../src/dialogs/ChangeRowScoreDialog/ChangeRowScoreBodySingleSection.tsx","../../src/dialogs/ChangeRowScoreDialog/ChangeRowScoreDialog.tsx","../../src/dialogs/ChangeRowScoreDialog/ChangeRowScoreDialogMultiSection.tsx","../../src/dialogs/SectionRowTableDialog/components/AddSectionRowsDialog.tsx","../../src/dialogs/SectionRowTableDialog/CellItem.tsx","../../src/dialogs/SectionRowTableDialog/config/SectionRowTableConfig.tsx","../../src/dialogs/SectionRowTableDialog/components/SectionRowTableRow.tsx","../../src/dialogs/SectionRowTableDialog/components/SectionRowTable.tsx","../../src/dialogs/SectionRowTableDialog/SectionRowTableDialog.hooks.ts","../../src/dialogs/SectionRowTableDialog/SectionRowTableDialog.tsx","../../src/dialogs/ChangeMultiSectionsScoresDialog/ChangeMultiSectionsScoresDialog.tsx","../../src/dialogs/ChangeSectionScoreDialog/ChangeSectionScoreDialog.tsx","../../src/hooks/useEventHeatMapSectionHandler.tsx","../../src/modals/common/EventSeatMap/EventVenueHeatMap.tsx","../../src/components/Listings/InventoryEventPage/Sections/SeatMapCard.tsx","../../src/dialogs/DeleteHeapMapTemplateConfirmDialog/DeleteHeatMapTemplateConfirmDialog.tsx","../../src/components/Events/RelativeScoreGraph/RelativeScoreGraph.tsx","../../src/components/Events/RelativeScoreGraph/SeatScoreQuantityMultiplierGraph.tsx","../../src/modals/EventPricingSeatMap/components/EventAutoPricingSettingsFormContent/EventAutoPricingSettingsFormContent.tsx","../../src/modals/EventPricingSeatMap/components/useEventAutoPricingSettings.tsx","../../src/modals/EventPricingSeatMap/components/CompListingSameQualitySettings.tsx","../../src/modals/EventPricingSeatMap/EventAutoPricingSettings.tsx","../../src/modals/EventPricingSeatMap/EventPricingSeatMapBody.tsx","../../src/modals/EventPricingSeatMap/EventPricingSeatMap.tsx","../../src/components/Events/SeatScoreConfigCard/SeatScoreConfigCard.tsx","../../src/modals/UploadSeatScoreModal/UploadSeatScoreModal.tsx","../../src/modals/EventSeatMapConfig/EventSeatMapConfigBody.tsx","../../src/modals/EventSeatMapConfig/EventSeatMapConfig.tsx","../../src/modals/EventSeatMapSelection/GlobalConfigPayloadCard.tsx","../../src/modals/EventSeatMapSelection/GlobalConfigPayloadSelection.tsx","../../src/modals/EventSeatMapSelection/NewHeatmapAvailableNotification.tsx","../../src/modals/EventSeatMapSelection/EventSeatMapSelection.tsx","../../src/components/Listings/InventoryEventPage/Sections/InventoryEventEditMapSection.tsx","../../src/hooks/api/useSellerAccountEventSettings.tsx","../../src/components/Listings/InventoryEventPage/FulfillmentSection/AutoFulfillCell.tsx","../../src/components/Listings/InventoryEventPage/FulfillmentSection/InHandCell.tsx","../../src/components/Listings/InventoryEventPage/FulfillmentSection/TicketTypePriorityPill.tsx","../../src/components/Listings/InventoryEventPage/FulfillmentSection/TicketTypePriorityCell.tsx","../../src/components/Listings/InventoryEventPage/FulfillmentSection/VendorCell.tsx","../../src/components/Listings/InventoryEventPage/FulfillmentSection/EventSettingForm.tsx","../../src/components/Listings/InventoryEventPage/Sections/InventoryEventFulfillmentSection.utils.ts","../../src/components/Listings/InventoryEventPage/Sections/InventoryEventFulfillmentSection.tsx","../../src/components/common/TimeDistance/TimeDistance.tsx","../../src/components/Listings/InventorySummaryWidgets/LastReviewedDisplay.tsx","../../src/components/Listings/InventoryEventPage/Sections/InventoryEventInfoSection.tsx","../../src/hooks/api/useGetMarketTransactionsForEvent.tsx","../../src/tables/MarketTransactionsTable/configs/MarketTransactionsTableColumnsConfig.tsx","../../src/tables/MarketTransactionsTable/MarketTransactionsTable.tsx","../../src/components/Listings/InventoryEventPage/Sections/InventoryEventTransactionsSection.tsx","../../src/utils/listingExperimentUtils.ts","../../src/dialogs/PricingABTest/CreateExperimentDialog.tsx","../../src/hooks/api/useListingExperiments.ts","../../src/tables/ListingExperimentTable/configs/ActionCell.tsx","../../src/tables/ListingExperimentTable/configs/ListingExperimentTableColumnsConfig.tsx","../../src/tables/ListingExperimentTable/ListingExperimentTable.tsx","../../src/components/Listings/InventoryEventPage/Sections/InventoryPricingABTestSection.tsx","../../src/components/Listings/InventoryEventPage/MarketListings/StubHubListingsManualPricingContext.utils.ts","../../src/components/Listings/InventoryEventPage/Sections/ManualPricingSection.tsx","../../src/hooks/api/useEventTags.tsx","../../src/components/Listings/InventoryEventPage/Sections/TagsSection.tsx","../../src/components/Listings/InventoryEventPage/Sections/VenueZoneMap/components/SortableZoneAreaItem.tsx","../../src/components/Listings/InventoryEventPage/Sections/VenueZoneMap/components/VenueZoneSectionGroupDraggableList.tsx","../../src/components/Listings/InventoryEventPage/Sections/VenueZoneMap/components/VenueZoneSectionGroupList.tsx","../../src/components/Listings/InventoryEventPage/Sections/VenueZoneMap/components/SectionGroupPanel.tsx","../../src/components/Listings/InventoryEventPage/Sections/VenueZoneMap/components/VenueZoneSectionGroupDropdownList.tsx","../../src/dialogs/ChangeZoneMapSectionGroupDialog/ChangeZoneMapSectionGroupDialog.tsx","../../src/components/Listings/InventoryEventPage/Sections/VenueZoneMap/components/VenueZoneMap.tsx","../../src/components/Listings/InventoryEventPage/Sections/VenueZoneMap/components/VenueZoneMapFooter.tsx","../../src/components/Listings/InventoryEventPage/Sections/VenueZoneMap/hooks/useVenueSectionRow.ts","../../src/components/Listings/InventoryEventPage/Sections/VenueZoneMap/components/VenueZoneMapSubmitButton.tsx","../../src/components/Listings/InventoryEventPage/Sections/VenueZoneMap/InventoryEventVenueZoneMapSection.tsx","../../src/hooks/api/useGetEventSellThroughRates.tsx","../../src/components/Events/SellThroughRateSection/SellThroughRateGraphBody.tsx","../../src/hooks/api/useSellerEventSellThroughRateTargets.tsx","../../src/components/Events/SellThroughRateSection/SellThroughRateTargetInput.tsx","../../src/components/Listings/InventoryEventPage/SellThroughRateSection.tsx","../../src/components/Listings/InventoryEventPage/TabWithStarIcon.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventPageContent.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventPageHeaderCondense.tsx","../../src/dialogs/MarketplaceEventEditDialog/MarketplaceEventEditDialog.tsx","../../src/hooks/api/useEventMapConfigMetadata.ts","../../src/components/Listings/InventoryEventPage/Banners/NewEventMapBanner.tsx","../../src/components/Listings/InventoryEventPage/EventVenueMap/components/EventVenueMapContent.tsx","../../src/core/ui/CollapsibleSetting/CollapsibleSetting.tsx","../../src/components/Listings/InventoryEventPage/EventVenueMap/components/EventMapDetailSimpleActionGroup.tsx","../../src/components/Listings/InventoryEventPage/EventVenueMap/components/EventVenueMapDetailsPanelFooter.tsx","../../src/components/Listings/InventoryEventPage/EventVenueMap/components/EventVenueMapSelector.tsx","../../src/components/Listings/InventoryEventPage/EventVenueMap/components/VenueZoneSectionGroupDraggableList.tsx","../../src/components/Listings/InventoryEventPage/EventVenueMap/components/VenueZoneSectionGroupList.tsx","../../src/components/Listings/InventoryEventPage/EventVenueMap/components/SectionGroupPanel.tsx","../../src/components/Listings/InventoryEventPage/EventVenueMap/components/EventVenueMapDetailsPanel.tsx","../../src/components/Listings/InventoryEventPage/EventVenueMap/EventVenueMapModal.tsx","../../src/components/Listings/InventoryEventPage/EventVenueMap/EventVenueMapPopup.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventPageHeader.tsx","../../src/components/Listings/InventoryEventPage/MarketListings/MarketListingHeader.tsx","../../src/contexts/InventoryEventDetailContext/InventoryEventDetailContext.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/DetailPanel/Listing/PricingSetting/CompListingPrices.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/DetailPanel/Listing/PricingSetting/OutlierSettings.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/DetailPanel/Listing/PricingSetting/PricingSettingAutoPriceFloorSettings.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/DetailPanel/Listing/PricingSetting/PricingSettingAutoPriceRankPremiumSettings.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/DetailPanel/Listing/PricingSetting/PricingSettingAutoPriceBody.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/DetailPanel/Listing/PricingSetting/PricingSettingAutoPriceGroup.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/Map/StatLabel.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/DetailPanel/Listing/PricingSetting/PricingSettingGroupHeader.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/DetailPanel/Listing/ListingDetailListingGroupHeader.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/DetailPanel/Listing/PricingSetting/PricingSettingAutoPrice.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/DetailPanel/Listing/PricingSetting/PricingSettingAutoPriceListing.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/DetailPanel/Listing/PricingSetting/PricingSettingHeader.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/DetailPanel/Listing/PricingSetting/PricingSettingManualPrice.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/DetailPanel/Listing/ListingDetailListingHeader.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/DetailPanel/Listing/ListingDetailPanel.tsx","../../src/components/Listings/InventoryEventPage/Sections/NoteSectionV2.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/DetailPanel/NotesDetailPanel.tsx","../../src/components/Accordions/TicketGroupsEventsAccordion/EventTicketGroupBody.tsx","../../src/components/Purchases/BulkActions/PurchasesBulkActionsPermissions.tsx","../../src/components/Purchases/BulkActions/PurchasesTileBulkActions/usePurchaseTileBulkActionsState.ts","../../src/dialogs/BulkEdits/BulkCancelPurchaseDialog/BulkCancelPurchaseDialog.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkCancelPurchase/LaunchBulkCancelPurchase.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkCancelPurchase/useBulkCancelPurchase.tsx","../../src/dialogs/BulkEdits/BulkDeleteTicketGroupDialog/BulkDeleteTicketGroupDialog.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkDeleteTicketGroup/LaunchBulkDeleteTicketGroup.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkDeleteTicketGroup/useBulkDeleteTicketGroup.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkEditCommissionAction/useBulkEditCommissionAction.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkUpdateDeliveryType/LaunchBulkUpdateDeliveryType.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkUpdateDeliveryType/useBulkUpdateDeliveryType.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkUpdateInternalNotesAction/useBulkUpdateInternalNotesAction.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkUpdatePurchaseCurrencyCodeAction/LaunchBulkUpdatePurchaseCurrencyCode.tsx","../../src/dialogs/BulkEdits/BulkUpdatePurchaseCurrencyCodeDialog/BulkUpdatePurchaseCurrencyCodeDialog.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkUpdatePurchaseCurrencyCodeAction/useBulkUpdatePurchaseCurrencyCode.tsx","../../src/dialogs/BulkEdits/BulkEditPurchaseSettingsDialog/BulkEditPurchaseSettingsDialog.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkUpdatePurchaseGeneralSettings/LaunchUpdatePurchaseSettings.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkUpdatePurchaseGeneralSettings/useBulkUpdatePurchaseSettings.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkUpdateSeatTraits/LaunchBulkUpdateSeatTraits.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkUpdateSeatTraits/useBulkUpdateSeatTraits.tsx","../../src/components/Purchases/BulkActions/PurchasesTileBulkActions/Actions/SettingsActions.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkEditTagsAction/useBulkEditTagsAction.tsx","../../src/components/Purchases/BulkActions/PurchasesTileBulkActions/Actions/TagsActions.tsx","../../src/dialogs/BulkEdits/BulkConvertPurchasePaymentDialog/BulkConvertPurchasePaymentDialog.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkConvertPurchasePaymentsAction/LaunchBulkConvertPurchasePayments.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkConvertPurchasePaymentsAction/useBulkConvertPurchasePaymentsAction.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkMarkPurchaseAsPaid/LaunchBulkMarkPurchaseAsPaid.tsx","../../src/dialogs/BulkEdits/BulkMarkPurchaseAsPaidDialog/BulkMarkPurchaseAsPaidDialog.tsx","../../src/components/Purchases/PurchaseActionDropdown/components/BulkMarkPurchaseAsPaid/useBulkMarkPurchaseAsPaid.tsx","../../src/components/Purchases/BulkActions/PurchasesGlobalBulkActions/BulkEditAccountingActionPermissionsHandler.tsx","../../src/components/Purchases/BulkActions/PurchasesTileBulkActions/Actions/AccountingActions.tsx","../../src/components/Purchases/BulkActions/PurchasesTileBulkActions/PurchasesTileBulkActions.tsx","../../src/components/Purchases/PurchaseTileActionDropdown/components/AddPurchase/AddPurchaseAction.tsx","../../src/components/Purchases/PurchaseTileActionDropdown/PurchaseTileActionDropdown.tsx","../../src/components/Accordions/PurchaseDatesAccordion/PurchaseDateAccordion.styled.tsx","../../src/components/Accordions/TicketGroupsEventsAccordion/EventTicketGroupHeader.tsx","../../src/components/Accordions/TicketGroupsEventsAccordion/TicketGroupsEventsAccordion.tsx","../../src/components/Events/EventPage/hooks/useAccordionItem.tsx","../../src/svgs/SwitchIcon.tsx","../../src/components/Events/EventPage/utils.tsx","../../src/components/Events/EventPage/SidePanel/SidePanelToolbar.tsx","../../src/components/Events/EventPage/SidePanel/SidePanelFilters.tsx","../../src/components/Purchases/PurchaseFilterBar/PurchaseSideTableFilterBar.tsx","../../src/components/Purchases/PurchaseEventPage/PurchasesSideTable.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/DetailPanel/PurchaseDetailPanel.tsx","../../src/components/Sales/SaleFilterBar/SaleSideTableFilterBar.tsx","../../src/components/Sales/SaleEventPage/SaleSideTable.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/DetailPanel/SaleDetailPanel.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/DetailPanel/DetailPanelBody.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/Map/CondensedVenueMapQtyFilter.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/Map/MapBody.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/PricingSettings/CompPricingSettings.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/Map/SelectedListingMapStats.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/Map/MapFooter.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/components/Map/MapHeader.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventDetail/InventoryEventDetail.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventPageSeatMapV2.tsx","../../src/components/Listings/InventoryEventPage/MarketListings/VenueMapStats/VenueMapStats.tsx","../../src/components/Listings/InventoryEventPage/MarketListings/MarketListings.tsx","../../src/components/Listings/InventoryEventPage/MarketListings/ManualSectionRowIdFilter.tsx","../../src/components/Listings/InventoryEventPage/MarketListings/StubHubListingsWithManualPricing.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventPageRightPanel.tsx","../../src/components/Listings/InventoryEventPage/InventoryEventPage.tsx","../../src/navigations/Routes/InventoryEvent/InventoryEvent.tsx","../../src/navigations/Routes/InventoryEvent/InventoryEventPageRedirect.tsx","../../src/hooks/api/useOnSaleEvents.ts","../../src/components/Listings/InventoryEventPage/InventoryEventPageV2.hooks.ts","../../src/components/Listings/InventoryEventPage/InventoryEventPageV2.tsx","../../src/navigations/Routes/InventoryEvent/InventoryEventV2.tsx","../../src/components/EntitySearch/EntitySearchConfigDialog/EntitySearchConfigDialog.tsx","../../src/components/EntitySearch/EntitySearchConfigActions/EntitySearchConfigActions.tsx","../../src/components/EntitySearch/EntitySearchConfigsToolbar/EntitySearchConfigsToolbar.tsx","../../src/components/FilterToolbarEmbedded/AddFilterDropdown/AddFilterDropdown.tsx","../../src/components/FilterToolbarEmbedded/FilterList/FilterList.tsx","../../src/components/FilterToolbarEmbedded/FilterToolbarEmbedded.tsx","../../src/components/EntitySearch/EntitySearchFilterBar/EntitySearchFilterBar.tsx","../../src/components/EntitySearch/EntitySearchRefetcher/EntitySearchRefetcher.tsx","../../src/components/EntitySearch/useEntitySearch.ts","../../src/navigations/Routes/InventorySearch/InventorySearchFilterBar/InventorySearchFilterBar.tsx","../../src/navigations/Routes/InventorySearch/InventorySearchToolbar/InventorySearchToolbar.tsx","../../src/navigations/Routes/InventorySearch/InventorySearch.tsx","../../src/navigations/Routes/Login/Login.tsx","../../src/navigations/Routes/Login/LoginCallback.tsx","../../src/navigations/Routes/Login/LoginFailure.tsx","../../src/navigations/Routes/Login/Logout.tsx","../../src/navigations/Routes/Notifications/Notifications.tsx","../../src/contexts/EventDiscoveryContext/EventDiscoveryContext.tsx","../../src/navigations/Routes/OnSaleEvent/OnSaleEventTable.tsx","../../src/navigations/Routes/OnSaleEvent/OnSaleEventView.tsx","../../src/navigations/Routes/OnSaleEvent/OnSaleEvent.tsx","../../src/tables/MarketplacePaymentsTable/useGetMarketplaceDefaultColumnsConfig.ts","../../src/tables/MarketplacePaymentsTable/useGetDisplayMarketplacePaymentsTableColumns.ts","../../src/tables/MarketplacePaymentsTable/MarketplacePaymentsTable.tsx","../../src/components/MarketplacePayments/Tabs/components/GroupedPaymentsAccordionBody.tsx","../../src/components/MarketplacePayments/Tabs/components/GroupedPaymentsAccordionHeader.tsx","../../src/components/MarketplacePayments/Tabs/components/GroupedPaymentsAccordion.tsx","../../src/components/MarketplacePayments/Tabs/MarketplacePaymentsTabContent.tsx","../../src/components/MarketplacePayments/Tabs/MarketplacePaymentsTab.tsx","../../src/components/MarketplacePayments/MarketplacePaymentDeeplinkListener.tsx","../../src/components/MainFilterBar/useMarketplacePaymentsFilters.tsx","../../src/components/MarketplacePayments/MarketplacePaymentsFilterBar/MarketplacePaymentsFilterBar.tsx","../../src/components/MarketplacePayments/PaymentsToolbar/MarketplacePaymentsToolbar.tsx","../../src/navigations/Routes/Payments/Payments.constants.ts","../../src/navigations/Routes/Payments/Payments.utils.ts","../../src/navigations/Routes/Payments/Payments.tsx","../../src/components/Events/EventPage/EventPageTabs.tsx","../../src/components/Listings/ListingFilterBar/ListingSideTableFilterBar.tsx","../../src/components/Listings/InventoryEventPage/InventorySideTable.tsx","../../src/components/Events/EventPage/SidePanel/SidePanelHeader.tsx","../../src/components/Events/EventPage/SidePanel/SidePanel.tsx","../../src/hooks/api/usePurchaseEventOverrides.tsx","../../src/components/Purchases/PurchaseEventPage/FulfillmentSection/VendorCell.tsx","../../src/components/Purchases/PurchaseEventPage/FulfillmentSection/OverrideSettingForm.tsx","../../src/components/Purchases/PurchaseEventPage/PurchaseEventFulfillmentSection.utils.ts","../../src/components/Purchases/PurchaseEventPage/PurchaseEventFulfillmentSection.tsx","../../src/components/Purchases/PurchaseEventPage/PurchaseEventInfoSection.tsx","../../src/components/Events/EventPage/EventPageHeader.tsx","../../src/components/Purchases/PurchaseEventPage/PurchaseEventPageHeader.tsx","../../src/components/Purchases/PurchaseEventPage/PurchaseEventPage.tsx","../../src/navigations/Routes/PurchaseEvent/PurchaseEvent.tsx","../../src/contexts/PurchaseDataContext/useSingleTimePeriodPurchaseQuery.tsx","../../src/components/Accordions/PurchaseDatesAccordion/PurchaseDateItemBody.tsx","../../src/components/Accordions/PurchaseDatesAccordion/PurchaseDateItemHeader.tsx","../../src/components/Accordions/PurchaseDatesAccordion/PurchaseDatesAccordionMonthGroupItem.tsx","../../src/components/Accordions/PurchaseDatesAccordion/PurchaseDatesAccordion.tsx","../../src/components/Purchases/BulkActions/PurchasesGlobalBulkActions/Actions/SettingsActions.tsx","../../src/components/Purchases/BulkActions/PurchasesGlobalBulkActions/Actions/TagsActions.tsx","../../src/components/Purchases/BulkActions/PurchasesGlobalBulkActions/Actions/AccountingActions.tsx","../../src/components/Purchases/BulkActions/PurchasesGlobalBulkActions/PurchasesGlobalBulkActions.tsx","../../src/components/Purchases/SelectedItemsLabel/SetPurchasesAccordionSelectionCountLabel.tsx","../../src/components/Purchases/SelectedItemsLabel/SetPurchasesFlattenedViewSelectionCountLabel.tsx","../../src/components/Purchases/SelectedItemsLabel/SetPurchasesTimeViewSelectionCountLabel.tsx","../../src/modals/ColumnSettings/hooks/useColumnServerUserSettings.tsx","../../src/core/POS/DragAndDropSort/DragAndDropGroup.tsx","../../src/modals/ColumnSettings/ColumnGroupListItem.tsx","../../src/modals/ColumnSettings/hooks/useAdaptedColumns.ts","../../src/modals/ColumnSettings/ColumnsSectionV2.tsx","../../src/modals/ColumnSettings/TableColumnsInputV2.tsx","../../src/modals/ColumnSettings/PurchaseColumnSettings.tsx","../../src/navigations/Routes/Purchases/PurchaseFlattenedView.tsx","../../src/navigations/Routes/Purchases/PurchaseToolbar/PurchaseToolbar.styled.tsx","../../src/navigations/Routes/Purchases/PurchaseToolbar/PurchaseToolbar.tsx","../../src/navigations/Routes/Purchases/Purchases.tsx","../../src/core/POS/PosNoResultsFound/NoResultsFound.tsx","../../src/navigations/Routes/PurchaseSearch/PurchaseSearchFilterBar/PurchaseSearchFilterBar.tsx","../../src/navigations/Routes/PurchaseSearch/PurchaseSearchToolbar/PurchaseSearchToolbar.tsx","../../src/navigations/Routes/PurchaseSearch/PurchaseSearch.tsx","../../src/navigations/Routes/RedirectToStubHubUk/RedirectToStubHubUk.tsx","../../src/utils/columns/inventory/inventoryColumnUtils.ts","../../src/utils/columns/sales/salesColumnUtils.ts","../../src/dialogs/ReportBuilderDialog/GroupBySelector/GroupBySelector.tsx","../../src/modals/ColumnSettings/TableColumnsDisplay.tsx","../../src/contexts/SellerRoleContext/SellerRoleContext.tsx","../../src/dialogs/ShareReportDialog/ShareReportDialog.styled.tsx","../../src/dialogs/ShareReportDialog/ShareReportBody.tsx","../../src/dialogs/ShareReportDialog/ShareReportDialog.tsx","../../src/dialogs/ReportBuilderDialog/MetricsSelectionInputModal/InventoryMetricsSelectionInputModal.tsx","../../src/dialogs/ReportBuilderDialog/MetricsSelectionInputModal/SalesMetricsSelectionInputModal.tsx","../../src/dialogs/ReportBuilderDialog/ReportBuilderFilterInput.utils.ts","../../src/dialogs/ReportBuilderDialog/ReportBuilderFilterInput.tsx","../../src/dialogs/ReportBuilderDialog/WidgetsSelectionInput/WidgetsSelectionInput.tsx","../../src/dialogs/ReportBuilderDialog/ReportBuilderDialogBody.tsx","../../src/dialogs/ReportBuilderDialog/ReportBuilderDialog.tsx","../../src/hooks/useReportConfigsV2.ts","../../src/components/MainFilterBar/useCommissionFilters.tsx","../../src/components/MainFilterBar/useListingReportFilters.tsx","../../src/components/MainFilterBar/useSaleReportFilters.tsx","../../src/dialogs/ReportBuilderDialog/ReportBuilderFilterInputV2.tsx","../../src/dialogs/ReportBuilderDialog/ReportBuilderDialogBodyV2.tsx","../../src/dialogs/ReportBuilderDialog/ReportBuilderDialogV2.tsx","../../src/dialogs/ReportHistoryDialog/ReportHistoryTable.tsx","../../src/dialogs/ReportHistoryDialog/useFetchReportSnapshotsInfo.ts","../../src/dialogs/ReportHistoryDialog/ReportHistoryDialog.tsx","../../src/components/ReportsInventoryPage/ReportsInventoryPage.utils.ts","../../src/contexts/ReportMetricsContext/ReportMetricsContext.tsx","../../src/tables/ListingTable/ListingReportTableColumnDefContext.tsx","../../src/navigations/Routes/ReportsInventory/ReportsInventoryContextProvider.tsx","../../src/components/Reports/ReportsExport/ReportsExport.utils.ts","../../src/components/Reports/ReportsExport/ReportsInventoryExport.tsx","../../src/components/ReportsSalePage/ReportsSalePage.utils.ts","../../src/tables/SalesTable/SaleReportTableColumnDefContext.tsx","../../src/navigations/Routes/ReportsSale/ReportsSaleContextProvider.tsx","../../src/components/Reports/ReportsExport/ReportsSaleExport.tsx","../../src/tables/ReportsTable/configs/ReportsTableColumnsConfig.tsx","../../src/tables/ReportsTable/ReportsTable.tsx","../../src/tables/ReportsTable/ReportsTableContainer.tsx","../../src/navigations/Routes/Reports/useReportV1Actions.ts","../../src/hooks/useReportConfigActionsV2.ts","../../src/navigations/Routes/Reports/useReportV2Actions.tsx","../../src/navigations/Routes/Reports/Reports.tsx","../../src/contexts/ReportMetricsContext/ReportMetricsContextV2.tsx","../../src/navigations/Routes/ReportsInventory/ReportsInventoryContextProviderV2.tsx","../../src/components/Reports/ReportsExport/ReportsInventoryExportV2.tsx","../../src/navigations/Routes/ReportsSale/ReportsSaleContextProviderV2.tsx","../../src/components/Reports/ReportsExport/ReportsSaleExportV2.tsx","../../src/tables/ReportsTable/configs/ReportsTableColumnsConfigV2.tsx","../../src/tables/ReportsTable/ReportsTableV2.tsx","../../src/tables/ReportsTable/ReportsTableContainerV2.tsx","../../src/navigations/Routes/Reports/ReportsV2.tsx","../../src/tables/ReportTableCommon/ReportTableCommon.utils.ts","../../src/tables/ReportTableCommon/DefaultColumnHelperAccessor.tsx","../../src/tables/SalesTable/configs/CommissionReportTableColumnsConfig.tsx","../../src/tables/SalesTable/CommissionReportTableColumnDefContextV2.tsx","../../src/tables/SalesTable/CommissionReportTableV2.tsx","../../src/hooks/useReportPermissions.tsx","../../src/components/Reports/ReportsFilterToolbar/ReportsFilterToolbarV2.tsx","../../src/svgs/ReportEditTableIcon.tsx","../../src/components/Reports/ReportsPageToolbar/ReportsPageToolbarV2.tsx","../../src/svgs/DragHandleIcon.tsx","../../src/components/Reports/ReportsTableEditor/MetricsOptionsListItem.tsx","../../src/components/Reports/ReportsTableEditor/MetricsInputDroppable.tsx","../../src/components/Reports/ReportsTableEditor/MetricsOptionsList.tsx","../../src/components/Reports/ReportsTableEditor/ReportsTableEditorForm.tsx","../../src/components/Reports/ReportsTableEditor/ReportsTableEditor.tsx","../../src/components/Reports/ReportsPageLayout/ReportsPageLayout.tsx","../../src/components/ReportsCommissionPage/ReportsCommissionPage.tsx","../../src/navigations/Routes/ReportsCommission/ReportsCommissionContextProviderV2.tsx","../../src/navigations/Routes/ReportsCommission/ReportsCommission.tsx","../../src/core/POS/PosFloatingSpinner/PosFloatingSpinner.tsx","../../src/components/Reports/ReportsMaxSizeMessage/ReportsMaxSizeMessage.tsx","../../src/core/ui/CircleIcon/CircleIcon.tsx","../../src/svgs/ReportGroupIcon.tsx","../../src/svgs/TimeoutIcon.tsx","../../src/tables/Table/TableStateWrapper.tsx","../../src/tables/ListingTable/ListingReportTable.tsx","../../src/components/Reports/ReportsFilterToolbar/ReportsFilterToolbar.tsx","../../src/components/ReportsInventoryPage/ReportsInventoryPage.tsx","../../src/components/Reports/ReportsPageToolbar/ReportsPageToolbar.tsx","../../src/navigations/Routes/ReportsInventory/ReportsInventory.tsx","../../src/tables/ListingTable/configs/ListingReportTableColumnsConfigV2.tsx","../../src/tables/ListingTable/ListingReportTableColumnDefContextV2.tsx","../../src/tables/ListingTable/ListingReportTableV2.tsx","../../src/components/ReportsInventoryPage/ReportsInventoryPageV2.tsx","../../src/navigations/Routes/ReportsInventory/ReportsInventoryV2.tsx","../../src/tables/SalesTable/SaleReportTable.tsx","../../src/components/ReportsSalePage/ReportsSalePage.tsx","../../src/navigations/Routes/ReportsSale/ReportsSale.tsx","../../src/tables/SalesTable/configs/SaleReportTableColumnsConfigV2.tsx","../../src/tables/SalesTable/SaleReportTableColumnDefContextV2.tsx","../../src/tables/SalesTable/SaleReportTableV2.tsx","../../src/components/ReportsSalePage/ReportsSalePageV2.tsx","../../src/navigations/Routes/ReportsSale/ReportsSaleV2.tsx","../../src/navigations/Routes/SaleSearch/SaleSearchFilterBar/SaleSearchFilterBar.tsx","../../src/navigations/Routes/SaleSearch/SaleSearchToolbar/SaleSearchToolbar.tsx","../../src/navigations/Routes/SaleSearch/SaleSearch.tsx","../../src/components/Sales/SaleEventPage/SaleEventInfoSection.tsx","../../src/components/Sales/SaleEventPage/SaleEventPageHeader.tsx","../../src/components/Sales/SaleEventPage/SaleEventPage.tsx","../../src/navigations/Routes/SalesEvent/SalesEvent.tsx","../../src/navigations/Routes/Settings/Settings.tsx","../../src/hooks/api/useAutoCurrencyConversionSettings.tsx","../../src/navigations/Routes/Settings/Views/MyAccount/CurrencySection.tsx","../../src/hooks/useCurrencyConversionOverrides.ts","../../src/dialogs/CurrencyConversionOverrideDialog/CurrencyConversionOverrideDialog.tsx","../../src/tables/VendorsTable/VendorsTableContainer.styled.tsx","../../src/tables/CurrencyConversionOverridesTable/configs/CurrencyConversionOverridesTableColumnsConfig.tsx","../../src/tables/CurrencyConversionOverridesTable/CurrencyConversionOverridesTable.tsx","../../src/tables/CurrencyConversionOverridesTable/CurrencyConversionOverridesTableContainer.tsx","../../src/navigations/Routes/Settings/Views/SellerAccountSetting/SellerAccountSettingCurrencyConversionOverrides/SellerAccountSettingCurrencyConversionOverrides.tsx","../../src/navigations/Routes/Settings/Views/CurrencyConversion/CurrencyConversion.tsx","../../src/navigations/Routes/Settings/Views/MyAccount/TimezoneSection.tsx","../../src/navigations/Routes/Settings/Views/MyAccount/MyAccount.tsx","../../src/hooks/api/useAutoPoRestrictionSettings.ts","../../src/navigations/Routes/Settings/Views/PurchaseOrderSetting/PurchaseOrderSetting.utils.ts","../../src/navigations/Routes/Settings/Views/PurchaseOrderSetting/AutoPoRestictionForm.tsx","../../src/navigations/Routes/Settings/Views/PurchaseOrderSetting/PurchaseOrderGeneralSettingForm.tsx","../../src/navigations/Routes/Settings/Views/PurchaseOrderSetting/PurchaseOrderSetting.tsx","../../src/navigations/Routes/Settings/Views/Accounting/AccountingSetting.tsx","../../src/hooks/api/useGetAccessiblePurchasePaymentMethodsQuery.ts","../../src/dialogs/PurchasePaymentMethodDialog/PurchasePaymentMethodDialog.tsx","../../src/tables/PurchasePaymentMethodsTable/configs/PurchasePaymentMethodsTableColumnsConfig.tsx","../../src/tables/PurchasePaymentMethodsTable/PurchasePaymentMethodsTable.tsx","../../src/tables/PurchasePaymentMethodsTable/PurchasePaymentMethodsTableContainer.tsx","../../src/navigations/Routes/Settings/Views/SellerAccountSetting/SellerAccountSettingPaymentMethods/SellerAccountSettingPaymentMethods.tsx","../../src/hooks/api/useGetAccessibleVendorAccountsQuery.ts","../../src/hooks/api/useGetAccessibleVendorsQuery.ts","../../src/navigations/Routes/Settings/Views/SellerAccountSetting/SellerAccountSettingVendorAccounts/SellerAccountSettingVendorAccounts.tsx","../../src/navigations/Routes/Settings/Views/SellerAccountSetting/SellerAccountSettingVendors/SellerAccountSettingVendors.tsx","../../src/navigations/Routes/Settings/Views/SellerAccountSetting/SellerAccountSettingBody/SellerAccountSettingBody.tsx","../../src/navigations/Routes/Settings/Views/SellerAccountSetting/SellerAccountSettingHeader/SellerAccountSettingHeader.styled.tsx","../../src/navigations/Routes/Settings/Views/SellerAccountSetting/SellerAccountSettingHeader/SellerAccountSettingHeader.tsx","../../src/navigations/Routes/Settings/Views/SellerAccountSetting/SellerAccountSetting.tsx","../../src/navigations/Routes/Settings/Views/SyncCenter/Components/ticketTypeOverrideInputForm.utils.ts","../../src/navigations/Routes/Settings/Views/SyncCenter/Components/TicketTypeOverrideInputForm.tsx","../../src/components/InstructionsList/InstructionsList.tsx","../../src/hooks/api/useTradeDeskResetPasswordMutation.ts","../../src/navigations/Routes/Settings/Views/SyncCenter/TradeDeskApiResetInstructions.tsx","../../src/navigations/Routes/Settings/Views/SyncCenter/SyncCenter.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/SellerRoleModal/SellerRoleModal.utils.ts","../../src/navigations/Routes/Settings/Views/UsersManagement/SellerRoleModal/SellerRoleModal.types.ts","../../src/navigations/Routes/Settings/Views/UsersManagement/SellerRoleModal/components/SellerPermissionDisplay.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/SellerRoleModal/components/SellerPermissionSelectionSection.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/SellerRoleModal/components/SellerUserDisplay.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/SellerRoleModal/components/SellerRoleUsersSection.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/SellerRoleModal/components/SellerRoleDetails.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/SellerRoleModal/components/LaunchDeleteRole.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/SellerRoleModal/SellerRoleModalFooter.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/SellerRoleModal/SellerRoleModalBody.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/SellerRoleModal/SellerRoleModal.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/SellerRoleModal/SellerRoleModalConfig.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/RolesTable/RolesTableColumnsConfig.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/RolesTable/RolesTable.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/Roles.tsx","../../src/components/common/SellerUserListItem/SellerUserListItem.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/EditTeam/TeamInput.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/EditTeam/AddTeamModal.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/EditTeam/EditTeamModal.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/TeamsTable/TeamsTableColumnsConfig.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/TeamsTable/TeamsTable.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/Teams.tsx","../../src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/FilterInput.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/EditUser/AddUserModal.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/UsersTable/hooks/useGetFilteredUsers.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/EditUser/EditUserModal.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/SellerPermissionDisplayModal/SellerPermissionDisplayModal.utils.ts","../../src/navigations/Routes/Settings/Views/UsersManagement/SellerPermissionDisplayModal/SellerPermissionDisplayModalBody.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/SellerPermissionDisplayModal/SellerPermissionDisplayModal.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/SellerPermissionDisplayModal/SellerPermissionDisplayModalConfig.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/UsersTable/UsersTableColumnsConfig.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/UsersTable/UsersTable.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/Users.tsx","../../src/navigations/Routes/Settings/Views/UsersManagement/UsersManagement.tsx","../../src/navigations/Routes/Settings/Views/VendorManagement/Payments/Payments.tsx","../../src/navigations/Routes/Settings/Views/VendorManagement/VendorManagement.tsx","../../src/navigations/Routes/Settings/Views/VendorManagement/Vendors/hooks/useGetVendorIdFromUrl.ts","../../src/hooks/api/useGetVendor.ts","../../src/hooks/api/useGetFilteredAccessibleVendorAccountsQuery.ts","../../src/hooks/api/useInvalidateGetVendorQuery.ts","../../src/modals/VendorDetails/components/VendorAccounts/components/FilterVendorAccountsInput.tsx","../../src/hooks/api/useInvalidateGetAccessibleVendorsQuery.ts","../../src/navigations/Routes/Settings/Views/VendorManagement/Vendors/hooks/useAddVendorAccount.ts","../../src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorActions/useAddVendorAccountActions.ts","../../src/modals/VendorDetails/components/VendorAccounts/components/VendorAccountsTable/VendorAccountActions.tsx","../../src/modals/VendorDetails/components/VendorAccounts/components/VendorAccountsTable/VendorAccountsActionsCell.tsx","../../src/modals/VendorDetails/components/VendorAccounts/components/VendorAccountsTable/vendorsAccountsColumnUtils.types.ts","../../src/modals/VendorDetails/components/VendorAccounts/components/VendorAccountsTable/VendorsAccountsTableColumnsConfig.tsx","../../src/modals/VendorDetails/components/VendorAccounts/components/VendorAccountsTable/VendorAccountsTable.tsx","../../src/modals/VendorDetails/components/VendorAccounts/components/AddVendorAccount.tsx","../../src/modals/VendorDetails/components/VendorAccounts/VendorAccounts.tsx","../../src/navigations/Routes/Settings/Views/VendorManagement/Vendors/hooks/useAddVendor.ts","../../src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorActions/useAddVendorActions.ts","../../src/modals/VendorDetails/VendorSummary.tsx","../../src/modals/VendorDetails/VendorDeliveryOverrideForm.tsx","../../src/modals/VendorDetails/VendorDetailsBodyContent.tsx","../../src/modals/VendorDetails/VendorDetailsModalHeader.tsx","../../src/modals/VendorDetails/VendorDetailsModalBody.tsx","../../src/modals/VendorDetails/VendorDetail.tsx","../../src/utils/vendorUtils.tsx","../../src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorActions/useOpenVendorDetailsModal.ts","../../src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorActions/VendorActions.tsx","../../src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/AddVendorButton.tsx","../../src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorsPageHeader/VendorsPageHeader.tsx","../../src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorsTable/vendorsColumnUtils.types.ts","../../src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/AccountStatus/AccountType.tsx","../../src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorsTable/VendorActionsCell.tsx","../../src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorsTable/VendorsTableColumnsConfig.tsx","../../src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorsTable/VendorsTable.tsx","../../src/navigations/Routes/Settings/Views/VendorManagement/Vendors/hooks/useGetFilteredVendors.ts","../../src/navigations/Routes/Settings/Views/VendorManagement/Vendors/Vendors.tsx","../../src/navigations/Routes/Settings/Views/AccountAutoPricingSettings/AccountAutoPricingSettings.hooks.tsx","../../src/components/AutoPricing/AutoPricingCircuitBreakerMaxDiscountVelocityInput/AutoPricingCircuitBreakerMaxDiscountVelocityInput.tsx","../../src/components/AutoPricing/AutoPricingDefaultCompQuantitiesInput/AutoPricingDefaultCompQuantitiesInput.tsx","../../src/components/AutoPricing/AutoPricingMinCompListingsSlider/AutoPricingMinCompListingsSlider.tsx","../../src/navigations/Routes/Settings/Views/AccountAutoPricingSettings/AccountAutoPricingSettingsForm/AccountAutoPricingSettingsForm.tsx","../../src/navigations/Routes/Settings/Views/AccountAutoPricingSettings/AccountAutoPricingSettings.tsx","../../src/assets/signup.mp4","../../src/contexts/SignUpContext/SignUpContext.tsx","../../src/components/SignUp/EmailForm/Input/Input.tsx","../../src/svgs/ArrowRight.tsx","../../src/components/SignUp/EmailForm/SubmitButton/SubmitButton.tsx","../../src/components/SignUp/EmailForm/EmailForm.tsx","../../src/components/SignUp/Footer/Footer.tsx","../../src/components/SignUp/Titles/Titles.tsx","../../src/components/SignUp/InviteOnlyBanner/InviteOnlyBanner.tsx","../../src/navigations/Routes/SignUp/constants.ts","../../src/components/SignUp/SignUpRedirect.tsx","../../src/components/SignUp/SignUpValidator.tsx","../../src/navigations/Routes/SignUp/SignUp.tsx","../../src/tables/AdCampaignsTable/AdCampaignsTable.type.ts","../../src/utils/adCampaignUtils.tsx","../../src/tables/AdCampaignsTable/configs/AdCampaignsActionsCell.tsx","../../src/tables/AdCampaignsTable/configs/AdCampaignsDateCell.tsx","../../src/tables/AdCampaignsTable/configs/AdCampaignsTableColumnConfig.tsx","../../src/tables/AdCampaignsTable/useGetAdCampaignsTableColumns.ts","../../src/tables/AdCampaignsTable/AdCampaignsTable.tsx","../../src/modals/AdCampaignCreate/AdCampaignCreate.tsx","../../src/navigations/Routes/SponsoredListings/AdCampaignsToolbar/AdCampaignsToolbar.styled.tsx","../../src/navigations/Routes/SponsoredListings/AdCampaignsToolbar/AdCampaignsToolbar.tsx","../../src/navigations/Routes/SponsoredListings/SponsoredListings.tsx","../../src/svgs/PaymentsIcon.tsx","../../src/assets/icons/reach_pro/reach_pro_dark.ico","../../src/assets/icons/reach_pro/reach_pro_light.ico","../../src/components/SignUp/DocumentInfo.tsx","../../src/hooks/useMemoryTelemetry.ts","../../src/app/App.styled.tsx","../../src/app/QueryClients.tsx","../../src/app/App.tsx","../../src/app/AppRoutes.tsx","../../src/utils/sentry/sentry.ts","../../src/index.tsx"],"sourcesContent":["export enum MainRoute {\n SignUp = 'SignUp',\n Login = 'Login',\n LoginCallback = 'LoginCallback',\n Logout = 'Logout',\n LoginFailure = 'LoginFailure',\n Home = 'Home',\n Inventory = 'Inventory',\n InventorySearch = 'InventorySearch',\n Sales = 'Sales',\n SalesSearch = 'SalesSearch',\n Purchases = 'Purchases',\n PurchaseSearch = 'PurchaseSearch',\n RedirectToUK = 'RedirectToUK',\n SellerAccountSetting = 'SellerAccountSetting',\n Activity = 'Activity',\n Notifications = 'Notifications',\n ReleaseNotes = 'ReleaseNotes',\n Reports = 'Reports',\n ReportsV2 = 'ReportsV2',\n SyncCenter = 'SyncCenter',\n Email = 'Email',\n Settings = 'Settings',\n SponsoredListings = 'SponsoredListings',\n Payments = 'Payments',\n Discovery = 'Discovery',\n HelpCenter = 'HelpCenter',\n InventoryEvent = 'InventoryEvent',\n PurchasesEvent = 'PurchasesEvent',\n SalesEvent = 'SalesEvent',\n}\n","import { Locale } from 'date-fns';\nimport * as Locales from 'date-fns/locale';\n\nexport const getCurrentLocale = () => {\n return getLocaleFromLanguage(getCurrentLanguage());\n};\n\nexport const getCurrentLanguage = () => {\n const curLocaleStr =\n navigator.languages && navigator.languages.length\n ? navigator.languages[0]\n : navigator.language;\n\n return curLocaleStr;\n};\n\nexport const getCurrentLanguages = () => {\n return navigator.languages && navigator.languages.length\n ? navigator.languages\n : [navigator.language];\n};\n\nexport const generateAcceptLanguage = () => {\n return getCurrentLanguages().join(',');\n};\n\nexport const getLocaleFromLanguage = (language: string) => {\n return getDateFnsLocale(language.replaceAll('-', '') as keyof typeof Locales);\n};\n\nexport const getLocaleFromLanguageOrCurrent = (language?: string | null) => {\n language = language || getCurrentLanguage();\n return getLocaleFromLanguage(language);\n};\n\nexport const getDateFnsLocale = (locale: keyof typeof Locales): Locale => {\n return Locales[locale] ?? Locales.enUS;\n};\n\nexport const compareLocaleLowercased = (a: string, b: string) => {\n const aL = a?.toLocaleLowerCase();\n const bL = b?.toLocaleLowerCase();\n return aL < bL ? -1 : aL === bL ? 0 : 1;\n};\n\nexport const getInitialsFromText = (text: string) => {\n if (!text || text.length <= 2) {\n return (text || '').toLocaleUpperCase();\n }\n\n const firstLetter = text[0];\n const indexOfLastSpace = text.lastIndexOf(' ');\n if (indexOfLastSpace > 0 && indexOfLastSpace < text.length - 1) {\n return (firstLetter + text[indexOfLastSpace + 1]).toUpperCase();\n }\n\n return (firstLetter + text[1]).toUpperCase();\n};\n","//----------------------\n// \n// Generated using the NSwag toolchain v13.20.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// \n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\nimport { generateAcceptLanguage } from './utils/localeUtils';\nexport class PosClientBase {\n private configuration: PosClientConfig;\n\n constructor(configuration: PosClientConfig) {\n this.configuration = configuration;\n }\n\n transformOptions = (options: RequestInit): Promise => {\n options.headers = {\n ...(options.headers || {}),\n 'Accept-Language': generateAcceptLanguage(),\n 'ActiveAccountId': this.configuration.activeAccountId ?? '',\n };\n\n return Promise.resolve(options);\n };\n}\n\nexport interface IActivityLogClient {\n\n getActivityLog(entityId: number | undefined, entityType: ActionOutboxEntityType | undefined): Promise;\n\n getActivityLogByFilter(query: ActivityLogQuery): Promise;\n\n getActivityLogWithAuditByFilter(query: ActivityLogQuery): Promise;\n\n getActivityLogTagNamesByEntityId(entityId: number | undefined, entityType: ActionOutboxEntityType | undefined): Promise;\n\n getRecentActivityLog(count: number | undefined, includeEventInfo: boolean | undefined): Promise;\n\n trackEntityView(entityId: number | undefined, entityType: ActionOutboxEntityType | undefined): Promise;\n\n trackListingCompsView(listingId: number | undefined): Promise;\n\n trackListingDocumentView(listingId: number | undefined, documentId: string | undefined, documentType: DocumentType | undefined): Promise;\n\n trackListingDocumentDownload(listingId: number | undefined, documentId: string | undefined, documentType: DocumentType | undefined): Promise;\n}\n\nexport class ActivityLogClient extends PosClientBase implements IActivityLogClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getActivityLog(entityId: number | undefined, entityType: ActionOutboxEntityType | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ActivityLog/GetActivityLog?\";\n if (entityId === null)\n throw new Error(\"The parameter 'entityId' cannot be null.\");\n else if (entityId !== undefined)\n url_ += \"entityId=\" + encodeURIComponent(\"\" + entityId) + \"&\";\n if (entityType === null)\n throw new Error(\"The parameter 'entityType' cannot be null.\");\n else if (entityType !== undefined)\n url_ += \"entityType=\" + encodeURIComponent(\"\" + entityType) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetActivityLog(_response);\n });\n }\n\n protected processGetActivityLog(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ActivityLog[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getActivityLogByFilter(query: ActivityLogQuery): Promise {\n let url_ = this.baseUrl + \"/api/ActivityLog/GetActivityLogByFilter\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetActivityLogByFilter(_response);\n });\n }\n\n protected processGetActivityLogByFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ActivityLog[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getActivityLogWithAuditByFilter(query: ActivityLogQuery): Promise {\n let url_ = this.baseUrl + \"/api/ActivityLog/GetActivityLogWithAuditByFilter\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetActivityLogWithAuditByFilter(_response);\n });\n }\n\n protected processGetActivityLogWithAuditByFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ActivityLog[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getActivityLogTagNamesByEntityId(entityId: number | undefined, entityType: ActionOutboxEntityType | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ActivityLog/GetActivityLogTagNamesByEntityId?\";\n if (entityId === null)\n throw new Error(\"The parameter 'entityId' cannot be null.\");\n else if (entityId !== undefined)\n url_ += \"entityId=\" + encodeURIComponent(\"\" + entityId) + \"&\";\n if (entityType === null)\n throw new Error(\"The parameter 'entityType' cannot be null.\");\n else if (entityType !== undefined)\n url_ += \"entityType=\" + encodeURIComponent(\"\" + entityType) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetActivityLogTagNamesByEntityId(_response);\n });\n }\n\n protected processGetActivityLogTagNamesByEntityId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getRecentActivityLog(count: number | undefined, includeEventInfo: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ActivityLog/GetRecentActivityLog?\";\n if (count === null)\n throw new Error(\"The parameter 'count' cannot be null.\");\n else if (count !== undefined)\n url_ += \"count=\" + encodeURIComponent(\"\" + count) + \"&\";\n if (includeEventInfo === null)\n throw new Error(\"The parameter 'includeEventInfo' cannot be null.\");\n else if (includeEventInfo !== undefined)\n url_ += \"includeEventInfo=\" + encodeURIComponent(\"\" + includeEventInfo) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetRecentActivityLog(_response);\n });\n }\n\n protected processGetRecentActivityLog(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ActivityLog[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n trackEntityView(entityId: number | undefined, entityType: ActionOutboxEntityType | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ActivityLog/TrackEntityView?\";\n if (entityId === null)\n throw new Error(\"The parameter 'entityId' cannot be null.\");\n else if (entityId !== undefined)\n url_ += \"entityId=\" + encodeURIComponent(\"\" + entityId) + \"&\";\n if (entityType === null)\n throw new Error(\"The parameter 'entityType' cannot be null.\");\n else if (entityType !== undefined)\n url_ += \"entityType=\" + encodeURIComponent(\"\" + entityType) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processTrackEntityView(_response);\n });\n }\n\n protected processTrackEntityView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n trackListingCompsView(listingId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ActivityLog/TrackListingCompsView?\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processTrackListingCompsView(_response);\n });\n }\n\n protected processTrackListingCompsView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n trackListingDocumentView(listingId: number | undefined, documentId: string | undefined, documentType: DocumentType | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ActivityLog/TrackListingDocumentView?\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n if (documentId === null)\n throw new Error(\"The parameter 'documentId' cannot be null.\");\n else if (documentId !== undefined)\n url_ += \"documentId=\" + encodeURIComponent(\"\" + documentId) + \"&\";\n if (documentType === null)\n throw new Error(\"The parameter 'documentType' cannot be null.\");\n else if (documentType !== undefined)\n url_ += \"documentType=\" + encodeURIComponent(\"\" + documentType) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processTrackListingDocumentView(_response);\n });\n }\n\n protected processTrackListingDocumentView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n trackListingDocumentDownload(listingId: number | undefined, documentId: string | undefined, documentType: DocumentType | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ActivityLog/TrackListingDocumentDownload?\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n if (documentId === null)\n throw new Error(\"The parameter 'documentId' cannot be null.\");\n else if (documentId !== undefined)\n url_ += \"documentId=\" + encodeURIComponent(\"\" + documentId) + \"&\";\n if (documentType === null)\n throw new Error(\"The parameter 'documentType' cannot be null.\");\n else if (documentType !== undefined)\n url_ += \"documentType=\" + encodeURIComponent(\"\" + documentType) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processTrackListingDocumentDownload(_response);\n });\n }\n\n protected processTrackListingDocumentDownload(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IAddressClient {\n\n getKnownCountries(): Promise<{ [key: string]: string; }>;\n\n getStateProvinces(): Promise<{ [key: string]: StateProvince[]; }>;\n\n getCitiesWithStateProvince(): Promise<{ [key: string]: City[]; }>;\n\n getCitiesWithoutStateProvince(): Promise<{ [key: string]: City[]; }>;\n}\n\nexport class AddressClient extends PosClientBase implements IAddressClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getKnownCountries(): Promise<{ [key: string]: string; }> {\n let url_ = this.baseUrl + \"/api/Address/GetKnownCountries\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetKnownCountries(_response);\n });\n }\n\n protected processGetKnownCountries(response: Response): Promise<{ [key: string]: string; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: string; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: string; }>(null as any);\n }\n\n getStateProvinces(): Promise<{ [key: string]: StateProvince[]; }> {\n let url_ = this.baseUrl + \"/api/Address/GetStateProvinces\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetStateProvinces(_response);\n });\n }\n\n protected processGetStateProvinces(response: Response): Promise<{ [key: string]: StateProvince[]; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: StateProvince[]; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: StateProvince[]; }>(null as any);\n }\n\n getCitiesWithStateProvince(): Promise<{ [key: string]: City[]; }> {\n let url_ = this.baseUrl + \"/api/Address/GetCitiesWithStateProvince\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCitiesWithStateProvince(_response);\n });\n }\n\n protected processGetCitiesWithStateProvince(response: Response): Promise<{ [key: string]: City[]; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: City[]; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: City[]; }>(null as any);\n }\n\n getCitiesWithoutStateProvince(): Promise<{ [key: string]: City[]; }> {\n let url_ = this.baseUrl + \"/api/Address/GetCitiesWithoutStateProvince\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCitiesWithoutStateProvince(_response);\n });\n }\n\n protected processGetCitiesWithoutStateProvince(response: Response): Promise<{ [key: string]: City[]; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: City[]; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: City[]; }>(null as any);\n }\n}\n\nexport interface IAdminClient {\n\n getAppContext(): Promise;\n}\n\nexport class AdminClient extends PosClientBase implements IAdminClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getAppContext(): Promise {\n let url_ = this.baseUrl + \"/api/Admin/GetAppContext\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAppContext(_response);\n });\n }\n\n protected processGetAppContext(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReactAppContext;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IAdPlatformCatalogClient {\n\n getCatalogForSeller(): Promise;\n}\n\nexport class AdPlatformCatalogClient extends PosClientBase implements IAdPlatformCatalogClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getCatalogForSeller(): Promise {\n let url_ = this.baseUrl + \"/api/AdPlatformCatalog/GetCatalogForSeller\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogForSeller(_response);\n });\n }\n\n protected processGetCatalogForSeller(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AdPlatformCatalogResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IAdPlatformReportingClient {\n\n getTransactionReport(currentyCode: string | undefined, aggType: TransactionAggType | undefined, adCampaignId: string | null | undefined, adGroupId: string | null | undefined): Promise;\n}\n\nexport class AdPlatformReportingClient extends PosClientBase implements IAdPlatformReportingClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getTransactionReport(currentyCode: string | undefined, aggType: TransactionAggType | undefined, adCampaignId: string | null | undefined, adGroupId: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/AdPlatformReporting/GetTransactionReport?\";\n if (currentyCode === null)\n throw new Error(\"The parameter 'currentyCode' cannot be null.\");\n else if (currentyCode !== undefined)\n url_ += \"currentyCode=\" + encodeURIComponent(\"\" + currentyCode) + \"&\";\n if (aggType === null)\n throw new Error(\"The parameter 'aggType' cannot be null.\");\n else if (aggType !== undefined)\n url_ += \"aggType=\" + encodeURIComponent(\"\" + aggType) + \"&\";\n if (adCampaignId !== undefined && adCampaignId !== null)\n url_ += \"adCampaignId=\" + encodeURIComponent(\"\" + adCampaignId) + \"&\";\n if (adGroupId !== undefined && adGroupId !== null)\n url_ += \"adGroupId=\" + encodeURIComponent(\"\" + adGroupId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTransactionReport(_response);\n });\n }\n\n protected processGetTransactionReport(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AdPlatformTransactionAgg[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IAutoPoClient {\n\n getInboundEmails(query: AutoPoInboundEmailQuery, take: number | null | undefined, skip: number | null | undefined): Promise;\n\n getClassifiedInboundEmails(classificationTypes: AutoPoInboundEmailClassificationType[], take: number | null | undefined, skip: number | null | undefined, isSortDescending: boolean | null | undefined): Promise;\n\n getClassifiedInboundEmailsCount(classificationTypes: AutoPoInboundEmailClassificationType[]): Promise;\n\n getPartialPurchaseOrderInboundEmails(query: AutoPoInboundEmailPartialPurchaseOrderQuery, take: number | null | undefined, skip: number | null | undefined): Promise;\n\n getPartialPurchaseOrderInboundEmailsCount(query: AutoPoInboundEmailPartialPurchaseOrderQuery): Promise;\n\n getPartialPurchaseOrder(partialPurchaseOrderId: number | undefined): Promise;\n\n getSingleInboundEmailThread(inboundEmailId: number | undefined): Promise;\n\n getPurchaseInboundEmailThread(purchaseOrderId: number | undefined, isClassified: boolean | null | undefined): Promise;\n\n getSaleInboundEmailThread(saleId: number | undefined, isClassified: boolean | null | undefined): Promise;\n\n getPrivateInboundEmailThread(toEmailAddress: string | undefined, classificationType: AutoPoInboundEmailClassificationType | undefined, isClassified: boolean | null | undefined): Promise;\n\n getInboundEmailBody(inboundEmailId: number | undefined): Promise;\n\n getAutoPoClassifiedInboundEmailIdForEntity(purchaseOrderId: number | null | undefined, saleId: number | null | undefined): Promise;\n\n classifyInboundEmail(inboundEmailId: number | undefined, classificationType: AutoPoInboundEmailClassificationType | undefined, purchaseOrderId: number | null | undefined, saleId: number | null | undefined): Promise;\n\n unclassifyInboundEmail(inboundEmailId: number | undefined, purchaseOrderId: number | null | undefined): Promise;\n\n canReprocessEmail(inboundEmailId: number | undefined, purchaseOrderId: number | null | undefined): Promise;\n\n getInboundEmailSellerGuidIds(): Promise;\n\n getSellerAccountCountryRestrictions(): Promise;\n\n getSellerAccountVendorRestrictions(): Promise;\n\n upsertSellerAccountCountryRestrictions(countryRestrictions: AutoPoSellerAccountCountryRestriction[]): Promise;\n\n upsertSellerAccountVendorRestrictions(vendorRestrictions: AutoPoSellerAccountVendorRestriction[]): Promise;\n}\n\nexport class AutoPoClient extends PosClientBase implements IAutoPoClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getInboundEmails(query: AutoPoInboundEmailQuery, take: number | null | undefined, skip: number | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/GetInboundEmails?\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetInboundEmails(_response);\n });\n }\n\n protected processGetInboundEmails(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AutoPoInboundEmail[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getClassifiedInboundEmails(classificationTypes: AutoPoInboundEmailClassificationType[], take: number | null | undefined, skip: number | null | undefined, isSortDescending: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/GetClassifiedInboundEmails?\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (isSortDescending !== undefined && isSortDescending !== null)\n url_ += \"isSortDescending=\" + encodeURIComponent(\"\" + isSortDescending) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(classificationTypes);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetClassifiedInboundEmails(_response);\n });\n }\n\n protected processGetClassifiedInboundEmails(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AutoPoInboundEmail[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getClassifiedInboundEmailsCount(classificationTypes: AutoPoInboundEmailClassificationType[]): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/GetClassifiedInboundEmailsCount\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(classificationTypes);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetClassifiedInboundEmailsCount(_response);\n });\n }\n\n protected processGetClassifiedInboundEmailsCount(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPartialPurchaseOrderInboundEmails(query: AutoPoInboundEmailPartialPurchaseOrderQuery, take: number | null | undefined, skip: number | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/GetPartialPurchaseOrderInboundEmails?\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPartialPurchaseOrderInboundEmails(_response);\n });\n }\n\n protected processGetPartialPurchaseOrderInboundEmails(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AutoPoPartialPurchaseOrderInboundEmail[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPartialPurchaseOrderInboundEmailsCount(query: AutoPoInboundEmailPartialPurchaseOrderQuery): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/GetPartialPurchaseOrderInboundEmailsCount\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPartialPurchaseOrderInboundEmailsCount(_response);\n });\n }\n\n protected processGetPartialPurchaseOrderInboundEmailsCount(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPartialPurchaseOrder(partialPurchaseOrderId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/GetPartialPurchaseOrder?\";\n if (partialPurchaseOrderId === null)\n throw new Error(\"The parameter 'partialPurchaseOrderId' cannot be null.\");\n else if (partialPurchaseOrderId !== undefined)\n url_ += \"partialPurchaseOrderId=\" + encodeURIComponent(\"\" + partialPurchaseOrderId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPartialPurchaseOrder(_response);\n });\n }\n\n protected processGetPartialPurchaseOrder(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AutoPoPartialPurchaseOrder;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSingleInboundEmailThread(inboundEmailId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/GetSingleInboundEmailThread?\";\n if (inboundEmailId === null)\n throw new Error(\"The parameter 'inboundEmailId' cannot be null.\");\n else if (inboundEmailId !== undefined)\n url_ += \"inboundEmailId=\" + encodeURIComponent(\"\" + inboundEmailId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSingleInboundEmailThread(_response);\n });\n }\n\n protected processGetSingleInboundEmailThread(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AutoPoInboundEmailThreadEmail[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPurchaseInboundEmailThread(purchaseOrderId: number | undefined, isClassified: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/GetPurchaseInboundEmailThread?\";\n if (purchaseOrderId === null)\n throw new Error(\"The parameter 'purchaseOrderId' cannot be null.\");\n else if (purchaseOrderId !== undefined)\n url_ += \"purchaseOrderId=\" + encodeURIComponent(\"\" + purchaseOrderId) + \"&\";\n if (isClassified !== undefined && isClassified !== null)\n url_ += \"isClassified=\" + encodeURIComponent(\"\" + isClassified) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPurchaseInboundEmailThread(_response);\n });\n }\n\n protected processGetPurchaseInboundEmailThread(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AutoPoInboundEmailThreadEmail[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSaleInboundEmailThread(saleId: number | undefined, isClassified: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/GetSaleInboundEmailThread?\";\n if (saleId === null)\n throw new Error(\"The parameter 'saleId' cannot be null.\");\n else if (saleId !== undefined)\n url_ += \"saleId=\" + encodeURIComponent(\"\" + saleId) + \"&\";\n if (isClassified !== undefined && isClassified !== null)\n url_ += \"isClassified=\" + encodeURIComponent(\"\" + isClassified) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSaleInboundEmailThread(_response);\n });\n }\n\n protected processGetSaleInboundEmailThread(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AutoPoInboundEmailThreadEmail[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPrivateInboundEmailThread(toEmailAddress: string | undefined, classificationType: AutoPoInboundEmailClassificationType | undefined, isClassified: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/GetPrivateInboundEmailThread?\";\n if (toEmailAddress === null)\n throw new Error(\"The parameter 'toEmailAddress' cannot be null.\");\n else if (toEmailAddress !== undefined)\n url_ += \"toEmailAddress=\" + encodeURIComponent(\"\" + toEmailAddress) + \"&\";\n if (classificationType === null)\n throw new Error(\"The parameter 'classificationType' cannot be null.\");\n else if (classificationType !== undefined)\n url_ += \"classificationType=\" + encodeURIComponent(\"\" + classificationType) + \"&\";\n if (isClassified !== undefined && isClassified !== null)\n url_ += \"isClassified=\" + encodeURIComponent(\"\" + isClassified) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPrivateInboundEmailThread(_response);\n });\n }\n\n protected processGetPrivateInboundEmailThread(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AutoPoInboundEmailThreadEmail[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getInboundEmailBody(inboundEmailId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/GetInboundEmailBody?\";\n if (inboundEmailId === null)\n throw new Error(\"The parameter 'inboundEmailId' cannot be null.\");\n else if (inboundEmailId !== undefined)\n url_ += \"inboundEmailId=\" + encodeURIComponent(\"\" + inboundEmailId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetInboundEmailBody(_response);\n });\n }\n\n protected processGetInboundEmailBody(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValueTupleOfStringAndString;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAutoPoClassifiedInboundEmailIdForEntity(purchaseOrderId: number | null | undefined, saleId: number | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/GetAutoPoClassifiedInboundEmailIdForEntity?\";\n if (purchaseOrderId !== undefined && purchaseOrderId !== null)\n url_ += \"purchaseOrderId=\" + encodeURIComponent(\"\" + purchaseOrderId) + \"&\";\n if (saleId !== undefined && saleId !== null)\n url_ += \"saleId=\" + encodeURIComponent(\"\" + saleId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAutoPoClassifiedInboundEmailIdForEntity(_response);\n });\n }\n\n protected processGetAutoPoClassifiedInboundEmailIdForEntity(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n classifyInboundEmail(inboundEmailId: number | undefined, classificationType: AutoPoInboundEmailClassificationType | undefined, purchaseOrderId: number | null | undefined, saleId: number | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/ClassifyInboundEmail?\";\n if (inboundEmailId === null)\n throw new Error(\"The parameter 'inboundEmailId' cannot be null.\");\n else if (inboundEmailId !== undefined)\n url_ += \"inboundEmailId=\" + encodeURIComponent(\"\" + inboundEmailId) + \"&\";\n if (classificationType === null)\n throw new Error(\"The parameter 'classificationType' cannot be null.\");\n else if (classificationType !== undefined)\n url_ += \"classificationType=\" + encodeURIComponent(\"\" + classificationType) + \"&\";\n if (purchaseOrderId !== undefined && purchaseOrderId !== null)\n url_ += \"purchaseOrderId=\" + encodeURIComponent(\"\" + purchaseOrderId) + \"&\";\n if (saleId !== undefined && saleId !== null)\n url_ += \"saleId=\" + encodeURIComponent(\"\" + saleId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processClassifyInboundEmail(_response);\n });\n }\n\n protected processClassifyInboundEmail(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n unclassifyInboundEmail(inboundEmailId: number | undefined, purchaseOrderId: number | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/UnclassifyInboundEmail?\";\n if (inboundEmailId === null)\n throw new Error(\"The parameter 'inboundEmailId' cannot be null.\");\n else if (inboundEmailId !== undefined)\n url_ += \"inboundEmailId=\" + encodeURIComponent(\"\" + inboundEmailId) + \"&\";\n if (purchaseOrderId !== undefined && purchaseOrderId !== null)\n url_ += \"purchaseOrderId=\" + encodeURIComponent(\"\" + purchaseOrderId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUnclassifyInboundEmail(_response);\n });\n }\n\n protected processUnclassifyInboundEmail(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n canReprocessEmail(inboundEmailId: number | undefined, purchaseOrderId: number | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/CanReprocessEmail?\";\n if (inboundEmailId === null)\n throw new Error(\"The parameter 'inboundEmailId' cannot be null.\");\n else if (inboundEmailId !== undefined)\n url_ += \"inboundEmailId=\" + encodeURIComponent(\"\" + inboundEmailId) + \"&\";\n if (purchaseOrderId !== undefined && purchaseOrderId !== null)\n url_ += \"purchaseOrderId=\" + encodeURIComponent(\"\" + purchaseOrderId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCanReprocessEmail(_response);\n });\n }\n\n protected processCanReprocessEmail(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getInboundEmailSellerGuidIds(): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/GetInboundEmailSellerGuidIds\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetInboundEmailSellerGuidIds(_response);\n });\n }\n\n protected processGetInboundEmailSellerGuidIds(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSellerAccountCountryRestrictions(): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/GetSellerAccountCountryRestrictions\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSellerAccountCountryRestrictions(_response);\n });\n }\n\n protected processGetSellerAccountCountryRestrictions(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AutoPoSellerAccountCountryRestriction[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSellerAccountVendorRestrictions(): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/GetSellerAccountVendorRestrictions\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSellerAccountVendorRestrictions(_response);\n });\n }\n\n protected processGetSellerAccountVendorRestrictions(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AutoPoSellerAccountVendorRestriction[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n upsertSellerAccountCountryRestrictions(countryRestrictions: AutoPoSellerAccountCountryRestriction[]): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/UpsertSellerAccountCountryRestrictions\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(countryRestrictions);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpsertSellerAccountCountryRestrictions(_response);\n });\n }\n\n protected processUpsertSellerAccountCountryRestrictions(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n upsertSellerAccountVendorRestrictions(vendorRestrictions: AutoPoSellerAccountVendorRestriction[]): Promise {\n let url_ = this.baseUrl + \"/api/AutoPo/UpsertSellerAccountVendorRestrictions\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(vendorRestrictions);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpsertSellerAccountVendorRestrictions(_response);\n });\n }\n\n protected processUpsertSellerAccountVendorRestrictions(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IBulkEditListingClient {\n\n cancelBackgroundTask(updateKey: string | undefined): Promise;\n\n bulkUpdateListingsPricesPreview(query: ListingQuery): Promise;\n\n bulkUpdateListingsPricesByPercent(preview: BulkEditPreview, percent: number | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateListingsPrices(preview: BulkEditPreview, priceChange: number | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdatePriceFloorCeilingPreview(query: ListingQuery): Promise;\n\n bulkUpdatePriceFloor(preview: BulkEditPreview, amount: number | undefined, updateKey: string | undefined, isRelative: boolean | undefined, adjustmentType: PricingFloorCeilingAdjustmentType | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdatePriceCeiling(preview: BulkEditPreview, percentMarketPrice: number | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUngroupListingsPreview(query: ListingQuery): Promise;\n\n bulkUngroupListings(preview: BulkEditPreview, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkRemovePredeliveryPreview(query: ListingQuery): Promise;\n\n bulkRemovePredelivery(preview: BulkEditPreview, removeBarcodes: boolean | undefined, removePdfs: boolean | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateMarketplaceSeatingOverridesPreview(query: ListingQuery): Promise;\n\n bulkUpdateMarketplaceSeatingOverrides(input: ValueTupleOfBulkEditPreviewAndListingDetailsUpdateInput, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkChangeEventPreview(query: ListingQuery): Promise;\n\n bulkChangeEvent(preview: BulkEditPreview, posEventId: string | undefined, viagogoEventId: number | null | undefined, eventMappingId: string | null | undefined, deallocateSales: boolean | null | undefined, reason: string | null | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateAutoPricingSettingsPreview(query: ListingQuery): Promise;\n\n bulkUpdateAutoPricingSettings(input: ValueTupleOfBulkEditPreviewAndListingDetailsUpdateInput, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateAutoPricingSettingsV2(input: ValueTupleOfBulkEditPreviewAndListingDetailsAutoPricingSectionUpdatesV2, viagogoEventId: number | null | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkGetListingPriceCalculationsInEvent(viagogoEventId: number | undefined, body: ValueTupleOfInt64OfAndListingPriceCalculationsInEventInput): Promise;\n\n bulkUpdateGeneralSettingsPreview(query: ListingQuery, hasPurchaseUpdates: boolean | undefined): Promise;\n\n bulkUpdateGeneralSettings(input: ValueTupleOfBulkEditPreviewAndListingDetailsUpdateInput, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateMarketplacePrices(input: ValueTupleOfBulkEditPreviewAndListingPricesUpdateInput, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateMarketplacePricesPreview(query: ListingQuery): Promise;\n\n bulkBroadcastListingsPreview(query: ListingQuery): Promise;\n\n bulkBroadcastListings(input: ValueTupleOfBulkEditPreviewAndISetOfMarketplaceAndISetOfMarketplace, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateAdminHoldPreview(query: ListingQuery): Promise;\n\n bulkUpdateAdminHold(preview: BulkEditPreview, adminHoldExpirationDate: string | null | undefined, adminHoldNotes: string | null | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateTicketTypeRulesPreview(query: ListingQuery, updateSalesOfListings: boolean | undefined): Promise;\n\n bulkUpdateTicketTypeRules(input: ValueTupleOfBulkEditPreviewAndDeliveryTypeAndIListOfTicketTypePriority, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined, updateSalesOfListings: boolean | undefined): Promise;\n\n bulkUpdateTagsPreview(query: ListingQuery): Promise;\n\n bulkUpdateTags(preview: BulkEditPreview, tagName: string | undefined, tagValue: string | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkRemoveTags(preview: BulkEditPreview, tagName: string | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkCreateListingGroups(input: MergeListingGroupInputList, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n /**\n * Group events by event id\n * @param updateKey (optional) \n * @param supportBackgroundProgress (optional) \n */\n bulkAutoCompAndGroupListingsV2(input: AutoGroupListingV2Input, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdatePurchaseCommissionsPreview(query: ListingQuery): Promise;\n\n bulkUpdatePurchaseCommissions(input: ValueTupleOfBulkEditPreviewAndIListOfCommission, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkDeleteSeatSaversPreview(query: ListingQuery): Promise;\n\n bulkDeleteSeatSavers(preview: BulkEditPreview, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateInternalNotesPreview(query: ListingQuery): Promise;\n\n bulkUpdateInternalNotes(preview: BulkEditPreview, updateKey: string | undefined, isUpdate: boolean | undefined, searchString: string | null | undefined, replaceString: string | null | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateIsNoFulfillPreview(query: ListingQuery, updateSalesOfListings: boolean | undefined): Promise;\n\n bulkUpdateIsNoFulfill(preview: BulkEditPreview, updateKey: string | undefined, isNoFulfill: boolean | undefined, updateSalesOfListings: boolean | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateDeliveryTypePreview(query: ListingQuery): Promise;\n\n bulkUpdateDeliveryType(input: ValueTupleOfBulkEditPreviewAndDeliveryTypeAndIListOfTicketTypePriority, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateSeatTraitsPreview(query: ListingQuery): Promise;\n\n bulkUpdateSeatTraits(input: ValueTupleOfBulkEditPreviewAndIListOfListingNote, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined, appendSeatTraits: boolean | null | undefined): Promise;\n\n bulkWasteTicketsPreview(query: ListingQuery): Promise;\n\n bulkWasteTickets(preview: BulkEditPreview, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n}\n\nexport class BulkEditListingClient extends PosClientBase implements IBulkEditListingClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n cancelBackgroundTask(updateKey: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/CancelBackgroundTask?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCancelBackgroundTask(_response);\n });\n }\n\n protected processCancelBackgroundTask(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateListingsPricesPreview(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateListingsPricesPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateListingsPricesPreview(_response);\n });\n }\n\n protected processBulkUpdateListingsPricesPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateListingsPricesByPercent(preview: BulkEditPreview, percent: number | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateListingsPricesByPercent?\";\n if (percent === null)\n throw new Error(\"The parameter 'percent' cannot be null.\");\n else if (percent !== undefined)\n url_ += \"percent=\" + encodeURIComponent(\"\" + percent) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateListingsPricesByPercent(_response);\n });\n }\n\n protected processBulkUpdateListingsPricesByPercent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateListingsPrices(preview: BulkEditPreview, priceChange: number | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateListingsPrices?\";\n if (priceChange === null)\n throw new Error(\"The parameter 'priceChange' cannot be null.\");\n else if (priceChange !== undefined)\n url_ += \"priceChange=\" + encodeURIComponent(\"\" + priceChange) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateListingsPrices(_response);\n });\n }\n\n protected processBulkUpdateListingsPrices(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdatePriceFloorCeilingPreview(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdatePriceFloorCeilingPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdatePriceFloorCeilingPreview(_response);\n });\n }\n\n protected processBulkUpdatePriceFloorCeilingPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdatePriceFloor(preview: BulkEditPreview, amount: number | undefined, updateKey: string | undefined, isRelative: boolean | undefined, adjustmentType: PricingFloorCeilingAdjustmentType | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdatePriceFloor?\";\n if (amount === null)\n throw new Error(\"The parameter 'amount' cannot be null.\");\n else if (amount !== undefined)\n url_ += \"amount=\" + encodeURIComponent(\"\" + amount) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (isRelative === null)\n throw new Error(\"The parameter 'isRelative' cannot be null.\");\n else if (isRelative !== undefined)\n url_ += \"isRelative=\" + encodeURIComponent(\"\" + isRelative) + \"&\";\n if (adjustmentType === null)\n throw new Error(\"The parameter 'adjustmentType' cannot be null.\");\n else if (adjustmentType !== undefined)\n url_ += \"adjustmentType=\" + encodeURIComponent(\"\" + adjustmentType) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdatePriceFloor(_response);\n });\n }\n\n protected processBulkUpdatePriceFloor(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdatePriceCeiling(preview: BulkEditPreview, percentMarketPrice: number | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdatePriceCeiling?\";\n if (percentMarketPrice === null)\n throw new Error(\"The parameter 'percentMarketPrice' cannot be null.\");\n else if (percentMarketPrice !== undefined)\n url_ += \"percentMarketPrice=\" + encodeURIComponent(\"\" + percentMarketPrice) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdatePriceCeiling(_response);\n });\n }\n\n protected processBulkUpdatePriceCeiling(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUngroupListingsPreview(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUngroupListingsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUngroupListingsPreview(_response);\n });\n }\n\n protected processBulkUngroupListingsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUngroupListings(preview: BulkEditPreview, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUngroupListings?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUngroupListings(_response);\n });\n }\n\n protected processBulkUngroupListings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkRemovePredeliveryPreview(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkRemovePredeliveryPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkRemovePredeliveryPreview(_response);\n });\n }\n\n protected processBulkRemovePredeliveryPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkRemovePredelivery(preview: BulkEditPreview, removeBarcodes: boolean | undefined, removePdfs: boolean | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkRemovePredelivery?\";\n if (removeBarcodes === null)\n throw new Error(\"The parameter 'removeBarcodes' cannot be null.\");\n else if (removeBarcodes !== undefined)\n url_ += \"removeBarcodes=\" + encodeURIComponent(\"\" + removeBarcodes) + \"&\";\n if (removePdfs === null)\n throw new Error(\"The parameter 'removePdfs' cannot be null.\");\n else if (removePdfs !== undefined)\n url_ += \"removePdfs=\" + encodeURIComponent(\"\" + removePdfs) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkRemovePredelivery(_response);\n });\n }\n\n protected processBulkRemovePredelivery(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateMarketplaceSeatingOverridesPreview(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateMarketplaceSeatingOverridesPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateMarketplaceSeatingOverridesPreview(_response);\n });\n }\n\n protected processBulkUpdateMarketplaceSeatingOverridesPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateMarketplaceSeatingOverrides(input: ValueTupleOfBulkEditPreviewAndListingDetailsUpdateInput, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateMarketplaceSeatingOverrides?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateMarketplaceSeatingOverrides(_response);\n });\n }\n\n protected processBulkUpdateMarketplaceSeatingOverrides(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkChangeEventPreview(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkChangeEventPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkChangeEventPreview(_response);\n });\n }\n\n protected processBulkChangeEventPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkChangeEvent(preview: BulkEditPreview, posEventId: string | undefined, viagogoEventId: number | null | undefined, eventMappingId: string | null | undefined, deallocateSales: boolean | null | undefined, reason: string | null | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkChangeEvent?\";\n if (posEventId === null)\n throw new Error(\"The parameter 'posEventId' cannot be null.\");\n else if (posEventId !== undefined)\n url_ += \"posEventId=\" + encodeURIComponent(\"\" + posEventId) + \"&\";\n if (viagogoEventId !== undefined && viagogoEventId !== null)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n if (eventMappingId !== undefined && eventMappingId !== null)\n url_ += \"eventMappingId=\" + encodeURIComponent(\"\" + eventMappingId) + \"&\";\n if (deallocateSales !== undefined && deallocateSales !== null)\n url_ += \"deallocateSales=\" + encodeURIComponent(\"\" + deallocateSales) + \"&\";\n if (reason !== undefined && reason !== null)\n url_ += \"reason=\" + encodeURIComponent(\"\" + reason) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkChangeEvent(_response);\n });\n }\n\n protected processBulkChangeEvent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateAutoPricingSettingsPreview(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateAutoPricingSettingsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateAutoPricingSettingsPreview(_response);\n });\n }\n\n protected processBulkUpdateAutoPricingSettingsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateAutoPricingSettings(input: ValueTupleOfBulkEditPreviewAndListingDetailsUpdateInput, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateAutoPricingSettings?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateAutoPricingSettings(_response);\n });\n }\n\n protected processBulkUpdateAutoPricingSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateAutoPricingSettingsV2(input: ValueTupleOfBulkEditPreviewAndListingDetailsAutoPricingSectionUpdatesV2, viagogoEventId: number | null | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateAutoPricingSettingsV2?\";\n if (viagogoEventId !== undefined && viagogoEventId !== null)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateAutoPricingSettingsV2(_response);\n });\n }\n\n protected processBulkUpdateAutoPricingSettingsV2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkGetListingPriceCalculationsInEvent(viagogoEventId: number | undefined, body: ValueTupleOfInt64OfAndListingPriceCalculationsInEventInput): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkGetListingPriceCalculationsInEvent?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkGetListingPriceCalculationsInEvent(_response);\n });\n }\n\n protected processBulkGetListingPriceCalculationsInEvent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkListingPriceCalculationResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateGeneralSettingsPreview(query: ListingQuery, hasPurchaseUpdates: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateGeneralSettingsPreview?\";\n if (hasPurchaseUpdates === null)\n throw new Error(\"The parameter 'hasPurchaseUpdates' cannot be null.\");\n else if (hasPurchaseUpdates !== undefined)\n url_ += \"hasPurchaseUpdates=\" + encodeURIComponent(\"\" + hasPurchaseUpdates) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateGeneralSettingsPreview(_response);\n });\n }\n\n protected processBulkUpdateGeneralSettingsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateGeneralSettings(input: ValueTupleOfBulkEditPreviewAndListingDetailsUpdateInput, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateGeneralSettings?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateGeneralSettings(_response);\n });\n }\n\n protected processBulkUpdateGeneralSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateMarketplacePrices(input: ValueTupleOfBulkEditPreviewAndListingPricesUpdateInput, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateMarketplacePrices?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateMarketplacePrices(_response);\n });\n }\n\n protected processBulkUpdateMarketplacePrices(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateMarketplacePricesPreview(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateMarketplacePricesPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateMarketplacePricesPreview(_response);\n });\n }\n\n protected processBulkUpdateMarketplacePricesPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkBroadcastListingsPreview(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkBroadcastListingsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkBroadcastListingsPreview(_response);\n });\n }\n\n protected processBulkBroadcastListingsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkBroadcastListings(input: ValueTupleOfBulkEditPreviewAndISetOfMarketplaceAndISetOfMarketplace, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkBroadcastListings?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkBroadcastListings(_response);\n });\n }\n\n protected processBulkBroadcastListings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateAdminHoldPreview(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateAdminHoldPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateAdminHoldPreview(_response);\n });\n }\n\n protected processBulkUpdateAdminHoldPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateAdminHold(preview: BulkEditPreview, adminHoldExpirationDate: string | null | undefined, adminHoldNotes: string | null | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateAdminHold?\";\n if (adminHoldExpirationDate !== undefined && adminHoldExpirationDate !== null)\n url_ += \"adminHoldExpirationDate=\" + encodeURIComponent(\"\" + adminHoldExpirationDate) + \"&\";\n if (adminHoldNotes !== undefined && adminHoldNotes !== null)\n url_ += \"adminHoldNotes=\" + encodeURIComponent(\"\" + adminHoldNotes) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateAdminHold(_response);\n });\n }\n\n protected processBulkUpdateAdminHold(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateTicketTypeRulesPreview(query: ListingQuery, updateSalesOfListings: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateTicketTypeRulesPreview?\";\n if (updateSalesOfListings === null)\n throw new Error(\"The parameter 'updateSalesOfListings' cannot be null.\");\n else if (updateSalesOfListings !== undefined)\n url_ += \"updateSalesOfListings=\" + encodeURIComponent(\"\" + updateSalesOfListings) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateTicketTypeRulesPreview(_response);\n });\n }\n\n protected processBulkUpdateTicketTypeRulesPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateTicketTypeRules(input: ValueTupleOfBulkEditPreviewAndDeliveryTypeAndIListOfTicketTypePriority, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined, updateSalesOfListings: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateTicketTypeRules?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n if (updateSalesOfListings === null)\n throw new Error(\"The parameter 'updateSalesOfListings' cannot be null.\");\n else if (updateSalesOfListings !== undefined)\n url_ += \"updateSalesOfListings=\" + encodeURIComponent(\"\" + updateSalesOfListings) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateTicketTypeRules(_response);\n });\n }\n\n protected processBulkUpdateTicketTypeRules(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateTagsPreview(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateTagsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateTagsPreview(_response);\n });\n }\n\n protected processBulkUpdateTagsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateTags(preview: BulkEditPreview, tagName: string | undefined, tagValue: string | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateTags?\";\n if (tagName === null)\n throw new Error(\"The parameter 'tagName' cannot be null.\");\n else if (tagName !== undefined)\n url_ += \"tagName=\" + encodeURIComponent(\"\" + tagName) + \"&\";\n if (tagValue === null)\n throw new Error(\"The parameter 'tagValue' cannot be null.\");\n else if (tagValue !== undefined)\n url_ += \"tagValue=\" + encodeURIComponent(\"\" + tagValue) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateTags(_response);\n });\n }\n\n protected processBulkUpdateTags(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkRemoveTags(preview: BulkEditPreview, tagName: string | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkRemoveTags?\";\n if (tagName === null)\n throw new Error(\"The parameter 'tagName' cannot be null.\");\n else if (tagName !== undefined)\n url_ += \"tagName=\" + encodeURIComponent(\"\" + tagName) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkRemoveTags(_response);\n });\n }\n\n protected processBulkRemoveTags(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkCreateListingGroups(input: MergeListingGroupInputList, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkCreateListingGroups?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkCreateListingGroups(_response);\n });\n }\n\n protected processBulkCreateListingGroups(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * Group events by event id\n * @param updateKey (optional) \n * @param supportBackgroundProgress (optional) \n */\n bulkAutoCompAndGroupListingsV2(input: AutoGroupListingV2Input, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkAutoCompAndGroupListingsV2?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkAutoCompAndGroupListingsV2(_response);\n });\n }\n\n protected processBulkAutoCompAndGroupListingsV2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdatePurchaseCommissionsPreview(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdatePurchaseCommissionsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdatePurchaseCommissionsPreview(_response);\n });\n }\n\n protected processBulkUpdatePurchaseCommissionsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdatePurchaseCommissions(input: ValueTupleOfBulkEditPreviewAndIListOfCommission, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdatePurchaseCommissions?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdatePurchaseCommissions(_response);\n });\n }\n\n protected processBulkUpdatePurchaseCommissions(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkDeleteSeatSaversPreview(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkDeleteSeatSaversPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkDeleteSeatSaversPreview(_response);\n });\n }\n\n protected processBulkDeleteSeatSaversPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkDeleteSeatSavers(preview: BulkEditPreview, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkDeleteSeatSavers?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkDeleteSeatSavers(_response);\n });\n }\n\n protected processBulkDeleteSeatSavers(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateInternalNotesPreview(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateInternalNotesPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateInternalNotesPreview(_response);\n });\n }\n\n protected processBulkUpdateInternalNotesPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateInternalNotes(preview: BulkEditPreview, updateKey: string | undefined, isUpdate: boolean | undefined, searchString: string | null | undefined, replaceString: string | null | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateInternalNotes?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (isUpdate === null)\n throw new Error(\"The parameter 'isUpdate' cannot be null.\");\n else if (isUpdate !== undefined)\n url_ += \"isUpdate=\" + encodeURIComponent(\"\" + isUpdate) + \"&\";\n if (searchString !== undefined && searchString !== null)\n url_ += \"searchString=\" + encodeURIComponent(\"\" + searchString) + \"&\";\n if (replaceString !== undefined && replaceString !== null)\n url_ += \"replaceString=\" + encodeURIComponent(\"\" + replaceString) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateInternalNotes(_response);\n });\n }\n\n protected processBulkUpdateInternalNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateIsNoFulfillPreview(query: ListingQuery, updateSalesOfListings: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateIsNoFulfillPreview?\";\n if (updateSalesOfListings === null)\n throw new Error(\"The parameter 'updateSalesOfListings' cannot be null.\");\n else if (updateSalesOfListings !== undefined)\n url_ += \"updateSalesOfListings=\" + encodeURIComponent(\"\" + updateSalesOfListings) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateIsNoFulfillPreview(_response);\n });\n }\n\n protected processBulkUpdateIsNoFulfillPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateIsNoFulfill(preview: BulkEditPreview, updateKey: string | undefined, isNoFulfill: boolean | undefined, updateSalesOfListings: boolean | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateIsNoFulfill?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (isNoFulfill === null)\n throw new Error(\"The parameter 'isNoFulfill' cannot be null.\");\n else if (isNoFulfill !== undefined)\n url_ += \"isNoFulfill=\" + encodeURIComponent(\"\" + isNoFulfill) + \"&\";\n if (updateSalesOfListings === null)\n throw new Error(\"The parameter 'updateSalesOfListings' cannot be null.\");\n else if (updateSalesOfListings !== undefined)\n url_ += \"updateSalesOfListings=\" + encodeURIComponent(\"\" + updateSalesOfListings) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateIsNoFulfill(_response);\n });\n }\n\n protected processBulkUpdateIsNoFulfill(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateDeliveryTypePreview(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateDeliveryTypePreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateDeliveryTypePreview(_response);\n });\n }\n\n protected processBulkUpdateDeliveryTypePreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateDeliveryType(input: ValueTupleOfBulkEditPreviewAndDeliveryTypeAndIListOfTicketTypePriority, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateDeliveryType?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateDeliveryType(_response);\n });\n }\n\n protected processBulkUpdateDeliveryType(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateSeatTraitsPreview(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateSeatTraitsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateSeatTraitsPreview(_response);\n });\n }\n\n protected processBulkUpdateSeatTraitsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateSeatTraits(input: ValueTupleOfBulkEditPreviewAndIListOfListingNote, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined, appendSeatTraits: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkUpdateSeatTraits?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n if (appendSeatTraits !== undefined && appendSeatTraits !== null)\n url_ += \"appendSeatTraits=\" + encodeURIComponent(\"\" + appendSeatTraits) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateSeatTraits(_response);\n });\n }\n\n protected processBulkUpdateSeatTraits(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkWasteTicketsPreview(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkWasteTicketsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkWasteTicketsPreview(_response);\n });\n }\n\n protected processBulkWasteTicketsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkWasteTickets(preview: BulkEditPreview, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListing/BulkWasteTickets?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkWasteTickets(_response);\n });\n }\n\n protected processBulkWasteTickets(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IBulkEditListingGroupClient {\n\n cancelBackgroundTask(updateKey: string | undefined): Promise;\n\n bulkEditListingsGroupSettingsPreview(query: ListingQuery): Promise;\n\n bulkEditListingGroupSettings(input: BulkEditListingGroupSettingsInput, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n}\n\nexport class BulkEditListingGroupClient extends PosClientBase implements IBulkEditListingGroupClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n cancelBackgroundTask(updateKey: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListingGroup/CancelBackgroundTask?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCancelBackgroundTask(_response);\n });\n }\n\n protected processCancelBackgroundTask(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkEditListingsGroupSettingsPreview(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListingGroup/BulkEditListingsGroupSettingsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkEditListingsGroupSettingsPreview(_response);\n });\n }\n\n protected processBulkEditListingsGroupSettingsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkEditListingGroupSettings(input: BulkEditListingGroupSettingsInput, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditListingGroup/BulkEditListingGroupSettings?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkEditListingGroupSettings(_response);\n });\n }\n\n protected processBulkEditListingGroupSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IBulkEditLogClient {\n\n getBulkEditLogByFilter(query: BulkEditLogQuery): Promise;\n\n getBulkEditLogPayload(entityType: ActionOutboxEntityType | undefined, bulkActionType: BulkActionType | undefined, bulkProcessingId: string | undefined): Promise;\n}\n\nexport class BulkEditLogClient extends PosClientBase implements IBulkEditLogClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getBulkEditLogByFilter(query: BulkEditLogQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditLog/GetBulkEditLogByFilter\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetBulkEditLogByFilter(_response);\n });\n }\n\n protected processGetBulkEditLogByFilter(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditLog[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getBulkEditLogPayload(entityType: ActionOutboxEntityType | undefined, bulkActionType: BulkActionType | undefined, bulkProcessingId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditLog/GetBulkEditLogPayload?\";\n if (entityType === null)\n throw new Error(\"The parameter 'entityType' cannot be null.\");\n else if (entityType !== undefined)\n url_ += \"entityType=\" + encodeURIComponent(\"\" + entityType) + \"&\";\n if (bulkActionType === null)\n throw new Error(\"The parameter 'bulkActionType' cannot be null.\");\n else if (bulkActionType !== undefined)\n url_ += \"bulkActionType=\" + encodeURIComponent(\"\" + bulkActionType) + \"&\";\n if (bulkProcessingId === null)\n throw new Error(\"The parameter 'bulkProcessingId' cannot be null.\");\n else if (bulkProcessingId !== undefined)\n url_ += \"bulkProcessingId=\" + encodeURIComponent(\"\" + bulkProcessingId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetBulkEditLogPayload(_response);\n });\n }\n\n protected processGetBulkEditLogPayload(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditLogPayload;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IBulkEditPurchaseClient {\n\n cancelBackgroundTask(updateKey: string | undefined): Promise;\n\n bulkUpdateGeneralSettingsPreview(query: PurchaseOrderQuery): Promise;\n\n bulkUpdateGeneralSettings(input: ValueTupleOfBulkEditPreviewAndPosFieldOfNullableGuid, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateCurrencyCodePreview(query: PurchaseOrderQuery): Promise;\n\n bulkUpdateCurrencyCode(input: ValueTupleOfBulkEditPreviewAndString, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkDeletePurchaseOrderPreview(query: PurchaseOrderQuery): Promise;\n\n bulkVoidPurchaseOrder(preview: BulkEditPreview, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkCancelPurchaseOrder(input: ValueTupleOfBulkEditPreviewAndNullableSaleCancellationReason, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined, rejectSale: boolean | null | undefined): Promise;\n\n bulkUpdatePurchaseCommissionsPreview(query: PurchaseOrderQuery): Promise;\n\n bulkUpdatePurchaseCommissions(input: ValueTupleOfBulkEditPreviewAndIListOfCommission, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateTagsPreview(query: PurchaseOrderQuery): Promise;\n\n bulkUpdateTags(preview: BulkEditPreview, tagName: string | undefined, tagValue: string | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkRemoveTags(preview: BulkEditPreview, tagName: string | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateInternalNotesPreview(query: PurchaseOrderQuery): Promise;\n\n bulkUpdateInternalNotes(preview: BulkEditPreview, updateKey: string | undefined, isUpdate: boolean | undefined, searchString: string | null | undefined, replaceString: string | null | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkConvertPurchasePaymentPreview(query: PurchaseOrderQuery): Promise;\n\n bulkConvertPurchasePayment(preview: BulkEditPreview, updateKey: string | undefined, fromCurrencyCode: string | undefined, toCurrencyCode: string | undefined, conversionRate: number | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateDeliveryTypePreview(query: PurchaseOrderQuery, updateSalesOfListings: boolean | undefined): Promise;\n\n bulkUpdateDeliveryType(input: ValueTupleOfBulkEditPreviewAndDeliveryTypeAndIListOfTicketTypePriority, updateSalesOfListings: boolean | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkBackfillDeliverySettingsPreview(query: PurchaseOrderQuery, updateSalesOfListings: boolean | undefined, applyToAllEvents: boolean | undefined): Promise;\n\n bulkBackfillDeliverySettings(preview: BulkEditPreview, updateSalesOfListings: boolean | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkBackfillDeliverySettingsListingOnly(preview: BulkEditPreview, updateSalesOfListings: boolean | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateSeatTraitsPreview(query: PurchaseOrderQuery): Promise;\n\n bulkUpdateSeatTraits(input: ValueTupleOfBulkEditPreviewAndIListOfListingNote, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined, appendSeatTraits: boolean | null | undefined): Promise;\n\n importPurchaseFromFile(updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined, file: FileParameter | null | undefined): Promise;\n\n bulkMarkPurchaseAsPaidPreview(input: PurchaseOrderQuery): Promise;\n\n bulkMarkPurchaseAsPaid(input: BulkEditPreview, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n}\n\nexport class BulkEditPurchaseClient extends PosClientBase implements IBulkEditPurchaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n cancelBackgroundTask(updateKey: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/CancelBackgroundTask?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCancelBackgroundTask(_response);\n });\n }\n\n protected processCancelBackgroundTask(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateGeneralSettingsPreview(query: PurchaseOrderQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkUpdateGeneralSettingsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateGeneralSettingsPreview(_response);\n });\n }\n\n protected processBulkUpdateGeneralSettingsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateGeneralSettings(input: ValueTupleOfBulkEditPreviewAndPosFieldOfNullableGuid, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkUpdateGeneralSettings?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateGeneralSettings(_response);\n });\n }\n\n protected processBulkUpdateGeneralSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateCurrencyCodePreview(query: PurchaseOrderQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkUpdateCurrencyCodePreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateCurrencyCodePreview(_response);\n });\n }\n\n protected processBulkUpdateCurrencyCodePreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateCurrencyCode(input: ValueTupleOfBulkEditPreviewAndString, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkUpdateCurrencyCode?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateCurrencyCode(_response);\n });\n }\n\n protected processBulkUpdateCurrencyCode(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkDeletePurchaseOrderPreview(query: PurchaseOrderQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkDeletePurchaseOrderPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkDeletePurchaseOrderPreview(_response);\n });\n }\n\n protected processBulkDeletePurchaseOrderPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkVoidPurchaseOrder(preview: BulkEditPreview, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkVoidPurchaseOrder?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkVoidPurchaseOrder(_response);\n });\n }\n\n protected processBulkVoidPurchaseOrder(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkCancelPurchaseOrder(input: ValueTupleOfBulkEditPreviewAndNullableSaleCancellationReason, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined, rejectSale: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkCancelPurchaseOrder?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n if (rejectSale !== undefined && rejectSale !== null)\n url_ += \"rejectSale=\" + encodeURIComponent(\"\" + rejectSale) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkCancelPurchaseOrder(_response);\n });\n }\n\n protected processBulkCancelPurchaseOrder(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdatePurchaseCommissionsPreview(query: PurchaseOrderQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkUpdatePurchaseCommissionsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdatePurchaseCommissionsPreview(_response);\n });\n }\n\n protected processBulkUpdatePurchaseCommissionsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdatePurchaseCommissions(input: ValueTupleOfBulkEditPreviewAndIListOfCommission, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkUpdatePurchaseCommissions?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdatePurchaseCommissions(_response);\n });\n }\n\n protected processBulkUpdatePurchaseCommissions(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateTagsPreview(query: PurchaseOrderQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkUpdateTagsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateTagsPreview(_response);\n });\n }\n\n protected processBulkUpdateTagsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateTags(preview: BulkEditPreview, tagName: string | undefined, tagValue: string | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkUpdateTags?\";\n if (tagName === null)\n throw new Error(\"The parameter 'tagName' cannot be null.\");\n else if (tagName !== undefined)\n url_ += \"tagName=\" + encodeURIComponent(\"\" + tagName) + \"&\";\n if (tagValue === null)\n throw new Error(\"The parameter 'tagValue' cannot be null.\");\n else if (tagValue !== undefined)\n url_ += \"tagValue=\" + encodeURIComponent(\"\" + tagValue) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateTags(_response);\n });\n }\n\n protected processBulkUpdateTags(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkRemoveTags(preview: BulkEditPreview, tagName: string | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkRemoveTags?\";\n if (tagName === null)\n throw new Error(\"The parameter 'tagName' cannot be null.\");\n else if (tagName !== undefined)\n url_ += \"tagName=\" + encodeURIComponent(\"\" + tagName) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkRemoveTags(_response);\n });\n }\n\n protected processBulkRemoveTags(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateInternalNotesPreview(query: PurchaseOrderQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkUpdateInternalNotesPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateInternalNotesPreview(_response);\n });\n }\n\n protected processBulkUpdateInternalNotesPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateInternalNotes(preview: BulkEditPreview, updateKey: string | undefined, isUpdate: boolean | undefined, searchString: string | null | undefined, replaceString: string | null | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkUpdateInternalNotes?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (isUpdate === null)\n throw new Error(\"The parameter 'isUpdate' cannot be null.\");\n else if (isUpdate !== undefined)\n url_ += \"isUpdate=\" + encodeURIComponent(\"\" + isUpdate) + \"&\";\n if (searchString !== undefined && searchString !== null)\n url_ += \"searchString=\" + encodeURIComponent(\"\" + searchString) + \"&\";\n if (replaceString !== undefined && replaceString !== null)\n url_ += \"replaceString=\" + encodeURIComponent(\"\" + replaceString) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateInternalNotes(_response);\n });\n }\n\n protected processBulkUpdateInternalNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkConvertPurchasePaymentPreview(query: PurchaseOrderQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkConvertPurchasePaymentPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkConvertPurchasePaymentPreview(_response);\n });\n }\n\n protected processBulkConvertPurchasePaymentPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkConvertPurchasePayment(preview: BulkEditPreview, updateKey: string | undefined, fromCurrencyCode: string | undefined, toCurrencyCode: string | undefined, conversionRate: number | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkConvertPurchasePayment?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (fromCurrencyCode === null)\n throw new Error(\"The parameter 'fromCurrencyCode' cannot be null.\");\n else if (fromCurrencyCode !== undefined)\n url_ += \"fromCurrencyCode=\" + encodeURIComponent(\"\" + fromCurrencyCode) + \"&\";\n if (toCurrencyCode === null)\n throw new Error(\"The parameter 'toCurrencyCode' cannot be null.\");\n else if (toCurrencyCode !== undefined)\n url_ += \"toCurrencyCode=\" + encodeURIComponent(\"\" + toCurrencyCode) + \"&\";\n if (conversionRate === null)\n throw new Error(\"The parameter 'conversionRate' cannot be null.\");\n else if (conversionRate !== undefined)\n url_ += \"conversionRate=\" + encodeURIComponent(\"\" + conversionRate) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkConvertPurchasePayment(_response);\n });\n }\n\n protected processBulkConvertPurchasePayment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateDeliveryTypePreview(query: PurchaseOrderQuery, updateSalesOfListings: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkUpdateDeliveryTypePreview?\";\n if (updateSalesOfListings === null)\n throw new Error(\"The parameter 'updateSalesOfListings' cannot be null.\");\n else if (updateSalesOfListings !== undefined)\n url_ += \"updateSalesOfListings=\" + encodeURIComponent(\"\" + updateSalesOfListings) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateDeliveryTypePreview(_response);\n });\n }\n\n protected processBulkUpdateDeliveryTypePreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateDeliveryType(input: ValueTupleOfBulkEditPreviewAndDeliveryTypeAndIListOfTicketTypePriority, updateSalesOfListings: boolean | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkUpdateDeliveryType?\";\n if (updateSalesOfListings === null)\n throw new Error(\"The parameter 'updateSalesOfListings' cannot be null.\");\n else if (updateSalesOfListings !== undefined)\n url_ += \"updateSalesOfListings=\" + encodeURIComponent(\"\" + updateSalesOfListings) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateDeliveryType(_response);\n });\n }\n\n protected processBulkUpdateDeliveryType(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkBackfillDeliverySettingsPreview(query: PurchaseOrderQuery, updateSalesOfListings: boolean | undefined, applyToAllEvents: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkBackfillDeliverySettingsPreview?\";\n if (updateSalesOfListings === null)\n throw new Error(\"The parameter 'updateSalesOfListings' cannot be null.\");\n else if (updateSalesOfListings !== undefined)\n url_ += \"updateSalesOfListings=\" + encodeURIComponent(\"\" + updateSalesOfListings) + \"&\";\n if (applyToAllEvents === null)\n throw new Error(\"The parameter 'applyToAllEvents' cannot be null.\");\n else if (applyToAllEvents !== undefined)\n url_ += \"applyToAllEvents=\" + encodeURIComponent(\"\" + applyToAllEvents) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkBackfillDeliverySettingsPreview(_response);\n });\n }\n\n protected processBulkBackfillDeliverySettingsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkBackfillDeliverySettings(preview: BulkEditPreview, updateSalesOfListings: boolean | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkBackfillDeliverySettings?\";\n if (updateSalesOfListings === null)\n throw new Error(\"The parameter 'updateSalesOfListings' cannot be null.\");\n else if (updateSalesOfListings !== undefined)\n url_ += \"updateSalesOfListings=\" + encodeURIComponent(\"\" + updateSalesOfListings) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkBackfillDeliverySettings(_response);\n });\n }\n\n protected processBulkBackfillDeliverySettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkBackfillDeliverySettingsListingOnly(preview: BulkEditPreview, updateSalesOfListings: boolean | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkBackfillDeliverySettingsListingOnly?\";\n if (updateSalesOfListings === null)\n throw new Error(\"The parameter 'updateSalesOfListings' cannot be null.\");\n else if (updateSalesOfListings !== undefined)\n url_ += \"updateSalesOfListings=\" + encodeURIComponent(\"\" + updateSalesOfListings) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkBackfillDeliverySettingsListingOnly(_response);\n });\n }\n\n protected processBulkBackfillDeliverySettingsListingOnly(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateSeatTraitsPreview(query: PurchaseOrderQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkUpdateSeatTraitsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateSeatTraitsPreview(_response);\n });\n }\n\n protected processBulkUpdateSeatTraitsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateSeatTraits(input: ValueTupleOfBulkEditPreviewAndIListOfListingNote, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined, appendSeatTraits: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkUpdateSeatTraits?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n if (appendSeatTraits !== undefined && appendSeatTraits !== null)\n url_ += \"appendSeatTraits=\" + encodeURIComponent(\"\" + appendSeatTraits) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateSeatTraits(_response);\n });\n }\n\n protected processBulkUpdateSeatTraits(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n importPurchaseFromFile(updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined, file: FileParameter | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/ImportPurchaseFromFile?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (file !== null && file !== undefined)\n content_.append(\"File\", file.data, file.fileName ? file.fileName : \"File\");\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processImportPurchaseFromFile(_response);\n });\n }\n\n protected processImportPurchaseFromFile(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ImportFileResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkMarkPurchaseAsPaidPreview(input: PurchaseOrderQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkMarkPurchaseAsPaidPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkMarkPurchaseAsPaidPreview(_response);\n });\n }\n\n protected processBulkMarkPurchaseAsPaidPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkMarkPurchaseAsPaid(input: BulkEditPreview, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditPurchase/BulkMarkPurchaseAsPaid?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkMarkPurchaseAsPaid(_response);\n });\n }\n\n protected processBulkMarkPurchaseAsPaid(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IBulkEditSaleClient {\n\n cancelBackgroundTask(updateKey: string | undefined): Promise;\n\n bulkUpdateGeneralSettingsPreview(query: SaleQuery): Promise;\n\n bulkUpdateGeneralSettings(input: ValueTupleOfBulkEditPreviewAndSaleInput, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdatePurchaseCommissionsPreview(query: SaleQuery): Promise;\n\n bulkUpdatePurchaseCommissions(input: ValueTupleOfBulkEditPreviewAndIListOfCommission, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdatePaymentFieldsPreview(query: SaleQuery): Promise;\n\n bulkUpdatePaymentFields(preview: BulkEditPreview, paymentReceived: boolean | null | undefined, paymentReferenceId: string | null | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateTagsPreview(query: SaleQuery): Promise;\n\n bulkUpdateTags(preview: BulkEditPreview, tagName: string | undefined, tagValue: string | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkRemoveTags(preview: BulkEditPreview, tagName: string | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateInternalNotesPreview(query: SaleQuery): Promise;\n\n bulkUpdateInternalNotes(preview: BulkEditPreview, updateKey: string | undefined, isUpdate: boolean | undefined, searchString: string | null | undefined, replaceString: string | null | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateIsNoFulfillPreview(query: SaleQuery): Promise;\n\n bulkUpdateIsNoFulfill(preview: BulkEditPreview, updateKey: string | undefined, isNoFulfill: boolean | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateMarkAsFulfilledPreview(query: SaleQuery): Promise;\n\n bulkUpdateMarkAsFulfilled(preview: BulkEditPreview, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkMarkSaleAsPaidPreview(query: SaleQuery): Promise;\n\n bulkMarkSaleAsPaid(preview: BulkEditPreview, paymentRefId: string | undefined, paymentDate: string | undefined, marketplace: Marketplace | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkCancelSalePreview(query: SaleQuery): Promise;\n\n bulkCancelSale(input: ValueTupleOfBulkEditPreviewAndNullableSaleCancellationReason, keepAllocatedTickets: boolean | null | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n}\n\nexport class BulkEditSaleClient extends PosClientBase implements IBulkEditSaleClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n cancelBackgroundTask(updateKey: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/CancelBackgroundTask?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCancelBackgroundTask(_response);\n });\n }\n\n protected processCancelBackgroundTask(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateGeneralSettingsPreview(query: SaleQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkUpdateGeneralSettingsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateGeneralSettingsPreview(_response);\n });\n }\n\n protected processBulkUpdateGeneralSettingsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateGeneralSettings(input: ValueTupleOfBulkEditPreviewAndSaleInput, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkUpdateGeneralSettings?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateGeneralSettings(_response);\n });\n }\n\n protected processBulkUpdateGeneralSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdatePurchaseCommissionsPreview(query: SaleQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkUpdatePurchaseCommissionsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdatePurchaseCommissionsPreview(_response);\n });\n }\n\n protected processBulkUpdatePurchaseCommissionsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdatePurchaseCommissions(input: ValueTupleOfBulkEditPreviewAndIListOfCommission, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkUpdatePurchaseCommissions?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdatePurchaseCommissions(_response);\n });\n }\n\n protected processBulkUpdatePurchaseCommissions(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdatePaymentFieldsPreview(query: SaleQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkUpdatePaymentFieldsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdatePaymentFieldsPreview(_response);\n });\n }\n\n protected processBulkUpdatePaymentFieldsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdatePaymentFields(preview: BulkEditPreview, paymentReceived: boolean | null | undefined, paymentReferenceId: string | null | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkUpdatePaymentFields?\";\n if (paymentReceived !== undefined && paymentReceived !== null)\n url_ += \"paymentReceived=\" + encodeURIComponent(\"\" + paymentReceived) + \"&\";\n if (paymentReferenceId !== undefined && paymentReferenceId !== null)\n url_ += \"paymentReferenceId=\" + encodeURIComponent(\"\" + paymentReferenceId) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdatePaymentFields(_response);\n });\n }\n\n protected processBulkUpdatePaymentFields(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateTagsPreview(query: SaleQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkUpdateTagsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateTagsPreview(_response);\n });\n }\n\n protected processBulkUpdateTagsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateTags(preview: BulkEditPreview, tagName: string | undefined, tagValue: string | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkUpdateTags?\";\n if (tagName === null)\n throw new Error(\"The parameter 'tagName' cannot be null.\");\n else if (tagName !== undefined)\n url_ += \"tagName=\" + encodeURIComponent(\"\" + tagName) + \"&\";\n if (tagValue === null)\n throw new Error(\"The parameter 'tagValue' cannot be null.\");\n else if (tagValue !== undefined)\n url_ += \"tagValue=\" + encodeURIComponent(\"\" + tagValue) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateTags(_response);\n });\n }\n\n protected processBulkUpdateTags(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkRemoveTags(preview: BulkEditPreview, tagName: string | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkRemoveTags?\";\n if (tagName === null)\n throw new Error(\"The parameter 'tagName' cannot be null.\");\n else if (tagName !== undefined)\n url_ += \"tagName=\" + encodeURIComponent(\"\" + tagName) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkRemoveTags(_response);\n });\n }\n\n protected processBulkRemoveTags(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateInternalNotesPreview(query: SaleQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkUpdateInternalNotesPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateInternalNotesPreview(_response);\n });\n }\n\n protected processBulkUpdateInternalNotesPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateInternalNotes(preview: BulkEditPreview, updateKey: string | undefined, isUpdate: boolean | undefined, searchString: string | null | undefined, replaceString: string | null | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkUpdateInternalNotes?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (isUpdate === null)\n throw new Error(\"The parameter 'isUpdate' cannot be null.\");\n else if (isUpdate !== undefined)\n url_ += \"isUpdate=\" + encodeURIComponent(\"\" + isUpdate) + \"&\";\n if (searchString !== undefined && searchString !== null)\n url_ += \"searchString=\" + encodeURIComponent(\"\" + searchString) + \"&\";\n if (replaceString !== undefined && replaceString !== null)\n url_ += \"replaceString=\" + encodeURIComponent(\"\" + replaceString) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateInternalNotes(_response);\n });\n }\n\n protected processBulkUpdateInternalNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateIsNoFulfillPreview(query: SaleQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkUpdateIsNoFulfillPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateIsNoFulfillPreview(_response);\n });\n }\n\n protected processBulkUpdateIsNoFulfillPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateIsNoFulfill(preview: BulkEditPreview, updateKey: string | undefined, isNoFulfill: boolean | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkUpdateIsNoFulfill?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (isNoFulfill === null)\n throw new Error(\"The parameter 'isNoFulfill' cannot be null.\");\n else if (isNoFulfill !== undefined)\n url_ += \"isNoFulfill=\" + encodeURIComponent(\"\" + isNoFulfill) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateIsNoFulfill(_response);\n });\n }\n\n protected processBulkUpdateIsNoFulfill(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateMarkAsFulfilledPreview(query: SaleQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkUpdateMarkAsFulfilledPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateMarkAsFulfilledPreview(_response);\n });\n }\n\n protected processBulkUpdateMarkAsFulfilledPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateMarkAsFulfilled(preview: BulkEditPreview, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkUpdateMarkAsFulfilled?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateMarkAsFulfilled(_response);\n });\n }\n\n protected processBulkUpdateMarkAsFulfilled(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkMarkSaleAsPaidPreview(query: SaleQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkMarkSaleAsPaidPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkMarkSaleAsPaidPreview(_response);\n });\n }\n\n protected processBulkMarkSaleAsPaidPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkMarkSaleAsPaid(preview: BulkEditPreview, paymentRefId: string | undefined, paymentDate: string | undefined, marketplace: Marketplace | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkMarkSaleAsPaid?\";\n if (paymentRefId === null)\n throw new Error(\"The parameter 'paymentRefId' cannot be null.\");\n else if (paymentRefId !== undefined)\n url_ += \"paymentRefId=\" + encodeURIComponent(\"\" + paymentRefId) + \"&\";\n if (paymentDate === null)\n throw new Error(\"The parameter 'paymentDate' cannot be null.\");\n else if (paymentDate !== undefined)\n url_ += \"paymentDate=\" + encodeURIComponent(\"\" + paymentDate) + \"&\";\n if (marketplace === null)\n throw new Error(\"The parameter 'marketplace' cannot be null.\");\n else if (marketplace !== undefined)\n url_ += \"marketplace=\" + encodeURIComponent(\"\" + marketplace) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkMarkSaleAsPaid(_response);\n });\n }\n\n protected processBulkMarkSaleAsPaid(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkCancelSalePreview(query: SaleQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkCancelSalePreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkCancelSalePreview(_response);\n });\n }\n\n protected processBulkCancelSalePreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkCancelSale(input: ValueTupleOfBulkEditPreviewAndNullableSaleCancellationReason, keepAllocatedTickets: boolean | null | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditSale/BulkCancelSale?\";\n if (keepAllocatedTickets !== undefined && keepAllocatedTickets !== null)\n url_ += \"keepAllocatedTickets=\" + encodeURIComponent(\"\" + keepAllocatedTickets) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkCancelSale(_response);\n });\n }\n\n protected processBulkCancelSale(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IBulkEditTicketGroupClient {\n\n cancelBackgroundTask(updateKey: string | undefined): Promise;\n\n bulkDeleteTicketGroupPreview(query: PurchaseOrderQuery): Promise;\n\n bulkDeleteTicketGroup(preview: BulkEditPreview, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateDeliveryTypePreview(query: PurchaseOrderQuery, updateSalesOfListings: boolean | undefined): Promise;\n\n bulkUpdateDeliveryType(input: ValueTupleOfBulkEditPreviewAndDeliveryTypeAndIListOfTicketTypePriority, updateSalesOfListings: boolean | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n\n bulkUpdateSeatTraitsPreview(query: PurchaseOrderQuery): Promise;\n\n bulkUpdateSeatTraits(input: ValueTupleOfBulkEditPreviewAndIListOfListingNote, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined, appendSeatTraits: boolean | null | undefined): Promise;\n\n bulkChangeEventPreview(query: PurchaseOrderQuery): Promise;\n\n bulkChangeEvent(preview: BulkEditPreview, posEventId: string | undefined, viagogoEventId: number | null | undefined, eventMappingId: string | null | undefined, deallocateSales: boolean | null | undefined, reason: string | null | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise;\n}\n\nexport class BulkEditTicketGroupClient extends PosClientBase implements IBulkEditTicketGroupClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n cancelBackgroundTask(updateKey: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditTicketGroup/CancelBackgroundTask?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCancelBackgroundTask(_response);\n });\n }\n\n protected processCancelBackgroundTask(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkDeleteTicketGroupPreview(query: PurchaseOrderQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditTicketGroup/BulkDeleteTicketGroupPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkDeleteTicketGroupPreview(_response);\n });\n }\n\n protected processBulkDeleteTicketGroupPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkDeleteTicketGroup(preview: BulkEditPreview, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditTicketGroup/BulkDeleteTicketGroup?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkDeleteTicketGroup(_response);\n });\n }\n\n protected processBulkDeleteTicketGroup(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateDeliveryTypePreview(query: PurchaseOrderQuery, updateSalesOfListings: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditTicketGroup/BulkUpdateDeliveryTypePreview?\";\n if (updateSalesOfListings === null)\n throw new Error(\"The parameter 'updateSalesOfListings' cannot be null.\");\n else if (updateSalesOfListings !== undefined)\n url_ += \"updateSalesOfListings=\" + encodeURIComponent(\"\" + updateSalesOfListings) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateDeliveryTypePreview(_response);\n });\n }\n\n protected processBulkUpdateDeliveryTypePreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateDeliveryType(input: ValueTupleOfBulkEditPreviewAndDeliveryTypeAndIListOfTicketTypePriority, updateSalesOfListings: boolean | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditTicketGroup/BulkUpdateDeliveryType?\";\n if (updateSalesOfListings === null)\n throw new Error(\"The parameter 'updateSalesOfListings' cannot be null.\");\n else if (updateSalesOfListings !== undefined)\n url_ += \"updateSalesOfListings=\" + encodeURIComponent(\"\" + updateSalesOfListings) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateDeliveryType(_response);\n });\n }\n\n protected processBulkUpdateDeliveryType(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateSeatTraitsPreview(query: PurchaseOrderQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditTicketGroup/BulkUpdateSeatTraitsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateSeatTraitsPreview(_response);\n });\n }\n\n protected processBulkUpdateSeatTraitsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkUpdateSeatTraits(input: ValueTupleOfBulkEditPreviewAndIListOfListingNote, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined, appendSeatTraits: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditTicketGroup/BulkUpdateSeatTraits?\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n if (appendSeatTraits !== undefined && appendSeatTraits !== null)\n url_ += \"appendSeatTraits=\" + encodeURIComponent(\"\" + appendSeatTraits) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkUpdateSeatTraits(_response);\n });\n }\n\n protected processBulkUpdateSeatTraits(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkChangeEventPreview(query: PurchaseOrderQuery): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditTicketGroup/BulkChangeEventPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkChangeEventPreview(_response);\n });\n }\n\n protected processBulkChangeEventPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditPreviewWithDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkChangeEvent(preview: BulkEditPreview, posEventId: string | undefined, viagogoEventId: number | null | undefined, eventMappingId: string | null | undefined, deallocateSales: boolean | null | undefined, reason: string | null | undefined, updateKey: string | undefined, supportBackgroundProgress: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/BulkEditTicketGroup/BulkChangeEvent?\";\n if (posEventId === null)\n throw new Error(\"The parameter 'posEventId' cannot be null.\");\n else if (posEventId !== undefined)\n url_ += \"posEventId=\" + encodeURIComponent(\"\" + posEventId) + \"&\";\n if (viagogoEventId !== undefined && viagogoEventId !== null)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n if (eventMappingId !== undefined && eventMappingId !== null)\n url_ += \"eventMappingId=\" + encodeURIComponent(\"\" + eventMappingId) + \"&\";\n if (deallocateSales !== undefined && deallocateSales !== null)\n url_ += \"deallocateSales=\" + encodeURIComponent(\"\" + deallocateSales) + \"&\";\n if (reason !== undefined && reason !== null)\n url_ += \"reason=\" + encodeURIComponent(\"\" + reason) + \"&\";\n if (updateKey === null)\n throw new Error(\"The parameter 'updateKey' cannot be null.\");\n else if (updateKey !== undefined)\n url_ += \"updateKey=\" + encodeURIComponent(\"\" + updateKey) + \"&\";\n if (supportBackgroundProgress !== undefined && supportBackgroundProgress !== null)\n url_ += \"supportBackgroundProgress=\" + encodeURIComponent(\"\" + supportBackgroundProgress) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(preview);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkChangeEvent(_response);\n });\n }\n\n protected processBulkChangeEvent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BulkEditProgress;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface ICampaignManagerClient {\n\n createCampaign(name: string | undefined, state: AdCampaignState | undefined, budget: MoneyType, startDateTime: string | undefined, endDateTime: string | null | undefined, currencyCode: string | undefined): Promise;\n\n createAdGroup(request: CreateAdGroupRequest): Promise;\n\n archiveCampaign(campaignId: string | undefined): Promise;\n\n archiveAdGroup(adGroupId: string | undefined): Promise;\n\n retrieveCampaigns(campaignId: string | null | undefined): Promise;\n\n retrieveAdGroups(campaignId: string | undefined, adGroupId: string | null | undefined): Promise;\n}\n\nexport class CampaignManagerClient extends PosClientBase implements ICampaignManagerClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n createCampaign(name: string | undefined, state: AdCampaignState | undefined, budget: MoneyType, startDateTime: string | undefined, endDateTime: string | null | undefined, currencyCode: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CampaignManager/CreateCampaign?\";\n if (name === null)\n throw new Error(\"The parameter 'name' cannot be null.\");\n else if (name !== undefined)\n url_ += \"name=\" + encodeURIComponent(\"\" + name) + \"&\";\n if (state === null)\n throw new Error(\"The parameter 'state' cannot be null.\");\n else if (state !== undefined)\n url_ += \"state=\" + encodeURIComponent(\"\" + state) + \"&\";\n if (startDateTime === null)\n throw new Error(\"The parameter 'startDateTime' cannot be null.\");\n else if (startDateTime !== undefined)\n url_ += \"startDateTime=\" + encodeURIComponent(\"\" + startDateTime) + \"&\";\n if (endDateTime !== undefined && endDateTime !== null)\n url_ += \"endDateTime=\" + encodeURIComponent(\"\" + endDateTime) + \"&\";\n if (currencyCode === null)\n throw new Error(\"The parameter 'currencyCode' cannot be null.\");\n else if (currencyCode !== undefined)\n url_ += \"currencyCode=\" + encodeURIComponent(\"\" + currencyCode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(budget);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateCampaign(_response);\n });\n }\n\n protected processCreateCampaign(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreateCampaignClientResponse;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n createAdGroup(request: CreateAdGroupRequest): Promise {\n let url_ = this.baseUrl + \"/api/CampaignManager/CreateAdGroup\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(request);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateAdGroup(_response);\n });\n }\n\n protected processCreateAdGroup(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CreateAdGroupClientResponse;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n archiveCampaign(campaignId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CampaignManager/ArchiveCampaign?\";\n if (campaignId === null)\n throw new Error(\"The parameter 'campaignId' cannot be null.\");\n else if (campaignId !== undefined)\n url_ += \"campaignId=\" + encodeURIComponent(\"\" + campaignId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processArchiveCampaign(_response);\n });\n }\n\n protected processArchiveCampaign(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ArchiveCampaignClientResponse;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n archiveAdGroup(adGroupId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CampaignManager/ArchiveAdGroup?\";\n if (adGroupId === null)\n throw new Error(\"The parameter 'adGroupId' cannot be null.\");\n else if (adGroupId !== undefined)\n url_ += \"adGroupId=\" + encodeURIComponent(\"\" + adGroupId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processArchiveAdGroup(_response);\n });\n }\n\n protected processArchiveAdGroup(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ArchiveAdGroupClientResponse;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n retrieveCampaigns(campaignId: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CampaignManager/RetrieveCampaigns?\";\n if (campaignId !== undefined && campaignId !== null)\n url_ += \"campaignId=\" + encodeURIComponent(\"\" + campaignId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRetrieveCampaigns(_response);\n });\n }\n\n protected processRetrieveCampaigns(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AdCampaignEntity[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n retrieveAdGroups(campaignId: string | undefined, adGroupId: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/CampaignManager/RetrieveAdGroups?\";\n if (campaignId === null)\n throw new Error(\"The parameter 'campaignId' cannot be null.\");\n else if (campaignId !== undefined)\n url_ += \"campaignId=\" + encodeURIComponent(\"\" + campaignId) + \"&\";\n if (adGroupId !== undefined && adGroupId !== null)\n url_ += \"adGroupId=\" + encodeURIComponent(\"\" + adGroupId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRetrieveAdGroups(_response);\n });\n }\n\n protected processRetrieveAdGroups(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AdGroup[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface ICatalogClient {\n\n getCatalogForSales(query: SaleQuery, includeCounts: boolean | undefined): Promise;\n\n getCatalogForPurchaseOrders(query: PurchaseOrderQuery, includeCounts: boolean | undefined): Promise;\n\n getCatalogForSaleBySaleId(saleId: number): Promise;\n\n getCatalogBySaleIds(saleIds: number[]): Promise;\n\n getCatalogSaleMetrics(query: SaleQuery): Promise;\n\n getCatalogTicketGroupMetrics(query: PurchaseOrderQuery): Promise;\n\n /**\n * Not currently used, but exist to create the types in React\n */\n getDefaultEventGroupingQuery(): Promise;\n\n searchEvents(query: EventSearchQuery): Promise;\n\n getSearchEventsAutoCompleteResult(searchText: string | undefined, maxCount: number | null | undefined, timeFrame: string | undefined): Promise;\n\n getCatalogForListing(query: ListingQuery, includeCounts: boolean | undefined): Promise;\n\n getCatalogForListingByListingId(listingId: number): Promise;\n\n getCatalogListingMetrics(query: ListingQuery): Promise;\n\n getEventDetailedListingMetrics(query: ListingQuery): Promise;\n\n getSummaryMetricsForListings(allMetrics: ListingMetricsInput[]): Promise;\n\n getCatalogHomeMetrics(): Promise;\n\n requestEventMapping(request: EventMappingRequest): Promise;\n\n getCatalogForUpcomingOnSales(): Promise;\n\n getCatalogForOnSaleEvents(query: OnSaleEventQuery): Promise;\n\n getCatalogOnSaleEventMetrics(query: OnSaleEventQuery): Promise;\n\n searchOnSaleEvents(query: OnSaleEventQuery): Promise;\n\n getCatalog(viagogoVirtualIds: string[]): Promise;\n\n getCatalogCountForSales(query: SaleQuery): Promise;\n\n getCatalogCountForPurchaseOrders(query: PurchaseOrderQuery): Promise;\n\n getCatalogCountForListings(query: ListingQuery): Promise;\n\n getCatalogMetricsForTicketGroups(query: PurchaseOrderQuery, rowVersion: number | null | undefined): Promise;\n\n getCatalogMetricsForSales(query: SaleQuery, rowVersion: number | null | undefined): Promise;\n\n getCatalogMetricsForListings(query: ListingQuery, rowVersion: number | null | undefined): Promise;\n\n getCatalogDetailedMetricsForListings(query: ListingQuery, rowVersion: number | null | undefined): Promise;\n}\n\nexport class CatalogClient extends PosClientBase implements ICatalogClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getCatalogForSales(query: SaleQuery, includeCounts: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogForSales?\";\n if (includeCounts === null)\n throw new Error(\"The parameter 'includeCounts' cannot be null.\");\n else if (includeCounts !== undefined)\n url_ += \"includeCounts=\" + encodeURIComponent(\"\" + includeCounts) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogForSales(_response);\n });\n }\n\n protected processGetCatalogForSales(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogForPurchaseOrders(query: PurchaseOrderQuery, includeCounts: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogForPurchaseOrders?\";\n if (includeCounts === null)\n throw new Error(\"The parameter 'includeCounts' cannot be null.\");\n else if (includeCounts !== undefined)\n url_ += \"includeCounts=\" + encodeURIComponent(\"\" + includeCounts) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogForPurchaseOrders(_response);\n });\n }\n\n protected processGetCatalogForPurchaseOrders(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogForSaleBySaleId(saleId: number): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogForSaleBySaleId\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(saleId);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogForSaleBySaleId(_response);\n });\n }\n\n protected processGetCatalogForSaleBySaleId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogBySaleIds(saleIds: number[]): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogBySaleIds\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(saleIds);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogBySaleIds(_response);\n });\n }\n\n protected processGetCatalogBySaleIds(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogSaleMetrics(query: SaleQuery): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogSaleMetrics\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogSaleMetrics(_response);\n });\n }\n\n protected processGetCatalogSaleMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogSaleMetricsResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogTicketGroupMetrics(query: PurchaseOrderQuery): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogTicketGroupMetrics\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogTicketGroupMetrics(_response);\n });\n }\n\n protected processGetCatalogTicketGroupMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogTicketGroupMetricsResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * Not currently used, but exist to create the types in React\n */\n getDefaultEventGroupingQuery(): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetDefaultEventGroupingQuery\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetDefaultEventGroupingQuery(_response);\n });\n }\n\n protected processGetDefaultEventGroupingQuery(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as EventGroupingQuery;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n searchEvents(query: EventSearchQuery): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/SearchEvents\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSearchEvents(_response);\n });\n }\n\n protected processSearchEvents(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSearchEventsAutoCompleteResult(searchText: string | undefined, maxCount: number | null | undefined, timeFrame: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetSearchEventsAutoCompleteResult?\";\n if (searchText === null)\n throw new Error(\"The parameter 'searchText' cannot be null.\");\n else if (searchText !== undefined)\n url_ += \"searchText=\" + encodeURIComponent(\"\" + searchText) + \"&\";\n if (maxCount !== undefined && maxCount !== null)\n url_ += \"maxCount=\" + encodeURIComponent(\"\" + maxCount) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(timeFrame);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSearchEventsAutoCompleteResult(_response);\n });\n }\n\n protected processGetSearchEventsAutoCompleteResult(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogForListing(query: ListingQuery, includeCounts: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogForListing?\";\n if (includeCounts === null)\n throw new Error(\"The parameter 'includeCounts' cannot be null.\");\n else if (includeCounts !== undefined)\n url_ += \"includeCounts=\" + encodeURIComponent(\"\" + includeCounts) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogForListing(_response);\n });\n }\n\n protected processGetCatalogForListing(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogForListingByListingId(listingId: number): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogForListingByListingId\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(listingId);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogForListingByListingId(_response);\n });\n }\n\n protected processGetCatalogForListingByListingId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogListingMetrics(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogListingMetrics\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogListingMetrics(_response);\n });\n }\n\n protected processGetCatalogListingMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogListingMetricsResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventDetailedListingMetrics(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetEventDetailedListingMetrics\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventDetailedListingMetrics(_response);\n });\n }\n\n protected processGetEventDetailedListingMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogListingMetricsResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSummaryMetricsForListings(allMetrics: ListingMetricsInput[]): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetSummaryMetricsForListings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(allMetrics);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSummaryMetricsForListings(_response);\n });\n }\n\n protected processGetSummaryMetricsForListings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ListingMetrics;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogHomeMetrics(): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogHomeMetrics\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogHomeMetrics(_response);\n });\n }\n\n protected processGetCatalogHomeMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ListingMetrics;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n requestEventMapping(request: EventMappingRequest): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/RequestEventMapping\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(request);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRequestEventMapping(_response);\n });\n }\n\n protected processRequestEventMapping(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValueTupleOfEventAndVenueAndPerformer;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogForUpcomingOnSales(): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogForUpcomingOnSales\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogForUpcomingOnSales(_response);\n });\n }\n\n protected processGetCatalogForUpcomingOnSales(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UpcomingOnSalesResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogForOnSaleEvents(query: OnSaleEventQuery): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogForOnSaleEvents\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogForOnSaleEvents(_response);\n });\n }\n\n protected processGetCatalogForOnSaleEvents(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogOnSaleEventMetrics(query: OnSaleEventQuery): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogOnSaleEventMetrics\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogOnSaleEventMetrics(_response);\n });\n }\n\n protected processGetCatalogOnSaleEventMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as OnSaleEventMetrics[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n searchOnSaleEvents(query: OnSaleEventQuery): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/SearchOnSaleEvents\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSearchOnSaleEvents(_response);\n });\n }\n\n protected processSearchOnSaleEvents(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalog(viagogoVirtualIds: string[]): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalog\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(viagogoVirtualIds);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalog(_response);\n });\n }\n\n protected processGetCatalog(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogCountForSales(query: SaleQuery): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogCountForSales\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogCountForSales(_response);\n });\n }\n\n protected processGetCatalogCountForSales(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogCounts;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogCountForPurchaseOrders(query: PurchaseOrderQuery): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogCountForPurchaseOrders\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogCountForPurchaseOrders(_response);\n });\n }\n\n protected processGetCatalogCountForPurchaseOrders(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogCounts;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogCountForListings(query: ListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogCountForListings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogCountForListings(_response);\n });\n }\n\n protected processGetCatalogCountForListings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogCounts;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogMetricsForTicketGroups(query: PurchaseOrderQuery, rowVersion: number | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogMetricsForTicketGroups?\";\n if (rowVersion !== undefined && rowVersion !== null)\n url_ += \"rowVersion=\" + encodeURIComponent(\"\" + rowVersion) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogMetricsForTicketGroups(_response);\n });\n }\n\n protected processGetCatalogMetricsForTicketGroups(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogTicketGroupMetricsResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogMetricsForSales(query: SaleQuery, rowVersion: number | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogMetricsForSales?\";\n if (rowVersion !== undefined && rowVersion !== null)\n url_ += \"rowVersion=\" + encodeURIComponent(\"\" + rowVersion) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogMetricsForSales(_response);\n });\n }\n\n protected processGetCatalogMetricsForSales(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogSaleMetricsResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogMetricsForListings(query: ListingQuery, rowVersion: number | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogMetricsForListings?\";\n if (rowVersion !== undefined && rowVersion !== null)\n url_ += \"rowVersion=\" + encodeURIComponent(\"\" + rowVersion) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogMetricsForListings(_response);\n });\n }\n\n protected processGetCatalogMetricsForListings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogListingMetricsResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCatalogDetailedMetricsForListings(query: ListingQuery, rowVersion: number | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Catalog/GetCatalogDetailedMetricsForListings?\";\n if (rowVersion !== undefined && rowVersion !== null)\n url_ += \"rowVersion=\" + encodeURIComponent(\"\" + rowVersion) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCatalogDetailedMetricsForListings(_response);\n });\n }\n\n protected processGetCatalogDetailedMetricsForListings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CatalogListingMetricsResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IClientLogClient {\n\n log(logRequest: ClientLogRequest): Promise;\n}\n\nexport class ClientLogClient extends PosClientBase implements IClientLogClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n log(logRequest: ClientLogRequest): Promise {\n let url_ = this.baseUrl + \"/api/ClientLog/Log\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(logRequest);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processLog(_response);\n });\n }\n\n protected processLog(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IContentClient {\n\n getContentDataMap(): Promise<{ [key: string]: ContentData; }>;\n}\n\nexport class ContentClient extends PosClientBase implements IContentClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getContentDataMap(): Promise<{ [key: string]: ContentData; }> {\n let url_ = this.baseUrl + \"/api/Content/GetContentDataMap\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetContentDataMap(_response);\n });\n }\n\n protected processGetContentDataMap(response: Response): Promise<{ [key: string]: ContentData; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: ContentData; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: ContentData; }>(null as any);\n }\n}\n\nexport interface IDocumentProcessorClient {\n\n getDocumentUploadInfo(entityId: number | undefined, documentType: DocumentType | undefined, contentType: string | undefined): Promise;\n\n uploadDocumentForSale(entityId: number | undefined, entityType: ActionOutboxEntityType | undefined, documentType: DocumentType | undefined, blobName: string | undefined, documentId: string | undefined, contentType: string | undefined, file: FileParameter | null | undefined): Promise;\n\n uploadDocumentForListing(entityId: number | undefined, entityType: ActionOutboxEntityType | undefined, documentType: DocumentType | undefined, blobName: string | undefined, documentId: string | undefined, contentType: string | undefined, file: FileParameter | null | undefined): Promise;\n\n uploadDocumentWithoutProcessing(entityId: number | undefined, entityType: ActionOutboxEntityType | undefined, documentType: DocumentType | undefined, blobName: string | undefined, documentId: string | undefined, contentType: string | undefined, file: FileParameter | null | undefined): Promise;\n\n /**\n * Status polling endpoint\n * @param entityId (optional) \n * @param entityType (optional) \n * @param documentType (optional) \n * @param blobName (optional) \n * @param documentId (optional) \n * @param contentType (optional) \n * @return 204 = not started (mapped from 404 on the function for ts client semantics/lack of NSwag extensibility)\n 202 = processing\n 200 = completed, list of eTicketPages\n All other response codes are a failure and should throw an exception\n Note: https://github.com/RicoSuter/NSwag/issues/622\n */\n getDocumentPages(entityId: number | undefined, entityType: ActionOutboxEntityType | undefined, documentType: DocumentType | undefined, blobName: string | undefined, documentId: string | undefined, contentType: string | undefined): Promise;\n}\n\nexport class DocumentProcessorClient extends PosClientBase implements IDocumentProcessorClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getDocumentUploadInfo(entityId: number | undefined, documentType: DocumentType | undefined, contentType: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/DocumentProcessor/GetDocumentUploadInfo?\";\n if (entityId === null)\n throw new Error(\"The parameter 'entityId' cannot be null.\");\n else if (entityId !== undefined)\n url_ += \"entityId=\" + encodeURIComponent(\"\" + entityId) + \"&\";\n if (documentType === null)\n throw new Error(\"The parameter 'documentType' cannot be null.\");\n else if (documentType !== undefined)\n url_ += \"documentType=\" + encodeURIComponent(\"\" + documentType) + \"&\";\n if (contentType === null)\n throw new Error(\"The parameter 'contentType' cannot be null.\");\n else if (contentType !== undefined)\n url_ += \"contentType=\" + encodeURIComponent(\"\" + contentType) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetDocumentUploadInfo(_response);\n });\n }\n\n protected processGetDocumentUploadInfo(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DocumentUploadInfo;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n uploadDocumentForSale(entityId: number | undefined, entityType: ActionOutboxEntityType | undefined, documentType: DocumentType | undefined, blobName: string | undefined, documentId: string | undefined, contentType: string | undefined, file: FileParameter | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/DocumentProcessor/UploadDocumentForSale?\";\n if (entityId === null)\n throw new Error(\"The parameter 'entityId' cannot be null.\");\n else if (entityId !== undefined)\n url_ += \"EntityId=\" + encodeURIComponent(\"\" + entityId) + \"&\";\n if (entityType === null)\n throw new Error(\"The parameter 'entityType' cannot be null.\");\n else if (entityType !== undefined)\n url_ += \"EntityType=\" + encodeURIComponent(\"\" + entityType) + \"&\";\n if (documentType === null)\n throw new Error(\"The parameter 'documentType' cannot be null.\");\n else if (documentType !== undefined)\n url_ += \"DocumentType=\" + encodeURIComponent(\"\" + documentType) + \"&\";\n if (blobName === null)\n throw new Error(\"The parameter 'blobName' cannot be null.\");\n else if (blobName !== undefined)\n url_ += \"BlobName=\" + encodeURIComponent(\"\" + blobName) + \"&\";\n if (documentId === null)\n throw new Error(\"The parameter 'documentId' cannot be null.\");\n else if (documentId !== undefined)\n url_ += \"DocumentId=\" + encodeURIComponent(\"\" + documentId) + \"&\";\n if (contentType === null)\n throw new Error(\"The parameter 'contentType' cannot be null.\");\n else if (contentType !== undefined)\n url_ += \"ContentType=\" + encodeURIComponent(\"\" + contentType) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (file !== null && file !== undefined)\n content_.append(\"File\", file.data, file.fileName ? file.fileName : \"File\");\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUploadDocumentForSale(_response);\n });\n }\n\n protected processUploadDocumentForSale(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n uploadDocumentForListing(entityId: number | undefined, entityType: ActionOutboxEntityType | undefined, documentType: DocumentType | undefined, blobName: string | undefined, documentId: string | undefined, contentType: string | undefined, file: FileParameter | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/DocumentProcessor/UploadDocumentForListing?\";\n if (entityId === null)\n throw new Error(\"The parameter 'entityId' cannot be null.\");\n else if (entityId !== undefined)\n url_ += \"EntityId=\" + encodeURIComponent(\"\" + entityId) + \"&\";\n if (entityType === null)\n throw new Error(\"The parameter 'entityType' cannot be null.\");\n else if (entityType !== undefined)\n url_ += \"EntityType=\" + encodeURIComponent(\"\" + entityType) + \"&\";\n if (documentType === null)\n throw new Error(\"The parameter 'documentType' cannot be null.\");\n else if (documentType !== undefined)\n url_ += \"DocumentType=\" + encodeURIComponent(\"\" + documentType) + \"&\";\n if (blobName === null)\n throw new Error(\"The parameter 'blobName' cannot be null.\");\n else if (blobName !== undefined)\n url_ += \"BlobName=\" + encodeURIComponent(\"\" + blobName) + \"&\";\n if (documentId === null)\n throw new Error(\"The parameter 'documentId' cannot be null.\");\n else if (documentId !== undefined)\n url_ += \"DocumentId=\" + encodeURIComponent(\"\" + documentId) + \"&\";\n if (contentType === null)\n throw new Error(\"The parameter 'contentType' cannot be null.\");\n else if (contentType !== undefined)\n url_ += \"ContentType=\" + encodeURIComponent(\"\" + contentType) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (file !== null && file !== undefined)\n content_.append(\"File\", file.data, file.fileName ? file.fileName : \"File\");\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUploadDocumentForListing(_response);\n });\n }\n\n protected processUploadDocumentForListing(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n uploadDocumentWithoutProcessing(entityId: number | undefined, entityType: ActionOutboxEntityType | undefined, documentType: DocumentType | undefined, blobName: string | undefined, documentId: string | undefined, contentType: string | undefined, file: FileParameter | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/DocumentProcessor/UploadDocumentWithoutProcessing?\";\n if (entityId === null)\n throw new Error(\"The parameter 'entityId' cannot be null.\");\n else if (entityId !== undefined)\n url_ += \"EntityId=\" + encodeURIComponent(\"\" + entityId) + \"&\";\n if (entityType === null)\n throw new Error(\"The parameter 'entityType' cannot be null.\");\n else if (entityType !== undefined)\n url_ += \"EntityType=\" + encodeURIComponent(\"\" + entityType) + \"&\";\n if (documentType === null)\n throw new Error(\"The parameter 'documentType' cannot be null.\");\n else if (documentType !== undefined)\n url_ += \"DocumentType=\" + encodeURIComponent(\"\" + documentType) + \"&\";\n if (blobName === null)\n throw new Error(\"The parameter 'blobName' cannot be null.\");\n else if (blobName !== undefined)\n url_ += \"BlobName=\" + encodeURIComponent(\"\" + blobName) + \"&\";\n if (documentId === null)\n throw new Error(\"The parameter 'documentId' cannot be null.\");\n else if (documentId !== undefined)\n url_ += \"DocumentId=\" + encodeURIComponent(\"\" + documentId) + \"&\";\n if (contentType === null)\n throw new Error(\"The parameter 'contentType' cannot be null.\");\n else if (contentType !== undefined)\n url_ += \"ContentType=\" + encodeURIComponent(\"\" + contentType) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (file !== null && file !== undefined)\n content_.append(\"File\", file.data, file.fileName ? file.fileName : \"File\");\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUploadDocumentWithoutProcessing(_response);\n });\n }\n\n protected processUploadDocumentWithoutProcessing(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResultWithDataOfUserDocumentLinks;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * Status polling endpoint\n * @param entityId (optional) \n * @param entityType (optional) \n * @param documentType (optional) \n * @param blobName (optional) \n * @param documentId (optional) \n * @param contentType (optional) \n * @return 204 = not started (mapped from 404 on the function for ts client semantics/lack of NSwag extensibility)\n 202 = processing\n 200 = completed, list of eTicketPages\n All other response codes are a failure and should throw an exception\n Note: https://github.com/RicoSuter/NSwag/issues/622\n */\n getDocumentPages(entityId: number | undefined, entityType: ActionOutboxEntityType | undefined, documentType: DocumentType | undefined, blobName: string | undefined, documentId: string | undefined, contentType: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/DocumentProcessor/GetDocumentPages?\";\n if (entityId === null)\n throw new Error(\"The parameter 'entityId' cannot be null.\");\n else if (entityId !== undefined)\n url_ += \"EntityId=\" + encodeURIComponent(\"\" + entityId) + \"&\";\n if (entityType === null)\n throw new Error(\"The parameter 'entityType' cannot be null.\");\n else if (entityType !== undefined)\n url_ += \"EntityType=\" + encodeURIComponent(\"\" + entityType) + \"&\";\n if (documentType === null)\n throw new Error(\"The parameter 'documentType' cannot be null.\");\n else if (documentType !== undefined)\n url_ += \"DocumentType=\" + encodeURIComponent(\"\" + documentType) + \"&\";\n if (blobName === null)\n throw new Error(\"The parameter 'blobName' cannot be null.\");\n else if (blobName !== undefined)\n url_ += \"BlobName=\" + encodeURIComponent(\"\" + blobName) + \"&\";\n if (documentId === null)\n throw new Error(\"The parameter 'documentId' cannot be null.\");\n else if (documentId !== undefined)\n url_ += \"DocumentId=\" + encodeURIComponent(\"\" + documentId) + \"&\";\n if (contentType === null)\n throw new Error(\"The parameter 'contentType' cannot be null.\");\n else if (contentType !== undefined)\n url_ += \"ContentType=\" + encodeURIComponent(\"\" + contentType) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetDocumentPages(_response);\n });\n }\n\n protected processGetDocumentPages(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n let result204: any = null;\n result204 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DocumentPage[];\n return result204;\n });\n } else if (status === 202) {\n return response.text().then((_responseText) => {\n let result202: any = null;\n result202 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DocumentPage[];\n return result202;\n });\n } else if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DocumentPage[];\n return result200;\n });\n } else if (status === 400) {\n return response.text().then((_responseText) => {\n return throwException(\"A server side error occurred.\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IEventConfigClient {\n\n getVenueMapForEvent(eventId: number | undefined): Promise;\n\n getVenueMapsByScoreModelForEvent(eventId: number | undefined): Promise<{ [key in keyof typeof ScoreModel]?: VenueMapInfo; }>;\n\n getListingConstraintsForEvents(eventIds: number[]): Promise;\n\n getSellerEventMarketplaceEventInfo(viagogoEventId: number | null | undefined, eventMappingId: string | null | undefined): Promise;\n\n updateSellerEventMarketplaceEventInfos(marketplaceEventInfos: SellerEventMarketplaceEventInfo[]): Promise;\n\n getTagsForEvent(viagogoVirtualId: string | undefined): Promise;\n\n getMarketTransactionsForEvent(viagogoEventId: number | undefined, topN: number | undefined): Promise;\n\n updateTagsForEvent(viagogoVirtualId: string | undefined, tags: Tag[]): Promise;\n\n getInternalNotesForEvent(viagogoVirtualId: string | undefined): Promise;\n\n updateInternalNotesForEvent(viagogoVirtualId: string | undefined, internalNote: string): Promise;\n\n getLastReviewedDateTimeForEvents(viagogoVirtualIds: string[]): Promise<{ [key: string]: string; }>;\n\n updateLastReviewedDateTimeForEvent(viagogoVirtualId: string | undefined, lastReviewedDateTime: string | undefined): Promise;\n\n getSellerEventNotesByViagogoEventId(viagogoEventId: number | undefined): Promise;\n\n insertSellerEventNotes(viagogoEventId: number | undefined, content: string | undefined): Promise;\n\n updateSellerEventGroupingMethods(viagogoVirtualId: string | undefined, groupingMethods: ListingGroupingMethods): Promise;\n\n mergeSellerAccountEventSettingsForDelivery(sellerAccountEventSettings: SellerAccountEventSetting[], viagogoEventId: number | undefined): Promise;\n\n getSellerAccountEventSettings(viagogoEventId: number | undefined): Promise;\n}\n\nexport class EventConfigClient extends PosClientBase implements IEventConfigClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getVenueMapForEvent(eventId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/EventConfig/GetVenueMapForEvent?\";\n if (eventId === null)\n throw new Error(\"The parameter 'eventId' cannot be null.\");\n else if (eventId !== undefined)\n url_ += \"eventId=\" + encodeURIComponent(\"\" + eventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetVenueMapForEvent(_response);\n });\n }\n\n protected processGetVenueMapForEvent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VenueMapInfo;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getVenueMapsByScoreModelForEvent(eventId: number | undefined): Promise<{ [key in keyof typeof ScoreModel]?: VenueMapInfo; }> {\n let url_ = this.baseUrl + \"/api/EventConfig/GetVenueMapsByScoreModelForEvent?\";\n if (eventId === null)\n throw new Error(\"The parameter 'eventId' cannot be null.\");\n else if (eventId !== undefined)\n url_ += \"eventId=\" + encodeURIComponent(\"\" + eventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetVenueMapsByScoreModelForEvent(_response);\n });\n }\n\n protected processGetVenueMapsByScoreModelForEvent(response: Response): Promise<{ [key in keyof typeof ScoreModel]?: VenueMapInfo; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key in keyof typeof ScoreModel]?: VenueMapInfo; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key in keyof typeof ScoreModel]?: VenueMapInfo; }>(null as any);\n }\n\n getListingConstraintsForEvents(eventIds: number[]): Promise {\n let url_ = this.baseUrl + \"/api/EventConfig/GetListingConstraintsForEvents\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(eventIds);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetListingConstraintsForEvents(_response);\n });\n }\n\n protected processGetListingConstraintsForEvents(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as EventListingConstraints[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSellerEventMarketplaceEventInfo(viagogoEventId: number | null | undefined, eventMappingId: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/EventConfig/GetSellerEventMarketplaceEventInfo?\";\n if (viagogoEventId !== undefined && viagogoEventId !== null)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n if (eventMappingId !== undefined && eventMappingId !== null)\n url_ += \"eventMappingId=\" + encodeURIComponent(\"\" + eventMappingId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSellerEventMarketplaceEventInfo(_response);\n });\n }\n\n protected processGetSellerEventMarketplaceEventInfo(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SellerEventMarketplaceEventInfo[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateSellerEventMarketplaceEventInfos(marketplaceEventInfos: SellerEventMarketplaceEventInfo[]): Promise {\n let url_ = this.baseUrl + \"/api/EventConfig/UpdateSellerEventMarketplaceEventInfos\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(marketplaceEventInfos);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateSellerEventMarketplaceEventInfos(_response);\n });\n }\n\n protected processUpdateSellerEventMarketplaceEventInfos(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getTagsForEvent(viagogoVirtualId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/EventConfig/GetTagsForEvent?\";\n if (viagogoVirtualId === null)\n throw new Error(\"The parameter 'viagogoVirtualId' cannot be null.\");\n else if (viagogoVirtualId !== undefined)\n url_ += \"viagogoVirtualId=\" + encodeURIComponent(\"\" + viagogoVirtualId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTagsForEvent(_response);\n });\n }\n\n protected processGetTagsForEvent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Tag[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getMarketTransactionsForEvent(viagogoEventId: number | undefined, topN: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/EventConfig/GetMarketTransactionsForEvent?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n if (topN === null)\n throw new Error(\"The parameter 'topN' cannot be null.\");\n else if (topN !== undefined)\n url_ += \"topN=\" + encodeURIComponent(\"\" + topN) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetMarketTransactionsForEvent(_response);\n });\n }\n\n protected processGetMarketTransactionsForEvent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MarketTransaction[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateTagsForEvent(viagogoVirtualId: string | undefined, tags: Tag[]): Promise {\n let url_ = this.baseUrl + \"/api/EventConfig/UpdateTagsForEvent?\";\n if (viagogoVirtualId === null)\n throw new Error(\"The parameter 'viagogoVirtualId' cannot be null.\");\n else if (viagogoVirtualId !== undefined)\n url_ += \"viagogoVirtualId=\" + encodeURIComponent(\"\" + viagogoVirtualId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(tags);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateTagsForEvent(_response);\n });\n }\n\n protected processUpdateTagsForEvent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getInternalNotesForEvent(viagogoVirtualId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/EventConfig/GetInternalNotesForEvent?\";\n if (viagogoVirtualId === null)\n throw new Error(\"The parameter 'viagogoVirtualId' cannot be null.\");\n else if (viagogoVirtualId !== undefined)\n url_ += \"viagogoVirtualId=\" + encodeURIComponent(\"\" + viagogoVirtualId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetInternalNotesForEvent(_response);\n });\n }\n\n protected processGetInternalNotesForEvent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateInternalNotesForEvent(viagogoVirtualId: string | undefined, internalNote: string): Promise {\n let url_ = this.baseUrl + \"/api/EventConfig/UpdateInternalNotesForEvent?\";\n if (viagogoVirtualId === null)\n throw new Error(\"The parameter 'viagogoVirtualId' cannot be null.\");\n else if (viagogoVirtualId !== undefined)\n url_ += \"viagogoVirtualId=\" + encodeURIComponent(\"\" + viagogoVirtualId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(internalNote);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateInternalNotesForEvent(_response);\n });\n }\n\n protected processUpdateInternalNotesForEvent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getLastReviewedDateTimeForEvents(viagogoVirtualIds: string[]): Promise<{ [key: string]: string; }> {\n let url_ = this.baseUrl + \"/api/EventConfig/GetLastReviewedDateTimeForEvents\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(viagogoVirtualIds);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetLastReviewedDateTimeForEvents(_response);\n });\n }\n\n protected processGetLastReviewedDateTimeForEvents(response: Response): Promise<{ [key: string]: string; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: string; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: string; }>(null as any);\n }\n\n updateLastReviewedDateTimeForEvent(viagogoVirtualId: string | undefined, lastReviewedDateTime: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/EventConfig/UpdateLastReviewedDateTimeForEvent?\";\n if (viagogoVirtualId === null)\n throw new Error(\"The parameter 'viagogoVirtualId' cannot be null.\");\n else if (viagogoVirtualId !== undefined)\n url_ += \"viagogoVirtualId=\" + encodeURIComponent(\"\" + viagogoVirtualId) + \"&\";\n if (lastReviewedDateTime === null)\n throw new Error(\"The parameter 'lastReviewedDateTime' cannot be null.\");\n else if (lastReviewedDateTime !== undefined)\n url_ += \"lastReviewedDateTime=\" + encodeURIComponent(\"\" + lastReviewedDateTime) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateLastReviewedDateTimeForEvent(_response);\n });\n }\n\n protected processUpdateLastReviewedDateTimeForEvent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSellerEventNotesByViagogoEventId(viagogoEventId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/EventConfig/GetSellerEventNotesByViagogoEventId?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSellerEventNotesByViagogoEventId(_response);\n });\n }\n\n protected processGetSellerEventNotesByViagogoEventId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SellerEventNoteResult[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n insertSellerEventNotes(viagogoEventId: number | undefined, content: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/EventConfig/InsertSellerEventNotes?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n if (content === null)\n throw new Error(\"The parameter 'content' cannot be null.\");\n else if (content !== undefined)\n url_ += \"content=\" + encodeURIComponent(\"\" + content) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processInsertSellerEventNotes(_response);\n });\n }\n\n protected processInsertSellerEventNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SellerEventNoteResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateSellerEventGroupingMethods(viagogoVirtualId: string | undefined, groupingMethods: ListingGroupingMethods): Promise {\n let url_ = this.baseUrl + \"/api/EventConfig/UpdateSellerEventGroupingMethods?\";\n if (viagogoVirtualId === null)\n throw new Error(\"The parameter 'viagogoVirtualId' cannot be null.\");\n else if (viagogoVirtualId !== undefined)\n url_ += \"viagogoVirtualId=\" + encodeURIComponent(\"\" + viagogoVirtualId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(groupingMethods);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateSellerEventGroupingMethods(_response);\n });\n }\n\n protected processUpdateSellerEventGroupingMethods(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n mergeSellerAccountEventSettingsForDelivery(sellerAccountEventSettings: SellerAccountEventSetting[], viagogoEventId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/EventConfig?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(sellerAccountEventSettings);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processMergeSellerAccountEventSettingsForDelivery(_response);\n });\n }\n\n protected processMergeSellerAccountEventSettingsForDelivery(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSellerAccountEventSettings(viagogoEventId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/EventConfig/GetSellerAccountEventSettings?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSellerAccountEventSettings(_response);\n });\n }\n\n protected processGetSellerAccountEventSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SellerAccountEventSetting[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IFulfillmentProviderClient {\n\n getFulfillmentProviderSettings(): Promise;\n\n toggleFulfillmentProviderSetting(fulfillmentProviderSellerUserId: string | undefined, newState: boolean | undefined): Promise;\n}\n\nexport class FulfillmentProviderClient extends PosClientBase implements IFulfillmentProviderClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getFulfillmentProviderSettings(): Promise {\n let url_ = this.baseUrl + \"/api/FulfillmentProvider/GetFulfillmentProviderSettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetFulfillmentProviderSettings(_response);\n });\n }\n\n protected processGetFulfillmentProviderSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as FulfillmentProvider[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n toggleFulfillmentProviderSetting(fulfillmentProviderSellerUserId: string | undefined, newState: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/FulfillmentProvider/ToggleFulfillmentProviderSetting?\";\n if (fulfillmentProviderSellerUserId === null)\n throw new Error(\"The parameter 'fulfillmentProviderSellerUserId' cannot be null.\");\n else if (fulfillmentProviderSellerUserId !== undefined)\n url_ += \"fulfillmentProviderSellerUserId=\" + encodeURIComponent(\"\" + fulfillmentProviderSellerUserId) + \"&\";\n if (newState === null)\n throw new Error(\"The parameter 'newState' cannot be null.\");\n else if (newState !== undefined)\n url_ += \"newState=\" + encodeURIComponent(\"\" + newState) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processToggleFulfillmentProviderSetting(_response);\n });\n }\n\n protected processToggleFulfillmentProviderSetting(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IInventoryEventDashboardClient {\n\n getEventWebsiteMetrics(queryId: InventoryMetricsQueryId, timePeriod: EventWebsiteMetricsTimePeriod | null | undefined): Promise;\n\n getEventDemandFactors(queryId: InventoryMetricsQueryId): Promise;\n\n getSellerEventDashboardMetrics(queryId: InventoryMetricsQueryId, timePeriod: SellerEventDashboardMetricsTimePeriod | null | undefined): Promise;\n\n getBuyerEventDashboardMetrics(queryId: InventoryMetricsQueryId): Promise;\n\n getEventSectionClearingPrices(queryId: InventoryMetricsQueryId): Promise;\n\n getEventSupplyMetrics(queryId: InventoryMetricsQueryId, timePeriod: EventSupplyMetricsTimePeriod | null | undefined): Promise;\n}\n\nexport class InventoryEventDashboardClient extends PosClientBase implements IInventoryEventDashboardClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getEventWebsiteMetrics(queryId: InventoryMetricsQueryId, timePeriod: EventWebsiteMetricsTimePeriod | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/InventoryEventDashboard/GetEventWebsiteMetrics?\";\n if (timePeriod !== undefined && timePeriod !== null)\n url_ += \"timePeriod=\" + encodeURIComponent(\"\" + timePeriod) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(queryId);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventWebsiteMetrics(_response);\n });\n }\n\n protected processGetEventWebsiteMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as EventMarketplaceWebsiteMetrics;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventDemandFactors(queryId: InventoryMetricsQueryId): Promise {\n let url_ = this.baseUrl + \"/api/InventoryEventDashboard/GetEventDemandFactors\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(queryId);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventDemandFactors(_response);\n });\n }\n\n protected processGetEventDemandFactors(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as EventDemandFactor[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSellerEventDashboardMetrics(queryId: InventoryMetricsQueryId, timePeriod: SellerEventDashboardMetricsTimePeriod | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/InventoryEventDashboard/GetSellerEventDashboardMetrics?\";\n if (timePeriod !== undefined && timePeriod !== null)\n url_ += \"timePeriod=\" + encodeURIComponent(\"\" + timePeriod) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(queryId);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSellerEventDashboardMetrics(_response);\n });\n }\n\n protected processGetSellerEventDashboardMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as InventoryEventDashboardResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getBuyerEventDashboardMetrics(queryId: InventoryMetricsQueryId): Promise {\n let url_ = this.baseUrl + \"/api/InventoryEventDashboard/GetBuyerEventDashboardMetrics\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(queryId);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetBuyerEventDashboardMetrics(_response);\n });\n }\n\n protected processGetBuyerEventDashboardMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as InventoryEventDashboardResults;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventSectionClearingPrices(queryId: InventoryMetricsQueryId): Promise {\n let url_ = this.baseUrl + \"/api/InventoryEventDashboard/GetEventSectionClearingPrices\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(queryId);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventSectionClearingPrices(_response);\n });\n }\n\n protected processGetEventSectionClearingPrices(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as EventSectionClearingPrices[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventSupplyMetrics(queryId: InventoryMetricsQueryId, timePeriod: EventSupplyMetricsTimePeriod | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/InventoryEventDashboard/GetEventSupplyMetrics?\";\n if (timePeriod !== undefined && timePeriod !== null)\n url_ += \"timePeriod=\" + encodeURIComponent(\"\" + timePeriod) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(queryId);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventSupplyMetrics(_response);\n });\n }\n\n protected processGetEventSupplyMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as EventSupplyMetrics[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IListingClient {\n\n getListingByListingId(inventoryId: number | undefined, current: ListingDetails | undefined, dataToInclude: ListingDetailDataField[] | null | undefined): Promise;\n\n getListingAvailableQuantitiesByListingIds(inventoryIds: number[]): Promise;\n\n getListingByMarketplaceListingId(marketplaceListingId: string | undefined): Promise;\n\n getListingsForEvents(query: ListingQuery, useReadonlyDB: boolean | undefined, doNotProcessListingGroups: boolean | undefined): Promise<{ [key: string]: Listing[]; }>;\n\n getListingsSectionalDataForEvents(input: SectionalListingsForEventsInput, dataToInclude: ListingDetailDataField[] | undefined, processListingGroup: boolean | null | undefined): Promise<{ [key: string]: Listing[]; }>;\n\n getListingsCanBeWasted(inventoryId: number | undefined): Promise;\n\n getDuplicateListingsForListingId(inventoryId: number | undefined): Promise;\n\n getListingEnabledForAutoPricing(posEventIds: string[]): Promise;\n\n updateAutoPricingEnabledForEvent(posEventIds: string[], autoPricingState: boolean | undefined): Promise;\n\n createMarketplaceListings(listingId: number | undefined, marketplaces: Marketplace[] | undefined): Promise;\n\n deleteMarketplaceListings(listingId: number | undefined, marketplaces: Marketplace[] | undefined): Promise;\n\n updateListingAdminHold(listingId: number | undefined, adminHoldExpirationDate: string | null | undefined, adminHoldNotes: string | null | undefined): Promise;\n\n updateListingIgnoreDuplicate(listingId: number | undefined, ignoreDuplicate: boolean | undefined): Promise;\n\n updateListing(input: ListingDetailsUpdateInput): Promise;\n\n updateListingPrices(listingId: number | undefined, listPrice: number | undefined, netProceedsFloor: number | undefined): Promise;\n\n updateListingsPricingSettings(input: ValueTupleOfLongAndListingDetailsUpdateInput): Promise;\n\n mergeListings(input: MergeListingsInput): Promise;\n\n bulkMergeListings(input: BulkMergeListingsInput): Promise;\n\n getListingMergeSuggestionsByEvent(viagogoEventId: number | undefined, excludeHeldListings: boolean | null | undefined): Promise;\n\n getListingMergeSuggestions(excludeHeldListings: boolean | null | undefined): Promise;\n\n splitListings(input: SplitListingInput): Promise;\n\n updateBarcodesForListing(listingId: number | undefined, barcodes: TicketBarcode[]): Promise;\n\n updateETicketsForListing(listingId: number | undefined, etickets: UserDocument[]): Promise;\n\n updateMobileQRCodesForListing(listingId: number | undefined, mobileQRCodes: UserDocument[]): Promise;\n\n updateExternalIdsForListing(listingId: number | undefined, externalIds: TicketExternalId[]): Promise;\n\n updateTicketUrlsForListing(listingId: number | undefined, ticketUrls: TicketUrl[]): Promise;\n\n updateProofOfPurchaseForListing(listingId: number | undefined, proofDocs: UserDocument[]): Promise;\n\n getPriceHistoryByListingId(input: ValueTupleOfLongAndNullableInteger): Promise;\n\n getCompListingsByEventId(viagogoEventId: number | undefined, listingId: number | null | undefined, currency: string | null | undefined): Promise;\n\n getListingPriceCalculation(viagogoEventId: number | undefined, listingId: number | undefined, input: ListingDetailsPricingUpdates): Promise;\n\n exportListings(input: ValueTupleOfListingQueryAndListingCsvColumnSelectionConfig): Promise;\n\n createSeatSaver(inputs: SeatSaverListingDetailsInput[]): Promise;\n\n deleteSeatSaver(listingId: number | undefined): Promise;\n\n /**\n * Swap listing from one group to another\n */\n batchSwapListingGroup(input: BatchSwapListingGroupInput): Promise<{ [key: string]: Listing[]; }>;\n\n /**\n * Swap listing from one group to another\n */\n reorderListingInGroup(input: ReorderListingInGroupInput): Promise<{ [key: string]: Listing[]; }>;\n\n updateListingBroadcastSection(input: ListingDetailsBroadcastSectionUpdates): Promise;\n\n updateListingTicketSection(input: ListingDetailsTicketSectionUpdates): Promise;\n\n updateListingPricingSection(input: ListingDetailsPricingSectionUpdates): Promise;\n\n updateListingAutoPricingSection(input: ListingDetailsAutoPricingSectionUpdates): Promise;\n\n updateListingAutoPricingSectionV2(input: ListingDetailsAutoPricingSectionUpdatesV2): Promise;\n\n updateListingTagSection(input: ListingDetailsTagsSectionUpdates): Promise;\n\n downloadMergedUserDocumentsPdf(listingId: number | undefined): Promise;\n\n getListingStatusByListingId(inventoryId: number | undefined): Promise;\n}\n\nexport class ListingClient extends PosClientBase implements IListingClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getListingByListingId(inventoryId: number | undefined, current: ListingDetails | undefined, dataToInclude: ListingDetailDataField[] | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Listing/GetListingByListingId?\";\n if (inventoryId === null)\n throw new Error(\"The parameter 'inventoryId' cannot be null.\");\n else if (inventoryId !== undefined)\n url_ += \"inventoryId=\" + encodeURIComponent(\"\" + inventoryId) + \"&\";\n if (dataToInclude !== undefined && dataToInclude !== null)\n dataToInclude && dataToInclude.forEach(item => { url_ += \"dataToInclude=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(current);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetListingByListingId(_response);\n });\n }\n\n protected processGetListingByListingId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ListingDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getListingAvailableQuantitiesByListingIds(inventoryIds: number[]): Promise {\n let url_ = this.baseUrl + \"/api/Listing/GetListingAvailableQuantitiesByListingIds\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(inventoryIds);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetListingAvailableQuantitiesByListingIds(_response);\n });\n }\n\n protected processGetListingAvailableQuantitiesByListingIds(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getListingByMarketplaceListingId(marketplaceListingId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Listing/GetListingByMarketplaceListingId?\";\n if (marketplaceListingId === null)\n throw new Error(\"The parameter 'marketplaceListingId' cannot be null.\");\n else if (marketplaceListingId !== undefined)\n url_ += \"marketplaceListingId=\" + encodeURIComponent(\"\" + marketplaceListingId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetListingByMarketplaceListingId(_response);\n });\n }\n\n protected processGetListingByMarketplaceListingId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Listing[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getListingsForEvents(query: ListingQuery, useReadonlyDB: boolean | undefined, doNotProcessListingGroups: boolean | undefined): Promise<{ [key: string]: Listing[]; }> {\n let url_ = this.baseUrl + \"/api/Listing/GetListingsForEvents?\";\n if (useReadonlyDB === null)\n throw new Error(\"The parameter 'useReadonlyDB' cannot be null.\");\n else if (useReadonlyDB !== undefined)\n url_ += \"useReadonlyDB=\" + encodeURIComponent(\"\" + useReadonlyDB) + \"&\";\n if (doNotProcessListingGroups === null)\n throw new Error(\"The parameter 'doNotProcessListingGroups' cannot be null.\");\n else if (doNotProcessListingGroups !== undefined)\n url_ += \"doNotProcessListingGroups=\" + encodeURIComponent(\"\" + doNotProcessListingGroups) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetListingsForEvents(_response);\n });\n }\n\n protected processGetListingsForEvents(response: Response): Promise<{ [key: string]: Listing[]; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: Listing[]; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: Listing[]; }>(null as any);\n }\n\n getListingsSectionalDataForEvents(input: SectionalListingsForEventsInput, dataToInclude: ListingDetailDataField[] | undefined, processListingGroup: boolean | null | undefined): Promise<{ [key: string]: Listing[]; }> {\n let url_ = this.baseUrl + \"/api/Listing/GetListingsSectionalDataForEvents?\";\n if (dataToInclude === null)\n throw new Error(\"The parameter 'dataToInclude' cannot be null.\");\n else if (dataToInclude !== undefined)\n dataToInclude && dataToInclude.forEach(item => { url_ += \"dataToInclude=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (processListingGroup !== undefined && processListingGroup !== null)\n url_ += \"processListingGroup=\" + encodeURIComponent(\"\" + processListingGroup) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetListingsSectionalDataForEvents(_response);\n });\n }\n\n protected processGetListingsSectionalDataForEvents(response: Response): Promise<{ [key: string]: Listing[]; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: Listing[]; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: Listing[]; }>(null as any);\n }\n\n getListingsCanBeWasted(inventoryId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Listing/GetListingsCanBeWasted?\";\n if (inventoryId === null)\n throw new Error(\"The parameter 'inventoryId' cannot be null.\");\n else if (inventoryId !== undefined)\n url_ += \"inventoryId=\" + encodeURIComponent(\"\" + inventoryId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetListingsCanBeWasted(_response);\n });\n }\n\n protected processGetListingsCanBeWasted(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValueTupleOfBooleanAndIListOfTicket;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getDuplicateListingsForListingId(inventoryId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Listing/GetDuplicateListingsForListingId?\";\n if (inventoryId === null)\n throw new Error(\"The parameter 'inventoryId' cannot be null.\");\n else if (inventoryId !== undefined)\n url_ += \"inventoryId=\" + encodeURIComponent(\"\" + inventoryId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetDuplicateListingsForListingId(_response);\n });\n }\n\n protected processGetDuplicateListingsForListingId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuplicateListingDetails[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getListingEnabledForAutoPricing(posEventIds: string[]): Promise {\n let url_ = this.baseUrl + \"/api/Listing/GetListingEnabledForAutoPricing\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(posEventIds);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetListingEnabledForAutoPricing(_response);\n });\n }\n\n protected processGetListingEnabledForAutoPricing(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateAutoPricingEnabledForEvent(posEventIds: string[], autoPricingState: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Listing/UpdateAutoPricingEnabledForEvent?\";\n if (autoPricingState === null)\n throw new Error(\"The parameter 'autoPricingState' cannot be null.\");\n else if (autoPricingState !== undefined)\n url_ += \"autoPricingState=\" + encodeURIComponent(\"\" + autoPricingState) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(posEventIds);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateAutoPricingEnabledForEvent(_response);\n });\n }\n\n protected processUpdateAutoPricingEnabledForEvent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n createMarketplaceListings(listingId: number | undefined, marketplaces: Marketplace[] | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Listing/CreateMarketplaceListings?\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(marketplaces);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateMarketplaceListings(_response);\n });\n }\n\n protected processCreateMarketplaceListings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n deleteMarketplaceListings(listingId: number | undefined, marketplaces: Marketplace[] | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Listing/DeleteMarketplaceListings?\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(marketplaces);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteMarketplaceListings(_response);\n });\n }\n\n protected processDeleteMarketplaceListings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateListingAdminHold(listingId: number | undefined, adminHoldExpirationDate: string | null | undefined, adminHoldNotes: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Listing/UpdateListingAdminHold?\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n if (adminHoldExpirationDate !== undefined && adminHoldExpirationDate !== null)\n url_ += \"adminHoldExpirationDate=\" + encodeURIComponent(\"\" + adminHoldExpirationDate) + \"&\";\n if (adminHoldNotes !== undefined && adminHoldNotes !== null)\n url_ += \"adminHoldNotes=\" + encodeURIComponent(\"\" + adminHoldNotes) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateListingAdminHold(_response);\n });\n }\n\n protected processUpdateListingAdminHold(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateListingIgnoreDuplicate(listingId: number | undefined, ignoreDuplicate: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Listing/UpdateListingIgnoreDuplicate?\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n if (ignoreDuplicate === null)\n throw new Error(\"The parameter 'ignoreDuplicate' cannot be null.\");\n else if (ignoreDuplicate !== undefined)\n url_ += \"ignoreDuplicate=\" + encodeURIComponent(\"\" + ignoreDuplicate) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateListingIgnoreDuplicate(_response);\n });\n }\n\n protected processUpdateListingIgnoreDuplicate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateListing(input: ListingDetailsUpdateInput): Promise {\n let url_ = this.baseUrl + \"/api/Listing/UpdateListing\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateListing(_response);\n });\n }\n\n protected processUpdateListing(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateListingPrices(listingId: number | undefined, listPrice: number | undefined, netProceedsFloor: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Listing/UpdateListingPrices?\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n if (listPrice === null)\n throw new Error(\"The parameter 'listPrice' cannot be null.\");\n else if (listPrice !== undefined)\n url_ += \"listPrice=\" + encodeURIComponent(\"\" + listPrice) + \"&\";\n if (netProceedsFloor === null)\n throw new Error(\"The parameter 'netProceedsFloor' cannot be null.\");\n else if (netProceedsFloor !== undefined)\n url_ += \"netProceedsFloor=\" + encodeURIComponent(\"\" + netProceedsFloor) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateListingPrices(_response);\n });\n }\n\n protected processUpdateListingPrices(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Listing;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateListingsPricingSettings(input: ValueTupleOfLongAndListingDetailsUpdateInput): Promise {\n let url_ = this.baseUrl + \"/api/Listing/UpdateListingsPricingSettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateListingsPricingSettings(_response);\n });\n }\n\n protected processUpdateListingsPricingSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Listing;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n mergeListings(input: MergeListingsInput): Promise {\n let url_ = this.baseUrl + \"/api/Listing/MergeListings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processMergeListings(_response);\n });\n }\n\n protected processMergeListings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n bulkMergeListings(input: BulkMergeListingsInput): Promise {\n let url_ = this.baseUrl + \"/api/Listing/BulkMergeListings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBulkMergeListings(_response);\n });\n }\n\n protected processBulkMergeListings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getListingMergeSuggestionsByEvent(viagogoEventId: number | undefined, excludeHeldListings: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Listing/GetListingMergeSuggestionsByEvent?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n if (excludeHeldListings !== undefined && excludeHeldListings !== null)\n url_ += \"excludeHeldListings=\" + encodeURIComponent(\"\" + excludeHeldListings) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetListingMergeSuggestionsByEvent(_response);\n });\n }\n\n protected processGetListingMergeSuggestionsByEvent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ListingMergeSuggestion[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getListingMergeSuggestions(excludeHeldListings: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Listing/GetListingMergeSuggestions?\";\n if (excludeHeldListings !== undefined && excludeHeldListings !== null)\n url_ += \"excludeHeldListings=\" + encodeURIComponent(\"\" + excludeHeldListings) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetListingMergeSuggestions(_response);\n });\n }\n\n protected processGetListingMergeSuggestions(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ListingMergeSuggestion[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n splitListings(input: SplitListingInput): Promise {\n let url_ = this.baseUrl + \"/api/Listing/SplitListings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSplitListings(_response);\n });\n }\n\n protected processSplitListings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateBarcodesForListing(listingId: number | undefined, barcodes: TicketBarcode[]): Promise {\n let url_ = this.baseUrl + \"/api/Listing/UpdateBarcodesForListing?\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(barcodes);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateBarcodesForListing(_response);\n });\n }\n\n protected processUpdateBarcodesForListing(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateETicketsForListing(listingId: number | undefined, etickets: UserDocument[]): Promise {\n let url_ = this.baseUrl + \"/api/Listing/UpdateETicketsForListing?\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(etickets);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateETicketsForListing(_response);\n });\n }\n\n protected processUpdateETicketsForListing(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateMobileQRCodesForListing(listingId: number | undefined, mobileQRCodes: UserDocument[]): Promise {\n let url_ = this.baseUrl + \"/api/Listing/UpdateMobileQRCodesForListing?\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(mobileQRCodes);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateMobileQRCodesForListing(_response);\n });\n }\n\n protected processUpdateMobileQRCodesForListing(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateExternalIdsForListing(listingId: number | undefined, externalIds: TicketExternalId[]): Promise {\n let url_ = this.baseUrl + \"/api/Listing/UpdateExternalIdsForListing?\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(externalIds);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateExternalIdsForListing(_response);\n });\n }\n\n protected processUpdateExternalIdsForListing(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateTicketUrlsForListing(listingId: number | undefined, ticketUrls: TicketUrl[]): Promise {\n let url_ = this.baseUrl + \"/api/Listing/UpdateTicketUrlsForListing?\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(ticketUrls);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateTicketUrlsForListing(_response);\n });\n }\n\n protected processUpdateTicketUrlsForListing(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateProofOfPurchaseForListing(listingId: number | undefined, proofDocs: UserDocument[]): Promise {\n let url_ = this.baseUrl + \"/api/Listing/UpdateProofOfPurchaseForListing?\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(proofDocs);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateProofOfPurchaseForListing(_response);\n });\n }\n\n protected processUpdateProofOfPurchaseForListing(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPriceHistoryByListingId(input: ValueTupleOfLongAndNullableInteger): Promise {\n let url_ = this.baseUrl + \"/api/Listing/GetPriceHistoryByListingId\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPriceHistoryByListingId(_response);\n });\n }\n\n protected processGetPriceHistoryByListingId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ListingPriceHistory[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCompListingsByEventId(viagogoEventId: number | undefined, listingId: number | null | undefined, currency: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Listing/GetCompListingsByEventId?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n if (listingId !== undefined && listingId !== null)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n if (currency !== undefined && currency !== null)\n url_ += \"currency=\" + encodeURIComponent(\"\" + currency) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCompListingsByEventId(_response);\n });\n }\n\n protected processGetCompListingsByEventId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CompListing[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getListingPriceCalculation(viagogoEventId: number | undefined, listingId: number | undefined, input: ListingDetailsPricingUpdates): Promise {\n let url_ = this.baseUrl + \"/api/Listing/GetListingPriceCalculation?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetListingPriceCalculation(_response);\n });\n }\n\n protected processGetListingPriceCalculation(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ListingPriceCalculation;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n exportListings(input: ValueTupleOfListingQueryAndListingCsvColumnSelectionConfig): Promise {\n let url_ = this.baseUrl + \"/api/Listing/ExportListings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportListings(_response);\n });\n }\n\n protected processExportListings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n createSeatSaver(inputs: SeatSaverListingDetailsInput[]): Promise {\n let url_ = this.baseUrl + \"/api/Listing/CreateSeatSaver\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(inputs);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateSeatSaver(_response);\n });\n }\n\n protected processCreateSeatSaver(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n deleteSeatSaver(listingId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Listing/DeleteSeatSaver?\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteSeatSaver(_response);\n });\n }\n\n protected processDeleteSeatSaver(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * Swap listing from one group to another\n */\n batchSwapListingGroup(input: BatchSwapListingGroupInput): Promise<{ [key: string]: Listing[]; }> {\n let url_ = this.baseUrl + \"/api/Listing/BatchSwapListingGroup\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processBatchSwapListingGroup(_response);\n });\n }\n\n protected processBatchSwapListingGroup(response: Response): Promise<{ [key: string]: Listing[]; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: Listing[]; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: Listing[]; }>(null as any);\n }\n\n /**\n * Swap listing from one group to another\n */\n reorderListingInGroup(input: ReorderListingInGroupInput): Promise<{ [key: string]: Listing[]; }> {\n let url_ = this.baseUrl + \"/api/Listing/ReorderListingInGroup\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processReorderListingInGroup(_response);\n });\n }\n\n protected processReorderListingInGroup(response: Response): Promise<{ [key: string]: Listing[]; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: Listing[]; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: Listing[]; }>(null as any);\n }\n\n updateListingBroadcastSection(input: ListingDetailsBroadcastSectionUpdates): Promise {\n let url_ = this.baseUrl + \"/api/Listing/UpdateListingBroadcastSection\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateListingBroadcastSection(_response);\n });\n }\n\n protected processUpdateListingBroadcastSection(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateListingTicketSection(input: ListingDetailsTicketSectionUpdates): Promise {\n let url_ = this.baseUrl + \"/api/Listing/UpdateListingTicketSection\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateListingTicketSection(_response);\n });\n }\n\n protected processUpdateListingTicketSection(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateListingPricingSection(input: ListingDetailsPricingSectionUpdates): Promise {\n let url_ = this.baseUrl + \"/api/Listing/UpdateListingPricingSection\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateListingPricingSection(_response);\n });\n }\n\n protected processUpdateListingPricingSection(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateListingAutoPricingSection(input: ListingDetailsAutoPricingSectionUpdates): Promise {\n let url_ = this.baseUrl + \"/api/Listing/UpdateListingAutoPricingSection\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateListingAutoPricingSection(_response);\n });\n }\n\n protected processUpdateListingAutoPricingSection(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateListingAutoPricingSectionV2(input: ListingDetailsAutoPricingSectionUpdatesV2): Promise {\n let url_ = this.baseUrl + \"/api/Listing/UpdateListingAutoPricingSectionV2\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateListingAutoPricingSectionV2(_response);\n });\n }\n\n protected processUpdateListingAutoPricingSectionV2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateListingTagSection(input: ListingDetailsTagsSectionUpdates): Promise {\n let url_ = this.baseUrl + \"/api/Listing/UpdateListingTagSection\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateListingTagSection(_response);\n });\n }\n\n protected processUpdateListingTagSection(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n downloadMergedUserDocumentsPdf(listingId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Listing/DownloadMergedUserDocumentsPdf?\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownloadMergedUserDocumentsPdf(_response);\n });\n }\n\n protected processDownloadMergedUserDocumentsPdf(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getListingStatusByListingId(inventoryId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Listing/GetListingStatusByListingId?\";\n if (inventoryId === null)\n throw new Error(\"The parameter 'inventoryId' cannot be null.\");\n else if (inventoryId !== undefined)\n url_ += \"inventoryId=\" + encodeURIComponent(\"\" + inventoryId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetListingStatusByListingId(_response);\n });\n }\n\n protected processGetListingStatusByListingId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ListingStatusInfo;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IListingExperimentClient {\n\n getListingExperimentsByViagogoEventId(viagogoEventId: number | undefined): Promise;\n\n createListingExperiment(listingExperiment: ListingExperiment): Promise;\n\n updateListingExperiment(listingExperiment: ListingExperiment): Promise;\n\n restartListingExperiment(listingExperiment: ListingExperiment): Promise;\n\n stopListingExperiment(viagogoEventId: number | undefined, listingGroupId: string | null | undefined): Promise;\n}\n\nexport class ListingExperimentClient extends PosClientBase implements IListingExperimentClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getListingExperimentsByViagogoEventId(viagogoEventId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ListingExperiment/GetListingExperimentsByViagogoEventId?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetListingExperimentsByViagogoEventId(_response);\n });\n }\n\n protected processGetListingExperimentsByViagogoEventId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ListingExperiment[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n createListingExperiment(listingExperiment: ListingExperiment): Promise {\n let url_ = this.baseUrl + \"/api/ListingExperiment/CreateListingExperiment\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(listingExperiment);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateListingExperiment(_response);\n });\n }\n\n protected processCreateListingExperiment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateListingExperiment(listingExperiment: ListingExperiment): Promise {\n let url_ = this.baseUrl + \"/api/ListingExperiment/UpdateListingExperiment\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(listingExperiment);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateListingExperiment(_response);\n });\n }\n\n protected processUpdateListingExperiment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n restartListingExperiment(listingExperiment: ListingExperiment): Promise {\n let url_ = this.baseUrl + \"/api/ListingExperiment/RestartListingExperiment\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(listingExperiment);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRestartListingExperiment(_response);\n });\n }\n\n protected processRestartListingExperiment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n stopListingExperiment(viagogoEventId: number | undefined, listingGroupId: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ListingExperiment/StopListingExperiment?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n if (listingGroupId !== undefined && listingGroupId !== null)\n url_ += \"listingGroupId=\" + encodeURIComponent(\"\" + listingGroupId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processStopListingExperiment(_response);\n });\n }\n\n protected processStopListingExperiment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IListingGroupClient {\n\n ungroupListings(listingGroupId: string | undefined): Promise<{ [key: string]: Listing[]; }>;\n\n setListingActiveInGroup(listingGroupId: string | undefined, listingId: number | undefined, isActive: boolean | undefined): Promise;\n\n createListingGroup(input: MergeListingGroupInput): Promise<{ [key: string]: Listing[]; }>;\n\n updateListingGroup(listingGroupId: string | undefined, input: MergeListingGroupInput): Promise<{ [key: string]: Listing[]; }>;\n\n getEmptyListingGroup(): Promise;\n\n /**\n * Auto comp listings preview\n */\n autoCompSettingsPreview(input: AutoCompSettingsPreviewInput): Promise;\n\n /**\n * Auto comp listings preview\n */\n autoGroupListingsPreview(input: AutoGroupListingsPreviewInput): Promise;\n\n /**\n * Auto comp listings preview\n */\n autoGroupListingsPreviewV2(input: AutoGroupListingsPreviewInput): Promise;\n\n /**\n * Auto comp listings preview\n */\n addListingsToListingGroup(input: AddListingsToListingGroupInput): Promise;\n\n getListingGroupCompData(viagogoEventId: number | undefined, listingGroupId: string | undefined): Promise;\n}\n\nexport class ListingGroupClient extends PosClientBase implements IListingGroupClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n ungroupListings(listingGroupId: string | undefined): Promise<{ [key: string]: Listing[]; }> {\n let url_ = this.baseUrl + \"/api/ListingGroup/UngroupListings?\";\n if (listingGroupId === null)\n throw new Error(\"The parameter 'listingGroupId' cannot be null.\");\n else if (listingGroupId !== undefined)\n url_ += \"listingGroupId=\" + encodeURIComponent(\"\" + listingGroupId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUngroupListings(_response);\n });\n }\n\n protected processUngroupListings(response: Response): Promise<{ [key: string]: Listing[]; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: Listing[]; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: Listing[]; }>(null as any);\n }\n\n setListingActiveInGroup(listingGroupId: string | undefined, listingId: number | undefined, isActive: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ListingGroup/SetListingActiveInGroup?\";\n if (listingGroupId === null)\n throw new Error(\"The parameter 'listingGroupId' cannot be null.\");\n else if (listingGroupId !== undefined)\n url_ += \"listingGroupId=\" + encodeURIComponent(\"\" + listingGroupId) + \"&\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n if (isActive === null)\n throw new Error(\"The parameter 'isActive' cannot be null.\");\n else if (isActive !== undefined)\n url_ += \"isActive=\" + encodeURIComponent(\"\" + isActive) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSetListingActiveInGroup(_response);\n });\n }\n\n protected processSetListingActiveInGroup(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n createListingGroup(input: MergeListingGroupInput): Promise<{ [key: string]: Listing[]; }> {\n let url_ = this.baseUrl + \"/api/ListingGroup/CreateListingGroup\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateListingGroup(_response);\n });\n }\n\n protected processCreateListingGroup(response: Response): Promise<{ [key: string]: Listing[]; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: Listing[]; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: Listing[]; }>(null as any);\n }\n\n updateListingGroup(listingGroupId: string | undefined, input: MergeListingGroupInput): Promise<{ [key: string]: Listing[]; }> {\n let url_ = this.baseUrl + \"/api/ListingGroup/UpdateListingGroup?\";\n if (listingGroupId === null)\n throw new Error(\"The parameter 'listingGroupId' cannot be null.\");\n else if (listingGroupId !== undefined)\n url_ += \"listingGroupId=\" + encodeURIComponent(\"\" + listingGroupId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateListingGroup(_response);\n });\n }\n\n protected processUpdateListingGroup(response: Response): Promise<{ [key: string]: Listing[]; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: Listing[]; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: Listing[]; }>(null as any);\n }\n\n getEmptyListingGroup(): Promise {\n let url_ = this.baseUrl + \"/api/ListingGroup\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEmptyListingGroup(_response);\n });\n }\n\n protected processGetEmptyListingGroup(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ListingGroup;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * Auto comp listings preview\n */\n autoCompSettingsPreview(input: AutoCompSettingsPreviewInput): Promise {\n let url_ = this.baseUrl + \"/api/ListingGroup/AutoCompSettingsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processAutoCompSettingsPreview(_response);\n });\n }\n\n protected processAutoCompSettingsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResultWithDataOfAutoCompListingsPreview;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * Auto comp listings preview\n */\n autoGroupListingsPreview(input: AutoGroupListingsPreviewInput): Promise {\n let url_ = this.baseUrl + \"/api/ListingGroup/AutoGroupListingsPreview\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processAutoGroupListingsPreview(_response);\n });\n }\n\n protected processAutoGroupListingsPreview(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResultWithDataOfAutoGroupListingsPreview;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * Auto comp listings preview\n */\n autoGroupListingsPreviewV2(input: AutoGroupListingsPreviewInput): Promise {\n let url_ = this.baseUrl + \"/api/ListingGroup/AutoGroupListingsPreviewV2\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processAutoGroupListingsPreviewV2(_response);\n });\n }\n\n protected processAutoGroupListingsPreviewV2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResultWithDataOfIEnumerableOfMergeListingGroupInput;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * Auto comp listings preview\n */\n addListingsToListingGroup(input: AddListingsToListingGroupInput): Promise {\n let url_ = this.baseUrl + \"/api/ListingGroup/AddListingsToListingGroup\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processAddListingsToListingGroup(_response);\n });\n }\n\n protected processAddListingsToListingGroup(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getListingGroupCompData(viagogoEventId: number | undefined, listingGroupId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ListingGroup/GetListingGroupCompData?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n if (listingGroupId === null)\n throw new Error(\"The parameter 'listingGroupId' cannot be null.\");\n else if (listingGroupId !== undefined)\n url_ += \"listingGroupId=\" + encodeURIComponent(\"\" + listingGroupId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetListingGroupCompData(_response);\n });\n }\n\n protected processGetListingGroupCompData(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ListingGroupCompData;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IListingNoteClient {\n\n getAccessibleListingNotes(): Promise;\n}\n\nexport class ListingNoteClient extends PosClientBase implements IListingNoteClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getAccessibleListingNotes(): Promise {\n let url_ = this.baseUrl + \"/api/ListingNote/GetAccessibleListingNotes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAccessibleListingNotes(_response);\n });\n }\n\n protected processGetAccessibleListingNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ListingNote[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface ILoginClient {\n\n getLoginContext(returnUrl: string | null | undefined): Promise;\n\n getLoginContextAfterAuthorization(request: LoginRequest): Promise;\n\n setActiveAccount(accountId: string | undefined, impersonatedUserId: string | null | undefined): Promise;\n\n logout(): Promise;\n}\n\nexport class LoginClient extends PosClientBase implements ILoginClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getLoginContext(returnUrl: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Login/GetLoginContext?\";\n if (returnUrl !== undefined && returnUrl !== null)\n url_ += \"returnUrl=\" + encodeURIComponent(\"\" + returnUrl) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetLoginContext(_response);\n });\n }\n\n protected processGetLoginContext(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LoginContext;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getLoginContextAfterAuthorization(request: LoginRequest): Promise {\n let url_ = this.baseUrl + \"/api/Login/GetLoginContextAfterAuthorization\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(request);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetLoginContextAfterAuthorization(_response);\n });\n }\n\n protected processGetLoginContextAfterAuthorization(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LoginContext;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n setActiveAccount(accountId: string | undefined, impersonatedUserId: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Login/SetActiveAccount?\";\n if (accountId === null)\n throw new Error(\"The parameter 'accountId' cannot be null.\");\n else if (accountId !== undefined)\n url_ += \"accountId=\" + encodeURIComponent(\"\" + accountId) + \"&\";\n if (impersonatedUserId !== undefined && impersonatedUserId !== null)\n url_ += \"impersonatedUserId=\" + encodeURIComponent(\"\" + impersonatedUserId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSetActiveAccount(_response);\n });\n }\n\n protected processSetActiveAccount(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LoginContext;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n logout(): Promise {\n let url_ = this.baseUrl + \"/api/Login/Logout\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processLogout(_response);\n });\n }\n\n protected processLogout(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as LoginContext;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IMarketplacePaymentClient {\n\n getMarketplacePayments(query: MarketplacePaymentQuery): Promise;\n\n getMarketplacePaymentById(marketplacePaymentId: number): Promise;\n\n getMonthsContainerMarketplacePayments(query: MarketplacePaymentQuery): Promise;\n\n getPaymentLinesWithSales(marketplacePaymentId: number | undefined): Promise;\n\n convertMarketplacePaymentAmount(marketplacePaymentId: number | undefined, convertedPaymentAmount: number | null | undefined, convertedPaymentCurrencyCode: string | null | undefined): Promise;\n\n addMarketplacePaymentLineToSaleLineItems(marketplacePaymentLineId: number | undefined, saleLineItems: SaleLineItem[]): Promise;\n\n removeMarketplacePaymentLineFromSaleLineItems(marketplacePaymentLineId: number | undefined): Promise;\n\n linkMarketplacePaymentLine(saleId: number | undefined, marketplacePaymentLineId: number | undefined): Promise;\n\n unlinkMarketplacePaymentLine(marketplacePaymentLineId: number | undefined): Promise;\n}\n\nexport class MarketplacePaymentClient extends PosClientBase implements IMarketplacePaymentClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getMarketplacePayments(query: MarketplacePaymentQuery): Promise {\n let url_ = this.baseUrl + \"/api/MarketplacePayment/GetMarketplacePayments\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetMarketplacePayments(_response);\n });\n }\n\n protected processGetMarketplacePayments(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MarketplaceSalePayment[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getMarketplacePaymentById(marketplacePaymentId: number): Promise {\n let url_ = this.baseUrl + \"/api/MarketplacePayment/GetMarketplacePaymentById\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(marketplacePaymentId);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetMarketplacePaymentById(_response);\n });\n }\n\n protected processGetMarketplacePaymentById(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MarketplaceSalePayment;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getMonthsContainerMarketplacePayments(query: MarketplacePaymentQuery): Promise {\n let url_ = this.baseUrl + \"/api/MarketplacePayment/GetMonthsContainerMarketplacePayments\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetMonthsContainerMarketplacePayments(_response);\n });\n }\n\n protected processGetMonthsContainerMarketplacePayments(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MonthContainingMarketplacePaymentsResult[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPaymentLinesWithSales(marketplacePaymentId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/MarketplacePayment/GetPaymentLinesWithSales?\";\n if (marketplacePaymentId === null)\n throw new Error(\"The parameter 'marketplacePaymentId' cannot be null.\");\n else if (marketplacePaymentId !== undefined)\n url_ += \"marketplacePaymentId=\" + encodeURIComponent(\"\" + marketplacePaymentId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPaymentLinesWithSales(_response);\n });\n }\n\n protected processGetPaymentLinesWithSales(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MarketplacePaymentLineWithSaleInfo[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n convertMarketplacePaymentAmount(marketplacePaymentId: number | undefined, convertedPaymentAmount: number | null | undefined, convertedPaymentCurrencyCode: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/MarketplacePayment/ConvertMarketplacePaymentAmount?\";\n if (marketplacePaymentId === null)\n throw new Error(\"The parameter 'marketplacePaymentId' cannot be null.\");\n else if (marketplacePaymentId !== undefined)\n url_ += \"marketplacePaymentId=\" + encodeURIComponent(\"\" + marketplacePaymentId) + \"&\";\n if (convertedPaymentAmount !== undefined && convertedPaymentAmount !== null)\n url_ += \"convertedPaymentAmount=\" + encodeURIComponent(\"\" + convertedPaymentAmount) + \"&\";\n if (convertedPaymentCurrencyCode !== undefined && convertedPaymentCurrencyCode !== null)\n url_ += \"convertedPaymentCurrencyCode=\" + encodeURIComponent(\"\" + convertedPaymentCurrencyCode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processConvertMarketplacePaymentAmount(_response);\n });\n }\n\n protected processConvertMarketplacePaymentAmount(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n addMarketplacePaymentLineToSaleLineItems(marketplacePaymentLineId: number | undefined, saleLineItems: SaleLineItem[]): Promise {\n let url_ = this.baseUrl + \"/api/MarketplacePayment/AddMarketplacePaymentLineToSaleLineItems?\";\n if (marketplacePaymentLineId === null)\n throw new Error(\"The parameter 'marketplacePaymentLineId' cannot be null.\");\n else if (marketplacePaymentLineId !== undefined)\n url_ += \"marketplacePaymentLineId=\" + encodeURIComponent(\"\" + marketplacePaymentLineId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(saleLineItems);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processAddMarketplacePaymentLineToSaleLineItems(_response);\n });\n }\n\n protected processAddMarketplacePaymentLineToSaleLineItems(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n removeMarketplacePaymentLineFromSaleLineItems(marketplacePaymentLineId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/MarketplacePayment/RemoveMarketplacePaymentLineFromSaleLineItems?\";\n if (marketplacePaymentLineId === null)\n throw new Error(\"The parameter 'marketplacePaymentLineId' cannot be null.\");\n else if (marketplacePaymentLineId !== undefined)\n url_ += \"marketplacePaymentLineId=\" + encodeURIComponent(\"\" + marketplacePaymentLineId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRemoveMarketplacePaymentLineFromSaleLineItems(_response);\n });\n }\n\n protected processRemoveMarketplacePaymentLineFromSaleLineItems(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n linkMarketplacePaymentLine(saleId: number | undefined, marketplacePaymentLineId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/MarketplacePayment/LinkMarketplacePaymentLine?\";\n if (saleId === null)\n throw new Error(\"The parameter 'saleId' cannot be null.\");\n else if (saleId !== undefined)\n url_ += \"saleId=\" + encodeURIComponent(\"\" + saleId) + \"&\";\n if (marketplacePaymentLineId === null)\n throw new Error(\"The parameter 'marketplacePaymentLineId' cannot be null.\");\n else if (marketplacePaymentLineId !== undefined)\n url_ += \"marketplacePaymentLineId=\" + encodeURIComponent(\"\" + marketplacePaymentLineId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processLinkMarketplacePaymentLine(_response);\n });\n }\n\n protected processLinkMarketplacePaymentLine(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n unlinkMarketplacePaymentLine(marketplacePaymentLineId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/MarketplacePayment/UnlinkMarketplacePaymentLine?\";\n if (marketplacePaymentLineId === null)\n throw new Error(\"The parameter 'marketplacePaymentLineId' cannot be null.\");\n else if (marketplacePaymentLineId !== undefined)\n url_ += \"marketplacePaymentLineId=\" + encodeURIComponent(\"\" + marketplacePaymentLineId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUnlinkMarketplacePaymentLine(_response);\n });\n }\n\n protected processUnlinkMarketplacePaymentLine(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IMoneyClient {\n\n getConvertedMoneyAmount(valuesToConvert: { [key: string]: number; }, toCurrencyCode: string | undefined): Promise;\n\n getAvailableCurrencies(): Promise;\n}\n\nexport class MoneyClient extends PosClientBase implements IMoneyClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getConvertedMoneyAmount(valuesToConvert: { [key: string]: number; }, toCurrencyCode: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Money/GetConvertedMoneyAmount?\";\n if (toCurrencyCode === null)\n throw new Error(\"The parameter 'toCurrencyCode' cannot be null.\");\n else if (toCurrencyCode !== undefined)\n url_ += \"toCurrencyCode=\" + encodeURIComponent(\"\" + toCurrencyCode) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(valuesToConvert);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetConvertedMoneyAmount(_response);\n });\n }\n\n protected processGetConvertedMoneyAmount(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAvailableCurrencies(): Promise {\n let url_ = this.baseUrl + \"/api/Money/GetAvailableCurrencies\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAvailableCurrencies(_response);\n });\n }\n\n protected processGetAvailableCurrencies(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UiCurrency[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface INotificationClient {\n\n getActiveNotifications(): Promise;\n\n getNotification(notificationId: number | undefined): Promise;\n\n dismissNotification(notificationId: number | undefined): Promise;\n}\n\nexport class NotificationClient extends PosClientBase implements INotificationClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getActiveNotifications(): Promise {\n let url_ = this.baseUrl + \"/api/Notification/GetActiveNotifications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetActiveNotifications(_response);\n });\n }\n\n protected processGetActiveNotifications(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Notification[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getNotification(notificationId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Notification/GetNotification?\";\n if (notificationId === null)\n throw new Error(\"The parameter 'notificationId' cannot be null.\");\n else if (notificationId !== undefined)\n url_ += \"notificationId=\" + encodeURIComponent(\"\" + notificationId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetNotification(_response);\n });\n }\n\n protected processGetNotification(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Notification;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n dismissNotification(notificationId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Notification/DismissNotification?\";\n if (notificationId === null)\n throw new Error(\"The parameter 'notificationId' cannot be null.\");\n else if (notificationId !== undefined)\n url_ += \"notificationId=\" + encodeURIComponent(\"\" + notificationId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDismissNotification(_response);\n });\n }\n\n protected processDismissNotification(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IPricingClient {\n\n mergeListingGroupPricingSettings(listingGroupId: string | undefined, input: AutoPricingInputs): Promise;\n\n updateListingGroupPricingSettings(listingGroupId: string | undefined, input: ListingGroupAutoPriceSettings): Promise;\n\n getListingGroupAutoPricingSettings(listingGroupId: string | undefined, eventId: number | undefined): Promise;\n\n mergeEventPricingSettings(eventId: number | undefined, input: AutoPricingInputs): Promise;\n\n getEventAutoPricingSettings(eventId: number | undefined): Promise;\n\n getAccountAutoPricingSettings(): Promise;\n\n getEventSeatMapScoreOverrides(eventId: number | undefined, venueConfigId: number | undefined): Promise;\n\n getEventSeatMapScoreOverridesForSellerAccount(): Promise;\n\n getEventSellThroughRates(eventId: number | undefined): Promise;\n\n getListingGroupSellThroughRates(listingGroupId: string | undefined): Promise;\n\n getEventSellThroughRateTargets(viagogoEventId: number | null | undefined, eventMappingId: string | null | undefined): Promise;\n\n setEventSellThroughRateTargets(viagogoEventId: number | null | undefined, eventMappingId: string | null | undefined, sellThroughRateTargets: SellThroughRateHistory[]): Promise;\n\n getAutoPricingStrategies(): Promise;\n\n upsertAutoPricingStrategy(input: AutoPricingSettingsCollection): Promise;\n\n deleteAutoPricingStrategy(autoPricingSettingsCollectionId: number | undefined): Promise;\n\n setEventSeatMapScoreOverride(eventId: number | undefined, eventConfigScoreOverrideId: number | null | undefined, scoreModel: ScoreModel | null | undefined): Promise;\n\n upsertEventSeatMapScoreOverride(input: EventConfigScoreOverride): Promise;\n\n deleteEventSeatMapScoreOverride(eventConfigScoreOverrideId: number | undefined): Promise;\n\n downloadSeatScoreFile(eventId: number | undefined): Promise;\n\n uploadSeatScoreFile(eventId: number | undefined, venueConfigId: number | undefined, eventConfigScoreOverrideId: number | null | undefined, name: string | null | undefined, file: FileParameter | null | undefined): Promise;\n\n resetListingAutoPricingSettingsInGroup(listingGroupId: string | undefined): Promise;\n\n upsertAutoCompSettings(request: UpsertAutoCompSettingsInput): Promise;\n\n getAutoCompSettings(viagogoEventId: number | undefined): Promise;\n\n getListingAutoPricingSettings(listingId: number | undefined, viagogoEventId: number | undefined): Promise;\n\n getVenueMapZoneConfigInfo(viagogoEventId: number | undefined, configId: number | undefined): Promise;\n\n getPricingConfigFromEventIds(eventIds: number[]): Promise;\n\n setVenueZoneSelectedConfigType(viagogoEventId: number | undefined, venueZoneOverrideId: number | null | undefined, venueZoneConfigType: VenueZoneConfigType | null | undefined, setMapAsDefault: boolean | null | undefined): Promise;\n\n getVenueMapZoneInfoOverrides(viagogoEventId: number | undefined, configId: number | undefined): Promise<{ [key: string]: VenueZoneConfigOverride; }>;\n\n getActiveVenueZoneMapSectionGroups(viagogoEventId: number | undefined): Promise<{ [key: string]: SectionSectionGroup; }>;\n\n upsertVenueZoneSectionGroupOverrides(request: UpsertVenueZoneSectionGroupOverridesInput): Promise;\n\n getEventMapConfigMetadata(viagogoEventId: number | undefined): Promise;\n}\n\nexport class PricingClient extends PosClientBase implements IPricingClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n mergeListingGroupPricingSettings(listingGroupId: string | undefined, input: AutoPricingInputs): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/MergeListingGroupPricingSettings?\";\n if (listingGroupId === null)\n throw new Error(\"The parameter 'listingGroupId' cannot be null.\");\n else if (listingGroupId !== undefined)\n url_ += \"listingGroupId=\" + encodeURIComponent(\"\" + listingGroupId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processMergeListingGroupPricingSettings(_response);\n });\n }\n\n protected processMergeListingGroupPricingSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateListingGroupPricingSettings(listingGroupId: string | undefined, input: ListingGroupAutoPriceSettings): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/UpdateListingGroupPricingSettings?\";\n if (listingGroupId === null)\n throw new Error(\"The parameter 'listingGroupId' cannot be null.\");\n else if (listingGroupId !== undefined)\n url_ += \"listingGroupId=\" + encodeURIComponent(\"\" + listingGroupId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateListingGroupPricingSettings(_response);\n });\n }\n\n protected processUpdateListingGroupPricingSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getListingGroupAutoPricingSettings(listingGroupId: string | undefined, eventId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/GetListingGroupAutoPricingSettings?\";\n if (listingGroupId === null)\n throw new Error(\"The parameter 'listingGroupId' cannot be null.\");\n else if (listingGroupId !== undefined)\n url_ += \"listingGroupId=\" + encodeURIComponent(\"\" + listingGroupId) + \"&\";\n if (eventId === null)\n throw new Error(\"The parameter 'eventId' cannot be null.\");\n else if (eventId !== undefined)\n url_ += \"eventId=\" + encodeURIComponent(\"\" + eventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetListingGroupAutoPricingSettings(_response);\n });\n }\n\n protected processGetListingGroupAutoPricingSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AutoPricingInputs;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n mergeEventPricingSettings(eventId: number | undefined, input: AutoPricingInputs): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/MergeEventPricingSettings?\";\n if (eventId === null)\n throw new Error(\"The parameter 'eventId' cannot be null.\");\n else if (eventId !== undefined)\n url_ += \"eventId=\" + encodeURIComponent(\"\" + eventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processMergeEventPricingSettings(_response);\n });\n }\n\n protected processMergeEventPricingSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventAutoPricingSettings(eventId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/GetEventAutoPricingSettings?\";\n if (eventId === null)\n throw new Error(\"The parameter 'eventId' cannot be null.\");\n else if (eventId !== undefined)\n url_ += \"eventId=\" + encodeURIComponent(\"\" + eventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventAutoPricingSettings(_response);\n });\n }\n\n protected processGetEventAutoPricingSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AutoPricingInputs;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAccountAutoPricingSettings(): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/GetAccountAutoPricingSettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAccountAutoPricingSettings(_response);\n });\n }\n\n protected processGetAccountAutoPricingSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AutoPricingInputs;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventSeatMapScoreOverrides(eventId: number | undefined, venueConfigId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/GetEventSeatMapScoreOverrides?\";\n if (eventId === null)\n throw new Error(\"The parameter 'eventId' cannot be null.\");\n else if (eventId !== undefined)\n url_ += \"eventId=\" + encodeURIComponent(\"\" + eventId) + \"&\";\n if (venueConfigId === null)\n throw new Error(\"The parameter 'venueConfigId' cannot be null.\");\n else if (venueConfigId !== undefined)\n url_ += \"venueConfigId=\" + encodeURIComponent(\"\" + venueConfigId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventSeatMapScoreOverrides(_response);\n });\n }\n\n protected processGetEventSeatMapScoreOverrides(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as EventConfigScoreOverride[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventSeatMapScoreOverridesForSellerAccount(): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/GetEventSeatMapScoreOverridesForSellerAccount\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventSeatMapScoreOverridesForSellerAccount(_response);\n });\n }\n\n protected processGetEventSeatMapScoreOverridesForSellerAccount(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SellerAccountEventConfigScoreOverrides[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventSellThroughRates(eventId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/GetEventSellThroughRates?\";\n if (eventId === null)\n throw new Error(\"The parameter 'eventId' cannot be null.\");\n else if (eventId !== undefined)\n url_ += \"eventId=\" + encodeURIComponent(\"\" + eventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventSellThroughRates(_response);\n });\n }\n\n protected processGetEventSellThroughRates(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SellThroughRateHistory[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getListingGroupSellThroughRates(listingGroupId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/GetListingGroupSellThroughRates?\";\n if (listingGroupId === null)\n throw new Error(\"The parameter 'listingGroupId' cannot be null.\");\n else if (listingGroupId !== undefined)\n url_ += \"listingGroupId=\" + encodeURIComponent(\"\" + listingGroupId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetListingGroupSellThroughRates(_response);\n });\n }\n\n protected processGetListingGroupSellThroughRates(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SellThroughRateHistory[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventSellThroughRateTargets(viagogoEventId: number | null | undefined, eventMappingId: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/GetEventSellThroughRateTargets?\";\n if (viagogoEventId !== undefined && viagogoEventId !== null)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n if (eventMappingId !== undefined && eventMappingId !== null)\n url_ += \"eventMappingId=\" + encodeURIComponent(\"\" + eventMappingId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventSellThroughRateTargets(_response);\n });\n }\n\n protected processGetEventSellThroughRateTargets(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SellThroughRateHistory[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n setEventSellThroughRateTargets(viagogoEventId: number | null | undefined, eventMappingId: string | null | undefined, sellThroughRateTargets: SellThroughRateHistory[]): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/SetEventSellThroughRateTargets?\";\n if (viagogoEventId !== undefined && viagogoEventId !== null)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n if (eventMappingId !== undefined && eventMappingId !== null)\n url_ += \"eventMappingId=\" + encodeURIComponent(\"\" + eventMappingId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(sellThroughRateTargets);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSetEventSellThroughRateTargets(_response);\n });\n }\n\n protected processSetEventSellThroughRateTargets(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAutoPricingStrategies(): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/GetAutoPricingStrategies\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAutoPricingStrategies(_response);\n });\n }\n\n protected processGetAutoPricingStrategies(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AutoPricingSettingsCollection[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n upsertAutoPricingStrategy(input: AutoPricingSettingsCollection): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/UpsertAutoPricingStrategy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpsertAutoPricingStrategy(_response);\n });\n }\n\n protected processUpsertAutoPricingStrategy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n deleteAutoPricingStrategy(autoPricingSettingsCollectionId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/DeleteAutoPricingStrategy?\";\n if (autoPricingSettingsCollectionId === null)\n throw new Error(\"The parameter 'autoPricingSettingsCollectionId' cannot be null.\");\n else if (autoPricingSettingsCollectionId !== undefined)\n url_ += \"autoPricingSettingsCollectionId=\" + encodeURIComponent(\"\" + autoPricingSettingsCollectionId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteAutoPricingStrategy(_response);\n });\n }\n\n protected processDeleteAutoPricingStrategy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n setEventSeatMapScoreOverride(eventId: number | undefined, eventConfigScoreOverrideId: number | null | undefined, scoreModel: ScoreModel | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/SetEventSeatMapScoreOverride?\";\n if (eventId === null)\n throw new Error(\"The parameter 'eventId' cannot be null.\");\n else if (eventId !== undefined)\n url_ += \"eventId=\" + encodeURIComponent(\"\" + eventId) + \"&\";\n if (eventConfigScoreOverrideId !== undefined && eventConfigScoreOverrideId !== null)\n url_ += \"eventConfigScoreOverrideId=\" + encodeURIComponent(\"\" + eventConfigScoreOverrideId) + \"&\";\n if (scoreModel !== undefined && scoreModel !== null)\n url_ += \"scoreModel=\" + encodeURIComponent(\"\" + scoreModel) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSetEventSeatMapScoreOverride(_response);\n });\n }\n\n protected processSetEventSeatMapScoreOverride(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n upsertEventSeatMapScoreOverride(input: EventConfigScoreOverride): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/UpsertEventSeatMapScoreOverride\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpsertEventSeatMapScoreOverride(_response);\n });\n }\n\n protected processUpsertEventSeatMapScoreOverride(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n deleteEventSeatMapScoreOverride(eventConfigScoreOverrideId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/DeleteEventSeatMapScoreOverride?\";\n if (eventConfigScoreOverrideId === null)\n throw new Error(\"The parameter 'eventConfigScoreOverrideId' cannot be null.\");\n else if (eventConfigScoreOverrideId !== undefined)\n url_ += \"eventConfigScoreOverrideId=\" + encodeURIComponent(\"\" + eventConfigScoreOverrideId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteEventSeatMapScoreOverride(_response);\n });\n }\n\n protected processDeleteEventSeatMapScoreOverride(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n downloadSeatScoreFile(eventId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/DownloadSeatScoreFile?\";\n if (eventId === null)\n throw new Error(\"The parameter 'eventId' cannot be null.\");\n else if (eventId !== undefined)\n url_ += \"eventId=\" + encodeURIComponent(\"\" + eventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownloadSeatScoreFile(_response);\n });\n }\n\n protected processDownloadSeatScoreFile(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n uploadSeatScoreFile(eventId: number | undefined, venueConfigId: number | undefined, eventConfigScoreOverrideId: number | null | undefined, name: string | null | undefined, file: FileParameter | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/UploadSeatScoreFile\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (eventId === null || eventId === undefined)\n throw new Error(\"The parameter 'eventId' cannot be null.\");\n else\n content_.append(\"EventId\", eventId.toString());\n if (venueConfigId === null || venueConfigId === undefined)\n throw new Error(\"The parameter 'venueConfigId' cannot be null.\");\n else\n content_.append(\"VenueConfigId\", venueConfigId.toString());\n if (eventConfigScoreOverrideId !== null && eventConfigScoreOverrideId !== undefined)\n content_.append(\"EventConfigScoreOverrideId\", eventConfigScoreOverrideId.toString());\n if (name !== null && name !== undefined)\n content_.append(\"Name\", name.toString());\n if (file !== null && file !== undefined)\n content_.append(\"File\", file.data, file.fileName ? file.fileName : \"File\");\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUploadSeatScoreFile(_response);\n });\n }\n\n protected processUploadSeatScoreFile(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as EventConfigScoreOverride;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n resetListingAutoPricingSettingsInGroup(listingGroupId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/ResetListingAutoPricingSettingsInGroup?\";\n if (listingGroupId === null)\n throw new Error(\"The parameter 'listingGroupId' cannot be null.\");\n else if (listingGroupId !== undefined)\n url_ += \"listingGroupId=\" + encodeURIComponent(\"\" + listingGroupId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processResetListingAutoPricingSettingsInGroup(_response);\n });\n }\n\n protected processResetListingAutoPricingSettingsInGroup(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n upsertAutoCompSettings(request: UpsertAutoCompSettingsInput): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/UpsertAutoCompSettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(request);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpsertAutoCompSettings(_response);\n });\n }\n\n protected processUpsertAutoCompSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAutoCompSettings(viagogoEventId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/GetAutoCompSettings?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAutoCompSettings(_response);\n });\n }\n\n protected processGetAutoCompSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AutoCompSettingsResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getListingAutoPricingSettings(listingId: number | undefined, viagogoEventId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/GetListingAutoPricingSettings?\";\n if (listingId === null)\n throw new Error(\"The parameter 'listingId' cannot be null.\");\n else if (listingId !== undefined)\n url_ += \"listingId=\" + encodeURIComponent(\"\" + listingId) + \"&\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetListingAutoPricingSettings(_response);\n });\n }\n\n protected processGetListingAutoPricingSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ListingDetailsAutoPricingSectionUpdates;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getVenueMapZoneConfigInfo(viagogoEventId: number | undefined, configId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/GetVenueMapZoneConfigInfo/GetVenueMapZoneConfigInfo?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n if (configId === null)\n throw new Error(\"The parameter 'configId' cannot be null.\");\n else if (configId !== undefined)\n url_ += \"configId=\" + encodeURIComponent(\"\" + configId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetVenueMapZoneConfigInfo(_response);\n });\n }\n\n protected processGetVenueMapZoneConfigInfo(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VenueMapZoneConfigInfo;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPricingConfigFromEventIds(eventIds: number[]): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/GetPricingConfigFromEventIds\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(eventIds);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPricingConfigFromEventIds(_response);\n });\n }\n\n protected processGetPricingConfigFromEventIds(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as EventsPricingConfig;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n setVenueZoneSelectedConfigType(viagogoEventId: number | undefined, venueZoneOverrideId: number | null | undefined, venueZoneConfigType: VenueZoneConfigType | null | undefined, setMapAsDefault: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/SetVenueZoneSelectedConfigType?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n if (venueZoneOverrideId !== undefined && venueZoneOverrideId !== null)\n url_ += \"venueZoneOverrideId=\" + encodeURIComponent(\"\" + venueZoneOverrideId) + \"&\";\n if (venueZoneConfigType !== undefined && venueZoneConfigType !== null)\n url_ += \"venueZoneConfigType=\" + encodeURIComponent(\"\" + venueZoneConfigType) + \"&\";\n if (setMapAsDefault !== undefined && setMapAsDefault !== null)\n url_ += \"setMapAsDefault=\" + encodeURIComponent(\"\" + setMapAsDefault) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSetVenueZoneSelectedConfigType(_response);\n });\n }\n\n protected processSetVenueZoneSelectedConfigType(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getVenueMapZoneInfoOverrides(viagogoEventId: number | undefined, configId: number | undefined): Promise<{ [key: string]: VenueZoneConfigOverride; }> {\n let url_ = this.baseUrl + \"/api/Pricing/GetVenueMapZoneInfoOverrides?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n if (configId === null)\n throw new Error(\"The parameter 'configId' cannot be null.\");\n else if (configId !== undefined)\n url_ += \"configId=\" + encodeURIComponent(\"\" + configId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetVenueMapZoneInfoOverrides(_response);\n });\n }\n\n protected processGetVenueMapZoneInfoOverrides(response: Response): Promise<{ [key: string]: VenueZoneConfigOverride; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: VenueZoneConfigOverride; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: VenueZoneConfigOverride; }>(null as any);\n }\n\n getActiveVenueZoneMapSectionGroups(viagogoEventId: number | undefined): Promise<{ [key: string]: SectionSectionGroup; }> {\n let url_ = this.baseUrl + \"/api/Pricing/GetActiveVenueZoneMapSectionGroups?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetActiveVenueZoneMapSectionGroups(_response);\n });\n }\n\n protected processGetActiveVenueZoneMapSectionGroups(response: Response): Promise<{ [key: string]: SectionSectionGroup; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: SectionSectionGroup; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: SectionSectionGroup; }>(null as any);\n }\n\n upsertVenueZoneSectionGroupOverrides(request: UpsertVenueZoneSectionGroupOverridesInput): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/UpsertVenueZoneSectionGroupOverrides\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(request);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpsertVenueZoneSectionGroupOverrides(_response);\n });\n }\n\n protected processUpsertVenueZoneSectionGroupOverrides(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getEventMapConfigMetadata(viagogoEventId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Pricing/GetEventMapConfigMetadata?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetEventMapConfigMetadata(_response);\n });\n }\n\n protected processGetEventMapConfigMetadata(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as EventMapConfigMetadata;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IPurchaseClient {\n\n getPurchaseOrderByPurchaseOrderId(purchaseOrderId: number | undefined, getCatalog: boolean | undefined): Promise;\n\n getPurchaseOrdersByVendorOrderId(orderId: string | undefined): Promise;\n\n getPurchaseOrders(query: PurchaseOrderQuery, useReadonlyDB: boolean | undefined): Promise;\n\n getPurchaseOrdersWithTicketGroups(query: PurchaseOrderQuery): Promise;\n\n getTicketGroupsForEvents(query: PurchaseOrderQuery): Promise<{ [key: string]: PurchaseOrderTicketGroup[]; }>;\n\n getAccessibleVendors(getDeliveryOverride: boolean | undefined, getVendorAccountsCount: boolean | undefined): Promise;\n\n getAccessibleAccessControlProviders(): Promise;\n\n getAccessibleVendorAccounts(input: ValueTupleOfISetOfIntegerAndISetOfGuid, searchText: string | null | undefined, take: number | null | undefined, skip: number | null | undefined): Promise;\n\n getVendorAccountDetails(purchaseOrderVendorAccountId: string | undefined): Promise;\n\n getPurchaseOrderIdsUsingOrderId(orderId: string | undefined): Promise;\n\n getIsPurchasingIdsInUse(orderId: string | undefined, purchaseOrderVendorId: number | null | undefined): Promise;\n\n getMonthsContainerPurchaseOrders(query: PurchaseOrderQuery): Promise;\n\n getTimePeriodContainerPurchaseOrders(query: PurchaseOrderQuery, timePeriodType: TimePeriodType | undefined): Promise;\n\n insertPurchaseOrder(input: PurchaseOrderDetailsInput, isManual: boolean | undefined): Promise;\n\n downloadPurchaseFileTemplate(includeEventIdFields: boolean | undefined): Promise;\n\n updatePurchaseOrder(input: PurchaseOrderDetailsInput): Promise;\n\n updatePurchasesQualityControlState(inputs: ValueTupleOfISetOfLongAndPosFieldOfNullableQualityControlState): Promise;\n\n getVendor(vendorId: number | undefined): Promise;\n\n mergeVendor(vendor: PurchaseVendor): Promise;\n\n deleteVendor(vendorId: number | undefined): Promise;\n\n mergeVendorAccount(vendorAccount: PurchaseVendorAccountDetails): Promise;\n\n deleteVendorAccount(vendorAccountId: string | undefined): Promise;\n\n getAllCurrencyConversionOverride(): Promise;\n\n insertCurrencyConversionOverride(conversionOverrideRequest: CurrencyConversionOverrideRequest): Promise;\n\n updateCurrencyConversionOverride(conversionOverrideRequest: CurrencyConversionOverrideRequest): Promise;\n\n deleteCurrencyConversionOverride(currencyConversionOverrideId: number | undefined): Promise;\n\n getAccessiblePurchasePaymentMethods(): Promise;\n\n getPurchasePaymentMethodsByName(paymentMethodName: string | undefined): Promise;\n\n insertPurchasePaymentMethod(input: PurchasePaymentMethod): Promise;\n\n updatePurchasePaymentMethod(input: PurchasePaymentMethod): Promise;\n\n deletePurchasePaymentMethod(purchasePaymentMethodId: number): Promise;\n\n cancelPurchaseOrder(purchaseOrderId: number | undefined, rejectSale: boolean | null | undefined, saleCancellationReason: SaleCancellationReason | null | undefined): Promise;\n\n voidPurchaseOrder(purchaseOrderId: number | undefined): Promise;\n\n restorePurchaseOrder(purchaseOrderId: number | undefined): Promise;\n\n getDeliveryOverrideForNewTicketGroup(input: ValueTupleOfNullableIntegerAndNullableIntegerAndNullableGuidAndBoolean): Promise;\n\n mergePurchaseEventOverrides(purchaseEventOverrides: PurchaseEventOverride[], viagogoEventId: number | undefined): Promise;\n\n getPurchaseEventOverrides(viagogoEventId: number | undefined): Promise;\n\n exportPurchases(query: PurchaseOrderQuery, selectedTicketGroupsOnly: boolean | undefined): Promise;\n\n downloadMergedUserDocumentsPdf(ticketGroupId: number | undefined): Promise;\n}\n\nexport class PurchaseClient extends PosClientBase implements IPurchaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getPurchaseOrderByPurchaseOrderId(purchaseOrderId: number | undefined, getCatalog: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/GetPurchaseOrderByPurchaseOrderId?\";\n if (purchaseOrderId === null)\n throw new Error(\"The parameter 'purchaseOrderId' cannot be null.\");\n else if (purchaseOrderId !== undefined)\n url_ += \"purchaseOrderId=\" + encodeURIComponent(\"\" + purchaseOrderId) + \"&\";\n if (getCatalog === null)\n throw new Error(\"The parameter 'getCatalog' cannot be null.\");\n else if (getCatalog !== undefined)\n url_ += \"getCatalog=\" + encodeURIComponent(\"\" + getCatalog) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPurchaseOrderByPurchaseOrderId(_response);\n });\n }\n\n protected processGetPurchaseOrderByPurchaseOrderId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PurchaseOrderDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPurchaseOrdersByVendorOrderId(orderId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/GetPurchaseOrdersByVendorOrderId?\";\n if (orderId === null)\n throw new Error(\"The parameter 'orderId' cannot be null.\");\n else if (orderId !== undefined)\n url_ += \"orderId=\" + encodeURIComponent(\"\" + orderId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPurchaseOrdersByVendorOrderId(_response);\n });\n }\n\n protected processGetPurchaseOrdersByVendorOrderId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PurchaseOrderDetails[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPurchaseOrders(query: PurchaseOrderQuery, useReadonlyDB: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/GetPurchaseOrders?\";\n if (useReadonlyDB === null)\n throw new Error(\"The parameter 'useReadonlyDB' cannot be null.\");\n else if (useReadonlyDB !== undefined)\n url_ += \"useReadonlyDB=\" + encodeURIComponent(\"\" + useReadonlyDB) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPurchaseOrders(_response);\n });\n }\n\n protected processGetPurchaseOrders(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PurchaseOrder[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPurchaseOrdersWithTicketGroups(query: PurchaseOrderQuery): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/GetPurchaseOrdersWithTicketGroups\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPurchaseOrdersWithTicketGroups(_response);\n });\n }\n\n protected processGetPurchaseOrdersWithTicketGroups(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PurchaseOrderTicketGroup[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getTicketGroupsForEvents(query: PurchaseOrderQuery): Promise<{ [key: string]: PurchaseOrderTicketGroup[]; }> {\n let url_ = this.baseUrl + \"/api/Purchase/GetTicketGroupsForEvents\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTicketGroupsForEvents(_response);\n });\n }\n\n protected processGetTicketGroupsForEvents(response: Response): Promise<{ [key: string]: PurchaseOrderTicketGroup[]; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: PurchaseOrderTicketGroup[]; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: PurchaseOrderTicketGroup[]; }>(null as any);\n }\n\n getAccessibleVendors(getDeliveryOverride: boolean | undefined, getVendorAccountsCount: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/GetAccessibleVendors?\";\n if (getDeliveryOverride === null)\n throw new Error(\"The parameter 'getDeliveryOverride' cannot be null.\");\n else if (getDeliveryOverride !== undefined)\n url_ += \"getDeliveryOverride=\" + encodeURIComponent(\"\" + getDeliveryOverride) + \"&\";\n if (getVendorAccountsCount === null)\n throw new Error(\"The parameter 'getVendorAccountsCount' cannot be null.\");\n else if (getVendorAccountsCount !== undefined)\n url_ += \"getVendorAccountsCount=\" + encodeURIComponent(\"\" + getVendorAccountsCount) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAccessibleVendors(_response);\n });\n }\n\n protected processGetAccessibleVendors(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PurchaseVendor[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAccessibleAccessControlProviders(): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/GetAccessibleAccessControlProviders\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAccessibleAccessControlProviders(_response);\n });\n }\n\n protected processGetAccessibleAccessControlProviders(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AccessControlProvider[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAccessibleVendorAccounts(input: ValueTupleOfISetOfIntegerAndISetOfGuid, searchText: string | null | undefined, take: number | null | undefined, skip: number | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/GetAccessibleVendorAccounts?\";\n if (searchText !== undefined && searchText !== null)\n url_ += \"searchText=\" + encodeURIComponent(\"\" + searchText) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAccessibleVendorAccounts(_response);\n });\n }\n\n protected processGetAccessibleVendorAccounts(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PurchaseVendorAccount[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getVendorAccountDetails(purchaseOrderVendorAccountId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/GetVendorAccountDetails?\";\n if (purchaseOrderVendorAccountId === null)\n throw new Error(\"The parameter 'purchaseOrderVendorAccountId' cannot be null.\");\n else if (purchaseOrderVendorAccountId !== undefined)\n url_ += \"purchaseOrderVendorAccountId=\" + encodeURIComponent(\"\" + purchaseOrderVendorAccountId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetVendorAccountDetails(_response);\n });\n }\n\n protected processGetVendorAccountDetails(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PurchaseVendorAccountDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPurchaseOrderIdsUsingOrderId(orderId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/GetPurchaseOrderIdsUsingOrderId?\";\n if (orderId === null)\n throw new Error(\"The parameter 'orderId' cannot be null.\");\n else if (orderId !== undefined)\n url_ += \"orderId=\" + encodeURIComponent(\"\" + orderId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPurchaseOrderIdsUsingOrderId(_response);\n });\n }\n\n protected processGetPurchaseOrderIdsUsingOrderId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getIsPurchasingIdsInUse(orderId: string | undefined, purchaseOrderVendorId: number | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/GetIsPurchasingIdsInUse?\";\n if (orderId === null)\n throw new Error(\"The parameter 'orderId' cannot be null.\");\n else if (orderId !== undefined)\n url_ += \"orderId=\" + encodeURIComponent(\"\" + orderId) + \"&\";\n if (purchaseOrderVendorId !== undefined && purchaseOrderVendorId !== null)\n url_ += \"purchaseOrderVendorId=\" + encodeURIComponent(\"\" + purchaseOrderVendorId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetIsPurchasingIdsInUse(_response);\n });\n }\n\n protected processGetIsPurchasingIdsInUse(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PurchasingIdInUseResultType;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getMonthsContainerPurchaseOrders(query: PurchaseOrderQuery): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/GetMonthsContainerPurchaseOrders\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetMonthsContainerPurchaseOrders(_response);\n });\n }\n\n protected processGetMonthsContainerPurchaseOrders(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as MonthContainingPurchaseOrdersResult[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getTimePeriodContainerPurchaseOrders(query: PurchaseOrderQuery, timePeriodType: TimePeriodType | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/GetTimePeriodContainerPurchaseOrders?\";\n if (timePeriodType === null)\n throw new Error(\"The parameter 'timePeriodType' cannot be null.\");\n else if (timePeriodType !== undefined)\n url_ += \"timePeriodType=\" + encodeURIComponent(\"\" + timePeriodType) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTimePeriodContainerPurchaseOrders(_response);\n });\n }\n\n protected processGetTimePeriodContainerPurchaseOrders(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TimePeriodContainingPurchaseOrderResult[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n insertPurchaseOrder(input: PurchaseOrderDetailsInput, isManual: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/InsertPurchaseOrder?\";\n if (isManual === null)\n throw new Error(\"The parameter 'isManual' cannot be null.\");\n else if (isManual !== undefined)\n url_ += \"isManual=\" + encodeURIComponent(\"\" + isManual) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processInsertPurchaseOrder(_response);\n });\n }\n\n protected processInsertPurchaseOrder(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n downloadPurchaseFileTemplate(includeEventIdFields: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/DownloadPurchaseFileTemplate?\";\n if (includeEventIdFields === null)\n throw new Error(\"The parameter 'includeEventIdFields' cannot be null.\");\n else if (includeEventIdFields !== undefined)\n url_ += \"includeEventIdFields=\" + encodeURIComponent(\"\" + includeEventIdFields) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownloadPurchaseFileTemplate(_response);\n });\n }\n\n protected processDownloadPurchaseFileTemplate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updatePurchaseOrder(input: PurchaseOrderDetailsInput): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/UpdatePurchaseOrder\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdatePurchaseOrder(_response);\n });\n }\n\n protected processUpdatePurchaseOrder(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updatePurchasesQualityControlState(inputs: ValueTupleOfISetOfLongAndPosFieldOfNullableQualityControlState): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/UpdatePurchasesQualityControlState\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(inputs);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdatePurchasesQualityControlState(_response);\n });\n }\n\n protected processUpdatePurchasesQualityControlState(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getVendor(vendorId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/GetVendor?\";\n if (vendorId === null)\n throw new Error(\"The parameter 'vendorId' cannot be null.\");\n else if (vendorId !== undefined)\n url_ += \"vendorId=\" + encodeURIComponent(\"\" + vendorId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetVendor(_response);\n });\n }\n\n protected processGetVendor(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PurchaseVendor;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n mergeVendor(vendor: PurchaseVendor): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/MergeVendor\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(vendor);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processMergeVendor(_response);\n });\n }\n\n protected processMergeVendor(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n deleteVendor(vendorId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/DeleteVendor?\";\n if (vendorId === null)\n throw new Error(\"The parameter 'vendorId' cannot be null.\");\n else if (vendorId !== undefined)\n url_ += \"vendorId=\" + encodeURIComponent(\"\" + vendorId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteVendor(_response);\n });\n }\n\n protected processDeleteVendor(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n mergeVendorAccount(vendorAccount: PurchaseVendorAccountDetails): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/MergeVendorAccount\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(vendorAccount);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processMergeVendorAccount(_response);\n });\n }\n\n protected processMergeVendorAccount(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n deleteVendorAccount(vendorAccountId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/DeleteVendorAccount?\";\n if (vendorAccountId === null)\n throw new Error(\"The parameter 'vendorAccountId' cannot be null.\");\n else if (vendorAccountId !== undefined)\n url_ += \"vendorAccountId=\" + encodeURIComponent(\"\" + vendorAccountId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteVendorAccount(_response);\n });\n }\n\n protected processDeleteVendorAccount(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAllCurrencyConversionOverride(): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/GetAllCurrencyConversionOverride\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllCurrencyConversionOverride(_response);\n });\n }\n\n protected processGetAllCurrencyConversionOverride(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as CurrencyConversionOverride[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n insertCurrencyConversionOverride(conversionOverrideRequest: CurrencyConversionOverrideRequest): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/InsertCurrencyConversionOverride\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(conversionOverrideRequest);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processInsertCurrencyConversionOverride(_response);\n });\n }\n\n protected processInsertCurrencyConversionOverride(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateCurrencyConversionOverride(conversionOverrideRequest: CurrencyConversionOverrideRequest): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/UpdateCurrencyConversionOverride\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(conversionOverrideRequest);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateCurrencyConversionOverride(_response);\n });\n }\n\n protected processUpdateCurrencyConversionOverride(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n deleteCurrencyConversionOverride(currencyConversionOverrideId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/DeleteCurrencyConversionOverride?\";\n if (currencyConversionOverrideId === null)\n throw new Error(\"The parameter 'currencyConversionOverrideId' cannot be null.\");\n else if (currencyConversionOverrideId !== undefined)\n url_ += \"currencyConversionOverrideId=\" + encodeURIComponent(\"\" + currencyConversionOverrideId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteCurrencyConversionOverride(_response);\n });\n }\n\n protected processDeleteCurrencyConversionOverride(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAccessiblePurchasePaymentMethods(): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/GetAccessiblePurchasePaymentMethods\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAccessiblePurchasePaymentMethods(_response);\n });\n }\n\n protected processGetAccessiblePurchasePaymentMethods(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PurchasePaymentMethod[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPurchasePaymentMethodsByName(paymentMethodName: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/GetPurchasePaymentMethodsByName?\";\n if (paymentMethodName === null)\n throw new Error(\"The parameter 'paymentMethodName' cannot be null.\");\n else if (paymentMethodName !== undefined)\n url_ += \"paymentMethodName=\" + encodeURIComponent(\"\" + paymentMethodName) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPurchasePaymentMethodsByName(_response);\n });\n }\n\n protected processGetPurchasePaymentMethodsByName(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PurchasePaymentMethod[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n insertPurchasePaymentMethod(input: PurchasePaymentMethod): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/InsertPurchasePaymentMethod\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processInsertPurchasePaymentMethod(_response);\n });\n }\n\n protected processInsertPurchasePaymentMethod(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updatePurchasePaymentMethod(input: PurchasePaymentMethod): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/UpdatePurchasePaymentMethod\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdatePurchasePaymentMethod(_response);\n });\n }\n\n protected processUpdatePurchasePaymentMethod(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n deletePurchasePaymentMethod(purchasePaymentMethodId: number): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/DeletePurchasePaymentMethod\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(purchasePaymentMethodId);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeletePurchasePaymentMethod(_response);\n });\n }\n\n protected processDeletePurchasePaymentMethod(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n cancelPurchaseOrder(purchaseOrderId: number | undefined, rejectSale: boolean | null | undefined, saleCancellationReason: SaleCancellationReason | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/CancelPurchaseOrder?\";\n if (purchaseOrderId === null)\n throw new Error(\"The parameter 'purchaseOrderId' cannot be null.\");\n else if (purchaseOrderId !== undefined)\n url_ += \"purchaseOrderId=\" + encodeURIComponent(\"\" + purchaseOrderId) + \"&\";\n if (rejectSale !== undefined && rejectSale !== null)\n url_ += \"rejectSale=\" + encodeURIComponent(\"\" + rejectSale) + \"&\";\n if (saleCancellationReason !== undefined && saleCancellationReason !== null)\n url_ += \"saleCancellationReason=\" + encodeURIComponent(\"\" + saleCancellationReason) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCancelPurchaseOrder(_response);\n });\n }\n\n protected processCancelPurchaseOrder(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n voidPurchaseOrder(purchaseOrderId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/VoidPurchaseOrder?\";\n if (purchaseOrderId === null)\n throw new Error(\"The parameter 'purchaseOrderId' cannot be null.\");\n else if (purchaseOrderId !== undefined)\n url_ += \"purchaseOrderId=\" + encodeURIComponent(\"\" + purchaseOrderId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processVoidPurchaseOrder(_response);\n });\n }\n\n protected processVoidPurchaseOrder(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n restorePurchaseOrder(purchaseOrderId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/RestorePurchaseOrder?\";\n if (purchaseOrderId === null)\n throw new Error(\"The parameter 'purchaseOrderId' cannot be null.\");\n else if (purchaseOrderId !== undefined)\n url_ += \"purchaseOrderId=\" + encodeURIComponent(\"\" + purchaseOrderId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRestorePurchaseOrder(_response);\n });\n }\n\n protected processRestorePurchaseOrder(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getDeliveryOverrideForNewTicketGroup(input: ValueTupleOfNullableIntegerAndNullableIntegerAndNullableGuidAndBoolean): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/GetDeliveryOverrideForNewTicketGroup\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetDeliveryOverrideForNewTicketGroup(_response);\n });\n }\n\n protected processGetDeliveryOverrideForNewTicketGroup(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DeliveryOverride;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n mergePurchaseEventOverrides(purchaseEventOverrides: PurchaseEventOverride[], viagogoEventId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(purchaseEventOverrides);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processMergePurchaseEventOverrides(_response);\n });\n }\n\n protected processMergePurchaseEventOverrides(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPurchaseEventOverrides(viagogoEventId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/GetPurchaseEventOverrides?\";\n if (viagogoEventId === null)\n throw new Error(\"The parameter 'viagogoEventId' cannot be null.\");\n else if (viagogoEventId !== undefined)\n url_ += \"viagogoEventId=\" + encodeURIComponent(\"\" + viagogoEventId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPurchaseEventOverrides(_response);\n });\n }\n\n protected processGetPurchaseEventOverrides(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PurchaseEventOverride[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n exportPurchases(query: PurchaseOrderQuery, selectedTicketGroupsOnly: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/ExportPurchases?\";\n if (selectedTicketGroupsOnly === null)\n throw new Error(\"The parameter 'selectedTicketGroupsOnly' cannot be null.\");\n else if (selectedTicketGroupsOnly !== undefined)\n url_ += \"selectedTicketGroupsOnly=\" + encodeURIComponent(\"\" + selectedTicketGroupsOnly) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportPurchases(_response);\n });\n }\n\n protected processExportPurchases(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n downloadMergedUserDocumentsPdf(ticketGroupId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Purchase/DownloadMergedUserDocumentsPdf?\";\n if (ticketGroupId === null)\n throw new Error(\"The parameter 'ticketGroupId' cannot be null.\");\n else if (ticketGroupId !== undefined)\n url_ += \"ticketGroupId=\" + encodeURIComponent(\"\" + ticketGroupId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownloadMergedUserDocumentsPdf(_response);\n });\n }\n\n protected processDownloadMergedUserDocumentsPdf(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IReportClient {\n\n getAvailableInventoryReportConfig(): Promise;\n\n upsertInventoryReportConfig(reportConfig: ReportConfigOfListingQueryAndReportWidgetTypesInventory): Promise;\n\n upsertInventoryReportConfigOverride(reportConfigId: number | undefined, reportConfigOverride: ReportConfigOverrideOfListingQuery): Promise;\n\n getAvailableSaleReportConfig(): Promise;\n\n upsertSaleReportConfig(reportConfig: ReportConfigOfSaleQueryAndReportWidgetTypesSale): Promise;\n\n upsertSaleReportConfigOverride(reportConfigId: number | undefined, reportConfigOverride: ReportConfigOverrideOfSaleQuery): Promise;\n\n deleteReportConfig(reportConfigId: number | undefined): Promise;\n\n getListingReportMetrics(input: ListingReportMetricsRequest, maxResultsize: number | null | undefined): Promise;\n\n getSaleReportMetrics(input: SaleReportMetricsRequest, maxResultsize: number | null | undefined): Promise;\n\n getReportSnapshotInfos(reportConfigId: number | undefined): Promise;\n\n downloadSaleReportMetrics(input: SaleReportMetricsDownloadRequest): Promise;\n\n downloadListingReportMetrics(input: ListingReportMetricsDownloadRequest): Promise;\n}\n\nexport class ReportClient extends PosClientBase implements IReportClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getAvailableInventoryReportConfig(): Promise {\n let url_ = this.baseUrl + \"/api/Report/GetAvailableInventoryReportConfig\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAvailableInventoryReportConfig(_response);\n });\n }\n\n protected processGetAvailableInventoryReportConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReportConfigOfListingQueryAndReportWidgetTypesInventory[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n upsertInventoryReportConfig(reportConfig: ReportConfigOfListingQueryAndReportWidgetTypesInventory): Promise {\n let url_ = this.baseUrl + \"/api/Report/UpsertInventoryReportConfig\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(reportConfig);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpsertInventoryReportConfig(_response);\n });\n }\n\n protected processUpsertInventoryReportConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n upsertInventoryReportConfigOverride(reportConfigId: number | undefined, reportConfigOverride: ReportConfigOverrideOfListingQuery): Promise {\n let url_ = this.baseUrl + \"/api/Report/UpsertInventoryReportConfigOverride?\";\n if (reportConfigId === null)\n throw new Error(\"The parameter 'reportConfigId' cannot be null.\");\n else if (reportConfigId !== undefined)\n url_ += \"reportConfigId=\" + encodeURIComponent(\"\" + reportConfigId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(reportConfigOverride);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpsertInventoryReportConfigOverride(_response);\n });\n }\n\n protected processUpsertInventoryReportConfigOverride(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAvailableSaleReportConfig(): Promise {\n let url_ = this.baseUrl + \"/api/Report/GetAvailableSaleReportConfig\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAvailableSaleReportConfig(_response);\n });\n }\n\n protected processGetAvailableSaleReportConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReportConfigOfSaleQueryAndReportWidgetTypesSale[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n upsertSaleReportConfig(reportConfig: ReportConfigOfSaleQueryAndReportWidgetTypesSale): Promise {\n let url_ = this.baseUrl + \"/api/Report/UpsertSaleReportConfig\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(reportConfig);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpsertSaleReportConfig(_response);\n });\n }\n\n protected processUpsertSaleReportConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n upsertSaleReportConfigOverride(reportConfigId: number | undefined, reportConfigOverride: ReportConfigOverrideOfSaleQuery): Promise {\n let url_ = this.baseUrl + \"/api/Report/UpsertSaleReportConfigOverride?\";\n if (reportConfigId === null)\n throw new Error(\"The parameter 'reportConfigId' cannot be null.\");\n else if (reportConfigId !== undefined)\n url_ += \"reportConfigId=\" + encodeURIComponent(\"\" + reportConfigId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(reportConfigOverride);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpsertSaleReportConfigOverride(_response);\n });\n }\n\n protected processUpsertSaleReportConfigOverride(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n deleteReportConfig(reportConfigId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Report/DeleteReportConfig?\";\n if (reportConfigId === null)\n throw new Error(\"The parameter 'reportConfigId' cannot be null.\");\n else if (reportConfigId !== undefined)\n url_ += \"reportConfigId=\" + encodeURIComponent(\"\" + reportConfigId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteReportConfig(_response);\n });\n }\n\n protected processDeleteReportConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getListingReportMetrics(input: ListingReportMetricsRequest, maxResultsize: number | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Report/GetListingReportMetrics?\";\n if (maxResultsize !== undefined && maxResultsize !== null)\n url_ += \"maxResultsize=\" + encodeURIComponent(\"\" + maxResultsize) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetListingReportMetrics(_response);\n });\n }\n\n protected processGetListingReportMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ListingReportMetricsResponse;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSaleReportMetrics(input: SaleReportMetricsRequest, maxResultsize: number | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Report/GetSaleReportMetrics?\";\n if (maxResultsize !== undefined && maxResultsize !== null)\n url_ += \"maxResultsize=\" + encodeURIComponent(\"\" + maxResultsize) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSaleReportMetrics(_response);\n });\n }\n\n protected processGetSaleReportMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SaleReportMetricsResponse;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getReportSnapshotInfos(reportConfigId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Report/GetReportSnapshotInfos?\";\n if (reportConfigId === null)\n throw new Error(\"The parameter 'reportConfigId' cannot be null.\");\n else if (reportConfigId !== undefined)\n url_ += \"reportConfigId=\" + encodeURIComponent(\"\" + reportConfigId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetReportSnapshotInfos(_response);\n });\n }\n\n protected processGetReportSnapshotInfos(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReportSnapshotInfo[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n downloadSaleReportMetrics(input: SaleReportMetricsDownloadRequest): Promise {\n let url_ = this.baseUrl + \"/api/Report/DownloadSaleReportMetrics\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownloadSaleReportMetrics(_response);\n });\n }\n\n protected processDownloadSaleReportMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n downloadListingReportMetrics(input: ListingReportMetricsDownloadRequest): Promise {\n let url_ = this.baseUrl + \"/api/Report/DownloadListingReportMetrics\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownloadListingReportMetrics(_response);\n });\n }\n\n protected processDownloadListingReportMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IReportV2ConfigClient {\n\n getAvailableInventoryReportConfig(): Promise;\n\n upsertInventoryReportConfig(reportConfig: ReportV2ConfigOfInventoryReportV2RequestAndReportWidgetTypesInventory): Promise;\n\n getAvailableSaleReportConfig(): Promise;\n\n upsertSaleReportConfig(reportConfig: ReportV2ConfigOfSalesReportV2RequestAndReportWidgetTypesSale): Promise;\n\n deleteReportConfig(reportConfigId: number | undefined): Promise;\n\n getAvailableCommissionReportConfig(): Promise;\n\n upsertReportConfigOverride(reportConfigId: number | undefined, reportConfigOverride: ReportV2ConfigOverride): Promise;\n}\n\nexport class ReportV2ConfigClient extends PosClientBase implements IReportV2ConfigClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getAvailableInventoryReportConfig(): Promise {\n let url_ = this.baseUrl + \"/api/ReportV2Config/GetAvailableInventoryReportConfig\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAvailableInventoryReportConfig(_response);\n });\n }\n\n protected processGetAvailableInventoryReportConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReportV2ConfigOfInventoryReportV2RequestAndReportWidgetTypesInventory[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n upsertInventoryReportConfig(reportConfig: ReportV2ConfigOfInventoryReportV2RequestAndReportWidgetTypesInventory): Promise {\n let url_ = this.baseUrl + \"/api/ReportV2Config/UpsertInventoryReportConfig\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(reportConfig);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpsertInventoryReportConfig(_response);\n });\n }\n\n protected processUpsertInventoryReportConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAvailableSaleReportConfig(): Promise {\n let url_ = this.baseUrl + \"/api/ReportV2Config/GetAvailableSaleReportConfig\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAvailableSaleReportConfig(_response);\n });\n }\n\n protected processGetAvailableSaleReportConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReportV2ConfigOfSalesReportV2RequestAndReportWidgetTypesSale[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n upsertSaleReportConfig(reportConfig: ReportV2ConfigOfSalesReportV2RequestAndReportWidgetTypesSale): Promise {\n let url_ = this.baseUrl + \"/api/ReportV2Config/UpsertSaleReportConfig\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(reportConfig);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpsertSaleReportConfig(_response);\n });\n }\n\n protected processUpsertSaleReportConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n deleteReportConfig(reportConfigId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ReportV2Config/DeleteReportConfig?\";\n if (reportConfigId === null)\n throw new Error(\"The parameter 'reportConfigId' cannot be null.\");\n else if (reportConfigId !== undefined)\n url_ += \"reportConfigId=\" + encodeURIComponent(\"\" + reportConfigId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteReportConfig(_response);\n });\n }\n\n protected processDeleteReportConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAvailableCommissionReportConfig(): Promise {\n let url_ = this.baseUrl + \"/api/ReportV2Config/GetAvailableCommissionReportConfig\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAvailableCommissionReportConfig(_response);\n });\n }\n\n protected processGetAvailableCommissionReportConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReportV2ConfigOfCommissionReportV2RequestAndReportWidgetTypesCommission[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n upsertReportConfigOverride(reportConfigId: number | undefined, reportConfigOverride: ReportV2ConfigOverride): Promise {\n let url_ = this.baseUrl + \"/api/ReportV2Config/UpsertReportConfigOverride?\";\n if (reportConfigId === null)\n throw new Error(\"The parameter 'reportConfigId' cannot be null.\");\n else if (reportConfigId !== undefined)\n url_ += \"reportConfigId=\" + encodeURIComponent(\"\" + reportConfigId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(reportConfigOverride);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpsertReportConfigOverride(_response);\n });\n }\n\n protected processUpsertReportConfigOverride(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IReportV2Client {\n\n getInventoryReportMetrics(query: InventoryReportV2Request): Promise;\n\n getInventoryReportSummary(query: InventoryReportV2Request): Promise;\n\n getSaleReportMetrics(query: SalesReportV2Request): Promise;\n\n getSaleReportSummary(query: SalesReportV2Request): Promise;\n\n getCommissionReportMetrics(query: CommissionReportV2Request): Promise;\n\n getCommissionReportSummary(query: CommissionReportV2Request): Promise;\n\n downloadListingReportMetrics(query: InventoryReportV2Request, fileType: ReportFileType | undefined): Promise;\n\n downloadSaleReportMetrics(query: SalesReportV2Request, fileType: ReportFileType | undefined): Promise;\n\n downloadCommissionReportMetrics(query: CommissionReportV2Request, fileType: ReportFileType | undefined): Promise;\n}\n\nexport class ReportV2Client extends PosClientBase implements IReportV2Client {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getInventoryReportMetrics(query: InventoryReportV2Request): Promise {\n let url_ = this.baseUrl + \"/api/ReportV2/GetInventoryReportMetrics\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetInventoryReportMetrics(_response);\n });\n }\n\n protected processGetInventoryReportMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReportMetricsV2;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getInventoryReportSummary(query: InventoryReportV2Request): Promise {\n let url_ = this.baseUrl + \"/api/ReportV2/GetInventoryReportSummary\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetInventoryReportSummary(_response);\n });\n }\n\n protected processGetInventoryReportSummary(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReportMetricsSummaryV2;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSaleReportMetrics(query: SalesReportV2Request): Promise {\n let url_ = this.baseUrl + \"/api/ReportV2/GetSaleReportMetrics\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSaleReportMetrics(_response);\n });\n }\n\n protected processGetSaleReportMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReportMetricsV2;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSaleReportSummary(query: SalesReportV2Request): Promise {\n let url_ = this.baseUrl + \"/api/ReportV2/GetSaleReportSummary\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSaleReportSummary(_response);\n });\n }\n\n protected processGetSaleReportSummary(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReportMetricsSummaryV2;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCommissionReportMetrics(query: CommissionReportV2Request): Promise {\n let url_ = this.baseUrl + \"/api/ReportV2/GetCommissionReportMetrics\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCommissionReportMetrics(_response);\n });\n }\n\n protected processGetCommissionReportMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReportMetricsV2;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCommissionReportSummary(query: CommissionReportV2Request): Promise {\n let url_ = this.baseUrl + \"/api/ReportV2/GetCommissionReportSummary\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCommissionReportSummary(_response);\n });\n }\n\n protected processGetCommissionReportSummary(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReportMetricsSummaryV2;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n downloadListingReportMetrics(query: InventoryReportV2Request, fileType: ReportFileType | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ReportV2/DownloadListingReportMetrics?\";\n if (fileType === null)\n throw new Error(\"The parameter 'fileType' cannot be null.\");\n else if (fileType !== undefined)\n url_ += \"fileType=\" + encodeURIComponent(\"\" + fileType) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownloadListingReportMetrics(_response);\n });\n }\n\n protected processDownloadListingReportMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n downloadSaleReportMetrics(query: SalesReportV2Request, fileType: ReportFileType | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ReportV2/DownloadSaleReportMetrics?\";\n if (fileType === null)\n throw new Error(\"The parameter 'fileType' cannot be null.\");\n else if (fileType !== undefined)\n url_ += \"fileType=\" + encodeURIComponent(\"\" + fileType) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownloadSaleReportMetrics(_response);\n });\n }\n\n protected processDownloadSaleReportMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n downloadCommissionReportMetrics(query: CommissionReportV2Request, fileType: ReportFileType | undefined): Promise {\n let url_ = this.baseUrl + \"/api/ReportV2/DownloadCommissionReportMetrics?\";\n if (fileType === null)\n throw new Error(\"The parameter 'fileType' cannot be null.\");\n else if (fileType !== undefined)\n url_ += \"fileType=\" + encodeURIComponent(\"\" + fileType) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownloadCommissionReportMetrics(_response);\n });\n }\n\n protected processDownloadCommissionReportMetrics(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface ISaleClient {\n\n getSalesForEvents(query: SaleQuery, requireEventIds: boolean | undefined, useReadonlyDB: boolean | undefined): Promise<{ [key: string]: Sale[]; }>;\n\n getUnableToProcessSales(): Promise<{ [key: string]: Sale[]; }>;\n\n getSalesByMarketplaceSaleId(marketplaceSaleId: string | undefined): Promise;\n\n getSaleBySaleId(saleId: number | undefined): Promise;\n\n confirmAllocationSale(saleId: number | undefined, seatingToAllocate: Seating | undefined, skipAllocationValidation: boolean | null | undefined): Promise;\n\n rejectSale(saleId: number | undefined, keepAllocatedTickets: boolean | null | undefined, cancellationReason: SaleCancellationReason | null | undefined): Promise;\n\n deallocateSale(saleId: number | undefined, adminHold: boolean | undefined): Promise;\n\n saveETicketAssignments(saleId: number | undefined, eticketImages: UserDocument[]): Promise;\n\n saveQRCodeAssignments(saleId: number | undefined, qrCodes: UserDocument[]): Promise;\n\n updateBarcodesForSale(saleId: number | undefined, ticketBarcodes: TicketBarcode[]): Promise;\n\n saveTicketTransferInfo(request: TicketTransferRequest): Promise;\n\n resetFulfillment(saleId: number | undefined, removeArtifacts: boolean | undefined, hasResetFulfillmentKeepArtifactsFeature: boolean | undefined): Promise;\n\n markAsFulfilled(saleId: number | undefined): Promise;\n\n getBarcodesAlreadyInUse(viagogoVirtualId: string | undefined, ticketBarcodes: TicketBarcode[]): Promise;\n\n getTicketExternalIdsAlreadyInUse(viagogoVirtualId: string | undefined, externalIds: TicketExternalId[]): Promise;\n\n getTicketUrlsAlreadyInUse(viagogoVirtualId: string | undefined, urls: TicketUrl[]): Promise;\n\n expireHold(saleId: number | undefined): Promise;\n\n getSeatingsForSaleAllocation(saleId: number | undefined, allPossibleSeatings: boolean | undefined, isAllocateSingleTickets: boolean | undefined): Promise;\n\n exportSales(query: SaleQuery): Promise;\n\n updateSale(saleInput: SaleInput): Promise;\n\n updateSaleIsNoFulfill(input: ValueTupleOfLongAndNullableBoolean): Promise;\n\n mergePosManagedMarketplaceSale(input: PosManagedMarketplaceSaleInput): Promise;\n\n createMarketplaceSale(input: MarketplaceSaleInput): Promise;\n\n getAllAvailableBuyers(): Promise;\n\n downloadMergedUserDocumentsPdf(saleId: number | undefined): Promise;\n\n wasteListingTickets(input: WasteListingTicketsInput): Promise;\n\n unwasteSale(input: UnwasteSaleInput): Promise;\n\n getSaleLineItemsBySaleId(saleId: number | undefined): Promise;\n}\n\nexport class SaleClient extends PosClientBase implements ISaleClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getSalesForEvents(query: SaleQuery, requireEventIds: boolean | undefined, useReadonlyDB: boolean | undefined): Promise<{ [key: string]: Sale[]; }> {\n let url_ = this.baseUrl + \"/api/Sale/GetSalesForEvents?\";\n if (requireEventIds === null)\n throw new Error(\"The parameter 'requireEventIds' cannot be null.\");\n else if (requireEventIds !== undefined)\n url_ += \"requireEventIds=\" + encodeURIComponent(\"\" + requireEventIds) + \"&\";\n if (useReadonlyDB === null)\n throw new Error(\"The parameter 'useReadonlyDB' cannot be null.\");\n else if (useReadonlyDB !== undefined)\n url_ += \"useReadonlyDB=\" + encodeURIComponent(\"\" + useReadonlyDB) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSalesForEvents(_response);\n });\n }\n\n protected processGetSalesForEvents(response: Response): Promise<{ [key: string]: Sale[]; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: Sale[]; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: Sale[]; }>(null as any);\n }\n\n getUnableToProcessSales(): Promise<{ [key: string]: Sale[]; }> {\n let url_ = this.baseUrl + \"/api/Sale/GetUnableToProcessSales\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetUnableToProcessSales(_response);\n });\n }\n\n protected processGetUnableToProcessSales(response: Response): Promise<{ [key: string]: Sale[]; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key: string]: Sale[]; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key: string]: Sale[]; }>(null as any);\n }\n\n getSalesByMarketplaceSaleId(marketplaceSaleId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Sale/GetSalesByMarketplaceSaleId?\";\n if (marketplaceSaleId === null)\n throw new Error(\"The parameter 'marketplaceSaleId' cannot be null.\");\n else if (marketplaceSaleId !== undefined)\n url_ += \"marketplaceSaleId=\" + encodeURIComponent(\"\" + marketplaceSaleId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSalesByMarketplaceSaleId(_response);\n });\n }\n\n protected processGetSalesByMarketplaceSaleId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Sale[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSaleBySaleId(saleId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Sale/GetSaleBySaleId?\";\n if (saleId === null)\n throw new Error(\"The parameter 'saleId' cannot be null.\");\n else if (saleId !== undefined)\n url_ += \"saleId=\" + encodeURIComponent(\"\" + saleId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSaleBySaleId(_response);\n });\n }\n\n protected processGetSaleBySaleId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SaleDetails;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n confirmAllocationSale(saleId: number | undefined, seatingToAllocate: Seating | undefined, skipAllocationValidation: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Sale/ConfirmAllocationSale?\";\n if (saleId === null)\n throw new Error(\"The parameter 'saleId' cannot be null.\");\n else if (saleId !== undefined)\n url_ += \"saleId=\" + encodeURIComponent(\"\" + saleId) + \"&\";\n if (skipAllocationValidation !== undefined && skipAllocationValidation !== null)\n url_ += \"skipAllocationValidation=\" + encodeURIComponent(\"\" + skipAllocationValidation) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(seatingToAllocate);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processConfirmAllocationSale(_response);\n });\n }\n\n protected processConfirmAllocationSale(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n rejectSale(saleId: number | undefined, keepAllocatedTickets: boolean | null | undefined, cancellationReason: SaleCancellationReason | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Sale/RejectSale?\";\n if (saleId === null)\n throw new Error(\"The parameter 'saleId' cannot be null.\");\n else if (saleId !== undefined)\n url_ += \"saleId=\" + encodeURIComponent(\"\" + saleId) + \"&\";\n if (keepAllocatedTickets !== undefined && keepAllocatedTickets !== null)\n url_ += \"keepAllocatedTickets=\" + encodeURIComponent(\"\" + keepAllocatedTickets) + \"&\";\n if (cancellationReason !== undefined && cancellationReason !== null)\n url_ += \"cancellationReason=\" + encodeURIComponent(\"\" + cancellationReason) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRejectSale(_response);\n });\n }\n\n protected processRejectSale(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n deallocateSale(saleId: number | undefined, adminHold: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Sale/DeallocateSale?\";\n if (saleId === null)\n throw new Error(\"The parameter 'saleId' cannot be null.\");\n else if (saleId !== undefined)\n url_ += \"saleId=\" + encodeURIComponent(\"\" + saleId) + \"&\";\n if (adminHold === null)\n throw new Error(\"The parameter 'adminHold' cannot be null.\");\n else if (adminHold !== undefined)\n url_ += \"adminHold=\" + encodeURIComponent(\"\" + adminHold) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeallocateSale(_response);\n });\n }\n\n protected processDeallocateSale(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n saveETicketAssignments(saleId: number | undefined, eticketImages: UserDocument[]): Promise {\n let url_ = this.baseUrl + \"/api/Sale/SaveETicketAssignments?\";\n if (saleId === null)\n throw new Error(\"The parameter 'saleId' cannot be null.\");\n else if (saleId !== undefined)\n url_ += \"saleId=\" + encodeURIComponent(\"\" + saleId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(eticketImages);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSaveETicketAssignments(_response);\n });\n }\n\n protected processSaveETicketAssignments(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n saveQRCodeAssignments(saleId: number | undefined, qrCodes: UserDocument[]): Promise {\n let url_ = this.baseUrl + \"/api/Sale/SaveQRCodeAssignments?\";\n if (saleId === null)\n throw new Error(\"The parameter 'saleId' cannot be null.\");\n else if (saleId !== undefined)\n url_ += \"saleId=\" + encodeURIComponent(\"\" + saleId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(qrCodes);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSaveQRCodeAssignments(_response);\n });\n }\n\n protected processSaveQRCodeAssignments(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateBarcodesForSale(saleId: number | undefined, ticketBarcodes: TicketBarcode[]): Promise {\n let url_ = this.baseUrl + \"/api/Sale/UpdateBarcodesForSale?\";\n if (saleId === null)\n throw new Error(\"The parameter 'saleId' cannot be null.\");\n else if (saleId !== undefined)\n url_ += \"saleId=\" + encodeURIComponent(\"\" + saleId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(ticketBarcodes);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateBarcodesForSale(_response);\n });\n }\n\n protected processUpdateBarcodesForSale(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n saveTicketTransferInfo(request: TicketTransferRequest): Promise {\n let url_ = this.baseUrl + \"/api/Sale/SaveTicketTransferInfo\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(request);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSaveTicketTransferInfo(_response);\n });\n }\n\n protected processSaveTicketTransferInfo(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n resetFulfillment(saleId: number | undefined, removeArtifacts: boolean | undefined, hasResetFulfillmentKeepArtifactsFeature: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Sale/ResetFulfillment?\";\n if (saleId === null)\n throw new Error(\"The parameter 'saleId' cannot be null.\");\n else if (saleId !== undefined)\n url_ += \"saleId=\" + encodeURIComponent(\"\" + saleId) + \"&\";\n if (removeArtifacts === null)\n throw new Error(\"The parameter 'removeArtifacts' cannot be null.\");\n else if (removeArtifacts !== undefined)\n url_ += \"removeArtifacts=\" + encodeURIComponent(\"\" + removeArtifacts) + \"&\";\n if (hasResetFulfillmentKeepArtifactsFeature === null)\n throw new Error(\"The parameter 'hasResetFulfillmentKeepArtifactsFeature' cannot be null.\");\n else if (hasResetFulfillmentKeepArtifactsFeature !== undefined)\n url_ += \"hasResetFulfillmentKeepArtifactsFeature=\" + encodeURIComponent(\"\" + hasResetFulfillmentKeepArtifactsFeature) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processResetFulfillment(_response);\n });\n }\n\n protected processResetFulfillment(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n markAsFulfilled(saleId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Sale/MarkAsFulfilled?\";\n if (saleId === null)\n throw new Error(\"The parameter 'saleId' cannot be null.\");\n else if (saleId !== undefined)\n url_ += \"saleId=\" + encodeURIComponent(\"\" + saleId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processMarkAsFulfilled(_response);\n });\n }\n\n protected processMarkAsFulfilled(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getBarcodesAlreadyInUse(viagogoVirtualId: string | undefined, ticketBarcodes: TicketBarcode[]): Promise {\n let url_ = this.baseUrl + \"/api/Sale/GetBarcodesAlreadyInUse?\";\n if (viagogoVirtualId === null)\n throw new Error(\"The parameter 'viagogoVirtualId' cannot be null.\");\n else if (viagogoVirtualId !== undefined)\n url_ += \"viagogoVirtualId=\" + encodeURIComponent(\"\" + viagogoVirtualId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(ticketBarcodes);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetBarcodesAlreadyInUse(_response);\n });\n }\n\n protected processGetBarcodesAlreadyInUse(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TicketBarcode[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getTicketExternalIdsAlreadyInUse(viagogoVirtualId: string | undefined, externalIds: TicketExternalId[]): Promise {\n let url_ = this.baseUrl + \"/api/Sale/GetTicketExternalIdsAlreadyInUse?\";\n if (viagogoVirtualId === null)\n throw new Error(\"The parameter 'viagogoVirtualId' cannot be null.\");\n else if (viagogoVirtualId !== undefined)\n url_ += \"viagogoVirtualId=\" + encodeURIComponent(\"\" + viagogoVirtualId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(externalIds);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTicketExternalIdsAlreadyInUse(_response);\n });\n }\n\n protected processGetTicketExternalIdsAlreadyInUse(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TicketExternalId[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getTicketUrlsAlreadyInUse(viagogoVirtualId: string | undefined, urls: TicketUrl[]): Promise {\n let url_ = this.baseUrl + \"/api/Sale/GetTicketUrlsAlreadyInUse?\";\n if (viagogoVirtualId === null)\n throw new Error(\"The parameter 'viagogoVirtualId' cannot be null.\");\n else if (viagogoVirtualId !== undefined)\n url_ += \"viagogoVirtualId=\" + encodeURIComponent(\"\" + viagogoVirtualId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(urls);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTicketUrlsAlreadyInUse(_response);\n });\n }\n\n protected processGetTicketUrlsAlreadyInUse(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TicketUrl[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n expireHold(saleId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Sale/ExpireHold?\";\n if (saleId === null)\n throw new Error(\"The parameter 'saleId' cannot be null.\");\n else if (saleId !== undefined)\n url_ += \"saleId=\" + encodeURIComponent(\"\" + saleId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExpireHold(_response);\n });\n }\n\n protected processExpireHold(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSeatingsForSaleAllocation(saleId: number | undefined, allPossibleSeatings: boolean | undefined, isAllocateSingleTickets: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Sale/GetSeatingsForSaleAllocation?\";\n if (saleId === null)\n throw new Error(\"The parameter 'saleId' cannot be null.\");\n else if (saleId !== undefined)\n url_ += \"saleId=\" + encodeURIComponent(\"\" + saleId) + \"&\";\n if (allPossibleSeatings === null)\n throw new Error(\"The parameter 'allPossibleSeatings' cannot be null.\");\n else if (allPossibleSeatings !== undefined)\n url_ += \"allPossibleSeatings=\" + encodeURIComponent(\"\" + allPossibleSeatings) + \"&\";\n if (isAllocateSingleTickets === null)\n throw new Error(\"The parameter 'isAllocateSingleTickets' cannot be null.\");\n else if (isAllocateSingleTickets !== undefined)\n url_ += \"isAllocateSingleTickets=\" + encodeURIComponent(\"\" + isAllocateSingleTickets) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSeatingsForSaleAllocation(_response);\n });\n }\n\n protected processGetSeatingsForSaleAllocation(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SaleAvailableSeatings;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n exportSales(query: SaleQuery): Promise {\n let url_ = this.baseUrl + \"/api/Sale/ExportSales\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processExportSales(_response);\n });\n }\n\n protected processExportSales(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateSale(saleInput: SaleInput): Promise {\n let url_ = this.baseUrl + \"/api/Sale/UpdateSale\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(saleInput);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateSale(_response);\n });\n }\n\n protected processUpdateSale(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateSaleIsNoFulfill(input: ValueTupleOfLongAndNullableBoolean): Promise {\n let url_ = this.baseUrl + \"/api/Sale/UpdateSaleIsNoFulfill\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateSaleIsNoFulfill(_response);\n });\n }\n\n protected processUpdateSaleIsNoFulfill(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n mergePosManagedMarketplaceSale(input: PosManagedMarketplaceSaleInput): Promise {\n let url_ = this.baseUrl + \"/api/Sale/MergePosManagedMarketplaceSale\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processMergePosManagedMarketplaceSale(_response);\n });\n }\n\n protected processMergePosManagedMarketplaceSale(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n createMarketplaceSale(input: MarketplaceSaleInput): Promise {\n let url_ = this.baseUrl + \"/api/Sale/CreateMarketplaceSale\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateMarketplaceSale(_response);\n });\n }\n\n protected processCreateMarketplaceSale(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAllAvailableBuyers(): Promise {\n let url_ = this.baseUrl + \"/api/Sale/GetAllAvailableBuyers\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllAvailableBuyers(_response);\n });\n }\n\n protected processGetAllAvailableBuyers(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BuyerInfo[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n downloadMergedUserDocumentsPdf(saleId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Sale/DownloadMergedUserDocumentsPdf?\";\n if (saleId === null)\n throw new Error(\"The parameter 'saleId' cannot be null.\");\n else if (saleId !== undefined)\n url_ += \"saleId=\" + encodeURIComponent(\"\" + saleId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/octet-stream\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDownloadMergedUserDocumentsPdf(_response);\n });\n }\n\n protected processDownloadMergedUserDocumentsPdf(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\n if (fileName) {\n fileName = decodeURIComponent(fileName);\n } else {\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n }\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n wasteListingTickets(input: WasteListingTicketsInput): Promise {\n let url_ = this.baseUrl + \"/api/Sale/WasteListingTickets\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processWasteListingTickets(_response);\n });\n }\n\n protected processWasteListingTickets(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n unwasteSale(input: UnwasteSaleInput): Promise {\n let url_ = this.baseUrl + \"/api/Sale/UnwasteSale\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUnwasteSale(_response);\n });\n }\n\n protected processUnwasteSale(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSaleLineItemsBySaleId(saleId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Sale/GetSaleLineItemsBySaleId?\";\n if (saleId === null)\n throw new Error(\"The parameter 'saleId' cannot be null.\");\n else if (saleId !== undefined)\n url_ += \"saleId=\" + encodeURIComponent(\"\" + saleId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSaleLineItemsBySaleId(_response);\n });\n }\n\n protected processGetSaleLineItemsBySaleId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SaleLineItem[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface ISearchClient {\n\n getPurchaseSearchConfigs(includeAllUsers: boolean | undefined): Promise;\n\n getPurchaseSearchResult(searchConfigId: string | undefined): Promise;\n\n savePurchaseSearchResult(r: PurchaseSearchResult): Promise;\n\n getSaleSearchConfigs(includeAllUsers: boolean | undefined): Promise;\n\n getSaleSearchResult(searchConfigId: string | undefined): Promise;\n\n saveSaleSearchResult(r: SaleSearchResult): Promise;\n\n getInventorySearchConfigs(includeAllUsers: boolean | undefined): Promise;\n\n getInventorySearchResult(searchConfigId: string | undefined): Promise;\n\n saveInventorySearchResult(r: InventorySearchResult): Promise;\n\n deleteSearchConfig(searchConfigId: string | undefined): Promise;\n}\n\nexport class SearchClient extends PosClientBase implements ISearchClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getPurchaseSearchConfigs(includeAllUsers: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Search/GetPurchaseSearchConfigs?\";\n if (includeAllUsers === null)\n throw new Error(\"The parameter 'includeAllUsers' cannot be null.\");\n else if (includeAllUsers !== undefined)\n url_ += \"includeAllUsers=\" + encodeURIComponent(\"\" + includeAllUsers) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPurchaseSearchConfigs(_response);\n });\n }\n\n protected processGetPurchaseSearchConfigs(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PurchaseSearchResult[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getPurchaseSearchResult(searchConfigId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Search/GetPurchaseSearchResult?\";\n if (searchConfigId === null)\n throw new Error(\"The parameter 'searchConfigId' cannot be null.\");\n else if (searchConfigId !== undefined)\n url_ += \"searchConfigId=\" + encodeURIComponent(\"\" + searchConfigId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetPurchaseSearchResult(_response);\n });\n }\n\n protected processGetPurchaseSearchResult(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PurchaseSearchResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n savePurchaseSearchResult(r: PurchaseSearchResult): Promise {\n let url_ = this.baseUrl + \"/api/Search/SavePurchaseSearchResult\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(r);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSavePurchaseSearchResult(_response);\n });\n }\n\n protected processSavePurchaseSearchResult(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PurchaseSearchResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSaleSearchConfigs(includeAllUsers: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Search/GetSaleSearchConfigs?\";\n if (includeAllUsers === null)\n throw new Error(\"The parameter 'includeAllUsers' cannot be null.\");\n else if (includeAllUsers !== undefined)\n url_ += \"includeAllUsers=\" + encodeURIComponent(\"\" + includeAllUsers) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSaleSearchConfigs(_response);\n });\n }\n\n protected processGetSaleSearchConfigs(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SaleSearchResult[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSaleSearchResult(searchConfigId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Search/GetSaleSearchResult?\";\n if (searchConfigId === null)\n throw new Error(\"The parameter 'searchConfigId' cannot be null.\");\n else if (searchConfigId !== undefined)\n url_ += \"searchConfigId=\" + encodeURIComponent(\"\" + searchConfigId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSaleSearchResult(_response);\n });\n }\n\n protected processGetSaleSearchResult(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SaleSearchResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n saveSaleSearchResult(r: SaleSearchResult): Promise {\n let url_ = this.baseUrl + \"/api/Search/SaveSaleSearchResult\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(r);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSaveSaleSearchResult(_response);\n });\n }\n\n protected processSaveSaleSearchResult(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SaleSearchResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getInventorySearchConfigs(includeAllUsers: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Search/GetInventorySearchConfigs?\";\n if (includeAllUsers === null)\n throw new Error(\"The parameter 'includeAllUsers' cannot be null.\");\n else if (includeAllUsers !== undefined)\n url_ += \"includeAllUsers=\" + encodeURIComponent(\"\" + includeAllUsers) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetInventorySearchConfigs(_response);\n });\n }\n\n protected processGetInventorySearchConfigs(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as InventorySearchResult[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getInventorySearchResult(searchConfigId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Search/GetInventorySearchResult?\";\n if (searchConfigId === null)\n throw new Error(\"The parameter 'searchConfigId' cannot be null.\");\n else if (searchConfigId !== undefined)\n url_ += \"searchConfigId=\" + encodeURIComponent(\"\" + searchConfigId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetInventorySearchResult(_response);\n });\n }\n\n protected processGetInventorySearchResult(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as InventorySearchResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n saveInventorySearchResult(r: InventorySearchResult): Promise {\n let url_ = this.baseUrl + \"/api/Search/SaveInventorySearchResult\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(r);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSaveInventorySearchResult(_response);\n });\n }\n\n protected processSaveInventorySearchResult(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as InventorySearchResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n deleteSearchConfig(searchConfigId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Search/DeleteSearchConfig?\";\n if (searchConfigId === null)\n throw new Error(\"The parameter 'searchConfigId' cannot be null.\");\n else if (searchConfigId !== undefined)\n url_ += \"searchConfigId=\" + encodeURIComponent(\"\" + searchConfigId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteSearchConfig(_response);\n });\n }\n\n protected processDeleteSearchConfig(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface ISellerAccountClient {\n\n getCurrentUserSellerAccounts(): Promise;\n\n getSellerUsersForSellerAccount(): Promise;\n\n getSelleRolesForSellerAccount(): Promise;\n\n getAllSellerPermissions(): Promise;\n\n updateSellerUser(input: SellerUserInput): Promise;\n\n getSellerUser(stubHubLoginId: string | undefined): Promise;\n\n mergeRolesToSellerUser(input: SellerUserRolesInput): Promise;\n\n activateUserForSellerAccountByEmail(email: string | undefined): Promise;\n\n activateUserForSellerAccount(input: SellerUserAccountInput): Promise;\n\n deactivateUserForSellerAccount(input: SellerUserAccountInput): Promise;\n\n getSyncCenterSettings(): Promise;\n\n mergeSyncCenterSettings(settings: SyncCenterSettings): Promise;\n\n getAccountAutoPricingSettings(): Promise;\n\n mergeAccountAutoPricingSettings(input: AccountAutoPricingSettingsInputs): Promise;\n\n getAutoCurrencyConversionSettings(): Promise;\n\n mergeAutoCurrencyConversionSettings(settings: AutoCurrencyConversionSettings): Promise;\n\n getCustomTimeZoneSettings(): Promise;\n\n mergeCustomTimeZoneSettings(settings: TimezoneInfo | undefined): Promise;\n\n updateMarketplaceSellerAccountPassword(marketplace: Marketplace | undefined, password: string | undefined): Promise;\n\n createSellerRole(input: SellerRoleInput): Promise;\n\n updateSellerRole(input: SellerRoleInput): Promise;\n\n deleteSellerRole(roleId: number | undefined): Promise;\n\n initiateTradeDeskReset(username: string | undefined): Promise;\n\n resetTradeDeskPassword(input: TradeDeskPasswordResetInput): Promise;\n}\n\nexport class SellerAccountClient extends PosClientBase implements ISellerAccountClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getCurrentUserSellerAccounts(): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/GetCurrentUserSellerAccounts\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCurrentUserSellerAccounts(_response);\n });\n }\n\n protected processGetCurrentUserSellerAccounts(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SellerAccount[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSellerUsersForSellerAccount(): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/GetSellerUsersForSellerAccount\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSellerUsersForSellerAccount(_response);\n });\n }\n\n protected processGetSellerUsersForSellerAccount(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SellerUserAccountInfo[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSelleRolesForSellerAccount(): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/GetSelleRolesForSellerAccount\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSelleRolesForSellerAccount(_response);\n });\n }\n\n protected processGetSelleRolesForSellerAccount(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SellerRoleInfo[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAllSellerPermissions(): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/GetAllSellerPermissions\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllSellerPermissions(_response);\n });\n }\n\n protected processGetAllSellerPermissions(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SellerPermissionInfo[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateSellerUser(input: SellerUserInput): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/UpdateSellerUser\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateSellerUser(_response);\n });\n }\n\n protected processUpdateSellerUser(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSellerUser(stubHubLoginId: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/GetSellerUser?\";\n if (stubHubLoginId === null)\n throw new Error(\"The parameter 'stubHubLoginId' cannot be null.\");\n else if (stubHubLoginId !== undefined)\n url_ += \"stubHubLoginId=\" + encodeURIComponent(\"\" + stubHubLoginId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSellerUser(_response);\n });\n }\n\n protected processGetSellerUser(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SellerUser;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n mergeRolesToSellerUser(input: SellerUserRolesInput): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/MergeRolesToSellerUser\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processMergeRolesToSellerUser(_response);\n });\n }\n\n protected processMergeRolesToSellerUser(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n activateUserForSellerAccountByEmail(email: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/ActivateUserForSellerAccountByEmail?\";\n if (email === null)\n throw new Error(\"The parameter 'email' cannot be null.\");\n else if (email !== undefined)\n url_ += \"email=\" + encodeURIComponent(\"\" + email) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processActivateUserForSellerAccountByEmail(_response);\n });\n }\n\n protected processActivateUserForSellerAccountByEmail(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n activateUserForSellerAccount(input: SellerUserAccountInput): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/ActivateUserForSellerAccount\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processActivateUserForSellerAccount(_response);\n });\n }\n\n protected processActivateUserForSellerAccount(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n deactivateUserForSellerAccount(input: SellerUserAccountInput): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/DeactivateUserForSellerAccount\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeactivateUserForSellerAccount(_response);\n });\n }\n\n protected processDeactivateUserForSellerAccount(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSyncCenterSettings(): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/GetSyncCenterSettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSyncCenterSettings(_response);\n });\n }\n\n protected processGetSyncCenterSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SyncCenterSettings;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n mergeSyncCenterSettings(settings: SyncCenterSettings): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/MergeSyncCenterSettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(settings);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processMergeSyncCenterSettings(_response);\n });\n }\n\n protected processMergeSyncCenterSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAccountAutoPricingSettings(): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/GetAccountAutoPricingSettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAccountAutoPricingSettings(_response);\n });\n }\n\n protected processGetAccountAutoPricingSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AccountAutoPricingSettingsInputs;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n mergeAccountAutoPricingSettings(input: AccountAutoPricingSettingsInputs): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/MergeAccountAutoPricingSettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processMergeAccountAutoPricingSettings(_response);\n });\n }\n\n protected processMergeAccountAutoPricingSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAutoCurrencyConversionSettings(): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/GetAutoCurrencyConversionSettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAutoCurrencyConversionSettings(_response);\n });\n }\n\n protected processGetAutoCurrencyConversionSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AutoCurrencyConversionSettings;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n mergeAutoCurrencyConversionSettings(settings: AutoCurrencyConversionSettings): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/MergeAutoCurrencyConversionSettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(settings);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processMergeAutoCurrencyConversionSettings(_response);\n });\n }\n\n protected processMergeAutoCurrencyConversionSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCustomTimeZoneSettings(): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/GetCustomTimeZoneSettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCustomTimeZoneSettings(_response);\n });\n }\n\n protected processGetCustomTimeZoneSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TimezoneInfo;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n mergeCustomTimeZoneSettings(settings: TimezoneInfo | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/MergeCustomTimeZoneSettings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(settings);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processMergeCustomTimeZoneSettings(_response);\n });\n }\n\n protected processMergeCustomTimeZoneSettings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateMarketplaceSellerAccountPassword(marketplace: Marketplace | undefined, password: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/UpdateMarketplaceSellerAccountPassword?\";\n if (marketplace === null)\n throw new Error(\"The parameter 'marketplace' cannot be null.\");\n else if (marketplace !== undefined)\n url_ += \"marketplace=\" + encodeURIComponent(\"\" + marketplace) + \"&\";\n if (password === null)\n throw new Error(\"The parameter 'password' cannot be null.\");\n else if (password !== undefined)\n url_ += \"password=\" + encodeURIComponent(\"\" + password) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"PUT\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateMarketplaceSellerAccountPassword(_response);\n });\n }\n\n protected processUpdateMarketplaceSellerAccountPassword(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n createSellerRole(input: SellerRoleInput): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/CreateSellerRole\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateSellerRole(_response);\n });\n }\n\n protected processCreateSellerRole(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateSellerRole(input: SellerRoleInput): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/UpdateSellerRole\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateSellerRole(_response);\n });\n }\n\n protected processUpdateSellerRole(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n deleteSellerRole(roleId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/DeleteSellerRole?\";\n if (roleId === null)\n throw new Error(\"The parameter 'roleId' cannot be null.\");\n else if (roleId !== undefined)\n url_ += \"roleId=\" + encodeURIComponent(\"\" + roleId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteSellerRole(_response);\n });\n }\n\n protected processDeleteSellerRole(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n initiateTradeDeskReset(username: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/InitiateTradeDeskReset?\";\n if (username === null)\n throw new Error(\"The parameter 'username' cannot be null.\");\n else if (username !== undefined)\n url_ += \"username=\" + encodeURIComponent(\"\" + username) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processInitiateTradeDeskReset(_response);\n });\n }\n\n protected processInitiateTradeDeskReset(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n resetTradeDeskPassword(input: TradeDeskPasswordResetInput): Promise {\n let url_ = this.baseUrl + \"/api/SellerAccount/ResetTradeDeskPassword\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processResetTradeDeskPassword(_response);\n });\n }\n\n protected processResetTradeDeskPassword(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as PosUiActionResult;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface ISellerSupportCaseClient {\n\n getSellerSupportCaseNotesByCaseId(sellerSupportCaseId: number | undefined, take: number | null | undefined, skip: number | null | undefined, markAsRead: boolean | null | undefined): Promise;\n\n getSellerSupportCases(query: SellerSupportCaseQuery, take: number | null | undefined, skip: number | null | undefined): Promise;\n\n createSellerSupportCase(request: SellerSupportCaseRequest): Promise;\n\n createSellerSupportCaseReply(sellerSupportCaseId: number | undefined, noteContent: string | null | undefined, marketplace: string | null | undefined, attachments: FileParameter[] | null | undefined): Promise;\n\n updateSellerSupportCasesReadDate(sellerSupportCaseIds: number[], readDate: string | null | undefined): Promise;\n\n retrieveSellerSupportCaseNoteAttachments(attachmentRequests: SellerSupportCaseAttachmentRequest[], retrieveContent: boolean | undefined): Promise;\n}\n\nexport class SellerSupportCaseClient extends PosClientBase implements ISellerSupportCaseClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getSellerSupportCaseNotesByCaseId(sellerSupportCaseId: number | undefined, take: number | null | undefined, skip: number | null | undefined, markAsRead: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SellerSupportCase/GetSellerSupportCaseNotesByCaseId?\";\n if (sellerSupportCaseId === null)\n throw new Error(\"The parameter 'sellerSupportCaseId' cannot be null.\");\n else if (sellerSupportCaseId !== undefined)\n url_ += \"sellerSupportCaseId=\" + encodeURIComponent(\"\" + sellerSupportCaseId) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (markAsRead !== undefined && markAsRead !== null)\n url_ += \"markAsRead=\" + encodeURIComponent(\"\" + markAsRead) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSellerSupportCaseNotesByCaseId(_response);\n });\n }\n\n protected processGetSellerSupportCaseNotesByCaseId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SellerSupportCaseNote[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSellerSupportCases(query: SellerSupportCaseQuery, take: number | null | undefined, skip: number | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SellerSupportCase/GetSellerSupportCases?\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(query);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSellerSupportCases(_response);\n });\n }\n\n protected processGetSellerSupportCases(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SellerSupportCase[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n createSellerSupportCase(request: SellerSupportCaseRequest): Promise {\n let url_ = this.baseUrl + \"/api/SellerSupportCase/CreateSellerSupportCase\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(request);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateSellerSupportCase(_response);\n });\n }\n\n protected processCreateSellerSupportCase(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n createSellerSupportCaseReply(sellerSupportCaseId: number | undefined, noteContent: string | null | undefined, marketplace: string | null | undefined, attachments: FileParameter[] | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SellerSupportCase/CreateSellerSupportCaseReply?\";\n if (sellerSupportCaseId === null)\n throw new Error(\"The parameter 'sellerSupportCaseId' cannot be null.\");\n else if (sellerSupportCaseId !== undefined)\n url_ += \"sellerSupportCaseId=\" + encodeURIComponent(\"\" + sellerSupportCaseId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (noteContent !== null && noteContent !== undefined)\n content_.append(\"NoteContent\", noteContent.toString());\n if (marketplace !== null && marketplace !== undefined)\n content_.append(\"Marketplace\", marketplace.toString());\n if (attachments !== null && attachments !== undefined)\n attachments.forEach(item_ => content_.append(\"Attachments\", item_.data, item_.fileName ? item_.fileName : \"Attachments\") );\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processCreateSellerSupportCaseReply(_response);\n });\n }\n\n protected processCreateSellerSupportCaseReply(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateSellerSupportCasesReadDate(sellerSupportCaseIds: number[], readDate: string | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SellerSupportCase/UpdateSellerSupportCasesReadDate?\";\n if (readDate !== undefined && readDate !== null)\n url_ += \"readDate=\" + encodeURIComponent(\"\" + readDate) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(sellerSupportCaseIds);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateSellerSupportCasesReadDate(_response);\n });\n }\n\n protected processUpdateSellerSupportCasesReadDate(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n retrieveSellerSupportCaseNoteAttachments(attachmentRequests: SellerSupportCaseAttachmentRequest[], retrieveContent: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SellerSupportCase/RetrieveSellerSupportCaseNoteAttachments?\";\n if (retrieveContent === null)\n throw new Error(\"The parameter 'retrieveContent' cannot be null.\");\n else if (retrieveContent !== undefined)\n url_ += \"retrieveContent=\" + encodeURIComponent(\"\" + retrieveContent) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(attachmentRequests);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processRetrieveSellerSupportCaseNoteAttachments(_response);\n });\n }\n\n protected processRetrieveSellerSupportCaseNoteAttachments(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as FileDownloadInfo[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface ISellerUserClient {\n\n getSellerUserSetting(userSetting: UserSetting | undefined, currentLoginUserOnly: boolean | undefined): Promise;\n\n getSellerUserSettings(userSettings: UserSetting[] | undefined, currentLoginUserOnly: boolean | undefined): Promise<{ [key in keyof typeof UserSetting]?: string; }>;\n\n setSellerUserSetting(userSetting: UserSetting | undefined, userSettingValue: string, currentLoginUserOnly: boolean | undefined): Promise;\n\n getCustomInventoryQuickFiltersSetting(): Promise<(CustomQuickFilterOfListingQuery | null)[]>;\n\n setCustomInventoryQuickFiltersSetting(value: CustomQuickFilterOfListingQuery[]): Promise;\n\n getCustomOnSaleEventQuickFiltersSetting(): Promise<(CustomQuickFilterOfOnSaleEventQuery | null)[]>;\n\n setCustomOnSaleEventQuickFiltersSetting(value: CustomQuickFilterOfOnSaleEventQuery[]): Promise;\n\n getCustomSalesQuickFiltersSetting(): Promise<(CustomQuickFilterOfSaleQuery | null)[]>;\n\n setCustomSalesQuickFiltersSetting(value: CustomQuickFilterOfSaleQuery[]): Promise;\n\n getCustomPurchasesQuickFiltersSetting(): Promise<(CustomQuickFilterOfPurchaseOrderQuery | null)[]>;\n\n setCustomPurchasesQuickFiltersSetting(value: CustomQuickFilterOfPurchaseOrderQuery[]): Promise;\n\n getCustomMarketplacePaymentsQuickFiltersSetting(): Promise<(CustomQuickFilterOfMarketplacePaymentQuery | null)[]>;\n\n setCustomMarketplacePaymentsQuickFiltersSetting(value: CustomQuickFilterOfMarketplacePaymentQuery[]): Promise;\n\n getAvailableReleaseNoteInfos(currentLoginUserOnly: boolean | undefined, getUnreadOnly: boolean | undefined): Promise;\n\n getHasReleaseNotesUnread(currentLoginUserOnly: boolean | undefined): Promise;\n\n getReleaseNoteHtmlByReleaseNoteIds(currentLoginUserOnly: boolean | undefined, releaseNoteIds: number[]): Promise;\n\n getAllTutorialItems(currentLoginUserOnly: boolean | undefined): Promise;\n\n getTutorialItemContents(tutorialItemIds: number[]): Promise;\n}\n\nexport class SellerUserClient extends PosClientBase implements ISellerUserClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getSellerUserSetting(userSetting: UserSetting | undefined, currentLoginUserOnly: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SellerUser/GetSellerUserSetting?\";\n if (userSetting === null)\n throw new Error(\"The parameter 'userSetting' cannot be null.\");\n else if (userSetting !== undefined)\n url_ += \"userSetting=\" + encodeURIComponent(\"\" + userSetting) + \"&\";\n if (currentLoginUserOnly === null)\n throw new Error(\"The parameter 'currentLoginUserOnly' cannot be null.\");\n else if (currentLoginUserOnly !== undefined)\n url_ += \"currentLoginUserOnly=\" + encodeURIComponent(\"\" + currentLoginUserOnly) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSellerUserSetting(_response);\n });\n }\n\n protected processGetSellerUserSetting(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SellerUserSetting;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getSellerUserSettings(userSettings: UserSetting[] | undefined, currentLoginUserOnly: boolean | undefined): Promise<{ [key in keyof typeof UserSetting]?: string; }> {\n let url_ = this.baseUrl + \"/api/SellerUser/GetSellerUserSettings?\";\n if (userSettings === null)\n throw new Error(\"The parameter 'userSettings' cannot be null.\");\n else if (userSettings !== undefined)\n userSettings && userSettings.forEach(item => { url_ += \"userSettings=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (currentLoginUserOnly === null)\n throw new Error(\"The parameter 'currentLoginUserOnly' cannot be null.\");\n else if (currentLoginUserOnly !== undefined)\n url_ += \"currentLoginUserOnly=\" + encodeURIComponent(\"\" + currentLoginUserOnly) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetSellerUserSettings(_response);\n });\n }\n\n protected processGetSellerUserSettings(response: Response): Promise<{ [key in keyof typeof UserSetting]?: string; }> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as { [key in keyof typeof UserSetting]?: string; };\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<{ [key in keyof typeof UserSetting]?: string; }>(null as any);\n }\n\n setSellerUserSetting(userSetting: UserSetting | undefined, userSettingValue: string, currentLoginUserOnly: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SellerUser/SetSellerUserSetting?\";\n if (userSetting === null)\n throw new Error(\"The parameter 'userSetting' cannot be null.\");\n else if (userSetting !== undefined)\n url_ += \"userSetting=\" + encodeURIComponent(\"\" + userSetting) + \"&\";\n if (currentLoginUserOnly === null)\n throw new Error(\"The parameter 'currentLoginUserOnly' cannot be null.\");\n else if (currentLoginUserOnly !== undefined)\n url_ += \"currentLoginUserOnly=\" + encodeURIComponent(\"\" + currentLoginUserOnly) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(userSettingValue);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSetSellerUserSetting(_response);\n });\n }\n\n protected processSetSellerUserSetting(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCustomInventoryQuickFiltersSetting(): Promise<(CustomQuickFilterOfListingQuery | null)[]> {\n let url_ = this.baseUrl + \"/api/SellerUser/GetCustomInventoryQuickFiltersSetting\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCustomInventoryQuickFiltersSetting(_response);\n });\n }\n\n protected processGetCustomInventoryQuickFiltersSetting(response: Response): Promise<(CustomQuickFilterOfListingQuery | null)[]> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as (CustomQuickFilterOfListingQuery | null)[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<(CustomQuickFilterOfListingQuery | null)[]>(null as any);\n }\n\n setCustomInventoryQuickFiltersSetting(value: CustomQuickFilterOfListingQuery[]): Promise {\n let url_ = this.baseUrl + \"/api/SellerUser/SetCustomInventoryQuickFiltersSetting\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(value);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSetCustomInventoryQuickFiltersSetting(_response);\n });\n }\n\n protected processSetCustomInventoryQuickFiltersSetting(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCustomOnSaleEventQuickFiltersSetting(): Promise<(CustomQuickFilterOfOnSaleEventQuery | null)[]> {\n let url_ = this.baseUrl + \"/api/SellerUser/GetCustomOnSaleEventQuickFiltersSetting\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCustomOnSaleEventQuickFiltersSetting(_response);\n });\n }\n\n protected processGetCustomOnSaleEventQuickFiltersSetting(response: Response): Promise<(CustomQuickFilterOfOnSaleEventQuery | null)[]> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as (CustomQuickFilterOfOnSaleEventQuery | null)[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<(CustomQuickFilterOfOnSaleEventQuery | null)[]>(null as any);\n }\n\n setCustomOnSaleEventQuickFiltersSetting(value: CustomQuickFilterOfOnSaleEventQuery[]): Promise {\n let url_ = this.baseUrl + \"/api/SellerUser/SetCustomOnSaleEventQuickFiltersSetting\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(value);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSetCustomOnSaleEventQuickFiltersSetting(_response);\n });\n }\n\n protected processSetCustomOnSaleEventQuickFiltersSetting(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCustomSalesQuickFiltersSetting(): Promise<(CustomQuickFilterOfSaleQuery | null)[]> {\n let url_ = this.baseUrl + \"/api/SellerUser/GetCustomSalesQuickFiltersSetting\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCustomSalesQuickFiltersSetting(_response);\n });\n }\n\n protected processGetCustomSalesQuickFiltersSetting(response: Response): Promise<(CustomQuickFilterOfSaleQuery | null)[]> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as (CustomQuickFilterOfSaleQuery | null)[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<(CustomQuickFilterOfSaleQuery | null)[]>(null as any);\n }\n\n setCustomSalesQuickFiltersSetting(value: CustomQuickFilterOfSaleQuery[]): Promise {\n let url_ = this.baseUrl + \"/api/SellerUser/SetCustomSalesQuickFiltersSetting\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(value);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSetCustomSalesQuickFiltersSetting(_response);\n });\n }\n\n protected processSetCustomSalesQuickFiltersSetting(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCustomPurchasesQuickFiltersSetting(): Promise<(CustomQuickFilterOfPurchaseOrderQuery | null)[]> {\n let url_ = this.baseUrl + \"/api/SellerUser/GetCustomPurchasesQuickFiltersSetting\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCustomPurchasesQuickFiltersSetting(_response);\n });\n }\n\n protected processGetCustomPurchasesQuickFiltersSetting(response: Response): Promise<(CustomQuickFilterOfPurchaseOrderQuery | null)[]> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as (CustomQuickFilterOfPurchaseOrderQuery | null)[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<(CustomQuickFilterOfPurchaseOrderQuery | null)[]>(null as any);\n }\n\n setCustomPurchasesQuickFiltersSetting(value: CustomQuickFilterOfPurchaseOrderQuery[]): Promise {\n let url_ = this.baseUrl + \"/api/SellerUser/SetCustomPurchasesQuickFiltersSetting\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(value);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSetCustomPurchasesQuickFiltersSetting(_response);\n });\n }\n\n protected processSetCustomPurchasesQuickFiltersSetting(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getCustomMarketplacePaymentsQuickFiltersSetting(): Promise<(CustomQuickFilterOfMarketplacePaymentQuery | null)[]> {\n let url_ = this.baseUrl + \"/api/SellerUser/GetCustomMarketplacePaymentsQuickFiltersSetting\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetCustomMarketplacePaymentsQuickFiltersSetting(_response);\n });\n }\n\n protected processGetCustomMarketplacePaymentsQuickFiltersSetting(response: Response): Promise<(CustomQuickFilterOfMarketplacePaymentQuery | null)[]> {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as (CustomQuickFilterOfMarketplacePaymentQuery | null)[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve<(CustomQuickFilterOfMarketplacePaymentQuery | null)[]>(null as any);\n }\n\n setCustomMarketplacePaymentsQuickFiltersSetting(value: CustomQuickFilterOfMarketplacePaymentQuery[]): Promise {\n let url_ = this.baseUrl + \"/api/SellerUser/SetCustomMarketplacePaymentsQuickFiltersSetting\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(value);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processSetCustomMarketplacePaymentsQuickFiltersSetting(_response);\n });\n }\n\n protected processSetCustomMarketplacePaymentsQuickFiltersSetting(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAvailableReleaseNoteInfos(currentLoginUserOnly: boolean | undefined, getUnreadOnly: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SellerUser/GetAvailableReleaseNoteInfos?\";\n if (currentLoginUserOnly === null)\n throw new Error(\"The parameter 'currentLoginUserOnly' cannot be null.\");\n else if (currentLoginUserOnly !== undefined)\n url_ += \"currentLoginUserOnly=\" + encodeURIComponent(\"\" + currentLoginUserOnly) + \"&\";\n if (getUnreadOnly === null)\n throw new Error(\"The parameter 'getUnreadOnly' cannot be null.\");\n else if (getUnreadOnly !== undefined)\n url_ += \"getUnreadOnly=\" + encodeURIComponent(\"\" + getUnreadOnly) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAvailableReleaseNoteInfos(_response);\n });\n }\n\n protected processGetAvailableReleaseNoteInfos(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReleaseNote[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getHasReleaseNotesUnread(currentLoginUserOnly: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SellerUser/GetHasReleaseNotesUnread?\";\n if (currentLoginUserOnly === null)\n throw new Error(\"The parameter 'currentLoginUserOnly' cannot be null.\");\n else if (currentLoginUserOnly !== undefined)\n url_ += \"currentLoginUserOnly=\" + encodeURIComponent(\"\" + currentLoginUserOnly) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetHasReleaseNotesUnread(_response);\n });\n }\n\n protected processGetHasReleaseNotesUnread(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getReleaseNoteHtmlByReleaseNoteIds(currentLoginUserOnly: boolean | undefined, releaseNoteIds: number[]): Promise {\n let url_ = this.baseUrl + \"/api/SellerUser/GetReleaseNoteHtmlByReleaseNoteIds?\";\n if (currentLoginUserOnly === null)\n throw new Error(\"The parameter 'currentLoginUserOnly' cannot be null.\");\n else if (currentLoginUserOnly !== undefined)\n url_ += \"currentLoginUserOnly=\" + encodeURIComponent(\"\" + currentLoginUserOnly) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(releaseNoteIds);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetReleaseNoteHtmlByReleaseNoteIds(_response);\n });\n }\n\n protected processGetReleaseNoteHtmlByReleaseNoteIds(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReleaseNote[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getAllTutorialItems(currentLoginUserOnly: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/SellerUser/GetAllTutorialItems?\";\n if (currentLoginUserOnly === null)\n throw new Error(\"The parameter 'currentLoginUserOnly' cannot be null.\");\n else if (currentLoginUserOnly !== undefined)\n url_ += \"currentLoginUserOnly=\" + encodeURIComponent(\"\" + currentLoginUserOnly) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllTutorialItems(_response);\n });\n }\n\n protected processGetAllTutorialItems(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TutorialItem[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getTutorialItemContents(tutorialItemIds: number[]): Promise {\n let url_ = this.baseUrl + \"/api/SellerUser/GetTutorialItemContents\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(tutorialItemIds);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTutorialItemContents(_response);\n });\n }\n\n protected processGetTutorialItemContents(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TutorialItemContent[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface ITagClient {\n\n getTagsByEntityTypeId(entityType: ActionOutboxEntityType | undefined, includeInReport: boolean | null | undefined): Promise;\n\n getTagsWithValueByEntityTypeId(entityType: ActionOutboxEntityType | undefined): Promise;\n\n upsertEntityTagsMetadata(entityType: ActionOutboxEntityType | undefined, tags: Tag[]): Promise;\n\n deleteEntityTagsMetadata(entityType: ActionOutboxEntityType | undefined, tagNames: string[]): Promise;\n}\n\nexport class TagClient extends PosClientBase implements ITagClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getTagsByEntityTypeId(entityType: ActionOutboxEntityType | undefined, includeInReport: boolean | null | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Tag/GetTagsByEntityTypeId?\";\n if (entityType === null)\n throw new Error(\"The parameter 'entityType' cannot be null.\");\n else if (entityType !== undefined)\n url_ += \"entityType=\" + encodeURIComponent(\"\" + entityType) + \"&\";\n if (includeInReport !== undefined && includeInReport !== null)\n url_ += \"includeInReport=\" + encodeURIComponent(\"\" + includeInReport) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTagsByEntityTypeId(_response);\n });\n }\n\n protected processGetTagsByEntityTypeId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Tag[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n getTagsWithValueByEntityTypeId(entityType: ActionOutboxEntityType | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Tag/GetTagsWithValueByEntityTypeId?\";\n if (entityType === null)\n throw new Error(\"The parameter 'entityType' cannot be null.\");\n else if (entityType !== undefined)\n url_ += \"entityType=\" + encodeURIComponent(\"\" + entityType) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetTagsWithValueByEntityTypeId(_response);\n });\n }\n\n protected processGetTagsWithValueByEntityTypeId(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as Tag[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n upsertEntityTagsMetadata(entityType: ActionOutboxEntityType | undefined, tags: Tag[]): Promise {\n let url_ = this.baseUrl + \"/api/Tag/UpsertEntityTagsMetadata?\";\n if (entityType === null)\n throw new Error(\"The parameter 'entityType' cannot be null.\");\n else if (entityType !== undefined)\n url_ += \"entityType=\" + encodeURIComponent(\"\" + entityType) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(tags);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpsertEntityTagsMetadata(_response);\n });\n }\n\n protected processUpsertEntityTagsMetadata(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n deleteEntityTagsMetadata(entityType: ActionOutboxEntityType | undefined, tagNames: string[]): Promise {\n let url_ = this.baseUrl + \"/api/Tag/DeleteEntityTagsMetadata?\";\n if (entityType === null)\n throw new Error(\"The parameter 'entityType' cannot be null.\");\n else if (entityType !== undefined)\n url_ += \"entityType=\" + encodeURIComponent(\"\" + entityType) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(tagNames);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteEntityTagsMetadata(_response);\n });\n }\n\n protected processDeleteEntityTagsMetadata(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface ITicketClient {\n\n getAllDeliveryTypeTicketTypeMappings(): Promise;\n\n mergeTicketGroups(input: TicketGroupMergeInput, isManual: boolean | undefined): Promise;\n}\n\nexport class TicketClient extends PosClientBase implements ITicketClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getAllDeliveryTypeTicketTypeMappings(): Promise {\n let url_ = this.baseUrl + \"/api/Ticket/GetAllDeliveryTypeTicketTypeMappings\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetAllDeliveryTypeTicketTypeMappings(_response);\n });\n }\n\n protected processGetAllDeliveryTypeTicketTypeMappings(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DeliveryTypeTicketTypeMapping[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n mergeTicketGroups(input: TicketGroupMergeInput, isManual: boolean | undefined): Promise {\n let url_ = this.baseUrl + \"/api/Ticket/MergeTicketGroups?\";\n if (isManual === null)\n throw new Error(\"The parameter 'isManual' cannot be null.\");\n else if (isManual !== undefined)\n url_ += \"isManual=\" + encodeURIComponent(\"\" + isManual) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(input);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processMergeTicketGroups(_response);\n });\n }\n\n protected processMergeTicketGroups(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface IUserGroupClient {\n\n getUserGroups(): Promise;\n\n insertUserGroup(userGroupName: string | undefined, userGroupDescription: string | null | undefined, sellerUserIds: string[]): Promise;\n\n updateUserGroup(userGroupId: number | undefined, userGroupName: string | undefined, userGroupDescription: string | null | undefined, sellerUserIds: string[]): Promise;\n\n deleteUserGroup(userGroupId: number | undefined): Promise;\n}\n\nexport class UserGroupClient extends PosClientBase implements IUserGroupClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(configuration: PosClientConfig, baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n super(configuration);\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\n }\n\n getUserGroups(): Promise {\n let url_ = this.baseUrl + \"/api/UserGroup/GetUserGroups\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processGetUserGroups(_response);\n });\n }\n\n protected processGetUserGroups(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserGroup[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n insertUserGroup(userGroupName: string | undefined, userGroupDescription: string | null | undefined, sellerUserIds: string[]): Promise {\n let url_ = this.baseUrl + \"/api/UserGroup/InsertUserGroup?\";\n if (userGroupName === null)\n throw new Error(\"The parameter 'userGroupName' cannot be null.\");\n else if (userGroupName !== undefined)\n url_ += \"userGroupName=\" + encodeURIComponent(\"\" + userGroupName) + \"&\";\n if (userGroupDescription !== undefined && userGroupDescription !== null)\n url_ += \"userGroupDescription=\" + encodeURIComponent(\"\" + userGroupDescription) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(sellerUserIds);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processInsertUserGroup(_response);\n });\n }\n\n protected processInsertUserGroup(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as number;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n updateUserGroup(userGroupId: number | undefined, userGroupName: string | undefined, userGroupDescription: string | null | undefined, sellerUserIds: string[]): Promise {\n let url_ = this.baseUrl + \"/api/UserGroup/UpdateUserGroup?\";\n if (userGroupId === null)\n throw new Error(\"The parameter 'userGroupId' cannot be null.\");\n else if (userGroupId !== undefined)\n url_ += \"userGroupId=\" + encodeURIComponent(\"\" + userGroupId) + \"&\";\n if (userGroupName === null)\n throw new Error(\"The parameter 'userGroupName' cannot be null.\");\n else if (userGroupName !== undefined)\n url_ += \"userGroupName=\" + encodeURIComponent(\"\" + userGroupName) + \"&\";\n if (userGroupDescription !== undefined && userGroupDescription !== null)\n url_ += \"userGroupDescription=\" + encodeURIComponent(\"\" + userGroupDescription) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(sellerUserIds);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processUpdateUserGroup(_response);\n });\n }\n\n protected processUpdateUserGroup(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n deleteUserGroup(userGroupId: number | undefined): Promise {\n let url_ = this.baseUrl + \"/api/UserGroup/DeleteUserGroup?\";\n if (userGroupId === null)\n throw new Error(\"The parameter 'userGroupId' cannot be null.\");\n else if (userGroupId !== undefined)\n url_ += \"userGroupId=\" + encodeURIComponent(\"\" + userGroupId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.transformOptions(options_).then(transformedOptions_ => {\n return this.http.fetch(url_, transformedOptions_);\n }).then((_response: Response) => {\n return this.processDeleteUserGroup(_response);\n });\n }\n\n protected processDeleteUserGroup(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface ActivityLog {\n activityLogId: number;\n entityId: number;\n entityType: ActionOutboxEntityType;\n actionDate: string;\n initiatedBy: ActivityLogInitiatedByUser;\n initiatedByImpersonated: ActivityLogInitiatedByUser | null;\n actionType: ActionType;\n auditActionType: AuditActionType | null;\n actionTypeDisplay: string;\n additionalInfo: ActivityLogAdditionalInformationDictionaryOfActivityLogValueChange;\n event: Event | null;\n performer: Performer | null;\n venue: Venue | null;\n tagName: string | null;\n}\n\nexport enum ActionOutboxEntityType {\n Sale = \"Sale\",\n Listing = \"Listing\",\n Purchase = \"Purchase\",\n SellerSupportCase = \"SellerSupportCase\",\n Document = \"Document\",\n SellerEvent = \"SellerEvent\",\n InboundEmail = \"InboundEmail\",\n TicketGroup = \"TicketGroup\",\n}\n\nexport interface ActivityLogInitiatedByUser {\n userId: string;\n username: string | null;\n}\n\nexport enum ActionType {\n SaleConfirm = \"SaleConfirm\",\n SaleReject = \"SaleReject\",\n SaleUploadBarcodes = \"SaleUploadBarcodes\",\n SaleUploadTicketUrls = \"SaleUploadTicketUrls\",\n SaleUploadProofOfTransfer = \"SaleUploadProofOfTransfer\",\n SaleUploadEtickets = \"SaleUploadEtickets\",\n SaleMarketplaceInsert = \"SaleMarketplaceInsert\",\n SaleMarketplaceUpdate = \"SaleMarketplaceUpdate\",\n SaleBroadcastConfirmSale = \"SaleBroadcastConfirmSale\",\n SaleBroadcastRejectSale = \"SaleBroadcastRejectSale\",\n SaleBroadcastUploadBarcodes = \"SaleBroadcastUploadBarcodes\",\n SaleBroadcastUploadETickets = \"SaleBroadcastUploadETickets\",\n SaleBroadcastUploadTransferProof = \"SaleBroadcastUploadTransferProof\",\n SaleBroadcastUploadTransferUrls = \"SaleBroadcastUploadTransferUrls\",\n SaleViewed = \"SaleViewed\",\n SaleDeallocate = \"SaleDeallocate\",\n SaleMarketplaceUpdateTicketType = \"SaleMarketplaceUpdateTicketType\",\n SaleHoldTickets = \"SaleHoldTickets\",\n SaleHoldExpire = \"SaleHoldExpire\",\n SaleHoldCreate = \"SaleHoldCreate\",\n SaleUploadTransferProofId = \"SaleUploadTransferProofId\",\n SaleBroadcastUploadTransferProofId = \"SaleBroadcastUploadTransferProofId\",\n SaleUpdateTicketType = \"SaleUpdateTicketType\",\n SaleTicketMasterBarcodeTransfer = \"SaleTicketMasterBarcodeTransfer\",\n SaleCostUpdate = \"SaleCostUpdate\",\n SaleCostInsert = \"SaleCostInsert\",\n SaleCostDelete = \"SaleCostDelete\",\n SaleBroadcastUpdateTicketType = \"SaleBroadcastUpdateTicketType\",\n SaleConfirmTransferWithoutProof = \"SaleConfirmTransferWithoutProof\",\n SaleResetFulfillment = \"SaleResetFulfillment\",\n SaleTotalProceedsUpdate = \"SaleTotalProceedsUpdate\",\n SaleDocumentUploadActivity = \"SaleDocumentUploadActivity\",\n SaleFulfillWithoutArtifacts = \"SaleFulfillWithoutArtifacts\",\n SaleNoFulfillUpdate = \"SaleNoFulfillUpdate\",\n SaleTicketsAllocatedAction = \"SaleTicketsAllocatedAction\",\n SaleCommissionsUpdate = \"SaleCommissionsUpdate\",\n SaleRemoveTicketUserDocuments = \"SaleRemoveTicketUserDocuments\",\n SaleUpdatePaymentState = \"SaleUpdatePaymentState\",\n ListingInsert = \"ListingInsert\",\n ListingUpdateUnitNetProceeds = \"ListingUpdateUnitNetProceeds\",\n ListingUpdateAllInPrice = \"ListingUpdateAllInPrice\",\n ListingUpdateDeliveryType = \"ListingUpdateDeliveryType\",\n ListingUpdateSplitType = \"ListingUpdateSplitType\",\n ListingUpdateInHandDate = \"ListingUpdateInHandDate\",\n ListingUpdateHideSeats = \"ListingUpdateHideSeats\",\n ListingSplit = \"ListingSplit\",\n ListingMerge = \"ListingMerge\",\n ListingBroadcast = \"ListingBroadcast\",\n ListingUnbroadcast = \"ListingUnbroadcast\",\n ListingMarketplaceInsert = \"ListingMarketplaceInsert\",\n ListingMarketplaceUpdate = \"ListingMarketplaceUpdate\",\n ListingMarketplaceDelete = \"ListingMarketplaceDelete\",\n ListingUpdatePricerUserId = \"ListingUpdatePricerUserId\",\n BroadcastMarketplaceListing = \"BroadcastMarketplaceListing\",\n UnbroadcastMarketplaceListing = \"UnbroadcastMarketplaceListing\",\n ListingBroadcastMergeListing = \"ListingBroadcastMergeListing\",\n ListingBroadcastSplitListing = \"ListingBroadcastSplitListing\",\n ListingBroadcastUpdateInHandDate = \"ListingBroadcastUpdateInHandDate\",\n ListingBroadcastUpdateAllInPrice = \"ListingBroadcastUpdateAllInPrice\",\n ListingBroadcastUpdateUnitNetProceeds = \"ListingBroadcastUpdateUnitNetProceeds\",\n ListingBroadcastUpdateSplitType = \"ListingBroadcastUpdateSplitType\",\n ListingBroadcastUpdateDeliveryType = \"ListingBroadcastUpdateDeliveryType\",\n ListingViewed = \"ListingViewed\",\n ListingDelete = \"ListingDelete\",\n ListingUpdateQuantity = \"ListingUpdateQuantity\",\n ListingBroadcastUpdateQuantity = \"ListingBroadcastUpdateQuantity\",\n ListingUpdateListingNotes = \"ListingUpdateListingNotes\",\n ListingBroadcastUpdateListingNotes = \"ListingBroadcastUpdateListingNotes\",\n ListingUpdateSeating = \"ListingUpdateSeating\",\n ListingBroadcastUpdateSeating = \"ListingBroadcastUpdateSeating\",\n ListingPreDeliverBarcodes = \"ListingPreDeliverBarcodes\",\n ListingPreDeliverETickets = \"ListingPreDeliverETickets\",\n ListingRebroadcast = \"ListingRebroadcast\",\n ListingSyncUpdate = \"ListingSyncUpdate\",\n ListingUpdateNetProceedsFloor = \"ListingUpdateNetProceedsFloor\",\n ListingAutoPricingConfig = \"ListingAutoPricingConfig\",\n ListingAutoPricingResultUpdate = \"ListingAutoPricingResultUpdate\",\n ListingPreDeliverTicketExternalIds = \"ListingPreDeliverTicketExternalIds\",\n ListingPreDeliverTicketUrls = \"ListingPreDeliverTicketUrls\",\n ListingMarketplaceSeatingOverrideUpdate = \"ListingMarketplaceSeatingOverrideUpdate\",\n ListingRemoveTicketBarcodes = \"ListingRemoveTicketBarcodes\",\n ListingRemoveTicketUserDocuments = \"ListingRemoveTicketUserDocuments\",\n ListingUploadVerificationDocumentAction = \"ListingUploadVerificationDocumentAction\",\n ListingCompsViewed = \"ListingCompsViewed\",\n ListingOfflineSaleAdded = \"ListingOfflineSaleAdded\",\n ListingDocumentViewed = \"ListingDocumentViewed\",\n ListingDocumentDownloaded = \"ListingDocumentDownloaded\",\n ListingBroadcastUploadVerificationDocument = \"ListingBroadcastUploadVerificationDocument\",\n ListingBroadcastUpdateHideSeats = \"ListingBroadcastUpdateHideSeats\",\n ListingDocumentUploadActivity = \"ListingDocumentUploadActivity\",\n ListingUpdateUnitCost = \"ListingUpdateUnitCost\",\n ListingUpdateInternalNotes = \"ListingUpdateInternalNotes\",\n ListingNoFulfillUpdate = \"ListingNoFulfillUpdate\",\n ListingUpdateAdminHold = \"ListingUpdateAdminHold\",\n ListingListingGroupUpdate = \"ListingListingGroupUpdate\",\n ListingSaleConfirm = \"ListingSaleConfirm\",\n ListingSaleDeallocate = \"ListingSaleDeallocate\",\n ListingSaleMarketplaceInsert = \"ListingSaleMarketplaceInsert\",\n ListingUpdateTopTicketType = \"ListingUpdateTopTicketType\",\n ListingUpdateDuplicateAttribute = \"ListingUpdateDuplicateAttribute\",\n SellerSupportCaseCreate = \"SellerSupportCaseCreate\",\n SellerSupportCaseReply = \"SellerSupportCaseReply\",\n PurchaseInsert = \"PurchaseInsert\",\n PurchaseTicketGroupsMerge = \"PurchaseTicketGroupsMerge\",\n PurchasePaymentsMerge = \"PurchasePaymentsMerge\",\n PurchaseCostsMerge = \"PurchaseCostsMerge\",\n PurchaseUpdate = \"PurchaseUpdate\",\n PurchaseTicketGroupUpdate = \"PurchaseTicketGroupUpdate\",\n PurchaseTicketGroupInsert = \"PurchaseTicketGroupInsert\",\n PurchaseTicketGroupDelete = \"PurchaseTicketGroupDelete\",\n PurchasePaymentUpdate = \"PurchasePaymentUpdate\",\n PurchasePaymentInsert = \"PurchasePaymentInsert\",\n PurchasePaymentDelete = \"PurchasePaymentDelete\",\n PurchaseCostUpdate = \"PurchaseCostUpdate\",\n PurchaseCostInsert = \"PurchaseCostInsert\",\n PurchaseCostDelete = \"PurchaseCostDelete\",\n PurchaseCancel = \"PurchaseCancel\",\n PurchaseVoid = \"PurchaseVoid\",\n PurchaseResetListings = \"PurchaseResetListings\",\n PurchaseOrderQualityStateUpdate = \"PurchaseOrderQualityStateUpdate\",\n SaleDocumentUpload = \"SaleDocumentUpload\",\n ListingDocumentUpload = \"ListingDocumentUpload\",\n InboundEmailReprocess = \"InboundEmailReprocess\",\n}\n\nexport enum AuditActionType {\n TagCreate = \"TagCreate\",\n TagUpdate = \"TagUpdate\",\n TagDelete = \"TagDelete\",\n TagTypeCreate = \"TagTypeCreate\",\n TagTypeUpdate = \"TagTypeUpdate\",\n SaleInternalNotesUpdate = \"SaleInternalNotesUpdate\",\n SaleInternalNotesInsert = \"SaleInternalNotesInsert\",\n ListingSellerEventUpdate = \"ListingSellerEventUpdate\",\n PurchaseCommissionUpdate = \"PurchaseCommissionUpdate\",\n PurchaseCommissionInsert = \"PurchaseCommissionInsert\",\n PurchaseInternalNotesUpdate = \"PurchaseInternalNotesUpdate\",\n PurchaseInternalNotesInsert = \"PurchaseInternalNotesInsert\",\n}\n\nexport interface ActivityLogAdditionalInformationDictionaryOfActivityLogValueChange {\n\n [key: string]: ActivityLogValueChange | any;\n}\n\nexport interface ActivityLogValueChange {\n oldValue: string | null;\n newValue: string | null;\n message: ActivityLogMessage | null;\n}\n\nexport interface ActivityLogMessage {\n errorCode: string | null;\n message: string | null;\n state: MarketplaceOperationResultState;\n}\n\nexport enum MarketplaceOperationResultState {\n Succeeded = \"Succeeded\",\n FailedWithRetryableError = \"FailedWithRetryableError\",\n FailedWithNonRetryableError = \"FailedWithNonRetryableError\",\n FailedAndRequiresSellerAction = \"FailedAndRequiresSellerAction\",\n NotImplemented = \"NotImplemented\",\n Skipped = \"Skipped\",\n}\n\nexport interface CatalogEntity {\n /** ViagogoEntityId */\n viagId: number | null;\n name: string;\n shortName: string | null;\n descr: string | null;\n}\n\nexport interface Event extends CatalogEntity {\n /** PosEventIdS */\n posIds: string[];\n viagVirtualId: string;\n mappingId: string | null;\n dates: DateTimeRange;\n datesUtc: DateTimeRange;\n onSaleDate: string | null;\n rawOnSaleDate: string | null;\n rawPreSaleDate: string | null;\n shortName: string | null;\n eventType: string | null;\n eventStatus: ApiEventStatus | null;\n /** Performer Id */\n perfId: number | null;\n venueId: number;\n venueCfgId: number | null;\n genre: TopLevelCategory;\n /** Mapping Rejection Reason Id */\n mapRejRsnId: number | null;\n /** Mapping Rejection Reason Default Text */\n mapRejDftTxt: string | null;\n}\n\nexport interface DateTimeRange {\n start: string | null;\n end: string | null;\n}\n\nexport enum ApiEventStatus {\n Normal = \"Normal\",\n Postponed = \"Postponed\",\n Cancelled = \"Cancelled\",\n Rescheduled = \"Rescheduled\",\n Relocated = \"Relocated\",\n RelocatedAndRescheduled = \"RelocatedAndRescheduled\",\n Draft = \"Draft\",\n Deleted = \"Deleted\",\n Contingent = \"Contingent\",\n}\n\nexport enum TopLevelCategory {\n Theatre = \"Theatre\",\n Sports = \"Sports\",\n Concert = \"Concert\",\n Festival = \"Festival\",\n}\n\nexport interface Performer extends CatalogEntity {\n /** Categories */\n categ: TopLevelCategory[];\n /** Genre Id */\n genreId: number | null;\n /** Genre name */\n grName: string | null;\n descr: string | null;\n}\n\nexport interface Venue extends CatalogEntity {\n descr: string | null;\n city: string | null;\n /** State/Province */\n state: string | null;\n country: Country | null;\n /** Do not include this object as first-class search-result items\nSince this obj is embedded in another object as an info-only obj */\n excludeSearch: boolean;\n}\n\nexport interface Country {\n code: string | null;\n name: string | null;\n}\n\nexport interface ActivityLogQuery {\n userId: string | null;\n includeUserOnly: boolean | null;\n impersonatedUserId: string | null;\n entityId: number | null;\n entityType: ActionOutboxEntityType | null;\n actionTypes: ActionType[] | null;\n auditActionTypes: AuditActionType[] | null;\n take: number | null;\n skip: number | null;\n /** Filter by tag name within audit data */\n tagName: string | null;\n}\n\nexport enum DocumentType {\n ETicket = \"ETicket\",\n TicketTransfer = \"TicketTransfer\",\n AirBill = \"AirBill\",\n PKPass = \"PKPass\",\n GoogleWallet = \"GoogleWallet\",\n ListingVerification = \"ListingVerification\",\n QRCode = \"QRCode\",\n}\n\nexport interface StateProvince {\n id: number;\n name: string;\n countryName: string;\n cId: number | null;\n}\n\nexport interface City {\n id: number;\n name: string;\n stateProvinceName: string | null;\n countryName: string;\n cId: number | null;\n}\n\nexport interface ReactAppContext {\n stage: string;\n appName: string;\n isNativeApp: boolean;\n cobrandId: CoBrandId;\n environment: string;\n features: FeatureDetail[];\n isDevelopment: boolean;\n version: string;\n}\n\nexport enum CoBrandId {\n Viagogo = \"Viagogo\",\n TicketUtil = \"TicketUtil\",\n Starburst = \"Starburst\",\n StubHub = \"StubHub\",\n}\n\nexport interface FeatureDetail {\n id: Feature;\n state: FeatureState;\n}\n\nexport enum Feature {\n AutoPricing = \"AutoPricing\",\n HomePageActivityLog = \"HomePageActivityLog\",\n OneTicketTransferApi = \"OneTicketTransferApi\",\n AdvanceAutopricingModes = \"AdvanceAutopricingModes\",\n CompListingMode_ParentListing = \"CompListingMode_ParentListing\",\n ExportInventory = \"ExportInventory\",\n ListingIdForCompListings = \"ListingIdForCompListings\",\n InventoryEventRecentTransactions = \"InventoryEventRecentTransactions\",\n ScaledSeatScore = \"ScaledSeatScore\",\n SaleEditChargesAndCredits = \"SaleEditChargesAndCredits\",\n SeatSaver = \"SeatSaver\",\n MarketplacePaymentTerms = \"MarketplacePaymentTerms\",\n BulkDownloadEventPrompt = \"BulkDownloadEventPrompt\",\n ConfirmTransferWithoutProof = \"ConfirmTransferWithoutProof\",\n TeamManagement = \"TeamManagement\",\n BezierGraphControlPointsManager = \"BezierGraphControlPointsManager\",\n UndercutByRankListingGroup = \"UndercutByRankListingGroup\",\n UpdatedVenueMapPrompt = \"UpdatedVenueMapPrompt\",\n ReportSnapshot = \"ReportSnapshot\",\n ReportFilterByCommissionUser = \"ReportFilterByCommissionUser\",\n DisplayBuildVersion = \"DisplayBuildVersion\",\n OverrideDailyFxRate = \"OverrideDailyFxRate\",\n PricedAtZeroFilter = \"PricedAtZeroFilter\",\n POSTimezone = \"POSTimezone\",\n PricingCatchup = \"PricingCatchup\",\n PriceByWebsitePrice = \"PriceByWebsitePrice\",\n InventoryTileMetricV2 = \"InventoryTileMetricV2\",\n ExcludeFanInventory = \"ExcludeFanInventory\",\n PurchaseSettingsTab = \"PurchaseSettingsTab\",\n CurrencyConversionSettingsTab = \"CurrencyConversionSettingsTab\",\n SalesInEventPage = \"SalesInEventPage\",\n BulkUpdateInternalNotes = \"BulkUpdateInternalNotes\",\n AutoPriceFrequency = \"AutoPriceFrequency\",\n TagTypesUserGroup = \"TagTypesUserGroup\",\n DisableAutoSourcing = \"DisableAutoSourcing\",\n FilterPOByPaymentMethodId = \"FilterPOByPaymentMethodId\",\n ArAgingReport = \"ArAgingReport\",\n MarketplacePaymentLinesDisplay = \"MarketplacePaymentLinesDisplay\",\n InventoryEventPageV2 = \"InventoryEventPageV2\",\n DynamicPricingBySTR = \"DynamicPricingBySTR\",\n GroupingDrip = \"GroupingDrip\",\n AutoPricingGroupSettings = \"AutoPricingGroupSettings\",\n ReportMaxRowLimit = \"ReportMaxRowLimit\",\n SaleSkyboxNotesSection = \"SaleSkyboxNotesSection\",\n EnableDisableMarketplaces = \"EnableDisableMarketplaces\",\n SaleMarkedAsFulfilled = \"SaleMarkedAsFulfilled\",\n AutoCompAndGroup = \"AutoCompAndGroup\",\n ExcludeFullySoldInGroup = \"ExcludeFullySoldInGroup\",\n ReportingV2 = \"ReportingV2\",\n AutoFulfillSetting = \"AutoFulfillSetting\",\n BulkCancelVoidPurchase = \"BulkCancelVoidPurchase\",\n PurchasePredelivery = \"PurchasePredelivery\",\n PricingSettingsInTable = \"PricingSettingsInTable\",\n SponsoredListings = \"SponsoredListings\",\n VenueMapCtrlPlusM = \"VenueMapCtrlPlusM\",\n ScoreSectionRowTable = \"ScoreSectionRowTable\",\n BulkEditInPurchaseEvent = \"BulkEditInPurchaseEvent\",\n HandlingListingSignalR = \"HandlingListingSignalR\",\n UpdateSalesOfListingsDeliveryInfo = \"UpdateSalesOfListingsDeliveryInfo\",\n VenueMapRectSelect = \"VenueMapRectSelect\",\n ViewListingOriginalSeating = \"ViewListingOriginalSeating\",\n BulkDeleteTicketGroup = \"BulkDeleteTicketGroup\",\n FulfillmentProviders = \"FulfillmentProviders\",\n EventDeliveryStrategy = \"EventDeliveryStrategy\",\n EventListingTableHotkeys = \"EventListingTableHotkeys\",\n AutoGroupAndCompV2 = \"AutoGroupAndCompV2\",\n ListingGroupingMethods = \"ListingGroupingMethods\",\n SidePanelWidths = \"SidePanelWidths\",\n GroupSoldListings = \"GroupSoldListings\",\n PricingV2DemandDashboard = \"PricingV2DemandDashboard\",\n TablePinActionColumn = \"TablePinActionColumn\",\n FilterEventByLocation = \"FilterEventByLocation\",\n CustomVenueRows = \"CustomVenueRows\",\n EventStatusDisplay = \"EventStatusDisplay\",\n BulkActionGroupListings = \"BulkActionGroupListings\",\n SellerAccountPurchaseVendorOverride = \"SellerAccountPurchaseVendorOverride\",\n PricingABTest = \"PricingABTest\",\n EnableNativeSyncToggle = \"EnableNativeSyncToggle\",\n BulkUpdateIndividualTicketGroup = \"BulkUpdateIndividualTicketGroup\",\n AutoCompRankOverrides = \"AutoCompRankOverrides\",\n VendorAccountV2 = \"VendorAccountV2\",\n UpgradedGroupListingView = \"UpgradedGroupListingView\",\n FullPageEventView = \"FullPageEventView\",\n SaleSeatsSoldAs = \"SaleSeatsSoldAs\",\n UpcomingOnSalesPage = \"UpcomingOnSalesPage\",\n RemoveUiGateOnUnmap = \"RemoveUiGateOnUnmap\",\n VendorAccountDeliveryStrategy = \"VendorAccountDeliveryStrategy\",\n SortListingsInGroup = \"SortListingsInGroup\",\n ReorderListingInGroup = \"ReorderListingInGroup\",\n EditMapInListingTab = \"EditMapInListingTab\",\n BackfillDeliveryStrategyInventoryEvent = \"BackfillDeliveryStrategyInventoryEvent\",\n BackfillDeliveryStrategyPurchaseEvent = \"BackfillDeliveryStrategyPurchaseEvent\",\n BackfillDeliveryStrategyVendorAccount = \"BackfillDeliveryStrategyVendorAccount\",\n BackfillDeliveryStrategyInventoryEventToSales = \"BackfillDeliveryStrategyInventoryEventToSales\",\n BackfillDeliveryStrategyPurchaseEventToSales = \"BackfillDeliveryStrategyPurchaseEventToSales\",\n BackfillDeliveryStrategyVendorAccountToSales = \"BackfillDeliveryStrategyVendorAccountToSales\",\n FullPageEventViewEntitySelection = \"FullPageEventViewEntitySelection\",\n CompQuantitiesFilter = \"CompQuantitiesFilter\",\n FullPageEventViewSideTableBulkEdit = \"FullPageEventViewSideTableBulkEdit\",\n DefaultNotToMergeHoldListings = \"DefaultNotToMergeHoldListings\",\n CustomDeliveryType = \"CustomDeliveryType\",\n ListingNotesAdditionalInfo = \"ListingNotesAdditionalInfo\",\n TicketTypeIconOverlay = \"TicketTypeIconOverlay\",\n FullPageEventViewSideTableFilters = \"FullPageEventViewSideTableFilters\",\n BulkEditsToListingGroups = \"BulkEditsToListingGroups\",\n SplitListingToOriginal = \"SplitListingToOriginal\",\n ExportPurchases = \"ExportPurchases\",\n GroupedActivityLog = \"GroupedActivityLog\",\n ExcludeDefects = \"ExcludeDefects\",\n DownloadETickets = \"DownloadETickets\",\n AllocateSingleTickets = \"AllocateSingleTickets\",\n PdfViewerToolbar = \"PdfViewerToolbar\",\n ResetFulfillmentKeepArtifacts = \"ResetFulfillmentKeepArtifacts\",\n FufillmentMismatchDisplay = \"FufillmentMismatchDisplay\",\n DisplayTicketOrderedByPriority = \"DisplayTicketOrderedByPriority\",\n ShowSeatTraitOnMerge = \"ShowSeatTraitOnMerge\",\n EventMultiScreen = \"EventMultiScreen\",\n DefaultFilterRows = \"DefaultFilterRows\",\n RowSeatColumnSalePurchase = \"RowSeatColumnSalePurchase\",\n ReconcileOrphanTickets = \"ReconcileOrphanTickets\",\n UseSelectedRowIdForMarketplaceSeatingOverride = \"UseSelectedRowIdForMarketplaceSeatingOverride\",\n SelectDeliveryStrategyInSeatSaver = \"SelectDeliveryStrategyInSeatSaver\",\n ListingGroupCompUi = \"ListingGroupCompUi\",\n YourListingsInComps = \"YourListingsInComps\",\n NewListingDefaultToSpeculativeRowId = \"NewListingDefaultToSpeculativeRowId\",\n UploadTicketFilesFlowV2 = \"UploadTicketFilesFlowV2\",\n RightNowStatsInMap = \"RightNowStatsInMap\",\n ConsignmentDeal = \"ConsignmentDeal\",\n FilterByCurrencyCodeMulti = \"FilterByCurrencyCodeMulti\",\n FilterByPaymentCurrencyCodeMulti = \"FilterByPaymentCurrencyCodeMulti\",\n AutoPricingTabInAccountSettings = \"AutoPricingTabInAccountSettings\",\n BulkConvertPaymentLines = \"BulkConvertPaymentLines\",\n AttemptFulfillWhenToggleOnAutoFulfill = \"AttemptFulfillWhenToggleOnAutoFulfill\",\n ConvertPaymentLines = \"ConvertPaymentLines\",\n SaleDetailDisplayTicketUrl = \"SaleDetailDisplayTicketUrl\",\n PreventInitialBroadcastForXDays = \"PreventInitialBroadcastForXDays\",\n AutoCompPersistAllConfigChanges = \"AutoCompPersistAllConfigChanges\",\n ManageMarketplacePayment = \"ManageMarketplacePayment\",\n PurchasePaymentColumns = \"PurchasePaymentColumns\",\n HideAutoCompOnlyBulkEditOption = \"HideAutoCompOnlyBulkEditOption\",\n PreventDraftPOinUI = \"PreventDraftPOinUI\",\n MarkPOAsPaid = \"MarkPOAsPaid\",\n MarketplacePaymentsTab = \"MarketplacePaymentsTab\",\n AllowSeatScoreCompListingMode = \"AllowSeatScoreCompListingMode\",\n IntelligiblePricePreview = \"IntelligiblePricePreview\",\n DemandDashLastDaySupplyMetrics = \"DemandDashLastDaySupplyMetrics\",\n IntelligibleAutoPricingSettings = \"IntelligibleAutoPricingSettings\",\n LinkEventName = \"LinkEventName\",\n GroupingWizard = \"GroupingWizard\",\n IntelligiblePricePreviewForListingGroup = \"IntelligiblePricePreviewForListingGroup\",\n SimplifiedAutoPricingUiV2 = \"SimplifiedAutoPricingUiV2\",\n MoveToGroup = \"MoveToGroup\",\n IgnoreDuplicate = \"IgnoreDuplicate\",\n QuickFloorToolbar = \"QuickFloorToolbar\",\n BulkUpdatePurchaseCurrency = \"BulkUpdatePurchaseCurrency\",\n BulkWasteTickets = \"BulkWasteTickets\",\n MarketplacePaymentsFilters = \"MarketplacePaymentsFilters\",\n ListingLoadBySection = \"ListingLoadBySection\",\n AutoPricingBulkEditToDrawerWithPreview = \"AutoPricingBulkEditToDrawerWithPreview\",\n PurchasePaymentMethodEdit = \"PurchasePaymentMethodEdit\",\n CancelSaleKeepTickets = \"CancelSaleKeepTickets\",\n ConvertSaleCurrency = \"ConvertSaleCurrency\",\n DisplayDeactivatedUser = \"DisplayDeactivatedUser\",\n SVGVenueMapV3 = \"SVGVenueMapV3\",\n LockCommissionsOnPo = \"LockCommissionsOnPo\",\n SearchView_Purchase = \"SearchView_Purchase\",\n SearchView_Inventory = \"SearchView_Inventory\",\n SearchView_Sale = \"SearchView_Sale\",\n SaleEarningsTableV2 = \"SaleEarningsTableV2\",\n SectionalUpdateListingInBulk = \"SectionalUpdateListingInBulk\",\n SectionalLoadInListingTable = \"SectionalLoadInListingTable\",\n SaleDetailsMarketplaceTerms = \"SaleDetailsMarketplaceTerms\",\n UserSearchBar = \"UserSearchBar\",\n CleanupWhiteSpace = \"CleanupWhiteSpace\",\n AddMarketplaceChargeCreditToSale = \"AddMarketplaceChargeCreditToSale\",\n LinkPaymentLine = \"LinkPaymentLine\",\n PricingSectionSettingsAcrossEvents = \"PricingSectionSettingsAcrossEvents\",\n PurchaseCommissionFilterInSearchView = \"PurchaseCommissionFilterInSearchView\",\n SaleCancellationReason = \"SaleCancellationReason\",\n SaleHasMarketplaceProblem = \"SaleHasMarketplaceProblem\",\n HideSalePaymentReceivedFilter = \"HideSalePaymentReceivedFilter\",\n CondensedPreviewTabsAndSingleListing = \"CondensedPreviewTabsAndSingleListing\",\n MarketplacePaymentFilterUnlinked = \"MarketplacePaymentFilterUnlinked\",\n BulkMarkSalesAsPaid = \"BulkMarkSalesAsPaid\",\n CatalogCacheStrategyV2 = \"CatalogCacheStrategyV2\",\n MultiTicketGroupTable = \"MultiTicketGroupTable\",\n TableColumnFilter = \"TableColumnFilter\",\n EventDiscoveryPage = \"EventDiscoveryPage\",\n SeatTraitsColumn = \"SeatTraitsColumn\",\n EventSelectorFilter = \"EventSelectorFilter\",\n BlockEventDiscoveryData = \"BlockEventDiscoveryData\",\n BulkUploadPurchaseV2Perf = \"BulkUploadPurchaseV2Perf\",\n ColumnFilterSearchView = \"ColumnFilterSearchView\",\n ListingTableSplitTypeColumn = \"ListingTableSplitTypeColumn\",\n BulkUploadPurchaseTags = \"BulkUploadPurchaseTags\",\n CompListingDisplayUpdate = \"CompListingDisplayUpdate\",\n CatalogMetricsV2 = \"CatalogMetricsV2\",\n HideSalePaymentConversionSection = \"HideSalePaymentConversionSection\",\n FlashSaleDiscountRestriction = \"FlashSaleDiscountRestriction\",\n EventMapRibbonYolo = \"EventMapRibbonYolo\",\n ReportV2Builder = \"ReportV2Builder\",\n ReportV2CommissionsReport = \"ReportV2CommissionsReport\",\n KnowledgePortalPage = \"KnowledgePortalPage\",\n KnowledgePortalPageTestData = \"KnowledgePortalPageTestData\",\n SearchView_ReadOnlyDB = \"SearchView_ReadOnlyDB\",\n BulkEditPricingSettingsUpdate = \"BulkEditPricingSettingsUpdate\",\n HomePageNotifications = \"HomePageNotifications\",\n EventsDetailedViewGrouping = \"EventsDetailedViewGrouping\",\n GlobalReportV1RedirectV2 = \"GlobalReportV1RedirectV2\",\n BlockInventorySummaryStats = \"BlockInventorySummaryStats\",\n GroupListingsWithRangedQuantityCost = \"GroupListingsWithRangedQuantityCost\",\n AllocateSingleTicketListingRestrictionRemoval = \"AllocateSingleTicketListingRestrictionRemoval\",\n OnePagerGroupSelectionFunctionality = \"OnePagerGroupSelectionFunctionality\",\n ConsignmentFilterPurchaseSearchView = \"ConsignmentFilterPurchaseSearchView\",\n HideNavAndFilterBars = \"HideNavAndFilterBars\",\n ReportSinglePagedV1V2 = \"ReportSinglePagedV1V2\",\n BackfillListingTicketTypeOverrideToSale = \"BackfillListingTicketTypeOverrideToSale\",\n AutomatiqUnprocessedOrdersHoldingPen = \"AutomatiqUnprocessedOrdersHoldingPen\",\n ReEvaluatePredeliveryStateAndTopTicketType = \"ReEvaluatePredeliveryStateAndTopTicketType\",\n AddPurchasePaymentRefundStates = \"AddPurchasePaymentRefundStates\",\n PurchasePaymentConversion = \"PurchasePaymentConversion\",\n EnforcePurchasePaymentCurrency = \"EnforcePurchasePaymentCurrency\",\n MarketplacePaymentConversion = \"MarketplacePaymentConversion\",\n WasteSale = \"WasteSale\",\n UseShLnLookup = \"UseShLnLookup\",\n BlockPricingCompListingEndpoint = \"BlockPricingCompListingEndpoint\",\n BlockPricingCalculationEndpoint = \"BlockPricingCalculationEndpoint\",\n BlockEventDashboardEndpoint = \"BlockEventDashboardEndpoint\",\n AlwaysGetEventLevelSettingsFromAutoPricer = \"AlwaysGetEventLevelSettingsFromAutoPricer\",\n WriteAutopriceConfigUpdateToSbt = \"WriteAutopriceConfigUpdateToSbt\",\n SetAsDefaultAllNewEvents = \"SetAsDefaultAllNewEvents\",\n AccountLevelFeatureCheck = \"AccountLevelFeatureCheck\",\n}\n\nexport enum FeatureState {\n Disabled = \"Disabled\",\n Restricted = \"Restricted\",\n GeneralAvailability = \"GeneralAvailability\",\n LimitedAvailability = \"LimitedAvailability\",\n InDevelopment = \"InDevelopment\",\n}\n\nexport interface AdPlatformCatalogResults {\n events: { [key: string]: EventWithData; };\n performers: { [key: string]: Performer; };\n venues: { [key: string]: Venue; };\n listingsByExternalId: { [key: string]: Listing; };\n venueMapByEventId: { [key: string]: VenueMapInfo; };\n}\n\nexport interface EventWithData {\n event: Event;\n counts: EventEntityCounts;\n entities: EventEntities;\n}\n\nexport interface EventEntityCounts {\n viagVirtId: string;\n perfId: number | null;\n venId: number;\n salesCnt: number | null;\n /** Listing count */\n listCnt: number | null;\n /** Priced listing count */\n pricedListCnt: number | null;\n /** Ungrouped listing count */\n ungrListCnt: number | null;\n /** Listing Group count */\n listGrpCnt: number | null;\n /** Ticket Group count */\n tktGrpsCnt: number | null;\n /** PurchaseOrderCount */\n poCnt: number | null;\n}\n\nexport interface EventEntities {\n listings: Listing[] | null;\n sales: Sale[] | null;\n ticketGroups: PurchaseOrderTicketGroup[] | null;\n getDataFail: boolean | null;\n}\n\n/** Base class to represent common info between Listing, Sale, or PurchaseOrder, which basically is an entity that contains metadata about a set of Tickets for a single Event */\nexport interface EntityWithTickets {\n /** The ID of this entity in the DB (ListingId, SaleId, or PurchaseOrderId) */\n id: number;\n /** The event of which this entity is for. */\n posEvId: string;\n viagEvId: number | null;\n viagEvMapId: string | null;\n viagVirtualId: string;\n rowVer: number;\n insertBy: string | null;\n currency: string;\n /** Given a Sale can consist of tickets purchased at different times, this should be\nthe latest date that all tickets are in hand. This is a seller-provided field\nand it does not have to coincide with listings or purchase orders. */\n inHandAt: string | null;\n seating: Seating;\n /** The number of tickets in this set.\n- For Sale, it would be the same as QuantitySold - but this is the physical number of allocated tickets.\n- For Listing for PO, it would just mean the number of tickets listed. */\n ticketCnt: number;\n seatTraits: ListingNote[] | null;\n privNotes: string | null;\n}\n\n/** Base class to represent common info between Sale and Listing (with Marketplace related info) */\nexport interface MarketplaceEntityWithTickets extends EntityWithTickets {\n /** Marketplace where these tickets were listed and sold */\n mkp: Marketplace | null;\n /** Represent either the MarketplaceListingId or MarketplaceSaleId */\n idOnMkp: string | null;\n}\n\nexport interface Listing extends MarketplaceEntityWithTickets {\n rowId: number | null;\n entityType: ActionOutboxEntityType;\n dataIsLoaded: { [key in keyof typeof ListingDetailDataField]?: boolean; };\n /** Cost per ticket (from purchase order) */\n unitCst: UiMoney | null;\n status: ListingStatus;\n isUSEvent: boolean | null;\n /** Marketplace listing broadcast status */\n brdcstStatus: ListingBroadcastStatus | null;\n isSeatSaver: boolean;\n isAdminHold: boolean;\n adminHoldExpiredOn: string | null;\n adminHoldNotes: string | null;\n /** ValidPurchaseQuantity - computed value based on Quantity, MaxDisplayQuantity, and SplitType.\nWill be an array of values that correspond to how many tickets from the listing buyers are\nable to buy in one transaction. */\n vldPurQty: number[];\n /** This the number of tickets that have not yet sold or wasted and is always less than TicketCount. */\n availQty: number;\n /** MaxDisplayQuantity */\n maxDispQty: number;\n /** ManualMaxDisplayQuantity */\n manMaxDispQty: number | null;\n /** This is the number of tickets that have been sold */\n soldQty: number | null;\n /** This is the number of tickets that have been wasted */\n wastedQty: number | null;\n /** This is the number of tickets that are not sold, which is equivalent to AvailQty + WastedQty */\n unsoldQty: number;\n /** A number from 0 to 1 that represent a %\nNull represent that the marketplace doesn't provide this info */\n preDelivState: PreDeliveryState;\n /** DeliveryType */\n delivType: DeliveryType;\n /** TopPriorityTicketType */\n topPriTktType: TicketType | null;\n isUndeliv: boolean;\n isNoFulfill: boolean | null;\n enableNativeSync: boolean | null;\n actions: ListingActionType[];\n isCurUserPo: boolean;\n poBys: string[] | null;\n poId: number | null;\n poOrderId: string | null;\n poDate: string | null;\n poVendAccEmail: string | null;\n poCreatedBys: string[] | null;\n isDeleted: boolean;\n mkpListings: MarketplaceListing[] | null;\n qcState: QualityControlState | null;\n pendProofState: PendingProofState | null;\n dupListingId: number | null;\n ignoreDup: boolean | null;\n /** MarketplaceVisibility */\n mkpVis: number | null;\n sectionType: VenueMapSectionType | null;\n /** Original Seat From for the listing, different from Seating.SeatFr which is the current seatFr available */\n orgSeatFr: string | null;\n orgSeatTo: string | null;\n ltGrpId: string | null;\n ltGrpParentId: number | null;\n ltGrpPrior: number | null;\n ltGrpActive: boolean | null;\n isLtGrp: boolean;\n isFull: boolean;\n ltGrpUndercut: ListingGroupUndercutSetting | null;\n tags: Tag[] | null;\n splitType: SplitType;\n hideSeats: boolean;\n pricerId: string | null;\n listPrice: number;\n allInPrice: number;\n faceValue: UiMoney | null;\n lastPrcUpdOn: string | null;\n isAutoPrc: boolean | null;\n procsFloor: number | null;\n procsCeil: number | null;\n /** UndercutMode */\n undMode: AutoPricingUndercutMode | null;\n /** UndercutAbsoluteAmount */\n undAbsAmt: number | null;\n /** UndercutRelativeAmount */\n undRelAmt: number | null;\n /** UndercutNewPrice */\n undNewPrice: number | null;\n /** CompListingMode */\n compMode: AutoPricingCompListingMode | null;\n /** CompListingFloor */\n compFloor: number | null;\n /** CompLIstingCeiling */\n compCeil: number | null;\n /** IsCompListingQuantityScoreAdjustmentEnabled */\n isCompQtyScrAdj: boolean | null;\n /** CompListingQuantityScoreAdjustmentJson */\n compQtyScrAdjJson: string | null;\n /** CompListingOnlyForSameZoneEnabled */\n isCompForSameZone: boolean | null;\n /** CompListingOnlyForSelectedSectionsEnabled */\n isCompSelectedSections: boolean | null;\n /** CompListingExcludeFanInventory */\n compExclFanInv: boolean | null;\n /** CompListingExcludeDefects */\n compExclDefects: boolean | null;\n /** CompListingSelectedSectionSettings */\n compSectionSettings: SelectedSectionSettings | null;\n /** CircuitBreakerRelativeCeiling */\n cirBrRelCeil: number | null;\n /** CircuitBreakerRelativeFloor */\n cirBrRelFloor: number | null;\n /** CircuitBreakerMaxDiscountVelocityPercent */\n cirBrMaxDiscVelocPercent: number | null;\n /** CircuitBreakerMaxDiscountVelocityTicksInHours */\n cirBrMaxDiscVelocTicksInHrs: number | null;\n /** CircuitBreakerMinCompListingCount */\n cirBrMinCompCount: number | null;\n /** OutlierMode */\n outMode: AutoPricingOutlierMode | null;\n /** OutlierStandardDeviations */\n outlStdDev: number | null;\n /** OutlierKthLowestLimit */\n outKthLowestLim: number | null;\n /** OutlierKthLowestLimitAbsoluteSpacing */\n outKthLowestLimRelSpc: number | null;\n /** OutlierKthLowestLimitRelativeSpacing */\n outKthLowestLimAbsSpc: number | null;\n /** AutoPricingResultState */\n autoPrcResult: AutoPricingResultType | null;\n tktTypeRules: TicketTypeOverride | null;\n}\n\nexport enum ListingDetailDataField {\n Basic = \"Basic\",\n Tickets = \"Tickets\",\n Pricing = \"Pricing\",\n AutoPricing = \"AutoPricing\",\n Sales = \"Sales\",\n Purchase = \"Purchase\",\n Tags = \"Tags\",\n}\n\nexport interface UiMoney {\n amt: number;\n disp: string | null;\n currency: string | null;\n dec: number;\n}\n\nexport enum ListingStatus {\n Disabled = \"Disabled\",\n FullySold = \"Fully Sold\",\n DelistingPending = \"Delisting Pending\",\n DelistingFailed = \"Delist Failed\",\n Delisted = \"Delisted\",\n ListingPending = \"Listing Pending\",\n ListingFailed = \"List Failed\",\n Listed = \"Listed\",\n}\n\nexport enum ListingBroadcastStatus {\n Unknown = \"Unknown\",\n Broadcast = \"Broadcast\",\n BroadcastFailed = \"BroadcastFailed\",\n BroadcastWithError = \"BroadcastWithError\",\n Unbroadcast = \"Unbroadcast\",\n UnbroadcastFailed = \"UnbroadcastFailed\",\n UnbroadcastWithError = \"UnbroadcastWithError\",\n}\n\nexport enum PreDeliveryState {\n NotPreDelivered = \"No\",\n PreDelivered = \"Yes\",\n}\n\nexport enum DeliveryType {\n InApp = \"In-app\",\n PDF = \"PDF\",\n Paper = \"Paper\",\n MemberCard = \"Member Card\",\n Wallet = \"Wallet\",\n Custom = \"Custom\",\n}\n\nexport enum TicketType {\n Custom = \"Custom\",\n Paper = \"Paper\",\n ETicket = \"ETicket\",\n ETicketUrl = \"ETicketUrl\",\n Transfer = \"Transfer\",\n Barcode = \"Barcode\",\n Season = \"Season\",\n QRCode = \"QRCode\",\n SMPWallet = \"SMPWallet\",\n}\n\nexport enum ListingActionType {\n Broadcast = \"Broadcast\",\n Unbroadcast = \"Unbroadcast\",\n Split = \"Split\",\n SplitToOriginal = \"SplitToOriginal\",\n AddOfflineSale = \"AddOfflineSale\",\n AddMarketplaceSale = \"AddMarketplaceSale\",\n PredeliverBarcodes = \"PredeliverBarcodes\",\n PredeliverETickets = \"PredeliverETickets\",\n PredeliverQRCode = \"PredeliverQRCode\",\n PredeliverExternalIds = \"PredeliverExternalIds\",\n PredeliverTicketUrls = \"PredeliverTicketUrls\",\n RedeliverBarcodes = \"RedeliverBarcodes\",\n RedeliverETickets = \"RedeliverETickets\",\n RedeliverQRCode = \"RedeliverQRCode\",\n RedeliverExternalIds = \"RedeliverExternalIds\",\n RedeliverTicketUrls = \"RedeliverTicketUrls\",\n DownloadUserDocuments = \"DownloadUserDocuments\",\n FullySoldNoAction = \"FullySoldNoAction\",\n AddAdminHold = \"AddAdminHold\",\n RemoveAdminHold = \"RemoveAdminHold\",\n Waste = \"Waste\",\n}\n\nexport interface MarketplaceListing {\n mkpListingId: string | null;\n mkp: Marketplace;\n status: ListingStatus;\n markup: number | null;\n sellerAccountDefaultMarkup: number | null;\n sellerFee: number | null;\n netProcs: number | null;\n webPrice: number | null;\n isPriceByMkp: boolean;\n overrideSection: string | null;\n overrideRow: string | null;\n overrideSeats: string | null;\n overrideRowId: number | null;\n overrideSectionId: number | null;\n isEnabled: boolean;\n availQty: number | null;\n currency: string;\n errMsgs: string[] | null;\n errCodes: BroadcastErrorCode[] | null;\n pendProofState: PendingProofState | null;\n brdcstStatus: ListingBroadcastStatus | null;\n}\n\nexport enum Marketplace {\n StubHub = \"StubHub\",\n VividSeats = \"VividSeats\",\n SeatGeek = \"SeatGeek\",\n TickPick = \"TickPick\",\n Ticketmaster = \"Ticketmaster\",\n Offline = \"Offline\",\n AXS = \"AXS\",\n FanXchange = \"FanXchange\",\n Gametime = \"Gametime\",\n TicketEvolution = \"TicketEvolution\",\n TicketNetwork = \"TicketNetwork\",\n Automatiq = \"Automatiq\",\n Lyte = \"Lyte\",\n GoTickets = \"GoTickets\",\n B2BSales = \"B2BSales\",\n TicketNetworkMercury = \"TicketNetworkMercury\",\n}\n\nexport enum BroadcastErrorCode {\n Unknown = \"Unknown\",\n UpdatePrice = \"UpdatePrice\",\n UpdateTicketType = \"UpdateTicketType\",\n UpdateSplitType = \"UpdateSplitType\",\n UpdateInHandDate = \"UpdateInHandDate\",\n SplitListing = \"SplitListing\",\n MergeListing = \"MergeListing\",\n BroadcastListing = \"BroadcastListing\",\n UnbroadcastListing = \"UnbroadcastListing\",\n UpdateQuantity = \"UpdateQuantity\",\n HideSeats = \"HideSeats\",\n UpdateListingNotes = \"UpdateListingNotes\",\n UpdateSeating = \"UpdateSeating\",\n MarketplaceResaleRestricted = \"MarketplaceResaleRestricted\",\n MarketplaceManifestMismatch = \"MarketplaceManifestMismatch\",\n MarketplacePriceBelowFloor = \"MarketplacePriceBelowFloor\",\n}\n\nexport enum PendingProofState {\n PendingProof = \"PendingProof\",\n PendingReview = \"PendingReview\",\n Approved = \"Approved\",\n}\n\nexport enum QualityControlState {\n Pending = \"Pending\",\n Approved = \"Approved\",\n Rejected = \"Rejected\",\n}\n\nexport enum VenueMapSectionType {\n ForcedRow = \"ForcedRow\",\n OptionalRow = \"OptionalRow\",\n NoRow = \"NoRow\",\n GeneralAdmission = \"GeneralAdmission\",\n NoRowPairs = \"NoRowPairs\",\n OptionalRowPairs = \"OptionalRowPairs\",\n ForcedRowPairs = \"ForcedRowPairs\",\n GeneralAdmissionWithQueueNumber = \"GeneralAdmissionWithQueueNumber\",\n GeneralAdmissionStanding = \"GeneralAdmissionStanding\",\n GeneralAdmissionSeating = \"GeneralAdmissionSeating\",\n}\n\nexport interface ListingGroupUndercutSetting {\n /** UndercutAbsoluteAmount */\n undAbsAmt: number | null;\n /** UndercutRelativeAmount */\n undRelAmt: number | null;\n /** ActiveRankUndercutAbsoluteAmount */\n actRankUndAbsAmt: number | null;\n /** ActiveRankUndercutRelativeAmount */\n actRankUndRelAmt: number | null;\n}\n\nexport interface Tag {\n /** The key of of the tag associated with an entity */\n key: string;\n /** The value of of the tag associated with an entity */\n value: string;\n valueType: TagsValueType | null;\n singleValueOnly: boolean | null;\n includeInReport: boolean | null;\n ordinal: number | null;\n}\n\nexport enum TagsValueType {\n String = \"String\",\n Decimal = \"Decimal\",\n Int = \"Int\",\n Boolean = \"Boolean\",\n Json = \"Json\",\n Url = \"Url\",\n Marketplace = \"Marketplace\",\n Date = \"Date\",\n POSUser = \"POSUser\",\n Vendor = \"Vendor\",\n UserGroup = \"UserGroup\",\n}\n\nexport enum SplitType {\n Any = \"Any\",\n None = \"None\",\n AvoidOne = \"Avoid One\",\n AvoidOneAndThree = \"Avoid One and Three\",\n Pairs = \"Pairs\",\n}\n\nexport enum AutoPricingUndercutMode {\n Simple = \"Simple\",\n RowExtrapolation = \"RowExtrapolation\",\n Deal = \"Deal\",\n}\n\nexport enum AutoPricingCompListingMode {\n QualityScore = \"QualityScore\",\n SameSection = \"SameSection\",\n SameZone = \"SameZone\",\n SameEvent = \"SameEvent\",\n ParentListing = \"ParentListing\",\n}\n\nexport interface SelectedSectionSettings {\n sectionIdFilter: number[] | null;\n rowIdFilter: number[] | null;\n sectionRowIdFilter: { [key: string]: string; } | null;\n sectionIdFilterFromZoneMap: boolean;\n includeBetterZones: boolean;\n rowOffset: number | null;\n}\n\nexport enum AutoPricingOutlierMode {\n StandardDeviations = \"StandardDeviations\",\n SkipLogic = \"SkipLogic\",\n KthLowest = \"KthLowest\",\n}\n\nexport enum AutoPricingResultType {\n None = \"None\",\n PriceSuccess = \"PriceSuccess\",\n PriceBelowFloor = \"PriceBelowFloor\",\n InsufficientComparables = \"InsufficientComparables\",\n PriceBelowMaxAllowedDrop = \"PriceBelowMaxAllowedDrop\",\n PriceAboveCeiling = \"PriceAboveCeiling\",\n MissingUnitCost = \"MissingUnitCost\",\n MissingSeatScore = \"MissingSeatScore\",\n MissingZone = \"MissingZone\",\n CannotCalculateUndercut = \"CannotCalculateUndercut\",\n EffectiveCeilingBelowFloor = \"EffectiveCeilingBelowFloor\",\n PriceHitHardFloor = \"PriceHitHardFloor\",\n PriceHitRelativeFloor = \"PriceHitRelativeFloor\",\n PriceHitMaxAllowedDrop = \"PriceHitMaxAllowedDrop\",\n ConfigRowMissing = \"ConfigRowMissing\",\n SectionUnmapped = \"SectionUnmapped\",\n}\n\nexport interface TicketTypeOverride {\n overrides: TicketTypeOverrideForDeliveryType[];\n}\n\nexport interface TicketTypeOverrideForDeliveryType {\n deliveryType: DeliveryType;\n ticketTypePriorities: TicketTypePriority[];\n}\n\nexport interface TicketTypePriority {\n priority: number;\n ticketType: TicketType;\n isBlocked: boolean;\n}\n\nexport interface Seating {\n section: string;\n sectionId: number | null;\n row: string | null;\n rowId: number | null;\n seatFr: string | null;\n seatTo: string | null;\n ticketIds: number[] | null;\n listingIds: number[] | null;\n}\n\nexport interface ListingNote {\n listingNoteId: number;\n listingNoteText: string;\n listingNoteUntranslated: string;\n sellerAccountId: string | null;\n stubhubListingNoteId: number | null;\n type: ListingNoteType | null;\n}\n\nexport enum ListingNoteType {\n Defect = \"Defect\",\n RestrictionOnUse = \"Restriction on Use\",\n Perk = \"Perk\",\n Information = \"Information\",\n ConnectedSeller = \"ConnectedSeller\",\n InternallyGenerated = \"InternallyGenerated\",\n}\n\nexport interface Sale extends MarketplaceEntityWithTickets {\n entityType: ActionOutboxEntityType;\n /** The ID of the Listing in POS that this Sale comes from. */\n listingId: number | null;\n originatedFromListingId: number | null;\n saleDate: string;\n ttlNetProcs: UiMoney | null;\n soldTktCost: UiMoney | null;\n pandL: UiMoney | null;\n /** Margin (SoldProceeds - SoldCost) / SoldProceeds */\n margin: number | null;\n charges: UiMoney | null;\n credits: UiMoney | null;\n /** The total payment amount in the original currency */\n totalPmt: UiMoney | null;\n /** The total payment amount in the converted currency */\n totalConvertedPmt: UiMoney | null;\n /** PaymentState */\n pmtState: PointOfSalePaymentState | null;\n /** MarketplacePaymentState */\n mkpPmtState: MarketplacePaymentState | null;\n /** MarketplaceFulfillmentState */\n mkpFulfState: MarketplaceFulfillmentState | null;\n fulfillState: PointOfSaleFulfillmentState;\n fulfillDate: string | null;\n actions: SaleActionType[];\n status: PointOfSaleSaleStatus;\n isSeatSaver: boolean;\n qtySold: number;\n ticketType: TicketType | null;\n fulfillerId: string | null;\n tags: Tag[] | null;\n holdExpiredOn: string | null;\n isNoFulfill: boolean | null;\n /** MarketplaceContractState */\n mkpContrState: MarketplaceContractState | null;\n /** IsFulfillmentVersionMismatched */\n isFulfillVerMis: boolean;\n owners: SaleOwnershipInfo | null;\n /** IsPaymentReceived */\n pmtRcv: boolean | null;\n /** PaymentReferenceId */\n pmtRefId: string | null;\n /** PaymentAmountReceived */\n pmtAmtRcv: number | null;\n /** LastPaymentDate */\n lastPmtDate: string | null;\n /** PaymentCurrencyCode */\n pmtCurcy: string | null;\n poDate: string | null;\n poId: number | null;\n poVendOrdId: string | null;\n poVendAccEmail: string | null;\n /** DisableAutoSourcing */\n disAutoSource: boolean;\n /** Originated By. The seller User ID that created the Listing that the sale originally comes from. */\n origBy: string | null;\n /** Comment notes */\n comNotes: SaleCommentNote[] | null;\n /** Is unprocessed order from processor */\n isUnprocessedOrdFromPro: boolean | null;\n /** IsWastageSale */\n isWastageSale: boolean | null;\n /** The quantity of tickets that were wasted */\n qtyWasted: number;\n cancellationReason: SaleCancellationReason | null;\n hasMarketplaceProblem: boolean | null;\n}\n\nexport enum PointOfSalePaymentState {\n Unpaid = \"Unpaid\",\n Queued = \"Queued\",\n Paid = \"Paid\",\n PartiallyPaid = \"PartiallyPaid\",\n PendingReversal = \"PendingReversal\",\n Reversed = \"Reversed\",\n}\n\nexport enum MarketplacePaymentState {\n Ineligible = \"Ineligible\",\n Unpaid = \"Unpaid\",\n Queued = \"Queued\",\n Paid = \"Paid\",\n PartiallyPaid = \"PartiallyPaid\",\n PendingReversal = \"PendingReversal\",\n Reversed = \"Reversed\",\n}\n\nexport enum MarketplaceFulfillmentState {\n Ineligible = \"Ineligible\",\n Pending = \"Pending\",\n Processing = \"Processing\",\n PendingPickup = \"PendingPickup\",\n InTransit = \"InTransit\",\n Fulfilled = \"Fulfilled\",\n Failed = \"Failed\",\n PendingReshipment = \"PendingReshipment\",\n}\n\nexport enum PointOfSaleFulfillmentState {\n Ineligible = \"Ineligible\",\n Pending = \"Pending\",\n Processing = \"Processing\",\n PendingPickup = \"PendingPickup\",\n InTransit = \"InTransit\",\n Fulfilled = \"Fulfilled\",\n Failed = \"Failed\",\n Resetted = \"Resetted\",\n}\n\nexport enum SaleActionType {\n Confirm = \"Confirm\",\n Fulfill = \"Fulfill\",\n Reject = \"Reject\",\n Deallocate = \"Deallocate\",\n ExpireHold = \"ExpireHold\",\n Refulfill = \"Refulfill\",\n EditOffline = \"EditOffline\",\n Allocate = \"Allocate\",\n ResetFulfillment = \"ResetFulfillment\",\n RejectAllocation = \"RejectAllocation\",\n ConfirmAllocation = \"ConfirmAllocation\",\n MarkAsFulfilled = \"MarkAsFulfilled\",\n DownloadUserDocuments = \"DownloadUserDocuments\",\n Unwaste = \"Unwaste\",\n}\n\nexport enum PointOfSaleSaleStatus {\n PendingConfirmation = \"PendingConfirmation\",\n PendingFulfillment = \"PendingFulfillment\",\n ProcessingFulfillment = \"ProcessingFulfillment\",\n Fulfilled = \"Fulfilled\",\n FulfillmentFailed = \"FulfillmentFailed\",\n PendingRejection = \"PendingRejection\",\n Rejected = \"Rejected\",\n Hold = \"Hold\",\n CancelledHold = \"CancelledHold\",\n PendingAllocation = \"PendingAllocation\",\n ProvisionalAllocation = \"ProvisionalAllocation\",\n PendingReshipment = \"PendingReshipment\",\n Wasted = \"Wasted\",\n}\n\nexport enum MarketplaceContractState {\n Provisional = \"Provisional\",\n CancelledProvisional = \"CancelledProvisional\",\n Contracted = \"Contracted\",\n MarketplaceDispute = \"MarketplaceDispute\",\n Complete = \"Complete\",\n CancelledUnknownFault = \"CancelledUnknownFault\",\n CancelledSellerFault = \"CancelledSellerFault\",\n CancelledMutual = \"CancelledMutual\",\n CancelledMarketplaceFault = \"CancelledMarketplaceFault\",\n}\n\nexport interface SaleOwnershipInfo {\n fulfillerId: string | null;\n buyerIds: string[];\n pricerIds: string[];\n poInsertBys: string[];\n poIds: number[];\n}\n\nexport interface SaleCommentNote {\n date: string | null;\n email: string | null;\n text: string | null;\n}\n\nexport enum SaleCancellationReason {\n EventCancellation = \"EventCancellation\",\n SellerFault = \"SellerFault\",\n MarketplaceFault = \"MarketplaceFault\",\n NoFault = \"NoFault\",\n Other = \"Other\",\n}\n\n/** Base class of purchase order that has common fields for both request and response. */\nexport interface PurchaseOrder {\n id: number;\n entityType: ActionOutboxEntityType;\n buyerId: string | null;\n insertBy: string | null;\n commissions: Commission[] | null;\n vendor: PurchaseVendor | null;\n secVendor: PurchaseVendor | null;\n vendAcc: PurchaseVendorAccount | null;\n secVendAcc: PurchaseVendorAccount | null;\n tags: Tag[] | null;\n /** The order number of the purchase from the PurchaseVendor */\n vendOrdId: string | null;\n poState: PurchaseOrderState;\n poDate: string | null;\n /** This is basically the number of ticket groups in this PO. */\n tktGrpCnt: number;\n /** This is for currency-input, */\n currency: string;\n pmtStat: PurchasePaymentStatus | null;\n pmtMethod: PurchasePaymentMethodType | null;\n privNotes: string | null;\n qcState: QualityControlState | null;\n isAutoPo: boolean | null;\n rowVer: number;\n isCommissionsLocked: boolean | null;\n ticketCnt: number;\n totalPmt: UiMoney | null;\n totalConvertedPmt: UiMoney | null;\n pmtConvRate: number | null;\n delivType: DeliveryType | null;\n totalCst: UiMoney | null;\n unitCst: UiMoney | null;\n viagVirtualId: string | null;\n}\n\nexport interface PurchaseOrderTicketGroup extends PurchaseOrder {\n /** This is a thin version of ticket group to show in the purchase order table. */\n ticketGroupItems: IPurchaseOrderTicketGroupItem[] | null;\n isTktGrp: boolean | null;\n /** Has user document artifacts to download */\n canGetDocArts: boolean | null;\n tgId: number | null;\n tickets: Ticket[];\n isMultEv: boolean | null;\n seating: Seating | null;\n seatTraits: ListingNote[] | null;\n perfId: number | null;\n venId: number | null;\n}\n\nexport interface IPurchaseOrderTicketGroupItem {\n /** True if this instance is a ticket group, can be under a purchase order or containing purchase order info */\n isTktGrp: boolean | null;\n /** Has user document artifacts to download */\n canGetDocArts: boolean | null;\n tgId: number | null;\n viagVirtualId: string;\n perfId: number | null;\n venId: number | null;\n /** True if this is a multi-event PO */\n isMultEv: boolean | null;\n seating: Seating | null;\n /** If this is a PO (IsTktGrp == false), this is the number of tickets in the whole PO.\nOtherwise, this is the number of tickets in this ticket group. */\n ticketCnt: number;\n tickets: Ticket[];\n seatTraits: ListingNote[] | null;\n /** The overall delivery for the PO (if there are several, the first one is listed)\nIf this is a ticket group, this is the delivery for this ticket group. */\n delivType: DeliveryType | null;\n totalCst: UiMoney | null;\n unitCst: UiMoney | null;\n}\n\nexport interface Ticket {\n id: number;\n tgId: number;\n ord: number;\n /** This is the order that considers merged listings too, safe to use anywhere\n \nNOTE - this is required to be kept Nullable as it should remains Null when setting to the server\nmaking it non-null requires you to handle it or else it will get set to 0 for all seatings and that will have bad consequences */\n lstOrd: number | null;\n row: string | null;\n seat: string;\n barcode: string | null;\n ticketUrl: string | null;\n externalTicketId: string | null;\n eTicket: UserDocumentLinks | null;\n qrCode: UserDocumentLinks | null;\n holdId: number | null;\n saleId: number | null;\n listingId: number | null;\n poId: number | null;\n unitCost: UiMoney | null;\n isWasted: boolean | null;\n}\n\nexport interface UserDocument {\n entityId: number | null;\n documentId: string;\n pageNumber: number | null;\n pageId: string | null;\n documentType: DocumentType | null;\n}\n\nexport interface UserDocumentLinks extends UserDocument {\n documentUri: string;\n pageUri: string;\n}\n\nexport interface Commission {\n /** Buyer BuyerUserId */\n buyerUserId: string;\n /** The percentage of the commission */\n commissionPercentage: number;\n}\n\nexport interface PurchaseVendor {\n id: number;\n name: string;\n isGlobal: boolean | null;\n vendAccCounts: number | null;\n delivType: DeliveryType | null;\n isNoFulfill: boolean | null;\n tktTypeRules: TicketTypeOverride | null;\n}\n\nexport interface PurchaseVendorAccount {\n id: string;\n vendorId: number;\n name: string;\n email: string;\n password: string | null;\n dftPayMethodId: number | null;\n dftBuyerId: string | null;\n}\n\nexport enum PurchaseOrderState {\n Active = \"Active\",\n Cancelled = \"Cancelled\",\n Void = \"Void\",\n Drafted = \"Drafted\",\n}\n\nexport enum PurchasePaymentStatus {\n Unpaid = \"Unpaid\",\n PartiallyPaid = \"Partially Paid\",\n Paid = \"Paid\",\n Failed = \"Failed\",\n RefundNeeded = \"RefundNeeded\",\n Refunded = \"Refunded\",\n PartiallyRefunded = \"PartiallyRefunded\",\n}\n\nexport enum PurchasePaymentMethodType {\n PayPal = \"PayPal\",\n ECheck = \"eCheck\",\n Check = \"Check\",\n MoneyOrder = \"Money Order\",\n Card = \"Credit Card\",\n Cash = \"Cash\",\n Credit = \"Credit\",\n COD = \"COD\",\n BankTransfer = \"Bank Transfer\",\n DebitCard = \"Debit Card\",\n CreditMemo = \"Credit Balance\",\n DebitNote = \"Debit Note\",\n Other = \"Other\",\n}\n\nexport interface VenueMapInfo {\n eventId: number;\n venueId: number;\n venueCfgId: number;\n svgMapVer: number | null;\n geoJsonVer: number | null;\n sections: SectionInfo[];\n sectionScores: SectionScoreOverride[];\n focalPt: FocalPointInfo | null;\n hasRow: boolean;\n}\n\nexport interface SectionInfo {\n id: number;\n name: string;\n rows: RowInfo[];\n sectionType: VenueMapSectionType;\n dist: number | null;\n angle: number | null;\n directionalAngle: number | null;\n height: number | null;\n specRow: VenueMapRow | null;\n}\n\nexport interface RowInfo {\n id: number;\n name: string | null;\n ordinal: number | null;\n tktClass: TicketClassInfo | null;\n seatQualityScore: number | null;\n isSpeculative: boolean;\n}\n\nexport interface TicketClassInfo {\n id: number;\n name: string;\n color: string;\n cssPostFix: string;\n}\n\nexport interface VenueMapRow {\n id: number;\n name: string | null;\n ordinal: number | null;\n ticketClassId: number | null;\n tktClass: VenueMapTicketClass | null;\n seatQualityScore: number | null;\n isSpeculative: boolean;\n}\n\nexport interface VenueMapTicketClass {\n ticketClassId: number;\n ticketClassName: string;\n color: string;\n cssPostFix: string;\n}\n\nexport interface SectionScoreOverride {\n sectionId: number;\n rowId: number;\n rowName: string | null;\n rowOrdinal: number | null;\n tkClsId: number | null;\n /** Score normalized to 0-100 according to max score of venue heat map */\n score: number | null;\n scoreRaw: number | null;\n isManualOverride: boolean | null;\n}\n\nexport interface FocalPointInfo {\n x: number | null;\n y: number | null;\n angleDeg: number | null;\n isDirectional: boolean;\n}\n\nexport interface AdPlatformTransactionAgg {\n sellerId: string;\n adCampaignId: string | null;\n adGroupId: string | null;\n adSpend: UiMoney;\n salesProceeds: UiMoney;\n qtySold: number;\n}\n\nexport enum TransactionAggType {\n None = \"None\",\n SellerId = \"SellerId\",\n CampaignId = \"CampaignId\",\n AdGroupId = \"AdGroupId\",\n}\n\nexport interface AutoPoInboundEmail {\n inboundEmailId: number;\n subject: string | null;\n fromEmailAddress: string | null;\n toEmailAddress: string | null;\n receiveDate: string | null;\n createDate: string;\n purchaseOrderVendorId: number | null;\n partialPurchaseOrderId: number | null;\n purchaseOrderId: number | null;\n saleId: number | null;\n classificationType: AutoPoInboundEmailClassificationType | null;\n}\n\nexport enum AutoPoInboundEmailClassificationType {\n NewPurchaseOrder = \"NewPurchaseOrder\",\n ExistingPurchaseOrder = \"ExistingPurchaseOrder\",\n Junk = \"Junk\",\n OneTimePass = \"OneTimePass\",\n Password = \"Password\",\n TicketsAvailable = \"TicketsAvailable\",\n PurchaseCancelled = \"PurchaseCancelled\",\n EventCancelled = \"EventCancelled\",\n EventPostponed = \"EventPostponed\",\n EnjoyTheEvent = \"EnjoyTheEvent\",\n TransferSent = \"TransferSent\",\n TransferAccepted = \"TransferAccepted\",\n TransferExpired = \"TransferExpired\",\n NewSale = \"NewSale\",\n ConfirmationDeadline = \"ConfirmationDeadline\",\n ShippingDeadline = \"ShippingDeadline\",\n SaleCancelled = \"SaleCancelled\",\n OtherMarketplaceContact = \"OtherMarketplaceContact\",\n}\n\nexport interface AutoPoInboundEmailQuery {\n inboundEmailIds: number[] | null;\n}\n\nexport interface AutoPoPartialPurchaseOrderInboundEmail {\n inboundEmailId: number;\n subject: string | null;\n fromEmailAddress: string | null;\n toEmailAddress: string | null;\n purchaseOrderVendorId: number | null;\n receiveDate: string | null;\n createDate: string;\n partialPurchaseOrderId: number | null;\n orderId: string | null;\n quantity: number | null;\n faceValue: number | null;\n purchaseOrderDate: string | null;\n totalCount: number;\n}\n\nexport interface AutoPoInboundEmailPartialPurchaseOrderQuery {\n classificationTypes: AutoPoInboundEmailClassificationType[] | null;\n includeUnclassified: boolean | null;\n subjectSearchText: string | null;\n fromEmailAddress: string | null;\n toEmailAddress: string | null;\n textBodySearchText: string | null;\n classificationTypeUpdateDateFrom: string | null;\n classificationTypeUpdateDateTo: string | null;\n}\n\nexport interface AutoPoPartialPurchaseOrder {\n partialPurchaseOrderId: number;\n orderId: string;\n eventName: string;\n eventDateTime: string | null;\n venueName: string;\n section: string;\n row: string;\n seatFrom: string;\n seatTo: string;\n quantity: number | null;\n faceValue: number | null;\n purchaseOrderDate: string | null;\n}\n\nexport interface AutoPoInboundEmailThreadEmail {\n inboundEmailId: number;\n classificationType: AutoPoInboundEmailClassificationType | null;\n subject: string | null;\n fromEmailAddress: string | null;\n toEmailAddress: string | null;\n receiveDate: string | null;\n htmlBody: string | null;\n textBody: string | null;\n purchaseOrderId: number | null;\n saleId: number | null;\n partialPurchaseOrderId: number | null;\n orderId: string | null;\n quantity: number | null;\n faceValue: number | null;\n purchaseOrderDate: string | null;\n purchaseOrderVendorId: number | null;\n attachments: AutoPoInboundEmailAttachment[] | null;\n}\n\nexport interface AutoPoInboundEmailAttachment {\n attachmentFileName: string;\n downloadUri: string;\n}\n\nexport interface ValueTupleOfStringAndString {\n item1: string;\n item2: string;\n}\n\nexport interface AutoPoSellerAccountCountryRestriction {\n country: string;\n isEnabled: boolean | null;\n}\n\nexport interface AutoPoSellerAccountVendorRestriction {\n vendorId: number;\n isIncluded: boolean;\n}\n\nexport interface BulkEditPreviewWithDetails {\n error: string | null;\n allItemsCount: number;\n preview: BulkEditPreview;\n sales: Sale[] | null;\n listings: Listing[] | null;\n purchases: PurchaseOrder[] | null;\n ticketGroups: PurchaseOrderTicketGroup[] | null;\n}\n\nexport interface BulkEditPreview {\n bulkEditCountPreview: { [key in keyof typeof ActionOutboxEntityType]?: BulkEditCountPreview; };\n}\n\nexport interface BulkEditCountPreview {\n entityType: ActionOutboxEntityType;\n totalCount: number;\n idsAffected: number[];\n}\n\nexport interface EntityWithTicketsQuery {\n entityIds: number[] | null;\n marketplaceEntityIds: string[] | null;\n eventOrMappingIds: string[] | null;\n oldPosEventIds: string[] | null;\n performerIds: number[] | null;\n venueIds: number[] | null;\n countryCodes: string[] | null;\n stateProvinceIds: number[] | null;\n cityIds: number[] | null;\n purchaseOrderId: number | null;\n purchaseOrderIds: number[] | null;\n saleIds: number[] | null;\n listingIds: number[] | null;\n purchaseVendorId: number | null;\n vendorAccessControlProviderId: number | null;\n purchaseVendorAccountIds: string[] | null;\n purchaseVendorOrderId: string | null;\n purchaseBuyerId: string | null;\n purchaseOrderCreatedBy: string | null;\n purchaseCommissionUserId: string | null;\n purchaseDates: DateTimeRangeWithRelative | null;\n inHandDates: DateTimeRangeWithRelative | null;\n eventTimeFrameFilter: EventTimeFrameFilter | null;\n sections: string[] | null;\n rows: string[] | null;\n sectionContains: string | null;\n sectionEquals: string | null;\n sectionNotContains: string | null;\n rowContains: string | null;\n rowEquals: string | null;\n rowNotContains: string | null;\n isSeatSaver: boolean | null;\n /** This is currently only used to filter on the frontend application. */\n eventDates: DateTimeRangeWithRelative | null;\n /** This is currently only used to filter on the frontend application. */\n eventNotReviewedSinceDate: DateTimeRangeWithRelative | null;\n isMapped: boolean | null;\n isMappingRejected: boolean | null;\n searchText: string | null;\n sortBy: EventSort | null;\n isSortDescending: boolean | null;\n tagName: string | null;\n tagValue: string | null;\n eventTagName: string | null;\n eventTagValue: string | null;\n lastSaleDates: DateTimeRangeWithRelative | null;\n noSaleDates: DateTimeRangeWithRelative | null;\n numberOfTicketsHeld: NumericRange | null;\n topLevelCategories: TopLevelCategory[] | null;\n parentCategories: number[] | null;\n internalNotes: string | null;\n internalNotesContains: string | null;\n internalNotesEquals: string | null;\n internalNotesNotContains: string | null;\n /** Output from the frontend application: `new Date().getTimezoneOffset()`\nE.g. UTC-8 => 480\nUsed for RelativeTimeRange typed properties\nCurrently only used for reporting */\n timezoneOffsetMins: number | null;\n currencyCode: string | null;\n currencyCodes: string[] | null;\n eventStatuses: ApiEventStatus[] | null;\n /** This is only used to filter on the frontend application. */\n searchConfigId: string | null;\n}\n\nexport interface ListingQuery extends EntityWithTicketsQuery {\n pricerSellerUserId: string | null;\n isPredelivered: boolean | null;\n isListed: boolean | null;\n deliveryType: DeliveryType | null;\n eventHasUnsoldTickets: boolean | null;\n hasUnsoldTickets: boolean | null;\n hasBroadcastError: boolean | null;\n isAutoPricingEnabled: boolean | null;\n isPricedAboveZero: boolean | null;\n lastPriceUpdateDates: DateTimeRangeWithRelative | null;\n lastPriceNoUpdateDates: DateTimeRangeWithRelative | null;\n autoPricingResultTypes: AutoPricingResultType[] | null;\n isSeatingUnmapped: boolean | null;\n isAdminHold: boolean | null;\n isDuplicate: boolean | null;\n isPricedByMarketplace: boolean | null;\n isPendingProof: boolean | null;\n purchaseCancellationDates: DateTimeRangeWithRelative | null;\n purchaseCancelledOnly: boolean | null;\n isNoFulfill: boolean | null;\n ticketType: TicketType | null;\n /** This is only used to filter on the frontend application. */\n viewMode: InventoryViewMode | null;\n eventUnpricedStatus: EventUnpricedStatus | null;\n}\n\nexport interface DateTimeRangeWithRelative extends DateTimeRange {\n relativeStartSecs: number | null;\n relativeEndSecs: number | null;\n roundingMode: RelativeTimeRoundingMode | null;\n}\n\nexport enum RelativeTimeRoundingMode {\n Day = \"Day\",\n Week = \"Week\",\n Month = \"Month\",\n Year = \"Year\",\n}\n\nexport enum InventoryViewMode {\n TileView = \"Tile View\",\n MetricView = \"Metric View\",\n FlattenedView = \"Flattened View\",\n}\n\nexport enum EventUnpricedStatus {\n AllUnpriced = \"All\",\n NoneUnpriced = \"None\",\n AnyUnpriced = \"Any\",\n}\n\nexport enum EventTimeFrameFilter {\n Future = \"Future Events\",\n Past = \"Past Events\",\n}\n\nexport enum EventSort {\n Date = \"Sort by Date\",\n MainDisplay = \"Sort by Title\",\n}\n\nexport interface NumericRange {\n start: number | null;\n end: number | null;\n}\n\nexport interface BulkEditProgress {\n updateKey: string;\n method: string;\n step: BulkEditStep;\n successCount: number;\n failureCount: number;\n warningCount: number;\n totalCount: number;\n status: string | null;\n error: string | null;\n warning: string | null;\n successPercent: number | null;\n failurePercent: number | null;\n warningPercent: number | null;\n countsByEntity: { [key in keyof typeof ActionOutboxEntityType]?: BulkEditCount; };\n retryableEntities: BulkEditPreview | null;\n}\n\nexport enum BulkEditStep {\n Disabled = \"Disabled\",\n Initializing = \"Initializing\",\n InProgress = \"InProgress\",\n Done = \"Done\",\n Cancelled = \"Cancelled\",\n DoneWithRetryableEntities = \"DoneWithRetryableEntities\",\n}\n\nexport interface BulkEditCount {\n totalCount: number;\n successCount: number;\n failureCount: number;\n warningCount: number;\n entityType: ActionOutboxEntityType;\n ttlCnt: number;\n succCnt: number;\n failCnt: number;\n warnCnt: number;\n}\n\nexport enum PricingFloorCeilingAdjustmentType {\n MarketPrice = \"MarketPrice\",\n UnitCost = \"UnitCost\",\n CurrentFloor = \"CurrentFloor\",\n}\n\nexport interface ValueTupleOfBulkEditPreviewAndListingDetailsUpdateInput {\n item1: BulkEditPreview;\n item2: ListingDetailsUpdateInput;\n}\n\nexport interface ListingDetailsPricingUpdates {\n netProceedsFloor: number | null;\n netProceedsCeiling: number | null;\n skipPriceProtection: boolean | null;\n skipAutoPricing: boolean | null;\n autoPricingEnabled: boolean | null;\n undercutMode: AutoPricingUndercutMode | null;\n skipUndercut: boolean | null;\n undercutAbsoluteAmount: number | null;\n undercutRelativeAmount: number | null;\n compListingMode: AutoPricingCompListingMode | null;\n skipCompListing: boolean | null;\n compListingFloor: number | null;\n compListingCeiling: number | null;\n compListingQuantityScoreAdjustmentEnabled: boolean | null;\n compListingQuantityScoreAdjustmentOverrides: { [key: string]: number; } | null;\n compListingQuantityScoreAdjustmentOverrideJson: string | null;\n compListingOnlyForSameZoneEnabled: boolean | null;\n compListingOnlyForSelectedSectionsEnabled: boolean | null;\n compListingExcludeFanInventory: boolean | null;\n compListingExcludeDefects: boolean | null;\n compListingSelectedSectionSettings: SelectedSectionSettings | null;\n compListingQuantityFilters: CompListingQuantity | null;\n skipAdvancePricing: boolean | null;\n circuitBreakerRelativeCeiling: number | null;\n circuitBreakerRelativeFloor: number | null;\n circuitBreakerMaxDiscountVelocityPercent: number | null;\n circuitBreakerMaxDiscountVelocityTicksInHours: number | null;\n circuitBreakerMinCompListingCount: number | null;\n outlierMode: AutoPricingOutlierMode | null;\n outlierStandardDeviations: number | null;\n outlierKthLowestLimit: number | null;\n outlierKthLowestLimitRelativeSpacing: number | null;\n outlierKthLowestLimitAbsoluteSpacing: number | null;\n currencyCode: string | null;\n}\n\nexport interface ListingDetailsUpdateInput extends ListingDetailsPricingUpdates {\n id: number;\n rowVersion: number | null;\n adminHoldExpirationDate: string | null;\n adminHoldNotes: string | null;\n marketplaceSeatOverrides: ListingMarketplaceSeatingOverride[];\n splitType: SplitType | null;\n hideSeatsFromMarketplace: boolean | null;\n faceValue: number | null;\n inHandDate: string | null;\n daysBeforeEvent: number | null;\n section: string | null;\n sectionId: number | null;\n row: string | null;\n rowId: number | null;\n internalNotes: string | null;\n ticketTypeRules: TicketTypeOverride | null;\n manualMaxDisplayQuantity: number | null;\n isNoFulfill: boolean | null;\n enableNativeSync: boolean | null;\n seatTraits: ListingNote[] | null;\n delivType: DeliveryType | null;\n updateSalesOfListings: boolean | null;\n pricerSellerUserId: string | null;\n listPrice: number | null;\n allInPrice: number | null;\n buyerUserId: string | null;\n marketplacePriceUpdates: ListingMarketplacePriceUpdateInput[];\n tags: Tag[] | null;\n}\n\nexport interface ListingMarketplaceSeatingOverride {\n marketplace: Marketplace;\n overrideSection: string | null;\n overrideRow: string | null;\n overrideSeats: string | null;\n overrideRowId: number | null;\n overrideSectionId: number | null;\n}\n\nexport interface ListingMarketplacePriceUpdateInput {\n listPrice: number | null;\n allInPrice: number | null;\n priceByMarketplace: boolean;\n marketplace: Marketplace;\n markup: number | null;\n}\n\nexport interface CompListingQuantity {\n exactQuantities: number[];\n greaterThanOrEqualToQuantity: number | null;\n}\n\nexport interface ValueTupleOfBulkEditPreviewAndListingDetailsAutoPricingSectionUpdatesV2 {\n item1: BulkEditPreview;\n item2: ListingDetailsAutoPricingSectionUpdatesV2;\n}\n\nexport interface ListingDetailsAutoPricingSectionUpdatesV2 {\n id: number;\n rowVersion: number | null;\n currencyCode: string | null;\n netProceedsFloor: PosFieldOfNullableDecimal | null;\n netProceedsCeiling: PosFieldOfNullableDecimal | null;\n netProceedsFloorAdjustmentType: PricingFloorCeilingAdjustmentType | null;\n netProceedsFloorAdjustmentAmount: number | null;\n netProceedsFloorAdjustmentRelative: boolean | null;\n autoPricingEnabled: PosFieldOfNullableBoolean | null;\n undercutMode: PosFieldOfNullableAutoPricingUndercutMode | null;\n undercutAbsoluteAmount: PosFieldOfNullableDecimal | null;\n undercutRelativeAmount: PosFieldOfNullableDecimal | null;\n compListingMode: PosFieldOfNullableAutoPricingCompListingMode | null;\n compListingFloor: PosFieldOfNullableDecimal | null;\n compListingCeiling: PosFieldOfNullableDecimal | null;\n compListingQuantityScoreAdjustmentEnabled: PosFieldOfNullableBoolean | null;\n compListingQuantityScoreAdjustmentOverrideJson: PosFieldOfString | null;\n compListingOnlyForSameZoneEnabled: PosFieldOfNullableBoolean | null;\n compListingOnlyForSelectedSectionsEnabled: PosFieldOfNullableBoolean | null;\n compListingExcludeFanInventory: PosFieldOfNullableBoolean | null;\n compListingExcludeDefects: PosFieldOfNullableBoolean | null;\n compListingSelectedSectionSettings: PosFieldOfSelectedSectionSettings | null;\n includeExistingSelectedSections: boolean | null;\n venueZoneMapName: string | null;\n deriveCompsFromVenueZoneConfig: boolean | null;\n includeBetterZones: boolean | null;\n rowCompOffset: number | null;\n circuitBreakerRelativeCeiling: PosFieldOfNullableDecimal | null;\n circuitBreakerRelativeFloor: PosFieldOfNullableDecimal | null;\n circuitBreakerMaxDiscountVelocityPercent: PosFieldOfNullableDecimal | null;\n circuitBreakerMaxDiscountVelocityTicksInHours: PosFieldOfNullableLong | null;\n circuitBreakerMinCompListingCount: PosFieldOfNullableInteger | null;\n outlierMode: PosFieldOfNullableAutoPricingOutlierMode | null;\n outlierStandardDeviations: PosFieldOfNullableDecimal | null;\n outlierKthLowestLimit: PosFieldOfNullableInteger | null;\n outlierKthLowestLimitRelativeSpacing: PosFieldOfNullableDecimal | null;\n outlierKthLowestLimitAbsoluteSpacing: PosFieldOfNullableDecimal | null;\n}\n\nexport interface PosFieldOfNullableDecimal {\n value: number | null;\n hasChanged: boolean;\n}\n\nexport interface PosFieldOfNullableBoolean {\n value: boolean | null;\n hasChanged: boolean;\n}\n\nexport interface PosFieldOfNullableAutoPricingUndercutMode {\n value: AutoPricingUndercutMode | null;\n hasChanged: boolean;\n}\n\nexport interface PosFieldOfNullableAutoPricingCompListingMode {\n value: AutoPricingCompListingMode | null;\n hasChanged: boolean;\n}\n\nexport interface PosFieldOfString {\n value: string | null;\n hasChanged: boolean;\n}\n\nexport interface PosFieldOfSelectedSectionSettings {\n value: SelectedSectionSettings | null;\n hasChanged: boolean;\n}\n\nexport interface PosFieldOfNullableLong {\n value: number | null;\n hasChanged: boolean;\n}\n\nexport interface PosFieldOfNullableInteger {\n value: number | null;\n hasChanged: boolean;\n}\n\nexport interface PosFieldOfNullableAutoPricingOutlierMode {\n value: AutoPricingOutlierMode | null;\n hasChanged: boolean;\n}\n\nexport interface BulkListingPriceCalculationResult {\n listingPriceCalculations: BulkListingPriceCalculation[];\n compListings: CompListing[];\n sellerCompListings: CompListing[];\n}\n\nexport interface BaseListingPriceCalculation {\n listingId: number;\n websitePrice: UiMoney | null;\n autoPricingResultType: AutoPricingResultType | null;\n errorMessage: string | null;\n underCutChosenListingId: number | null;\n /** Computed Floor, includes premiums */\n cmpFlr: UiMoney | null;\n /** Computed Ceiling, includes premiums */\n cmpCeil: UiMoney | null;\n /** UndercutAbsolute amount */\n udrAbs: number | null;\n /** UndercutRelative amount */\n udrRel: number | null;\n /** UndercutAbsolute Rank Premium */\n udrAbsPrm: number | null;\n /** UndercutRelative Rank Premium */\n udrRelPrm: number | null;\n}\n\nexport interface BulkListingPriceCalculation extends BaseListingPriceCalculation {\n compStubHubListingIds: number[];\n outlierStubHubListingIds: number[];\n sellerCompStubHubListingIds: number[];\n}\n\nexport interface CompListing {\n listingId: number;\n availableTickets: number | null;\n rowId: number | null;\n section: string | null;\n row: string | null;\n seatFrom: string | null;\n seatTo: string | null;\n sellerNetProceeds: UiMoney | null;\n sellerNetProceedsInUSD: UiMoney | null;\n sellerAllInPrice: UiMoney | null;\n currencyCode: string | null;\n listingNotes: ListingNote[] | null;\n isWithoutOutlier: boolean | null;\n isAnchor: boolean | null;\n isSellerCompListing: boolean | null;\n validPurchaseQuantities: number[];\n}\n\nexport interface ValueTupleOfInt64OfAndListingPriceCalculationsInEventInput {\n item1: number[];\n item2: ListingPriceCalculationsInEventInput;\n}\n\nexport interface ListingPriceCalculationsInEventInput {\n compListingSetting: CompListingSettingUpdate;\n underCutSetting: UnderCutSettingUpdate;\n outlierSetting: OutlierSettingUpdate;\n netProceedsFloor: PosFieldOfNetProceedsFloorAdjustment | null;\n netProceedsCeiling: PosFieldOfUiMoney | null;\n}\n\nexport interface CompListingSettingUpdate {\n mode: PosFieldOfNullableAutoPricingCompListingMode | null;\n selectedSectionSettings: PosFieldOfSelectedSectionSettings | null;\n includeExistingSelectedSectionSettings: PosFieldOfNullableBoolean | null;\n onlyForSelectedSectionsEnabled: PosFieldOfNullableBoolean | null;\n quantityFilters: PosFieldOfCompListingQuantity | null;\n excludeFanInventory: PosFieldOfNullableBoolean | null;\n excludeDefects: PosFieldOfNullableBoolean | null;\n}\n\nexport interface PosFieldOfCompListingQuantity {\n value: CompListingQuantity | null;\n hasChanged: boolean;\n}\n\nexport interface UnderCutSettingUpdate {\n underCutAbsoluteAmount: PosFieldOfUiMoney | null;\n underCutRelativeAmount: PosFieldOfNullableDecimal | null;\n}\n\nexport interface PosFieldOfUiMoney {\n value: UiMoney | null;\n hasChanged: boolean;\n}\n\nexport interface OutlierSettingUpdate {\n mode: PosFieldOfNullableAutoPricingOutlierMode | null;\n standardDeviations: PosFieldOfNullableDecimal | null;\n outlierLimit: PosFieldOfNullableInteger | null;\n absoluteOutlierSpacing: PosFieldOfUiMoney | null;\n relativeOutlierSpacing: PosFieldOfNullableDecimal | null;\n}\n\nexport interface PosFieldOfNetProceedsFloorAdjustment {\n value: NetProceedsFloorAdjustment | null;\n hasChanged: boolean;\n}\n\nexport interface NetProceedsFloorAdjustment {\n relativeAdjustmentType: PricingFloorCeilingAdjustmentType | null;\n absoluteAmount: UiMoney | null;\n relativeAmount: UiMoney | null;\n relativePercentage: number | null;\n}\n\nexport interface ValueTupleOfBulkEditPreviewAndListingPricesUpdateInput {\n item1: BulkEditPreview;\n item2: ListingPricesUpdateInput;\n}\n\nexport interface ListingPricesUpdateInput {\n id: number;\n listPrice: number | null;\n allInPrice: number | null;\n netProceedsFloor: number | null;\n netProceedsCeiling: number | null;\n autoPricingEnabled: boolean | null;\n marketplacePriceUpdates: ListingMarketplacePriceUpdateInput[];\n}\n\nexport interface ValueTupleOfBulkEditPreviewAndISetOfMarketplaceAndISetOfMarketplace {\n item1: BulkEditPreview;\n item2: Marketplace[];\n item3: Marketplace[];\n}\n\nexport interface ValueTupleOfBulkEditPreviewAndDeliveryTypeAndIListOfTicketTypePriority {\n item1: BulkEditPreview;\n item2: DeliveryType;\n item3: TicketTypePriority[];\n}\n\nexport interface MergeListingGroupInputList {\n mergeListingGroupInputs: MergeListingGroupInput[];\n}\n\nexport interface MergeListingGroupInput {\n listingGroupId: string;\n name: string;\n viagogoEventId: number | null;\n viagogoMappingId: string | null;\n desiredActiveListings: number | null;\n minActiveListings: number | null;\n maxActiveListings: number | null;\n targetPercentage: number | null;\n deprioritizedQuantities: string[] | null;\n listingGroupItems: ListingGroupItemInput[];\n groupUndercutSetting: ListingGroupUndercutSetting | null;\n marketplaceSettings: ListingGroupListingMarketplaceSettings | null;\n groupingMethods: ListingGroupingMethods | null;\n}\n\nexport interface ListingGroupItemInput {\n listingId: number;\n priority: number;\n groupId: string | null;\n undercutSetting: ListingGroupUndercutSetting | null;\n}\n\nexport interface ListingGroupListingMarketplaceSettings {\n listingMarketplaceSettings: { [key: string]: ListingMarketplaceSetting; } | null;\n}\n\nexport interface ListingMarketplaceSetting {\n listingBroadcastStateId: number;\n}\n\nexport interface ListingGroupingMethods {\n groupingMethods: ListingGroupingMethod[];\n}\n\nexport interface ListingGroupingMethod {\n groupingOrder: number;\n groupingType: GroupingType;\n groupingValue: string | null;\n numberOfBucket: number | null;\n bucketType: BucketType | null;\n}\n\nexport enum GroupingType {\n None = \"None\",\n Zone = \"Zone\",\n Section = \"Section\",\n Row = \"Row\",\n SeatScore = \"SeatScore\",\n Quantity = \"Quantity\",\n UnitCost = \"UnitCost\",\n Custom = \"Custom\",\n}\n\nexport enum BucketType {\n None = \"None\",\n Clusters = \"Clusters\",\n SameSize = \"SameSize\",\n}\n\nexport interface AutoGroupListingV2Input {\n mode: AutoCompAndAutoGroupMode;\n viagogoEventId: number;\n eventListingIds: number[];\n zoneSectionAreaGroupLookupJson: string;\n /** Determines how the row ordinal comps will be determinedjd */\n rowCompOffset: number;\n /** Determines how the RowArea names will be determined */\n rowGroupSetting: RowGroupSetting;\n venueZoneConfigType: VenueZoneConfigType;\n combineCornersAndEnds: boolean;\n rowCompOverrides: RowCompOverride[];\n useCustomRank: boolean;\n mergeListingGroupInputs: MergeListingGroupInput[] | null;\n}\n\nexport enum AutoCompAndAutoGroupMode {\n AutoComp = \"AutoComp\",\n AutoGroup = \"AutoGroup\",\n AutoCompAndAutoGroup = \"AutoCompAndAutoGroup\",\n}\n\nexport enum RowGroupSetting {\n SingleTwoToFiveSixPlus = \"SingleTwoToFiveSixPlus\",\n OneToFiveSixPlus = \"OneToFiveSixPlus\",\n OneToTenElevenPlus = \"OneToTenElevenPlus\",\n AllRows = \"AllRows\",\n OneTwoToFiveSixToTwelveThirteenPlus = \"OneTwoToFiveSixToTwelveThirteenPlus\",\n}\n\nexport enum VenueZoneConfigType {\n Amphitheater = \"Amphitheater\",\n ConcertsSectionsBehindStage = \"ConcertsSectionsBehindStage\",\n SportsOrConcertsWith360 = \"SportsOrConcertsWith360\",\n}\n\nexport interface RowCompOverride {\n rowOrdinalFrom: number;\n rowOrdinalTo: number;\n offsetOverride: number;\n}\n\nexport interface ValueTupleOfBulkEditPreviewAndIListOfCommission {\n item1: BulkEditPreview;\n item2: Commission[];\n}\n\nexport interface ValueTupleOfBulkEditPreviewAndIListOfListingNote {\n item1: BulkEditPreview;\n item2: ListingNote[];\n}\n\nexport interface BulkEditListingGroupSettingsInput {\n desiredActiveListings: number | null;\n deprioritizedQuantities: string[] | null;\n groupUndercutSetting: ListingGroupUndercutSetting | null;\n marketplaceSettings: ListingGroupListingMarketplaceSettings | null;\n autoPricingInputs: AutoPricingInputs | null;\n listingGroupListingIds: number[] | null;\n}\n\nexport interface AutoPricingInputs {\n autoPriceFrequency: number | null;\n scoreModel: ScoreModel | null;\n venueZoneConfigType: VenueZoneConfigType | null;\n venueZoneOverrideId: number | null;\n autoPricingDefaultQuantityFiltersJson: string | null;\n undercutMode: AutoPricingUndercutMode | null;\n undercutAbsoluteAmount: number | null;\n undercutRelativeAmount: number | null;\n compListingMode: AutoPricingCompListingMode | null;\n compListingFloor: number | null;\n compListingCeiling: number | null;\n compListingQuantityScoreAdjustmentEnabled: boolean | null;\n compListingQuantityScoreAdjustmentOverrides: { [key: string]: number; } | null;\n compListingQuantityScoreAdjustmentOverrideJson: string | null;\n compListingOnlyForSameZoneEnabled: boolean | null;\n compListingOnlyForSelectedSectionsEnabled: boolean | null;\n compListingExcludeFanInventory: boolean | null;\n compListingExcludeDefects: boolean | null;\n compListingSelectedSectionSettings: SelectedSectionSettings | null;\n compListingQuantityFilters: CompListingQuantity | null;\n circuitBreakerRelativeCeiling: number | null;\n circuitBreakerRelativeFloor: number | null;\n circuitBreakerMaxDiscountVelocityPercent: number | null;\n circuitBreakerMaxDiscountVelocityTicksInHours: number | null;\n circuitBreakerMinCompListingCount: number | null;\n outlierMode: AutoPricingOutlierMode | null;\n outlierStandardDeviations: number | null;\n outlierKthLowestLimit: number | null;\n outlierKthLowestLimitRelativeSpacing: number | null;\n outlierKthLowestLimitAbsoluteSpacing: number | null;\n}\n\nexport enum ScoreModel {\n Model1 = \"Model1\",\n Model2 = \"Model2\",\n Model3 = \"Model3\",\n Model4 = \"Model4\",\n VenueGeometry = \"VenueGeometry\",\n MergedVenueGeometry = \"MergedVenueGeometry\",\n Bezier = \"Bezier\",\n AdvancedVenueGeometry = \"AdvancedVenueGeometry\",\n BespokeBaseball = \"BespokeBaseball\",\n SqsClassifier = \"sqsClassifier\",\n}\n\nexport interface BulkEditLog {\n entityType: ActionOutboxEntityType;\n bulkActionType: BulkActionType;\n bulkProcessingId: string;\n payload: BulkEditLogPayload;\n sellerUserId: string | null;\n startDate: string;\n endDate: string | null;\n}\n\n/** Enum used when saving bulk action logs and then retrieving them by action type for display. */\nexport enum BulkActionType {\n GroupListings = \"GroupListings\",\n ChangeEvent = \"ChangeEvent\",\n AdminHold = \"AdminHold\",\n MarkAsFulfilled = \"MarkAsFulfilled\",\n CancelPurchase = \"CancelPurchase\",\n DeleteTicketGroup = \"DeleteTicketGroup\",\n UploadPurchaseFile = \"UploadPurchaseFile\",\n BackfillDeliverySettings = \"BackfillDeliverySettings\",\n ConvertPurchasePayment = \"ConvertPurchasePayment\",\n WasteTickets = \"WasteTickets\",\n UpdateBroadcastSettings = \"UpdateBroadcastSettings\",\n UpdatePrices = \"UpdatePrices\",\n UpdateTagValues = \"UpdateTagValues\",\n UpdatePriceFloorCeiling = \"UpdatePriceFloorCeiling\",\n UpdateAutoPricingSettings = \"UpdateAutoPricingSettings\",\n UpdateGeneralSettings = \"UpdateGeneralSettings\",\n UpdateMarketplaceSeating = \"UpdateMarketplaceSeating\",\n UpdateTicketTypeRules = \"UpdateTicketTypeRules\",\n UpdateBuyerCommissions = \"UpdateBuyerCommissions\",\n UpdateInternalNotes = \"UpdateInternalNotes\",\n UpdateIsNoFulfill = \"UpdateIsNoFulfill\",\n UpdateDeliveryType = \"UpdateDeliveryType\",\n UpdateSeatTraits = \"UpdateSeatTraits\",\n UpdateMarketplacePrices = \"UpdateMarketplacePrices\",\n UpdatePurchaseCurrency = \"UpdatePurchaseCurrency\",\n DeleteSeatSavers = \"DeleteSeatSavers\",\n RemovePredelivery = \"RemovePredelivery\",\n UngroupListings = \"UngroupListings\",\n EditListingGroupSetting = \"EditListingGroupSetting\",\n MarkPurchaseAsPaid = \"MarkPurchaseAsPaid\",\n MarkSaleAsPaid = \"MarkSaleAsPaid\",\n CancelSale = \"CancelSale\",\n}\n\nexport interface BulkEditLogPayload {\n method: string;\n latestStep: BulkEditStep;\n errors: string[];\n warnings: string[];\n entitiesByType: { [key in keyof typeof ActionOutboxEntityType]?: BulkEditCountWithId; };\n filterQuery: EntityWithTicketsQuery | null;\n /** Free form dict to save all params that we can */\n params: any | null;\n startDate: string;\n endDate: string;\n}\n\nexport interface BulkEditCountWithId extends BulkEditCount {\n skipCount: number;\n idsToBeProcessed: string[];\n idsSkipped: string[];\n idsSuccessful: string[];\n idsFailed: string[];\n idsWarning: string[];\n idsToRetry: string[];\n}\n\nexport interface BulkEditLogQuery {\n startDates: DateTimeRangeWithRelative | null;\n entityType: ActionOutboxEntityType | null;\n bulkActionTypes: BulkActionType[];\n timezoneOffsetMins: number | null;\n}\n\nexport interface PurchaseOrderQuery extends EntityWithTicketsQuery {\n ticketGroupIds: number[] | null;\n purchaseMonths: string[] | null;\n /** Payment method type */\n paymentMethod: PurchasePaymentMethodType | null;\n paymentStatus: PurchasePaymentStatus | null;\n paymentDates: DateTimeRangeWithRelative | null;\n totalCostHigh: number | null;\n totalCostLow: number | null;\n deliveryType: DeliveryType | null;\n purchaseOrderState: PurchaseOrderState | null;\n /** This is only used to filter on the frontend application. */\n viewMode: PurchaseViewMode | null;\n /** Exact payment method used */\n paymentMethodId: number | null;\n paymentCurrencyCodes: string[] | null;\n isConsignment: boolean | null;\n}\n\nexport enum PurchaseViewMode {\n TileView = \"Tile View\",\n FlattenedView = \"Flattened View\",\n EventTileView = \"Event Tile View\",\n}\n\nexport interface ValueTupleOfBulkEditPreviewAndPosFieldOfNullableGuid {\n item1: BulkEditPreview;\n item2: PosFieldOfNullableGuid;\n}\n\nexport interface PosFieldOfNullableGuid {\n value: string | null;\n hasChanged: boolean;\n}\n\nexport interface ValueTupleOfBulkEditPreviewAndString {\n item1: BulkEditPreview;\n item2: string;\n}\n\nexport interface ValueTupleOfBulkEditPreviewAndNullableSaleCancellationReason {\n item1: BulkEditPreview;\n item2: SaleCancellationReason | null;\n}\n\nexport interface ImportFileResult {\n startedInBackground: boolean;\n success: boolean;\n successCount: number;\n failureCount: number;\n totalCount: number;\n errors: string[];\n errorRows: number[];\n}\n\nexport interface SaleQuery extends EntityWithTicketsQuery {\n soldOnMarketplace: Marketplace | null;\n saleStatus: PointOfSaleSaleStatus | null;\n saleStatuses: PointOfSaleSaleStatus[] | null;\n fulfillmentStates: PointOfSaleFulfillmentState[] | null;\n paymentState: PointOfSalePaymentState | null;\n marketplacePaymentState: MarketplacePaymentState | null;\n paymentReceived: boolean | null;\n paymentReferenceId: string | null;\n paymentDates: DateTimeRangeWithRelative | null;\n fulfillmentDates: DateTimeRangeWithRelative | null;\n cancellationDates: DateTimeRangeWithRelative | null;\n saleDates: DateTimeRangeWithRelative | null;\n ticketType: TicketType | null;\n fulfillerSellerUserId: string | null;\n listingInsertBy: string | null;\n isNoFulfill: boolean | null;\n /** This is only used to filter on the frontend application. */\n viewMode: SalesViewMode | null;\n}\n\nexport enum SalesViewMode {\n TileView = \"Tile View\",\n FlattenedView = \"Flattened View\",\n}\n\nexport interface ValueTupleOfBulkEditPreviewAndSaleInput {\n item1: BulkEditPreview;\n item2: SaleInput;\n}\n\nexport interface SaleInput {\n saleId: number;\n ticketType: PosFieldOfNullableTicketType | null;\n fulfillerSellerUserId: PosFieldOfNullableGuid | null;\n internalNotes: PosFieldOfString | null;\n tags: PosFieldArrayOfTag | null;\n lineItems: PosFieldArrayOfSaleLineItem | null;\n marketplacePaymentLines: PosFieldArrayOfSiteMarketplacePaymentLineInput | null;\n paymentReceived: PosFieldOfNullableBoolean | null;\n paymentReferenceId: PosFieldOfString | null;\n lastPaymentDate: PosFieldOfNullableDateTime | null;\n paymentAmountReceived: PosFieldOfNullableDecimal | null;\n paymentCurrency: PosFieldOfString | null;\n disableAutoSourcing: PosFieldOfNullableBoolean | null;\n isNoFulfill: PosFieldOfNullableBoolean | null;\n commissions: PosFieldArrayOfCommission | null;\n cancellationReason: PosFieldOfNullableSaleCancellationReason | null;\n}\n\nexport interface PosFieldOfNullableTicketType {\n value: TicketType | null;\n hasChanged: boolean;\n}\n\n/** Note - doing PosFieldArray so it can be property generated to React TypeScript */\nexport interface PosFieldArrayOfTag {\n value: Tag[] | null;\n hasChanged: boolean;\n}\n\n/** Note - doing PosFieldArray so it can be property generated to React TypeScript */\nexport interface PosFieldArrayOfSaleLineItem {\n value: SaleLineItem[] | null;\n hasChanged: boolean;\n}\n\nexport interface SaleLineItem {\n id: number;\n saleId: number;\n status: SaleLineItemStatus;\n costType: SaleCostType;\n costDate: string | null;\n dueDate: string | null;\n cost: number;\n currencyCode: string;\n description: string | null;\n saleLineItemChargeReason: SaleLineItemChargeReason | null;\n saleLineItemCreditReason: SaleLineItemCreditReason | null;\n marketplacePaymentLineId: number | null;\n paymentReceived: boolean | null;\n paymentReferenceId: string | null;\n}\n\nexport enum SaleLineItemStatus {\n Paid = \"Paid\",\n Unpaid = \"Unpaid\",\n}\n\nexport enum SaleCostType {\n Charge = \"Charge\",\n Credit = \"Credit\",\n Proceeds = \"Proceeds\",\n Taxes = \"Taxes\",\n}\n\nexport enum SaleLineItemChargeReason {\n CancelledProceeds = \"CancelledProceeds\",\n DroppedOrderPenalty = \"DroppedOrderPenalty\",\n Compensation = \"Compensation\",\n Other = \"Other\",\n}\n\nexport enum SaleLineItemCreditReason {\n ReversedPenalty = \"ReversedPenalty\",\n ReversedCharge = \"ReversedCharge\",\n ProceedRepayment = \"ProceedRepayment\",\n Other = \"Other\",\n}\n\n/** Note - doing PosFieldArray so it can be property generated to React TypeScript */\nexport interface PosFieldArrayOfSiteMarketplacePaymentLineInput {\n value: SiteMarketplacePaymentLineInput[] | null;\n hasChanged: boolean;\n}\n\nexport interface SiteMarketplacePaymentLineInput {\n marketplacePaymentLineId: number | null;\n marketplacePaymentId: number | null;\n externalPaymentId: string;\n externalPaymentLineId: string;\n externalSaleId: string;\n saleId: number | null;\n currency: string;\n amount: number;\n isCredit: boolean;\n paymentLineType: MarketplacePaymentLineType;\n paymentState: MarketplacePaymentState;\n paymentDate: string | null;\n receivedDate: string | null;\n}\n\nexport enum MarketplacePaymentLineType {\n Credit = \"Credit\",\n Proceeds = \"Proceeds\",\n FullPrice = \"FullPrice\",\n SellerFee = \"SellerFee\",\n Penalty = \"Penalty\",\n AlternativeTickets = \"AlternativeTickets\",\n OrderNotFulfilled = \"OrderNotFulfilled\",\n CancelledEvent = \"CancelledEvent\",\n WitheldFunds = \"WitheldFunds\",\n LastMinuteSalesLateDelivery = \"LastMinuteSalesLateDelivery\",\n ExpiredShippingLabel = \"ExpiredShippingLabel\",\n DeliveryMethodChange = \"DeliveryMethodChange\",\n BuyerDeniedEntry = \"BuyerDeniedEntry\",\n WrongTicketsReturnShippingCost = \"WrongTicketsReturnShippingCost\",\n EarlyShippingLabelGeneration = \"EarlyShippingLabelGeneration\",\n WrongTrackingNumber = \"WrongTrackingNumber\",\n ExcessiveFailureRate = \"ExcessiveFailureRate\",\n SellerError = \"SellerError\",\n AlternativeTicketsBuyerCompensation = \"AlternativeTicketsBuyerCompensation\",\n RAGSellerFaultNoResponse = \"RAGSellerFaultNoResponse\",\n OverchargedSeller = \"OverchargedSeller\",\n ShippingRefund = \"ShippingRefund\",\n SellerRelationship = \"SellerRelationship\",\n RAGDeliveryDispute = \"RAGDeliveryDispute\",\n CSError = \"CSError\",\n LMSError = \"LMSError\",\n TaxRefund = \"TaxRefund\",\n Other = \"Other\",\n Charge = \"Charge\",\n}\n\nexport interface PosFieldOfNullableDateTime {\n value: string | null;\n hasChanged: boolean;\n}\n\n/** Note - doing PosFieldArray so it can be property generated to React TypeScript */\nexport interface PosFieldArrayOfCommission {\n value: Commission[] | null;\n hasChanged: boolean;\n}\n\nexport interface PosFieldOfNullableSaleCancellationReason {\n value: SaleCancellationReason | null;\n hasChanged: boolean;\n}\n\nexport interface CreateCampaignClientResponse {\n success: boolean;\n campaignId: string | null;\n}\n\nexport enum AdCampaignState {\n Active = \"Active\",\n Paused = \"Paused\",\n Archived = \"Archived\",\n}\n\nexport interface MoneyType {\n amount: number;\n currencyCode: string;\n}\n\nexport interface CreateAdGroupClientResponse {\n success: boolean;\n adGroupId: string | null;\n}\n\nexport interface CreateAdGroupRequest {\n name: string;\n state: AdGroupState;\n campaignId: string;\n baseBid: MoneyType;\n maxBid: MoneyType;\n dailyBudget: MoneyType;\n bidModifiers: KeyValuePairOfAdGroupBidModifierKeyAndCreateAdGroupBidModifierValue[];\n}\n\nexport enum AdGroupState {\n Active = \"Active\",\n Paused = \"Paused\",\n Archived = \"Archived\",\n}\n\nexport interface KeyValuePairOfAdGroupBidModifierKeyAndCreateAdGroupBidModifierValue {\n key: AdGroupBidModifierKey;\n value: CreateAdGroupBidModifierValue;\n}\n\nexport interface AdGroupBidModifierKey {\n topLevelCategoryId: number | null;\n leafCategoryId: number | null;\n venueId: number | null;\n eventId: number | null;\n ticketClassId: number | null;\n sectionId: number | null;\n rowId: number | null;\n externalId: string | null;\n}\n\nexport interface CreateAdGroupBidModifierValue {\n isManaged: boolean;\n value: number;\n}\n\nexport interface ArchiveCampaignClientResponse {\n success: boolean;\n}\n\nexport interface ArchiveAdGroupClientResponse {\n success: boolean;\n}\n\nexport interface AdCampaignEntity {\n campaignId: string;\n state: AdCampaignState;\n name: string;\n sellerId: string;\n budget: MoneyType;\n startDateTime: string;\n endDateTime: string | null;\n currencyCode: string;\n}\n\nexport interface AdGroup {\n adGroupId: string;\n state: AdGroupState;\n name: string;\n campaignId: string;\n baseBid: MoneyType;\n maxBid: MoneyType;\n dailyBudget: MoneyType;\n bidModifiers: KeyValuePairOfAdGroupBidModifierKeyAndAdGroupBidModifierValue[];\n}\n\nexport interface KeyValuePairOfAdGroupBidModifierKeyAndAdGroupBidModifierValue {\n key: AdGroupBidModifierKey;\n value: AdGroupBidModifierValue;\n}\n\nexport interface AdGroupBidModifierValue {\n adGroupBidModifierId: string;\n adGroupId: string;\n isManaged: boolean;\n value: number;\n}\n\nexport interface CatalogResults {\n events: { [key: string]: EventWithData; };\n performers: { [key: string]: Performer; };\n venues: { [key: string]: Venue; };\n venueCfgs: { [key: string]: Event[]; };\n viagIdToLatestIdLookup: { [key: string]: string; };\n posIdToViagIdLookup: { [key: string]: string; };\n purchaseCount: number;\n}\n\nexport interface CatalogSaleMetricsResults {\n maxRowVersion: number | null;\n events: { [key: string]: SaleMetrics; };\n performers: { [key: string]: SaleMetrics; };\n venues: { [key: string]: SaleMetrics; };\n}\n\nexport interface SaleMetrics {\n /** Sold Ticket Quantity */\n qtySold: number;\n /** Unfulfilled Sales */\n saleUnfilled: number;\n /** Total net proceeds of sold tickets */\n netProcs: UiMoney | null;\n /** Total cost */\n ttlCst: UiMoney | null;\n currency: string | null;\n /** Margin */\n marg: number | null;\n}\n\nexport interface CatalogTicketGroupMetricsResults {\n maxRowVersion: number | null;\n events: { [key: string]: TicketGroupMetrics; };\n performers: { [key: string]: TicketGroupMetrics; };\n venues: { [key: string]: TicketGroupMetrics; };\n}\n\nexport interface TicketGroupMetrics {\n /** Total Ticket Quantity */\n tktQty: number;\n /** Total cost */\n ttlCst: UiMoney | null;\n currency: string | null;\n}\n\nexport interface EventGroupingQuery {\n groupingType: EventGroupingType;\n searchText: string | null;\n sortBy: EventGroupingSortBy | null;\n isSortDescending: boolean | null;\n}\n\nexport enum EventGroupingType {\n Performer = \"Performers\",\n Venue = \"Venues\",\n}\n\nexport enum EventGroupingSortBy {\n Name = \"Name\",\n}\n\nexport interface EventSearchQuery {\n searchText: string | null;\n performerId: number | null;\n venueId: number | null;\n timeFrame: EventTimeFrameFilter | null;\n}\n\nexport interface CatalogListingMetricsResults {\n eventsDetailed: { [key: string]: ListingDetailedMetrics; };\n maxRowVersion: number | null;\n events: { [key: string]: ListingMetrics; };\n performers: { [key: string]: ListingMetrics; };\n venues: { [key: string]: ListingMetrics; };\n}\n\nexport interface ListingMetrics {\n /** Total Ticket Quantity */\n tktQty: number;\n /** Sold Ticket Quantity */\n soldQty: number;\n unsoldQty: number;\n listQty: number;\n /** Unlisted ticket quantity */\n unlistQty: number;\n currency: string;\n /** Total cost of all tickets */\n ttlCst: UiMoney;\n /** Total cost of sold tickets */\n soldCst: UiMoney;\n /** Total cost of unsold tickets */\n unsoldCst: UiMoney;\n /** Total list price of all tickets */\n ttlListPrc: UiMoney;\n /** Total list price of unsold tickets */\n ttlUnsoldListPrc: UiMoney;\n /** Total net proceeds of sold tickets */\n netProcs: UiMoney;\n /** Total gross profit of sold tickets, i.e. SumNetProcs - SumSoldCst */\n pandL: UiMoney;\n}\n\nexport interface ListingDetailedMetrics extends ListingMetrics {\n /** Sell through rate */\n str: number;\n /** Revenue */\n rvn: UiMoney;\n /** Lift percentage */\n liftPerc: number;\n /** Average ticket price */\n atp: UiMoney;\n listedATP: UiMoney;\n /** Last price updated date */\n priceUpdatedOn: string | null;\n tags: Tag[] | null;\n}\n\nexport interface ListingMetricsInput {\n totalTicketQuantity: number | null;\n totalSoldQuantity: number | null;\n totalUnsoldQuantity: number | null;\n totalListedQuantity: number | null;\n totalUnlistedQuantity: number | null;\n currencyCode: string | null;\n /** Total cost of all tickets */\n totalCost: Money | null;\n /** Total cost of sold tickets */\n totalSoldCost: Money | null;\n /** Total cost of unsold tickets */\n totalUnsoldCost: Money | null;\n /** Total list price of all tickets */\n totalListPrice: Money | null;\n /** Total value of all listed tickets */\n totalListedValue: Money | null;\n /** Total list price of unsold tickets */\n totalUnsoldListPrice: Money | null;\n /** Total net proceeds of sold tickets */\n totalNetProceeds: Money | null;\n /** Total gross profit of sold tickets */\n totalGrossProfit: Money | null;\n}\n\nexport interface Money {\n amount: number;\n display: string | null;\n currencyCode: string | null;\n decimalDigits: number;\n}\n\nexport interface ValueTupleOfEventAndVenueAndPerformer {\n item1: Event;\n item2: Venue;\n item3: Performer;\n}\n\nexport interface EventMappingRequest {\n eventName: string;\n eventDate: string;\n isEventDateConfirmed: boolean | null;\n eventNote: string | null;\n venueName: string;\n city: string;\n stateProvince: string;\n countryCode: string;\n}\n\nexport interface UpcomingOnSalesResult {\n catalog: CatalogResults;\n marketplaceEventInfos: { [key: string]: SellerEventMarketplaceEventInfo[]; };\n}\n\nexport interface SellerEventMarketplaceEventInfo {\n viagogoEventId: number | null;\n marketplace: Marketplace;\n mappedEventId: string | null;\n websiteEventId: string | null;\n eventIdOverride: string | null;\n eventMappingId: string | null;\n}\n\nexport interface OnSaleEventQuery {\n onSaleDates: DateTimeRangeWithRelative | null;\n timezoneOffsetMins: number | null;\n viewMode: OnSaleEventViewMode | null;\n searchText: string | null;\n eventIds: number[] | null;\n}\n\nexport enum OnSaleEventViewMode {\n MetricView = \"Metric View\",\n}\n\nexport interface OnSaleEventMetrics {\n eventId: number;\n eventVisits: OnSaleEventCountMetrics;\n eventTransactions: OnSaleEventCountMetrics;\n unitNetProceedsUsdMin: UiMoney;\n unitNetProceedsUsdP25: UiMoney;\n unitNetProceedsUsdP50: UiMoney;\n listingCount: number;\n ticketCount: number;\n}\n\nexport interface OnSaleEventCountMetrics {\n lastHour: number;\n lastDay: number;\n lastThreeDays: number;\n lastSevenDays: number;\n}\n\nexport interface CatalogCounts {\n entityCnts: { [key: string]: EventEntityCounts; };\n /** Reason for this is a Purchase can include in multiple events, while\nmultiple events can include multiple purchases, so the count is for the\nwhole catalog, not per event like listings or sales */\n purchaseCount: number;\n}\n\nexport interface ClientLogRequest {\n logLevel: LogLevel;\n applicationSource: string;\n errorId: string | null;\n error: string;\n pageUrl: string;\n componentStack: string | null;\n additionalInfo: { [key: string]: any; } | null;\n}\n\nexport enum LogLevel {\n Trace = \"Trace\",\n Verbose = \"Verbose\",\n Information = \"Information\",\n Warning = \"Warning\",\n Error = \"Error\",\n Critical = \"Critical\",\n None = \"None\",\n}\n\nexport interface ContentData {\n body: string;\n}\n\nexport interface DocumentUploadInfo {\n entityId: number;\n entityType: ActionOutboxEntityType;\n documentType: DocumentType;\n blobName: string;\n documentId: string;\n contentType: string;\n}\n\nexport interface PosUiActionResult {\n entityId: number | null;\n entityType: ActionOutboxEntityType | null;\n status: number | null;\n message: string | null;\n}\n\nexport interface PosUiActionResultWithDataOfUserDocumentLinks extends PosUiActionResult {\n data: UserDocumentLinks | null;\n}\n\nexport interface DocumentPage {\n id: string;\n documentId: string;\n pageNumber: number;\n thumbUrl: string;\n documentUrl: string;\n}\n\nexport interface EventListingConstraints {\n eventId: number;\n validListingNoteIds: number[] | null;\n validTicketTypes: number[] | null;\n isSeatRequired: boolean | null;\n validSplitTypes: number[] | null;\n}\n\nexport interface MarketTransaction {\n listingId: number;\n transactionDateTime: string;\n section: string;\n row: string;\n seatFrom: string;\n seatTo: string;\n quantityPurchased: number;\n sellerUserId: string;\n sellerNetProceeds: number;\n sellerCurrencyCode: string;\n}\n\nexport interface SellerEventNote {\n eventId: number | null;\n sellerEventNoteId: number;\n sellerUserId: string;\n content: string;\n createDate: string;\n}\n\nexport interface SellerEventNoteResult extends SellerEventNote {\n sellerDisplayName: string;\n}\n\nexport interface SellerAccountEventSetting {\n delivType: DeliveryType | null;\n isNoFulfill: boolean | null;\n tktTypeRules: TicketTypeOverride | null;\n inHandAt: string | null;\n vendorId: number | null;\n}\n\nexport interface FulfillmentProvider {\n fulfillmentProviderSellerUserId: string;\n fulfillmentProviderName: string;\n descriptionMessage: string;\n isEnabled: boolean;\n costPercentagePerTransfer: number | null;\n flatCostPerTransfer: number | null;\n}\n\nexport interface EventMarketplaceWebsiteMetrics {\n ticketsOnPlatform: EventMarketplaceWebsiteMetricOfInteger;\n eventVisitors: EventMarketplaceWebsiteMetricOfInteger;\n visitorsInCheckout: EventMarketplaceWebsiteMetricOfInteger;\n totalTicketPriceInCheckout: EventMarketplaceWebsiteMetricOfUiMoney;\n}\n\nexport interface EventMarketplaceWebsiteMetricOfInteger {\n currentValue: number;\n previousValue: number;\n}\n\nexport interface EventMarketplaceWebsiteMetricOfUiMoney {\n currentValue: UiMoney;\n previousValue: UiMoney;\n}\n\nexport interface InventoryMetricsQueryId {\n posEventId: string | null;\n viagogoEventId: number | null;\n}\n\nexport enum EventWebsiteMetricsTimePeriod {\n OneHour = \"OneHour\",\n OneDay = \"OneDay\",\n}\n\nexport interface EventDemandFactor {\n type: EventDemandFactorType;\n value: string;\n}\n\nexport enum EventDemandFactorType {\n Opponent = \"Opponent\",\n Weather = \"Weather\",\n Standing = \"Standing\",\n Stakes = \"Stakes\",\n SpotifyPopularity = \"SpotifyPopularity\",\n HomeTeamOdds = \"HomeTeamOdds\",\n}\n\n/** Represents the results for the inventory event dashboard. */\nexport interface InventoryEventDashboardResults {\n /** Gets or sets the marketplace shares as a dictionary with the marketplace as the key and the share percentage as the\nvalue\n */\n mktShares: MarketplaceMarketShare[];\n /** Gets or sets the average ticket price (ATP) value, which represents the average cost of tickets listed by the\nseller for the event\n */\n atp: TicketPricePercentiles;\n totalListings: number;\n}\n\nexport interface MarketplaceMarketShare {\n mktPlc: Marketplace;\n share: number;\n}\n\nexport interface TicketPricePercentiles {\n currency: string;\n listingCount: number;\n ticketCount: number;\n min: number;\n p25: number;\n p50: number;\n p75: number;\n max: number;\n}\n\nexport enum SellerEventDashboardMetricsTimePeriod {\n Last7Days = \"Last7Days\",\n AllTime = \"AllTime\",\n}\n\nexport interface EventSectionClearingPrices {\n sectionId: number | null;\n sectionName: string;\n p01: UiMoney;\n p25: UiMoney;\n p50: UiMoney;\n p75: UiMoney;\n p99: UiMoney;\n normalizedScore: number;\n}\n\nexport interface EventSupplyMetrics {\n dateTime: string;\n listingCount: number;\n ticketCount: number;\n min: number;\n p25: number;\n p50: number;\n p75: number;\n max: number;\n}\n\nexport enum EventSupplyMetricsTimePeriod {\n LastDay = \"LastDay\",\n LastSevenDays = \"LastSevenDays\",\n LastNinetyDays = \"LastNinetyDays\",\n}\n\nexport interface ListingDetails extends Listing {\n purchaseInfos: UiPurchaseInfo[] | null;\n tickets: Ticket[] | null;\n /** Available Artifact Types */\n availArtTypes: ArtifactType[] | null;\n saleInfos: SaleDisplayInfo[] | null;\n proofOfPurchaseDocs: UserDocumentLinks[] | null;\n no_Op: MarketplaceListing | null;\n}\n\nexport interface UiPurchaseInfo {\n purchaseOrderId: number;\n vendorOrderId: string | null;\n purchaseOrderDate: string | null;\n buyerUserId: string | null;\n vendor: UiPurchaseVendorInfo | null;\n vendorAccount: UiVendorAccountInfo | null;\n createdBy: string | null;\n internalNotes: string | null;\n}\n\nexport interface UiPurchaseVendorInfo {\n vendorId: number;\n vendorName: string;\n}\n\nexport interface UiVendorAccountInfo {\n vendorAccountId: string;\n vendorId: number;\n vendorAccountName: string | null;\n encryptedEmailAddress: string;\n}\n\nexport enum ArtifactType {\n TicketUrl = \"TicketUrl\",\n ExternalId = \"ExternalId\",\n ETicket = \"ETicket\",\n ETicketUrl = \"ETicketUrl\",\n TransferProof = \"TransferProof\",\n Barcode = \"Barcode\",\n QRCode = \"QRCode\",\n}\n\nexport interface SaleDisplayInfo {\n /** SaleId */\n id: number;\n /** MarketplaceSaleId */\n idOnMkp: string | null;\n /** Marketplace */\n mkp: Marketplace;\n /** SaleStatus */\n stat: PointOfSaleSaleStatus;\n /** ExternalId */\n externalId: string | null;\n}\n\nexport interface SectionalListingsForEventsInput {\n listingQuery: ListingQuery;\n curListings: Listing[] | null;\n}\n\nexport interface ValueTupleOfBooleanAndIListOfTicket {\n item1: boolean;\n item2: Ticket[];\n}\n\nexport interface DuplicateListingDetails {\n listingId: number;\n lastUpdateDate: string;\n duplicateListingId: number;\n duplicateListingLastUpdateDate: string;\n}\n\nexport interface ValueTupleOfLongAndListingDetailsUpdateInput {\n item1: number;\n item2: ListingDetailsUpdateInput;\n}\n\nexport interface MergeListingsInput {\n listingIds: number[];\n}\n\nexport interface BulkMergeListingsInput {\n listingIdLists: number[][];\n}\n\nexport interface ListingMergeSuggestion {\n listingIds: number[];\n eventId: number | null;\n eventMappingId: string | null;\n seatFrom: string | null;\n seatTo: string | null;\n}\n\nexport interface SplitListingInput {\n sourceListingId: number;\n numOfListings: number;\n /** Each of the sub-list will be considered 1 listing */\n ticketsByListingNumber: TicketByListingNumber[];\n alwaysUnbroadcastListing: boolean;\n useOriginalTicketGroupInfoForNewListings: boolean;\n}\n\nexport interface TicketByListingNumber {\n ticket: Ticket;\n listingNumber: number;\n}\n\nexport interface TicketBarcode {\n ticketId: number;\n barcode: string;\n section: string | null;\n row: string | null;\n seat: string | null;\n}\n\nexport interface TicketExternalId {\n ticketId: number;\n externalId: string;\n section: string | null;\n row: string | null;\n seat: string | null;\n}\n\nexport interface TicketUrl {\n ticketId: number;\n url: string;\n section: string | null;\n row: string | null;\n seat: string | null;\n}\n\nexport interface ListingPriceHistory {\n unitNetProceeds: UiMoney;\n priceDate: string;\n marketplace: Marketplace | null;\n pricerUserId: string | null;\n applicationName: string | null;\n}\n\nexport interface ValueTupleOfLongAndNullableInteger {\n item1: number;\n item2: number | null;\n}\n\nexport interface ListingPriceCalculation extends BaseListingPriceCalculation {\n compListings: CompListing[];\n}\n\nexport interface ValueTupleOfListingQueryAndListingCsvColumnSelectionConfig {\n item1: ListingQuery;\n item2: ListingCsvColumnSelectionConfig;\n}\n\nexport interface ListingCsvColumnSelectionConfig {\n hasAutoPricingFeature: boolean | null;\n}\n\nexport interface SeatSaverListingDetailsInput {\n event: Event;\n autoBroadcastCreatedListing: boolean;\n sellerOwnTickets: boolean | null;\n seatings: SeatSaverSeating[];\n deliveryType: DeliveryType;\n ticketTypeRules: TicketTypeOverride | null;\n inHandDate: string | null;\n daysBeforeEvent: number | null;\n}\n\nexport interface SeatSaverSeating {\n section: string;\n sectionId: number | null;\n row: string | null;\n rowId: number | null;\n quantity: number | null;\n maxDisplayQuantity: number | null;\n listingNotes: ListingNote[] | null;\n unitNetProceeds: number | null;\n websitePrice: number | null;\n faceValue: number | null;\n}\n\nexport interface BatchSwapListingGroupInput {\n listings: SwapListingGroupInput[];\n toListingGroupId: string;\n}\n\nexport interface SwapListingGroupInput {\n listingId: number;\n listingGroupId: string | null;\n quantity: number;\n adminHoldExpirationDate: string | null;\n}\n\nexport interface ReorderListingInGroupInput {\n listingGroupId: string;\n listingId: number;\n fromPosition: number;\n toPosition: number;\n}\n\nexport interface ListingDetailsBroadcastSectionUpdates {\n id: number;\n rowVersion: number | null;\n adminHoldNotes: string | null;\n marketplaceSeatOverrides: ListingMarketplaceSeatingOverride[];\n enableNativeSync: boolean | null;\n}\n\nexport interface ListingDetailsTicketSectionUpdates {\n id: number;\n rowVersion: number | null;\n splitType: SplitType | null;\n hideSeatsFromMarketplace: boolean | null;\n faceValue: number | null;\n inHandDate: string | null;\n daysBeforeEvent: number | null;\n section: string | null;\n sectionId: number | null;\n row: string | null;\n rowId: number | null;\n internalNotes: string | null;\n ticketTypeRules: TicketTypeOverride | null;\n manualMaxDisplayQuantity: number | null;\n isNoFulfill: boolean | null;\n seatTraits: ListingNote[] | null;\n delivType: DeliveryType | null;\n updateSalesOfListings: boolean | null;\n updatePredeliveryETicketArtifacts: boolean | null;\n}\n\nexport interface ListingDetailsPricingSectionUpdates {\n id: number;\n rowVersion: number | null;\n pricerSellerUserId: string | null;\n listPrice: number | null;\n allInPrice: number | null;\n netProceedsFloor: number | null;\n netProceedsCeiling: number | null;\n autoPricingEnabled: boolean | null;\n buyerUserId: string | null;\n marketplacePriceUpdates: ListingMarketplacePriceUpdateInput[];\n currencyCode: string | null;\n}\n\nexport interface ListingDetailsAutoPricingSectionUpdates extends AutoPricingInputs {\n id: number;\n rowVersion: number | null;\n netProceedsFloor: number | null;\n netProceedsCeiling: number | null;\n skipAutoPricing: boolean | null;\n autoPricingEnabled: boolean | null;\n skipUndercut: boolean | null;\n skipCompListing: boolean | null;\n skipAdvancePricing: boolean | null;\n currencyCode: string | null;\n}\n\nexport interface ListingDetailsTagsSectionUpdates {\n id: number;\n rowVersion: number | null;\n tags: Tag[] | null;\n}\n\nexport interface ListingStatusInfo {\n entityType: ActionOutboxEntityType;\n id: number;\n status: ListingStatus;\n /** Marketplace listing broadcast status */\n brdcstStatus: ListingBroadcastStatus | null;\n /** Marketplace where these tickets were listed and sold */\n mkp: Marketplace | null;\n /** Represent either the MarketplaceListingId or MarketplaceSaleId */\n idOnMkp: string | null;\n pendProofState: PendingProofState | null;\n mkpListings: MarketplaceListingStatusInfo[];\n}\n\nexport interface MarketplaceListingStatusInfo {\n mkpListingId: string | null;\n mkp: Marketplace;\n status: ListingStatus;\n}\n\nexport interface ListingExperiment {\n viagogoEventId: number;\n listingGroupId: string | null;\n listingGroupName: string | null;\n targetPercentage: number | null;\n discountPercentage: number | null;\n startDate: string;\n endDate: string;\n insertBy: string;\n}\n\nexport interface ListingGroup extends Listing {\n groupType: GroupType;\n groupName: string;\n deliveryTypes: ValueTupleOfDeliveryTypeAndNullableTicketType[];\n groupItems: IListingGroupItem[];\n desiredActiveListings: number | null;\n minActiveListings: number | null;\n maxActiveListings: number | null;\n targetPercentage: number | null;\n desiredAvailableQuantity: number | null;\n deprioritizedQuantities: string[] | null;\n marketplaceSettings: ListingGroupListingMarketplaceSettings | null;\n absoluteRankPremium: number | null;\n relativeRankPremium: number | null;\n /** This is for UI only - but it indicates that the entire group is locked from editing so that\nwhen you're making edits to the groups you don't accidentally modify the groups again in parallel and create conflicts */\n isLockedFromEdits: boolean | null;\n}\n\nexport enum GroupType {\n Invisible = \"Invisible\",\n FullySold = \"FullySold\",\n Inactive = \"Inactive\",\n Active = \"Active\",\n Leader = \"Leader\",\n}\n\nexport interface ValueTupleOfDeliveryTypeAndNullableTicketType {\n item1: DeliveryType;\n item2: TicketType | null;\n}\n\nexport interface IListingGroupItem {\n ltGrpId: string | null;\n isLtGrp: boolean;\n isFull: boolean;\n id: number;\n insertBy: string | null;\n rowVer: number;\n ltGrpParentId: number | null;\n ltGrpPrior: number | null;\n seating: Seating;\n delivType: DeliveryType;\n topPriTktType: TicketType | null;\n /** This the number of tickets that have not yet sold and is always less than TicketCount. */\n availQty: number;\n wastedQty: number | null;\n ticketCnt: number;\n ltGrpActive: boolean | null;\n unitCst: UiMoney | null;\n faceValue: UiMoney | null;\n currency: string;\n isDeleted: boolean;\n ltGrpUndercut: ListingGroupUndercutSetting | null;\n /** Marketplace listing broadcast status */\n brdcstStatus: ListingBroadcastStatus | null;\n}\n\nexport interface PosUiActionResultWithDataOfAutoCompListingsPreview extends PosUiActionResult {\n data: AutoCompListingsPreview | null;\n}\n\nexport interface AutoCompListingsPreview {\n zoneSectionAreaGroupLookup: ZoneSectionAreaGroupLookup;\n}\n\nexport interface ZoneSectionAreaGroupLookup {\n zoneSectionAreaRankOverrides: ZoneSectionAreaRankOverride[];\n groupIdToSectionIdMap: { [key: string]: ZoneSectionArea[]; };\n groupIdToMedianSeatScoreMap: { [key: string]: number; };\n sectionIdToGroupIdMap: { [key: string]: string; };\n zoneNameToRankMap: { [key: string]: { [key: string]: number; }; };\n customSectionGroups: string[];\n}\n\nexport interface ZoneSectionAreaRankOverride {\n zoneAreaName: string;\n rank: number;\n color: string;\n}\n\nexport interface ZoneSectionArea {\n sectId: number;\n rank: number;\n zoneAreaName: string;\n ticketClassId: number;\n ticketClassName: string;\n}\n\n/** Input settings for the auto comparison preview. */\nexport interface AutoCompSettingsPreviewInput {\n viagogoEventId: number;\n venueZoneConfigType: VenueZoneConfigType;\n combineCornersAndEnds: boolean;\n}\n\nexport interface PosUiActionResultWithDataOfAutoGroupListingsPreview extends PosUiActionResult {\n data: AutoGroupListingsPreview | null;\n}\n\nexport interface AutoGroupListingsPreview {\n listingGroups: { [key: string]: AutoGroupListingsPreviewListingUpdate[]; };\n}\n\nexport interface AutoGroupListingsPreviewListingUpdate {\n listingId: number;\n selectedSectionSettings: SelectedSectionSettings | null;\n onlyForSelectedSectionsEnabled: boolean | null;\n compListingMode: AutoPricingCompListingMode | null;\n compListingFloor: number | null;\n compListingCeiling: number | null;\n autoPricingEnabled: boolean | null;\n circuitBreakerMinCompListingCount: number | null;\n excludeFanInventory: boolean | null;\n area: RowArea;\n filteredAreas: RowArea[];\n}\n\nexport interface RowArea extends RowInfo {\n sectId: number;\n normOrd: number;\n area: ConfigArea;\n sectName: string;\n}\n\nexport interface ConfigArea {\n areaName: string;\n rank: number;\n}\n\nexport interface AutoGroupListingsPreviewInput {\n viagogoEventId: number;\n eventListingIds: number[];\n zoneSectionAreaGroupLookupJson: string;\n /** Determines how the offset ordinal for row comps */\n rowCompOffset: number;\n /** Determines how the RowArea names will be determined */\n rowGroupSetting: RowGroupSetting;\n venueZoneConfigType: VenueZoneConfigType;\n combineCornersAndEnds: boolean;\n rowCompOverrides: RowCompOverride[];\n useCustomRank: boolean;\n}\n\nexport interface PosUiActionResultWithDataOfIEnumerableOfMergeListingGroupInput extends PosUiActionResult {\n data: (MergeListingGroupInput | null)[] | null;\n}\n\nexport interface AddListingsToListingGroupInput {\n listingIds: number[];\n listingGroupId: string;\n}\n\nexport interface ListingGroupCompData {\n totalCompListingCount: number;\n compListings: CompListing[];\n}\n\nexport interface LoginContext {\n isSuccess: boolean;\n user: UserDetail | null;\n returnUrl: string | null;\n authorizationUrl: string | null;\n version: string | null;\n}\n\nexport interface UserDetail {\n userId: string;\n displayName: string;\n userName: string;\n localeLanguage: string;\n activeAccount: SellerAccount;\n features: Feature[];\n hasManyAccounts: boolean;\n impersonatorDisplayName: string | null;\n permissions: Permission[];\n}\n\nexport interface SellerAccount {\n id: string;\n accountName: string;\n impersonatedUserId: string | null;\n impersonatedUsername: string | null;\n currencyCode: string | null;\n sellerAccountSettings: SellerAccountSettings;\n marketplaceSettings: MarketplaceAccountSetting[];\n}\n\nexport interface SellerAccountSettings {\n defaultSplitType: number | null;\n ticketTypeRules: string | null;\n inHandDatePaddingInDays: number | null;\n defaultHideSeatNumbers: boolean | null;\n priceFloor: number | null;\n defaultMaxQuantityDisplay: number | null;\n saleListingPriceBoundary: number | null;\n inHandDaysBeforeEvent: number | null;\n}\n\nexport interface MarketplaceAccountSetting {\n isEnabled: boolean;\n mkp: Marketplace;\n markup: number | null;\n sellerFee: number | null;\n hasApiToken: boolean;\n hasApiRefreshToken: boolean;\n tokenExpired: boolean;\n seatSaverFee: number | null;\n isSyncHandledByProcessor: boolean;\n}\n\nexport enum Permission {\n Sales_ViewAll = \"Sales_ViewAll\",\n Sales_ViewRecent = \"Sales_ViewRecent\",\n Sales_ViewRecentFromExternalMarketplace = \"Sales_ViewRecentFromExternalMarketplace\",\n Sales_ConfirmReject = \"Sales_ConfirmReject\",\n Sales_Fulfill = \"Sales_Fulfill\",\n Sales_CreateForExternalMarketplaces = \"Sales_CreateForExternalMarketplaces\",\n Sales_ViewProceeds = \"Sales_ViewProceeds\",\n Sales_ViewRecentProceeds = \"Sales_ViewRecentProceeds\",\n Sales_ViewCostAndMargin = \"Sales_ViewCostAndMargin\",\n Sales_ViewPaymentState = \"Sales_ViewPaymentState\",\n Sales_ViewFulfillmentArtifacts = \"Sales_ViewFulfillmentArtifacts\",\n Sales_ManageHold = \"Sales_ManageHold\",\n Sales_AddTagType = \"Sales_AddTagType\",\n Sales_UpdateTags = \"Sales_UpdateTags\",\n Sales_ViewSalesOnIsPricerOf = \"Sales_ViewSalesOnIsPricerOf\",\n Sales_UpdateSalesInfo = \"Sales_UpdateSalesInfo\",\n Sales_UpdateSalesInfoOnIsPricerOf = \"Sales_UpdateSalesInfoOnIsPricerOf\",\n Sales_UpdateSalesInfoOnIsFulfillerOf = \"Sales_UpdateSalesInfoOnIsFulfillerOf\",\n Sales_FulfillOnIsFulfillerOf = \"Sales_FulfillOnIsFulfillerOf\",\n Sales_ViewSalesOnPurchasedBy = \"Sales_ViewSalesOnPurchasedBy\",\n Sales_UpdateSaleOnPurchasedBy = \"Sales_UpdateSaleOnPurchasedBy\",\n Sales_FulfillOnPurchasedBy = \"Sales_FulfillOnPurchasedBy\",\n Sales_FulfillOnPricerOf = \"Sales_FulfillOnPricerOf\",\n Sales_UpdateTagsOnPurchasedBy = \"Sales_UpdateTagsOnPurchasedBy\",\n Sales_UpdateTagsOnIsPricerOf = \"Sales_UpdateTagsOnIsPricerOf\",\n Sales_UpdateTagsOnIsFulfillerOf = \"Sales_UpdateTagsOnIsFulfillerOf\",\n Sales_ConfirmRejectOnIsPricerOf = \"Sales_ConfirmRejectOnIsPricerOf\",\n Sales_ConfirmRejectOnPurchasedBy = \"Sales_ConfirmRejectOnPurchasedBy\",\n Sales_ViewFulfillmentArtifactsOnPurchasedBy = \"Sales_ViewFulfillmentArtifactsOnPurchasedBy\",\n Sales_ViewFulfillmentArtifactsOnIsPricerOf = \"Sales_ViewFulfillmentArtifactsOnIsPricerOf\",\n Sales_ConfirmRejectOnIsFulfillerOf = \"Sales_ConfirmRejectOnIsFulfillerOf\",\n Sales_ViewSalesOnIsFulfillerOf = \"Sales_ViewSalesOnIsFulfillerOf\",\n Sales_ViewFulfillmentArtifactsOnIsFulfillerOf = \"Sales_ViewFulfillmentArtifactsOnIsFulfillerOf\",\n Sales_CreateOfflineSale = \"Sales_CreateOfflineSale\",\n Sales_ManageOfflineSale = \"Sales_ManageOfflineSale\",\n Sales_ManageOfflineSaleCreatedBy = \"Sales_ManageOfflineSaleCreatedBy\",\n Sales_ConfirmTransferWithoutProof = \"Sales_ConfirmTransferWithoutProof\",\n Sales_ResetFulfillment = \"Sales_ResetFulfillment\",\n Inventory_ViewAll = \"Inventory_ViewAll\",\n Inventory_ViewRecent = \"Inventory_ViewRecent\",\n Inventory_ViewRecentFromExternalMarketplace = \"Inventory_ViewRecentFromExternalMarketplace\",\n Inventory_ViewAllMarketplaceAttributes = \"Inventory_ViewAllMarketplaceAttributes\",\n Inventory_ViewExternalMarketplaceAttributes = \"Inventory_ViewExternalMarketplaceAttributes\",\n Inventory_ViewFulfillmentArtifacts = \"Inventory_ViewFulfillmentArtifacts\",\n Inventory_SetPrice = \"Inventory_SetPrice\",\n Inventory_SetPriceOnPurchasedBy = \"Inventory_SetPriceOnPurchasedBy\",\n Inventory_SetPriceOnIsPricerOf = \"Inventory_SetPriceOnIsPricerOf\",\n Inventory_Predelivery = \"Inventory_Predelivery\",\n Inventory_BroadcastUnbroadcast = \"Inventory_BroadcastUnbroadcast\",\n Inventory_BroadcastUnbroadcastOnPurchasedBy = \"Inventory_BroadcastUnbroadcastOnPurchasedBy\",\n Inventory_EditPricing = \"Inventory_EditPricing\",\n Inventory_UpdateListingInfo = \"Inventory_UpdateListingInfo\",\n Inventory_UpdateListingInfoOnPurchasedBy = \"Inventory_UpdateListingInfoOnPurchasedBy\",\n Inventory_AddTagType = \"Inventory_AddTagType\",\n Inventory_UpdateTags = \"Inventory_UpdateTags\",\n Inventory_UpdateTagsOnPurchasedBy = \"Inventory_UpdateTagsOnPurchasedBy\",\n Inventory_ViewListingOnIsPricerOf = \"Inventory_ViewListingOnIsPricerOf\",\n Inventory_UpdateListingInfoOnIsPricerOf = \"Inventory_UpdateListingInfoOnIsPricerOf\",\n Inventory_UpdateTagsOnIsPricerOf = \"Inventory_UpdateTagsOnIsPricerOf\",\n Inventory_PredeliveryOnPurchasedBy = \"Inventory_PredeliveryOnPurchasedBy\",\n Inventory_PredeliveryOnIsPricerOf = \"Inventory_PredeliveryOnIsPricerOf\",\n Inventory_ViewListingsOnPurchasedBy = \"Inventory_ViewListingsOnPurchasedBy\",\n Inventory_ViewFulfillmentArtifactsOnPurchasedBy = \"Inventory_ViewFulfillmentArtifactsOnPurchasedBy\",\n Inventory_ViewFulfillmentArtifactsOnIsPricerOf = \"Inventory_ViewFulfillmentArtifactsOnIsPricerOf\",\n Inventory_BroadcastUnbroadcastOnIsPricerOf = \"Inventory_BroadcastUnbroadcastOnIsPricerOf\",\n Inventory_AddSeatSaver = \"Inventory_AddSeatSaver\",\n Inventory_ManageSeatSaver = \"Inventory_ManageSeatSaver\",\n Inventory_ManageSeatSaverCreatedBy = \"Inventory_ManageSeatSaverCreatedBy\",\n Inventory_UpdateDeliveryStrategy = \"Inventory_UpdateDeliveryStrategy\",\n Inventory_UpdateDeliveryStrategyOnIsPricerOf = \"Inventory_UpdateDeliveryStrategyOnIsPricerOf\",\n Inventory_UpdateDeliveryStrategyOnPurchasedBy = \"Inventory_UpdateDeliveryStrategyOnPurchasedBy\",\n SellerAccount_Admin = \"SellerAccount_Admin\",\n SellerSupportCase_Create = \"SellerSupportCase_Create\",\n SellerSupportCase_View = \"SellerSupportCase_View\",\n Purchases_ViewAll = \"Purchases_ViewAll\",\n Purchases_ViewRecent = \"Purchases_ViewRecent\",\n Purchases_Edit = \"Purchases_Edit\",\n Purchases_EditOwned = \"Purchases_EditOwned\",\n Purchases_Create = \"Purchases_Create\",\n Purchases_AddTagType = \"Purchases_AddTagType\",\n Purchases_UpdateTags = \"Purchases_UpdateTags\",\n Purchases_UpdateTagsOwned = \"Purchases_UpdateTagsOwned\",\n Purchases_ViewOwned = \"Purchases_ViewOwned\",\n Purchases_UpdateBuyerCommission = \"Purchases_UpdateBuyerCommission\",\n Purchases_UpdateBuyerCommissionOwned = \"Purchases_UpdateBuyerCommissionOwned\",\n Purchases_UpdateDeliveryType = \"Purchases_UpdateDeliveryType\",\n Purchases_UpdateDeliveryTypeOwned = \"Purchases_UpdateDeliveryTypeOwned\",\n Purchases_UpdateCustomDeliveryType = \"Purchases_UpdateCustomDeliveryType\",\n Purchases_UpdateCustomDeliveryTypeOwned = \"Purchases_UpdateCustomDeliveryTypeOwned\",\n Purchases_UpdateSeatTraits = \"Purchases_UpdateSeatTraits\",\n Purchases_UpdateSeatTraitsOwned = \"Purchases_UpdateSeatTraitsOwned\",\n Purchases_LockUnlockCommission = \"Purchases_LockUnlockCommission\",\n Purchases_LockUnlockCommissionOwned = \"Purchases_LockUnlockCommissionOwned\",\n Purchases_EditVendor = \"Purchases_EditVendor\",\n Events_ViewAll = \"Events_ViewAll\",\n Events_AddTagType = \"Events_AddTagType\",\n Events_UpdateTags = \"Events_UpdateTags\",\n Events_SetPrice = \"Events_SetPrice\",\n Events_Edit = \"Events_Edit\",\n Accounts_ViewAll = \"Accounts_ViewAll\",\n Account_SetPrice = \"Account_SetPrice\",\n TicketGroups_ViewAll = \"TicketGroups_ViewAll\",\n Webhook_View = \"Webhook_View\",\n Webhook_Create = \"Webhook_Create\",\n Webhook_Edit = \"Webhook_Edit\",\n EventConfig_Edit = \"EventConfig_Edit\",\n EventConfig_Create = \"EventConfig_Create\",\n EventConfig_View = \"EventConfig_View\",\n Reports_CreateReports = \"Reports_CreateReports\",\n Reports_UpdateReports = \"Reports_UpdateReports\",\n Reports_UpdateReportsOwned = \"Reports_UpdateReportsOwned\",\n Reports_ViewInventoryReports = \"Reports_ViewInventoryReports\",\n Reports_ViewSalesReports = \"Reports_ViewSalesReports\",\n Reports_ViewAll = \"Reports_ViewAll\",\n Reports_ViewGlobalReports = \"Reports_ViewGlobalReports\",\n Accounting_ViewAll = \"Accounting_ViewAll\",\n Accounting_ViewPaymentsOnSale = \"Accounting_ViewPaymentsOnSale\",\n Accounting_ViewStubhubPayments = \"Accounting_ViewStubhubPayments\",\n AdPlatform_Edit = \"AdPlatform_Edit\",\n General_ViewReleaseNotes = \"General_ViewReleaseNotes\",\n General_ViewNotifications = \"General_ViewNotifications\",\n}\n\nexport interface LoginRequest {\n code: string | null;\n state: string | null;\n}\n\nexport interface MarketplaceSalePayment {\n /** MarketplacePaymentLineId */\n id: number;\n /** Marketplace */\n mkp: Marketplace | null;\n /** ExternalPaymentId */\n extPmtId: string;\n /** PaymentReferenceId */\n pmtRefId: string | null;\n pmtDate: string | null;\n recvDate: string | null;\n state: MarketplacePaymentState;\n /** PaymentAmount */\n pmtAmt: UiMoney;\n /** ProceedsAmount */\n proceedsAmt: UiMoney | null;\n credit: UiMoney | null;\n charge: UiMoney | null;\n convertedPmtAmt: UiMoney | null;\n mkpPmtTerm: MarketplacePaymentTerm | null;\n}\n\nexport enum MarketplacePaymentTerm {\n PaymentUponSaleConfirmation = \"PaymentUponSaleConfirmation\",\n PaymentUponDelivery = \"PaymentUponDelivery\",\n PaymentPostEvent = \"PaymentPostEvent\",\n}\n\nexport interface MarketplacePaymentQuery {\n marketplace: Marketplace | null;\n marketplacePaymentState: MarketplacePaymentState | null;\n paymentDates: DateTimeRangeWithRelative | null;\n sortBy: EventSort | null;\n isSortDescending: boolean | null;\n hasPaymentLineUnmappedToSale: boolean | null;\n hasPaymentLineUnmappedToSaleLineItem: boolean | null;\n currencyCodes: string[] | null;\n /** Dummy property for the UI to match the interface */\n viewMode: string | null;\n /** Output from the frontend application: `new Date().getTimezoneOffset()`\nE.g. UTC-8 => 480\nUsed for RelativeTimeRange typed properties\nCurrently only used for reporting */\n timezoneOffsetMins: number | null;\n}\n\nexport interface MonthContainingMarketplacePaymentsResult {\n firstOfMonth: string;\n totalPaymentAmount: UiMoney | null;\n}\n\nexport interface MarketplacePaymentLineWithSaleInfo {\n /** MarketplacePaymentLineId */\n id: number;\n /** Marketplace */\n marketplace: Marketplace | null;\n /** MarketplacePaymentId */\n posPmtId: number;\n /** ExternalPaymentId */\n extPmtId: string;\n /** ExternalPaymentLineId */\n extLineId: string;\n state: MarketplacePaymentState;\n date: string | null;\n recvDate: string | null;\n /** IsCredit */\n isCred: boolean;\n /** Amount */\n amt: UiMoney;\n type: MarketplacePaymentLineType;\n isAddedToSale: boolean | null;\n saleId: number | null;\n extSaleId: string;\n saleStatus: PointOfSaleSaleStatus | null;\n /** The event of which this entity is for. */\n posEvId: string | null;\n viagEvId: number | null;\n viagEvMapId: string | null;\n viagVirtualId: string | null;\n seating: Seating | null;\n convertedPmtAmt: UiMoney | null;\n}\n\nexport interface UiCurrency {\n code: string;\n dec: number;\n sym: string;\n}\n\nexport interface Notification {\n notificationId: number;\n notificationType: NotificationType;\n entityType: ActionOutboxEntityType;\n entityId: number;\n notificationState: NotificationState;\n createDateTime: string;\n expirationDateTime: string;\n posEventId: string | null;\n section: string | null;\n row: string | null;\n piggybackRow: string | null;\n seatFrom: string | null;\n seatTo: string | null;\n marketplace: Marketplace | null;\n marketplaceEntityId: string | null;\n event: Event | null;\n performer: Performer | null;\n venue: Venue | null;\n}\n\nexport enum NotificationType {\n SaleNew = \"SaleNew\",\n SaleFulfilmentFailed = \"SaleFulfilmentFailed\",\n SaleMarketplaceCancelled = \"SaleMarketplaceCancelled\",\n ListingHideSeatsFailed = \"ListingHideSeatsFailed\",\n ListingUpdateAllInPriceFailed = \"ListingUpdateAllInPriceFailed\",\n ListingUpdateInHandDateFailed = \"ListingUpdateInHandDateFailed\",\n ListingUpdateSplitTypeFailed = \"ListingUpdateSplitTypeFailed\",\n ListingUpdateDeliveryTypeFailed = \"ListingUpdateDeliveryTypeFailed\",\n ListingUpdateUnitNetProceedsFailed = \"ListingUpdateUnitNetProceedsFailed\",\n ListingBroadcastFailed = \"ListingBroadcastFailed\",\n ListingUnbroadcastFailed = \"ListingUnbroadcastFailed\",\n ListingMergeFailed = \"ListingMergeFailed\",\n ListingSplitFailed = \"ListingSplitFailed\",\n ListingPriceUpdate = \"ListingPriceUpdate\",\n AutopriceBelowFloor = \"AutopriceBelowFloor\",\n AutopriceInsufficientCompListings = \"AutopriceInsufficientCompListings\",\n AutopriceFirebrake = \"AutopriceFirebrake\",\n SellerSupportCaseNewReply = \"SellerSupportCaseNewReply\",\n}\n\nexport enum NotificationState {\n Active = \"Active\",\n Inactive = \"Inactive\",\n}\n\nexport interface ListingGroupAutoPriceSettings extends AutoPricingInputs {\n desiredActiveListings: number | null;\n deprioritizedQuantities: string[] | null;\n /** UndercutAbsoluteAmount */\n undAbsAmt: number | null;\n /** UndercutRelativeAmount */\n undRelAmt: number | null;\n}\n\nexport interface EventConfigScoreOverride {\n id: number;\n name: string;\n eventIds: number[] | null;\n cfgId: number;\n cfgPayload: string | null;\n scoreOverrides: SectionScoreOverride[];\n isActive: boolean | null;\n isTemplate: boolean | null;\n viagogoEventId: number | null;\n venueId: number | null;\n categoryId: number | null;\n}\n\nexport interface SellerAccountEventConfigScoreOverrides {\n eventConfigScoreOverrideId: number;\n configPayload: string;\n name: string;\n eventId: number | null;\n createDate: string;\n updateDate: string;\n}\n\nexport interface SellThroughRateHistory {\n sellThroughRatePercentage: number;\n timelineDate: string;\n}\n\nexport interface AutoPricingSettingsCollection extends AutoPricingInputs {\n autoPricingSettingsCollectionId: number | null;\n strategyName: string;\n}\n\nexport interface UpsertAutoCompSettingsInput {\n viagogoEventId: number;\n venueZoneConfigType: string;\n rowCompOffset: number;\n rowGroupSetting: string;\n sectionGroupCustomRankEnabled: boolean;\n rowCompOverrides: RowCompOverrideInput[];\n zoneSectionAreaGroupLookupJson: string;\n}\n\nexport interface RowCompOverrideInput {\n rowOrdinalFrom: number;\n rowOrdinalTo: number;\n offsetOverride: number;\n}\n\nexport interface AutoCompSettingsResult {\n venueZoneConfigType: VenueZoneConfigType | null;\n rowCompOffset: number;\n rowGroupSetting: RowGroupSetting | null;\n sectionGroupCustomRankEnabled: boolean;\n rowCompOverrides: RowCompOverride[] | null;\n}\n\nexport interface VenueMapZoneConfigInfo {\n defaultVenueZoneConfigType: VenueZoneConfigType;\n venueMapZoneConfigs: { [key in keyof typeof VenueZoneConfigType]?: { [key: string]: SectionSectionGroup; }; };\n}\n\nexport interface SectionSectionGroup {\n sectId: number;\n areaRank: number;\n sectionGroupRank: number;\n sectionGroupAreaType: SectionGroupAreaType | null;\n sectionGroupAreaName: string | null;\n ticketClassId: number | null;\n ticketClassName: string | null;\n sectionGroupColor: string;\n}\n\nexport enum SectionGroupAreaType {\n Unknown = \"Unknown\",\n Center = \"Center\",\n LeftRight = \"LeftRight\",\n FarLeftFarRight = \"FarLeftFarRight\",\n Front = \"Front\",\n Sides = \"Sides\",\n SideT1 = \"SideT1\",\n SideT2 = \"SideT2\",\n Ends = \"Ends\",\n Rear = \"Rear\",\n Corners = \"Corners\",\n}\n\nexport interface EventsPricingConfig {\n sharedConfigId: number | null;\n canUseZoneMap: boolean;\n}\n\nexport interface VenueZoneConfigOverride {\n name: string;\n sectionSectionGroupLookup: { [key: string]: SectionSectionGroup; };\n}\n\nexport interface UpsertVenueZoneSectionGroupOverridesInput {\n viagogoEventId: number;\n venueZoneOverrideId: number | null;\n name: string;\n sectionSectionGroupsJson: string;\n saveAsNewMap: boolean;\n}\n\nexport interface EventMapConfigMetadata {\n /** The selected or default VenueZoneConfigType */\n defaultVenueZoneConfigType: VenueZoneConfigType;\n /** The selected or default VenueZoneConfigType */\n selectedVenueMapConfigType: VenueZoneConfigType | null;\n /** The selected custom VenueZone override id. If this value is null then we will always use the DefaultVenueZoneConfigType\nas a fallback, but the override will always take precedence */\n selectedOverrideId: number | null;\n /** The selected custom VenueZone override name */\n selectedOverrideName: string | null;\n /** Data needed to render the preview of the selected config when hovering over the \"View Event Map\" button */\n selectedVenueMapConfig: { [key: string]: SectionSectionGroup; };\n}\n\nexport interface PurchaseOrderDetails extends PurchaseOrder {\n additionalCosts: CostDetail[] | null;\n ticketGroups: TicketGroup[];\n miniCatalog: CatalogResults | null;\n payments: PurchasePayment[] | null;\n transferId: string | null;\n hasMergedListings: boolean | null;\n hasSplitListings: boolean | null;\n deal: PurchaseOrderDeal | null;\n}\n\nexport interface CostDetail {\n id: number;\n cost: UiMoney | null;\n costType: PurchaseOrderCostType;\n date: string;\n description: string | null;\n}\n\nexport enum PurchaseOrderCostType {\n Tax = \"Tax\",\n Shipping = \"Shipping\",\n CreditCardFee = \"Credit Card Fee\",\n BulkDiscount = \"Bulk Discount\",\n}\n\nexport interface TicketGroup extends EntityWithTickets {\n entityType: ActionOutboxEntityType;\n tickets: Ticket[];\n unitCst: UiMoney;\n totalCst: UiMoney | null;\n expectedVal: UiMoney | null;\n webPrice: UiMoney | null;\n taxPaid: UiMoney | null;\n isFaceVal: boolean;\n faceVal: UiMoney | null;\n delivType: DeliveryType;\n delivCst: UiMoney | null;\n poId: number | null;\n vendOrdId: string | null;\n /** Available Artifact Types */\n availArtTypes: ArtifactType[];\n /** Has user document artifacts to download */\n canGetDocArts: boolean | null;\n venId: number | null;\n perfId: number | null;\n}\n\nexport interface PurchasePayment {\n paymentId: number;\n paymentStatus: PurchasePaymentStatus;\n paymentDueDate: string;\n paymentDate: string | null;\n paymentAmount: UiMoney;\n currencyCode: string;\n convertedPaymentAmount: UiMoney | null;\n convertedCurrencyCode: string | null;\n conversionRate: number | null;\n conversionDate: string | null;\n conversionUserId: string | null;\n paymentMethod: PurchasePaymentMethod;\n}\n\nexport interface PurchasePaymentMethod {\n id: number;\n display: string;\n name: string;\n type: PurchasePaymentMethodType;\n}\n\nexport interface PurchaseOrderDeal {\n dealId: string | null;\n dealType: DealType;\n dealDetails: PurchaseOrderDealDetails;\n}\n\nexport enum DealType {\n Sor = \"Sor\",\n Guaranteed = \"Guaranteed\",\n}\n\nexport interface PurchaseOrderDealDetails {\n guaranteedAmountPaid: number | null;\n dealStartDate: string | null;\n dealEndDate: string | null;\n configSplitType: DealSplitType;\n dealConfigId: string | null;\n dealFallbackConfig: PurchaseOrderDealConfig | null;\n dealConfigs: PurchaseOrderDealConfig[] | null;\n}\n\nexport enum DealSplitType {\n Quantity = \"Quantity\",\n Sales = \"Sales\",\n None = \"None\",\n}\n\nexport interface PurchaseOrderDealConfig {\n dealConfigHurdleId: string | null;\n thresholdSplitDirection: DealThresholdSplitDirection | null;\n thresholdValue: number | null;\n vendorCommission: PurchaseOrderDealCommission;\n purchaserCommissions: PurchaseOrderDealCommission[];\n priority: number | null;\n}\n\nexport enum DealThresholdSplitDirection {\n Above = \"Above\",\n Below = \"Below\",\n}\n\nexport interface PurchaseOrderDealCommission {\n userId: string;\n splitValue: number;\n}\n\nexport interface AccessControlProvider {\n id: number;\n name: string;\n}\n\nexport interface ValueTupleOfISetOfIntegerAndISetOfGuid {\n item1: number[];\n item2: string[];\n}\n\nexport interface PurchaseVendorAccountDetails extends PurchaseVendorAccount {\n delivType: DeliveryType | null;\n isNoFulfill: boolean | null;\n tktTypeRules: TicketTypeOverride | null;\n}\n\nexport enum PurchasingIdInUseResultType {\n NoneMatching = \"NoneMatching\",\n SameOrderId = \"SameOrderId\",\n SameOrderIdAndVendorId = \"SameOrderIdAndVendorId\",\n}\n\nexport interface MonthContainingPurchaseOrdersResult {\n firstOfMonth: string;\n purchaseCount: number;\n numOfTickets: number;\n totalCost: UiMoney | null;\n}\n\nexport interface TimePeriodContainingPurchaseOrderResult {\n firstOfTimePeriod: string;\n purchaseCount: number;\n numOfTickets: number;\n totalCost: UiMoney | null;\n}\n\nexport enum TimePeriodType {\n Daily = \"Daily\",\n Weekly = \"Weekly\",\n Monthly = \"Monthly\",\n}\n\nexport interface PurchaseOrderDetailsInput {\n id: number;\n vendorOrderId: PosFieldOfString | null;\n purchaseDate: PosFieldOfNullableDateTime | null;\n buyerUserId: PosFieldOfNullableGuid | null;\n currencyCode: PosFieldOfString | null;\n commissions: PosFieldArrayOfCommission | null;\n vendor: PosFieldOfPurchaseVendor | null;\n vendorAccount: PosFieldOfPurchaseVendorAccount | null;\n secondaryVendorAccount: PosFieldOfPurchaseVendorAccount | null;\n secondaryVendor: PosFieldOfPurchaseVendor | null;\n additionalCosts: PosFieldArrayOfCostDetail | null;\n payments: PosFieldArrayOfPurchasePayment | null;\n transferId: PosFieldOfString | null;\n tags: PosFieldArrayOfTag | null;\n privateNotes: PosFieldOfString | null;\n qcState: PosFieldOfNullableQualityControlState | null;\n isAutoPo: boolean;\n ticketGroups: TicketGroupInput[];\n deal: PosFieldOfPurchaseOrderDealInput | null;\n isCommissionsLocked: PosFieldOfNullableBoolean | null;\n}\n\nexport interface PosFieldOfPurchaseVendor {\n value: PurchaseVendor | null;\n hasChanged: boolean;\n}\n\nexport interface PosFieldOfPurchaseVendorAccount {\n value: PurchaseVendorAccount | null;\n hasChanged: boolean;\n}\n\n/** Note - doing PosFieldArray so it can be property generated to React TypeScript */\nexport interface PosFieldArrayOfCostDetail {\n value: CostDetail[] | null;\n hasChanged: boolean;\n}\n\n/** Note - doing PosFieldArray so it can be property generated to React TypeScript */\nexport interface PosFieldArrayOfPurchasePayment {\n value: PurchasePayment[] | null;\n hasChanged: boolean;\n}\n\nexport interface PosFieldOfNullableQualityControlState {\n value: QualityControlState | null;\n hasChanged: boolean;\n}\n\nexport interface TicketGroupInput {\n ticketGroupId: number;\n purchaseOrderId: number | null;\n /** Because the TicketGroup is used for input, this property will be used to pass back\nwhen selecting an Event and related info to create the TicketGroup for a PurchaseOrder */\n event: Event | null;\n performer: Performer | null;\n venue: Venue | null;\n /** Has user document artifacts to download */\n canGetDocArts: boolean | null;\n viagogoEventId: number | null;\n eventMappingId: string | null;\n viagogoVirtualId: string;\n posEventId: string | null;\n unitCost: PosFieldOfNullableDecimal | null;\n inHandDate: PosFieldOfNullableDateTime | null;\n expectedValue: PosFieldOfNullableDecimal | null;\n isFaceValueCost: PosFieldOfNullableBoolean | null;\n faceValueCost: PosFieldOfNullableDecimal | null;\n deliveryType: PosFieldOfNullableDeliveryType | null;\n totalCost: PosFieldOfNullableDecimal | null;\n taxPaid: PosFieldOfNullableDecimal | null;\n deliveryCost: PosFieldOfNullableDecimal | null;\n currencyCode: PosFieldOfString | null;\n section: PosFieldOfString | null;\n sectionId: PosFieldOfNullableInteger | null;\n rowId: PosFieldOfNullableInteger | null;\n row: PosFieldOfString | null;\n tickets: PosFieldArrayOfTicket | null;\n numberOfTickets: PosFieldOfNullableInteger | null;\n ticketTypeRules: TicketTypeOverride | null;\n /** Note - TicketGroup doesn't have InternalNotes as a field, but they are passed in from API to be set onto Listing */\n internalNotes: PosFieldOfString | null;\n listingNotes: PosFieldArrayOfListingNote | null;\n seatIncementType: number | null;\n allocateSeats: boolean | null;\n webPrice: number | null;\n autoBroadcastCreatedListing: boolean | null;\n}\n\nexport interface PosFieldOfNullableDeliveryType {\n value: DeliveryType | null;\n hasChanged: boolean;\n}\n\n/** Note - doing PosFieldArray so it can be property generated to React TypeScript */\nexport interface PosFieldArrayOfTicket {\n value: Ticket[] | null;\n hasChanged: boolean;\n}\n\n/** Note - doing PosFieldArray so it can be property generated to React TypeScript */\nexport interface PosFieldArrayOfListingNote {\n value: ListingNote[] | null;\n hasChanged: boolean;\n}\n\nexport interface PosFieldOfPurchaseOrderDealInput {\n value: PurchaseOrderDealInput | null;\n hasChanged: boolean;\n}\n\nexport interface PurchaseOrderDealInput {\n dealId: string | null;\n dealType: DealType;\n dealDetails: PurchaseOrderDealDetailsInput;\n}\n\nexport interface PurchaseOrderDealDetailsInput {\n guaranteedAmountPaid: number | null;\n dealStartDate: string | null;\n dealEndDate: string | null;\n configSplitType: PosFieldOfNullableDealSplitType;\n dealConfigId: string | null;\n dealFallbackConfig: PurchaseOrderDealConfig | null;\n dealConfigs: PosFieldArrayOfPurchaseOrderDealConfig | null;\n}\n\nexport interface PosFieldOfNullableDealSplitType {\n value: DealSplitType | null;\n hasChanged: boolean;\n}\n\n/** Note - doing PosFieldArray so it can be property generated to React TypeScript */\nexport interface PosFieldArrayOfPurchaseOrderDealConfig {\n value: PurchaseOrderDealConfig[] | null;\n hasChanged: boolean;\n}\n\nexport interface ValueTupleOfISetOfLongAndPosFieldOfNullableQualityControlState {\n item1: number[];\n item2: PosFieldOfNullableQualityControlState;\n}\n\nexport interface CurrencyConversionOverride {\n currencyConversionOverrideId: number;\n fromCurrencyCode: string;\n toCurrencyCode: string;\n purchasePaymentMethodId: number | null;\n /** Ignored if `PaymentMethodNameKnownRegexId` is not null. */\n purchasePaymentMethodName: string | null;\n paymentMethodNameKnownRegexId: PaymentMethodNameKnownRegex | null;\n conversionRate: number;\n conversionRateDate: string;\n}\n\nexport enum PaymentMethodNameKnownRegex {\n All = \"All\",\n AllAmex = \"AllAmex\",\n AllVisa = \"AllVisa\",\n AllMastercard = \"AllMastercard\",\n}\n\nexport interface CurrencyConversionOverrideRequest {\n currencyConversionOverrideId: number | null;\n conversionRateDate: string;\n fromCurrencyCode: string;\n toCurrencyCode: string;\n purchasePaymentMethodId: number | null;\n paymentMethodNameKnownRegexId: PaymentMethodNameKnownRegex | null;\n conversionRate: number;\n}\n\nexport interface DeliveryOverride {\n delivType: DeliveryType | null;\n tktTypeRules: TicketTypeOverride | null;\n inHandAt: string | null;\n}\n\nexport interface ValueTupleOfNullableIntegerAndNullableIntegerAndNullableGuidAndBoolean {\n item1: number | null;\n item2: number | null;\n item3: string | null;\n item4: boolean;\n}\n\nexport interface PurchaseEventOverride {\n delivType: DeliveryType;\n vendorId: number | null;\n}\n\nexport interface ReportConfigOfListingQueryAndReportWidgetTypesInventory {\n /** Used for disambugating serialized versions of this class. */\n schemaVersion: string;\n reportName: string;\n groupBy: ReportGroupBy;\n widgets: ReportWidgetTypesInventory[] | null;\n metrics: string[];\n filter: ListingQuery | null;\n /** Controls whether consumer of the report can edit the filters when viewing the report. */\n hiddenFilterItemIds: string[] | null;\n viewableFilterItemIds: string[] | null;\n editableFilterItemIds: string[] | null;\n numberOfItemsPerPage: number | null;\n sortBy: string | null;\n isSortDescending: boolean | null;\n arAgingTimeBuckets: DateTimeRangeWithRelative[] | null;\n reportId: number | null;\n /** If specified, open this report instead when the user clicks on a report link. */\n reportIdRedirect: number | null;\n ownerDisplayName: string | null;\n isOwner: boolean;\n globalReportTypeId: number | null;\n allowReaderEditMetrics: boolean;\n roleIdsToShare: number[];\n sellerUserIdsToShare: string[];\n hasMetricsOverride: boolean | null;\n hasFilterOverride: boolean | null;\n}\n\nexport enum ReportGroupBy {\n Performer = \"Performer\",\n Event = \"Event\",\n Venue = \"Venue\",\n EventGenre = \"EventGenre\",\n EventCountry = \"EventCountry\",\n EventCity = \"EventCity\",\n SeatingSection = \"SeatingSection\",\n SeatingRow = \"SeatingRow\",\n SaleMarketplace = \"SaleMarketplace\",\n SaleMonth = \"SaleMonth\",\n SaleWeek = \"SaleWeek\",\n SaleDay = \"SaleDay\",\n SaleId = \"SaleId\",\n ListingId = \"ListingId\",\n PurchaseId = \"PurchaseId\",\n PurchasedBy = \"PurchasedBy\",\n PricedBy = \"PricedBy\",\n FulfilledBy = \"FulfilledBy\",\n Vendor = \"Vendor\",\n SaleIdTicketIdCommissionUser = \"SaleIdTicketIdCommissionUser\",\n ArAgingMarketplace = \"ArAgingMarketplace\",\n}\n\n/** Available widgets to show in inventory reports */\nexport enum ReportWidgetTypesInventory {\n TicketsListedAndSold = \"TicketsListedAndSold\",\n SalesAndMargin = \"SalesAndMargin\",\n AverageTicketPrice = \"AverageTicketPrice\",\n}\n\nexport interface ReportConfigOverrideOfListingQuery {\n /** Used for disambugating serialized versions of this class. */\n schemaVersion: string;\n metrics: string[] | null;\n filter: ListingQuery | null;\n}\n\nexport interface ReportConfigOfSaleQueryAndReportWidgetTypesSale {\n /** Used for disambugating serialized versions of this class. */\n schemaVersion: string;\n reportName: string;\n groupBy: ReportGroupBy;\n widgets: ReportWidgetTypesSale[] | null;\n metrics: string[];\n filter: SaleQuery | null;\n /** Controls whether consumer of the report can edit the filters when viewing the report. */\n hiddenFilterItemIds: string[] | null;\n viewableFilterItemIds: string[] | null;\n editableFilterItemIds: string[] | null;\n numberOfItemsPerPage: number | null;\n sortBy: string | null;\n isSortDescending: boolean | null;\n arAgingTimeBuckets: DateTimeRangeWithRelative[] | null;\n reportId: number | null;\n /** If specified, open this report instead when the user clicks on a report link. */\n reportIdRedirect: number | null;\n ownerDisplayName: string | null;\n isOwner: boolean;\n globalReportTypeId: number | null;\n allowReaderEditMetrics: boolean;\n roleIdsToShare: number[];\n sellerUserIdsToShare: string[];\n hasMetricsOverride: boolean | null;\n hasFilterOverride: boolean | null;\n}\n\n/** Widgets to show in sale reports. There are currently no available widgets, so this `None` serves as a placeholder and new widgets can be added in the future */\nexport enum ReportWidgetTypesSale {\n None = \"None\",\n}\n\nexport interface ReportConfigOverrideOfSaleQuery {\n /** Used for disambugating serialized versions of this class. */\n schemaVersion: string;\n metrics: string[] | null;\n filter: SaleQuery | null;\n}\n\nexport interface ListingReportMetricsResponse {\n metrics: ListingReportMetrics[];\n summary: ListingReportMetrics;\n totalCount: number;\n hasTimeout: boolean;\n hasUnknownError: boolean;\n}\n\nexport interface ReportMetricsBase {\n /** Peformer id */\n perfId: number | null;\n venueId: number | null;\n /** This is viagogoEventId.toString() ?? viagogoEventMappingId.toString() */\n eventId: string | null;\n genre: TopLevelCategory | null;\n country: Country | null;\n city: string | null;\n section: string | null;\n row: string | null;\n /** Seating seat from */\n seatFr: string | null;\n /** Seating seat to */\n seatTo: string | null;\n /** Aggregated value of tags\nCurrently only support numerical value types (TagsValueType.Int, TagsValueType.Decimal) */\n tags: ReportTag[];\n /** Value of event tags\nCurrently only support numerical value types (TagsValueType.Int, TagsValueType.Decimal) */\n eventTags: ReportTag[];\n posEventIds: string[];\n}\n\nexport interface ListingReportMetrics extends ReportMetricsBase {\n listId: number | null;\n tktQty: number;\n availQty: number;\n soldQty: number;\n currency: string;\n /** Total cost of all tickets */\n ttlCst: UiMoney;\n /** Total list price of all tickets */\n ttlListPrc: UiMoney;\n /** Total all-in price of all tickets */\n ttlWebPrc: UiMoney;\n soldCst: UiMoney;\n soldProcs: UiMoney;\n unsoldCst: UiMoney;\n pandL: UiMoney;\n /** Margin (SoldProceeds - SoldCost) / SoldProceeds */\n marg: number | null;\n delivType: DeliveryType | null;\n inHandDate: string | null;\n poInfos: PurchaseInfosReport;\n zone: string | null;\n pricerId: string | null;\n sales: SaleInfoReport[];\n holds: SaleInfoReport[];\n privNotes: string | null;\n}\n\nexport interface PurchaseInfosReportBase {\n createdBys: string[];\n /** Purchase order ids */\n poIds: number[];\n /** Ticket group ids */\n tktGrIds: number[];\n buyers: PurchaseBuyerInfo[];\n vendors: PurchaseVendorInfo[];\n vendorAccs: PurchaseVendorAccountInfo[];\n}\n\nexport interface PurchaseInfosReport extends PurchaseInfosReportBase {\n poDates: string[];\n pmtStatuses: PurchasePaymentStatus[];\n pmtMethods: PurchasePaymentMethodType[];\n privNotes: string[];\n vendOrdIds: string[];\n cancDates: string[];\n}\n\nexport interface PurchaseBuyerInfo {\n buyerUserId: string;\n averageBuyerCommissionPercent: number | null;\n}\n\nexport interface PurchaseVendorInfo {\n vendorId: number;\n vendorName: string;\n}\n\nexport interface PurchaseVendorAccountInfo {\n vendorAccountId: string;\n vendorId: number;\n vendorAccountName: string;\n encryptedEmailAddress: string;\n}\n\nexport interface SaleInfoReport {\n saleId: number;\n pmtState: PointOfSalePaymentState | null;\n mkpPmtState: MarketplacePaymentState | null;\n chargs: UiMoney | null;\n creds: UiMoney | null;\n fulfillerId: string | null;\n ttlNetProcs: UiMoney;\n qtySold: number;\n soldCst: UiMoney | null;\n status: PointOfSaleSaleStatus;\n}\n\nexport interface ReportTag {\n key: string;\n value: string;\n valueType: TagsValueType | null;\n}\n\nexport interface ListingReportMetricsRequest {\n query: ListingQuery;\n groupBy: ReportGroupBy;\n globalReportTypeId: number | null;\n isUsingFilterOverride: boolean | null;\n listingReportMetricsRequested: ListingReportMetricColumn[];\n}\n\n/** Enum to determine the metric to calculate/get report for */\nexport enum ListingReportMetricColumn {\n Zone = \"Zone\",\n}\n\nexport interface SaleReportMetricsResponse {\n metrics: SaleReportMetrics[];\n summary: SaleReportMetrics;\n totalCount: number;\n hasTimeout: boolean;\n hasUnknownError: boolean;\n}\n\nexport interface SaleReportMetrics extends ReportMetricsBase {\n saleDate: string | null;\n mkp: Marketplace | null;\n saleId: number | null;\n ticketId: number | null;\n tktGrId: number | null;\n mkpSaleId: string | null;\n /** Ar Aging Time Bucket\n \nIf group by is set to ArAging*, then this will be set\nOnly TtlOutsBal (TotalOutstandingBalance) among the metrics will be set */\n timeBkt: DateTimeRangeWithRelative | null;\n mkpPmtTerm: MarketplacePaymentTerm | null;\n qtySold: number;\n currency: string;\n netProcs: UiMoney;\n /** Total outstanding balance */\n ttlOutsBal: UiMoney;\n soldCst: UiMoney;\n /** Commision share */\n commssionShr: UiMoney | null;\n commission: BuyerCommission | null;\n pandL: UiMoney;\n /** Margin (TotalNetProceeds - SoldCost) / TotalNetProceeds */\n marg: number | null;\n chargs: UiMoney;\n creds: UiMoney;\n saleStatus: PointOfSaleSaleStatus | null;\n ticketType: TicketType | null;\n inHandDate: string | null;\n pmtState: PointOfSalePaymentState | null;\n mkpPmtState: MarketplacePaymentState | null;\n /** Payment received */\n pmtRcv: boolean | null;\n pmtRefId: string | null;\n lastPmtOn: string | null;\n cancelDate: string | null;\n allocState: PointOfSaleAllocationState | null;\n fulfillerId: string | null;\n fulfillDate: string | null;\n pricerId: string | null;\n poInfos: PurchaseInfosReport;\n privNotes: string | null;\n}\n\nexport interface BuyerCommission {\n buyerUserId: string;\n commissionPercentage: number | null;\n}\n\nexport enum PointOfSaleAllocationState {\n Pending = \"Pending\",\n Allocated = \"Allocated\",\n TicketsUnavailable = \"TicketsUnavailable\",\n AlternativeTicketsOffered = \"AlternativeTicketsOffered\",\n BlockingAllocation = \"BlockingAllocation\",\n AutoSourced = \"AutoSourced\",\n}\n\nexport interface SaleReportMetricsRequest {\n query: SaleQuery;\n groupBy: ReportGroupBy;\n globalReportTypeId: number | null;\n isUsingFilterOverride: boolean | null;\n arAgingTimeBuckets: DateTimeRangeWithRelative[] | null;\n}\n\nexport interface ReportSnapshotInfo {\n name: string;\n createdDate: string;\n documentId: string;\n downloadUri: string;\n}\n\nexport interface SaleReportMetricsDownloadRequest extends SaleReportMetricsRequest {\n metrics: string[] | null;\n fileType: ReportFileType;\n}\n\nexport enum ReportFileType {\n CSV = \"CSV\",\n XLSX = \"XLSX\",\n PDF = \"PDF\",\n}\n\nexport interface ListingReportMetricsDownloadRequest extends ListingReportMetricsRequest {\n metrics: string[] | null;\n fileType: ReportFileType;\n}\n\nexport interface ReportV2ConfigOfInventoryReportV2RequestAndReportWidgetTypesInventory {\n /** Used for disambugating serialized versions of this class. */\n schemaVersion: string;\n reportName: string;\n widgets: ReportWidgetTypesInventory[] | null;\n request: InventoryReportV2Request;\n reportId: number | null;\n ownerDisplayName: string | null;\n isOwner: boolean;\n globalReportTypeId: number | null;\n roleIdsToShare: number[];\n sellerUserIdsToShare: string[];\n hasMetricsOverride: boolean | null;\n /** Controls whether consumer of the report can edit the filters when viewing the report. */\n hiddenFilterItemIds: string[] | null;\n viewableFilterItemIds: string[] | null;\n editableFilterItemIds: string[] | null;\n}\n\nexport interface ReportBaseRequestOfUIReportV2ListingQuery {\n rowGroupings: ReportColumn[] | null;\n columnGroupings: ReportColumn[] | null;\n aggregations: ReportColumn[] | null;\n orderBy: string | null;\n orderByAsc: boolean;\n pageNumber: number;\n filters: UIReportV2ListingQuery;\n}\n\nexport interface InventoryReportV2Request extends ReportBaseRequestOfUIReportV2ListingQuery {\n}\n\nexport interface ReportColumn {\n /** Identifier of column, used for displaying in the UI and rendering the table, defined in the ListingReportTableGroupingColumnId / ListingReportTableValueColumnId enum */\n columnName: string;\n /** Expressions of columnId, format is ready for ReportingService to parse and transform into raw sql expressions */\n columnValue: string;\n}\n\nexport interface ReportEntityWithTicketsQuery {\n performerIds: number[] | null;\n venueIds: number[] | null;\n countryCodes: string[] | null;\n stateProvinceIds: number[] | null;\n cityIds: number[] | null;\n purchaseOrderId: number | null;\n purchaseVendorId: number | null;\n vendorAccessControlProviderId: number | null;\n purchaseVendorAccountIds: string[] | null;\n purchaseVendorOrderId: string | null;\n purchaseBuyerId: string | null;\n purchaseOrderCreatedBy: string | null;\n purchaseCommissionUserId: string | null;\n purchaseDates: DateTimeRangeWithRelative | null;\n inHandDates: DateTimeRangeWithRelative | null;\n eventTimeFrameFilter: EventTimeFrameFilter | null;\n sections: string[] | null;\n rows: string[] | null;\n sectionContains: string | null;\n sectionEquals: string | null;\n sectionNotContains: string | null;\n rowContains: string | null;\n rowEquals: string | null;\n rowNotContains: string | null;\n isSeatSaver: boolean | null;\n eventDates: DateTimeRangeWithRelative | null;\n noSaleDates: DateTimeRangeWithRelative | null;\n tagName: string | null;\n tagValue: string | null;\n eventTagName: string | null;\n eventTagValue: string | null;\n lastSaleDates: DateTimeRangeWithRelative | null;\n numberOfTicketsHeld: NumericRange | null;\n topLevelCategories: TopLevelCategory[] | null;\n parentCategories: number[] | null;\n internalNotes: string | null;\n internalNotesContains: string | null;\n internalNotesEquals: string | null;\n internalNotesNotContains: string | null;\n timezoneOffsetMins: number | null;\n currencyCode: string | null;\n currencyCodes: string[] | null;\n eventStatuses: ApiEventStatus[] | null;\n}\n\nexport interface ReportV2ListingQuery extends ReportEntityWithTicketsQuery {\n isPredelivered: boolean | null;\n isNoFulfill: boolean | null;\n lastPriceUpdateDates: DateTimeRangeWithRelative | null;\n isPricedByMarketplace: boolean | null;\n isAutoPricingEnabled: boolean | null;\n isListed: boolean | null;\n isMapped: boolean | null;\n isDuplicate: boolean | null;\n isSeatingUnmapped: boolean | null;\n isAdminHold: boolean | null;\n}\n\nexport interface UIReportV2ListingQuery extends ReportV2ListingQuery {\n /** This is only used to filter on the frontend application. */\n viewMode: InventoryViewMode | null;\n isSortDescending: boolean | null;\n}\n\nexport interface ReportV2ConfigOfSalesReportV2RequestAndReportWidgetTypesSale {\n /** Used for disambugating serialized versions of this class. */\n schemaVersion: string;\n reportName: string;\n widgets: ReportWidgetTypesSale[] | null;\n request: SalesReportV2Request;\n reportId: number | null;\n ownerDisplayName: string | null;\n isOwner: boolean;\n globalReportTypeId: number | null;\n roleIdsToShare: number[];\n sellerUserIdsToShare: string[];\n hasMetricsOverride: boolean | null;\n /** Controls whether consumer of the report can edit the filters when viewing the report. */\n hiddenFilterItemIds: string[] | null;\n viewableFilterItemIds: string[] | null;\n editableFilterItemIds: string[] | null;\n}\n\nexport interface ReportBaseRequestOfUIReportV2SaleQuery {\n rowGroupings: ReportColumn[] | null;\n columnGroupings: ReportColumn[] | null;\n aggregations: ReportColumn[] | null;\n orderBy: string | null;\n orderByAsc: boolean;\n pageNumber: number;\n filters: UIReportV2SaleQuery;\n}\n\nexport interface SalesReportV2Request extends ReportBaseRequestOfUIReportV2SaleQuery {\n}\n\nexport interface ReportV2SaleQuery extends ReportEntityWithTicketsQuery {\n isNoFulfill: boolean | null;\n saleDates: DateTimeRangeWithRelative | null;\n saleStatuses: PointOfSaleSaleStatus[] | null;\n soldOnMarketplace: Marketplace | null;\n cancellationDates: DateTimeRangeWithRelative | null;\n fulfillerSellerUserId: string | null;\n fulfillmentDates: DateTimeRangeWithRelative | null;\n paymentDates: DateTimeRangeWithRelative | null;\n marketplacePaymentState: MarketplacePaymentState | null;\n}\n\nexport interface UIReportV2SaleQuery extends ReportV2SaleQuery {\n /** This is only used to filter on the frontend application. */\n viewMode: InventoryViewMode | null;\n isSortDescending: boolean | null;\n}\n\nexport interface ReportV2ConfigOfCommissionReportV2RequestAndReportWidgetTypesCommission {\n /** Used for disambugating serialized versions of this class. */\n schemaVersion: string;\n reportName: string;\n widgets: ReportWidgetTypesCommission[] | null;\n request: CommissionReportV2Request;\n reportId: number | null;\n ownerDisplayName: string | null;\n isOwner: boolean;\n globalReportTypeId: number | null;\n roleIdsToShare: number[];\n sellerUserIdsToShare: string[];\n hasMetricsOverride: boolean | null;\n /** Controls whether consumer of the report can edit the filters when viewing the report. */\n hiddenFilterItemIds: string[] | null;\n viewableFilterItemIds: string[] | null;\n editableFilterItemIds: string[] | null;\n}\n\n/** Widgets to show in commission reports. There are currently no available widgets, so this `None` serves as a placeholder and new widgets can be added in the future */\nexport enum ReportWidgetTypesCommission {\n None = \"None\",\n}\n\nexport interface ReportBaseRequestOfUIReportCommissionQuery {\n rowGroupings: ReportColumn[] | null;\n columnGroupings: ReportColumn[] | null;\n aggregations: ReportColumn[] | null;\n orderBy: string | null;\n orderByAsc: boolean;\n pageNumber: number;\n filters: UIReportCommissionQuery;\n}\n\nexport interface CommissionReportV2Request extends ReportBaseRequestOfUIReportCommissionQuery {\n}\n\nexport interface ReportCommissionQuery {\n eventDates: DateTimeRangeWithRelative | null;\n eventTimeFrameFilter: EventTimeFrameFilter | null;\n saleDates: DateTimeRangeWithRelative | null;\n saleStatuses: PointOfSaleSaleStatus[] | null;\n soldOnMarketplace: Marketplace | null;\n paymentDates: DateTimeRangeWithRelative | null;\n fulfillmentDates: DateTimeRangeWithRelative | null;\n purchaseCommissionUserId: string | null;\n isCommissionEligible: boolean | null;\n commissionEligibilityDates: DateTimeRangeWithRelative | null;\n timezoneOffsetMins: number | null;\n}\n\nexport interface UIReportCommissionQuery extends ReportCommissionQuery {\n /** This is only used to filter on the frontend application. */\n viewMode: InventoryViewMode | null;\n isSortDescending: boolean | null;\n}\n\nexport interface ReportV2ConfigOverride {\n schemaVersion: string;\n request: ReportOverrideRequest;\n}\n\nexport interface ReportOverrideRequest {\n rowGroupings: ReportColumn[] | null;\n columnGroupings: ReportColumn[] | null;\n aggregations: ReportColumn[] | null;\n}\n\nexport interface ReportMetricsV2 {\n rows: { [key: string]: any; }[];\n valueTypes: { [key: string]: ReportValueType; };\n}\n\nexport enum ReportValueType {\n None = \"None\",\n Guid = \"Guid\",\n Integer = \"Integer\",\n Money = \"Money\",\n DateTime = \"DateTime\",\n String = \"String\",\n User = \"User\",\n Decimal = \"Decimal\",\n Boolean = \"Boolean\",\n DateTimeList = \"DateTimeList\",\n IntegerList = \"IntegerList\",\n GuidList = \"GuidList\",\n UserList = \"UserList\",\n StringList = \"StringList\",\n BooleanList = \"BooleanList\",\n}\n\nexport interface ReportMetricsSummaryV2 {\n row: { [key: string]: any; };\n valueTypes: { [key: string]: ReportValueType; };\n}\n\nexport interface SaleDetails extends Sale {\n tickets: Ticket[];\n ticketGroupInfos: SaleTicketGroupInfo[];\n poInfos: UiPurchaseInfo[];\n /** Transfer Source */\n transSrc: TicketTransferInfo[] | null;\n /** Transfer Destination */\n transDest: TicketTransferInfo | null;\n transferUrls: string[] | null;\n transferProofDocs: UserDocumentLinks[] | null;\n transferProofId: string | null;\n /** AvailabileArtifactTypes */\n availArtTypes: ArtifactType[];\n lineItems: SaleLineItem[];\n mkpLines: MarketplaceSaleLineItem[];\n mkpLinesTotal: UiMoney;\n mkpSeating: Seating | null;\n mkpSaleTtlNetProcs: UiMoney | null;\n /** commissions got override at sale level */\n commissionOverride: Commission[] | null;\n /** the original commissions percentage set on the purchase order, which the allocated tickets are linked to */\n purchaseOrderCommissions: PurchaseOrderCommissions[] | null;\n mkpPmtTerm: MarketplacePaymentTerm | null;\n}\n\nexport interface PurchaseOrderInfo {\n purchaseOrderId: number;\n purchaseOrderDate: string | null;\n ticketGroupId: number;\n buyerCommissionPercent: number | null;\n ticketCount: number;\n buyerUserId: string | null;\n vendor: PurchaseVendorInfo | null;\n vendorAccount: PurchaseVendorAccountInfo | null;\n createdBy: string | null;\n internalNotes: string | null;\n}\n\nexport interface SaleTicketGroupInfo extends PurchaseOrderInfo {\n seating: Seating;\n vendorOrderId: string | null;\n}\n\nexport interface TicketTransferInfo {\n name: string;\n email: string;\n app: string | null;\n appId: number;\n phoneNumber: string | null;\n}\n\nexport interface MarketplaceSaleLineItem {\n /** MarketplacePaymentId */\n posPmtId: number;\n /** MarketplacePaymentLineId */\n id: number;\n /** ExternalPaymentId */\n extPmtId: string;\n /** ExternalPaymentLineId */\n extLineId: string;\n extSaleId: string;\n saleId: number | null;\n state: MarketplacePaymentState;\n date: string | null;\n recvDate: string | null;\n /** IsCredit */\n isCred: boolean;\n /** Amount */\n amt: UiMoney;\n type: MarketplacePaymentLineType;\n}\n\nexport interface PurchaseOrderCommissions {\n purchaseOrderId: number;\n orderId: string;\n commissions: Commission[];\n}\n\nexport interface TicketTransferRequest {\n saleId: number;\n transferType: TransferTicketType;\n acceptanceUrls: string[] | null;\n uploadProofDocuments: UserDocument[] | null;\n transferProofId: string | null;\n barcodes: TicketBarcode[] | null;\n}\n\nexport enum TransferTicketType {\n None = \"None\",\n ImageProof = \"ImageProof\",\n URL = \"URL\",\n IdProof = \"IdProof\",\n ApiTransferTicketmaster = \"ApiTransferTicketmaster\",\n ApiTransfer1Ticket = \"ApiTransfer1Ticket\",\n}\n\nexport interface SaleAvailableSeatings {\n hasMoreAllocations: boolean;\n possibleSeatings: SeatingForAlloc[];\n}\n\nexport interface SeatingForAlloc extends Seating {\n tktsForAlloc: TicketInfoForAllocation[];\n recAlloc: boolean | null;\n nonConsecSeats: boolean | null;\n}\n\nexport interface TicketInfoForAllocation {\n id: number;\n row: string | null;\n seat: string;\n listingId: number | null;\n listingOrd: number | null;\n ticketOrd: number;\n purchasedBy: string | null;\n vendorId: number | null;\n vendorName: string | null;\n vendorAccId: string | null;\n vendorAccEmail: string | null;\n vendorAccName: string | null;\n}\n\nexport interface ValueTupleOfLongAndNullableBoolean {\n item1: number;\n item2: boolean | null;\n}\n\n/** A marketplace sale that originated from (and is managed by) the POS (Marketplace = Offline/Direct) Unlike other marketplace sales which are synced from that Marketplace (e.g. StubHub, Ticketmaster, VividSeat, etc.) */\nexport interface PosManagedMarketplaceSaleInput {\n listingId: number;\n saleId: number | null;\n marketplaceSaleId: string | null;\n posEventId: string;\n viagogoEventId: number | null;\n eventMappingId: string | null;\n venueId: number | null;\n saleDate: PosFieldOfNullableDateTime | null;\n currencyCode: PosFieldOfString | null;\n totalNetProceeds: PosFieldOfNullableDecimal | null;\n inHandDate: PosFieldOfNullableDateTime | null;\n quantitySold: PosFieldOfNullableInteger | null;\n section: PosFieldOfString | null;\n row: PosFieldOfString | null;\n seatFrom: PosFieldOfString | null;\n seatTo: PosFieldOfString | null;\n ticketType: PosFieldOfNullableTicketType | null;\n buyerName: PosFieldOfString | null;\n buyerEmail: PosFieldOfString | null;\n buyerPhone: PosFieldOfString | null;\n listingNotes: PosFieldArrayOfListingNote | null;\n saleStatus: PosFieldOfNullablePointOfSaleSaleStatus | null;\n paymentState: PosFieldOfNullablePointOfSalePaymentState | null;\n fulfillerSellerUserId: PosFieldOfNullableGuid | null;\n internalNotes: PosFieldOfString | null;\n}\n\nexport interface PosFieldOfNullablePointOfSaleSaleStatus {\n value: PointOfSaleSaleStatus | null;\n hasChanged: boolean;\n}\n\nexport interface PosFieldOfNullablePointOfSalePaymentState {\n value: PointOfSalePaymentState | null;\n hasChanged: boolean;\n}\n\nexport interface MarketplaceSaleInput {\n listingId: number;\n saleId: number | null;\n marketplace: Marketplace;\n marketplaceSaleId: string | null;\n posEventId: string;\n viagogoEventId: number | null;\n eventMappingId: string | null;\n venueId: number | null;\n saleDate: PosFieldOfNullableDateTime | null;\n currencyCode: PosFieldOfString | null;\n totalNetProceeds: PosFieldOfNullableDecimal | null;\n inHandDate: PosFieldOfNullableDateTime | null;\n quantitySold: PosFieldOfNullableInteger | null;\n section: PosFieldOfString | null;\n row: PosFieldOfString | null;\n seatFrom: PosFieldOfString | null;\n seatTo: PosFieldOfString | null;\n ticketType: PosFieldOfNullableTicketType | null;\n buyerName: PosFieldOfString | null;\n buyerEmail: PosFieldOfString | null;\n buyerPhone: PosFieldOfString | null;\n listingNotes: PosFieldArrayOfListingNote | null;\n saleStatus: PosFieldOfNullablePointOfSaleSaleStatus | null;\n paymentState: PosFieldOfNullablePointOfSalePaymentState | null;\n fulfillerSellerUserId: PosFieldOfNullableGuid | null;\n internalNotes: PosFieldOfString | null;\n}\n\nexport interface BuyerInfo {\n email: string;\n name: string;\n phone: string;\n}\n\nexport interface WasteListingTicketsInput {\n listingId: number;\n}\n\nexport interface UnwasteSaleInput {\n saleId: number;\n}\n\nexport interface SearchResult {\n name: string | null;\n id: string | null;\n ownerUserId: string | null;\n count: number | null;\n entityIds: number[] | null;\n /** Note we call this fetch (instead of refresh) because this refers to the EntityIds that is obtained by running the query\nNot the data for each of the entity which is obtained via another method */\n lastFetchDate: string | null;\n}\n\nexport interface PurchaseSearchResult extends SearchResult {\n query: PurchaseOrderQuery | null;\n}\n\nexport interface SaleSearchResult extends SearchResult {\n query: SaleQuery | null;\n}\n\nexport interface InventorySearchResult extends SearchResult {\n query: ListingQuery | null;\n}\n\nexport interface SellerUserAccountInfo {\n userId: string;\n displayName: string;\n email: string;\n isDeactivated: boolean;\n roles: number[];\n userGroupIds: number[];\n}\n\nexport interface SellerRoleInfo {\n id: number;\n prefinedRole: Role | null;\n name: string;\n details: string | null;\n isDeleted: boolean;\n permissions: Permission[];\n}\n\nexport enum Role {\n Owner = \"Owner\",\n Buyer = \"Buyer\",\n FinanceAPI = \"FinanceAPI\",\n Fulfillment = \"Fulfillment\",\n Pricer = \"Pricer\",\n Processor = \"Processor\",\n AutoPO = \"AutoPO\",\n AutoFulfill = \"AutoFulfill\",\n AutoPricer = \"AutoPricer\",\n Reporter = \"Reporter\",\n Finance = \"Finance\",\n}\n\nexport interface SellerPermissionInfo {\n name: string;\n permission: Permission;\n area: PermissionAccessArea;\n details: string;\n}\n\nexport enum PermissionAccessArea {\n General = \"General\",\n Inventory = \"Inventory\",\n Sales = \"Sales\",\n Purchases = \"Purchases\",\n Events = \"Events\",\n Account = \"Account\",\n Reporting = \"Reporting\",\n Messages = \"Messages\",\n Accounting = \"Accounting\",\n AdPlatform = \"AdPlatform\",\n}\n\nexport interface SellerUserInput {\n sellerUserId: string;\n displayName: string;\n roles: number[];\n userGroupIds: number[];\n}\n\nexport interface SellerUser {\n sellerUserId: string;\n stubHubLoginId: string;\n sellerDisplayName: string;\n sellerUserName: string;\n email: string;\n deleteDate: string | null;\n}\n\nexport interface SellerUserRolesInput {\n sellerUserId: string;\n roles: number[];\n}\n\nexport interface SellerUserAccountInput {\n sellerUserId: string;\n}\n\nexport interface SyncCenterSettings {\n defaultSplitType: SplitType | null;\n defaultSplitTypeForSeatSaver: SplitType | null;\n ticketTypeRules: TicketTypeRule[] | null;\n inHandDatePaddingInDays: number | null;\n defaultHideSeatNumbers: boolean | null;\n priceFloor: number | null;\n defaultMaxQuantityDisplay: number | null;\n marketplaceSettings: MarketplaceAccountSettingInput[] | null;\n inHandDaysBeforeEvent: number | null;\n isAutoPoQualityControlled: boolean | null;\n isAutoAddCancelledProceedsEnabled: boolean | null;\n}\n\nexport interface TicketTypeRule {\n deliveryType: DeliveryType;\n ticketTypePriorityOrders: TicketTypePriorityOrder[];\n}\n\nexport interface TicketTypePriorityOrder {\n ticketType: TicketType;\n priorityOrder: number | null;\n /** Whether this ticket type shouldn't be used */\n blocked: boolean | null;\n}\n\nexport interface MarketplaceAccountSettingInput {\n marketplace: Marketplace;\n isEnabled: boolean;\n markup: number | null;\n sellerFee: number | null;\n /** This field is currently only used for read and does not need to be sent in the update request. */\n userName: string | null;\n /** This field is currently only used for read and does not need to be sent in the update request. */\n tokenVersion: number | null;\n paymentTerm: MarketplacePaymentTerm;\n broadcastHoldDurationInDays: number | null;\n maxHoldDurationInHours: number | null;\n}\n\nexport interface AccountAutoPricingSettingsInputs extends AutoPricingInputs {\n defaultCompListingQuantityFilters: CompListingQuantityFiltersCollection | null;\n}\n\nexport interface CompListingQuantityFiltersCollection {\n exactMatchQuantityFilters: CompListingQuantityFilters[] | null;\n greaterThanOrEqualToQuantityFilter: CompListingQuantityFilters | null;\n}\n\nexport interface CompListingQuantityFilters {\n posListingQuantity: number;\n compQuantityFilters: CompListingQuantity;\n}\n\nexport interface AutoCurrencyConversionSettings {\n enabled: boolean;\n defaultCurrencyCode: string | null;\n ignoredCurrencyCodes: string[] | null;\n}\n\nexport interface TimezoneInfo {\n value: string;\n timezoneOffsetMins: number;\n}\n\nexport interface SellerRoleInput {\n id: number;\n name: string | null;\n details: string | null;\n permissions: Permission[] | null;\n userIds: string[] | null;\n}\n\nexport interface TradeDeskPasswordResetInput {\n username: string;\n oldPassword: string | null;\n newPassword: string;\n code: string;\n}\n\nexport interface SellerSupportCaseNote {\n sellerSupportCaseNoteId: number;\n createByUserId: string | null;\n impersonatedUserId: string | null;\n createDate: string;\n workItemNoteId: number | null;\n noteContent: string | null;\n readDate: string | null;\n attachments: AttachmentResource[] | null;\n}\n\nexport interface AttachmentResource {\n id: string;\n name: string;\n content_type: string;\n content: string | null;\n}\n\nexport interface SellerSupportCase {\n createByUserId: string;\n impersonatedUserId: string | null;\n marketplace: Marketplace;\n sellerSupportCaseId: number;\n entityId: number | null;\n entityType: ActionOutboxEntityType | null;\n marketplaceEntityId: string | null;\n workItemId: number | null;\n readDate: string | null;\n createDate: string;\n lastNoteDate: string;\n unreadNoteCount: number;\n}\n\nexport interface SellerSupportCaseQuery {\n isMostRecent: boolean | null;\n sellerSupportCaseIds: number[] | null;\n}\n\nexport interface SellerSupportCaseRequest {\n marketplace: Marketplace;\n entityId: number | null;\n entityType: ActionOutboxEntityType | null;\n marketplaceEntityId: string | null;\n noteContent: string | null;\n attachments: string[] | null;\n}\n\nexport interface FileDownloadInfo {\n contentType: string;\n contentDisposition: string;\n length: number;\n name: string;\n fileName: string;\n content: string | null;\n}\n\nexport interface SellerSupportCaseAttachmentRequest {\n id: string;\n name: string;\n contentType: string;\n}\n\nexport interface SellerUserSetting {\n userSetting: UserSetting;\n /** JSON string of setting */\n userSettingValue: string;\n}\n\nexport enum UserSetting {\n QuickFiltersStateInventory = \"QuickFiltersStateInventory\",\n QuickFiltersCustomInventory = \"QuickFiltersCustomInventory\",\n QuickFiltersStateSales = \"QuickFiltersStateSales\",\n QuickFiltersCustomSales = \"QuickFiltersCustomSales\",\n QuickFiltersStatePurchases = \"QuickFiltersStatePurchases\",\n QuickFiltersCustomPurchases = \"QuickFiltersCustomPurchases\",\n SalesViewSelected = \"SalesViewSelected\",\n SuspiciousPriceChange = \"SuspiciousPriceChange\",\n InternationalCompliance = \"InternationalCompliance\",\n InventoryPageViewMode = \"InventoryPageViewMode\",\n InventoryColumnOrder = \"InventoryColumnOrder\",\n InventoryColumnNumberPrecision = \"InventoryColumnNumberPrecision\",\n InventoryColumnWidths = \"InventoryColumnWidths\",\n InventoryCustomColumns = \"InventoryCustomColumns\",\n InventoryColumnEditability = \"InventoryColumnEditability\",\n SaleColumnOrder = \"SaleColumnOrder\",\n SaleCustomColumns = \"SaleCustomColumns\",\n SaleColumnEditability = \"SaleColumnEditability\",\n SaleColumnNumberPrecision = \"SaleColumnNumberPrecision\",\n ReportConfigInventory = \"ReportConfigInventory\",\n ReportConfigSale = \"ReportConfigSale\",\n EventsColumnOrder = \"EventsColumnOrder\",\n EventsCustomColumns = \"EventsCustomColumns\",\n EventsColumnEditability = \"EventsColumnEditability\",\n EventsColumnNumberPrecision = \"EventsColumnNumberPrecision\",\n SiteTheme = \"SiteTheme\",\n ReportingColumnLimit = \"ReportingColumnLimit\",\n PriceFloorCeilingMode = \"PriceFloorCeilingMode\",\n ReleaseNoteIdsRead = \"ReleaseNoteIdsRead\",\n EventsColumnsEnabled = \"EventsColumnsEnabled\",\n InventoryColumnsEnabled = \"InventoryColumnsEnabled\",\n SaleColumnsEnabled = \"SaleColumnsEnabled\",\n SiteZoom = \"SiteZoom\",\n InventoryDefaultTab = \"InventoryDefaultTab\",\n PurchaseColumnOrder = \"PurchaseColumnOrder\",\n PurchaseCustomColumns = \"PurchaseCustomColumns\",\n PurchaseColumnEditability = \"PurchaseColumnEditability\",\n PurchaseColumnNumberPrecision = \"PurchaseColumnNumberPrecision\",\n PurchaseColumnsEnabled = \"PurchaseColumnsEnabled\",\n InventoryFlattenedColumnOrder = \"InventoryFlattenedColumnOrder\",\n InventoryFlattenedColumnsEnabled = \"InventoryFlattenedColumnsEnabled\",\n InventoryFlattenedColumnEditability = \"InventoryFlattenedColumnEditability\",\n InventoryFlattenedColumnNumberPrecision = \"InventoryFlattenedColumnNumberPrecision\",\n SaleFlattenedColumnOrder = \"SaleFlattenedColumnOrder\",\n SaleFlattenedColumnsEnabled = \"SaleFlattenedColumnsEnabled\",\n SaleFlattenedColumnEditability = \"SaleFlattenedColumnEditability\",\n SaleFlattenedColumnNumberPrecision = \"SaleFlattenedColumnNumberPrecision\",\n SaleColumnWidths = \"SaleColumnWidths\",\n PurchaseColumnWidths = \"PurchaseColumnWidths\",\n InventoryV2DefaultTab = \"InventoryV2DefaultTab\",\n SalePageViewMode = \"SalePageViewMode\",\n PurchasePageViewMode = \"PurchasePageViewMode\",\n InventoryReportColumnWidths = \"InventoryReportColumnWidths\",\n SaleReportColumnWidths = \"SaleReportColumnWidths\",\n EventsColumnWidths = \"EventsColumnWidths\",\n PurchaseEventColumnOrder = \"PurchaseEventColumnOrder\",\n PurchaseEventColumnsEnabled = \"PurchaseEventColumnsEnabled\",\n PurchaseEventColumnEditability = \"PurchaseEventColumnEditability\",\n PurchaseEventColumnNumberPrecision = \"PurchaseEventColumnNumberPrecision\",\n PurchaseEventColumnWidths = \"PurchaseEventColumnWidths\",\n SidePanelWidths = \"SidePanelWidths\",\n SalesDefaultTab = \"SalesDefaultTab\",\n PurchasesDefaultTab = \"PurchasesDefaultTab\",\n SalesSideTableColumnOrder = \"SalesSideTableColumnOrder\",\n SalesSideTableColumnsEnabled = \"SalesSideTableColumnsEnabled\",\n SalesSideTableColumnEditability = \"SalesSideTableColumnEditability\",\n SalesSideTableColumnNumberPrecision = \"SalesSideTableColumnNumberPrecision\",\n PurchaseSideTableColumnOrder = \"PurchaseSideTableColumnOrder\",\n PurchaseSideTableColumnsEnabled = \"PurchaseSideTableColumnsEnabled\",\n PurchaseSideTableColumnEditability = \"PurchaseSideTableColumnEditability\",\n PurchaseSideTableColumnNumberPrecision = \"PurchaseSideTableColumnNumberPrecision\",\n InventorySideTableColumnOrder = \"InventorySideTableColumnOrder\",\n InventorySideTableColumnsEnabled = \"InventorySideTableColumnsEnabled\",\n InventorySideTableColumnEditability = \"InventorySideTableColumnEditability\",\n InventorySideTableColumnNumberPrecision = \"InventorySideTableColumnNumberPrecision\",\n MarketplacePaymentsTableColumnOrder = \"MarketplacePaymentsTableColumnOrder\",\n MarketplacePaymentsCustomColumns = \"MarketplacePaymentsCustomColumns\",\n MarketplacePaymentsTableColumnsEnabled = \"MarketplacePaymentsTableColumnsEnabled\",\n MarketplacePaymentsColumnNumberPrecision = \"MarketplacePaymentsColumnNumberPrecision\",\n MarketplacePaymentsColumnEditability = \"MarketplacePaymentsColumnEditability\",\n MarketplacePaymentsColumnsWidth = \"MarketplacePaymentsColumnsWidth\",\n QuickFloorPromptDismissal = \"QuickFloorPromptDismissal\",\n QuickFiltersCustomMarketplacePayments = \"QuickFiltersCustomMarketplacePayments\",\n QuickFiltersStateMarketplacePayments = \"QuickFiltersStateMarketplacePayments\",\n QuickFiltersStateOnSaleEvent = \"QuickFiltersStateOnSaleEvent\",\n QuickFiltersCustomOnSaleEvent = \"QuickFiltersCustomOnSaleEvent\",\n OnSaleEventColumnsOrder = \"OnSaleEventColumnsOrder\",\n OnSaleEventColumnsWidths = \"OnSaleEventColumnsWidths\",\n OnSaleEventColumnNumberPrecision = \"OnSaleEventColumnNumberPrecision\",\n OnSaleEventCustomColumns = \"OnSaleEventCustomColumns\",\n OnSaleEventColumnEditability = \"OnSaleEventColumnEditability\",\n OnSaleEventColumnsEnabled = \"OnSaleEventColumnsEnabled\",\n FirstTimeFeaturesViewed = \"FirstTimeFeaturesViewed\",\n}\n\nexport interface CustomQuickFilterOfListingQuery {\n /** Used for disambugating serialized versions of this class. */\n schemaVersion: string;\n id: string;\n name: string;\n data: ListingQuery;\n}\n\nexport interface CustomQuickFilterOfOnSaleEventQuery {\n /** Used for disambugating serialized versions of this class. */\n schemaVersion: string;\n id: string;\n name: string;\n data: OnSaleEventQuery;\n}\n\nexport interface CustomQuickFilterOfSaleQuery {\n /** Used for disambugating serialized versions of this class. */\n schemaVersion: string;\n id: string;\n name: string;\n data: SaleQuery;\n}\n\nexport interface CustomQuickFilterOfPurchaseOrderQuery {\n /** Used for disambugating serialized versions of this class. */\n schemaVersion: string;\n id: string;\n name: string;\n data: PurchaseOrderQuery;\n}\n\nexport interface CustomQuickFilterOfMarketplacePaymentQuery {\n /** Used for disambugating serialized versions of this class. */\n schemaVersion: string;\n id: string;\n name: string;\n data: MarketplacePaymentQuery;\n}\n\nexport interface ReleaseNote {\n id: number;\n title: string;\n releaseNoteType: ReleaseNoteType;\n descriptionHtml: string | null;\n /** Date when user gets access to this release note. For \"NewFeature\" type,\nthis is `FeatureInsertDate` from ReleaseNoteDto, date when user is granted access.\nOtherwise (e.g. BugFix), it is the date the release note itself is created */\n releaseNoteGetAccessDate: string;\n}\n\nexport enum ReleaseNoteType {\n NewFeature = \"NewFeature\",\n BugFix = \"BugFix\",\n}\n\nexport interface TutorialItem {\n tutorialItemId: number;\n title: string;\n titleContentId: number | null;\n parentTutorialItemId: number | null;\n tutorialItemType: TutorialItemType;\n}\n\nexport enum TutorialItemType {\n Folder = \"Folder\",\n Document = \"Document\",\n}\n\nexport interface TutorialItemContent {\n tutorialItemId: number;\n tutorialItemContentId: number | null;\n contentHtml: string;\n}\n\nexport interface DeliveryTypeTicketTypeMapping {\n deliveryType: DeliveryType;\n ticketTypes: { [key in keyof typeof TicketType]?: number[]; };\n}\n\nexport interface TicketGroupMergeInput {\n intentions: TicketGroupIntention[];\n purchaseOrderId: number;\n ticketGroups: TicketGroupInput[];\n updateSalesOfListings: boolean | null;\n deallocateSales: boolean | null;\n updatePredeliveryETicketArtifacts: boolean | null;\n}\n\nexport interface TicketGroupIntention {\n ticketGroupId: number;\n reason: TicketGroupEditReason;\n additionalInfo: string;\n}\n\nexport enum TicketGroupEditReason {\n AmendTickets = \"Amend Tickets\",\n CancelTickets = \"Cancel Tickets\",\n AddTickets = \"Add Tickets\",\n ExchangeTickets = \"Exchange Tickets\",\n EditEvent = \"Edit Event\",\n}\n\nexport interface UserGroup {\n userGroupId: number;\n userGroupName: string;\n userGroupDescription: string | null;\n sellerUserIds: string[];\n}\n\nexport interface FileParameter {\n data: any;\n fileName: string;\n}\n\nexport interface FileResponse {\n data: Blob;\n status: number;\n fileName?: string;\n headers?: { [name: string]: any };\n}\n\nexport class ApiException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new ApiException(message, status, response, headers, null);\n}\n\nexport type PosClientConfig = {\n activeAccountId?: string;\n};","// Please keep this enum in alphabetical order\nexport enum ContentId {\n Above = 'cid$#3432318#',\n AbsoluteAmount = 'cid$#3511647#',\n AbsoluteDollarValue = 'cid$#3811309#',\n AbsoluteRankPremium = 'cid$#3543036#',\n ABTest = 'cid$#3811310#',\n Access = 'cid$#3511648#',\n AccessToViewUnauthorized = 'cid$#3005805#',\n AccordianToggle = 'cid$#3678429#',\n Account = 'cid$#3172431#',\n Account_SetPrice_Details = 'cid$#3511649#',\n AccountEmail = 'cid$#3811311#',\n AccountInformation = 'cid$#3408136#',\n Accounting = 'cid$#3811312#',\n Accounting_ViewAll_Details = 'cid$#3811313#',\n Accounting_ViewPaymentsOnSale_Details = 'cid$#3811314#',\n Accounting_ViewStubhubPayments_Details = 'cid$#____Accounting_ViewStubhubPayments_Details#',\n AccountName = 'cid$#3811315#',\n AccountNotSetupForAnyMarketplace = 'cid$#3221219#',\n Accounts = 'cid$#3811316#',\n Accounts_ViewAll_Details = 'cid$#3511650#',\n Actions = 'cid$#2971938#',\n ActivateRole = 'cid$#3511651#',\n ActivateUser = 'cid$#3408137#',\n Active = 'cid$#3372981#',\n ActiveListingsHeader = 'cid$#3811317#',\n ActiveListingsDescription = 'cid$#3811318#',\n Activity = 'cid$#3172432#',\n ActivityLogActionType = 'cid$#3070960#',\n ActivityLogAdditionalInfo = 'cid$#3070962#',\n ActivityLogDate = 'cid$#3070959#',\n ActivityLogInitiatedBy = 'cid$#3070961#',\n ActivityLogLaunchButtonText = 'cid$#3070954#',\n Actual = 'cid$#3453392#',\n ActualSellThroughRate = 'cid$#3389312#',\n ActualSTR = 'cid$#3261229#',\n AdCampaigns = 'cid$#3678430#',\n AddABTest = 'cid$#3811319#',\n AddAnotherSplit = 'cid$#3811320#',\n AddedToSale = 'cid$#____AddedToSale#',\n AddFilterToShowResult = 'cid$#____AddFilterToShowResult#',\n AddHurdle = 'cid$#3811321#',\n AddNameToCreateGroup = 'cid$#3811322#',\n AddNewDeal = 'cid$#3811323#',\n AddNewSection = 'cid$#3811324#',\n AddOverride = 'cid$#3678431#',\n AddRow = 'cid$#3811325#',\n AddRule = 'cid$#3811326#',\n AddSplit = 'cid$#3811327#',\n AddToGroup = 'cid$#3811328#',\n AddToSale = 'cid$#____AddToSale#',\n AddValues = 'cid$#____AddValues#',\n AdGroups = 'cid$#3811329#',\n Add = 'cid$#3408138#',\n AddAccountAction = 'cid$#3054229#',\n AddChargeOrCredit = 'cid$#3453393#',\n AddColumns = 'cid$#3344369#',\n AddCommission = 'cid$#3543037#',\n AddCostAction = 'cid$#3034800#',\n AddCostCredit = 'cid$#3043873#',\n AddCustomColumn = 'cid$#3361762#',\n AddFilter = 'cid$#3577955#',\n AddGroup = 'cid$#3396816#',\n AddInventoryReport = 'cid$#3408139#',\n AddLineItem = 'cid$#3195376#',\n AddMarketplaceSale = 'cid$#3511657#',\n AddMembersToThisTeam = 'cid$#3543038#',\n AddMessagingSource = 'cid$#3432319#',\n AddMessagingSourceDescription = 'cid$#3432320#',\n AddMessagingSourceStep1 = 'cid$#3432321#',\n AddMessagingSourceStep2 = 'cid$#3432322#',\n AddMessagingSourceStep3 = 'cid$#3432323#',\n AddNewBuyer = 'cid$#3269683#',\n AddNewOverrideFxRate = 'cid$#3577956#',\n AddNewTeam = 'cid$#3511658#',\n AddNote = 'cid$#3389313#',\n AddOfflineSale = 'cid$#3237711#',\n AddOrUpdateFxOverrideWarning = 'cid$#3577958#',\n AddOverrideFxRate = 'cid$#3577957#',\n AddPayment = 'cid$#3037601#',\n AddPaymentMethodAction = 'cid$#3054230#',\n AddPlaceholder = 'cid$#3511659#',\n AddPlaceholderAdditionalInfoMessage = 'cid$#3511660#',\n AddPurchase = 'cid$#3034668#',\n AddPurchasePaymentMethod = 'cid$#3054231#',\n AddPurchaseVendor = 'cid$#3054232#',\n AddPurchaseVendorAccount = 'cid$#3054233#',\n AddReport = 'cid$#3389314#',\n AddSalesReport = 'cid$#3408140#',\n AddSeatSaver = 'cid$#3453394#',\n AddSeatSaveEventSearchMessage = 'cid$#3453395#',\n AddSeatSaverAdditionalInfoMessage = 'cid$#3453396#',\n AddSection = 'cid$#3453397#',\n AddSource = 'cid$#3432324#',\n AddTag = 'cid$#3372982#',\n AddTagValues = 'cid$#3432325#',\n AddTagValuesSelected = 'cid$#3432326#',\n AddTagValuesAllVisible = 'cid$#3432327#',\n AddTarget = 'cid$#3453398#',\n AddTickets = 'cid$#3034801#',\n AddTicketsForAnotherEvent = 'cid$#3040948#',\n AddTicketsForThisEvent = 'cid$#3261233#',\n AddUrl = 'cid$#2972050#',\n AddUser = 'cid$#3408141#',\n AddUsersAndGroups = 'cid$#3432329#',\n AddUserToRole = 'cid$#3511661#',\n AddValue = 'cid$#3432330#',\n AddVendorAction = 'cid$#3054234#',\n AdjustFiltersSuggestion = 'cid$#3811330#',\n AdjustFloor = 'cid$#3811331#',\n AdjustMyPrice = 'cid$#____AdjustMyPrice#',\n AdjustPrice = 'cid$#____AdjustPrice#',\n AdjustPricesBy = 'cid$#3511662#',\n AdjustPricingCeilingAllVisible = 'cid$#3432331#',\n AdjustPricingFloorAllVisible = 'cid$#3432332#',\n AdjustPricingFloorSelected = 'cid$#3432333#',\n AdjustPricingCeilingSelected = 'cid$#3432334#',\n AdjustPricingFloor = 'cid$#3432335#',\n AdjustPricingCeiling = 'cid$#3432336#',\n AdjustProceedsFloor = 'cid$#3543039#',\n AdjustProceedsCeiling = 'cid$#3543040#',\n Advanced = 'cid$#____Advanced#',\n AdPlatform_Edit_Details = 'cid$#____AdPlatform_Edit_Details#',\n AdvancedAutopricingSettings = 'cid$#3389315#',\n AdvancedSearch = 'cid$#____AdvancedSearch#',\n AdvancedSettings = 'cid$#3511663#',\n AggressiveOption = 'cid$#3317868#',\n Ago = 'cid$#3396817#',\n AISuggestion = 'cid$#3408142#',\n All = 'cid$#3038730#',\n AllAmex = 'cid$#3577960#',\n AllAvailableMerges = 'cid$#3453399#',\n AllDeliveryOptions = 'cid$#3054235#',\n AllEvents = 'cid$#2978864#',\n AllFulfillmentStates = 'cid$#3543041#',\n AllGenres = 'cid$#3511664#',\n AllIn = 'cid$#3034670#',\n /**\n * @deprecated Unused\n */\n AllInPriceAutoCalculationInfo = 'cid$#3180429#',\n AllListings = 'cid$#3361763#',\n AllMarketplaces = 'cid$#3214273#',\n AllMastercard = 'cid$#3577961#',\n AllMerchants = 'cid$#2975360#',\n AllMessages = 'cid$#3344370#',\n AllocatedListing = 'cid$#3811332#',\n AllocateToAnyAvailableSeats = 'cid$#3543042#',\n Allocation = 'cid$#3678433#',\n AllowBroadcast = 'cid$#3811333#',\n AllowMutipleValues = 'cid$#3389316#',\n AllPaymentMethods = 'cid$#3054236#',\n AllPayments = 'cid$#3811334#',\n AllPaymentStates = 'cid$#2971993#',\n AllPaymentTypes = 'cid$#3577962#',\n AllSaleStatuses = 'cid$#2975361#',\n AllSubGenres = 'cid$#3511665#',\n AllTicketTypes = 'cid$#3042150#',\n AllTime = 'cid$#3678434#',\n AllVendorAccounts = 'cid$#3054238#',\n AllVendors = 'cid$#3054237#',\n Allocate = 'cid$#3089836#',\n AllocateTickets = 'cid$#2975367#',\n AllocateToDifferentTickets = 'cid$#3089837#',\n AllocateToListingTickets = 'cid$#3089838#',\n AllocatedSeats = 'cid$#3042157#',\n AllVisa = 'cid$#3577963#',\n AlreadyInHand = 'cid$#3013278#',\n AlternativeTickets = 'cid$#3577964#',\n AlternativeTicketsBuyerCompensation = 'cid$#3577965#',\n AmendTickets = 'cid$#3059981#',\n Amount = 'cid$#3034802#',\n AmountPaid = 'cid$#3042370#',\n AmountType = 'cid$#3185865#',\n Amphitheater = 'cid$#3811335#',\n Ampitheater = 'cid$#3678435#',\n And = 'cid$#3577968#',\n Angle = 'cid$#3288913#',\n AnUploadedDocumentIsRequired = 'cid$#3042154#',\n Any = 'cid$#3047492#',\n App = 'cid$#3110492#',\n AppendSeatTraits = 'cid$#3811336#',\n ApplicationTempData = 'cid$#3511666#',\n Apply = 'cid$#3577969#',\n ApplyCompListingSettings = 'cid$#3432337#',\n ApplyAdvancedPricingSettings = 'cid$#3432338#',\n ApplyFilter = 'cid$#3237712#',\n ApplyGroupingTemplatesToAllEventsPrompt = 'cid$#3396818#',\n ApplyAutoPricingSettings = 'cid$#3432339#',\n ApplyPricingProtectionSettings = 'cid$#3432340#',\n ApplyToAll = 'cid$#3577970#',\n ApplyToAllEvents = 'cid$#3361764#',\n ApplyUndercutSettings = 'cid$#3432341#',\n Approved = 'cid$#3408143#',\n ApprovedForQualityControl = 'cid$#3408144#',\n AppVersion = 'cid$#3543043#',\n Area = 'cid$#3811337#',\n AreYouSure = 'cid$#3089839#',\n AreYouSureEditRowsMultipleSections = 'cid$#3432342#',\n AreYouSureYouWantToRestoreThisPurchase = 'cid$#3453400#',\n AscendingAbbreviated = 'cid$#3811338#',\n AutopricingInfo = 'cid$#3811339#',\n AutoPricingResult = 'cid$#3811340#',\n BelowThe = 'cid$#____BelowThe#',\n BetterZonesDetail = 'cid$#3811341#',\n BuildReport = 'cid$#____BuildReport#',\n BulkAppendSeatTraitInfoMessage = 'cid$#3811342#',\n BulkEditGettingPreview = 'cid$#3811343#',\n BulkEditListingGroupSettings = 'cid$#3811344#',\n BulkEditListingGroupSettingsWarning = 'cid$#3811345#',\n BulkEditNoCommissionProvidedWarning = 'cid$#3811346#',\n BulkEditNoSeatTraitsProvidedWarning = 'cid$#3811347#',\n AutoComp = 'cid$#3678436#',\n AutoFulfillWithSpace = 'cid$#3678437#',\n AutoGroup = 'cid$#3678438#',\n BulkEditDeliveryTypePurchaseMessage = 'cid$#3678439#',\n BulkEditSuccessWithWarnings = 'cid$#3678440#',\n BulkEditTicketTypePriorityInstruction = 'cid$#3678441#',\n BulkMarkPurchaseAsPaid = 'cid$#3811348#',\n BulkMarkPurchaseAsPaidMessage = 'cid$#3811349#',\n BulkMarkPurchaseAsPaidWarning = 'cid$#3811350#',\n BulkReplaceAndOverrideSeatTraitInfoMessage = 'cid$#3811351#',\n BulkUpdatePlaceholdersMessage = 'cid$#3811352#',\n BulkUpdatePurchaseCurrency = 'cid$#3811353#',\n BulkUpdatePurchaseCurrencyActionText = 'cid$#3811354#',\n BulkUpdatePurchaseCurrencyInfoText = 'cid$#3811355#',\n BulkUpdateSeatTraitInfoMessage = 'cid$#3811356#',\n BulkWasteTicketsConfirmation = 'cid$#3811357#',\n BuyerAccount = 'cid$#3811359#',\n BuyerDelivery = 'cid$#3678442#',\n CancelBulkTicketGroupWarning = 'cid$#3678443#',\n CancelBulkPurchaseWarning = 'cid$#3678444#',\n CancellationReason = 'cid$#____CancellationReason#',\n CancelledOrders = 'cid$#____CancelledOrders#',\n CancelledProceeds = 'cid$#____CancelledProceeds#',\n CancelledProceedsSettingDescription = 'cid$#____CancelledProceedsSettingDescription#',\n CancelledProceedsSettingToggle = 'cid$#____CancelledProceedsSettingToggle#',\n CancelPurchases = 'cid$#3678445#',\n CancelSingleTicketGroupWarning = 'cid$#3678446#',\n CancelTicketGroupsParenth = 'cid$#3678447#',\n CancelPurchasesParenth = 'cid$#3678448#',\n CantAllocateMore100Commission = 'cid$#____CantAllocateMore100Commission#',\n Carts = 'cid$#3811360#',\n Ceiling = 'cid$#3811361#',\n Center = 'cid$#3811362#',\n ChargeAmount = 'cid$#3811363#',\n ChargeReasons = 'cid$#____ChargeReasons#',\n Cheaper = 'cid$#3811364#',\n ChooseListing = 'cid$#3811365#',\n ChooseSpecificSections = 'cid$#3811366#',\n ChooseTickets = 'cid$#3811367#',\n Clear = 'cid$#3811368#',\n CombineCornersAndEnds = 'cid$#3811369#',\n Commands = 'cid$#3811370#',\n CommissionEligibilityDate = 'cid$#____CommissionEligibilityDate#',\n CommissionEligible = 'cid$#____CommissionEligible#',\n CommissionerCostsAndCharges = 'cid$#____CommissionerCostsAndCharges#',\n CommissionerProceedsAndCredits = 'cid$#____CommissionerProceedsAndCredits#',\n CommissionerProfitAndLoss = 'cid$#____CommissionerProfitAndLoss#',\n Commissions = 'cid$#3811371#',\n Compensation = 'cid$#____Compensation#',\n CompletedOn = 'cid$#____CompletedOn#',\n ConfirmRemovePaymentReference = 'cid$#____ConfirmRemovePaymentReference#',\n ConfirmResetOverride = 'cid$#3811372#',\n ConfirmUnLinkPaymentAndSaleTitle = 'cid$#____ConfirmUnLinkPaymentAndSaleTitle#',\n ConfirmUnLinkPaymentAndSaleBody = 'cid$#____ConfirmUnLinkPaymentAndSaleBody#',\n ConfirmWaste = 'cid$#3811373#',\n Conflict = 'cid$#3811374#',\n CommissionPayments = 'cid$#3811375#',\n ConnectedSeller = 'cid$#3811376#',\n Consignment = 'cid$#____Consignment#',\n Converted = 'cid$#3811377#',\n ConvertedPaymentsAmount = 'cid$#3811378#',\n ConvertPayment = 'cid$#3811379#',\n ConvertPurchasePayment = 'cid$#3811380#',\n ConvertCurrency = 'cid$#3811381#',\n ConvertedPayment = 'cid$#3811382#',\n ConvertedPaymentAmountMustBeGreaterThanZero = 'cid$#3811383#',\n ConvertedTo = 'cid$#3811384#',\n ConvPmtAmt = 'cid$#3811385#',\n Corners = 'cid$#3811386#',\n CreateNewGroup = 'cid$#3811387#',\n CreditAmount = 'cid$#3811388#',\n CreditReasons = 'cid$#____CreditReasons#',\n CustomRanks = 'cid$#3811389#',\n DateAdded = 'cid$#3811390#',\n DateRange = 'cid$#3811391#',\n DeallocateSalesOfAffectedTicketsWarning = 'cid$#3811392#',\n ChangeGroup = 'cid$#3678449#',\n ChangeZone = 'cid$#3678450#',\n CheckVenueRows = 'cid$#3678451#',\n CompListingMinCount = 'cid$#3678452#',\n CompListingMinQuantity = 'cid$#3678453#',\n CopiedWithExclamationMark = 'cid$#3678454#',\n DefaultDelivery = 'cid$#3811393#',\n Defect = 'cid$#3811395#',\n DefaultDeliveryConfigurations = 'cid$#3811396#',\n DefaultDeliveryConfigurationsDescription = 'cid$#3811397#',\n DelayBroadcastAfterInitialCreation = 'cid$#3754647#',\n DeletePlaceholders = 'cid$#3811398#',\n DeleteSearchResultConfirm = 'cid$#____DeleteSearchResultConfirm#',\n DeliveryInfoChangePropagateToSalesConfirmation = 'cid$#3678455#',\n DeliveryInfoChangePropagateToUnfulfilledSalesConfirmation = 'cid$#____DeliveryInfoChangePropagateToUnfulfilledSalesConfirmation#',\n DeliveryOverrideInfo = 'cid$#3811399#',\n DeliveryStrategy = 'cid$#3678456#',\n DeprecatingHeatMaps = 'cid$#3811400#',\n Deprioritize = 'cid$#3811401#',\n DeprioritizeQuantitiesHeader = 'cid$#3811402#',\n DeprioritizeQuantitiesDescription = 'cid$#3811403#',\n DescendingAbbreviated = 'cid$#3811404#',\n Details = 'cid$#3811405#',\n DetectionMode = 'cid$#____DetectionMode#',\n DeterminePrice = 'cid$#____DeterminePrice#',\n DiscountApplied = 'cid$#3811406#',\n DonotDropMoreThan = 'cid$#3811407#',\n DontUpdateExistingListings = 'cid$#3811408#',\n DontUpdateExistingListingsOrSales = 'cid$#3678457#',\n DownloadETickets = 'cid$#3811409#',\n Drafted = 'cid$#3811410#',\n DontUpdateExistingPurchasesOrListings = 'cid$#3811411#',\n DroppedOrderPenalty = 'cid$#____DroppedOrderPenalty#',\n DropYourFileAnywhereToUpload = 'cid$#3811413#',\n Edited = 'cid$#3811414#',\n EditEventWarning3 = 'cid$#____EditEventWarning3#',\n EditMap = 'cid$#3811415#',\n EditTable = 'cid$#____EditTable#',\n EditZone = 'cid$#3678459#',\n EmptyPurchaseCommissions = 'cid$#3811416#',\n EnableAutoAddCancelledProceeds = 'cid$#____EnableAutoAddCancelledProceeds#',\n EnableAutoFulfillOverride = 'cid$#3811417#',\n EnableDeliveryOverride = 'cid$#3811418#',\n EnableNativeSyncLabel = 'cid$#3811419#',\n EnableNativeSyncExplanation = 'cid$#3811420#',\n Ends = 'cid$#3811421#',\n EnterCompanionMode = 'cid$#3811422#',\n EventCancellation = 'cid$#____EventCancellation#',\n EventConfig_Create_Details = 'cid$#3678460#',\n EventConfig_Edit_Details = 'cid$#3678461#',\n EventConfig_View_Details = 'cid$#3678462#',\n EventDiscovery = 'cid$#____EventDiscovery#',\n EventMap = 'cid$#3811423#',\n EventNotReviewedSince = 'cid$#3678463#',\n EventState = 'cid$#3678464#',\n ExcludeFanInventoryInfo = 'cid$#____ExcludeFanInventoryInfo#',\n ExcludeDefectsInfo = 'cid$#____ExcludeDefectsInfo#',\n ExistingSections = 'cid$#3811424#',\n ExitCompanionMode = 'cid$#3811425#',\n ExperimentName = 'cid$#3811426#',\n Experiments = 'cid$#3811427#',\n ExportPurchases = 'cid$#3811428#',\n ExternalPaymentId = 'cid$#3811429#',\n ExternalPurchaseIdAbbreviated = 'cid$#3678465#',\n FallbackSplit = 'cid$#3811430#',\n FallbackSplitInfo = 'cid$#3811431#',\n FarLeftAndFarRight = 'cid$#3811432#',\n Filled = 'cid$#3811434#',\n FilterQty = 'cid$#____FilterQty#',\n FilterReportOptional = 'cid$#____FilterReportOptional#',\n FinanceAPI = 'cid$#____FinanceAPI#',\n FlashSales = 'cid$#____FlashSales#',\n FlashSale = 'cid$#____FlashSale#',\n Front = 'cid$#3811435#',\n FuturePayments = 'cid$#3811436#',\n FX = 'cid$#3811437#',\n FXRate = 'cid$#3811438#',\n General_ViewNotifications_Details = 'cid$#____General_ViewNotifications_Details#',\n General_ViewReleaseNotes_Details = 'cid$#____General_ViewReleaseNotes_Details#',\n GeneratingPreview = 'cid$#3811439#',\n GroupInventory = 'cid$#3811440#',\n GroupListingsSettingRankPremium = 'cid$#3811441#',\n GroupListingsSettingQueuingLogic = 'cid$#3811442#',\n GroupListingsSettingBroadcasting = 'cid$#3811443#',\n HasUnmappedSales = 'cid$#____HasUnmappedSales#',\n HasUnlinkedChargesCredits = 'cid$#____HasUnlinkedChargesCredits#',\n HasUnpricedListings = 'cid$#3811444#',\n GUR = 'cid$#3811445#',\n Help = 'cid$#____Help#',\n HelpCenter = 'cid$#____HelpCenter#',\n HideZoneMap = 'cid$#3811446#',\n Hour = 'cid$#3811447#',\n Hours = 'cid$#3811448#',\n IfPurchaseIsCreatedWith = 'cid$#3811449#',\n IncludeBetterZones = 'cid$#3811450#',\n IncludeDefects = 'cid$#3811451#',\n IncludeHeldListings = 'cid$#3811452#',\n IncompatiblePricingMode = 'cid$#3811453#',\n Inferred = 'cid$#3678466#',\n Inventory_UpdateDeliveryStrategy_Details = 'cid$#3811454#',\n Inventory_UpdateDeliveryStrategyOnIsPricerOf_Details = 'cid$#3811455#',\n Inventory_UpdateDeliveryStrategyOnPurchasedBy_Details = 'cid$#3811456#',\n Information = 'cid$#3811457#',\n InternallyGenerated = 'cid$#3811458#',\n InventoryReportDescription = 'cid$#____InventoryReportDescription#',\n InventoryStatus = 'cid$#3811459#',\n ItemsWillBeUpdatedIfApplicable = 'cid$#3811460#',\n KeepExistingTicketsOption = 'cid$#3811461#',\n KeepPaymentReference = 'cid$#____KeepPaymentReference#',\n Last3Days = 'cid$#3678467#',\n Last2Weeks = 'cid$#3678468#',\n LeftAndRight = 'cid$#3811462#',\n LinkSale = 'cid$#____LinkSale#',\n ListingHasNoCurrentFloor = 'cid$#3811463#',\n ListingHasNoMarketprice = 'cid$#3811464#',\n ListingHasNoUnitCost = 'cid$#3811465#',\n ListingQty = 'cid$#____ListingQty#',\n ListingQuantity = 'cid$#3811466#',\n ListingsSortByHeader = 'cid$#3811467#',\n ListingsGroupSortByDescription = 'cid$#3811468#',\n ListingUpdateConfirmation = 'cid$#3678469#',\n ListingWillBeSplitInto = 'cid$#3811469#',\n LockCommission = 'cid$#3811470#',\n MappingError = 'cid$#3678471#',\n MapTitle = 'cid$#3811471#',\n MarkAsPaid = 'cid$#____MarkAsPaid#',\n MarkAsUnpaid = 'cid$#____MarkAsUnpaid#',\n MarkedAsReviewed = 'cid$#3678472#',\n MarketplaceDelivery = 'cid$#3678473#',\n MarketplaceFault = 'cid$#____MarketplaceFault#',\n MarketplacePaymentId = 'cid$#3811472#',\n MarketplacePayments = 'cid$#3811473#',\n MarketplacePaymentTerm = 'cid$#____MarketplacePaymentTerm#',\n MarketplaceTerms = 'cid$#____MarketplaceTerms#',\n MarketShare = 'cid$#3678474#',\n MarkAsFulfilledWarning = 'cid$#3678475#',\n MarkLineItemAsUnpaidConfirmation = 'cid$#____MarkLineItemAsUnpaidConfirmation#',\n MarkProceedsAsUnpaidConfirmation = 'cid$#____MarkProceedsAsUnpaidConfirmation#',\n MarkSalesAsPaid = 'cid$#____MarkSalesAsPaid#',\n MergedGroupListingWarning = 'cid$#3811475#',\n MergeListingGroupTooltip = 'cid$#3811476#',\n MinCommissionValue = 'cid$#____MinCommissionValue#',\n MinListingsRequired = 'cid$#3772104#',\n MoreExpensive = 'cid$#3811477#',\n MovePrice = 'cid$#____MovePrice#',\n MoveTo = 'cid$#3811478#',\n MoveToExistingGroup = 'cid$#3811479#',\n Multiple = 'cid$#3678476#',\n Empty = 'cid$#3678477#',\n NetCommissionRate = 'cid$#____NetCommissionRate#',\n NetCommissionRateOverride = 'cid$#____NetCommissionRateOverride#',\n New = 'cid$#____New#',\n NewCustomReport = 'cid$#____NewCustomReport#',\n NewFlashSale = 'cid$#____NewFlashSale#',\n NextTicket = 'cid$#3811480#',\n NoFault = 'cid$#____NoFault#',\n NoHurdle = 'cid$#3811481#',\n NoItemsWereEligibleForUpdate = 'cid$#3811482#',\n NoResults = 'cid$#3811483#',\n Normal = 'cid$#3678478#',\n Draft = 'cid$#3678479#',\n Contingent = 'cid$#3678480#',\n NoTicketsToWaste = 'cid$#____NoTicketsToWaste#',\n NotificationTypeListingPriceUpdate = 'cid$#3678481#',\n NotMapped = 'cid$#3811484#',\n Of = 'cid$#____Of#',\n OnSaleDate = 'cid$#____OnSaleDate#',\n OpenEventPageV2InDevelopment = 'cid$#3678482#',\n OriginalProceeds = 'cid$#____OriginalProceeds#',\n OriginalSeating = 'cid$#3678483#',\n OriginatedListing = 'cid$#3811485#',\n OtherZoneMap = 'cid$#3811486#',\n OutlierLimit = 'cid$#3678484#',\n OutlierSettingsIngoreListings = 'cid$#____OutlierSettingsIngoreListings#',\n OutlierSpacing = 'cid$#3678485#',\n P25 = 'cid$#3811487#',\n P50 = 'cid$#3811488#',\n PartiallyRefunded = 'cid$#3811489#',\n Page = 'cid$#3811490#',\n PastPayments = 'cid$#3811491#',\n PaymentAmount = 'cid$#3811492#',\n PaymentDetails = 'cid$#3811493#',\n PaymentLine = 'cid$#3811494#',\n PaymentLineId = 'cid$#3811495#',\n PaymentReferenceID = 'cid$#3811496#',\n PaymentsAmount = 'cid$#3811497#',\n PayRef = 'cid$#3678486#',\n PayRec = 'cid$#3678487#',\n PayState = 'cid$#3678488#',\n PendingReshipment = 'cid$#3678489#',\n PendingReversal = 'cid$#3832351#',\n PerformerVenueSpecific = 'cid$#3678490#',\n AssignETicketsIns = 'cid$#2975353#',\n AssignQRCodesIns = 'cid$#3511667#',\n AssignToDefaultPurchaser = 'cid$#3543044#',\n at = 'cid$#3396819#',\n AtLeastOneUrlRequired = 'cid$#3042153#',\n AtoZ = 'cid$#3172433#',\n AtoZArrow = 'cid$#3214274#',\n ATP = 'cid$#3261234#',\n Attachment = 'cid$#3317869#',\n AutoBroadcastNewListing = 'cid$#3180430#',\n AutoBroadcastRequiredFaceValue = 'cid$#3261235#',\n AutoCompAndGroupListings = 'cid$#3678491#',\n AutoConversion = 'cid$#3511668#',\n AutoConversionSubtitle = 'cid$#3577998#',\n AutoFulfill = 'cid$#3408145#',\n Automations = 'cid$#3408146#',\n AutoPO = 'cid$#3408147#',\n AutoPoConfiguration = 'cid$#3577973#',\n AutoPoConfigurationDescription = 'cid$#3578043#',\n AutoPoVendorConfigutationDescription = 'cid$#3578089#',\n AutoPriceFrequency = 'cid$#3577971#',\n AutoPricePreview = 'cid$#3396820#',\n AutoPricePreviewSubTitle = 'cid$#3396821#',\n AutoPricer = 'cid$#3408148#',\n Autopricing = 'cid$#3214275#',\n AutoPricingAllListingsForEvent = 'cid$#3344371#',\n AutoPricingAllResultTypeOption = 'cid$#3291912#',\n AutoPricingDisclaimer = 'cid$#3543045#',\n AutoPricingEnabled = 'cid$#3291911#',\n AutopricingNotAvailableForGA = 'cid$#3288914#',\n AutopricingNotAvailableMissingMap = 'cid$#3288915#',\n AutopricingNotAvailableNoScoresGeneral = 'cid$#3288916#',\n AutopricingNotAvailableNoScores = 'cid$#3317870#',\n AutoPricingResultType = 'cid$#3408149#',\n AutopricingSettings = 'cid$#3344372#',\n AutopricingSettingsAll = 'cid$#3344373#',\n AutopricingSettingsAllVisible = 'cid$#3389317#',\n AutopricingSettingsSelected = 'cid$#3344374#',\n AutopricingStrategy = 'cid$#3511670#',\n AutoSetup = 'cid$#3453401#',\n AutoSourceTickets = 'cid$#3577974#',\n Available = 'cid$#3261236#',\n AvailableInstruction = 'cid$#3243223#',\n AvailableSeats = 'cid$#3261237#',\n AverageTicketPrice = 'cid$#3221220#',\n AvoidOne = 'cid$#3047493#',\n AvoidOneAndThree = 'cid$#3047494#',\n Back = 'cid$#2973464#',\n BankTransfer = 'cid$#3054239#',\n Barcode = 'cid$#2976482#',\n BarcodeAlreadyInUsed = 'cid$#3004076#',\n BarcodeRequired = 'cid$#2972955#',\n Below = 'cid$#3432343#',\n BelowTheNextCheapest = 'cid$#3752872#',\n BestRowExtrapolation = 'cid$#3361765#',\n BestDealScore = 'cid$#3361766#',\n Between = 'cid$#3372983#',\n Better = 'cid$#3389318#',\n BestDealScorePrompt = 'cid$#3361767#',\n Blocked = 'cid$#3243231#',\n Boolean = 'cid$#3372984#',\n Broadcast = 'cid$#3038731#',\n BroadcastAll = 'cid$#3180431#',\n BroadcastAllVisible = 'cid$#3389319#',\n BroadcastByDefault = 'cid$#3214276#',\n BroadcastDisabled = 'cid$#3221221#',\n Broadcasted = 'cid$#3038732#',\n BroadcastError = 'cid$#3172434#',\n BroadcastErrorCode_BroadcastListing = 'cid$#3578079#',\n BroadcastErrorCode_Unknown = 'cid$#3577966#',\n BroadcastErrorCode_UpdatePrice = 'cid$#3578011#',\n BroadcastErrorCode_UpdateTicketType = 'cid$#3578016#',\n BroadcastErrorCode_UpdateSplitType = 'cid$#3578015#',\n BroadcastErrorCode_UpdateInHandDate = 'cid$#3578008#',\n BroadcastErrorCode_SplitListing = 'cid$#3578014#',\n BroadcastErrorCode_MergeListing = 'cid$#3578010#',\n BroadcastErrorCode_UnbroadcastListing = 'cid$#3578080#',\n BroadcastErrorCode_UpdateQuantity = 'cid$#3578012#',\n BroadcastErrorCode_HideSeats = 'cid$#3578007#',\n BroadcastErrorCode_UpdateListingNotes = 'cid$#3578009#',\n BroadcastErrorCode_UpdateSeating = 'cid$#3578013#',\n BroadcastErrorCode_MarketplaceResaleRestricted = 'cid$#3578036#',\n BroadcastErrorCode_MarketplaceManifestMismatch = 'cid$#3578034#',\n BroadcastErrorCode_MarketplacePriceBelowFloor = 'cid$#3578035#',\n BroadcastSelected = 'cid$#3344375#',\n BroadcastSettings = 'cid$#3372985#',\n BroadcastSettingsAllVisible = 'cid$#3389320#',\n BroadcastSettingsForAll = 'cid$#3372986#',\n BroadcastSettingsForSelected = 'cid$#3372987#',\n BrowseFile = 'cid$#3389321#',\n BrowseFiles = 'cid$#2972052#',\n BucketOptions = 'cid$#3577975#',\n Budget = 'cid$#3678492#',\n BugFixes = 'cid$#3432344#',\n BuildACustomRole = 'cid$#3511671#',\n BulkActions = 'cid$#3543046#',\n BulkDeleteSelectedPlaceholderWarning = 'cid$#3678493#',\n BulkDiscount = 'cid$#3043869#',\n BulkEditCancelled = 'cid$#3372988#',\n BulkEditDone = 'cid$#3372989#',\n BulkEditFailed = 'cid$#3389322#',\n BulkEditFloorCeilingCurrentFloorWarning = 'cid$#3543047#',\n BulkEditFloorCeilingUnitCostWarning = 'cid$#3543048#',\n BulkEditFloorCeilingWarning = 'cid$#3432345#',\n BulkEditInProgress = 'cid$#3372990#',\n BulkEditListPriceAdjustingFloorCeilingWarning = 'cid$#3453403#',\n BulkEditPartialFailure = 'cid$#3389323#',\n BulkEditPriceFloorCeilingWarning = 'cid$#3372991#',\n BulkEditPricesWarning = 'cid$#3372992#',\n BulkEditStarting = 'cid$#3396822#',\n BulkEditSuccess = 'cid$#3389324#',\n BulkEntry = 'cid$#2972949#',\n BulkUpload = 'cid$#3389325#',\n Buyer = 'cid$#3408150#',\n BuyerAccounts = 'cid$#3396823#',\n BuyerCommission = 'cid$#3317871#',\n BuyerDeniedEntry = 'cid$#3577976#',\n By = 'cid$#3389326#',\n BypassLimit = 'cid$#3678494#',\n CalculatePrice = 'cid$#3753195#',\n CancellationDate = 'cid$#3511674#',\n Cancellations = 'cid$#3214277#',\n Cancelled = 'cid$#3201692#',\n CancelledEvent = 'cid$#3511675#',\n CancelledHold = 'cid$#3180432#',\n CancelledHoldOnMarketplace = 'cid$#3577977#',\n CancelSelectMultiple = 'cid$#3344376#',\n CannotCalculateUndercut = 'cid$#3361768#',\n Catchup = 'cid$#3577978#',\n Category = 'cid$#3453404#',\n Category1007 = 'cid$#3511676#',\n Category1009 = 'cid$#3511677#',\n Category4286 = 'cid$#3511678#',\n Category5099 = 'cid$#3511679#',\n Category6401 = 'cid$#3511680#',\n Category6404 = 'cid$#3511681#',\n Category6451 = 'cid$#3511682#',\n Category6452 = 'cid$#3511684#',\n Category12567 = 'cid$#3511685#',\n Category263024 = 'cid$#3511686#',\n Category272988 = 'cid$#3511687#',\n Category272989 = 'cid$#3511688#',\n Category273013 = 'cid$#3511689#',\n Category273026 = 'cid$#3511690#',\n Category273031 = 'cid$#3511691#',\n Category273034 = 'cid$#3511692#',\n Category273055 = 'cid$#3511693#',\n Category273057 = 'cid$#3511694#',\n Category273089 = 'cid$#3511695#',\n Category273137 = 'cid$#3511696#',\n Category273138 = 'cid$#3511697#',\n Category273164 = 'cid$#3511698#',\n Category273171 = 'cid$#3511699#',\n Category273393 = 'cid$#3511700#',\n Category273409 = 'cid$#3511701#',\n Category273431 = 'cid$#3511702#',\n Category273485 = 'cid$#3511703#',\n Category273529 = 'cid$#3511704#',\n Category273657 = 'cid$#3511705#',\n Category274164 = 'cid$#3511706#',\n Category274701 = 'cid$#3511707#',\n Category274794 = 'cid$#3511708#',\n Category275344 = 'cid$#3511709#',\n Category275641 = 'cid$#3511710#',\n Category276077 = 'cid$#3511711#',\n Category276281 = 'cid$#3511712#',\n Category276306 = 'cid$#3511713#',\n Category276308 = 'cid$#3511714#',\n Category276311 = 'cid$#3511715#',\n Category276861 = 'cid$#3511716#',\n Category278221 = 'cid$#3511717#',\n Category278837 = 'cid$#3511718#',\n Category279267 = 'cid$#3511719#',\n Category279563 = 'cid$#3511720#',\n Category289352 = 'cid$#3511721#',\n Category150012246 = 'cid$#3511722#',\n Category1013 = 'cid$#3511723#',\n Category1015 = 'cid$#3511724#',\n Category1017 = 'cid$#3511725#',\n Category2294 = 'cid$#3511726#',\n Category4551 = 'cid$#3511727#',\n Category6403 = 'cid$#3511728#',\n Category55548 = 'cid$#3511729#',\n Category259716 = 'cid$#3511730#',\n Category356361 = 'cid$#3511731#',\n Category356453 = 'cid$#3511733#',\n Category356499 = 'cid$#3511734#',\n Category356585 = 'cid$#3511735#',\n Category357019 = 'cid$#3511736#',\n Category357036 = 'cid$#3511737#',\n Category358121 = 'cid$#3511738#',\n Category358959 = 'cid$#3511739#',\n Category366262 = 'cid$#3511740#',\n Category366288 = 'cid$#3511741#',\n Category366529 = 'cid$#3511742#',\n Category366888 = 'cid$#3511743#',\n Category375100 = 'cid$#3511744#',\n Category379731 = 'cid$#3511745#',\n Category379991 = 'cid$#3511746#',\n Category380480 = 'cid$#3511747#',\n Category381561 = 'cid$#3511748#',\n Category150002820 = 'cid$#3511749#',\n Category1014 = 'cid$#3511750#',\n Category1022 = 'cid$#3511751#',\n Category1023 = 'cid$#3511752#',\n Category1026 = 'cid$#3511753#',\n Category1027 = 'cid$#3511754#',\n Category1059 = 'cid$#3511755#',\n Category1205 = 'cid$#3511756#',\n Category14858 = 'cid$#3511757#',\n Category259810 = 'cid$#3511758#',\n Category259815 = 'cid$#3511759#',\n Category259819 = 'cid$#3511760#',\n Category259820 = 'cid$#3511761#',\n Category259822 = 'cid$#3511762#',\n Category259823 = 'cid$#3511763#',\n Category259824 = 'cid$#3511764#',\n Category259827 = 'cid$#3511765#',\n Category259828 = 'cid$#3511766#',\n Category259829 = 'cid$#3511767#',\n Category259833 = 'cid$#3511768#',\n Category259921 = 'cid$#3511769#',\n Category259922 = 'cid$#3511770#',\n Category260261 = 'cid$#3511771#',\n Category260263 = 'cid$#3511772#',\n Category260264 = 'cid$#3511773#',\n Category260265 = 'cid$#3511774#',\n Category260266 = 'cid$#3511775#',\n Category260267 = 'cid$#3511776#',\n Category260268 = 'cid$#3511777#',\n Category260270 = 'cid$#3511779#',\n Category260271 = 'cid$#3511780#',\n Category260275 = 'cid$#3511781#',\n Category260347 = 'cid$#3511782#',\n Category260357 = 'cid$#3511783#',\n Category260385 = 'cid$#3511784#',\n Category260389 = 'cid$#3511785#',\n Category260392 = 'cid$#3511786#',\n Category260421 = 'cid$#3511787#',\n Category260478 = 'cid$#3511788#',\n Category260483 = 'cid$#3511789#',\n Category260492 = 'cid$#3511790#',\n Category260530 = 'cid$#3511791#',\n Category260539 = 'cid$#3511792#',\n Category260542 = 'cid$#3511793#',\n Category260601 = 'cid$#3511794#',\n Category260624 = 'cid$#3511795#',\n Category260628 = 'cid$#3511796#',\n Category260637 = 'cid$#3511797#',\n Category260644 = 'cid$#3511798#',\n Category261289 = 'cid$#3511799#',\n Category261291 = 'cid$#3511800#',\n Category308335 = 'cid$#3511801#',\n Category308336 = 'cid$#3511802#',\n Category308341 = 'cid$#3511803#',\n Category308342 = 'cid$#3511804#',\n Category308344 = 'cid$#3511805#',\n Category308345 = 'cid$#3511806#',\n Category308350 = 'cid$#3511807#',\n Category308351 = 'cid$#3511808#',\n Category308352 = 'cid$#3511809#',\n Category308353 = 'cid$#3511810#',\n Category308355 = 'cid$#3511811#',\n Category308357 = 'cid$#3511812#',\n Category308358 = 'cid$#3511813#',\n Category308363 = 'cid$#3511814#',\n Category308364 = 'cid$#3511815#',\n Category308365 = 'cid$#3511816#',\n Category308385 = 'cid$#3511817#',\n Category321834 = 'cid$#3511818#',\n Category1024 = 'cid$#3511819#',\n CeilingRelativeToUnitCost = 'cid$#3317872#',\n ChangeEventAll = 'cid$#3453405#',\n ChangeEventSelected = 'cid$#3453406#',\n ChangeGroupBy = 'cid$#3453407#',\n ChangeGroupByWarning = 'cid$#3453408#',\n ChangePassword = 'cid$#3408151#',\n ChangeSectionScore = 'cid$#3288917#',\n ChangeTagValueTypeWarning = 'cid$#3372993#',\n ChangeValueType = 'cid$#3372994#',\n ChangeVendorAccount = 'cid$#3543049#',\n Charge = 'cid$#3453409#',\n Charges = 'cid$#3408152#',\n CharityEvent = 'cid$#3511820#',\n Cheapest = 'cid$#3361769#',\n Checkbox = 'cid$#3344377#',\n ChooseBuyer = 'cid$#3269684#',\n ChooseSection = 'cid$#3317873#',\n ChooseRow = 'cid$#3317874#',\n ChooseWidgets = 'cid$#3389327#',\n ChooseYourDisplaySettings = 'cid$#3408153#',\n ChooseZone = 'cid$#3543050#',\n ClassifyMessage = 'cid$#3344378#',\n ClearAll = 'cid$#3453410#',\n ClearAndOverwrite = 'cid$#3577981#',\n ClearBrowsingData = 'cid$#3543051#',\n ClearBrowsingDataHelp = 'cid$#3543052#',\n ClearData = 'cid$#3543053#',\n ClearListingAutoPricingSettings = 'cid$#3678495#',\n Clusters = 'cid$#3577982#',\n Columns = 'cid$#3344379#',\n ColumnSettings = 'cid$#3344380#',\n ColumnWithSameNameExists = 'cid$#3361770#',\n CombinedPermissionViewDescription = 'cid$#3578076#',\n CommaSeparatedValuesExt = 'cid$#3511821#',\n Comments = 'cid$#3678496#',\n Commission = 'cid$#3317875#',\n Commissioner = 'cid$#3543054#',\n Comparables = 'cid$#3396824#',\n CompCeiling = 'cid$#3389328#',\n CompFloor = 'cid$#3361771#',\n CompListingCeiling = 'cid$#3361772#',\n CompListingFloorMustLessThanCeiling = 'cid$#3361773#',\n CompListingModePrompt = 'cid$#3361774#',\n CompListingOnlyForSameZone = 'cid$#3396825#',\n CompListingQuantityScoreAdjustment = 'cid$#3396826#',\n CompMode = 'cid$#3361775#',\n Concert = 'cid$#3511822#',\n ConcertsSectionsBehindStage = 'cid$#3678497#',\n Configure = 'cid$#3269685#',\n ConfigureColumnTags = 'cid$#3408154#',\n ConfigureColumnVariables = 'cid$#3408155#',\n ConfigureHeatMap = 'cid$#3317876#',\n ConfiguringYourHeatMap = 'cid$#3269686#',\n ConfiguringHeatMapInstruction1 = 'cid$#3269687#',\n ConfiguringHeatMapInstruction2 = 'cid$#3269688#',\n Confirm = 'cid$#3453411#',\n ConfirmAllocation = 'cid$#3453412#',\n ConfirmationDeadline = 'cid$#3344381#',\n ConfirmDeletion = 'cid$#3543055#',\n ConfirmTransferWithoutProof = 'cid$#3511823#',\n ConfirmVendorAccountChange = 'cid$#3543056#',\n ConfirmWithoutAllocation = 'cid$#3453413#',\n Contains = 'cid$#3678498#',\n ConversionRate = 'cid$#3577983#',\n ConversionRateMustBeGreaterThanZero = 'cid$#3577984#',\n CopyEmailAddress = 'cid$#3432346#',\n CopyExternalId = 'cid$#3432347#',\n Create = 'cid$#3408156#',\n CreateACustomColumn = 'cid$#3361776#',\n CreateAHeatMap = 'cid$#3317877#',\n CreateANewTeam = 'cid$#3511824#',\n CreatedBy = 'cid$#3543057#',\n CreatedOn = 'cid$#3543058#',\n CreateNew = 'cid$#3288918#',\n CreateNewField = 'cid$#3408157#',\n CreateNewFromTemplateConfigPayload = 'cid$#3543059#',\n CreateNewInventoryReport = 'cid$#3408158#',\n CreateNewOrder = 'cid$#3372995#',\n CreateNewReport = 'cid$#3408159#',\n CreateNewSaleReport = 'cid$#3408160#',\n CreateNewTag = 'cid$#3432348#',\n CreatePricingStrategy = 'cid$#3511825#',\n Credits = 'cid$#3408161#',\n CSError = 'cid$#3577986#',\n CurrencyConversion = 'cid$#3577987#',\n CurrencySectionSubtitle = 'cid$#3511826#',\n Current = 'cid$#3543060#',\n CurrentColumns = 'cid$#3344382#',\n CurrentFloor = 'cid$#3543061#',\n CustomEventId = 'cid$#3361777#',\n CustomReports = 'cid$#3543062#',\n DailyOverrideFxRates = 'cid$#3577988#',\n Dark = 'cid$#3408162#',\n DarkMode = 'cid$#3396827#',\n Dashboard = 'cid$#3678499#',\n DataIsRefreshing = 'cid$#3678500#',\n Date = 'cid$#3344383#',\n Day = 'cid$#3396828#',\n Days = 'cid$#3577989#',\n DeactivateUser = 'cid$#3408163#',\n DealScore = 'cid$#3361778#',\n Decimal = 'cid$#3372996#',\n DecimalNumber = 'cid$#3408164#',\n Decrease = 'cid$#3577990#',\n DecreasePrice = 'cid$#3511827#',\n DecreasePriceByPercentAllVisible = 'cid$#3389329#',\n DecreasePriceForAll = 'cid$#3511828#',\n DecreasePriceForSelected = 'cid$#3511829#',\n DefaultBuyer = 'cid$#3543063#',\n DefaultCurrency = 'cid$#3511830#',\n DefaultPaymentMethod = 'cid$#3543064#',\n DefaultQuantity = 'cid$#3543065#',\n DefaultQuantityFilters = 'cid$#3543066#',\n DefaultReports = 'cid$#3543067#',\n DefaultSplitTypeForSeatSaver = 'cid$#3543068#',\n DefineTargets = 'cid$#3453414#',\n DefineTargetsSubtitle = 'cid$#3453415#',\n Delete = 'cid$#3511831#',\n DeleteAllTemplates = 'cid$#3543069#',\n DeleteCustomColumn = 'cid$#3372997#',\n DeleteFxOverrideWarning = 'cid$#3577992#',\n DeleteOverrideFxRate = 'cid$#3577991#',\n DeletePlaceholder = 'cid$#3511832#',\n DeletePlaceholderAll = 'cid$#3511833#',\n DeletePlaceholderAllVisible = 'cid$#3511834#',\n DeletePlaceholderListing = 'cid$#3543070#',\n DeletePlaceholderSelected = 'cid$#3511835#',\n DeletePricingStrategy = 'cid$#3511836#',\n DeleteReport = 'cid$#3389330#',\n DeleteRole = 'cid$#3511837#',\n DeleteSeatSaver = 'cid$#3453416#',\n DeleteSeatSaverAll = 'cid$#3453417#',\n DeleteSeatSaverAllVisible = 'cid$#3453418#',\n DeleteSeatSaverSelected = 'cid$#3453419#',\n DeleteTag = 'cid$#3543071#',\n DeleteTagConfirmation1 = 'cid$#3543072#',\n DeleteTagConfirmation2 = 'cid$#3543073#',\n DeleteTeam = 'cid$#3511838#',\n DeleteUser = 'cid$#3372998#',\n DelistedClickToList = 'cid$#3678501#',\n DelistedSyncFailed = 'cid$#3577993#',\n DeliveryDocuments = 'cid$#3453420#',\n DeliveryMethodChange = 'cid$#3577994#',\n DeliveryType = 'cid$#3453421#',\n DemandFactors = 'cid$#3678502#',\n Description = 'cid$#3511839#',\n DescriptionOfPurpose = 'cid$#3511840#',\n DeselectAll = 'cid$#3453422#',\n DesiredActiveListings = 'cid$#3344384#',\n DecreasePriceByPercentAll = 'cid$#3344385#',\n DecreasePriceByPercentSelected = 'cid$#3344386#',\n DesiredNumberOfGroups = 'cid$#3389331#',\n DigitalWallet = 'cid$#3689886#',\n DirectToStubHubInternationalMessage = 'cid$#3543074#',\n DirectToStubHubInternationalTitle = 'cid$#3543075#',\n DifferentCurrencyCodesRequired = 'cid$#3577995#',\n Disabled = 'cid$#3678503#',\n DisableDarkMode = 'cid$#3396829#',\n Discount = 'cid$#3344387#',\n Display = 'cid$#3408165#',\n DisplayName = 'cid$#3372999#',\n Distance = 'cid$#3288919#',\n Done = 'cid$#3408166#',\n DontChange = 'cid$#3373000#',\n DontPriceBelow = 'cid$#3389332#',\n Download = 'cid$#3389333#',\n DownloadTemplate = 'cid$#3389334#',\n DoYouWantToContinue = 'cid$#3678504#',\n Duplicate = 'cid$#3511841#',\n DuplicatedListing = 'cid$#3511842#',\n DuplicatedReportName = 'cid$#3389335#',\n DuplicateEventNeedsToBeRescheduled = 'cid$#3511844#',\n DuplicateEventPerformerVenueDateAndTimeMatch = 'cid$#3511845#',\n Duplicates = 'cid$#3543076#',\n DuplicateTicketId = 'cid$#3389336#',\n each = 'cid$#3361779#',\n EachTicketUrlOnNewLine = 'cid$#3389337#',\n EachTicketIdOnNewLine = 'cid$#3389338#',\n EarlyShippingLabelGeneration = 'cid$#3577996#',\n Earnings = 'cid$#3453423#',\n Editable = 'cid$#3389339#',\n EditATeam = 'cid$#3511846#',\n EditColumns = 'cid$#3453424#',\n EditEditabilityDescription = 'cid$#3678505#',\n EditEventWarning = 'cid$#3432349#',\n EditEventWarning2 = 'cid$#3811498#',\n EditGeneralSettings = 'cid$#3543077#',\n EditMarketplaceEvent = 'cid$#3361780#',\n EditACustomColumn = 'cid$#3361781#',\n EditMetrics = 'cid$#3389340#',\n EditNote = 'cid$#3453425#',\n EditOverrideFxRate = 'cid$#3577997#',\n EditPricing = 'cid$#3269689#',\n EditPricingStrategy = 'cid$#3511847#',\n EditReport = 'cid$#3389341#',\n EditRowScore = 'cid$#3317878#',\n EditRowScores = 'cid$#3432350#',\n EditScores = 'cid$#3389342#',\n EditSections = 'cid$#3453426#',\n EditTagTypes = 'cid$#3408167#',\n EditUser = 'cid$#3373002#',\n EffectiveCeilingBelowFloor = 'cid$#3361782#',\n EmailPreview = 'cid$#3288920#',\n EnableAll = 'cid$#3511848#',\n EnableAndDisableExperimentalFeatures = 'cid$#3408168#',\n EnableAutoPricing = 'cid$#3408169#',\n Enabled = 'cid$#3678506#',\n EnableDarkMode = 'cid$#3396830#',\n EnableQualityControlForAutoPo = 'cid$#3408170#',\n EnjoyTheEvent = 'cid$#3344388#',\n EnterBarcodesForTransferIns = 'cid$#3361783#',\n EnterResetCodeFromEmail = 'cid$#3432351#',\n EnterStubHubEmailPrompt = 'cid$#3408171#',\n EnterTicketUrlsIns = 'cid$#3389343#',\n EnterTicketIdsIns = 'cid$#3389344#',\n EnterValuesFor = 'cid$#3408172#',\n Equals = 'cid$#3678507#',\n EventCancelled = 'cid$#3344390#',\n EventHasPassed = 'cid$#3511849#',\n EventId = 'cid$#3453427#',\n EventMapped = 'cid$#3678508#',\n EventPostponed = 'cid$#3344391#',\n Events_AddTagType_Details = 'cid$#3511850#',\n Events_Edit_Details = 'cid$#3543078#',\n Events_SetPrice_Details = 'cid$#3511851#',\n Events_UpdateTags_Details = 'cid$#3511852#',\n Events_ViewAll_Details = 'cid$#3511853#',\n EventTag = 'cid$#3678509#',\n EventTags = 'cid$#3453428#',\n EventView = 'cid$#3678510#',\n Example = 'cid$#3408174#',\n ExcessiveFailureRate = 'cid$#3577999#',\n Exclude = 'cid$#3578000#',\n ExcludeFanInventory = 'cid$#3578001#',\n ExcludeFullySoldListings = 'cid$#3678511#',\n ExclusionCurrencies = 'cid$#3511854#',\n ExclusionCurrenciesSubtitle = 'cid$#3511855#',\n ExistingOrder = 'cid$#3317879#',\n ExistingTagName = 'cid$#3432352#',\n ExistingTagValue = 'cid$#3373003#',\n Exit = 'cid$#3578002#',\n ExpectedProceeds = 'cid$#3511856#',\n ExpectedProfit = 'cid$#3578003#',\n ExpectedSTR = 'cid$#3389345#',\n ExperimentalFeatures = 'cid$#3408175#',\n ExperimentalFeaturesComingSoon = 'cid$#3432353#',\n ExpiredShippingLabel = 'cid$#3578004#',\n ExploreComparables = 'cid$#3408176#',\n ExportListings = 'cid$#3578005#',\n ExportSales = 'cid$#3578006#',\n ExternalPurchaseId = 'cid$#3453429#',\n ExternalSaleId = 'cid$#3453430#',\n Far = 'cid$#3288921#',\n Festival = 'cid$#3511857#',\n FindThe = 'cid$#3373004#',\n FulfillmentProviders = 'cid$#3409273#',\n FulfillmentProvidersSubText = 'cid$#3409272#',\n FullPrice = 'cid$#3578019#',\n HasUnsoldListings = 'cid$#3678512#',\n Hidden = 'cid$#3678513#',\n HiddenEditabilityDescription = 'cid$#3678514#',\n HowToDeterminePrice = 'cid$#3771815#',\n Include = 'cid$#3578020#',\n IncludeAllCountries = 'cid$#3578021#',\n IncludeAllVendors = 'cid$#3578022#',\n IncludedCountries = 'cid$#3577985#',\n InventoryTag = 'cid$#3678515#',\n GlobalReportFilterChangeCopyMessage = 'cid$#3577980#',\n GlobalReportFilterChangeMessage = 'cid$#3577979#',\n LastMinuteSalesLateDelivery = 'cid$#3578026#',\n LastReviewed = 'cid$#3578027#',\n ListedDelistFailed = 'cid$#3578029#',\n ListedSyncFailed = 'cid$#3578030#',\n ListingGroupSummaryActiveAndActive = 'cid$#3678516#',\n ListingGroupSummaryActiveButNotListed = 'cid$#3678517#',\n ListingGroupSummaryQueued = 'cid$#3678518#',\n LMSError = 'cid$#3578031#',\n Mappings = 'cid$#3678519#',\n MarkAsFulfilled = 'cid$#3678520#',\n MarkAsReviewed = 'cid$#3578032#',\n MarketplaceEnableDisableConfirm = 'cid$#3678521#',\n MarketplaceFulfillmentState = 'cid$#3578033#',\n MaxReportSizeWarningLabel = 'cid$#3678522#',\n MaxActiveListings = 'cid$#3678523#',\n MergedVenueGeometry = 'cid$#3678524#',\n NoGroupsAvailableForVenueConfig = 'cid$#3678525#',\n MinActiveListings = 'cid$#3678526#',\n NoFulfillmentProviders = 'cid$#3409274#',\n NoItemsWereChanged = 'cid$#3578037#',\n NotContains = 'cid$#3678527#',\n NumberOfUnsoldTickets = 'cid$#3578040#',\n NumberOfListedTicketsDescription = 'cid$#3578038#',\n NumberOfUnlistedTicketsDescription = 'cid$#3578039#',\n OnlyThis = 'cid$#3578042#',\n OrderNotFulfilled = 'cid$#3578044#',\n OriginatedBy = 'cid$#3578045#',\n OverchargedSeller = 'cid$#3578046#',\n PandLTitle = 'cid$#3578056#',\n PaymentId = 'cid$#3678528#',\n Penalty = 'cid$#3578052#',\n Perk = 'cid$#3811500#',\n Permission_AdPlatformEdit = 'cid$#____Permission_AdPlatformEdit#',\n Permission_EditVendor = 'cid$#____Permission_EditVendor#',\n Permission_EventConfig_Create = 'cid$#3678529#',\n Permission_EventConfig_Edit = 'cid$#3678530#',\n Permission_EventConfig_View = 'cid$#3678531#',\n Permission_LockUnlockCommission = 'cid$#____Permission_LockUnlockCommission#',\n Permission_LockUnlockCommissionOwned = 'cid$#____Permission_LockUnlockCommissionOwned#',\n Permission_UpdateDeliveryStrategyOnPurchasedListings = 'cid$#3811501#',\n Permission_UpdateDeliveryStrategyOnPricedListings = 'cid$#3811502#',\n Permission_UpdateDeliveryStrategy = 'cid$#3811503#',\n Permission_UpdateDeliveryType = 'cid$#3811504#',\n Permission_UpdateDeliveryTypeOwned = 'cid$#3811505#',\n Permission_UpdateSeatTraits = 'cid$#3811506#',\n Permission_UpdateSeatTraitsOwned = 'cid$#3811507#',\n Permission_UpdateCustomDeliveryType = 'cid$#3811508#',\n Permission_UpdateCustomDeliveryTypeOwned = 'cid$#3811509#',\n Permission_ViewNotifications = 'cid$#____Permission_ViewNotifications#',\n Permission_ViewPaymentsOnSale = 'cid$#3811510#',\n Permission_ViewStubhubPayments = 'cid$#____Permission_ViewStubhubPayments#',\n Permission_ViewReleaseNotes = 'cid$#____Permission_ViewReleaseNotes#',\n PmtAmount = 'cid$#3811511#',\n PmtLineId = 'cid$#3811512#',\n PmtMethod = 'cid$#3811513#',\n PmtState = 'cid$#3811520#',\n PmtType = 'cid$#3811521#',\n PmtStatus = 'cid$#3811522#',\n PoId = 'cid$#3678532#',\n PoDate = 'cid$#3678533#',\n POPaymentState = 'cid$#3678534#',\n Postponed = 'cid$#3678535#',\n PreSaleDate = 'cid$#____PreSaleDate#',\n Prev = 'cid$#3811523#',\n PreviousTicket = 'cid$#3811524#',\n PriceAgainst = 'cid$#3753190#',\n PriceDateFilterTitle = 'cid$#3678536#',\n PriceDateFilterChanged = 'cid$#3678537#',\n PriceDateFilterUnchanged = 'cid$#3678538#',\n PriceHitHardFloor = 'cid$#3578053#',\n PriceHitRelativeFloor = 'cid$#3578055#',\n PriceHitMaxAllowedDrop = 'cid$#3578054#',\n PriceMin = 'cid$#____PriceMin#',\n PriceP25 = 'cid$#____PriceP25#',\n PriceP50 = 'cid$#____PriceP50#',\n PriceToMarket = 'cid$#3811525#',\n PricingAgainst = 'cid$#3811526#',\n PricingSettingsListingsConflictWarning = 'cid$#3811527#',\n PrivateInventoryNotes = 'cid$#3678539#',\n PrivateSaleNotes = 'cid$#3678540#',\n PrivatePurchaseNotes = 'cid$#3678541#',\n ProceedRepayment = 'cid$#____ProceedRepayment#',\n ProceedsAmount = 'cid$#3811528#',\n Purchases_EditVendor_Details = 'cid$#____Purchases_EditVendor_Details#',\n Purchases_LockUnlockCommission_Details = 'cid$#____Purchases_LockUnlockCommission_Details#',\n Purchases_LockUnlockCommissionOwned_Details = 'cid$#____Purchases_LockUnlockCommissionOwned_Details#',\n Purchases_UpdateDeliveryType_Details = 'cid$#3811529#',\n Purchases_UpdateDeliveryTypeOwned_Details = 'cid$#3811530#',\n Purchases_UpdateCustomDeliveryType_Details = 'cid$#3811531#',\n Purchases_UpdateCustomDeliveryTypeOwned_Details = 'cid$#3811532#',\n Purchases_UpdateSeatTraits_Details = 'cid$#3811533#',\n Purchases_UpdateSeatTraitsOwned_Details = 'cid$#3811534#',\n Proceed = 'cid$#____Proceed#',\n PurchaseTag = 'cid$#3678542#',\n PutSaleListingOnHold = 'cid$#3578058#',\n Quantities = 'cid$#3752103#',\n QuantitiesFilter = 'cid$#3811535#',\n QuantitiesForcedToBottom = 'cid$#3578059#',\n Queued = 'cid$#3678543#',\n RAGDeliveryDispute = 'cid$#3578061#',\n RAGSellerFaultNoResponse = 'cid$#3578060#',\n RankPremiumTips = 'cid$#3811536#',\n RawVenueCatData = 'cid$#3811537#',\n Rear = 'cid$#3811538#',\n ReceivedDate = 'cid$#3811539#',\n Received = 'cid$#____Received#',\n Relocated = 'cid$#3678544#',\n RelocatedAndRescheduled = 'cid$#3678545#',\n RemainingSeatingOnly = 'cid$#3678546#',\n RemoveExistingTicketsOption = 'cid$#3811543#',\n RemoveFromGroup = 'cid$#3811544#',\n RemoveFromSale = 'cid$#____RemoveFromSale#',\n RemoveHoldConfirmation = 'cid$#3811545#',\n RemovePaymentReference = 'cid$#____RemovePaymentReference#',\n ReplaceAndOverrideSeatTraits = 'cid$#3811546#',\n ReplaceWith = 'cid$#3578062#',\n ReportNotAvailable = 'cid$#3811547#',\n Rescheduled = 'cid$#3678547#',\n ResetFilters = 'cid$#3678548#',\n ResetFulfillmentWarningV2 = 'cid$#3678549#',\n ResetOverride = 'cid$#3811548#',\n ResetToOriginal = 'cid$#3811549#',\n RestartExperiment = 'cid$#____RestartExperiment#',\n RestrictionOnUse = 'cid$#3811550#',\n Restrictions = 'cid$#3811551#',\n ResumeExperiment = 'cid$#3811552#',\n ResultTimeout = 'cid$#3811553#',\n ResultTimeoutDescription = 'cid$#3811554#',\n RetrySkipped = 'cid$#3811555#',\n ReuploadDocumentWarning = 'cid$#3678550#',\n RevenueSplitHurdle = 'cid$#3811556#',\n Reversed = 'cid$#3832352#',\n ReversedPenalty = 'cid$#____ReversedPenalty#',\n ReversedCharge = 'cid$#____ReversedCharge#',\n Role_FinanceAPI_Details = 'cid$#____Role_FinanceAPI_Details#',\n RowCompOverrides = 'cid$#3811557#',\n RowComps = 'cid$#3678551#',\n RowCompSettingExactMatch = 'cid$#3678552#',\n RowGroups = 'cid$#3678553#',\n RowRanges = 'cid$#3811558#',\n RowRangesInputTip = 'cid$#3811559#',\n RowsAscToDesc = 'cid$#3811560#',\n RowsDescToAsc = 'cid$#3811561#',\n RowsGroupBy = 'cid$#____RowsGroupBy#',\n SaleBasisShare = 'cid$#____SaleBasisShare#',\n SaleCharges = 'cid$#____SaleCharges#',\n SaleCredits = 'cid$#____SaleCredits#',\n SaleDateFilterTitle = 'cid$#3678554#',\n SaleDateFilterOccured = 'cid$#3678555#',\n SaleDateFilterNotOccured = 'cid$#3678556#',\n SaleDay = 'cid$#____SaleDay#',\n SaleForEditTickets = 'cid$#3678557#',\n SaleForRemovedTickets = 'cid$#3678558#',\n SaleHasMarketplaceProblemHoverText = 'cid$#____SaleHasMarketplaceProblemHoverText#',\n SaleIsFulfilledOnMarketplace = 'cid$#3578018#',\n SaleMonth = 'cid$#____SaleMonth#',\n SalePaymentConversionWarning = 'cid$#3811562#',\n SaleIsFulfilledOnMarketplace2 = 'cid$#3678559#',\n SaleReportDescription = 'cid$#____SaleReportDescription#',\n SaleTag = 'cid$#3678560#',\n SaleWeek = 'cid$#____SaleWeek#',\n SameEventsShareSameVenueConfigTitle = 'cid$#3678561#',\n SameEventsShareSameVenueConfigHeader = 'cid$#3678562#',\n SameEventsShareSameVenueConfigMessage1 = 'cid$#3678563#',\n SameEventsShareSameVenueConfigMessage2 = 'cid$#3678564#',\n SameSize = 'cid$#3578064#',\n FlatView = 'cid$#3543079#',\n Floor = 'cid$#3432354#',\n FloorMustBeLessThanCeiling = 'cid$#3261244#',\n Change = 'cid$#3172435#',\n ChangeEvent = 'cid$#3432355#',\n Classify = 'cid$#3261245#',\n ClickToViewCompsInstruction = 'cid$#3243225#',\n COD = 'cid$#3054240#',\n Calculate = 'cid$#3045422#',\n Cancel = 'cid$#2973473#',\n CancelPurchase = 'cid$#3067696#',\n CancelPurchaseDescription = 'cid$#3067697#',\n CancelTickets = 'cid$#3059982#',\n CancelVoidPurchase = 'cid$#3067698#',\n Cash = 'cid$#3054241#',\n Check = 'cid$#3054242#',\n ChooseAccount = 'cid$#3054243#',\n ChooseIncrementType = 'cid$#3172436#',\n ChoosePaymentMethodPlaceholder = 'cid$#3054244#',\n ChoosePaymentMethodTypePlaceholder = 'cid$#3054245#',\n ChooseSeatingNotes = 'cid$#3067699#',\n ChooseVendor = 'cid$#3054246#',\n City = 'cid$#3067700#',\n ClickToTakeAction = 'cid$#2992156#',\n Close = 'cid$#2988459#',\n CompListingMode = 'cid$#3261246#',\n CompListingFloor = 'cid$#3261247#',\n CompListingFloorMustBeSetError = 'cid$#3285807#',\n ConfirmETicketsIns = 'cid$#2972054#',\n ConfirmSale = 'cid$#2971947#',\n Contact = 'cid$#2971950#',\n ContentView = 'cid$#3261248#',\n Copied = 'cid$#3082869#',\n Cost = 'cid$#3037580#',\n CostAndCredits = 'cid$#3034803#',\n CostBasis = 'cid$#2981285#',\n CostPerTicket = 'cid$#3195377#',\n Country = 'cid$#3067701#',\n CreateCustomFilter = 'cid$#3110493#',\n Credit = 'cid$#3054247#',\n CreditBalance = 'cid$#3054248#',\n CreditCard = 'cid$#3054249#',\n CreditCardFee = 'cid$#3043868#',\n Currency = 'cid$#3042158#',\n CurrencyCode = 'cid$#3678565#',\n Custom = 'cid$#3042151#',\n CustomDate = 'cid$#3195378#',\n CustomDateRange = 'cid$#3013279#',\n CustomFilter = 'cid$#3110494#',\n DateAscArrow = 'cid$#3214279#',\n DateDescArrow = 'cid$#3214278#',\n DateDue = 'cid$#3034804#',\n DateIncurred = 'cid$#3043874#',\n DatePaid = 'cid$#3042371#',\n DateRangeDisplayText = 'cid$#3005344#',\n DateRangeSuggestionsTitle = 'cid$#3005345#',\n DaysPostfix = 'cid$#3214280#',\n Deactivated = 'cid$#3175841#',\n Deal = 'cid$#3285447#',\n DeallocateSale = 'cid$#3084137#',\n DeallocateSaleWarning = 'cid$#3084138#',\n DebitCard = 'cid$#3054250#',\n DebitNote = 'cid$#3054251#',\n DecreasePriceByPercent = 'cid$#3180433#',\n Default = 'cid$#3261249#',\n DefaultHideSeatNumbers = 'cid$#3214281#',\n DefaultInHandDateOffset = 'cid$#3214282#',\n DefaultSplitType = 'cid$#3214283#',\n Deleted = 'cid$#3172437#',\n DeletePurchasePaymentMethod = 'cid$#3172438#',\n DeletePurchasePaymentMethodWarning = 'cid$#3172439#',\n DeletePurchaseVendor = 'cid$#3172440#',\n DeletePurchaseVendorWarning = 'cid$#3172441#',\n DeletePurchaseVendorAccount = 'cid$#3172442#',\n DeletePurchaseVendorAccountWarning = 'cid$#3172443#',\n Delisted = 'cid$#3172444#',\n DelistedClickToRelist = 'cid$#3180434#',\n DelistingClickToCancel = 'cid$#3180435#',\n DelistingFailedClickToTryAgain = 'cid$#3180436#',\n DelistingPending = 'cid$#3172445#',\n DelistingFailed = 'cid$#3172446#',\n DeliverTicket = 'cid$#3172447#',\n DeliverToAlternativeAccount = 'cid$#3172448#',\n Delivery = 'cid$#2971940#',\n DeliveryAccount = 'cid$#3237713#',\n DeliveryCost = 'cid$#3042160#',\n DeliveryWebsite = 'cid$#3237714#',\n DetailView = 'cid$#3261250#',\n DirectOffline = 'cid$#2980716#',\n DisableThisMarketplace = 'cid$#3214284#',\n Dismiss = 'cid$#3082870#',\n Document = 'cid$#3172449#',\n DollarsInBasket = 'cid$#3678566#',\n DoTheseTicketsHaveAnyRestrictions = 'cid$#3180437#',\n DoYouWorkForEventOrganizerOrViagogo = 'cid$#3180438#',\n DragNAssignToSeats = 'cid$#2975414#',\n DragNDropFiles = 'cid$#2972051#',\n Due = 'cid$#3041862#',\n DuplicateBarcode = 'cid$#2972952#',\n DuplicateSeat = 'cid$#3042159#',\n DuplicateUrl = 'cid$#2972957#',\n ECheck = 'cid$#3054252#',\n EditOfflineSale = 'cid$#3237715#',\n EmailDetails = 'cid$#3261251#',\n EndDateTime = 'cid$#3678567#',\n Entity = 'cid$#3180439#',\n ETicket = 'cid$#2976483#',\n ETicketUrl = 'cid$#3042152#',\n EachBarcodeOnNewLine = 'cid$#2975371#',\n Economics = 'cid$#2972019#',\n Edit = 'cid$#3043870#',\n EditCostCredit = 'cid$#3054253#',\n EditCustomFilter = 'cid$#3110495#',\n EditPayment = 'cid$#3041863#',\n EditPaymentMethod = 'cid$#3054254#',\n EditPurchaseDetails = 'cid$#3067702#',\n EditPurchaseVendor = 'cid$#3054255#',\n EditPurchaseVendorAccount = 'cid$#3054256#',\n EditTicketNotes = 'cid$#3059983#',\n Email = 'cid$#3037596#',\n Employee = 'cid$#3054257#',\n EmployeeManagement = 'cid$#3014677#',\n EmptyContent = '' /* Used for useContent with an optional content-id */,\n EndDateBeforeStartDate = 'cid$#3004077#',\n EnterBarcodesIns = 'cid$#2972950#',\n EnterTransferIdForPurchase = 'cid$#3268818#',\n EnterPurchaseOrderIdFromVendor = 'cid$#3042156#',\n Error_BadGatewayError_GenericMessage = 'cid$#3084140#',\n Error_BadGatewayError_Header = 'cid$#3084139#',\n Error_BadRequest_GenericMessage = 'cid$#3082872#',\n Error_BadRequest_Header = 'cid$#3082871#',\n Error_Forbidden_GenericMessage = 'cid$#3082874#',\n Error_Forbidden_Header = 'cid$#3082873#',\n Error_InternalServerError_GenericMessage = 'cid$#3082876#',\n Error_InternalServerError_Header = 'cid$#3082875#',\n Error_NotFound_GenericMessage = 'cid$#3082882#',\n Error_NotFound_Header = 'cid$#3082881#',\n Error_NotImplemented_GenericMessage = 'cid$#3089841#',\n Error_NotImplemented_Header = 'cid$#3089840#',\n Error_RequestTimeout_GenericMessage = 'cid$#3082880#',\n Error_RequestTimeout_Header = 'cid$#3082879#',\n Error_Unauthorized_GenericMessage = 'cid$#3082878#',\n Error_Unauthorized_Header = 'cid$#3082877#',\n Event = 'cid$#3172450#',\n EventDate = 'cid$#3067703#',\n EventDateAsc = 'cid$#3185866#',\n EventDateDesc = 'cid$#3185867#',\n EventName = 'cid$#3067704#',\n Events = 'cid$#2975379#',\n EventTime = 'cid$#3180440#',\n EventVisitors = 'cid$#3678568#',\n Everyone = 'cid$#3038733#',\n ExchangeTickets = 'cid$#3059984#',\n ExpectedValue = 'cid$#3040231#',\n ExpectedValuePerTicket = 'cid$#3195379#',\n ExpireHold = 'cid$#3172451#',\n ExpireHoldWarning = 'cid$#3172452#',\n Export = 'cid$#3214285#',\n FaceValue = 'cid$#3172453#',\n FailedAndRequiresSellerAction = 'cid$#3201693#',\n FailedWithNonRetryableError = 'cid$#3201694#',\n FailedWithRetryableError = 'cid$#3201695#',\n FailToLoadListContent = 'cid$#2987014#',\n Failed = 'cid$#3041864#',\n FailedToStartupTheApp = 'cid$#2987015#',\n Failures = 'cid$#3214286#',\n FarthestEvent = 'cid$#3185868#',\n Filters = 'cid$#3110496#',\n FinalQuestionsOnYourTickets = 'cid$#3180441#',\n Finance = 'cid$#3110497#',\n Finish = 'cid$#3180442#',\n FloorRelativeToUnitCost = 'cid$#3317880#',\n Format = 'cid$#3408177#',\n FormulaBuilder = 'cid$#3361784#',\n FormulaBuilderInfoLine1 = 'cid$#3511858#',\n FormulaBuilderInfoLine2 = 'cid$#3511859#',\n FormulaBuilderInfoLine3 = 'cid$#3511860#',\n FormulaBuilderInfoLine4 = 'cid$#3511861#',\n FormulaBuilderInfoLine5 = 'cid$#3511862#',\n FormulaBuilderInfoLine6 = 'cid$#3511863#',\n ForTheEvent = 'cid$#3361786#',\n FreeEvent = 'cid$#3511864#',\n From = 'cid$#3172454#',\n FromDate = 'cid$#2973456#',\n Fulfill = 'cid$#2988323#',\n FulfillActionNotAvailable = 'cid$#2988324#',\n FulfilledBy = 'cid$#3453431#',\n Fulfiller = 'cid$#3344392#',\n FulfillmentDate = 'cid$#3511866#',\n FulfillmentRestrictions = 'cid$#3511867#',\n FulfillmentState = 'cid$#3453432#',\n FullEventInfo = 'cid$#3543080#',\n History = 'cid$#3543081#',\n IgnoreTheFirst = 'cid$#3511868#',\n InCheckout = 'cid$#3678569#',\n IncorrectPerfomerOrGrouping = 'cid$#3511869#',\n IncreaseDecreasePrice = 'cid$#3578023#',\n IncreasePrice = 'cid$#3543082#',\n InsightsView = 'cid$#3578024#',\n InvalidBaseRow = 'cid$#3543083#',\n IsDuplicate = 'cid$#3543084#',\n IsPricedByMarketplace = 'cid$#3578025#',\n ListedAndSold = 'cid$#3543086#',\n ListView = 'cid$#3578028#',\n KeepCurrentPurchaser = 'cid$#3543087#',\n MembersOnThisTeam = 'cid$#3543088#',\n MergeListings_ListingMismatchWarning = 'cid$#3543090#',\n MinQty = 'cid$#3543091#',\n MinQuantity = 'cid$#3543092#',\n MoreThan = 'cid$#3511870#',\n NewAppVersion = 'cid$#3543093#',\n NewHeatMap = 'cid$#3543094#',\n NotEnoughInformationToCreate = 'cid$#3511871#',\n NotFoundOnPrimary = 'cid$#3511872#',\n NotMappedYet = 'cid$#3543095#',\n NumberOfBuckets = 'cid$#3543096#',\n OfMyListingQuality = 'cid$#3578041#',\n OnHoldBroadcastDisabled = 'cid$#3543097#',\n PandL = 'cid$#3543098#',\n PaymentAmountReceived = 'cid$#3578049#',\n PaymentCurrency = 'cid$#3578050#',\n PaymentReceived = 'cid$#3543099#',\n PaymentReference = 'cid$#3543100#',\n Override = 'cid$#3578047#',\n OverrideDate = 'cid$#3578048#',\n PendingPartnerIntegrations = 'cid$#3511873#',\n IncorrectCountryCode = 'cid$#3511874#',\n Members = 'cid$#3511875#',\n Permission_UpdateBuyerCommission = 'cid$#3543101#',\n Permission_UpdateBuyerCommissionOwned = 'cid$#3543102#',\n Permission_ConfirmRejectOnAssignedSales = 'cid$#3543103#',\n Permission_ConfirmRejectSale = 'cid$#3543104#',\n Permission_ConfirmRejectSaleOnPricedListings = 'cid$#3543105#',\n Permission_ConfirmRejectSalesFromPurchasedListings = 'cid$#3543106#',\n Permission_CreatePO = 'cid$#3543107#',\n Permission_FulfillSale = 'cid$#3543108#',\n Permission_FulfillSaleOnPricedListings = 'cid$#3543109#',\n Permission_FulfillSalesFromPurchasedListings = 'cid$#3543110#',\n Permission_ManageCreatedPlaceholderListings = 'cid$#3543111#',\n Permission_ManageOfflineSalesOnPurchasedListings = 'cid$#3543112#',\n Permission_ManagePlaceholderListings = 'cid$#3543113#',\n Permission_Predeliver = 'cid$#3543114#',\n Permission_PredeliverOnAssignedListings = 'cid$#3543115#',\n Permission_BroadcastUnbroadcastOnAssignedListings = 'cid$#3543116#',\n Permission_PredeliverPurchasedListings = 'cid$#3543117#',\n Permission_SetPriceOnAssignedListings = 'cid$#3543118#',\n Permission_UpdateCreatedReports = 'cid$#3543119#',\n Permission_UpdateInfoFromPurchasedListings = 'cid$#3543120#',\n Permission_UpdateInfoOnAssignedListings = 'cid$#3543121#',\n Permission_UpdateInfoOnAssignedSales = 'cid$#3543122#',\n Permission_UpdateInfoOnPricedListings = 'cid$#3543123#',\n Permission_UpdateInfoOnPurchasedListings = 'cid$#3543124#',\n Permission_UpdateTagsFromPricedListings = 'cid$#3543125#',\n Permission_UpdateTagsFromPurchasedListings = 'cid$#3543126#',\n Permission_UpdateTagsOnAssignedListings = 'cid$#3543127#',\n Permission_SetPriceOnPurchasedListings = 'cid$#3543128#',\n Permission_UpdateTagsOnAssignedSales = 'cid$#3543129#',\n Permission_UpdateTagsOnOwnedPurchasedOrder = 'cid$#3543130#',\n Permission_UpdateTagsOnPurchasedListings = 'cid$#3543132#',\n Permission_FulfillSalesOnAssignedSales = 'cid$#3543133#',\n Permission_ViewAssignedListings = 'cid$#3543134#',\n Permission_ViewAssignedSales = 'cid$#3543138#',\n Permission_ViewFulfillmentArtifactsOnAssignedListings = 'cid$#3543139#',\n Permission_ViewFulfillmentArtifactsOnAssignedSales = 'cid$#3543140#',\n Permission_ViewFulfillmentArtifactsOnPricedListings = 'cid$#3543141#',\n Permission_ViewFulfillmentArtifactsOnPurchasedListings = 'cid$#3543142#',\n Permission_ViewFulfillmentArtifactsOnSaleFromPricedListings = 'cid$#3543143#',\n Permission_ViewFulfillmentArtifactsOnSaleFromPurchasedListings = 'cid$#3543144#',\n Permission_ViewGlobalReports = 'cid$#3578091#',\n Permission_ViewOwnedPurchasedOrders = 'cid$#3543145#',\n Permission_ViewSaleFromPricedListings = 'cid$#3543146#',\n Permission_ViewPurchasedListings = 'cid$#3543147#',\n Permission_ViewRecentListings = 'cid$#3543148#',\n Permission_ViewRecentSales = 'cid$#3543149#',\n Permission_ViewSaleOnPurchasedListings = 'cid$#3543150#',\n Permission_Webhook_View = 'cid$#3543151#',\n Permission_Webhook_Create = 'cid$#3543152#',\n Permission_Webhook_Edit = 'cid$#3543153#',\n Placeholder = 'cid$#3511876#',\n PlaceholderPurchaseMessage = 'cid$#3511877#',\n POCreatedBy = 'cid$#3543154#',\n Priced = 'cid$#3543155#',\n ProvisionallySourced = 'cid$#3543156#',\n Purchases_UpdateBuyerCommissionOwned_Details = 'cid$#3543157#',\n Purchases_UpdateBuyerCommission_Details = 'cid$#3543158#',\n PutOnHold = 'cid$#3543159#',\n PutOnHoldAll = 'cid$#3543160#',\n PutOnHoldSelected = 'cid$#3543161#',\n RankPremium = 'cid$#3543162#',\n Reason = 'cid$#3543163#',\n RefreshNow = 'cid$#3543164#',\n RejectAllocation = 'cid$#3543165#',\n RejectAllocationWarning = 'cid$#3543166#',\n RejectionReasonInfoText1 = 'cid$#3543167#',\n RejectionReasonInfoText2 = 'cid$#3543168#',\n RelativeRankPremium = 'cid$#3543169#',\n RelativeTo = 'cid$#3543170#',\n RemoveHold = 'cid$#3543171#',\n RemovePredelivery = 'cid$#3543172#',\n RemoveTagValue = 'cid$#3543173#',\n RemoveTagValues = 'cid$#3543174#',\n ReportHistory = 'cid$#3543175#',\n SameOverrideExists = 'cid$#3578063#',\n Reports_ViewGlobalReports_Details = 'cid$#3578092#',\n SameSection = 'cid$#3543176#',\n SameZoneOrBetter = 'cid$#3811563#',\n SaveCopy = 'cid$#____SaveCopy#',\n Saved = 'cid$#____Saved#',\n SaveMapAs = 'cid$#3811564#',\n SaveSearch = 'cid$#____SaveSearch#',\n SaveSettingsToViewUpdatedComps = 'cid$#3543177#',\n SearchAndReplace = 'cid$#3578066#',\n SearchEventOrLookupId = 'cid$#3811565#',\n SearchFor = 'cid$#3578067#',\n SearchPurchases = 'cid$#____SearchPurchases#',\n SearchInventory = 'cid$#____SearchInventory#',\n SearchSales = 'cid$#____SearchSales#',\n SeatingMapped = 'cid$#3678570#',\n SeatRange = 'cid$#____SeatRange#',\n SectionClearingPrices = 'cid$#3678571#',\n SectionGroups = 'cid$#3678572#',\n SectionsAscToDesc = 'cid$#3811566#',\n SectionsDescToAsc = 'cid$#3811567#',\n SectionUnmapped = 'cid$#3811568#',\n SelectCountry = 'cid$#3811569#',\n SelectCity = 'cid$#3811570#',\n SelectedFrom = 'cid$#3811571#',\n SelectGroupToMoveTo = 'cid$#3811572#',\n SelectItemsForBulkEdit = 'cid$#3543178#',\n SelectQuantities = 'cid$#3811573#',\n SelectStateProvince = 'cid$#3811574#',\n SelectTag = 'cid$#3543179#',\n SellerError = 'cid$#3578068#',\n SellerFault = 'cid$#____SellerFault#',\n SellerRelationship = 'cid$#3578069#',\n SetActiveInGroup = 'cid$#3678573#',\n SetAFloor = 'cid$#3811575#',\n SetAPriceFloor = 'cid$#3811576#',\n SetDefaultDeliveryForNewPurchases = 'cid$#3811577#',\n SetDeliveryStrategy = 'cid$#3678574#',\n SetMapAsDefault = 'cid$#3811578#',\n SetMinimumGroupSize = 'cid$#3811579#',\n SetPriceFloor = 'cid$#____SetPriceFloor#',\n SetTicketTypePriority = 'cid$#3543180#',\n ShippingRefund = 'cid$#3578070#',\n ShowDetailedSettings = 'cid$#3543181#',\n Shown = 'cid$#____Shown#',\n ShownQty = 'cid$#3678575#',\n ShowSections = 'cid$#3811580#',\n ShowSectionsInfo = 'cid$#3811581#',\n ShuffleRanks = 'cid$#3543182#',\n SearchEvent = 'cid$#3543183#',\n SaveFilter = 'cid$#3578065#',\n SelectFilterValue = 'cid$#3578017#',\n Sides = 'cid$#3811582#',\n SideTier1 = 'cid$#3811583#',\n SideTier2 = 'cid$#3811584#',\n SignUpBannerTitle = 'cid$#3678576#',\n SignUpBannerSubTitle = 'cid$#3678577#',\n SignUpWelcomeSubtitle = 'cid$#3678578#',\n SimilarEventsDefaults = 'cid$#3811585#',\n SimulateWebsiteDiscount = 'cid$#3578071#',\n Skipped = 'cid$#3578072#',\n SOR = 'cid$#3811586#',\n Spacing = 'cid$#3511878#',\n SplitListing_AllowSplitSoldTickets = 'cid$#3811587#',\n SplitListing_DoNotAllowSplittingSoldTickets = 'cid$#3811588#',\n SplitZonesBy = 'cid$#3811589#',\n SportsOrConcertsWith360 = 'cid$#3678579#',\n SponsoredListings = 'cid$#3678580#',\n StopExperiment = 'cid$#3811590#',\n StubHubListings = 'cid$#3543184#',\n StubhubRecommended = 'cid$#3543185#',\n Submit = 'cid$#3678581#',\n Supply = 'cid$#3811591#',\n SuppressFor1HourV2 = 'cid$#3678582#',\n SyncFailedClickToRelist = 'cid$#3578074#',\n SyncFailedClickToDelist = 'cid$#3578073#',\n TableEditor = 'cid$#____TableEditor#',\n TagNameNotAllowed = 'cid$#3678583#',\n TargetPercentage = 'cid$#3678584#',\n TaxRefund = 'cid$#3578075#',\n Team = 'cid$#3543186#',\n TeamName = 'cid$#3511879#',\n Teams = 'cid$#3511880#',\n ProvisionalAllocation = 'cid$#3511881#',\n ThenBy = 'cid$#3543187#',\n ThenDefaultListingsTo = 'cid$#3811592#',\n ThenDefaultThePurchaseTo = 'cid$#3811593#',\n TheNextCheapest = 'cid$#3511882#',\n ThenSplitGroupsBy = 'cid$#3811594#',\n ThisFilterWillChangeMetrics = 'cid$#____ThisFilterWillChangeMetrics#',\n TicketCost = 'cid$#____TicketCost#',\n TicketDelivery = 'cid$#3678585#',\n TicketGroupBulkEditPurchaseWarning = 'cid$#3678586#',\n TicketId = 'cid$#3543188#',\n TicketGroupId = 'cid$#3543189#',\n TicketPrices = 'cid$#3811595#',\n TicketQty = 'cid$#____TicketQty#',\n TicketQuantity = 'cid$#3811596#',\n TicketsAllocated = 'cid$#3811597#',\n TicketsSoldAs = 'cid$#3811598#',\n TimeView = 'cid$#3678587#',\n Timezone = 'cid$#3578077#',\n TimezoneDefaultOption = 'cid$#3577972#',\n TimezoneDescription = 'cid$#3577959#',\n ToggleSelectionMode = 'cid$#3811599#',\n TooManyResultPerformanceWarning = 'cid$#3543190#',\n TotalCostOfUnsoldTickets = 'cid$#3578078#',\n TotalSplitInfo = 'cid$#3811600#',\n TurnOnAutoFulfillPrompt = 'cid$#3811601#',\n TypeYourNoteHere = 'cid$#3678588#',\n UnableToFindSale = 'cid$#____UnableToFindSale#',\n UndoCancel = 'cid$#3578081#',\n Ungrouped = 'cid$#3811602#',\n Unknown = 'cid$#3811603#',\n UnknownError = 'cid$#3811604#',\n UnexpectedErrorOccured = 'cid$#3811605#',\n UnlinkSale = 'cid$#____UnlinkSale#',\n UnlinkSaleAndPayment = 'cid$#____UnlinkSaleAndPayment#',\n UnlockCommission = 'cid$#3811606#',\n Unordered = 'cid$#3678589#',\n Unsold = 'cid$#3578083#',\n UnsoldEvents = 'cid$#3678590#',\n UnsoldProceeds = 'cid$#3578084#',\n UngroupListings = 'cid$#3543191#',\n UnsoldQuantitiesLowToHigh = 'cid$#3811607#',\n UnsoldQuantitiesHighToLow = 'cid$#3811608#',\n UnwasteTickets = 'cid$#____UnwasteTickets#',\n UnwasteTicketsConfirmation = 'cid$#____UnwasteTicketsConfirmation#',\n Update = 'cid$#3543192#',\n UpdateAllTicketGroupsUnderAssociatedPurchaseOrders = 'cid$#3811609#',\n UpdateAutoFulfill = 'cid$#3678591#',\n UpdateBuyerCommission = 'cid$#3543193#',\n UpdatedBy = 'cid$#3811610#',\n UpdateDeal = 'cid$#3811611#',\n UpdateDeliveryType = 'cid$#3678592#',\n UpdateDeliveryTypeForPlaceholders = 'cid$#3811612#',\n UpdateEventIdWarning = 'cid$#3543194#',\n UpdateExistingListings = 'cid$#3811613#',\n UpdateExistingPurchasesAndListings = 'cid$#3811614#',\n UpdateFulfillmentSettings = 'cid$#3678593#',\n UpdateFulfillmentSettingsMessage = 'cid$#3678594#',\n UpdateExistingListingsAndAssociatedSales = 'cid$#3678595#',\n UpdateFulfillmentSettingsMessagePurchase = 'cid$#3811615#',\n UpdateMarketplacePrices = 'cid$#3678605#',\n UpdateMarketplaceSeating = 'cid$#3543195#',\n UpdateMode = 'cid$#3578085#',\n UpdatePriceEvery = 'cid$#3578086#',\n UpdatePriceFloorCeiling = 'cid$#3578087#',\n UpdatePrivateNotes = 'cid$#3578088#',\n UpdatePurchaseCurrency = 'cid$#3811616#',\n UpdatePurchasedBy = 'cid$#3811617#',\n UpdatePurchaseWithMergedListing = 'cid$#3678606#',\n UpdatePurchaseWithMergedListingWarning = 'cid$#3409266#',\n UpdateAssociatedSales = 'cid$#3678607#',\n UpdateSeatTraits = 'cid$#3678608#',\n UpdateSeatTraitsForPlaceholders = 'cid$#3811618#',\n UpdateSelectedTicketGroupsOnly = 'cid$#3811619#',\n UpdateTagValue = 'cid$#3543196#',\n UpdateTagValues = 'cid$#3543197#',\n UpdateTagValuesSelected = 'cid$#3543198#',\n UpdateTagValueWarning = 'cid$#3543199#',\n UploadPredelivery = 'cid$#3678609#',\n UploadSeatScoreModelInfo = 'cid$#3543200#',\n UseAbsoluteFloors = 'cid$#3811620#',\n UseAsTemplate = 'cid$#3543201#',\n UserAlreadySelected = 'cid$#____UserAlreadySelected#',\n UseZoneMap = 'cid$#3811621#',\n UseZoneMapDisabledTip = 'cid$#____UseZoneMapDisabledTip#',\n Values = 'cid$#____Values#',\n Velocity = 'cid$#3678610#',\n VelocityHours = 'cid$#3678611#',\n VendorGroup = 'cid$#3811622#',\n VendorManagement = 'cid$#3811623#',\n VendorPayments = 'cid$#3811624#',\n VenueConfiguration = 'cid$#3678612#',\n VenueGeometry = 'cid$#3678613#',\n VenueRowData = 'cid$#3811625#',\n VenueSpecific = 'cid$#3678614#',\n VersionMismatch = 'cid$#3511883#',\n VersionMismatchExplanation = 'cid$#3511884#',\n HideAdvancedSettings = 'cid$#3543202#',\n MissingHeightData = 'cid$#3543203#',\n MissingDistanceData = 'cid$#3543204#',\n MissingAngleData = 'cid$#3543205#',\n RequestState = 'cid$#3512118#',\n SeeAdvancedSettings = 'cid$#3543206#',\n FulfillOnStubHub = 'cid$#3110498#',\n FulfillOnViagogo = 'cid$#3110499#',\n FulfilledExternalMarketplace = 'cid$#2985799#',\n Fulfillment = 'cid$#3678615#',\n FulfillmentFailed = 'cid$#2975365#',\n Fulfilled = 'cid$#3453433#',\n FullSeating = 'cid$#3373005#',\n FullySold = 'cid$#3180443#',\n FutureEvents = 'cid$#2978865#',\n General = 'cid$#3511885#',\n GeneralAdmissionEvent = 'cid$#3243220#',\n GeneralAdmissionMessage = 'cid$#3243221#',\n GeneralMessage = 'cid$#3344393#',\n GeneralSettingsAll = 'cid$#3453434#',\n GeneralSettingsSelected = 'cid$#3453435#',\n GenericActionFailure = 'cid$#2987016#',\n Genre = 'cid$#3396831#',\n GoBack = 'cid$#3261252#',\n GoTo = 'cid$#3082883#',\n GoToMessageThread = 'cid$#3389347#',\n Group = 'cid$#3396832#',\n GroupBy = 'cid$#3389348#',\n GroupingDefault = 'cid$#3361787#',\n GroupingTemplate = 'cid$#3396833#',\n GroupListings = 'cid$#3317881#',\n HasBroadcastError = 'cid$#3172455#',\n HasUnsoldTickets = 'cid$#3172456#',\n HeatMap = 'cid$#3269690#',\n HeatMapInstruction1 = 'cid$#3269691#',\n HeatMapInstruction2 = 'cid$#3269692#',\n Height = 'cid$#3288922#',\n HeldUntil = 'cid$#3511886#',\n HeldUntilDate = 'cid$#3511887#',\n HiddenDueToFilter = 'cid$#3317882#',\n HideSeats = 'cid$#3038741#',\n High = 'cid$#3288923#',\n Highest = 'cid$#3389349#',\n HistoricalPricing = 'cid$#3389350#',\n Hold = 'cid$#3110500#',\n HoldExpiration = 'cid$#3172457#',\n HoldId = 'cid$#3453436#',\n HoldNote = 'cid$#3511888#',\n Home = 'cid$#2983461#',\n HoverZoomETicketIns = 'cid$#2975352#',\n HoverZoomQRCodeIns = 'cid$#3511889#',\n HowDidYouPay = 'cid$#3042372#',\n HowItWorks = 'cid$#3269693#',\n Hyperlink = 'cid$#3432356#',\n Icon = 'cid$#3389351#',\n Id = 'cid$#3172458#',\n Importance = 'cid$#3288924#',\n In = 'cid$#3396834#',\n InactiveListings = 'cid$#3344394#',\n Inbox = 'cid$#3317883#',\n IncludeInColumns = 'cid$#3396835#',\n IncludeInReport = 'cid$#3396836#',\n InclusiveOption = 'cid$#3317884#',\n InComparableZones = 'cid$#3772730#',\n Increase = 'cid$#3361788#',\n IncreaseDecreasePriceByPercentAllVisible = 'cid$#3408179#',\n IncreasePriceByPercent = 'cid$#3180444#',\n IncreasePriceByPercentAll = 'cid$#3344395#',\n IncreasePriceByPercentAllVisible = 'cid$#3389352#',\n IncreasePriceByPercentSelected = 'cid$#3344396#',\n IncreasePriceForAll = 'cid$#3511891#',\n IncreasePriceForSelected = 'cid$#3511892#',\n Ineligible = 'cid$#3453437#',\n Info = 'cid$#3408180#',\n InHandDate = 'cid$#3195380#',\n InHandDateMustBeBeforeEventDate = 'cid$#3237716#',\n Inherit = 'cid$#3361789#',\n InSection = 'cid$#3361790#',\n InMyGroup = 'cid$#3361791#',\n Insert = 'cid$#3361792#',\n InsufficientComparables = 'cid$#3291918#',\n Integer = 'cid$#3373006#',\n InTransit = 'cid$#3453438#',\n InUse = 'cid$#3408181#',\n InvalidFormula = 'cid$#3361793#',\n Inventory_AddSeatSaver_Details = 'cid$#3511893#',\n Inventory_AddTagType_Details = 'cid$#3511894#',\n Inventory_BroadcastUnbroadcast_Details = 'cid$#3511895#',\n Inventory_BroadcastUnbroadcastOnIsPricerOf_Details = 'cid$#3511896#',\n Inventory_BroadcastUnbroadcastOnPurchasedBy_Details = 'cid$#3511897#',\n Inventory_EditPricing_Details = 'cid$#3511898#',\n Inventory_ManageSeatSaver_Details = 'cid$#3511899#',\n Inventory_ManageSeatSaverCreatedBy_Details = 'cid$#3511900#',\n Inventory_Predelivery_Details = 'cid$#3511901#',\n Inventory_PredeliveryOnIsPricerOf_Details = 'cid$#3511902#',\n Inventory_PredeliveryOnPurchasedBy_Details = 'cid$#3511903#',\n Inventory_SetPrice_Details = 'cid$#3511904#',\n Inventory_SetPriceOnIsPricerOf_Details = 'cid$#3511905#',\n Inventory_SetPriceOnPurchasedBy_Details = 'cid$#3511906#',\n Inventory_UpdateListingInfo_Details = 'cid$#3511907#',\n Inventory_UpdateListingInfoOnIsPricerOf_Details = 'cid$#3511908#',\n Inventory_UpdateListingInfoOnPurchasedBy_Details = 'cid$#3511909#',\n Inventory_UpdateTags_Details = 'cid$#3511910#',\n Inventory_UpdateTagsOnIsPricerOf_Details = 'cid$#3511911#',\n Inventory_UpdateTagsOnPurchasedBy_Details = 'cid$#3511912#',\n Inventory_ViewAll_Details = 'cid$#3511913#',\n Inventory_ViewAllMarketplaceAttributes_Details = 'cid$#3511914#',\n Inventory_ViewExternalMarketplaceAttributes_Details = 'cid$#3511915#',\n Inventory_ViewFulfillmentArtifacts_Details = 'cid$#3511916#',\n Inventory_ViewFulfillmentArtifactsOnIsPricerOf_Details = 'cid$#3511917#',\n Inventory_ViewFulfillmentArtifactsOnPurchasedBy_Details = 'cid$#3511918#',\n Inventory_ViewListingOnIsPricerOf_Details = 'cid$#3511919#',\n Inventory_ViewListingsOnPurchasedBy_Details = 'cid$#3511920#',\n Inventory_ViewRecent_Details = 'cid$#3511921#',\n Inventory_ViewRecentFromExternalMarketplace_Details = 'cid$#3511922#',\n Invited = 'cid$#3373007#',\n InZone = 'cid$#3361794#',\n IPaidFace = 'cid$#3037581#',\n IgnoreSoldTickets = 'cid$#3059985#',\n ImPricing = 'cid$#3089842#',\n Impersonate = 'cid$#3024378#',\n InApp = 'cid$#3054265#',\n InHand = 'cid$#2971933#',\n InHandDaysBeforeEvent = 'cid$#3263674#',\n InOneDay = 'cid$#2993454#',\n IncompatibleForMergingWithSelectedListings = 'cid$#3067705#',\n InvalidEndDate = 'cid$#3004079#',\n InvalidStartDate = 'cid$#3004078#',\n InvalidUrl = 'cid$#2972956#',\n Inventory = 'cid$#2972941#',\n IsGlobal = 'cid$#3172459#',\n ItemName = 'cid$#3453439#',\n ItemsPerPage = 'cid$#3396837#',\n IWorkForViagogo = 'cid$#3180445#',\n IWorkForEventOrganizer = 'cid$#3180446#',\n IsThisASpeculativeListing = 'cid$#3180447#',\n Json = 'cid$#3373008#',\n Junk = 'cid$#3261253#',\n JustNow = 'cid$#3396838#',\n Key = 'cid$#3373009#',\n Language = 'cid$#3408182#',\n Last1Hour = 'cid$#3678616#',\n Last30Days = 'cid$#3110502#',\n LastPriceUpdatedDate = 'cid$#3361795#',\n LastSaleDates = 'cid$#3511923#',\n LastUpdatedOn = 'cid$#3511924#',\n LastWeek = 'cid$#3110501#',\n LastYear = 'cid$#3037592#',\n LeastRecent = 'cid$#3172460#',\n LeftToSell = 'cid$#3185871#',\n LessSales = 'cid$#3701362#',\n LiftPercentage = 'cid$#3261254#',\n Light = 'cid$#3408183#',\n Link = 'cid$#3344397#',\n LinkCopied = 'cid$#3172461#',\n LinkHasBeenCopiedToClipboard = 'cid$#3172462#',\n List = 'cid$#3034669#',\n /**\n * @deprecated Unused\n */\n ListAndAllInPriceError = 'cid$#3050639#',\n Listed = 'cid$#3172463#',\n ListedAverageTicketPrice = 'cid$#3389353#',\n ListedQty = 'cid$#3261255#',\n ListedATP = 'cid$#3261256#',\n ListedQuantity = 'cid$#3453440#',\n ListedToViagogoSuccessfully = 'cid$#3172464#',\n Listing = 'cid$#3041868#',\n ListingConfirmation = 'cid$#3172465#',\n ListedClickToDelist = 'cid$#3180448#',\n ListingClickToCancel = 'cid$#3180450#',\n ListingFailed = 'cid$#3172466#',\n ListingFailedClickToTryAgain = 'cid$#3180449#',\n ListingFullSoldNoActionAvailable = 'cid$#3180451#',\n ListingId = 'cid$#3038734#',\n ListingNumberUsedRequired = 'cid$#3059986#',\n ListingPending = 'cid$#3172467#',\n Listings = 'cid$#3037582#',\n ListingSettings = 'cid$#3453441#',\n ListingSettingsAllVisible = 'cid$#3453442#',\n /**\n * @deprecated Use `ContentId.Proceeds`\n */\n ListPrice = 'cid$#3389354#',\n /**\n * @deprecated Unused\n */\n ListPriceAutoCalculationInfo = 'cid$#3180452#',\n ListPriceLessThanPriceFloorWarning = 'cid$#3217859#',\n /**\n * @deprecated Use `ContentId.ProceedsPerTicket`\n */\n ListPricePerTicket = 'cid$#3389355#',\n Location = 'cid$#3511925#',\n Login = 'cid$#2972942#',\n Logout = 'cid$#2972943#',\n LookupByListingId = 'cid$#3037588#',\n LookupByOrderId = 'cid$#3037589#',\n LookupBySaleId = 'cid$#2971992#',\n Low = 'cid$#3288925#',\n Lowest = 'cid$#3389356#',\n ManualPriceWarning = 'cid$#3373010#',\n ManualPriceDisableAutoPricingWarning = 'cid$#3373011#',\n ManualPriceAdjustFloorWarning = 'cid$#3373012#',\n ManualPriceAdjustCeilingWarning = 'cid$#3373013#',\n Mapped = 'cid$#3038735#',\n MappedEventId = 'cid$#3361796#',\n MappedTo = 'cid$#2975417#',\n MapUnavailable = 'cid$#3261257#',\n Margin = 'cid$#2973459#',\n MarkAsPurchase = 'cid$#3344398#',\n MarkAsPrivate = 'cid$#3344399#',\n MarkAsJunk = 'cid$#3344400#',\n MarkAsSale = 'cid$#3344401#',\n MarkAsTransfer = 'cid$#3361797#',\n MarketListings = 'cid$#3269694#',\n Marketplace = 'cid$#3389357#',\n MarketplaceEnableConfirmMessage = 'cid$#3678617#',\n MarketplaceDisableConfirmMessage = 'cid$#3678618#',\n MarketplacePaymentTerms = 'cid$#3511926#',\n MarketplaceSeatingForAll = 'cid$#3389358#',\n MarketplaceInhandDate = 'cid$#3172468#',\n MarketplaceSeatingForAllVisible = 'cid$#3432357#',\n MarketplaceSeatingForSelected = 'cid$#3396839#',\n MarketplaceVisibility = 'cid$#3511927#',\n MarketPrice = 'cid$#3389359#',\n Markup = 'cid$#3214287#',\n Max = 'cid$#3678619#',\n MaxDiscountInputPrompt1 = 'cid$#3288926#',\n MaxDiscountInputPrompt2 = 'cid$#3288927#',\n MaxDiscountInputPrompt3 = 'cid$#3288928#',\n MaxHoldDuration = 'cid$#3689889#',\n MaxHoldDurationUnit = 'cid$#3689890#',\n MaxValueLengthExceeded = 'cid$#3373014#',\n Median = 'cid$#3389360#',\n MemberCard = 'cid$#3054267#',\n Merchant = 'cid$#2972947#',\n Merge = 'cid$#3038742#',\n MergeListings = 'cid$#3067706#',\n MergeListings_DeliveryDifference = 'cid$#3067709#',\n MergeListings_GroupedListings = 'cid$#3317885#',\n MergeListings_RowDifference = 'cid$#3067708#',\n MergeListings_SectionDifference = 'cid$#3067707#',\n Merges = 'cid$#3453443#',\n MergeSelected = 'cid$#3453444#',\n MergeSuggested = 'cid$#3453445#',\n Messages = 'cid$#3172469#',\n Metrics = 'cid$#3389361#',\n MetricView = 'cid$#3269695#',\n MicrosoftExcelExt = 'cid$#3511928#',\n Min = 'cid$#3678620#',\n MinCompListingCount = 'cid$#3389362#',\n MissingRowDataWarning = 'cid$#3453447#',\n MissingSeatScore = 'cid$#3361798#',\n MissingSectionFilter = 'cid$#3453448#',\n MissingUnitCost = 'cid$#3361799#',\n MissingZone = 'cid$#3361800#',\n MLB = 'cid$#3511929#',\n MoneyOrder = 'cid$#3054258#',\n Month = 'cid$#3396840#',\n MoreSales = 'cid$#3701363#',\n MostRecent = 'cid$#3172470#',\n MultiplePayments = 'cid$#3034805#',\n MultipleSelections = 'cid$#3067720#',\n MyAccount = 'cid$#2972944#',\n MyListings = 'cid$#3802263#',\n MyTicketsHaveRowsAndSeats = 'cid$#2972044#',\n NA = 'cid$#2975887#',\n NameColumnPlaceholder = 'cid$#3361801#',\n Near = 'cid$#3288929#',\n NearestEvent = 'cid$#3185869#',\n NeverShareYourPasswordWithAnyone = 'cid$#3408184#',\n NewFeature = 'cid$#3432358#',\n NewGroup = 'cid$#3361802#',\n NewModel = 'cid$#3317886#',\n NewOrder = 'cid$#3261258#',\n NewRole = 'cid$#3511930#',\n NewRow = 'cid$#3317887#',\n NewSale = 'cid$#3344402#',\n NewSales = 'cid$#3214289#',\n NewUser = 'cid$#3373015#',\n NewVendor = 'cid$#3396841#',\n Next2Weeks = 'cid$#3172471#',\n NextWeek = 'cid$#3172472#',\n NextMonth = 'cid$#3172473#',\n NextYear = 'cid$#3172474#',\n Name = 'cid$#3054259#',\n NeedFulfillment = 'cid$#3110503#',\n NeedToMergeToTwoOrMoreListings = 'cid$#3067710#',\n NeedToSplitToTwoOrMoreListings = 'cid$#3059987#',\n Next = 'cid$#2971948#',\n No = 'cid$#3038736#',\n NoActiveAccountsForLogin = 'cid$#3511931#',\n NoActivityLog = 'cid$#3172475#',\n NoAutoPricing_MissingPermission = 'cid$#3408185#',\n NoAutoPricing_MissingRowId = 'cid$#3408186#',\n NoAutoPricing_NoVenueConfig = 'cid$#3408187#',\n NoConversation = 'cid$#3317888#',\n NoEventsMatching = 'cid$#3269696#',\n NoFilteredNotifications = 'cid$#3214290#',\n NoGroupingAvailableForDefault = 'cid$#3361803#',\n NoMergesAvailable = 'cid$#3453449#',\n NoneSelected = 'cid$#3389363#',\n NoNotifications = 'cid$#3172476#',\n NoPerformersMatching = 'cid$#3110504#',\n NoReportText = 'cid$#3511933#',\n NoResultFound = 'cid$#3110505#',\n NormalOption = 'cid$#3317889#',\n NoSeatingsAvailableForAllocation = 'cid$#3237717#',\n NoTagsExist = 'cid$#3389364#',\n NoTaxes = 'cid$#3037583#',\n NotificationTypeAutopriceBelowFloor = 'cid$#3180459#',\n NotificationTypeAutopriceInsufficientCompListings = 'cid$#3180460#',\n NotificationTypeAutopriceFirebrake = 'cid$#3180461#',\n NotImplemented = 'cid$#3201696#',\n NoToAll = 'cid$#3180458#',\n NoVenueMetadataForAutopricing = 'cid$#3288930#',\n NoVenuesMatching = 'cid$#3110506#',\n None = 'cid$#3043872#',\n NotBroadcastOnAnyMarketplace = 'cid$#3050640#',\n Notes = 'cid$#2982701#',\n Notifications = 'cid$#3082884#',\n NotificationTypeListingHideSeatsFailed = 'cid$#3180453#',\n NotificationTypeListingMergeFailed = 'cid$#3180455#',\n NotificationTypeListingSplitFailed = 'cid$#3180456#',\n NotificationTypeListingUpdateDeliveryTypeFailed = 'cid$#3180454#',\n NotificationTypeSaleFulfilmentFailed = 'cid$#3180462#',\n NotificationTypeSaleMarketplaceCancelled = 'cid$#3180463#',\n NotificationTypeSaleNew = 'cid$#3180457#',\n Now = 'cid$#3008679#',\n NumberFormat = 'cid$#3361804#',\n NumberOfItemsPerPage = 'cid$#3396842#',\n NumberOfTicketsHeld = 'cid$#3511934#',\n NumOfListingsToCreate = 'cid$#3059988#',\n Odds = 'cid$#3678621#',\n Off = 'cid$#3344403#',\n OfSimilarQuality = 'cid$#3361805#',\n OfSimilarQualityInZone = 'cid$#3389365#',\n OfSimilarQualityQuantityAdjusted = 'cid$#3389366#',\n OfTheComparableListings = 'cid$#3389367#',\n OK = 'cid$#2973471#',\n OlderThanLastYear = 'cid$#3037593#',\n On = 'cid$#3344404#',\n OneDayBeforeEvent = 'cid$#3082886#',\n OnePayment = 'cid$#3034806#',\n OneTimePass = 'cid$#3344405#',\n OneWeekBeforeEvent = 'cid$#3082887#',\n OnlySingleValueIsAllowed = 'cid$#3389368#',\n Oops = 'cid$#2973468#',\n OpenEventPage = 'cid$#3261259#',\n OpenReport = 'cid$#3408188#',\n Opponent = 'cid$#3678622#',\n Or = 'cid$#2971951#',\n OrAbove = 'cid$#3389369#',\n OrderDate = 'cid$#2971932#',\n OrderId = 'cid$#3037595#',\n OrderIdDoesNotExist = 'cid$#3344406#',\n OrderIdDoesNotExistForVendor = 'cid$#3373016#',\n OrderIdInUse = 'cid$#3175911#',\n OrderIdInUseSameVendor = 'cid$#3361806#',\n Orders = 'cid$#3037598#',\n Original = 'cid$#3034666#',\n Other = 'cid$#2976486#',\n OtherMarketplaceContact = 'cid$#3344408#',\n Outlier = 'cid$#3373017#',\n OutlierFiltering = 'cid$#3317890#',\n OutlierMode = 'cid$#3317891#',\n OutstandingBalance = 'cid$#3511936#',\n Overview = 'cid$#3453450#',\n Owner = 'cid$#3389370#',\n Pagination = 'cid$#3408189#',\n Paid = 'cid$#2977304#',\n PaidOffline = 'cid$#2977305#',\n Pairs = 'cid$#3047495#',\n Paper = 'cid$#2976485#',\n ParentListing = 'cid$#3344409#',\n PartiallyPaid = 'cid$#3037600#',\n Password = 'cid$#3344410#',\n PastEvents = 'cid$#2978866#',\n PastWeek = 'cid$#3172477#',\n PastMonth = 'cid$#3172478#',\n PastYear = 'cid$#3172479#',\n Payment = 'cid$#2973460#',\n PaymentAccount = 'cid$#3054260#',\n PaymentDate = 'cid$#3037594#',\n PaymentMethod = 'cid$#3172480#',\n PaymentMethodUsed = 'cid$#3034807#',\n PaymentMethods = 'cid$#3054261#',\n PaymentPostEvent = 'cid$#3511937#',\n PaymentState = 'cid$#3037597#',\n Payments = 'cid$#3034862#',\n PaymentType = 'cid$#3578051#',\n PaymentUponSaleConfirmation = 'cid$#3511938#',\n PaymentUponDelivery = 'cid$#3511939#',\n PdfExt = 'cid$#3511940#',\n Pending = 'cid$#3408190#',\n PendingConfirmation = 'cid$#2975362#',\n PendingFulfillment = 'cid$#2975363#',\n PendingRejection = 'ckd$#2988325#',\n PaymentPending = 'cid$#3172481#',\n PendingPickup = 'cid$#3453451#',\n PendingQC = 'cid$#3432359#',\n PendingRefulfillment = 'cid$#3511941#',\n PendingReview = 'cid$#3511942#',\n PendingSourcing = 'cid$#3453452#',\n PeopleWithAccess = 'cid$#3432360#',\n Percentage = 'cid$#3180464#',\n Performer = 'cid$#3389371#',\n PerformerAndVenue = 'cid$#3396843#',\n PerformerAtVenue = 'cid$#3396844#',\n Permission = 'cid$#3511943#',\n Permission_AddSeatSaver = 'cid$#3511944#',\n Permission_AddTagType = 'cid$#3511945#',\n Permission_CreateOfflineSale = 'cid$#3511946#',\n Permission_ManageOfflineSale = 'cid$#3511947#',\n Permission_ConfirmTransferWithoutProof = 'cid$#3511949#',\n Permission_ResetFulfillment = 'cid$#3511950#',\n Permission_ConfigurePricing = 'cid$#3511953#',\n Permission_UpdateTags = 'cid$#3511954#',\n Permission_CreateReports = 'cid$#3511969#',\n Permission_UpdateReports = 'cid$#3511970#',\n Permission_UpdateReportsOwned = 'cid$#3511971#',\n Permission_ViewAll = 'cid$#3511972#',\n Permission_ViewExternalMarketplaceAttributes = 'cid$#3511973#',\n Permission_ViewInventoryReports = 'cid$#3511980#',\n Permission_ViewRecent = 'cid$#3511981#',\n Permission_ViewRecentFromExternalMarketplace = 'cid$#3511982#',\n Permission_CreateForExternalMarketplaces = 'cid$#3511985#',\n Permission_ViewProceeds = 'cid$#3511986#',\n Permission_ViewRecentProceeds = 'cid$#3511987#',\n Permission_ViewCostAndMargin = 'cid$#3511988#',\n Permission_ViewPaymentState = 'cid$#3511989#',\n Permission_ViewFulfillmentArtifacts = 'cid$#3511990#',\n Permission_ViewAllMarketplaceAttributes = 'cid$#3511991#',\n Permission_SetPrice = 'cid$#3511992#',\n Permission_BroadcastUnbroadcast = 'cid$#3511996#',\n Permission_BroadcastUnbroadcastOnPurchasedBy = 'cid$#3511997#',\n Permission_UpdateInfo = 'cid$#3511998#',\n Permission_Administration = 'cid$#3512000#',\n Permission_Create = 'cid$#3512001#',\n Permission_ManageHolds = 'cid$#3512002#',\n Permission_ViewSalesReports = 'cid$#3512003#',\n Permissions = 'cid$#3512004#',\n PermissionsRequiredMessage = 'cid$#3512005#',\n PerPayment = 'cid$#3084141#',\n Performers = 'cid$#2971928#',\n Phone = 'cid$#3237718#',\n PreDelivered = 'cid$#3038737#',\n Premium = 'cid$#3344411#',\n Preview = 'cid$#2975373#',\n Price = 'cid$#3453453#',\n PriceAboveCeiling = 'cid$#3291915#',\n PriceBelowFloor = 'cid$#3291914#',\n PriceBelowMaxAllowedDrop = 'cid$#3291916#',\n PriceBy = 'cid$#3389372#',\n PriceByMarketplace = 'cid$#3361807#',\n PricedBy = 'cid$#3453454#',\n PriceMustBeBetweenFloorAndCeiling = 'cid$#3361808#',\n PriceCeiling = 'cid$#3261260#',\n PriceEqualsLastPrice = 'cid$#3291917#',\n PriceFloor = 'cid$#3214291#',\n Pricer = 'cid$#3038738#',\n Prices = 'cid$#3082888',\n PriceZeroUnbroadcastWarning = 'cid$#3172491#',\n Pricing = 'cid$#3034667#',\n PricingDetails = 'cid$#3269705#',\n PricingHistory = 'cid$#3389373#',\n PricingProtection = 'cid$#3361809#',\n Private = 'cid$#3317892#',\n PrivateNote = 'cid$#3389374#',\n Proceeds = 'cid$#2971936#',\n ProceedsFloor = 'cid$#3408191#',\n ProceedsCeiling = 'cid$#3408192#',\n ProceedsPerTicket = 'cid$#3389375#',\n Processing = 'cid$#3453455#',\n ProcessingFulfillment = 'cid$#2988326#',\n Processor = 'cid$#3408193#',\n Profit = 'cid$#3261261#',\n ProofOfPurchase = 'cid$#3512006#',\n ProofOfPurchasedInstruction = 'cid$#3512007#',\n ProofOfPurchasedRequired = 'cid$#3578057#',\n ProofOfPurchasedRequiredMessage = 'cid$#3512009#',\n ProvideTransferImageProofInstruction = 'cid$#2972048#',\n ProvideTransferProofIdInstruction = 'cid$#3221222#',\n ProvideTransferUrlInstruction = 'cid$#2972049#',\n Purchase = 'cid$#3034661#',\n PurchaseCancelled = 'cid$#3344412#',\n PurchaseDate = 'cid$#3037591#',\n PurchaseDates = 'cid$#3034662#',\n PurchasedBy = 'cid$#3175836#',\n PurchaseDetails = 'cid$#3512010#',\n PurchaseHaveNoListings = 'cid$#3070956#',\n PurchaseHaveNoSales = 'cid$#3070955#',\n PurchaseId = 'cid$#3453456#',\n Purchases = 'cid$#2971926#',\n Purchases_AddTagType_Details = 'cid$#3512011#',\n Purchases_Create_Details = 'cid$#3512012#',\n Purchases_Edit_Details = 'cid$#3512013#',\n Purchases_EditOwned_Details = 'cid$#3512014#',\n Purchases_UpdateTags_Details = 'cid$#3512015#',\n Purchases_UpdateTagsOwned_Details = 'cid$#3512016#',\n Purchases_ViewAll_Details = 'cid$#3512017#',\n Purchases_ViewOwned_Details = 'cid$#3512018#',\n Purchases_ViewRecent_Details = 'cid$#3512019#',\n PurchaseSettings = 'cid$#3453457#',\n PurchaseSettingsAllVisible = 'cid$#3453458#',\n QRCode = 'cid$#3512020#',\n QualityControl = 'cid$#3408194#',\n QualityControlState = 'cid$#3408195#',\n QualityOfComparableListings = 'cid$#3361810#',\n Quantity = 'cid$#2971931#',\n QuantityAbbreviated = 'cid$#2988327#',\n QuantityAdjustedVenueWideQualityScore = 'cid$#3389376#',\n QuantityAvailablePremiums = 'cid$#3408196#',\n QuantityScore = 'cid$#3396845#',\n QueuedForPayment = 'cid$#2977306#',\n QuickFilters = 'cid$#3110507#',\n RandomizeRankForEachEvents = 'cid$#3396846#',\n Rank = 'cid$#3217858#',\n Readonly = 'cid$#3389377#',\n RecentlyCategorized = 'cid$#3344413#',\n RecentlySold = 'cid$#3110508#',\n RecentSales = 'cid$#3361811#',\n Recommended = 'cid$#3201697#',\n Reduce = 'cid$#3361812#',\n Reference = 'cid$#3432361#',\n RefundNeeded = 'cid$#3082889#',\n Refunded = 'cid$#3041865#',\n RejectSale = 'cid$#2972037#',\n RejectSaleWarning = 'cid$#2973463#',\n Rejected = 'cid$#2977036#',\n ReleaseNotes = 'cid$#3432362#',\n Reload = 'cid$#2973472#',\n Remaining = 'cid$#3034663#',\n Remove = 'cid$#2988328#',\n RemoveAccess = 'cid$#3432363#',\n RemoveBarcodes = 'cid$#3453459#',\n RemoveHoldAll = 'cid$#3512022#',\n RemoveHoldSelected = 'cid$#3512023#',\n RemoveHoldVisible = 'cid$#3512024#',\n RemovePayment = 'cid$#3041866#',\n RemovePredeliveredArtifacts = 'cid$#3453460#',\n RemovePdfs = 'cid$#3453461#',\n RemovePredeliveredArtifactsAll = 'cid$#3453462#',\n RemovePredeliveredArtifactsAllVisible = 'cid$#3453463#',\n RemovePredeliveredArtifactsSelected = 'cid$#3453464#',\n RemovePredeliveredArtifactsWarning = 'cid$#3453465#',\n RemoveTag = 'cid$#3432364#',\n RemoveTagValuesAllVisible = 'cid$#3432366#',\n RemoveTagValuesSelected = 'cid$#3432367#',\n RenewAccessToken = 'cid$#3432368#',\n Reply = 'cid$#3317893#',\n Reporter = 'cid$#3512025#',\n Reporting = 'cid$#3396847#',\n ReportName = 'cid$#3432369#',\n Reports = 'cid$#2971927#',\n Reports_CreateReports_Details = 'cid$#3512026#',\n Reports_UpdateReports_Details = 'cid$#3512027#',\n Reports_UpdateReportsOwned_Details = 'cid$#3512028#',\n Reports_ViewAll_Details = 'cid$#3512029#',\n Reports_ViewInventoryReports_Details = 'cid$#3512030#',\n Reports_ViewSalesReports_Details = 'cid$#3512031#',\n ReprocessEmail = 'cid$#3389378#',\n RequestEvent = 'cid$#3067711#',\n RequestPasswordResetEmail = 'cid$#3432370#',\n Required = 'cid$#2972951#',\n RequiredFieldsError = 'cid$#3067712#',\n Reset = 'cid$#3084142#',\n ResetAll = 'cid$#2988460#',\n ResetFulfillment = 'cid$#3512032#',\n ResetFulfillmentWarning = 'cid$#3512033#',\n ResetListings = 'cid$#3070957#',\n ResetListingsDeleteWarning = 'cid$#3070958#',\n ResetSettings = 'cid$#3408197#',\n RestorePurchase = 'cid$#3453466#',\n RestrictTo = 'cid$#3512034#',\n RestrictSelection = 'cid$#3512035#',\n RestrictToSameZone = 'cid$#3772208#',\n RestrictPriceDropVelocity = 'cid$#3796803#',\n RetrievingBuyersInfo = 'cid$#3082890#',\n Retry = 'cid$#3344414#',\n ReuploadBarcodes = 'cid$#3201698#',\n ReuploadETickets = 'cid$#3201699#',\n ReuploadProof = 'cid$#3512036#',\n ReuploadQRCodes = 'cid$#3512037#',\n ReuploadTicketUrls = 'cid$#3389379#',\n ReuploadTicketIds = 'cid$#3389380#',\n Revenue = 'cid$#3261262#',\n ReviewAllocation = 'cid$#3453467#',\n RightNow = 'cid$#3678623#',\n Role = 'cid$#3373018#',\n Role_AutoFulfill_Details = 'cid$#3512038#',\n Role_AutoPO_Details = 'cid$#3512039#',\n Role_AutoPricer_Details = 'cid$#3512040#',\n Role_Buyer_Details = 'cid$#3512041#',\n Role_Finance_Details = 'cid$#3512042#',\n Role_Fulfillment_Details = 'cid$#3512043#',\n Role_Owner_Details = 'cid$#3512044#',\n Role_Pricer_Details = 'cid$#3512045#',\n Role_Processor_Details = 'cid$#3512046#',\n Role_Reporter_Details = 'cid$#3512047#',\n Roles = 'cid$#3512048#',\n RoleWithUsersCannotBeDeleted = 'cid$#3512049#',\n Row = 'cid$#2971943#',\n RowExtrapolation = 'cid$#3261263#',\n RowScore = 'cid$#3317894#',\n Sale = 'cid$#2980585#',\n SaleCancelled = 'cid$#3344415#',\n SaleConflictWarning = 'cid$#2973470#',\n SaleDate = 'cid$#3453468#',\n SaleId = 'cid$#2972945#',\n Sales = 'cid$#2971925#',\n Sales_AddTagType_Details = 'cid$#3512050#',\n Sales_ConfirmReject_Details = 'cid$#3512051#',\n Sales_ConfirmRejectOnIsFulfillerOf_Details = 'cid$#3512052#',\n Sales_ConfirmRejectOnIsPricerOf_Details = 'cid$#3512053#',\n Sales_ConfirmRejectOnPurchasedBy_Details = 'cid$#3512054#',\n Sales_ConfirmTransferWithoutProof_Details = 'cid$#3512055#',\n Sales_CreateForExternalMarketplaces_Details = 'cid$#3512056#',\n Sales_CreateOfflineSale_Details = 'cid$#3512057#',\n Sales_Fulfill_Details = 'cid$#3512058#',\n Sales_FulfillOnIsFulfillerOf_Details = 'cid$#3512059#',\n Sales_FulfillOnPricerOf_Details = 'cid$#3512060#',\n Sales_FulfillOnPurchasedBy_Details = 'cid$#3512061#',\n Sales_ManageHold_Details = 'cid$#3512062#',\n Sales_ManageOfflineSaleCreatedBy_Details = 'cid$#3512063#',\n Sales_ManageOfflineSale_Details = 'cid$#3512064#',\n Sales_ResetFulfillment_Details = 'cid$#3512065#',\n Sales_UpdateSaleOnPurchasedBy_Details = 'cid$#3512066#',\n Sales_UpdateSalesInfo_Details = 'cid$#3512067#',\n Sales_UpdateSalesInfoOnIsFulfillerOf_Details = 'cid$#3512068#',\n Sales_UpdateSalesInfoOnIsPricerOf_Details = 'cid$#3512069#',\n Sales_UpdateTags_Details = 'cid$#3512070#',\n Sales_UpdateTagsOnIsFulfillerOf_Details = 'cid$#3512071#',\n Sales_UpdateTagsOnIsPricerOf_Details = 'cid$#3512072#',\n Sales_UpdateTagsOnPurchasedBy_Details = 'cid$#3512073#',\n Sales_ViewAll_Details = 'cid$#3512074#',\n Sales_ViewCostAndMargin_Details = 'cid$#3512075#',\n Sales_ViewFulfillmentArtifacts_Details = 'cid$#3512076#',\n Sales_ViewFulfillmentArtifactsOnIsFulfillerOf_Details = 'cid$#3512077#',\n Sales_ViewFulfillmentArtifactsOnIsPricerOf_Details = 'cid$#3512078#',\n Sales_ViewFulfillmentArtifactsOnPurchasedBy_Details = 'cid$#3512079#',\n Sales_ViewPaymentState_Details = 'cid$#3512080#',\n Sales_ViewProceeds_Details = 'cid$#3512081#',\n Sales_ViewRecent_Details = 'cid$#3512082#',\n Sales_ViewRecentFromExternalMarketplace_Details = 'cid$#3512083#',\n Sales_ViewRecentProceeds_Details = 'cid$#3512084#',\n Sales_ViewSalesOnIsFulfillerOf_Details = 'cid$#3512085#',\n Sales_ViewSalesOnIsPricerOf_Details = 'cid$#3512086#',\n Sales_ViewSalesOnPurchasedBy_Details = 'cid$#3512087#',\n SalesAndLift = 'cid$#3678624#',\n SalesAndMargin = 'cid$#3221223#',\n SaleSettings = 'cid$#3453469#',\n SaleSettingsAllVisible = 'cid$#3453470#',\n SalesReports = 'cid$#3110509#',\n SalesSummary = 'cid$#2992153#',\n SaleStatus = 'cid$#3453471#',\n SaleTicketTypeBulkEditWarning = 'cid$#3453472#',\n SaleTicketTypeWarning = 'cid$#3453473#',\n SameTicketsForAllEventsTitle = 'cid$#3195382#',\n SameTicketsForAllEventsHeader = 'cid$#3195383#',\n SameTicketsForAllEventsMessage1 = 'cid$#3195384#',\n SameTicketsForAllEventsMessage2 = 'cid$#3195385#',\n SameZone = 'cid$#3512088#',\n Save = 'cid$#2975359#',\n SaveBarcodes = 'cid$#2972043#',\n SavePricingStrategyInfo = 'cid$#3512089#',\n SaveThisFilter = 'cid$#3237719#',\n SaveTicketIds = 'cid$#3389381#',\n SaveTicketUrls = 'cid$#3389382#',\n Score = 'cid$#3288931#',\n ScreenshotsOfTransfer = 'cid$#2977938#',\n Search = 'cid$#2987600#',\n SearchAndSelectAnEvent = 'cid$#3042155#',\n SearchEmptyResult = 'cid$#3026534#',\n SearchEventPlaceholderText = 'cid$#3026533#',\n SearchForMessagePlaceholder = 'cid$#3344416#',\n SearchOrEnter = 'cid$#3317895#',\n SearchVenueConfigOrEvent = 'cid$#3396848#',\n Season = 'cid$#3054268#',\n Seat = 'cid$#2973461#',\n SeatAllocationChangeWarning = 'cid$#3089847#',\n SeatFrom = 'cid$#3237720#',\n SeatHeatmap = 'cid$#3288932#',\n SeatIncrementType = 'cid$#3172482#',\n SeatingInfoNotMatchStubHub = 'cid$#3408198#',\n SeatingUnmapped = 'cid$#3453474#',\n SeatSaver = 'cid$#3453475#',\n SeatSaverPurchaseMessage = 'cid$#3453476#',\n SeatScore = 'cid$#3389383#',\n SeatTo = 'cid$#3237721#',\n SeatTraits = 'cid$#3037585#',\n Seating = 'cid$#3037584#',\n Seats = 'cid$#2971930#',\n Section = 'cid$#2971942#',\n Sections = 'cid$#3678625#',\n SectionOnly = 'cid$#3373019#',\n SeeAll = 'cid$#3172483#',\n SeeAllResultsFor = 'cid$#3036194#',\n SeeMoreEllipses = 'cid$#3214292#',\n Select = 'cid$#3389384#',\n SelectAccountToSignIn = 'cid$#3024377#',\n SelectAccountToSwitch = 'cid$#3024375#',\n SelectAll = 'cid$#3361813#',\n SelectDatePlaceholder = 'cid$#3344417#',\n SelectedListing = 'cid$#3344418#',\n SelectedSection = 'cid$#3453477#',\n SelectedSections = 'cid$#3453483#',\n SelectFilter = 'cid$#3172484#',\n SelectInboxPlaceholder = 'cid$#3344419#',\n SelectListingsToMerge = 'cid$#3453484#',\n SelectMultiple = 'cid$#3344420#',\n SelectNone = 'cid$#3512090#',\n SelectSeatFrom = 'cid$#3261311#',\n SelectSections = 'cid$#3453485#',\n SelectSectionsToPriceAgainst = 'cid$#3453486#',\n SelectSortPlaceholder = 'cid$#3344421#',\n SelectSplitType = 'cid$#3214293#',\n SelectSubjectPlaceholder = 'cid$#3344422#',\n SelectTags = 'cid$#3408199#',\n SelectTemplate = 'cid$#3512091#',\n SelectUsersAndGroups = 'cid$#3432371#',\n SelectValueType = 'cid$#3373020#',\n SelectVariables = 'cid$#3408200#',\n SelectVendor = 'cid$#3172485#',\n SelectVendorShowAccounts = 'cid$#3172486#',\n SelectYourFilters = 'cid$#2988458#',\n Selected = 'cid$#2987601#',\n SellAsTicketTypePriority = 'cid$#3214294#',\n SellerAccount = 'cid$#3024379#',\n SellerAccount_Admin_Details = 'cid$#3512092#',\n SellerFee = 'cid$#3344423#',\n SellerId = 'cid$#3678626#',\n SellerOwnTickets = 'cid$#3512093#',\n SellerSupportCase = 'cid$#3084143#',\n SellerSupportCase_Create_Details = 'cid$#3512094#',\n SellerSupportCase_View_Details = 'cid$#3512095#',\n SellThroughRate = 'cid$#3453487#',\n SellThroughRateLowercase = 'cid$#3453488#',\n SellThroughRateSubtitle = 'cid$#3453489#',\n SendInhandDateToMarketplace = 'cid$#3172487#',\n SetAsPaid = 'cid$#3041867#',\n SetPriority = 'cid$#3214295#',\n Settings = 'cid$#3408201#',\n Share = 'cid$#3172488#',\n ShareReport = 'cid$#3453490#',\n Sharing = 'cid$#3432372#',\n SharingReportDescription = 'cid$#3432373#',\n Shipment = 'cid$#3037599#',\n Shipping = 'cid$#3043867#',\n ShippingDeadline = 'cid$#3344424#',\n ShowAdvancedSettings = 'cid$#3432374#',\n ShowAllListings = 'cid$#3344425#',\n ShownQuantity = 'cid$#3512096#',\n ShowParkingTickets = 'cid$#3408202#',\n ShowRelatedListings = 'cid$#3344426#',\n ShowSimpleSettings = 'cid$#3269698#',\n ShowVoidCancelledPurchases = 'cid$#3269699#',\n SignIn = 'cid$#3024381#',\n SignInAgain = 'cid$#3024380#',\n SignOut = 'cid$#3024382#',\n SignupDate = 'cid$#3373021#',\n Simple = 'cid$#3261264#',\n SinglePayment = 'cid$#3046243#',\n SingleValueOnly = 'cid$#3408203#',\n SiteTheme = 'cid$#3396849#',\n SkipLogic = 'cid$#3317896#',\n SMPWallet = 'cid$#3689888#',\n Sold = 'cid$#2981284#',\n SoldATP = 'cid$#3453491#',\n SoldAverageTicketPrice = 'cid$#3453492#',\n SoldCost = 'cid$#3261265#',\n SoldAs = 'cid$#3089843#',\n SoldLast7Days = 'cid$#3089845#',\n SoldProceeds = 'cid$#3396850#',\n SoldProfit = 'cid$#3453493#',\n SoldQty = 'cid$#3261266#',\n SoldQuantity = 'cid$#3453494#',\n SoldSeats = 'cid$#3261267#',\n SoldTicketCost = 'cid$#3408204#',\n SoldTickets = 'cid$#3396851#',\n SoldToday = 'cid$#3089844#',\n SomethingWentWrong = 'cid$#2971952#',\n SomethingWentWrongTryAgain = 'cid$#2973469#',\n Sort = 'cid$#3344427#',\n SortAtoZ = 'cid$#3004425#',\n SortBy = 'cid$#3432375#',\n SortByDate = 'cid$#2975374#',\n SortByTitle = 'cid$#2975375#',\n SortNewToOld = 'cid$#3004422#',\n SortOldToNew = 'cid$#3004424#',\n SortZtoA = 'cid$#3004426#',\n SpecialCharactersNotAllowed = 'cid$#3396852#',\n SpecificSections = 'cid$#3453495#',\n Split = 'cid$#3038743#',\n SplitListing = 'cid$#3059989#',\n SplitType = 'cid$#3047496#',\n Sports = 'cid$#3512097#',\n SpotifyPopularity = 'cid$#3678627#',\n StandardDeviations = 'cid$#3317897#',\n Standing = 'cid$#3678628#',\n Stakes = 'cid$#3678629#',\n StartDateTime = 'cid$#3678630#',\n StateProvince = 'cid$#3067713#',\n State = 'cid$#3678631#',\n Status = 'cid$#2971934#',\n Stop = 'cid$#3373022#',\n STR = 'cid$#3453496#',\n StrategyName = 'cid$#3512098#',\n String = 'cid$#3373023#',\n StubhubEventIdKnown = 'cid$#3512099#',\n StubHubLoginRequired = 'cid$#3408205#',\n SubGenre = 'cid$#3512100#',\n Subject = 'cid$#3317898#',\n Succeeded = 'cid$#3201700#',\n Success = 'cid$#3291913#',\n Suggestions = 'cid$#3453497#',\n Support = 'cid$#3317899#',\n SupportCaseId = 'cid$#3344428#',\n SuppressFor1Hour = 'cid$#3185872#',\n SimilarSections = 'cid$#3288933#',\n SuspiciousPriceChange = 'cid$#3185873#',\n SuspiciousPriceChangeWarning = 'cid$#3185874#',\n Summary = 'cid$#3185875#',\n SwapTag = 'cid$#3432376#',\n SwapTagValues = 'cid$#3432377#',\n SwapTagValuesAllVisible = 'cid$#3432378#',\n SwapTagValuesSelected = 'cid$#3432379#',\n SwitchAccount = 'cid$#3024376#',\n SyncCenter = 'cid$#3214296#',\n SyncWithSystemSettings = 'cid$#3408206#',\n System = 'cid$#3512101#',\n Tag = 'cid$#3396853#',\n Tags = 'cid$#3373024#',\n TagsToIncludeInColumns = 'cid$#3408207#',\n TakeMyParentListingAnd = 'cid$#3361814#',\n Target = 'cid$#3453498#',\n TaxExempt = 'cid$#3110510#',\n TaxPaid = 'cid$#3037586#',\n Text = 'cid$#3389385#',\n ThanMineAnd = 'cid$#3389386#',\n Theatre = 'cid$#3512102#',\n Theme = 'cid$#3408208#',\n Then = 'cid$#3389387#',\n ThisEvent = 'cid$#3361815#',\n ThisMonth = 'cid$#3013276#',\n ThisWasTaxExempt = 'cid$#3195386#',\n ThisWeek = 'cid$#3013275#',\n ThisYear = 'cid$#3013277#',\n Ticket = 'cid$#3059990#',\n TicketGroup = 'cid$#2972948#',\n TicketGroupHasErrors = 'cid$#3043871#',\n TicketGroups = 'cid$#3453499#',\n TicketGroups_ViewAll_Details = 'cid$#3512103#',\n TicketIdAlreadyInUsed = 'cid$#3389388#',\n TicketmasterBarcodeTransferInstruction = 'cid$#3269700#',\n TicketmasterBarcodeTransferViaOneTicketInstruction = 'cid$#3269701#',\n TicketmasterBarcodeTransferViaTradeDeskInstruction = 'cid$#3261268#',\n TicketmasterTradeDeskApi = 'cid$#3432380#',\n TicketsAvailable = 'cid$#3344429#',\n TicketsListedAndSold = 'cid$#3221224#',\n TicketType = 'cid$#2971935#',\n TicketTypePriority = 'cid$#3243232#',\n Tickets = 'cid$#2971924#',\n TicketsOnPlatform = 'cid$#3678632#',\n TicketsPurchased = 'cid$#3034808#',\n TicketTypePriorityForSelected = 'cid$#3512104#',\n TicketTypePriorityForAll = 'cid$#3512105#',\n TicketUrlAlreadyInUsed = 'cid$#3389389#',\n TileView = 'cid$#3269702#',\n Time = 'cid$#3512106#',\n TitleName = 'cid$#3512107#',\n To = 'cid$#3172489#',\n ToBeListed = 'cid$#3373025#',\n ToBeDelisted = 'cid$#3373026#',\n ToDate = 'cid$#2973457#',\n Today = 'cid$#3013274#',\n Total = 'cid$#2981286#',\n /**\n * @deprecated Use `ContentId.TotalWebsitePrice`\n */\n TotalAllInPrice = 'cid$#3389390#',\n TotalATP = 'cid$#3389391#',\n TotalCost = 'cid$#3054262#',\n TotalDeliveryCharge = 'cid$#3195387#',\n TotalDue = 'cid$#3034809#',\n TotalGrossProfit = 'cid$#3389392#',\n TotalListedQuantity = 'cid$#3389393#',\n /**\n * @deprecated Use `ContentId.TotalProceeds`\n */\n TotalListPrice = 'cid$#3389394#',\n TotalNetProceeds = 'cid$#3261312#',\n TotalOriginal = 'cid$#3389395#',\n TotalPerTicketCost = 'cid$#3037587#',\n TotalProceeds = 'cid$#3389396#',\n TotalProfit = 'cid$#3453500#',\n TotalPurchaseCost = 'cid$#3034811#',\n TotalQty = 'cid$#3261269#',\n TotalQuantity = 'cid$#3453501#',\n TotalRemaining = 'cid$#3389397#',\n TotalSoldCost = 'cid$#3389398#',\n TotalSoldQuantity = 'cid$#3389399#',\n TotalTicketCost = 'cid$#3034810#',\n TotalTicketEarnings = 'cid$#3453502#',\n TotalTicketQuantity = 'cid$#3389400#',\n TotalTickets = 'cid$#3185876#',\n TotalUnitCost = 'cid$#3389401#',\n /**\n * @deprecated Use `ContentId.TotalUnsoldProceeds`\n */\n TotalUnsoldListPrice = 'cid$#3389402#',\n TotalUnsoldProceeds = 'cid$#3389403#',\n TotalUnsoldQuantity = 'cid$#3389404#',\n TotalValueListed = 'cid$#3221225#',\n TotalWebsitePrice = 'cid$#3389405#',\n TradeDeskResetSummaryTitle = 'cid$#3432381#',\n TradeDeskResetSummaryBody = 'cid$#3432382#',\n TradeDeskResetInstructionsStep1 = 'cid$#3432383#',\n TradeDeskResetInstructionsStep2 = 'cid$#3432384#',\n TradeDeskResetInstructionsStep3 = 'cid$#3432385#',\n TradeDeskResetInstructionsStep4 = 'cid$#3432386#',\n Transactions = 'cid$#3432387#',\n Transfer = 'cid$#2976484#',\n TransferAccepted = 'cid$#3344430#',\n TransferExpired = 'cid$#3344431#',\n TransferFrom = 'cid$#3110511#',\n TransferId = 'cid$#3268814#',\n TransferIdNote = 'cid$#3268815#',\n TransferProofId = 'cid$#3221226#',\n TransferSent = 'cid$#3344432#',\n TransferTicketsChoice = 'cid$#2972047#',\n TransferTicketsIns = 'cid$#2972046#',\n TransferTo = 'cid$#2973467#',\n TrueFalse = 'cid$#3408209#',\n TurnOffReporting = 'cid$#3396854#',\n TurnOffReportingWarning = 'cid$#3408210#',\n Type = 'cid$#3034812#',\n UnableToProcess = 'cid$#3811626#',\n UnableToRetrieveBuyersInfo = 'cid$#3082891#',\n Unbroadcast = 'cid$#3046244#',\n UnbroadcastAll = 'cid$#3180465#',\n UnbroadcastAllVisible = 'cid$#3389406#',\n Unbroadcasted = 'cid$#3172490#',\n Uncategorized = 'cid$#3344433#',\n Undeliverable = 'cid$#3237722#',\n UndercutAmount = 'cid$#3361816#',\n UndercutMode = 'cid$#3261270#',\n UndercutAbsoluteAmount = 'cid$#3261271#',\n UndercutAbsoluteOrRelativeAmountMustBeSetError = 'cid$#3285806#',\n UnderCutModePrompt = 'cid$#3361817#',\n UndercutRelativeAmount = 'cid$#3261272#',\n Ungroup = 'cid$#3317900#',\n UngroupListingsAll = 'cid$#3432388#',\n UngroupListingsAllVisible = 'cid$#3453503#',\n UngroupListingsConfirmation = 'cid$#3432389#',\n UngroupListingsSelected = 'cid$#3432390#',\n UniqueId = 'cid$#2972022#',\n UnitCost = 'cid$#2972021#',\n Unpaid = 'cid$#2977307#',\n Unread = 'cid$#3317901#',\n UnbroadcastSelected = 'cid$#3344434#',\n UnsavedChanges = 'cid$#2973475#',\n UnsavedChangesWarning = 'cid$#2973476#',\n Unset = 'cid$#3408211#',\n UnsoldCost = 'cid$#3396856#',\n UnsoldQty = 'cid$#3261273#',\n UnsoldQuantity = 'cid$#3453504#',\n UnsoldTickets = 'cid$#3172492#',\n UpdateCurrency = 'cid$#3453505#',\n UpdatePurchaseCurrencyWarning = 'cid$#3453506#',\n UpdateSeatingInformation = 'cid$#3408212#',\n Upload = 'cid$#2988329#',\n UploadBarcodes = 'cid$#2972035#',\n UploadETickets = 'cid$#2971946#',\n UploadFailureMessage = 'cid$#3237723#',\n UploadProof = 'cid$#3512108#',\n UploadProofOfPurchase = 'cid$#3512109#',\n UploadQRCodes = 'cid$#3512110#',\n UploadSeatScoreFile = 'cid$#3389407#',\n UploadPurchaseFile = 'cid$#3389408#',\n UploadTicketUrls = 'cid$#3389409#',\n UploadTicketIds = 'cid$#3389410#',\n UrlsToAcceptTickets = 'cid$#2977939#',\n UseExistingRoleAsTemplateTitle = 'cid$#3512111#',\n UseExistingRoleAsTemplateExplanation = 'cid$#3512112#',\n UserManagement = 'cid$#3408213#',\n UserNotFound = 'cid$#3408214#',\n Users = 'cid$#3373027#',\n UsersWithAccess = 'cid$#3512113#',\n UseThisAnswerForNext24Hours = 'cid$#3180466#',\n Value = 'cid$#3373028#',\n ValueDoesNotSatisfyType = 'cid$#3373029#',\n ValueType = 'cid$#3373030#',\n Variables = 'cid$#3408215#',\n VariablesToIncludeInColumns = 'cid$#3408216#',\n Vendor = 'cid$#3054263#',\n VendorAccount = 'cid$#3054264#',\n VendorAccounts = 'cid$#3172493#',\n Vendors = 'cid$#3172494#',\n Venue = 'cid$#3389411#',\n VenueConfigs = 'cid$#3389412#',\n VenueMapWelcomeMessage = 'cid$#3243222#',\n VenueName = 'cid$#3067715#',\n Venues = 'cid$#2971929#',\n VenueWideQualityScore = 'cid$#3261274#',\n VenueWideInSectionPriority = 'cid$#3261275#',\n VenueWideQualityScoreSameZone = 'cid$#3389413#',\n VerifyBuyerInfo = 'cid$#2975355#',\n VeryAggressive = 'cid$#3512114#',\n View = 'cid$#2973474#',\n ViewAllAccessiblePermissions = 'cid$#3578090#',\n ViewBarcodes = 'cid$#2972039#',\n ViewComps = 'cid$#3261276#',\n ViewDetails = 'cid$#2988330#',\n ViewDuplicates = 'cid$#3512115#',\n ViewEditabilityDescription = 'cid$#3678633#',\n ViewEmailDetails = 'cid$#3344435#',\n ViewETickets = 'cid$#1910708#',\n ViewETicketUrls = 'cid$#3373031#',\n ViewEventMap = 'cid$#3811627#',\n ViewInventory = 'cid$#3067716#',\n ViewPurchase = 'cid$#3344436#',\n ViewQRCodes = 'cid$#3512116#',\n ViewSale = 'cid$#3317902#',\n ViewSales = 'cid$#3067717#',\n ViewTicketIds = 'cid$#3389414#',\n ViewTransferProof = 'cid$#2972038#',\n ViewTransferTicket = 'cid$#3172495#',\n ViewWallet = 'cid$#3678634#',\n ViewZoneMap = 'cid$#3811628#',\n Visibility = 'cid$#3038739#',\n Visible = 'cid$#3811629#',\n Void = 'cid$#3811630#',\n VoidBulkPurchaseWarning = 'cid$#3678635#',\n VoidPurchase = 'cid$#3067718#',\n VoidPurchaseDescription = 'cid$#3067719#',\n VoidSinglePurchaseWarning = 'cid$#3678636#',\n Wallet = 'cid$#3678637#',\n WasTaxExempt = 'cid$#3172496#',\n Wasted = 'cid$#3811631#',\n WastedCost = 'cid$#3389415#',\n WastedQty = 'cid$#3678638#',\n WastedTickets = 'cid$#3389416#',\n WasteSale = 'cid$#3811632#',\n WasteTickets = 'cid$#3811633#',\n WasteUnsoldTickets = 'cid$#3811634#',\n Weather = 'cid$#3678639#',\n Webhook_View_Details = 'cid$#3543207#',\n Webhook_Create_Details = 'cid$#3543208#',\n Webhook_Edit_Details = 'cid$#3543209#',\n Website = 'cid$#3237724#',\n WebsiteFloor = 'cid$#3408217#',\n WebsiteCeiling = 'cid$#3408218#',\n WebsitePrice = 'cid$#3389417#',\n Week = 'cid$#3396857#',\n WeekOfYear = 'cid$#3396858#',\n Weeks = 'cid$#3811635#',\n WhatIsAPlacholder = 'cid$#3512117#',\n WhatIsASeatSaver = 'cid$#3453507#',\n WhatSeatToFulfill = 'cid$#2973465#',\n WhatsNew = 'cid$#3408219#',\n WhatTicketsDidYouBuy = 'cid$#3034664#',\n WhenAndWhere = 'cid$#3005803#',\n WhenWhereWho = 'cid$#3037590#',\n WhereTicketsWerePurchased = 'cid$#3034665#',\n WholeNumber = 'cid$#3408220#',\n Widgets = 'cid$#3389418#',\n WillCall = 'cid$#3054266#',\n WitheldFunds = 'cid$#3578093#',\n Worse = 'cid$#3389419#',\n WrongTicketsReturnShippingCost = 'cid$#3578094#',\n WrongTrackingNumber = 'cid$#3578095#',\n Yes = 'cid$#3034813#',\n YesToSome = 'cid$#3180467#',\n YourAutoPriceResults = 'cid$#3432391#',\n YourBuyer = 'cid$#2973466#',\n YourListing = 'cid$#3361818#',\n YoureCheaper = 'cid$#3269703#',\n YoureMoreExpensive = 'cid$#3269704#',\n YourSale = 'cid$#2972018#',\n YourSaleMetricsPart1 = 'cid$#2992154#',\n YourStats = 'cid$#3678640#',\n YourSummaryMessage = 'cid$#2992152#',\n YourTickets = 'cid$#3110512#',\n Zone = 'cid$#3361819#',\n ZoneMap = 'cid$#3811636#',\n ZoneMapDescription = 'cid$#3811637#',\n Zones = 'cid$#3261277#',\n Zoom = 'cid$#3543210#',\n ZoomInstruction = 'cid$#3243224#',\n ZtoA = 'cid$#3172503#',\n ZtoAArrow = 'cid$#3214297#',\n\n // TODO: SponsoredListings - Clean up & sort alphabetically\n BaseBid = 'cid$#3678641#',\n MaxBid = 'cid$#3678642#',\n DailyBudget = 'cid$#3678643#',\n AddAdCampaign = 'cid$#3678651#',\n AddAdGroup = 'cid$#3678652#',\n EnterAdCampaignName = 'cid$#3678653#',\n EnterAdGroupName = 'cid$#3678654#',\n ManageAdGroups = 'cid$#3678655#',\n BidModifierDimension = 'cid$#3678656#',\n EventBidModifierValue = 'cid$#3678657#',\n TicketClass = 'cid$#3678658#',\n BidModifier = 'cid$#3678659#',\n ViewApplicableListings = 'cid$#3678660#',\n AdSpend = 'cid$#3678661#',\n AddGenre = 'cid$#3678662#',\n AddPerformer = 'cid$#3678663#',\n AddEvent = 'cid$#3678664#',\n AddTicketClass = 'cid$#3678667#',\n AddListings = 'cid$#3678668#',\n AddVenue = 'cid$#3678669#',\n MaxBidLessThanBaseBidMsg = 'cid$#3678670#',\n DailyBudgetLessThanMaxBidMsg = 'cid$#3678671#',\n}\n","import { ContentIdAndDefaultValue } from 'src/contexts/ContentContext';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport {\n EventGroupingType,\n EventSort,\n EventTimeFrameFilter,\n PointOfSalePaymentState,\n PointOfSaleSaleStatus,\n} from 'src/WebApiController';\n\nimport { ContentId } from './contentId';\n\n// Please keep this map in alphabetical order\nexport const ContentIds: Record = {\n [ContentId.Above]: {\n id: ContentId.Above,\n defaultValue: 'Above',\n },\n [ContentId.AbsoluteAmount]: {\n id: ContentId.AbsoluteAmount,\n defaultValue: 'Absolute Amount',\n },\n [ContentId.AbsoluteDollarValue]: {\n id: ContentId.AbsoluteDollarValue,\n defaultValue: 'Absolute Dollar Value',\n },\n [ContentId.AbsoluteRankPremium]: {\n id: ContentId.AbsoluteRankPremium,\n defaultValue: 'Absolute Rank Premium',\n },\n [ContentId.ABTest]: {\n id: ContentId.ABTest,\n defaultValue: 'AB Test',\n },\n [ContentId.Access]: {\n id: ContentId.Access,\n defaultValue: 'Access',\n },\n [ContentId.AccessToViewUnauthorized]: {\n id: ContentId.AccessToViewUnauthorized,\n defaultValue: 'You are not authorized to access this view.',\n },\n [ContentId.AccordianToggle]: {\n id: ContentId.AccordianToggle,\n defaultValue: 'Toggle',\n },\n [ContentId.Account]: {\n id: ContentId.Account,\n defaultValue: 'Account',\n },\n [ContentId.Account_SetPrice_Details]: {\n id: ContentId.Account_SetPrice_Details,\n defaultValue: 'Configure pricing settings for the account',\n },\n [ContentId.AccountEmail]: {\n id: ContentId.AccountEmail,\n defaultValue: 'Account email',\n },\n [ContentId.AccountInformation]: {\n id: ContentId.AccountInformation,\n defaultValue: 'Account information',\n },\n [ContentId.Accounting]: {\n id: ContentId.Accounting,\n defaultValue: 'Accounting',\n },\n [ContentId.Accounting_ViewAll_Details]: {\n id: ContentId.Accounting_ViewAll_Details,\n defaultValue: 'View all sellers accounting details',\n },\n [ContentId.Accounting_ViewPaymentsOnSale_Details]: {\n id: ContentId.Accounting_ViewPaymentsOnSale_Details,\n defaultValue: 'View marketplace payments on each sale',\n },\n [ContentId.Accounting_ViewStubhubPayments_Details]: {\n id: ContentId.Accounting_ViewStubhubPayments_Details,\n defaultValue: 'View existing payments on StubHub',\n },\n [ContentId.AccountName]: {\n id: ContentId.AccountName,\n defaultValue: 'Account name',\n },\n [ContentId.AccountNotSetupForAnyMarketplace]: {\n id: ContentId.AccountNotSetupForAnyMarketplace,\n defaultValue:\n 'Your account is not setup to broadcast or sync with any marketplace. All listing and sale actions are not available. Please contact us to finish setting up the account.',\n },\n [ContentId.Accounts]: {\n id: ContentId.Accounts,\n defaultValue: 'Accounts',\n },\n [ContentId.Accounts_ViewAll_Details]: {\n id: ContentId.Accounts_ViewAll_Details,\n defaultValue: 'View all available accounts for the seller',\n },\n [ContentId.Actions]: {\n id: ContentId.Actions,\n defaultValue: 'Actions',\n },\n [ContentId.ActivateRole]: {\n id: ContentId.ActivateRole,\n defaultValue: 'Activate Role',\n },\n [ContentId.ActivateUser]: {\n id: ContentId.ActivateUser,\n defaultValue: 'Activate User',\n },\n [ContentId.Active]: {\n id: ContentId.Active,\n defaultValue: 'Active',\n },\n [ContentId.ActiveListingsHeader]: {\n id: ContentId.ActiveListingsHeader,\n defaultValue: 'Set number of active listings',\n },\n [ContentId.ActiveListingsDescription]: {\n id: ContentId.ActiveListingsDescription,\n defaultValue: 'Limit your active listings within any group',\n },\n [ContentId.Activity]: {\n id: ContentId.Activity,\n defaultValue: 'Activity',\n },\n [ContentId.ActivityLogDate]: {\n id: ContentId.ActivityLogDate,\n defaultValue: 'Activity Date',\n },\n [ContentId.ActivityLogActionType]: {\n id: ContentId.ActivityLogActionType,\n defaultValue: 'Activity Type',\n },\n [ContentId.ActivityLogInitiatedBy]: {\n id: ContentId.ActivityLogInitiatedBy,\n defaultValue: 'Initiated By',\n },\n [ContentId.ActivityLogAdditionalInfo]: {\n id: ContentId.ActivityLogAdditionalInfo,\n defaultValue: 'Additional Info',\n },\n [ContentId.ActivityLogLaunchButtonText]: {\n id: ContentId.ActivityLogLaunchButtonText,\n defaultValue: 'History',\n },\n [ContentId.Actual]: {\n id: ContentId.Actual,\n defaultValue: 'Actual',\n },\n [ContentId.ActualSellThroughRate]: {\n id: ContentId.ActualSellThroughRate,\n defaultValue: 'Actual Sell-Through Rate',\n },\n [ContentId.ActualSTR]: {\n id: ContentId.ActualSTR,\n defaultValue: 'Act. STR',\n },\n [ContentId.AdCampaigns]: {\n id: ContentId.AdCampaigns,\n defaultValue: 'Ad Campaigns',\n },\n [ContentId.AddABTest]: {\n id: ContentId.AddABTest,\n defaultValue: 'Add AB Test',\n },\n [ContentId.AddAnotherSplit]: {\n id: ContentId.AddAnotherSplit,\n defaultValue: 'Add Another Split',\n },\n [ContentId.AddedToSale]: {\n id: ContentId.AddedToSale,\n defaultValue: 'Added to Sale',\n },\n [ContentId.AddFilterToShowResult]: {\n id: ContentId.AddFilterToShowResult,\n defaultValue: 'Add a filter to show results',\n },\n [ContentId.AddHurdle]: {\n id: ContentId.AddHurdle,\n defaultValue: 'Add Hurdle',\n },\n [ContentId.AddNameToCreateGroup]: {\n id: ContentId.AddNameToCreateGroup,\n defaultValue: 'Add a name to create a new group',\n },\n [ContentId.AddNewDeal]: {\n id: ContentId.AddNewDeal,\n defaultValue: 'Add New Deal',\n },\n [ContentId.AddNewSection]: {\n id: ContentId.AddNewSection,\n defaultValue: 'Add new section',\n },\n [ContentId.AddOverride]: {\n id: ContentId.AddOverride,\n defaultValue: 'Add Override',\n },\n [ContentId.AddRow]: {\n id: ContentId.AddRow,\n defaultValue: 'Add Row',\n },\n [ContentId.AddRule]: {\n id: ContentId.AddRule,\n defaultValue: '+ Add Rule',\n },\n [ContentId.AddSplit]: {\n id: ContentId.AddSplit,\n defaultValue: 'Add Split',\n },\n [ContentId.AddToGroup]: {\n id: ContentId.AddToGroup,\n defaultValue: 'Add to Group',\n },\n [ContentId.AddToSale]: {\n id: ContentId.AddToSale,\n defaultValue: 'Add to Sale',\n },\n [ContentId.AddValues]: {\n id: ContentId.AddValues,\n defaultValue: 'Add Values',\n },\n [ContentId.AdGroups]: {\n id: ContentId.AdGroups,\n defaultValue: 'Ad Groups',\n },\n [ContentId.Add]: {\n id: ContentId.Add,\n defaultValue: 'Add',\n },\n [ContentId.AddAccountAction]: {\n id: ContentId.AddAccountAction,\n defaultValue: 'Add new account',\n },\n [ContentId.AddChargeOrCredit]: {\n id: ContentId.AddChargeOrCredit,\n defaultValue: 'Add charge or credit',\n },\n [ContentId.AddColumns]: {\n id: ContentId.AddColumns,\n defaultValue: 'Add columns',\n },\n [ContentId.AddCommission]: {\n id: ContentId.AddCommission,\n defaultValue: 'Add Commission',\n },\n [ContentId.AddCostAction]: {\n id: ContentId.AddCostAction,\n defaultValue: 'Add Cost',\n },\n [ContentId.AddCostCredit]: {\n id: ContentId.AddCostCredit,\n defaultValue: 'Add Cost/Credit',\n },\n [ContentId.AddCustomColumn]: {\n id: ContentId.AddCustomColumn,\n defaultValue: 'Add custom column',\n },\n [ContentId.AddFilter]: {\n id: ContentId.AddFilter,\n defaultValue: 'Add Filter',\n },\n [ContentId.AddGroup]: {\n id: ContentId.AddGroup,\n defaultValue: 'Add Group',\n },\n [ContentId.AddInventoryReport]: {\n id: ContentId.AddInventoryReport,\n defaultValue: 'Add Inventory Report',\n },\n [ContentId.AddLineItem]: {\n id: ContentId.AddLineItem,\n defaultValue: 'Add line item',\n },\n [ContentId.AddMarketplaceSale]: {\n id: ContentId.AddMarketplaceSale,\n defaultValue: 'Add Marketplace Sale',\n },\n [ContentId.AddMembersToThisTeam]: {\n id: ContentId.AddMembersToThisTeam,\n defaultValue: 'Add members to this team',\n },\n [ContentId.AddMessagingSource]: {\n id: ContentId.AddMessagingSource,\n defaultValue: 'Add messaging source',\n },\n [ContentId.AddMessagingSourceDescription]: {\n id: ContentId.AddMessagingSourceDescription,\n defaultValue:\n 'Forward your email messages into your account to manage your purchases, transfers, and more.',\n },\n [ContentId.AddMessagingSourceStep1]: {\n id: ContentId.AddMessagingSourceStep1,\n defaultValue: 'Go to your email provider.',\n },\n [ContentId.AddMessagingSourceStep2]: {\n id: ContentId.AddMessagingSourceStep2,\n defaultValue: 'Set up forwarding to address below:',\n },\n [ContentId.AddMessagingSourceStep3]: {\n id: ContentId.AddMessagingSourceStep3,\n defaultValue: 'Start managing your messages.',\n },\n [ContentId.AddNewBuyer]: {\n id: ContentId.AddNewBuyer,\n defaultValue: 'Add New Buyer...',\n },\n [ContentId.AddNewOverrideFxRate]: {\n id: ContentId.AddNewOverrideFxRate,\n defaultValue: 'Add New Override Fx Rate',\n },\n [ContentId.AddNewTeam]: {\n id: ContentId.AddNewTeam,\n defaultValue: 'Add New Team',\n },\n [ContentId.AddNote]: {\n id: ContentId.AddNote,\n defaultValue: 'Add Note',\n },\n [ContentId.AddOfflineSale]: {\n id: ContentId.AddOfflineSale,\n defaultValue: 'Add Offline Sale',\n },\n [ContentId.AddOrUpdateFxOverrideWarning]: {\n id: ContentId.AddOrUpdateFxOverrideWarning,\n defaultValue:\n 'Adding or updating an FX rate override will adjust the unit cost on the affected listings.',\n },\n [ContentId.AddOverrideFxRate]: {\n id: ContentId.AddOverrideFxRate,\n defaultValue: 'Add Override Fx Rate',\n },\n [ContentId.AddPaymentMethodAction]: {\n id: ContentId.AddPaymentMethodAction,\n defaultValue: 'Add new payment method',\n },\n [ContentId.AddPayment]: {\n id: ContentId.AddPayment,\n defaultValue: 'Add Payment',\n },\n [ContentId.AddPlaceholder]: {\n id: ContentId.AddPlaceholder,\n defaultValue: 'Add Placeholder',\n },\n [ContentId.AddPlaceholderAdditionalInfoMessage]: {\n id: ContentId.AddPlaceholderAdditionalInfoMessage,\n defaultValue: 'Tell use more about your placeholder inventory',\n },\n [ContentId.AddPurchase]: {\n id: ContentId.AddPurchase,\n defaultValue: 'Add Purchase',\n },\n [ContentId.AddPurchasePaymentMethod]: {\n id: ContentId.AddPurchasePaymentMethod,\n defaultValue: 'Add Purchase Payment Method',\n },\n [ContentId.AddPurchaseVendor]: {\n id: ContentId.AddPurchaseVendor,\n defaultValue: 'Add Purchase Vendor',\n },\n [ContentId.AddPurchaseVendorAccount]: {\n id: ContentId.AddPurchaseVendorAccount,\n defaultValue: 'Add Purchase Vendor Account',\n },\n [ContentId.AddReport]: {\n id: ContentId.AddReport,\n defaultValue: 'Add Report',\n },\n [ContentId.AddSalesReport]: {\n id: ContentId.AddSalesReport,\n defaultValue: 'Add Sales Report',\n },\n [ContentId.AddSeatSaver]: {\n id: ContentId.AddSeatSaver,\n defaultValue: 'Add Seat Saver',\n },\n [ContentId.AddSeatSaveEventSearchMessage]: {\n id: ContentId.AddSeatSaveEventSearchMessage,\n defaultValue: 'What events are your seat saver for?',\n },\n [ContentId.AddSeatSaverAdditionalInfoMessage]: {\n id: ContentId.AddSeatSaverAdditionalInfoMessage,\n defaultValue: 'Tell us more about your seat saver',\n },\n [ContentId.AddSection]: {\n id: ContentId.AddSection,\n defaultValue: 'Add Section',\n },\n [ContentId.AddSource]: {\n id: ContentId.AddSource,\n defaultValue: 'Add source',\n },\n [ContentId.AddTag]: {\n id: ContentId.AddTag,\n defaultValue: 'Add Tag',\n },\n [ContentId.AddTagValues]: {\n id: ContentId.AddTagValues,\n defaultValue: 'Add Tag Values',\n },\n [ContentId.AddTagValuesSelected]: {\n id: ContentId.AddTagValuesSelected,\n defaultValue: 'Add Tag Values for Selected',\n },\n [ContentId.AddTagValuesAllVisible]: {\n id: ContentId.AddTagValuesAllVisible,\n defaultValue: 'Add Tag Values for All Visible Listings',\n },\n [ContentId.AddTarget]: {\n id: ContentId.AddTarget,\n defaultValue: 'Add target',\n },\n [ContentId.AddTickets]: {\n id: ContentId.AddTickets,\n defaultValue: 'Add Tickets',\n },\n [ContentId.AddTicketsForThisEvent]: {\n id: ContentId.AddTicketsForThisEvent,\n defaultValue: 'Add Tickets for This Event',\n },\n [ContentId.AddUser]: {\n id: ContentId.AddUser,\n defaultValue: 'Add User',\n },\n [ContentId.AddUsersAndGroups]: {\n id: ContentId.AddUsersAndGroups,\n defaultValue: 'Add users and groups',\n },\n [ContentId.AddUserToRole]: {\n id: ContentId.AddUserToRole,\n defaultValue: 'Add users to this role',\n },\n [ContentId.AddValue]: {\n id: ContentId.AddValue,\n defaultValue: 'Add Value',\n },\n [ContentId.AdjustFiltersSuggestion]: {\n id: ContentId.AdjustFiltersSuggestion,\n defaultValue: 'Try adjusting your filters to broaden the search criteria.',\n },\n [ContentId.AdjustFloor]: {\n id: ContentId.AdjustFloor,\n defaultValue: 'Adjust Floor',\n },\n [ContentId.AdjustMyPrice]: {\n id: ContentId.AdjustMyPrice,\n defaultValue: 'Adjust my price',\n },\n [ContentId.AdjustPrice]: {\n id: ContentId.AdjustPrice,\n defaultValue: 'Adjust Price',\n },\n [ContentId.AdjustPricesBy]: {\n id: ContentId.AdjustPricesBy,\n defaultValue: 'Adjust prices by',\n },\n [ContentId.AdjustPricingCeilingAllVisible]: {\n id: ContentId.AdjustPricingCeilingAllVisible,\n defaultValue: 'Adjust Proceeds Ceiling for All Visible Listings',\n },\n [ContentId.AdjustPricingFloorAllVisible]: {\n id: ContentId.AdjustPricingFloorAllVisible,\n defaultValue: 'Adjust Proceeds Floor for All Visible Listings',\n },\n [ContentId.AdjustPricingFloorSelected]: {\n id: ContentId.AdjustPricingFloorSelected,\n defaultValue: 'Adjust Proceeds Floor for Selected',\n },\n [ContentId.AdjustPricingCeilingSelected]: {\n id: ContentId.AdjustPricingCeilingSelected,\n defaultValue: 'Adjust Proceeds Ceiling for Selected',\n },\n [ContentId.AdjustPricingFloor]: {\n id: ContentId.AdjustPricingFloor,\n defaultValue: 'Adjust Proceeds Floor',\n },\n [ContentId.AdjustPricingCeiling]: {\n id: ContentId.AdjustPricingCeiling,\n defaultValue: 'Adjust Proceeds Ceiling',\n },\n [ContentId.AdjustProceedsFloor]: {\n id: ContentId.AdjustProceedsFloor,\n defaultValue: 'Adjust Proceeds Floor',\n },\n [ContentId.AdjustProceedsCeiling]: {\n id: ContentId.AdjustProceedsCeiling,\n defaultValue: 'Adjust Proceeds Ceiling',\n },\n [ContentId.Advanced]: {\n id: ContentId.Advanced,\n defaultValue: 'Advanced',\n },\n [ContentId.AdPlatform_Edit_Details]: {\n id: ContentId.AdPlatform_Edit_Details,\n defaultValue: 'Read/Write access to Sponsored Listings Page',\n },\n [ContentId.AdvancedAutopricingSettings]: {\n id: ContentId.AdvancedAutopricingSettings,\n defaultValue: 'Advanced Autopricing Settings',\n },\n [ContentId.AdvancedSearch]: {\n id: ContentId.AdvancedSearch,\n defaultValue: 'Advanced Search',\n },\n [ContentId.AdvancedSettings]: {\n id: ContentId.AdvancedSettings,\n defaultValue: 'Advanced settings',\n },\n [ContentId.AggressiveOption]: {\n id: ContentId.AggressiveOption,\n defaultValue: 'Aggressive (2sd)',\n },\n /**\n * @deprecated Unused\n */\n [ContentId.Ago]: {\n id: ContentId.Ago,\n defaultValue: 'ago',\n },\n [ContentId.AISuggestion]: {\n id: ContentId.AISuggestion,\n defaultValue: 'AI suggestion',\n },\n [ContentId.AllAmex]: {\n id: ContentId.AllAmex,\n defaultValue: 'All Amex',\n },\n [ContentId.AllAvailableMerges]: {\n id: ContentId.AllAvailableMerges,\n defaultValue: 'All available merges',\n },\n [ContentId.AllFulfillmentStates]: {\n id: ContentId.AllFulfillmentStates,\n defaultValue: 'All Fulfillment States',\n },\n [ContentId.AllGenres]: {\n id: ContentId.AllGenres,\n defaultValue: 'All Genres',\n },\n [ContentId.AllInPriceAutoCalculationInfo]: {\n id: ContentId.AllInPriceAutoCalculationInfo,\n defaultValue:\n 'All-in price is estimated from your list price plus fees (if any).',\n },\n [ContentId.AllListings]: {\n id: ContentId.AllListings,\n defaultValue: 'All listings',\n },\n [ContentId.AllMarketplaces]: {\n id: ContentId.AllMarketplaces,\n defaultValue: 'All Marketplaces',\n },\n [ContentId.AllMastercard]: {\n id: ContentId.AllMastercard,\n defaultValue: 'All MasterCard',\n },\n [ContentId.AllMessages]: {\n id: ContentId.AllMessages,\n defaultValue: 'All messages',\n },\n [ContentId.Allocate]: {\n id: ContentId.Allocate,\n defaultValue: 'Allocate',\n },\n [ContentId.AllocatedListing]: {\n id: ContentId.AllocatedListing,\n defaultValue: 'Allocated Listing',\n },\n [ContentId.AllocateToAnyAvailableSeats]: {\n id: ContentId.AllocateToAnyAvailableSeats,\n defaultValue: 'Allocate to any available seats',\n },\n [ContentId.AllocateToDifferentTickets]: {\n id: ContentId.AllocateToDifferentTickets,\n defaultValue: 'Allocate to different tickets',\n },\n [ContentId.AllocateToListingTickets]: {\n id: ContentId.AllocateToListingTickets,\n defaultValue: 'Allocate to listing tickets',\n },\n [ContentId.Allocation]: {\n id: ContentId.Allocation,\n defaultValue: 'Allocation',\n },\n [ContentId.AllowBroadcast]: {\n id: ContentId.AllowBroadcast,\n defaultValue: 'Allow Broadcast',\n },\n [ContentId.AllowMutipleValues]: {\n id: ContentId.AllowMutipleValues,\n defaultValue: 'Allow Mutiple Values',\n },\n [ContentId.AllPayments]: {\n id: ContentId.AllPayments,\n defaultValue: 'All Payments',\n },\n [ContentId.AllPaymentTypes]: {\n id: ContentId.AllPaymentTypes,\n defaultValue: 'All Payment Types',\n },\n [ContentId.AllSubGenres]: {\n id: ContentId.AllSubGenres,\n defaultValue: 'All sub-genres',\n },\n [ContentId.AllVisa]: {\n id: ContentId.AllVisa,\n defaultValue: 'All Visa',\n },\n [ContentId.AlternativeTickets]: {\n id: ContentId.AlternativeTickets,\n defaultValue: 'Alternative Tickets',\n },\n [ContentId.AlternativeTicketsBuyerCompensation]: {\n id: ContentId.AlternativeTicketsBuyerCompensation,\n defaultValue: 'Alternative Tickets - Buyer Compensation',\n },\n [ContentId.AmountType]: {\n id: ContentId.AmountType,\n defaultValue: 'Amount Type',\n },\n [ContentId.Amphitheater]: {\n id: ContentId.Amphitheater,\n defaultValue: 'Amphitheater',\n },\n [ContentId.Ampitheater]: {\n id: ContentId.Ampitheater,\n defaultValue: 'Ampitheater',\n },\n [ContentId.And]: {\n id: ContentId.And,\n defaultValue: 'And',\n },\n [ContentId.Angle]: {\n id: ContentId.Angle,\n defaultValue: 'Angle',\n },\n [ContentId.App]: {\n id: ContentId.App,\n defaultValue: 'App',\n },\n [ContentId.AppendSeatTraits]: {\n id: ContentId.AppendSeatTraits,\n defaultValue: 'Append Seat Trait',\n },\n [ContentId.ApplicationTempData]: {\n id: ContentId.ApplicationTempData,\n defaultValue: 'Application Temp Data',\n },\n [ContentId.Apply]: {\n id: ContentId.Apply,\n defaultValue: 'Apply',\n },\n [ContentId.ApplyCompListingSettings]: {\n id: ContentId.ApplyCompListingSettings,\n defaultValue: 'Apply Comp Listing Settings',\n },\n [ContentId.ApplyAdvancedPricingSettings]: {\n id: ContentId.ApplyAdvancedPricingSettings,\n defaultValue: 'Apply Advanced Pricing Settings',\n },\n [ContentId.ApplyFilter]: {\n id: ContentId.ApplyFilter,\n defaultValue: 'Apply filter',\n },\n [ContentId.ApplyGroupingTemplatesToAllEventsPrompt]: {\n id: ContentId.ApplyGroupingTemplatesToAllEventsPrompt,\n defaultValue:\n 'Applying the grouping templates to all your events will override your current edits. Are you sure?',\n },\n [ContentId.ApplyAutoPricingSettings]: {\n id: ContentId.ApplyAutoPricingSettings,\n defaultValue: 'Apply Autopricing Settings',\n },\n [ContentId.ApplyPricingProtectionSettings]: {\n id: ContentId.ApplyPricingProtectionSettings,\n defaultValue: 'Apply Pricing Protection Settings',\n },\n [ContentId.ApplyToAll]: {\n id: ContentId.ApplyToAll,\n defaultValue: 'Apply to all',\n },\n [ContentId.ApplyToAllEvents]: {\n id: ContentId.ApplyToAllEvents,\n defaultValue: 'Apply to All Events',\n },\n [ContentId.ApplyUndercutSettings]: {\n id: ContentId.ApplyUndercutSettings,\n defaultValue: 'Apply Undercut Settings',\n },\n [ContentId.Approved]: {\n id: ContentId.Approved,\n defaultValue: 'Approved',\n },\n [ContentId.ApprovedForQualityControl]: {\n id: ContentId.ApprovedForQualityControl,\n defaultValue: 'Approved for Quality Control',\n },\n [ContentId.AppVersion]: {\n id: ContentId.AppVersion,\n defaultValue: 'Application Version',\n },\n [ContentId.Area]: {\n id: ContentId.Area,\n defaultValue: 'Area',\n },\n [ContentId.AreYouSure]: {\n id: ContentId.AreYouSure,\n defaultValue: 'Are you sure?',\n },\n [ContentId.AreYouSureEditRowsMultipleSections]: {\n id: ContentId.AreYouSureEditRowsMultipleSections,\n defaultValue:\n 'Are you sure you want to edit rows across multiple sections?',\n },\n [ContentId.AreYouSureYouWantToRestoreThisPurchase]: {\n id: ContentId.AreYouSureYouWantToRestoreThisPurchase,\n defaultValue: 'Are you sure you want to restore this purchase?',\n },\n [ContentId.AscendingAbbreviated]: {\n id: ContentId.AscendingAbbreviated,\n defaultValue: 'Asc',\n },\n [ContentId.AutoComp]: {\n id: ContentId.AutoComp,\n defaultValue: 'Auto Comp',\n },\n [ContentId.AutoFulfillWithSpace]: {\n id: ContentId.AutoFulfillWithSpace,\n defaultValue: 'Auto Fulfill',\n },\n [ContentId.AutoGroup]: {\n id: ContentId.AutoGroup,\n defaultValue: 'Auto Group',\n },\n [ContentId.AutopricingInfo]: {\n id: ContentId.AutopricingInfo,\n defaultValue: 'Protect and adjust your listing as the market moves.',\n },\n [ContentId.AutoPricingResult]: {\n id: ContentId.AutoPricingResult,\n defaultValue: 'Autopricing Result',\n },\n [ContentId.BelowThe]: {\n id: ContentId.BelowThe,\n defaultValue: 'Below the',\n },\n [ContentId.BetterZonesDetail]: {\n id: ContentId.BetterZonesDetail,\n defaultValue:\n 'Compare to all sections in your zone, and zones ranked above yours on the Edit Map tab',\n },\n [ContentId.BuildReport]: {\n id: ContentId.BuildReport,\n defaultValue: 'Build Report',\n },\n [ContentId.BulkAppendSeatTraitInfoMessage]: {\n id: ContentId.BulkAppendSeatTraitInfoMessage,\n defaultValue: 'Add new seat traits without removing existing ones.',\n },\n [ContentId.BulkEditDeliveryTypePurchaseMessage]: {\n id: ContentId.BulkEditDeliveryTypePurchaseMessage,\n defaultValue:\n 'Updating delivery on the purchase order will also update the corresponding listings.',\n },\n [ContentId.BulkEditGettingPreview]: {\n id: ContentId.BulkEditGettingPreview,\n defaultValue: \"We're generating a preview of your bulk edit.\",\n },\n [ContentId.BulkEditListingGroupSettings]: {\n id: ContentId.BulkEditListingGroupSettings,\n defaultValue: 'Bulk Edit Listing Group Settings',\n },\n [ContentId.BulkEditListingGroupSettingsWarning]: {\n id: ContentId.BulkEditListingGroupSettingsWarning,\n defaultValue:\n 'The changes will apply exclusively to listing groups. The preview will display all listings that belong to any impacted listing group.',\n },\n [ContentId.BulkEditNoCommissionProvidedWarning]: {\n id: ContentId.BulkEditNoCommissionProvidedWarning,\n defaultValue:\n 'Providing no commissions will clear commissions for all selected purchases.',\n },\n [ContentId.BulkEditNoSeatTraitsProvidedWarning]: {\n id: ContentId.BulkEditNoSeatTraitsProvidedWarning,\n defaultValue:\n 'Providing no seat traits will clear seat traits for all selected items.',\n },\n [ContentId.BulkEditSuccessWithWarnings]: {\n id: ContentId.BulkEditSuccessWithWarnings,\n defaultValue: 'The process completed with some warnings.',\n },\n [ContentId.BulkEditTicketTypePriorityInstruction]: {\n id: ContentId.BulkEditTicketTypePriorityInstruction,\n defaultValue:\n 'Select the delivery type to update the delivery strategy. Only listings that match the selected delivery type will be updated.',\n },\n [ContentId.BulkMarkPurchaseAsPaid]: {\n id: ContentId.BulkMarkPurchaseAsPaid,\n defaultValue: 'Mark Purchase As Paid',\n },\n [ContentId.BulkMarkPurchaseAsPaidMessage]: {\n id: ContentId.BulkMarkPurchaseAsPaidMessage,\n defaultValue:\n 'You are about to mark all the selected purchase order as paid. Continue?',\n },\n [ContentId.BulkMarkPurchaseAsPaidWarning]: {\n id: ContentId.BulkMarkPurchaseAsPaidWarning,\n defaultValue:\n 'If there is any vendor account of the select purchase order does not have a default payment method, the system will auto create one for your account.',\n },\n [ContentId.BulkReplaceAndOverrideSeatTraitInfoMessage]: {\n id: ContentId.BulkReplaceAndOverrideSeatTraitInfoMessage,\n defaultValue:\n 'Overwrite all existing seat traits with new ones. Providing no seat traits will clear traits for all selected items.',\n },\n [ContentId.BulkUpdatePlaceholdersMessage]: {\n id: ContentId.BulkUpdatePlaceholdersMessage,\n defaultValue:\n 'Bulk action will apply only to the selected placeholder listing(s).',\n },\n [ContentId.BulkUpdatePurchaseCurrency]: {\n id: ContentId.BulkUpdatePurchaseCurrency,\n defaultValue: 'Update Purchase Currency',\n },\n [ContentId.BulkUpdatePurchaseCurrencyActionText]: {\n id: ContentId.BulkUpdatePurchaseCurrencyActionText,\n defaultValue:\n 'This action updates the currency on the selected purchases without changing the purchase cost. Continue?',\n },\n [ContentId.BulkUpdatePurchaseCurrencyInfoText]: {\n id: ContentId.BulkUpdatePurchaseCurrencyInfoText,\n defaultValue:\n 'Updating currency on the purchase will trigger a re-computation of costs for associated listings and sales based on the updated currency.',\n },\n [ContentId.BulkUpdateSeatTraitInfoMessage]: {\n id: ContentId.BulkUpdateSeatTraitInfoMessage,\n defaultValue:\n 'Updating will override the current seat traits with the selected traits.',\n },\n [ContentId.BulkWasteTicketsConfirmation]: {\n id: ContentId.BulkWasteTicketsConfirmation,\n defaultValue:\n 'Are you sure you want to create a Waste Sale for the selected listings? This action will create a record of a sale with $0 proceeds for the unsold tickets.',\n },\n [ContentId.BuyerAccount]: {\n id: ContentId.BuyerAccount,\n defaultValue: 'Buyer Account',\n },\n [ContentId.BuyerDelivery]: {\n id: ContentId.BuyerDelivery,\n defaultValue: 'Buyer Delivery',\n },\n [ContentId.CancelBulkTicketGroupWarning]: {\n id: ContentId.CancelBulkTicketGroupWarning,\n defaultValue:\n 'Are you sure you want to cancel the selected ticket group(s)? This action is irreversible. Associated sales will be deallocated and moved to Pending Confirmation.',\n },\n [ContentId.CancelBulkPurchaseWarning]: {\n id: ContentId.CancelBulkPurchaseWarning,\n defaultValue:\n 'Are you sure you want to cancel the selected purchase order(s)? This action is reversible. Associated sales will be deallocated and moved to Pending Confirmation.',\n },\n [ContentId.CancellationReason]: {\n id: ContentId.CancellationReason,\n defaultValue: 'Cancellation Reason',\n },\n [ContentId.CancelledOrders]: {\n id: ContentId.CancelledOrders,\n defaultValue: 'Cancelled Orders',\n },\n [ContentId.CancelledProceeds]: {\n id: ContentId.CancelledProceeds,\n defaultValue: 'Cancelled Proceeds',\n },\n [ContentId.CancelledProceedsSettingDescription]: {\n id: ContentId.CancelledProceedsSettingDescription,\n defaultValue:\n 'Automatically add \"Cancelled Proceeds\" charges to cancelled orders',\n },\n [ContentId.CancelledProceedsSettingToggle]: {\n id: ContentId.CancelledProceedsSettingToggle,\n defaultValue: 'Add Charges Automatically',\n },\n [ContentId.CancelPurchases]: {\n id: ContentId.CancelPurchases,\n defaultValue: 'Cancel Purchases',\n },\n [ContentId.CancelSingleTicketGroupWarning]: {\n id: ContentId.CancelSingleTicketGroupWarning,\n defaultValue:\n 'Are you sure you want to cancel this ticket group? This action is irreversible. Associated sales will be deallocated and moved to Pending Confirmation.',\n },\n [ContentId.CancelTicketGroupsParenth]: {\n id: ContentId.CancelTicketGroupsParenth,\n defaultValue: 'Cancel Ticket Group(s)',\n },\n [ContentId.CancelPurchasesParenth]: {\n id: ContentId.CancelPurchasesParenth,\n defaultValue: 'Cancel Purchase(s)',\n },\n [ContentId.CantAllocateMore100Commission]: {\n id: ContentId.CantAllocateMore100Commission,\n defaultValue: 'You cannot allocate more than 100% commission.',\n },\n [ContentId.Carts]: {\n id: ContentId.Carts,\n defaultValue: 'Carts',\n },\n [ContentId.Ceiling]: {\n id: ContentId.Ceiling,\n defaultValue: 'Ceiling',\n },\n [ContentId.Center]: {\n id: ContentId.Center,\n defaultValue: 'Center',\n },\n [ContentId.ChargeAmount]: {\n id: ContentId.ChargeAmount,\n defaultValue: 'Charge Amount',\n },\n [ContentId.ChargeReasons]: {\n id: ContentId.ChargeReasons,\n defaultValue: 'Charge Reasons',\n },\n [ContentId.Cheaper]: {\n id: ContentId.Cheaper,\n defaultValue: 'Cheaper',\n },\n [ContentId.ChooseListing]: {\n id: ContentId.ChooseListing,\n defaultValue: 'Choose Listing',\n },\n [ContentId.ChooseSpecificSections]: {\n id: ContentId.ChooseSpecificSections,\n defaultValue: 'Choose specific sections',\n },\n [ContentId.ChooseTickets]: {\n id: ContentId.ChooseTickets,\n defaultValue: 'Choose Tickets',\n },\n [ContentId.Clear]: {\n id: ContentId.Clear,\n defaultValue: 'Clear',\n },\n [ContentId.CombineCornersAndEnds]: {\n id: ContentId.CombineCornersAndEnds,\n defaultValue: 'Combine corners and ends',\n },\n [ContentId.Commands]: {\n id: ContentId.Commands,\n defaultValue: 'Commands',\n },\n [ContentId.CommissionEligibilityDate]: {\n id: ContentId.CommissionEligibilityDate,\n defaultValue: 'Commission Eligibility Date',\n },\n [ContentId.CommissionEligible]: {\n id: ContentId.CommissionEligible,\n defaultValue: 'Commission Eligible',\n },\n [ContentId.CommissionerCostsAndCharges]: {\n id: ContentId.CommissionerCostsAndCharges,\n defaultValue: 'Commissioner Costs And Charges',\n },\n [ContentId.CommissionerProceedsAndCredits]: {\n id: ContentId.CommissionerProceedsAndCredits,\n defaultValue: 'Commissioner Proceeds And Credits',\n },\n [ContentId.CommissionerProfitAndLoss]: {\n id: ContentId.CommissionerProfitAndLoss,\n defaultValue: 'Commissioner Profit And Loss',\n },\n [ContentId.Commissions]: {\n id: ContentId.Commissions,\n defaultValue: 'Commissions',\n },\n [ContentId.Compensation]: {\n id: ContentId.Compensation,\n defaultValue: 'Compensation',\n },\n [ContentId.CompletedOn]: {\n id: ContentId.CompletedOn,\n defaultValue: 'Completed on',\n },\n [ContentId.ConfirmRemovePaymentReference]: {\n id: ContentId.ConfirmRemovePaymentReference,\n defaultValue:\n 'You are about to mark this sale as Unpaid. This action will remove the payment reference from the sale and unlink the payment. Continue?',\n },\n [ContentId.ConfirmResetOverride]: {\n id: ContentId.ConfirmResetOverride,\n defaultValue: 'You are about to reset the override on this sale. Continue?',\n },\n [ContentId.ConfirmUnLinkPaymentAndSaleTitle]: {\n id: ContentId.ConfirmUnLinkPaymentAndSaleTitle,\n defaultValue: 'Are you sure you want to unlink payment and sale?',\n },\n [ContentId.ConfirmUnLinkPaymentAndSaleBody]: {\n id: ContentId.ConfirmUnLinkPaymentAndSaleBody,\n defaultValue:\n 'The payment reference will be removed, and the sale will be marked as unpaid.',\n },\n [ContentId.ConfirmWaste]: {\n id: ContentId.ConfirmWaste,\n defaultValue: 'Confirm Waste',\n },\n [ContentId.Conflict]: {\n id: ContentId.Conflict,\n defaultValue: 'Conflict',\n },\n [ContentId.CommissionPayments]: {\n id: ContentId.CommissionPayments,\n defaultValue: 'Commission Payments',\n },\n [ContentId.ConnectedSeller]: {\n id: ContentId.ConnectedSeller,\n defaultValue: 'Connected Seller',\n },\n [ContentId.Consignment]: {\n id: ContentId.Consignment,\n defaultValue: 'Consignment',\n },\n [ContentId.Converted]: {\n id: ContentId.Converted,\n defaultValue: 'Converted',\n },\n [ContentId.ConvertedPaymentsAmount]: {\n id: ContentId.ConvertedPaymentsAmount,\n defaultValue: 'Converted Payments Amount',\n },\n [ContentId.ConvertPayment]: {\n id: ContentId.ConvertPayment,\n defaultValue: 'Convert Payment',\n },\n [ContentId.ConvertPurchasePayment]: {\n id: ContentId.ConvertPurchasePayment,\n defaultValue: 'Convert Purchase Payment',\n },\n [ContentId.ConvertCurrency]: {\n id: ContentId.ConvertCurrency,\n defaultValue: 'Convert Currency',\n },\n [ContentId.ConvertedPayment]: {\n id: ContentId.ConvertedPayment,\n defaultValue: 'Converted Payment',\n },\n [ContentId.ConvertedPaymentAmountMustBeGreaterThanZero]: {\n id: ContentId.ConvertedPaymentAmountMustBeGreaterThanZero,\n defaultValue: 'Converted payment amount must be greater than zero',\n },\n [ContentId.ConvertedTo]: {\n id: ContentId.ConvertedTo,\n defaultValue: 'Converted to',\n },\n [ContentId.ConvPmtAmt]: {\n id: ContentId.ConvPmtAmt,\n defaultValue: 'Conv. Pmt Amt',\n },\n [ContentId.Corners]: {\n id: ContentId.Corners,\n defaultValue: 'Corners',\n },\n [ContentId.CreateNewGroup]: {\n id: ContentId.CreateNewGroup,\n defaultValue: 'Create a new group',\n },\n [ContentId.CreditAmount]: {\n id: ContentId.CreditAmount,\n defaultValue: 'Credit Amount',\n },\n [ContentId.CreditReasons]: {\n id: ContentId.CreditReasons,\n defaultValue: 'Credit Reasons',\n },\n [ContentId.CustomRanks]: {\n id: ContentId.CustomRanks,\n defaultValue: 'Custom Ranks',\n },\n [ContentId.DateAdded]: {\n id: ContentId.DateAdded,\n defaultValue: 'Date Added',\n },\n [ContentId.DateRange]: {\n id: ContentId.DateRange,\n defaultValue: 'Date Range',\n },\n [ContentId.DeallocateSalesOfAffectedTicketsWarning]: {\n id: ContentId.DeallocateSalesOfAffectedTicketsWarning,\n defaultValue: 'Deallocate all associated sales of the affected tickets.',\n },\n [ContentId.ChangeGroup]: {\n id: ContentId.ChangeGroup,\n defaultValue: 'Change Group',\n },\n [ContentId.ChangeZone]: {\n id: ContentId.ChangeZone,\n defaultValue: 'Change Zone',\n },\n [ContentId.CheckVenueRows]: {\n id: ContentId.CheckVenueRows,\n defaultValue: 'Check Venue Rows',\n },\n [ContentId.CompListingMinCount]: {\n id: ContentId.CompListingMinCount,\n defaultValue: 'Comp. Listing Min Count',\n },\n [ContentId.CompListingMinQuantity]: {\n id: ContentId.CompListingMinQuantity,\n defaultValue: 'Comp. Listing Min Quantity',\n },\n [ContentId.CopiedWithExclamationMark]: {\n id: ContentId.CopiedWithExclamationMark,\n defaultValue: 'Copied!',\n },\n [ContentId.DefaultDelivery]: {\n id: ContentId.DefaultDelivery,\n defaultValue: 'Default Delivery',\n },\n [ContentId.Defect]: {\n id: ContentId.Defect,\n defaultValue: 'Defect',\n },\n [ContentId.DefaultDeliveryConfigurations]: {\n id: ContentId.DefaultDeliveryConfigurations,\n defaultValue: 'Default Delivery Configurations',\n },\n [ContentId.DefaultDeliveryConfigurationsDescription]: {\n id: ContentId.DefaultDeliveryConfigurationsDescription,\n defaultValue: 'Set default settings for new purchases with this vendor',\n },\n [ContentId.DelayBroadcastAfterInitialCreation]: {\n id: ContentId.DelayBroadcastAfterInitialCreation,\n defaultValue: 'Delay Broadcast After Initial Creation (Days)',\n },\n [ContentId.DeletePlaceholders]: {\n id: ContentId.DeletePlaceholders,\n defaultValue: 'Delete Placeholders',\n },\n [ContentId.DeleteSearchResultConfirm]: {\n id: ContentId.DeleteSearchResultConfirm,\n defaultValue: 'Delete this search result?',\n },\n [ContentId.DeliveryInfoChangePropagateToSalesConfirmation]: {\n id: ContentId.DeliveryInfoChangePropagateToSalesConfirmation,\n defaultValue:\n 'You are about to update the delivery information. Would you also like to update the delivery information for associated sales?',\n },\n [ContentId.DeliveryInfoChangePropagateToUnfulfilledSalesConfirmation]: {\n id: ContentId.DeliveryInfoChangePropagateToUnfulfilledSalesConfirmation,\n defaultValue: 'You are about to update the delivery information. Would you also like to update the delivery information for associated unfulfilled sales?',\n },\n [ContentId.DeliveryOverrideInfo]: {\n id: ContentId.DeliveryOverrideInfo,\n defaultValue:\n 'Default values are provided by delivery overrides from the corresponding event or vendor.',\n },\n [ContentId.DeliveryStrategy]: {\n id: ContentId.DeliveryStrategy,\n defaultValue: 'Delivery Strategy',\n },\n [ContentId.DeprecatingHeatMaps]: {\n id: ContentId.DeprecatingHeatMaps,\n defaultValue:\n 'Venue Geometry and Merged Venue Geometry heat maps are being deprecated. Please update to the latest recommended model.',\n },\n [ContentId.Deprioritize]: {\n id: ContentId.Deprioritize,\n defaultValue: 'Deprioritize',\n },\n [ContentId.DeprioritizeQuantitiesHeader]: {\n id: ContentId.DeprioritizeQuantitiesHeader,\n defaultValue: 'Deprioritize specific quantities',\n },\n [ContentId.DeprioritizeQuantitiesDescription]: {\n id: ContentId.DeprioritizeQuantitiesDescription,\n defaultValue: 'Rerank listings to push specific quantities to the bottom ',\n },\n [ContentId.DescendingAbbreviated]: {\n id: ContentId.DescendingAbbreviated,\n defaultValue: 'Desc',\n },\n [ContentId.Details]: {\n id: ContentId.Details,\n defaultValue: 'Details',\n },\n [ContentId.DetectionMode]: {\n id: ContentId.DetectionMode,\n defaultValue: 'Detection Mode',\n },\n [ContentId.DeterminePrice]: {\n id: ContentId.DeterminePrice,\n defaultValue: 'Determine Price',\n },\n [ContentId.DiscountApplied]: {\n id: ContentId.DiscountApplied,\n defaultValue: 'Discount Applied',\n },\n [ContentId.DonotDropMoreThan]: {\n id: ContentId.DonotDropMoreThan,\n defaultValue: \"Don't drop more than\",\n },\n [ContentId.DontUpdateExistingListings]: {\n id: ContentId.DontUpdateExistingListings,\n defaultValue: \"Don't update existing listings\",\n },\n [ContentId.DontUpdateExistingListingsOrSales]: {\n id: ContentId.DontUpdateExistingListingsOrSales,\n defaultValue: \"Don't update existing listings or sales\",\n },\n [ContentId.DownloadETickets]: {\n id: ContentId.DownloadETickets,\n defaultValue: 'Download E-Tickets',\n },\n [ContentId.Drafted]: {\n id: ContentId.Drafted,\n defaultValue: 'Drafted',\n },\n [ContentId.DontUpdateExistingPurchasesOrListings]: {\n id: ContentId.DontUpdateExistingPurchasesOrListings,\n defaultValue: \"Don't update existing purchases or listings\",\n },\n [ContentId.DroppedOrderPenalty]: {\n id: ContentId.DroppedOrderPenalty,\n defaultValue: 'Dropped Order Penalty',\n },\n [ContentId.DropYourFileAnywhereToUpload]: {\n id: ContentId.DropYourFileAnywhereToUpload,\n defaultValue: 'Drop your file anywhere to upload',\n },\n [ContentId.Edited]: {\n id: ContentId.Edited,\n defaultValue: 'Edited',\n },\n [ContentId.EditEventWarning3]: {\n id: ContentId.EditEventWarning3,\n defaultValue:\n 'Changing the event for the selected listings will reset listing details, including price settings, and update the event for associated sales. This action cannot be undone. Continue?',\n },\n [ContentId.EditMap]: {\n id: ContentId.EditMap,\n defaultValue: 'Edit Map',\n },\n [ContentId.EditTable]: {\n id: ContentId.EditTable,\n defaultValue: 'Edit Table',\n },\n [ContentId.EditZone]: {\n id: ContentId.EditZone,\n defaultValue: 'Edit Zone',\n },\n [ContentId.EmptyPurchaseCommissions]: {\n id: ContentId.EmptyPurchaseCommissions,\n defaultValue:\n 'There are no commissions set from the purchase for the tickets on this sale. You can either add a commission directly to the sale or update it from the purchase.',\n },\n [ContentId.EnableAutoAddCancelledProceeds]: {\n id: ContentId.EnableAutoAddCancelledProceeds,\n defaultValue:\n 'Enable automatically add cancelled proceeds when rejecting a sale',\n },\n [ContentId.EnableAutoFulfillOverride]: {\n id: ContentId.EnableAutoFulfillOverride,\n defaultValue: 'Enable AutoFulfill Override',\n },\n [ContentId.EnableDeliveryOverride]: {\n id: ContentId.EnableDeliveryOverride,\n defaultValue: 'Enable Delivery Override',\n },\n [ContentId.EnableNativeSyncLabel]: {\n id: ContentId.EnableNativeSyncLabel,\n defaultValue: 'Process via native system',\n },\n [ContentId.EnableNativeSyncExplanation]: {\n id: ContentId.EnableNativeSyncExplanation,\n defaultValue:\n 'Remove the listing from the external processor to handle it natively in our system',\n },\n [ContentId.Ends]: {\n id: ContentId.Ends,\n defaultValue: 'Ends',\n },\n [ContentId.EnterCompanionMode]: {\n id: ContentId.EnterCompanionMode,\n defaultValue: 'Enter Companion Mode',\n },\n [ContentId.EventCancellation]: {\n id: ContentId.EventCancellation,\n defaultValue: 'Event Cancellation',\n },\n [ContentId.EventConfig_Create_Details]: {\n id: ContentId.EventConfig_Create_Details,\n defaultValue: 'Ability to create event settings',\n },\n [ContentId.EventConfig_Edit_Details]: {\n id: ContentId.EventConfig_Edit_Details,\n defaultValue: 'Ability to edit event settings',\n },\n [ContentId.EventConfig_View_Details]: {\n id: ContentId.EventConfig_View_Details,\n defaultValue: 'Ability to view event settings',\n },\n [ContentId.EventDiscovery]: {\n id: ContentId.EventDiscovery,\n defaultValue: 'Event Discovery',\n },\n [ContentId.EventMap]: {\n id: ContentId.EventMap,\n defaultValue: 'Event Map',\n },\n [ContentId.EventNotReviewedSince]: {\n id: ContentId.EventNotReviewedSince,\n defaultValue: 'Event Not Reviewed Since',\n },\n [ContentId.EventState]: {\n id: ContentId.EventState,\n defaultValue: 'Event State',\n },\n [ContentId.ExcludeFanInventoryInfo]: {\n id: ContentId.ExcludeFanInventoryInfo,\n defaultValue:\n 'When enabled, only auto prices against broker inventory, excluding fan-to-fan marketplace listings',\n },\n [ContentId.ExcludeDefectsInfo]: {\n id: ContentId.ExcludeDefectsInfo,\n defaultValue:\n 'When enabled, will auto price against inventory with matching defects',\n },\n [ContentId.ExistingSections]: {\n id: ContentId.ExistingSections,\n defaultValue: 'Existing Sections',\n },\n [ContentId.ExitCompanionMode]: {\n id: ContentId.ExitCompanionMode,\n defaultValue: 'Exit Companion Mode',\n },\n [ContentId.ExperimentName]: {\n id: ContentId.ExperimentName,\n defaultValue: 'Experiment Name',\n },\n [ContentId.Experiments]: {\n id: ContentId.Experiments,\n defaultValue: 'Experiments',\n },\n [ContentId.ExportPurchases]: {\n id: ContentId.ExportPurchases,\n defaultValue: 'Export Purchases',\n },\n [ContentId.ExternalPaymentId]: {\n id: ContentId.ExternalPaymentId,\n defaultValue: 'External Payment ID',\n },\n [ContentId.ExternalPurchaseIdAbbreviated]: {\n id: ContentId.ExternalPurchaseIdAbbreviated,\n defaultValue: 'External PO Id',\n },\n [ContentId.FallbackSplit]: {\n id: ContentId.FallbackSplit,\n defaultValue: 'Fallback Split',\n },\n [ContentId.FallbackSplitInfo]: {\n id: ContentId.FallbackSplitInfo,\n defaultValue:\n 'In case your hurdle rules overlapped, you can setup a fallback hurdle to make sure what should be assigned.',\n },\n [ContentId.FarLeftAndFarRight]: {\n id: ContentId.FarLeftAndFarRight,\n defaultValue: 'Far Left and Far Right',\n },\n [ContentId.Filled]: {\n id: ContentId.Filled,\n defaultValue: 'Filled',\n },\n [ContentId.FilterQty]: {\n id: ContentId.FilterQty,\n defaultValue: 'Filter Qty',\n },\n [ContentId.FilterReportOptional]: {\n id: ContentId.FilterReportOptional,\n defaultValue: 'Filter report (optional)',\n },\n [ContentId.FinanceAPI]: {\n id: ContentId.FinanceAPI,\n defaultValue: 'Finance API',\n },\n [ContentId.FlashSales]: {\n id: ContentId.FlashSales,\n defaultValue: 'Flash Sales',\n },\n [ContentId.FlashSale]: {\n id: ContentId.FlashSale,\n defaultValue: 'Flash Sale',\n },\n [ContentId.Front]: {\n id: ContentId.Front,\n defaultValue: 'Front',\n },\n [ContentId.FuturePayments]: {\n id: ContentId.FuturePayments,\n defaultValue: 'Future Payments',\n },\n [ContentId.FX]: {\n id: ContentId.FX,\n defaultValue: 'FX',\n },\n [ContentId.FXRate]: {\n id: ContentId.FXRate,\n defaultValue: 'FX Rate',\n },\n [ContentId.General_ViewNotifications_Details]: {\n id: ContentId.General_ViewNotifications_Details,\n defaultValue: 'View all notifications',\n },\n [ContentId.General_ViewReleaseNotes_Details]: {\n id: ContentId.General_ViewReleaseNotes_Details,\n defaultValue: \"View all notes on the What's New page\",\n },\n [ContentId.GeneratingPreview]: {\n id: ContentId.GeneratingPreview,\n defaultValue: 'Generating Preview',\n },\n [ContentId.GroupInventory]: {\n id: ContentId.GroupInventory,\n defaultValue: 'Group inventory',\n },\n [ContentId.GroupListingsSettingRankPremium]: {\n id: ContentId.GroupListingsSettingRankPremium,\n defaultValue: 'Add a rank premium',\n },\n [ContentId.GroupListingsSettingQueuingLogic]: {\n id: ContentId.GroupListingsSettingQueuingLogic,\n defaultValue: 'Add queuing logic (optional)',\n },\n [ContentId.GroupListingsSettingBroadcasting]: {\n id: ContentId.GroupListingsSettingBroadcasting,\n defaultValue: 'Add broadcast settings (optional)',\n },\n [ContentId.HasUnmappedSales]: {\n id: ContentId.HasUnmappedSales,\n defaultValue: 'Has Unmapped Sales',\n },\n [ContentId.HasUnlinkedChargesCredits]: {\n id: ContentId.HasUnlinkedChargesCredits,\n defaultValue: 'Has Unlinked Charges/Credits',\n },\n [ContentId.HasUnpricedListings]: {\n id: ContentId.HasUnpricedListings,\n defaultValue: 'Has Unpriced Listings',\n },\n [ContentId.GUR]: {\n id: ContentId.GUR,\n defaultValue: 'GUR (Guaranteed)',\n },\n [ContentId.Help]: {\n id: ContentId.Help,\n defaultValue: 'Help',\n },\n [ContentId.HelpCenter]: {\n id: ContentId.HelpCenter,\n defaultValue: 'Help Center',\n },\n [ContentId.HideZoneMap]: {\n id: ContentId.HideZoneMap,\n defaultValue: 'Hide zone map',\n },\n [ContentId.Hour]: {\n id: ContentId.Hour,\n defaultValue: 'Hour',\n },\n [ContentId.Hours]: {\n id: ContentId.Hours,\n defaultValue: 'Hours',\n },\n [ContentId.IfPurchaseIsCreatedWith]: {\n id: ContentId.IfPurchaseIsCreatedWith,\n defaultValue: 'If purchase is created with',\n },\n [ContentId.IncludeBetterZones]: {\n id: ContentId.IncludeBetterZones,\n defaultValue: 'Include better zones',\n },\n [ContentId.IncludeDefects]: {\n id: ContentId.IncludeDefects,\n defaultValue: 'Include Defects',\n },\n [ContentId.IncludeHeldListings]: {\n id: ContentId.IncludeHeldListings,\n defaultValue: 'Include Held Listings',\n },\n [ContentId.IncompatiblePricingMode]: {\n id: ContentId.IncompatiblePricingMode,\n defaultValue: 'Incompatible AutoPricing Mode',\n },\n [ContentId.Inferred]: {\n id: ContentId.Inferred,\n defaultValue: 'Inferred',\n },\n [ContentId.Inventory_UpdateDeliveryStrategy_Details]: {\n id: ContentId.Inventory_UpdateDeliveryStrategy_Details,\n defaultValue: 'Permits updating delivery strategy of inventory',\n },\n [ContentId.Inventory_UpdateDeliveryStrategyOnIsPricerOf_Details]: {\n id: ContentId.Inventory_UpdateDeliveryStrategyOnIsPricerOf_Details,\n defaultValue:\n 'Permits updating delivery strategy of inventory where the user is the pricer',\n },\n [ContentId.Inventory_UpdateDeliveryStrategyOnPurchasedBy_Details]: {\n id: ContentId.Inventory_UpdateDeliveryStrategyOnPurchasedBy_Details,\n defaultValue:\n 'Permits updating delivery strategy of inventory that are purchased by the current user',\n },\n [ContentId.Information]: {\n id: ContentId.Information,\n defaultValue: 'Information',\n },\n [ContentId.InternallyGenerated]: {\n id: ContentId.InternallyGenerated,\n defaultValue: 'Internally Generated',\n },\n [ContentId.InventoryReportDescription]: {\n id: ContentId.InventoryReportDescription,\n defaultValue: 'All inventory on the POS',\n },\n [ContentId.InventoryStatus]: {\n id: ContentId.InventoryStatus,\n defaultValue: 'Inventory Status',\n },\n [ContentId.ItemsWillBeUpdatedIfApplicable]: {\n id: ContentId.ItemsWillBeUpdatedIfApplicable,\n defaultValue: 'items will be updated if applicable',\n },\n [ContentId.KeepExistingTicketsOption]: {\n id: ContentId.KeepExistingTicketsOption,\n defaultValue:\n 'Keep existing tickets: Retain the tickets already associated with the sale.',\n },\n [ContentId.KeepPaymentReference]: {\n id: ContentId.KeepPaymentReference,\n defaultValue: 'No, keep the payment reference',\n },\n [ContentId.Last3Days]: {\n id: ContentId.Last3Days,\n defaultValue: 'Last 3 Days',\n },\n [ContentId.Last2Weeks]: {\n id: ContentId.Last2Weeks,\n defaultValue: 'Last 2 Weeks',\n },\n [ContentId.LeftAndRight]: {\n id: ContentId.LeftAndRight,\n defaultValue: 'Left and Right',\n },\n [ContentId.LinkSale]: {\n id: ContentId.LinkSale,\n defaultValue: 'Link Sale',\n },\n [ContentId.ListingHasNoCurrentFloor]: {\n id: ContentId.ListingHasNoCurrentFloor,\n defaultValue: 'Listing has no current floor.',\n },\n [ContentId.ListingHasNoMarketprice]: {\n id: ContentId.ListingHasNoMarketprice,\n defaultValue: 'Listing has no market price.',\n },\n [ContentId.ListingHasNoUnitCost]: {\n id: ContentId.ListingHasNoUnitCost,\n defaultValue: 'Listing has no unit cost.',\n },\n [ContentId.ListingQty]: {\n id: ContentId.ListingQty,\n defaultValue: 'Listing Qty',\n },\n [ContentId.ListingQuantity]: {\n id: ContentId.ListingQuantity,\n defaultValue: 'Listing Quantity',\n },\n [ContentId.ListingsSortByHeader]: {\n id: ContentId.ListingsSortByHeader,\n defaultValue: 'Sort groups by',\n },\n [ContentId.ListingsGroupSortByDescription]: {\n id: ContentId.ListingsGroupSortByDescription,\n defaultValue: 'Add a custom sorting order within groups',\n },\n [ContentId.ListingUpdateConfirmation]: {\n id: ContentId.ListingUpdateConfirmation,\n defaultValue: 'Listing Updates Confirmation',\n },\n [ContentId.ListingWillBeSplitInto]: {\n id: ContentId.ListingWillBeSplitInto,\n defaultValue: 'Listing will be split into the following:',\n },\n [ContentId.LockCommission]: {\n id: ContentId.LockCommission,\n defaultValue: 'Lock Commission',\n },\n [ContentId.MappingError]: {\n id: ContentId.MappingError,\n defaultValue: 'Mapping Error',\n },\n [ContentId.MapTitle]: {\n id: ContentId.MapTitle,\n defaultValue: 'Map title',\n },\n [ContentId.MarkAsFulfilledWarning]: {\n id: ContentId.MarkAsFulfilledWarning,\n defaultValue:\n 'This action will mark the selected sales as Fulfilled without uploading fulfillment artifacts. Sales not handled by the processor or those that cannot be fulfilled will not be changed. Continue?',\n },\n [ContentId.MarkAsPaid]: {\n id: ContentId.MarkAsPaid,\n defaultValue: 'Mark As Paid',\n },\n [ContentId.MarkAsUnpaid]: {\n id: ContentId.MarkAsUnpaid,\n defaultValue: 'Mark as Unpaid',\n },\n [ContentId.MarkedAsReviewed]: {\n id: ContentId.MarkedAsReviewed,\n defaultValue: 'Marked as Reviewed',\n },\n [ContentId.MarketplaceDelivery]: {\n id: ContentId.MarketplaceDelivery,\n defaultValue: 'Marketplace Delivery',\n },\n [ContentId.MarketplaceFault]: {\n id: ContentId.MarketplaceFault,\n defaultValue: 'Marketplace Fault',\n },\n [ContentId.MarketplacePaymentId]: {\n id: ContentId.MarketplacePaymentId,\n defaultValue: 'Marketplace Payment Id',\n },\n [ContentId.MarketplacePayments]: {\n id: ContentId.MarketplacePayments,\n defaultValue: 'Marketplace Payments',\n },\n [ContentId.MarketplacePaymentTerm]: {\n id: ContentId.MarketplacePaymentTerm,\n defaultValue: 'Marketplace Payment Term',\n },\n [ContentId.MarketplaceTerms]: {\n id: ContentId.MarketplaceTerms,\n defaultValue: 'Marketplace Terms',\n },\n [ContentId.MarketShare]: {\n id: ContentId.MarketShare,\n defaultValue: 'Market Share',\n },\n [ContentId.MarkLineItemAsUnpaidConfirmation]: {\n id: ContentId.MarkLineItemAsUnpaidConfirmation,\n defaultValue:\n 'This action will remove the payment reference from the line item. Continue?',\n },\n [ContentId.MarkProceedsAsUnpaidConfirmation]: {\n id: ContentId.MarkProceedsAsUnpaidConfirmation,\n defaultValue:\n 'You are about to mark this sale as Unpaid. This action will remove the payment reference from the sale. Continue?',\n },\n [ContentId.MarkSalesAsPaid]: {\n id: ContentId.MarkSalesAsPaid,\n defaultValue: 'Mark Sales As Paid',\n },\n [ContentId.MergedGroupListingWarning]: {\n id: ContentId.MergedGroupListingWarning,\n defaultValue:\n 'One or more selected listings are part of a group. Merging them will ungroup and unbroadcast the newly merged listing. Continue',\n },\n [ContentId.MergeListingGroupTooltip]: {\n id: ContentId.MergeListingGroupTooltip,\n defaultValue: 'This listing is part of a group:',\n },\n [ContentId.MinCommissionValue]: {\n id: ContentId.MinCommissionValue,\n defaultValue: 'Min value is 0.01%',\n },\n [ContentId.MinListingsRequired]: {\n id: ContentId.MinListingsRequired,\n defaultValue: 'Minimum Listings Required',\n },\n [ContentId.MoreExpensive]: {\n id: ContentId.MoreExpensive,\n defaultValue: 'More Expensive',\n },\n [ContentId.MovePrice]: {\n id: ContentId.MovePrice,\n defaultValue: 'Move price',\n },\n [ContentId.MoveTo]: {\n id: ContentId.MoveTo,\n defaultValue: 'Move to ...',\n },\n [ContentId.MoveToExistingGroup]: {\n id: ContentId.MoveToExistingGroup,\n defaultValue: 'Move to an existing group',\n },\n [ContentId.Multiple]: {\n id: ContentId.Multiple,\n defaultValue: 'Multiple',\n },\n [ContentId.Empty]: {\n id: ContentId.Empty,\n defaultValue: '(Empty)',\n },\n [ContentId.NetCommissionRate]: {\n id: ContentId.NetCommissionRate,\n defaultValue: 'Net Commission Rate',\n },\n [ContentId.NetCommissionRateOverride]: {\n id: ContentId.NetCommissionRateOverride,\n defaultValue: 'Net Commission Rate Override',\n },\n [ContentId.New]: {\n id: ContentId.New,\n defaultValue: 'New',\n },\n [ContentId.NewCustomReport]: {\n id: ContentId.NewCustomReport,\n defaultValue: 'New custom report',\n },\n [ContentId.NewFlashSale]: {\n id: ContentId.NewFlashSale,\n defaultValue: 'Create a new flash sale',\n },\n [ContentId.NextTicket]: {\n id: ContentId.NextTicket,\n defaultValue: 'Next Ticket',\n },\n [ContentId.NoFault]: {\n id: ContentId.NoFault,\n defaultValue: 'No Fault',\n },\n [ContentId.NoHurdle]: {\n id: ContentId.NoHurdle,\n defaultValue: 'No Hurdle',\n },\n [ContentId.NoItemsWereEligibleForUpdate]: {\n id: ContentId.NoItemsWereEligibleForUpdate,\n defaultValue:\n 'There are no items applicable for this edit. Please check your selection.',\n },\n [ContentId.NoResults]: {\n id: ContentId.NoResults,\n defaultValue: 'No Results',\n },\n [ContentId.Normal]: {\n id: ContentId.Normal,\n defaultValue: 'Normal',\n },\n [ContentId.Draft]: {\n id: ContentId.Draft,\n defaultValue: 'Draft',\n },\n [ContentId.Contingent]: {\n id: ContentId.Contingent,\n defaultValue: 'Contingent',\n },\n [ContentId.NoTicketsToWaste]: {\n id: ContentId.NoTicketsToWaste,\n defaultValue:\n 'Waste action cannot be performed for this listing because there are no unsold tickets.',\n },\n [ContentId.NotificationTypeListingPriceUpdate]: {\n id: ContentId.NotificationTypeListingPriceUpdate,\n defaultValue: 'Listing Price Update',\n },\n [ContentId.NotMapped]: {\n id: ContentId.NotMapped,\n defaultValue: 'Not mapped',\n },\n [ContentId.Of]: {\n id: ContentId.Of,\n defaultValue: 'Of',\n },\n [ContentId.OnSaleDate]: {\n id: ContentId.OnSaleDate,\n defaultValue: 'On Sale Date',\n },\n [ContentId.OpenEventPageV2InDevelopment]: {\n id: ContentId.OpenEventPageV2InDevelopment,\n defaultValue: 'Open Event Page v2 (In Development)',\n },\n [ContentId.OriginalProceeds]: {\n id: ContentId.OriginalProceeds,\n defaultValue: 'Original Proceeds',\n },\n [ContentId.OriginalSeating]: {\n id: ContentId.OriginalSeating,\n defaultValue: 'Original Seating',\n },\n [ContentId.OriginatedListing]: {\n id: ContentId.OriginatedListing,\n defaultValue: 'Originated Listing',\n },\n [ContentId.OtherZoneMap]: {\n id: ContentId.OtherZoneMap,\n defaultValue: 'Other Zone Maps',\n },\n [ContentId.OutlierLimit]: {\n id: ContentId.OutlierLimit,\n defaultValue: 'Outlier Limit',\n },\n [ContentId.OutlierSettingsIngoreListings]: {\n id: ContentId.OutlierSettingsIngoreListings,\n defaultValue: 'Ignore all listings more than',\n },\n [ContentId.OutlierSpacing]: {\n id: ContentId.OutlierSpacing,\n defaultValue: 'Outlier Spacing',\n },\n [ContentId.P25]: {\n id: ContentId.P25,\n defaultValue: 'P25',\n },\n [ContentId.P50]: {\n id: ContentId.P50,\n defaultValue: 'P50',\n },\n [ContentId.PartiallyRefunded]: {\n id: ContentId.PartiallyRefunded,\n defaultValue: 'Partially Refunded',\n },\n [ContentId.Page]: {\n id: ContentId.Page,\n defaultValue: 'Page',\n },\n [ContentId.PastPayments]: {\n id: ContentId.PastPayments,\n defaultValue: 'Past Payments',\n },\n [ContentId.PaymentAmount]: {\n id: ContentId.PaymentAmount,\n defaultValue: 'Payment Amount',\n },\n [ContentId.PaymentDetails]: {\n id: ContentId.PaymentDetails,\n defaultValue: 'Payment Details',\n },\n [ContentId.PaymentLine]: {\n id: ContentId.PaymentLine,\n defaultValue: 'Payment Line',\n },\n [ContentId.PaymentLineId]: {\n id: ContentId.PaymentLineId,\n defaultValue: 'Payment Line Id',\n },\n [ContentId.PaymentReferenceID]: {\n id: ContentId.PaymentReferenceID,\n defaultValue: 'Payment Reference ID',\n },\n [ContentId.PaymentsAmount]: {\n id: ContentId.PaymentsAmount,\n defaultValue: 'Payments Amount',\n },\n [ContentId.PayRef]: {\n id: ContentId.PayRef,\n defaultValue: 'Pay Ref',\n },\n [ContentId.PayRec]: {\n id: ContentId.PayRec,\n defaultValue: 'Pay Rec',\n },\n [ContentId.PayState]: {\n id: ContentId.PayState,\n defaultValue: 'Pay State',\n },\n [ContentId.PendingReshipment]: {\n id: ContentId.PendingReshipment,\n defaultValue: 'Pending Reshipment',\n },\n [ContentId.PerformerVenueSpecific]: {\n id: ContentId.PerformerVenueSpecific,\n defaultValue: 'Performer and Venue Specific',\n },\n [ContentId.AssignQRCodesIns]: {\n id: ContentId.AssignQRCodesIns,\n defaultValue: 'Assign an QR code for each seat',\n },\n [ContentId.AssignToDefaultPurchaser]: {\n id: ContentId.AssignToDefaultPurchaser,\n defaultValue: 'Assign to Default',\n },\n [ContentId.at]: {\n id: ContentId.at,\n defaultValue: 'at',\n },\n [ContentId.AtoZ]: {\n id: ContentId.AtoZ,\n defaultValue: 'A to Z',\n },\n [ContentId.AddTicketsForAnotherEvent]: {\n id: ContentId.AddTicketsForAnotherEvent,\n defaultValue: 'Add Tickets for Another Event',\n },\n [ContentId.AddUrl]: {\n id: ContentId.AddUrl,\n defaultValue: 'Add Url',\n },\n [ContentId.AddVendorAction]: {\n id: ContentId.AddVendorAction,\n defaultValue: 'Add new vendor',\n },\n [ContentId.All]: {\n id: ContentId.All,\n defaultValue: 'All',\n },\n [ContentId.AllDeliveryOptions]: {\n id: ContentId.AllDeliveryOptions,\n defaultValue: 'All Delivery Types',\n },\n [ContentId.AllEvents]: {\n id: ContentId.AllEvents,\n defaultValue: 'All Events',\n },\n /**\n * @deprecated Use `ContentId.WebsitePrice`\n */\n [ContentId.AllIn]: {\n id: ContentId.AllIn,\n defaultValue: 'All In',\n },\n [ContentId.AllMerchants]: {\n id: ContentId.AllMerchants,\n defaultValue: 'All Merchants',\n },\n [ContentId.AllocatedSeats]: {\n id: ContentId.AllocatedSeats,\n defaultValue: 'Allocated Seats',\n },\n [ContentId.AllocateTickets]: {\n id: ContentId.AllocateTickets,\n defaultValue: 'Allocate Tickets',\n },\n [ContentId.AllPaymentMethods]: {\n id: ContentId.AllPaymentMethods,\n defaultValue: 'All Payment Methods',\n },\n [ContentId.AllPaymentStates]: {\n id: ContentId.AllPaymentStates,\n defaultValue: 'All Payment States',\n },\n [ContentId.AllSaleStatuses]: {\n id: ContentId.AllSaleStatuses,\n defaultValue: 'All Sale Statuses',\n },\n [ContentId.AllTicketTypes]: {\n id: ContentId.AllTicketTypes,\n defaultValue: 'All Ticket Types',\n },\n [ContentId.AllTime]: {\n id: ContentId.AllTime,\n defaultValue: 'All time',\n },\n [ContentId.AllVendors]: {\n id: ContentId.AllVendors,\n defaultValue: 'All Vendors',\n },\n [ContentId.AllVendorAccounts]: {\n id: ContentId.AllVendorAccounts,\n defaultValue: 'All Vendor Accounts',\n },\n [ContentId.AlreadyInHand]: {\n id: ContentId.AlreadyInHand,\n defaultValue: 'Already in hand',\n },\n [ContentId.AmendTickets]: {\n id: '',\n defaultValue: 'Amend Tickets',\n },\n [ContentId.Amount]: {\n id: ContentId.Amount,\n defaultValue: 'Amount',\n },\n [ContentId.AmountPaid]: {\n id: ContentId.AmountPaid,\n defaultValue: 'Amount Paid',\n },\n [ContentId.AnUploadedDocumentIsRequired]: {\n id: ContentId.AnUploadedDocumentIsRequired,\n defaultValue: 'An uploaded image or document is required.',\n },\n [ContentId.Any]: {\n id: ContentId.Any,\n defaultValue: 'Any',\n },\n [ContentId.AssignETicketsIns]: {\n id: ContentId.AssignETicketsIns,\n defaultValue: 'Assign an e-Ticket for each seat.',\n },\n [ContentId.AtLeastOneUrlRequired]: {\n id: ContentId.AtLeastOneUrlRequired,\n defaultValue: 'At least one URL is required.',\n },\n [ContentId.AtoZArrow]: {\n id: ContentId.AtoZArrow,\n defaultValue: 'AZ ↑',\n },\n [ContentId.ATP]: {\n id: ContentId.ATP,\n defaultValue: 'ATP',\n },\n [ContentId.Attachment]: {\n id: ContentId.Attachment,\n defaultValue: 'Attachment',\n },\n [ContentId.AutoBroadcastNewListing]: {\n id: ContentId.AutoBroadcastNewListing,\n defaultValue: 'Auto-broadcast new listing',\n },\n [ContentId.AutoBroadcastRequiredFaceValue]: {\n id: ContentId.AutoBroadcastRequiredFaceValue,\n defaultValue:\n 'Auto-broadcast listing requires Face Value to be greater than 0.',\n },\n [ContentId.AutoCompAndGroupListings]: {\n id: ContentId.AutoCompAndGroupListings,\n defaultValue: 'Auto-Comp and Group Listings',\n },\n [ContentId.AutoConversion]: {\n id: ContentId.AutoConversion,\n defaultValue: 'Auto Conversion',\n },\n [ContentId.AutoConversionSubtitle]: {\n id: ContentId.AutoConversionSubtitle,\n defaultValue:\n \"Enabling auto-currency will automatically adjust listing costs from non-local currencies to your preferred currency, using the FX rate applicable on the purchase date. Please note that this won't impact your previous listings and will only start converting listings for newly created purchase orders.\",\n },\n [ContentId.AutoFulfill]: {\n id: ContentId.AutoFulfill,\n defaultValue: 'AutoFulfill',\n },\n [ContentId.Automations]: {\n id: ContentId.Automations,\n defaultValue: 'Automations',\n },\n [ContentId.AutoPO]: {\n id: ContentId.AutoPO,\n defaultValue: 'AutoPO',\n },\n [ContentId.AutoPoConfiguration]: {\n id: ContentId.AutoPoConfiguration,\n defaultValue: 'Auto-Po Configurations',\n },\n [ContentId.AutoPoConfigurationDescription]: {\n id: ContentId.AutoPoConfigurationDescription,\n defaultValue:\n 'Only vendors and countries specified here will be considered in our automatic PO generation.',\n },\n [ContentId.AutoPoVendorConfigutationDescription]: {\n id: ContentId.AutoPoVendorConfigutationDescription,\n defaultValue: \"Vendors can be either 'Included' or 'Excluded' - not both.\",\n },\n [ContentId.AutoPriceFrequency]: {\n id: ContentId.AutoPriceFrequency,\n defaultValue: 'Auto Pricing Frequency',\n },\n [ContentId.AutoPricePreview]: {\n id: ContentId.AutoPricePreview,\n defaultValue: 'Auto-pricing Preview',\n },\n [ContentId.AutoPricePreviewSubTitle]: {\n id: ContentId.AutoPricePreviewSubTitle,\n defaultValue: 'Based on the selections below.',\n },\n [ContentId.AutoPricer]: {\n id: ContentId.AutoPricer,\n defaultValue: 'AutoPricer',\n },\n [ContentId.Autopricing]: {\n id: ContentId.Autopricing,\n defaultValue: 'Autopricing',\n },\n [ContentId.AutoPricingAllListingsForEvent]: {\n id: ContentId.AutoPricingAllListingsForEvent,\n defaultValue: 'Event-wide Autopricing',\n },\n [ContentId.AutoPricingAllResultTypeOption]: {\n id: ContentId.AutoPricingAllResultTypeOption,\n defaultValue: 'All Result Types',\n },\n [ContentId.AutoPricingDisclaimer]: {\n id: ContentId.AutoPricingDisclaimer,\n defaultValue:\n 'We aim to provide an estimated price for the website that most buyers are likely to encounter. However, please be aware that we cannot guarantee this price will be consistent for all buyers in every situation.',\n },\n [ContentId.AutoPricingEnabled]: {\n id: ContentId.AutoPricingEnabled,\n defaultValue: 'AutoPrice Enabled',\n },\n [ContentId.AutopricingNotAvailableForGA]: {\n id: ContentId.AutopricingNotAvailableForGA,\n defaultValue: 'Autopricing is not available for GA-only event',\n },\n [ContentId.AutopricingNotAvailableMissingMap]: {\n id: ContentId.AutopricingNotAvailableMissingMap,\n defaultValue: 'Autopricing is not available - seat map unavailable',\n },\n [ContentId.AutopricingNotAvailableNoScoresGeneral]: {\n id: ContentId.AutopricingNotAvailableNoScoresGeneral,\n defaultValue:\n 'This model has no section scores. Section scores are required for the Deal Undercut Mode and Venue Wide Comp. Listing Modes.',\n },\n [ContentId.AutopricingNotAvailableNoScores]: {\n id: ContentId.AutopricingNotAvailableNoScores,\n defaultValue:\n 'This mode is only available when there are section scores in your heat map.',\n },\n [ContentId.AutoPricingResultType]: {\n id: ContentId.AutoPricingResultType,\n defaultValue: 'Autopricing Result',\n },\n [ContentId.AutopricingSettings]: {\n id: ContentId.AutopricingSettings,\n defaultValue: 'Autopricing Settings',\n },\n [ContentId.AutopricingSettingsAll]: {\n id: ContentId.AutopricingSettingsAll,\n defaultValue: 'Autopricing Settings for All',\n },\n [ContentId.AutopricingSettingsAllVisible]: {\n id: ContentId.AutopricingSettingsAllVisible,\n defaultValue: 'Autopricing Settings for All Visible Listings',\n },\n [ContentId.AutopricingSettingsSelected]: {\n id: ContentId.AutopricingSettingsSelected,\n defaultValue: 'Autopricing Settings for Selected',\n },\n [ContentId.AutopricingStrategy]: {\n id: ContentId.AutopricingStrategy,\n defaultValue: 'Autopricing Strategy',\n },\n [ContentId.AutoSetup]: {\n id: ContentId.AutoSetup,\n defaultValue: 'Auto setup',\n },\n [ContentId.Available]: {\n id: ContentId.Available,\n defaultValue: 'Available',\n },\n [ContentId.AvailableInstruction]: {\n id: ContentId.AvailableInstruction,\n defaultValue: 'Tap section to see price and availability',\n },\n [ContentId.AvailableSeats]: {\n id: ContentId.AvailableSeats,\n defaultValue: 'Available Seats',\n },\n [ContentId.AverageTicketPrice]: {\n id: ContentId.AverageTicketPrice,\n defaultValue: 'Average Ticket Price',\n },\n [ContentId.AvoidOne]: {\n id: ContentId.AvoidOne,\n defaultValue: 'Avoid One',\n },\n [ContentId.AvoidOneAndThree]: {\n id: ContentId.AvoidOneAndThree,\n defaultValue: 'Avoid One and Three',\n },\n [ContentId.Back]: {\n id: ContentId.Back,\n defaultValue: 'Back',\n },\n [ContentId.BankTransfer]: {\n id: ContentId.BankTransfer,\n defaultValue: 'Bank Transfer',\n },\n [ContentId.Barcode]: {\n id: ContentId.Barcode,\n defaultValue: 'Barcode',\n },\n [ContentId.BarcodeAlreadyInUsed]: {\n id: ContentId.BarcodeAlreadyInUsed,\n defaultValue: 'Warning - barcode is already used by another ticket.',\n },\n [ContentId.BarcodeRequired]: {\n id: ContentId.BarcodeRequired,\n defaultValue: 'Barcode required.',\n },\n [ContentId.Below]: {\n id: ContentId.Below,\n defaultValue: 'Below',\n },\n [ContentId.BelowTheNextCheapest]: {\n id: ContentId.BelowTheNextCheapest,\n defaultValue: 'below the next cheapest',\n },\n [ContentId.BestRowExtrapolation]: {\n id: ContentId.BestRowExtrapolation,\n defaultValue: 'Best Row Extrapolation',\n },\n [ContentId.BestDealScore]: {\n id: ContentId.BestDealScore,\n defaultValue: 'Best Deal Score',\n },\n [ContentId.Between]: {\n id: ContentId.Between,\n defaultValue: 'Between',\n },\n [ContentId.Better]: {\n id: ContentId.Better,\n defaultValue: 'better',\n },\n [ContentId.BestDealScorePrompt]: {\n id: ContentId.BestDealScorePrompt,\n defaultValue:\n 'Calculate what to price at to have the same Deal Score, then: ',\n },\n [ContentId.Blocked]: {\n id: ContentId.Blocked,\n defaultValue: 'Blocked',\n },\n [ContentId.Boolean]: {\n id: ContentId.Boolean,\n defaultValue: 'Boolean',\n },\n [ContentId.Broadcast]: {\n id: ContentId.Broadcast,\n defaultValue: 'Broadcast',\n },\n [ContentId.BroadcastAll]: {\n id: ContentId.BroadcastAll,\n defaultValue: 'Broadcast All',\n },\n [ContentId.BroadcastAllVisible]: {\n id: ContentId.BroadcastAllVisible,\n defaultValue: 'Broadcast All Visible Listings',\n },\n [ContentId.BroadcastByDefault]: {\n id: ContentId.BroadcastByDefault,\n defaultValue: 'Broadcast by default',\n },\n [ContentId.BroadcastDisabled]: {\n id: ContentId.BroadcastDisabled,\n defaultValue: 'Broadcast disabled',\n },\n [ContentId.Broadcasted]: {\n id: ContentId.Broadcasted,\n defaultValue: 'Broadcasted',\n },\n [ContentId.BroadcastError]: {\n id: ContentId.BroadcastError,\n defaultValue: 'Broadcast Error',\n },\n [ContentId.BroadcastErrorCode_BroadcastListing]: {\n id: ContentId.BroadcastErrorCode_BroadcastListing,\n defaultValue: 'Unable to broadcast the listing due to an unknown reason.',\n },\n [ContentId.BroadcastErrorCode_Unknown]: {\n id: ContentId.BroadcastErrorCode_Unknown,\n defaultValue:\n 'An unkown error has occurred while trying to broadcast the listing.',\n },\n [ContentId.BroadcastErrorCode_UpdatePrice]: {\n id: ContentId.BroadcastErrorCode_UpdatePrice,\n defaultValue:\n 'Failed to update price on the marketplace due to an unknown reason.',\n },\n [ContentId.BroadcastErrorCode_UpdateTicketType]: {\n id: ContentId.BroadcastErrorCode_UpdateTicketType,\n defaultValue:\n 'Failed to update ticket type on the marketplace due to an unknown reason.',\n },\n [ContentId.BroadcastErrorCode_UpdateSplitType]: {\n id: ContentId.BroadcastErrorCode_UpdateSplitType,\n defaultValue:\n 'Failed to update split type on the marketplace due to an unknown reason.',\n },\n [ContentId.BroadcastErrorCode_UpdateInHandDate]: {\n id: ContentId.BroadcastErrorCode_UpdateInHandDate,\n defaultValue:\n 'Failed to update in-hand date on the marketplace due to an unknown reason.',\n },\n [ContentId.BroadcastErrorCode_SplitListing]: {\n id: ContentId.BroadcastErrorCode_SplitListing,\n defaultValue:\n 'Failed to update split listing on the marketplace due to an unknown reason.',\n },\n [ContentId.BroadcastErrorCode_MergeListing]: {\n id: ContentId.BroadcastErrorCode_MergeListing,\n defaultValue:\n 'Failed to update merged listings on the marketplace due to an unknown reason.',\n },\n [ContentId.BroadcastErrorCode_UnbroadcastListing]: {\n id: ContentId.BroadcastErrorCode_UnbroadcastListing,\n defaultValue:\n 'Unable to unbroadcast the listing due to an unknown reason due to an unknown reason.',\n },\n [ContentId.BroadcastErrorCode_UpdateQuantity]: {\n id: ContentId.BroadcastErrorCode_UpdateQuantity,\n defaultValue:\n 'Failed to update quantity on the marketplace due to an unknown reason.',\n },\n [ContentId.BroadcastErrorCode_HideSeats]: {\n id: ContentId.BroadcastErrorCode_HideSeats,\n defaultValue:\n 'Failed to update hide-seats on the marketplace due to an unknown reason.',\n },\n [ContentId.BroadcastErrorCode_UpdateListingNotes]: {\n id: ContentId.BroadcastErrorCode_UpdateListingNotes,\n defaultValue:\n 'Failed to update listing notes on the marketplace due to an unknown reason.',\n },\n [ContentId.BroadcastErrorCode_UpdateSeating]: {\n id: ContentId.BroadcastErrorCode_UpdateSeating,\n defaultValue:\n 'Failed to update seating on the marketplace due to an unknown reason.',\n },\n [ContentId.BroadcastErrorCode_MarketplaceResaleRestricted]: {\n id: ContentId.BroadcastErrorCode_MarketplaceResaleRestricted,\n defaultValue: 'Marketplace restricts resale.',\n },\n [ContentId.BroadcastErrorCode_MarketplaceManifestMismatch]: {\n id: ContentId.BroadcastErrorCode_MarketplaceManifestMismatch,\n defaultValue: 'Marketplace manifest mismatched.',\n },\n [ContentId.BroadcastErrorCode_MarketplacePriceBelowFloor]: {\n id: ContentId.BroadcastErrorCode_MarketplacePriceBelowFloor,\n defaultValue: 'Marketplace price is below the floor.',\n },\n [ContentId.BroadcastSelected]: {\n id: ContentId.BroadcastSelected,\n defaultValue: 'Broadcast Selected',\n },\n [ContentId.BroadcastSettings]: {\n id: ContentId.BroadcastSettings,\n defaultValue: 'Broadcast Settings',\n },\n [ContentId.BroadcastSettingsAllVisible]: {\n id: ContentId.BroadcastSettingsAllVisible,\n defaultValue: 'Broadcast Settings for All Visible Listings',\n },\n [ContentId.BroadcastSettingsForAll]: {\n id: ContentId.BroadcastSettingsForAll,\n defaultValue: 'Broadcast Settings for All',\n },\n [ContentId.BroadcastSettingsForSelected]: {\n id: ContentId.BroadcastSettingsForSelected,\n defaultValue: 'Broadcast Settings for Selected',\n },\n [ContentId.BrowseFile]: {\n id: ContentId.BrowseFile,\n defaultValue: 'Browse File',\n },\n [ContentId.BrowseFiles]: {\n id: ContentId.BrowseFiles,\n defaultValue: 'Browse Files',\n },\n [ContentId.BucketOptions]: {\n id: ContentId.BucketOptions,\n defaultValue: 'Bucket Options',\n },\n [ContentId.BugFixes]: {\n id: ContentId.BugFixes,\n defaultValue: 'Bug Fixes',\n },\n [ContentId.BuildACustomRole]: {\n id: ContentId.BuildACustomRole,\n defaultValue: 'Build a custom role',\n },\n [ContentId.BulkActions]: {\n id: ContentId.BulkActions,\n defaultValue: 'Bulk Actions',\n },\n [ContentId.BulkDeleteSelectedPlaceholderWarning]: {\n id: ContentId.BulkDeleteSelectedPlaceholderWarning,\n defaultValue:\n 'You are about to delete the selected placeholder inventory. Continue?',\n },\n [ContentId.BulkDiscount]: {\n id: ContentId.BulkDiscount,\n defaultValue: 'Bulk Discount',\n },\n [ContentId.BulkEditCancelled]: {\n id: ContentId.BulkEditCancelled,\n defaultValue: 'Bulk edit is cancelled',\n },\n [ContentId.BulkEditDone]: {\n id: ContentId.BulkEditDone,\n defaultValue: 'Bulk edit is done',\n },\n [ContentId.BulkEditFailed]: {\n id: ContentId.BulkEditFailed,\n defaultValue: 'The process failed.',\n },\n [ContentId.BulkEditFloorCeilingCurrentFloorWarning]: {\n id: ContentId.BulkEditFloorCeilingCurrentFloorWarning,\n defaultValue:\n 'Only listings with a current floor will be updated. Listings with price below the floor or above the ceiling will be adjusted to match the new floor or ceiling.',\n },\n [ContentId.BulkEditFloorCeilingUnitCostWarning]: {\n id: ContentId.BulkEditFloorCeilingUnitCostWarning,\n defaultValue:\n 'Only listings with a unit cost will be updated. Listings with price below the floor or above the ceiling will be adjusted to match the new floor or ceiling.',\n },\n [ContentId.BulkEditFloorCeilingWarning]: {\n id: ContentId.BulkEditFloorCeilingWarning,\n defaultValue:\n 'Only listings with a market price will be updated. Listings with price below the floor or above the ceiling will be adjusted to match the new floor or ceiling.',\n },\n [ContentId.BulkEditInProgress]: {\n id: ContentId.BulkEditInProgress,\n defaultValue: 'Bulk edit is in progress',\n },\n [ContentId.BulkEditListPriceAdjustingFloorCeilingWarning]: {\n id: ContentId.BulkEditListPriceAdjustingFloorCeilingWarning,\n defaultValue:\n 'Adjusting any price below the floor or above the ceiling of a listing will auto-adjust the floor or ceiling of that listing.',\n },\n [ContentId.BulkEditPartialFailure]: {\n id: ContentId.BulkEditPartialFailure,\n defaultValue: 'The process completed with some failures.',\n },\n [ContentId.BulkEditPriceFloorCeilingWarning]: {\n id: ContentId.BulkEditPriceFloorCeilingWarning,\n defaultValue:\n 'Changing price floor or ceiling will automatically change any listing price that is outside the boundary.',\n },\n [ContentId.BulkEditPricesWarning]: {\n id: ContentId.BulkEditPricesWarning,\n defaultValue:\n 'Listings with price updates below the floor or above the ceiling will have their floor or ceiling be adjusted to match the new prices.',\n },\n [ContentId.BulkEditStarting]: {\n id: ContentId.BulkEditStarting,\n defaultValue: 'Bulk edit is starting',\n },\n [ContentId.BulkEditSuccess]: {\n id: ContentId.BulkEditSuccess,\n defaultValue: 'The process completed successfully.',\n },\n [ContentId.BulkEntry]: {\n id: ContentId.BulkEntry,\n defaultValue: 'Bulk Entry',\n },\n\n [ContentId.BulkUpload]: {\n id: ContentId.BulkUpload,\n defaultValue: 'Bulk Upload',\n },\n [ContentId.Buyer]: {\n id: ContentId.Buyer,\n defaultValue: 'Buyer',\n },\n [ContentId.BuyerAccounts]: {\n id: ContentId.BuyerAccounts,\n defaultValue: 'Buyer Accounts',\n },\n [ContentId.BuyerCommission]: {\n id: ContentId.BuyerCommission,\n defaultValue: 'Buyer Commission',\n },\n [ContentId.BuyerDeniedEntry]: {\n id: ContentId.BuyerDeniedEntry,\n defaultValue: 'Buyer Denied Entry',\n },\n [ContentId.By]: {\n id: ContentId.By,\n defaultValue: 'by ',\n },\n [ContentId.BypassLimit]: {\n id: ContentId.BypassLimit,\n defaultValue: 'Bypass Limit',\n },\n [ContentId.Calculate]: {\n id: ContentId.Calculate,\n defaultValue: 'Calculate',\n },\n [ContentId.CalculatePrice]: {\n id: ContentId.CalculatePrice,\n defaultValue: 'Calculate Price',\n },\n [ContentId.Cancel]: { id: ContentId.Cancel, defaultValue: 'Cancel' },\n [ContentId.CancellationDate]: {\n id: ContentId.CancellationDate,\n defaultValue: 'Cancellation Date',\n },\n [ContentId.Cancellations]: {\n id: ContentId.Cancellations,\n defaultValue: 'Cancellations',\n },\n [ContentId.Cancelled]: {\n id: ContentId.Cancelled,\n defaultValue: 'Cancelled',\n },\n [ContentId.CancelledEvent]: {\n id: ContentId.CancelledEvent,\n defaultValue: 'Cancelled Event',\n },\n [ContentId.CancelledHold]: {\n id: ContentId.CancelledHold,\n defaultValue: 'Cancelled Hold',\n },\n [ContentId.CancelledHoldOnMarketplace]: {\n id: ContentId.CancelledHoldOnMarketplace,\n defaultValue: 'Cancelled Hold on Marketplace',\n },\n [ContentId.CancelSelectMultiple]: {\n id: ContentId.CancelSelectMultiple,\n defaultValue: 'Cancel Select Multiple',\n },\n [ContentId.CancelTickets]: {\n id: '',\n defaultValue: 'Cancel Tickets',\n },\n [ContentId.CancelPurchase]: {\n id: ContentId.CancelPurchase,\n defaultValue: 'Cancel Purchase',\n },\n [ContentId.CancelPurchaseDescription]: {\n id: ContentId.CancelPurchaseDescription,\n defaultValue: 'Use if the Primary recently cancelled your purchase.',\n },\n [ContentId.CancelVoidPurchase]: {\n id: ContentId.CancelVoidPurchase,\n defaultValue: 'Cancel/Void Purchase',\n },\n\n [ContentId.CannotCalculateUndercut]: {\n id: ContentId.CannotCalculateUndercut,\n defaultValue: 'Cannot Calculate Undercut',\n },\n [ContentId.Cash]: {\n id: ContentId.Cash,\n defaultValue: 'Cash',\n },\n [ContentId.Catchup]: {\n id: ContentId.Catchup,\n defaultValue: 'Catchup',\n },\n [ContentId.Category]: {\n id: ContentId.Category,\n defaultValue: 'Category',\n },\n [ContentId.Category1007]: {\n id: ContentId.Category1007,\n defaultValue: 'Football',\n },\n [ContentId.Category1009]: {\n id: ContentId.Category1009,\n defaultValue: 'Golf',\n },\n [ContentId.Category4286]: {\n id: ContentId.Category4286,\n defaultValue: 'Ice hockey',\n },\n [ContentId.Category5099]: {\n id: ContentId.Category5099,\n defaultValue: 'Rodeo',\n },\n [ContentId.Category6401]: {\n id: ContentId.Category6401,\n defaultValue: 'American Football',\n },\n [ContentId.Category6404]: {\n id: ContentId.Category6404,\n defaultValue: 'Basketball',\n },\n [ContentId.Category6451]: {\n id: ContentId.Category6451,\n defaultValue: 'Motorsport',\n },\n [ContentId.Category6452]: {\n id: ContentId.Category6452,\n defaultValue: 'Baseball',\n },\n [ContentId.Category12567]: {\n id: ContentId.Category12567,\n defaultValue: 'Rowing',\n },\n [ContentId.Category263024]: {\n id: ContentId.Category263024,\n defaultValue: 'College Sports',\n },\n [ContentId.Category272988]: {\n id: ContentId.Category272988,\n defaultValue: 'Gymnastics',\n },\n [ContentId.Category272989]: {\n id: ContentId.Category272989,\n defaultValue: 'Wrestling',\n },\n [ContentId.Category273013]: {\n id: ContentId.Category273013,\n defaultValue: 'Curling',\n },\n [ContentId.Category273026]: {\n id: ContentId.Category273026,\n defaultValue: 'Fight',\n },\n [ContentId.Category273031]: {\n id: ContentId.Category273031,\n defaultValue: 'Tennis',\n },\n [ContentId.Category273034]: {\n id: ContentId.Category273034,\n defaultValue: 'Horse Racing',\n },\n [ContentId.Category273055]: {\n id: ContentId.Category273055,\n defaultValue: 'Extreme Sports',\n },\n [ContentId.Category273057]: {\n id: ContentId.Category273057,\n defaultValue: 'Figure Skating',\n },\n [ContentId.Category273089]: {\n id: ContentId.Category273089,\n defaultValue: '[All Other Sports]',\n },\n [ContentId.Category273137]: {\n id: ContentId.Category273137,\n defaultValue: 'Swimming',\n },\n [ContentId.Category273138]: {\n id: ContentId.Category273138,\n defaultValue: 'Bodybuilding',\n },\n [ContentId.Category273164]: {\n id: ContentId.Category273164,\n defaultValue: 'Lacrosse',\n },\n [ContentId.Category273171]: {\n id: ContentId.Category273171,\n defaultValue: 'Track and Field',\n },\n [ContentId.Category273393]: {\n id: ContentId.Category273393,\n defaultValue: 'Softball',\n },\n [ContentId.Category273409]: {\n id: ContentId.Category273409,\n defaultValue: 'Equestrian',\n },\n [ContentId.Category273431]: {\n id: ContentId.Category273431,\n defaultValue: 'Rugby',\n },\n [ContentId.Category273485]: {\n id: ContentId.Category273485,\n defaultValue: 'Volleyball',\n },\n [ContentId.Category273529]: {\n id: ContentId.Category273529,\n defaultValue: 'Exhibition Sports',\n },\n [ContentId.Category273657]: {\n id: ContentId.Category273657,\n defaultValue: 'Marching Band',\n },\n [ContentId.Category274164]: {\n id: ContentId.Category274164,\n defaultValue: 'Cricket',\n },\n [ContentId.Category274701]: {\n id: ContentId.Category274701,\n defaultValue: 'Darts',\n },\n [ContentId.Category274794]: {\n id: ContentId.Category274794,\n defaultValue: 'Dance and Cheer Competition',\n },\n [ContentId.Category275344]: {\n id: ContentId.Category275344,\n defaultValue: 'Snooker',\n },\n [ContentId.Category275641]: {\n id: ContentId.Category275641,\n defaultValue: 'Handball',\n },\n [ContentId.Category276077]: {\n id: ContentId.Category276077,\n defaultValue: 'Polo',\n },\n [ContentId.Category276281]: {\n id: ContentId.Category276281,\n defaultValue: 'Sports and Outdoors',\n },\n [ContentId.Category276306]: {\n id: ContentId.Category276306,\n defaultValue: 'Aviation',\n },\n [ContentId.Category276308]: {\n id: ContentId.Category276308,\n defaultValue: 'Hunting',\n },\n [ContentId.Category276311]: {\n id: ContentId.Category276311,\n defaultValue: 'Amateur Sports',\n },\n [ContentId.Category276861]: {\n id: ContentId.Category276861,\n defaultValue: 'eSports',\n },\n [ContentId.Category278221]: {\n id: ContentId.Category278221,\n defaultValue: 'Bullfighting',\n },\n [ContentId.Category278837]: {\n id: ContentId.Category278837,\n defaultValue: 'Sumo Wrestling',\n },\n [ContentId.Category279267]: {\n id: ContentId.Category279267,\n defaultValue: 'Strongman Sports',\n },\n [ContentId.Category279563]: {\n id: ContentId.Category279563,\n defaultValue: 'Sports Competition',\n },\n [ContentId.Category289352]: {\n id: ContentId.Category289352,\n defaultValue: 'Australian Football',\n },\n [ContentId.Category150012246]: {\n id: ContentId.Category150012246,\n defaultValue: 'Sports Parking',\n },\n [ContentId.Category1013]: {\n id: ContentId.Category1013,\n defaultValue: 'Ballet and Dance',\n },\n [ContentId.Category1015]: {\n id: ContentId.Category1015,\n defaultValue: 'Comedy',\n },\n [ContentId.Category1017]: {\n id: ContentId.Category1017,\n defaultValue: 'Musicals',\n },\n [ContentId.Category2294]: {\n id: ContentId.Category2294,\n defaultValue: 'Family',\n },\n [ContentId.Category4551]: {\n id: ContentId.Category4551,\n defaultValue: 'Cirque du Soleil',\n },\n [ContentId.Category6403]: {\n id: ContentId.Category6403,\n defaultValue: 'Conferences and Speaking Tours',\n },\n [ContentId.Category55548]: {\n id: ContentId.Category55548,\n defaultValue: 'Story of 60s & Woodstock',\n },\n [ContentId.Category259716]: {\n id: ContentId.Category259716,\n defaultValue: 'Classical Music and Opera',\n },\n [ContentId.Category356361]: {\n id: ContentId.Category356361,\n defaultValue: 'Las Vegas Show',\n },\n [ContentId.Category356453]: {\n id: ContentId.Category356453,\n defaultValue: 'Film Festival',\n },\n [ContentId.Category356499]: {\n id: ContentId.Category356499,\n defaultValue: 'Festivals and Fairs',\n },\n [ContentId.Category356585]: {\n id: ContentId.Category356585,\n defaultValue: 'Other Theater and Misc',\n },\n [ContentId.Category357019]: {\n id: ContentId.Category357019,\n defaultValue: 'VIP Event and Party',\n },\n [ContentId.Category357036]: {\n id: ContentId.Category357036,\n defaultValue: 'Movie Event',\n },\n [ContentId.Category358121]: {\n id: ContentId.Category358121,\n defaultValue: 'Broadway',\n },\n [ContentId.Category358959]: {\n id: ContentId.Category358959,\n defaultValue: 'Plays',\n },\n [ContentId.Category366262]: {\n id: ContentId.Category366262,\n defaultValue: 'Arts & Crafts',\n },\n [ContentId.Category366288]: {\n id: ContentId.Category366288,\n defaultValue: 'Performing Arts',\n },\n [ContentId.Category366529]: {\n id: ContentId.Category366529,\n defaultValue: 'Food and Dining',\n },\n [ContentId.Category366888]: {\n id: ContentId.Category366888,\n defaultValue: 'Tourist Attraction',\n },\n [ContentId.Category375100]: {\n id: ContentId.Category375100,\n defaultValue: 'Horse Show',\n },\n [ContentId.Category379731]: {\n id: ContentId.Category379731,\n defaultValue: 'LGBT',\n },\n [ContentId.Category379991]: {\n id: ContentId.Category379991,\n defaultValue: 'Encore Primary',\n },\n [ContentId.Category380480]: {\n id: ContentId.Category380480,\n defaultValue: 'Home',\n },\n [ContentId.Category381561]: {\n id: ContentId.Category381561,\n defaultValue: 'Sex n the City, a Musical Parody',\n },\n [ContentId.Category150002820]: {\n id: ContentId.Category150002820,\n defaultValue: 'TV-Show',\n },\n [ContentId.Category1014]: {\n id: ContentId.Category1014,\n defaultValue: 'Classical',\n },\n [ContentId.Category1022]: {\n id: ContentId.Category1022,\n defaultValue: 'Club and dance',\n },\n [ContentId.Category1023]: {\n id: ContentId.Category1023,\n defaultValue: 'Festival Tickets',\n },\n [ContentId.Category1026]: {\n id: ContentId.Category1026,\n defaultValue: 'Rap/Hip-Hop/Reggae',\n },\n [ContentId.Category1027]: {\n id: ContentId.Category1027,\n defaultValue: 'R&B/Urban Soul',\n },\n [ContentId.Category1059]: {\n id: ContentId.Category1059,\n defaultValue: 'Alternative and Indie',\n },\n [ContentId.Category1205]: {\n id: ContentId.Category1205,\n defaultValue: 'Country and Folk',\n },\n [ContentId.Category14858]: {\n id: ContentId.Category14858,\n defaultValue: 'Gospel Concert',\n },\n [ContentId.Category259810]: {\n id: ContentId.Category259810,\n defaultValue: 'Classical and Vocal Music',\n },\n [ContentId.Category259815]: {\n id: ContentId.Category259815,\n defaultValue: 'Latin Music',\n },\n [ContentId.Category259819]: {\n id: ContentId.Category259819,\n defaultValue: 'Jazz Music',\n },\n [ContentId.Category259820]: {\n id: ContentId.Category259820,\n defaultValue: 'New Age and Spiritual Music',\n },\n [ContentId.Category259822]: {\n id: ContentId.Category259822,\n defaultValue: 'RB and Soul Music',\n },\n [ContentId.Category259823]: {\n id: ContentId.Category259823,\n defaultValue: 'Pop Music',\n },\n [ContentId.Category259824]: {\n id: ContentId.Category259824,\n defaultValue: 'World Music',\n },\n [ContentId.Category259827]: {\n id: ContentId.Category259827,\n defaultValue: 'Rock Music',\n },\n [ContentId.Category259828]: {\n id: ContentId.Category259828,\n defaultValue: 'Reggae Music',\n },\n [ContentId.Category259829]: {\n id: ContentId.Category259829,\n defaultValue: 'Blues Music',\n },\n [ContentId.Category259833]: {\n id: ContentId.Category259833,\n defaultValue: 'Vocal Performance Music',\n },\n [ContentId.Category259921]: {\n id: ContentId.Category259921,\n defaultValue: 'Rock, Pop and Hip-Hop',\n },\n [ContentId.Category259922]: {\n id: ContentId.Category259922,\n defaultValue: 'Jazz, Blues and RnB Music',\n },\n [ContentId.Category260261]: {\n id: ContentId.Category260261,\n defaultValue: 'Bluegrass',\n },\n [ContentId.Category260263]: {\n id: ContentId.Category260263,\n defaultValue: 'Christian',\n },\n [ContentId.Category260264]: {\n id: ContentId.Category260264,\n defaultValue: 'Cover / Tribute',\n },\n [ContentId.Category260265]: {\n id: ContentId.Category260265,\n defaultValue: 'Flamenco',\n },\n [ContentId.Category260266]: {\n id: ContentId.Category260266,\n defaultValue: 'Funk',\n },\n [ContentId.Category260267]: {\n id: ContentId.Category260267,\n defaultValue: 'Indie',\n },\n [ContentId.Category260268]: {\n id: ContentId.Category260268,\n defaultValue: 'Progressive Rock',\n },\n [ContentId.Category260270]: {\n id: ContentId.Category260270,\n defaultValue: 'Electronic',\n },\n [ContentId.Category260271]: {\n id: ContentId.Category260271,\n defaultValue: 'Childrens',\n },\n [ContentId.Category260275]: {\n id: ContentId.Category260275,\n defaultValue: 'Miscellaneous Music',\n },\n [ContentId.Category260347]: {\n id: ContentId.Category260347,\n defaultValue: 'Country Tickets',\n },\n [ContentId.Category260357]: {\n id: ContentId.Category260357,\n defaultValue: 'Blues',\n },\n [ContentId.Category260385]: {\n id: ContentId.Category260385,\n defaultValue: 'Easy Listening Tickets',\n },\n [ContentId.Category260389]: {\n id: ContentId.Category260389,\n defaultValue: 'Reggae Tickets',\n },\n [ContentId.Category260392]: {\n id: ContentId.Category260392,\n defaultValue: \"Children's Tickets\",\n },\n [ContentId.Category260421]: {\n id: ContentId.Category260421,\n defaultValue: 'Jazz',\n },\n [ContentId.Category260478]: {\n id: ContentId.Category260478,\n defaultValue: 'Rap Tickets',\n },\n [ContentId.Category260483]: {\n id: ContentId.Category260483,\n defaultValue: 'Stage & Screen',\n },\n [ContentId.Category260492]: {\n id: ContentId.Category260492,\n defaultValue: 'International Tickets',\n },\n [ContentId.Category260530]: {\n id: ContentId.Category260530,\n defaultValue: 'Vocal Tickets',\n },\n [ContentId.Category260539]: {\n id: ContentId.Category260539,\n defaultValue: 'Avant-Garde Tickets',\n },\n [ContentId.Category260542]: {\n id: ContentId.Category260542,\n defaultValue: 'Pop/Rock',\n },\n [ContentId.Category260601]: {\n id: ContentId.Category260601,\n defaultValue: 'Electronic Tickets',\n },\n [ContentId.Category260624]: {\n id: ContentId.Category260624,\n defaultValue: 'New Age Tickets',\n },\n [ContentId.Category260628]: {\n id: ContentId.Category260628,\n defaultValue: 'Folk Tickets',\n },\n [ContentId.Category260637]: {\n id: ContentId.Category260637,\n defaultValue: 'Latin Tickets',\n },\n [ContentId.Category260644]: {\n id: ContentId.Category260644,\n defaultValue: 'Religious Tickets',\n },\n [ContentId.Category261289]: {\n id: ContentId.Category261289,\n defaultValue: 'Holiday Tickets',\n },\n [ContentId.Category261291]: {\n id: ContentId.Category261291,\n defaultValue: 'Comedy/Spoken Tickets',\n },\n [ContentId.Category308335]: {\n id: ContentId.Category308335,\n defaultValue: 'Acoustic',\n },\n [ContentId.Category308336]: {\n id: ContentId.Category308336,\n defaultValue: 'Ambient',\n },\n [ContentId.Category308341]: {\n id: ContentId.Category308341,\n defaultValue: 'Celtic',\n },\n [ContentId.Category308342]: {\n id: ContentId.Category308342,\n defaultValue: 'Disco',\n },\n [ContentId.Category308344]: {\n id: ContentId.Category308344,\n defaultValue: 'Doo Wop',\n },\n [ContentId.Category308345]: {\n id: ContentId.Category308345,\n defaultValue: 'Easy Listening',\n },\n [ContentId.Category308350]: {\n id: ContentId.Category308350,\n defaultValue: 'Hardcore',\n },\n [ContentId.Category308351]: {\n id: ContentId.Category308351,\n defaultValue: 'House',\n },\n [ContentId.Category308352]: {\n id: ContentId.Category308352,\n defaultValue: 'Industrial',\n },\n [ContentId.Category308353]: {\n id: ContentId.Category308353,\n defaultValue: 'Karaoke / Open Mic',\n },\n [ContentId.Category308355]: {\n id: ContentId.Category308355,\n defaultValue: 'Mariachi',\n },\n [ContentId.Category308357]: {\n id: ContentId.Category308357,\n defaultValue: 'Punk',\n },\n [ContentId.Category308358]: {\n id: ContentId.Category308358,\n defaultValue: 'Rockabilly',\n },\n [ContentId.Category308363]: {\n id: ContentId.Category308363,\n defaultValue: 'Ska',\n },\n [ContentId.Category308364]: {\n id: ContentId.Category308364,\n defaultValue: 'Surf Rock',\n },\n [ContentId.Category308365]: {\n id: ContentId.Category308365,\n defaultValue: 'Tejano',\n },\n [ContentId.Category308385]: {\n id: ContentId.Category308385,\n defaultValue: 'Trance',\n },\n [ContentId.Category321834]: {\n id: ContentId.Category321834,\n defaultValue: 'K-pop',\n },\n [ContentId.Category1024]: {\n id: ContentId.Category1024,\n defaultValue: 'Hard Rock and Metal Music',\n },\n [ContentId.CeilingRelativeToUnitCost]: {\n id: ContentId.CeilingRelativeToUnitCost,\n defaultValue: 'Ceiling Relative to Unit Cost',\n },\n [ContentId.ChangeEvent]: {\n id: ContentId.ChangeEvent,\n defaultValue: 'Change Event',\n },\n [ContentId.ChangeEventAll]: {\n id: ContentId.ChangeEventAll,\n defaultValue: 'Change Event for All',\n },\n [ContentId.ChangeEventSelected]: {\n id: ContentId.ChangeEventSelected,\n defaultValue: 'Change Event for Selected',\n },\n [ContentId.ChangeGroupBy]: {\n id: ContentId.ChangeGroupBy,\n defaultValue: 'Change Group By',\n },\n [ContentId.ChangeGroupByWarning]: {\n id: ContentId.ChangeGroupByWarning,\n defaultValue:\n 'Changing from the current grouping type will make some of the existing columns disappear. Are you sure?',\n },\n [ContentId.ChangePassword]: {\n id: ContentId.ChangePassword,\n defaultValue: 'Change password',\n },\n [ContentId.ChangeSectionScore]: {\n id: ContentId.ChangeSectionScore,\n defaultValue: 'Change Score for Section',\n },\n [ContentId.ChangeTagValueTypeWarning]: {\n id: ContentId.ChangeTagValueTypeWarning,\n defaultValue:\n 'Changing the value type will clear the existing values for this tag that are not of the new type. Are you sure?',\n },\n [ContentId.ChangeValueType]: {\n id: ContentId.ChangeValueType,\n defaultValue: 'Change Value Type for Key',\n },\n [ContentId.ChangeVendorAccount]: {\n id: ContentId.ChangeVendorAccount,\n defaultValue: 'Change Vendor Account',\n },\n [ContentId.Charge]: {\n id: ContentId.Charge,\n defaultValue: 'Charge',\n },\n [ContentId.Charges]: {\n id: ContentId.Charges,\n defaultValue: 'Charges',\n },\n [ContentId.CharityEvent]: {\n id: ContentId.CharityEvent,\n defaultValue: 'Charity Event',\n },\n [ContentId.Cheapest]: {\n id: ContentId.Cheapest,\n defaultValue: 'Cheapest',\n },\n [ContentId.Checkbox]: {\n id: ContentId.Checkbox,\n defaultValue: 'Checkbox',\n },\n [ContentId.ChooseBuyer]: {\n id: ContentId.ChooseBuyer,\n defaultValue: 'Choose Buyer',\n },\n [ContentId.ChooseSection]: {\n id: ContentId.ChooseSection,\n defaultValue: 'Choose Section',\n },\n [ContentId.ChooseRow]: {\n id: ContentId.ChooseRow,\n defaultValue: 'Choose Row',\n },\n [ContentId.ChooseWidgets]: {\n id: ContentId.ChooseWidgets,\n defaultValue: 'Choose Widgets to Display',\n },\n [ContentId.ChooseYourDisplaySettings]: {\n id: ContentId.ChooseYourDisplaySettings,\n defaultValue: 'Choose your display settings',\n },\n [ContentId.ChooseZone]: {\n id: ContentId.ChooseZone,\n defaultValue: 'Choose Zone',\n },\n [ContentId.ClassifyMessage]: {\n id: ContentId.ClassifyMessage,\n defaultValue: 'Classify Message',\n },\n [ContentId.ClearAll]: {\n id: ContentId.ClearAll,\n defaultValue: 'Clear all',\n },\n [ContentId.ClearAndOverwrite]: {\n id: ContentId.ClearAndOverwrite,\n defaultValue: 'Clear and Overwrite',\n },\n [ContentId.ClearBrowsingData]: {\n id: ContentId.ClearBrowsingData,\n defaultValue: 'Clear Browsing Data',\n },\n [ContentId.ClearBrowsingDataHelp]: {\n id: ContentId.ClearBrowsingDataHelp,\n defaultValue:\n 'Clearing browsing data removes stored local information such as cached files and cookies from your session. This action does not affect your inventory data.',\n },\n [ContentId.ClearData]: {\n id: ContentId.ClearData,\n defaultValue: 'Clear Data',\n },\n [ContentId.ClearListingAutoPricingSettings]: {\n id: ContentId.ClearListingAutoPricingSettings,\n defaultValue: 'Clear Listing Auto Pricing Settings',\n },\n [ContentId.Clusters]: {\n id: ContentId.Clusters,\n defaultValue: 'Clusters',\n },\n [ContentId.Columns]: {\n id: ContentId.Columns,\n defaultValue: 'Columns',\n },\n [ContentId.ColumnSettings]: {\n id: ContentId.ColumnSettings,\n defaultValue: 'Column Settings',\n },\n [ContentId.ColumnWithSameNameExists]: {\n id: ContentId.ColumnWithSameNameExists,\n defaultValue: 'Column with the same name exists',\n },\n [ContentId.CombinedPermissionViewDescription]: {\n id: ContentId.CombinedPermissionViewDescription,\n defaultValue:\n 'This is a combined and read-only view of all the permissions based on all the roles the user has.',\n },\n [ContentId.CommaSeparatedValuesExt]: {\n id: ContentId.CommaSeparatedValuesExt,\n defaultValue: 'Comma Separated Values (.csv)',\n },\n [ContentId.Comments]: {\n id: ContentId.Comments,\n defaultValue: 'Comments',\n },\n [ContentId.Commission]: {\n id: ContentId.Commission,\n defaultValue: 'Commission',\n },\n [ContentId.Commissioner]: {\n id: ContentId.Commissioner,\n defaultValue: 'Commissioner',\n },\n [ContentId.Comparables]: {\n id: ContentId.Comparables,\n defaultValue: 'Comparables',\n },\n [ContentId.CompCeiling]: {\n id: ContentId.CompCeiling,\n defaultValue: 'Comp. Ceiling',\n },\n [ContentId.CompFloor]: {\n id: ContentId.CompFloor,\n defaultValue: 'Comp. Floor',\n },\n [ContentId.CompListingCeiling]: {\n id: ContentId.CompListingCeiling,\n defaultValue: 'Comp. Listing Ceiling',\n },\n [ContentId.CompListingFloorMustLessThanCeiling]: {\n id: ContentId.CompListingFloorMustLessThanCeiling,\n defaultValue: 'Comp. Listing Floor must be less than Ceiling.',\n },\n [ContentId.CompListingModePrompt]: {\n id: ContentId.CompListingModePrompt,\n defaultValue: 'Which listings to price against?',\n },\n [ContentId.CompListingOnlyForSameZone]: {\n id: ContentId.CompListingOnlyForSameZone,\n defaultValue: 'Restrict to Same Zone',\n },\n // TODO: SponsoredListings - Clean up & sort alphabetically\n [ContentId.Perk]: {\n id: ContentId.Perk,\n defaultValue: 'Perk',\n },\n [ContentId.Permission_AdPlatformEdit]: {\n id: ContentId.Permission_AdPlatformEdit,\n defaultValue: 'Access to Sponsored Listings',\n },\n [ContentId.Permission_EditVendor]: {\n id: ContentId.Permission_EditVendor,\n defaultValue: 'Manage Vendors',\n },\n [ContentId.Permission_EventConfig_Create]: {\n id: ContentId.Permission_EventConfig_Create,\n defaultValue: 'Create Event Settings',\n },\n [ContentId.Permission_EventConfig_Edit]: {\n id: ContentId.Permission_EventConfig_Edit,\n defaultValue: 'Edit Event Settings',\n },\n [ContentId.Permission_EventConfig_View]: {\n id: ContentId.Permission_EventConfig_View,\n defaultValue: 'View Event Settings',\n },\n [ContentId.Permission_LockUnlockCommission]: {\n id: ContentId.Permission_LockUnlockCommission,\n defaultValue: 'Lock/Unlock commission',\n },\n [ContentId.Permission_LockUnlockCommissionOwned]: {\n id: ContentId.Permission_LockUnlockCommissionOwned,\n defaultValue: 'Lock/Unlock commission on created purchase',\n },\n [ContentId.Permission_UpdateDeliveryStrategyOnPurchasedListings]: {\n id: ContentId.Permission_UpdateDeliveryStrategyOnPurchasedListings,\n defaultValue: 'Update delivery strategy on purchased listings (Purchaser)',\n },\n [ContentId.Permission_UpdateDeliveryStrategyOnPricedListings]: {\n id: ContentId.Permission_UpdateDeliveryStrategyOnPricedListings,\n defaultValue: 'Update delivery strategy on priced listings (Pricer)',\n },\n [ContentId.Permission_UpdateDeliveryStrategy]: {\n id: ContentId.Permission_UpdateDeliveryStrategy,\n defaultValue: 'Update delivery strategy',\n },\n [ContentId.Permission_UpdateDeliveryType]: {\n id: ContentId.Permission_UpdateDeliveryType,\n defaultValue: 'Update delivery type',\n },\n [ContentId.Permission_UpdateDeliveryTypeOwned]: {\n id: ContentId.Permission_UpdateDeliveryTypeOwned,\n defaultValue: 'Update delivery type on created purchase',\n },\n [ContentId.Permission_UpdateSeatTraits]: {\n id: ContentId.Permission_UpdateSeatTraits,\n defaultValue: 'Update seat traits',\n },\n [ContentId.Permission_UpdateSeatTraitsOwned]: {\n id: ContentId.Permission_UpdateSeatTraitsOwned,\n defaultValue: 'Update seat traits on created purchase',\n },\n [ContentId.Permission_UpdateCustomDeliveryType]: {\n id: ContentId.Permission_UpdateCustomDeliveryType,\n defaultValue: 'Set Custom delivery type',\n },\n [ContentId.Permission_UpdateCustomDeliveryTypeOwned]: {\n id: ContentId.Permission_UpdateCustomDeliveryTypeOwned,\n defaultValue: 'Set Custom delivery type on created purchase',\n },\n [ContentId.Permission_ViewNotifications]: {\n id: ContentId.Permission_ViewNotifications,\n defaultValue: 'View Notifications',\n },\n [ContentId.Permission_ViewPaymentsOnSale]: {\n id: ContentId.Permission_ViewPaymentsOnSale,\n defaultValue: 'View payments on sale',\n },\n [ContentId.Permission_ViewReleaseNotes]: {\n id: ContentId.Permission_ViewReleaseNotes,\n defaultValue: \"View What's New\",\n },\n [ContentId.Permission_ViewStubhubPayments]: {\n id: ContentId.Permission_ViewStubhubPayments,\n defaultValue: 'View Payments on StubHub',\n },\n [ContentId.PmtAmount]: {\n id: ContentId.PmtAmount,\n defaultValue: 'Pmt Amount',\n },\n [ContentId.PmtLineId]: {\n id: ContentId.PmtLineId,\n defaultValue: 'Pmt Line Id',\n },\n [ContentId.PmtMethod]: {\n id: ContentId.PmtMethod,\n defaultValue: 'Pmt Method',\n },\n [ContentId.PmtState]: {\n id: ContentId.PmtState,\n defaultValue: 'Pmt State',\n },\n [ContentId.PmtType]: {\n id: ContentId.PmtType,\n defaultValue: 'Pmt Type',\n },\n [ContentId.PmtStatus]: {\n id: ContentId.PmtStatus,\n defaultValue: 'Pmt Status',\n },\n [ContentId.PreSaleDate]: {\n id: ContentId.PreSaleDate,\n defaultValue: 'Pre-sale Date',\n },\n [ContentId.Prev]: {\n id: ContentId.Prev,\n defaultValue: 'Prev',\n },\n [ContentId.PreviousTicket]: {\n id: ContentId.PreviousTicket,\n defaultValue: 'Previous Ticket',\n },\n [ContentId.PriceAgainst]: {\n id: ContentId.PriceAgainst,\n defaultValue: 'Price against',\n },\n [ContentId.PriceMin]: {\n id: ContentId.PriceMin,\n defaultValue: 'Price Min',\n },\n [ContentId.PriceP25]: {\n id: ContentId.PriceP25,\n defaultValue: 'Price P25',\n },\n [ContentId.PriceP50]: {\n id: ContentId.PriceP50,\n defaultValue: 'Price P50',\n },\n [ContentId.PriceToMarket]: {\n id: ContentId.PriceToMarket,\n defaultValue: 'Price to Market',\n },\n [ContentId.PricingAgainst]: {\n id: ContentId.PricingAgainst,\n defaultValue: 'Pricing Against',\n },\n [ContentId.PricingSettingsListingsConflictWarning]: {\n id: ContentId.PricingSettingsListingsConflictWarning,\n defaultValue:\n 'Selected listings have conflicting settings. Only edited settings will be updated when applied.',\n },\n [ContentId.Proceed]: {\n id: ContentId.Proceed,\n defaultValue: 'Proceed',\n },\n [ContentId.ProceedRepayment]: {\n id: ContentId.ProceedRepayment,\n defaultValue: 'Proceed Repayment',\n },\n [ContentId.ProceedsAmount]: {\n id: ContentId.ProceedsAmount,\n defaultValue: 'Proceeds Amount',\n },\n [ContentId.Purchases_EditVendor_Details]: {\n id: ContentId.Purchases_EditVendor_Details,\n defaultValue: 'Add/Edit Vendors and Vendor Accounts',\n },\n [ContentId.Purchases_LockUnlockCommission_Details]: {\n id: ContentId.Purchases_LockUnlockCommission_Details,\n defaultValue: 'Lock/Unlock commission on purchases',\n },\n [ContentId.Purchases_LockUnlockCommissionOwned_Details]: {\n id: ContentId.Purchases_LockUnlockCommissionOwned_Details,\n defaultValue: 'Lock/Unlock commission on owned purchases',\n },\n [ContentId.Purchases_UpdateDeliveryType_Details]: {\n id: ContentId.Purchases_UpdateDeliveryType_Details,\n defaultValue: 'Add/Edit delivery type on purchases',\n },\n [ContentId.Purchases_UpdateDeliveryTypeOwned_Details]: {\n id: ContentId.Purchases_UpdateDeliveryTypeOwned_Details,\n defaultValue: 'Add/Edit delivery type on owned purchases',\n },\n [ContentId.Purchases_UpdateCustomDeliveryType_Details]: {\n id: ContentId.Purchases_UpdateCustomDeliveryType_Details,\n defaultValue:\n 'Add/Edit Custom delivery type on purchases in addition to normal delivery types',\n },\n [ContentId.Purchases_UpdateCustomDeliveryTypeOwned_Details]: {\n id: ContentId.Purchases_UpdateCustomDeliveryTypeOwned_Details,\n defaultValue:\n 'Add/Edit Custom delivery type on owned purchases in addition to normal delivery types',\n },\n [ContentId.Purchases_UpdateSeatTraits_Details]: {\n id: ContentId.Purchases_UpdateSeatTraits_Details,\n defaultValue: 'Edit seat traits on purchases',\n },\n [ContentId.Purchases_UpdateSeatTraitsOwned_Details]: {\n id: ContentId.Purchases_UpdateSeatTraitsOwned_Details,\n defaultValue: 'Edit seat traits on owned purchases',\n },\n [ContentId.Quantities]: {\n id: ContentId.Quantities,\n defaultValue: 'Quantities',\n },\n [ContentId.QuantitiesFilter]: {\n id: ContentId.QuantitiesFilter,\n defaultValue: 'Quantities Filter',\n },\n [ContentId.RankPremiumTips]: {\n id: ContentId.RankPremiumTips,\n defaultValue: 'Separate out your listings by a certain amount',\n },\n [ContentId.RawVenueCatData]: {\n id: ContentId.RawVenueCatData,\n defaultValue: 'Raw venue catalog data',\n },\n [ContentId.Rear]: {\n id: ContentId.Rear,\n defaultValue: 'Rear',\n },\n [ContentId.Received]: {\n id: ContentId.Received,\n defaultValue: 'Received',\n },\n [ContentId.ReceivedDate]: {\n id: ContentId.ReceivedDate,\n defaultValue: 'Received Date',\n },\n [ContentId.RemainingSeatingOnly]: {\n id: ContentId.RemainingSeatingOnly,\n defaultValue: 'Remaining Seating Only',\n },\n [ContentId.RemoveExistingTicketsOption]: {\n id: ContentId.RemoveExistingTicketsOption,\n defaultValue:\n 'Remove existing tickets: Delete previously used tickets and re-fulfill with new ones.',\n },\n [ContentId.RemoveFromGroup]: {\n id: ContentId.RemoveFromGroup,\n defaultValue: 'Remove from group',\n },\n [ContentId.RemoveFromSale]: {\n id: ContentId.RemoveFromSale,\n defaultValue: 'Remove from Sale',\n },\n [ContentId.RemoveHoldConfirmation]: {\n id: ContentId.RemoveHoldConfirmation,\n defaultValue:\n 'This action will remove holds on applicable selected listings. Are you sure?',\n },\n [ContentId.RemovePaymentReference]: {\n id: ContentId.RemovePaymentReference,\n defaultValue: 'Yes, remove the payment reference',\n },\n [ContentId.ReplaceAndOverrideSeatTraits]: {\n id: ContentId.ReplaceAndOverrideSeatTraits,\n defaultValue: 'Replace and Override Seat Traits',\n },\n [ContentId.ReportNotAvailable]: {\n id: ContentId.ReportNotAvailable,\n defaultValue:\n \"The report doesn't exist or you do not have permission to view it.\",\n },\n [ContentId.ResetFulfillmentWarningV2]: {\n id: ContentId.ResetFulfillmentWarningV2,\n defaultValue:\n \"You're about to Reset Fulfillment. This action will put the sale back to Pending Re-fulfillment and remove all existing tickets that were originally used to fulfill the sale. Continue?\",\n },\n [ContentId.ResetOverride]: {\n id: ContentId.ResetOverride,\n defaultValue: 'Reset Override',\n },\n [ContentId.ResetToOriginal]: {\n id: ContentId.ResetToOriginal,\n defaultValue: 'Reset to Original',\n },\n [ContentId.RestartExperiment]: {\n id: ContentId.RestartExperiment,\n defaultValue: 'Restart Experiment',\n },\n [ContentId.RestrictionOnUse]: {\n id: ContentId.RestrictionOnUse,\n defaultValue: 'Restriction on Use',\n },\n [ContentId.Restrictions]: {\n id: ContentId.Restrictions,\n defaultValue: 'Restrictions',\n },\n [ContentId.ResumeExperiment]: {\n id: ContentId.ResumeExperiment,\n defaultValue: 'Resume Experiment',\n },\n [ContentId.ResultTimeout]: {\n id: ContentId.ResultTimeout,\n defaultValue: 'Result Timeout',\n },\n [ContentId.ResultTimeoutDescription]: {\n id: ContentId.ResultTimeoutDescription,\n defaultValue:\n 'The request timed out due to a large number of results. Please adjust your filters to narrow the search and try again.',\n },\n [ContentId.RetrySkipped]: {\n id: ContentId.RetrySkipped,\n defaultValue: 'Retry Skipped',\n },\n [ContentId.ReuploadDocumentWarning]: {\n id: ContentId.ReuploadDocumentWarning,\n defaultValue:\n \"You're about to Re-upload Tickets. This action will replace the existing tickets with the new upload. The current tickets will be removed. Continue?\",\n },\n [ContentId.RevenueSplitHurdle]: {\n id: ContentId.RevenueSplitHurdle,\n defaultValue: 'Revenue Split Hurdle',\n },\n [ContentId.ReversedPenalty]: {\n id: ContentId.ReversedPenalty,\n defaultValue: 'Reversed Penalty',\n },\n [ContentId.ReversedCharge]: {\n id: ContentId.ReversedCharge,\n defaultValue: 'Reversed Charge',\n },\n [ContentId.Role_FinanceAPI_Details]: {\n id: ContentId.Role_FinanceAPI_Details,\n defaultValue: 'API that handles finance',\n },\n [ContentId.RowCompOverrides]: {\n id: ContentId.RowCompOverrides,\n defaultValue: 'Row Comp Overrides',\n },\n [ContentId.RowComps]: {\n id: ContentId.RowComps,\n defaultValue: 'Row Comps',\n },\n [ContentId.RowCompSettingExactMatch]: {\n id: ContentId.RowCompSettingExactMatch,\n defaultValue: 'MY ROW',\n },\n [ContentId.RowGroups]: {\n id: ContentId.RowGroups,\n defaultValue: 'Row Groups',\n },\n [ContentId.RowRanges]: {\n id: ContentId.RowRanges,\n defaultValue: 'Row ranges',\n },\n [ContentId.RowRangesInputTip]: {\n id: ContentId.RowRangesInputTip,\n defaultValue: 'Tap enter to confirm a range',\n },\n [ContentId.RowsAscToDesc]: {\n id: ContentId.RowsAscToDesc,\n defaultValue: 'Rows: asc to desc',\n },\n [ContentId.RowsDescToAsc]: {\n id: ContentId.RowsDescToAsc,\n defaultValue: 'Rows: desc to asc',\n },\n [ContentId.RowsGroupBy]: {\n id: ContentId.RowsGroupBy,\n defaultValue: 'Rows (Group by)',\n },\n [ContentId.SaleBasisShare]: {\n id: ContentId.SaleBasisShare,\n defaultValue: 'Sale Basis Share',\n },\n [ContentId.SaleCharges]: {\n id: ContentId.SaleCharges,\n defaultValue: 'Sale Charges',\n },\n [ContentId.SaleCredits]: {\n id: ContentId.SaleCredits,\n defaultValue: 'Sale Credits',\n },\n [ContentId.SaleDateFilterTitle]: {\n id: ContentId.SaleDateFilterTitle,\n defaultValue: 'Sale Activity Date Range',\n },\n [ContentId.PriceDateFilterTitle]: {\n id: ContentId.PriceDateFilterTitle,\n defaultValue: 'Price Activity Date Range',\n },\n [ContentId.PriceDateFilterChanged]: {\n id: ContentId.PriceDateFilterChanged,\n defaultValue: 'Price Changed Since',\n },\n [ContentId.PriceDateFilterUnchanged]: {\n id: ContentId.PriceDateFilterUnchanged,\n defaultValue: 'Price Not Changed Since',\n },\n [ContentId.SaleDateFilterOccured]: {\n id: ContentId.SaleDateFilterOccured,\n defaultValue: 'Event Had Sales Since',\n },\n [ContentId.SaleDateFilterNotOccured]: {\n id: ContentId.SaleDateFilterNotOccured,\n defaultValue: 'Event Not Had Sales Since',\n },\n [ContentId.PoId]: {\n id: ContentId.PoId,\n defaultValue: 'PO Id',\n },\n [ContentId.PoDate]: {\n id: ContentId.PoDate,\n defaultValue: 'PO Date',\n },\n [ContentId.SaleDay]: {\n id: ContentId.SaleDay,\n defaultValue: 'Sale Day',\n },\n [ContentId.SaleForEditTickets]: {\n id: ContentId.SaleForEditTickets,\n defaultValue:\n 'If your edits result in one or more tickets removed, your 1 sale for the removed tickets will be deallocated and put back to Pending Confirmation, where you can either source new tickets or reject the order.',\n },\n [ContentId.SaleForRemovedTickets]: {\n id: ContentId.SaleForRemovedTickets,\n defaultValue:\n 'Your 1 sale for the removed tickets will be deallocated and put back to Pending Confirmation, where you can either source new tickets or reject the order.',\n },\n [ContentId.SaleHasMarketplaceProblemHoverText]: {\n id: ContentId.SaleHasMarketplaceProblemHoverText,\n defaultValue:\n 'There is a problem with this order. Please check the marketplace directly for the most up-to-date information.',\n },\n [ContentId.SaleMonth]: {\n id: ContentId.SaleMonth,\n defaultValue: 'Sale Month',\n },\n [ContentId.SalePaymentConversionWarning]: {\n id: ContentId.SalePaymentConversionWarning,\n defaultValue:\n 'Payment conversion and payment amount received will only applied to unrejected and uncancelled sales.',\n },\n [ContentId.SaleReportDescription]: {\n id: ContentId.SaleReportDescription,\n defaultValue: 'All sales recorded on the POS',\n },\n [ContentId.SaleWeek]: {\n id: ContentId.SaleWeek,\n defaultValue: 'Sale Week',\n },\n [ContentId.SameEventsShareSameVenueConfigTitle]: {\n id: ContentId.SameEventsShareSameVenueConfigTitle,\n defaultValue: 'Some of your events share the same venue configuration',\n },\n [ContentId.SameEventsShareSameVenueConfigHeader]: {\n id: ContentId.SameEventsShareSameVenueConfigHeader,\n defaultValue:\n 'Would you like to apply the same ticket information to these events?',\n },\n [ContentId.SameEventsShareSameVenueConfigMessage1]: {\n id: ContentId.SameEventsShareSameVenueConfigMessage1,\n defaultValue:\n \"Click 'Yes' to apply the same ticket details to all events with the same venue configuration.\",\n },\n [ContentId.SameEventsShareSameVenueConfigMessage2]: {\n id: ContentId.SameEventsShareSameVenueConfigMessage2,\n defaultValue:\n \"Click 'No' to enter ticket details separately for each event.\",\n },\n [ContentId.SameZoneOrBetter]: {\n id: ContentId.SameZoneOrBetter,\n defaultValue: 'same zone or better',\n },\n [ContentId.SaveCopy]: {\n id: ContentId.SaveCopy,\n defaultValue: 'Save Copy',\n },\n [ContentId.Saved]: {\n id: ContentId.Saved,\n defaultValue: 'Saved',\n },\n [ContentId.SaveMapAs]: {\n id: ContentId.SaveMapAs,\n defaultValue: 'Save as a new map',\n },\n [ContentId.SaveSearch]: {\n id: ContentId.SaveSearch,\n defaultValue: 'Save Search',\n },\n [ContentId.SearchEventOrLookupId]: {\n id: ContentId.SearchEventOrLookupId,\n defaultValue: 'Search Event or Lookup ID',\n },\n [ContentId.SearchPurchases]: {\n id: ContentId.SearchPurchases,\n defaultValue: 'Search Purchases',\n },\n [ContentId.SearchInventory]: {\n id: ContentId.SearchInventory,\n defaultValue: 'Search Inventory',\n },\n [ContentId.SearchSales]: {\n id: ContentId.SearchSales,\n defaultValue: 'Search Sales',\n },\n [ContentId.SeatRange]: {\n id: ContentId.SeatRange,\n defaultValue: 'Seat range',\n },\n [ContentId.SectionGroups]: {\n id: ContentId.SectionGroups,\n defaultValue: 'Section Groups',\n },\n [ContentId.SectionsAscToDesc]: {\n id: ContentId.SectionsAscToDesc,\n defaultValue: 'Sections: asc to desc',\n },\n [ContentId.SectionsDescToAsc]: {\n id: ContentId.SectionsDescToAsc,\n defaultValue: 'Sections: desc to asc',\n },\n [ContentId.SectionUnmapped]: {\n id: ContentId.SectionUnmapped,\n defaultValue: 'Section Unmapped',\n },\n [ContentId.SelectCountry]: {\n id: ContentId.SelectCountry,\n defaultValue: 'Select Country',\n },\n [ContentId.SelectedFrom]: {\n id: ContentId.SelectedFrom,\n defaultValue: 'Selected from',\n },\n [ContentId.SelectGroupToMoveTo]: {\n id: ContentId.SelectGroupToMoveTo,\n defaultValue: 'Select a group to move to',\n },\n [ContentId.SelectQuantities]: {\n id: ContentId.SelectQuantities,\n defaultValue: 'Select Quantities',\n },\n [ContentId.SelectStateProvince]: {\n id: ContentId.SelectStateProvince,\n defaultValue: 'Select State/Province',\n },\n [ContentId.SelectCity]: {\n id: ContentId.SelectCity,\n defaultValue: 'Select City',\n },\n [ContentId.SellerFault]: {\n id: ContentId.SellerFault,\n defaultValue: 'Seller Fault',\n },\n [ContentId.SetAFloor]: {\n id: ContentId.SetAFloor,\n defaultValue: 'Add a floor',\n },\n [ContentId.SetAPriceFloor]: {\n id: ContentId.SetAPriceFloor,\n defaultValue: 'Add a price floor',\n },\n [ContentId.SetDefaultDeliveryForNewPurchases]: {\n id: ContentId.SetDefaultDeliveryForNewPurchases,\n defaultValue:\n 'Set default vendor-level delivery settings for all new purchases',\n },\n [ContentId.SetDeliveryStrategy]: {\n id: ContentId.SetDeliveryStrategy,\n defaultValue: 'Set Delivery Strategy',\n },\n [ContentId.SetMapAsDefault]: {\n id: ContentId.SetMapAsDefault,\n defaultValue: 'Set this event map as default',\n },\n [ContentId.SetPriceFloor]: {\n id: ContentId.SetPriceFloor,\n defaultValue: 'Set price floor',\n },\n [ContentId.Shown]: {\n id: ContentId.Shown,\n defaultValue: 'Shown',\n },\n [ContentId.ShowSections]: {\n id: ContentId.ShowSections,\n defaultValue: 'Show Sections',\n },\n [ContentId.ShowSectionsInfo]: {\n id: ContentId.ShowSectionsInfo,\n defaultValue: \"View all the sections you're pricing against.\",\n },\n [ContentId.SetMinimumGroupSize]: {\n id: ContentId.SetMinimumGroupSize,\n defaultValue: 'Set a minimum group size',\n },\n [ContentId.Sides]: {\n id: ContentId.Sides,\n defaultValue: 'Sides',\n },\n [ContentId.SideTier1]: {\n id: ContentId.SideTier1,\n defaultValue: 'Side Tier 1',\n },\n [ContentId.SideTier2]: {\n id: ContentId.SideTier2,\n defaultValue: 'Side Tier 2',\n },\n [ContentId.SimilarEventsDefaults]: {\n id: ContentId.SimilarEventsDefaults,\n defaultValue: 'For similar events and venue config at this venue',\n },\n [ContentId.SOR]: {\n id: ContentId.SOR,\n defaultValue: 'SOR (Sale or Return)',\n },\n [ContentId.SplitListing_AllowSplitSoldTickets]: {\n id: ContentId.SplitListing_AllowSplitSoldTickets,\n defaultValue: 'On: Allow splitting of sold tickets into new listings.',\n },\n [ContentId.SplitListing_DoNotAllowSplittingSoldTickets]: {\n id: ContentId.SplitListing_DoNotAllowSplittingSoldTickets,\n defaultValue:\n 'Off: Do not allow splitting of sold tickets into new listings.',\n },\n [ContentId.SplitZonesBy]: {\n id: ContentId.SplitZonesBy,\n defaultValue: 'Split zones by',\n },\n [ContentId.State]: {\n id: ContentId.State,\n defaultValue: 'State',\n },\n [ContentId.SellerId]: {\n id: ContentId.SellerId,\n defaultValue: 'Seller Id',\n },\n [ContentId.Budget]: {\n id: ContentId.Budget,\n defaultValue: 'Budget',\n },\n\n [ContentId.StartDateTime]: {\n id: ContentId.StartDateTime,\n defaultValue: 'Start Date',\n },\n\n [ContentId.EndDateTime]: {\n id: ContentId.EndDateTime,\n defaultValue: 'End Date',\n },\n\n [ContentId.CurrencyCode]: {\n id: ContentId.CurrencyCode,\n defaultValue: 'Currency Code',\n },\n\n [ContentId.BaseBid]: {\n id: ContentId.BaseBid,\n defaultValue: 'Base Bid',\n },\n [ContentId.MaxBid]: {\n id: ContentId.MaxBid,\n defaultValue: 'Max Bid',\n },\n [ContentId.DailyBudget]: {\n id: ContentId.DailyBudget,\n defaultValue: 'Daily Budget',\n },\n [ContentId.StopExperiment]: {\n id: ContentId.StopExperiment,\n defaultValue: 'Stop Experiment',\n },\n [ContentId.Supply]: {\n id: ContentId.Supply,\n defaultValue: 'Supply',\n },\n [ContentId.SuppressFor1HourV2]: {\n id: ContentId.SuppressFor1HourV2,\n defaultValue: 'Save my preference for one hour',\n },\n [ContentId.TableEditor]: {\n id: ContentId.TableEditor,\n defaultValue: 'Table Editor',\n },\n [ContentId.ThenDefaultListingsTo]: {\n id: ContentId.ThenDefaultListingsTo,\n defaultValue: 'Then default listings to',\n },\n [ContentId.ThenDefaultThePurchaseTo]: {\n id: ContentId.ThenDefaultThePurchaseTo,\n defaultValue: 'Then default the purchase to',\n },\n [ContentId.ThenSplitGroupsBy]: {\n id: ContentId.ThenSplitGroupsBy,\n defaultValue: 'Then split groups by',\n },\n [ContentId.ThisFilterWillChangeMetrics]: {\n id: ContentId.ThisFilterWillChangeMetrics,\n defaultValue: 'This filter impacts the metrics displayed on the page.',\n },\n [ContentId.TicketCost]: {\n id: ContentId.TicketCost,\n defaultValue: 'Ticket cost',\n },\n [ContentId.TicketDelivery]: {\n id: ContentId.TicketDelivery,\n defaultValue: 'Ticket Delivery',\n },\n [ContentId.TicketGroupBulkEditPurchaseWarning]: {\n id: ContentId.TicketGroupBulkEditPurchaseWarning,\n defaultValue:\n 'Performing a bulk action on the selected purchase lines will affect the entire purchase order. Continue?',\n },\n [ContentId.TicketPrices]: {\n id: ContentId.TicketPrices,\n defaultValue: 'Ticket Prices',\n },\n [ContentId.TicketQty]: {\n id: ContentId.TicketQty,\n defaultValue: 'Ticket Qty',\n },\n [ContentId.TicketQuantity]: {\n id: ContentId.TicketQuantity,\n defaultValue: 'Ticket Quantity',\n },\n [ContentId.TicketsAllocated]: {\n id: ContentId.TicketsAllocated,\n defaultValue: 'Tickets allocated',\n },\n [ContentId.TicketsSoldAs]: {\n id: ContentId.TicketsSoldAs,\n defaultValue: 'Tickets sold as',\n },\n [ContentId.ToggleSelectionMode]: {\n id: ContentId.ToggleSelectionMode,\n defaultValue: 'Toggle Selection Mode',\n },\n [ContentId.TotalSplitInfo]: {\n id: ContentId.TotalSplitInfo,\n defaultValue: 'The total split percentage must be equal to 100%',\n },\n [ContentId.TurnOnAutoFulfillPrompt]: {\n id: ContentId.TurnOnAutoFulfillPrompt,\n defaultValue:\n 'Do you want to send the fulfillment to the Marketplace? If you select No, you can do it later using the same action.',\n },\n [ContentId.UnableToFindSale]: {\n id: ContentId.UnableToFindSale,\n defaultValue: 'Unable to find sale',\n },\n [ContentId.Ungrouped]: {\n id: ContentId.Ungrouped,\n defaultValue: 'Ungrouped',\n },\n [ContentId.Unknown]: {\n id: ContentId.Unknown,\n defaultValue: 'Unknown',\n },\n [ContentId.UnknownError]: {\n id: ContentId.UnknownError,\n defaultValue: 'Unknown Error',\n },\n [ContentId.UnexpectedErrorOccured]: {\n id: ContentId.UnexpectedErrorOccured,\n defaultValue:\n 'An unexpected error occurred. Please reload the page or report the issue for further assistance.',\n },\n [ContentId.UnlinkSale]: {\n id: ContentId.UnlinkSale,\n defaultValue: 'Unlink Sale',\n },\n [ContentId.UnlinkSaleAndPayment]: {\n id: ContentId.UnlinkSaleAndPayment,\n defaultValue: 'Unlink sale and payment',\n },\n [ContentId.UnlockCommission]: {\n id: ContentId.UnlockCommission,\n defaultValue: 'Unlock Commission',\n },\n [ContentId.Unordered]: {\n id: ContentId.Unordered,\n defaultValue: 'Unordered',\n },\n [ContentId.TypeYourNoteHere]: {\n id: ContentId.TypeYourNoteHere,\n defaultValue: 'Type your note here',\n },\n [ContentId.UnsoldQuantitiesLowToHigh]: {\n id: ContentId.UnsoldQuantitiesLowToHigh,\n defaultValue: 'Unsold quantities: low to high',\n },\n [ContentId.UnsoldQuantitiesHighToLow]: {\n id: ContentId.UnsoldQuantitiesHighToLow,\n defaultValue: 'Unsold quantities: high to low',\n },\n [ContentId.UnwasteTickets]: {\n id: ContentId.UnwasteTickets,\n defaultValue: 'Unwaste Tickets',\n },\n [ContentId.UnwasteTicketsConfirmation]: {\n id: ContentId.UnwasteTicketsConfirmation,\n defaultValue:\n 'This action will cancel the sale and deallocate the tickets. Continue?',\n },\n [ContentId.UpdateAllTicketGroupsUnderAssociatedPurchaseOrders]: {\n id: ContentId.UpdateAllTicketGroupsUnderAssociatedPurchaseOrders,\n defaultValue: 'Update all ticket groups under associated purchase order(s)',\n },\n [ContentId.UpdatedBy]: {\n id: ContentId.UpdatedBy,\n defaultValue: 'Updated By',\n },\n [ContentId.UpdateDeal]: {\n id: ContentId.UpdateDeal,\n defaultValue: 'Update Deal',\n },\n [ContentId.UpdateDeliveryType]: {\n id: ContentId.UpdateDeliveryType,\n defaultValue: 'Update Delivery Type',\n },\n [ContentId.UpdateDeliveryTypeForPlaceholders]: {\n id: ContentId.UpdateDeliveryTypeForPlaceholders,\n defaultValue: 'Update Delivery Type for Placeholders',\n },\n [ContentId.UpdateExistingListings]: {\n id: ContentId.UpdateExistingListings,\n defaultValue: 'Update Existing Listings',\n },\n [ContentId.UpdateExistingPurchasesAndListings]: {\n id: ContentId.UpdateExistingPurchasesAndListings,\n defaultValue: 'Update Existing Purchases and Listings',\n },\n [ContentId.UpdateFulfillmentSettings]: {\n id: ContentId.UpdateFulfillmentSettings,\n defaultValue: 'Update Fulfillment Settings',\n },\n [ContentId.UpdateFulfillmentSettingsMessage]: {\n id: ContentId.UpdateFulfillmentSettingsMessage,\n defaultValue:\n 'Newly created listings will inherit the updated fulfillment properties.',\n },\n [ContentId.UpdateExistingListingsAndAssociatedSales]: {\n id: ContentId.UpdateExistingListingsAndAssociatedSales,\n defaultValue: 'Update Existing Listings and Associated Unfulfilled Sales',\n },\n [ContentId.UpdateFulfillmentSettingsMessagePurchase]: {\n id: ContentId.UpdateFulfillmentSettingsMessagePurchase,\n defaultValue:\n 'Newly created purchases will inherit the updated delivery properties.',\n },\n [ContentId.UpdatePurchaseCurrency]: {\n id: ContentId.UpdatePurchaseCurrency,\n defaultValue: 'Update Purchase Currency',\n },\n [ContentId.UpdatePurchasedBy]: {\n id: ContentId.UpdatePurchasedBy,\n defaultValue: 'Update Purchased By',\n },\n [ContentId.UpdatePurchaseWithMergedListing]: {\n id: ContentId.UpdatePurchaseWithMergedListing,\n defaultValue: 'Update Purchase With Merged Listing',\n },\n [ContentId.UpdateAssociatedSales]: {\n id: ContentId.UpdateAssociatedSales,\n defaultValue: 'Also update associated unfulfilled sales',\n },\n [ContentId.UpdateSeatTraits]: {\n id: ContentId.UpdateSeatTraits,\n defaultValue: 'Update Seat Traits',\n },\n [ContentId.UpdateSeatTraitsForPlaceholders]: {\n id: ContentId.UpdateSeatTraitsForPlaceholders,\n defaultValue: 'Update Seat Traits for Placeholders',\n },\n [ContentId.UpdateSelectedTicketGroupsOnly]: {\n id: ContentId.UpdateSelectedTicketGroupsOnly,\n defaultValue: 'Update selected ticket group(s) only',\n },\n [ContentId.UseAbsoluteFloors]: {\n id: ContentId.UseAbsoluteFloors,\n defaultValue: 'Use Absolute Floors',\n },\n [ContentId.UserAlreadySelected]: {\n id: ContentId.UserAlreadySelected,\n defaultValue: 'User Already Selected',\n },\n [ContentId.UseZoneMap]: {\n id: ContentId.UseZoneMap,\n defaultValue: 'Use zone map',\n },\n [ContentId.UseZoneMapDisabledTip]: {\n id: ContentId.UseZoneMapDisabledTip,\n defaultValue:\n 'Please apply the same zone map across selected events to use this feature',\n },\n [ContentId.Values]: {\n id: ContentId.Values,\n defaultValue: 'Values',\n },\n [ContentId.VendorGroup]: {\n id: ContentId.VendorGroup,\n defaultValue: 'Vendor Group',\n },\n [ContentId.VendorManagement]: {\n id: ContentId.VendorManagement,\n defaultValue: 'Vendor Management',\n },\n [ContentId.AddAdCampaign]: {\n id: ContentId.AddAdCampaign,\n defaultValue: 'Add Campaign',\n },\n [ContentId.AddAdGroup]: {\n id: ContentId.AddAdGroup,\n defaultValue: 'Add Ad Group',\n },\n [ContentId.EnterAdCampaignName]: {\n id: ContentId.EnterAdCampaignName,\n defaultValue: 'Enter Ad Campaign Name',\n },\n [ContentId.EnterAdGroupName]: {\n id: ContentId.EnterAdGroupName,\n defaultValue: 'Enter Ad Group Name',\n },\n [ContentId.ManageAdGroups]: {\n id: ContentId.ManageAdGroups,\n defaultValue: 'Manage Ad Groups',\n },\n [ContentId.BidModifierDimension]: {\n id: ContentId.BidModifierDimension,\n defaultValue: 'Bid Modifier Type',\n },\n [ContentId.EventBidModifierValue]: {\n id: ContentId.EventBidModifierValue,\n defaultValue: 'Bid Modifier Value',\n },\n [ContentId.TicketClass]: {\n id: ContentId.TicketClass,\n defaultValue: 'Ticket Class',\n },\n [ContentId.BidModifier]: {\n id: ContentId.BidModifier,\n defaultValue: 'Bid Modifier',\n },\n [ContentId.VendorPayments]: {\n id: ContentId.VendorPayments,\n defaultValue: 'Vendor Payments',\n },\n [ContentId.VenueRowData]: {\n id: ContentId.VenueRowData,\n defaultValue: 'Venue row data',\n },\n [ContentId.ViewApplicableListings]: {\n id: ContentId.ViewApplicableListings,\n defaultValue: 'View Applicable Listings',\n },\n [ContentId.AdSpend]: {\n id: ContentId.AdSpend,\n defaultValue: 'Ad Spend',\n },\n [ContentId.AddGenre]: {\n id: ContentId.AddGenre,\n defaultValue: 'Add Genre',\n },\n [ContentId.AddPerformer]: {\n id: ContentId.AddPerformer,\n defaultValue: 'Add Peformer',\n },\n [ContentId.AddEvent]: {\n id: ContentId.AddEvent,\n defaultValue: 'Add Event',\n },\n [ContentId.AddTicketClass]: {\n id: ContentId.AddTicketClass,\n defaultValue: 'Add Ticket Class',\n },\n [ContentId.AddListings]: {\n id: ContentId.AddListings,\n defaultValue: 'Add Listings',\n },\n [ContentId.AddVenue]: {\n id: ContentId.AddVenue,\n defaultValue: 'Add Venue',\n },\n [ContentId.MaxBidLessThanBaseBidMsg]: {\n id: ContentId.MaxBidLessThanBaseBidMsg,\n defaultValue: 'Max bid must be greater than or equal to base bid',\n },\n [ContentId.DailyBudgetLessThanMaxBidMsg]: {\n id: ContentId.MaxBidLessThanBaseBidMsg,\n defaultValue: 'Daily budget must be greater than or equal to max bid',\n },\n\n [ContentId.CompListingQuantityScoreAdjustment]: {\n id: ContentId.CompListingQuantityScoreAdjustment,\n defaultValue: 'Adjust Seat Score for Quantity',\n },\n [ContentId.CompMode]: {\n id: ContentId.CompMode,\n defaultValue: 'Comp. Mode',\n },\n [ContentId.Concert]: {\n id: ContentId.Concert,\n defaultValue: 'Concert',\n },\n [ContentId.ConcertsSectionsBehindStage]: {\n id: ContentId.ConcertsSectionsBehindStage,\n defaultValue: 'Concerts Sections Behind Stage',\n },\n [ContentId.Configure]: {\n id: ContentId.Configure,\n defaultValue: 'Configure',\n },\n [ContentId.ConfigureColumnTags]: {\n id: ContentId.ConfigureColumnTags,\n defaultValue: 'Configure Column Tags',\n },\n [ContentId.ConfigureColumnVariables]: {\n id: ContentId.ConfigureColumnVariables,\n defaultValue: 'Configure column variables',\n },\n [ContentId.ConfigureHeatMap]: {\n id: ContentId.ConfigureHeatMap,\n defaultValue: 'Configure Heat Map',\n },\n [ContentId.ConfiguringYourHeatMap]: {\n id: ContentId.ConfiguringYourHeatMap,\n defaultValue: 'Configuring your Heat Map',\n },\n [ContentId.ConfiguringHeatMapInstruction1]: {\n id: ContentId.ConfiguringHeatMapInstruction1,\n defaultValue:\n 'Get the heat map looking right by setting the relationship between value, and DISTANCE, HEIGHT and ANGLE.',\n },\n [ContentId.ConfiguringHeatMapInstruction2]: {\n id: ContentId.ConfiguringHeatMapInstruction2,\n defaultValue:\n 'Fine tune your heat map by clicking on a section, and adjusting its value.',\n },\n [ContentId.Confirm]: {\n id: ContentId.Confirm,\n defaultValue: 'Confirm',\n },\n [ContentId.ConfirmAllocation]: {\n id: ContentId.ConfirmAllocation,\n defaultValue: 'Confirm Allocation',\n },\n [ContentId.ConfirmationDeadline]: {\n id: ContentId.ConfirmationDeadline,\n defaultValue: 'Confirmation Deadline',\n },\n [ContentId.ConfirmDeletion]: {\n id: ContentId.ConfirmDeletion,\n defaultValue: 'Confirm Deletion',\n },\n [ContentId.ConfirmTransferWithoutProof]: {\n id: ContentId.ConfirmTransferWithoutProof,\n defaultValue: 'Confirm without Proof',\n },\n [ContentId.ConfirmVendorAccountChange]: {\n id: ContentId.ConfirmVendorAccountChange,\n defaultValue:\n \"You're about to change the vendor account, which will auto-assign the purchaser to the default purchaser associated with the new vendor account.\",\n },\n [ContentId.ConfirmWithoutAllocation]: {\n id: ContentId.ConfirmWithoutAllocation,\n defaultValue: 'Confirm without Allocation',\n },\n [ContentId.Contains]: {\n id: ContentId.Contains,\n defaultValue: 'Contains',\n },\n [ContentId.ConversionRate]: {\n id: ContentId.ConversionRate,\n defaultValue: 'Conversion Rate',\n },\n [ContentId.ConversionRateMustBeGreaterThanZero]: {\n id: ContentId.ConversionRateMustBeGreaterThanZero,\n defaultValue: 'Conversion Rate must be greater than zero',\n },\n [ContentId.CopyEmailAddress]: {\n id: ContentId.CopyEmailAddress,\n defaultValue: 'Copy email address',\n },\n [ContentId.CopyExternalId]: {\n id: ContentId.CopyExternalId,\n defaultValue: 'Copy external ID to clipboard',\n },\n [ContentId.Create]: {\n id: ContentId.Create,\n defaultValue: 'Create',\n },\n [ContentId.CreateACustomColumn]: {\n id: ContentId.CreateACustomColumn,\n defaultValue: 'Create a Custom Column',\n },\n [ContentId.CreateAHeatMap]: {\n id: ContentId.CreateAHeatMap,\n defaultValue: 'Create a Heat Map',\n },\n [ContentId.CreateANewTeam]: {\n id: ContentId.CreateANewTeam,\n defaultValue: 'Create a new team',\n },\n [ContentId.CreatedBy]: {\n id: ContentId.CreatedBy,\n defaultValue: 'Created By',\n },\n [ContentId.CreatedOn]: {\n id: ContentId.CreatedOn,\n defaultValue: 'Created On',\n },\n [ContentId.CreateNew]: {\n id: ContentId.CreateNew,\n defaultValue: 'Create New',\n },\n [ContentId.CreateNewField]: {\n id: ContentId.CreateNewField,\n defaultValue: 'Create new field',\n },\n [ContentId.CreateNewFromTemplateConfigPayload]: {\n id: ContentId.CreateNewFromTemplateConfigPayload,\n defaultValue: 'Or, create a new model from an existing configuration',\n },\n [ContentId.CreateNewInventoryReport]: {\n id: ContentId.CreateNewInventoryReport,\n defaultValue: 'Create new inventory report',\n },\n [ContentId.CreateNewOrder]: {\n id: ContentId.CreateNewOrder,\n defaultValue: 'Create New Order',\n },\n [ContentId.CreateNewReport]: {\n id: ContentId.CreateNewReport,\n defaultValue: 'Create new report',\n },\n [ContentId.CreateNewSaleReport]: {\n id: ContentId.CreateNewSaleReport,\n defaultValue: 'Create new sale report',\n },\n [ContentId.CreateNewTag]: {\n id: ContentId.CreateNewTag,\n defaultValue: 'Create New Tag',\n },\n [ContentId.CreatePricingStrategy]: {\n id: ContentId.CreatePricingStrategy,\n defaultValue: 'Create pricing strategy',\n },\n [ContentId.Credits]: {\n id: ContentId.Credits,\n defaultValue: 'Credits',\n },\n [ContentId.CSError]: {\n id: ContentId.CSError,\n defaultValue: 'CS Error',\n },\n [ContentId.CurrencyConversion]: {\n id: ContentId.CurrencyConversion,\n defaultValue: 'Currency Conversion',\n },\n [ContentId.CurrencySectionSubtitle]: {\n id: ContentId.CurrencySectionSubtitle,\n defaultValue:\n 'Select your preferred default currency and auto-conversion settings',\n },\n [ContentId.Current]: {\n id: ContentId.Current,\n defaultValue: 'Current',\n },\n [ContentId.CurrentColumns]: {\n id: ContentId.CurrentColumns,\n defaultValue: 'Current columns',\n },\n [ContentId.CurrentFloor]: {\n id: ContentId.CurrentFloor,\n defaultValue: 'Current Floor',\n },\n [ContentId.Custom]: {\n id: ContentId.Custom,\n defaultValue: 'Custom',\n },\n [ContentId.CustomEventId]: {\n id: ContentId.CustomEventId,\n defaultValue: 'Custom Event ID',\n },\n [ContentId.CustomReports]: {\n id: ContentId.CustomReports,\n defaultValue: 'Custom Reports',\n },\n [ContentId.DailyOverrideFxRates]: {\n id: ContentId.DailyOverrideFxRates,\n defaultValue: 'Daily Override Fx Rates',\n },\n [ContentId.Dark]: {\n id: ContentId.Dark,\n defaultValue: 'Dark',\n },\n [ContentId.DarkMode]: {\n id: ContentId.DarkMode,\n defaultValue: 'Dark Mode',\n },\n [ContentId.Dashboard]: {\n id: ContentId.Dashboard,\n defaultValue: 'Dashboard',\n },\n [ContentId.DataIsRefreshing]: {\n id: ContentId.DataIsRefreshing,\n defaultValue: 'Data is refreshing...',\n },\n [ContentId.Date]: {\n id: ContentId.Date,\n defaultValue: 'Date',\n },\n [ContentId.Day]: {\n id: ContentId.Day,\n defaultValue: 'Day',\n },\n [ContentId.Days]: {\n id: ContentId.Days,\n defaultValue: 'Days',\n },\n [ContentId.DeactivateUser]: {\n id: ContentId.DeactivateUser,\n defaultValue: 'Deactivate User',\n },\n [ContentId.DealScore]: {\n id: ContentId.DealScore,\n defaultValue: 'Deal Score',\n },\n [ContentId.Decimal]: {\n id: ContentId.Decimal,\n defaultValue: 'Decimal',\n },\n [ContentId.DecimalNumber]: {\n id: ContentId.DecimalNumber,\n defaultValue: 'Decimal Number',\n },\n [ContentId.Decrease]: {\n id: ContentId.Decrease,\n defaultValue: 'Decrease',\n },\n [ContentId.DecreasePrice]: {\n id: ContentId.DecreasePrice,\n defaultValue: 'Decrease Price',\n },\n [ContentId.DecreasePriceByPercentAllVisible]: {\n id: ContentId.DecreasePriceByPercentAllVisible,\n defaultValue: 'Decrease Price of All Visible Listings By X%',\n },\n [ContentId.DecreasePriceForAll]: {\n id: ContentId.DecreasePriceForAll,\n defaultValue: 'Decrease Price for All',\n },\n [ContentId.DecreasePriceForSelected]: {\n id: ContentId.DecreasePriceForSelected,\n defaultValue: 'Decrease Price for Selected',\n },\n [ContentId.DefaultBuyer]: {\n id: ContentId.DefaultBuyer,\n defaultValue: 'Default Buyer',\n },\n [ContentId.DefaultCurrency]: {\n id: ContentId.DefaultCurrency,\n defaultValue: 'Default Currency',\n },\n [ContentId.DefaultPaymentMethod]: {\n id: ContentId.DefaultPaymentMethod,\n defaultValue: 'Default Payment Method',\n },\n [ContentId.DefaultQuantity]: {\n id: ContentId.DefaultQuantity,\n defaultValue: 'Default Quantity',\n },\n [ContentId.DefaultQuantityFilters]: {\n id: ContentId.DefaultQuantityFilters,\n defaultValue: 'Default Quantity Filters',\n },\n [ContentId.DefaultReports]: {\n id: ContentId.DefaultReports,\n defaultValue: 'Default Reports',\n },\n [ContentId.DefaultSplitTypeForSeatSaver]: {\n id: ContentId.DefaultSplitTypeForSeatSaver,\n defaultValue: 'Default Split Type for Placeholder',\n },\n [ContentId.DefineTargets]: {\n id: ContentId.DefineTargets,\n defaultValue: 'Define targets',\n },\n [ContentId.DefineTargetsSubtitle]: {\n id: ContentId.DefineTargetsSubtitle,\n defaultValue: 'Set target sell-through rates for specific dates.',\n },\n [ContentId.Delete]: {\n id: ContentId.Delete,\n defaultValue: 'Delete',\n },\n [ContentId.DeleteAllTemplates]: {\n id: ContentId.DeleteAllTemplates,\n defaultValue:\n 'Are you sure you want to delete this template for all events?',\n },\n [ContentId.DeleteCustomColumn]: {\n id: ContentId.DeleteCustomColumn,\n defaultValue: 'Delete Custom Column',\n },\n [ContentId.DeleteFxOverrideWarning]: {\n id: ContentId.DeleteFxOverrideWarning,\n defaultValue:\n 'Deleting an FX rate override will adjust the unit cost on the affected listings. Are you sure?',\n },\n [ContentId.DeleteOverrideFxRate]: {\n id: ContentId.DeleteOverrideFxRate,\n defaultValue: 'Delete Override Fx Rate',\n },\n [ContentId.DeletePlaceholder]: {\n id: ContentId.DeletePlaceholder,\n defaultValue: 'Delete Placeholder',\n },\n [ContentId.DeletePlaceholderAll]: {\n id: ContentId.DeletePlaceholderAll,\n defaultValue: 'Delete All Placeholder Inventory',\n },\n [ContentId.DeletePlaceholderAllVisible]: {\n id: ContentId.DeletePlaceholderAllVisible,\n defaultValue: 'Delete All Visible Placeholder Inventory',\n },\n [ContentId.DeletePlaceholderListing]: {\n id: ContentId.DeletePlaceholderListing,\n defaultValue: 'Delete Placeholder Listing',\n },\n [ContentId.DeletePlaceholderSelected]: {\n id: ContentId.DeletePlaceholderSelected,\n defaultValue: 'Delete All Selected Placeholder Inventory',\n },\n [ContentId.DeletePricingStrategy]: {\n id: ContentId.DeletePricingStrategy,\n defaultValue: 'Delete pricing strategy',\n },\n [ContentId.DeleteReport]: {\n id: ContentId.DeleteReport,\n defaultValue: 'Delete Report',\n },\n [ContentId.DeleteRole]: {\n id: ContentId.DeleteRole,\n defaultValue: 'Delete Role',\n },\n [ContentId.DeleteSeatSaver]: {\n id: ContentId.DeleteSeatSaver,\n defaultValue: 'Delete Seat Saver',\n },\n [ContentId.DeleteSeatSaverAll]: {\n id: ContentId.DeleteSeatSaverAll,\n defaultValue: 'Delete Seat Saver for All',\n },\n [ContentId.DeleteSeatSaverAllVisible]: {\n id: ContentId.DeleteSeatSaverAllVisible,\n defaultValue: 'Delete Seat Saver for All Visible Listings',\n },\n [ContentId.DeleteSeatSaverSelected]: {\n id: ContentId.DeleteSeatSaverSelected,\n defaultValue: 'Delete Seat Saver for Selected',\n },\n [ContentId.DeleteTag]: {\n id: ContentId.DeleteTag,\n defaultValue: 'Delete Tag',\n },\n [ContentId.DeleteTagConfirmation1]: {\n id: ContentId.DeleteTagConfirmation1,\n defaultValue: 'Are you sure you want to delete this tag definition?',\n },\n [ContentId.DeleteTagConfirmation2]: {\n id: ContentId.DeleteTagConfirmation2,\n defaultValue:\n 'This action will remove all associated tag values and columns from reports.',\n },\n [ContentId.DeleteTeam]: {\n id: ContentId.DeleteTeam,\n defaultValue: 'Delete Team',\n },\n [ContentId.DeleteUser]: {\n id: ContentId.DeleteUser,\n defaultValue: 'Delete user',\n },\n [ContentId.DelistedClickToList]: {\n id: ContentId.DelistedClickToList,\n defaultValue: 'Delisted - click to list',\n },\n [ContentId.DelistedSyncFailed]: {\n id: ContentId.DelistedSyncFailed,\n defaultValue: 'Delisted, Sync Failed',\n },\n [ContentId.DeliveryDocuments]: {\n id: ContentId.DeliveryDocuments,\n defaultValue: 'Delivery Documents',\n },\n [ContentId.DeliveryMethodChange]: {\n id: ContentId.DeliveryMethodChange,\n defaultValue: 'Delivery Method Change',\n },\n [ContentId.DeliveryType]: {\n id: ContentId.DeliveryType,\n defaultValue: 'Delivery Type',\n },\n [ContentId.DemandFactors]: {\n id: ContentId.DemandFactors,\n defaultValue: 'Demand Factor',\n },\n [ContentId.Description]: {\n id: ContentId.Description,\n defaultValue: 'Description',\n },\n [ContentId.DescriptionOfPurpose]: {\n id: ContentId.DescriptionOfPurpose,\n defaultValue: 'Description of purpose',\n },\n [ContentId.DeselectAll]: {\n id: ContentId.DeselectAll,\n defaultValue: 'Deselect all',\n },\n [ContentId.DesiredActiveListings]: {\n id: ContentId.DesiredActiveListings,\n defaultValue: 'Desired Active Listings',\n },\n [ContentId.DecreasePriceByPercentAll]: {\n id: ContentId.DecreasePriceByPercentAll,\n defaultValue: 'Decrease All Price By X%',\n },\n [ContentId.DecreasePriceByPercentSelected]: {\n id: ContentId.DecreasePriceByPercentSelected,\n defaultValue: 'Decrease Selected Price By X%',\n },\n [ContentId.DesiredNumberOfGroups]: {\n id: ContentId.DesiredNumberOfGroups,\n defaultValue: 'Desired Number of Groups',\n },\n [ContentId.DigitalWallet]: {\n id: ContentId.DigitalWallet,\n defaultValue: 'Digital Wallet',\n },\n [ContentId.DirectToStubHubInternationalMessage]: {\n id: ContentId.DirectToStubHubInternationalMessage,\n defaultValue:\n 'StubHub International is a different company. We will be unable to help you with your order once you leave this site. You will be responsible for reviewing their terms and conditions, guarantee and working directly with their customer service.',\n },\n [ContentId.DirectToStubHubInternationalTitle]: {\n id: ContentId.DirectToStubHubInternationalTitle,\n defaultValue:\n 'You are being redirected to another business: StubHub International',\n },\n [ContentId.DifferentCurrencyCodesRequired]: {\n id: ContentId.DifferentCurrencyCodesRequired,\n defaultValue: 'Different currency codes are required',\n },\n [ContentId.AutoSourceTickets]: {\n id: ContentId.AutoSourceTickets,\n defaultValue: 'Auto-Source Tickets',\n },\n [ContentId.Disabled]: {\n id: ContentId.Disabled,\n defaultValue: 'Disabled',\n },\n [ContentId.DisableDarkMode]: {\n id: ContentId.DisableDarkMode,\n defaultValue: 'Disable Dark Mode',\n },\n [ContentId.Discount]: {\n id: ContentId.Discount,\n defaultValue: 'Discount',\n },\n [ContentId.Display]: {\n id: ContentId.Display,\n defaultValue: 'Display',\n },\n [ContentId.DisplayName]: {\n id: ContentId.DisplayName,\n defaultValue: 'Display name',\n },\n [ContentId.Distance]: {\n id: ContentId.Distance,\n defaultValue: 'Distance',\n },\n [ContentId.DollarsInBasket]: {\n id: ContentId.DollarsInBasket,\n defaultValue: '$ in Basket',\n },\n [ContentId.Done]: {\n id: ContentId.Done,\n defaultValue: 'Done',\n },\n [ContentId.DontChange]: {\n id: ContentId.DontChange,\n defaultValue: \"Don't Change\",\n },\n [ContentId.DontPriceBelow]: {\n id: ContentId.DontPriceBelow,\n defaultValue: \"Don't price below\",\n },\n [ContentId.Download]: {\n id: ContentId.Download,\n defaultValue: 'Download',\n },\n [ContentId.DownloadTemplate]: {\n id: ContentId.DownloadTemplate,\n defaultValue: 'Download Template',\n },\n [ContentId.DoYouWantToContinue]: {\n id: ContentId.DoYouWantToContinue,\n defaultValue: 'Do you want to continue?',\n },\n [ContentId.Duplicate]: {\n id: ContentId.Duplicate,\n defaultValue: 'Duplicate',\n },\n [ContentId.DuplicatedListing]: {\n id: ContentId.DuplicatedListing,\n defaultValue: 'Duplicated Listing',\n },\n [ContentId.DuplicatedReportName]: {\n id: ContentId.DuplicatedReportName,\n defaultValue: 'A report with the same name already exists.',\n },\n [ContentId.DuplicateEventNeedsToBeRescheduled]: {\n id: ContentId.DuplicateEventNeedsToBeRescheduled,\n defaultValue: 'Duplicate Event - Needs to be rescheduled',\n },\n [ContentId.DuplicateEventPerformerVenueDateAndTimeMatch]: {\n id: ContentId.DuplicateEventPerformerVenueDateAndTimeMatch,\n defaultValue: 'Duplicate Event - Performer, venue, date, and time match',\n },\n [ContentId.Duplicates]: {\n id: ContentId.Duplicates,\n defaultValue: 'Duplicates',\n },\n [ContentId.DuplicateTicketId]: {\n id: ContentId.DuplicateTicketId,\n defaultValue: 'Duplicate Ticket ID.',\n },\n [ContentId.each]: {\n id: ContentId.each,\n defaultValue: 'each',\n },\n [ContentId.EachTicketUrlOnNewLine]: {\n id: ContentId.EachTicketUrlOnNewLine,\n defaultValue: 'Each url should be on a new line.',\n },\n [ContentId.EachTicketIdOnNewLine]: {\n id: ContentId.EachTicketIdOnNewLine,\n defaultValue: 'Each ticket ID should be on a new line.',\n },\n [ContentId.EarlyShippingLabelGeneration]: {\n id: ContentId.EarlyShippingLabelGeneration,\n defaultValue: 'Early Shipping Label Generation',\n },\n [ContentId.Earnings]: {\n id: ContentId.Earnings,\n defaultValue: 'Earnings',\n },\n [ContentId.Editable]: {\n id: ContentId.Editable,\n defaultValue: 'Editable',\n },\n [ContentId.EditATeam]: {\n id: ContentId.EditATeam,\n defaultValue: 'Edit a team',\n },\n [ContentId.EditColumns]: {\n id: ContentId.EditColumns,\n defaultValue: 'Edit Columns',\n },\n [ContentId.EditEditabilityDescription]: {\n id: ContentId.EditEditabilityDescription,\n defaultValue: 'User can edit the value set for this filter',\n },\n [ContentId.EditEventWarning]: {\n id: ContentId.EditEventWarning,\n defaultValue:\n 'Warning! Changing event of a ticket group will delete it and all associated listings and deallocate all associated sales and recreate the ticket group and listings.',\n },\n [ContentId.EditEventWarning2]: {\n id: ContentId.EditEventWarning2,\n defaultValue:\n 'Warning! Changing event of a ticket group will delete it and all associated listings and recreate the ticket group and listings. You may chose to deallocate the associated sales below.',\n },\n [ContentId.EditGeneralSettings]: {\n id: ContentId.EditGeneralSettings,\n defaultValue: 'Edit General Settings',\n },\n [ContentId.EditMarketplaceEvent]: {\n id: ContentId.EditMarketplaceEvent,\n defaultValue: 'Edit Marketplace Event Info',\n },\n [ContentId.EditACustomColumn]: {\n id: ContentId.EditACustomColumn,\n defaultValue: 'Edit a Custom Column',\n },\n [ContentId.EditMetrics]: {\n id: ContentId.EditMetrics,\n defaultValue: 'Edit Metrics',\n },\n [ContentId.EditNote]: {\n id: ContentId.EditNote,\n defaultValue: 'Edit Note',\n },\n [ContentId.EditOverrideFxRate]: {\n id: ContentId.EditOverrideFxRate,\n defaultValue: 'Edit Override Fx Rate',\n },\n [ContentId.EditPricing]: {\n id: ContentId.EditPricing,\n defaultValue: 'Edit Pricing',\n },\n [ContentId.EditPricingStrategy]: {\n id: ContentId.EditPricingStrategy,\n defaultValue: 'Edit pricing strategy',\n },\n [ContentId.EditReport]: {\n id: ContentId.EditReport,\n defaultValue: 'Edit Report',\n },\n [ContentId.EditRowScore]: {\n id: ContentId.EditRowScore,\n defaultValue: 'Edit Row Score',\n },\n [ContentId.EditRowScores]: {\n id: ContentId.EditRowScores,\n defaultValue: 'Edit Row Scores',\n },\n [ContentId.EditScores]: {\n id: ContentId.EditScores,\n defaultValue: 'Edit Scores',\n },\n [ContentId.EditSections]: {\n id: ContentId.EditSections,\n defaultValue: 'Edit Sections',\n },\n [ContentId.EditTagTypes]: {\n id: ContentId.EditTagTypes,\n defaultValue: 'Edit Tag Types',\n },\n [ContentId.EditUser]: {\n id: ContentId.EditUser,\n defaultValue: 'Edit User',\n },\n [ContentId.EffectiveCeilingBelowFloor]: {\n id: ContentId.EffectiveCeilingBelowFloor,\n defaultValue: 'Effective Ceiling Below Floor',\n },\n [ContentId.EmailPreview]: {\n id: ContentId.EmailPreview,\n defaultValue: 'Email Preview',\n },\n [ContentId.EnableAll]: {\n id: ContentId.EnableAll,\n defaultValue: 'Enable All',\n },\n [ContentId.EnableAndDisableExperimentalFeatures]: {\n id: ContentId.EnableAndDisableExperimentalFeatures,\n defaultValue:\n 'Enable and disable experimental features of StubHub platform',\n },\n [ContentId.EnableAutoPricing]: {\n id: ContentId.EnableAutoPricing,\n defaultValue: 'Enable auto pricing',\n },\n [ContentId.Enabled]: {\n id: ContentId.Enabled,\n defaultValue: 'Enabled',\n },\n [ContentId.EnableDarkMode]: {\n id: ContentId.EnableDarkMode,\n defaultValue: 'Enable Dark Mode',\n },\n [ContentId.EnableQualityControlForAutoPo]: {\n id: ContentId.EnableQualityControlForAutoPo,\n defaultValue: 'Enable quality control for Auto-PO',\n },\n [ContentId.EnjoyTheEvent]: {\n id: ContentId.EnjoyTheEvent,\n defaultValue: 'Enjoy the Event',\n },\n [ContentId.EnterBarcodesForTransferIns]: {\n id: ContentId.EnterBarcodesForTransferIns,\n defaultValue:\n 'Review the barcode for each seat. Update or fill-in any one necessary. You can copy & paste an ordered list from excel in the bulk entry view to auto-populate the seats.',\n },\n [ContentId.EnterResetCodeFromEmail]: {\n id: ContentId.EnterResetCodeFromEmail,\n defaultValue: 'Enter reset code from email',\n },\n [ContentId.EnterStubHubEmailPrompt]: {\n id: ContentId.EnterStubHubEmailPrompt,\n defaultValue: \"Enter the user's StubHub account email\",\n },\n [ContentId.EnterTicketUrlsIns]: {\n id: ContentId.EnterTicketUrlsIns,\n defaultValue:\n 'Review the ticket URL for each seat. Update or fill-in any one necessary. You can copy & paste an ordered list from excel in the bulk entry view to auto-populate the seats.',\n },\n [ContentId.EnterTicketIdsIns]: {\n id: ContentId.EnterTicketIdsIns,\n defaultValue:\n 'Review the ticket ID for each seat. Update or fill-in any one necessary. You can copy & paste an ordered list from excel in the bulk entry view to auto-populate the seats.',\n },\n [ContentId.EnterValuesFor]: {\n id: ContentId.EnterValuesFor,\n defaultValue: 'Enter values for',\n },\n [ContentId.Equals]: {\n id: ContentId.Equals,\n defaultValue: 'Equals',\n },\n [ContentId.EventCancelled]: {\n id: ContentId.EventCancelled,\n defaultValue: 'Event Cancelled',\n },\n [ContentId.EventHasPassed]: {\n id: ContentId.EventHasPassed,\n defaultValue: 'Event has Passed',\n },\n [ContentId.EventId]: {\n id: ContentId.EventId,\n defaultValue: 'Event ID',\n },\n [ContentId.EventMapped]: {\n id: ContentId.EventMapped,\n defaultValue: 'Event Mapped',\n },\n [ContentId.EventPostponed]: {\n id: ContentId.EventPostponed,\n defaultValue: 'Event Postponed',\n },\n [ContentId.Events_AddTagType_Details]: {\n id: ContentId.Events_AddTagType_Details,\n defaultValue: 'Permits adding new tag types to events',\n },\n [ContentId.Events_Edit_Details]: {\n id: ContentId.Events_Edit_Details,\n defaultValue: 'Allows updating event details',\n },\n [ContentId.Events_SetPrice_Details]: {\n id: ContentId.Events_SetPrice_Details,\n defaultValue: 'Configure pricing settings for indvidual events',\n },\n [ContentId.Events_UpdateTags_Details]: {\n id: ContentId.Events_UpdateTags_Details,\n defaultValue: 'Permits updating of tags on event records',\n },\n [ContentId.Events_ViewAll_Details]: {\n id: ContentId.Events_ViewAll_Details,\n defaultValue:\n 'Ability to query any event using ViagogoEventId or ViagogoEventMappingId',\n },\n [ContentId.EventTag]: {\n id: ContentId.EventTag,\n defaultValue: 'Event Tag',\n },\n [ContentId.EventTags]: {\n id: ContentId.EventTags,\n defaultValue: 'Event Tags',\n },\n [ContentId.EventView]: {\n id: ContentId.EventView,\n defaultValue: 'Event View',\n },\n [ContentId.Example]: {\n id: ContentId.Example,\n defaultValue: 'Example',\n },\n [ContentId.ExcessiveFailureRate]: {\n id: ContentId.ExcessiveFailureRate,\n defaultValue: 'Excessive Failure Rate',\n },\n [ContentId.Exclude]: {\n id: ContentId.Exclude,\n defaultValue: 'Exclude',\n },\n [ContentId.ExcludeFanInventory]: {\n id: ContentId.ExcludeFanInventory,\n defaultValue: 'Exclude Fan Inventory',\n },\n [ContentId.ExcludeFullySoldListings]: {\n id: ContentId.ExcludeFullySoldListings,\n defaultValue: 'Exclude fully sold listings',\n },\n [ContentId.ExclusionCurrencies]: {\n id: ContentId.ExclusionCurrencies,\n defaultValue: 'Exclusion Currencies',\n },\n [ContentId.ExclusionCurrenciesSubtitle]: {\n id: ContentId.ExclusionCurrenciesSubtitle,\n defaultValue: 'Exclude currencies that should not be auto-converted',\n },\n [ContentId.ExistingOrder]: {\n id: ContentId.ExistingOrder,\n defaultValue: 'Existing Order',\n },\n [ContentId.ExistingTagName]: {\n id: ContentId.ExistingTagName,\n defaultValue: 'Tag with the same name already exists',\n },\n [ContentId.ExistingTagValue]: {\n id: ContentId.ExistingTagValue,\n defaultValue: 'Tag with same key/value pair already exists',\n },\n [ContentId.Exit]: {\n id: ContentId.Exit,\n defaultValue: 'Exit',\n },\n [ContentId.ExpectedProceeds]: {\n id: ContentId.ExpectedProceeds,\n defaultValue: 'Expected Proceeds',\n },\n [ContentId.ExpectedProfit]: {\n id: ContentId.ExpectedProfit,\n defaultValue: 'Expected Profit',\n },\n [ContentId.ExpectedSTR]: {\n id: ContentId.ExpectedSTR,\n defaultValue: 'Expected STR',\n },\n [ContentId.ExperimentalFeatures]: {\n id: ContentId.ExperimentalFeatures,\n defaultValue: 'Experimental features',\n },\n [ContentId.ExperimentalFeaturesComingSoon]: {\n id: ContentId.ExperimentalFeaturesComingSoon,\n defaultValue: 'Experimental Features Coming Soon',\n },\n [ContentId.ExpiredShippingLabel]: {\n id: ContentId.ExpiredShippingLabel,\n defaultValue: 'Expired Shipping Label',\n },\n [ContentId.ExploreComparables]: {\n id: ContentId.ExploreComparables,\n defaultValue: 'Explore Comparables',\n },\n [ContentId.ExportListings]: {\n id: ContentId.ExportListings,\n defaultValue: 'Export Listings',\n },\n [ContentId.ExportSales]: {\n id: ContentId.ExportSales,\n defaultValue: 'Export Sales',\n },\n [ContentId.ExternalPurchaseId]: {\n id: ContentId.ExternalPurchaseId,\n defaultValue: 'External Purchase Id',\n },\n [ContentId.ExternalSaleId]: {\n id: ContentId.ExternalSaleId,\n defaultValue: 'External Sale Id',\n },\n [ContentId.Far]: {\n id: ContentId.Far,\n defaultValue: 'Far',\n },\n [ContentId.Festival]: {\n id: ContentId.Festival,\n defaultValue: 'Festival',\n },\n [ContentId.FindThe]: {\n id: ContentId.FindThe,\n defaultValue: 'Find the',\n },\n [ContentId.FulfillmentProviders]: {\n id: ContentId.FulfillmentProviders,\n defaultValue: 'Fulfillment Providers',\n },\n [ContentId.FulfillmentProvidersSubText]: {\n id: ContentId.FulfillmentProvidersSubText,\n defaultValue: 'Choose which channels you want to distribute to',\n },\n [ContentId.FullPrice]: {\n id: ContentId.FullPrice,\n defaultValue: 'Full Price',\n },\n [ContentId.GlobalReportFilterChangeCopyMessage]: {\n id: ContentId.GlobalReportFilterChangeCopyMessage,\n defaultValue:\n 'Changes to the filter will not be persisted. Make a copy to save the changes.',\n },\n [ContentId.HasUnsoldListings]: {\n id: ContentId.HasUnsoldListings,\n defaultValue: 'Has Unsold Listings',\n },\n [ContentId.Hidden]: {\n id: ContentId.Hidden,\n defaultValue: 'Hidden',\n },\n [ContentId.HiddenEditabilityDescription]: {\n id: ContentId.HiddenEditabilityDescription,\n defaultValue: 'User cannot see this filter has been set',\n },\n [ContentId.HowToDeterminePrice]: {\n id: ContentId.HowToDeterminePrice,\n defaultValue: 'How to determine price',\n },\n [ContentId.LastMinuteSalesLateDelivery]: {\n id: ContentId.LastMinuteSalesLateDelivery,\n defaultValue: 'Last Minute Sales Late Delivery',\n },\n [ContentId.LastReviewed]: {\n id: ContentId.LastReviewed,\n defaultValue: 'Last Reviewed',\n },\n [ContentId.InventoryTag]: {\n id: ContentId.InventoryTag,\n defaultValue: 'Inventory Tag',\n },\n [ContentId.GlobalReportFilterChangeMessage]: {\n id: ContentId.GlobalReportFilterChangeMessage,\n defaultValue: 'Changes to the filter will not be persisted.',\n },\n [ContentId.Include]: {\n id: ContentId.Include,\n defaultValue: 'Include',\n },\n [ContentId.IncludeAllCountries]: {\n id: ContentId.IncludeAllCountries,\n defaultValue: 'Include All Countries',\n },\n [ContentId.IncludeAllVendors]: {\n id: ContentId.IncludeAllVendors,\n defaultValue: 'Include All Vendors',\n },\n [ContentId.IncludedCountries]: {\n id: ContentId.IncludedCountries,\n defaultValue: 'Countries Included for Processing',\n },\n [ContentId.ListedDelistFailed]: {\n id: ContentId.ListedDelistFailed,\n defaultValue: 'Listed, Delist Failed',\n },\n [ContentId.ListedSyncFailed]: {\n id: ContentId.ListedSyncFailed,\n defaultValue: 'Listed, Sync Failed',\n },\n [ContentId.ListingGroupSummaryActiveAndActive]: {\n id: ContentId.ListingGroupSummaryActiveAndActive,\n defaultValue: 'Active in group and listed',\n },\n [ContentId.ListingGroupSummaryActiveButNotListed]: {\n id: ContentId.ListingGroupSummaryActiveButNotListed,\n defaultValue: 'Active in group but not listed',\n },\n [ContentId.ListingGroupSummaryQueued]: {\n id: ContentId.ListingGroupSummaryQueued,\n defaultValue: 'Queued',\n },\n [ContentId.LMSError]: {\n id: ContentId.LMSError,\n defaultValue: 'LMS Error',\n },\n [ContentId.MarkAsFulfilled]: {\n id: ContentId.MarkAsFulfilled,\n defaultValue: 'Mark as Fulfilled',\n },\n [ContentId.MarkAsReviewed]: {\n id: ContentId.MarkAsReviewed,\n defaultValue: 'Mark as Reviewed',\n },\n [ContentId.MarketplaceEnableDisableConfirm]: {\n id: ContentId.MarketplaceEnableDisableConfirm,\n defaultValue: 'Enable/disable Marketplaces Confirmation',\n },\n [ContentId.MarketplaceFulfillmentState]: {\n id: ContentId.MarketplaceFulfillmentState,\n defaultValue: 'Marketplace Fulfillment State',\n },\n [ContentId.MaxReportSizeWarningLabel]: {\n id: ContentId.MaxReportSizeWarningLabel,\n defaultValue: 'Max rows exceeded',\n },\n [ContentId.MaxActiveListings]: {\n id: ContentId.MaxActiveListings,\n defaultValue: 'Max Active Listings',\n },\n [ContentId.MergedVenueGeometry]: {\n id: ContentId.MergedVenueGeometry,\n defaultValue: 'Merged Venue Geometry',\n },\n [ContentId.NoGroupsAvailableForVenueConfig]: {\n id: ContentId.NoGroupsAvailableForVenueConfig,\n defaultValue: 'No groupings available for this venue configuration.',\n },\n [ContentId.MinActiveListings]: {\n id: ContentId.MinActiveListings,\n defaultValue: 'Min Active Listings',\n },\n [ContentId.NoItemsWereChanged]: {\n id: ContentId.NoItemsWereChanged,\n defaultValue: 'No items matched the criteria for change.',\n },\n [ContentId.Mappings]: {\n id: ContentId.Mappings,\n defaultValue: 'Mappings',\n },\n [ContentId.NoFulfillmentProviders]: {\n id: ContentId.NoFulfillmentProviders,\n defaultValue: 'No fulfillment providers available.',\n },\n [ContentId.NotContains]: {\n id: ContentId.NotContains,\n defaultValue: 'Not Contains',\n },\n [ContentId.NumberOfUnsoldTickets]: {\n id: ContentId.NumberOfUnsoldTickets,\n defaultValue: 'Number of unsold tickets.',\n },\n [ContentId.NumberOfListedTicketsDescription]: {\n id: ContentId.NumberOfListedTicketsDescription,\n defaultValue: 'Number of unsold tickets that are priced and broadcasted.',\n },\n [ContentId.NumberOfUnlistedTicketsDescription]: {\n id: ContentId.NumberOfUnlistedTicketsDescription,\n defaultValue:\n 'Number of unsold tickets that need action (either to be priced or broadcasted).',\n },\n [ContentId.OnlyThis]: {\n id: ContentId.OnlyThis,\n defaultValue: 'Only This',\n },\n [ContentId.OrderNotFulfilled]: {\n id: ContentId.OrderNotFulfilled,\n defaultValue: 'Order not Fulfilled',\n },\n [ContentId.OriginatedBy]: {\n id: ContentId.OriginatedBy,\n defaultValue: 'Originated By',\n },\n [ContentId.OverchargedSeller]: {\n id: ContentId.OverchargedSeller,\n defaultValue: 'Overcharged Seller',\n },\n [ContentId.PandLTitle]: {\n id: ContentId.PandLTitle,\n defaultValue: 'Profit & Loss from sold tickets.',\n },\n [ContentId.PaymentId]: {\n id: ContentId.PaymentId,\n defaultValue: 'Payment ID',\n },\n [ContentId.Penalty]: {\n id: ContentId.Penalty,\n defaultValue: 'Penalty',\n },\n [ContentId.POPaymentState]: {\n id: ContentId.POPaymentState,\n defaultValue: 'PO Payment State',\n },\n [ContentId.Postponed]: {\n id: ContentId.Postponed,\n defaultValue: 'Postponed',\n },\n [ContentId.PriceHitHardFloor]: {\n id: ContentId.PriceHitHardFloor,\n defaultValue: 'Price Hit Hard Floor',\n },\n [ContentId.PriceHitRelativeFloor]: {\n id: ContentId.PriceHitRelativeFloor,\n defaultValue: 'Price Hit Relative Floor',\n },\n [ContentId.PriceHitMaxAllowedDrop]: {\n id: ContentId.PriceHitMaxAllowedDrop,\n defaultValue: 'Price Hit Max Allowed Drop',\n },\n [ContentId.PrivateInventoryNotes]: {\n id: ContentId.PrivateInventoryNotes,\n defaultValue: 'Private Inventory Notes',\n },\n [ContentId.PrivateSaleNotes]: {\n id: ContentId.PrivateSaleNotes,\n defaultValue: 'Private Sale Notes',\n },\n [ContentId.PrivatePurchaseNotes]: {\n id: ContentId.PrivatePurchaseNotes,\n defaultValue: 'Private Purchase Notes',\n },\n [ContentId.PurchaseTag]: {\n id: ContentId.PurchaseTag,\n defaultValue: 'Purchase Tag',\n },\n [ContentId.PutSaleListingOnHold]: {\n id: ContentId.PutSaleListingOnHold,\n defaultValue: 'Put sale listing on hold',\n },\n [ContentId.QuantitiesForcedToBottom]: {\n id: ContentId.QuantitiesForcedToBottom,\n defaultValue: 'Quantities Forced to Bottom',\n },\n [ContentId.Queued]: {\n id: ContentId.Queued,\n defaultValue: 'Queued',\n },\n [ContentId.RAGDeliveryDispute]: {\n id: ContentId.RAGDeliveryDispute,\n defaultValue: 'RAG / Delivery Dispute',\n },\n [ContentId.RAGSellerFaultNoResponse]: {\n id: ContentId.RAGSellerFaultNoResponse,\n defaultValue: 'RAG - Seller fault No Response',\n },\n [ContentId.Relocated]: {\n id: ContentId.Relocated,\n defaultValue: 'Relocated',\n },\n [ContentId.RelocatedAndRescheduled]: {\n id: ContentId.RelocatedAndRescheduled,\n defaultValue: 'Relocated and rescheduled',\n },\n [ContentId.ReplaceWith]: {\n id: ContentId.ReplaceWith,\n defaultValue: 'Replace with',\n },\n [ContentId.Rescheduled]: {\n id: ContentId.Rescheduled,\n defaultValue: 'Rescheduled',\n },\n [ContentId.SaleTag]: {\n id: ContentId.SaleTag,\n defaultValue: 'Sale Tag',\n },\n [ContentId.ResetFilters]: {\n id: ContentId.ResetFilters,\n defaultValue: 'Reset Filters',\n },\n [ContentId.SaleIsFulfilledOnMarketplace]: {\n id: ContentId.SaleIsFulfilledOnMarketplace,\n defaultValue:\n 'Fulfillment was reset within the platform but is still fulfilled on the marketplace.',\n },\n [ContentId.SaleIsFulfilledOnMarketplace2]: {\n id: ContentId.SaleIsFulfilledOnMarketplace2,\n defaultValue:\n 'The fulfillment status was reset on the platform, but the order is still fulfilled on the marketplace.',\n },\n [ContentId.SameSize]: {\n id: ContentId.SameSize,\n defaultValue: 'Same Size',\n },\n [ContentId.FlatView]: {\n id: ContentId.FlatView,\n defaultValue: 'Flat View',\n },\n [ContentId.Floor]: {\n id: ContentId.Floor,\n defaultValue: 'Floor',\n },\n [ContentId.FloorMustBeLessThanCeiling]: {\n id: ContentId.FloorMustBeLessThanCeiling,\n defaultValue: 'Price floor must be less than ceiling.',\n },\n [ContentId.Change]: {\n id: ContentId.Change,\n defaultValue: 'Change',\n },\n [ContentId.Check]: {\n id: ContentId.Check,\n defaultValue: 'Check',\n },\n [ContentId.ChooseAccount]: {\n id: ContentId.ChooseAccount,\n defaultValue: 'Choose Account',\n },\n [ContentId.ChoosePaymentMethodPlaceholder]: {\n id: ContentId.ChoosePaymentMethodPlaceholder,\n defaultValue: 'Choose payment method',\n },\n [ContentId.ChoosePaymentMethodTypePlaceholder]: {\n id: ContentId.ChoosePaymentMethodTypePlaceholder,\n defaultValue: 'Choose payment type',\n },\n [ContentId.ChooseVendor]: {\n id: ContentId.ChooseVendor,\n defaultValue: 'Choose Vendor',\n },\n [ContentId.ChooseIncrementType]: {\n id: ContentId.ChooseIncrementType,\n defaultValue: 'Choose increment type',\n },\n [ContentId.ChooseSeatingNotes]: {\n id: ContentId.ChooseSeatingNotes,\n defaultValue: 'Choose seat traits',\n },\n [ContentId.City]: {\n id: ContentId.City,\n defaultValue: 'City',\n },\n [ContentId.Classify]: {\n id: ContentId.Classify,\n defaultValue: 'Classify',\n },\n [ContentId.ClickToViewCompsInstruction]: {\n id: ContentId.ClickToViewCompsInstruction,\n defaultValue: 'Click to see available tickets and prices on the left.',\n },\n [ContentId.CompListingMode]: {\n id: ContentId.CompListingMode,\n defaultValue: 'Comp. Listing Mode',\n },\n [ContentId.CompListingFloor]: {\n id: ContentId.CompListingFloor,\n defaultValue: 'Comp. Listing Floor',\n },\n [ContentId.CompListingFloorMustBeSetError]: {\n id: ContentId.CompListingFloorMustBeSetError,\n defaultValue: 'Comp. Listing Floor must be set',\n },\n [ContentId.ContentView]: {\n id: ContentId.ContentView,\n defaultValue: 'Content View',\n },\n [ContentId.Copied]: {\n id: ContentId.Copied,\n defaultValue: 'Copied!',\n },\n [ContentId.CostPerTicket]: {\n id: ContentId.CostPerTicket,\n defaultValue: 'Cost Per Ticket',\n },\n [ContentId.Country]: {\n id: ContentId.Country,\n defaultValue: 'Country',\n },\n\n [ContentId.ConfirmETicketsIns]: {\n id: ContentId.ConfirmETicketsIns,\n defaultValue: \"Confirm the tickets you're providing\",\n },\n [ContentId.ClickToTakeAction]: {\n id: ContentId.ClickToTakeAction,\n defaultValue: 'Click here to take action.',\n },\n [ContentId.Close]: {\n id: ContentId.Close,\n defaultValue: 'Close',\n },\n [ContentId.COD]: {\n id: ContentId.COD,\n defaultValue: 'COD',\n },\n [ContentId.ConfirmSale]: {\n id: ContentId.ConfirmSale,\n defaultValue: 'Confirm Sale',\n },\n [ContentId.Contact]: { id: ContentId.Contact, defaultValue: 'Contact' },\n [ContentId.CostAndCredits]: {\n id: ContentId.CostAndCredits,\n defaultValue: 'Cost & Credits',\n },\n [ContentId.Cost]: {\n id: ContentId.Cost,\n defaultValue: 'Cost',\n },\n [ContentId.CostBasis]: {\n id: ContentId.CostBasis,\n defaultValue: 'Cost Basis',\n },\n [ContentId.CreateCustomFilter]: {\n id: ContentId.CreateCustomFilter,\n defaultValue: 'Create custom filter',\n },\n [ContentId.Credit]: {\n id: ContentId.Credit,\n defaultValue: 'Credit',\n },\n [ContentId.CreditBalance]: {\n id: ContentId.CreditBalance,\n defaultValue: 'Credit Balance',\n },\n [ContentId.CreditCard]: {\n id: ContentId.CreditCard,\n defaultValue: 'Credit Card',\n },\n [ContentId.CreditCardFee]: {\n id: ContentId.CreditCardFee,\n defaultValue: 'Credit Card Fee',\n },\n [ContentId.CustomDate]: {\n id: ContentId.CustomDate,\n defaultValue: 'Custom Date',\n },\n [ContentId.CustomDateRange]: {\n id: ContentId.CustomDateRange,\n defaultValue: 'Custom Date Range',\n },\n [ContentId.CustomFilter]: {\n id: ContentId.CustomFilter,\n defaultValue: 'Custom Filter',\n },\n [ContentId.Currency]: {\n id: ContentId.Currency,\n defaultValue: 'Currency',\n },\n [ContentId.DateAscArrow]: {\n id: ContentId.DateAscArrow,\n defaultValue: 'Date ↓',\n },\n [ContentId.DateDescArrow]: {\n id: ContentId.DateDescArrow,\n defaultValue: 'Date ↑',\n },\n [ContentId.DateDue]: {\n id: ContentId.DateDue,\n defaultValue: 'Date Due',\n },\n [ContentId.DateIncurred]: {\n id: ContentId.DateIncurred,\n defaultValue: 'Date Incurred',\n },\n [ContentId.DatePaid]: {\n id: ContentId.DatePaid,\n defaultValue: 'Date Paid',\n },\n [ContentId.DateRangeDisplayText]: {\n id: ContentId.DateRangeDisplayText,\n defaultValue: 'Select Date',\n },\n [ContentId.DateRangeSuggestionsTitle]: {\n id: ContentId.DateRangeSuggestionsTitle,\n defaultValue: 'Suggestions',\n },\n [ContentId.DaysPostfix]: {\n id: ContentId.DaysPostfix,\n defaultValue: 'day(s)',\n },\n [ContentId.Deactivated]: {\n id: ContentId.Deactivated,\n defaultValue: 'Deactivated',\n },\n [ContentId.Deal]: {\n id: ContentId.Deal,\n defaultValue: 'Deal',\n },\n [ContentId.DeallocateSale]: {\n id: ContentId.DeallocateSale,\n defaultValue: 'Deallocate',\n },\n [ContentId.DeallocateSaleWarning]: {\n id: ContentId.DeallocateSaleWarning,\n defaultValue:\n 'You are about to put this sale back to Pending Confirmation. Continue?',\n },\n [ContentId.DecreasePriceByPercent]: {\n id: ContentId.DecreasePriceByPercent,\n defaultValue: 'Decrease Price By X%',\n },\n [ContentId.Default]: {\n id: ContentId.Default,\n defaultValue: 'Default',\n },\n [ContentId.DefaultHideSeatNumbers]: {\n id: ContentId.DefaultHideSeatNumbers,\n defaultValue: 'Default Hide Seat Numbers',\n },\n [ContentId.DefaultInHandDateOffset]: {\n id: ContentId.DefaultInHandDateOffset,\n defaultValue: 'Default In Hand Date Offset',\n },\n [ContentId.DefaultSplitType]: {\n id: ContentId.DefaultSplitType,\n defaultValue: 'Default Split Type',\n },\n [ContentId.Deleted]: {\n id: ContentId.Deleted,\n defaultValue: 'Deleted',\n },\n [ContentId.DeletePurchasePaymentMethod]: {\n id: ContentId.DeletePurchasePaymentMethod,\n defaultValue: 'Delete Purchase Payment Method',\n },\n [ContentId.DeletePurchasePaymentMethodWarning]: {\n id: ContentId.DeletePurchasePaymentMethodWarning,\n defaultValue: 'You are about to delete this payment method. Continue?',\n },\n [ContentId.DeletePurchaseVendor]: {\n id: ContentId.DeletePurchaseVendor,\n defaultValue: 'Delete Purchase Vendor',\n },\n [ContentId.DeletePurchaseVendorWarning]: {\n id: ContentId.DeletePurchaseVendorWarning,\n defaultValue: 'You are about to delete this vendor. Continue?',\n },\n [ContentId.DeletePurchaseVendorAccount]: {\n id: ContentId.DeletePurchaseVendorAccount,\n defaultValue: 'Delete Purchase Vendor Account',\n },\n [ContentId.DeletePurchaseVendorAccountWarning]: {\n id: ContentId.DeletePurchaseVendorAccountWarning,\n defaultValue: 'You are about to delete this vendor account. Continue?',\n },\n [ContentId.Delisted]: {\n id: ContentId.Delisted,\n defaultValue: 'Delisted',\n },\n [ContentId.DelistingPending]: {\n id: ContentId.DelistingPending,\n defaultValue: 'Delisting...',\n },\n [ContentId.DelistingFailed]: {\n id: ContentId.DelistingFailed,\n defaultValue: 'Delist Failed',\n },\n [ContentId.DelistedClickToRelist]: {\n id: ContentId.DelistedClickToRelist,\n defaultValue: 'Delisted - click to relist',\n },\n [ContentId.DelistingClickToCancel]: {\n id: ContentId.DelistingClickToCancel,\n defaultValue: 'Delisting... - click to cancel',\n },\n [ContentId.DelistingFailedClickToTryAgain]: {\n id: ContentId.DelistingFailedClickToTryAgain,\n defaultValue: 'Delist Failed - click to try again',\n },\n [ContentId.DeliverTicket]: {\n id: ContentId.DeliverTicket,\n defaultValue: 'Deliver Ticket',\n },\n [ContentId.DeliverToAlternativeAccount]: {\n id: ContentId.DeliverToAlternativeAccount,\n defaultValue: 'Deliver to alternative account',\n },\n [ContentId.DebitCard]: {\n id: ContentId.DebitCard,\n defaultValue: 'Debit Card',\n },\n [ContentId.DebitNote]: {\n id: ContentId.DebitNote,\n defaultValue: 'Debit Note',\n },\n [ContentId.Delivery]: {\n id: ContentId.Delivery,\n defaultValue: 'Delivery',\n },\n [ContentId.DeliveryAccount]: {\n id: ContentId.DeliveryAccount,\n defaultValue: 'Delivery Account',\n },\n [ContentId.DeliveryCost]: {\n id: ContentId.DeliveryCost,\n defaultValue: 'Delivery Cost',\n },\n [ContentId.DeliveryWebsite]: {\n id: ContentId.DeliveryWebsite,\n defaultValue: 'Delivery Website',\n },\n [ContentId.DetailView]: {\n id: ContentId.DetailView,\n defaultValue: 'Detail View',\n },\n [ContentId.DirectOffline]: {\n id: ContentId.DirectOffline,\n defaultValue: 'Direct/Offline',\n },\n [ContentId.DisableThisMarketplace]: {\n id: ContentId.DisableThisMarketplace,\n defaultValue: 'Disable this marketplace',\n },\n [ContentId.Dismiss]: {\n id: ContentId.Dismiss,\n defaultValue: 'Dismiss',\n },\n [ContentId.Document]: {\n id: ContentId.Document,\n defaultValue: 'Document',\n },\n [ContentId.DoTheseTicketsHaveAnyRestrictions]: {\n id: ContentId.DoTheseTicketsHaveAnyRestrictions,\n defaultValue: 'Do these tickets have any restrictions on use?',\n },\n [ContentId.DoYouWorkForEventOrganizerOrViagogo]: {\n id: ContentId.DoYouWorkForEventOrganizerOrViagogo,\n defaultValue: 'Do you work for the Event Organizer or Viagogo?',\n },\n [ContentId.DragNAssignToSeats]: {\n id: ContentId.DragNAssignToSeats,\n defaultValue: 'Drag an e-Ticket to assign to seat',\n },\n [ContentId.DragNDropFiles]: {\n id: ContentId.DragNDropFiles,\n defaultValue: 'Drag & Drop file(s)',\n },\n [ContentId.Due]: {\n id: ContentId.Due,\n defaultValue: 'Due',\n },\n [ContentId.DuplicateBarcode]: {\n id: ContentId.DuplicateBarcode,\n defaultValue: 'Duplicate Barcode.',\n },\n [ContentId.DuplicateSeat]: {\n id: ContentId.DuplicateSeat,\n defaultValue: 'Duplicate seat.',\n },\n [ContentId.DuplicateUrl]: {\n id: ContentId.DuplicateUrl,\n defaultValue: 'Duplicate URL',\n },\n [ContentId.EachBarcodeOnNewLine]: {\n id: ContentId.EachBarcodeOnNewLine,\n defaultValue: 'Each barcode should be on a new line.',\n },\n [ContentId.ECheck]: {\n id: ContentId.ECheck,\n defaultValue: 'E-Check',\n },\n [ContentId.Economics]: {\n id: ContentId.Economics,\n defaultValue: 'Economics',\n },\n [ContentId.Edit]: {\n id: ContentId.Edit,\n defaultValue: 'Edit',\n },\n [ContentId.EditCostCredit]: {\n id: ContentId.EditCostCredit,\n defaultValue: 'Edit Cost/Credit',\n },\n [ContentId.EditOfflineSale]: {\n id: ContentId.EditOfflineSale,\n defaultValue: 'Edit Offline Sale',\n },\n [ContentId.EditPayment]: {\n id: ContentId.EditPayment,\n defaultValue: 'Edit Payment',\n },\n [ContentId.EditPaymentMethod]: {\n id: ContentId.EditPaymentMethod,\n defaultValue: 'Edit Purchase Payment Method',\n },\n [ContentId.EditPurchaseVendor]: {\n id: ContentId.EditPurchaseVendor,\n defaultValue: 'Edit Purchase Vendor',\n },\n [ContentId.EditPurchaseVendorAccount]: {\n id: ContentId.EditPurchaseVendorAccount,\n defaultValue: 'Edit Purchase Vendor Account',\n },\n [ContentId.EditCustomFilter]: {\n id: ContentId.EditCustomFilter,\n defaultValue: 'Edit custom filter',\n },\n [ContentId.EditPurchaseDetails]: {\n id: ContentId.EditPurchaseDetails,\n defaultValue: 'Edit Purchase Details',\n },\n [ContentId.EditTicketNotes]: {\n id: ContentId.EditTicketNotes,\n defaultValue: 'Provide additional information for your edits.',\n },\n [ContentId.Email]: {\n id: ContentId.Email,\n defaultValue: 'Email',\n },\n [ContentId.EmailDetails]: {\n id: ContentId.EmailDetails,\n defaultValue: 'Email Details',\n },\n [ContentId.Employee]: {\n id: ContentId.Employee,\n defaultValue: 'Employee',\n },\n [ContentId.EmployeeManagement]: {\n id: ContentId.EmployeeManagement,\n defaultValue: 'Employee Management',\n },\n [ContentId.EmptyContent]: {\n id: ContentId.EmptyContent,\n defaultValue: '',\n },\n [ContentId.EndDateBeforeStartDate]: {\n id: ContentId.EndDateBeforeStartDate,\n defaultValue: 'End date cannot be before start date',\n },\n [ContentId.EnterBarcodesIns]: {\n id: ContentId.EnterBarcodesIns,\n defaultValue:\n 'Enter the barcodes associated with each seat. You can copy & paste an ordered list from excel in the bulk entry view to autopopulate the seats.',\n },\n [ContentId.EnterTransferIdForPurchase]: {\n id: ContentId.EnterTransferIdForPurchase,\n defaultValue: 'Enter the Transfer ID',\n },\n [ContentId.EnterPurchaseOrderIdFromVendor]: {\n id: ContentId.EnterPurchaseOrderIdFromVendor,\n defaultValue: 'Enter the purchase order ID',\n },\n [ContentId.Entity]: {\n id: ContentId.Entity,\n defaultValue: 'Entity',\n },\n [ContentId.Error_BadGatewayError_Header]: {\n id: ContentId.Error_BadGatewayError_Header,\n defaultValue: 'Internet Unavailable',\n },\n [ContentId.Error_BadGatewayError_GenericMessage]: {\n id: ContentId.Error_BadGatewayError_GenericMessage,\n defaultValue:\n 'Internet Unavailable. Please check your connection and try again.',\n },\n [ContentId.Error_BadRequest_Header]: {\n id: ContentId.Error_BadRequest_Header,\n defaultValue: 'Bad Request',\n },\n [ContentId.Error_BadRequest_GenericMessage]: {\n id: ContentId.Error_BadRequest_GenericMessage,\n defaultValue: 'Some of your inputs are not valid. Please try again.',\n },\n [ContentId.Error_Forbidden_Header]: {\n id: ContentId.Error_Forbidden_Header,\n defaultValue: 'Forbidden',\n },\n [ContentId.Error_Forbidden_GenericMessage]: {\n id: ContentId.Error_Forbidden_GenericMessage,\n defaultValue:\n 'You are not allowed to view this page or access this resource.',\n },\n [ContentId.Error_InternalServerError_Header]: {\n id: ContentId.Error_InternalServerError_Header,\n defaultValue: 'Unexpected Error',\n },\n [ContentId.Error_InternalServerError_GenericMessage]: {\n id: ContentId.Error_InternalServerError_GenericMessage,\n defaultValue:\n 'An unexpected error occurred. Please try again or contact technical support if the problem perists.',\n },\n [ContentId.Error_NotImplemented_Header]: {\n id: ContentId.Error_NotImplemented_Header,\n defaultValue: 'Not Implemented',\n },\n [ContentId.Error_NotImplemented_GenericMessage]: {\n id: ContentId.Error_NotImplemented_GenericMessage,\n defaultValue:\n 'This feature is not yet implemented. Please try again later.',\n },\n [ContentId.Error_Unauthorized_Header]: {\n id: ContentId.Error_Unauthorized_Header,\n defaultValue: 'Unauthorized',\n },\n [ContentId.Error_Unauthorized_GenericMessage]: {\n id: ContentId.Error_Unauthorized_GenericMessage,\n defaultValue:\n 'You are not authorized to view this page or your login is expired. Please log-in again.',\n },\n [ContentId.Error_RequestTimeout_Header]: {\n id: ContentId.Error_RequestTimeout_Header,\n defaultValue: 'Request Timed Out',\n },\n [ContentId.Error_RequestTimeout_GenericMessage]: {\n id: ContentId.Error_RequestTimeout_GenericMessage,\n defaultValue:\n 'Your action cannot be completed in the allowable length of time. Please try again later.',\n },\n [ContentId.Error_NotFound_Header]: {\n id: ContentId.Error_NotFound_Header,\n defaultValue: 'Action Not Found',\n },\n [ContentId.Error_NotFound_GenericMessage]: {\n id: ContentId.Error_NotFound_GenericMessage,\n defaultValue:\n 'The action you are attempting does not exists. Please try again later.',\n },\n [ContentId.ETicket]: {\n id: ContentId.ETicket,\n defaultValue: 'E-Ticket',\n },\n [ContentId.ETicketUrl]: {\n id: ContentId.ETicketUrl,\n defaultValue: 'E-Ticket URL',\n },\n [ContentId.Event]: {\n id: ContentId.Event,\n defaultValue: 'Event',\n },\n [ContentId.EventDate]: {\n id: ContentId.EventDate,\n defaultValue: 'Event Date',\n },\n [ContentId.EventDateAsc]: {\n id: ContentId.EventDateAsc,\n defaultValue: 'Event Date Asc',\n },\n [ContentId.EventDateDesc]: {\n id: ContentId.EventDateDesc,\n defaultValue: 'Event Date Desc',\n },\n [ContentId.EventName]: {\n id: ContentId.EventName,\n defaultValue: 'Event Name',\n },\n [ContentId.EventTime]: {\n id: ContentId.EventTime,\n defaultValue: 'Event Time',\n },\n [ContentId.EventVisitors]: {\n id: ContentId.EventVisitors,\n defaultValue: 'Event Visitors',\n },\n [ContentId.ExpectedValue]: {\n id: ContentId.ExpectedValue,\n defaultValue: 'Expected Value',\n },\n [ContentId.Events]: {\n id: ContentId.Events,\n defaultValue: 'Events',\n },\n [ContentId.Everyone]: {\n id: ContentId.Everyone,\n defaultValue: 'Everyone',\n },\n [ContentId.ExchangeTickets]: {\n id: '',\n defaultValue: 'Exchange Tickets',\n },\n [ContentId.ExpectedValuePerTicket]: {\n id: ContentId.ExpectedValuePerTicket,\n defaultValue: 'Expected Value Per Ticket',\n },\n [ContentId.ExpireHold]: {\n id: ContentId.ExpireHold,\n defaultValue: 'Expire Hold',\n },\n [ContentId.ExpireHoldWarning]: {\n id: ContentId.ExpireHoldWarning,\n defaultValue: 'You are about to expire this hold. Continue?',\n },\n [ContentId.Export]: {\n id: ContentId.Export,\n defaultValue: 'Export',\n },\n [ContentId.FaceValue]: {\n id: ContentId.FaceValue,\n defaultValue: 'Face Value',\n },\n [ContentId.Failed]: {\n id: ContentId.Failed,\n defaultValue: 'Failed',\n },\n [ContentId.FailedAndRequiresSellerAction]: {\n id: ContentId.FailedAndRequiresSellerAction,\n defaultValue: 'Failed and requires user action',\n },\n [ContentId.FailedWithNonRetryableError]: {\n id: ContentId.FailedWithNonRetryableError,\n defaultValue: 'Failed',\n },\n [ContentId.FailedWithRetryableError]: {\n id: ContentId.FailedWithRetryableError,\n defaultValue: 'Failed and retried',\n },\n [ContentId.FailToLoadListContent]: {\n id: ContentId.FailToLoadListContent,\n defaultValue:\n 'An unexpected occurred trying to load this list. Please reload the page or contact us if the problem persists.',\n },\n [ContentId.FailedToStartupTheApp]: {\n id: ContentId.FailedToStartupTheApp,\n defaultValue:\n 'The app failed to start due to an unexpected error. Please reload the page or contact us if the problem persists.',\n },\n [ContentId.Failures]: {\n id: ContentId.Failures,\n defaultValue: 'Failures',\n },\n [ContentId.FarthestEvent]: {\n id: ContentId.FarthestEvent,\n defaultValue: 'Farthest Event',\n },\n [ContentId.Filters]: {\n id: ContentId.Filters,\n defaultValue: 'Filters',\n },\n [ContentId.FinalQuestionsOnYourTickets]: {\n id: ContentId.FinalQuestionsOnYourTickets,\n defaultValue: 'Final Questions on Your Tickets',\n },\n [ContentId.Finance]: {\n id: ContentId.Finance,\n defaultValue: 'Finance',\n },\n [ContentId.Finish]: {\n id: ContentId.Finish,\n defaultValue: 'Finish',\n },\n [ContentId.FloorRelativeToUnitCost]: {\n id: ContentId.FloorRelativeToUnitCost,\n defaultValue: 'Floor Relative to Unit Cost',\n },\n [ContentId.Format]: {\n id: ContentId.Format,\n defaultValue: 'Format',\n },\n [ContentId.FormulaBuilder]: {\n id: ContentId.FormulaBuilder,\n defaultValue: 'Formula Builder',\n },\n [ContentId.FormulaBuilderInfoLine1]: {\n id: ContentId.FormulaBuilderInfoLine1,\n defaultValue: '@ Opens variables',\n },\n [ContentId.FormulaBuilderInfoLine2]: {\n id: ContentId.FormulaBuilderInfoLine2,\n defaultValue: '/ Divide',\n },\n [ContentId.FormulaBuilderInfoLine3]: {\n id: ContentId.FormulaBuilderInfoLine3,\n defaultValue: '- Subtract',\n },\n [ContentId.FormulaBuilderInfoLine4]: {\n id: ContentId.FormulaBuilderInfoLine4,\n defaultValue: '+ Add',\n },\n [ContentId.FormulaBuilderInfoLine5]: {\n id: ContentId.FormulaBuilderInfoLine5,\n defaultValue: '* Multiply',\n },\n [ContentId.FormulaBuilderInfoLine6]: {\n id: ContentId.FormulaBuilderInfoLine6,\n defaultValue: '() Brackets',\n },\n [ContentId.ForTheEvent]: {\n id: ContentId.ForTheEvent,\n defaultValue: 'for the Event',\n },\n [ContentId.FreeEvent]: {\n id: ContentId.FreeEvent,\n defaultValue: 'Free Event',\n },\n [ContentId.From]: {\n id: ContentId.From,\n defaultValue: 'From',\n },\n [ContentId.FromDate]: {\n id: ContentId.FromDate,\n defaultValue: 'From Date',\n },\n [ContentId.Fulfill]: {\n id: ContentId.Fulfill,\n defaultValue: 'Fulfill',\n },\n [ContentId.FulfilledBy]: {\n id: ContentId.FulfilledBy,\n defaultValue: 'Fulfilled By',\n },\n [ContentId.Fulfiller]: {\n id: ContentId.Fulfiller,\n defaultValue: 'Fulfiller',\n },\n [ContentId.Fulfillment]: {\n id: ContentId.Fulfillment,\n defaultValue: 'Fulfillment',\n },\n [ContentId.FulfillActionNotAvailable]: {\n id: ContentId.FulfillActionNotAvailable,\n defaultValue:\n 'Fulfillment action for this type of sale is not yet supported.',\n },\n [ContentId.Fulfilled]: {\n id: ContentId.Fulfilled,\n defaultValue: PointOfSaleSaleStatus.Fulfilled,\n },\n [ContentId.FulfilledExternalMarketplace]: {\n id: ContentId.FulfilledExternalMarketplace,\n defaultValue: 'Fulfilled in external marketplace',\n },\n [ContentId.FulfillmentDate]: {\n id: ContentId.FulfillmentDate,\n defaultValue: 'Fulfillment Date',\n },\n [ContentId.FulfillmentFailed]: {\n id: ContentId.FulfillmentFailed,\n defaultValue: PointOfSaleSaleStatus.FulfillmentFailed,\n },\n [ContentId.FulfillmentRestrictions]: {\n id: ContentId.FulfillmentRestrictions,\n defaultValue: 'Fulfillment Restrictions',\n },\n [ContentId.FulfillmentState]: {\n id: ContentId.FulfillmentState,\n defaultValue: 'Fulfillment State',\n },\n [ContentId.FullEventInfo]: {\n id: ContentId.FullEventInfo,\n defaultValue: 'Full Event Info',\n },\n [ContentId.HideAdvancedSettings]: {\n id: ContentId.HideAdvancedSettings,\n defaultValue: 'Hide Advanced Settings',\n },\n [ContentId.History]: {\n id: ContentId.History,\n defaultValue: 'History',\n },\n [ContentId.IgnoreTheFirst]: {\n id: ContentId.IgnoreTheFirst,\n defaultValue: 'Ignore the first',\n },\n [ContentId.IncorrectPerfomerOrGrouping]: {\n id: ContentId.IncorrectPerfomerOrGrouping,\n defaultValue: 'Incorrect perfomer or grouping',\n },\n [ContentId.InsightsView]: {\n id: ContentId.InsightsView,\n defaultValue: 'Insights View',\n },\n [ContentId.IncreaseDecreasePrice]: {\n id: ContentId.IncreaseDecreasePrice,\n defaultValue: 'Increase/Decrease Price',\n },\n [ContentId.InCheckout]: {\n id: ContentId.InCheckout,\n defaultValue: 'In Checkout',\n },\n [ContentId.InvalidBaseRow]: {\n id: ContentId.InvalidBaseRow,\n defaultValue: 'Invalid base row',\n },\n [ContentId.IsDuplicate]: {\n id: ContentId.IsDuplicate,\n defaultValue: 'Is Duplicate',\n },\n [ContentId.IsPricedByMarketplace]: {\n id: ContentId.IsPricedByMarketplace,\n defaultValue: 'Is Priced By Marketplace',\n },\n [ContentId.ListedAndSold]: {\n id: ContentId.ListedAndSold,\n defaultValue: 'Listed & Sold',\n },\n [ContentId.KeepCurrentPurchaser]: {\n id: ContentId.KeepCurrentPurchaser,\n defaultValue: 'Keep Current',\n },\n [ContentId.ListView]: {\n id: ContentId.ListView,\n defaultValue: 'List View',\n },\n [ContentId.MembersOnThisTeam]: {\n id: ContentId.MembersOnThisTeam,\n defaultValue: 'Members on this team',\n },\n [ContentId.MergeListings_ListingMismatchWarning]: {\n id: ContentId.MergeListings_ListingMismatchWarning,\n defaultValue:\n 'The selected listings have different sections/rows. Merging will assign the same section/row to all seats.',\n },\n [ContentId.MinQty]: {\n id: ContentId.MinQty,\n defaultValue: 'Min Qty',\n },\n [ContentId.MinQuantity]: {\n id: ContentId.MinQuantity,\n defaultValue: 'Minimum Quantity',\n },\n [ContentId.MissingHeightData]: {\n id: ContentId.MissingHeightData,\n defaultValue:\n 'Seat map is missing height data. Adjusting the curve will have no effect.',\n },\n [ContentId.MissingDistanceData]: {\n id: ContentId.MissingDistanceData,\n defaultValue:\n 'Seat map is missing distance data. Adjusting the curve will have no effect.',\n },\n [ContentId.MissingAngleData]: {\n id: ContentId.MissingAngleData,\n defaultValue:\n 'Seat map is missing angle data. Adjusting the curve will have no effect.',\n },\n [ContentId.MoreThan]: {\n id: ContentId.MoreThan,\n defaultValue: 'more than',\n },\n [ContentId.NewAppVersion]: {\n id: ContentId.NewAppVersion,\n defaultValue: 'A new and improved version of the application is available.',\n },\n [ContentId.NewHeatMap]: {\n id: ContentId.NewHeatMap,\n defaultValue:\n 'A new recommended heatmap is available. Select it below to set it as your active heatmap.',\n },\n [ContentId.NotEnoughInformationToCreate]: {\n id: ContentId.NotEnoughInformationToCreate,\n defaultValue: 'Not enough information to create',\n },\n [ContentId.NotFoundOnPrimary]: {\n id: ContentId.NotFoundOnPrimary,\n defaultValue: 'Not found on primary',\n },\n [ContentId.NotMappedYet]: {\n id: ContentId.NotMappedYet,\n defaultValue: 'Not Mapped Yet',\n },\n [ContentId.NumberOfBuckets]: {\n id: ContentId.NumberOfBuckets,\n defaultValue: 'Number of Buckets',\n },\n\n [ContentId.OfMyListingQuality]: {\n id: ContentId.OfMyListingQuality,\n defaultValue: \"of my listing's quality\",\n },\n [ContentId.OnHoldBroadcastDisabled]: {\n id: ContentId.OnHoldBroadcastDisabled,\n defaultValue: 'On Hold (Broadcast Disabled)',\n },\n [ContentId.Override]: {\n id: ContentId.Override,\n defaultValue: 'Override',\n },\n [ContentId.OverrideDate]: {\n id: ContentId.OverrideDate,\n defaultValue: 'Override Date',\n },\n [ContentId.PandL]: {\n id: ContentId.PandL,\n defaultValue: 'P&L',\n },\n [ContentId.PaymentAmountReceived]: {\n id: ContentId.PaymentAmountReceived,\n defaultValue: 'Payment Amount Received',\n },\n [ContentId.PaymentCurrency]: {\n id: ContentId.PaymentCurrency,\n defaultValue: 'Payment Currency',\n },\n [ContentId.PaymentReceived]: {\n id: ContentId.PaymentReceived,\n defaultValue: 'Payment Received',\n },\n [ContentId.PaymentReference]: {\n id: ContentId.PaymentReference,\n defaultValue: 'Payment Reference',\n },\n [ContentId.PendingPartnerIntegrations]: {\n id: ContentId.PendingPartnerIntegrations,\n defaultValue: 'Pending Partner Integrations',\n },\n [ContentId.IncorrectCountryCode]: {\n id: ContentId.IncorrectCountryCode,\n defaultValue: 'Incorrect Country Code',\n },\n [ContentId.Members]: {\n id: ContentId.Members,\n defaultValue: 'Members',\n },\n [ContentId.Permission_UpdateBuyerCommission]: {\n id: ContentId.Permission_UpdateBuyerCommission,\n defaultValue: 'Update buyer commission',\n },\n [ContentId.Permission_UpdateBuyerCommissionOwned]: {\n id: ContentId.Permission_UpdateBuyerCommissionOwned,\n defaultValue: 'Update buyer commission on created purchase',\n },\n [ContentId.Permission_ConfirmRejectOnAssignedSales]: {\n id: ContentId.Permission_ConfirmRejectOnAssignedSales,\n defaultValue: 'Confirm/reject assigned sales (Fulfiller)',\n },\n [ContentId.Permission_ConfirmRejectSale]: {\n id: ContentId.Permission_ConfirmRejectSale,\n defaultValue: 'Confirm/reject sale',\n },\n [ContentId.Permission_ConfirmRejectSaleOnPricedListings]: {\n id: ContentId.Permission_ConfirmRejectSaleOnPricedListings,\n defaultValue: 'Confirm/reject sale from priced listings (Pricer)',\n },\n [ContentId.Permission_ConfirmRejectSalesFromPurchasedListings]: {\n id: ContentId.Permission_ConfirmRejectSalesFromPurchasedListings,\n defaultValue: 'Confirm/reject sales from purchased listings (Purchaser)',\n },\n [ContentId.Permission_CreatePO]: {\n id: ContentId.Permission_CreatePO,\n defaultValue: 'Create PO',\n },\n [ContentId.Permission_FulfillSale]: {\n id: ContentId.Permission_FulfillSale,\n defaultValue: 'Fulfill sale',\n },\n [ContentId.Permission_FulfillSaleOnPricedListings]: {\n id: ContentId.Permission_FulfillSaleOnPricedListings,\n defaultValue: 'Fulfill sale from priced listings (Pricer)',\n },\n [ContentId.Permission_FulfillSalesFromPurchasedListings]: {\n id: ContentId.Permission_FulfillSalesFromPurchasedListings,\n defaultValue: 'Fulfill sale from purchased listings (Purchaser)',\n },\n [ContentId.Permission_ManageCreatedPlaceholderListings]: {\n id: ContentId.Permission_ManageCreatedPlaceholderListings,\n defaultValue: 'Manage created placeholder listings',\n },\n [ContentId.Permission_ManageOfflineSalesOnPurchasedListings]: {\n id: ContentId.Permission_ManageOfflineSalesOnPurchasedListings,\n defaultValue: 'Manage offline sales from purchased listings (Purchaser)',\n },\n [ContentId.Permission_ManagePlaceholderListings]: {\n id: ContentId.Permission_ManagePlaceholderListings,\n defaultValue: 'Manage placeholder listings',\n },\n [ContentId.Permission_Predeliver]: {\n id: ContentId.Permission_Predeliver,\n defaultValue: 'Predeliver',\n },\n [ContentId.Permission_PredeliverOnAssignedListings]: {\n id: ContentId.Permission_PredeliverOnAssignedListings,\n defaultValue: 'Predeliver assigned listings (Pricer)',\n },\n [ContentId.Permission_BroadcastUnbroadcastOnAssignedListings]: {\n id: ContentId.Permission_BroadcastUnbroadcastOnAssignedListings,\n defaultValue: 'Broadcast/unbroadcast assigned listings (Pricer)',\n },\n [ContentId.Permission_PredeliverPurchasedListings]: {\n id: ContentId.Permission_PredeliverPurchasedListings,\n defaultValue: 'Predeliver purchased listings (Purchaser)',\n },\n [ContentId.Permission_SetPriceOnAssignedListings]: {\n id: ContentId.Permission_SetPriceOnAssignedListings,\n defaultValue: 'Set price on assigned listings (Pricer)',\n },\n [ContentId.Permission_UpdateCreatedReports]: {\n id: ContentId.Permission_UpdateCreatedReports,\n defaultValue: 'Update created reports',\n },\n [ContentId.Permission_UpdateInfoFromPurchasedListings]: {\n id: ContentId.Permission_UpdateInfoFromPurchasedListings,\n defaultValue: 'Update info on sale from purchased listings (Purchaser)',\n },\n [ContentId.Permission_UpdateInfoOnAssignedListings]: {\n id: ContentId.Permission_UpdateInfoOnAssignedListings,\n defaultValue: 'Update info on assigned listings (Pricer)',\n },\n [ContentId.Permission_UpdateInfoOnAssignedSales]: {\n id: ContentId.Permission_UpdateInfoOnAssignedSales,\n defaultValue: 'Update info on assigned sales (Fulfiller)',\n },\n [ContentId.Permission_UpdateInfoOnPricedListings]: {\n id: ContentId.Permission_UpdateInfoOnPricedListings,\n defaultValue: 'Update info on sale from priced listings (Pricer)',\n },\n [ContentId.Permission_UpdateInfoOnPurchasedListings]: {\n id: ContentId.Permission_UpdateInfoOnPurchasedListings,\n defaultValue: 'Update info on purchased listings (Purchaser)',\n },\n [ContentId.Permission_UpdateTagsFromPricedListings]: {\n id: ContentId.Permission_UpdateTagsFromPricedListings,\n defaultValue: 'Update tags on sale from priced listings (Pricer)',\n },\n [ContentId.Permission_UpdateTagsFromPurchasedListings]: {\n id: ContentId.Permission_UpdateTagsFromPurchasedListings,\n defaultValue: 'Update tags on sale from purchased listings (Purchaser)',\n },\n [ContentId.Permission_UpdateTagsOnAssignedListings]: {\n id: ContentId.Permission_UpdateTagsOnAssignedListings,\n defaultValue: 'Update tags on assigned listings (Pricer)',\n },\n [ContentId.Permission_SetPriceOnPurchasedListings]: {\n id: ContentId.Permission_SetPriceOnPurchasedListings,\n defaultValue: 'Set price on purchased listings (Purchaser)',\n },\n [ContentId.Permission_UpdateTagsOnAssignedSales]: {\n id: ContentId.Permission_UpdateTagsOnAssignedSales,\n defaultValue: 'Update tags on assigned sales (Fulfiller)',\n },\n [ContentId.Permission_UpdateTagsOnOwnedPurchasedOrder]: {\n id: ContentId.Permission_UpdateTagsOnOwnedPurchasedOrder,\n defaultValue: 'Update tags on created purchase',\n },\n [ContentId.Permission_UpdateTagsOnPurchasedListings]: {\n id: ContentId.Permission_UpdateTagsOnPurchasedListings,\n defaultValue: 'Update tags on purchased listings (Purchaser)',\n },\n [ContentId.Permission_FulfillSalesOnAssignedSales]: {\n id: ContentId.Permission_FulfillSalesOnAssignedSales,\n defaultValue: 'Fulfill assigned sales (Fulfiller)',\n },\n [ContentId.Permission_ViewAssignedListings]: {\n id: ContentId.Permission_ViewAssignedListings,\n defaultValue: 'View priced listings (Pricer)',\n },\n [ContentId.Permission_ViewAssignedSales]: {\n id: ContentId.Permission_ViewAssignedSales,\n defaultValue: 'View assigned sales (Fulfiller)',\n },\n [ContentId.Permission_ViewFulfillmentArtifactsOnAssignedListings]: {\n id: ContentId.Permission_ViewFulfillmentArtifactsOnAssignedListings,\n defaultValue: 'View fulfillment artifacts on assigned listings (Pricer)',\n },\n [ContentId.Permission_ViewFulfillmentArtifactsOnAssignedSales]: {\n id: ContentId.Permission_ViewFulfillmentArtifactsOnAssignedSales,\n defaultValue: 'View fulfillment artifacts on assigned sales (Fulfiller)',\n },\n [ContentId.Permission_ViewFulfillmentArtifactsOnPricedListings]: {\n id: ContentId.Permission_ViewFulfillmentArtifactsOnPricedListings,\n defaultValue: 'View fulfillment artifacts on priced listings (Pricer)',\n },\n [ContentId.Permission_ViewFulfillmentArtifactsOnPurchasedListings]: {\n id: ContentId.Permission_ViewFulfillmentArtifactsOnPurchasedListings,\n defaultValue:\n 'View fulfillment artifacts on purchased listings (Purchaser)',\n },\n [ContentId.Permission_ViewFulfillmentArtifactsOnSaleFromPricedListings]: {\n id: ContentId.Permission_ViewFulfillmentArtifactsOnSaleFromPricedListings,\n defaultValue:\n 'View fulfillment artifacts on sale from priced listings (Pricer)',\n },\n [ContentId.Permission_ViewFulfillmentArtifactsOnSaleFromPurchasedListings]: {\n id: ContentId.Permission_ViewFulfillmentArtifactsOnSaleFromPurchasedListings,\n defaultValue:\n 'View fulfillment artifacts on sale from purchased listings (Purchaser)',\n },\n [ContentId.Permission_ViewGlobalReports]: {\n id: ContentId.Permission_ViewGlobalReports,\n defaultValue: 'View Global Reports',\n },\n [ContentId.Permission_ViewOwnedPurchasedOrders]: {\n id: ContentId.Permission_ViewOwnedPurchasedOrders,\n defaultValue: 'View owned purchased orders',\n },\n [ContentId.Permission_ViewSaleFromPricedListings]: {\n id: ContentId.Permission_ViewSaleFromPricedListings,\n defaultValue: 'View sale from priced listings (Pricer)',\n },\n [ContentId.Permission_ViewPurchasedListings]: {\n id: ContentId.Permission_ViewPurchasedListings,\n defaultValue: 'View purchased listings (Purchaser)',\n },\n [ContentId.Permission_ViewRecentListings]: {\n id: ContentId.Permission_ViewRecentListings,\n defaultValue: 'View recent listings',\n },\n [ContentId.Permission_ViewRecentSales]: {\n id: ContentId.Permission_ViewRecentSales,\n defaultValue: 'View recent sales',\n },\n [ContentId.Permission_ViewSaleOnPurchasedListings]: {\n id: ContentId.Permission_ViewSaleOnPurchasedListings,\n defaultValue: 'View sale from purchased listings (Purchaser)',\n },\n [ContentId.Permission_Webhook_View]: {\n id: ContentId.Permission_Webhook_View,\n defaultValue: 'View Webhook',\n },\n [ContentId.Permission_Webhook_Create]: {\n id: ContentId.Permission_Webhook_Create,\n defaultValue: 'Create Webhook',\n },\n [ContentId.Permission_Webhook_Edit]: {\n id: ContentId.Permission_Webhook_Edit,\n defaultValue: 'Edit Webhook',\n },\n [ContentId.Placeholder]: {\n id: ContentId.Placeholder,\n defaultValue: 'Placeholder',\n },\n [ContentId.PlaceholderPurchaseMessage]: {\n id: ContentId.PlaceholderPurchaseMessage,\n defaultValue:\n 'Placeholder inventory have no purchases until a purchase is automatically or manually allocated.',\n },\n [ContentId.POCreatedBy]: {\n id: ContentId.POCreatedBy,\n defaultValue: 'PO Created By',\n },\n [ContentId.Priced]: {\n id: ContentId.Priced,\n defaultValue: 'Priced',\n },\n [ContentId.ProvisionallySourced]: {\n id: ContentId.ProvisionallySourced,\n defaultValue: 'Provisionally Sourced',\n },\n [ContentId.Purchases_UpdateBuyerCommissionOwned_Details]: {\n id: ContentId.Purchases_UpdateBuyerCommissionOwned_Details,\n defaultValue: 'Add/Edit commission for purchases owned by user',\n },\n [ContentId.Purchases_UpdateBuyerCommission_Details]: {\n id: ContentId.Purchases_UpdateBuyerCommission_Details,\n defaultValue: 'Add/Edit commission for purchases',\n },\n [ContentId.PutOnHold]: {\n id: ContentId.PutOnHold,\n defaultValue: 'Put on Hold',\n },\n [ContentId.PutOnHoldAll]: {\n id: ContentId.PutOnHoldAll,\n defaultValue: 'Put on Hold for All',\n },\n [ContentId.PutOnHoldSelected]: {\n id: ContentId.PutOnHoldSelected,\n defaultValue: 'Put on Hold for Selected',\n },\n [ContentId.RankPremium]: {\n id: ContentId.RankPremium,\n defaultValue: 'Rank Premium',\n },\n [ContentId.Reason]: {\n id: ContentId.Reason,\n defaultValue: 'Reason',\n },\n [ContentId.RefreshNow]: {\n id: ContentId.RefreshNow,\n defaultValue: 'Refresh Now',\n },\n [ContentId.RejectAllocation]: {\n id: ContentId.RejectAllocation,\n defaultValue: 'Reject Allocation',\n },\n [ContentId.RejectAllocationWarning]: {\n id: ContentId.RejectAllocationWarning,\n defaultValue:\n 'You are about to reject the tickets allocated for this sale. Continue?',\n },\n [ContentId.RejectionReasonInfoText1]: {\n id: ContentId.RejectionReasonInfoText1,\n defaultValue: 'Your event was rejected due to the following reason: ',\n },\n [ContentId.RejectionReasonInfoText2]: {\n id: ContentId.RejectionReasonInfoText2,\n defaultValue:\n 'If you believe this decision was an error, please contact an account manager for further assistance.',\n },\n [ContentId.RelativeRankPremium]: {\n id: ContentId.RelativeRankPremium,\n defaultValue: 'Relative Rank Premium',\n },\n [ContentId.RelativeTo]: {\n id: ContentId.RelativeTo,\n defaultValue: 'Relative to',\n },\n [ContentId.RemovePredelivery]: {\n id: ContentId.RemovePredelivery,\n defaultValue: 'Remove Predelivery',\n },\n [ContentId.RemoveTagValue]: {\n id: ContentId.RemoveTagValue,\n defaultValue: 'Remove Tag Value',\n },\n [ContentId.ReportHistory]: {\n id: ContentId.ReportHistory,\n defaultValue: 'Report History',\n },\n [ContentId.Reports_ViewGlobalReports_Details]: {\n id: ContentId.Reports_ViewGlobalReports_Details,\n defaultValue: 'View global reports, across all modules',\n },\n [ContentId.RequestState]: {\n id: ContentId.RequestState,\n defaultValue: 'Request State',\n },\n [ContentId.SameOverrideExists]: {\n id: ContentId.SameOverrideExists,\n defaultValue: 'Same Override with the same settings already exists',\n },\n [ContentId.SameSection]: {\n id: ContentId.SameSection,\n defaultValue: 'Same Section',\n },\n [ContentId.SaveFilter]: {\n id: ContentId.SaveFilter,\n defaultValue: 'Save Filter',\n },\n [ContentId.SaveSettingsToViewUpdatedComps]: {\n id: ContentId.SaveSettingsToViewUpdatedComps,\n defaultValue: 'Save settings to view refreshed related listings',\n },\n [ContentId.SearchAndReplace]: {\n id: ContentId.SearchAndReplace,\n defaultValue: 'Search and Replace',\n },\n [ContentId.SearchEvent]: {\n id: ContentId.SearchEvent,\n defaultValue: 'Search Event',\n },\n [ContentId.SearchFor]: {\n id: ContentId.SearchFor,\n defaultValue: 'Search for',\n },\n [ContentId.SeatingMapped]: {\n id: ContentId.SeatingMapped,\n defaultValue: 'Seating Mapped',\n },\n [ContentId.SectionClearingPrices]: {\n id: ContentId.SectionClearingPrices,\n defaultValue: 'Section Clearing Prices',\n },\n [ContentId.SeeAdvancedSettings]: {\n id: ContentId.SeeAdvancedSettings,\n defaultValue: 'See Advanced Settings',\n },\n [ContentId.SelectFilterValue]: {\n id: ContentId.SelectFilterValue,\n defaultValue:\n 'Filter has default value and will not save nor affect the result',\n },\n [ContentId.SelectItemsForBulkEdit]: {\n id: ContentId.SelectItemsForBulkEdit,\n defaultValue: 'Select items for bulk edit',\n },\n [ContentId.SelectTag]: {\n id: ContentId.SelectTag,\n defaultValue: 'Select Tag',\n },\n [ContentId.SellerError]: {\n id: ContentId.SellerError,\n defaultValue: 'Seller Error',\n },\n [ContentId.SellerRelationship]: {\n id: ContentId.SellerRelationship,\n defaultValue: 'Seller Relationship',\n },\n [ContentId.SetActiveInGroup]: {\n id: ContentId.SetActiveInGroup,\n defaultValue: 'Set active in group',\n },\n [ContentId.SetTicketTypePriority]: {\n id: ContentId.SetTicketTypePriority,\n defaultValue: 'Set Ticket Type Priority',\n },\n [ContentId.ShippingRefund]: {\n id: ContentId.ShippingRefund,\n defaultValue: 'Shipping Refund',\n },\n [ContentId.ShowDetailedSettings]: {\n id: ContentId.ShowDetailedSettings,\n defaultValue: 'Show Detailed Settings',\n },\n [ContentId.ShownQty]: {\n id: ContentId.ShownQty,\n defaultValue: 'Shown Qty',\n },\n [ContentId.ShuffleRanks]: {\n id: ContentId.ShuffleRanks,\n defaultValue: 'Shuffle Ranks',\n },\n [ContentId.SignUpBannerTitle]: {\n id: ContentId.SignUpBannerTitle,\n defaultValue: 'Reach Pro is invite only for now.',\n },\n [ContentId.SignUpBannerSubTitle]: {\n id: ContentId.SignUpBannerSubTitle,\n defaultValue: 'Comeback for more details at a later date',\n },\n [ContentId.SignUpWelcomeSubtitle]: {\n id: ContentId.SignUpWelcomeSubtitle,\n defaultValue: 'Welcome to the future of tickets',\n },\n [ContentId.SimulateWebsiteDiscount]: {\n id: ContentId.SimulateWebsiteDiscount,\n defaultValue: 'Simulate Website Discounts',\n },\n [ContentId.Skipped]: {\n id: ContentId.Skipped,\n defaultValue: 'Skipped',\n },\n [ContentId.Spacing]: {\n id: ContentId.Spacing,\n defaultValue: 'Spacing',\n },\n [ContentId.SportsOrConcertsWith360]: {\n id: ContentId.SportsOrConcertsWith360,\n defaultValue: 'Sports or Concerts with 360',\n },\n [ContentId.StubHubListings]: {\n id: ContentId.StubHubListings,\n defaultValue: 'StubHub Listings',\n },\n [ContentId.StubhubRecommended]: {\n id: ContentId.StubhubRecommended,\n defaultValue: 'StubHub Recommended',\n },\n [ContentId.Submit]: {\n id: ContentId.Submit,\n defaultValue: 'Submit',\n },\n [ContentId.SyncFailedClickToRelist]: {\n id: ContentId.SyncFailedClickToRelist,\n defaultValue: 'Sync failed - click to relist',\n },\n [ContentId.SyncFailedClickToDelist]: {\n id: ContentId.SyncFailedClickToDelist,\n defaultValue: 'Sync failed - click to delist',\n },\n [ContentId.TagNameNotAllowed]: {\n id: ContentId.TagNameNotAllowed,\n defaultValue: 'Tag name not allowed.',\n },\n [ContentId.TargetPercentage]: {\n id: ContentId.TargetPercentage,\n defaultValue: 'Target Percentage',\n },\n [ContentId.TaxRefund]: {\n id: ContentId.TaxRefund,\n defaultValue: 'Tax Refund',\n },\n [ContentId.Team]: {\n id: ContentId.Team,\n defaultValue: 'Team',\n },\n [ContentId.TeamName]: {\n id: ContentId.TeamName,\n defaultValue: 'Team name',\n },\n [ContentId.Teams]: {\n id: ContentId.Teams,\n defaultValue: 'Teams',\n },\n [ContentId.ProvisionalAllocation]: {\n id: ContentId.ProvisionalAllocation,\n defaultValue: 'Provisional Allocation',\n },\n [ContentId.ThenBy]: {\n id: ContentId.ThenBy,\n defaultValue: 'Then By',\n },\n [ContentId.TheNextCheapest]: {\n id: ContentId.TheNextCheapest,\n defaultValue: 'the next cheapest',\n },\n [ContentId.TicketId]: {\n id: ContentId.TicketId,\n defaultValue: 'Ticket ID',\n },\n [ContentId.TicketGroupId]: {\n id: ContentId.TicketGroupId,\n defaultValue: 'Ticket Group ID',\n },\n [ContentId.TimeView]: {\n id: ContentId.TimeView,\n defaultValue: 'Time View',\n },\n [ContentId.Timezone]: {\n id: ContentId.Timezone,\n defaultValue: 'Timezone',\n },\n [ContentId.TimezoneDefaultOption]: {\n id: ContentId.TimezoneDefaultOption,\n defaultValue: 'Automatic (current location)',\n },\n [ContentId.TimezoneDescription]: {\n id: ContentId.TimezoneDescription,\n defaultValue:\n \"Adjusting the timezone settings will automatically update the dates and times associated with purchase, listing and sale dates in the POS. Event dates will remain relative to the venue's location.\",\n },\n [ContentId.TooManyResultPerformanceWarning]: {\n id: ContentId.TooManyResultPerformanceWarning,\n defaultValue:\n 'This filter option can return a lot of items and cause performance degradation.',\n },\n [ContentId.TotalCostOfUnsoldTickets]: {\n id: ContentId.TotalCostOfUnsoldTickets,\n defaultValue: 'Total cost of unsold tickets.',\n },\n [ContentId.UndoCancel]: {\n id: ContentId.UndoCancel,\n defaultValue: 'Undo Cancel',\n },\n [ContentId.UngroupListings]: {\n id: ContentId.UngroupListings,\n defaultValue: 'Ungroup Listings',\n },\n [ContentId.Unsold]: {\n id: ContentId.Unsold,\n defaultValue: 'Unsold',\n },\n [ContentId.UnsoldEvents]: {\n id: ContentId.UnsoldEvents,\n defaultValue: 'Unsold Events',\n },\n [ContentId.UnsoldProceeds]: {\n id: ContentId.UnsoldProceeds,\n defaultValue: 'Unsold Proceeds',\n },\n [ContentId.Update]: {\n id: ContentId.Update,\n defaultValue: 'Update',\n },\n [ContentId.UpdateAutoFulfill]: {\n id: ContentId.UpdateAutoFulfill,\n defaultValue: 'Update AutoFulfill',\n },\n [ContentId.UpdateBuyerCommission]: {\n id: ContentId.UpdateBuyerCommission,\n defaultValue: 'Update Buyer Commission',\n },\n [ContentId.UpdateEventIdWarning]: {\n id: ContentId.UpdateEventIdWarning,\n defaultValue:\n 'Updating the Event ID may affect IDs across multiple marketplaces.',\n },\n [ContentId.UpdateMarketplacePrices]: {\n id: ContentId.UpdateMarketplacePrices,\n defaultValue: 'Update Marketplace Prices',\n },\n [ContentId.UpdateMarketplaceSeating]: {\n id: ContentId.UpdateMarketplaceSeating,\n defaultValue: 'Update Marketplace Seating',\n },\n [ContentId.UpdateMode]: {\n id: ContentId.UpdateMode,\n defaultValue: 'Update Mode',\n },\n [ContentId.UpdatePriceEvery]: {\n id: ContentId.UpdatePriceEvery,\n defaultValue: 'Update price every',\n },\n [ContentId.UpdatePriceFloorCeiling]: {\n id: ContentId.UpdatePriceFloorCeiling,\n defaultValue: 'Update Price Floor/Ceiling',\n },\n [ContentId.UpdatePrivateNotes]: {\n id: ContentId.UpdatePrivateNotes,\n defaultValue: 'Update Private Notes',\n },\n [ContentId.UpdatePurchaseWithMergedListingWarning]: {\n id: ContentId.UpdatePurchaseWithMergedListingWarning,\n defaultValue:\n 'This purchase contains ticket groups that have been merged. This update may result in the listings being split.',\n },\n [ContentId.UpdateTagValue]: {\n id: ContentId.UpdateTagValue,\n defaultValue: 'Update Tag Value',\n },\n [ContentId.UpdateTagValues]: {\n id: ContentId.UpdateTagValues,\n defaultValue: 'Update Tag Values',\n },\n [ContentId.UpdateTagValuesSelected]: {\n id: ContentId.UpdateTagValuesSelected,\n defaultValue: 'Update Tag Values for Selected',\n },\n [ContentId.UpdateTagValueWarning]: {\n id: ContentId.UpdateTagValueWarning,\n defaultValue: 'If no existing value is found, a new value will be added.',\n },\n [ContentId.UploadPredelivery]: {\n id: ContentId.UploadPredelivery,\n defaultValue: 'Upload Predelivery',\n },\n [ContentId.UploadSeatScoreModelInfo]: {\n id: ContentId.UploadSeatScoreModelInfo,\n defaultValue:\n 'New model created from CSV upload will use the value in the Name field from the Seat Heapmap config form as the model name.',\n },\n [ContentId.UseAsTemplate]: {\n id: ContentId.UseAsTemplate,\n defaultValue: 'Use as template',\n },\n [ContentId.Velocity]: {\n id: ContentId.Velocity,\n defaultValue: 'Velocity',\n },\n [ContentId.VelocityHours]: {\n id: ContentId.VelocityHours,\n defaultValue: 'Velocity Hours',\n },\n [ContentId.VenueConfiguration]: {\n id: ContentId.VenueConfiguration,\n defaultValue: 'Venue Configuration',\n },\n [ContentId.VenueGeometry]: {\n id: ContentId.VenueGeometry,\n defaultValue: 'Venue Geometry',\n },\n [ContentId.VenueSpecific]: {\n id: ContentId.VenueSpecific,\n defaultValue: 'Venue Specific',\n },\n [ContentId.VersionMismatch]: {\n id: ContentId.VersionMismatch,\n defaultValue: 'Version Mismatch',\n },\n [ContentId.VersionMismatchExplanation]: {\n id: ContentId.VersionMismatchExplanation,\n defaultValue:\n 'The fulfillment artifacts in POS and on the marketplace does not match. Please contact the marketplace.',\n },\n [ContentId.FulfillOnStubHub]: {\n id: ContentId.FulfillOnStubHub,\n defaultValue: 'Fulfill on StubHub',\n },\n [ContentId.FulfillOnViagogo]: {\n id: ContentId.FulfillOnViagogo,\n defaultValue: 'Fulfill on Viagogo',\n },\n [ContentId.FullSeating]: {\n id: ContentId.FullSeating,\n defaultValue: 'Full Seating',\n },\n [ContentId.FullySold]: {\n id: ContentId.FullySold,\n defaultValue: 'Fully Sold',\n },\n [ContentId.FutureEvents]: {\n id: ContentId.FutureEvents,\n defaultValue: EventTimeFrameFilter.Future,\n },\n [ContentId.General]: {\n id: ContentId.General,\n defaultValue: 'General',\n },\n [ContentId.GeneralAdmissionEvent]: {\n id: ContentId.GeneralAdmissionEvent,\n defaultValue: 'General Admission event',\n },\n [ContentId.GeneralAdmissionMessage]: {\n id: ContentId.GeneralAdmissionMessage,\n defaultValue:\n 'All tickets give you access to any available seating or standing areas. There is no assigned seating.',\n },\n [ContentId.GeneralMessage]: {\n id: ContentId.GeneralMessage,\n defaultValue: 'General Message',\n },\n [ContentId.GeneralSettingsAll]: {\n id: ContentId.GeneralSettingsAll,\n defaultValue: 'Edit General Settings for All',\n },\n [ContentId.GeneralSettingsSelected]: {\n id: ContentId.GeneralSettingsSelected,\n defaultValue: 'Edit General Settings for Selected',\n },\n [ContentId.GenericActionFailure]: {\n id: ContentId.GenericActionFailure,\n defaultValue:\n 'An unexpected error occurred. Please try again or contact technical support if the problem perists.',\n },\n [ContentId.Genre]: {\n id: ContentId.Genre,\n defaultValue: 'Genre',\n },\n [ContentId.GoBack]: {\n id: ContentId.GoBack,\n defaultValue: 'Go back',\n },\n [ContentId.GoTo]: {\n id: ContentId.GoTo,\n defaultValue: 'Go To',\n },\n [ContentId.GoToMessageThread]: {\n id: ContentId.GoToMessageThread,\n defaultValue: 'Go to message thread',\n },\n [ContentId.Group]: {\n id: ContentId.Group,\n defaultValue: 'Group',\n },\n [ContentId.GroupBy]: {\n id: ContentId.GroupBy,\n defaultValue: 'Group By',\n },\n [ContentId.GroupingDefault]: {\n id: ContentId.GroupingDefault,\n defaultValue: 'Grouping Default',\n },\n [ContentId.GroupingTemplate]: {\n id: ContentId.GroupingTemplate,\n defaultValue: 'Grouping Template',\n },\n [ContentId.GroupListings]: {\n id: ContentId.GroupListings,\n defaultValue: 'Group Listings',\n },\n [ContentId.HasBroadcastError]: {\n id: ContentId.HasBroadcastError,\n defaultValue: 'Has Broadcast Error',\n },\n [ContentId.HasUnsoldTickets]: {\n id: ContentId.HasUnsoldTickets,\n defaultValue: 'Has Unsold Tickets',\n },\n [ContentId.HeatMap]: {\n id: ContentId.HeatMap,\n defaultValue: 'Heat Map',\n },\n [ContentId.HeatMapInstruction1]: {\n id: ContentId.HeatMapInstruction1,\n defaultValue:\n 'Set a heat map for this event - the more valuable seats, the hotter the color.',\n },\n [ContentId.HeatMapInstruction2]: {\n id: ContentId.HeatMapInstruction2,\n defaultValue:\n \"When pricing your tickets, you'll be shown the prices of tickets as valuable as yours or better.\",\n },\n [ContentId.Height]: {\n id: ContentId.Height,\n defaultValue: 'Height',\n },\n [ContentId.HeldUntil]: {\n id: ContentId.HeldUntil,\n defaultValue: 'Held Until',\n },\n [ContentId.HeldUntilDate]: {\n id: ContentId.HeldUntilDate,\n defaultValue: 'Held Until Date',\n },\n [ContentId.HiddenDueToFilter]: {\n id: ContentId.HiddenDueToFilter,\n defaultValue: 'Hidden by current filter.',\n },\n [ContentId.HideSeats]: {\n id: ContentId.HideSeats,\n defaultValue: 'Hide Seats',\n },\n [ContentId.High]: {\n id: ContentId.High,\n defaultValue: 'High',\n },\n [ContentId.Highest]: {\n id: ContentId.Highest,\n defaultValue: 'Highest',\n },\n [ContentId.HistoricalPricing]: {\n id: ContentId.HistoricalPricing,\n defaultValue: 'Historical Pricing',\n },\n [ContentId.Hold]: {\n id: ContentId.Hold,\n defaultValue: 'Hold',\n },\n [ContentId.HoldExpiration]: {\n id: ContentId.HoldExpiration,\n defaultValue: 'Hold Expiration',\n },\n [ContentId.HoldId]: {\n id: ContentId.HoldId,\n defaultValue: 'Hold Id',\n },\n [ContentId.HoldNote]: {\n id: ContentId.HoldNote,\n defaultValue: 'Hold Note',\n },\n [ContentId.Home]: {\n id: ContentId.Home,\n defaultValue: MainRoute.Home,\n },\n [ContentId.HoverZoomETicketIns]: {\n id: ContentId.HoverZoomETicketIns,\n defaultValue:\n 'Hover over the images to zoom in. For each seat, drag and drop the appropriate E-Ticket image or select the image from the dropdown.',\n },\n [ContentId.HoverZoomQRCodeIns]: {\n id: ContentId.HoverZoomQRCodeIns,\n defaultValue:\n 'Hover over the images to zoom in. For each seat, drag and drop the appropriate QR code or select one from the dropdown.',\n },\n [ContentId.HowDidYouPay]: {\n id: ContentId.HowDidYouPay,\n defaultValue: 'How did you pay?',\n },\n [ContentId.HowItWorks]: {\n id: ContentId.HowItWorks,\n defaultValue: 'How it works?',\n },\n [ContentId.Hyperlink]: {\n id: ContentId.Hyperlink,\n defaultValue: 'Hyperlink',\n },\n [ContentId.Icon]: {\n id: ContentId.Icon,\n defaultValue: 'Icon',\n },\n [ContentId.Id]: {\n id: ContentId.Id,\n defaultValue: 'ID',\n },\n [ContentId.IgnoreSoldTickets]: {\n id: ContentId.IgnoreSoldTickets,\n defaultValue: 'Ignore sold tickets',\n },\n [ContentId.Impersonate]: {\n id: ContentId.Impersonate,\n defaultValue: 'Impersonate',\n },\n [ContentId.Importance]: {\n id: ContentId.Importance,\n defaultValue: 'Importance',\n },\n [ContentId.ImPricing]: {\n id: ContentId.ImPricing,\n defaultValue: \"I'm Pricing\",\n },\n [ContentId.In]: {\n id: ContentId.In,\n defaultValue: 'in',\n },\n [ContentId.InactiveListings]: {\n id: ContentId.InactiveListings,\n defaultValue: 'Inactive Listings',\n },\n [ContentId.InApp]: {\n id: ContentId.InApp,\n defaultValue: 'In-App',\n },\n [ContentId.Inbox]: {\n id: ContentId.Inbox,\n defaultValue: 'Inbox',\n },\n [ContentId.IncludeInColumns]: {\n id: ContentId.IncludeInColumns,\n defaultValue: 'Include in Columns',\n },\n [ContentId.IncludeInReport]: {\n id: ContentId.IncludeInReport,\n defaultValue: 'Include in Report',\n },\n [ContentId.InclusiveOption]: {\n id: ContentId.InclusiveOption,\n defaultValue: 'Inclusive (4sd)',\n },\n [ContentId.InComparableZones]: {\n id: ContentId.InComparableZones,\n defaultValue: 'in Comparable Zones',\n },\n [ContentId.IncompatibleForMergingWithSelectedListings]: {\n id: ContentId.IncompatibleForMergingWithSelectedListings,\n defaultValue:\n 'The following listings are not eligible for merging with the selected listings.',\n },\n [ContentId.Increase]: {\n id: ContentId.Increase,\n defaultValue: 'Increase',\n },\n [ContentId.IncreaseDecreasePriceByPercentAllVisible]: {\n id: ContentId.IncreaseDecreasePriceByPercentAllVisible,\n defaultValue: 'Increase/Decrease Price of All Visible Listings By X%',\n },\n [ContentId.IncreasePrice]: {\n id: ContentId.IncreasePrice,\n defaultValue: 'Increase Price',\n },\n [ContentId.IncreasePriceByPercent]: {\n id: ContentId.IncreasePriceByPercent,\n defaultValue: 'Increase Price By X%',\n },\n [ContentId.IncreasePriceByPercentAll]: {\n id: ContentId.IncreasePriceByPercentAll,\n defaultValue: 'Increase All Price By X%',\n },\n [ContentId.IncreasePriceByPercentAllVisible]: {\n id: ContentId.IncreasePriceByPercentAllVisible,\n defaultValue: 'Increase Price of All Visible Listings By X%',\n },\n [ContentId.IncreasePriceByPercentSelected]: {\n id: ContentId.IncreasePriceByPercentSelected,\n defaultValue: 'Increase Selected Price By X%',\n },\n [ContentId.IncreasePriceForAll]: {\n id: ContentId.IncreasePriceForAll,\n defaultValue: 'Increase Price for All',\n },\n [ContentId.IncreasePriceForSelected]: {\n id: ContentId.IncreasePriceForSelected,\n defaultValue: 'Increase Price for Selected',\n },\n [ContentId.Ineligible]: {\n id: ContentId.Ineligible,\n defaultValue: 'Ineligible',\n },\n [ContentId.Info]: {\n id: ContentId.Info,\n defaultValue: 'Info',\n },\n [ContentId.InHand]: { id: ContentId.InHand, defaultValue: 'In Hand' },\n [ContentId.InHandDate]: {\n id: ContentId.InHandDate,\n defaultValue: 'In Hand Date',\n },\n [ContentId.InHandDateMustBeBeforeEventDate]: {\n id: ContentId.InHandDateMustBeBeforeEventDate,\n defaultValue: \"In-hand date needs to be before the event's start date.\",\n },\n [ContentId.InHandDaysBeforeEvent]: {\n id: ContentId.InHandDaysBeforeEvent,\n defaultValue: 'In-Hand Days Before Event',\n },\n [ContentId.Inherit]: {\n id: ContentId.Inherit,\n defaultValue: 'Inherit',\n },\n [ContentId.InSection]: {\n id: ContentId.InSection,\n defaultValue: 'in Section',\n },\n [ContentId.InMyGroup]: {\n id: ContentId.InMyGroup,\n defaultValue: 'in My Group',\n },\n [ContentId.Insert]: {\n id: ContentId.Insert,\n defaultValue: 'Insert',\n },\n [ContentId.InsufficientComparables]: {\n id: ContentId.InsufficientComparables,\n defaultValue: 'Insufficient Comparables',\n },\n [ContentId.InOneDay]: { id: ContentId.InHand, defaultValue: 'In 1 day' },\n [ContentId.Integer]: {\n id: ContentId.Integer,\n defaultValue: 'Integer',\n },\n [ContentId.InTransit]: {\n id: ContentId.InTransit,\n defaultValue: 'In Transit',\n },\n [ContentId.InUse]: {\n id: ContentId.InUse,\n defaultValue: 'In Use',\n },\n [ContentId.InvalidFormula]: {\n id: ContentId.InvalidFormula,\n defaultValue: 'Invalid Formula',\n },\n [ContentId.InvalidUrl]: {\n id: ContentId.InvalidUrl,\n defaultValue: 'Invalid URL',\n },\n [ContentId.InvalidEndDate]: {\n id: ContentId.InvalidEndDate,\n defaultValue: 'Invalid end date',\n },\n [ContentId.InvalidStartDate]: {\n id: ContentId.InvalidStartDate,\n defaultValue: 'Invalid start date',\n },\n [ContentId.Inventory]: {\n id: ContentId.Inventory,\n defaultValue: MainRoute.Inventory,\n },\n [ContentId.Inventory_AddSeatSaver_Details]: {\n id: ContentId.Inventory_AddSeatSaver_Details,\n defaultValue: 'Add placeholder inventory',\n },\n [ContentId.Inventory_AddTagType_Details]: {\n id: ContentId.Inventory_AddTagType_Details,\n defaultValue: 'Permits adding new tag types to inventory',\n },\n [ContentId.Inventory_BroadcastUnbroadcast_Details]: {\n id: ContentId.Inventory_BroadcastUnbroadcast_Details,\n defaultValue: 'Broadcast / Unbroadcast inventory',\n },\n [ContentId.Inventory_BroadcastUnbroadcastOnIsPricerOf_Details]: {\n id: ContentId.Inventory_BroadcastUnbroadcastOnIsPricerOf_Details,\n defaultValue:\n 'Broadcast / Unbroadcast inventory where the user is the pricer',\n },\n [ContentId.Inventory_BroadcastUnbroadcastOnPurchasedBy_Details]: {\n id: ContentId.Inventory_BroadcastUnbroadcastOnPurchasedBy_Details,\n defaultValue: 'Broadcast / Unbroadcast inventory that the user purchased',\n },\n [ContentId.Inventory_EditPricing_Details]: {\n id: ContentId.Inventory_EditPricing_Details,\n defaultValue:\n 'Edit AllInPrice, ListPrice, CurrencyCode, or (TicketId, Barcode)',\n },\n [ContentId.Inventory_ManageSeatSaverCreatedBy_Details]: {\n id: ContentId.Inventory_ManageSeatSaverCreatedBy_Details,\n defaultValue: 'Update/delete placeholder inventory that the user created',\n },\n [ContentId.Inventory_ManageSeatSaver_Details]: {\n id: ContentId.Inventory_ManageSeatSaver_Details,\n defaultValue: 'Update/remove placeholder inventory',\n },\n [ContentId.Inventory_Predelivery_Details]: {\n id: ContentId.Inventory_Predelivery_Details,\n defaultValue: 'Predeliver inventory fulfillment artifacts',\n },\n [ContentId.Inventory_PredeliveryOnIsPricerOf_Details]: {\n id: ContentId.Inventory_PredeliveryOnIsPricerOf_Details,\n defaultValue: 'Predeliver inventory where the user is the pricer',\n },\n [ContentId.Inventory_PredeliveryOnPurchasedBy_Details]: {\n id: ContentId.Inventory_PredeliveryOnPurchasedBy_Details,\n defaultValue: 'Predeliver inventory that the user purchased',\n },\n [ContentId.Inventory_SetPrice_Details]: {\n id: ContentId.Inventory_SetPrice_Details,\n defaultValue: 'Edit prices of all accessible inventory',\n },\n [ContentId.Inventory_SetPriceOnIsPricerOf_Details]: {\n id: ContentId.Inventory_SetPriceOnIsPricerOf_Details,\n defaultValue:\n 'Edit prices of all accessible inventory that the current user is pricer of ',\n },\n [ContentId.Inventory_SetPriceOnPurchasedBy_Details]: {\n id: ContentId.Inventory_SetPriceOnPurchasedBy_Details,\n defaultValue:\n 'Edit prices of all accessible inventory and are purchased by current user',\n },\n [ContentId.Inventory_UpdateListingInfo_Details]: {\n id: ContentId.Inventory_UpdateListingInfo_Details,\n defaultValue: 'Edit SplitType, HideSeat, etc',\n },\n [ContentId.Inventory_UpdateListingInfoOnIsPricerOf_Details]: {\n id: ContentId.Inventory_UpdateListingInfoOnIsPricerOf_Details,\n defaultValue:\n 'Allows updating inventory information where the user is the pricer',\n },\n [ContentId.Inventory_UpdateListingInfoOnPurchasedBy_Details]: {\n id: ContentId.Inventory_UpdateListingInfoOnPurchasedBy_Details,\n defaultValue:\n 'Edit SplitType, HideSeat, etc. that are purchased by the current user',\n },\n [ContentId.Inventory_UpdateTags_Details]: {\n id: ContentId.Inventory_UpdateTags_Details,\n defaultValue: 'Permits updating of tags on inventory items',\n },\n [ContentId.Inventory_UpdateTagsOnIsPricerOf_Details]: {\n id: ContentId.Inventory_UpdateTagsOnIsPricerOf_Details,\n defaultValue:\n 'Permits updating tags of inventory where the user is the pricer',\n },\n [ContentId.Inventory_UpdateTagsOnPurchasedBy_Details]: {\n id: ContentId.Inventory_UpdateTagsOnPurchasedBy_Details,\n defaultValue:\n 'Permits updating tags related to purchaser information on inventory items',\n },\n [ContentId.Inventory_ViewAll_Details]: {\n id: ContentId.Inventory_ViewAll_Details,\n defaultValue: 'See all inventory including historical ones',\n },\n [ContentId.Inventory_ViewAllMarketplaceAttributes_Details]: {\n id: ContentId.Inventory_ViewAllMarketplaceAttributes_Details,\n defaultValue:\n \"See inventory's marketplace attributes (broadcasting, price, etc.)\",\n },\n [ContentId.Inventory_ViewExternalMarketplaceAttributes_Details]: {\n id: ContentId.Inventory_ViewExternalMarketplaceAttributes_Details,\n defaultValue:\n \"See inventory's external marketplace attributes (broadcasting, price, etc.)\",\n },\n [ContentId.Inventory_ViewFulfillmentArtifacts_Details]: {\n id: ContentId.Inventory_ViewFulfillmentArtifacts_Details,\n defaultValue: \"See inventory's predelivered fulfillment artifacts\",\n },\n [ContentId.Inventory_ViewFulfillmentArtifactsOnIsPricerOf_Details]: {\n id: ContentId.Inventory_ViewFulfillmentArtifactsOnIsPricerOf_Details,\n defaultValue:\n 'View fulfillment artifacts on inventory where the user is the pricer',\n },\n [ContentId.Inventory_ViewFulfillmentArtifactsOnPurchasedBy_Details]: {\n id: ContentId.Inventory_ViewFulfillmentArtifactsOnPurchasedBy_Details,\n defaultValue:\n 'View fulfillment artifacts on inventory that the user purchased',\n },\n [ContentId.Inventory_ViewListingOnIsPricerOf_Details]: {\n id: ContentId.Inventory_ViewListingOnIsPricerOf_Details,\n defaultValue: 'Permits viewing inventory where the user is the pricer',\n },\n [ContentId.Inventory_ViewListingsOnPurchasedBy_Details]: {\n id: ContentId.Inventory_ViewListingsOnPurchasedBy_Details,\n defaultValue: 'View inventory that the user purchased',\n },\n [ContentId.Inventory_ViewRecent_Details]: {\n id: ContentId.Inventory_ViewRecent_Details,\n defaultValue:\n 'See all inventory for future events or events less than 3 months old',\n },\n [ContentId.Inventory_ViewRecentFromExternalMarketplace_Details]: {\n id: ContentId.Inventory_ViewRecentFromExternalMarketplace_Details,\n defaultValue:\n 'See only inventory for future events or events less than 3 months old that are not StubHub sales',\n },\n [ContentId.Invited]: {\n id: ContentId.Invited,\n defaultValue: 'Invited',\n },\n [ContentId.InZone]: {\n id: ContentId.InZone,\n defaultValue: 'in Zone',\n },\n [ContentId.IPaidFace]: {\n id: ContentId.IPaidFace,\n defaultValue: 'I Paid Face',\n },\n [ContentId.IsGlobal]: {\n id: ContentId.IsGlobal,\n defaultValue: 'Is Global',\n },\n [ContentId.ItemName]: {\n id: ContentId.ItemName,\n defaultValue: 'Item name',\n },\n [ContentId.ItemsPerPage]: {\n id: ContentId.ItemsPerPage,\n defaultValue: 'Items per page',\n },\n [ContentId.IWorkForViagogo]: {\n id: ContentId.IWorkForViagogo,\n defaultValue: 'I work for Viagogo',\n },\n [ContentId.IWorkForEventOrganizer]: {\n id: ContentId.IWorkForEventOrganizer,\n defaultValue: 'I work for the Event Organizer',\n },\n [ContentId.IsThisASpeculativeListing]: {\n id: ContentId.IsThisASpeculativeListing,\n defaultValue: 'Is this a speculative listing?',\n },\n [ContentId.Json]: {\n id: ContentId.Json,\n defaultValue: 'Json',\n },\n [ContentId.Junk]: {\n id: ContentId.Junk,\n defaultValue: 'Junk',\n },\n [ContentId.JustNow]: {\n id: ContentId.JustNow,\n defaultValue: 'just now',\n },\n [ContentId.Key]: {\n id: ContentId.Key,\n defaultValue: 'Key',\n },\n [ContentId.Language]: {\n id: ContentId.Language,\n defaultValue: 'Language',\n },\n [ContentId.LastPriceUpdatedDate]: {\n id: ContentId.LastPriceUpdatedDate,\n defaultValue: 'Last Price Updated',\n },\n [ContentId.LastSaleDates]: {\n id: ContentId.LastSaleDates,\n defaultValue: 'Last Sale Dates',\n },\n [ContentId.LastUpdatedOn]: {\n id: ContentId.LastUpdatedOn,\n defaultValue: 'Last updated on',\n },\n [ContentId.LastWeek]: {\n id: ContentId.LastWeek,\n defaultValue: 'Last Week',\n },\n [ContentId.Last1Hour]: {\n id: ContentId.Last1Hour,\n defaultValue: 'Last 1 hour',\n },\n [ContentId.Last30Days]: {\n id: ContentId.Last30Days,\n defaultValue: 'Last 30 Days',\n },\n [ContentId.LastYear]: {\n id: ContentId.LastYear,\n defaultValue: 'Last Year',\n },\n [ContentId.LeastRecent]: {\n id: ContentId.LeastRecent,\n defaultValue: 'Least Recent',\n },\n [ContentId.LeftToSell]: {\n id: ContentId.LeftToSell,\n defaultValue: 'Left to Sell',\n },\n [ContentId.LessSales]: {\n id: ContentId.LessSales,\n defaultValue: 'Less Sales',\n },\n [ContentId.LiftPercentage]: {\n id: ContentId.LiftPercentage,\n defaultValue: '% Lift',\n },\n [ContentId.Light]: {\n id: ContentId.Light,\n defaultValue: 'Light',\n },\n [ContentId.Link]: {\n id: ContentId.Link,\n defaultValue: 'Link',\n },\n [ContentId.LinkCopied]: {\n id: ContentId.LinkCopied,\n defaultValue: 'Link Copied',\n },\n [ContentId.LinkHasBeenCopiedToClipboard]: {\n id: ContentId.LinkHasBeenCopiedToClipboard,\n defaultValue: 'Link has been copied to the clipboard.',\n },\n [ContentId.List]: {\n id: ContentId.List,\n defaultValue: 'List',\n },\n /**\n * @deprecated Unused\n */\n [ContentId.ListAndAllInPriceError]: {\n id: ContentId.ListAndAllInPriceError,\n defaultValue:\n \"Either 'List' or 'All In' price must be greater than zero, but not both.\",\n },\n [ContentId.Listed]: {\n id: ContentId.Listed,\n defaultValue: 'Listed',\n },\n [ContentId.ListedATP]: {\n id: ContentId.ListedATP,\n defaultValue: 'Listed ATP',\n },\n [ContentId.ListedAverageTicketPrice]: {\n id: ContentId.ListedAverageTicketPrice,\n defaultValue: 'Listed Average Ticket Price',\n },\n [ContentId.ListedClickToDelist]: {\n id: ContentId.ListedClickToDelist,\n defaultValue: 'Listed - click to delist',\n },\n [ContentId.ListedQty]: {\n id: ContentId.ListedQty,\n defaultValue: 'Listed Qty',\n },\n [ContentId.ListedQuantity]: {\n id: ContentId.ListedQuantity,\n defaultValue: 'Listed Quantity',\n },\n [ContentId.ListingConfirmation]: {\n id: ContentId.ListingConfirmation,\n defaultValue: 'Listing Confirmation',\n },\n [ContentId.ListedToViagogoSuccessfully]: {\n id: ContentId.ListedToViagogoSuccessfully,\n defaultValue: 'Listed to Viagogo successfully.',\n },\n [ContentId.ListingFailed]: {\n id: ContentId.ListingFailed,\n defaultValue: 'List Failed',\n },\n [ContentId.ListingFailedClickToTryAgain]: {\n id: ContentId.ListingFailedClickToTryAgain,\n defaultValue: 'List Failed - click to try again',\n },\n [ContentId.ListingFullSoldNoActionAvailable]: {\n id: ContentId.ListingFullSoldNoActionAvailable,\n defaultValue: 'Fully Sold - no actions available',\n },\n [ContentId.ListingId]: {\n id: ContentId.ListingId,\n defaultValue: 'Listing Id',\n },\n [ContentId.Listing]: {\n id: ContentId.Listing,\n defaultValue: 'Listing',\n },\n [ContentId.ListingPending]: {\n id: ContentId.ListingPending,\n defaultValue: 'Listing...',\n },\n [ContentId.ListingClickToCancel]: {\n id: ContentId.ListingClickToCancel,\n defaultValue: 'Listing... - click to cancel',\n },\n [ContentId.Listings]: {\n id: ContentId.Listings,\n defaultValue: 'Listings',\n },\n [ContentId.ListingNumberUsedRequired]: {\n id: ContentId.ListingNumberUsedRequired,\n defaultValue:\n 'At least one ticket is needed per listing number. These listing numbers have no tickets assigned:',\n },\n /**\n * @deprecated Use `ContentId.Proceeds`\n */\n [ContentId.ListingSettings]: {\n id: ContentId.ListingSettings,\n defaultValue: 'Listing Settings',\n },\n [ContentId.ListingSettingsAllVisible]: {\n id: ContentId.ListingSettingsAllVisible,\n defaultValue: 'Edit General Settings for All Visible Listings',\n },\n [ContentId.ListPrice]: {\n id: ContentId.ListPrice,\n defaultValue: 'List Price',\n },\n /**\n * @deprecated Unused\n */\n [ContentId.ListPriceAutoCalculationInfo]: {\n id: ContentId.ListPriceAutoCalculationInfo,\n defaultValue:\n 'List price is estimated from your all-in price minus fees (if any).',\n },\n [ContentId.ListPriceLessThanPriceFloorWarning]: {\n id: ContentId.ListPriceLessThanPriceFloorWarning,\n defaultValue:\n \"You've made a price change that below the price floor. Are you sure?\",\n },\n /**\n * @deprecated Use `ContentId.ProceedsPerTicket`\n */\n [ContentId.ListPricePerTicket]: {\n id: ContentId.ListPricePerTicket,\n defaultValue: 'List Price Per Ticket',\n },\n [ContentId.Location]: {\n id: ContentId.Location,\n defaultValue: 'Location',\n },\n [ContentId.Login]: {\n id: ContentId.Login,\n defaultValue: 'Login',\n },\n [ContentId.Logout]: {\n id: ContentId.Logout,\n defaultValue: 'Logout',\n },\n [ContentId.LookupByListingId]: {\n id: ContentId.LookupByListingId,\n defaultValue: 'Lookup By Listing Id',\n },\n [ContentId.LookupByOrderId]: {\n id: ContentId.LookupByOrderId,\n defaultValue: 'Lookup By Order Id',\n },\n [ContentId.LookupBySaleId]: {\n id: ContentId.LookupBySaleId,\n defaultValue: 'Lookup By Sale Id',\n },\n [ContentId.Low]: {\n id: ContentId.Low,\n defaultValue: 'Low',\n },\n [ContentId.Lowest]: {\n id: ContentId.Lowest,\n defaultValue: 'Lowest',\n },\n [ContentId.ManualPriceWarning]: {\n id: ContentId.ManualPriceWarning,\n defaultValue: 'Manual Price Warning',\n },\n [ContentId.ManualPriceDisableAutoPricingWarning]: {\n id: ContentId.ManualPriceDisableAutoPricingWarning,\n defaultValue:\n 'Manually editing price will disable Auto-Pricing. Click Cancel to keep Auto-Pricing on.',\n },\n [ContentId.ManualPriceAdjustFloorWarning]: {\n id: ContentId.ManualPriceAdjustFloorWarning,\n defaultValue:\n 'The price you entered is below your price floor. Click OK to adjust the floor to accomodate your new price, or Cancel to cap your price at the floor.',\n },\n [ContentId.ManualPriceAdjustCeilingWarning]: {\n id: ContentId.ManualPriceAdjustCeilingWarning,\n defaultValue:\n 'The price you entered is above your price ceiling. Click OK to adjust the ceiling to accomodate your new price, or Cancel to cap your price at the ceiling.',\n },\n [ContentId.Mapped]: {\n id: ContentId.Mapped,\n defaultValue: 'Mapped',\n },\n [ContentId.MappedEventId]: {\n id: ContentId.MappedEventId,\n defaultValue: 'Mapped Event ID',\n },\n [ContentId.MappedTo]: {\n id: ContentId.MappedTo,\n defaultValue: 'Mapped To',\n },\n [ContentId.MapUnavailable]: {\n id: ContentId.MapUnavailable,\n defaultValue: 'Venue map not available',\n },\n [ContentId.Margin]: {\n id: ContentId.Margin,\n defaultValue: 'Margin',\n },\n [ContentId.MarkAsPurchase]: {\n id: ContentId.MarkAsPurchase,\n defaultValue: 'Mark as purchase',\n },\n [ContentId.MarkAsPrivate]: {\n id: ContentId.MarkAsPrivate,\n defaultValue: 'Mark as private',\n },\n [ContentId.MarkAsJunk]: {\n id: ContentId.MarkAsJunk,\n defaultValue: 'Mark as junk',\n },\n [ContentId.MarkAsSale]: {\n id: ContentId.MarkAsSale,\n defaultValue: 'Mark as sale',\n },\n [ContentId.MarkAsTransfer]: {\n id: ContentId.MarkAsTransfer,\n defaultValue: 'Mark as transfer',\n },\n [ContentId.MarketListings]: {\n id: ContentId.MarketListings,\n defaultValue: 'Market Listings',\n },\n [ContentId.Marketplace]: {\n id: ContentId.Marketplace,\n defaultValue: 'Marketplace',\n },\n [ContentId.MarketplaceEnableConfirmMessage]: {\n id: ContentId.MarketplaceEnableConfirmMessage,\n defaultValue: 'The following marketplaces will be enabled:',\n },\n [ContentId.MarketplaceDisableConfirmMessage]: {\n id: ContentId.MarketplaceDisableConfirmMessage,\n defaultValue: 'The following marketplaces will be disabled:',\n },\n [ContentId.MarketplacePaymentTerms]: {\n id: ContentId.MarketplacePaymentTerms,\n defaultValue: 'Marketplace Payment Terms',\n },\n [ContentId.MarketplaceSeatingForAll]: {\n id: ContentId.MarketplaceSeatingForAll,\n defaultValue: 'Marketplace Seating for All',\n },\n [ContentId.MarketplaceInhandDate]: {\n id: ContentId.MarketplaceInhandDate,\n defaultValue: 'Marketplace In hand Date',\n },\n [ContentId.MarketplaceSeatingForAllVisible]: {\n id: ContentId.MarketplaceSeatingForAllVisible,\n defaultValue: 'Marketplace Seating for All Visible Listings',\n },\n [ContentId.MarketplaceSeatingForSelected]: {\n id: ContentId.MarketplaceSeatingForSelected,\n defaultValue: 'Marketplace Seating for Selected',\n },\n [ContentId.MarketplaceVisibility]: {\n id: ContentId.MarketplaceVisibility,\n defaultValue: 'Marketplace Visibility',\n },\n [ContentId.MarketPrice]: {\n id: ContentId.MarketPrice,\n defaultValue: 'Market Price',\n },\n [ContentId.Markup]: {\n id: ContentId.Markup,\n defaultValue: 'Markup',\n },\n [ContentId.Max]: {\n id: ContentId.Max,\n defaultValue: 'Max',\n },\n [ContentId.MaxDiscountInputPrompt1]: {\n id: ContentId.MaxDiscountInputPrompt1,\n defaultValue: \"Don't allow price drop of more than \",\n },\n [ContentId.MaxDiscountInputPrompt2]: {\n id: ContentId.MaxDiscountInputPrompt2,\n defaultValue: ' over a ',\n },\n [ContentId.MaxDiscountInputPrompt3]: {\n id: ContentId.MaxDiscountInputPrompt3,\n defaultValue: ' hour period.',\n },\n [ContentId.MaxHoldDuration]: {\n id: ContentId.MaxHoldDuration,\n defaultValue: 'Max Hold Duration',\n },\n [ContentId.MaxHoldDurationUnit]: {\n id: ContentId.MaxHoldDurationUnit,\n defaultValue: 'Hour(s)',\n },\n [ContentId.MaxValueLengthExceeded]: {\n id: ContentId.MaxValueLengthExceeded,\n defaultValue: 'Max value length for this tag exceeded',\n },\n [ContentId.Median]: {\n id: ContentId.Median,\n defaultValue: 'Median',\n },\n [ContentId.MemberCard]: {\n id: ContentId.MemberCard,\n defaultValue: 'Member Card',\n },\n [ContentId.Merchant]: {\n id: ContentId.Merchant,\n defaultValue: 'Merchant',\n },\n [ContentId.Merge]: {\n id: ContentId.Merge,\n defaultValue: 'Merge',\n },\n [ContentId.MergeListings]: {\n id: ContentId.MergeListings,\n defaultValue: 'Merge Listings',\n },\n [ContentId.MergeListings_GroupedListings]: {\n id: ContentId.MergeListings_GroupedListings,\n defaultValue:\n 'This listing already belongs to a listing group and cannot be merged.',\n },\n [ContentId.MergeListings_SectionDifference]: {\n id: ContentId.MergeListings_SectionDifference,\n defaultValue:\n 'The section of this listing is different from your selected listings.',\n },\n [ContentId.MergeListings_RowDifference]: {\n id: ContentId.MergeListings_RowDifference,\n defaultValue:\n 'The row of this listing is different from your selected listings.',\n },\n [ContentId.MergeListings_DeliveryDifference]: {\n id: ContentId.MergeListings_DeliveryDifference,\n defaultValue:\n 'The delivery type of this listing is different from your selected listings.',\n },\n [ContentId.Merges]: {\n id: ContentId.Merges,\n defaultValue: 'merges',\n },\n [ContentId.MergeSelected]: {\n id: ContentId.MergeSelected,\n defaultValue: 'Merge Selected',\n },\n [ContentId.MergeSuggested]: {\n id: ContentId.MergeSuggested,\n defaultValue: 'Merge Suggested',\n },\n [ContentId.Messages]: {\n id: ContentId.Messages,\n defaultValue: 'Messages',\n },\n [ContentId.Metrics]: {\n id: ContentId.Metrics,\n defaultValue: 'Metrics',\n },\n [ContentId.MetricView]: {\n id: ContentId.MetricView,\n defaultValue: 'Metric View',\n },\n [ContentId.MicrosoftExcelExt]: {\n id: ContentId.MicrosoftExcelExt,\n defaultValue: 'Microsoft Excel (.xlsx)',\n },\n [ContentId.Min]: {\n id: ContentId.Min,\n defaultValue: 'Min',\n },\n [ContentId.MinCompListingCount]: {\n id: ContentId.MinCompListingCount,\n defaultValue: 'Minimum Required Listings to Price Against',\n },\n [ContentId.MissingRowDataWarning]: {\n id: ContentId.MissingRowDataWarning,\n defaultValue:\n 'Stadium missing row data. Pricing will be at the section level.',\n },\n [ContentId.MissingSeatScore]: {\n id: ContentId.MissingSeatScore,\n defaultValue: 'Missing Seat Score',\n },\n [ContentId.MissingSectionFilter]: {\n id: ContentId.MissingSectionFilter,\n defaultValue: 'Missing Section Filter',\n },\n [ContentId.MissingUnitCost]: {\n id: ContentId.MissingUnitCost,\n defaultValue: 'Missing Unit Cost',\n },\n [ContentId.MissingZone]: {\n id: ContentId.MissingZone,\n defaultValue: 'Missing Zone',\n },\n [ContentId.MLB]: {\n id: ContentId.MLB,\n defaultValue: 'MLB',\n },\n [ContentId.MoneyOrder]: {\n id: ContentId.MoneyOrder,\n defaultValue: 'UiMoney Order',\n },\n [ContentId.Month]: {\n id: ContentId.Month,\n defaultValue: 'Month',\n },\n [ContentId.MoreSales]: {\n id: ContentId.MoreSales,\n defaultValue: 'More Sales',\n },\n [ContentId.MostRecent]: {\n id: ContentId.MostRecent,\n defaultValue: 'Most Recent',\n },\n [ContentId.MultiplePayments]: {\n id: ContentId.MultiplePayments,\n defaultValue: 'Multiple Payments',\n },\n [ContentId.MultipleSelections]: {\n id: '',\n defaultValue: 'Multiple selections',\n },\n [ContentId.MyTicketsHaveRowsAndSeats]: {\n id: ContentId.MyTicketsHaveRowsAndSeats,\n defaultValue: 'My tickets have rows and seats',\n },\n [ContentId.MyAccount]: {\n id: ContentId.MyAccount,\n defaultValue: 'My Account',\n },\n [ContentId.MyListings]: {\n id: ContentId.MyListings,\n defaultValue: 'My Listings',\n },\n [ContentId.NA]: {\n id: ContentId.NA,\n defaultValue: 'N/A',\n },\n [ContentId.Name]: {\n id: ContentId.Name,\n defaultValue: 'Name',\n },\n [ContentId.NameColumnPlaceholder]: {\n id: ContentId.NameColumnPlaceholder,\n defaultValue: 'Name the column',\n },\n [ContentId.Near]: {\n id: ContentId.Near,\n defaultValue: 'Near',\n },\n [ContentId.NearestEvent]: {\n id: ContentId.NearestEvent,\n defaultValue: 'Nearest Event',\n },\n [ContentId.NeedFulfillment]: {\n id: ContentId.NeedFulfillment,\n defaultValue: 'Needs Fulfillment',\n },\n [ContentId.NeedToMergeToTwoOrMoreListings]: {\n id: ContentId.NeedToMergeToTwoOrMoreListings,\n defaultValue: 'You need at least 2 listings to merge.',\n },\n [ContentId.NeedToSplitToTwoOrMoreListings]: {\n id: ContentId.NeedToSplitToTwoOrMoreListings,\n defaultValue: 'You need to split to 2 or more listings.',\n },\n [ContentId.NeverShareYourPasswordWithAnyone]: {\n id: ContentId.NeverShareYourPasswordWithAnyone,\n defaultValue: 'Never share your password with anyone',\n },\n [ContentId.NewFeature]: {\n id: ContentId.NewFeature,\n defaultValue: 'New Feature',\n },\n [ContentId.NewGroup]: {\n id: ContentId.NewGroup,\n defaultValue: 'New Group',\n },\n [ContentId.NewModel]: {\n id: ContentId.NewModel,\n defaultValue: 'New Model',\n },\n [ContentId.NewOrder]: {\n id: ContentId.NewOrder,\n defaultValue: 'New order',\n },\n [ContentId.NewRole]: {\n id: ContentId.NewRole,\n defaultValue: 'New Role',\n },\n [ContentId.NewRow]: {\n id: ContentId.NewRow,\n defaultValue: 'New row',\n },\n [ContentId.NewSale]: {\n id: ContentId.NewSale,\n defaultValue: 'New Sale',\n },\n [ContentId.NewSales]: {\n id: ContentId.NewSales,\n defaultValue: 'New Sales',\n },\n [ContentId.NewUser]: {\n id: ContentId.NewUser,\n defaultValue: 'New user',\n },\n [ContentId.NewVendor]: {\n id: ContentId.NewVendor,\n defaultValue: 'New vendor',\n },\n [ContentId.Next]: {\n id: ContentId.Next,\n defaultValue: 'Next',\n },\n [ContentId.Next2Weeks]: {\n id: ContentId.Next2Weeks,\n defaultValue: 'Next 2 Weeks',\n },\n [ContentId.NextWeek]: {\n id: ContentId.NextWeek,\n defaultValue: 'Next Week',\n },\n [ContentId.NextMonth]: {\n id: ContentId.NextMonth,\n defaultValue: 'Next Month',\n },\n [ContentId.NextYear]: {\n id: ContentId.NextYear,\n defaultValue: 'Next Year',\n },\n [ContentId.No]: {\n id: ContentId.No,\n defaultValue: 'No',\n },\n [ContentId.NoActiveAccountsForLogin]: {\n id: ContentId.NoActiveAccountsForLogin,\n defaultValue:\n 'You do not have any available seller account to log into. Please contact us to setup one.',\n },\n [ContentId.NoActivityLog]: {\n id: ContentId.NoActivityLog,\n defaultValue: 'There is currently no activity log data to display.',\n },\n [ContentId.NoAutoPricing_MissingPermission]: {\n id: ContentId.NoAutoPricing_MissingPermission,\n defaultValue: 'You do not have permission to set auto pricing.',\n },\n [ContentId.NoAutoPricing_MissingRowId]: {\n id: ContentId.NoAutoPricing_MissingRowId,\n defaultValue:\n \"Enable auto pricing by updating seating information using StubHub's event map.\",\n },\n [ContentId.NoAutoPricing_NoVenueConfig]: {\n id: ContentId.NoAutoPricing_NoVenueConfig,\n defaultValue:\n 'This event does not have mapping information for auto pricing.',\n },\n [ContentId.NoConversation]: {\n id: ContentId.NoConversation,\n defaultValue: 'There is currently no conversation to display.',\n },\n [ContentId.NoEventsMatching]: {\n id: ContentId.NoEventsMatching,\n defaultValue: 'There are no events matching your search',\n },\n [ContentId.NoFilteredNotifications]: {\n id: ContentId.NoFilteredNotifications,\n defaultValue: \"There aren't any results for this filter.\",\n },\n [ContentId.NoGroupingAvailableForDefault]: {\n id: ContentId.NoGroupingAvailableForDefault,\n defaultValue: 'No groups matched this grouping default',\n },\n [ContentId.NoMergesAvailable]: {\n id: ContentId.NoMergesAvailable,\n defaultValue: 'No merges available',\n },\n [ContentId.None]: { id: ContentId.None, defaultValue: 'None' },\n [ContentId.NoneSelected]: {\n id: ContentId.NoneSelected,\n defaultValue: 'None Selected',\n },\n [ContentId.NoNotifications]: {\n id: ContentId.NoNotifications,\n defaultValue: \"You're all caught up on alerts.\",\n },\n [ContentId.NoPerformersMatching]: {\n id: ContentId.NoPerformersMatching,\n defaultValue: 'There are no performers matching your search',\n },\n [ContentId.NoReportText]: {\n id: ContentId.NoReportText,\n defaultValue:\n 'The report could not be loaded. Please check your filters and try again. If the issue persists, contact support for assistance.',\n },\n [ContentId.NoResultFound]: {\n id: ContentId.NoResultFound,\n defaultValue: 'No results found',\n },\n [ContentId.NormalOption]: {\n id: ContentId.NormalOption,\n defaultValue: 'Normal (3sd)',\n },\n [ContentId.NoSeatingsAvailableForAllocation]: {\n id: ContentId.NoSeatingsAvailableForAllocation,\n defaultValue:\n 'There are no tickets available for this event to allocate. Click below to add new tickets.',\n },\n [ContentId.NoTagsExist]: {\n id: ContentId.NoTagsExist,\n defaultValue: 'No tags exist',\n },\n [ContentId.NotBroadcastOnAnyMarketplace]: {\n id: ContentId.NotBroadcastOnAnyMarketplace,\n defaultValue:\n \"Not being broadcasted anywhere. Click 'Broadcast' to start broadcasting to all available marketplaces.\",\n },\n [ContentId.Notes]: {\n id: ContentId.Notes,\n defaultValue: 'Notes',\n },\n [ContentId.NoTaxes]: { id: ContentId.NoTaxes, defaultValue: 'No Taxes' },\n [ContentId.Notifications]: {\n id: ContentId.Notifications,\n defaultValue: 'Notifications',\n },\n [ContentId.NotificationTypeAutopriceBelowFloor]: {\n id: ContentId.NotificationTypeAutopriceBelowFloor,\n defaultValue: 'Autoprice below floor',\n },\n [ContentId.NotificationTypeAutopriceInsufficientCompListings]: {\n id: ContentId.NotificationTypeAutopriceInsufficientCompListings,\n defaultValue: 'Autoprice insufficient comp listings',\n },\n [ContentId.NotificationTypeAutopriceFirebrake]: {\n id: ContentId.NotificationTypeAutopriceFirebrake,\n defaultValue: 'Autoprice Firebrake',\n },\n [ContentId.NotificationTypeSaleFulfilmentFailed]: {\n id: ContentId.NotificationTypeSaleFulfilmentFailed,\n defaultValue: 'Sale Fulfilment Failed',\n },\n [ContentId.NotificationTypeSaleMarketplaceCancelled]: {\n id: ContentId.NotificationTypeSaleMarketplaceCancelled,\n defaultValue: 'Marketplace Cancelled Sale',\n },\n [ContentId.NotificationTypeListingHideSeatsFailed]: {\n id: ContentId.NotificationTypeListingHideSeatsFailed,\n defaultValue: \"Could not update 'Hide Seats'\",\n },\n [ContentId.NotificationTypeListingUpdateDeliveryTypeFailed]: {\n id: ContentId.NotificationTypeListingUpdateDeliveryTypeFailed,\n defaultValue: \"Listing update 'Delivery Type' failed\",\n },\n [ContentId.NotificationTypeListingMergeFailed]: {\n id: ContentId.NotificationTypeListingMergeFailed,\n defaultValue: 'Failed to merge listings',\n },\n [ContentId.NotificationTypeListingSplitFailed]: {\n id: ContentId.NotificationTypeListingSplitFailed,\n defaultValue: 'Failed to split listing',\n },\n [ContentId.NotificationTypeSaleNew]: {\n id: ContentId.NotificationTypeSaleNew,\n defaultValue: 'New Sale',\n },\n [ContentId.NotImplemented]: {\n id: ContentId.NotImplemented,\n defaultValue: 'Not implemented',\n },\n [ContentId.NoToAll]: {\n id: ContentId.NoToAll,\n defaultValue: 'No to All',\n },\n [ContentId.NoVenueMetadataForAutopricing]: {\n id: ContentId.NoVenueMetadataForAutopricing,\n defaultValue:\n 'Seat map requires at least one metadata (angle, distance, height) to auto-configure section scores. You can still manually score sections by clicking on them.',\n },\n [ContentId.NoVenuesMatching]: {\n id: ContentId.NoVenuesMatching,\n defaultValue: 'There are no venues matching your search',\n },\n [ContentId.Now]: { id: ContentId.Now, defaultValue: 'Now' },\n [ContentId.NumberFormat]: {\n id: ContentId.NumberFormat,\n defaultValue: 'Number format',\n },\n [ContentId.NumberOfItemsPerPage]: {\n id: ContentId.NumberOfItemsPerPage,\n defaultValue: 'Number of items per page (Leave empty to disable paging)',\n },\n [ContentId.NumberOfTicketsHeld]: {\n id: ContentId.NumberOfTicketsHeld,\n defaultValue: 'Number of Tickets Held',\n },\n [ContentId.NumOfListingsToCreate]: {\n id: ContentId.NumOfListingsToCreate,\n defaultValue: 'Number of listings to create',\n },\n [ContentId.Odds]: {\n id: ContentId.Odds,\n defaultValue: 'Odds',\n },\n [ContentId.Off]: {\n id: ContentId.Off,\n defaultValue: 'Off',\n },\n [ContentId.OfSimilarQuality]: {\n id: ContentId.OfSimilarQuality,\n defaultValue: 'of Similar Quality',\n },\n [ContentId.OfSimilarQualityInZone]: {\n id: ContentId.OfSimilarQualityInZone,\n defaultValue: 'of Similar Quality and in Zone',\n },\n [ContentId.OfSimilarQualityQuantityAdjusted]: {\n id: ContentId.OfSimilarQualityQuantityAdjusted,\n defaultValue: 'of Similar Quality (Quantity Adjusted)',\n },\n [ContentId.OfTheComparableListings]: {\n id: ContentId.OfTheComparableListings,\n defaultValue: 'of the comparable listings',\n },\n [ContentId.OK]: { id: ContentId.OK, defaultValue: 'OK' },\n [ContentId.OlderThanLastYear]: {\n id: ContentId.OlderThanLastYear,\n defaultValue: 'Older',\n },\n [ContentId.On]: {\n id: ContentId.On,\n defaultValue: 'On',\n },\n [ContentId.OnePayment]: {\n id: ContentId.OnePayment,\n defaultValue: 'One Payment',\n },\n [ContentId.OneTimePass]: {\n id: ContentId.OneTimePass,\n defaultValue: 'One Time Pass',\n },\n [ContentId.OnlySingleValueIsAllowed]: {\n id: ContentId.OnlySingleValueIsAllowed,\n defaultValue: 'Only single value is allowed.',\n },\n [ContentId.Oops]: { id: ContentId.Oops, defaultValue: 'Oops!' },\n [ContentId.OpenEventPage]: {\n id: ContentId.OpenEventPage,\n defaultValue: 'Open Event Page',\n },\n [ContentId.OpenReport]: {\n id: ContentId.OpenReport,\n defaultValue: 'Open report',\n },\n [ContentId.Opponent]: {\n id: ContentId.Opponent,\n defaultValue: 'Opponent',\n },\n [ContentId.Or]: { id: ContentId.Or, defaultValue: 'or' },\n [ContentId.OrAbove]: {\n id: ContentId.OrAbove,\n defaultValue: 'or above',\n },\n [ContentId.OrderDate]: {\n id: ContentId.OrderDate,\n defaultValue: 'Order date',\n },\n [ContentId.OrderId]: {\n id: ContentId.OrderId,\n defaultValue: 'Order Id',\n },\n [ContentId.OrderIdDoesNotExist]: {\n id: ContentId.OrderIdDoesNotExist,\n defaultValue: 'Warning: this order ID does not exist.',\n },\n [ContentId.OrderIdDoesNotExistForVendor]: {\n id: ContentId.OrderIdDoesNotExistForVendor,\n defaultValue: 'Order ID does not exist for this vendor.',\n },\n [ContentId.OrderIdInUse]: {\n id: ContentId.OrderIdInUse,\n defaultValue:\n 'Warning: this order ID is already used by another purchase order.',\n },\n [ContentId.OrderIdInUseSameVendor]: {\n id: ContentId.OrderIdInUseSameVendor,\n defaultValue:\n 'Order ID is used by another purchase order under same vendor.',\n },\n [ContentId.Orders]: {\n id: ContentId.Orders,\n defaultValue: 'Orders',\n },\n [ContentId.Original]: { id: ContentId.Original, defaultValue: 'Original' },\n [ContentId.Other]: { id: ContentId.Other, defaultValue: 'Other' },\n [ContentId.OtherMarketplaceContact]: {\n id: ContentId.OtherMarketplaceContact,\n defaultValue: 'Other Marketplace Contact',\n },\n [ContentId.Outlier]: {\n id: ContentId.Outlier,\n defaultValue: 'Outlier',\n },\n [ContentId.OutlierFiltering]: {\n id: ContentId.OutlierFiltering,\n defaultValue: 'Outlier Filtering',\n },\n [ContentId.OutlierMode]: {\n id: ContentId.OutlierMode,\n defaultValue: 'Outlier Detection Mode',\n },\n [ContentId.OutstandingBalance]: {\n id: ContentId.OutstandingBalance,\n defaultValue: 'Outstanding Balance',\n },\n [ContentId.Overview]: {\n id: ContentId.Overview,\n defaultValue: 'Overview',\n },\n [ContentId.Owner]: {\n id: ContentId.Owner,\n defaultValue: 'Owner',\n },\n [ContentId.Pagination]: {\n id: ContentId.Pagination,\n defaultValue: 'Pagination',\n },\n [ContentId.Paid]: {\n id: ContentId.Paid,\n defaultValue: PointOfSalePaymentState.Paid,\n },\n [ContentId.PaidOffline]: {\n id: ContentId.PaidOffline,\n defaultValue: 'Paid Offline',\n },\n [ContentId.Pairs]: {\n id: ContentId.Pairs,\n defaultValue: 'Pairs',\n },\n [ContentId.Paper]: { id: ContentId.Paper, defaultValue: 'Paper' },\n [ContentId.ParentListing]: {\n id: ContentId.ParentListing,\n defaultValue: 'Parent Listing',\n },\n [ContentId.PartiallyPaid]: {\n id: ContentId.PartiallyPaid,\n defaultValue: 'Partially Paid',\n },\n [ContentId.Password]: {\n id: ContentId.Password,\n defaultValue: 'Password',\n },\n [ContentId.PastWeek]: {\n id: ContentId.PastWeek,\n defaultValue: 'Past Week',\n },\n [ContentId.PastMonth]: {\n id: ContentId.PastMonth,\n defaultValue: 'Past Month',\n },\n [ContentId.PastYear]: {\n id: ContentId.PastYear,\n defaultValue: 'Past Year',\n },\n [ContentId.Payment]: { id: ContentId.Payment, defaultValue: 'Payment' },\n [ContentId.PaymentMethod]: {\n id: ContentId.PaymentMethod,\n defaultValue: 'Payment Method',\n },\n [ContentId.PaymentPending]: {\n id: ContentId.PaymentPending,\n defaultValue: 'Payment Pending',\n },\n [ContentId.PaymentPostEvent]: {\n id: ContentId.PaymentPostEvent,\n defaultValue: 'Payment Post Event',\n },\n [ContentId.Payments]: { id: ContentId.Payments, defaultValue: 'Payments' },\n [ContentId.PaymentDate]: {\n id: ContentId.PaymentDate,\n defaultValue: 'Payment Date',\n },\n [ContentId.PaymentAccount]: {\n id: ContentId.PaymentAccount,\n defaultValue: 'Payment Account',\n },\n [ContentId.PaymentMethods]: {\n id: ContentId.PaymentMethods,\n defaultValue: 'Payment Methods',\n },\n [ContentId.PaymentMethodUsed]: {\n id: ContentId.PaymentMethodUsed,\n defaultValue: 'Payment Method Used',\n },\n [ContentId.PaymentState]: {\n id: ContentId.PaymentState,\n defaultValue: 'Payment State',\n },\n [ContentId.PastEvents]: {\n id: ContentId.PastEvents,\n defaultValue: EventTimeFrameFilter.Past,\n },\n [ContentId.PaymentType]: {\n id: ContentId.PaymentType,\n defaultValue: 'Payment Type',\n },\n [ContentId.PaymentUponSaleConfirmation]: {\n id: ContentId.PaymentUponSaleConfirmation,\n defaultValue: 'Payment Upon Sale Confirmation',\n },\n [ContentId.PaymentUponDelivery]: {\n id: ContentId.PaymentUponDelivery,\n defaultValue: 'Payment Upon Delivery',\n },\n [ContentId.PdfExt]: {\n id: ContentId.PdfExt,\n defaultValue: 'PDF (.pdf)',\n },\n [ContentId.Pending]: {\n id: ContentId.Pending,\n defaultValue: 'Pending',\n },\n [ContentId.PendingConfirmation]: {\n id: ContentId.PendingConfirmation,\n defaultValue: PointOfSaleSaleStatus.PendingConfirmation,\n },\n [ContentId.PendingFulfillment]: {\n id: ContentId.PendingFulfillment,\n defaultValue: PointOfSaleSaleStatus.PendingFulfillment,\n },\n [ContentId.PendingPickup]: {\n id: ContentId.PendingPickup,\n defaultValue: 'Pending Pickup',\n },\n [ContentId.PendingQC]: {\n id: ContentId.PendingQC,\n defaultValue: 'Pending Quality Control',\n },\n [ContentId.PendingRefulfillment]: {\n id: ContentId.PendingRefulfillment,\n defaultValue: 'Pending Re-fulfillment',\n },\n [ContentId.PendingRejection]: {\n id: ContentId.PendingRejection,\n defaultValue: PointOfSaleSaleStatus.PendingRejection,\n },\n [ContentId.PendingReversal]: {\n id: ContentId.PendingReversal,\n defaultValue: 'Pending Reversal',\n },\n [ContentId.PendingReview]: {\n id: ContentId.PendingReview,\n defaultValue: 'Pending Review',\n },\n [ContentId.PendingSourcing]: {\n id: ContentId.PendingSourcing,\n defaultValue: 'Pending Sourcing',\n },\n [ContentId.PeopleWithAccess]: {\n id: ContentId.PeopleWithAccess,\n defaultValue: 'People with access',\n },\n [ContentId.Percentage]: {\n id: ContentId.Percentage,\n defaultValue: 'Percentage',\n },\n [ContentId.Performer]: {\n id: ContentId.Performer,\n defaultValue: 'Performer',\n },\n [ContentId.PerformerAndVenue]: {\n id: ContentId.PerformerAndVenue,\n defaultValue: 'Performer/Venue',\n },\n [ContentId.PerformerAtVenue]: {\n id: ContentId.PerformerAtVenue,\n defaultValue: 'Performer at Venue',\n },\n [ContentId.Performers]: {\n id: ContentId.Performers,\n defaultValue: EventGroupingType.Performer,\n },\n [ContentId.Permission]: {\n id: ContentId.Permission,\n defaultValue: 'Permission',\n },\n [ContentId.Permission_AddSeatSaver]: {\n id: ContentId.Permission_AddSeatSaver,\n defaultValue: 'Add Placeholder Inventory',\n },\n [ContentId.Permission_AddTagType]: {\n id: ContentId.Permission_AddTagType,\n defaultValue: 'Add Tag Type',\n },\n [ContentId.Permission_ConfirmTransferWithoutProof]: {\n id: ContentId.Permission_ConfirmTransferWithoutProof,\n defaultValue: 'Confirm Transfer without Proof',\n },\n [ContentId.Permission_ConfigurePricing]: {\n id: ContentId.Permission_ConfigurePricing,\n defaultValue: 'Configure Price Settings',\n },\n [ContentId.Permission_CreateOfflineSale]: {\n id: ContentId.Permission_CreateOfflineSale,\n defaultValue: 'Add Offline Sales',\n },\n [ContentId.Permission_ManageOfflineSale]: {\n id: ContentId.Permission_ManageOfflineSale,\n defaultValue: 'Manage Offline Sales',\n },\n [ContentId.Permission_ResetFulfillment]: {\n id: ContentId.Permission_ResetFulfillment,\n defaultValue: 'Reset Fulfillment',\n },\n [ContentId.Permission_UpdateTags]: {\n id: ContentId.Permission_UpdateTags,\n defaultValue: 'Update Tags',\n },\n [ContentId.Permission_CreateReports]: {\n id: ContentId.Permission_CreateReports,\n defaultValue: 'Create Reports',\n },\n [ContentId.Permission_UpdateReports]: {\n id: ContentId.Permission_UpdateReports,\n defaultValue: 'Update Reports',\n },\n [ContentId.Permission_UpdateReportsOwned]: {\n id: ContentId.Permission_UpdateReportsOwned,\n defaultValue: 'Update Own Reports',\n },\n [ContentId.Permission_ViewAll]: {\n id: ContentId.Permission_ViewAll,\n defaultValue: 'View All',\n },\n [ContentId.Permission_ViewExternalMarketplaceAttributes]: {\n id: ContentId.Permission_ViewExternalMarketplaceAttributes,\n defaultValue: 'View External Marketplace Attributes',\n },\n [ContentId.Permission_ViewInventoryReports]: {\n id: ContentId.Permission_ViewInventoryReports,\n defaultValue: 'View Inventory Reports',\n },\n [ContentId.Permission_ViewRecent]: {\n id: ContentId.Permission_ViewRecent,\n defaultValue: 'View Recent',\n },\n [ContentId.Permission_ViewRecentFromExternalMarketplace]: {\n id: ContentId.Permission_ViewRecentFromExternalMarketplace,\n defaultValue: 'View Recent from External Marketplaces',\n },\n [ContentId.Permission_CreateForExternalMarketplaces]: {\n id: ContentId.Permission_CreateForExternalMarketplaces,\n defaultValue: 'Create for External Marketplaces',\n },\n [ContentId.Permission_ManageHolds]: {\n id: ContentId.Permission_ManageHolds,\n defaultValue: 'Manage Holds',\n },\n [ContentId.Permission_ViewProceeds]: {\n id: ContentId.Permission_ViewProceeds,\n defaultValue: 'View Proceeds',\n },\n [ContentId.Permission_ViewRecentProceeds]: {\n id: ContentId.Permission_ViewRecentProceeds,\n defaultValue: 'View Proceeds for Recent Sales',\n },\n [ContentId.Permission_ViewCostAndMargin]: {\n id: ContentId.Permission_ViewCostAndMargin,\n defaultValue: 'View Cost and Margin',\n },\n [ContentId.Permission_ViewPaymentState]: {\n id: ContentId.Permission_ViewPaymentState,\n defaultValue: 'View Payment State',\n },\n [ContentId.Permission_ViewFulfillmentArtifacts]: {\n id: ContentId.Permission_ViewFulfillmentArtifacts,\n defaultValue: 'View Fulfillment Artifacts',\n },\n [ContentId.Permission_ViewAllMarketplaceAttributes]: {\n id: ContentId.Permission_ViewAllMarketplaceAttributes,\n defaultValue: 'View All Marketplace Attributes',\n },\n [ContentId.Permission_SetPrice]: {\n id: ContentId.Permission_SetPrice,\n defaultValue: 'Set Price',\n },\n [ContentId.Permission_BroadcastUnbroadcast]: {\n id: ContentId.Permission_BroadcastUnbroadcast,\n defaultValue: 'Broadcast/Unbroadcast',\n },\n [ContentId.Permission_BroadcastUnbroadcastOnPurchasedBy]: {\n id: ContentId.Permission_BroadcastUnbroadcastOnPurchasedBy,\n defaultValue: 'Broadcast/Unbroadcast purchased listings (Purchaser)',\n },\n [ContentId.Permission_UpdateInfo]: {\n id: ContentId.Permission_UpdateInfo,\n defaultValue: 'Update Info',\n },\n [ContentId.Permission_Administration]: {\n id: ContentId.Permission_Administration,\n defaultValue: 'Administration',\n },\n [ContentId.Permission_Create]: {\n id: ContentId.Permission_Create,\n defaultValue: 'Create',\n },\n [ContentId.Permission_ViewSalesReports]: {\n id: ContentId.Permission_ViewSalesReports,\n defaultValue: 'View Sales Reports',\n },\n [ContentId.Permissions]: {\n id: ContentId.Permissions,\n defaultValue: 'Permissions',\n },\n [ContentId.PermissionsRequiredMessage]: {\n id: ContentId.PermissionsRequiredMessage,\n defaultValue: 'At least one permission is required.',\n },\n [ContentId.PerPayment]: {\n id: ContentId.PerPayment,\n defaultValue: 'Per payment',\n },\n [ContentId.Phone]: {\n id: ContentId.Phone,\n defaultValue: 'Phone',\n },\n [ContentId.PreDelivered]: {\n id: ContentId.PreDelivered,\n defaultValue: 'Pre-Delivered',\n },\n [ContentId.Premium]: {\n id: ContentId.Premium,\n defaultValue: 'Premium',\n },\n [ContentId.Preview]: {\n id: ContentId.Preview,\n defaultValue: 'Preview',\n },\n [ContentId.Price]: {\n id: ContentId.Price,\n defaultValue: 'Price',\n },\n [ContentId.PriceAboveCeiling]: {\n id: ContentId.PriceAboveCeiling,\n defaultValue: 'Price Above Ceiling',\n },\n [ContentId.PriceBelowFloor]: {\n id: ContentId.PriceBelowFloor,\n defaultValue: 'Price Below Floor',\n },\n [ContentId.PriceBelowMaxAllowedDrop]: {\n id: ContentId.PriceBelowMaxAllowedDrop,\n defaultValue: 'Price Below Max Allowed Drop',\n },\n [ContentId.OneDayBeforeEvent]: {\n id: ContentId.OneDayBeforeEvent,\n defaultValue: '24 hours before event',\n },\n [ContentId.OneWeekBeforeEvent]: {\n id: ContentId.OneWeekBeforeEvent,\n defaultValue: '1 week before event',\n },\n [ContentId.PriceBy]: {\n id: ContentId.PriceBy,\n defaultValue: 'price by ',\n },\n [ContentId.PriceByMarketplace]: {\n id: ContentId.PriceByMarketplace,\n defaultValue: 'Price by Marketplace',\n },\n [ContentId.PricedBy]: {\n id: ContentId.PricedBy,\n defaultValue: 'Priced By',\n },\n [ContentId.PriceMustBeBetweenFloorAndCeiling]: {\n id: ContentId.PriceMustBeBetweenFloorAndCeiling,\n defaultValue: 'Price must be between Price Floor and Ceiling.',\n },\n [ContentId.PriceCeiling]: {\n id: ContentId.PriceCeiling,\n defaultValue: 'Price Ceiling',\n },\n [ContentId.PriceEqualsLastPrice]: {\n id: ContentId.PriceEqualsLastPrice,\n defaultValue: 'Price Equals Last Price',\n },\n [ContentId.PriceFloor]: {\n id: ContentId.PriceFloor,\n defaultValue: 'Price Floor',\n },\n [ContentId.Pricer]: {\n id: ContentId.Pricer,\n defaultValue: 'Pricer',\n },\n [ContentId.Prices]: {\n id: ContentId.Prices,\n defaultValue: 'Prices',\n },\n [ContentId.PriceZeroUnbroadcastWarning]: {\n id: ContentId.PriceZeroUnbroadcastWarning,\n defaultValue:\n 'Setting the price to zero will unbroadcast the listing. Continue?',\n },\n [ContentId.Pricing]: {\n id: ContentId.Pricing,\n defaultValue: 'Pricing',\n },\n [ContentId.PricingDetails]: {\n id: ContentId.PricingDetails,\n defaultValue: 'Pricing Details',\n },\n [ContentId.PricingHistory]: {\n id: ContentId.PricingHistory,\n defaultValue: 'Pricing History',\n },\n [ContentId.PricingProtection]: {\n id: ContentId.PricingProtection,\n defaultValue: 'Pricing Protection',\n },\n [ContentId.Private]: {\n id: ContentId.Private,\n defaultValue: 'Private',\n },\n [ContentId.PrivateNote]: {\n id: ContentId.PrivateNote,\n defaultValue: 'Private note',\n },\n [ContentId.Proceeds]: {\n id: ContentId.Proceeds,\n defaultValue: 'Proceeds',\n },\n [ContentId.ProceedsFloor]: {\n id: ContentId.ProceedsFloor,\n defaultValue: 'Proceeds Floor',\n },\n [ContentId.ProceedsCeiling]: {\n id: ContentId.ProceedsCeiling,\n defaultValue: 'Proceeds Ceiling',\n },\n [ContentId.ProceedsPerTicket]: {\n id: ContentId.ProceedsPerTicket,\n defaultValue: 'Proceeds Per Ticket',\n },\n [ContentId.Processing]: {\n id: ContentId.Processing,\n defaultValue: 'Processing',\n },\n [ContentId.ProcessingFulfillment]: {\n id: ContentId.ProcessingFulfillment,\n defaultValue: PointOfSaleSaleStatus.ProcessingFulfillment,\n },\n [ContentId.Processor]: {\n id: ContentId.Processor,\n defaultValue: 'Processor',\n },\n [ContentId.Profit]: {\n id: ContentId.Profit,\n defaultValue: 'Profit',\n },\n [ContentId.ProofOfPurchase]: {\n id: ContentId.ProofOfPurchase,\n defaultValue: 'Proof of Purchase',\n },\n [ContentId.ProofOfPurchasedInstruction]: {\n id: ContentId.ProofOfPurchasedInstruction,\n defaultValue: 'Please upload receipts or email for proof of purchase',\n },\n [ContentId.ProofOfPurchasedRequired]: {\n id: ContentId.ProofOfPurchasedRequired,\n defaultValue: 'Proof of Purchase Required',\n },\n [ContentId.ProofOfPurchasedRequiredMessage]: {\n id: ContentId.ProofOfPurchasedRequiredMessage,\n defaultValue:\n 'Upload proof that you have neither row nor seat information available to you',\n },\n [ContentId.ProvideTransferImageProofInstruction]: {\n id: ContentId.ProvideTransferImageProofInstruction,\n defaultValue: 'Upload Screenshot of Transfer Confirmation',\n },\n [ContentId.ProvideTransferProofIdInstruction]: {\n id: ContentId.ProvideTransferProofIdInstruction,\n defaultValue: 'Provide proof of transfer ID or invoice ID (e.g. AXS)',\n },\n [ContentId.ProvideTransferUrlInstruction]: {\n id: ContentId.ProvideTransferUrlInstruction,\n defaultValue: 'Provide URLs where the buyer can accept the tickets.',\n },\n [ContentId.Purchase]: {\n id: ContentId.Purchase,\n defaultValue: 'Purchase',\n },\n [ContentId.PurchaseCancelled]: {\n id: ContentId.PurchaseCancelled,\n defaultValue: 'Purchase Cancelled',\n },\n [ContentId.PurchasedBy]: {\n id: ContentId.PurchasedBy,\n defaultValue: 'Purchased By',\n },\n [ContentId.PurchaseDetails]: {\n id: ContentId.PurchaseDetails,\n defaultValue: 'Purchase Details',\n },\n [ContentId.PurchaseHaveNoSales]: {\n id: ContentId.PurchaseHaveNoSales,\n defaultValue: 'This purchase has no sales.',\n },\n [ContentId.PurchaseHaveNoListings]: {\n id: ContentId.PurchaseHaveNoListings,\n defaultValue: 'This purchase has no listings.',\n },\n [ContentId.PurchaseId]: {\n id: ContentId.PurchaseId,\n defaultValue: 'Purchase Id',\n },\n [ContentId.Purchases]: {\n id: ContentId.Purchases,\n defaultValue: MainRoute.Purchases,\n },\n [ContentId.PurchaseDate]: {\n id: ContentId.PurchaseDate,\n defaultValue: 'Purchase Date',\n },\n [ContentId.PurchaseDates]: {\n id: ContentId.PurchaseDates,\n defaultValue: 'Purchase Dates',\n },\n [ContentId.Purchases_AddTagType_Details]: {\n id: ContentId.Purchases_AddTagType_Details,\n defaultValue: 'Permits adding new tag types to purchase orders',\n },\n [ContentId.Purchases_Create_Details]: {\n id: ContentId.Purchases_Create_Details,\n defaultValue: 'Create a new purchase',\n },\n [ContentId.Purchases_Edit_Details]: {\n id: ContentId.Purchases_Edit_Details,\n defaultValue: 'Edit any accessible purchase',\n },\n [ContentId.Purchases_EditOwned_Details]: {\n id: ContentId.Purchases_EditOwned_Details,\n defaultValue: 'Edit purchases made by the user',\n },\n [ContentId.Purchases_UpdateTags_Details]: {\n id: ContentId.Purchases_UpdateTags_Details,\n defaultValue: 'Permits updating of tags on purchase orders',\n },\n [ContentId.Purchases_UpdateTagsOwned_Details]: {\n id: ContentId.Purchases_UpdateTagsOwned_Details,\n defaultValue: 'Permits updateing tags on purchase made by the user',\n },\n [ContentId.Purchases_ViewAll_Details]: {\n id: ContentId.Purchases_ViewAll_Details,\n defaultValue: 'See all purchases including historical ones',\n },\n [ContentId.Purchases_ViewOwned_Details]: {\n id: ContentId.Purchases_ViewOwned_Details,\n defaultValue: 'View purchases made by the user',\n },\n [ContentId.Purchases_ViewRecent_Details]: {\n id: ContentId.Purchases_ViewRecent_Details,\n defaultValue:\n 'See only purchases for future events or events less than 3 months old',\n },\n [ContentId.PurchaseSettings]: {\n id: ContentId.PurchaseSettings,\n defaultValue: 'Purchase Settings',\n },\n [ContentId.PurchaseSettingsAllVisible]: {\n id: ContentId.PurchaseSettingsAllVisible,\n defaultValue: 'Edit Settings for All Visible Purchases',\n },\n [ContentId.QRCode]: {\n id: ContentId.QRCode,\n defaultValue: 'QR Code',\n },\n [ContentId.QualityControl]: {\n id: ContentId.QualityControl,\n defaultValue: 'Quality Control',\n },\n [ContentId.QualityControlState]: {\n id: ContentId.QualityControlState,\n defaultValue: 'Quality Control State',\n },\n [ContentId.QualityOfComparableListings]: {\n id: ContentId.QualityOfComparableListings,\n defaultValue: 'Quality of Comparable Listings',\n },\n [ContentId.Quantity]: {\n id: ContentId.Quantity,\n defaultValue: 'Quantity',\n },\n [ContentId.QuantityAbbreviated]: {\n id: ContentId.QuantityAbbreviated,\n defaultValue: 'Qty',\n },\n [ContentId.QuantityAdjustedVenueWideQualityScore]: {\n id: ContentId.QuantityAdjustedVenueWideQualityScore,\n defaultValue: 'Quantity Adjusted Venue-wide Quality Score',\n },\n [ContentId.QuantityAvailablePremiums]: {\n id: ContentId.QuantityAvailablePremiums,\n defaultValue: 'Quantity Available Premiums',\n },\n [ContentId.QuantityScore]: {\n id: ContentId.QuantityScore,\n defaultValue: 'Quantity Score',\n },\n [ContentId.QueuedForPayment]: {\n id: ContentId.QueuedForPayment,\n defaultValue: PointOfSalePaymentState.Queued,\n },\n [ContentId.QuickFilters]: {\n id: ContentId.QuickFilters,\n defaultValue: 'Quick Filters',\n },\n [ContentId.RandomizeRankForEachEvents]: {\n id: ContentId.RandomizeRankForEachEvents,\n defaultValue: 'Randomize ranks for each event',\n },\n [ContentId.Rank]: {\n id: ContentId.Rank,\n defaultValue: 'Rank',\n },\n [ContentId.Readonly]: {\n id: ContentId.Readonly,\n defaultValue: 'Readonly',\n },\n [ContentId.RecentlyCategorized]: {\n id: ContentId.RecentlyCategorized,\n defaultValue: 'Recently Categorized',\n },\n [ContentId.RecentlySold]: {\n id: ContentId.RecentlySold,\n defaultValue: 'Recently Sold',\n },\n [ContentId.RecentSales]: {\n id: ContentId.RecentSales,\n defaultValue: 'Recent Sales',\n },\n [ContentId.Recommended]: {\n id: ContentId.Recommended,\n defaultValue: 'Recommended',\n },\n [ContentId.Reduce]: {\n id: ContentId.Reduce,\n defaultValue: 'Reduce',\n },\n [ContentId.Reference]: {\n id: ContentId.Reference,\n defaultValue: 'Reference',\n },\n [ContentId.Refunded]: {\n id: ContentId.Refunded,\n defaultValue: 'Refunded',\n },\n [ContentId.RefundNeeded]: {\n id: ContentId.RefundNeeded,\n defaultValue: 'Refund Needed',\n },\n [ContentId.Rejected]: {\n id: ContentId.Rejected,\n defaultValue: 'Rejected',\n },\n [ContentId.RejectSale]: {\n id: ContentId.RejectSale,\n defaultValue: 'Reject Sale',\n },\n [ContentId.RejectSaleWarning]: {\n id: ContentId.RejectSaleWarning,\n defaultValue: 'You are about to reject this sale. Continue?',\n },\n [ContentId.ReleaseNotes]: {\n id: ContentId.ReleaseNotes,\n defaultValue: 'Release Notes',\n },\n [ContentId.Reload]: {\n id: ContentId.Reload,\n defaultValue: 'Reload',\n },\n [ContentId.Remaining]: {\n id: '',\n defaultValue: 'Remaining',\n },\n [ContentId.Remove]: {\n id: ContentId.Remove,\n defaultValue: 'Remove',\n },\n [ContentId.RemoveAccess]: {\n id: ContentId.RemoveAccess,\n defaultValue: 'Remove Access',\n },\n [ContentId.RemoveBarcodes]: {\n id: ContentId.RemoveBarcodes,\n defaultValue: 'Remove Barcodes',\n },\n [ContentId.RemoveHold]: {\n id: ContentId.RemoveHold,\n defaultValue: 'Remove Hold',\n },\n [ContentId.RemoveHoldAll]: {\n id: ContentId.RemoveHoldAll,\n defaultValue: 'Remove Hold for All',\n },\n [ContentId.RemoveHoldSelected]: {\n id: ContentId.RemoveHoldSelected,\n defaultValue: 'Remove Hold for Selected',\n },\n [ContentId.RemoveHoldVisible]: {\n id: ContentId.RemoveHoldVisible,\n defaultValue: 'Remove Hold for All Visible Listings',\n },\n [ContentId.RemovePayment]: {\n id: ContentId.RemovePayment,\n defaultValue: 'Remove Payment',\n },\n [ContentId.RemovePredeliveredArtifacts]: {\n id: ContentId.RemovePredeliveredArtifacts,\n defaultValue: 'Remove Predelivered Artifacts',\n },\n [ContentId.RemovePdfs]: {\n id: ContentId.RemovePdfs,\n defaultValue: 'Remove e-Ticket Documents',\n },\n [ContentId.RemovePredeliveredArtifactsAll]: {\n id: ContentId.RemovePredeliveredArtifactsAll,\n defaultValue: 'Remove Predelivery for All',\n },\n [ContentId.RemovePredeliveredArtifactsAllVisible]: {\n id: ContentId.RemovePredeliveredArtifactsAllVisible,\n defaultValue: 'Remove Predelivery for All Visible Listings',\n },\n [ContentId.RemovePredeliveredArtifactsSelected]: {\n id: ContentId.RemovePredeliveredArtifactsSelected,\n defaultValue: 'Remove Predelivery for Selected',\n },\n [ContentId.RemovePredeliveredArtifactsWarning]: {\n id: ContentId.RemovePredeliveredArtifactsWarning,\n defaultValue:\n 'Removing pre-delivered artifacts applies only to unsold tickets.',\n },\n [ContentId.RemoveTag]: {\n id: ContentId.RemoveTag,\n defaultValue: 'Remove Tag',\n },\n [ContentId.RemoveTagValues]: {\n id: ContentId.RemoveTagValues,\n defaultValue: 'Remove Tag Values',\n },\n [ContentId.RemoveTagValuesAllVisible]: {\n id: ContentId.RemoveTagValuesAllVisible,\n defaultValue: 'Remove Tag Values for All Visible Listings',\n },\n [ContentId.RemoveTagValuesSelected]: {\n id: ContentId.RemoveTagValuesSelected,\n defaultValue: 'Remove Tag Values for Selected',\n },\n [ContentId.RenewAccessToken]: {\n id: ContentId.RenewAccessToken,\n defaultValue: 'Renew access token',\n },\n [ContentId.Reply]: {\n id: ContentId.Reply,\n defaultValue: 'Reply',\n },\n [ContentId.Reporter]: {\n id: ContentId.Reporter,\n defaultValue: 'Reporter',\n },\n [ContentId.Reporting]: {\n id: ContentId.Reporting,\n defaultValue: 'Reporting',\n },\n [ContentId.ReportName]: {\n id: ContentId.ReportName,\n defaultValue: 'Report Name',\n },\n [ContentId.Reports]: {\n id: ContentId.Reports,\n defaultValue: 'Reports',\n },\n [ContentId.Reports_CreateReports_Details]: {\n id: ContentId.Reports_CreateReports_Details,\n defaultValue: 'Create new reports across various modules',\n },\n [ContentId.Reports_UpdateReports_Details]: {\n id: ContentId.Reports_UpdateReports_Details,\n defaultValue: 'Edit existing reports',\n },\n [ContentId.Reports_UpdateReportsOwned_Details]: {\n id: ContentId.Reports_UpdateReportsOwned_Details,\n defaultValue: 'Edit reports created or owned by the user',\n },\n [ContentId.Reports_ViewAll_Details]: {\n id: ContentId.Reports_ViewAll_Details,\n defaultValue: 'View all reports, across all modules',\n },\n [ContentId.Reports_ViewInventoryReports_Details]: {\n id: ContentId.Reports_ViewInventoryReports_Details,\n defaultValue: 'View inventory-related reports',\n },\n [ContentId.Reports_ViewSalesReports_Details]: {\n id: ContentId.Reports_ViewSalesReports_Details,\n defaultValue: 'View sales-related reports',\n },\n [ContentId.ReprocessEmail]: {\n id: ContentId.ReprocessEmail,\n defaultValue: 'Reprocess email',\n },\n [ContentId.RequestEvent]: {\n id: ContentId.RequestEvent,\n defaultValue: 'Request Event',\n },\n [ContentId.RequestPasswordResetEmail]: {\n id: ContentId.RequestPasswordResetEmail,\n defaultValue: 'Request password reset email',\n },\n [ContentId.Required]: {\n id: ContentId.Required,\n defaultValue: 'Required',\n },\n [ContentId.RequiredFieldsError]: {\n id: ContentId.RequiredFieldsError,\n defaultValue: 'Some required fields are empty.',\n },\n [ContentId.Reset]: {\n id: ContentId.Reset,\n defaultValue: 'Reset',\n },\n [ContentId.ResetAll]: {\n id: ContentId.ResetAll,\n defaultValue: 'Reset All',\n },\n [ContentId.ResetFulfillment]: {\n id: ContentId.ResetFulfillment,\n defaultValue: 'Reset Fulfillment',\n },\n [ContentId.ResetFulfillmentWarning]: {\n id: ContentId.ResetFulfillmentWarning,\n defaultValue:\n 'You are about to put this sale back to Pending Re-fulfillment. Continue?',\n },\n [ContentId.ResetListings]: {\n id: ContentId.ResetListings,\n defaultValue: 'Reset Listings',\n },\n [ContentId.ResetListingsDeleteWarning]: {\n id: ContentId.ResetListingsDeleteWarning,\n defaultValue:\n 'This action will delete the all listings that were merged or split (unless those listings were merged with other tickets from other purchases, then they will be changed to no longer contain tickets from this purchase) and new listings will be created from the original ticket groups. All listings that are created from the original ticket groups will remain unchanged.',\n },\n [ContentId.ResetSettings]: {\n id: ContentId.ResetSettings,\n defaultValue: 'Reset Settings',\n },\n [ContentId.RestorePurchase]: {\n id: ContentId.RestorePurchase,\n defaultValue: 'Restore Purchase',\n },\n [ContentId.RestrictTo]: {\n id: ContentId.RestrictTo,\n defaultValue: 'Restrict to',\n },\n [ContentId.RestrictToSameZone]: {\n id: ContentId.RestrictToSameZone,\n defaultValue: 'Restrict to Same Zone',\n },\n [ContentId.RestrictSelection]: {\n id: ContentId.RestrictSelection,\n defaultValue: 'Restrict selection',\n },\n [ContentId.RestrictPriceDropVelocity]: {\n id: ContentId.RestrictPriceDropVelocity,\n defaultValue: 'Restrict Price Drop Velocity',\n },\n [ContentId.RetrievingBuyersInfo]: {\n id: ContentId.RetrievingBuyersInfo,\n defaultValue: \"Retrieving buyer's information...\",\n },\n [ContentId.Retry]: {\n id: ContentId.Retry,\n defaultValue: 'Retry',\n },\n [ContentId.ReuploadBarcodes]: {\n id: ContentId.ReuploadBarcodes,\n defaultValue: 'Re-upload Barcodes',\n },\n [ContentId.ReuploadETickets]: {\n id: ContentId.ReuploadETickets,\n defaultValue: 'Re-upload E-Tickets',\n },\n [ContentId.ReuploadProof]: {\n id: ContentId.ReuploadProof,\n defaultValue: 'Re-upload Proof',\n },\n [ContentId.ReuploadQRCodes]: {\n id: ContentId.ReuploadQRCodes,\n defaultValue: 'Re-upload QR Codes',\n },\n [ContentId.ReuploadTicketUrls]: {\n id: ContentId.ReuploadTicketUrls,\n defaultValue: 'Re-upload Ticket URLs',\n },\n [ContentId.ReuploadTicketIds]: {\n id: ContentId.ReuploadTicketIds,\n defaultValue: 'Re-upload Ticket IDs',\n },\n [ContentId.Revenue]: {\n id: ContentId.Revenue,\n defaultValue: 'Revenue',\n },\n [ContentId.Reversed]: {\n id: ContentId.Reversed,\n defaultValue: 'Reversed',\n },\n [ContentId.ReviewAllocation]: {\n id: ContentId.ReviewAllocation,\n defaultValue: 'Review Allocation',\n },\n [ContentId.RightNow]: {\n id: ContentId.RightNow,\n defaultValue: 'Right Now',\n },\n [ContentId.Role]: {\n id: ContentId.Role,\n defaultValue: 'Role',\n },\n [ContentId.Role_AutoFulfill_Details]: {\n id: ContentId.Role_AutoFulfill_Details,\n defaultValue: 'Auto process that handles fulfilling sales',\n },\n [ContentId.Role_AutoPO_Details]: {\n id: ContentId.Role_AutoPO_Details,\n defaultValue: 'Auto process that handles purchase',\n },\n [ContentId.Role_AutoPricer_Details]: {\n id: ContentId.Role_AutoPricer_Details,\n defaultValue: 'Auto process that handles pricing',\n },\n [ContentId.Role_Buyer_Details]: {\n id: ContentId.Role_Buyer_Details,\n defaultValue: 'One who handles buying tickets and creating purchases',\n },\n [ContentId.Role_Finance_Details]: {\n id: ContentId.Role_Finance_Details,\n defaultValue: 'One who handles finance',\n },\n [ContentId.Role_Fulfillment_Details]: {\n id: ContentId.Role_Fulfillment_Details,\n defaultValue: 'One who fulfills sales',\n },\n [ContentId.Role_Owner_Details]: {\n id: ContentId.Role_Owner_Details,\n defaultValue: ' Owner/CEO of a seller account',\n },\n [ContentId.Role_Pricer_Details]: {\n id: ContentId.Role_Pricer_Details,\n defaultValue: 'One who handles pricing on inventory',\n },\n [ContentId.Role_Processor_Details]: {\n id: ContentId.Role_Processor_Details,\n defaultValue:\n 'One who handles inventory and sales for an API seller account',\n },\n [ContentId.Role_Reporter_Details]: {\n id: ContentId.Role_Reporter_Details,\n defaultValue: 'One who handles reporting',\n },\n [ContentId.Roles]: {\n id: ContentId.Roles,\n defaultValue: 'Roles',\n },\n [ContentId.RoleWithUsersCannotBeDeleted]: {\n id: ContentId.RoleWithUsersCannotBeDeleted,\n defaultValue:\n 'This role cannot be deleted as there are users currently assigned to it. Reassign users before attempting deletion.',\n },\n [ContentId.Row]: {\n id: ContentId.Row,\n defaultValue: 'Row',\n },\n [ContentId.RowExtrapolation]: {\n id: ContentId.RowExtrapolation,\n defaultValue: 'Row Extrapolation',\n },\n [ContentId.RowScore]: {\n id: ContentId.RowScore,\n defaultValue: 'Row Score',\n },\n [ContentId.Sale]: {\n id: ContentId.Sale,\n defaultValue: 'Sale',\n },\n [ContentId.SaleCancelled]: {\n id: ContentId.SaleCancelled,\n defaultValue: 'Sale Cancelled',\n },\n [ContentId.SaleConflictWarning]: {\n id: ContentId.SaleConflictWarning,\n defaultValue:\n 'This sale was recently updated. Please reload to see the lastest sale information and make any necessary changes.',\n },\n\n [ContentId.SaleDate]: {\n id: ContentId.SaleDate,\n defaultValue: 'Sale Date',\n },\n [ContentId.SaleId]: {\n id: ContentId.SaleId,\n defaultValue: 'Sale Id',\n },\n [ContentId.Sales]: { id: ContentId.Sales, defaultValue: 'Sales' },\n [ContentId.Sales_AddTagType_Details]: {\n id: ContentId.Sales_AddTagType_Details,\n defaultValue: 'Permits adding new tag types to sales',\n },\n [ContentId.Sales_ConfirmReject_Details]: {\n id: ContentId.Sales_ConfirmReject_Details,\n defaultValue: 'Can confirm (allocate) or reject all accessible sales',\n },\n [ContentId.Sales_ConfirmRejectOnIsFulfillerOf_Details]: {\n id: ContentId.Sales_ConfirmRejectOnIsFulfillerOf_Details,\n defaultValue: 'Confirm/Reject sales where the user is the fulfiller',\n },\n [ContentId.Sales_ConfirmRejectOnIsPricerOf_Details]: {\n id: ContentId.Sales_ConfirmRejectOnIsPricerOf_Details,\n defaultValue:\n 'Confirm/Reject sales of inventory where the user is the pricer',\n },\n [ContentId.Sales_ConfirmRejectOnPurchasedBy_Details]: {\n id: ContentId.Sales_ConfirmRejectOnPurchasedBy_Details,\n defaultValue: 'Confirm/Reject sales of inventory that the user purchased',\n },\n [ContentId.Sales_ConfirmTransferWithoutProof_Details]: {\n id: ContentId.Sales_ConfirmTransferWithoutProof_Details,\n defaultValue: 'Confirm transfer without proof for accessible sales',\n },\n [ContentId.Sales_CreateForExternalMarketplaces_Details]: {\n id: ContentId.Sales_CreateForExternalMarketplaces_Details,\n defaultValue: 'Can create sales in POS for any non-StubHub marketplace',\n },\n [ContentId.Sales_CreateOfflineSale_Details]: {\n id: ContentId.Sales_CreateOfflineSale_Details,\n defaultValue: 'Create offline sales',\n },\n [ContentId.Sales_Fulfill_Details]: {\n id: ContentId.Sales_Fulfill_Details,\n defaultValue: 'Can fulfill all accessible sales',\n },\n [ContentId.Sales_FulfillOnIsFulfillerOf_Details]: {\n id: ContentId.Sales_FulfillOnIsFulfillerOf_Details,\n defaultValue:\n 'Enables fulfilling sales actions where the user is the fulfiller',\n },\n [ContentId.Sales_FulfillOnPricerOf_Details]: {\n id: ContentId.Sales_FulfillOnPricerOf_Details,\n defaultValue:\n 'Fulfill sales of inventory where the user priced the inventory',\n },\n [ContentId.Sales_FulfillOnPurchasedBy_Details]: {\n id: ContentId.Sales_FulfillOnPurchasedBy_Details,\n defaultValue: 'Fulfill sales of inventory that the user purchased',\n },\n [ContentId.Sales_ManageHold_Details]: {\n id: ContentId.Sales_ManageHold_Details,\n defaultValue: 'Create/edit/delete holds of sales',\n },\n [ContentId.Sales_ManageOfflineSale_Details]: {\n id: ContentId.Sales_ManageOfflineSale_Details,\n defaultValue: 'Update/delete offline sales',\n },\n [ContentId.Sales_ManageOfflineSaleCreatedBy_Details]: {\n id: ContentId.Sales_ManageOfflineSaleCreatedBy_Details,\n defaultValue: 'Update/delete offline sales that the user created',\n },\n [ContentId.Sales_ResetFulfillment_Details]: {\n id: ContentId.Sales_ResetFulfillment_Details,\n defaultValue: 'Reset fulfillment on accessible fulfilled sales',\n },\n [ContentId.Sales_UpdateSaleOnPurchasedBy_Details]: {\n id: ContentId.Sales_UpdateSaleOnPurchasedBy_Details,\n defaultValue: 'Update sales of inventory that the user purchased',\n },\n [ContentId.Sales_UpdateSalesInfo_Details]: {\n id: ContentId.Sales_UpdateSalesInfo_Details,\n defaultValue: 'Allows updating sales information',\n },\n [ContentId.Sales_UpdateSalesInfoOnIsFulfillerOf_Details]: {\n id: ContentId.Sales_UpdateSalesInfoOnIsFulfillerOf_Details,\n defaultValue:\n 'Allows updating sales information where the user is the fulfiller',\n },\n [ContentId.Sales_UpdateSalesInfoOnIsPricerOf_Details]: {\n id: ContentId.Sales_UpdateSalesInfoOnIsPricerOf_Details,\n defaultValue:\n 'Allows updating sales information where the user priced the inventory',\n },\n [ContentId.Sales_UpdateTags_Details]: {\n id: ContentId.Sales_UpdateTags_Details,\n defaultValue: 'Permits updating of tags on sales',\n },\n [ContentId.Sales_UpdateTagsOnIsFulfillerOf_Details]: {\n id: ContentId.Sales_UpdateTagsOnIsFulfillerOf_Details,\n defaultValue: 'Update tags of sales where the user is the fulfiller',\n },\n [ContentId.Sales_UpdateTagsOnIsPricerOf_Details]: {\n id: ContentId.Sales_UpdateTagsOnIsPricerOf_Details,\n defaultValue:\n 'Update tags of sales of inventory where the user is the pricer',\n },\n [ContentId.Sales_UpdateTagsOnPurchasedBy_Details]: {\n id: ContentId.Sales_UpdateTagsOnPurchasedBy_Details,\n defaultValue: 'Update tags of sales of inventory that the user purchased',\n },\n [ContentId.Sales_ViewAll_Details]: {\n id: ContentId.Sales_ViewAll_Details,\n defaultValue: 'See all sales including historical ones',\n },\n [ContentId.Sales_ViewCostAndMargin_Details]: {\n id: ContentId.Sales_ViewCostAndMargin_Details,\n defaultValue: 'See cost and margins on all accessible sales',\n },\n [ContentId.Sales_ViewFulfillmentArtifacts_Details]: {\n id: ContentId.Sales_ViewFulfillmentArtifacts_Details,\n defaultValue: 'See fulfillment artifacts from a sale',\n },\n [ContentId.Sales_ViewFulfillmentArtifactsOnIsFulfillerOf_Details]: {\n id: ContentId.Sales_ViewFulfillmentArtifactsOnIsFulfillerOf_Details,\n defaultValue: 'View fulfillment artifacts on sales that the user fufilled',\n },\n [ContentId.Sales_ViewFulfillmentArtifactsOnIsPricerOf_Details]: {\n id: ContentId.Sales_ViewFulfillmentArtifactsOnIsPricerOf_Details,\n defaultValue:\n 'View fulfillment artifacts on sales of inventory where the user is the pricer',\n },\n [ContentId.Sales_ViewFulfillmentArtifactsOnPurchasedBy_Details]: {\n id: ContentId.Sales_ViewFulfillmentArtifactsOnPurchasedBy_Details,\n defaultValue:\n 'View fulfillment artifacts on sales of inventory that the user purchased',\n },\n [ContentId.Sales_ViewPaymentState_Details]: {\n id: ContentId.Sales_ViewPaymentState_Details,\n defaultValue: 'See payment state on all accessible sales',\n },\n [ContentId.Sales_ViewProceeds_Details]: {\n id: ContentId.Sales_ViewProceeds_Details,\n defaultValue: 'See proceeds of all accessible sales',\n },\n [ContentId.Sales_ViewRecent_Details]: {\n id: ContentId.Sales_ViewRecent_Details,\n defaultValue:\n 'See only sales for future events or events less than 3 months old',\n },\n [ContentId.Sales_ViewRecentFromExternalMarketplace_Details]: {\n id: ContentId.Sales_ViewRecentFromExternalMarketplace_Details,\n defaultValue:\n 'See only sales for future events or events less than 3 months old that are not StubHub sales',\n },\n [ContentId.Sales_ViewRecentProceeds_Details]: {\n id: ContentId.Sales_ViewRecentProceeds_Details,\n defaultValue: 'See proceeds of all accessible sales within the last 7 days',\n },\n [ContentId.Sales_ViewSalesOnIsFulfillerOf_Details]: {\n id: ContentId.Sales_ViewSalesOnIsFulfillerOf_Details,\n defaultValue: 'View sales where the user is the fulfiller',\n },\n [ContentId.Sales_ViewSalesOnIsPricerOf_Details]: {\n id: ContentId.Sales_ViewSalesOnIsPricerOf_Details,\n defaultValue: 'Permits viewing sales where the user is the pricer',\n },\n [ContentId.Sales_ViewSalesOnPurchasedBy_Details]: {\n id: ContentId.Sales_ViewSalesOnPurchasedBy_Details,\n defaultValue: 'View sales of inventory that the user purchased',\n },\n [ContentId.SalesAndLift]: {\n id: ContentId.SalesAndLift,\n defaultValue: 'Sales & Lift',\n },\n [ContentId.SalesAndMargin]: {\n id: ContentId.SalesAndMargin,\n defaultValue: 'Sales & Margin',\n },\n [ContentId.SaleSettings]: {\n id: ContentId.SaleSettings,\n defaultValue: 'Sale Settings',\n },\n [ContentId.SaleSettingsAllVisible]: {\n id: ContentId.SaleSettingsAllVisible,\n defaultValue: 'Edit General Settings for All Visible Sales',\n },\n [ContentId.SalesReports]: {\n id: ContentId.SalesReports,\n defaultValue: MainRoute.Sales,\n },\n [ContentId.SalesSummary]: {\n id: ContentId.SalesSummary,\n defaultValue: 'Sales Summary',\n },\n [ContentId.SaleStatus]: {\n id: ContentId.SaleStatus,\n defaultValue: 'Sale Status',\n },\n [ContentId.SaleTicketTypeBulkEditWarning]: {\n id: ContentId.SaleTicketTypeBulkEditWarning,\n defaultValue:\n 'Ticket type change will only apply to sales that happened on StubHub and have not been fulfilled or rejected.',\n },\n [ContentId.SaleTicketTypeWarning]: {\n id: ContentId.SaleTicketTypeWarning,\n defaultValue:\n 'You can only change the ticket type if your sale happened on StubHub and has not been fulfilled or rejected',\n },\n [ContentId.SameTicketsForAllEventsTitle]: {\n id: ContentId.SameTicketsForAllEventsTitle,\n defaultValue: 'Multiple Events Selected',\n },\n [ContentId.SameTicketsForAllEventsHeader]: {\n id: ContentId.SameTicketsForAllEventsHeader,\n defaultValue:\n 'Do all your selected events share the same ticket information?',\n },\n [ContentId.SameTicketsForAllEventsMessage1]: {\n id: ContentId.SameTicketsForAllEventsMessage1,\n defaultValue: \"Click 'Yes' to enter the same tickets for all the events.\",\n },\n [ContentId.SameTicketsForAllEventsMessage2]: {\n id: ContentId.SameTicketsForAllEventsMessage2,\n defaultValue: \"Click 'No' to enter the tickets for each event separately.\",\n },\n [ContentId.SameZone]: {\n id: ContentId.SameZone,\n defaultValue: 'Same zone',\n },\n [ContentId.Save]: {\n id: ContentId.Save,\n defaultValue: 'Save',\n },\n [ContentId.SaveBarcodes]: {\n id: ContentId.SaveBarcodes,\n defaultValue: 'Save Barcodes',\n },\n [ContentId.SavePricingStrategyInfo]: {\n id: ContentId.SavePricingStrategyInfo,\n defaultValue:\n 'Save your pricing settings as a strategy to easily reuse it.',\n },\n [ContentId.SaveThisFilter]: {\n id: ContentId.SaveThisFilter,\n defaultValue: 'Save this filter',\n },\n [ContentId.SaveTicketIds]: {\n id: ContentId.SaveTicketIds,\n defaultValue: 'Save Ticket IDs',\n },\n [ContentId.SaveTicketUrls]: {\n id: ContentId.SaveTicketUrls,\n defaultValue: 'Save Ticket URLs',\n },\n [ContentId.Score]: {\n id: ContentId.Score,\n defaultValue: 'Score',\n },\n [ContentId.ScreenshotsOfTransfer]: {\n id: ContentId.ScreenshotsOfTransfer,\n defaultValue: 'Screenshots of the transfer confirmation.',\n },\n [ContentId.Search]: { id: ContentId.Search, defaultValue: 'Search' },\n [ContentId.SearchEmptyResult]: {\n id: ContentId.SearchEmptyResult,\n defaultValue: 'No events were found based on your query.',\n },\n [ContentId.SearchEventPlaceholderText]: {\n id: ContentId.SearchEventPlaceholderText,\n defaultValue: 'Search for event, venue, or performer',\n },\n [ContentId.SearchForMessagePlaceholder]: {\n id: ContentId.SearchForMessagePlaceholder,\n defaultValue: 'Search for message',\n },\n [ContentId.SearchOrEnter]: {\n id: ContentId.SearchOrEnter,\n defaultValue: 'Search or Enter',\n },\n [ContentId.SearchVenueConfigOrEvent]: {\n id: ContentId.SearchVenueConfigOrEvent,\n defaultValue: 'Search performer at venue or event',\n },\n [ContentId.Season]: { id: ContentId.Season, defaultValue: 'Season' },\n [ContentId.Seat]: { id: ContentId.Seat, defaultValue: 'Seat' },\n [ContentId.SeatFrom]: {\n id: ContentId.SeatFrom,\n defaultValue: 'Seat From',\n },\n [ContentId.SeatHeatmap]: {\n id: ContentId.SeatHeatmap,\n defaultValue: 'Seat Heatmap',\n },\n [ContentId.Seating]: { id: ContentId.Seating, defaultValue: 'Seating' },\n [ContentId.SeatingInfoNotMatchStubHub]: {\n id: ContentId.SeatingInfoNotMatchStubHub,\n defaultValue: \"Seating information not found in StubHub's event map.\",\n },\n [ContentId.SeatingUnmapped]: {\n id: ContentId.SeatingUnmapped,\n defaultValue: 'Seating Unmapped',\n },\n [ContentId.Seats]: { id: ContentId.Seats, defaultValue: 'Seats' },\n [ContentId.SeatSaver]: {\n id: ContentId.SeatSaver,\n defaultValue: 'Seat Saver',\n },\n [ContentId.SeatSaverPurchaseMessage]: {\n id: ContentId.SeatSaverPurchaseMessage,\n defaultValue:\n 'Seat Saver have no purchases until a purchase is automatically or manually allocated.',\n },\n [ContentId.SeatScore]: {\n id: ContentId.SeatScore,\n defaultValue: 'Seat Score',\n },\n [ContentId.SeatTo]: {\n id: ContentId.SeatTo,\n defaultValue: 'Seat To',\n },\n [ContentId.SeatTraits]: {\n id: ContentId.SeatTraits,\n defaultValue: 'Seat Traits',\n },\n [ContentId.SeatAllocationChangeWarning]: {\n id: ContentId.SeatAllocationChangeWarning,\n defaultValue:\n 'If you change section or row, you might need to confirm the change with the marketplace first.',\n },\n [ContentId.SeatIncrementType]: {\n id: ContentId.SeatIncrementType,\n defaultValue: 'Seat Increment Type',\n },\n [ContentId.SectionOnly]: {\n id: ContentId.SectionOnly,\n defaultValue: 'Section Only',\n },\n [ContentId.SeeAll]: {\n id: ContentId.SeeAll,\n defaultValue: 'See All',\n },\n [ContentId.SeeMoreEllipses]: {\n id: ContentId.SeeMoreEllipses,\n defaultValue: 'See More...',\n },\n [ContentId.Select]: {\n id: ContentId.Select,\n defaultValue: 'Select',\n },\n [ContentId.SelectAll]: {\n id: ContentId.SelectAll,\n defaultValue: 'Select All',\n },\n [ContentId.SelectDatePlaceholder]: {\n id: ContentId.SelectDatePlaceholder,\n defaultValue: 'Select date',\n },\n [ContentId.SelectedListing]: {\n id: ContentId.SelectedListing,\n defaultValue: 'Selected Listing',\n },\n [ContentId.SelectedSection]: {\n id: ContentId.SelectedSection,\n defaultValue: 'Selected Sections',\n },\n [ContentId.SelectedSections]: {\n id: ContentId.SelectedSections,\n defaultValue: 'Selected Sections',\n },\n [ContentId.SelectFilter]: {\n id: ContentId.SelectFilter,\n defaultValue: 'Select filter',\n },\n [ContentId.SelectInboxPlaceholder]: {\n id: ContentId.SelectInboxPlaceholder,\n defaultValue: 'Select inbox',\n },\n [ContentId.SelectListingsToMerge]: {\n id: ContentId.SelectListingsToMerge,\n defaultValue: 'Select Listings to Merge',\n },\n [ContentId.SelectMultiple]: {\n id: ContentId.SelectMultiple,\n defaultValue: 'Select Multiple',\n },\n [ContentId.SelectNone]: {\n id: ContentId.SelectNone,\n defaultValue: 'Select None',\n },\n [ContentId.SelectSeatFrom]: {\n id: ContentId.SelectSeatFrom,\n defaultValue: 'Select Seat From',\n },\n [ContentId.SelectSections]: {\n id: ContentId.SelectSections,\n defaultValue: 'Select Sections',\n },\n [ContentId.SelectSectionsToPriceAgainst]: {\n id: ContentId.SelectSectionsToPriceAgainst,\n defaultValue: 'Select sections to price against',\n },\n [ContentId.SelectSortPlaceholder]: {\n id: ContentId.SelectSortPlaceholder,\n defaultValue: 'Select sort',\n },\n [ContentId.SelectSplitType]: {\n id: ContentId.SelectSplitType,\n defaultValue: 'Select split type',\n },\n [ContentId.SelectSubjectPlaceholder]: {\n id: ContentId.SelectSubjectPlaceholder,\n defaultValue: 'Select subject',\n },\n [ContentId.SelectTags]: {\n id: ContentId.SelectTags,\n defaultValue: 'Select Tags',\n },\n [ContentId.SelectTemplate]: {\n id: ContentId.SelectTemplate,\n defaultValue: 'Select Template',\n },\n [ContentId.SelectUsersAndGroups]: {\n id: ContentId.SelectUsersAndGroups,\n defaultValue: 'Select Users and Groups',\n },\n [ContentId.SelectValueType]: {\n id: ContentId.SelectValueType,\n defaultValue: 'Select Value Type',\n },\n [ContentId.SelectVariables]: {\n id: ContentId.SelectVariables,\n defaultValue: 'Select Variables',\n },\n [ContentId.SelectVendor]: {\n id: ContentId.SelectVendor,\n defaultValue: 'Select Vendor',\n },\n [ContentId.SelectVendorShowAccounts]: {\n id: ContentId.SelectVendorShowAccounts,\n defaultValue: 'Select a vendor to show the accounts',\n },\n [ContentId.SellAsTicketTypePriority]: {\n id: ContentId.SellAsTicketTypePriority,\n defaultValue: 'Sell as Ticket Type Priority',\n },\n [ContentId.SellerAccount]: {\n id: ContentId.SellerAccount,\n defaultValue: 'Seller Account',\n },\n [ContentId.Section]: {\n id: ContentId.Section,\n defaultValue: 'Section',\n },\n [ContentId.Sections]: {\n id: ContentId.Sections,\n defaultValue: 'Sections',\n },\n [ContentId.SeeAllResultsFor]: {\n id: ContentId.SeeAllResultsFor,\n defaultValue: 'See all results for',\n },\n [ContentId.SelectAccountToSignIn]: {\n id: ContentId.SelectAccountToSignIn,\n defaultValue: 'Select the account to sign-in',\n },\n [ContentId.SelectAccountToSwitch]: {\n id: ContentId.SelectAccountToSwitch,\n defaultValue: 'Select the account to switch to',\n },\n [ContentId.Selected]: {\n id: ContentId.Selected,\n defaultValue: 'Selected',\n },\n [ContentId.SelectYourFilters]: {\n id: ContentId.SelectYourFilters,\n defaultValue: 'Select your filters',\n },\n [ContentId.SearchAndSelectAnEvent]: {\n id: ContentId.SearchAndSelectAnEvent,\n defaultValue: 'Find and select an event.',\n },\n [ContentId.SellerAccount_Admin_Details]: {\n id: ContentId.SellerAccount_Admin_Details,\n defaultValue:\n 'Able to perform account managements (add/remove users and roles, edit marketplace syncs, etc)',\n },\n [ContentId.SellerFee]: {\n id: ContentId.SellerFee,\n defaultValue: 'Seller Fee',\n },\n [ContentId.SellerOwnTickets]: {\n id: ContentId.SellerOwnTickets,\n defaultValue: 'I own these tickets',\n },\n [ContentId.SellerSupportCase]: {\n id: ContentId.SellerSupportCase,\n defaultValue: 'Seller Support Case',\n },\n [ContentId.SellerSupportCase_Create_Details]: {\n id: ContentId.SellerSupportCase_Create_Details,\n defaultValue:\n 'Create a new seller support case and create a new reply for a support case',\n },\n [ContentId.SellerSupportCase_View_Details]: {\n id: ContentId.SellerSupportCase_View_Details,\n defaultValue: 'View existing seller support cases and all the replies',\n },\n [ContentId.SellThroughRate]: {\n id: ContentId.SellThroughRate,\n defaultValue: 'Sell-Through Rate',\n },\n [ContentId.SellThroughRateLowercase]: {\n id: ContentId.SellThroughRateLowercase,\n defaultValue: 'Sell-through rate',\n },\n [ContentId.SellThroughRateSubtitle]: {\n id: ContentId.SellThroughRateSubtitle,\n defaultValue: 'Price and broadcast to meet your targets.',\n },\n [ContentId.SendInhandDateToMarketplace]: {\n id: ContentId.SendInhandDateToMarketplace,\n defaultValue: 'Send In hand Date to Marketplace',\n },\n [ContentId.SetAsPaid]: {\n id: ContentId.SetAsPaid,\n defaultValue: 'Set as Paid',\n },\n [ContentId.SetPriority]: {\n id: ContentId.SetPriority,\n defaultValue: 'Set Priority',\n },\n [ContentId.Settings]: {\n id: ContentId.Settings,\n defaultValue: 'Settings',\n },\n [ContentId.Share]: {\n id: ContentId.Share,\n defaultValue: 'Share',\n },\n [ContentId.ShareReport]: {\n id: ContentId.ShareReport,\n defaultValue: 'Share report',\n },\n [ContentId.Sharing]: {\n id: ContentId.Sharing,\n defaultValue: 'Sharing',\n },\n [ContentId.SharingReportDescription]: {\n id: ContentId.SharingReportDescription,\n defaultValue: 'Add people or groups to share access to this report',\n },\n [ContentId.Shipment]: {\n id: ContentId.Shipment,\n defaultValue: 'Shipment',\n },\n [ContentId.Shipping]: {\n id: ContentId.Shipping,\n defaultValue: 'Shipping',\n },\n [ContentId.ShippingDeadline]: {\n id: ContentId.ShippingDeadline,\n defaultValue: 'Shipping Deadline',\n },\n [ContentId.ShowAdvancedSettings]: {\n id: ContentId.ShowAdvancedSettings,\n defaultValue: 'Show advanced settings',\n },\n [ContentId.ShowAllListings]: {\n id: ContentId.ShowAllListings,\n defaultValue: 'Show All Listings',\n },\n [ContentId.ShownQuantity]: {\n id: ContentId.ShownQuantity,\n defaultValue: 'Shown Quantity',\n },\n [ContentId.ShowParkingTickets]: {\n id: ContentId.ShowParkingTickets,\n defaultValue: 'Show Parking Tickets',\n },\n [ContentId.ShowRelatedListings]: {\n id: ContentId.ShowRelatedListings,\n defaultValue: 'Show Related Listings',\n },\n [ContentId.ShowSimpleSettings]: {\n id: ContentId.ShowSimpleSettings,\n defaultValue: 'Show simple settings...',\n },\n [ContentId.ShowVoidCancelledPurchases]: {\n id: ContentId.ShowVoidCancelledPurchases,\n defaultValue: 'Show Void/Cancelled Purchases',\n },\n [ContentId.SignIn]: {\n id: ContentId.SignIn,\n defaultValue: 'Sign in',\n },\n [ContentId.SignInAgain]: {\n id: ContentId.SignInAgain,\n defaultValue: 'Sign in again',\n },\n [ContentId.SignOut]: {\n id: ContentId.SignOut,\n defaultValue: 'Sign out',\n },\n [ContentId.SignupDate]: {\n id: ContentId.SignupDate,\n defaultValue: 'Signup date',\n },\n [ContentId.Simple]: {\n id: ContentId.Simple,\n defaultValue: 'Simple',\n },\n [ContentId.SinglePayment]: {\n id: ContentId.SinglePayment,\n defaultValue: 'Single Payment',\n },\n [ContentId.SingleValueOnly]: {\n id: ContentId.SingleValueOnly,\n defaultValue: 'Single Value Only',\n },\n [ContentId.SiteTheme]: {\n id: ContentId.SiteTheme,\n defaultValue: 'Site Theme',\n },\n [ContentId.SkipLogic]: {\n id: ContentId.SkipLogic,\n defaultValue: 'Skip Step',\n },\n [ContentId.SMPWallet]: {\n id: ContentId.SMPWallet,\n defaultValue: 'SMPWallet',\n },\n [ContentId.Sold]: {\n id: ContentId.Sold,\n defaultValue: 'Sold',\n },\n [ContentId.SoldATP]: {\n id: ContentId.SoldATP,\n defaultValue: 'Sold ATP',\n },\n [ContentId.SoldAverageTicketPrice]: {\n id: ContentId.SoldAverageTicketPrice,\n defaultValue: 'Sold Average Ticket Price',\n },\n [ContentId.SoldCost]: {\n id: ContentId.SoldCost,\n defaultValue: 'Sold Cost',\n },\n [ContentId.SoldAs]: {\n id: ContentId.SoldAs,\n defaultValue: 'Sold As',\n },\n [ContentId.SoldProceeds]: {\n id: ContentId.SoldProceeds,\n defaultValue: 'Sold Proceeds',\n },\n [ContentId.SoldProfit]: {\n id: ContentId.SoldProfit,\n defaultValue: 'Sold Profit',\n },\n [ContentId.SoldQty]: {\n id: ContentId.SoldQty,\n defaultValue: 'Sold Qty',\n },\n [ContentId.SoldQuantity]: {\n id: ContentId.SoldQuantity,\n defaultValue: 'Sold Quantity',\n },\n [ContentId.SoldSeats]: {\n id: ContentId.SoldSeats,\n defaultValue: 'Sold Seats',\n },\n [ContentId.SoldTicketCost]: {\n id: ContentId.SoldTicketCost,\n defaultValue: 'Sold Ticket Cost',\n },\n [ContentId.SoldTickets]: {\n id: ContentId.SoldTickets,\n defaultValue: 'Sold Tickets',\n },\n [ContentId.SoldToday]: {\n id: ContentId.SoldToday,\n defaultValue: 'Sold Today',\n },\n [ContentId.SoldLast7Days]: {\n id: ContentId.SoldLast7Days,\n defaultValue: 'Sold Last 7 Days',\n },\n [ContentId.SomethingWentWrong]: {\n id: ContentId.SomethingWentWrong,\n defaultValue: 'Something Went Wrong',\n },\n [ContentId.SomethingWentWrongTryAgain]: {\n id: ContentId.SomethingWentWrongTryAgain,\n defaultValue: 'Something went wrong. Please try again!',\n },\n [ContentId.Sort]: {\n id: ContentId.Sort,\n defaultValue: 'Sort',\n },\n [ContentId.SortBy]: {\n id: ContentId.SortBy,\n defaultValue: 'Sort By',\n },\n [ContentId.SortByDate]: {\n id: ContentId.SortByDate,\n defaultValue: EventSort.Date,\n },\n [ContentId.SortByTitle]: {\n id: ContentId.SortByTitle,\n defaultValue: EventSort.MainDisplay,\n },\n [ContentId.SortAtoZ]: {\n id: ContentId.SortAtoZ,\n defaultValue: 'Sort by: A to Z',\n },\n [ContentId.SortZtoA]: {\n id: ContentId.SortZtoA,\n defaultValue: 'Sort by: Z to A',\n },\n [ContentId.SortOldToNew]: {\n id: ContentId.SortOldToNew,\n defaultValue: 'Sort by: Oldest to Newest',\n },\n [ContentId.SortNewToOld]: {\n id: ContentId.SortNewToOld,\n defaultValue: 'Sort by: Newest to Oldest',\n },\n [ContentId.SpecialCharactersNotAllowed]: {\n id: ContentId.SpecialCharactersNotAllowed,\n defaultValue:\n 'Special characters (quotes, brackets) are not allowed for reporting tags',\n },\n [ContentId.SpecificSections]: {\n id: ContentId.SpecificSections,\n defaultValue: 'Specific sections',\n },\n [ContentId.Split]: {\n id: ContentId.Split,\n defaultValue: 'Split',\n },\n [ContentId.SplitListing]: {\n id: ContentId.SplitListing,\n defaultValue: 'Split Listings',\n },\n [ContentId.SplitType]: {\n id: ContentId.SplitType,\n defaultValue: 'Split Type',\n },\n [ContentId.SponsoredListings]: {\n id: ContentId.SponsoredListings,\n defaultValue: 'Sponsored Listings',\n },\n [ContentId.Sports]: {\n id: ContentId.Sports,\n defaultValue: 'Sports',\n },\n [ContentId.SpotifyPopularity]: {\n id: ContentId.SpotifyPopularity,\n defaultValue: 'Spotify Popularity',\n },\n [ContentId.Stakes]: {\n id: ContentId.Stakes,\n defaultValue: 'Stakes',\n },\n [ContentId.Standing]: {\n id: ContentId.Standing,\n defaultValue: 'Standing',\n },\n [ContentId.StandardDeviations]: {\n id: ContentId.StandardDeviations,\n defaultValue: 'Standard Deviations',\n },\n [ContentId.StateProvince]: {\n id: ContentId.StateProvince,\n defaultValue: 'State/Province',\n },\n [ContentId.Status]: {\n id: ContentId.Status,\n defaultValue: 'Status',\n },\n [ContentId.Stop]: {\n id: ContentId.Stop,\n defaultValue: 'Stop',\n },\n [ContentId.STR]: {\n id: ContentId.STR,\n defaultValue: 'STR',\n },\n [ContentId.StrategyName]: {\n id: ContentId.StrategyName,\n defaultValue: 'Strategy name',\n },\n [ContentId.String]: {\n id: ContentId.String,\n defaultValue: 'String',\n },\n [ContentId.StubhubEventIdKnown]: {\n id: ContentId.StubhubEventIdKnown,\n defaultValue: 'Is the Stubhub Event Id Known?',\n },\n [ContentId.StubHubLoginRequired]: {\n id: ContentId.StubHubLoginRequired,\n defaultValue:\n 'The user you entered needs a StubHub login to use this application.',\n },\n [ContentId.SubGenre]: {\n id: ContentId.SubGenre,\n defaultValue: 'Sub-Genre',\n },\n [ContentId.Subject]: {\n id: ContentId.Subject,\n defaultValue: 'Subject',\n },\n [ContentId.Succeeded]: {\n id: ContentId.Succeeded,\n defaultValue: 'Succeeded',\n },\n [ContentId.Success]: {\n id: ContentId.Success,\n defaultValue: 'Success',\n },\n [ContentId.Suggestions]: {\n id: ContentId.Suggestions,\n defaultValue: 'Suggestions',\n },\n [ContentId.Support]: {\n id: ContentId.Support,\n defaultValue: 'Support',\n },\n [ContentId.SupportCaseId]: {\n id: ContentId.SupportCaseId,\n defaultValue: 'Support Case Id',\n },\n [ContentId.SuppressFor1Hour]: {\n id: ContentId.SuppressFor1Hour,\n defaultValue: 'Suppress for one hour',\n },\n [ContentId.SimilarSections]: {\n id: ContentId.SimilarSections,\n defaultValue: 'Similar Sections',\n },\n [ContentId.SuspiciousPriceChange]: {\n id: ContentId.SuspiciousPriceChange,\n defaultValue: 'Suspicious Price Change',\n },\n [ContentId.SuspiciousPriceChangeWarning]: {\n id: ContentId.SuspiciousPriceChangeWarning,\n defaultValue:\n \"You've made a price change that differs more than 25% from the original price. Are you sure?\",\n },\n [ContentId.Summary]: {\n id: ContentId.Summary,\n defaultValue: 'Summary',\n },\n [ContentId.SwapTag]: {\n id: ContentId.SwapTag,\n defaultValue: 'Swap Tag',\n },\n [ContentId.SwapTagValues]: {\n id: ContentId.SwapTagValues,\n defaultValue: 'Swap Tag Values',\n },\n [ContentId.SwapTagValuesAllVisible]: {\n id: ContentId.SwapTagValuesAllVisible,\n defaultValue: 'Swap Tag Values for All Visible Listings',\n },\n [ContentId.SwapTagValuesSelected]: {\n id: ContentId.SwapTagValuesSelected,\n defaultValue: 'Swap Tag Values for Selected',\n },\n [ContentId.SwitchAccount]: {\n id: ContentId.SwitchAccount,\n defaultValue: 'Switch account',\n },\n [ContentId.SyncCenter]: {\n id: ContentId.SyncCenter,\n defaultValue: 'Sync Center',\n },\n [ContentId.SyncWithSystemSettings]: {\n id: ContentId.SyncWithSystemSettings,\n defaultValue: 'Sync with system settings',\n },\n [ContentId.System]: {\n id: ContentId.System,\n defaultValue: 'System',\n },\n [ContentId.Tag]: {\n id: ContentId.Tag,\n defaultValue: 'Tag',\n },\n [ContentId.Tags]: {\n id: ContentId.Tags,\n defaultValue: 'Tags',\n },\n [ContentId.TagsToIncludeInColumns]: {\n id: ContentId.TagsToIncludeInColumns,\n defaultValue: 'Tags to include in columns',\n },\n [ContentId.TakeMyParentListingAnd]: {\n id: ContentId.TakeMyParentListingAnd,\n defaultValue: 'Take my parent listing and:',\n },\n [ContentId.Target]: {\n id: ContentId.Target,\n defaultValue: 'Target',\n },\n [ContentId.TaxExempt]: {\n id: ContentId.TaxExempt,\n defaultValue: 'Tax Exempt',\n },\n [ContentId.TaxPaid]: {\n id: ContentId.TaxPaid,\n defaultValue: 'Tax Paid',\n },\n [ContentId.Text]: {\n id: ContentId.Text,\n defaultValue: 'Text',\n },\n [ContentId.ThanMineAnd]: {\n id: ContentId.ThanMineAnd,\n defaultValue: 'than mine, and',\n },\n [ContentId.Theatre]: {\n id: ContentId.Theatre,\n defaultValue: 'Theatre',\n },\n [ContentId.Theme]: {\n id: ContentId.Theme,\n defaultValue: 'Theme',\n },\n [ContentId.Then]: {\n id: ContentId.Then,\n defaultValue: 'then ',\n },\n [ContentId.ThisEvent]: {\n id: ContentId.ThisEvent,\n defaultValue: 'This Event',\n },\n [ContentId.ThisMonth]: {\n id: ContentId.ThisMonth,\n defaultValue: 'This Month',\n },\n [ContentId.ThisWasTaxExempt]: {\n id: ContentId.ThisWasTaxExempt,\n defaultValue: 'This was tax exempt',\n },\n [ContentId.ThisWeek]: {\n id: ContentId.ThisWeek,\n defaultValue: 'This Week',\n },\n [ContentId.ThisYear]: {\n id: ContentId.ThisYear,\n defaultValue: 'This Year',\n },\n [ContentId.Ticket]: {\n id: ContentId.Ticket,\n defaultValue: 'Ticket',\n },\n [ContentId.TicketGroup]: {\n id: ContentId.TicketGroup,\n defaultValue: 'Ticket Group',\n },\n [ContentId.TicketGroupHasErrors]: {\n id: ContentId.TicketGroupHasErrors,\n defaultValue: 'Ticket Group has one or more invalid inputs.',\n },\n [ContentId.TicketGroups]: {\n id: ContentId.TicketGroups,\n defaultValue: 'Ticket Groups',\n },\n [ContentId.TicketGroups_ViewAll_Details]: {\n id: ContentId.TicketGroups_ViewAll_Details,\n defaultValue: \"View all seller's ticket groups\",\n },\n [ContentId.TicketIdAlreadyInUsed]: {\n id: ContentId.TicketIdAlreadyInUsed,\n defaultValue: 'Warning - ticket ID is already used by another ticket.',\n },\n [ContentId.TicketmasterBarcodeTransferInstruction]: {\n id: ContentId.TicketmasterBarcodeTransferInstruction,\n defaultValue: 'Transfered via API',\n },\n [ContentId.TicketmasterBarcodeTransferViaOneTicketInstruction]: {\n id: ContentId.TicketmasterBarcodeTransferViaOneTicketInstruction,\n defaultValue: \"Transfer using 1Ticket's API ($1 per transfer)\",\n },\n [ContentId.TicketmasterBarcodeTransferViaTradeDeskInstruction]: {\n id: ContentId.TicketmasterBarcodeTransferViaTradeDeskInstruction,\n defaultValue: \"Transfer using Ticketmaster's API ($1 per transfer)\",\n },\n [ContentId.TicketmasterTradeDeskApi]: {\n id: ContentId.TicketmasterTradeDeskApi,\n defaultValue: 'Ticketmaster TradeDesk API',\n },\n [ContentId.Tickets]: {\n id: ContentId.Tickets,\n defaultValue: 'Tickets',\n },\n [ContentId.TicketsAvailable]: {\n id: ContentId.TicketsAvailable,\n defaultValue: 'Tickets Available',\n },\n [ContentId.TicketsListedAndSold]: {\n id: ContentId.TicketsListedAndSold,\n defaultValue: 'Tickets Listed & Sold',\n },\n [ContentId.TicketsOnPlatform]: {\n id: ContentId.TicketsOnPlatform,\n defaultValue: 'Tickets on Platform',\n },\n [ContentId.TicketsPurchased]: {\n id: ContentId.TicketsPurchased,\n defaultValue: 'Tickets Purchased',\n },\n [ContentId.TicketType]: {\n id: ContentId.TicketType,\n defaultValue: 'Ticket Type',\n },\n [ContentId.TicketTypePriority]: {\n id: ContentId.TicketTypePriority,\n defaultValue: 'Ticket Type Priority',\n },\n [ContentId.TicketTypePriorityForSelected]: {\n id: ContentId.TicketTypePriorityForSelected,\n defaultValue: 'Ticket Type Priority for Selected',\n },\n [ContentId.TicketTypePriorityForAll]: {\n id: ContentId.TicketTypePriorityForAll,\n defaultValue: 'Ticket Type Priority for All',\n },\n [ContentId.TicketUrlAlreadyInUsed]: {\n id: ContentId.TicketUrlAlreadyInUsed,\n defaultValue: 'Warning - URL is already used by another ticket.',\n },\n [ContentId.TileView]: {\n id: ContentId.TileView,\n defaultValue: 'Tile View',\n },\n [ContentId.Time]: {\n id: ContentId.Time,\n defaultValue: 'Time',\n },\n [ContentId.TitleName]: {\n id: ContentId.TitleName,\n defaultValue: 'Title/Name',\n },\n [ContentId.To]: {\n id: ContentId.To,\n defaultValue: 'To',\n },\n [ContentId.ToBeListed]: {\n id: ContentId.ToBeListed,\n defaultValue: 'To be listed',\n },\n [ContentId.ToBeDelisted]: {\n id: ContentId.ToBeDelisted,\n defaultValue: 'To be delisted',\n },\n [ContentId.ToDate]: {\n id: ContentId.ToDate,\n defaultValue: 'To Date',\n },\n [ContentId.Today]: {\n id: ContentId.Today,\n defaultValue: 'Today',\n },\n [ContentId.Total]: {\n id: ContentId.Total,\n defaultValue: 'Total',\n },\n /**\n * @deprecated Use `ContentId.TotalWebsitePrice`\n */\n [ContentId.TotalAllInPrice]: {\n id: ContentId.TotalAllInPrice,\n defaultValue: 'Total All In',\n },\n [ContentId.TotalATP]: {\n id: ContentId.TotalATP,\n defaultValue: 'Total ATP',\n },\n [ContentId.TotalCost]: {\n id: ContentId.TotalCost,\n defaultValue: 'Total Cost',\n },\n [ContentId.TotalDeliveryCharge]: {\n id: ContentId.TotalDeliveryCharge,\n defaultValue: 'Total Delivery Charge',\n },\n [ContentId.TotalDue]: {\n id: ContentId.TotalDue,\n defaultValue: 'Total Due',\n },\n [ContentId.TotalGrossProfit]: {\n id: ContentId.TotalGrossProfit,\n defaultValue: 'Total Gross Profit',\n },\n [ContentId.TotalListedQuantity]: {\n id: ContentId.TotalListedQuantity,\n defaultValue: 'Total Listed Quantity',\n },\n /**\n * @deprecated Use `ContentId.TotalProceeds`\n */\n [ContentId.TotalListPrice]: {\n id: ContentId.TotalListPrice,\n defaultValue: 'Total List Price',\n },\n [ContentId.TotalNetProceeds]: {\n id: ContentId.TotalNetProceeds,\n defaultValue: 'Total Net Proceeds',\n },\n [ContentId.TotalOriginal]: {\n id: ContentId.TotalOriginal,\n defaultValue: 'Total Original',\n },\n [ContentId.TotalPerTicketCost]: {\n id: ContentId.TotalPerTicketCost,\n defaultValue: 'Total Per-Ticket Cost',\n },\n [ContentId.TotalProceeds]: {\n id: ContentId.TotalProceeds,\n defaultValue: 'Total Proceeds',\n },\n [ContentId.TotalProfit]: {\n id: ContentId.TotalProfit,\n defaultValue: 'Total profit',\n },\n [ContentId.TotalQty]: {\n id: ContentId.TotalQty,\n defaultValue: 'Total Qty',\n },\n [ContentId.TotalQuantity]: {\n id: ContentId.TotalQuantity,\n defaultValue: 'Total Quantity',\n },\n [ContentId.TotalRemaining]: {\n id: ContentId.TotalRemaining,\n defaultValue: 'Total Remaining',\n },\n [ContentId.TotalSoldCost]: {\n id: ContentId.TotalSoldCost,\n defaultValue: 'Total Sold Cost',\n },\n [ContentId.TotalSoldQuantity]: {\n id: ContentId.TotalSoldQuantity,\n defaultValue: 'Total Sold Quantity',\n },\n [ContentId.TotalTicketCost]: {\n id: ContentId.TotalTicketCost,\n defaultValue: 'Total Ticket Cost',\n },\n [ContentId.TotalPurchaseCost]: {\n id: ContentId.TotalPurchaseCost,\n defaultValue: 'Total Purchase Cost',\n },\n [ContentId.TotalTicketEarnings]: {\n id: ContentId.TotalTicketEarnings,\n defaultValue: 'Total ticket earnings',\n },\n [ContentId.TotalTicketQuantity]: {\n id: ContentId.TotalTicketQuantity,\n defaultValue: 'Total Ticket Quantity',\n },\n [ContentId.TotalTickets]: {\n id: ContentId.TotalTickets,\n defaultValue: 'Total Tickets',\n },\n [ContentId.TotalUnitCost]: {\n id: ContentId.TotalUnitCost,\n defaultValue: 'Total Cost',\n },\n /**\n * @deprecated Use `ContentId.TotalUnsoldProceeds`\n */\n [ContentId.TotalUnsoldListPrice]: {\n id: ContentId.TotalUnsoldListPrice,\n defaultValue: 'Total Unsold List Price',\n },\n [ContentId.TotalUnsoldProceeds]: {\n id: ContentId.TotalUnsoldProceeds,\n defaultValue: 'Total Unsold Proceeds',\n },\n [ContentId.TotalUnsoldQuantity]: {\n id: ContentId.TotalUnsoldQuantity,\n defaultValue: 'Total Unsold Quantity',\n },\n [ContentId.TotalValueListed]: {\n id: ContentId.TotalValueListed,\n defaultValue: 'Total Value Listed',\n },\n [ContentId.TotalWebsitePrice]: {\n id: ContentId.TotalWebsitePrice,\n defaultValue: 'Total Website Price',\n },\n [ContentId.TradeDeskResetSummaryTitle]: {\n id: ContentId.TradeDeskResetSummaryTitle,\n defaultValue: 'Your Ticketmaster integration needs to be updated.',\n },\n [ContentId.TradeDeskResetSummaryBody]: {\n id: ContentId.TradeDeskResetSummaryBody,\n defaultValue:\n 'Ticketmaster recently changed their account management and token generation process for the TradeDesk API. Take the following steps to ensure your Ticketmaster integration continues to work.',\n },\n [ContentId.TradeDeskResetInstructionsStep1]: {\n id: ContentId.TradeDeskResetInstructionsStep1,\n defaultValue: 'Request password reset code for your TradeDesk account:',\n },\n [ContentId.TradeDeskResetInstructionsStep2]: {\n id: ContentId.TradeDeskResetInstructionsStep2,\n defaultValue: 'Enter reset code received via your email:',\n },\n [ContentId.TradeDeskResetInstructionsStep3]: {\n id: ContentId.TradeDeskResetInstructionsStep3,\n defaultValue: 'Renew your TradeDesk API access token:',\n },\n [ContentId.TradeDeskResetInstructionsStep4]: {\n id: ContentId.TradeDeskResetInstructionsStep4,\n defaultValue: \"Done! We'll handle the rest.\",\n },\n [ContentId.Transactions]: {\n id: ContentId.Transactions,\n defaultValue: 'Transactions',\n },\n [ContentId.Transfer]: {\n id: ContentId.Transfer,\n defaultValue: 'Transfer',\n },\n [ContentId.TransferAccepted]: {\n id: ContentId.TransferAccepted,\n defaultValue: 'Transfer Accepted',\n },\n [ContentId.TransferExpired]: {\n id: ContentId.TransferExpired,\n defaultValue: 'Transfer Expired',\n },\n [ContentId.TransferId]: {\n id: ContentId.TransferId,\n defaultValue: 'Transfer Id',\n },\n [ContentId.TransferIdNote]: {\n id: ContentId.TransferIdNote,\n defaultValue:\n 'Use if you purchased resale tickets. Specify where the tickets will get delivered to so you can find them later. Note: you might not know your Transfer Id until the transfer has happened.',\n },\n [ContentId.TransferFrom]: {\n id: ContentId.TransferFrom,\n defaultValue: 'Transfer From',\n },\n [ContentId.TransferProofId]: {\n id: ContentId.TransferProofId,\n defaultValue: 'Transfer or Invoice ID',\n },\n [ContentId.TransferSent]: {\n id: ContentId.TransferSent,\n defaultValue: 'Transfer Sent',\n },\n [ContentId.TransferTicketsIns]: {\n id: ContentId.TransferTicketsIns,\n defaultValue:\n 'Transfer tickets to your buyer & take a screenshot of the confirmation',\n },\n [ContentId.TransferTicketsChoice]: {\n id: ContentId.TransferTicketsChoice,\n defaultValue:\n 'How do you want to prove that you have transferred tickets to the buyer?',\n },\n [ContentId.TransferTo]: {\n id: ContentId.TransferTo,\n defaultValue: 'Transfer To',\n },\n [ContentId.TrueFalse]: {\n id: ContentId.TrueFalse,\n defaultValue: 'True/False',\n },\n [ContentId.TurnOffReporting]: {\n id: ContentId.TurnOffReporting,\n defaultValue: 'Turn off reporting',\n },\n [ContentId.TurnOffReportingWarning]: {\n id: ContentId.TurnOffReportingWarning,\n defaultValue:\n 'One or more tags are displayed in some of the tables but being turned off. Are you sure?',\n },\n [ContentId.Type]: {\n id: ContentId.Type,\n defaultValue: 'Type',\n },\n [ContentId.UnableToRetrieveBuyersInfo]: {\n id: ContentId.UnableToRetrieveBuyersInfo,\n defaultValue: \"Unable to retrieve buyer's information\",\n },\n [ContentId.Unbroadcast]: {\n id: ContentId.Unbroadcast,\n defaultValue: 'Unbroadcast',\n },\n [ContentId.UnbroadcastAll]: {\n id: ContentId.UnbroadcastAll,\n defaultValue: 'Unbroadcast All',\n },\n [ContentId.UnbroadcastAllVisible]: {\n id: ContentId.UnbroadcastAllVisible,\n defaultValue: 'Unbroadcast All Visible Listings',\n },\n [ContentId.Unbroadcasted]: {\n id: ContentId.Unbroadcasted,\n defaultValue: 'Unbroadcasted',\n },\n [ContentId.Uncategorized]: {\n id: ContentId.Uncategorized,\n defaultValue: 'Uncategorized',\n },\n [ContentId.Undeliverable]: {\n id: ContentId.Undeliverable,\n defaultValue: 'Undeliverable',\n },\n [ContentId.UndercutAmount]: {\n id: ContentId.UndercutAmount,\n defaultValue: 'Undercut Amount',\n },\n [ContentId.UndercutMode]: {\n id: ContentId.UndercutMode,\n defaultValue: 'Undercut Mode',\n },\n [ContentId.UndercutAbsoluteAmount]: {\n id: ContentId.UndercutAbsoluteAmount,\n defaultValue: 'Undercut Absolute Amount',\n },\n [ContentId.UndercutAbsoluteOrRelativeAmountMustBeSetError]: {\n id: ContentId.UndercutAbsoluteOrRelativeAmountMustBeSetError,\n defaultValue: 'Absolute or Relative Amount must be set',\n },\n [ContentId.UnderCutModePrompt]: {\n id: ContentId.UnderCutModePrompt,\n defaultValue: 'How to determine price?',\n },\n [ContentId.UndercutRelativeAmount]: {\n id: ContentId.UndercutRelativeAmount,\n defaultValue: 'Undercut Relative Amount',\n },\n [ContentId.Ungroup]: {\n id: ContentId.Ungroup,\n defaultValue: 'Ungroup',\n },\n [ContentId.UngroupListingsAll]: {\n id: ContentId.UngroupListingsAll,\n defaultValue: 'Ungroup All Listings',\n },\n [ContentId.UngroupListingsAllVisible]: {\n id: ContentId.UngroupListingsAllVisible,\n defaultValue: 'Ungroup All Visible Listings',\n },\n [ContentId.UngroupListingsConfirmation]: {\n id: ContentId.UngroupListingsConfirmation,\n defaultValue:\n 'This action will remove all grouped listings from their groups and any resulting empty group will be deleted. Are you sure?',\n },\n [ContentId.UngroupListingsSelected]: {\n id: ContentId.UngroupListingsSelected,\n defaultValue: 'Ungroup Selected Listings',\n },\n [ContentId.UniqueId]: {\n id: ContentId.UniqueId,\n defaultValue: 'Unique Id',\n },\n [ContentId.UnitCost]: {\n id: ContentId.UnitCost,\n defaultValue: 'Unit Cost',\n },\n [ContentId.Unpaid]: {\n id: ContentId.Unpaid,\n defaultValue: PointOfSalePaymentState.Unpaid,\n },\n [ContentId.UnableToProcess]: {\n id: ContentId.UnableToProcess,\n defaultValue: 'Unable To Process',\n },\n [ContentId.Unread]: {\n id: ContentId.Unread,\n defaultValue: 'Unread',\n },\n [ContentId.UnbroadcastSelected]: {\n id: ContentId.UnbroadcastSelected,\n defaultValue: 'Unbroadcast Selected',\n },\n [ContentId.UnsavedChanges]: {\n id: ContentId.UnsavedChanges,\n defaultValue: 'Unsaved Changes',\n },\n [ContentId.UnsavedChangesWarning]: {\n id: ContentId.UnsavedChangesWarning,\n defaultValue: 'Leaving now will lose your progress. Continue?',\n },\n [ContentId.Unset]: {\n id: ContentId.Unset,\n defaultValue: 'Unset',\n },\n [ContentId.UnsoldCost]: {\n id: ContentId.UnsoldCost,\n defaultValue: 'Unsold Cost',\n },\n [ContentId.UnsoldQty]: {\n id: ContentId.UnsoldQty,\n defaultValue: 'Unsold Qty',\n },\n [ContentId.UnsoldQuantity]: {\n id: ContentId.UnsoldQuantity,\n defaultValue: 'Unsold Quantity',\n },\n [ContentId.UnsoldTickets]: {\n id: ContentId.UnsoldTickets,\n defaultValue: 'Unsold Tickets',\n },\n [ContentId.UpdateCurrency]: {\n id: ContentId.UpdateCurrency,\n defaultValue: 'Update Currency',\n },\n [ContentId.UpdatePurchaseCurrencyWarning]: {\n id: ContentId.UpdatePurchaseCurrencyWarning,\n defaultValue:\n \"Updating currency won't trigger automatic conversion. Please adjust amounts manually if needed. Continue?\",\n },\n [ContentId.UpdateSeatingInformation]: {\n id: ContentId.UpdateSeatingInformation,\n defaultValue: 'Update seating information',\n },\n [ContentId.Upload]: {\n id: ContentId.Upload,\n defaultValue: 'Upload',\n },\n [ContentId.UploadBarcodes]: {\n id: ContentId.UploadBarcodes,\n defaultValue: 'Upload Barcodes',\n },\n [ContentId.UploadETickets]: {\n id: ContentId.UploadETickets,\n defaultValue: 'Upload E-Tickets',\n },\n [ContentId.UploadFailureMessage]: {\n id: ContentId.UploadFailureMessage,\n defaultValue: 'Upload failed',\n },\n [ContentId.UploadProof]: {\n id: ContentId.UploadProof,\n defaultValue: 'Upload Proof',\n },\n [ContentId.UploadProofOfPurchase]: {\n id: ContentId.UploadProofOfPurchase,\n defaultValue: 'Upload Proof of Purchase',\n },\n [ContentId.UploadQRCodes]: {\n id: ContentId.UploadQRCodes,\n defaultValue: 'Upload QR Codes',\n },\n [ContentId.UploadSeatScoreFile]: {\n id: ContentId.UploadSeatScoreFile,\n defaultValue: 'Upload Seat Score File',\n },\n [ContentId.UploadPurchaseFile]: {\n id: ContentId.UploadPurchaseFile,\n defaultValue: 'Upload Purchase File',\n },\n [ContentId.UploadTicketUrls]: {\n id: ContentId.UploadTicketUrls,\n defaultValue: 'Upload Ticket URLs',\n },\n [ContentId.UploadTicketIds]: {\n id: ContentId.UploadTicketIds,\n defaultValue: 'Upload Ticket IDs',\n },\n [ContentId.UrlsToAcceptTickets]: {\n id: ContentId.UrlsToAcceptTickets,\n defaultValue: 'URLs where the buyer accepts the tickets.',\n },\n [ContentId.UseExistingRoleAsTemplateTitle]: {\n id: ContentId.UseExistingRoleAsTemplateTitle,\n defaultValue: 'Use existing role as template',\n },\n [ContentId.UseExistingRoleAsTemplateExplanation]: {\n id: ContentId.UseExistingRoleAsTemplateExplanation,\n defaultValue:\n 'Use an existing role as a template for your new role. Customerize and modify after',\n },\n [ContentId.UserManagement]: {\n id: ContentId.UserManagement,\n defaultValue: 'User Management',\n },\n [ContentId.UserNotFound]: {\n id: ContentId.UserNotFound,\n defaultValue: 'User not found',\n },\n [ContentId.Users]: {\n id: ContentId.Users,\n defaultValue: 'Users',\n },\n [ContentId.UsersWithAccess]: {\n id: ContentId.UsersWithAccess,\n defaultValue: 'Users with access',\n },\n [ContentId.UseThisAnswerForNext24Hours]: {\n id: ContentId.UseThisAnswerForNext24Hours,\n defaultValue: 'Use this answer for the next 24 hours',\n },\n [ContentId.Value]: {\n id: ContentId.Value,\n defaultValue: 'Value',\n },\n [ContentId.ValueDoesNotSatisfyType]: {\n id: ContentId.ValueDoesNotSatisfyType,\n defaultValue: 'Value does not satisfy type.',\n },\n [ContentId.ValueType]: {\n id: ContentId.ValueType,\n defaultValue: 'Value Type',\n },\n [ContentId.Variables]: {\n id: ContentId.Variables,\n defaultValue: 'Variables',\n },\n [ContentId.VariablesToIncludeInColumns]: {\n id: ContentId.VariablesToIncludeInColumns,\n defaultValue: 'Variables to include in columns',\n },\n [ContentId.Vendor]: {\n id: ContentId.Vendor,\n defaultValue: 'Vendor',\n },\n [ContentId.VendorAccount]: {\n id: ContentId.VendorAccount,\n defaultValue: 'Vendor Account',\n },\n [ContentId.VendorAccounts]: {\n id: ContentId.VendorAccounts,\n defaultValue: 'Vendor Accounts',\n },\n [ContentId.Vendors]: {\n id: ContentId.Vendors,\n defaultValue: 'Vendors',\n },\n [ContentId.Venue]: {\n id: ContentId.Venue,\n defaultValue: 'Venue',\n },\n [ContentId.VenueConfigs]: {\n id: ContentId.VenueConfigs,\n defaultValue: 'Venue Configurations',\n },\n [ContentId.VenueMapWelcomeMessage]: {\n id: ContentId.VenueMapWelcomeMessage,\n defaultValue: 'Welcome to StubHub Active Maps',\n },\n [ContentId.VenueName]: {\n id: ContentId.VenueName,\n defaultValue: 'Venue Name',\n },\n [ContentId.Venues]: {\n id: ContentId.Venues,\n defaultValue: EventGroupingType.Venue,\n },\n [ContentId.VenueWideQualityScore]: {\n id: ContentId.VenueWideQualityScore,\n defaultValue: 'Venue Wide - Quality Score',\n },\n [ContentId.VenueWideInSectionPriority]: {\n id: ContentId.VenueWideInSectionPriority,\n defaultValue: 'Venue Wide - In-section Priority',\n },\n [ContentId.VenueWideQualityScoreSameZone]: {\n id: ContentId.VenueWideQualityScoreSameZone,\n defaultValue: 'Venue Wide - Quality Score (Same Zone)',\n },\n [ContentId.VerifyBuyerInfo]: {\n id: ContentId.VerifyBuyerInfo,\n defaultValue:\n 'Verify the name and email of the buyer you will transfer the tickets to.',\n },\n [ContentId.VeryAggressive]: {\n id: ContentId.VeryAggressive,\n defaultValue: 'Very Aggressive (1sd)',\n },\n [ContentId.View]: {\n id: ContentId.View,\n defaultValue: 'View',\n },\n [ContentId.ViewAllAccessiblePermissions]: {\n id: ContentId.ViewAllAccessiblePermissions,\n defaultValue: 'View all accessible permissions',\n },\n [ContentId.ViewComps]: {\n id: ContentId.ViewComps,\n defaultValue: 'View Comps',\n },\n [ContentId.ViewDetails]: {\n id: ContentId.ViewDetails,\n defaultValue: 'View Details',\n },\n [ContentId.ViewBarcodes]: {\n id: ContentId.ViewBarcodes,\n defaultValue: 'View Barcodes',\n },\n [ContentId.ViewDuplicates]: {\n id: ContentId.ViewDuplicates,\n defaultValue: 'View Duplicates',\n },\n [ContentId.ViewEditabilityDescription]: {\n id: ContentId.ViewEditabilityDescription,\n defaultValue: 'User can see the filter has been set, but cannot edit',\n },\n [ContentId.ViewEmailDetails]: {\n id: ContentId.ViewEmailDetails,\n defaultValue: 'View email details',\n },\n [ContentId.ViewETickets]: {\n id: ContentId.ViewETickets,\n defaultValue: 'View E-Tickets',\n },\n [ContentId.ViewETicketUrls]: {\n id: ContentId.ViewETicketUrls,\n defaultValue: 'View E-Ticket URLs',\n },\n [ContentId.ViewEventMap]: {\n id: ContentId.ViewEventMap,\n defaultValue: 'View event map',\n },\n [ContentId.ViewInventory]: {\n id: ContentId.ViewInventory,\n defaultValue: 'View Inventory',\n },\n [ContentId.ViewPurchase]: {\n id: ContentId.ViewPurchase,\n defaultValue: 'View Purchase',\n },\n [ContentId.ViewQRCodes]: {\n id: ContentId.ViewQRCodes,\n defaultValue: 'View QR Codes',\n },\n [ContentId.ViewSale]: {\n id: ContentId.ViewSale,\n defaultValue: 'View Sale',\n },\n [ContentId.ViewSales]: {\n id: ContentId.ViewSales,\n defaultValue: 'View Sales',\n },\n [ContentId.ViewTicketIds]: {\n id: ContentId.ViewTicketIds,\n defaultValue: 'View Ticket IDs',\n },\n [ContentId.ViewTransferProof]: {\n id: ContentId.ViewTransferProof,\n defaultValue: 'View Transfer Proof',\n },\n [ContentId.ViewTransferTicket]: {\n id: ContentId.ViewTransferTicket,\n defaultValue: 'View Transfer Ticket',\n },\n [ContentId.ViewWallet]: {\n id: ContentId.ViewWallet,\n defaultValue: 'View Wallet',\n },\n [ContentId.ViewZoneMap]: {\n id: ContentId.ViewZoneMap,\n defaultValue: 'View zone map',\n },\n [ContentId.Visibility]: {\n id: ContentId.Visibility,\n defaultValue: 'Visibility',\n },\n [ContentId.Visible]: {\n id: ContentId.Visible,\n defaultValue: 'Visible',\n },\n [ContentId.Void]: {\n id: ContentId.Void,\n defaultValue: 'Void',\n },\n [ContentId.VoidBulkPurchaseWarning]: {\n id: ContentId.VoidBulkPurchaseWarning,\n defaultValue:\n 'Are you sure you want to void the selected purchase order(s)? This action is reversible. Associated sales will be deallocated and moved to Pending Confirmation.',\n },\n [ContentId.VoidPurchase]: {\n id: ContentId.VoidPurchase,\n defaultValue: 'Void Purchase',\n },\n [ContentId.VoidPurchaseDescription]: {\n id: ContentId.VoidPurchaseDescription,\n defaultValue:\n 'Use if the purchase was created in error. Related tickets and payments will be removed.',\n },\n [ContentId.VoidSinglePurchaseWarning]: {\n id: ContentId.VoidSinglePurchaseWarning,\n defaultValue:\n 'Are you sure you want to void this purchase order? This action is reversible. Associated sales will be deallocated and moved to Pending Confirmation.',\n },\n [ContentId.Wallet]: {\n id: ContentId.Wallet,\n defaultValue: 'Wallet',\n },\n [ContentId.WasTaxExempt]: {\n id: ContentId.WasTaxExempt,\n defaultValue: 'Was Tax Exempt',\n },\n [ContentId.Wasted]: {\n id: ContentId.Wasted,\n defaultValue: 'Wasted',\n },\n [ContentId.WastedCost]: {\n id: ContentId.WastedCost,\n defaultValue: 'Wasted Cost',\n },\n [ContentId.WastedQty]: {\n id: ContentId.WastedQty,\n defaultValue: 'Wasted Qty',\n },\n [ContentId.WastedTickets]: {\n id: ContentId.WastedTickets,\n defaultValue: 'Wasted Tickets',\n },\n [ContentId.WasteSale]: {\n id: ContentId.WasteSale,\n defaultValue: 'Waste Sale',\n },\n [ContentId.WasteTickets]: {\n id: ContentId.WasteTickets,\n defaultValue: 'Waste Tickets',\n },\n [ContentId.WasteUnsoldTickets]: {\n id: ContentId.WasteUnsoldTickets,\n defaultValue: 'Waste unsold tickets',\n },\n [ContentId.Weather]: {\n id: ContentId.Weather,\n defaultValue: 'Wasted Tickets',\n },\n [ContentId.Webhook_View_Details]: {\n id: ContentId.Webhook_View_Details,\n defaultValue: 'Ability to view Webhook',\n },\n [ContentId.Webhook_Create_Details]: {\n id: ContentId.Webhook_Create_Details,\n defaultValue: 'Ability to create Webhook',\n },\n [ContentId.Webhook_Edit_Details]: {\n id: ContentId.Webhook_Edit_Details,\n defaultValue: 'Ability to edit Webhook',\n },\n [ContentId.Website]: {\n id: ContentId.Website,\n defaultValue: 'Website',\n },\n [ContentId.WebsiteFloor]: {\n id: ContentId.WebsiteFloor,\n defaultValue: 'Website Price Floor',\n },\n [ContentId.WebsiteCeiling]: {\n id: ContentId.WebsiteCeiling,\n defaultValue: 'Website Price Ceiling',\n },\n [ContentId.WebsitePrice]: {\n id: ContentId.WebsitePrice,\n defaultValue: 'Website Price',\n },\n [ContentId.Week]: {\n id: ContentId.Week,\n defaultValue: 'Week',\n },\n [ContentId.WeekOfYear]: {\n id: ContentId.WeekOfYear,\n defaultValue: 'Week of Year',\n },\n [ContentId.Weeks]: {\n id: ContentId.Weeks,\n defaultValue: 'Weeks',\n },\n [ContentId.WhatIsAPlacholder]: {\n id: ContentId.WhatIsAPlacholder,\n defaultValue: 'What is a Placeholder.',\n },\n [ContentId.WhatIsASeatSaver]: {\n id: ContentId.WhatIsASeatSaver,\n defaultValue: 'What is a Seat Saver?',\n },\n [ContentId.WhatSeatToFulfill]: {\n id: ContentId.WhatSeatToFulfill,\n defaultValue: 'What seats do you want to fulfill with this order?',\n },\n [ContentId.WhatsNew]: {\n id: ContentId.WhatsNew,\n defaultValue: \"What's New\",\n },\n [ContentId.WhatTicketsDidYouBuy]: {\n id: ContentId.WhatTicketsDidYouBuy,\n defaultValue: 'What tickets did you buy?',\n },\n [ContentId.WhenAndWhere]: {\n id: ContentId.WhenAndWhere,\n defaultValue: 'When & Where',\n },\n [ContentId.WhereTicketsWerePurchased]: {\n id: ContentId.WhereTicketsWerePurchased,\n defaultValue: 'Where did you buy your tickets?',\n },\n [ContentId.WhenWhereWho]: {\n id: ContentId.WhenWhereWho,\n defaultValue: 'When, Where, Who',\n },\n [ContentId.WholeNumber]: {\n id: ContentId.WholeNumber,\n defaultValue: 'Whole Number',\n },\n [ContentId.Widgets]: {\n id: ContentId.Widgets,\n defaultValue: 'Widgets',\n },\n [ContentId.WillCall]: {\n id: ContentId.WillCall,\n defaultValue: 'Will Call',\n },\n [ContentId.WitheldFunds]: {\n id: ContentId.WitheldFunds,\n defaultValue: 'Witheld Funds',\n },\n [ContentId.Worse]: {\n id: ContentId.Worse,\n defaultValue: 'worse',\n },\n [ContentId.WrongTicketsReturnShippingCost]: {\n id: ContentId.WrongTicketsReturnShippingCost,\n defaultValue: 'Wrong Tickets Return Shipping Cost',\n },\n [ContentId.WrongTrackingNumber]: {\n id: ContentId.WrongTrackingNumber,\n defaultValue: 'Wrong Tracking Number',\n },\n [ContentId.Yes]: {\n id: ContentId.Yes,\n defaultValue: 'Yes',\n },\n [ContentId.YesToSome]: {\n id: ContentId.YesToSome,\n defaultValue: 'Yes to Some',\n },\n [ContentId.YourAutoPriceResults]: {\n id: ContentId.YourAutoPriceResults,\n defaultValue: 'Your auto price results',\n },\n [ContentId.YourBuyer]: {\n id: ContentId.YourBuyer,\n defaultValue: 'Your Buyer',\n },\n [ContentId.YoureCheaper]: {\n id: ContentId.YoureCheaper,\n defaultValue: \"You're cheaper\",\n },\n [ContentId.YoureMoreExpensive]: {\n id: ContentId.YoureMoreExpensive,\n defaultValue: \"You're more expensive\",\n },\n [ContentId.YourListing]: {\n id: ContentId.YourListing,\n defaultValue: 'Your Listing',\n },\n [ContentId.YourSale]: {\n id: ContentId.YourSale,\n defaultValue: 'Your Sale',\n },\n [ContentId.YourSaleMetricsPart1]: {\n id: ContentId.YourSaleMetricsPart1,\n defaultValue: 'Your sales stats for',\n },\n [ContentId.YourStats]: {\n id: ContentId.YourStats,\n defaultValue: 'Your Stats',\n },\n [ContentId.YourSummaryMessage]: {\n id: ContentId.YourSummaryMessage,\n defaultValue: 'Below is your summary for today',\n },\n [ContentId.YourTickets]: {\n id: ContentId.YourTickets,\n defaultValue: 'Your Tickets',\n },\n [ContentId.Zone]: {\n id: ContentId.Zone,\n defaultValue: 'Zone',\n },\n [ContentId.ZoneMap]: {\n id: ContentId.ZoneMap,\n defaultValue: 'Zone Map',\n },\n [ContentId.ZoneMapDescription]: {\n id: ContentId.ZoneMapDescription,\n defaultValue:\n \"The Zone map is used when comping and grouping listings. Use StubHub's default or configure your own zone map below\",\n },\n [ContentId.Zones]: {\n id: ContentId.Zones,\n defaultValue: 'Zones',\n },\n [ContentId.Zoom]: {\n id: ContentId.Zoom,\n defaultValue: 'Zoom',\n },\n [ContentId.ZoomInstruction]: {\n id: ContentId.ZoomInstruction,\n defaultValue: 'Pinch or double tap to zoom.',\n },\n [ContentId.ZtoA]: {\n id: ContentId.ZtoA,\n defaultValue: 'Z to A',\n },\n [ContentId.ZtoAArrow]: {\n id: ContentId.ZtoAArrow,\n defaultValue: 'ZA ↓',\n },\n};\n","// Please keep this enum in alphabetical order\nexport enum FormatContentId {\n ActivityLogChangeFromTo = 'cid$#3070963#',\n ActivityLogChangeFrom = 'cid$#3201701#',\n ActivityLogChangeTo = 'cid$#3201702#',\n AddAnother = 'cid$#3408221#',\n AndXMore = 'cid$#2982718#',\n ApplyFilterToReduceCountsToSeeData = 'cid$#3543237#',\n ApplyToAllEventsConfirmation = 'cid$#3361820#',\n BulkEditMaxItemPreviewDisplayMessage = 'cid$#3811638#',\n BulkEditSkippedItemsPrompt = 'cid$#3811639#',\n ClassifyAs = 'cid$#3373032#',\n CompletedNSecondsAgo = 'cid$#____CompletedNSecondsAgo#',\n CompletedNMinutesAgo = 'cid$#____CompletedNMinutesAgo#',\n CompletedNHoursAgo = 'cid$#____CompletedNHoursAgo#',\n CopyOf = 'cid$#3512120#',\n CouldNotFindListingId = 'cid$#3037606#',\n CouldNotFindOrderId = 'cid$#3037607#',\n CouldNotFindSaleId = 'cid$#2977369#',\n DaysBeforeEvent = 'cid$#3266231#',\n DuplicateListingDetails = 'cid$#3543238#',\n DuplicatingSeats = 'cid$#2975370#',\n EmailAddressFrom = 'cid$#3261278#',\n EmailAddressTo = 'cid$#3261279#',\n EmptyContent = '' /* Used for useContent with an optional content-id */,\n EventsSelected = 'cid$#3361821#',\n ExtraBarcodes = 'cid$#2972953#',\n ExtraTicketIds = 'cid$#3389420#',\n ExtraTicketUrls = 'cid$#3389421#',\n Filled = 'cid$#2971998#',\n FirstTimeVenueEventSetup = 'cid$#3811640#',\n FulfilledExternalMarketplace = 'cid$#3070964#',\n GoTo = 'cid$#3172497#',\n HurdleN = 'cid$#3811641#',\n InNDays = 'cid$#2993455#',\n InNHours = 'cid$#3008672#',\n InNMinutes = 'cid$#3008673#',\n InvalidTagCharacter = 'cid$#3373033#',\n ItemsSelected = 'cid$#3195388#',\n LastNDays = 'cid$#2992158#',\n LastNHours = 'cid$#3008674#',\n LastNMinutes = 'cid$#3008675#',\n LastNMonths = 'cid$#3578114#',\n ListingInUKNotification = 'cid$#3172498',\n LoadingListingId = 'cid$#3037602#',\n LoadingOrderId = 'cid$#3037604#',\n LoadingSaleId = 'cid$#2983916#',\n Margin = 'cid$#2971997#',\n MarketplaceListings = 'cid$#_____MarketplaceListings#',\n MaxAllowedFileSizeMb = 'cid$#3678672#',\n MaxReportSizeWarningMessage = 'cid$#3678673#',\n MedianPriceWarning = 'cid$#____MedianPriceWarning#',\n MinDiscountContent = 'cid$#____MinDiscountContent#',\n MissingBarcodes = 'cid$#2972954#',\n MissingTicketIds = 'cid$#3389422#',\n MissingTicketUrls = 'cid$#3389423#',\n NCharactersRemaining = 'cid$#3512121#',\n NCompleted = 'cid$#3373034#',\n NFailed = 'cid$#3373035#',\n NIncreaseBy = 'cid$#3172500#',\n NDays = 'cid$#3008676#',\n NDaysBefore = 'cid$#3008669#',\n NHours = 'cid$#3008677#',\n NHoursBefore = 'cid$#3008670#',\n NMinutes = 'cid$#3008678#',\n NMinutesBefore = 'cid$#3008671#',\n NoDataAvailable = 'cid$#3045423#',\n NotificationTypeListingBroadcastFailed = 'cid$#3180468#',\n NotificationTypeListingUnbroadcastFailed = 'cid$#3180475#',\n NotificationTypeListingUpdateAllInPriceFailed = 'cid$#3180469#',\n NotificationTypeListingUpdateInHandDateFailed = 'cid$#3180470#',\n NotificationTypeListingUpdateSplitTypeFailed = 'cid$#3180471#',\n NotificationTypeListingUpdateTicketTypeFailed = 'cid$#3180472#',\n NotificationTypeListingUpdateUnitNetProceedsFailed = 'cid$#3180474#',\n NotificationTypeSellerSupportCaseNewReply = 'cid$#3180476#',\n NotUnique = 'cid$#3110513#',\n NSelected = 'cid$#____NSelected#',\n NSelectedSections = 'cid$#3389424#',\n NUpdated = 'cid$#3811642#',\n NWarnings = 'cid$#3678674#',\n OnlyForMarketplaces = 'cid$#3811643#',\n PacksOf = 'cid$#3543239#',\n PageNum = 'cid$#2975357#',\n PercentageRelativeTo = 'cid$#3432394#',\n ProofOfPurchasedRequiredDetailMessage = 'cid$#3512122#',\n RequestState = 'cid$#3512123#',\n Row = 'cid$#3261280#',\n RowRangeInputError = 'cid$#3811644#',\n SalesForEditTickets = 'cid$#3678675#',\n SalesForRemovedTickets = 'cid$#3678676#',\n SearchingForListingId = 'cid$#3037603#',\n SearchingForOrderId = 'cid$#3037605#',\n SearchingForSaleId = 'cid$#2977368#',\n SearchItem = 'cid$#2973458#',\n SearchResultPick = 'cid$#2983917#',\n SeatAllocationChangeWarning = 'cid$#3089846#',\n SeatNumber = 'cid$#2972034#',\n Section = 'cid$#3261281#',\n ShareQuoted = 'cid$#3432395#',\n SwitchTo = 'cid$#3811645#',\n TakeMeThereInSeconds = 'cid$#3543240#',\n TheseAreThePastSalesOnTheWebsiteAndApp = 'cid$#3432396#',\n TicketCount = 'cid$#3261282#',\n TicketNumber = 'cid$#2975378#',\n TicketPricePercentile = 'cid$#3811646#',\n TicketTypePriority = 'cid$#3243235#',\n TransactionsLastNHour = 'cid$#____TransactionsLastNHour#',\n TransactionsLastNDay = 'cid$#____TransactionsLastNDay#',\n Uploading = 'cid$#2975358#',\n UpToXTagsCanBeIncluded = 'cid$#3408222#',\n UrlNumber = 'cid$#2973462#',\n VisitsLastNHour = 'cid$#____VisitsLastNHour#',\n VisitsLastNDay = 'cid$#____VisitsLastNDay#',\n WelcomeUserMessage = 'cid$#2992157#',\n WillDeliverToSecondaryAccount = 'cid$#3261283#',\n YourSaleMetricsPart2 = 'cid$#2992159#',\n YourSaleWithStatus = 'cid$#2992160#',\n}\n","import { ContentIdAndDefaultValue } from 'src/contexts/ContentContext';\n\nimport { FormatContentId } from './formatContentId';\n\n// Please keep this map in alphabetical order\nexport const FormatContentIds: Record<\n FormatContentId,\n ContentIdAndDefaultValue\n> = {\n [FormatContentId.ActivityLogChangeFromTo]: {\n id: FormatContentId.ActivityLogChangeFromTo,\n defaultValue: '{0} changed from {1} to {2}',\n },\n [FormatContentId.ActivityLogChangeFrom]: {\n id: FormatContentId.ActivityLogChangeFrom,\n defaultValue: '{0} changed from {1} to nothing.',\n },\n [FormatContentId.ActivityLogChangeTo]: {\n id: FormatContentId.ActivityLogChangeTo,\n defaultValue: '{0} changed to {1}',\n },\n [FormatContentId.AddAnother]: {\n id: FormatContentId.AddAnother,\n defaultValue: 'Add Another {0}',\n },\n [FormatContentId.AndXMore]: {\n id: FormatContentId.AndXMore,\n defaultValue: '& {0} more',\n },\n [FormatContentId.ApplyFilterToReduceCountsToSeeData]: {\n id: FormatContentId.ApplyFilterToReduceCountsToSeeData,\n defaultValue:\n 'Your current filter returns more than {0} items. Please select additional filters to view your data.',\n },\n [FormatContentId.ApplyToAllEventsConfirmation]: {\n id: FormatContentId.ApplyToAllEventsConfirmation,\n defaultValue:\n 'Do you want to apply the heat map to all {0} {1} events at {2} or only to this event?',\n },\n [FormatContentId.BulkEditMaxItemPreviewDisplayMessage]: {\n id: FormatContentId.BulkEditMaxItemPreviewDisplayMessage,\n defaultValue: 'Only a maximum of {0} of {1} is displayed for preview.',\n },\n [FormatContentId.BulkEditSkippedItemsPrompt]: {\n id: FormatContentId.BulkEditSkippedItemsPrompt,\n defaultValue:\n '{0} items were skipped because their associated entities were changed. Click Retry to try editing them again.',\n },\n [FormatContentId.ClassifyAs]: {\n id: FormatContentId.ClassifyAs,\n defaultValue: 'Classify as {0}',\n },\n [FormatContentId.CompletedNSecondsAgo]: {\n id: FormatContentId.CompletedNSecondsAgo,\n defaultValue: 'Completed {0} seconds ago.',\n },\n [FormatContentId.CompletedNMinutesAgo]: {\n id: FormatContentId.CompletedNMinutesAgo,\n defaultValue: 'Completed {0} minutes ago.',\n },\n [FormatContentId.CompletedNHoursAgo]: {\n id: FormatContentId.CompletedNHoursAgo,\n defaultValue: 'Completed {0} hours ago.',\n },\n [FormatContentId.CopyOf]: {\n id: FormatContentId.CopyOf,\n defaultValue: 'Copy of {0}',\n },\n [FormatContentId.CouldNotFindListingId]: {\n id: FormatContentId.CouldNotFindListingId,\n defaultValue: \"Could not find Listing Id: '{0}'\",\n },\n [FormatContentId.CouldNotFindOrderId]: {\n id: FormatContentId.CouldNotFindOrderId,\n defaultValue: \"Could not find Order Id: '{0}'\",\n },\n [FormatContentId.CouldNotFindSaleId]: {\n id: FormatContentId.CouldNotFindSaleId,\n defaultValue: \"Could not find Sale Id: '{0}'\",\n },\n [FormatContentId.DaysBeforeEvent]: {\n id: FormatContentId.DaysBeforeEvent,\n defaultValue: '{0} Days Before Event',\n },\n [FormatContentId.DuplicateListingDetails]: {\n id: FormatContentId.DuplicateListingDetails,\n defaultValue:\n 'This listing appears to be a duplicate of listing {0}. We suggest removing it.',\n },\n [FormatContentId.DuplicatingSeats]: {\n id: FormatContentId.DuplicatingSeats,\n defaultValue: 'Duplicating seat found for Seat {0}',\n },\n [FormatContentId.EmailAddressFrom]: {\n id: FormatContentId.EmailAddressFrom,\n defaultValue: 'From: {0}',\n },\n [FormatContentId.EmailAddressTo]: {\n id: FormatContentId.EmailAddressTo,\n defaultValue: 'To: {0}',\n },\n [FormatContentId.EmptyContent]: {\n id: FormatContentId.EmptyContent,\n defaultValue: '',\n },\n [FormatContentId.EventsSelected]: {\n id: FormatContentId.EventsSelected,\n defaultValue: '{0} event(s) selected',\n },\n [FormatContentId.ExtraBarcodes]: {\n id: FormatContentId.ExtraBarcodes,\n defaultValue: '{0} extra barcode(s).',\n },\n [FormatContentId.ExtraTicketIds]: {\n id: FormatContentId.ExtraTicketIds,\n defaultValue: '{0} extra ticket id(s).',\n },\n [FormatContentId.ExtraTicketUrls]: {\n id: FormatContentId.ExtraTicketUrls,\n defaultValue: '{0} extra URL(s).',\n },\n [FormatContentId.Filled]: {\n id: FormatContentId.Filled,\n defaultValue: '{0} Filled',\n },\n [FormatContentId.FirstTimeVenueEventSetup]: {\n id: FormatContentId.FirstTimeVenueEventSetup,\n defaultValue: 'The venue for this event is setup as {0}',\n },\n [FormatContentId.FulfilledExternalMarketplace]: {\n id: FormatContentId.FulfilledExternalMarketplace,\n defaultValue:\n 'This order is fulfilled on {0}. To fulfill with new tickets, you will need to get {0} to reset the fulfilment state of the order.',\n },\n [FormatContentId.GoTo]: {\n id: FormatContentId.GoTo,\n defaultValue: 'Go to {0}',\n },\n [FormatContentId.HurdleN]: {\n id: FormatContentId.HurdleN,\n defaultValue: 'Hurdle {0}',\n },\n [FormatContentId.InNDays]: {\n id: FormatContentId.InNDays,\n defaultValue: 'In {0} days',\n },\n [FormatContentId.InNHours]: {\n id: FormatContentId.InNHours,\n defaultValue: 'In {0} hours',\n },\n [FormatContentId.InNMinutes]: {\n id: FormatContentId.InNMinutes,\n defaultValue: 'In {0} minutes',\n },\n [FormatContentId.InvalidTagCharacter]: {\n id: FormatContentId.InvalidTagCharacter,\n defaultValue: 'Special characters not allowed: {0}',\n },\n [FormatContentId.ItemsSelected]: {\n id: FormatContentId.ItemsSelected,\n defaultValue: '{0} items selected',\n },\n [FormatContentId.LastNDays]: {\n id: FormatContentId.LastNDays,\n defaultValue: 'last {0} days',\n },\n [FormatContentId.LastNHours]: {\n id: FormatContentId.LastNHours,\n defaultValue: 'last {0} hours',\n },\n [FormatContentId.LastNMinutes]: {\n id: FormatContentId.LastNMinutes,\n defaultValue: 'last {0} minutes',\n },\n [FormatContentId.LastNMonths]: {\n id: FormatContentId.LastNMonths,\n defaultValue: 'last {0} months',\n },\n [FormatContentId.ListingInUKNotification]: {\n id: FormatContentId.ListingInUKNotification,\n defaultValue:\n 'Direct listing on {0} not supported. Redirecting to {0} in {1} seconds...',\n },\n [FormatContentId.LoadingListingId]: {\n id: FormatContentId.LoadingListingId,\n defaultValue: \"Loading Listing Id '{0}'\",\n },\n [FormatContentId.LoadingOrderId]: {\n id: FormatContentId.LoadingOrderId,\n defaultValue: \"Loading Order Id '{0}'\",\n },\n [FormatContentId.LoadingSaleId]: {\n id: FormatContentId.LoadingSaleId,\n defaultValue: \"Loading Sale Id '{0}'\",\n },\n [FormatContentId.Margin]: {\n id: FormatContentId.Margin,\n defaultValue: '{0} Margin',\n },\n [FormatContentId.MarketplaceListings]: {\n id: FormatContentId.MarketplaceListings,\n defaultValue: '{0} Marketplace listings',\n },\n [FormatContentId.MaxAllowedFileSizeMb]: {\n id: FormatContentId.MaxAllowedFileSizeMb,\n defaultValue: 'File maximum size allowed is {0} MB',\n },\n [FormatContentId.MaxReportSizeWarningMessage]: {\n id: FormatContentId.MaxReportSizeWarningMessage,\n defaultValue:\n 'Your report has {0} rows but only {1} is returned per maximum recommended. To view your entire report, either download it or bypass the recommended limit.',\n },\n [FormatContentId.MedianPriceWarning]: {\n id: FormatContentId.MedianPriceWarning,\n defaultValue: 'This is {0}% {1} the current median listing price.',\n },\n [FormatContentId.MinDiscountContent]: {\n id: FormatContentId.MinDiscountContent,\n defaultValue: 'Discount must be at least {0}',\n },\n [FormatContentId.MissingBarcodes]: {\n id: FormatContentId.MissingBarcodes,\n defaultValue: '{0} missing barcode(s).',\n },\n [FormatContentId.MissingTicketIds]: {\n id: FormatContentId.MissingTicketIds,\n defaultValue: '{0} missing ticket id(s).',\n },\n [FormatContentId.MissingTicketUrls]: {\n id: FormatContentId.MissingTicketUrls,\n defaultValue: '{0} missing URL(s).',\n },\n [FormatContentId.NCharactersRemaining]: {\n id: FormatContentId.NCharactersRemaining,\n defaultValue: '{0} characters remaining',\n },\n [FormatContentId.NCompleted]: {\n id: FormatContentId.NCompleted,\n defaultValue: '{0} completed',\n },\n [FormatContentId.NDays]: {\n id: FormatContentId.NDays,\n defaultValue: '{0} days',\n },\n [FormatContentId.NFailed]: {\n id: FormatContentId.NFailed,\n defaultValue: '{0} failed',\n },\n [FormatContentId.NHours]: {\n id: FormatContentId.NHours,\n defaultValue: '{0} hours',\n },\n [FormatContentId.NIncreaseBy]: {\n id: FormatContentId.NIncreaseBy,\n defaultValue: 'Increase by {0}',\n },\n [FormatContentId.NMinutes]: {\n id: FormatContentId.NMinutes,\n defaultValue: '{0} minutes',\n },\n [FormatContentId.NDaysBefore]: {\n id: FormatContentId.NDaysBefore,\n defaultValue: '{0} days before event',\n },\n [FormatContentId.NHoursBefore]: {\n id: FormatContentId.NHoursBefore,\n defaultValue: '{0} hours before event',\n },\n [FormatContentId.NMinutesBefore]: {\n id: FormatContentId.NMinutesBefore,\n defaultValue: '{0} minutes before event',\n },\n [FormatContentId.NoDataAvailable]: {\n id: FormatContentId.NoDataAvailable,\n defaultValue: 'No {0} Available',\n },\n [FormatContentId.NotificationTypeListingBroadcastFailed]: {\n id: FormatContentId.NotificationTypeListingBroadcastFailed,\n defaultValue: 'Failed to broadcast listing to {0}',\n },\n [FormatContentId.NotificationTypeListingUpdateAllInPriceFailed]: {\n id: FormatContentId.NotificationTypeListingUpdateAllInPriceFailed,\n defaultValue: '{0} price broadcast failed',\n },\n [FormatContentId.NotificationTypeListingUpdateInHandDateFailed]: {\n id: FormatContentId.NotificationTypeListingUpdateInHandDateFailed,\n defaultValue: '{0} In Hand Date broadcast failed',\n },\n [FormatContentId.NotificationTypeListingUpdateSplitTypeFailed]: {\n id: FormatContentId.NotificationTypeListingUpdateSplitTypeFailed,\n defaultValue: '{0} Split Type update broadcast failed',\n },\n [FormatContentId.NotificationTypeListingUpdateTicketTypeFailed]: {\n id: FormatContentId.NotificationTypeListingUpdateTicketTypeFailed,\n defaultValue: '{0} Ticket Type update broadcast failed',\n },\n [FormatContentId.NotificationTypeListingUpdateUnitNetProceedsFailed]: {\n id: FormatContentId.NotificationTypeListingUpdateUnitNetProceedsFailed,\n defaultValue: '{0} price broadcast failed',\n },\n [FormatContentId.NotificationTypeListingUnbroadcastFailed]: {\n id: FormatContentId.NotificationTypeListingUnbroadcastFailed,\n defaultValue: 'Failed to unbroadcast listing from {0}',\n },\n [FormatContentId.NotificationTypeSellerSupportCaseNewReply]: {\n id: FormatContentId.NotificationTypeSellerSupportCaseNewReply,\n defaultValue: 'New message from {0}',\n },\n [FormatContentId.NotUnique]: {\n id: FormatContentId.NotUnique,\n defaultValue: '{0} is not unique',\n },\n [FormatContentId.NSelected]: {\n id: FormatContentId.NSelected,\n defaultValue: '{0} Selected',\n },\n [FormatContentId.NSelectedSections]: {\n id: FormatContentId.NSelectedSections,\n defaultValue: '{0} selected sections',\n },\n [FormatContentId.NUpdated]: {\n id: FormatContentId.NUpdated,\n defaultValue: '{0} updated',\n },\n [FormatContentId.NWarnings]: {\n id: FormatContentId.NWarnings,\n defaultValue: '{0} warnings',\n },\n [FormatContentId.OnlyForMarketplaces]: {\n id: FormatContentId.OnlyForMarketplaces,\n defaultValue: '(for {0} only)',\n },\n [FormatContentId.PacksOf]: {\n id: FormatContentId.PacksOf,\n defaultValue: 'Packs of {0}',\n },\n [FormatContentId.PageNum]: {\n id: FormatContentId.PageNum,\n defaultValue: 'Page {0}',\n },\n [FormatContentId.PercentageRelativeTo]: {\n id: FormatContentId.PercentageRelativeTo,\n defaultValue: 'Percentage Relative to {0}',\n },\n [FormatContentId.ProofOfPurchasedRequiredDetailMessage]: {\n id: FormatContentId.ProofOfPurchasedRequiredDetailMessage,\n defaultValue:\n 'Seated tickets must either have row or seat information, or proof submitted that you do not have this information available to you, before they can appear on {0}.',\n },\n [FormatContentId.RequestState]: {\n id: FormatContentId.RequestState,\n defaultValue: 'Request State: {0}',\n },\n [FormatContentId.Row]: {\n id: FormatContentId.Row,\n defaultValue: 'Row {0}',\n },\n [FormatContentId.RowRangeInputError]: {\n id: FormatContentId.RowRangeInputError,\n defaultValue: 'Upper bond of the row range must be no less than {0}.',\n },\n [FormatContentId.SalesForEditTickets]: {\n id: FormatContentId.SalesForEditTickets,\n defaultValue:\n 'If your edits result in one or more tickets removed, your {0} sales for the removed tickets will be deallocated and put back to Pending Confirmation, where you can either source new tickets or reject the orders.',\n },\n [FormatContentId.SalesForRemovedTickets]: {\n id: FormatContentId.SalesForRemovedTickets,\n defaultValue:\n 'Your {0} sales for the removed tickets will be deallocated and put back to Pending Confirmation, where you can either source new tickets or reject the orders.',\n },\n [FormatContentId.SearchItem]: {\n id: FormatContentId.SearchItem,\n defaultValue: 'Search {0}',\n },\n [FormatContentId.SearchingForListingId]: {\n id: FormatContentId.SearchingForListingId,\n defaultValue: \"Searching for Listing Id: '{0}'\",\n },\n [FormatContentId.SearchingForOrderId]: {\n id: FormatContentId.SearchingForOrderId,\n defaultValue: \"Searching for Order Id: '{0}'\",\n },\n [FormatContentId.SearchingForSaleId]: {\n id: FormatContentId.SearchingForSaleId,\n defaultValue: \"Searching for Sale Id: '{0}'\",\n },\n [FormatContentId.SearchResultPick]: {\n id: FormatContentId.SearchResultPick,\n defaultValue:\n \"Searching for '{0}' found {1} results. Click on an item to open it.\",\n },\n [FormatContentId.SeatAllocationChangeWarning]: {\n id: FormatContentId.SeatAllocationChangeWarning,\n defaultValue:\n 'If you change section by {0} or more, or row by {1} or more, you might need to confirm the change with the marketplace first.',\n },\n [FormatContentId.SeatNumber]: {\n id: FormatContentId.SeatNumber,\n defaultValue: 'Seat {0}',\n },\n [FormatContentId.Section]: {\n id: FormatContentId.Section,\n defaultValue: 'Section {0}',\n },\n [FormatContentId.ShareQuoted]: {\n id: FormatContentId.ShareQuoted,\n defaultValue: 'Share \"{0}\"',\n },\n [FormatContentId.SwitchTo]: {\n id: FormatContentId.SwitchTo,\n defaultValue: 'Switch To {0}',\n },\n [FormatContentId.TakeMeThereInSeconds]: {\n id: FormatContentId.TakeMeThereInSeconds,\n defaultValue: 'Take me there in {0} seconds...',\n },\n [FormatContentId.TheseAreThePastSalesOnTheWebsiteAndApp]: {\n id: FormatContentId.TheseAreThePastSalesOnTheWebsiteAndApp,\n defaultValue: 'These are the past {0} sales on the website and app',\n },\n [FormatContentId.TicketCount]: {\n id: FormatContentId.TicketCount,\n defaultValue: '{0} ticket(s)',\n },\n [FormatContentId.TicketNumber]: {\n id: FormatContentId.TicketNumber,\n defaultValue: 'Ticket {0}',\n },\n [FormatContentId.TicketPricePercentile]: {\n id: FormatContentId.TicketPricePercentile,\n defaultValue: 'Ticket Price {0}',\n },\n [FormatContentId.TicketTypePriority]: {\n id: FormatContentId.TicketTypePriority,\n defaultValue: '{0} Ticket Type Priority',\n },\n [FormatContentId.TransactionsLastNHour]: {\n id: FormatContentId.TransactionsLastNHour,\n defaultValue: 'Trans. L{0}H',\n },\n [FormatContentId.TransactionsLastNDay]: {\n id: FormatContentId.TransactionsLastNDay,\n defaultValue: 'Trans. L{0}D',\n },\n [FormatContentId.Uploading]: {\n id: FormatContentId.Uploading,\n defaultValue: 'Uploading {0}...',\n },\n [FormatContentId.UpToXTagsCanBeIncluded]: {\n id: FormatContentId.UpToXTagsCanBeIncluded,\n defaultValue: 'Up to {0} tags can be included in columns.',\n },\n [FormatContentId.UrlNumber]: {\n id: FormatContentId.UrlNumber,\n defaultValue: 'URL {0}',\n },\n [FormatContentId.VisitsLastNHour]: {\n id: FormatContentId.VisitsLastNHour,\n defaultValue: 'Visits L{0}H',\n },\n [FormatContentId.VisitsLastNDay]: {\n id: FormatContentId.VisitsLastNDay,\n defaultValue: 'Visits L{0}D',\n },\n [FormatContentId.WelcomeUserMessage]: {\n id: FormatContentId.WelcomeUserMessage,\n defaultValue: 'Hello, {0}',\n },\n [FormatContentId.WillDeliverToSecondaryAccount]: {\n id: FormatContentId.WillDeliverToSecondaryAccount,\n defaultValue: 'Tickets will be delivered to my {0} account',\n },\n [FormatContentId.YourSaleMetricsPart2]: {\n id: FormatContentId.YourSaleMetricsPart2,\n defaultValue:\n 'are {0} tickets sold with {1} net proceeds and {2} sales margin.',\n },\n [FormatContentId.YourSaleWithStatus]: {\n id: FormatContentId.YourSaleWithStatus,\n defaultValue: 'You have {0} sales {1} for upcoming events.',\n },\n};\n","import {\n createContext,\n ReactNode,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport {\n mediaQuery,\n MediaQueryType,\n useMatchMediaQuery,\n} from 'src/hooks/useMatchMedia';\n\ntype ScreenSizeState = Record;\n\nconst screenSizeState: ScreenSizeState = {\n mobile: false,\n tablet: false,\n desktop: false,\n largeDesktop: false,\n};\n\nexport const ScreenSizeContext =\n createContext(screenSizeState);\n\nexport const useScreenSizeContent = () => useContext(ScreenSizeContext);\n\nexport const ScreenSizeProvider = ({ children }: { children: ReactNode }) => {\n const [screenSiseState, setScreenSiseState] =\n useState(screenSizeState);\n\n const isMobile = useMatchMediaQuery(mediaQuery.mobile);\n const isTablet = useMatchMediaQuery(mediaQuery.tablet);\n const isDesktop = useMatchMediaQuery(mediaQuery.desktop);\n const isLargeDesktop = useMatchMediaQuery(mediaQuery.largeDesktop);\n\n useEffect(() => {\n setScreenSiseState({\n mobile: isMobile,\n tablet: isTablet,\n desktop: isDesktop,\n largeDesktop: isLargeDesktop,\n });\n }, [isMobile, isTablet, isDesktop, isLargeDesktop]);\n\n return (\n \n {children}\n \n );\n};\n","/*\nMIT License\n\nCopyright (c) 2021 SEEK\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n// Copied from https://github.com/vanilla-extract-css/vanilla-extract/blob/%40vanilla-extract/css%401.11.0/site/src/themeUtils.ts\nimport { StyleRule } from '@vanilla-extract/css';\nimport isEqual from 'lodash-es/isEqual';\nimport mapValues from 'lodash-es/mapValues';\nimport omit from 'lodash-es/omit';\n\n// Referenced from https://viagogo.visualstudio.com/Packages/_git/Viagogo.Npm.Core?path=/src/themes/shared/base/media-queries.ts\nexport const breakpoints = {\n mobile: 0,\n tablet: 960,\n desktop: 1200,\n largeDesktop: 1600,\n};\n\ntype CSSProps = Omit;\n\nconst queries = mapValues(\n omit(breakpoints, 'mobile'),\n (bp) => `screen and (min-width: ${bp}px)`\n);\n\nconst makeMediaQuery =\n (breakpoint: keyof typeof queries) => (styles: CSSProps) =>\n !styles || Object.keys(styles).length === 0\n ? {}\n : {\n [queries[breakpoint]]: styles,\n };\n\nconst mediaQuery = {\n tablet: makeMediaQuery('tablet'),\n desktop: makeMediaQuery('desktop'),\n largeDesktop: makeMediaQuery('largeDesktop'),\n};\n\ninterface ResponsiveStyle {\n mobile?: CSSProps;\n tablet?: CSSProps;\n desktop?: CSSProps;\n largeDesktop?: CSSProps;\n}\n\n/**\n * This function sets the styles for the minimum width, where mobile is 0 (and default)\n * Mobile first helper function for responsive styles.\n *\n * Set mobile styles, then override with larger screen sizes.\n * @param styles\n * @returns\n */\nexport const responsiveStyle = ({\n mobile,\n tablet,\n desktop,\n largeDesktop,\n}: ResponsiveStyle): StyleRule => {\n const mobileStyles = omit(mobile, '@media');\n\n const tabletStyles = !tablet || isEqual(tablet, mobileStyles) ? null : tablet;\n\n const stylesBelowDesktop = tabletStyles || mobileStyles;\n\n const desktopStyles =\n !desktop || isEqual(desktop, stylesBelowDesktop) ? null : desktop;\n\n const stylesBelowLargeDesktop = desktopStyles || tabletStyles || mobileStyles;\n\n const largeDesktopStyles =\n !largeDesktop || isEqual(largeDesktop, stylesBelowLargeDesktop)\n ? null\n : largeDesktop;\n\n const hasMediaQueries = tabletStyles || desktopStyles || largeDesktopStyles;\n\n return {\n ...mobileStyles,\n ...(hasMediaQueries\n ? {\n '@media': {\n ...(tabletStyles ? mediaQuery.tablet(tabletStyles) : {}),\n ...(desktopStyles ? mediaQuery.desktop(desktopStyles) : {}),\n ...(largeDesktopStyles\n ? mediaQuery.largeDesktop(largeDesktopStyles)\n : {}),\n },\n }\n : {}),\n };\n};\n","// Copied from Viagogo\nimport { useEffect, useRef, useState } from 'react';\nimport { useScreenSizeContent } from 'src/contexts/ScreenSizeContext/ScreenSizeContext';\nimport { breakpoints } from 'src/core/themes/responsiveStyle';\n\nexport const makeMediaQuery = (min: number, max?: number): string =>\n `only screen and (min-width: ${min}px)${\n max ? ` and (max-width: ${max}px)` : ''\n }`;\n\nexport const mediaQuery = {\n mobile: makeMediaQuery(0, breakpoints.tablet - 1),\n tablet: makeMediaQuery(0, breakpoints.desktop - 1), // include mobile\n desktop: makeMediaQuery(breakpoints.desktop), // include large desktop\n largeDesktop: makeMediaQuery(breakpoints.largeDesktop),\n} as const;\n\nexport type MediaQueryType = keyof typeof mediaQuery;\n\n/**\n * Returns a bool indicating if a media query matches the screen size or not.\n * Don't use this for defined queries in ScreenSizeContent.\n * Use directly useMatchMedia for better performance.\n * @param query\n */\nexport const useMatchMediaQuery = (query: string) => {\n const mqlRef = useRef(window.matchMedia(query));\n const [match, setMatching] = useState(mqlRef.current.matches);\n\n useEffect(() => {\n let mql = mqlRef.current;\n if (query !== mqlRef.current.media) {\n mqlRef.current = window.matchMedia(query);\n mql = mqlRef.current;\n }\n\n const listenerFunc = (e: {\n matches: boolean | ((prevState: boolean) => boolean);\n }) => setMatching(e.matches);\n\n // should not split this by build but feature detect\n if ('addEventListener' in mql) {\n mql.addEventListener('change', listenerFunc);\n } else if ('addListener' in mql) {\n (mql as MediaQueryList).addListener(listenerFunc);\n }\n\n return () => {\n if ('removeEventListener' in mql) {\n mql.removeEventListener('change', listenerFunc);\n } else if ('removeListener' in mql) {\n (mql as MediaQueryList).removeListener(listenerFunc);\n }\n };\n }, [query]);\n\n return match;\n};\n\nexport const useMatchMedia = (media: MediaQueryType): boolean => {\n const screenSizeState = useScreenSizeContent();\n return screenSizeState[media];\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\n\nimport { ContentId } from './constants/contentId';\n\nexport const DeviceAwareContentWrapper = ({\n defaultId,\n mobileId,\n}: {\n defaultId: ContentId;\n mobileId: ContentId;\n}) => {\n const isMobile = useMatchMedia('mobile');\n return ;\n};\n\nexport const splitFormatContent = (s: string) => {\n const replacer = /\\{\\d\\}/;\n const result = [];\n let curS = '';\n for (let i = 0; i < s.length; i++) {\n let foundPlaceholder = false;\n if (s[i] === '{') {\n const placeholder = s.substring(i, i + 3);\n if (placeholder.match(replacer)) {\n if (curS) {\n result.push(curS);\n curS = '';\n }\n result.push(placeholder);\n i = i + 2; // skip to the }\n foundPlaceholder = true;\n }\n }\n\n if (!foundPlaceholder) {\n curS += s[i];\n }\n }\n\n if (curS) {\n result.push(curS);\n }\n\n return result;\n};\n","import { Store } from './Store';\n\nconst memObj: Record = {};\n\nexport const buildKey = (key: string, entityName: string) =>\n `${entityName}_${key}`;\n\nconst set = (key: string, entityName: string, value: T) => {\n memObj[buildKey(key, entityName)] = value;\n};\n\nconst get = (key: string, entityName: string): T | null =>\n memObj[buildKey(key, entityName)] as T;\n\nconst contains = (key: string, entityName: string): boolean =>\n buildKey(key, entityName) in memObj;\n\nconst truncate = (key: string, entityName: string, initVal?: T) => {\n memObj[buildKey(key, entityName)] = initVal;\n};\n\nconst isEnabled = () => true;\n\nexport const memoryStore: Store = { get, set, truncate, contains, isEnabled };\n","import { Store } from './Store';\n\nconst set = (key: string, entityName: string, value: unknown) => {\n try {\n window.sessionStorage.setItem(\n buildKey(key, entityName),\n JSON.stringify(value)\n );\n } catch (e) {\n // serialize error possible\n console.log(e);\n }\n};\n\nconst get = (key: string, entityName: string) => {\n const str = window.sessionStorage.getItem(buildKey(key, entityName));\n try {\n return JSON.parse(str || 'null');\n } catch (e) {\n // serialize error possible\n console.log(e);\n }\n return null;\n};\n\nconst truncate = (key: string, entityName: string, initVal: unknown = '') => {\n try {\n window.sessionStorage.setItem(\n buildKey(key, entityName),\n JSON.stringify(initVal)\n );\n } catch (e) {\n console.log(e);\n }\n};\n\nconst contains = (key: string, entityName: string) => {\n const value = get(key, entityName);\n return value && value != null;\n};\n\nconst buildKey = (key: string, entityName: string) => {\n return `${entityName}_${key}`;\n};\n\nconst isEnabled = () => {\n return (\n window.sessionStorage &&\n typeof window.sessionStorage.getItem === 'function' &&\n typeof window.sessionStorage.setItem === 'function' &&\n typeof window.sessionStorage.removeItem === 'function'\n );\n};\n\nexport const sessionStorageStore: Store = {\n contains,\n get,\n isEnabled,\n set,\n truncate,\n};\n","import React, {\n createContext,\n Fragment,\n PropsWithChildren,\n useCallback,\n useContext,\n} from 'react';\nimport { splitFormatContent } from 'src/utils/contentUtils';\nimport { memoryStore, sessionStorageStore } from 'src/utils/stores';\n\nconst CONTENT_NOT_FOUND_ENTITY = '__CONTENT_NOT_FOUND__';\n\nexport type ContentIdAndDefaultValue = { id: string; defaultValue?: string };\nexport type ContentResolverParams =\n | ContentIdAndDefaultValue\n | ContentIdAndDefaultValue[];\n\nexport interface IContentContext {\n contentCache: {\n hasValue: (id: string) => boolean;\n get: (id: string) => string | undefined;\n };\n contentResolver: (\n args: ContentResolverParams\n ) => string | string[] | undefined;\n formattedContentResolver: (\n id: string,\n params?: string | React.ReactNode | string[] | React.ReactNode[],\n defaultValue?: string\n ) => string | React.ReactNode | undefined;\n isLoading?: boolean;\n}\n\nexport type IContentProvider = Pick<\n IContentContext,\n 'contentCache' | 'isLoading'\n> & {\n contentResolver: (args: ContentResolverParams) => string | string[];\n};\n\nconst emptyContentResolver = (args: ContentResolverParams) => {\n const { defaultValue, id } = Array.isArray(args) ? args[0] : args;\n return defaultValue || id;\n};\n\nconst emptyAppContext: IContentContext = {\n isLoading: false,\n contentCache: {\n hasValue: () => false,\n get: (id: string) => id || undefined,\n },\n contentResolver: emptyContentResolver,\n formattedContentResolver: (_, params, defaultValue) =>\n format(defaultValue || _, params),\n};\n\nconst ContentContext = createContext(emptyAppContext);\n\nconst store = sessionStorageStore.isEnabled()\n ? sessionStorageStore\n : memoryStore;\n\nexport const useContentContext = () => useContext(ContentContext);\n\nexport const ContentProvider = ({\n isLoading,\n contentCache,\n children,\n}: PropsWithChildren) => {\n // TODO - hook-up with TelemetryProvider\n //const logger = useTelemetryLogger();\n const cacheResolver = useCallback(\n (args: ContentResolverParams) => {\n const isArray = Array.isArray(args);\n const contentsArray = isArray ? args : [args];\n const allCached = contentsArray.every(({ id }) =>\n contentCache.hasValue(id)\n );\n if (!allCached) {\n //log info on uncached content ids to telemetry\n const invalidContentIDs =\n store.get('invalidContentIDs', CONTENT_NOT_FOUND_ENTITY) ||\n [];\n contentsArray.forEach(({ id }) => {\n if (!contentCache.hasValue(id)) {\n if (!invalidContentIDs.includes(id)) {\n //logger.log('Content not found in cache for content ID: ' + id);\n invalidContentIDs.push(id);\n }\n }\n });\n store.set(\n 'invalidContentIDs',\n CONTENT_NOT_FOUND_ENTITY,\n invalidContentIDs\n );\n }\n\n return isArray\n ? contentsArray.map(\n ({ id, defaultValue }) => contentCache.get(id) || defaultValue || id\n )\n : // comment out the first 2 conditions locally to find ids that have yet to be translated\n contentCache.get(args.id) || args.defaultValue || args.id;\n },\n [contentCache]\n );\n\n return (\n {\n const value = cacheResolver({ id, defaultValue }) as string;\n return format(value, params);\n },\n }}\n >\n {children}\n \n );\n};\n\nconst format = (\n rawValue: string | undefined,\n args: string | React.ReactNode | string[] | React.ReactNode[] | undefined\n): string | React.ReactNode | undefined => {\n try {\n let formattedValue = rawValue;\n if (formattedValue === undefined) {\n return formattedValue;\n }\n\n const params =\n args === undefined ? [] : Array.isArray(args) ? args : [args];\n\n const hasReactElement = params.some((p) => React.isValidElement(p));\n if (hasReactElement) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let parts = splitFormatContent(formattedValue) as any[];\n for (let i = 0; i < params.length; i++) {\n parts = parts.map((p) => (p === `{${i}}` ? params[i] : p));\n }\n\n return (\n \n {parts.map((p, i) => (\n {p} \n ))}\n \n );\n } else {\n for (let i = 0; i < params.length; i++) {\n formattedValue = formattedValue?.replaceAll(\n `{${i}}`,\n params[i] as string\n );\n }\n\n return formattedValue;\n }\n } catch (e) {\n return '';\n }\n};\n","import DOMPurify from 'dompurify';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ContentIds } from 'src/utils/constants/contentIdDataMap';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { FormatContentIds } from 'src/utils/constants/formatContentIdDataMap';\n\nimport {\n ContentIdAndDefaultValue,\n IContentContext,\n useContentContext,\n} from './ContentContext';\n\nexport type BaseContentProps = {\n id: string;\n formatted: boolean;\n params?: string | React.ReactElement | string[] | React.ReactElement[];\n raw?: boolean;\n defaultValue?: string;\n};\n\ntype ContentProps = {\n id: ContentId | string | undefined;\n raw?: boolean;\n};\n\nexport const Content = ({ id, raw = false }: ContentProps) => {\n if (!id) {\n return null;\n }\n\n const content = ContentIds[id as ContentId];\n if (!content) {\n return id;\n }\n return (\n \n );\n};\n\nexport const FormatContent = ({\n id,\n raw = false,\n params,\n}: { id: FormatContentId } & Omit) => {\n const content = FormatContentIds[id];\n if (!content) {\n return id;\n }\n\n return (\n \n );\n};\n\nconst BaseContent = ({\n id,\n formatted,\n params,\n raw = false,\n defaultValue,\n}: BaseContentProps) => {\n const { contentResolver, formattedContentResolver } = useContentContext();\n let resolved = formatted\n ? formattedContentResolver(id, params, defaultValue)\n : contentResolver({ id, defaultValue });\n\n const isString = typeof resolved === 'string';\n if (isString) resolved = (resolved as string)?.replaceAll('\\u00a0', ' '); // this replaces the   with normal space, else long lines won't break\n return raw && resolved !== undefined && isString ? (\n \n ) : (\n <>{resolved}\n );\n};\n\nexport const useContent = (id: ContentId | string | undefined) => {\n const contentContext = useContentContext();\n return getContent(id, contentContext);\n};\n\nexport const useContents = (ids: ContentId[]) => {\n const contentContext = useContentContext();\n\n return getContents(ids, contentContext);\n};\n\nexport const getContent = (\n id: ContentId | string | undefined,\n contentContext: IContentContext\n) => {\n if (!id) {\n return '';\n }\n const content = ContentIds[id as ContentId];\n return content ? (contentContext.contentResolver(content) as string) : id;\n};\n\nexport const getContents = (\n ids: (ContentId | string)[],\n contentContext: IContentContext\n) => {\n const results: string[] = [];\n const contents: ContentIdAndDefaultValue[] = [];\n ids.forEach((i) => {\n const c = ContentIds[i as ContentId];\n if (c) {\n contents.push(c);\n } else {\n results.push(i);\n }\n });\n\n return results.concat(\n ...(contentContext.contentResolver(contents) as string[])\n );\n};\n\nexport const useFormattedContent = (\n contentId: FormatContentId,\n params: BaseContentProps['params']\n) => {\n const contentContext = useContentContext();\n\n return getFormattedContent(contentId, params, contentContext);\n};\n\nexport const getFormattedContent = (\n contentId: FormatContentId,\n params: BaseContentProps['params'],\n contentContext: IContentContext\n) => {\n const { id, defaultValue } = FormatContentIds[contentId];\n return contentContext.formattedContentResolver(id, params, defaultValue);\n};\n\nexport const isContentId = (value: string | ContentId): value is ContentId => {\n return ContentIds[value as ContentId] != null;\n};\n\nexport const isFormatContentId = (\n value: string | FormatContentId\n): value is FormatContentId => {\n return FormatContentIds[value as FormatContentId] != null;\n};\n\n/**\n * Compares 2 contentId to be used when sorting\n * @param contentContext\n * @param contentA\n * @param contentB\n */\nexport const contentComparator = (\n contentContext: IContentContext,\n contentA: ContentId | string | undefined,\n contentB: ContentId | string | undefined\n): number => {\n return getContent(contentA, contentContext)\n .toLocaleUpperCase()\n .localeCompare(getContent(contentB, contentContext).toLocaleUpperCase());\n};\n","export const RADIX_SIDE_OFFSET = 8;\nexport const RADIX_COLLISION_PADDING = 8;\n\n// This matches Startup.cs in the backend\nexport const MAX_ALLOWED_UPLOAD_FILE_SIZE = 50 * 1024 * 1024; // 50MB\n","import clsx from 'clsx';\n\n/**\n * Merges props according to the following rules:\n * 1. Classnames will be concatenated\n * 2. Callbacks will be called in order, and the result of the final callback will be returned\n * 3. All other props will be overwritten if the value is not `undefined`\n *\n * NOTE: Do **NOT** pass refs into this function. If you need to merge refs use `mergeRefs`\n * separately instead.\n * @param defaultProps\n * @param props\n * @returns Merged props.\n */\nexport function mergeProps

(\n defaultProps: Pick,\n props: P\n): P {\n const resultProps = { ...props };\n for (const key in defaultProps) {\n const defaultProp = defaultProps[key];\n const resultProp = resultProps[key];\n if (\n key === 'className' &&\n typeof defaultProp === 'string' &&\n typeof resultProp === 'string'\n ) {\n resultProps[key] = clsx(defaultProp, resultProp) as typeof resultProp;\n } else if (\n typeof defaultProp === 'function' &&\n typeof resultProp === 'function' &&\n key[0] === 'o' &&\n key[1] === 'n' &&\n key.charCodeAt(2) >= 'A'.charCodeAt(0) &&\n key.charCodeAt(2) <= 'Z'.charCodeAt(0)\n ) {\n resultProps[key] = ((...args: unknown[]) => {\n defaultProp(...args);\n return resultProp(...args);\n }) as typeof resultProp;\n } else if (resultProp === undefined) {\n resultProps[key] = defaultProps[key];\n }\n }\n return resultProps;\n}\n","import type { ForwardedRef } from 'react';\n\n/**\n * @param refs\n * @returns Given refs merged into a single ref.\n */\nexport function mergeRefs(\n ...refs: [ForwardedRef, ForwardedRef, ...ForwardedRef[]]\n): ForwardedRef {\n return (val) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(val);\n } else if (ref) {\n ref.current = val;\n }\n }\n };\n}\n","import { clsx } from 'clsx';\nimport {\n ClassAttributes,\n ComponentProps,\n ComponentRef,\n createElement,\n forwardRef,\n FunctionComponent,\n NamedExoticComponent,\n} from 'react';\n\ntype HTMLElementType =\n JSX.IntrinsicElements[T] extends ClassAttributes ? E : never;\n\n/**\n * Use this to add a `className` to intrinsic jsx components like `div`.\n * @param type\n * @param className\n * @returns\n */\nexport function styled(\n type: T,\n className: string\n) {\n return Object.assign(\n // eslint-disable-next-line react/display-name\n forwardRef, ComponentProps>(function (props, ref) {\n return createElement(type, {\n ref,\n ...props,\n className: clsx(className, props.className),\n });\n }),\n { displayName: `VanillaExtractStyled(${type})` }\n );\n}\n\n/**\n * Use this to add a `className` to react components.\n * @param Component\n * @param className\n * @returns\n */\nexport function styledComponent

(\n Component: FunctionComponent

| NamedExoticComponent

,\n className: string\n) {\n const displayName = `VanillaExtractStyled(${\n Component?.displayName ?? Component.name\n })`;\n const addClassNameToProps = (props: P) => ({\n ...props,\n className: clsx(className, props.className),\n });\n return Object.assign(\n '$$typeof' in Component\n ? // eslint-disable-next-line react/display-name\n forwardRef<\n ComponentRef,\n ComponentProps\n >((props, ref) =>\n createElement(\n Component,\n Object.assign(addClassNameToProps(props), { ref })\n )\n )\n : (props: P) => createElement(Component, addClassNameToProps(props)),\n { displayName }\n );\n}\n","import { RecipeVariants } from '@vanilla-extract/recipes';\nimport { ComponentPropsWithoutRef, forwardRef, ReactElement } from 'react';\nimport { mergeProps } from 'src/core/utils';\n\nimport * as styles from './Button.css';\n\nexport type ButtonProps = ComponentPropsWithoutRef<'button'> &\n RecipeVariants & {\n justifyContent?: 'start' | 'center' | 'space-between';\n fontWeight?: number;\n };\n\nexport const Button = forwardRef(\n function Button(\n {\n variant,\n textColor,\n shape,\n size,\n children,\n justifyContent = 'center',\n fontWeight = 500,\n ...props\n },\n ref\n ): ReactElement {\n return (\n \n \n {children}\n \n \n );\n }\n);\n","import { ComponentPropsWithoutRef, forwardRef } from 'react';\nimport { mergeProps } from 'src/core/utils';\n\nimport * as styles from './Card.css';\n\nexport const Card = forwardRef>(\n function Card({ children, ...props }, ref) {\n return (\n

\n {children}\n
\n );\n }\n);\n","import { RecipeVariants } from '@vanilla-extract/recipes';\nimport { ComponentPropsWithoutRef, forwardRef, ReactElement } from 'react';\nimport { mergeProps } from 'src/core/utils';\n\nimport * as styles from './CountBadge.css';\n\nexport const CountBadge = forwardRef<\n HTMLDivElement,\n Omit<\n ComponentPropsWithoutRef<'div'>,\n 'onChange' | 'onKeyDown' | 'onKeyUp' | 'children'\n > &\n RecipeVariants & {\n count: number;\n color?: 'green' | 'red' | 'gray' | 'brand' | 'brandLight';\n }\n>(function Root({ count, color = 'brand', ...props }, ref): ReactElement {\n return (\n \n {count}\n \n );\n});\n","import { ComponentPropsWithoutRef, forwardRef, ReactElement } from 'react';\n\nimport * as styles from './DividerLine.css';\n\nexport const DividerLine = forwardRef<\n HTMLDivElement,\n Omit, 'onChange' | 'onKeyDown' | 'onKeyUp'>\n>(function Root(props, ref): ReactElement {\n return
;\n});\n","import * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport { clsx } from 'clsx';\nimport { ComponentPropsWithoutRef, forwardRef } from 'react';\nimport {\n mergeProps,\n RADIX_COLLISION_PADDING,\n RADIX_SIDE_OFFSET,\n styledComponent,\n} from 'src/core/utils';\n\nimport * as styles from './DropdownMenu.css';\nimport { label, separator } from './DropdownMenu.css';\n\nexport const Root = DropdownMenu.Root;\n\nexport const Trigger = DropdownMenu.Trigger;\n\nexport const Portal = DropdownMenu.Portal;\n\nexport const Group = DropdownMenu.Group;\n\n// DON'T use it until this works with zoom. Radix-ui issue.\nexport const SubContent = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef\n>(function Content({ children, ...props }, ref) {\n return (\n \n \n {children}\n \n \n );\n});\n\nexport const Content = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef\n>(function Content({ children, ...props }, ref) {\n return (\n \n \n {children}\n \n \n );\n});\n\nexport const Item = styledComponent(DropdownMenu.Item, styles.item);\n\nexport const Separator = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef\n>(function Separator({ className, ...props }, ref) {\n return (\n \n );\n});\n\nexport const Label = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef\n>(function Label({ className, ...props }, ref) {\n return (\n \n );\n});\n","import * as Popover from '@radix-ui/react-popover';\nimport { ComponentPropsWithoutRef, forwardRef } from 'react';\nimport {\n mergeProps,\n RADIX_COLLISION_PADDING,\n RADIX_SIDE_OFFSET,\n styledComponent,\n} from 'src/core/utils';\n\nimport * as styles from './Popover.css';\n\nexport const Root = Popover.Root;\n\nexport const Trigger = Popover.Trigger;\n\nexport const Content = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef\n>(function Content({ children, ...props }, ref) {\n return (\n \n \n {children}\n \n \n );\n});\n\nexport const Arrow = styledComponent(Popover.Arrow, styles.arrow);\n\nexport const Close = Popover.Close;\n","import { RecipeVariants } from '@vanilla-extract/recipes';\nimport { ComponentPropsWithoutRef, forwardRef, PropsWithChildren } from 'react';\nimport { mergeProps } from 'src/core/utils';\n\nimport * as styles from './Stack.css';\n\nexport type StackProps = ComponentPropsWithoutRef<'div'> &\n PropsWithChildren>;\n\n/**\n * Basically a wrapper around flexbox. Styling with flex is very common, so this component allows\n * for flexbox without a new style.\n * @param props\n */\nexport const Stack = forwardRef(function Stack(\n {\n direction,\n gap,\n justifyContent,\n flexWrap,\n alignItems,\n width,\n height,\n children,\n flexShrink,\n alignSelf,\n ...props\n },\n ref\n) {\n return (\n \n {children}\n
\n );\n});\n","import * as RadixRadioGroup from '@radix-ui/react-radio-group';\nimport clsx from 'clsx';\nimport { ComponentPropsWithoutRef, forwardRef, ReactNode } from 'react';\nimport { mergeProps } from 'src/core/utils';\n\nimport { Stack } from '../Stack';\nimport * as styles from './RadioGroup.css';\n\nexport const RadioGroup = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef\n>(function Root({ ...props }, ref) {\n return ;\n});\n\nexport const Radio = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef & {\n label: ReactNode;\n variant?: 'regular' | 'outline';\n containerClassName?: string;\n }\n>(function Root(\n { label, value, disabled, variant = 'regular', containerClassName, ...props },\n ref\n) {\n return (\n \n \n \n \n \n {label}\n \n \n );\n});\n","/**\n * Copied from https://viagogo.visualstudio.com/Packages/_git/Viagogo.Npm.Core?path=/src/themes/shared/colors.ts\n * because the package doesn't export these values.\n *\n * This should **NOT** be used outside of the `themes/` directory.\n */\nexport const Colors = {\n // viagogo\n green075: '#71a230',\n green100: '#6fb229',\n green150: '#8ac53b',\n green200: '#8cc63f',\n green300: '#a3d165',\n green400: '#badd8c',\n green450: '#cee7ae',\n green500: '#d1e8b2',\n green600: '#e8f4d9',\n green700: '#f3f9eb',\n gray100: '#37383a',\n gray200: '#5f6062',\n gray250: '#87909a',\n gray300: '#7f8081',\n gray400: '#9fa0a1',\n gray450: '#bfc0c0',\n gray500: '#bfc0c0',\n gray600: '#dfdfe0',\n gray700: '#efefef',\n gray800: '#f2f2f2',\n gray900: '#f9f9f9',\n gray1000: '#f6f8f9',\n blue075: '#0094dc',\n blue075Light: '#0075c4',\n blue100: '#1eb0ee',\n blue200: '#22afee',\n blue300: '#47BEF0', // this is the categories sports color\n blue500: '#b0e3f8',\n blue600: '#e1f3fd',\n blue700: '#e1f3fd',\n\n magenta300: '#f4538d',\n yellow100: '#ffb900',\n red100: '#B71C1C',\n red200: '#D32F2F',\n red300: '#da4f49',\n red400: 'e53935',\n red500: '#EF5350',\n red600: '#E57373',\n black: '#000',\n white: '#fff',\n darkBlue250: '#0f5b99',\n darkBlue300: '#0c709a',\n darkBlue700: '#0f5b99',\n dark060: '#212428',\n\n // Stubhub\n indigo025: '#15032E',\n indigo050: '#1E093A',\n indigo060: '#29134C',\n indigo070: '#2D0F54',\n indigo075: '#260354',\n indigo100: '#3F1D75',\n indigo200: '#643CA2',\n indigo300: '#55279E',\n indigo500: '#825ABF',\n indigo600: '#D4B9FF',\n indigo700: '#F1EBFA',\n\n // TicketUtil\n tuBlue025: '#2A3944',\n tuBlue100: '#0084EA',\n tuBlue200: '#339CEE',\n tuBlue300: '#66B5F2',\n tuBlue400: '#99CEF6',\n tuBlue500: '#CCE6FB',\n tuBlue600: '#E6F3FD',\n\n fuchsia075: '#AF346B',\n fuchsia100: '#DB2C7B',\n fuchsia200: '#ED2E80',\n fuchsia500: '#F56AA8',\n fuchsia600: '#FBBBD6',\n fuchsia700: '#FBEAF1',\n\n aqua075: '#0D8282',\n aqua100: '#29B2B2',\n aqua200: '#49D4D4',\n aqua500: '#72C8C9',\n aqua600: '#ABDDDE',\n aqua700: '#DAFAFC',\n\n neutral000: '#000000',\n neutral025: '#121212',\n neutral050: '#191C1F',\n neutral075: '#2F343B',\n neutral100: '#677383',\n neutral200: '#87909A',\n neutral300: '#B1BAC2',\n neutral400: '#CFD4D9',\n neutral500: '#E6E9EB',\n neutral600: '#F6F8F9',\n neutral700: '#FBFCFC',\n neutral1000: '#FFFFFF',\n\n negative075: '#9F2B18',\n negative100: '#D91A1A',\n negative200: '#FF3939',\n negative500: '#FCEFED',\n\n success075: '#198620',\n success100: '#00A645',\n success500: '#E5FFF0',\n warning075: '#996E00',\n warning100: '#F2B824',\n warning500: '#FEF7E7',\n\n info075: '#0F5894',\n info100: '#1475C4',\n info200: '#218FE8',\n info500: '#DAECFB',\n info700: '#E0ECFF',\n\n darkInfo: '#1A2A44',\n\n // Brand-specific color that don't have regular color naming\n brandAxs: '#0055A0',\n brandVivid: '#0E1963',\n brandSeatgeek: '#FF5B49',\n brandTickPick: '#3399FF',\n brandTicketmaster: '#026BDE',\n brandFanXchange: '#006099',\n brandTicketEvolution: '#9A362C',\n brandTicketNetwork: '#3A519D',\n brandTelecharge: '#000B6F',\n brandTicketon: '#202867',\n brandSeetickets: '#009C9B',\n brandMgmResorts: '#16057D',\n brandSmithCenterImport: '#63948E',\n brandComputicket: '#B50D90',\n brandLyte: '#ffffff',\n brandGoTickets: '#ffffff',\n brandB2BSales: '#ffffff',\n\n textSeatgeek: '#181818',\n textFanXchange: '#15F2D3',\n textEventbrite: '#FF5B49',\n textTicketon: '#FECA27',\n textEtix: '#00579B',\n textMgmResorts: '#FFF9BE',\n\n backgroundStubhubSeatmap: '#C2B5E0',\n\n seatCardBackgroundColor: '#1A2426',\n} as const;\n","import type { ThemeMediaQuery } from '../../theme-types';\n\nconst makeMediaQuery = (size: number, args: string): string => `\n @media only screen and (min-width: ${size}px) {\n ${args}\n }\n`;\n\nconst breakpoints = {\n xs: 0,\n sm: 360,\n md: 600, // px 1: Small (phone) 600-919 medium , 920-1199 medium large\n ml: 920, // px 2: Medium (tablet)\n lg: 1200, // px 3: Large (laptop/desktop)/4: Extra-Large (Widescreen)\n xl: 2100,\n};\n\nconst phone = `\n only screen and (min-width: ${0}px) and (max-width: ${breakpoints.md - 1}px)\n`;\n\nconst tablet = `\n only screen and (min-width: ${breakpoints.md}px) and (max-width: ${\n breakpoints.ml - 1\n }px)\n`;\n\nconst desktop = `\n only screen and (min-width: ${breakpoints.ml}px) \n`;\n\nconst xlDesktop = `\n only screen and (min-width: ${breakpoints.xl}px) \n`;\n\nexport const media: ThemeMediaQuery = {\n breakpoints,\n makeMediaQuery,\n phone,\n tablet,\n desktop,\n xlDesktop,\n};\n","import { sizing } from 'src/core/themes/themeContract.css';\n\nimport { TypographyVariantType } from '../../theme-types';\n\nexport enum ScreenVariant {\n sm = 'sm',\n lg = 'lg',\n}\n\nexport const fontWeightConfig = {\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n};\n\nexport type TypographyStyling = {\n fontSize: string;\n defaultfontWeight: string | number;\n lineHeight: string;\n letterSpacing?: string;\n};\n\nexport const VariantConfig: Record<\n TypographyVariantType,\n Record\n> = {\n title1: {\n [ScreenVariant.lg]: {\n fontSize: sizing.typography.fontSize['5xl'],\n defaultfontWeight: fontWeightConfig.bold,\n lineHeight: '56px',\n },\n [ScreenVariant.sm]: {\n fontSize: sizing.typography.fontSize['4xl'],\n defaultfontWeight: fontWeightConfig.bold,\n lineHeight: '48px',\n },\n },\n title2: {\n [ScreenVariant.lg]: {\n fontSize: sizing.typography.fontSize['4xl'],\n defaultfontWeight: fontWeightConfig.bold,\n lineHeight: '48px',\n },\n [ScreenVariant.sm]: {\n fontSize: sizing.typography.fontSize['3xl'],\n defaultfontWeight: fontWeightConfig.bold,\n lineHeight: '40px',\n },\n },\n title3: {\n [ScreenVariant.lg]: {\n fontSize: sizing.typography.fontSize['3xl'],\n defaultfontWeight: fontWeightConfig.bold,\n lineHeight: '40px',\n },\n [ScreenVariant.sm]: {\n fontSize: sizing.typography.fontSize['2xl'],\n defaultfontWeight: fontWeightConfig.bold,\n lineHeight: '40px',\n },\n },\n title4: {\n [ScreenVariant.lg]: {\n fontSize: sizing.typography.fontSize['2xl'],\n defaultfontWeight: fontWeightConfig.bold,\n lineHeight: '32px',\n },\n [ScreenVariant.sm]: {\n fontSize: sizing.typography.fontSize['xl'],\n defaultfontWeight: fontWeightConfig.bold,\n lineHeight: '32px',\n },\n },\n title5: {\n [ScreenVariant.lg]: {\n fontSize: sizing.typography.fontSize['xl'],\n defaultfontWeight: fontWeightConfig.bold,\n lineHeight: '28px',\n },\n [ScreenVariant.sm]: {\n fontSize: sizing.typography.fontSize['lg'],\n defaultfontWeight: fontWeightConfig.bold,\n lineHeight: '24px',\n },\n },\n title6: {\n [ScreenVariant.lg]: {\n fontSize: sizing.typography.fontSize['lg'],\n defaultfontWeight: fontWeightConfig.bold,\n lineHeight: '24px',\n },\n [ScreenVariant.sm]: {\n fontSize: sizing.typography.fontSize['base'],\n defaultfontWeight: fontWeightConfig.bold,\n lineHeight: '24px',\n },\n },\n subtitle1: {\n [ScreenVariant.lg]: {\n fontSize: sizing.typography.fontSize['base'],\n defaultfontWeight: fontWeightConfig.medium,\n lineHeight: '24px',\n },\n [ScreenVariant.sm]: {\n fontSize: sizing.typography.fontSize['base'],\n defaultfontWeight: fontWeightConfig.medium,\n lineHeight: '24px',\n },\n },\n subtitle2: {\n [ScreenVariant.lg]: {\n fontSize: sizing.typography.fontSize['sm'],\n defaultfontWeight: fontWeightConfig.medium,\n lineHeight: '20px',\n },\n [ScreenVariant.sm]: {\n fontSize: sizing.typography.fontSize['lg'],\n defaultfontWeight: fontWeightConfig.medium,\n lineHeight: '20px',\n },\n },\n body1: {\n [ScreenVariant.lg]: {\n fontSize: sizing.typography.fontSize['base'],\n defaultfontWeight: fontWeightConfig.regular,\n lineHeight: '24px',\n },\n [ScreenVariant.sm]: {\n fontSize: sizing.typography.fontSize['base'],\n defaultfontWeight: fontWeightConfig.regular,\n lineHeight: '24px',\n },\n },\n body2: {\n [ScreenVariant.lg]: {\n fontSize: sizing.typography.fontSize['sm'],\n defaultfontWeight: fontWeightConfig.regular,\n lineHeight: '20px',\n },\n [ScreenVariant.sm]: {\n fontSize: sizing.typography.fontSize['sm'],\n defaultfontWeight: fontWeightConfig.regular,\n lineHeight: '20px',\n },\n },\n caption1: {\n [ScreenVariant.lg]: {\n fontSize: sizing.typography.fontSize['xs'],\n defaultfontWeight: fontWeightConfig.medium,\n lineHeight: '16px',\n },\n [ScreenVariant.sm]: {\n fontSize: sizing.typography.fontSize['xs'],\n defaultfontWeight: fontWeightConfig.medium,\n lineHeight: '16px',\n },\n },\n caption2: {\n [ScreenVariant.lg]: {\n fontSize: sizing.typography.fontSize['xxs'],\n defaultfontWeight: fontWeightConfig.medium,\n lineHeight: '16px',\n },\n [ScreenVariant.sm]: {\n fontSize: sizing.typography.fontSize['xxs'],\n defaultfontWeight: fontWeightConfig.medium,\n lineHeight: '16px',\n },\n },\n};\n","import { FontWeightType, TypographyVariantType } from '../../theme-types';\nimport { media } from './media-queries';\nimport { fontWeightConfig, VariantConfig } from './typography-config';\n\ntype TypographySize = {\n 'font-size': string;\n 'line-height': string;\n 'letter-spacing': string;\n};\n\nexport const size = (multiplier: number): TypographySize => ({\n 'font-size': `${multiplier * 2 + 10}px`,\n 'line-height': 'regular',\n 'letter-spacing': 'regular',\n});\n\nexport const getStyles = (\n variant: TypographyVariantType,\n weight?: FontWeightType\n): string =>\n `\n font-size: ${VariantConfig[variant].sm.fontSize};\n font-weight: ${\n weight\n ? fontWeightConfig[weight]\n : VariantConfig[variant].sm.defaultfontWeight\n };\n line-height: ${VariantConfig[variant].sm.lineHeight};\n ${\n VariantConfig[variant].sm.letterSpacing !== undefined\n ? `letter-spacing: ${VariantConfig[variant].sm.letterSpacing}`\n : ''\n };\n\n ${media.makeMediaQuery(\n media.breakpoints.md,\n `\n font-size: ${VariantConfig[variant].lg.fontSize};\n font-weight: ${\n weight\n ? fontWeightConfig[weight]\n : VariantConfig[variant].lg.defaultfontWeight\n };\n line-height: ${VariantConfig[variant].lg.lineHeight};\n ${\n VariantConfig[variant].lg.letterSpacing !== undefined\n ? `letter-spacing: ${VariantConfig[variant].lg.letterSpacing}`\n : ''\n };\n `\n )}\n `;\n","export function addTransparencyToHexColor(\n color: string,\n transparency0To100: number\n) {\n if (\n !color.startsWith('#') ||\n // Supported formats here are #RRGGBB or #RGB\n ![4, 7].includes(color.length) ||\n transparency0To100 < 0 ||\n transparency0To100 > 100\n ) {\n console.warn(\n '[addTransparencyToHexColor] color or transparency0To100 is not valid',\n { color, transparency0To100 }\n );\n return color;\n }\n\n // Convert #RGB to #RRGGBB\n const baseColor =\n color.length === 4\n ? `#${color\n .substring(1)\n .split('')\n .map((c) => c + c)\n .join('')}`\n : color;\n\n const hexTransparency = Math.round((transparency0To100 * 255) / 100)\n .toString(16)\n .substring(0, 2);\n\n return `${baseColor}${hexTransparency}`;\n}\n\nexport const Colors = {\n // viagogo\n green025: '#406718',\n green050: '#567D21',\n green075: '#71a230',\n green100: '#6fb229',\n green150: '#8ac53b',\n green200: '#8cc63f',\n green300: '#a3d165',\n green400: '#badd8c',\n green450: '#cee7ae',\n green500: '#d1e8b2',\n green600: '#e8f4d9',\n green700: '#f3f9eb',\n gray100: '#37383a',\n gray200: '#5f6062',\n gray250: '#87909a',\n gray300: '#7f8081',\n gray400: '#9fa0a1',\n gray450: '#bfc0c0',\n gray500: '#bfc0c0',\n gray600: '#dfdfe0',\n gray700: '#efefef',\n gray800: '#f2f2f2',\n gray900: '#f9f9f9',\n gray1000: '#f6f8f9',\n blue075: '#0094dc',\n blue100: '#1eb0ee',\n blue200: '#22afee',\n blue300: '#47BEF0', // this is the categories sports color\n blue500: '#b0e3f8',\n blue600: '#e1f3fd',\n blue700: '#e1f3fd',\n\n magenta300: '#f4538d',\n yellow100: '#ffb900',\n red100: '#B71C1C',\n red200: '#D32F2F',\n red300: '#da4f49',\n red400: 'e53935',\n red500: '#EF5350',\n red600: '#E57373',\n black: '#000',\n white: '#fff',\n darkBlue250: '#0f5b99',\n darkBlue300: '#0c709a',\n darkBlue700: '#0f5b99',\n\n // Stubhub\n indigo025: '#15032E',\n indigo050: '#1E093A',\n indigo060: '#29134C',\n indigo070: '#2D0F54',\n indigo075: '#260354',\n indigo100: '#3F1D75',\n indigo200: '#643CA2',\n indigo300: '#55279E',\n indigo500: '#825ABF',\n indigo600: '#D4B9FF',\n indigo700: '#F1EBFA',\n\n fuchsia075: '#AF346B',\n fuchsia100: '#DB2C7B',\n fuchsia200: '#ED2E80',\n fuchsia500: '#F56AA8',\n fuchsia600: '#FBBBD6',\n fuchsia700: '#FBEAF1',\n\n aqua075: '#0D8282',\n aqua100: '#29B2B2',\n aqua200: '#49D4D4',\n aqua500: '#72C8C9',\n aqua600: '#ABDDDE',\n aqua700: '#DAFAFC',\n\n neutral000: '#000000',\n neutral025: '#121212',\n neutral050: '#191C1F',\n neutral075: '#2F343B',\n neutral100: '#677383',\n neutral200: '#87909A',\n neutral300: '#B1BAC2',\n neutral400: '#CFD4D9',\n neutral500: '#E6E9EB',\n neutral600: '#F6F8F9',\n neutral700: '#FBFCFC',\n neutral1000: '#FFFFFF',\n\n negative075: '#9F2B18',\n negative100: '#D91A1A',\n negative200: '#FF3939',\n negative500: '#FCEFED',\n\n success075: '#198620',\n success100: '#00A645',\n success500: '#E5FFF0',\n warning075: '#996E00',\n warning100: '#F2B824',\n warning500: '#FEF7E7',\n\n info075: '#0F5894',\n info100: '#1475C4',\n info200: '#218FE8',\n info500: '#DAECFB',\n};\n","import { CommonBasePalette } from './palette.types';\n\nexport const BASE_LIGHT_PALETTE: CommonBasePalette = {\n // Start: Neutral\n neutralPrimary: '#1A2329', // neutral13\n neutralPrimaryHover: '#2B343A', // neutral21\n neutralPrimaryActive: '#141D23', // neutral10\n textOnNeutralPrimary: '#FFFFFF', // neutral100\n borderNeutralPrimary: '#B1BAC2', // neutral75\n\n neutralSecondary: '#F8FAFB', // neutral98\n neutralSecondaryHover: '#EFF1F2', // neutral95\n neutralSecondaryActive: '#DFE3E5', // neutral90\n textOnNeutralSecondary: '#091218', // neutral5\n // End: Neutral\n\n // Start: Disabled\n disabled: '#DFE3E5', // neutral90\n textOnDisabled: '#B1BAC2', // neutral75\n\n borderDisabled: '#B1BAC2', // neutral75\n\n textDisabledOnSurface: '#B1BAC2', // neutral75\n // End: Disabled\n\n // Start: Accent\n accentPrimary: '#E12277', // fuchsia50\n textOnAccentPrimary: '#FFFFFF', // fuc\n borderAccentPrimary: '#FF649B', // fuchsia64\n\n accentSecondary: '#FFE8EC', // fuchsia94\n textOnAccentSecondary: '#C30063', // fuchsia42\n\n textAccentOnSurface: '#C30063', // fuchsia42\n // End: Accent\n\n // Start: Error\n errorPrimary: '#D81819', // error46\n errorPrimaryHover: '#FF3E34', // error57\n errorPrimaryActive: '#AE000A', // error36\n textOnErrorPrimary: '#FFFFFF', // error100\n borderErrorPrimary: '#D81819', // error46\n\n errorSecondary: '#FFE9E6', // error94\n errorSecondaryHover: '#FFDAD5', // error90\n errorSecondaryActive: '#FFCFC8', // error87\n textOnErrorSecondary: '#D81819', // error46\n\n textErrorOnSurface: '#D81819', // error46\n // End: Error\n\n // Start: Success\n successPrimary: '#00A645', // success60\n textOnSuccessPrimary: '#FFFFFF', // success100\n borderSuccessPrimary: '#39C35E', // success70\n\n successSecondary: '#EBFFE7', // success98\n textOnSuccessSecondary: '#006E2B', // success40\n\n textSuccessOnSurface: '#006E2B', // success40\n // End: Success\n\n // Start: Warning\n warningPrimary: '#F2B824', // warning78\n textOnWarningPrimary: '#5C4300', // warning30\n borderWarningPrimary: '#F2B824', // warning78\n\n warningSecondary: '#FFECCA', // warning94\n textOnWarningSecondary: '#5C4300', // warning30\n // End: Warning\n\n // Start: Info\n infoPrimary: '#0075C4', // info48\n textOnInfoPrimary: '#FFFFFF', // info100\n borderInfoPrimary: '#8EC2FF', // info77\n\n infoSecondary: '#E0ECFF', // info93\n textOnInfoSecondary: '#000F20', // info4\n\n textInfoOnSurface: '#0075C4', // info48\n // End: Info\n\n // Start: Surface\n surfacePrimary: '#FFFFFF', // neutral100\n surfaceSecondary: '#F5F7F8', // neutral97\n\n textPrimaryOnSurface: '#091218', // neutral5\n textSecondaryOnSurface: '#606970', // neutral44\n\n textLinkOnSurface: '#5E29BA', // indigo33\n textLinkHoverOnSurface: '#3E008E', // indigo20\n textLinkActiveOnSurface: '#835CCD', // indigo48\n textLinkVisitedOnSurface: '#6535BE', // indigo36\n // End: Surface\n\n // Start: Border\n borderPrimary: '#141D23', // neutral13\n borderSecondary: '#B1BAC2', // neutral75\n // End: Border\n\n // Start: Elevated\n elevated: '#2F343B', // neutral10\n textPrimaryOnElevated: '#FFFFFF', // neutral100\n textSecondaryOnElevated: '#B1BAC2', // neutral75\n // End: Elevated\n\n scrim: '#00000060',\n};\n","import { BrandSemanticColors } from './palette.types';\n\nexport const STUBHUB_LIGHT: BrandSemanticColors = {\n brandPrimary: '#5E29BA', // indigo33\n brandPrimaryHover: '#6535BE', // indigo36\n brandPrimaryActive: '#3F1D75', // indigo20\n textOnBrandPrimary: '#FFFFFF', // indigo100\n borderBrandPrimary: '#5E29BA', // indigo33\n\n brandSecondary: '#F1EBFA', // indigo94\n brandSecondaryHover: '#EEE0FF', // indigo91\n brandSecondaryActive: '#E5D2FF', // indigo87\n textOnBrandSecondary: '#5E29BA', // indigo33\n\n textBrandOnSurface: '#5E29BA', // indigo33\n\n textBrandOnElevated: '#9471D7', // indigo55\n};\n\nexport const STUBHUB_DARK: BrandSemanticColors = {\n brandPrimary: '#6535BE', // indigo36\n brandPrimaryHover: '#835CCD', // indigo48\n brandPrimaryActive: '#5E29BA', // indigo33\n textOnBrandPrimary: '#FFFFFF', // indigo100\n borderBrandPrimary: '#6535BE', // indigo36\n\n brandSecondary: '#1B0045', // indigo6\n brandSecondaryHover: '#2C0069', // indigo13\n brandSecondaryActive: '#1B0045', // indigo6\n textOnBrandSecondary: '#E5D2FF', // indigo87\n\n textBrandOnSurface: '#9471D7', // indigo55\n\n textBrandOnElevated: '#9C79DB', // indigo58\n};\n","export type BorderRadiusOption =\n | 's'\n | 'm'\n | 'l'\n | 'xl'\n | 'xxl'\n | 'circle'\n | 'squared';\nexport const borderRadius = {\n s: '4px',\n m: '8px',\n l: '12px',\n xl: '16px',\n xxl: '24px',\n circle: '50%',\n squared: '0',\n};\nexport const shadowConfig = {\n color: '#2f343b25', // neutral075, 25% percentage\n};\nexport type ShadowPosition = 't' | 'c' | 'b';\n\nexport const shadow = (\n level: 0 | 1 | 2 | 3 | 4 | 5 = 0,\n shadowPosition: ShadowPosition = 'c'\n): string => {\n const shadowBlur = level === 0 ? 0 : 2 ** level;\n let offset = level === 0 ? 0 : shadowBlur / 2;\n if (shadowPosition === 'c') {\n offset = 0;\n }\n if (shadowPosition === 't') {\n offset = 0 - offset;\n }\n return `0 ${offset}px ${shadowBlur}px 0 ${shadowConfig.color}`;\n};\n","export const spacing = (...multipliers: number[]): string =>\n multipliers\n .map((v) => ` ${v * 4}px`)\n .join('')\n .substring(1);\n","import { DefaultTheme } from 'styled-components';\n\nimport { media } from './shared/base/media-queries';\nimport { getStyles, size } from './shared/base/typography';\nimport { Colors } from './shared/colors';\nimport { BASE_LIGHT_PALETTE } from './shared/palette/common-palette-light';\nimport { STUBHUB_LIGHT } from './shared/palette/stubhub-brand-palette';\nimport { borderRadius, shadow } from './shared/shape';\nimport { spacing } from './shared/spacing';\n\nconst purpleBranding = {\n primary100: Colors.indigo100,\n primary200: Colors.indigo200,\n primary700: Colors.indigo700,\n secondary075: Colors.fuchsia075,\n secondary100: Colors.fuchsia100,\n};\n\nexport const BaseTheme: DefaultTheme = {\n name: 'base',\n rounded: true,\n floatingInputLabel: true,\n filledInLoading: true,\n logoPath:\n '/images/Assets/Icons/bfx/stubhub-logo-merch-purple-mweb.440b3765.svg',\n colors: {\n primary025: Colors.indigo025,\n primary050: Colors.indigo050,\n primary060: Colors.indigo060,\n primary070: Colors.indigo070,\n primary075: Colors.indigo075,\n primary100: purpleBranding.primary100,\n primary150: purpleBranding.primary100, // need to be retired\n primary200: purpleBranding.primary200,\n primary300: Colors.indigo300,\n primary400: Colors.indigo300, // need to be retired\n primary500: Colors.indigo500,\n primary600: Colors.indigo600,\n primary700: Colors.indigo700,\n secondary: Colors.gray100, // we need to retire secondaryxx in phase3 and use newSecondary instead\n secondary100: Colors.gray100,\n secondary200: Colors.gray200,\n secondary300: Colors.gray300,\n secondary400: Colors.gray400,\n secondary450: Colors.gray450,\n secondary500: Colors.gray500,\n secondary600: Colors.gray600,\n secondary700: Colors.gray700,\n secondary800: Colors.gray800,\n secondary900: Colors.gray900,\n secondary1000: Colors.gray1000,\n secondary1200: Colors.gray250,\n newSecondary075: purpleBranding.secondary075, // need to rename to secondaryxx after we retire the above secondaryxx\n newSecondary100: purpleBranding.secondary100,\n newSecondary200: Colors.fuchsia200,\n newSecondary500: Colors.fuchsia500,\n newSecondary600: Colors.fuchsia600,\n newSecondary700: Colors.fuchsia700,\n accent075: Colors.aqua075,\n accent100: Colors.aqua100,\n accent200: Colors.aqua200,\n accent500: Colors.aqua500,\n accent600: Colors.aqua600,\n accent700: Colors.aqua700,\n // Please only use functional colors defined below, exclude the 'need to be retired'\n negative075: Colors.negative075,\n negative100: Colors.negative100,\n negative200: Colors.negative200,\n negative500: Colors.negative500,\n success075: Colors.success075,\n success100: Colors.success100,\n success500: Colors.success500,\n warning075: Colors.warning075,\n warning100: Colors.warning100,\n warning500: Colors.warning500,\n info075: Colors.info075,\n info100: Colors.info100,\n info200: Colors.info200,\n info300: Colors.info200, // need to be retired\n info500: Colors.info500,\n info1000: Colors.info075, // need to be retired\n\n textPrimary: Colors.neutral100, // this is the default text color\n textPrimaryHover: Colors.neutral200,\n textSecondary: purpleBranding.secondary100, // this is the fuchsia\n textBrand: purpleBranding.primary100, // this is primary branding color for each theme\n textBrandHover: purpleBranding.primary200,\n textDisabled: Colors.neutral300,\n textInverted: Colors.neutral1000,\n textStrong: Colors.neutral050,\n textDarker: Colors.neutral075,\n textDarkest: Colors.neutral025,\n textHighlight: purpleBranding.secondary100, // this is fuchsia\n textLinkPrimary: purpleBranding.primary200,\n textLinkActive: Colors.indigo500,\n textLinkHover: purpleBranding.primary100,\n textLinkVisited: Colors.indigo300,\n textLinksGroupPrimary: Colors.neutral100,\n textOnBrandBg: Colors.neutral1000, // this is text with brand color background, white for purple, black for vgg\n textOnBrandBgLink: Colors.indigo600, // this is navi with brand color background, white for purple, black for vgg\n textOnBrandBgHover: Colors.neutral1000,\n textNavPrimary: Colors.neutral100,\n textNavActive: Colors.indigo500,\n textNavHover: purpleBranding.primary100,\n textNavVisited: Colors.indigo300,\n textNegative: Colors.negative100,\n textSuccess: Colors.success100,\n textInfo: Colors.info100,\n textWarning: Colors.warning100,\n textLogoVggGray: Colors.gray200,\n textLogoVggGreen: Colors.green100,\n\n backgroundNegative: Colors.negative500,\n backgroundNegativeDark: Colors.negative100,\n backgroundNegativeHover: Colors.negative200,\n backgroundSuccess: Colors.success500,\n backgroundWarning: Colors.warning500,\n backgroundInfo: Colors.info500,\n backgroundPrimary: Colors.neutral1000, // this is default background color which is white\n backgroundSecondary: Colors.neutral600,\n backgroundInteraction: Colors.neutral600,\n backgroundHover: Colors.neutral200,\n backgroundDark: Colors.neutral075,\n backgroundNeutral: Colors.neutral100,\n backgroundDisabled: Colors.neutral300,\n backgroundActiveDisabled: Colors.neutral700,\n backgroundAccent100: Colors.aqua100, // this is background color of date picker\n backgroundAccent700: Colors.aqua700, // this is lighter background of date picker\n overlayPrimary: Colors.neutral000, // need to use with opacity 25%\n backgroundBrandActive: purpleBranding.primary100, // this is brand color as background\n backgroundBrandHover: purpleBranding.primary200,\n backgroundBrandLight: purpleBranding.primary700,\n iconPrimary: Colors.neutral100,\n iconHover: Colors.neutral200,\n iconDisabled: Colors.neutral300,\n\n borderPrimary: Colors.neutral400, // this is default border color\n borderActive: purpleBranding.primary100, // this is primary brand color as border color\n borderInverted: Colors.neutral1000, // white\n borderDark: Colors.neutral075,\n borderNeutral: Colors.neutral100,\n borderActiveDisabled: Colors.neutral300,\n borderDisabled: Colors.neutral500,\n borderNegative: Colors.negative100, // this is for error border\n\n link100: Colors.darkBlue250, // need to be retired\n highlight100: Colors.aqua100, // need to be retired\n highlight200: Colors.aqua200, // need to be retired\n highlight300: Colors.aqua200, // need to be retired\n highlight400: Colors.aqua200, // need to be retired\n highlight450: Colors.aqua500, // need to be retired\n highlight500: Colors.aqua500, // need to be retired\n highlight600: Colors.aqua500, // need to be retired\n highlight700: Colors.info075, // need to be retired\n urgency100: Colors.negative100, // need to be retired\n urgency200: Colors.negative200, // need to be retired\n urgency250: Colors.negative200, // need to be retired\n urgency300: Colors.negative200, // need to be retired\n urgency500: Colors.negative500, // need to be retired\n warning: Colors.warning100, // need to be retired\n danger200: Colors.warning100, // need to be retired\n error100: Colors.negative100, // need to be retired\n white: Colors.neutral1000, // need to be retired\n black: Colors.neutral000, // need to be retired\n },\n palette: {\n ...BASE_LIGHT_PALETTE,\n ...STUBHUB_LIGHT,\n },\n typography: {\n size,\n getStyles,\n },\n spacing,\n borderRadius,\n shadow,\n media,\n};\n","import { DefaultTheme } from 'styled-components';\n\nimport { BaseTheme } from './base-theme';\nimport { BASE_LIGHT_PALETTE } from './shared/palette/common-palette-light';\nimport { STUBHUB_LIGHT } from './shared/palette/stubhub-brand-palette';\n\nexport const PurpleTheme: DefaultTheme = {\n ...BaseTheme,\n name: 'purple',\n colors: { ...BaseTheme.colors }, // exactly the same as BaseTheme colors\n palette: {\n ...BASE_LIGHT_PALETTE,\n ...STUBHUB_LIGHT,\n },\n};\n","import { DefaultTheme } from 'styled-components/macro';\n\nimport { Colors } from './constants/colors';\nimport { PurpleTheme } from './legacy';\nimport {\n ThemeColors,\n ThemeMediaQuery,\n ThemeTypography,\n} from './legacy/theme-types';\n\ntype CustomDefaultTheme = DefaultTheme & {\n name: string;\n rounded: boolean;\n floatingInputLabel: boolean;\n filledInLoading: boolean;\n colors: ThemeColors;\n typography: ThemeTypography;\n spacing: (...multipliers: number[]) => string;\n media: ThemeMediaQuery;\n logoPath: string;\n};\n\nconst OldTheme = PurpleTheme as CustomDefaultTheme;\n\nexport const PurpleLegacyTheme: CustomDefaultTheme = {\n ...OldTheme /* We will slowly remove this as will fill in all the blanks */,\n colors: {\n ...OldTheme.colors,\n borderPrimary: Colors.neutral500,\n borderActive: Colors.indigo500,\n borderDark: Colors.neutral400,\n backgroundSecondary: Colors.neutral600,\n backgroundBrandLight: Colors.indigo700,\n },\n};\n","import { DefaultTheme } from 'styled-components/macro';\n\nimport { Colors } from './constants/colors';\nimport { PurpleTheme } from './legacy';\nimport {\n ThemeColors,\n ThemeMediaQuery,\n ThemeTypography,\n} from './legacy/theme-types';\n\ntype CustomDefaultTheme = DefaultTheme & {\n name: string;\n rounded: boolean;\n floatingInputLabel: boolean;\n filledInLoading: boolean;\n colors: ThemeColors;\n typography: ThemeTypography;\n spacing: (...multipliers: number[]) => string;\n media: ThemeMediaQuery;\n logoPath: string;\n};\n\nconst OldTheme = PurpleTheme as CustomDefaultTheme;\n\nexport const TicketUtilLegacyTheme: CustomDefaultTheme = {\n ...OldTheme /* We will slowly remove this as will fill in all the blanks */,\n colors: {\n ...OldTheme.colors,\n primary100: Colors.tuBlue100,\n primary200: Colors.tuBlue200,\n primary300: Colors.tuBlue300,\n primary400: Colors.tuBlue400,\n primary500: Colors.tuBlue500,\n primary600: Colors.tuBlue600,\n borderPrimary: Colors.neutral500,\n borderActive: Colors.tuBlue100,\n borderDark: Colors.neutral400,\n backgroundSecondary: Colors.neutral600,\n backgroundBrandActive: Colors.tuBlue100,\n backgroundBrandLight: Colors.tuBlue600,\n backgroundBrandHover: Colors.tuBlue200,\n backgroundDark: Colors.tuBlue025,\n textBrand: Colors.tuBlue100,\n textBrandHover: Colors.tuBlue200,\n textOnBrandBgLink: Colors.tuBlue600,\n },\n};\n","import { color, sizing } from './themeContract.css';\n\n/**\n * Theme for vanilla-extract\n */\nexport { purpleTheme } from './purpleTheme.css';\nexport { responsiveStyle } from './responsiveStyle';\nexport * as shared from './shared.css';\nexport { ticketUtilTheme } from './ticketUtilTheme.css';\n\nexport const vars = { ...sizing, color };\n/**\n * Theme for styled-components\n */\nexport { PurpleLegacyTheme } from './purpleLegacyTheme';\nexport { TicketUtilLegacyTheme } from './ticketUtilLegacyTheme';\n","export enum IconsFill {\n textPrimary = 'textPrimary',\n textStrong = 'textStrong',\n textBrand = 'textBrand',\n textDisabled = 'textDisabled',\n textSuccess = 'textSuccess',\n textNegative = 'textNegative',\n textInfo = 'textInfo',\n textWarning = 'textWarning',\n currentColor = 'currentColor',\n textInverted = 'textInverted',\n}\n\nexport enum PaymentSize {\n s = 's',\n l = 'l',\n}\n\nexport enum PaymentViewbox {\n square = '0 0 24 24',\n rect = '0 0 36 24',\n}\n","import clsx from 'clsx';\nimport { uniqueId } from 'lodash-es';\nimport React from 'react';\nimport { vars } from 'src/core/themes';\nimport { ThemeColors } from 'src/core/themes/legacy/theme-types';\nimport styled from 'styled-components';\n\nimport { IconsFill } from '../enums';\n\ntype WrapperPropType = {\n size?: string;\n fill?: IconsFill | string;\n title?: string;\n disabled?: boolean;\n align?: 'initial' | 'top' | 'bottom' | 'middle';\n withHoverEffect?: boolean;\n children: JSX.Element | JSX.Element[];\n onClick?: React.MouseEventHandler;\n onMouseDown?: React.MouseEventHandler;\n onMouseEnter?: React.MouseEventHandler;\n onMouseLeave?: React.MouseEventHandler;\n role?: React.AriaRole;\n ariaHidden?: React.AriaAttributes['aria-hidden'];\n className?: string;\n color?: string;\n stroke?: string;\n} & Pick, 'aria-label'>;\n\nexport const SvgWrapper = ({\n children,\n size = vars.iconSize.l,\n fill = IconsFill.textPrimary,\n title,\n disabled = false,\n align = 'initial',\n withHoverEffect = false,\n onClick,\n onMouseDown,\n onMouseEnter,\n onMouseLeave,\n role,\n ariaHidden,\n className,\n color,\n stroke,\n ...props\n}: WrapperPropType) => {\n const newUniqueId = uniqueId();\n\n return (\n \n {size && (\n \n \n \n )}\n {children}\n {title && {title}}\n \n );\n};\n\nconst StyledSvg = styled.svg<{\n withHoverEffect: boolean;\n disabled: boolean;\n align: string;\n}>`\n fill: ${(props) => {\n if (props.disabled) {\n return props.theme.colors.textDisabled;\n }\n if (props.fill === 'currentColor') {\n return 'currentColor';\n }\n return props.theme.colors[props.fill as keyof ThemeColors];\n }};\n cursor: ${(props) => (props.withHoverEffect ? 'pointer' : 'default')};\n pointer-events: ${(props) => (props.disabled ? 'none' : 'inherit')};\n\n &:hover {\n fill: ${(props) => {\n if (props.withHoverEffect && props.fill === 'textPrimary') {\n return props.theme.colors.textPrimaryHover;\n }\n if (props.withHoverEffect && props.fill === 'textBrand') {\n return props.theme.colors.textBrandHover;\n }\n return props.theme.colors[props.fill as keyof ThemeColors];\n }};\n }\n\n vertical-align: ${(props) => props.align};\n`;\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function AccessibilityIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function AisleSeatIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function ArtistIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function BackIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function BarcodeIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function CalendarOutlineIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function ChatIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function CheckIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\ntype ClockIconProps = Omit & { noOutline?: boolean };\n\nexport function ClockIcon({ noOutline, ...props }: ClockIconProps) {\n const fillColor = props.fill || '#9471D7';\n return (\n \n <>\n {!noOutline && (\n \n )}\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function ConnectedIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function CrossIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function DeleteIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport const DollarIcon = (props: IconsProps) => (\n \n \n \n);\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function DownloadIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function EditIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function ErrorOutlineIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function ErrorSolidIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function ExpandIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function FilterIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function FoldIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function ForwardIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function GenericDisclosuresIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function GenericFeatureIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function HideIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport const HistoryIcon = (props: IconsProps): React.ReactNode => (\n \n \n \n);\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function HomeOutlineIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function InfoOutlineIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function InfoSolidIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function ListIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function LoadingIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function LocationOutlineIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function LockIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function MailIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function MinusIcon(props: IconsProps) {\n return (\n \n \n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function MobileTicketIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function MobileTransferIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function MoreIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function MyTicketsOutlineIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function NotifyIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function ObstructedViewIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function PaperTicketOutlineIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function PaperTicketsOutlineIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function ParkingPassIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function PdfIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function PlusIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function PrintAtHomeIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function ProcessingIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function ProfileOutlineIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function ReloadIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function ResetIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function SearchOutlineIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function SearchSolidIcon(props: IconsProps) {\n return (\n \n \n \n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function SeatIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function SeatMapIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function SellOutlineIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function SettingsIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function ShareIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function SuccessOutlineIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import clsx from 'clsx';\nimport { uniqueId } from 'lodash-es';\nimport { ComponentPropsWithoutRef, forwardRef } from 'react';\nimport { vars } from 'src/core/themes';\nimport { mergeProps } from 'src/core/utils';\n\nimport { hoverEffect } from './SvgWrapper.css';\n\nexport type PosIconProps = ComponentPropsWithoutRef<'svg'> & {\n size?: string;\n withHoverEffect?: boolean;\n title?: string;\n disabled?: boolean;\n};\n\ntype ViewBoxProp = {\n /**\n * Custom viewbox definition should be defined specific to the SVG you're pulling from\n */\n viewBox: string;\n};\n\nexport const SvgWrapper = forwardRef(\n function SvgWrapper(\n {\n withHoverEffect,\n size = vars.iconSize.l,\n children,\n height,\n width,\n title,\n fill,\n stroke,\n disabled,\n ...props\n },\n ref\n ) {\n fill = disabled ? vars.color.textDisabled : fill;\n\n const [parsedWidth, parsedHeight] = [width, height].map((attr) =>\n attr != null ? parseInt(attr.toString(), 10) : attr\n );\n\n const inheritedWidth = parsedWidth ?? parsedHeight ?? 24;\n const inheritedHeight = parsedHeight ?? parsedWidth ?? 24;\n const newUniqueId = uniqueId();\n\n return (\n \n {size && (\n \n \n \n )}\n {children}\n {title && {title}}\n \n );\n }\n);\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function TicketAlertOutlineIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function ToBeDeterminedIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function UnHideIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function UploadIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function WalletOutlineIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function WarningOutlineIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { IconsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/icon-wrapper';\n\nexport function WarningSolidIcon(props: IconsProps) {\n return (\n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from 'src/svgs/SvgWrapper';\n\nexport function ArrowDownIcon(props: PosIconProps) {\n return (\n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from 'src/svgs/SvgWrapper';\n\nexport function ArrowDownIcon7(props: PosIconProps) {\n return (\n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from 'src/svgs/SvgWrapper';\n\nexport function ArrowUpIcon(props: PosIconProps) {\n return (\n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from 'src/svgs/SvgWrapper';\n\nexport function ArrowUpIcon7(props: PosIconProps) {\n return (\n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from 'src/svgs/SvgWrapper';\n\nexport function CalendarIcon(props: PosIconProps) {\n return (\n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from 'src/svgs/SvgWrapper';\n\nexport function ChevronDownIcon(props: PosIconProps) {\n return (\n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from 'src/svgs/SvgWrapper';\n\nexport function ChevronLeftIcon(props: PosIconProps) {\n return (\n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from 'src/svgs/SvgWrapper';\n\nexport function ChevronRightIcon(props: PosIconProps) {\n return (\n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from 'src/svgs/SvgWrapper';\n\nexport function ChevronUpIcon(props: PosIconProps) {\n return (\n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from 'src/svgs/SvgWrapper';\n\nexport function SigninIcon(props: PosIconProps) {\n return (\n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from 'src/svgs/SvgWrapper';\n\nexport function SignoutIcon(props: PosIconProps) {\n return (\n \n \n \n );\n}\n","import React from 'react';\n\nimport { PaymentSize, PaymentViewbox } from '../enums';\n\ntype WrapperPropType = {\n isSquare?: boolean;\n size?: PaymentSize;\n title?: string;\n disabled?: boolean;\n children: JSX.Element | JSX.Element[];\n onClick?: React.MouseEventHandler;\n onMouseDown?: React.MouseEventHandler;\n onMouseEnter?: React.MouseEventHandler;\n onMouseLeave?: React.MouseEventHandler;\n};\n\nconst sizes = {\n [PaymentSize.s]: {\n width: '24px',\n height: '16px',\n },\n [PaymentSize.l]: {\n width: '36px',\n height: '24px',\n },\n};\n\nexport const SvgWrapper = ({\n children,\n isSquare,\n size = PaymentSize.l,\n title,\n disabled = false,\n onClick,\n onMouseDown,\n onMouseEnter,\n onMouseLeave,\n}: WrapperPropType) => (\n \n {children}\n \n);\n","import { PaymentsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/payment-wrapper';\n\nexport function BankAccountIcon(props: PaymentsProps) {\n return (\n \n \n \n \n \n \n );\n}\n","import { PaymentsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/payment-wrapper';\n\nexport function GeneralIcon(props: PaymentsProps) {\n return (\n \n \n \n \n \n \n );\n}\n","import { PaymentsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/payment-wrapper';\n\nexport function PaypalIcon(props: PaymentsProps) {\n return (\n \n \n \n \n \n \n \n );\n}\n","import { PaymentsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/payment-wrapper';\n\nexport function WalletIcon(props: PaymentsProps) {\n return (\n \n \n \n );\n}\n","import { PaymentsProps } from '../icon-types';\nimport { SvgWrapper } from '../svg-wrapper/payment-wrapper';\n\nexport function WireIcon(props: PaymentsProps) {\n return (\n \n \n \n );\n}\n","import { RefObject, useRef } from 'react';\n\nexport type AnimateScrollDirection = 'up' | 'down' | 'left' | 'right';\n\nexport type AnimateScrollTimingFn = (elapsed: number) => number;\n\n/**\n * Timing function that slightly speeds up the scroll as time goes on.\n * @param elapsed\n * @returns `elapsed^1.05`\n */\nexport const defaultTimingFn: AnimateScrollTimingFn = (elapsed: number) =>\n Math.pow(elapsed, 1.05);\n\n/**\n * Hook for animating scrolling in a given direction.\n * @param ref\n * @param options\n * @returns\n */\nexport function useAnimateScroll(\n ref: RefObject,\n options?: {\n /**\n * Pixels per second.\n */\n pxPerSecond?: number;\n /**\n * This is used to modify the speed of the scroll.\n *\n * eg. If you return `Math.pow(elapsed, 1.1)`, this speeds up the scroll as you continue\n * scrolling.\n * @param elapsed Time elapsed in milliseconds\n * @returns Modified time elapsed in milliseconds\n */\n timingFn?: (elapsed: number) => number;\n }\n) {\n const { pxPerSecond = 500, timingFn = defaultTimingFn } = options ?? {};\n\n const scrollDirection = useRef();\n const rafHandle = useRef();\n const startScrollState = useRef<{ scrollTop: number; scrollLeft: number }>();\n const startTimestamp = useRef();\n const prevTimestamp = useRef();\n\n const animateScroll = (timestamp: number) => {\n if (ref.current) {\n const { scrollTop: startScrollTop, scrollLeft: startScrollLeft } =\n startScrollState.current ??\n (startScrollState.current = {\n scrollTop: ref.current.scrollTop,\n scrollLeft: ref.current.scrollLeft,\n });\n\n if (prevTimestamp.current !== timestamp) {\n const elapsed =\n timestamp -\n (startTimestamp.current ?? (startTimestamp.current = timestamp));\n const offset = pxPerSecond * (timingFn(elapsed) / 1000);\n switch (scrollDirection.current) {\n case 'up':\n ref.current.scrollTop = Math.max(startScrollTop - offset, 0);\n break;\n case 'down':\n {\n const maxScrollTop =\n ref.current.scrollHeight - ref.current.clientHeight;\n ref.current.scrollTop = Math.min(\n startScrollTop + offset,\n maxScrollTop\n );\n }\n break;\n case 'left':\n ref.current.scrollLeft = Math.max(startScrollLeft - offset, 0);\n break;\n case 'right':\n {\n const maxScrollLeft =\n ref.current.scrollWidth - ref.current.clientWidth;\n ref.current.scrollLeft = Math.min(\n startScrollLeft + offset,\n maxScrollLeft\n );\n }\n break;\n }\n prevTimestamp.current = timestamp;\n }\n }\n\n if (scrollDirection.current !== undefined) {\n rafHandle.current = requestAnimationFrame(animateScroll);\n }\n };\n\n return {\n scrollDirection,\n startScroll(direction: AnimateScrollDirection) {\n scrollDirection.current = direction;\n rafHandle.current = requestAnimationFrame(animateScroll);\n },\n endScroll() {\n if (rafHandle.current !== undefined) {\n cancelAnimationFrame(rafHandle.current);\n }\n scrollDirection.current = undefined;\n rafHandle.current = undefined;\n startScrollState.current = undefined;\n startTimestamp.current = undefined;\n prevTimestamp.current = undefined;\n },\n };\n}\n","import { isEqual } from 'lodash-es';\nimport { RefObject, useEffect, useState } from 'react';\n\nexport type ScrollEdgesState = {\n /**\n * `true` if scrolled to the very top of the scroll container\n */\n atTop: boolean;\n /**\n * `true` if scrolled to the very bottom of the scroll container\n */\n atBottom: boolean;\n /**\n * `true` if scrolled to the very left of the scroll container\n */\n atLeft: boolean;\n /**\n * `true` if scrolled to the very right of the scroll container.\n */\n atRight: boolean;\n};\n\n/**\n * Since the calculation for `atBottom` and `atRight` might have rounding errors due to the scroll\n * position, use a threshold to check whether we are at the bottom or right edge.\n */\nconst EDGE_THRESHOLD = 1;\n\nconst getScrollEdgesState = (el: HTMLElement): ScrollEdgesState => {\n return {\n atTop: el.scrollTop === 0,\n atBottom:\n Math.abs(el.scrollHeight - el.scrollTop - el.clientHeight) <=\n EDGE_THRESHOLD,\n atLeft: el.scrollLeft === 0,\n atRight:\n Math.abs(el.scrollWidth - el.scrollLeft - el.clientWidth) <=\n EDGE_THRESHOLD,\n };\n};\n\n/**\n * Hook for tracking whether user has scrolled to the edge of the given scroll container.\n * @param ref\n * @returns `ScrollEdgesState` with a boolean for whether scroll container is at each edge.\n */\nexport function useScrollEdges(ref: RefObject) {\n const [scrollEdgesState, _setScrollEdgesState] = useState({\n // since this is the most likely case, we start with top and left as true by default\n atTop: true,\n atBottom: false,\n atLeft: true,\n atRight: false,\n });\n const setScrollEdgesState = (val: ScrollEdgesState) =>\n _setScrollEdgesState((prev) => (isEqual(prev, val) ? prev : val));\n\n useEffect(() => {\n const el = ref.current;\n const resizeObserver = new ResizeObserver(() => {\n if (el) {\n setScrollEdgesState(getScrollEdgesState(el));\n }\n });\n if (el) {\n resizeObserver.observe(el);\n }\n return () => resizeObserver.disconnect();\n }, [ref]);\n\n useEffect(() => {\n const el = ref.current;\n const handleScroll = () => {\n if (el) {\n setScrollEdgesState(getScrollEdgesState(el));\n }\n };\n if (el) {\n setScrollEdgesState(getScrollEdgesState(el));\n el.addEventListener('scroll', handleScroll, {\n capture: false,\n passive: true,\n });\n }\n return () => {\n if (el) {\n el.removeEventListener('scroll', handleScroll);\n }\n };\n }, [ref]);\n\n return scrollEdgesState;\n}\n","import * as RadixScrollArea from '@radix-ui/react-scroll-area';\nimport clsx from 'clsx';\nimport {\n ComponentPropsWithoutRef,\n createContext,\n forwardRef,\n MutableRefObject,\n RefObject,\n useContext,\n useEffect,\n useImperativeHandle,\n useRef,\n} from 'react';\nimport { vars } from 'src/core/themes';\nimport { styledComponent } from 'src/core/utils';\nimport {\n BackIcon,\n ExpandIcon,\n FoldIcon,\n ForwardIcon,\n IconsFill,\n} from 'src/svgs/Viagogo';\n\nimport * as styles from './ScrollArea.css';\nimport { AnimateScrollDirection, useAnimateScroll } from './useAnimateScroll';\nimport { useScrollEdges } from './useScrollEdges';\n\nconst ScrollAreaContext = createContext<{\n viewportRef: RefObject;\n}>({\n viewportRef: {\n current: null,\n },\n});\n\nconst Root = styledComponent(RadixScrollArea.Root, styles.root);\n\nconst Viewport = styledComponent(RadixScrollArea.Viewport, styles.viewport);\n\nconst Scrollbar = styledComponent(RadixScrollArea.Scrollbar, styles.scrollbar);\n\nconst Thumb = styledComponent(RadixScrollArea.Thumb, styles.thumb);\n\nconst Corner = RadixScrollArea.Corner;\n\nexport interface ScrollAreaActions {\n startScroll: (direction: AnimateScrollDirection) => void;\n}\n\nexport interface ScrollAreaRefActions {\n scrollAreaRefActions?: MutableRefObject;\n scrollButtonClassName?: Record<'up' | 'down' | 'left' | 'right', string>;\n}\n\n/**\n * Use for a scrolling area that overlays the scrollbar on top of the content instead of offsetting\n * the content to the side.\n */\nexport const ScrollArea = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef & {\n /**\n * Whether to show arrows at the edge of the scroll container that can be hovered to scroll.\n */\n showScrollEdges?: boolean;\n } & ScrollAreaRefActions\n>(function ScrollArea(\n {\n children,\n showScrollEdges = false,\n scrollAreaRefActions,\n scrollButtonClassName,\n ...props\n },\n ref\n) {\n const viewportRef = useRef(null);\n return (\n \n \n {children}\n {showScrollEdges && (\n \n )}\n \n \n \n \n \n \n \n \n \n );\n});\n\ntype ScrollEdgesProps = ScrollAreaRefActions;\n\nfunction ScrollEdges({\n scrollAreaRefActions,\n scrollButtonClassName,\n}: ScrollEdgesProps) {\n const { viewportRef } = useContext(ScrollAreaContext);\n const { scrollDirection, startScroll, endScroll } =\n useAnimateScroll(viewportRef);\n const edges = useScrollEdges(viewportRef);\n\n useEffect(() => {\n if (\n (scrollDirection.current === 'up' && edges.atTop) ||\n (scrollDirection.current === 'down' && edges.atBottom) ||\n (scrollDirection.current === 'left' && edges.atLeft) ||\n (scrollDirection.current === 'right' && edges.atRight)\n ) {\n endScroll();\n }\n }, [edges, scrollDirection, endScroll]);\n\n useImperativeHandle(\n scrollAreaRefActions,\n () => ({\n startScroll: startScroll,\n }),\n [startScroll]\n );\n\n return (\n <>\n {!edges.atTop && (\n startScroll('up')}\n onMouseLeave={() => endScroll()}\n >\n \n \n )}\n {!edges.atBottom && (\n startScroll('down')}\n onMouseLeave={() => endScroll()}\n >\n \n \n )}\n {!edges.atLeft && (\n startScroll('left')}\n onMouseLeave={() => endScroll()}\n >\n \n \n )}\n {!edges.atRight && (\n startScroll('right')}\n onMouseLeave={() => endScroll()}\n >\n \n \n )}\n \n );\n}\n","import * as Select from '@radix-ui/react-select';\nimport { clsx } from 'clsx';\nimport {\n ComponentPropsWithoutRef,\n createContext,\n forwardRef,\n ReactNode,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { vars } from 'src/core/themes';\nimport {\n mergeProps,\n RADIX_COLLISION_PADDING,\n RADIX_SIDE_OFFSET,\n} from 'src/core/utils';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { CheckIcon, ExpandIcon, FoldIcon, IconsFill } from 'src/svgs/Viagogo';\n\nimport { Button } from '../Button';\nimport * as styles from './Select.css';\n\nconst SelectContext = createContext<{\n isDefaultValueSelected: boolean;\n}>({\n /**\n * Whether the default value is selected.\n */\n isDefaultValueSelected: true,\n});\n\nexport function Root(props: ComponentPropsWithoutRef) {\n const [isDefaultValueSelected, setIsDefaultValueSelected] = useState(\n (props.value ?? props.defaultValue) === props.defaultValue\n );\n return (\n \n {\n setIsDefaultValueSelected(value === props.defaultValue);\n },\n },\n props\n )}\n />\n \n );\n}\n\nexport const Trigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef & { hideFoldButton?: boolean }\n>(function Trigger(\n {\n children,\n variant = 'outlineGray',\n textColor = 'strong',\n shape = 'rect',\n hideFoldButton,\n ...props\n },\n ref\n) {\n const { isDefaultValueSelected } = useContext(SelectContext);\n return (\n \n \n {children}\n {!hideFoldButton && (\n <>\n \n \n \n \n \n \n \n )}\n \n \n );\n});\n\nexport const Value = forwardRef<\n HTMLSpanElement,\n ComponentPropsWithoutRef\n>(({ className, style, ...props }, ref) => {\n return (\n \n \n \n );\n});\nValue.displayName = 'Value';\n\nexport const Content = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef\n>(function Content({ children, ...props }, ref) {\n // This is for known issue:\n // Selecting an option triggers a touch event on elements positioned behind\n // https://github.com/radix-ui/primitives/issues/1658\n // It only happens on mobile and has no official solution yet\n // This is a workaround adapted from https://github.com/radix-ui/primitives/issues/1658#issuecomment-1695494301\n const isMobile = useMatchMedia('mobile');\n const contentRef = useRef(null);\n const onTouchEnd = (e: TouchEvent) => e.preventDefault();\n useEffect(() => {\n return () => {\n if (isMobile)\n contentRef.current?.removeEventListener('touchend', onTouchEnd);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {\n if (ref != null) {\n if (typeof ref === 'function') {\n ref(elem);\n } else {\n ref.current = elem;\n }\n }\n if (isMobile) {\n elem?.addEventListener('touchend', onTouchEnd);\n contentRef.current = elem;\n }\n }}\n position=\"popper\"\n sideOffset={RADIX_SIDE_OFFSET}\n collisionPadding={RADIX_COLLISION_PADDING}\n {...mergeProps({ className: styles.content }, props)}\n >\n \n \n \n {children}\n \n \n \n \n \n );\n});\n\nexport const Item = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef & { prefixIcon?: ReactNode }\n>(function Item({ children, prefixIcon, disabled, ...props }, ref) {\n return (\n \n {prefixIcon ? (\n
\n {prefixIcon}\n {children}\n
\n ) : (\n {children}\n )}\n \n \n \n \n );\n});\n","import { clsx } from 'clsx';\nimport { ReactNode } from 'react';\nimport { styled } from 'src/core/utils';\nimport * as styles from './SimpleTable.css';\n\nexport const Table = styled('table', styles.table);\n\ninterface TheadProps {\n children?: ReactNode;\n showBottomBorder?: boolean;\n}\nexport const Thead = ({ showBottomBorder = true, children }: TheadProps) => {\n return (\n \n {children}\n \n );\n};\n\nexport const Tbody = styled('tbody', styles.tbody);\n\nexport const Tr = styled('tr', styles.tr);\n\nexport const Th = styled('th', styles.th);\n\nexport const Td = styled('td', styles.td);\n","import * as RadixSwitch from '@radix-ui/react-switch';\nimport { mergeProps } from 'src/core/utils';\n\nimport * as styles from './Switch.css';\n\nexport const Switch = (props: RadixSwitch.SwitchProps) => (\n \n \n \n);\n","import { RecipeVariants } from '@vanilla-extract/recipes';\nimport { ComponentPropsWithoutRef, forwardRef, ReactElement } from 'react';\nimport { mergeProps } from 'src/core/utils';\n\nimport * as styles from './TextArea.css';\n\nexport const Root = forwardRef<\n HTMLDivElement,\n Omit, 'onChange' | 'onKeyDown' | 'onKeyUp'> &\n RecipeVariants & { disabled?: boolean }\n>(function Root(\n { variant = 'regular', shape = 'square', state, children, ...props },\n ref\n): ReactElement {\n return (\n \n {children}\n \n );\n});\n\nexport const Area = forwardRef<\n HTMLTextAreaElement,\n Omit, 'type' | 'children'> &\n RecipeVariants\n>(function Area({ alignment = 'left', ...props }, ref): ReactElement {\n return (\n \n );\n});\n","import { RecipeVariants } from '@vanilla-extract/recipes';\nimport { ComponentPropsWithoutRef, forwardRef, ReactElement } from 'react';\nimport { mergeProps } from 'src/core/utils';\n\nimport * as styles from './TextField.css';\n\nexport const Root = forwardRef<\n HTMLDivElement,\n Omit, 'onChange' | 'onKeyDown' | 'onKeyUp'> &\n RecipeVariants & { disabled?: boolean }\n>(function Root(\n { variant = 'regular', shape = 'square', state, children, ...props },\n ref\n): ReactElement {\n return (\n \n {children}\n \n );\n});\n\nexport const Input = forwardRef<\n HTMLInputElement,\n Omit, 'type' | 'children'> &\n RecipeVariants & {\n // We want to restrict the type prop to only textual type\n // Other input types will be handled with another control\n type?:\n | 'date'\n | 'datetime-local'\n | 'email'\n | 'file'\n | 'month'\n | 'number'\n | 'password'\n | 'search'\n | 'tel'\n | 'text'\n | 'time'\n | 'url'\n | 'week';\n }\n>(function Input(\n { type = 'text', alignment = 'left', onKeyDown, ...props },\n ref\n): ReactElement {\n return (\n {\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n // if the key presss is left or right arrow, we want to keep it from affecting outside controls\n e.stopPropagation();\n }\n\n onKeyDown?.(e);\n }}\n />\n );\n});\n\nexport const Area = forwardRef<\n HTMLTextAreaElement,\n Omit, 'type' | 'children'> &\n RecipeVariants\n>(function Area({ alignment = 'left', ...props }, ref): ReactElement {\n return (\n \n );\n});\n","import * as RadixTooltip from '@radix-ui/react-tooltip';\nimport clsx from 'clsx';\nimport {\n ComponentPropsWithoutRef,\n CSSProperties,\n forwardRef,\n ReactNode,\n} from 'react';\nimport { mergeProps, RADIX_COLLISION_PADDING } from 'src/core/utils';\n\nimport * as styles from './Tooltip.css';\n\nexport const Provider = RadixTooltip.Provider;\n\nexport const Root = RadixTooltip.Root;\n\nexport const Trigger = RadixTooltip.Trigger;\n\nexport const Content = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef & {\n contentVariant?: 'theme' | 'light' | 'dark' | 'darkGray';\n }\n>(function Content({ children, contentVariant, ...props }, ref) {\n return (\n \n \n {children}\n \n \n \n );\n});\n\nexport const Tooltip = ({\n triggerContent,\n children,\n delayDuration = 300,\n align = 'start',\n contentVariant,\n contentStyle,\n open,\n ...rest\n}: RadixTooltip.TooltipTriggerProps & {\n triggerContent: ReactNode;\n delayDuration?: RadixTooltip.TooltipProps['delayDuration'];\n onOpenChange?: RadixTooltip.TooltipProps['onOpenChange'];\n open?: RadixTooltip.TooltipProps['open'];\n align?: RadixTooltip.TooltipContentProps['align'];\n contentVariant?: 'theme' | 'light' | 'dark' | 'darkGray';\n contentStyle?: CSSProperties;\n}) => {\n return (\n \n \n \n {triggerContent}\n \n \n {children}\n
\n \n \n );\n};\n","import clsx from 'clsx';\nimport { ComponentPropsWithoutRef, CSSProperties, ReactNode } from 'react';\n\nimport { Button } from '../Button';\nimport { Popover } from '../Popover';\nimport * as styles from './TooltipPopover.css';\n\nexport const TooltipPopover = ({\n triggerContent,\n children,\n onClosed,\n contentVariant,\n contentStyle,\n ...rest\n}: ComponentPropsWithoutRef & {\n triggerContent: ReactNode;\n title?: string;\n onClosed?: () => void;\n contentVariant?: 'theme' | 'light' | 'dark' | 'darkGray';\n contentStyle?: CSSProperties;\n}) => {\n return (\n {\n if (!open) {\n onClosed?.();\n }\n }}\n >\n \n {\n e.stopPropagation();\n }}\n >\n {triggerContent}\n \n \n \n {children}\n \n \n \n );\n};\n","import clsx from 'clsx';\nimport { FormEvent } from 'react';\nimport { vars } from 'src/core/themes';\nimport { ArrowDownIcon, ArrowUpIcon } from 'src/svgs/Viagogo';\n\nimport { Button } from '../Button';\nimport { Stack } from '../Stack';\nimport * as styles from './UpDownComboButton.css';\n\nexport const UpDownComboButton = ({\n disabled,\n onUpClick,\n onDownClick,\n isCondensedView,\n}: {\n disabled?: boolean;\n onUpClick: (e: FormEvent) => void;\n onDownClick: (e: FormEvent) => void;\n isCondensedView?: boolean;\n}) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n","import { ComponentProps } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const OkButton = ({\n textContentId = ContentId.OK,\n variant = 'regular',\n ...rest\n}: { textContentId?: ContentId } & Omit<\n ComponentProps,\n 'children'\n>) => {\n return (\n \n );\n};\n","import { createContext, ReactNode, useContext, useState } from 'react';\n\nexport type IGenericDialogContext = {\n isDialogOpen: boolean;\n setIsDialogOpen: (isOpen: boolean) => void;\n};\n\nexport const GenericDialogContext = createContext({\n isDialogOpen: false,\n setIsDialogOpen: () => undefined,\n});\n\nexport const useGenericDialogContext = () => useContext(GenericDialogContext);\n\nexport function GenericDialogProvider({ children }: { children: ReactNode }) {\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n\n return (\n \n {children}\n \n );\n}\n","import { SiteZoomOption } from 'src/contexts/SiteTheme/SiteThemeContext';\n\nimport { useMatchMedia } from './useMatchMedia';\n\nexport const useDefaultZoomOption = () => {\n const isMobile = useMatchMedia('mobile');\n const isTablet = useMatchMedia('tablet');\n const isDesktop = useMatchMedia('desktop');\n const isLargeDesktop = useMatchMedia('largeDesktop');\n\n const defaultZoomOption = isMobile\n ? SiteZoomOption['100%']\n : isTablet\n ? SiteZoomOption['65%']\n : isLargeDesktop\n ? SiteZoomOption['100%']\n : isDesktop\n ? SiteZoomOption['75%']\n : SiteZoomOption['100%'];\n\n return defaultZoomOption;\n};\n","import * as Sentry from '@sentry/react';\nimport { ErrorTypes } from 'src/contexts/ErrorBoundaryContext';\n\n/*\nThis is meant for handling errors for any api calls, default to logging in console\nIf unauthorized, will redirect to the /unauthorized route\nCan supply a generic onError which can perform any custom action\n*/\nexport const tryInvokeApi = async (\n f: () => Promise,\n onError?: (error: ErrorTypes) => void,\n onFinally?: () => void\n) => {\n try {\n return await f();\n } catch (error: unknown) {\n console.error(error);\n if (!onError) {\n try {\n Sentry.captureException(error);\n } catch (err) {\n console.warn('Sentry log request failed', err);\n }\n }\n onError?.(error as ErrorTypes);\n } finally {\n onFinally?.();\n }\n\n return null;\n};\n","import * as Sentry from '@sentry/react';\nimport React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n AdminClient,\n CoBrandId,\n LoginContext,\n PosClientConfig,\n ReactAppContext,\n} from 'src/WebApiController';\n\nexport interface IAppContext {\n appContext?: ReactAppContext;\n mainRoute: MainRoute;\n setMainRoute: (view: MainRoute) => void;\n loginContext?: LoginContext | null;\n activeAccountUserId?: string | null;\n activeAccountWebClientConfig: PosClientConfig;\n setLoginContext: (context?: LoginContext | null) => void;\n cobrandId?: CoBrandId;\n overrideCoBrandId: (cobrandId: CoBrandId) => void;\n}\n\nconst emptyAppContext: IAppContext = {\n appContext: undefined,\n mainRoute: MainRoute.Home,\n loginContext: undefined,\n activeAccountWebClientConfig: {},\n setLoginContext: () => {},\n setMainRoute: () => {},\n cobrandId: undefined,\n overrideCoBrandId: () => {},\n};\n\nexport const AppContext = createContext(emptyAppContext);\n\nexport const useAppContext = () => useContext(AppContext);\n\nexport const AppContextProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const [loadingAppContext, setLoadingAppContext] = useState(false);\n const [reactAppContext, setReactAppContext] = useState();\n const [loginContext, setLoginContext] = useState<\n LoginContext | null | undefined\n >();\n const [mainRoute, setMainRoute] = useState(MainRoute.Home);\n\n const [cobrandIdOverride, setCobrandIdOverride] = useState<\n CoBrandId | undefined\n >(undefined);\n\n const initAppContextIfNeeded = useCallback(async () => {\n setLoadingAppContext(true);\n tryInvokeApi(\n async () => {\n setReactAppContext(await new AdminClient({}).getAppContext());\n setLoadingAppContext(false);\n },\n (error) => {\n showErrorDialog('AdminClient.getAppContext', error);\n }\n );\n }, [showErrorDialog]);\n\n useEffect(() => {\n if (!loadingAppContext && reactAppContext === undefined) {\n initAppContextIfNeeded();\n }\n }, [\n initAppContextIfNeeded,\n loginContext,\n loadingAppContext,\n reactAppContext,\n ]);\n\n const setLoginContextWrapper = useCallback((newLC?: LoginContext | null) => {\n if (newLC?.isSuccess && newLC?.user?.activeAccount.id != null) {\n // Add logging info of user context\n Sentry.setTag('seller-account-id', newLC.user.activeAccount.id);\n Sentry.setTag('seller-account', newLC.user.activeAccount.accountName);\n Sentry.setTag('user-id', newLC.user.userId);\n Sentry.setTag('user-name', newLC.user.userName);\n Sentry.setTag(\n 'impersonated-user-id',\n newLC.user.activeAccount?.impersonatedUserId\n );\n Sentry.setTag(\n 'impersonated-user',\n newLC.user.activeAccount?.impersonatedUsername\n );\n\n setLoginContext(newLC);\n }\n }, []);\n\n const activeAccountWebClientConfig = useMemo(\n () => ({\n activeAccountId: loginContext?.user?.activeAccount?.id,\n }),\n [loginContext?.user?.activeAccount?.id]\n );\n\n return (\n \n {children}\n \n );\n};\n","import { parseInt } from 'lodash-es';\nimport { Marketplace } from 'src/WebApiController';\n\nexport const STUBHUB_LOGO_IMAGE =\n 'https://img.vggcdn.net/images/Assets/Icons/bfx/stubhub-logo-merch-purple-mweb.440b3765.svg';\n\n// Regex for URL validation, basically any printable ASCII characters followed by a dot and then more printable ASCII characters\n// Intentionally not using a more complex regex to avoid false negatives\n// This is enough to filter out barcodes and other non-URL strings\nexport const URL_REGEX = /^([ -~])+\\.([ -~])+$/;\nexport const SEAT_RANGE_REGEX = /(\\w+)\\s*-\\s*(\\w+)/;\n\nexport const SaleDeeplinkQueryParam = 'uniqueSaleId';\nexport const InventoryDeeplinkQueryParam = 'uniqueInventoryId';\nexport const PurchaseDeeplinkQueryParam = 'uniquePurchaseId';\nexport const AdCampaignQueryParam = 'adCampaignId';\nexport const AdGroupListingsQueryParam = 'adGroupId';\nexport const PurchaseFromEmailPoQueryParam = 'fromEmailPo';\nexport const EventIdQueryParam = 'eventId';\nexport const SearchResultIdQueryParam = 'searchResultId';\nexport const VendorIdQueryParam = 'vendorId';\nexport const MarketplacePaymentIdDeeplinkQueryParam =\n 'uniqueMarketplacePaymentId';\n\nexport const EventSessionIdQueryParam = 'sessionId';\nexport const EventSessionRoleQueryParam = 'sessionRole';\n\nexport const DemandDashboardIsOnSaleEventQueryParam = 'isOnSaleEvent';\nexport const DemandDashboardEventIdQueryParam = 'eventId';\n\nexport const TICKETMASTER_APP_ID = 2;\nexport const EMPTY_SELLER_USER_ID = '00000000-0000-0000-0000-000000000000';\n\nexport const FULFILLMENT_PROVIDER_SELLER_USER_IDS = new Set(['']); // TODO: populate this after fulfillment providers are created\n\nexport const REACT_QUERY_PERSIST_TO_STORAGE_INTERVAL_IN_MS = 30000; // 30 sec\nexport const REACT_QUERY_CACHE_MAX_AGE_IN_MS = 1000 * 60 * 60 * 24; // 1 day\n\n// http://ecma-international.org/ecma-262/5.1/#sec-15.9.1.1\nexport const MAX_DATE = new Date(8640000000000000);\nexport const MIN_DATE = new Date(-8640000000000000);\n\nexport const DATA_REFRESH_RATE_IN_MILLIS_FAST = 5000; // 5 sec\nexport const DATA_REFRESH_RATE_IN_MILLIS_SHORT = 2 * 60 * 1000; // 2 min;\nexport const DATA_REFRESH_RATE_IN_MILLIS_LONG = 5 * 60 * 5000; // 5 min;\n\nexport const UK_COUNTRY_CODES = ['GB', 'GBR']; // the 2 and 3 letter codes for Great Britain\nexport const US_COUNTRY_CODES = ['US', 'USA', 'CA', 'PR'];\n\nexport const SuspiciousPriceChangeThreshold = 25;\n\nexport const MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS =\n parseInt(process.env.MAX_NUM_OF_ITEMS_IN_TABLES ?? '') || 10000; // This seems to be a good thredshold where bulk-edit and other operations would still perform\nexport const MAX_NUM_OF_ITEMS_FOR_REPORT_VIEWS =\n parseInt(process.env.MAX_NUM_OF_ITEMS_IN_REPORTS ?? '') || 10000;\n\nexport const VenueMapConfigPlaceholder = 'VENUE_MAP_CONFIG';\nexport const VenueMapVersionPlaceholder = 'VENUE_MAP_VERSION';\nexport const VenueMapUrl = `https://img.vggcdn.net/svgv2/${VenueMapConfigPlaceholder}.svg?v=${VenueMapVersionPlaceholder}`;\nexport const VenueMapV3Url = `https://img.vggcdn.net/svgv3/${VenueMapConfigPlaceholder}.svg?v=${VenueMapVersionPlaceholder}`;\n\n// process.env.**constants** go here\nexport const REACT_APP_STUBHUB_BASE_URL =\n process.env.REACT_APP_STUBHUB_BASE_URL;\nexport const REACT_APP_VIAGOGO_BASE_URL =\n process.env.REACT_APP_VIAGOGO_BASE_URL;\nexport const REACT_APP_CLOUDINARY_BASE_ADDRESS =\n process.env.REACT_APP_CLOUDINARY_BASE_ADDRESS;\nexport const REACT_APP_ASSETS_URL = process.env.REACT_APP_ASSETS_URL;\nexport const REACT_APP_APP_INSIGHTS = process.env.REACT_APP_APP_INSIGHTS;\nexport const REACT_APP_NAME =\n process.env.REACT_APP_NAME ?? 'StubHub.PointOfSale.Site';\nexport const REACT_APP_STUBHUB_MY_HUB_BASE_URL =\n process.env.REACT_APP_STUBHUB_MY_HUB_BASE_URL;\nexport const REACT_APP_STUBHUB_UK_URL = process.env.REACT_APP_STUBHUB_UK_URL;\nexport const REACT_APP_MESSAGES_BRIDGE_URL =\n process.env.REACT_APP_MESSAGES_BRIDGE_URL;\nexport const REACT_APP_REPORTS_BRIDGE_URL =\n process.env.REACT_APP_REPORTS_BRIDGE_URL;\n\nexport const DEFAULT_AUTO_GENERATED_PAYMENT_METHOD =\n 'Unknown_Payment_Auto_Generated';\n\n// Marketplace Event URL\nexport const MarketplaceEventIdPlaceholder = 'MKP_EVENT_ID';\nexport const MarketplaceEventUrlTemplate = {\n [Marketplace.Ticketmaster]: `https://www.ticketmaster.com/event/${MarketplaceEventIdPlaceholder}`,\n [Marketplace.VividSeats]: `https://www.vividseats.com/e/production/${MarketplaceEventIdPlaceholder}`,\n [Marketplace.SeatGeek]: `https://seatgeek.com/e/events/${MarketplaceEventIdPlaceholder}`,\n [Marketplace.Gametime]: `https://gametime.co/events/${MarketplaceEventIdPlaceholder}`,\n} as Record;\n","import { TelemetryProvider } from '@viagogo/telemetry-react';\nimport { PropsWithChildren } from 'react';\nimport {\n REACT_APP_APP_INSIGHTS,\n REACT_APP_NAME,\n} from 'src/utils/constants/constants';\n\nexport const AppTelemetryProvider = ({\n children,\n}: PropsWithChildren) => {\n if (REACT_APP_APP_INSIGHTS && REACT_APP_NAME) {\n return (\n \n {children}\n \n );\n }\n return <>{children};\n};\n","import { useQuery, UseQueryResult } from '@tanstack/react-query';\nimport { createContext, PropsWithChildren, useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { SellerUserClient, UserSetting } from 'src/WebApiController';\n\ntype UserSettingsMap = {\n [key in keyof typeof UserSetting]?: string;\n};\n\ntype ISellerUserSettingsContext = {\n queryResult: UseQueryResult;\n contextSettingIds: UserSetting[];\n contextQueryKey: (string | boolean | UserSetting[] | undefined)[];\n} | null;\n\nexport const SellerUserSettingsContext =\n createContext(null);\n\ntype SellerUserSettingsProviderProps = PropsWithChildren<{\n initialUserSettingIds: UserSetting[];\n currentLoginUserOnly: boolean;\n}>;\n\nexport const SellerUserSettingsProvider = ({\n initialUserSettingIds,\n currentLoginUserOnly,\n children,\n}: SellerUserSettingsProviderProps) => {\n const { trackError } = useErrorBoundaryContext();\n\n const { activeAccountWebClientConfig } = useAppContext();\n const sellerUserClient = useMemo(\n () => new SellerUserClient(activeAccountWebClientConfig),\n [activeAccountWebClientConfig]\n );\n\n const queryKey = [\n 'userSettings',\n activeAccountWebClientConfig.activeAccountId,\n currentLoginUserOnly,\n ...initialUserSettingIds,\n ];\n\n const queryResult = useQuery({\n queryKey,\n queryFn: async () => {\n return await sellerUserClient.getSellerUserSettings(\n initialUserSettingIds,\n currentLoginUserOnly ?? true\n );\n },\n\n meta: {\n persist: false,\n onError: (error: ErrorTypes) => {\n trackError('SellerUserClient.getSellerUserSettings', error, {\n trackErrorData: { initialUserSettingIds },\n });\n },\n },\n enabled: activeAccountWebClientConfig?.activeAccountId != null,\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n });\n\n return (\n \n {children}\n \n );\n};\n","import { useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useCallback, useContext, useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { SellerUserSettingsContext } from 'src/contexts/SellerUserSettingsContext';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n CustomQuickFilterOfListingQuery,\n CustomQuickFilterOfMarketplacePaymentQuery,\n CustomQuickFilterOfOnSaleEventQuery,\n CustomQuickFilterOfPurchaseOrderQuery,\n CustomQuickFilterOfSaleQuery,\n SellerUserClient,\n UserSetting,\n} from 'src/WebApiController';\n\n/**\n * Feature that is visible to the user for the first time.\n */\nexport enum FirstTimeFeature {\n EventMapBanner = 'EventMapBanner',\n}\n\n/**\n * Generic type for a `useUserSetting` hook.\n *\n * This can be implemented with different storage solutions.\n */\nexport type UseUserSettingHook = (options: {\n id?: UserSetting;\n currentLoginUserOnly?: boolean;\n}) => {\n value: T | undefined;\n setUserSetting: (value: T) => Promise;\n isLoading: boolean;\n};\n\n/**\n * An implementation of an `useUserSetting` hook using backend apis for storage.\n *\n * **NOTE**: Any getters and setters for settings with enum values from the backend should implement\n * custom overrides. These should be added in the sections marked with `ADD OVERRIDES HERE` in the\n * implementation.\n * @param option\n * @returns\n */\nexport const useServerUserSetting: UseUserSettingHook = ({\n id,\n currentLoginUserOnly = true,\n}: {\n id?: UserSetting;\n /* whether to use the active account's user or the login user (which includes impersonating user) Id */\n currentLoginUserOnly?: boolean;\n}) => {\n const { showErrorDialog, trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const sellerUserClient = useMemo(\n () => new SellerUserClient(activeAccountWebClientConfig),\n [activeAccountWebClientConfig]\n );\n\n // Try to use the seller user settings context if possible\n const sellerUserSettingsContext = useContext(SellerUserSettingsContext);\n const userSettingsContextQueryResult = sellerUserSettingsContext?.queryResult;\n const contextIsReady =\n userSettingsContextQueryResult != null &&\n userSettingsContextQueryResult?.isFetched &&\n !userSettingsContextQueryResult.isRefetching &&\n !userSettingsContextQueryResult?.isPending;\n\n const queryKey = useMemo(\n () => [\n 'userSetting',\n activeAccountWebClientConfig.activeAccountId,\n currentLoginUserOnly,\n id,\n contextIsReady,\n ],\n [\n activeAccountWebClientConfig.activeAccountId,\n contextIsReady,\n currentLoginUserOnly,\n id,\n ]\n );\n\n const result = useQuery({\n queryKey,\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) return null;\n\n // ADD OVERRIDES HERE FOR SETTINGS WITH ENUMS VALUES\n switch (id) {\n case UserSetting.QuickFiltersCustomInventory:\n return (await sellerUserClient.getCustomInventoryQuickFiltersSetting()) as T;\n case UserSetting.QuickFiltersCustomSales:\n return (await sellerUserClient.getCustomSalesQuickFiltersSetting()) as T;\n case UserSetting.QuickFiltersCustomPurchases:\n return (await sellerUserClient.getCustomPurchasesQuickFiltersSetting()) as T;\n case UserSetting.QuickFiltersStateMarketplacePayments:\n return (await sellerUserClient.getCustomMarketplacePaymentsQuickFiltersSetting()) as T;\n case UserSetting.QuickFiltersCustomOnSaleEvent:\n return (await sellerUserClient.getCustomOnSaleEventQuickFiltersSetting()) as T;\n }\n return defaultGetSellerUserSetting(currentLoginUserOnly);\n },\n\n enabled: activeAccountWebClientConfig?.activeAccountId != null,\n staleTime: Infinity, // We invalidate on user settings changed, so we don't need to make this stale\n refetchOnWindowFocus: false,\n meta: {\n persist: false,\n onError: (error: ErrorTypes) => {\n trackError('SellerUserClient.getSellerUserSetting', error, {\n trackErrorData: { id },\n });\n },\n },\n });\n\n const defaultGetSellerUserSetting = useCallback(\n async (currentLoginUserOnly?: boolean) => {\n if (!id) {\n return null;\n }\n\n if (sellerUserSettingsContext?.contextSettingIds?.includes(id)) {\n return null;\n }\n\n const resp = await sellerUserClient.getSellerUserSettings(\n [id],\n currentLoginUserOnly ?? false\n );\n\n const userSettingValue = resp[id];\n\n return userSettingValue == null\n ? null\n : (JSON.parse(userSettingValue) satisfies T);\n },\n [id, sellerUserClient, sellerUserSettingsContext?.contextSettingIds]\n );\n\n const defaultSetSellerUserSetting = useCallback(\n async (value: T, currentLoginUserOnly?: boolean) => {\n return await sellerUserClient.setSellerUserSetting(\n id,\n JSON.stringify(value),\n currentLoginUserOnly ?? true\n );\n },\n [id, sellerUserClient]\n );\n\n const queryClient = useQueryClient();\n const setUserSetting = useCallback(\n (value: T) => {\n if (!id) {\n return Promise.resolve(false);\n }\n\n if (sellerUserSettingsContext?.contextSettingIds.includes(id)) {\n const newData = {\n ...(sellerUserSettingsContext.queryResult.data ?? {}),\n [id]: JSON.stringify(value),\n };\n queryClient.setQueryData(\n sellerUserSettingsContext.contextQueryKey,\n newData\n );\n } else {\n queryClient.setQueryData(queryKey, value);\n }\n\n return tryInvokeApi(\n async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) return;\n\n let success = false;\n // ADD OVERRIDES HERE FOR SETTINGS WITH ENUMS VALUES\n switch (id) {\n case UserSetting.QuickFiltersCustomInventory:\n success =\n await sellerUserClient.setCustomInventoryQuickFiltersSetting(\n value as CustomQuickFilterOfListingQuery[]\n );\n break;\n case UserSetting.QuickFiltersCustomSales:\n success =\n await sellerUserClient.setCustomSalesQuickFiltersSetting(\n value as CustomQuickFilterOfSaleQuery[]\n );\n break;\n case UserSetting.QuickFiltersCustomPurchases:\n success =\n await sellerUserClient.setCustomPurchasesQuickFiltersSetting(\n value as CustomQuickFilterOfPurchaseOrderQuery[]\n );\n break;\n case UserSetting.QuickFiltersCustomMarketplacePayments:\n success =\n await sellerUserClient.setCustomMarketplacePaymentsQuickFiltersSetting(\n value as CustomQuickFilterOfMarketplacePaymentQuery[]\n );\n break;\n case UserSetting.QuickFiltersCustomOnSaleEvent:\n success =\n await sellerUserClient.setCustomOnSaleEventQuickFiltersSetting(\n value as CustomQuickFilterOfOnSaleEventQuery[]\n );\n break;\n default:\n success = await defaultSetSellerUserSetting(\n value,\n currentLoginUserOnly\n );\n break;\n }\n\n if (success) {\n if (sellerUserSettingsContext?.contextSettingIds.includes(id)) {\n queryClient.invalidateQueries({\n queryKey: sellerUserSettingsContext.contextQueryKey,\n });\n } else {\n queryClient.invalidateQueries({ queryKey });\n }\n }\n },\n (error) => {\n showErrorDialog('onSubmitChangePrice', error, {\n trackErrorData: {\n userSettings: queryKey,\n },\n });\n }\n );\n },\n [\n activeAccountWebClientConfig.activeAccountId,\n currentLoginUserOnly,\n defaultSetSellerUserSetting,\n id,\n queryClient,\n queryKey,\n sellerUserClient,\n sellerUserSettingsContext?.contextQueryKey,\n sellerUserSettingsContext?.contextSettingIds,\n sellerUserSettingsContext?.queryResult,\n showErrorDialog,\n ]\n );\n\n const getValue = useCallback(() => {\n if (id && sellerUserSettingsContext?.contextSettingIds?.includes(id)) {\n const userSettingValue = userSettingsContextQueryResult?.data?.[id];\n\n return userSettingValue == null\n ? null\n : (JSON.parse(userSettingValue) satisfies T);\n }\n\n return result.data;\n }, [\n id,\n result.data,\n sellerUserSettingsContext?.contextSettingIds,\n userSettingsContextQueryResult?.data,\n ]);\n\n return {\n value: getValue() ?? undefined,\n setUserSetting: setUserSetting,\n isLoading: result.isLoading,\n };\n};\n","import {\n createContext,\n ReactNode,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport { useDefaultZoomOption } from 'src/hooks/useDefaultZoomOption';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { UserSetting } from 'src/WebApiController';\n\nexport enum SiteZoomOption {\n '65%' = '65%',\n '75%' = '75%',\n '90%' = '90%',\n '100%' = '100%',\n}\n\nexport const DEFAULT_ZOOM_OPTION = SiteZoomOption['75%'];\n\nexport enum SiteTheme {\n Light = 'light',\n Dark = 'dark',\n}\n\nexport enum SiteThemeOption {\n Light = 'light',\n Dark = 'dark',\n System = 'system',\n}\n\nexport const SITE_THEME_MODE_STORAGE_KEY = 'userSetting_siteThemeMode';\nexport const SITE_ZOOM_STORAGE_KEY = 'userSetting_siteZoom';\n\ntype SiteThemeContextType = {\n isDarkMode: boolean;\n theme: SiteTheme;\n setSiteMode: (mode: SiteThemeOption) => void;\n setSiteZoom: (zoom: SiteZoomOption) => void;\n selectedMode: SiteThemeOption;\n selectedZoom: SiteZoomOption;\n isZoomSupported: boolean;\n hasFeature?: boolean;\n};\n\nconst siteThemeContextDefaults = {\n isDarkMode: false,\n theme: SiteTheme.Light,\n setSiteMode: () => void 0,\n setSiteZoom: () => void 0,\n selectedMode: SiteThemeOption.System,\n selectedZoom: DEFAULT_ZOOM_OPTION,\n isZoomSupported: false,\n};\n\nconst SiteThemeContext = createContext(\n siteThemeContextDefaults\n);\n\ntype SiteThemeContextProviderType = {\n children: ReactNode;\n};\n\nexport const SiteThemeContextProvider = ({\n children,\n}: SiteThemeContextProviderType) => {\n const systemSetting =\n window.matchMedia &&\n window.matchMedia('(prefers-color-scheme: dark)').matches\n ? SiteTheme.Dark\n : SiteTheme.Light;\n const modeToThemeMap = {\n [SiteThemeOption.System]: systemSetting,\n [SiteThemeOption.Dark]: SiteTheme.Dark,\n [SiteThemeOption.Light]: SiteTheme.Light,\n };\n\n const [isZoomSupported, setIsZoomSupported] = useState(false);\n const defaultZoomOption = useDefaultZoomOption();\n\n const [selectedZoom, setSelectedZoom] =\n useState(defaultZoomOption);\n const [selectedMode, setSelectedMode] = useState(\n SiteThemeOption.System\n );\n const theme = modeToThemeMap[selectedMode];\n const { value: serverSiteThemeValue, setUserSetting: setThemeUserSetting } =\n useServerUserSetting({\n id: UserSetting.SiteTheme,\n currentLoginUserOnly: true,\n });\n const { value: serverSiteZoomValue, setUserSetting: setZoomUserSetting } =\n useServerUserSetting({\n id: UserSetting.SiteZoom,\n currentLoginUserOnly: true,\n });\n\n const setSiteMode = (mode: SiteThemeOption) => {\n setThemeUserSetting(mode);\n localStorage.setItem(SITE_THEME_MODE_STORAGE_KEY, mode);\n setSelectedMode(mode);\n };\n\n const applyZoom = (zoom: SiteZoomOption) => {\n // TODO - all the zoom stuff is to be removed\n // We no longer use document style zoom\n // (document.body.style as CSSStyleDeclaration & { zoom: string }).zoom = zoom;\n };\n\n const setSiteZoom = (zoom: SiteZoomOption) => {\n setZoomUserSetting(zoom);\n localStorage.setItem(SITE_ZOOM_STORAGE_KEY, zoom);\n setSelectedZoom(zoom);\n applyZoom(zoom);\n };\n\n useEffect(() => {\n const lsScheme = localStorage.getItem(SITE_THEME_MODE_STORAGE_KEY) as\n | SiteThemeOption\n | undefined;\n const persistedSiteThemeMode =\n serverSiteThemeValue ?? lsScheme ?? SiteThemeOption.System;\n setSelectedMode(persistedSiteThemeMode);\n }, [serverSiteThemeValue]);\n\n useEffect(() => {\n const lsZoom = localStorage.getItem(SITE_ZOOM_STORAGE_KEY) as\n | SiteZoomOption\n | undefined;\n const persistedSiteZoom =\n serverSiteZoomValue ?? lsZoom ?? defaultZoomOption;\n setSelectedZoom(persistedSiteZoom);\n applyZoom(persistedSiteZoom);\n }, [defaultZoomOption, serverSiteZoomValue]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useSiteTheme = () => useContext(SiteThemeContext);\n","import { useCallback, useEffect, useState } from 'react';\n\n/**\n * Custom useKeyPress hook to only return whether a key is pressed or not\n * This is an alternative to the useKeyPress hook from react-use - it keeps re-rendering the component as long as the key is pressed\n */\nexport const useKeyPress = (targetKey: string) => {\n const [isPressed, setPressed] = useState(false);\n\n const downHandler = useCallback(\n ({ key }: KeyboardEvent) => {\n if (key === targetKey) {\n setPressed(true);\n }\n },\n [targetKey]\n );\n\n const upHandler = useCallback(\n ({ key }: KeyboardEvent) => {\n if (key === targetKey) {\n setPressed(false);\n }\n },\n [targetKey]\n );\n useEffect(() => {\n window.addEventListener('keydown', downHandler);\n window.addEventListener('keyup', upHandler);\n\n return () => {\n window.removeEventListener('keydown', downHandler);\n window.removeEventListener('keyup', upHandler);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return isPressed;\n};\n","import { useKeyPress } from 'src/hooks/useKeyPress';\n\nexport const useListenForEscapeKeyPressed = (): boolean => {\n return useKeyPress('Escape');\n};\n","import { ModalBody, ModalFooter, ModalHeader } from 'reactstrap';\nimport { vars } from 'src/core/themes';\nimport styled from 'styled-components';\n\nexport const DialogHeader = styled(ModalHeader)`\n justify-content: center;\n .modal-title {\n display: flex;\n flex-direction: row;\n align-items: center;\n }\n svg {\n vertical-align: text-bottom;\n }\n`;\n\nexport const DialogFooter = styled(ModalFooter)`\n border: none;\n padding-top: 0;\n`;\n\nexport const DialogBody = styled(ModalBody)`\n padding: ${() => `${vars.spacing.xl}`};\n max-height: 100%;\n overflow: hidden;\n`;\n\nexport const CrossIconContainer = styled.span`\n position: absolute;\n right: ${() => `${vars.spacing.xl}`};\n`;\n","import clsx from 'clsx';\nimport { ComponentProps, PropsWithChildren, useEffect } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { darkModeRoot } from 'src/app/App.css';\nimport { useGenericDialogContext } from 'src/contexts/GenericDialogContext/GenericDialogContext';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { vars } from 'src/core/themes';\nimport { useListenForEscapeKeyPressed } from 'src/hooks/useListenForEscapeKeyPressed';\nimport { CrossIcon } from 'src/svgs/Viagogo';\n\nimport * as styles from './GenericDialog.css';\nimport {\n CrossIconContainer,\n DialogBody,\n DialogFooter,\n DialogHeader,\n} from './GenericDialog.styled';\n\nexport type GenericDialogProps = {\n header: React.ReactNode;\n footer: React.ReactNode;\n includeCloseButton?: boolean;\n isFullHeight?: boolean;\n onCancel?: () => void;\n} & ComponentProps;\n\nexport const GenericDialog = ({\n header,\n footer,\n children,\n className,\n isFullHeight,\n contentClassName,\n includeCloseButton = true,\n scrollable = true,\n ...rest\n}: PropsWithChildren) => {\n const { isOpen, onCancel } = rest;\n const isEscapeKeyPressed = useListenForEscapeKeyPressed();\n const { setIsDialogOpen } = useGenericDialogContext();\n\n useEffect(() => {\n if (isEscapeKeyPressed && isOpen && onCancel) {\n onCancel();\n }\n }, [isEscapeKeyPressed, isOpen, onCancel]);\n\n useEffect(() => {\n if (isOpen) {\n setIsDialogOpen(true);\n } else {\n // Give time to run on next render so calling onCancel when Escape key\n // is pressed doesn't collide with dialog closed\n // (Escape key should run with dialog open).\n setTimeout(() => setIsDialogOpen(false), 100);\n }\n }, [isOpen, setIsDialogOpen]);\n\n const { isDarkMode } = useSiteTheme();\n return (\n \n \n {header}\n {includeCloseButton && rest.onCancel && (\n \n \n \n )}\n \n {children}\n {footer}\n \n );\n};\n","import { StatusCodes } from 'http-status-codes';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosUiActionResult } from 'src/WebApiController';\n\nimport { ContentId } from './constants/contentId';\n\nexport const getErrorInfoFromStatusCode = (\n statusCode?: number | null,\n messageText?: string | React.ReactNode | null\n) => {\n let header = ContentId.Error_InternalServerError_Header;\n let message = ContentId.Error_InternalServerError_GenericMessage;\n\n switch (statusCode) {\n case 400:\n header = ContentId.Error_BadRequest_Header;\n message = ContentId.Error_BadRequest_GenericMessage;\n break;\n\n case 401:\n header = ContentId.Error_Unauthorized_Header;\n message = ContentId.Error_Unauthorized_GenericMessage;\n break;\n\n case 403:\n header = ContentId.Error_Forbidden_Header;\n message = ContentId.Error_Forbidden_GenericMessage;\n break;\n\n case 404:\n header = ContentId.Error_NotFound_Header;\n message = ContentId.Error_NotFound_GenericMessage;\n break;\n\n case 408:\n header = ContentId.Error_RequestTimeout_Header;\n message = ContentId.Error_RequestTimeout_GenericMessage;\n break;\n\n case 501:\n header = ContentId.Error_NotImplemented_Header;\n message = ContentId.Error_NotImplemented_GenericMessage;\n break;\n\n case 502:\n header = ContentId.Error_BadGatewayError_Header;\n message = ContentId.Error_BadGatewayError_GenericMessage;\n break;\n\n default:\n if (messageText === 'Failed to fetch') {\n // These kinds of errors is when ajax couldn't hit the internet - there is no status\n // code returned with this error so that's why we can't catch it with status-code\n header = ContentId.Error_BadGatewayError_Header;\n message = ContentId.Error_BadGatewayError_GenericMessage;\n }\n break;\n }\n\n const headerDisplay = ;\n const messageDisplay =\n !messageText ||\n (typeof messageText === 'string' &&\n KnownGenericErrors.includes(messageText))\n ? message\n : undefined;\n\n return {\n headerDisplay: headerDisplay,\n messageDisplay: messageDisplay ? (\n \n ) : (\n messageText\n ),\n };\n};\n\nconst KnownGenericErrors = [\n 'An unexpected server error occurred.',\n 'Failed to fetch',\n];\n\nexport const isSuccess = (uiResult?: PosUiActionResult | null) => {\n return uiResult?.status === StatusCodes.OK;\n};\n","import React, { ComponentProps } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { vars } from 'src/core/themes';\nimport { ErrorSolidIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getErrorInfoFromStatusCode } from 'src/utils/errorUtils';\n\nimport * as styles from './ErrorDialog.css';\n\nexport type ErrorDialogProps = {\n statusCode?: number | null;\n messageText?: string | React.ReactNode | null;\n onOkay?: () => void;\n headerText?: React.ReactNode;\n} & ComponentProps;\n\nexport function ErrorDialog({\n statusCode,\n messageText,\n headerText,\n onOkay,\n ...rest\n}: ErrorDialogProps) {\n const { headerDisplay, messageDisplay } = getErrorInfoFromStatusCode(\n statusCode,\n messageText\n );\n const header = headerText ?? headerDisplay;\n\n return (\n \n \n \n }\n {...rest}\n includeCloseButton={false}\n >\n
\n \n {messageDisplay}\n
\n \n );\n}\n","import { useCallback, useState } from 'react';\n\nexport type BasicDialogProps = {\n closeDialog: () => void;\n launchDialog: () => void;\n dialogProps: {\n isOpen: boolean;\n onOkay: () => void;\n onCancel: () => void;\n };\n};\n\nexport const useBasicDialog = (\n options: {\n onOkay?: () => void;\n onCancel?: () => void;\n openByDefault?: boolean;\n } = {}\n): BasicDialogProps => {\n const [showDialog, setShowDialog] = useState(!!options.openByDefault);\n\n const launchDialog = useCallback(() => setShowDialog(true), [setShowDialog]);\n const closeDialog = useCallback(() => setShowDialog(false), [setShowDialog]);\n\n const handleOkay = useCallback(() => {\n closeDialog();\n options.onOkay?.();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options.onOkay, closeDialog]);\n\n const handleCancel = useCallback(() => {\n closeDialog();\n options.onCancel?.();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options.onCancel, closeDialog]);\n\n return {\n closeDialog,\n launchDialog,\n dialogProps: {\n isOpen: showDialog,\n onOkay: handleOkay,\n onCancel: handleCancel,\n },\n };\n};\n","import * as Sentry from '@sentry/react';\nimport { ObjectLiteral, useErrorTracker } from '@viagogo/telemetry-react';\nimport React, { useCallback, useContext, useMemo, useState } from 'react';\nimport { ErrorDialog } from 'src/dialogs/ErrorDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { REACT_APP_NAME } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { ApiException, LoginClient } from 'src/WebApiController';\nimport {\n ClientLogClient,\n ClientLogRequest,\n LogLevel,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useContent } from '../ContentContext';\n\nexport type ErrorTypes =\n | ApiException\n | null\n | undefined\n | {\n status?: number | null;\n message?: string | null;\n response?: string | null;\n };\n\nexport type IErrorBoundaryContext = {\n trackError: (\n errorId: string,\n error: ErrorTypes,\n data?: ObjectLiteral\n ) => void;\n showErrorDialog: (\n errorId: string,\n error:\n | ApiException\n | null\n | undefined\n | {\n status?: number | null;\n message?: string | null;\n response?: string | null;\n },\n additionalOptions?: {\n onDismissError?: () => void;\n customerHeader?: React.ReactNode;\n trackErrorData?: ObjectLiteral;\n }\n ) => void;\n genericError: string;\n};\n\nexport const ErrorBoundaryContext = React.createContext({\n trackError: () => {},\n showErrorDialog: () => {},\n genericError: '',\n});\n\nexport const useErrorBoundaryContext = () => useContext(ErrorBoundaryContext);\n\n/**\n * Adds a modal to the page where the provider is added\n * Provides utils to set all or update part of the modal\n * The modal is assumed to be open when it contains content\n */\nexport const ErrorBoundaryContextProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const [trackError] = useErrorTracker();\n\n const { activeAccountWebClientConfig } = useAppContext();\n\n const genericError = useContent(\n ContentId.Error_InternalServerError_GenericMessage\n );\n\n const { dialogProps, closeDialog, launchDialog } = useBasicDialog();\n\n const [message, setMessage] = useState();\n const [statusCode, setStatusCode] = useState();\n const [customerHeader, setCustomerHeader] = useState();\n const [onDismissError, setOnDismissError] = useState<() => void>();\n\n const logClient = useMemo(\n () => new ClientLogClient(activeAccountWebClientConfig),\n [activeAccountWebClientConfig]\n );\n\n const trackErrorWrapper = useCallback(\n async (\n errorId: string,\n error:\n | ApiException\n | null\n | undefined\n | {\n status?: number | null;\n message?: string | null;\n response?: string | null;\n },\n data?: ObjectLiteral\n ) => {\n if (error?.status === 401) {\n // If we get an unauthorized, reload the page which will cause the login change to either\n // pull the updated login, or redirect to login page\n window.location.assign('/login');\n }\n\n const getLogLevel = (\n status: number | null | undefined,\n message: string\n ) => {\n // Uncomment this to break here to debug when we have errors\n // that we want to convert to a warning\n // debugger;\n if (status === 401) {\n return LogLevel.Warning;\n }\n\n if (\n message === 'Failed to fetch' ||\n message == 'NetworkError when attempting to fetch resource.'\n ) {\n return LogLevel.Warning;\n }\n\n return LogLevel.Error;\n };\n\n try {\n Sentry.captureException(error);\n } catch (e) {\n console.warn('Sentry log request failed', e);\n }\n\n const message = error?.response ?? error?.message ?? genericError;\n const statusStr = error?.status ? `[StatusCode]: ${error.status}` : '';\n\n data = { ...(data ?? {}), response: error?.response };\n\n const dataSerialized = JSON.stringify(data);\n\n console.error(`[${errorId}] - ${message}\n[Details]:\n${statusStr}\n${dataSerialized}\n`);\n\n trackError(errorId, message, {\n data: dataSerialized,\n status: error?.status,\n response: error?.response,\n });\n\n const logRequest: ClientLogRequest = {\n logLevel: getLogLevel(error?.status, message),\n applicationSource: REACT_APP_NAME,\n errorId: errorId,\n error: message,\n pageUrl: window.location.href,\n componentStack: null,\n additionalInfo: {\n responseStatus: error?.status,\n data: dataSerialized,\n },\n };\n\n tryInvokeApi(\n async () => {\n logClient.log(logRequest);\n },\n () => {\n console.warn('Failed to log error to server');\n }\n );\n\n if (error?.status === 401) {\n // Check to see if the login-context is still good\n new LoginClient({}).getLoginContext('/').then((newLoginContext) => {\n if (\n !newLoginContext?.isSuccess ||\n newLoginContext?.user?.activeAccount?.id !==\n activeAccountWebClientConfig.activeAccountId\n ) {\n // Getting latest login unsuccessful, redirect to login to force re-sign-in\n window.location.assign('/login');\n }\n });\n }\n },\n [\n genericError,\n trackError,\n logClient,\n activeAccountWebClientConfig.activeAccountId,\n ]\n );\n\n const showErrorDialog = useCallback(\n (\n errorId: string,\n error:\n | ApiException\n | null\n | undefined\n | {\n status?: number | null;\n message?: string | null;\n response?: string | null;\n },\n additionalOptions?: {\n onDismissError?: () => void;\n customerHeader?: React.ReactNode;\n trackErrorData?: ObjectLiteral;\n }\n ) => {\n const { onDismissError, customerHeader, trackErrorData } =\n additionalOptions || {};\n\n const message = error?.response ?? error?.message ?? genericError;\n\n setMessage(message);\n setStatusCode(error?.status);\n setCustomerHeader(customerHeader);\n setOnDismissError(onDismissError);\n\n trackErrorWrapper(errorId ?? 'Generic Error', error, trackErrorData);\n\n launchDialog();\n },\n [genericError, launchDialog, trackErrorWrapper]\n );\n\n const onErrorOk = useCallback(() => {\n closeDialog();\n\n onDismissError?.();\n\n // Clear all the error dialog props after dismiss\n setMessage('');\n setStatusCode(undefined);\n setCustomerHeader(undefined);\n setOnDismissError(undefined);\n }, [closeDialog, onDismissError]);\n\n return (\n \n {children}\n \n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { ReactNode } from 'react';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { ContentClient } from 'src/WebApiController';\n\nimport { ContentProvider, ContentResolverParams } from './ContentContext';\n\nexport function SiteContentProvider({ children }: { children?: ReactNode }) {\n const { trackError } = useErrorBoundaryContext();\n\n const contentQuery = useQuery({\n queryKey: ['ContentClient.getContentDataMap'],\n queryFn: () =>\n tryInvokeApi(\n async () => {\n const client = new ContentClient({});\n return await client.getContentDataMap();\n },\n (error) => {\n trackError('ContentClient.getContentDataMap', error);\n }\n ),\n\n staleTime: Infinity, // site content don't change unless re-compile, and we already invalidate on reload\n refetchOnWindowFocus: false,\n networkMode: 'offlineFirst',\n });\n\n return (\n contentQuery.data?.[id] != null,\n get: (id: string) => contentQuery.data?.[id]?.body || undefined,\n }}\n contentResolver={contentResolver}\n >\n {children}\n \n );\n}\n\n// TODO: Website had this as a fetch to their content api route\n// in order to pull more content, we currently don't need this.\n// For ref: https://dev.azure.com/viagogo/Website/_git/Viagogo.Site?path=/Viagogo.Site.Script/Scripts/react/website-apps/shared/components/content/SiteContentProvider.js&version=GBmain&line=25&lineEnd=26&lineStartColumn=1&lineEndColumn=1&lineStyle=plain&_a=contents\nconst contentResolver = (content: ContentResolverParams) =>\n Array.isArray(content)\n ? content.map(({ id, defaultValue }) => defaultValue || id)\n : content.defaultValue || content.id;\n","import {\n Listing,\n Permission,\n PurchaseOrder,\n Sale,\n UserDetail,\n} from 'src/WebApiController';\n\nexport const hasPermission = (\n userDetail: UserDetail | null | undefined,\n permission: Permission\n): boolean => {\n const { permissions: userPermissions } = userDetail || {};\n\n if (!userPermissions) {\n return false;\n }\n\n return userPermissions.filter((p) => p === permission).length > 0;\n};\n\nexport const hasAnyOfPermissions = (\n userDetail: UserDetail | null | undefined,\n permissions: Permission[]\n): boolean => {\n const { permissions: userPermissions } = userDetail || {};\n\n if (!userPermissions) {\n return false;\n }\n\n return userPermissions.filter((p) => permissions.includes(p)).length > 0;\n};\n\n// --- All permission-base actions --- //\n\nexport const canPriceInventory = (\n userDetail: UserDetail | null | undefined,\n pricerId: string | null\n) => {\n // If user is only a pricer, then they can only price inventory where they're set to be the pricer\n if (\n hasPermission(userDetail, Permission.Inventory_SetPriceOnIsPricerOf) &&\n userDetail?.userId === pricerId\n ) {\n return;\n }\n\n // TODO - POS-865 - handle Permission.Inventory_SetPriceOnPurchasedBy\n\n return hasPermission(userDetail, Permission.Inventory_SetPrice);\n};\n\nexport const hasPermissionForListing = (\n userDetail: UserDetail | null | undefined,\n listing: Listing | null | undefined,\n forBulkEdit: boolean | undefined,\n root: Permission,\n isPricerOf?: Permission,\n isPurchasedBy?: Permission\n) => {\n if (userDetail == null) {\n return false;\n }\n if (\n hasAnyOfPermissions(userDetail, [root]) ||\n (listing != null && listing.id <= 0) // new create should always allow for current user\n ) {\n return true;\n }\n\n if (isPricerOf && hasAnyOfPermissions(userDetail, [isPricerOf])) {\n if (forBulkEdit) {\n return true; // for bulk-edit, we don't need to check against listing here\n }\n if (\n listing != null &&\n (listing.pricerId == null || // not priced by anyone means priced by everyone\n listing.pricerId ==\n (userDetail.activeAccount.impersonatedUserId ?? userDetail.userId))\n ) {\n return true;\n }\n }\n\n if (isPurchasedBy && hasAnyOfPermissions(userDetail, [isPurchasedBy])) {\n if (forBulkEdit) {\n return true; // for bulk-edit, we don't need to check against listing here\n }\n if (\n listing != null &&\n (listing.isCurUserPo ||\n !listing.poBys?.length || // not bought by anyone means bought by everyone\n listing.poBys.includes(\n userDetail.activeAccount.impersonatedUserId ?? userDetail.userId\n ))\n ) {\n return true;\n }\n }\n\n return false;\n};\n\nexport const hasPermissionForSale = (\n userDetail: UserDetail | null | undefined,\n sale: Sale | null | undefined,\n root: Permission,\n isFulfillerOf?: Permission,\n isPricerOf?: Permission,\n isPurchasedBy?: Permission\n) => {\n if (userDetail == null || sale == null) {\n return false;\n }\n if (\n hasAnyOfPermissions(userDetail, [root]) ||\n sale.id <= 0 // new create should always allow for current user)\n ) {\n return true;\n }\n\n if (isFulfillerOf && hasAnyOfPermissions(userDetail, [isFulfillerOf])) {\n if (\n sale.fulfillerId == null || // not fulfill by anyone means fulfill by everyone\n sale.fulfillerId ==\n (userDetail.activeAccount.impersonatedUserId ?? userDetail.userId)\n ) {\n return true;\n }\n }\n\n if (isPricerOf && hasAnyOfPermissions(userDetail, [isPricerOf])) {\n if (\n !sale.owners?.pricerIds?.length || // not priced by anyone means priced by everyone\n sale.owners.pricerIds.includes(\n userDetail.activeAccount.impersonatedUserId ?? userDetail.userId\n )\n ) {\n return true;\n }\n }\n\n if (isPurchasedBy && hasAnyOfPermissions(userDetail, [isPurchasedBy])) {\n if (\n !sale.owners?.buyerIds?.length || // not bought by anyone means bought by everyones\n sale.owners.buyerIds.includes(\n userDetail.activeAccount.impersonatedUserId ?? userDetail.userId\n )\n ) {\n return true;\n }\n }\n\n return false;\n};\n\nexport type PurchaseInfoForPermission = Pick;\n\nexport const hasPermissionForPurchase = (\n userDetail: UserDetail | null | undefined,\n purchase: PurchaseInfoForPermission | null | undefined,\n root: Permission,\n isPurchasedBy?: Permission,\n allowForNewCreate = true\n) => {\n if (userDetail == null) {\n return false;\n }\n const perms = [root];\n if (isPurchasedBy) {\n perms.push(isPurchasedBy);\n }\n if (\n hasAnyOfPermissions(userDetail, perms) ||\n (allowForNewCreate && (purchase == null || purchase.id <= 0))\n ) {\n return true;\n }\n\n return false;\n};\n","import { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport {\n Feature,\n FeatureDetail,\n FeatureState,\n MarketplaceAccountSetting,\n Permission,\n SellerAccount,\n UserDetail,\n} from 'src/WebApiController';\n\nimport { hasAnyOfPermissions } from './userPermissionUtils';\n\nexport const ALL_INVENTORY_VIEW_PERMISSIONS = [\n Permission.Inventory_ViewAll,\n Permission.Inventory_ViewRecent,\n Permission.Inventory_ViewRecentFromExternalMarketplace,\n Permission.Inventory_ViewListingOnIsPricerOf,\n Permission.Inventory_ViewListingsOnPurchasedBy,\n Permission.Inventory_ViewFulfillmentArtifactsOnPurchasedBy,\n Permission.Inventory_ViewFulfillmentArtifactsOnIsPricerOf,\n];\n\nexport const ALL_SALES_VIEW_PERMISSIONS = [\n Permission.Sales_ViewAll,\n Permission.Sales_ViewRecent,\n Permission.Sales_ViewSalesOnIsFulfillerOf,\n Permission.Sales_ViewSalesOnIsPricerOf,\n Permission.Sales_ViewSalesOnIsPricerOf,\n];\n\nconst checkFeatureState = (\n feature: Feature,\n featureDetails: FeatureDetail[] | null | undefined\n) => {\n const fDetails = featureDetails?.find((fd) => fd.id === feature);\n if (fDetails) {\n if (fDetails.state === FeatureState.Disabled) return false;\n else if (fDetails.state === FeatureState.GeneralAvailability) return true;\n else {\n return undefined;\n }\n }\n};\n\nexport const isMarketplaceActive = (\n marketplaceSetting: MarketplaceAccountSetting | null | undefined\n) => {\n if (marketplaceSetting == null) {\n return false;\n }\n\n return (\n marketplaceSetting.isEnabled &&\n (marketplaceSetting.hasApiToken || marketplaceSetting.hasApiRefreshToken) &&\n !marketplaceSetting.tokenExpired\n );\n};\n\nexport const hasAccessToRoute = (\n userDetail: UserDetail | null | undefined,\n featureDetails: FeatureDetail[] | null | undefined,\n route: MainRoute\n): boolean => {\n let state = undefined;\n switch (route) {\n case MainRoute.Discovery:\n return hasFeature(userDetail, featureDetails, Feature.EventDiscoveryPage);\n case MainRoute.Inventory:\n case MainRoute.InventoryEvent:\n case MainRoute.InventorySearch:\n if (\n !hasAnyOfPermissions(userDetail, [\n Permission.Inventory_ViewAll,\n Permission.Inventory_ViewRecent,\n Permission.Inventory_ViewRecentFromExternalMarketplace,\n Permission.Inventory_ViewListingOnIsPricerOf,\n Permission.Inventory_ViewListingsOnPurchasedBy,\n ])\n ) {\n return false;\n }\n if (route === MainRoute.InventorySearch) {\n return hasFeature(\n userDetail,\n featureDetails,\n Feature.SearchView_Inventory\n );\n }\n return true;\n\n case MainRoute.Sales:\n case MainRoute.SalesEvent:\n case MainRoute.SalesSearch:\n if (\n !hasAnyOfPermissions(userDetail, [\n Permission.Sales_ViewAll,\n Permission.Sales_ViewRecent,\n Permission.Sales_ViewRecentFromExternalMarketplace,\n Permission.Sales_ViewSalesOnIsFulfillerOf,\n Permission.Sales_ViewSalesOnIsPricerOf,\n Permission.Sales_ViewSalesOnPurchasedBy,\n ])\n ) {\n return false;\n }\n\n if (route === MainRoute.SalesSearch) {\n return hasFeature(userDetail, featureDetails, Feature.SearchView_Sale);\n }\n return true;\n\n case MainRoute.Purchases:\n case MainRoute.PurchasesEvent:\n case MainRoute.PurchaseSearch:\n if (\n !hasAnyOfPermissions(userDetail, [\n Permission.Purchases_ViewAll,\n Permission.Purchases_ViewOwned,\n Permission.Purchases_ViewRecent,\n ])\n ) {\n return false;\n }\n if (route === MainRoute.PurchaseSearch) {\n return hasFeature(\n userDetail,\n featureDetails,\n Feature.SearchView_Purchase\n );\n }\n return true;\n\n case MainRoute.SyncCenter:\n if (!hasAnyOfPermissions(userDetail, [Permission.SellerAccount_Admin])) {\n return false;\n }\n return true;\n\n case MainRoute.Reports:\n if (\n !hasAnyOfPermissions(userDetail, [\n Permission.Reports_ViewAll,\n Permission.Reports_ViewGlobalReports,\n Permission.Reports_ViewInventoryReports,\n Permission.Reports_ViewSalesReports,\n ])\n ) {\n return false;\n }\n return true;\n\n case MainRoute.Email: {\n if (\n !hasAnyOfPermissions(userDetail, [\n Permission.Purchases_ViewAll,\n Permission.Purchases_ViewOwned,\n Permission.Purchases_ViewRecent,\n Permission.SellerSupportCase_View,\n ])\n ) {\n return false;\n }\n\n return true;\n }\n\n case MainRoute.Home: {\n const hasInventoryView = hasAnyOfPermissions(\n userDetail,\n ALL_INVENTORY_VIEW_PERMISSIONS\n );\n const hasSalesView = hasAnyOfPermissions(\n userDetail,\n ALL_SALES_VIEW_PERMISSIONS\n );\n\n return hasInventoryView || hasSalesView;\n }\n case MainRoute.Notifications: {\n const hasInventoryView = hasAnyOfPermissions(\n userDetail,\n ALL_INVENTORY_VIEW_PERMISSIONS\n );\n const hasSalesView = hasAnyOfPermissions(\n userDetail,\n ALL_SALES_VIEW_PERMISSIONS\n );\n\n const hasHomePageNotifFeature = hasFeature(\n userDetail,\n featureDetails,\n Feature.HomePageNotifications\n );\n const canViewNotifications = hasAnyOfPermissions(userDetail, [\n Permission.General_ViewNotifications,\n ]);\n\n // Notifications only show changes to any Inv, Sales so only show if has access to both (until we fix ticket below)\n // https://thestubhub.atlassian.net/browse/POS-4047\n return (\n hasInventoryView &&\n hasSalesView &&\n hasHomePageNotifFeature &&\n canViewNotifications\n );\n }\n case MainRoute.SponsoredListings: {\n if (!hasAnyOfPermissions(userDetail, [Permission.AdPlatform_Edit])) {\n return false;\n }\n\n return hasFeature(userDetail, featureDetails, Feature.SponsoredListings);\n }\n case MainRoute.Payments: {\n if (!hasAnyOfPermissions(userDetail, [Permission.Accounting_ViewAll])) {\n return false;\n }\n\n return hasFeature(\n userDetail,\n featureDetails,\n Feature.MarketplacePaymentsTab\n );\n }\n case MainRoute.SellerAccountSetting:\n case MainRoute.Login:\n case MainRoute.SignUp:\n case MainRoute.LoginCallback:\n case MainRoute.LoginFailure:\n case MainRoute.Logout:\n case MainRoute.RedirectToUK:\n case MainRoute.Activity:\n case MainRoute.Settings:\n return true;\n\n case MainRoute.ReleaseNotes:\n if (\n !hasAnyOfPermissions(userDetail, [Permission.General_ViewReleaseNotes])\n ) {\n return false;\n }\n return true;\n\n case MainRoute.HelpCenter: {\n state = checkFeatureState(Feature.KnowledgePortalPage, featureDetails);\n const kbFEatureAvailable =\n state === undefined\n ? Boolean(userDetail?.features?.includes(Feature.KnowledgePortalPage))\n : Boolean(state);\n return kbFEatureAvailable;\n }\n\n case MainRoute.ReportsV2: {\n if (\n !hasAnyOfPermissions(userDetail, [\n Permission.Reports_ViewAll,\n Permission.Reports_ViewGlobalReports,\n Permission.Reports_ViewInventoryReports,\n Permission.Reports_ViewSalesReports,\n ])\n ) {\n return false;\n }\n\n state = checkFeatureState(Feature.ReportingV2, featureDetails);\n const reportingV2FeatureAvailable =\n state === undefined\n ? Boolean(userDetail?.features?.includes(Feature.ReportingV2))\n : Boolean(state);\n\n state = checkFeatureState(Feature.ReportSinglePagedV1V2, featureDetails);\n const reportSinglePagedV1V2FeatureAvailable =\n state === undefined\n ? Boolean(\n userDetail?.features?.includes(Feature.ReportSinglePagedV1V2)\n )\n : Boolean(state);\n return (\n reportingV2FeatureAvailable && !reportSinglePagedV1V2FeatureAvailable\n );\n }\n\n default:\n console.log(`Unhandled MainRoute: ${route}`);\n return false;\n }\n};\n\nexport const getHasAccessToRoutes = (\n userDetail?: UserDetail | null,\n featureDetails?: FeatureDetail[] | null\n) => {\n const possibleRoutes = [\n MainRoute.Home,\n MainRoute.Inventory,\n MainRoute.Sales,\n MainRoute.Purchases,\n MainRoute.Payments,\n MainRoute.Reports,\n MainRoute.Email,\n MainRoute.Settings,\n MainRoute.SponsoredListings,\n MainRoute.ReleaseNotes,\n ];\n return possibleRoutes.filter((r) =>\n hasAccessToRoute(userDetail, featureDetails, r)\n );\n};\n\nexport const hasFeature = (\n userDetail: UserDetail | null | undefined,\n featureDetails: FeatureDetail[] | null | undefined,\n feature: Feature\n): boolean => {\n const state = checkFeatureState(feature, featureDetails);\n\n const featuresOverride: Feature[] = [];\n\n // Comment this out to enable these features locally\n // *** NOTE - always comment out this line before check-in ***\n // featuresOverride.push(...[Feature.PosUiVersion2]);\n\n if (featuresOverride.includes(feature)) {\n return true;\n }\n\n return state === undefined\n ? Boolean(userDetail?.features?.includes(feature))\n : Boolean(state);\n};\n\nexport const sortSellerAccount = (accounts: SellerAccount[]) => {\n return accounts.toSorted((a, b) => {\n const aTag = `${a.impersonatedUsername ? '2' : '1'} - ${a.accountName}`;\n const bTag = `${b.impersonatedUsername ? '2' : '1'} - ${b.accountName}`;\n\n return aTag.localeCompare(bTag);\n });\n};\n\nexport const hasFeatures = (\n userDetail: UserDetail | null | undefined,\n featureDetails: FeatureDetail[] | null | undefined,\n features: Readonly\n): boolean => {\n return features.every((f) => hasFeature(userDetail, featureDetails, f));\n};\n","import { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { hasFeature } from 'src/utils/userUtils';\nimport { Feature } from 'src/WebApiController';\n\nexport const useUserHasFeature = (feature: Feature) => {\n const { appContext, loginContext } = useAppContext();\n\n const hasFeatureResult = useMemo(\n () => hasFeature(loginContext?.user, appContext?.features, feature),\n [appContext?.features, feature, loginContext?.user]\n );\n\n return hasFeatureResult;\n};\n","export const PosTablePaginationFooterHeight =\n '--pos-table-pagination-footer-height';\n","import { Row } from '@tanstack/react-table';\nimport {\n createContext,\n KeyboardEvent,\n ReactNode,\n useContext,\n useState,\n} from 'react';\n\ntype OnKeyDownHandler = (\n e: KeyboardEvent,\n index: number,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rows?: Row[]\n) => void;\n\ntype ActiveFocusContextType = {\n activeItem?: ActiveItem | null;\n setActiveItem: (activeItem: ActiveItem | undefined) => void;\n onKeyDownHandler: OnKeyDownHandler;\n};\n\nconst ActiveFocusContext = createContext({\n activeItem: null,\n setActiveItem: () => void 0,\n onKeyDownHandler: () => void 0,\n});\n\ntype ActiveFocusContextProviderProps = {\n children: ReactNode;\n};\n\ntype ActiveItem = {\n id: string;\n index: number;\n};\n\n/**\n * TODO: add jsdoc description\n */\nexport const ActiveFocusContextProvider = ({\n children,\n}: ActiveFocusContextProviderProps) => {\n const [activeItem, setActiveItem] = useState();\n const [rows, setRows] = useState[]>([]);\n\n // We have to take in rows as a parameter to track row order\n const onKeyDownHandler: OnKeyDownHandler = (e, index, inputRows) => {\n const { key } = e;\n const isArrowDown = key === 'ArrowDown';\n const isArrowUp = key === 'ArrowUp';\n const effectiveRows = inputRows ?? rows;\n\n if (!isArrowDown && !isArrowUp) return;\n e.preventDefault();\n\n const newIndex = isArrowUp\n ? index - 1 < 0\n ? effectiveRows.length - 1\n : index - 1\n : index + 1 > effectiveRows.length - 1\n ? 0\n : index + 1;\n\n if (inputRows) setRows(inputRows);\n setActiveItem({ id: effectiveRows[newIndex].id, index: newIndex });\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport const useActiveFocusContext = () => useContext(ActiveFocusContext);\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const IconButtonContainer = styled.div<{ disabled?: boolean }>`\n all: unset;\n cursor: ${(props) => (props.disabled ? 'default' : 'pointer')};\n opacity: ${(props) => (props.disabled ? 0.5 : 1)};\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: ${() => vars.borderRadius.s};\n padding: 2px ${() => vars.spacing.sm};\n transition: all 0.3s ease;\n max-width: fit-content;\n svg {\n cursor: pointer;\n }\n\n :hover {\n background: ${(props) => props.theme.colors.backgroundBrandLight};\n }\n`;\n","import { MouseEventHandler, ReactNode } from 'react';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { IconButtonContainer } from './IconButton.styled';\n\nexport const IconButton = ({\n icon,\n titleContentId,\n onClick,\n disabled,\n style,\n className,\n}: {\n icon: ReactNode;\n titleContentId?: ContentId | string;\n onClick?: MouseEventHandler;\n disabled?: boolean;\n style?: React.CSSProperties;\n className?: string;\n}) => {\n const title = useContent(titleContentId || ContentId.EmptyContent);\n\n return (\n \n {icon}\n \n );\n};\n","import { ReactNode } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Button, ButtonProps, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { IconButton } from './IconButton';\n\nexport const ButtonWithIcon = ({\n textContentId,\n titleContentId,\n icon,\n iconOnlyMode,\n onClick,\n disabled,\n variant,\n justifyContent,\n style,\n startWithText,\n ...rest\n}: {\n textContentId?: ContentId | string;\n titleContentId?: ContentId | string;\n icon?: ReactNode;\n iconOnlyMode?: boolean;\n onClick?: React.MouseEventHandler;\n startWithText?: boolean;\n} & Omit) => {\n const defaultStyle = variant === 'text' ? { width: '100%' } : {};\n return (\n <>\n {icon && iconOnlyMode ? (\n \n ) : (\n \n \n {startWithText ? (\n <>\n \n {icon}\n \n ) : (\n <>\n {icon}\n \n \n )}\n \n \n )}\n \n );\n};\n","import { ComponentProps } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const CancelButton = ({\n textContentId = ContentId.Cancel,\n variant,\n ...props\n}: { textContentId?: ContentId } & Omit<\n ComponentProps,\n 'children'\n>) => {\n const { isDarkMode } = useSiteTheme();\n const effectiveVariant = variant ?? (isDarkMode ? 'outlineGray' : 'outline');\n return (\n \n );\n};\n","import { ComponentProps } from 'react';\nimport { vars } from 'src/core/themes';\nimport { IconsFill, SuccessOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { ButtonWithIcon } from './ButtonWithIcon';\n\nexport const ConfirmButton = ({\n textContentId,\n iconOnlyMode,\n variant,\n icon,\n ...props\n}: ComponentProps) => {\n return (\n \n )\n }\n iconOnlyMode={iconOnlyMode}\n variant={variant}\n textContentId={textContentId || ContentId.ConfirmSale}\n />\n );\n};\n","import { ComponentProps } from 'react';\nimport { vars } from 'src/core/themes';\nimport { ErrorOutlineIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { ButtonWithIcon } from './ButtonWithIcon';\n\nexport const ExpireHoldButton = ({\n textContentId,\n iconOnlyMode,\n variant,\n ...props\n}: Omit, 'icon'>) => {\n return (\n \n }\n iconOnlyMode={iconOnlyMode}\n variant={variant}\n textContentId={textContentId || ContentId.ExpireHold}\n />\n );\n};\n","import { useCallback, useState } from 'react';\n\nexport type IListExpansion = {\n expandedListItems: TItemId[];\n setExpandedListItems: (items: TItemId[]) => void;\n toggleListItemExpansion: (items: TItemId[]) => boolean;\n setListItemExpansion: (open: boolean, items: TItemId[]) => void;\n refreshExpandedListItems: (refetchAll?: boolean) => Promise;\n};\n\nexport function useListExpansion(\n initialExpandedItems?: TItemId[]\n): IListExpansion {\n const [expandedListItems, setExpandedListItems] = useState(\n initialExpandedItems || []\n );\n\n const isListItemExpanded = useCallback(\n (itemId: TItemId) => {\n const indexOf = expandedListItems.indexOf(itemId);\n return indexOf >= 0;\n },\n [expandedListItems]\n );\n\n const toggleListItemExpansion = useCallback(\n (itemIds: TItemId[]) => {\n const curCount = expandedListItems.length;\n let newLists = [...expandedListItems];\n itemIds.forEach((itemId) => {\n const isItemExpanded = isListItemExpanded(itemId);\n if (isItemExpanded) {\n // If expanded, un-expanded it by removing it from the array\n newLists = newLists.filter((id) => id !== itemId);\n } else {\n // If not expanded, add it to the array\n newLists.push(itemId);\n }\n });\n\n setExpandedListItems(newLists);\n\n return newLists.length > curCount;\n },\n [expandedListItems, isListItemExpanded]\n );\n\n const setListItemExpansion = useCallback(\n (open: boolean, items: TItemId[]) => {\n let newLists = [...expandedListItems];\n let hasChanged = false;\n items.forEach((itemId) => {\n const isItemExpanded = isListItemExpanded(itemId);\n if (isItemExpanded !== open) {\n if (!open) {\n // If we want to not open, un-expanded it by removing it from the array\n newLists = newLists.filter((id) => id !== itemId);\n } else {\n // If we want to open, add it to the array\n newLists.push(itemId);\n }\n hasChanged = true;\n }\n });\n\n if (hasChanged) {\n setExpandedListItems(newLists);\n }\n },\n [expandedListItems, isListItemExpanded]\n );\n\n return {\n expandedListItems: expandedListItems,\n setExpandedListItems: setExpandedListItems,\n toggleListItemExpansion: toggleListItemExpansion,\n setListItemExpansion: setListItemExpansion,\n refreshExpandedListItems: () => Promise.resolve(),\n };\n}\n","import { IListingGroupItem, Listing, ListingGroup } from 'src/WebApiController';\n\nexport type GroupIdNameMap = Record;\n// Recursively flatten group items\nexport const getFlattenedListings = (\n listings?: Listing[] | null\n): [Listing[], Record] => {\n if (!listings) {\n return [[], {}];\n }\n const groupIdNameMap: GroupIdNameMap = {};\n\n // Recursively flatten group items\n const flattenGroupItems = (item: IListingGroupItem): Listing[] => {\n if (item.isLtGrp) {\n if (\n (item as ListingGroup).groupType === 'Leader' &&\n (item as ListingGroup).ltGrpId !== null\n ) {\n // Keep track of group id to group name mapping for display use\n groupIdNameMap[(item as ListingGroup).ltGrpId as string] = (\n item as ListingGroup\n ).groupName;\n }\n return [...(item as ListingGroup).groupItems.flatMap(flattenGroupItems)];\n }\n return [item as Listing];\n };\n\n const flattenedListings = listings.flatMap(flattenGroupItems);\n return [flattenedListings, groupIdNameMap];\n};\n","import { getFlattenedListings } from 'src/modals/MergeListings/utils';\nimport {\n ActionOutboxEntityType,\n CatalogResults,\n EventEntities,\n EventEntityCounts,\n EventWithData,\n Listing,\n} from 'src/WebApiController';\n\nimport { ExpandedEventData } from './CatalogDataContext.types';\n\nexport const updateCatalogResults = (\n catalogResults: CatalogResults,\n expandedEventsData: ExpandedEventData[]\n): CatalogResults => {\n if (!expandedEventsData || !expandedEventsData?.length) {\n return catalogResults;\n }\n\n const finalCatalogResults: CatalogResults = {\n ...catalogResults,\n events: { ...catalogResults.events },\n };\n\n for (const expandedEventData of expandedEventsData) {\n for (const eventId in expandedEventData) {\n const curEvent = finalCatalogResults.events[eventId];\n if (curEvent) {\n // Update listings\n const listings = expandedEventData[eventId].listings;\n let listGrpCnt = 0;\n let ungrListCnt = 0;\n listings?.forEach((listing: Listing) => {\n listing.isLtGrp ? listGrpCnt++ : ungrListCnt++;\n });\n\n const listCnt =\n listGrpCnt > 0\n ? getFlattenedListings(listings)[0].length // if has groups, get flattened listings\n : listings?.length; // else just use the item count\n\n const sales = expandedEventData[eventId].sales;\n const salesCnt = sales?.length;\n\n const ticketGroups = expandedEventData[eventId].ticketGroups;\n const tktGrpsCnt = ticketGroups?.length;\n\n if (listings || sales || ticketGroups) {\n finalCatalogResults.events[eventId] = {\n ...curEvent,\n entities: {\n ...(curEvent.entities ?? {}),\n listings,\n sales,\n ticketGroups,\n } as EventEntities,\n counts: {\n ...(curEvent.counts ?? {}),\n listCnt,\n listGrpCnt,\n ungrListCnt,\n salesCnt,\n tktGrpsCnt,\n } as EventEntityCounts,\n };\n }\n }\n }\n }\n\n return finalCatalogResults;\n};\n\nexport const getEventsWithNonZeroCounts = (\n entityType: ActionOutboxEntityType,\n data?: EventWithData[] | null,\n requireEventNotNull?: boolean\n) => {\n if (!data) {\n return [];\n }\n const filteredEvents = data.filter((ev) => {\n if (ev.counts == null) {\n return false;\n }\n\n if (requireEventNotNull && ev.event == null) {\n return false;\n }\n\n const count =\n entityType === ActionOutboxEntityType.Listing\n ? ev.counts.listCnt\n : entityType === ActionOutboxEntityType.Sale\n ? ev.counts.salesCnt\n : ev.counts.tktGrpsCnt || ev.counts.poCnt;\n\n return Boolean(count);\n });\n\n return filteredEvents;\n};\n\nexport const hasEventsWithFullLoadedData = (\n entityType: ActionOutboxEntityType,\n data?: EventWithData[] | null\n) => {\n if (!data) {\n return [];\n }\n const hasEventFullyLoaded = data.some((ev) => {\n if (ev.counts == null) {\n return false;\n }\n\n if (ev.event == null) {\n return false;\n }\n\n // The difference between this and the previous getEventsWithNonZeroCounts is that we check if the count is not null instead of checking if it is not 0.\n const count =\n entityType === ActionOutboxEntityType.Listing\n ? ev.counts.listCnt != null\n : entityType === ActionOutboxEntityType.Sale\n ? ev.counts.salesCnt != null\n : ev.counts.tktGrpsCnt != null || ev.counts.poCnt != null;\n\n return Boolean(count);\n });\n\n return hasEventFullyLoaded;\n};\n","import removeAccents from 'remove-accents';\n\n/**\n * Removes all non-alpha-numeric chars\n * using ~`!@#$%^&*()_-+={[}]|\\:;'\",<.>/?\n * @param str\n */\nexport const removeSpecialChars = (str: string): string => {\n return removeAccents(str).replace(\n /[\\/\\[\\^~`\\!@\\#\\$%\\^&\\*\\(\\)_\\-\\+\\=\\{\\[\\}\\]\\|\\\\\\:;\\\\'\\\\\",\\<\\.\\>\\\\\\/\\?\\]\\/g]/g,\n ''\n );\n};\n","export const DEFAULT_TIMEZONE_LOCAL =\n Intl.DateTimeFormat().resolvedOptions().timeZone;\n","/**\n * Standard\n */\nexport enum FormatOption_Standard {\n Millions = 'millions',\n Thousands = 'thousands',\n Whole = 'whole',\n Precise = 'precise',\n}\n\nexport enum FormatOption_Seating {\n // Used by listing only\n Seating_OriginalSeating = 'originalSeating',\n // For listing this is the remaining seating available\n Seating_FullSeating = 'fullSeating',\n Seating_SectionOnly = 'sectionOnly',\n}\n\nexport enum FormatOption_Event {\n Event_FullInfo = 'fullEventInfo',\n Event_EventName = 'eventName',\n}\n\nexport enum FormatOption_DateTime {\n DateTime_MMDD = 'MM/DD',\n DateTime_MMDD_Time = 'MM/DD Time',\n DateTime_MMDD_Time_Day = 'MM/DD Time, Day',\n DateTime_MMDDYY = 'MM/DD/YY',\n DateTime_MonthDD = 'Month DD',\n DateTime_MonthDD_Time = 'Month DD Time',\n DateTime_MonthDD_Time_Day = 'Month DD Time, Day',\n DateTime_Month_DD_YY = 'Month DD YY',\n DateTime_Month_DD_YY_Time = 'Month DD YY, Time',\n DateTime_Month_DD_YY_Time_Day = 'Month DD YY, Time, Day',\n}\n\nexport enum FormatOption_EnumDisplay {\n EnumDisplay_Icon = 'icon',\n EnumDisplay_Text = 'text',\n}\n\n/**\n * Percentage options\n */\nexport enum FormatOption_Percent {\n Percent_RoundToTwo = 'per_2dp',\n Percent_RoundToOne = 'per_1dp',\n Percent_RoundToWhole = 'per_0dp', // (Whole)\n Percent_AsDecimal_RoundToOne = 'dec_1dp',\n Percent_AsDecimal_RoundToTwo = 'dec_2dp',\n Percent_AsDecimal_RoundToThree = 'dec_3dp',\n}\n\nexport enum FormatOption_HiddenCustomFormat {\n // This is a hack to show action column - link only\n Actions_LinkOnly = 'Actions_LinkOnly',\n // This is a hack to show external ID column (ID only, no marketplace or metadata)\n Id_RawIdOnly = 'Id_RawIdOnly',\n}\n\nexport const FormatOption = {\n ...FormatOption_Standard,\n ...FormatOption_Seating,\n ...FormatOption_Event,\n ...FormatOption_DateTime,\n ...FormatOption_EnumDisplay,\n ...FormatOption_Percent,\n ...FormatOption_HiddenCustomFormat,\n} as const;\nexport type FormatOption = (typeof FormatOption)[keyof typeof FormatOption];\n\nexport const enum FormatOptionType {\n Standard = 'standard',\n Seating = 'seating',\n Event = 'event',\n DateTime = 'dateTime',\n EnumDisplay = 'enumDisplay',\n Percentage = 'percentage',\n}\n","import { Temporal, toTemporalInstant } from '@js-temporal/polyfill';\nimport {\n add,\n addDays,\n differenceInDays,\n differenceInHours,\n Duration,\n endOfDay,\n endOfMonth,\n endOfWeek,\n endOfYear,\n format,\n formatDistance,\n intlFormat,\n isEqual,\n isValid,\n parse,\n parseISO,\n startOfDay,\n startOfMonth,\n startOfWeek,\n startOfYear,\n sub,\n subDays,\n subWeeks,\n subYears,\n} from 'date-fns';\nimport { ReactNode } from 'react';\nimport {\n Content,\n FormatContent,\n useFormattedContent,\n} from 'src/contexts/ContentContext';\nimport {\n DateTimeRange,\n DateTimeRangeWithRelative,\n EventTimeFrameFilter,\n RelativeTimeRoundingMode,\n} from 'src/WebApiController';\n\nimport { ContentId } from './constants/contentId';\nimport { FormatContentId } from './constants/formatContentId';\n\nexport type DateRangePreset = {\n name: DateRangePresetName;\n label: JSX.Element;\n range: DateRangeType;\n};\n\nexport type DateRangeRelativePreset = {\n name: DateRangePresetName;\n label: JSX.Element;\n range: DateTimeRangeWithRelative;\n};\n\ntype DateRangeType = {\n start: Date;\n end: Date;\n};\n\nexport const getLastDateRange = (\n duration: Duration,\n end: Date\n): DateRangeType => ({\n start: startOfDay(sub(end, duration)),\n end: endOfDay(end),\n});\n\nexport const getNextDateRange = (\n duration: Duration,\n start: Date\n): DateRangeType => ({\n start: startOfDay(start),\n end: endOfDay(add(start, duration)),\n});\n\nexport const getLastDateRangeRelative = (\n duration: Duration,\n roundingMode?: RelativeTimeRoundingMode\n): DateTimeRangeWithRelative => {\n const now = new Date();\n return {\n relativeStartSecs: (sub(now, duration).getTime() - now.getTime()) / 1000,\n relativeEndSecs: 0,\n roundingMode,\n } as DateTimeRangeWithRelative;\n};\n\nexport const getNextDateRangeRelative = (\n duration: Duration,\n roundingMode?: RelativeTimeRoundingMode\n): DateTimeRangeWithRelative => {\n const now = new Date();\n return {\n relativeStartSecs: 0,\n relativeEndSecs: (add(now, duration).getTime() - now.getTime()) / 1000,\n roundingMode,\n } as DateTimeRangeWithRelative;\n};\n\nexport enum DateRangePresetName {\n Today = 'Today',\n Last3Days = 'Last3Days',\n Last7Days = 'Last7Days',\n Last30Days = 'Last30Days',\n Last90Days = 'Last90Days',\n\n ThisWeek = 'ThisWeek',\n ThisMonth = 'ThisMonth',\n ThisYear = 'ThisYear',\n AlreadyInHand = 'AlreadyInHand',\n\n NextWeek = 'NextWeek',\n NextMonth = 'NextMonth',\n NextYear = 'NextYear',\n\n PastYear = 'PastYear',\n\n LastYear = 'LastYear',\n OlderThanLastYear = 'OlderThanLastYear',\n}\n\nexport const StandardDateRangePresetNames = [\n DateRangePresetName.Today,\n DateRangePresetName.Last3Days,\n DateRangePresetName.Last7Days,\n DateRangePresetName.Last30Days,\n DateRangePresetName.Last90Days,\n];\n\nexport const SaleDateRangeRelativePresetNames = [\n DateRangePresetName.Today,\n DateRangePresetName.Last3Days,\n DateRangePresetName.Last7Days,\n DateRangePresetName.Last30Days,\n DateRangePresetName.Last90Days,\n DateRangePresetName.PastYear,\n];\n\nexport const InhandDateRangePresetNames = [\n DateRangePresetName.Today,\n DateRangePresetName.ThisWeek,\n DateRangePresetName.ThisMonth,\n DateRangePresetName.ThisYear,\n DateRangePresetName.AlreadyInHand,\n];\n\nexport const EventDateRangePresetNames = [\n DateRangePresetName.Today,\n DateRangePresetName.ThisWeek,\n DateRangePresetName.ThisMonth,\n DateRangePresetName.ThisYear,\n];\n\nexport const NextDateRangePresetNames = [\n DateRangePresetName.Today,\n DateRangePresetName.NextWeek,\n DateRangePresetName.NextMonth,\n DateRangePresetName.NextYear,\n];\n\nexport const PastDateRangePresetNames = [\n DateRangePresetName.Last7Days,\n DateRangePresetName.Last30Days,\n DateRangePresetName.PastYear,\n];\n\nexport const PurchaseDateRangePresetNames = [\n DateRangePresetName.Today,\n DateRangePresetName.Last3Days,\n DateRangePresetName.Last7Days,\n DateRangePresetName.Last30Days,\n DateRangePresetName.Last90Days,\n DateRangePresetName.ThisYear,\n DateRangePresetName.LastYear,\n DateRangePresetName.OlderThanLastYear,\n];\n\nconst DateRangePresetsMap = {\n [DateRangePresetName.Today]: {\n name: DateRangePresetName.Today,\n label: ,\n range: (now: Date) => getLastDateRange({ days: 0 }, now),\n },\n [DateRangePresetName.Last3Days]: {\n name: DateRangePresetName.Last3Days,\n label: ,\n range: (now: Date) => getLastDateRange({ days: 3 }, now),\n },\n [DateRangePresetName.Last7Days]: {\n name: DateRangePresetName.Last7Days,\n label: ,\n range: (now: Date) => getLastDateRange({ days: 7 }, now),\n },\n [DateRangePresetName.Last30Days]: {\n name: DateRangePresetName.Last30Days,\n label: ,\n range: (now: Date) => getLastDateRange({ days: 30 }, now),\n },\n [DateRangePresetName.Last90Days]: {\n name: DateRangePresetName.Last90Days,\n label: ,\n range: (now: Date) => getLastDateRange({ days: 90 }, now),\n },\n [DateRangePresetName.ThisWeek]: {\n name: DateRangePresetName.ThisWeek,\n label: ,\n range: (now: Date) => ({\n start: startOfWeek(now),\n end: endOfWeek(now),\n }),\n },\n [DateRangePresetName.ThisMonth]: {\n name: DateRangePresetName.ThisMonth,\n label: ,\n range: (now: Date) => ({\n start: startOfMonth(now),\n end: endOfMonth(now),\n }),\n },\n [DateRangePresetName.ThisYear]: {\n name: DateRangePresetName.ThisYear,\n label: ,\n range: (now: Date) => ({\n start: startOfYear(now),\n end: endOfYear(now),\n }),\n },\n [DateRangePresetName.AlreadyInHand]: {\n name: DateRangePresetName.AlreadyInHand,\n label: ,\n range: (now: Date) => ({\n start: new Date('01/01/1970'),\n end: endOfDay(now),\n }),\n },\n [DateRangePresetName.NextWeek]: {\n name: DateRangePresetName.NextWeek,\n label: ,\n range: (now: Date) => getNextDateRange({ weeks: 1 }, now),\n },\n [DateRangePresetName.NextMonth]: {\n name: DateRangePresetName.NextMonth,\n label: ,\n range: (now: Date) => getNextDateRange({ months: 1 }, now),\n },\n [DateRangePresetName.NextYear]: {\n name: DateRangePresetName.NextYear,\n label: ,\n range: (now: Date) => getNextDateRange({ years: 1 }, now),\n },\n [DateRangePresetName.PastYear]: {\n name: DateRangePresetName.PastYear,\n label: ,\n range: (now: Date) => getLastDateRange({ years: 1 }, now),\n },\n [DateRangePresetName.LastYear]: {\n name: DateRangePresetName.LastYear,\n label: ,\n range: (now: Date) => ({\n start: subYears(startOfYear(now), 1),\n end: endOfDay(subDays(startOfYear(now), 1)),\n }),\n },\n [DateRangePresetName.OlderThanLastYear]: {\n name: DateRangePresetName.OlderThanLastYear,\n label: ,\n range: (now: Date) => ({\n start: new Date('01/01/1970'),\n end: endOfDay(subDays(subYears(startOfYear(now), 1), 1)),\n }),\n },\n} satisfies {\n [key in DateRangePresetName]: {\n name: key /* eslint-disable-line no-restricted-globals */;\n label: ReactNode;\n range: (now: Date) => { start: Date; end: Date };\n };\n};\nconst DateRangePresets = Object.values(DateRangePresetsMap);\n\nexport const getDateRangePresets = (\n presetNames: DateRangePresetName[],\n now: Date = new Date()\n): DateRangePreset[] => {\n return DateRangePresets.filter((drp) => presetNames.includes(drp.name)).map(\n (drp) => ({\n name: drp.name,\n label: drp.label,\n range: drp.range(now),\n })\n );\n};\n\nconst DateRangeRelativePresetsMap = {\n [DateRangePresetName.Today]: {\n name: DateRangePresetName.Today,\n label: ,\n range: () => getLastDateRangeRelative({ days: 0 }),\n },\n [DateRangePresetName.Last3Days]: {\n name: DateRangePresetName.Last3Days,\n label: ,\n range: () => getLastDateRangeRelative({ days: 3 }),\n },\n [DateRangePresetName.Last7Days]: {\n name: DateRangePresetName.Last7Days,\n label: ,\n range: () => getLastDateRangeRelative({ days: 7 }),\n },\n [DateRangePresetName.Last30Days]: {\n name: DateRangePresetName.Last30Days,\n label: ,\n range: () => getLastDateRangeRelative({ days: 30 }),\n },\n [DateRangePresetName.Last90Days]: {\n name: DateRangePresetName.Last90Days,\n label: ,\n range: () => getLastDateRangeRelative({ days: 90 }),\n },\n [DateRangePresetName.PastYear]: {\n name: DateRangePresetName.PastYear,\n label: ,\n range: () => getLastDateRangeRelative({ months: 12 }),\n },\n [DateRangePresetName.ThisWeek]: {\n name: DateRangePresetName.ThisWeek,\n label: ,\n range: () =>\n getLastDateRangeRelative({ days: 0 }, RelativeTimeRoundingMode.Week),\n },\n [DateRangePresetName.ThisMonth]: {\n name: DateRangePresetName.ThisMonth,\n label: ,\n range: () =>\n getLastDateRangeRelative({ days: 0 }, RelativeTimeRoundingMode.Month),\n },\n [DateRangePresetName.ThisYear]: {\n name: DateRangePresetName.ThisYear,\n label: ,\n range: () =>\n getLastDateRangeRelative({ days: 0 }, RelativeTimeRoundingMode.Year),\n },\n [DateRangePresetName.AlreadyInHand]: {\n name: DateRangePresetName.AlreadyInHand,\n label: ,\n range: () => {\n return {\n relativeStartSecs: null,\n relativeEndSecs: 0,\n } as DateTimeRangeWithRelative;\n },\n },\n [DateRangePresetName.NextWeek]: {\n name: DateRangePresetName.NextWeek,\n label: ,\n range: () => getNextDateRangeRelative({ weeks: 1 }),\n },\n [DateRangePresetName.NextMonth]: {\n name: DateRangePresetName.NextMonth,\n label: ,\n range: () => getNextDateRangeRelative({ months: 1 }),\n },\n [DateRangePresetName.NextYear]: {\n name: DateRangePresetName.NextYear,\n label: ,\n range: () => getNextDateRangeRelative({ years: 1 }),\n },\n [DateRangePresetName.LastYear]: {\n name: DateRangePresetName.LastYear,\n label: ,\n range: () => {\n const now = new Date();\n return {\n relativeEndSecs:\n (sub(now, { years: 1 }).getTime() - now.getTime()) / 1000,\n relativeStartSecs:\n (sub(now, { years: 1 }).getTime() - now.getTime()) / 1000,\n roundingMode: RelativeTimeRoundingMode.Year,\n } as DateTimeRangeWithRelative;\n },\n },\n [DateRangePresetName.OlderThanLastYear]: {\n name: DateRangePresetName.OlderThanLastYear,\n label: ,\n range: () => {\n const now = new Date();\n return {\n relativeEndSecs:\n (sub(now, { years: 2 }).getTime() - now.getTime()) / 1000,\n relativeStartSecs: null,\n roundingMode: RelativeTimeRoundingMode.Year,\n } as DateTimeRangeWithRelative;\n },\n },\n} satisfies {\n [key: string]: {\n name: string /* eslint-disable-line no-restricted-globals */;\n label: ReactNode;\n range: () => DateTimeRangeWithRelative;\n };\n};\nconst DateRangeRelativePresets = Object.values(DateRangeRelativePresetsMap);\n\nexport const getDateRangeRelativePresets = (\n presetNames: DateRangePresetName[]\n): DateRangeRelativePreset[] => {\n return DateRangeRelativePresets.filter((drp) =>\n presetNames.includes(drp.name)\n ).map((drp) => ({\n name: drp.name,\n label: drp.label,\n range: drp.range(),\n }));\n};\n\nexport enum DatePresetName {\n Now = 'Now',\n OneDayBeforeEvent = 'OneDayBeforeEvent',\n OneWeekBeforeEvent = 'OneWeekBeforeEvent',\n DaysBeforeEvent = 'DaysBeforeEvent',\n}\n\nexport const getDatePresets = (\n presetNames: DatePresetName[],\n targetDate: Date,\n inHandDaysBeforeEvent?: number\n): DatePreset[] => {\n return DatePresets.filter((dp) => presetNames.includes(dp.name)).map(\n (dp) => ({\n name: dp.name,\n label: dp.label,\n value: dp.value(\n targetDate,\n dp.name === DatePresetName.DaysBeforeEvent\n ? inHandDaysBeforeEvent\n : undefined\n ),\n })\n );\n};\n\nexport type DatePreset = {\n name: DatePresetName;\n label: JSX.Element;\n value: Date;\n};\n\nexport const StandardDatePresetNames = [\n DatePresetName.Now,\n DatePresetName.OneDayBeforeEvent,\n DatePresetName.OneWeekBeforeEvent,\n];\n\nexport const DatePresets = [\n {\n name: DatePresetName.Now,\n label: ,\n value: () => new Date(),\n },\n {\n name: DatePresetName.OneDayBeforeEvent,\n label: ,\n value: (event: Date) => subDays(event, 1),\n },\n {\n name: DatePresetName.OneWeekBeforeEvent,\n label: ,\n value: (event: Date) => subWeeks(event, 1),\n },\n {\n name: DatePresetName.DaysBeforeEvent,\n label: ,\n value: (event: Date, inHandDaysBeforeEvent?: number) =>\n subDays(event, inHandDaysBeforeEvent ?? 0),\n },\n];\n\nexport function formatDate(\n dateString: string,\n locale?: string,\n timeZone?: string\n): string {\n return dateString\n ? intlFormat(\n new Date(dateString),\n { month: '2-digit', day: '2-digit', year: 'numeric', timeZone },\n { locale }\n )\n : '';\n}\n\nexport const formatDateRange = ({ start, end }: DateRangeType): string => {\n if (start && end && differenceInDays(start, end) === 0) {\n return formatDate(start.toISOString());\n }\n\n const from = formatDate(start.toISOString());\n const to = formatDate(end.toISOString());\n\n return `${from}-${to}`;\n};\n\nexport const toDateTimeRange = (date?: DateTimeRangeWithRelative | null) => {\n const { start, end, relativeStartSecs, relativeEndSecs } = date ?? {};\n if (relativeStartSecs == null && relativeEndSecs == null) {\n return {\n start: start ? new Date(start) : null,\n end: end ? new Date(end) : null,\n };\n }\n const startRel =\n relativeStartSecs != null\n ? new Date(new Date().getTime() + relativeStartSecs * 1000)\n : null;\n const endRel =\n relativeEndSecs != null\n ? new Date(new Date().getTime() + relativeEndSecs * 1000)\n : null;\n\n return { start: startRel, end: endRel };\n};\n\nexport const formatRelativeDateRange = (\n date?: DateTimeRangeWithRelative | null\n): string => {\n const dateRage = toDateTimeRange(date);\n let startDate = dateRage.start;\n let endDate = dateRage.end;\n\n const roundingMode = date?.roundingMode;\n if (roundingMode === RelativeTimeRoundingMode.Year) {\n startDate = startDate ? startOfYear(startDate) : null;\n endDate = endDate ? endOfYear(endDate) : null;\n } else if (roundingMode === RelativeTimeRoundingMode.Month) {\n startDate = startDate ? startOfMonth(startDate) : null;\n endDate = endDate ? endOfMonth(endDate) : null;\n } else if (roundingMode === RelativeTimeRoundingMode.Week) {\n startDate = startDate ? startOfWeek(startDate) : null;\n endDate = endDate ? endOfWeek(endDate) : null;\n } else {\n startDate = startDate ? startOfDay(startDate) : null;\n endDate = endDate ? endOfDay(endDate) : null;\n }\n if (\n startDate != null &&\n endDate != null &&\n differenceInDays(startDate, endDate) === 0\n ) {\n return formatDate(startDate.toISOString());\n }\n\n const from = formatDate((startDate ?? new Date(0)).toISOString());\n const to = endDate ? formatDate(endDate.toISOString()) : '';\n\n return `${from}-${to}`;\n};\n\nexport const getDateRangeRelativePresetDisplayText = (\n preset: DateRangeRelativePreset,\n style?: React.CSSProperties\n) => {\n const { label, range } = preset;\n return (\n \n {label}{' '}\n {`(${formatRelativeDateRange(\n range\n )})`}\n \n );\n};\n\nexport const getDateRangePresetDisplayText = (\n preset: DateRangePreset,\n style?: React.CSSProperties\n) => {\n const { label, range } = preset;\n return (\n \n {label}{' '}\n {`(${formatDateRange(range)})`}\n \n );\n};\nexport const getDatePresetDisplayText = (\n preset: DatePreset,\n inHandDaysBeforeEvent?: number,\n toZonedTime?: (date: Date) => Date\n) => {\n const { label, value } = preset;\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const daysBeforeEventLabel = useFormattedContent(\n FormatContentId.DaysBeforeEvent,\n `${inHandDaysBeforeEvent ?? 0}`\n );\n\n return (\n
\n {preset.name === DatePresetName.DaysBeforeEvent\n ? daysBeforeEventLabel\n : label}{' '}\n {`(${formatDate(\n (toZonedTime ? toZonedTime(value) : value).toISOString()\n )})`}\n
\n );\n};\n\nexport const getPresetFromUiDateTimeRange = (\n value?: DateTimeRange | null,\n toZonedTime?: (date: Date) => Date\n): DateRangePreset | undefined => {\n if (!value || !value.start || !value.end) {\n return undefined;\n }\n\n const now = toZonedTime ? toZonedTime(new Date()) : new Date();\n const start = startOfDay(\n toZonedTime ? toZonedTime(new Date(value.start)) : new Date(value.start)\n );\n const end = endOfDay(\n toZonedTime ? toZonedTime(new Date(value.end)) : new Date(value.end)\n );\n\n const preset = DateRangePresets.find((p) => {\n const range = p.range(now);\n return isEqual(start, range.start) && isEqual(end, range.end);\n });\n\n return preset ? { ...preset, range: preset.range(now) } : undefined;\n};\n\nexport const getRelativePresetFromUiDateTimeRange = (\n value?: DateTimeRangeWithRelative | null\n): DateRangeRelativePreset | undefined => {\n if (\n !value ||\n (value.relativeStartSecs == null && value.relativeEndSecs == null)\n ) {\n return undefined;\n }\n\n const preset = DateRangeRelativePresets.find((p) => {\n const range = p.range();\n return (\n value.relativeEndSecs === range.relativeEndSecs &&\n value.relativeStartSecs === range.relativeStartSecs &&\n value.roundingMode === range.roundingMode\n );\n });\n\n return preset ? { ...preset, range: preset.range() } : undefined;\n};\n\nexport const getPresetFromDate = (\n selectedDate: Date | null | undefined,\n targetDate: Date,\n inHandDaysBeforeEvent?: number\n): DatePreset | undefined => {\n if (!selectedDate) {\n return undefined;\n }\n\n const preset = DatePresets.find((p) => {\n const value = p.value(targetDate, inHandDaysBeforeEvent);\n\n return isEqual(startOfDay(value), startOfDay(selectedDate));\n });\n\n return preset\n ? {\n ...preset,\n value: preset.value(targetDate || new Date(), inHandDaysBeforeEvent),\n }\n : undefined;\n};\n\nexport const getUiDateTimeRangeFromPreset = (\n value: string,\n onlyIncludes: DateRangePresetName[]\n): DateTimeRange | undefined => {\n const name = value as keyof typeof DateRangePresetName;\n const presetEnum = DateRangePresetName[name];\n if (onlyIncludes.includes(presetEnum)) {\n const preset = getDateRangePresets([presetEnum]);\n if (preset.length >= 1) {\n return {\n start: preset[0].range.start.toISOString(),\n end: preset[0].range.end.toISOString(),\n };\n }\n }\n\n return undefined;\n};\n\nexport const tryGetDateRangePresetSuggestionText = (\n value?: DateTimeRange | null,\n toZonedTime?: (date: Date) => Date,\n style?: React.CSSProperties\n) => {\n const preset = getPresetFromUiDateTimeRange(value, toZonedTime);\n if (preset) {\n return getDateRangePresetDisplayText(preset, style);\n }\n\n return '';\n};\n\nexport const tryGetDateRangeRelativePresetSuggestionText = (\n value?: DateTimeRangeWithRelative | null\n) => {\n const preset = getRelativePresetFromUiDateTimeRange(value);\n if (preset) {\n return getDateRangeRelativePresetDisplayText(preset);\n }\n\n return '';\n};\n\nexport const tryGetDatePresetSuggestionText = (\n value: Date | null | undefined,\n targetDate: Date,\n inHandDaysBeforeEvent?: number,\n // If provided, the date will be converted to the site's timezone before formatting\n toZonedTime?: (date: Date) => Date\n) => {\n const preset = getPresetFromDate(value, targetDate, inHandDaysBeforeEvent);\n if (preset) {\n return getDatePresetDisplayText(preset, inHandDaysBeforeEvent, toZonedTime);\n }\n\n return '';\n};\n\nexport const stringToUtcDate = (dateString: string) => {\n const inputStringWithTimeZone = isValid(parseISO(dateString))\n ? dateString.split('').at(-1) !== 'Z' // Add Z for GMT if no timeZone specified\n ? dateString.concat('Z')\n : dateString\n : dateString;\n return new Date(inputStringWithTimeZone);\n};\n\nexport const formatFromUtcDateString = (utcDate: string, formatStr: string) => {\n const date = stringToUtcDate(utcDate);\n const dateDisplay = format(date, formatStr);\n\n return dateDisplay;\n};\n\n/**\n * Divides a date interval into `n` number of dates.\n *\n * If the interval is cleanly divisible into months, it will use months as the period.\n * Otherwise, days will be used for the period. If days are not evenly divisible, the period will be\n * rounded down. The last date will still be the `toDate`, so the last period will be the longest in\n * this case.\n *\n * Note: Since 1 weeks is always equal to 7 days, a period of 2 weeks will also be calculated using\n * days.\n *\n * @param interval Date interval\n * @param n Number of dates we want to end up with\n * @returns The date interval split into `n` number of dates.\n */\nexport function divideDateInterval(\n interval: {\n fromDate: Date;\n toDate: Date;\n },\n n: number\n): Date[] {\n const from = toTemporalInstant\n .call(interval.fromDate)\n .toZonedDateTimeISO(Temporal.Now.timeZoneId());\n const to = toTemporalInstant\n .call(interval.toDate)\n .toZonedDateTimeISO(Temporal.Now.timeZoneId());\n const durationUntil = from.until(to);\n const durationMonths = durationUntil.round({\n largestUnit: 'months',\n smallestUnit: 'months',\n roundingMode: 'trunc',\n relativeTo: from,\n });\n const isWholeNumberOfMonths =\n Temporal.Duration.compare(durationUntil, durationMonths, {\n relativeTo: from,\n }) === 0 && durationMonths.months % (n - 1) === 0;\n const period = isWholeNumberOfMonths\n ? { months: durationMonths.months / (n - 1) }\n : { days: Math.floor(durationUntil.total('days') / (n - 1)) };\n const dates: Date[] = [];\n for (let i = 0, curr = from; i < n - 1; i++, curr = curr.add(period)) {\n dates.push(new Date(curr.epochMilliseconds));\n }\n dates.push(interval.toDate);\n return dates;\n}\n\n/**\n * Used for restricting the date picker selectable dates based on the selected\n * `EventTimeFrameFilter`.\n * @param timeFrameFilter\n * @returns\n */\nexport function getDisabledDatesForTimeFrameFilter(\n date: Date,\n timeFrameFilter: EventTimeFrameFilter | null\n) {\n if (!timeFrameFilter) {\n return false;\n }\n switch (timeFrameFilter) {\n case EventTimeFrameFilter.Future:\n return date < subDays(new Date(), 1); // If we do < Date on the dote it will disable today due to the time\n case EventTimeFrameFilter.Past:\n return date > addDays(new Date(), 1); // If we do > Date on the dote it will disable today due to the time\n }\n}\n\n/**\n * Used for restricting the date picker presets based on the selected `EventTimeFrameFilter`.\n * @param timeFrameFilter\n * @returns\n */\nexport function getPresetNamesForTimeFrameFilter(\n timeFrameFilter: EventTimeFrameFilter | null\n) {\n if (!timeFrameFilter) {\n return EventDateRangePresetNames;\n }\n switch (timeFrameFilter) {\n case EventTimeFrameFilter.Future:\n return NextDateRangePresetNames;\n case EventTimeFrameFilter.Past:\n return PastDateRangePresetNames;\n }\n}\n\n/* Check whether if the given date is passed some hours from now. A null/undefined date is considered a min date and will always returns true */\nexport const isDatePassedHours = (\n dateTime: Date | null | undefined,\n hours: number\n) => {\n // NOTE - dateTime from UserSettings will not parsed as a Date, and so\n // here we need to do toString() and the convert to a Date to be sure\n // or else the comparison will not work\n return !(\n dateTime &&\n differenceInHours(new Date(), new Date(dateTime.toString())) <= hours\n );\n};\n\nexport const getTimeAgoString = (date: Date) => {\n return formatDistance(date, new Date(), {\n addSuffix: true,\n });\n};\n\nexport function convertDateToTemporalPlainDateTime(date: Date) {\n return toTemporalInstant\n .call(date)\n .toZonedDateTimeISO(Temporal.Now.timeZoneId())\n .toPlainDateTime();\n}\n\n/**\n * `dateString` might be either a plain datetime without a timezone or a utc datetime.\n * For events we want to assume that even if the datetime is UTC, it is still a datetime in the\n * local timezone of the event.\n *\n * DO NOT pass in an offset date time into this function.\n * @param dateString UTC or plain datetime string\n * @param options\n * @returns\n */\nexport function getEventDateDisplayStrings(\n dateString: string,\n {\n dateFormat,\n subDateFormat,\n }: {\n dateFormat?: string;\n subDateFormat?: string;\n } = {}\n) {\n return {\n formattedEventDate: format(new Date(dateString), dateFormat ?? 'MMM d'),\n formattedEventSubDate: format(\n new Date(dateString),\n subDateFormat ?? ' - h:mm aaa, eeee'\n ),\n };\n}\n\nexport const SQL_MAX_DATEITME = new Date('9999-12-31T23:59:59.99Z');\n\nexport const isSqlMaxDate = (date: Date) => {\n return (\n date.getFullYear() === 9999 &&\n date.getMonth() === 11 &&\n date.getDate() === 31\n );\n};\n\nexport type DateConfig = {\n start: string;\n end: string;\n};\n\nexport type DateErrorsConfig = {\n endDateBeforeStartDate: string;\n invalidEndDate: string;\n invalidStartDate: string;\n};\n\nexport const validateDate = (\n dateObj: DateConfig,\n locale: Locale,\n errorConfig: DateErrorsConfig\n): string[] => {\n const { end, start } = dateObj;\n const errors = [];\n const parsedStartDate = parse(start, 'P', new Date(), { locale });\n const parsedEndDate = parse(end, 'P', new Date(), { locale });\n\n if (start && !isValid(parsedStartDate))\n errors.push(errorConfig.invalidStartDate);\n if (end && !isValid(parsedEndDate)) errors.push(errorConfig.invalidEndDate);\n\n try {\n if (start && end && parsedEndDate < parsedStartDate) {\n errors.push(errorConfig.endDateBeforeStartDate);\n }\n } catch (error) {\n /* empty */\n }\n\n return errors;\n};\n\nexport const getEventTimeFrameFromDateTimeRange = (\n start?: Date,\n end?: Date\n) => {\n if (start && start > new Date()) {\n return EventTimeFrameFilter.Future;\n }\n if (end && end < new Date()) {\n return EventTimeFrameFilter.Past;\n }\n\n return null;\n};\n\nexport const roundRelativeDateUp = (\n date: Date,\n roundingMode: RelativeTimeRoundingMode | null | undefined\n) => {\n if (roundingMode === RelativeTimeRoundingMode.Week) {\n return startOfWeek(date);\n }\n if (roundingMode === RelativeTimeRoundingMode.Month) {\n return startOfMonth(date);\n }\n if (roundingMode === RelativeTimeRoundingMode.Year) {\n return startOfYear(date);\n }\n return startOfDay(date);\n};\n\nexport const roundRelativeDateDown = (\n date: Date,\n roundingMode: RelativeTimeRoundingMode | null | undefined\n) => {\n if (roundingMode === RelativeTimeRoundingMode.Week) {\n return endOfWeek(date);\n }\n if (roundingMode === RelativeTimeRoundingMode.Month) {\n return endOfMonth(date);\n }\n if (roundingMode === RelativeTimeRoundingMode.Year) {\n return endOfYear(date);\n }\n return endOfDay(date);\n};\n","import { formatInTimeZone } from 'date-fns-tz';\nimport { DEFAULT_TIMEZONE_LOCAL } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext.constants';\nimport {\n FormatOption,\n FormatOption_Percent,\n} from 'src/modals/EditTableColumns/EditTableColumns.constants';\n\nimport { stringToUtcDate } from './dateTimeUtils';\nimport { getCurrentLanguage } from './localeUtils';\n\n// From .NET\nexport const INT_MAX_VALUE = 2147483647;\n\n/**\n * @param n Number to round\n * @param decimalPlaces number of decimal places to keep\n * @returns\n */\nexport const roundToPrecision = (n: number, decimalPlaces: number) => {\n const factor = Math.pow(10, decimalPlaces);\n return Math.round(n * factor) / factor;\n};\n\nexport const formatNumber = (\n n: number,\n decimal = 0,\n locale: string = getCurrentLanguage(),\n isUnbounded?: boolean\n) => {\n return n.toLocaleString(locale, {\n minimumFractionDigits: decimal,\n maximumFractionDigits: !isUnbounded ? decimal : undefined,\n style: 'decimal',\n });\n};\n\nexport const formatPercent = (\n n: number,\n decimal = 0,\n locale: string = getCurrentLanguage(),\n isUnbounded?: boolean\n) => {\n return n.toLocaleString(locale, {\n minimumFractionDigits: decimal,\n maximumFractionDigits: !isUnbounded ? decimal : undefined,\n style: 'percent',\n });\n};\n\nexport const formatCurrency = (\n n: number | null | undefined,\n currencyCode?: string | null,\n decimal?: number | null,\n locale?: string | null,\n isUnbounded?: boolean\n) => {\n n = n ?? 0;\n const result = n.toLocaleString(locale ?? getCurrentLanguage(), {\n minimumFractionDigits: decimal ?? 2,\n maximumFractionDigits: !isUnbounded ? decimal ?? 2 : undefined,\n style: 'currency',\n currency: currencyCode ?? 'USD',\n });\n\n return result;\n};\n\nconst precisionOptionMappings: Partial<\n Record<\n FormatOption,\n { suffix?: string; value?: number; roundToDigits?: number }\n >\n> = {\n [FormatOption.Millions]: {\n suffix: 'M',\n value: 1_000_000,\n roundToDigits: 1,\n },\n [FormatOption.Thousands]: {\n suffix: 'k',\n value: 1_000,\n roundToDigits: 1,\n },\n [FormatOption.Whole]: { roundToDigits: 0 },\n [FormatOption.Precise]: { roundToDigits: 2 },\n};\n\ntype DecimalOption = {\n displayAsDecimal?: boolean;\n roundToDigits: number;\n};\n\nconst DECIMAL_OPTION_MAPPINGS: Record = {\n [FormatOption.Percent_RoundToTwo]: { roundToDigits: 2 },\n [FormatOption.Percent_RoundToOne]: { roundToDigits: 1 },\n [FormatOption.Percent_RoundToWhole]: { roundToDigits: 0 },\n [FormatOption.Percent_AsDecimal_RoundToOne]: {\n displayAsDecimal: true,\n roundToDigits: 1,\n },\n [FormatOption.Percent_AsDecimal_RoundToTwo]: {\n displayAsDecimal: true,\n roundToDigits: 2,\n },\n [FormatOption.Percent_AsDecimal_RoundToThree]: {\n displayAsDecimal: true,\n roundToDigits: 3,\n },\n};\n\n/**\n * Supported options types: `DateTime`, `Percent`, `Standard`\n * Note: using NumericalPrecisionOption.DateTime_RelativeDateTime will result in unlocalized text,\n * currently hardcoded as English translations. Invoke getTimeDateDifferenceAsShorthand directly in this case.\n */\nexport const applyNumberFormatting = ({\n inputNumber,\n isDateTime,\n currencyCode,\n currencyDecimalDigits,\n isPercent,\n enableUtcFallback,\n localeText,\n precision = isDateTime\n ? FormatOption.DateTime_MonthDD_Time\n : isPercent\n ? FormatOption.Percent_RoundToTwo\n : FormatOption.Precise,\n timeZone,\n}: {\n inputNumber?: number | string | null;\n precision?: FormatOption;\n currencyCode?: string | null;\n currencyDecimalDigits?: number | null;\n isPercent?: boolean;\n isDateTime?: boolean;\n enableUtcFallback?: boolean;\n localeText?: {\n /**\n * `Ago` text\n */\n ago: string;\n /**\n * `In` text\n */\n in: string;\n /**\n * `Now` text\n */\n now: string;\n };\n timeZone?: string;\n}) => {\n if (inputNumber == null) return inputNumber;\n\n if (isDateTime) {\n const inputDate = enableUtcFallback\n ? stringToUtcDate(String(inputNumber))\n : new Date(String(inputNumber));\n\n let formatStr = '';\n\n switch (precision) {\n case FormatOption.DateTime_MMDD:\n formatStr = 'MM/dd';\n break;\n case FormatOption.DateTime_MMDD_Time:\n formatStr = 'MM/dd h:mma';\n break;\n case FormatOption.DateTime_MMDD_Time_Day:\n formatStr = 'MM/dd h:mma, EEE';\n break;\n case FormatOption.DateTime_MonthDD:\n formatStr = 'MMM d';\n break;\n case FormatOption.DateTime_MonthDD_Time:\n formatStr = 'MMM d, h:mma';\n break;\n case FormatOption.DateTime_MonthDD_Time_Day:\n formatStr = 'MMM d, h:mma, EEE';\n break;\n case FormatOption.DateTime_MMDDYY:\n formatStr = 'MM/dd/yy';\n break;\n case FormatOption.DateTime_Month_DD_YY:\n formatStr = \"MMM d ''yy\";\n break;\n case FormatOption.DateTime_Month_DD_YY_Time:\n formatStr = \"MMM d ''yy, h:mma\";\n break;\n case FormatOption.DateTime_Month_DD_YY_Time_Day:\n formatStr = \"MMM d ''yy, h:mma, EEE\";\n break;\n default:\n formatStr = 'MM/dd';\n }\n\n return formatInTimeZone(\n inputDate,\n timeZone ?? DEFAULT_TIMEZONE_LOCAL,\n formatStr\n );\n }\n\n if (isPercent) {\n const defaultDecimalOption: DecimalOption = {\n displayAsDecimal: true,\n roundToDigits: 1,\n };\n const { displayAsDecimal = false, roundToDigits } =\n DECIMAL_OPTION_MAPPINGS[precision as FormatOption_Percent] ??\n defaultDecimalOption;\n\n // Display as decimal means to not interpret as a percentage\n const value = displayAsDecimal ? +inputNumber : +inputNumber * 100;\n const formattedNumber = formatNumber(value, roundToDigits);\n const suffix = displayAsDecimal ? '' : '%';\n\n return `${formattedNumber}${suffix}`;\n }\n\n const {\n suffix = '',\n value: precisionValue = 1,\n roundToDigits,\n } = precisionOptionMappings[precision] ?? {};\n\n const value = +inputNumber / precisionValue;\n\n if (currencyCode && precision === FormatOption.Precise) {\n return (\n formatCurrency(\n value,\n currencyCode,\n precision === FormatOption.Precise\n ? currencyDecimalDigits ?? undefined\n : roundToDigits\n ) + suffix\n );\n }\n\n // TODO: currently covers whole + thousands + millions, logic to be extended once product provides more info\n if (currencyCode && precision) {\n return formatCurrency(value, currencyCode, roundToDigits) + suffix;\n }\n\n // TODO: apply number modifications based on input\n return formatNumber(value, roundToDigits, undefined) + suffix;\n};\n\n/**\n * Returns a shorthand version of the difference between two dates (or one date and now)\n */\ntype GetTimeDateDifferenceAsShorthand = (arg: {\n /**\n * Input UTC Date\n */\n inputDate?: Date | null;\n /**\n * Date to compare to- defaults as now\n */\n dateToCompareTo?: Date;\n /**\n * Whether to display just the number and time unit vs relative term (ago/in)\n *\n * @example\n * `false` would show `1m ago`, `true` would show just `1m`\n */\n hideRelativeTerms?: boolean;\n /**\n * When showRelativeTerms is true or undefined, localeText must be provided\n */\n localeText?: {\n /**\n * `Ago` text\n */\n ago: string;\n /**\n * `In` text\n */\n in: string;\n /**\n * `Now` text\n */\n now: string;\n };\n}) => string | null;\n\nconst MILLISECONDS_IN_SECOND = 1_000;\nconst SECONDS_IN_MINUTE = 60;\nconst MINUTES_IN_HOUR = 60;\nconst HOURS_IN_DAY = 24;\nconst DAYS_IN_WEEK = 7;\n\nexport const getTimeDateDifferenceAsShorthand: GetTimeDateDifferenceAsShorthand =\n ({\n inputDate,\n dateToCompareTo = new Date(),\n hideRelativeTerms = false,\n localeText = { ago: 'ago', in: 'in', now: 'just now' },\n }) => {\n if (!inputDate) return null;\n const { ago: agoText, in: inText, now: nowText } = localeText;\n const difference = inputDate.getTime() - dateToCompareTo.getTime();\n const isDateInFuture = difference > 0;\n const relativeSeconds = Math.abs(difference) / MILLISECONDS_IN_SECOND;\n const relativeMinutes = relativeSeconds / SECONDS_IN_MINUTE;\n const relativeHours = relativeMinutes / MINUTES_IN_HOUR;\n const relativeDays = relativeHours / HOURS_IN_DAY;\n const relativeWeeks = relativeDays / DAYS_IN_WEEK;\n // TODO: add months by doing month + year calculations\n\n const returnWrapper = (value: string) => {\n if (hideRelativeTerms) return value;\n if (isDateInFuture) return `${inText} `.concat(value);\n return value.concat(` ${agoText}`);\n };\n\n // 0-60 seconds (now)\n if (relativeSeconds < 60) return nowText;\n // 1-120 minutes (1m-120m) - note that it's rounded and not floored\n if (relativeMinutes < 120)\n return returnWrapper(`${Math.round(relativeMinutes)}m`);\n // 1-47 hours (1h-48h)\n if (relativeHours < 48)\n return returnWrapper(`${Math.round(relativeHours)}h`);\n // 1-13 days (1d-14d)\n if (relativeDays < 14) return returnWrapper(`${Math.round(relativeDays)}d`);\n // weeks (2w-_unboundedw)\n return returnWrapper(`${Math.round(relativeWeeks)}w`);\n };\n\nexport const numberToOrdinal = (n: number) => {\n const s = ['th', 'st', 'nd', 'rd'];\n const v = n % 100;\n return n + (s[(v - 20) % 10] || s[v] || s[0]);\n};\n","import {\n CompListing,\n EventConfigScoreOverride,\n Seating,\n SectionInfo,\n SectionScoreOverride,\n VenueMapInfo,\n} from 'src/WebApiController';\n\nexport function calcSeatScore(\n values: {\n /**\n * Should be a normalized value between 0 and 100.\n */\n value?: number | null;\n /**\n * The weight (importance) of the value from 0 to 10.\n */\n weight: number;\n }[]\n) {\n let sum = 0;\n let count = 0;\n for (const { value, weight } of values) {\n if (value != null) {\n sum += weight * (value / 100);\n count++;\n }\n }\n return count > 0 ? sum / (count * 10) : 0;\n}\n\n/**\n *\n * @param defaultScoreOverrides\n * @param scoreOverrides\n * @param defaultAllScoresToZero\n * @param scaleScoreRaw Calculate scoreRaw from scaled score which is 0-100\n * @returns\n */\nexport const getCompleteEventConfigScoreOverrides = (\n defaultScoreOverrides?: SectionScoreOverride[] | null,\n scoreOverrides?: SectionScoreOverride[] | null,\n defaultAllScoresToZero?: boolean,\n scaleScoreRaw?: boolean\n) => {\n // There's no max score from venue map, so we should just use the score as is\n if (!defaultScoreOverrides?.length) {\n return scoreOverrides?.map((so) => ({\n ...so,\n\n scoreRaw: so.score,\n }));\n }\n\n if (!scoreOverrides?.length) {\n return defaultScoreOverrides.map((so) => ({\n ...so,\n score: defaultAllScoresToZero ? 0 : so.score,\n }));\n }\n\n const maxDefaultScoreRaw = defaultScoreOverrides?.reduce(\n (max, score) => Math.max(max, score.scoreRaw ?? 0),\n 0\n );\n\n const curOverridesMap = (scoreOverrides ?? []).reduce(\n (cur, score) => {\n const key = `${score.sectionId}-${score.rowId}`;\n cur[key] = score;\n\n return cur;\n },\n {} as Record\n );\n\n const result = [\n ...(scoreOverrides?.map((so) => {\n let scoreRaw = so.score;\n if (scaleScoreRaw && so.score != null && maxDefaultScoreRaw) {\n scoreRaw = so.score * 0.01 * maxDefaultScoreRaw;\n }\n\n return { ...so, scoreRaw };\n }) ?? []),\n ];\n (defaultScoreOverrides || []).forEach((dfScore) => {\n const key = `${dfScore.sectionId}-${dfScore.rowId}`;\n\n if (!curOverridesMap[key]) {\n result.push({\n ...dfScore,\n score: defaultAllScoresToZero ? 0 : dfScore.score,\n scoreRaw: defaultAllScoresToZero ? 0 : dfScore.score,\n });\n }\n });\n\n return result;\n};\n\nexport const getEventConfigScoreOverride = (\n viagogoEventId: number,\n venueMapConfig: VenueMapInfo,\n newName: string,\n eventConfigScoreOverride?: EventConfigScoreOverride | null,\n defaultAllScoresToZero?: boolean,\n scaleScoreRaw?: boolean,\n defaultConfigPayload?: string | null,\n isOverrideTemplate?: boolean\n) => {\n return {\n viagogoEventId: viagogoEventId,\n id: isOverrideTemplate ? -1 : (eventConfigScoreOverride?.id ?? -1),\n name: isOverrideTemplate\n ? newName\n : (eventConfigScoreOverride?.name ?? newName),\n eventIds: eventConfigScoreOverride?.eventIds,\n cfgId: isOverrideTemplate\n ? venueMapConfig!.venueCfgId\n : (eventConfigScoreOverride?.cfgId ?? venueMapConfig!.venueCfgId),\n cfgPayload: isOverrideTemplate\n ? defaultConfigPayload\n : (defaultConfigPayload ?? eventConfigScoreOverride?.cfgPayload),\n isActive: isOverrideTemplate ? null : eventConfigScoreOverride?.isActive,\n scoreOverrides: isOverrideTemplate\n ? eventConfigScoreOverride?.scoreOverrides\n : (getCompleteEventConfigScoreOverrides(\n venueMapConfig?.sectionScores,\n eventConfigScoreOverride?.scoreOverrides,\n defaultAllScoresToZero,\n scaleScoreRaw\n ) ?? []),\n\n // TODO: old field for global template configs feature. Determine what the plan is\n // for this feature and remove if we do not plan on releasing it so we can reduce\n // the confusing naming\n isTemplate: eventConfigScoreOverride?.isTemplate,\n } as EventConfigScoreOverride;\n};\n\nexport const getRowRepresentingSectionMedianScore = (\n sectionId: number,\n seatScores: SectionScoreOverride[]\n): SectionScoreOverride | undefined => {\n const sectionScores = seatScores!.filter(\n (s) => s.sectionId === sectionId && s.score\n );\n\n return sectionScores.toSorted((s1, s2) => s1.rowId - s2.rowId)[\n Math.round(sectionScores.length / 2)\n ];\n};\n\nexport const getMedianScoreForSection = (\n sectionId: number,\n seatScores: SectionScoreOverride[]\n) => {\n const sectionScores = seatScores!.filter((s) => s.sectionId === sectionId);\n const values = sectionScores.map((s) => s.score ?? -1);\n return median(values);\n};\n\nexport const getMatchingSectionRow = (\n l: Seating | CompListing,\n sections?: SectionInfo[] | null\n) => {\n const rowId = l.rowId;\n const sectionName = l.section?.trim().toLocaleUpperCase();\n const rowName = l.row?.trim().toLocaleUpperCase();\n\n if (rowId) {\n const section = sections?.find((s) => s.rows.some((r) => r.id === rowId));\n\n if (section) {\n const row = section?.rows.find((r) => r.id === rowId) ?? section?.specRow;\n\n const ticketClassId =\n section?.rows.find((r) => r.id === rowId) != null\n ? section?.rows.find((r) => r.id === rowId)?.tktClass?.id\n : section?.specRow?.ticketClassId;\n\n return { section, row, ticketClassId };\n }\n }\n\n const section = sections?.find(\n (s) =>\n s.name.toLocaleUpperCase() === sectionName &&\n (!rowName ||\n s.rows.some((r) => r.name?.trim().toLocaleUpperCase() === rowName))\n );\n\n const row =\n section?.rows.find((r) => !!r.name && r.name === rowName) ??\n section?.specRow;\n\n const ticketClassId =\n section?.rows.find((r) => !!r.name && r.name === rowName) != null\n ? section?.rows.find((r) => !!r.name && r.name === rowName)?.tktClass?.id\n : section?.specRow?.ticketClassId;\n\n return { section, row, ticketClassId };\n};\n\nexport const getSectionsSameZone = (\n l: Seating | CompListing,\n sections: SectionInfo[] | undefined\n) => {\n const { ticketClassId } = getMatchingSectionRow(l, sections);\n\n if (!ticketClassId) return [];\n\n return sections?.filter((s) =>\n s.rows.some((r) => r.tktClass?.id === ticketClassId)\n );\n};\n\nexport const getSeatScore = (\n l: Seating | CompListing | null | undefined,\n scoreOverrides?: SectionScoreOverride[] | null,\n sections?: SectionInfo[] | null\n) => {\n if (!l) return undefined;\n\n let seatScore = scoreOverrides?.find(\n (sso) => l.rowId != null && l.rowId === sso.rowId\n )?.score;\n if (seatScore != null) return seatScore;\n\n const { row } = getMatchingSectionRow(l, sections);\n if (!row) return undefined;\n\n seatScore = scoreOverrides?.find((sso) => row?.id === sso.rowId)?.score;\n return seatScore;\n};\n\nexport const updateScoreForSectionMaintainingRowScoreRatio = (\n newScore: number,\n sectionId: number,\n scoreOverrides?: SectionScoreOverride[] | null\n) => {\n const newScoreOverrides = [...(scoreOverrides ?? [])];\n const overridesToEdit = newScoreOverrides?.filter(\n (so) => so.sectionId === sectionId\n );\n\n if (overridesToEdit.length) {\n updateScoreMaintainingRowScoreRatio(newScore, overridesToEdit);\n\n return newScoreOverrides;\n } else {\n return null;\n }\n};\n\nexport const updateScoreMaintainingRowScoreRatio = (\n newScore: number,\n overridesToEdit: SectionScoreOverride[]\n) => {\n const firstNonZeroRow = overridesToEdit.find((r) => r.score);\n if (!firstNonZeroRow) {\n // if there's no row with score > 0, then we just set all row to be the same score\n overridesToEdit.forEach((so) => (so.score = newScore));\n } else {\n // Find the median row score\n const scores: number[] = overridesToEdit\n .map((r) => r.score)\n .filter(\n (score): score is number => score !== null && score !== undefined\n );\n\n // If the median is somehow 0 just set it to 1 so the ratio doesn't change\n let med = median(scores);\n if (med == 0) {\n med = 1;\n }\n\n const ratio = newScore / med;\n overridesToEdit.forEach((so) => (so.score = (so.score ?? 0) * ratio));\n }\n};\n\nexport const median = (values: number[]) => {\n if (values.length === 0) return 0;\n\n values = values.toSorted((a, b) => a - b);\n\n const half = Math.floor(values.length / 2);\n\n if (values.length % 2) {\n return values[half];\n }\n\n return (values[half - 1] + values[half]) / 2.0;\n};\n","import { useMemo } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { median } from 'src/utils/seatScoreUtils';\nimport { SectionInfo, SectionScoreOverride } from 'src/WebApiController';\n\nimport * as styles from './SectionDisplays.css';\n\nexport const SectionDisplay = ({\n section,\n scoreOverrides,\n lowestPrice,\n medianPrice,\n highestPrice,\n sectionAreaName,\n}: {\n section: SectionInfo;\n scoreOverrides?: SectionScoreOverride[] | null;\n lowestPrice?: string | null;\n medianPrice?: string | null;\n highestPrice?: string | null;\n sectionAreaName?: string | null;\n}) => {\n const score = useMemo(() => {\n const scores =\n scoreOverrides\n ?.filter((s) => s.sectionId === section.id)\n .map((s) => s.score ?? 0) ?? [];\n\n // If we do not have any scores just show the spec row score.\n // Otherwise, return the median\n if (scores.length == 0) {\n return section.specRow?.seatQualityScore;\n }\n\n return median(scores);\n }, [scoreOverrides, section.id, section.specRow?.seatQualityScore]);\n\n return (\n \n \n
\n \n
\n
\n {section.name}\n
\n
\n {score != null && (\n \n
\n \n
\n \n {roundToPrecision(score, 4)}\n \n
\n )}\n {lowestPrice != null && (\n \n
\n \n
\n
{lowestPrice}
\n \n )}\n {medianPrice != null && (\n \n
\n \n
\n
{medianPrice}
\n \n )}\n {highestPrice != null && (\n \n
\n \n
\n
{highestPrice}
\n \n )}\n {sectionAreaName != null && (\n \n
\n \n
\n
{sectionAreaName}
\n \n )}\n \n );\n};\n","import { FormatContent } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { SectionInfo, SectionScoreOverride } from 'src/WebApiController';\n\nimport { SectionDisplay } from './SectionDisplay';\nimport * as styles from './SectionDisplays.css';\n\nexport const MultiSectionsDisplay = ({\n sections,\n scoreOverrides,\n onClearSelection,\n}: {\n sections: SectionInfo[];\n scoreOverrides?: SectionScoreOverride[] | null;\n onClearSelection?: () => void;\n}) => {\n return sections.length === 1 ? (\n \n ) : (\n \n \n
\n \n
\n {onClearSelection && (\n onClearSelection()} />\n )}\n
\n \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport styled from 'styled-components/macro';\n\nconst GeneralAdmissionContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 100%;\n margin: ${() => `${vars.spacing.sm} ${vars.spacing.lg}`};\n`;\n\nconst GeneralAdmissionHeader = styled.div`\n color: ${(props) => props.theme.colors.textBrand};\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('title6')};\n`;\nconst GeneralAdmissionText = styled.div`\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('body2')};\n`;\n\nconst GeneralAdmissionMessage = () => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport { GeneralAdmissionMessage };\n","export const rawFetch = async (url: string, options?: RequestInit) => {\n const a = await fetch(url, options);\n\n if (a.ok) {\n let b;\n const headers = [...a.headers.entries()];\n\n const contentTypeHeader = headers.find(([key]) => key === 'content-type');\n\n const contentType = contentTypeHeader?.[1] ?? null;\n\n if (contentType && contentType.includes('application/json')) {\n b = await a.json();\n } else {\n b = await a.text();\n }\n return b;\n }\n throw new Error(\n `send request error - ${JSON.stringify({\n status: a.status,\n message: a.statusText,\n })}`\n );\n};\n","import Rainbow from 'rainbowvis.js';\nimport { useMemo } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './ColorBand.css';\n\nexport type ColorBandProps = {\n numOfSteps: number;\n spectrum: string[];\n labels?: ContentId[] | string[];\n};\n\nexport const ColorBand = ({ numOfSteps, spectrum, labels }: ColorBandProps) => {\n const colorSteps = useMemo(() => {\n const rainbow = new Rainbow();\n rainbow.setNumberRange(1, numOfSteps);\n rainbow.setSpectrumByArray(spectrum);\n\n const colorSteps = [];\n for (let i = 0; i < numOfSteps; i++) {\n const color = rainbow.colorAt(i + 1);\n colorSteps.push();\n }\n return colorSteps;\n }, [numOfSteps, spectrum]);\n\n return (\n
\n
{colorSteps}
\n
\n {labels?.map((l, i) => (\n {}\n ))}\n
\n
\n );\n};\n\nconst ColorStep = ({ color }: { color: string }) => {\n return (\n
\n );\n};\n","export default \"__VITE_ASSET__12f8602d__\"","import { vars } from 'src/core/themes';\nimport CircleArrowUp from 'src/images/CircleArrowUp.png';\nimport { FocalPointInfo } from 'src/WebApiController';\n\nexport const addFocalPoint = (\n svgElement: SVGSVGElement,\n focalPoint?: FocalPointInfo | null\n) => {\n if (\n focalPoint &&\n focalPoint.x &&\n focalPoint.y &&\n svgElement.getElementById('focal-point-cir') == null\n ) {\n const circle = document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'circle'\n );\n circle.setAttribute('id', 'focal-point-cir');\n circle.setAttribute('cx', focalPoint.x.toString());\n circle.setAttribute('cy', focalPoint.y.toString());\n circle.setAttribute('r', '50');\n circle.setAttribute('fill', vars.color.backgroundBrandActive);\n svgElement.appendChild(circle);\n\n const image = document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'image'\n );\n\n // TODO - There seems to be a bug from Catalog that focal point Type is always Point - even though they should be PointAndDir when angle > 0\n // So IsDirectional is always false even for maps that clearly has a direction (and the angle shows it)\n // So we'll render the arrow whenever there is a non-zero angle\n if ((focalPoint.angleDeg ?? 0) > 0 || focalPoint.isDirectional) {\n image.setAttribute('id', 'focal-point-img');\n image.setAttribute('x', (focalPoint.x - 40).toString());\n image.setAttribute('y', (focalPoint.y - 40).toString());\n image.setAttribute(\n 'transform',\n `rotate(${focalPoint.angleDeg ?? 0}, ${focalPoint.x}, ${focalPoint.y})`\n );\n image.setAttribute('href', CircleArrowUp);\n image.setAttribute('width', '80');\n image.setAttribute('height', '80');\n\n svgElement.appendChild(image);\n } else {\n const circle2 = document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'circle'\n );\n circle2.setAttribute('id', 'focal-point-cir-2');\n circle2.setAttribute('cx', focalPoint.x.toString());\n circle2.setAttribute('cy', focalPoint.y.toString());\n circle2.setAttribute('r', '30');\n circle2.setAttribute('fill', vars.color.backgroundBrandActive);\n circle2.setAttribute('stroke', vars.color.textInverted);\n circle2.setAttribute('stroke-width', '10');\n svgElement.appendChild(circle2);\n }\n }\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport type VenueMapContentContainerProps = {\n isWhiteBackground?: boolean;\n};\n\nexport const VenueMapContentContainer = styled.div`\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n background-color: ${(props) =>\n props.isWhiteBackground\n ? props.theme.colors.white\n : props.theme.colors.backgroundSecondary};\n padding: ${() => vars.spacing.lg};\n border-radius: ${() => vars.spacing.lg};\n`;\n\nexport const StyledDiv = styled.div<{\n removePinchZoom?: boolean;\n setTransitionAnimation?: boolean;\n blurMap?: boolean;\n hideMap?: boolean;\n isRelocatedStaticInfo?: boolean;\n}>`\n & svg {\n height: ${({ isRelocatedStaticInfo }) =>\n isRelocatedStaticInfo ? `90%` : `100%`};\n width: 100%;\n }\n & * {\n text-anchor: middle;\n font-weight: bold;\n }\n & .svg-pan-zoom_viewport {\n transition: ${(props) =>\n props.removePinchZoom\n ? `none`\n : `transform 0.5s cubic-bezier(0, 0.8, 0.5, 1)`};\n }\n height: 100%;\n cursor: move;\n transition: ${({ setTransitionAnimation }) =>\n setTransitionAnimation ? '0.2s filter linear, 0.2s opacity ease-in' : ''};\n filter: ${({ blurMap }) => (blurMap ? 'blur(5px)' : '')};\n opacity: ${({ hideMap }) => (hideMap ? 0 : 1)};\n`;\n\nexport const StyledResetVariant = styled.span<{\n showFiltersOnTop?: boolean;\n}>`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n overflow-anchor: none;\n position: absolute;\n bottom: 0;\n right: 0;\n z-index: ${(props) => (props.showFiltersOnTop ? 1 : 100)};\n padding: ${() => vars.spacing.sm};\n`;\n\nexport const IconParent = styled.button`\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n outline: none;\n`;\n\nexport const StyledIconParentVariant = styled(IconParent)`\n height: ${() => vars.spacing.xl};\n width: ${() => vars.spacing.xl};\n border: 1px solid ${(props) => props.theme.colors.borderPrimary};\n border-radius: 50%;\n background-color: ${(props) => props.theme.colors.backgroundPrimary};\n`;\n\nexport const StyledBorderDiv = styled.div`\n display: none;\n margin-top: ${() => vars.spacing.sm};\n width: 40px;\n @media ${({ theme: { media } }) => `${media.tablet}, ${media.desktop}`} {\n display: block;\n }\n`;\n\nexport const StyledHoverDiv = styled.div`\n display: none;\n\n &:nth-of-type(1) {\n border-width: 1px 1px 0 1px;\n border-style: solid;\n border-color: ${(props) => props.theme.colors.borderPrimary};\n border-radius: ${({ theme }) =>\n `${theme.borderRadius.s}, ${theme.borderRadius.s}, 0, 0`};\n }\n\n &:nth-of-type(2) {\n border-width: 1px 1px 1px 1px;\n border-style: solid;\n border-color: ${(props) => props.theme.colors.borderPrimary};\n border-radius: ${({ theme }) =>\n `0, 0, ${theme.borderRadius.s}, ${theme.borderRadius.s}`};\n }\n\n @media ${({ theme: { media } }) => `${media.tablet}, ${media.desktop}`} {\n display: flex;\n background-color: ${(props) => props.theme.colors.backgroundPrimary};\n justify-content: center;\n align-items: center;\n height: 30px;\n :hover {\n background-color: ${(props) => props.theme.colors.backgroundInteraction};\n cursor: pointer;\n }\n }\n`;\n\nexport const SellerListingDiv = styled.span`\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('body2')};\n border-radius: ${({ theme: { borderRadius } }) => borderRadius.s};\n line-height: ${() => vars.typography.lineHeight.sm};\n padding: 0 ${() => vars.spacing.sm};\n height: ${() => vars.typography.lineHeight.sm};\n display: inline-block;\n background-color: ${(props) => props.theme.colors.backgroundInfo};\n color: ${(props) => props.theme.colors.textStrong};\n text-align: center;\n`;\n","import {\n Seating,\n SectionInfo,\n VenueMapInfo,\n VenueMapSectionType,\n} from 'src/WebApiController';\n\nexport const isSeatingMatchSectionInfo = (\n section: SectionInfo,\n sectionText?: string | null,\n rowId?: number | null\n) => {\n return (\n sectionText?.toLocaleUpperCase() === section.name.toLocaleUpperCase() ||\n section.rows.some((r) => r.id === rowId)\n );\n};\n\nexport const SECTION_TYPES_WITH_ROWS = [\n VenueMapSectionType.ForcedRow,\n VenueMapSectionType.OptionalRow,\n VenueMapSectionType.OptionalRowPairs,\n VenueMapSectionType.ForcedRowPairs,\n];\n\n/**\n * Indicates if the venue map has sections with rows and if these rows only contain speculative data\n * @param venueMap\n * @returns\n */\nexport const isMissingRowData = (venueMap: VenueMapInfo | null | undefined) => {\n if (!venueMap) {\n // If we don't have a venue map, we can't determine if it's missing row data\n return false;\n }\n\n const sectionsWithRow = venueMap.sections.filter((s) =>\n SECTION_TYPES_WITH_ROWS.includes(s.sectionType)\n );\n const hasNonSpeculativeRows = sectionsWithRow.some(\n (s) => s.rows.filter((r) => r.isSpeculative === false).length > 0\n );\n\n return sectionsWithRow.length > 0 && !hasNonSpeculativeRows;\n};\n\nexport const findTicketClass = (\n seating: Seating,\n sectionInfo?: SectionInfo[] | null\n) => {\n if (!sectionInfo?.length) {\n return;\n }\n\n if (seating.rowId != null) {\n return sectionInfo\n .find((s) => s.rows.some((r) => r.id === seating.rowId))\n ?.rows.find((r) => r.id === seating.rowId)?.tktClass;\n }\n\n if (seating.row) {\n return sectionInfo\n .find(\n (s) =>\n s.name.toLocaleUpperCase() === seating.section.toLocaleUpperCase() &&\n s.rows.some(\n (r) =>\n r.name?.toLocaleUpperCase() === seating.row?.toLocaleUpperCase()\n )\n )\n ?.rows.find(\n (r) => r.name?.toLocaleUpperCase() === seating.row?.toLocaleUpperCase()\n )?.tktClass;\n }\n};\n\nexport const filterSectionByZone =\n (classId: number | undefined) =>\n ({ rows }: SectionInfo) =>\n rows?.some(({ tktClass: ticketClass }) => ticketClass?.id === classId);\n\nexport const filterSectionByZoneRestrict =\n (classId: number | undefined) =>\n ({ rows, sectionType }: SectionInfo) =>\n SECTION_TYPES_WITH_ROWS.includes(sectionType) &&\n rows?.filter((r) => r.isSpeculative === false).length > 0 &&\n rows?.some(({ tktClass: ticketClass }) => ticketClass?.id === classId);\n\nexport const filterSectionByRowType = ({ rows, sectionType }: SectionInfo) =>\n SECTION_TYPES_WITH_ROWS.includes(sectionType) &&\n rows?.filter((r) => r.isSpeculative === false).length > 0;\n","import { MutableRefObject } from 'react';\nimport { vars } from 'src/core/themes';\nimport { SECTION_TYPES_WITH_ROWS } from 'src/utils/venueConfigUtils';\nimport { SectionInfo } from 'src/WebApiController';\n\nexport const isMissiongSectionData = ({ rows, sectionType }: SectionInfo) => {\n // Only check on sections with rows, others are considered valid always\n if (!SECTION_TYPES_WITH_ROWS.includes(sectionType)) {\n return false;\n }\n\n // If all rows are speculative, we consider it missing data\n if (rows.every((r) => r.isSpeculative)) {\n return true;\n }\n\n // If any row is not speculative and has no ordinal, we consider it missing data\n if (\n rows.some(({ isSpeculative, ordinal }) => !isSpeculative && ordinal == null)\n ) {\n return true;\n }\n\n return false;\n};\n\nexport type DrawingPoint = { x: number; y: number };\n\nconst checkIntersection = (\n rect: DOMRect,\n pointA: DrawingPoint,\n pointB: DrawingPoint\n) => {\n // Get the corners of the bounding box\n const topLeft = { x: rect.left, y: rect.top };\n const topRight = { x: rect.right, y: rect.top };\n const bottomLeft = { x: rect.left, y: rect.bottom };\n const bottomRight = { x: rect.right, y: rect.bottom };\n\n // Check if the line intersects any of the four sides of the box\n return (\n lineIntersects(pointA, pointB, topLeft, topRight) || // Top side\n lineIntersects(pointA, pointB, topRight, bottomRight) || // Right side\n lineIntersects(pointA, pointB, bottomRight, bottomLeft) || // Bottom side\n lineIntersects(pointA, pointB, bottomLeft, topLeft) // Left side\n );\n};\n\n// Helper function to check if two line segments intersect\nconst lineIntersects = (\n pointA: DrawingPoint,\n pointB: DrawingPoint,\n compareA: DrawingPoint,\n compareB: DrawingPoint\n) => {\n // Calculate the direction of the lines\n const denominator =\n (pointA.x - pointB.x) * (compareA.y - compareB.y) -\n (pointA.y - pointB.y) * (compareA.x - compareB.x);\n if (denominator === 0) return false; // Lines are parallel\n\n const t =\n ((pointA.x - compareA.x) * (compareA.y - compareB.y) -\n (pointA.y - compareA.y) * (compareA.x - compareB.x)) /\n denominator;\n const u =\n -(\n (pointA.x - pointB.x) * (pointA.y - compareA.y) -\n (pointA.y - pointB.y) * (pointA.x - compareA.x)\n ) / denominator;\n\n // Check if the intersection point is within both line segments\n return t >= 0 && t <= 1 && u >= 0 && u <= 1;\n};\n\n// Check if the DOM rect crosses any of the lines\nexport const crossesPoints = (points: DrawingPoint[], rect: DOMRect) => {\n if (points.length < 2) {\n return false;\n }\n for (let index = 1; index < points.length; index++) {\n if (checkIntersection(rect, points[index - 1], points[index])) {\n return true;\n }\n }\n return false;\n};\n\n// Draw the lines in the canvas\nconst drawLines = (\n context: CanvasRenderingContext2D,\n points: DrawingPoint[]\n) => {\n if (points.length < 2) {\n return;\n }\n context.clearRect(0, 0, context.canvas.width, context.canvas.height);\n context.strokeStyle = vars.color.backgroundBrandActive;\n context.beginPath();\n context.moveTo(points[0].x, points[0].y);\n for (let index = 1; index < points.length; index++) {\n context.lineTo(points[index].x, points[index].y);\n }\n context.stroke();\n context.closePath();\n};\n\nexport const registerDrawLine = (\n svgElementRef: MutableRefObject,\n onDoubleClickStart: MutableRefObject<() => void>,\n onDoubleClickDone: MutableRefObject<(points: DrawingPoint[]) => void>,\n allowDrawLine = true\n) => {\n if (\n svgElementRef.current == null ||\n svgElementRef.current.parentElement === null ||\n !allowDrawLine\n ) {\n return () => {};\n }\n\n let element: HTMLCanvasElement | null = null;\n let context: CanvasRenderingContext2D | null = null;\n // Points in the canvas to draw\n const points: DrawingPoint[] = [];\n // Points in the screen to report\n const rectPoints: DrawingPoint[] = [];\n\n const resetCanvas = () => {\n if (\n svgElementRef.current == null ||\n svgElementRef.current.parentElement === null\n ) {\n return;\n }\n const curreParent = svgElementRef.current.parentElement as HTMLDivElement;\n if (curreParent != null && element !== null) {\n curreParent.removeChild(element);\n curreParent.style.cursor = 'default';\n element = null;\n points.length = 0;\n rectPoints.length = 0;\n }\n if (context !== null) {\n context.clearRect(0, 0, context.canvas.width, context.canvas.height);\n context = null;\n }\n };\n\n const onDoubleClick = (event: MouseEvent) => {\n if (\n svgElementRef.current == null ||\n svgElementRef.current.parentElement === null\n ) {\n return;\n }\n if (event.shiftKey || event.ctrlKey || event.altKey || event.metaKey) {\n return;\n }\n\n // Double click not started, start it\n if (element == null && onDoubleClickStart.current) {\n const curreParent = svgElementRef.current.parentElement as HTMLDivElement;\n const { left: offsetX, top: offsetY } =\n svgElementRef.current.getBoundingClientRect();\n onDoubleClickStart.current();\n points.push({ x: event.clientX - offsetX, y: event.clientY - offsetY });\n rectPoints.push({ x: event.clientX, y: event.clientY });\n element = document.createElement('canvas');\n element.width = curreParent.clientWidth;\n element.height = curreParent.clientHeight;\n element.style.position = 'absolute';\n element.style.left = `0px`;\n element.style.top = `0px`;\n context = element.getContext('2d');\n curreParent.appendChild(element);\n curreParent.style.cursor = 'crosshair';\n return;\n }\n\n onDoubleClickDone.current && onDoubleClickDone.current(rectPoints);\n resetCanvas();\n };\n const onClick = (event: MouseEvent) => {\n if (\n svgElementRef.current == null ||\n svgElementRef.current.parentElement === null ||\n element === null ||\n context === null\n ) {\n return;\n }\n const { left: offsetX, top: offsetY } =\n svgElementRef.current.getBoundingClientRect();\n points.push({ x: event.clientX - offsetX, y: event.clientY - offsetY });\n rectPoints.push({ x: event.clientX, y: event.clientY });\n if (points.length > 1) {\n drawLines(context, points);\n }\n };\n\n const onMouseMove = (event: MouseEvent) => {\n if (\n svgElementRef.current == null ||\n svgElementRef.current.parentElement === null ||\n element === null ||\n context === null\n ) {\n return;\n }\n\n const { left: offsetX, top: offsetY } =\n svgElementRef.current.getBoundingClientRect();\n const currentPoint = {\n x: event.clientX - offsetX,\n y: event.clientY - offsetY,\n };\n drawLines(context, [...points, currentPoint]);\n };\n const onMouseLeave = (_: MouseEvent) => {\n if (element !== null && context !== null) {\n onDoubleClickDone.current && onDoubleClickDone.current(rectPoints);\n }\n resetCanvas();\n };\n\n const parentElement = svgElementRef.current.parentElement as HTMLDivElement;\n // Trick to make the parent focusable so that it can receive keyboard events\n parentElement.setAttribute('tabindex', '0');\n // Remove the outline when the parent is focused\n parentElement.addEventListener('focus', () => {\n parentElement.style.outline = 'none';\n });\n\n parentElement.addEventListener('dblclick', onDoubleClick);\n parentElement.addEventListener('click', onClick);\n parentElement.addEventListener('mousemove', onMouseMove);\n parentElement.addEventListener('mouseleave', onMouseLeave);\n\n // Escape key to cancel the drawing\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onDoubleClickDone.current && onDoubleClickDone.current(rectPoints);\n resetCanvas();\n }\n };\n parentElement.addEventListener('keydown', onKeyDown);\n\n return () => {\n parentElement?.removeEventListener('dblclick', onDoubleClick);\n parentElement?.removeEventListener('click', onClick);\n parentElement?.removeEventListener('mousemove', onMouseMove);\n parentElement?.removeEventListener('mouseleave', onMouseLeave);\n parentElement?.removeEventListener('keydown', onKeyDown);\n\n resetCanvas();\n };\n};\n\n// Relax the panning detection, panning when moved at least 1 pixel\nconst moved = (a: MouseEvent | null, b: MouseEvent | null): boolean => {\n if (a === null || b === null) {\n return false;\n }\n return Math.sqrt(Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2)) > 1;\n};\n\nexport const registerPanningListners = (\n svgElement: HTMLElement | undefined | null,\n isPanning: React.MutableRefObject\n) => {\n // This is a hack to check if user is panning or clicking\n let willClick = false;\n let downEvent: MouseEvent | null = null;\n\n const panningHandlers = {\n mousedown: (event: Event) => {\n willClick = true;\n downEvent = event as MouseEvent;\n },\n mousemove: (event: Event) => {\n if (\n willClick &&\n !isPanning.current &&\n moved(downEvent as MouseEvent, event as MouseEvent)\n ) {\n isPanning.current = true;\n }\n },\n mouseup: (_: Event) => {\n downEvent = null;\n if (willClick) {\n // Click event is always fired after mouseup,\n // reserve a small time on the panning flag to avoid click and pan at the same time\n setTimeout(() => {\n isPanning.current = false;\n willClick = false;\n }, 50);\n }\n },\n } as Record void>;\n\n for (const eventName in panningHandlers) {\n svgElement?.addEventListener(eventName, panningHandlers[eventName]);\n }\n\n return () => {\n for (const eventName in panningHandlers) {\n svgElement?.removeEventListener(eventName, panningHandlers[eventName]);\n }\n };\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const AddFileIcon = (props: PosIconProps) => {\n return (\n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function SignalStep0Icon(props: Omit) {\n return (\n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function SignalStep1Icon(props: Omit) {\n return (\n \n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function SignalStep2Icon(props: Omit) {\n return (\n \n \n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function SignalStep3Icon(props: Omit) {\n return (\n \n \n \n \n \n \n );\n}\n","import { useEffect, useState } from 'react';\n\nimport { SignalStep0Icon } from './SignalStep0Icon';\nimport { SignalStep1Icon } from './SignalStep1Icon';\nimport { SignalStep2Icon } from './SignalStep2Icon';\nimport { SignalStep3Icon } from './SignalStep3Icon';\nimport { PosIconProps } from './SvgWrapper';\n\nexport function AnimatedBroadcastIcon({\n ...props\n}: Omit) {\n const [step, setStep] = useState(0);\n\n useEffect(() => {\n const timer = setInterval(() => {\n setStep((step + 1) % 4);\n }, 200);\n return () => clearInterval(timer);\n });\n\n return (\n <>\n {step === 0 && }\n {step === 1 && }\n {step === 2 && }\n {step === 3 && }\n \n );\n}\n","import { useEffect, useState } from 'react';\n\nimport { SignalStep0Icon } from './SignalStep0Icon';\nimport { SignalStep1Icon } from './SignalStep1Icon';\nimport { SignalStep2Icon } from './SignalStep2Icon';\nimport { SignalStep3Icon } from './SignalStep3Icon';\nimport { PosIconProps } from './SvgWrapper';\n\nexport function AnimatedUnbroadcastIcon({\n ...props\n}: Omit) {\n const [step, setStep] = useState(0);\n\n useEffect(() => {\n const timer = setInterval(() => {\n setStep((step + 1) % 4);\n }, 200);\n return () => clearInterval(timer);\n });\n\n return (\n <>\n {step === 0 && }\n {step === 1 && }\n {step === 2 && }\n {step === 3 && }\n \n );\n}\n","export const AxsLogo = ({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function BroadcastFailedIcon(props: Omit) {\n return (\n \n \n \n \n \n );\n}\n","import { Colors } from 'src/core/themes/constants/colors';\n\nimport { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function BroadcastIcon(props: Omit) {\n return (\n \n \n \n \n \n \n );\n}\n","import { Colors } from 'src/core/themes/constants/colors';\n\nimport { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function BroadcastIconInverted(props: Omit) {\n return (\n \n \n \n \n \n );\n}\n","import { Colors } from 'src/core/themes/constants/colors';\n\nimport { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const BroadcastWithErrorIcon = ({\n noOutline,\n ...props\n}: Omit & { noOutline?: boolean }) => {\n return (\n \n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const CompanionIcon = (props: Omit) => {\n return (\n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const ConfigureIcon = (props: Omit) => {\n return (\n \n \n \n );\n};\n","import { vars } from 'src/core/themes';\n\nimport { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const CopyIcon = ({ size, fill, stroke, ...props }: PosIconProps) => {\n const s = size ?? vars.iconSize.l;\n\n return (\n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const DiskSaveIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function DotIcon({\n fill,\n stroke,\n ...props\n}: Omit) {\n return (\n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function DuplicateOutlinedIcon(props: Omit) {\n return (\n \n \n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const FlattenedViewIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function FullPageIcon({\n fill,\n stroke,\n ...props\n}: Omit) {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { Colors } from 'src/core/themes/constants/colors';\n\nimport { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function FullySoldIcon(props: Omit) {\n return (\n \n \n \n \n \n );\n}\n","import { darkLogo } from 'src/components/common/MarketplaceLogo/MarketplaceLogo.css';\n\nexport const GametimeLogo = ({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { vars } from 'src/core/themes';\n\nimport { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const GroupItemIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const HamburgerMenuIcon = (props: PosIconProps) => {\n return (\n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const HistoryIcon = (props: PosIconProps) => {\n return (\n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const LayoutIcon = (props: PosIconProps) => {\n return (\n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const ListingGroupIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const ListingIcon = (props: PosIconProps) => {\n return (\n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function MailIcon({\n fill,\n stroke,\n ...props\n}: Omit) {\n return (\n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const MapIcon = (props: Omit) => {\n return (\n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function MarginMetricIcon(props: PosIconProps) {\n return (\n \n \n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const MergeIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const MobileQRIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const MoneyIcon = (props: PosIconProps) => {\n return (\n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const OpenLinkIcon = ({ fill, stroke, ...props }: PosIconProps) => {\n return (\n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function PurchaseIcon({\n fill,\n stroke,\n ...props\n}: Omit) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const RecenterIcon = (props: PosIconProps) => {\n return (\n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const SaleAlertIcon = (props: PosIconProps) => {\n return (\n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function SalesMetricIcon(props: PosIconProps) {\n return (\n \n \n \n \n );\n}\n","import { Colors } from 'src/core/themes/constants/colors';\n\nexport const SeatGeekLogo = ({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) => {\n return (\n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function SeatSaverIcon(props: Omit) {\n return (\n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function SignalIcon(props: Omit) {\n return (\n \n \n \n \n );\n}\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const SplitIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n );\n};\n","export const StubHubLogo = ({\n width,\n height,\n colorMode = 'lightBackground',\n}: {\n width?: string | number;\n height?: string | number;\n colorMode?: 'lightBackground' | 'darkBackground' | 'white';\n}) => {\n const letterColor = colorMode === 'white' ? '#333333' : 'white';\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","export const StubHubProLogo = ({\n width,\n height,\n colorMode,\n}: {\n width?: string | number;\n height?: string | number;\n colorMode?: 'lightBackground' | 'darkBackground';\n}) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const TagIcon = (props: PosIconProps) => {\n return (\n // It's import for the viewbox fo this SVG to stay 20 else it won't resize properly\n \n \n \n );\n};\n","export const TicketmasterLogo = ({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","export const TicketUtilLogo = ({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { darkLogo } from 'src/components/common/MarketplaceLogo/MarketplaceLogo.css';\n\nexport const TickPickLogo = ({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function UnbroadcastIcon({\n noOutline,\n ...props\n}: Omit & { noOutline?: boolean }) {\n return (\n \n {!noOutline && (\n \n )}\n \n \n \n \n );\n}\n","import { Stack } from 'src/core/ui';\n\nexport const ViagogoLogo = ({ height }: { height?: number | string }) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { darkLogo } from 'src/components/common/MarketplaceLogo/MarketplaceLogo.css';\n\nexport const VividSeatsLogo = ({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) => {\n return (\n \n h\n \n \n \n \n \n \n \n );\n};\n","import Rainbow from 'rainbowvis.js';\nimport { useMemo } from 'react';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './CondensedColorBand.css';\n\nexport type CondensedColorBandProps = {\n numOfSteps: number;\n spectrum: string[];\n labels?: ContentId[] | string[];\n};\n\nexport const CondensedColorBand = ({\n numOfSteps,\n spectrum,\n labels,\n}: CondensedColorBandProps) => {\n const colorSteps = useMemo(() => {\n const rainbow = new Rainbow();\n rainbow.setNumberRange(1, numOfSteps);\n rainbow.setSpectrumByArray(spectrum);\n\n const colorSteps = [];\n for (let i = 0; i < numOfSteps; i++) {\n const color = rainbow.colorAt(i + 1);\n colorSteps.push();\n }\n return colorSteps;\n }, [numOfSteps, spectrum]);\n\n const startLabelContentId = useMemo(() => {\n if (labels?.length == 0 || labels == null) {\n return '';\n }\n\n return labels.at(0);\n }, [labels]);\n\n const endLabelContentId = useMemo(() => {\n if (labels?.length == 0 || labels == null) {\n return '';\n }\n return labels.at(-1);\n }, [labels]);\n\n const startText = useContent(startLabelContentId);\n const endText = useContent(endLabelContentId);\n\n return (\n
\n {startText}\n
{colorSteps}
\n {endText}\n
\n );\n};\n\nconst ColorStep = ({ color }: { color: string }) => {\n return (\n
\n );\n};\n","import React from 'react';\nimport { useDebounce, useMeasure } from 'react-use';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { mergeRefs } from 'src/core/utils';\nimport { RecenterIcon } from 'src/svgs';\nimport { MinusIcon, PlusIcon } from 'src/svgs/Viagogo';\n\nimport { ColorBandProps } from './shared/components/ColorBand';\nimport { CondensedColorBand } from './shared/components/ColorBand/CondensedColorBand';\nimport { StyledDiv } from './VenueMap.styled';\nimport * as styles from './VenueMapContentCondensed.css';\n\nexport const VenueMapContentCondensed = ({\n localRef,\n ref,\n svg,\n blurMap,\n hideMap,\n colorBandProps,\n statsContent,\n mapActionContainerClassname,\n v3,\n onZoom,\n onReset,\n}: {\n localRef:\n | React.RefObject\n | React.Dispatch>;\n ref: React.Ref;\n svg: string | TrustedHTML;\n blurMap: boolean;\n hideMap?: boolean;\n colorBandProps: ColorBandProps | undefined;\n compQuantityFilters?: string[];\n statsContent: React.ReactNode;\n mapActionContainerClassname?: string;\n v3?: boolean;\n onZoom: (zoomIn?: boolean) => void;\n onReset: () => void;\n}) => {\n const [containerRef, { width }] = useMeasure();\n useDebounce(() => onReset(), 100, [width]);\n\n return (\n \n \n\n \n \n
\n {\n e.stopPropagation();\n e.preventDefault();\n onZoom(true);\n }}\n />\n {\n e.stopPropagation();\n e.preventDefault();\n onZoom(false);\n }}\n />\n
\n
\n {\n e.stopPropagation();\n e.preventDefault();\n onReset();\n }}\n />\n
\n\n
{statsContent}
\n
\n \n {colorBandProps && (\n
\n \n
\n )}\n
\n \n \n );\n};\n","import { debounce, isEmpty, uniqBy } from 'lodash-es';\nimport React, {\n ReactNode,\n Ref,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { vars } from 'src/core/themes';\nimport { TooltipPopover } from 'src/core/ui';\nimport { mergeRefs } from 'src/core/utils';\nimport {\n IconsFill,\n InfoSolidIcon,\n MinusIcon,\n PlusIcon,\n ResetIcon,\n} from 'src/svgs/Viagogo';\nimport { FocalPointInfo, SectionInfo } from 'src/WebApiController';\nimport svgPanZoom from 'svg-pan-zoom';\n\nimport { ColorBand, ColorBandProps } from './shared/components/ColorBand';\nimport { addFocalPoint } from './shared/utils/addFocalPoint';\nimport { VenueMapMouseEvent } from './shared/utils/VenueMapMouseEvent';\nimport * as styles from './VenueMap.css';\nimport {\n IconParent,\n StyledBorderDiv,\n StyledDiv,\n StyledHoverDiv,\n StyledIconParentVariant,\n StyledResetVariant,\n VenueMapContentContainer,\n} from './VenueMap.styled';\nimport { VenueMapColorSelector, VenueMapColorStyles } from './VenueMap.types';\nimport {\n crossesPoints,\n DrawingPoint,\n isMissiongSectionData,\n registerDrawLine,\n registerPanningListners,\n} from './VenueMapContent.hooks';\nimport { VenueMapContentCondensed } from './VenueMapContentCondensed';\n\nconst clickEvents = ['click'];\n\nconst MaxSimilarSectionsToGetForSelectedSections = 10;\nconst ZOOM_SCALE_SENSITIVITY = 0.2;\n\nexport type VenueMapContentProps = {\n selectedSections?: SectionInfo[];\n markedSectionIds?: number[];\n onSectionClicked?: (\n e: MouseEvent,\n selectedSection: SectionInfo,\n surroundingSections?: SectionInfo[]\n ) => void;\n onSectionHovered?: (hoveredSection: SectionInfo) => ReactNode;\n setSelectedSections?: (sections: SectionInfo[]) => void;\n staticInfoContent?: React.ReactNode;\n infoIconContent?: React.ReactNode;\n availableSections: SectionInfo[];\n svg: string | TrustedHTML;\n isZoomEnabled: boolean;\n isPanEnabled?: boolean;\n svgMapUrl: string; // what to use this for?\n venueConfigId: number; // what to use this for?\n showDefaultMapColors?: boolean;\n colorBandProps?: ColorBandProps;\n /* Callback to get color for a section/ticketClass pair to provide dynamic\n * colorization of sections in the map\n */\n focalPoint?: FocalPointInfo | null;\n getColor?: (info: VenueMapColorSelector) => VenueMapColorStyles | void;\n isHeatMap?: boolean;\n statsContent?: React.ReactNode;\n isWhiteBackground?: boolean;\n isRelocatedStaticInfo?: boolean;\n allowDrawLine?: boolean;\n isCondensedView?: boolean;\n shouldRepaint?: boolean;\n disableHoverEffect?: boolean;\n mapActionContainerClassname?: string;\n};\n\nconst colors = {\n defaultBackground: vars.color.backgroundPrimary,\n defaultForeground: vars.color.textPrimary,\n defaultHoverBackground: vars.color.backgroundPrimaryHover,\n defaultHoverForeground: vars.color.textPrimaryHover,\n selectedBackground: vars.color.backgroundHighlight,\n selectedForeground: vars.color.textBrand,\n selectedHoverBackground: vars.color.backgroundHighlightHover,\n selectedHoverForeground: vars.color.textBrandHover,\n};\n\nconst VenueMapContent = React.forwardRef(\n (\n {\n selectedSections,\n markedSectionIds,\n onSectionClicked,\n onSectionHovered,\n setSelectedSections,\n staticInfoContent,\n infoIconContent,\n availableSections,\n svg,\n focalPoint,\n isZoomEnabled = true,\n isPanEnabled = true,\n showDefaultMapColors,\n colorBandProps,\n getColor,\n isHeatMap = false,\n statsContent,\n isWhiteBackground = false,\n isRelocatedStaticInfo = false,\n allowDrawLine = true,\n isCondensedView = false,\n mapActionContainerClassname,\n shouldRepaint = false,\n disableHoverEffect = false,\n }: VenueMapContentProps,\n ref: Ref\n ) => {\n const localRef = useRef(null);\n\n const isPanning = useRef(false);\n\n const onRemoveEventListenersRef = useRef<() => void>(() => void 0);\n const onDoulbeClickDoneRef = useRef<(points: DrawingPoint[]) => void>(\n () => void 0\n );\n const [mapLoaded, setMapLoaded] = useState(false);\n\n useEffect(() => {\n if (!mapLoaded) return;\n const deregisterDrawLine = registerDrawLine(\n localRef,\n onRemoveEventListenersRef,\n onDoulbeClickDoneRef,\n allowDrawLine\n );\n return () => {\n deregisterDrawLine();\n };\n }, [mapLoaded, allowDrawLine]);\n\n const [hoveredContent, setHoverContent] = useState();\n const [zoomFlag, setZoomFlag] = useState(false);\n const [blurMap, setBlurMap] = useState(true);\n\n // Hide map if there is a color override, and show it after color is initialized\n const [hideMap, setHideMap] = useState(!!getColor || showDefaultMapColors);\n\n const sectionIdsMissingRowOrder = useMemo(\n () => availableSections.filter(isMissiongSectionData).map(({ id }) => id),\n [availableSections]\n );\n\n useEffect(() => {\n if (!shouldRepaint) return;\n\n const timer = setTimeout(() => {\n if (!localRef.current) return;\n const svgElement = localRef.current.getElementsByTagName('svg')[0];\n const { width, height } = svgElement.getBoundingClientRect();\n // There seems a bug where initialize svgPanZoom with 0 width/height element will make it always 0*0 dimension\n if (width * height === 0) return;\n\n const venueMapSvg = svgPanZoom(svgElement, {\n fit: true,\n contain: true,\n zoomScaleSensitivity: ZOOM_SCALE_SENSITIVITY,\n });\n\n venueMapSvg.resize();\n venueMapSvg.fit();\n venueMapSvg.center();\n setZoomFlag(false);\n }, 50);\n\n return () => {\n clearTimeout(timer);\n };\n }, [localRef, setZoomFlag, shouldRepaint]);\n\n useEffect(() => {\n if (availableSections.length) setBlurMap(false);\n }, [availableSections.length]);\n\n useEffect(() => {\n if (!localRef.current) return;\n\n const svgElement = localRef.current.getElementsByTagName('svg')[0];\n addFocalPoint(svgElement, focalPoint);\n\n const sprites = (\n [\n ...svgElement.querySelectorAll('g[sprite-identifier] path'),\n ] as HTMLElement[]\n ).filter((p) => getSpriteIdentifier(p));\n\n if (isEmpty(sprites)) return;\n\n const { width, height } = svgElement.getBoundingClientRect();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let venueMapSvg: any = null;\n if (width * height > 0) {\n venueMapSvg = svgPanZoom(svgElement, {\n zoomScaleSensitivity: ZOOM_SCALE_SENSITIVITY,\n zoomEnabled: isZoomEnabled,\n panEnabled: isPanEnabled,\n dblClickZoomEnabled: false,\n onZoom: () => setZoomFlag(true),\n onPan: () => setZoomFlag(true),\n });\n }\n\n const onResize = () => {\n if (localRef.current) {\n if (!isCondensedView) {\n svgElement.setAttribute(\n 'width',\n localRef.current.clientWidth.toString()\n );\n svgElement.setAttribute(\n 'height',\n localRef.current.clientHeight.toString()\n );\n }\n if (!venueMapSvg) return;\n venueMapSvg.resize(); // update SVG cached size and controls positions\n venueMapSvg.fit();\n venueMapSvg.center();\n }\n };\n\n const debounceOnResize = debounce(onResize, 200);\n\n const mouseEnter = ({ target }: MouseEvent) => {\n if (disableHoverEffect) return;\n let htmlTarget = target as HTMLElement;\n if (htmlTarget.localName === 'text') {\n htmlTarget = Array.from(\n htmlTarget.parentElement?.children ?? []\n ).filter(\n (child) =>\n child.getAttribute('eid') === htmlTarget.getAttribute('eid') &&\n child.tagName === 'path'\n )[0] as HTMLElement;\n }\n\n const selectedSectionId = parseInt(getSpriteIdentifier(htmlTarget)!);\n\n const sectionIndex = availableSections?.findIndex(\n (s) => s.id === selectedSectionId\n );\n if (sectionIndex >= 0) {\n const section = availableSections[sectionIndex];\n if (section) {\n const hoveredContent = onSectionHovered?.(section);\n setHoverContent(hoveredContent);\n }\n }\n\n htmlTarget.setAttribute('fill-opacity', '0.25');\n };\n\n const mouseLeave = ({ target }: MouseEvent) => {\n if (disableHoverEffect) return;\n let htmlTarget = target as HTMLElement;\n if (htmlTarget.localName === 'text') {\n htmlTarget = Array.from(htmlTarget.parentElement!.children).filter(\n (child) =>\n child.getAttribute('eid') === htmlTarget.getAttribute('eid') &&\n child.tagName === 'path'\n )[0] as HTMLElement;\n }\n\n htmlTarget.setAttribute('fill-opacity', '1');\n };\n\n const setSelectedHandler = (e: Event) => {\n if (isPanning.current) {\n return;\n }\n const mouseEvent = e as MouseEvent;\n\n let htmlTarget = e.target as HTMLElement;\n if (htmlTarget.localName === 'text') {\n htmlTarget = Array.from(htmlTarget.parentElement!.children).filter(\n (child) =>\n child.getAttribute('eid') === htmlTarget.getAttribute('eid') &&\n child.tagName === 'path'\n )[0] as HTMLElement;\n }\n const selectedTicketClassId = parseInt(\n htmlTarget.getAttribute('eid') ?? '0'\n );\n\n const selectedSectionId = parseInt(getSpriteIdentifier(htmlTarget)!);\n\n const selectedSection = availableSections.find(\n (x) =>\n x.id === selectedSectionId &&\n (selectedTicketClassId === 0 ||\n x.specRow?.ticketClassId === selectedTicketClassId ||\n !x.rows?.length ||\n !selectedTicketClassId ||\n x.rows?.find((r) => r.tktClass?.id === selectedTicketClassId))\n );\n\n const selectedSectionIndex = filteredSprites.findIndex(\n (g) =>\n g.sectionId === selectedSectionId &&\n (selectedTicketClassId === 0 ||\n g.ticketClassId === selectedTicketClassId)\n );\n\n const lookDistance = MaxSimilarSectionsToGetForSelectedSections / 2;\n\n // Get the 10 sections surrounding the clicked section\n const surroundingSections = [];\n for (\n let i = Math.max(selectedSectionIndex - lookDistance, 0);\n i <=\n Math.min(\n selectedSectionIndex + lookDistance,\n filteredSprites.length - 1\n );\n i++\n ) {\n const fs = filteredSprites[i];\n const s = availableSections.find(\n (s) =>\n s.id === fs.sectionId &&\n (s.specRow?.ticketClassId === fs.ticketClassId ||\n s.rows.some((r) => r.tktClass?.id === fs.ticketClassId) ||\n fs.ticketClassId === 0)\n );\n\n if (s) {\n if (surroundingSections.findIndex((ss) => ss.id === s.id) < 0) {\n surroundingSections.push(s);\n }\n }\n }\n\n selectedSection &&\n onSectionClicked?.(mouseEvent, selectedSection, surroundingSections);\n };\n\n sprites.forEach((path) => {\n const spriteIdentifier = getSpriteIdentifier(path);\n\n const sectionId = parseInt(spriteIdentifier!);\n const ticketClassId = parseInt(path.getAttribute('eid') ?? '0');\n\n const missingRowOrder = sectionIdsMissingRowOrder.includes(sectionId);\n\n const textSiblings = (Array.from(path.parentElement!.children).filter(\n (child) =>\n child.getAttribute('eid') === path.getAttribute('eid') &&\n child.tagName === 'text'\n ) || []) as HTMLElement[];\n\n const sectionName =\n textSiblings\n .map((sibling) => sibling.textContent)\n .find((text) => !!text) ?? undefined;\n\n const isSelected =\n selectedSections?.some(({ id }) => id === sectionId) ?? false;\n const isMarked = markedSectionIds?.some((id) => id === sectionId);\n\n const knownSection = availableSections.find((x) => x.id === sectionId);\n const knownRow =\n knownSection?.rows?.find((r) => r.tktClass?.id === ticketClassId) ??\n knownSection?.specRow;\n\n const { fill, stroke, textColor, strokeWidth } = getColor?.({\n sectionId,\n rowId: knownRow?.id,\n sectionName,\n ticketClassId,\n isSelected,\n isMarked,\n }) ?? {\n fill: '',\n stroke: '',\n };\n\n if (fill && stroke) {\n // If we have dynamic coloring from the function, use it and quit\n path.setAttribute('fill', fill);\n path.setAttribute('fill-opacity', '1');\n path.setAttribute('stroke', stroke);\n } else {\n const selectedSection = selectedSections?.find(\n (x) => x.id === sectionId\n );\n if (selectedSection) {\n path.setAttribute('fill', colors.selectedBackground);\n path.setAttribute('fill-opacity', '1');\n path.setAttribute('stroke', colors.selectedForeground);\n } else {\n if (knownSection) {\n path.setAttribute(\n 'fill',\n showDefaultMapColors\n ? (knownRow?.tktClass?.color ?? colors.defaultBackground)\n : colors.defaultBackground\n );\n path.setAttribute('fill-opacity', '1');\n path.setAttribute('stroke', colors.defaultForeground);\n } else {\n path.setAttribute('fill', colors.defaultBackground);\n path.setAttribute('fill-opacity', '1');\n path.setAttribute('stroke', colors.defaultForeground);\n }\n }\n }\n\n path.style.cursor = 'pointer';\n if (!isEmpty(textSiblings)) {\n textSiblings.forEach((sibling) => {\n sibling.style.cursor = 'pointer';\n if (isSelected) {\n sibling.setAttribute('fill', vars.color.textBrand);\n } else if (textColor) {\n sibling.setAttribute('fill', textColor);\n } else {\n sibling.setAttribute('fill', 'black');\n }\n });\n }\n\n if (isSelected) {\n path.setAttribute('stroke', vars.color.textBrand);\n path.setAttribute('stroke-width', strokeWidth ?? '10px');\n } else if (isMarked) {\n path.setAttribute('stroke', vars.color.textBrand);\n path.setAttribute('stroke-width', strokeWidth ?? '6px');\n } else {\n path.setAttribute('stroke-width', strokeWidth ?? '2px');\n }\n\n if (missingRowOrder && isHeatMap) {\n textSiblings.forEach((sibling) => {\n if (sibling.textContent && sibling.textContent.slice(-1) != '!') {\n sibling.textContent = `${sibling.textContent}!`;\n }\n });\n path.setAttribute('stroke', vars.color.borderWarning);\n path.setAttribute('stroke-width', '4px');\n }\n });\n\n const filteredSprites = sprites.map((element) => {\n const ticketClassId = parseInt(element.getAttribute('eid') ?? '0');\n const sectionId = parseInt(getSpriteIdentifier(element)!);\n\n const textSiblings = (Array.from(\n element.parentElement!.children\n ).filter(\n (child) =>\n child.getAttribute('eid') === element.getAttribute('eid') &&\n child.tagName === 'text'\n ) || []) as HTMLElement[];\n\n const sectionName =\n textSiblings\n .map((sibling) => sibling.textContent)\n .find((text) => !!text) ?? undefined;\n\n return {\n element,\n textSiblings,\n sectionId,\n ticketClassId,\n sectionName,\n mouseEnter: (e: MouseEvent) => mouseEnter(e),\n mouseLeave: (e: MouseEvent) => mouseLeave(e),\n clickFunc: setSelectedHandler,\n };\n });\n\n const filteredSpritesByTicketClass = sprites\n .filter((element) => {\n const ticketClassId = parseInt(element.getAttribute('eid') ?? '0');\n return (\n availableSections.filter(\n (x) =>\n x.rows?.find((r) => r.tktClass?.id === ticketClassId) &&\n !filteredSprites.find((e) => e.element === element)\n ).length === 1\n );\n })\n .map((element) => {\n return {\n element,\n mouseEnter: (e: MouseEvent) => mouseEnter(e),\n mouseLeave: (e: MouseEvent) => mouseLeave(e),\n };\n });\n\n // add eventListeners\n const onAddingEventListeners = () => {\n filteredSprites.forEach(\n ({ element, textSiblings, mouseEnter, mouseLeave, clickFunc }) => {\n element.addEventListener('mouseenter', mouseEnter);\n element.addEventListener('mouseleave', mouseLeave);\n textSiblings.forEach((sibling) =>\n sibling.addEventListener('mouseenter', mouseEnter)\n );\n textSiblings.forEach((sibling) =>\n sibling.addEventListener('mouseleave', mouseLeave)\n );\n clickEvents.forEach((e) => {\n element.addEventListener(e, clickFunc);\n textSiblings.forEach((sibling) =>\n sibling.addEventListener(e, clickFunc)\n );\n });\n }\n );\n filteredSpritesByTicketClass.forEach(\n ({ element, mouseEnter, mouseLeave }) => {\n element.addEventListener('mouseenter', mouseEnter);\n element.addEventListener('mouseleave', mouseLeave);\n }\n );\n window.addEventListener('resize', debounceOnResize);\n };\n\n // remove eventListeners\n const onRemoveEventListeners = () => {\n filteredSprites.forEach(\n ({ element, textSiblings, mouseEnter, mouseLeave, clickFunc }) => {\n element.removeEventListener('mouseenter', mouseEnter);\n element.removeEventListener('mouseleave', mouseLeave);\n textSiblings.forEach((sibling) =>\n sibling.removeEventListener('mouseenter', mouseEnter)\n );\n textSiblings.forEach((sibling) =>\n sibling.removeEventListener('mouseleave', mouseLeave)\n );\n clickEvents.forEach((e) => {\n element.removeEventListener(e, clickFunc);\n textSiblings.forEach((sibling) =>\n sibling.removeEventListener(e, clickFunc)\n );\n });\n }\n );\n filteredSpritesByTicketClass.forEach(\n ({ element, mouseEnter, mouseLeave }) => {\n element.removeEventListener('mouseenter', mouseEnter);\n element.removeEventListener('mouseleave', mouseLeave);\n }\n );\n window.removeEventListener('resize', debounceOnResize);\n };\n onRemoveEventListenersRef.current = onRemoveEventListeners;\n\n onDoulbeClickDoneRef.current = (points: DrawingPoint[]) => {\n onAddingEventListeners();\n const selectedIds = new Set();\n filteredSprites.forEach(({ element }) => {\n if (crossesPoints(points, element.getBoundingClientRect())) {\n selectedIds.add(parseInt(getSpriteIdentifier(element) ?? '-1'));\n }\n });\n const updatedSections = availableSections\n .filter(\n ({ id }) => selectedIds.has(id) || markedSectionIds?.includes(id)\n )\n .toSorted((a, b) => a.name?.localeCompare(b.name));\n\n if (!isEmpty(updatedSections)) {\n setSelectedSections?.(\n uniqBy(updatedSections.concat(selectedSections ?? []), 'id')\n );\n }\n };\n\n const deregisterPanEvents = registerPanningListners(\n localRef.current,\n isPanning\n );\n\n onAddingEventListeners();\n\n // Show the map when color initialization is done when there is color override\n if (getColor || showDefaultMapColors) {\n setHideMap(false);\n }\n\n if (!mapLoaded) {\n setMapLoaded(true);\n }\n\n return () => {\n onRemoveEventListeners();\n deregisterPanEvents();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n availableSections,\n getColor,\n isZoomEnabled,\n onSectionClicked,\n onSectionHovered,\n selectedSections,\n markedSectionIds,\n zoomFlag,\n focalPoint,\n showDefaultMapColors,\n setSelectedSections,\n sectionIdsMissingRowOrder,\n isHeatMap,\n isPanEnabled,\n disableHoverEffect,\n ]);\n\n const onZoom = (zoomIn = true) => {\n if (localRef.current) {\n const svgElement = localRef.current.getElementsByTagName('svg')[0];\n const venueMapSvg = svgPanZoom(svgElement, {\n fit: true,\n contain: true,\n zoomScaleSensitivity: ZOOM_SCALE_SENSITIVITY,\n });\n zoomIn ? venueMapSvg.zoomIn() : venueMapSvg.zoomOut();\n setZoomFlag(true);\n }\n };\n\n const onReset = () => {\n if (localRef.current) {\n const svgElement = localRef.current.getElementsByTagName('svg')[0];\n const { width, height } = svgElement.getBoundingClientRect();\n // There seems a bug where initialize svgPanZoom with 0 width/height element will make it always 0*0 dimension\n if (width * height === 0) return;\n\n const venueMapSvg = svgPanZoom(svgElement, {\n fit: true,\n contain: true,\n zoomScaleSensitivity: ZOOM_SCALE_SENSITIVITY,\n });\n\n venueMapSvg.resize(); // update SVG cached size and controls positions\n venueMapSvg.fit();\n venueMapSvg.center();\n setZoomFlag(false);\n }\n };\n\n return isCondensedView ? (\n \n ) : (\n \n <>\n \n \n\n \n {isZoomEnabled && (\n <>\n {(Boolean(selectedSections?.length) || zoomFlag) && (\n
\n \n \n \n
\n )}\n \n \n onZoom(true)}>\n \n \n \n \n onZoom(false)}>\n \n \n \n \n \n )}\n {infoIconContent && (\n \n }\n >\n {infoIconContent}\n \n )}\n
\n\n {!statsContent && staticInfoContent && (\n \n {staticInfoContent}\n \n )}\n {!statsContent && hoveredContent && (\n
{hoveredContent}
\n )}\n {statsContent}\n \n {colorBandProps && (\n
\n \n
\n )}\n \n
\n );\n }\n);\n\nconst getSpriteIdentifier = (path: HTMLElement | null): string | null => {\n if (!path || !path.parentElement || path.parentElement.localName !== 'g') {\n return null;\n }\n\n const spriteIdentifier =\n path!.parentElement!.getAttribute('sprite-identifier');\n\n if (!spriteIdentifier) {\n return getSpriteIdentifier(path!.parentElement);\n }\n\n return spriteIdentifier!.slice(1);\n};\n\nexport const hoverFuncSeatType = (ticketClasses: number[], type: string) => {\n const event = new MouseEvent(type, {\n view: window,\n bubbles: true,\n cancelable: true,\n }) as VenueMapMouseEvent;\n ticketClasses.forEach((t: number) => {\n const paths = Array.from(\n document.querySelectorAll(`#event-detail-map svg g path[eid=\"${t}\"]`)\n );\n event.sectionIdAvailable = false;\n paths.forEach((path) => {\n path.dispatchEvent(event);\n });\n });\n};\n\nVenueMapContent.displayName = 'VenueMapContent';\nexport default VenueMapContent;\n","import { useQuery } from '@tanstack/react-query';\nimport { useRef } from 'react';\n\nimport { GeneralAdmissionMessage } from './GeneralAdmissionMessage';\nimport { rawFetch } from './shared/utils/rawFetch';\nimport VenueMapContent, { VenueMapContentProps } from './VenueMapContent';\n\nconst domParser = new DOMParser();\nconst placeholder = ``;\n\nexport const VenueMap = ({\n isGeneralAdmissionOnly,\n svgMapUrl,\n ...rest\n}: Omit & {\n isGeneralAdmissionOnly?: boolean;\n}) => {\n if (!svgMapUrl) {\n throw new Error('svgMapUrl not available');\n }\n\n const mapQuery = useQuery({\n queryKey: [svgMapUrl],\n queryFn: () =>\n rawFetch(svgMapUrl, {}).then((text: string) => {\n const s = domParser.parseFromString(text, 'image/svg+xml');\n let isNewMap = false;\n if (s.querySelectorAll('path[eid]').length) isNewMap = true;\n\n if (text) {\n s\n .querySelectorAll('path[obs]')\n ?.forEach((el) => el.setAttribute('style', 'display: none'));\n s\n .querySelectorAll('path[eid]')\n ?.forEach((el) => el.setAttribute('style', 'display: block'));\n const svgElement = s.children[0];\n svgElement.setAttribute(\n 'width',\n ref?.current?.clientWidth?.toString() ?? '0'\n );\n svgElement.setAttribute(\n 'height',\n ref?.current?.clientHeight?.toString() ?? '0'\n );\n const serializer = new XMLSerializer();\n return {\n svg: serializer.serializeToString(svgElement),\n isNewMap,\n };\n }\n\n throw Error('Failed to get venue map : ' + svgMapUrl);\n }),\n\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n });\n\n const ref = useRef(null);\n\n const { svg } = mapQuery.data ?? { svg: placeholder, isNewMap: false };\n\n if (isGeneralAdmissionOnly) {\n return ;\n }\n\n if (!svg || mapQuery.isLoading) {\n return
;\n }\n\n return (\n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const DealUndercutIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const ParentListingModeIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const QualityScoreModeIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const RowExtrapolationUndercutIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const SameEventModeIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const SameSectionModeIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const SameZoneModeIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const SimpleUndercutIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n );\n};\n","import {\n UseFormClearErrors,\n UseFormSetError,\n UseFormSetValue,\n} from 'react-hook-form';\nimport { SectionDisplay } from 'src/components/Events/VenueMap';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DealUndercutIcon } from 'src/svgs/DealUndercutIcon';\nimport { ParentListingModeIcon } from 'src/svgs/ParentListingModeIcon';\nimport { QualityScoreModeIcon } from 'src/svgs/QualityScoreModeIcon';\nimport { RowExtrapolationUndercutIcon } from 'src/svgs/RowExtrapolationUndercutIcon';\nimport { SameEventModeIcon } from 'src/svgs/SameEventModeIcon';\nimport { SameSectionModeIcon } from 'src/svgs/SameSectionModeIcon';\nimport { SameZoneModeIcon } from 'src/svgs/SameZoneModeIcon';\nimport { SimpleUndercutIcon } from 'src/svgs/SimpleUndercutIcon';\nimport {\n AutoPricingCompListingMode,\n AutoPricingUndercutMode,\n CompListing,\n CompListingQuantity,\n ListingDetailsUpdateInput,\n SectionInfo,\n SectionScoreOverride,\n} from 'src/WebApiController';\n\nimport { ContentId } from './constants/contentId';\nimport { formatCurrency, roundToPrecision } from './numberFormatter';\nimport { isSeatingMatchSectionInfo } from './venueConfigUtils';\n\nexport enum UndercutPriceSettingsMode {\n Discount = 'Discount',\n Premium = 'Premium',\n}\n\nexport const UNDERCUT_PRICE_MODE_OPTIONS = [\n {\n value: UndercutPriceSettingsMode.Discount,\n children: ,\n },\n {\n value: UndercutPriceSettingsMode.Premium,\n children: ,\n },\n];\n\nexport enum PriceFloorCeilingMode {\n Proceeds = 'Proceeds',\n Website = 'Website',\n}\n\nexport const PRICE_FLOOR_CEILING_MODE_OPTIONS = [\n {\n value: PriceFloorCeilingMode.Proceeds,\n children: ,\n },\n {\n value: PriceFloorCeilingMode.Website,\n children: ,\n },\n];\n\nexport enum OutlierModeKthLowestStrategy {\n Relative = 'Relative',\n Absolute = 'Absolute',\n}\n\nexport const OUTLIER_MODE_KTH_LOWEST_STRATEGY = [\n {\n value: OutlierModeKthLowestStrategy.Relative,\n children: (\n
\n %\n
\n ),\n },\n {\n value: OutlierModeKthLowestStrategy.Absolute,\n children: (\n
\n $\n
\n ),\n },\n];\n\nexport type PricingSettingsFieldNumeric =\n | 'compListingFloor'\n | 'compListingCeiling'\n | 'undercutAbsoluteAmount'\n | 'undercutRelativeAmount'\n | 'netProceedsCeiling'\n | 'netProceedsFloor';\n\nexport type PricingSettingsField =\n | PricingSettingsFieldNumeric\n | 'undercutMode'\n | 'compListingMode';\n\nexport const validateCompListingSettings = (\n clearErrors: UseFormClearErrors,\n setError: UseFormSetError,\n setValue: UseFormSetValue,\n listForm: ListingDetailsUpdateInput,\n compListingFloorCeilingError: string,\n requiredMsg: string,\n errorField?: PricingSettingsField,\n isStrategy?: boolean\n) => {\n let hasErrors = false;\n\n if (errorField) {\n clearErrors(errorField);\n } else {\n clearErrors('compListingFloor');\n clearErrors('compListingSelectedSectionSettings');\n }\n\n const {\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingOnlyForSelectedSectionsEnabled,\n compListingSelectedSectionSettings,\n autoPricingEnabled,\n skipCompListing,\n } = listForm;\n\n if (!autoPricingEnabled || skipCompListing) {\n return true;\n }\n\n if (\n compListingMode === AutoPricingCompListingMode.QualityScore ||\n compListingMode === AutoPricingCompListingMode.SameSection\n ) {\n if (!compListingFloor) {\n listForm.compListingFloor = compListingFloor;\n setValue('compListingFloor', DEFAULT_COMP_LISTING_FLOOR);\n } else if (compListingCeiling && compListingFloor >= compListingCeiling) {\n setError(\n errorField ?? 'compListingFloor',\n {\n message: compListingFloorCeilingError,\n },\n { shouldFocus: true }\n );\n\n hasErrors = true;\n }\n }\n\n if (\n compListingMode === AutoPricingCompListingMode.QualityScore ||\n compListingMode === AutoPricingCompListingMode.SameEvent ||\n compListingMode === AutoPricingCompListingMode.SameZone\n ) {\n if (\n compListingOnlyForSelectedSectionsEnabled &&\n !isStrategy &&\n !compListingSelectedSectionSettings?.sectionIdFilter?.length\n ) {\n setError(\n errorField ?? 'compListingSelectedSectionSettings',\n {\n message: requiredMsg,\n },\n { shouldFocus: true }\n );\n\n hasErrors = true;\n }\n }\n\n return !hasErrors;\n};\n\nexport const validateUndercutSettings = (\n clearErrors: UseFormClearErrors,\n setValue: UseFormSetValue,\n listForm: ListingDetailsUpdateInput,\n errorField?: PricingSettingsField\n) => {\n if (errorField) {\n clearErrors(errorField);\n } else {\n clearErrors('undercutAbsoluteAmount');\n clearErrors('undercutRelativeAmount');\n }\n\n const {\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n autoPricingEnabled,\n skipUndercut,\n } = listForm;\n\n if (!autoPricingEnabled || skipUndercut) {\n return true;\n }\n\n if (undercutMode) {\n if (undercutAbsoluteAmount == null) {\n listForm.undercutAbsoluteAmount = DEFAULT_UNDERCUT_ABSOLUTE_AMT;\n setValue('undercutAbsoluteAmount', DEFAULT_UNDERCUT_ABSOLUTE_AMT);\n }\n\n if (undercutRelativeAmount == null) {\n listForm.undercutRelativeAmount = DEFAULT_UNDERCUT_RELATIVE_AMT;\n setValue('undercutRelativeAmount', DEFAULT_UNDERCUT_RELATIVE_AMT);\n }\n }\n\n return true;\n};\n\nexport const validateNetProceedsSettings = (\n clearErrors: UseFormClearErrors,\n setError: UseFormSetError,\n listForm: ListingDetailsUpdateInput,\n floorMustBeLessThanCeilingError: string,\n errorField?: PricingSettingsField\n) => {\n let hasErrors = false;\n\n if (errorField) {\n clearErrors(errorField);\n } else {\n clearErrors('netProceedsCeiling');\n clearErrors('netProceedsFloor');\n }\n\n const { netProceedsFloor, netProceedsCeiling } = listForm;\n\n if ((netProceedsFloor ?? 0) > 0 && (netProceedsCeiling ?? 0) > 0) {\n if (netProceedsFloor! >= netProceedsCeiling!) {\n setError(errorField ?? 'netProceedsFloor', {\n message: floorMustBeLessThanCeilingError,\n });\n hasErrors = true;\n }\n }\n\n return !hasErrors;\n};\n\nexport const validateAutoPricingSettings = (\n clearErrors: UseFormClearErrors,\n setError: UseFormSetError,\n setValue: UseFormSetValue,\n listForm: ListingDetailsUpdateInput,\n floorMustBeLessThanCeilingError: string,\n compListingFloorCeilingError: string,\n requiredMsg: string,\n isStrategy?: boolean\n) => {\n let hasErrors = false;\n\n if (\n !validateCompListingSettings(\n clearErrors,\n setError,\n setValue,\n listForm,\n compListingFloorCeilingError,\n requiredMsg,\n undefined,\n isStrategy\n )\n ) {\n hasErrors = true;\n }\n\n if (!validateUndercutSettings(clearErrors, setValue, listForm)) {\n hasErrors = true;\n }\n\n if (\n !isStrategy &&\n !validateNetProceedsSettings(\n clearErrors,\n setError,\n listForm,\n floorMustBeLessThanCeilingError\n )\n ) {\n hasErrors = true;\n }\n\n return !hasErrors;\n};\n\nexport const getUndercutPriceSettingMode = (value?: number | null) => {\n return !value || value >= 0\n ? UndercutPriceSettingsMode.Discount\n : UndercutPriceSettingsMode.Premium;\n};\n\nexport const getUndercutPriceRepresentingMode = (\n absValue: number,\n mode?: UndercutPriceSettingsMode\n) => {\n return mode === UndercutPriceSettingsMode.Premium ? -absValue : absValue;\n};\n\nexport const DEFAULT_COMP_LISTING_FLOOR = 1;\nexport const DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR = 5;\n\nexport const DEFAULT_UNDERCUT_ABSOLUTE_AMT = 0.01;\nexport const DEFAULT_UNDERCUT_RELATIVE_AMT = 0;\n\nexport const SLIDER_MIN = -1;\nexport const SLIDER_MAX = 5;\n\nexport const convertSliderValueToServer = (val: number) =>\n roundToPrecision(val / 100 + 1, 2);\nexport const convertSliderValueFromServer = (val: number) => (val - 1) * 100;\n\nexport const getCompListingModeIcon = (\n mode?: AutoPricingCompListingMode | null\n) => {\n switch (mode) {\n case AutoPricingCompListingMode.QualityScore:\n return QualityScoreModeIcon;\n case AutoPricingCompListingMode.SameSection:\n return SameSectionModeIcon;\n case AutoPricingCompListingMode.SameZone:\n return SameZoneModeIcon;\n case AutoPricingCompListingMode.SameEvent:\n return SameEventModeIcon;\n default:\n return ParentListingModeIcon;\n }\n};\n\nexport const getUndercutModeIcon = (mode?: AutoPricingUndercutMode | null) => {\n switch (mode) {\n case AutoPricingUndercutMode.Simple:\n return SimpleUndercutIcon;\n case AutoPricingUndercutMode.RowExtrapolation:\n return RowExtrapolationUndercutIcon;\n default:\n return DealUndercutIcon;\n }\n};\n\nexport const getSectionInfoDisplay = (\n hoveredSection: SectionInfo,\n compListings: CompListing[],\n scoreOverrides?: SectionScoreOverride[] | null\n) => {\n let lowestPrice: string | undefined | null = undefined;\n let medianPrice: string | undefined | null = undefined;\n let highestPrice: string | undefined | null = undefined;\n\n // If we have no selected listing or owned listings, show comp-listings\n const filteredCompListings = compListings\n .filter(\n (l) =>\n isSeatingMatchSectionInfo(hoveredSection, l.section, l.rowId) &&\n l.sellerAllInPrice?.amt\n )\n .toSorted(\n (l1, l2) =>\n (l1.sellerNetProceeds?.amt ?? 0) - (l2.sellerNetProceeds?.amt ?? 0)\n );\n\n if (filteredCompListings.length > 0) {\n if (filteredCompListings.length === 1) {\n medianPrice = filteredCompListings[0].sellerNetProceeds?.disp;\n } else {\n const medianIndex = Math.floor(filteredCompListings.length / 2);\n medianPrice = filteredCompListings[medianIndex].sellerNetProceeds?.disp;\n if (filteredCompListings.length % 2 === 0) {\n // even, need to get the avg of the 2 medians\n // This assume all the comp listings are displayed using the same currency code\n const median1 = filteredCompListings[medianIndex - 1].sellerNetProceeds;\n const median2 = filteredCompListings[medianIndex].sellerNetProceeds;\n if (median1 != null || median2 != null) {\n const avgMedian = ((median1?.amt ?? 0) + (median2?.amt ?? 0)) / 2;\n\n medianPrice = formatCurrency(\n avgMedian,\n median1?.currency ?? median2?.currency,\n median1?.dec ?? median2?.dec\n );\n }\n }\n\n lowestPrice = filteredCompListings[0].sellerNetProceeds?.disp;\n\n highestPrice =\n filteredCompListings[filteredCompListings.length - 1].sellerNetProceeds\n ?.disp;\n }\n }\n\n return (\n \n );\n};\n\nexport const quantityFiltersFromJson = (\n quantitiesFilterJson: string | null | undefined\n): CompListingQuantity | null => {\n if (!quantitiesFilterJson) {\n return null;\n }\n\n const { quantitiesFilter } = JSON.parse(quantitiesFilterJson);\n\n return {\n exactQuantities: quantitiesFilter?.exact ?? null,\n greaterThanOrEqualToQuantity: quantitiesFilter?.gte ?? null,\n };\n};\n","import { Row } from '@tanstack/react-table';\nimport {\n UseFormClearErrors,\n UseFormSetError,\n UseFormSetValue,\n} from 'react-hook-form';\nimport countryList from 'react-select-country-list';\nimport { ExpandedEventData } from 'src/contexts/CatalogDataContext';\nimport { getEventsWithNonZeroCounts } from 'src/contexts/CatalogDataContext/CatalogDataContext.utils';\nimport { removeSpecialChars } from 'src/utils/stringUtils';\nimport {\n ActionOutboxEntityType,\n AutoPricingCompListingMode,\n AutoPricingInputs,\n CatalogResults,\n DateTimeRange,\n Event,\n EventConfigScoreOverride,\n EventSort,\n EventTimeFrameFilter,\n EventWithData,\n GroupType,\n IListingGroupItem,\n Listing,\n ListingGroup,\n Marketplace,\n Performer,\n TopLevelCategory,\n Venue,\n} from 'src/WebApiController';\n\nimport {\n DEFAULT_COMP_LISTING_FLOOR,\n DEFAULT_UNDERCUT_ABSOLUTE_AMT,\n DEFAULT_UNDERCUT_RELATIVE_AMT,\n} from './autoPricingUtils';\nimport { US_COUNTRY_CODES } from './constants/constants';\nimport { getEventDateDisplayStrings } from './dateTimeUtils';\nimport { compareLocaleLowercased } from './localeUtils';\n\nexport const EVENT_TYPE_PARKING = 'Parking';\n\nexport const getEventPerformerVenue = (\n viagVirtId?: string | null,\n catalog?: Pick<\n CatalogResults,\n | 'events'\n | 'performers'\n | 'venues'\n | 'viagIdToLatestIdLookup'\n | 'posIdToViagIdLookup'\n > | null\n) => {\n if (!catalog || !viagVirtId) {\n return { event: undefined, performer: undefined, venue: undefined } as {\n event?: EventWithData | null;\n performer?: Performer | null;\n venue?: Venue | null;\n };\n }\n\n const event = lookupEventInCatalog(catalog, viagVirtId);\n const { performer, venue } = getPerformerAndVenueForEvent(\n event?.event,\n catalog\n );\n\n return { event, performer, venue };\n};\n\nexport function getPerformerAndVenueForEvent(\n event?: Event | null,\n catalog?: Pick | null\n) {\n if (!event) {\n return { performer: undefined, venue: undefined };\n }\n\n const performer = event.perfId && catalog?.performers[event.perfId];\n const venue = catalog?.venues[event.venueId];\n\n return { performer: performer || undefined, venue };\n}\n\nexport const getIsInternationalEvent = (countryCode?: string | null) => {\n if (!countryCode) {\n return false;\n }\n\n const countryName = countryList().getLabel(countryCode);\n if (!countryName) {\n return false;\n }\n\n // Only say it's international if it is not null/empty, a valid country, and is not US/CA\n return !US_COUNTRY_CODES.includes(countryCode.toUpperCase());\n};\n\nexport const getFormattedEventName = ({\n event,\n performer,\n venue,\n slimMode,\n useShortName,\n}: {\n event?: Event | null;\n performer?: Performer | null;\n venue?: Venue | null;\n slimMode?: boolean;\n useShortName?: boolean;\n}) => {\n if (!event) {\n return ['', '', ''];\n }\n\n const eventName = useShortName ? event?.shortName || event.name : event.name;\n let boldText = eventName;\n let dimText = '';\n let normalText = '';\n const vsText = ' vs ';\n const atText = ' at ';\n\n if (performer) {\n const cat = event.genre;\n const lowerCasedEventName = eventName.toLocaleLowerCase();\n const lowerCasedPerformer = performer.name.toLocaleLowerCase();\n\n if (slimMode) {\n if (\n cat === TopLevelCategory.Concert ||\n cat === TopLevelCategory.Theatre\n ) {\n if (\n venue?.name &&\n venue?.descr &&\n lowerCasedEventName === lowerCasedPerformer\n ) {\n // If the event name just repeat the performer, skip it and just display the venue\n return [venue.name, ' - ', venue.descr];\n } else {\n return [eventName.replace(performer.name, '')];\n }\n }\n }\n\n if (cat === TopLevelCategory.Sports) {\n // Legacy display of VS\n let indexOfVs = lowerCasedEventName.indexOf(vsText);\n if (indexOfVs >= 0) {\n const team1 = lowerCasedEventName.slice(0, indexOfVs);\n const team2 = lowerCasedEventName.slice(indexOfVs + vsText.length);\n\n if (team1 === lowerCasedPerformer || team2 === lowerCasedPerformer) {\n const team1Text = eventName.slice(0, indexOfVs);\n const team2Text = eventName.slice(indexOfVs + vsText.length);\n const homeTeam =\n team1 === lowerCasedPerformer ? team1Text : team2Text;\n const awayTeam =\n team1 === lowerCasedPerformer ? team2Text : team1Text;\n\n boldText = awayTeam;\n dimText = atText;\n normalText = homeTeam;\n }\n } else {\n indexOfVs = lowerCasedEventName.indexOf(atText);\n if (indexOfVs >= 0) {\n const awayTeam = eventName.slice(0, indexOfVs);\n const homeTeam = eventName.slice(indexOfVs + vsText.length);\n\n boldText = awayTeam;\n dimText = slimMode ? vsText : atText;\n normalText = homeTeam;\n }\n }\n }\n }\n\n return [boldText, dimText, normalText];\n};\n\nexport const getEventDisplayText = (\n event: Event,\n venue?: Venue,\n performer?: Performer,\n useShortName?: boolean\n): string => {\n let eventName: string | null = null;\n let eventNameConnector: string | null = null;\n let eventSubName: string | null = null;\n let eventDisplayName = '';\n\n [eventName, eventNameConnector, eventSubName] = getFormattedEventName({\n event,\n venue,\n performer,\n useShortName,\n });\n\n if (venue) {\n eventDisplayName += `${venue.name} `;\n }\n\n eventDisplayName += `${eventName} ${eventNameConnector} ${eventSubName}`;\n\n if (event.dates?.start) {\n const { formattedEventDate, formattedEventSubDate } =\n getEventDateDisplayStrings(event.dates?.start, {\n dateFormat: undefined,\n subDateFormat: ' - h:mm aaa, eee',\n });\n\n eventDisplayName += ` - ${formattedEventDate}${formattedEventSubDate}`;\n }\n return eventDisplayName;\n};\n\nexport function searchEvents(\n data: CatalogResults,\n searchText?: string | null,\n performerIds?: number[] | null,\n venueIds?: number[] | null,\n eventTimeFrameFilter?: EventTimeFrameFilter | null\n) {\n let filteredData = Object.values(data.events).filter((e) => e.event != null);\n\n if (eventTimeFrameFilter) {\n const now = new Date();\n filteredData = filteredData.filter((e) => {\n const { start, end } = e.event.dates;\n if (start) {\n let startDateObj = new Date(start);\n startDateObj = new Date(\n startDateObj.setHours(startDateObj.getHours() + 2)\n );\n const endDateObj = end ? new Date(end) : null;\n\n if (eventTimeFrameFilter === EventTimeFrameFilter.Future) {\n return (endDateObj || startDateObj) >= now;\n } else if (eventTimeFrameFilter === EventTimeFrameFilter.Past) {\n return (endDateObj || startDateObj) < now;\n }\n }\n\n return false;\n });\n }\n\n if (performerIds && performerIds.length > 0) {\n filteredData = filteredData.filter(\n (e) => e.event.perfId && performerIds.includes(e.event.perfId)\n );\n }\n\n if (venueIds && venueIds.length > 0) {\n filteredData = filteredData.filter((e) =>\n venueIds.includes(e.event.venueId)\n );\n }\n\n if (searchText && searchText.length > 0) {\n const formattedSearchText = removeSpecialChars(searchText).toUpperCase();\n const searchTerms = formattedSearchText.split(/\\s/); // any whitespace\n const formattedVenuesNames: Record = {};\n\n filteredData = filteredData.filter((e) => {\n const { performer } = getPerformerAndVenueForEvent(e.event, data);\n\n const formattedEventName = removeSpecialChars(\n getFormattedEventName({\n event: e.event,\n performer,\n }).join(' ')\n ).toUpperCase();\n\n const { venueId } = e.event;\n let formattedVenueName = formattedVenuesNames[venueId];\n if (!formattedVenueName) {\n formattedVenueName = removeSpecialChars(\n data.venues[e.event.venueId]?.name ?? ''\n ).toUpperCase();\n formattedVenuesNames[venueId] = formattedVenueName;\n }\n\n return searchTerms.every(\n (term) =>\n formattedEventName.includes(term) || formattedVenueName.includes(term)\n );\n });\n }\n\n return filteredData;\n}\n\nexport const sortEvents = (\n data: CatalogResults,\n filteredData: EventWithData[],\n sortBy?: EventSort | null,\n isSortDescending?: boolean | null\n) => {\n if (sortBy === EventSort.MainDisplay) {\n // NOTE - For main-grouping, we will sort in-memory because the list is not paged,\n // but if it is paged, we will need to sort server side\n return filteredData.toSorted((a, b) => {\n const { performer: ap } = getPerformerAndVenueForEvent(a.event, data);\n const { performer: bp } = getPerformerAndVenueForEvent(b.event, data);\n const aText = getFormattedEventName({\n event: a.event,\n performer: ap,\n }).join(' ');\n const bText = getFormattedEventName({\n event: b.event,\n performer: bp,\n }).join(' ');\n const result = compareLocaleLowercased(aText, bText);\n return isSortDescending ? -1 * result : result;\n });\n } else {\n return sortEventsByDate(filteredData, isSortDescending);\n }\n};\n\nexport const sortEventsByDate = (\n events: EventWithData[],\n isSortDescending?: boolean | null\n) => {\n return events.toSorted((a, b) => {\n const aStart = a.event.dates.start\n ? new Date(a.event.dates.start)\n : new Date();\n const bStart = b.event.dates.start\n ? new Date(b.event.dates.start)\n : new Date();\n const result = aStart < bStart ? -1 : aStart === bStart ? 0 : 1;\n return isSortDescending ? -1 * result : result;\n });\n};\n\nexport const sortEventsByName = (\n events: EventWithData[],\n isSortDescending?: boolean | null\n) => {\n return events.toSorted((a, b) => {\n const result = compareLocaleLowercased(a.event.name, b.event.name);\n return isSortDescending ? -1 * result : result;\n });\n};\n\nexport const transformData = (\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Sale\n | ActionOutboxEntityType.TicketGroup\n | ActionOutboxEntityType.Purchase,\n data: EventWithData[],\n expandedEventData?: ExpandedEventData | null,\n isExpandedDataLoading?: boolean,\n filterZeroCounts?: boolean\n) => {\n const translatedData = (\n filterZeroCounts ? getEventsWithNonZeroCounts(entityType, data, true) : data\n ).map((e) =>\n setExpandedEventData(expandedEventData, e, isExpandedDataLoading)\n );\n\n return translatedData;\n};\n\nconst setExpandedEventData = (\n expandedEventData: ExpandedEventData | undefined | null,\n e: EventWithData,\n isExpandedDataLoading?: boolean\n) => {\n const id = e.counts?.viagVirtId ?? e.event?.viagVirtualId;\n const eventData = expandedEventData?.[id];\n if (eventData) {\n e.entities = {\n sales: eventData.sales,\n listings: eventData.listings,\n ticketGroups: eventData.ticketGroups,\n getDataFail: eventData.failedToRetrieveData,\n };\n } else {\n e.entities = {\n sales: isExpandedDataLoading\n ? e.entities.sales?.length\n ? e.entities.sales\n : null\n : [],\n listings: isExpandedDataLoading\n ? e.entities.listings?.length\n ? e.entities.listings\n : null\n : [],\n ticketGroups: isExpandedDataLoading\n ? e.entities.ticketGroups?.length\n ? e.entities.ticketGroups\n : null\n : [],\n getDataFail: false,\n };\n }\n\n return { ...e };\n};\n\nexport const lookupEventInCatalog = (\n data:\n | Pick<\n CatalogResults,\n | 'events'\n | 'performers'\n | 'venues'\n | 'viagIdToLatestIdLookup'\n | 'posIdToViagIdLookup'\n >\n | undefined,\n viagVirtualId: string | null | undefined,\n ...posEvIds: (string | null | undefined)[]\n) => {\n if (!viagVirtualId) {\n return null;\n }\n\n let realId = data?.viagIdToLatestIdLookup?.[viagVirtualId];\n if (!realId && posEvIds?.length) {\n realId = posEvIds\n .filter((id) => id != null)\n .map((id) => data?.posIdToViagIdLookup?.[id!])\n .filter((id) => id != null)[0];\n }\n return realId ? data?.events?.[realId] : null;\n};\n\nexport const removeDuplicateListings = (listings: Listing[] | null) => {\n if (!listings?.length) {\n return null;\n }\n\n const result = listings.reduce(\n (r, l) => {\n if (l.isLtGrp && r[l.id]) {\n // We need to handle listing-group differently\n // The same listing group will appear multiple times each carrying different listings\n // from different events, and so we need to merge them together\n const curGroup = r[l.id] as ListingGroup;\n const newGroup = l as ListingGroup;\n\n mergeListingGroup(curGroup, newGroup);\n } else {\n r[l.id] = l; // last one wins\n }\n\n return r;\n },\n {} as Record\n );\n\n return Object.values(result);\n};\n\nconst mergeListingGroup = (\n targetGroup: ListingGroup,\n newGroup: ListingGroup\n) => {\n let activeSubgroup: ListingGroup | undefined;\n let queuedSubgroup: ListingGroup | undefined;\n let soldSubgroup: ListingGroup | undefined;\n let invisibleSubgroup: ListingGroup | undefined;\n let activeSubgroupItems = {} as Record;\n let queuedSubgroupItems = {} as Record;\n let soldSubgroupItems = {} as Record;\n let invisibleSubgroupItems = {} as Record;\n\n const groupItems = targetGroup.groupItems.reduce(\n (r, l) => {\n r[l.id] = l;\n\n if (l.isLtGrp) {\n const subGroup = l as ListingGroup;\n if (subGroup.groupType === GroupType.Active) {\n activeSubgroupItems = subGroup.groupItems.reduce(\n (r, l) => {\n r[l.id] = l;\n return r;\n },\n {} as Record\n );\n activeSubgroup = subGroup;\n } else if (subGroup.groupType === GroupType.Inactive) {\n queuedSubgroupItems = subGroup.groupItems.reduce(\n (r, l) => {\n r[l.id] = l;\n return r;\n },\n {} as Record\n );\n queuedSubgroup = subGroup;\n } else if (subGroup.groupType === GroupType.FullySold) {\n soldSubgroupItems = subGroup.groupItems.reduce(\n (r, l) => {\n r[l.id] = l;\n return r;\n },\n {} as Record\n );\n soldSubgroup = subGroup;\n } else if (subGroup.groupType === GroupType.Invisible) {\n invisibleSubgroupItems = subGroup.groupItems.reduce(\n (r, l) => {\n r[l.id] = l;\n return r;\n },\n {} as Record\n );\n invisibleSubgroup = subGroup;\n }\n\n r[subGroup.id] = l;\n }\n return r;\n },\n {} as Record\n );\n newGroup.groupItems.forEach((i) => {\n if (i.isLtGrp) {\n // This is either the inactive or invisible sub-group\n const subGroup = i as ListingGroup;\n if (subGroup.groupType === GroupType.Active) {\n if (activeSubgroup == null) {\n // If target doesn't have this subGroup, then just copy it over\n activeSubgroup = subGroup;\n groupItems[subGroup.id] = subGroup;\n }\n\n subGroup.groupItems.forEach((j) => {\n if (!activeSubgroupItems[j.id]) {\n // If i doesn't exists in the group yet, just add/replace it\n activeSubgroupItems[j.id] = j;\n\n if (invisibleSubgroupItems[j.id]) {\n // If the targetGroup has this item j as an invisible item, delete it because it's already in the inactive item\n delete invisibleSubgroupItems[j.id];\n }\n }\n });\n } else if (subGroup.groupType === GroupType.Inactive) {\n if (queuedSubgroup == null) {\n // If target doesn't have this subGroup, then just copy it over\n queuedSubgroup = subGroup;\n groupItems[subGroup.id] = subGroup;\n }\n\n subGroup.groupItems.forEach((j) => {\n if (!queuedSubgroupItems[j.id]) {\n // If i doesn't exists in the group yet, just add/replace it\n queuedSubgroupItems[j.id] = j;\n\n if (invisibleSubgroupItems[j.id]) {\n // If the targetGroup has this item j as an invisible item, delete it because it's already in the inactive item\n delete invisibleSubgroupItems[j.id];\n }\n }\n });\n } else if (subGroup.groupType === GroupType.FullySold) {\n if (soldSubgroup == null) {\n // If target doesn't have this subGroup, then just copy it over\n soldSubgroup = subGroup;\n groupItems[subGroup.id] = subGroup;\n }\n\n subGroup.groupItems.forEach((j) => {\n if (!soldSubgroupItems[j.id]) {\n // If i doesn't exists in the group yet, just add/replace it\n soldSubgroupItems[j.id] = j;\n\n if (invisibleSubgroupItems[j.id]) {\n // If the targetGroup has this item j as an invisible item, delete it because it's already in the inactive item\n delete invisibleSubgroupItems[j.id];\n }\n }\n });\n } else if (subGroup.groupType === GroupType.Invisible) {\n if (invisibleSubgroup == null) {\n // If target doesn't have this subGroup, then just copy it over\n invisibleSubgroup = subGroup;\n groupItems[subGroup.id] = subGroup;\n }\n\n subGroup.groupItems.forEach((k) => {\n if (\n !groupItems[k.id] &&\n !activeSubgroupItems[k.id] &&\n !queuedSubgroupItems[k.id] &&\n !soldSubgroupItems[k.id] &&\n !invisibleSubgroupItems[k.id]\n ) {\n // If i doesn't exists in any of the group yet, just add/replace it\n invisibleSubgroupItems[k.id] = k;\n }\n });\n }\n } else if (!groupItems[i.id]) {\n // If i doesn't exists in the group yet, just add/replace it\n groupItems[i.id] = i;\n\n if (invisibleSubgroupItems[i.id]) {\n // If the targetGroup has this item i as an invisible item, delete it because it's already in the inactive item\n delete invisibleSubgroupItems[i.id];\n }\n }\n });\n\n // now that we have the updated active, queued, sold, and invisible group, set it back\n const activeItems = Object.values(activeSubgroupItems);\n if (activeSubgroup != null) {\n activeSubgroup.groupItems = activeItems;\n }\n\n const queuedItems = Object.values(queuedSubgroupItems);\n if (queuedSubgroup != null) {\n queuedSubgroup.groupItems = queuedItems;\n }\n\n const soldItems = Object.values(soldSubgroupItems);\n if (soldSubgroup != null) {\n soldSubgroup.groupItems = soldItems;\n }\n\n const invisibleItems = Object.values(invisibleSubgroupItems);\n if (invisibleSubgroup != null) {\n invisibleSubgroup.groupItems = invisibleItems;\n }\n\n targetGroup.groupItems = Object.values(groupItems).filter((i) =>\n // We only want Listing or non-empty sub-groups\n i.isLtGrp ? (i as ListingGroup).groupItems.length > 0 : true\n );\n};\n\nexport const compareEventsByDateStr = (\n e1: Row,\n e2: Row,\n colId: string\n) => {\n const d1 = e1.getValue(colId) as string;\n const d2 = e2.getValue(colId) as string;\n\n if (!d1 || !d2) {\n return 0;\n }\n\n const aStart = new Date(d1);\n const bStart = new Date(d2);\n return aStart < bStart ? -1 : aStart === bStart ? 0 : 1;\n};\n\nexport const compareEventsByDate = (\n e1: Row,\n e2: Row,\n colId: string\n) => {\n const d1 = e1.getValue(colId) as DateTimeRange;\n const d2 = e2.getValue(colId) as DateTimeRange;\n\n if (!d1 || !d2) {\n return 0;\n }\n\n const aStart = d1.start ? new Date(d1.start) : new Date();\n const bStart = d2.start ? new Date(d2.start) : new Date();\n return aStart < bStart ? -1 : aStart === bStart ? 0 : 1;\n};\n\ntype EventWithPerformerAndVenue = {\n event?: Event | null;\n performer?: Performer | null;\n venue?: Venue | null;\n};\n\nexport function compareEventsByName(\n e1: Row,\n e2: Row,\n colId: string\n) {\n const data1 = e1.getValue(colId) as EventWithPerformerAndVenue;\n const data2 = e2.getValue(colId) as EventWithPerformerAndVenue;\n\n const name1 = getFormattedEventName({\n event: data1.event,\n performer: data1.performer,\n venue: data1.venue,\n useShortName: true,\n });\n const name2 = getFormattedEventName({\n event: data2.event,\n performer: data2.performer,\n venue: data2.venue,\n useShortName: true,\n });\n\n return name1.join(' ').localeCompare(name2.join(' '));\n}\n\nexport function compareEventsByVenue(\n e1: Row,\n e2: Row,\n colId: string\n) {\n const data1 = e1.getValue(colId) as EventWithPerformerAndVenue;\n const data2 = e2.getValue(colId) as EventWithPerformerAndVenue;\n\n const venueName1 = data1.venue?.name ?? '';\n const venueName2 = data2.venue?.name ?? '';\n\n return venueName1.localeCompare(venueName2);\n}\n\nexport function compareEventsByLocation(\n e1: Row,\n e2: Row,\n colId: string\n) {\n const data1 = e1.getValue(colId) as EventWithPerformerAndVenue;\n const data2 = e2.getValue(colId) as EventWithPerformerAndVenue;\n\n const locationName1 = data1.venue?.descr ?? '';\n const locationName2 = data2.venue?.descr ?? '';\n\n return locationName1.localeCompare(locationName2);\n}\n\nexport const getInHandDateBasedOnEvent = (\n event?: Event | null,\n daysBeforeEvent?: number\n) => {\n if (!event?.dates?.start) {\n return new Date().toISOString();\n }\n\n const eventStartDate = new Date(event.dates.start); // get the current date\n const threeDaysAgo = new Date(eventStartDate); // create a new date object with the current date\n threeDaysAgo.setDate(eventStartDate.getDate() - (daysBeforeEvent ?? 3)); // subtract days (default 3) from the current date\n\n return threeDaysAgo.toISOString();\n};\n\nexport type EventPricingSeatMapForm = {\n eventAutoPricing?: AutoPricingInputs | null;\n eventScoreOverride?: EventConfigScoreOverride | null;\n eventWideAutoPricing?: boolean | null;\n};\n\nexport const validateAutoPricingSettings = (\n clearErrors: UseFormClearErrors,\n setError: UseFormSetError,\n setValue: UseFormSetValue,\n eventForm: EventPricingSeatMapForm,\n compListingFloorCeilingError: string,\n requiredMsg: string\n) => {\n let hasErrors = false;\n\n clearErrors('eventAutoPricing.compListingFloor');\n clearErrors('eventAutoPricing.undercutAbsoluteAmount');\n clearErrors('eventAutoPricing.undercutRelativeAmount');\n clearErrors('eventAutoPricing.compListingSelectedSectionSettings');\n\n const eventAutoPricing = eventForm.eventAutoPricing;\n\n if (eventAutoPricing == null) return true;\n\n const {\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingSelectedSectionSettings,\n compListingOnlyForSelectedSectionsEnabled,\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n } = eventAutoPricing;\n\n if (\n compListingMode === AutoPricingCompListingMode.QualityScore ||\n compListingMode === AutoPricingCompListingMode.SameSection\n ) {\n if (!compListingFloor) {\n eventAutoPricing.compListingFloor = compListingFloor;\n setValue('eventAutoPricing.compListingFloor', DEFAULT_COMP_LISTING_FLOOR);\n } else if (compListingCeiling && compListingFloor >= compListingCeiling) {\n setError('eventAutoPricing.compListingFloor', {\n message: compListingFloorCeilingError,\n });\n\n hasErrors = true;\n }\n\n if (compListingMode === AutoPricingCompListingMode.QualityScore) {\n if (\n compListingOnlyForSelectedSectionsEnabled &&\n !compListingSelectedSectionSettings?.sectionIdFilter?.length\n ) {\n setError(\n 'eventAutoPricing.compListingSelectedSectionSettings',\n {\n message: requiredMsg,\n },\n { shouldFocus: true }\n );\n\n hasErrors = true;\n }\n }\n }\n\n if (undercutMode) {\n if (undercutAbsoluteAmount == null) {\n eventAutoPricing.undercutAbsoluteAmount = DEFAULT_UNDERCUT_ABSOLUTE_AMT;\n setValue(\n 'eventAutoPricing.undercutAbsoluteAmount',\n DEFAULT_UNDERCUT_ABSOLUTE_AMT\n );\n }\n\n if (undercutRelativeAmount == null) {\n eventAutoPricing.undercutRelativeAmount = DEFAULT_UNDERCUT_RELATIVE_AMT;\n setValue(\n 'eventAutoPricing.undercutRelativeAmount',\n DEFAULT_UNDERCUT_RELATIVE_AMT\n );\n }\n }\n\n return !hasErrors;\n};\n\nexport const compareMarketplace = (\n a?: Marketplace | null,\n b?: Marketplace | null\n) => {\n if (a === Marketplace.StubHub && b === Marketplace.StubHub) {\n return 0; // always sort first\n }\n\n if (a === Marketplace.StubHub) {\n return -1; // always sort first\n }\n\n if (b === Marketplace.StubHub) {\n return 1;\n }\n\n return (a ?? '').localeCompare(b ?? '');\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n Feature,\n SellerAccountClient,\n TimezoneInfo,\n} from 'src/WebApiController';\n\nimport { useUserHasFeature } from '../useUserHasFeature';\n\nexport const useCustomTimeZoneSettings = () => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n\n const hasTimeZoneFeature = useUserHasFeature(Feature.POSTimezone);\n\n const queryClient = useQueryClient();\n const queryKey = [\n 'getCustomTimeZoneSettings',\n activeAccountWebClientConfig.activeAccountId,\n ];\n\n const shouldQuery =\n hasTimeZoneFeature && activeAccountWebClientConfig.activeAccountId != null;\n const query = useQuery({\n queryKey,\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n return new SellerAccountClient(\n activeAccountWebClientConfig\n ).getCustomTimeZoneSettings();\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('SellerAccountClient.getCustomTimeZoneSettings', error);\n },\n },\n });\n\n const mutation = useMutation({\n mutationFn: async ({ input }: { input: TimezoneInfo | undefined }) => {\n return await new SellerAccountClient(\n activeAccountWebClientConfig\n ).mergeCustomTimeZoneSettings(input);\n },\n // optimistic ui\n onMutate: ({ input }) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue = queryClient.getQueryData(queryKey);\n queryClient.setQueryData(queryKey, input);\n return { prevValue };\n },\n onError: (err: ErrorTypes, { input }, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('SellerAccountClient.mergeCustomTimeZoneSettings', err, {\n trackErrorData: { input },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n },\n });\n\n return {\n customTimeZoneSettings: query.data,\n isLoading: query.isLoading,\n mergeCustomTimeZoneSettings: mutation.mutateAsync,\n };\n};\n","import { fromZonedTime, toZonedTime } from 'date-fns-tz';\nimport { createContext, ReactNode, useCallback, useContext } from 'react';\nimport { useCustomTimeZoneSettings } from 'src/hooks/api/useCustomTimeZoneSettings';\n\nimport { DEFAULT_TIMEZONE_LOCAL } from './SiteTimezoneContext.constants';\n\ntype SiteTimezoneContextType = {\n timeZone: string;\n timezoneOffsetMins: number;\n toZonedTime: (date: Date) => Date;\n fromZonedTime: (date: Date) => Date;\n};\n\nconst SiteTimezoneContextDefaults = {\n timeZone: DEFAULT_TIMEZONE_LOCAL,\n timezoneOffsetMins: new Date().getTimezoneOffset(),\n toZonedTime: (date: Date) => date,\n fromZonedTime: (date: Date) => date,\n};\n\nconst SiteTimezoneContext = createContext(\n SiteTimezoneContextDefaults\n);\n\ntype SiteTimezoneContextProviderType = {\n children: ReactNode;\n};\n\nexport const SiteTimezoneContextProvider = ({\n children,\n}: SiteTimezoneContextProviderType) => {\n const { customTimeZoneSettings } = useCustomTimeZoneSettings();\n\n const toZonedTimeWrapper = useCallback(\n (date: Date) => {\n return toZonedTime(\n date,\n customTimeZoneSettings?.value ?? DEFAULT_TIMEZONE_LOCAL\n );\n },\n [customTimeZoneSettings]\n );\n\n const fromZonedTimeWrapper = useCallback(\n (date: Date) => {\n return fromZonedTime(\n date,\n customTimeZoneSettings?.value ?? DEFAULT_TIMEZONE_LOCAL\n );\n },\n [customTimeZoneSettings]\n );\n\n return (\n \n {children}\n \n );\n};\n\nexport const useSiteTimezoneContext = () => useContext(SiteTimezoneContext);\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const AdminHoldIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n );\n};\n","import { formatInTimeZone } from 'date-fns-tz';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { vars } from 'src/core/themes';\nimport { Stack, Tooltip } from 'src/core/ui';\nimport { AdminHoldIcon } from 'src/svgs/AdminHoldIcon';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isSqlMaxDate, stringToUtcDate } from 'src/utils/dateTimeUtils';\n\nimport * as styles from './AdminHoldBadge.css';\n\nexport const AdminHoldBadge = ({\n adminHoldExpirationDate,\n adminHoldNotes,\n showDetailOnHover,\n iconOnlyMode,\n}: {\n adminHoldExpirationDate: string | null;\n adminHoldNotes: string | null;\n showDetailOnHover?: boolean;\n iconOnlyMode?: boolean;\n}) => {\n const holdTxt = useContent(ContentId.Hold);\n const { timeZone } = useSiteTimezoneContext();\n\n adminHoldExpirationDate =\n adminHoldExpirationDate == null ||\n isSqlMaxDate(stringToUtcDate(adminHoldExpirationDate))\n ? null\n : adminHoldExpirationDate;\n\n const content = iconOnlyMode ? (\n
\n \n
\n ) : (\n
\n \n \n \n
\n );\n\n return showDetailOnHover ? (\n \n {adminHoldExpirationDate || adminHoldNotes ? (\n \n {adminHoldExpirationDate && (\n \n \n \n {': '}\n \n {formatInTimeZone(\n stringToUtcDate(adminHoldExpirationDate),\n timeZone,\n 'dd MMM yyyy, hh:mm a'\n )}\n \n )}\n {adminHoldNotes && (\n \n \n \n {': '}\n \n {adminHoldNotes}\n \n )}\n \n ) : (\n holdTxt\n )}\n \n ) : (\n content\n );\n};\n","import {\n cloneElement,\n ComponentPropsWithoutRef,\n ComponentPropsWithRef,\n forwardRef,\n isValidElement,\n PropsWithChildren,\n ReactElement,\n ReactNode,\n useRef,\n} from 'react';\nimport { Button, Popover } from 'src/core/ui';\n\nimport * as styles from './PosDropdown.css';\n\nexport type PosDropdownProps = {\n trigger?: ReactNode;\n rootProps?: ComponentPropsWithRef;\n triggerProps?: ComponentPropsWithRef;\n};\n\nexport const PosDropdown = forwardRef<\n HTMLDivElement,\n PropsWithChildren<\n ComponentPropsWithoutRef & PosDropdownProps\n >\n>(function PosDropdown(\n { rootProps, triggerProps, trigger, children, id, ...rest },\n ref\n): ReactElement {\n return (\n \n {\n // This is to prevent the click from passing through to the container (which maybe a clickable tile)\n e.stopPropagation();\n }}\n >\n \n {isValidElement(trigger)\n ? cloneElement(trigger as ReactElement<{ disabled: boolean }>, {\n disabled: !!triggerProps?.disabled,\n })\n : trigger}\n \n \n \n {children}\n \n \n );\n});\n\nexport const PosDropdownItem = forwardRef<\n HTMLButtonElement,\n PropsWithChildren> & {\n noPadding?: boolean;\n keepOpenAfterSelection?: boolean;\n }\n>(function PosDropdownItem(\n { onClick, keepOpenAfterSelection, children, id, ...props },\n ref\n): ReactElement {\n const closeRef = useRef(null);\n\n return (\n <>\n {\n onClick?.(e);\n if (!keepOpenAfterSelection) {\n closeRef.current?.click?.();\n }\n }}\n justifyContent=\"space-between\"\n >\n {children}\n \n {\n // We want the default behavior of the onClick event here.\n // We only don't want the click event to propagate to other elements, e.g. eventAccordion that will cause the collapsible to fold\n e.stopPropagation();\n }}\n />\n \n );\n});\n","import { once } from 'lodash-es';\nimport React, { useCallback, useContext, useState } from 'react';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getErrorInfoFromStatusCode } from 'src/utils/errorUtils';\nimport { lookupEventInCatalog } from 'src/utils/eventWithDataUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n CatalogClient,\n EntityWithTickets,\n Event,\n Listing,\n Sale,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useCatalogDataContext } from '../CatalogDataContext';\nimport { Content } from '../ContentContext';\n\nexport type IPosEntity = {\n id: EntityWithTickets['id'];\n posEvId?: EntityWithTickets['posEvId'];\n viagVirtualId: EntityWithTickets['viagVirtualId'] | null;\n entityType: ActionOutboxEntityType;\n};\n\nexport type IActivePosEntityContext = {\n entityType: ActionOutboxEntityType;\n posEntityId?: number | null;\n /* Null means a value was not able to be obtained. Undefined means the item was never retrieved or being retrieved. */\n posEntity?: TDataItem | null;\n /* Null means a value was not able to be obtained. Undefined means the item was never retrieved or being retrieved. */\n event?: Event | null;\n /* Whether the current active event item is being searched or just loading */\n posEntityDisplayId?: string | null;\n setActivePosEntity: (\n posEntityId: number,\n posEntityDisplayId?: string | null,\n forceRefresh?: boolean,\n dataToGet?: string[],\n resetData?: boolean\n ) => Promise;\n updateActivePosEntityInfo: (\n posEntity: Pick<\n IActivePosEntityContext,\n 'posEntityId' | 'event' | 'posEntity' | 'posEntityDisplayId'\n >\n ) => void;\n isLoading: boolean;\n errorInfo?: { errorHeader: React.ReactNode; errorMessage: React.ReactNode };\n};\n\nexport const createActivePosEntityContext = once(<\n TDataItem extends IPosEntity,\n>() => React.createContext({} as IActivePosEntityContext));\nexport const useActivePosEntityContext = () =>\n useContext(createActivePosEntityContext());\n\nexport const ActivePosEntityProvider = ({\n entityType,\n getActivePosEntity,\n onSetActiveItemCompleteCallback,\n children,\n}: {\n entityType: ActionOutboxEntityType;\n getActivePosEntity: (\n posEntityId: number,\n curEntity?: TDataItem | null,\n dataToGet?: string[] | null\n ) => Promise<\n Pick<\n IActivePosEntityContext,\n 'posEntityId' | 'event' | 'posEntity' | 'posEntityDisplayId'\n >\n >;\n\n /* Callback when item is successfully set active */\n onSetActiveItemCompleteCallback?: (\n item: TDataItem,\n forceRefresh?: boolean\n ) => void;\n children: React.ReactNode;\n}) => {\n const { trackError } = useErrorBoundaryContext();\n\n const [errorInfo, setErrorInfo] = useState<{\n errorHeader: React.ReactNode;\n errorMessage: React.ReactNode;\n }>();\n const [isLoading, setIsLoading] = useState(false);\n const ActivePosEntityContext = createActivePosEntityContext();\n const [posEntityInfo, setPosEntityInfo] = useState<\n Pick<\n IActivePosEntityContext,\n 'posEntityId' | 'posEntity' | 'event' | 'posEntityDisplayId'\n >\n >({});\n\n const { data, updateItemInEvent } = useCatalogDataContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const getAndUpdateCatalogDataForEntity = useCallback(\n async (item: TDataItem) => {\n if (\n !item?.viagVirtualId ||\n (entityType !== ActionOutboxEntityType.Listing &&\n entityType !== ActionOutboxEntityType.Sale)\n ) {\n return null;\n }\n // Now that we got the listing details, try to get the Event from existing data\n let event = lookupEventInCatalog(data, item.viagVirtualId, item.posEvId);\n\n // If we can't find it, go fetch it\n if (event == null) {\n const client = new CatalogClient(activeAccountWebClientConfig);\n\n const results =\n entityType === ActionOutboxEntityType.Listing\n ? await client.getCatalogForListingByListingId(item.id!)\n : await client.getCatalogForSaleBySaleId(item.id!);\n if (results?.events) {\n event = lookupEventInCatalog(\n results,\n item.viagVirtualId,\n item.posEvId\n );\n }\n } else {\n // The event exists in the catalog, update the entity in that event\n if (entityType === ActionOutboxEntityType.Listing) {\n updateItemInEvent(item as unknown as Listing, entityType);\n } else {\n updateItemInEvent(item as unknown as Sale, entityType);\n }\n }\n\n return event;\n },\n [activeAccountWebClientConfig, data, entityType, updateItemInEvent]\n );\n\n const updateActivePosEntityInfo = useCallback(\n async (\n item: Pick<\n IActivePosEntityContext,\n 'posEntityId' | 'event' | 'posEntity' | 'posEntityDisplayId'\n >\n ) => {\n const event = item.posEntity\n ? await getAndUpdateCatalogDataForEntity(item.posEntity)\n : undefined;\n\n if (\n posEntityInfo.posEntityId == null ||\n posEntityInfo.posEntityId === item.posEntityId\n ) {\n // Only update the entity info if it's the active one\n setPosEntityInfo({ ...item, event: event?.event });\n }\n },\n [getAndUpdateCatalogDataForEntity, posEntityInfo.posEntityId]\n );\n\n const setActivePosEntity = useCallback(\n async (\n posEntityId: number,\n posEntityDisplayId?: string | null,\n forceRefresh?: boolean,\n dataToGet?: string[],\n resetData?: boolean\n ) => {\n if (isLoading) {\n // NOTE: This is already a request pending, any new call - will either likely replace the old one or being replaced by the old one\n // depending on which ones finish first - so we just quit here as there's nothing really to do correctly\n // Importantly - the dev calling setActivePosEntity should know when to call this (and when not)\n return;\n }\n\n if (posEntityId === 0) {\n // Clearing the active item\n setPosEntityInfo({\n posEntityId: posEntityId,\n posEntityDisplayId: posEntityDisplayId,\n });\n return;\n }\n\n const isSameEntity = posEntityInfo?.posEntityId === posEntityId;\n if (forceRefresh || !isSameEntity) {\n // If we are getting a different item, clear the existing ones so it shows a loading state\n setPosEntityInfo({\n posEntityId: posEntityId,\n posEntityDisplayId: posEntityDisplayId,\n });\n }\n\n return tryInvokeApi(\n async () => {\n setErrorInfo(undefined);\n setIsLoading(true);\n\n const item = await getActivePosEntity(\n posEntityId,\n // if we want to reset data or the entity we want is not the same, pass in null for current entity\n resetData || !isSameEntity ? undefined : posEntityInfo?.posEntity,\n dataToGet\n );\n\n // null item return means it was not found (204 status)\n if (item == null) {\n setErrorInfo({\n errorHeader: ,\n errorMessage: (\n \n ),\n });\n }\n\n // Once we found it, set the item as active\n const event = item.posEntity\n ? await getAndUpdateCatalogDataForEntity(item.posEntity)\n : undefined;\n\n setPosEntityInfo({ ...item, event: event?.event });\n\n if (item.posEntity) {\n onSetActiveItemCompleteCallback?.(item.posEntity, forceRefresh);\n }\n },\n (error) => {\n // Clear the active ids so on retry it will reget\n setPosEntityInfo({\n posEntityId: undefined,\n posEntityDisplayId: undefined,\n });\n const { headerDisplay, messageDisplay } = getErrorInfoFromStatusCode(\n error?.status,\n error?.message\n );\n setErrorInfo({\n errorHeader: headerDisplay,\n errorMessage: messageDisplay,\n });\n trackError('ActivePosEntityContext.getActivePosEntity', error, {\n posEntityId,\n posEntityDisplayId,\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [\n isLoading,\n posEntityInfo?.posEntityId,\n posEntityInfo?.posEntity,\n getActivePosEntity,\n getAndUpdateCatalogDataForEntity,\n onSetActiveItemCompleteCallback,\n trackError,\n ]\n );\n\n return (\n \n {children}\n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { EventConfigClient } from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { ErrorTypes, useErrorBoundaryContext } from '../ErrorBoundaryContext';\n\nexport const useGetEventMapConfig = (\n eventId?: number | null,\n disabled?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n !disabled &&\n activeAccountWebClientConfig.activeAccountId != null &&\n eventId != null;\n const venueMapQuery = useQuery({\n queryKey: [\n 'EventConfigClient.getVenueMapForEvent',\n activeAccountWebClientConfig.activeAccountId,\n eventId,\n disabled,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n const map = await new EventConfigClient(\n activeAccountWebClientConfig\n ).getVenueMapForEvent(eventId!);\n\n return map;\n },\n\n enabled: shouldQuery,\n staleTime: Infinity, // this data hardly, and we already invalidate on reload\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('EventConfigClient.getVenueMapForEvent', error, { eventId });\n },\n },\n });\n\n return venueMapQuery;\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { PricingClient } from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { ErrorTypes, useErrorBoundaryContext } from '../ErrorBoundaryContext';\n\nexport const useGetEventMapConfigOverrides = (\n viagogoEventId?: number | null,\n venueConfigId?: number | null,\n disabled?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n !disabled &&\n Boolean(\n activeAccountWebClientConfig.activeAccountId &&\n viagogoEventId &&\n venueConfigId\n );\n const seatScoreOverridesQuery = useQuery({\n queryKey: [\n 'getEventSeatMapScoreOverrides',\n activeAccountWebClientConfig.activeAccountId,\n viagogoEventId,\n venueConfigId,\n ],\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n\n return new PricingClient(\n activeAccountWebClientConfig\n ).getEventSeatMapScoreOverrides(viagogoEventId!, venueConfigId!);\n },\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('PricingClient.getEventSeatMapScoreOverrides', error, {\n viagogoEventId,\n venueConfigId,\n });\n },\n },\n });\n\n const shouldQuery2 =\n !disabled && activeAccountWebClientConfig.activeAccountId != null;\n const sellerAccountScoreOverridesQuery = useQuery({\n queryKey: [\n 'GetEventSeatMapScoreOverridesForSellerAccount',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: () => {\n if (!shouldQuery2) {\n return null;\n }\n\n return new PricingClient(\n activeAccountWebClientConfig\n ).getEventSeatMapScoreOverridesForSellerAccount();\n },\n\n enabled: shouldQuery2,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError(\n 'PricingClient.GetEventSeatMapScoreOverridesForSellerAccount',\n error\n );\n },\n },\n });\n\n return { seatScoreOverridesQuery, sellerAccountScoreOverridesQuery };\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { EventConfigClient } from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { ErrorTypes, useErrorBoundaryContext } from '../ErrorBoundaryContext';\n\nexport const useGetEventMapsByScoreModelConfig = (\n eventId?: number | null,\n disabled?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n !disabled &&\n activeAccountWebClientConfig.activeAccountId != null &&\n eventId != null;\n const venueMapsByScoreModelQuery = useQuery({\n queryKey: [\n 'EventConfigClient.getVenueMapsByScoreModelForEvent',\n activeAccountWebClientConfig.activeAccountId,\n eventId,\n disabled,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n const map = await new EventConfigClient(\n activeAccountWebClientConfig\n ).getVenueMapsByScoreModelForEvent(eventId!);\n\n return map;\n },\n\n enabled: shouldQuery,\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError(\n 'EventConfigClient.getVenueMapsByScoreModelForEvent',\n error,\n {\n eventId,\n }\n );\n },\n },\n });\n\n return venueMapsByScoreModelQuery;\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n Event,\n Feature,\n ListingClient,\n PricingClient,\n} from 'src/WebApiController';\n\nimport { useUserHasFeature } from './useUserHasFeature';\n\nexport const useGetEventAutoPricingSettings = (\n event: Event | null,\n getIsAllListingEnabledForAutoPricing: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n\n const shouldQuery = !(\n !activeAccountWebClientConfig.activeAccountId ||\n !event?.viagId ||\n !hasAutoPricingFeature\n );\n\n const pricingSettingsQuery = useQuery({\n queryKey: ['PricingClient.getEventAutoPricingSettings', event?.viagId],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n const pricingSettings = await new PricingClient(\n activeAccountWebClientConfig\n ).getEventAutoPricingSettings(event!.viagId!);\n\n return pricingSettings;\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n retry: 3,\n retryDelay: (attemptIndex) => Math.min(500 ** attemptIndex, 3000),\n meta: {\n // TODO: temporally hide the error for now, enable this after https://stubhub.enterprise.slack.com/archives/C08D76X6M0S is fixed.\n // onError: (error: ErrorTypes) => {\n // showErrorDialog('PricingClient.getEventAutoPricingSettings', error, {\n // trackErrorData: { event },\n // });\n // },\n },\n });\n\n const shouldQuery2 =\n getIsAllListingEnabledForAutoPricing &&\n activeAccountWebClientConfig.activeAccountId != null &&\n event?.viagId != null;\n\n const allListingEnabledPricingQuery = useQuery({\n queryKey: ['PricingClient.getListingEnabledForAutoPricing', event?.viagId],\n queryFn: async () => {\n if (!shouldQuery2) {\n return null;\n }\n const allListingEnabledPricing = await new ListingClient(\n activeAccountWebClientConfig\n ).getListingEnabledForAutoPricing(event.posIds);\n\n return allListingEnabledPricing;\n },\n\n refetchOnWindowFocus: false,\n enabled: shouldQuery2,\n meta: {\n onError: (error: ErrorTypes) => {\n showErrorDialog(\n 'PricingClient.getListingEnabledForAutoPricing',\n error,\n {\n trackErrorData: { event },\n }\n );\n },\n },\n });\n\n return {\n pricingSettings: pricingSettingsQuery.data,\n allListingEnabledPricing: allListingEnabledPricingQuery.data,\n pricingSettingsQuery,\n allListingEnabledPricingQuery,\n };\n};\n","import { isEqual } from 'lodash-es';\nimport {\n FilterToolbarGroup,\n FilterToolbarItem,\n FilterToolbarItemId,\n} from 'src/components/Filters';\nimport {\n CatalogResults,\n DateTimeRange,\n DateTimeRangeWithRelative,\n EntityWithTicketsQuery,\n EventGroupingQuery,\n EventGroupingSortBy,\n EventGroupingType,\n EventSort,\n EventTimeFrameFilter,\n EventWithData,\n InventoryViewMode,\n ListingQuery,\n OnSaleEventQuery,\n OnSaleEventViewMode,\n PointOfSaleSaleStatus,\n PurchaseOrderQuery,\n PurchaseOrderState,\n PurchaseViewMode,\n ReportEntityWithTicketsQuery,\n SaleQuery,\n SalesViewMode,\n UIReportCommissionQuery,\n UIReportV2ListingQuery,\n UIReportV2SaleQuery,\n UserSetting,\n} from 'src/WebApiController';\n\nimport {\n DateRangePresetName,\n getNextDateRange,\n getUiDateTimeRangeFromPreset,\n PurchaseDateRangePresetNames,\n} from './dateTimeUtils';\n\nexport enum EventMappingStateFilter {\n All = 'All',\n Mapped = 'Mapped',\n Pending = 'Pending',\n Rejected = 'Rejected',\n}\n\nexport const DefaultEventGroupingQuery = {\n searchText: '',\n groupingType: EventGroupingType.Performer,\n sortBy: EventGroupingSortBy.Name,\n isSortDescending: false,\n} satisfies EventGroupingQuery;\n\nexport type QueryWithViewMode = {\n timezoneOffsetMins: number | null;\n viewMode?: string | null;\n};\n\nexport const VIEW_MODE_SETTING_ID_TO_DEFAULT = {\n [UserSetting.InventoryPageViewMode]: InventoryViewMode.TileView,\n [UserSetting.SalePageViewMode]: SalesViewMode.TileView,\n [UserSetting.PurchasePageViewMode]: PurchaseViewMode.EventTileView,\n};\n\nexport const EmptyEntityWithTicketsQuery = {\n entityIds: null,\n eventOrMappingIds: null,\n oldPosEventIds: null,\n marketplaceEntityIds: null,\n performerIds: null,\n venueIds: null,\n countryCodes: null,\n stateProvinceIds: null,\n cityIds: null,\n purchaseOrderId: null,\n purchaseOrderIds: null,\n saleIds: null,\n listingIds: null,\n purchaseVendorId: null,\n vendorAccessControlProviderId: null,\n purchaseVendorOrderId: null,\n purchaseVendorAccountIds: null,\n purchaseBuyerId: null,\n inHandDates: null,\n eventTimeFrameFilter: null,\n searchText: null,\n sortBy: null,\n isSortDescending: false,\n eventDates: null,\n eventNotReviewedSinceDate: null,\n sectionContains: null,\n sections: null,\n rows: null,\n sectionEquals: null,\n rowContains: null,\n rowEquals: null,\n sectionNotContains: null,\n rowNotContains: null,\n tagName: null,\n tagValue: null,\n eventTagName: null,\n eventTagValue: null,\n topLevelCategories: null,\n parentCategories: null,\n numberOfTicketsHeld: null,\n lastSaleDates: null,\n noSaleDates: null,\n isSeatSaver: null,\n timezoneOffsetMins: new Date().getTimezoneOffset(),\n purchaseDates: null,\n purchaseOrderCreatedBy: null,\n purchaseCommissionUserId: null,\n internalNotes: null,\n internalNotesContains: null,\n internalNotesEquals: null,\n internalNotesNotContains: null,\n currencyCode: null,\n eventStatuses: null,\n currencyCodes: null,\n searchConfigId: null,\n isMapped: null,\n isMappingRejected: null,\n} satisfies EntityWithTicketsQuery;\n\nexport const EmptySaleQuery = {\n ...EmptyEntityWithTicketsQuery,\n saleStatus: null,\n saleStatuses: null,\n paymentState: null,\n marketplacePaymentState: null,\n saleDates: null,\n ticketType: null,\n soldOnMarketplace: null,\n fulfillerSellerUserId: null,\n lastSaleDates: null,\n noSaleDates: null,\n numberOfTicketsHeld: null,\n topLevelCategories: null,\n parentCategories: null,\n paymentDates: null,\n fulfillmentDates: null,\n cancellationDates: null,\n fulfillmentStates: null,\n paymentReceived: null,\n paymentReferenceId: null,\n listingInsertBy: null,\n isNoFulfill: null,\n viewMode: null,\n} satisfies SaleQuery;\n\nexport const DefaultSaleQuery = {\n ...EmptySaleQuery,\n saleStatuses: [\n PointOfSaleSaleStatus.PendingConfirmation,\n PointOfSaleSaleStatus.PendingAllocation,\n PointOfSaleSaleStatus.PendingFulfillment,\n PointOfSaleSaleStatus.ProcessingFulfillment,\n PointOfSaleSaleStatus.Fulfilled,\n PointOfSaleSaleStatus.FulfillmentFailed,\n PointOfSaleSaleStatus.Hold,\n PointOfSaleSaleStatus.ProvisionalAllocation,\n ],\n sortBy: EventSort.Date,\n isSortDescending: false, // We want the nearest future event first\n eventTimeFrameFilter: EventTimeFrameFilter.Future,\n} satisfies SaleQuery;\n\nexport const EmptyListingQuery = {\n ...EmptyEntityWithTicketsQuery,\n pricerSellerUserId: null,\n isPredelivered: null,\n isListed: null,\n deliveryType: null,\n hasUnsoldTickets: null,\n eventHasUnsoldTickets: null,\n hasBroadcastError: null,\n isAutoPricingEnabled: null,\n isPricedAboveZero: null,\n eventUnpricedStatus: null,\n autoPricingResultTypes: null,\n isSeatingUnmapped: null,\n lastSaleDates: null,\n numberOfTicketsHeld: null,\n topLevelCategories: null,\n parentCategories: null,\n isAdminHold: null,\n isDuplicate: null,\n lastPriceUpdateDates: null,\n lastPriceNoUpdateDates: null,\n isPricedByMarketplace: null,\n isPendingProof: null,\n purchaseCancellationDates: null,\n purchaseCancelledOnly: null,\n isNoFulfill: null,\n ticketType: null,\n viewMode: null,\n} satisfies ListingQuery;\n\nexport const DefaultListingQuery = {\n ...EmptyListingQuery,\n sortBy: EventSort.Date,\n isSortDescending: false, // We want the nearest future event first\n eventTimeFrameFilter: EventTimeFrameFilter.Future,\n} satisfies ListingQuery;\n\nexport const EmptyOnSaleEventQuery = {\n viewMode: null,\n onSaleDates: null,\n timezoneOffsetMins: null,\n searchText: null,\n eventIds: null,\n} satisfies OnSaleEventQuery;\n\nexport const DefaultOnSaleEventQuery = {\n ...EmptyOnSaleEventQuery,\n viewMode: OnSaleEventViewMode.MetricView,\n onSaleDates: {\n start: getNextDateRange({ weeks: 2 }, new Date()).start.toISOString(),\n end: getNextDateRange({ weeks: 2 }, new Date()).end.toISOString(),\n } as DateTimeRangeWithRelative,\n searchText: null,\n eventIds: null,\n} satisfies OnSaleEventQuery;\n\nexport const EmptyPurchaseQuery = {\n ...EmptyEntityWithTicketsQuery,\n ticketGroupIds: null,\n purchaseMonths: null,\n paymentDates: null,\n paymentMethod: null,\n paymentStatus: null,\n totalCostHigh: null,\n totalCostLow: null,\n deliveryType: null,\n purchaseOrderState: null,\n isSortDescending: null,\n tagName: null,\n tagValue: null,\n entityIds: null,\n purchaseOrderCreatedBy: null,\n purchaseCommissionUserId: null,\n viewMode: null,\n currencyCode: null,\n paymentMethodId: null,\n internalNotesContains: null,\n internalNotesEquals: null,\n internalNotesNotContains: null,\n paymentCurrencyCodes: null,\n isConsignment: null,\n} satisfies PurchaseOrderQuery;\n\nexport const DefaultPurchaseQuery = {\n ...EmptyPurchaseQuery,\n purchaseDates:\n (getUiDateTimeRangeFromPreset(\n DateRangePresetName.ThisYear,\n PurchaseDateRangePresetNames\n ) as DateTimeRangeWithRelative) ?? null,\n sortBy: EventSort.Date,\n purchaseOrderState: PurchaseOrderState.Active,\n isSortDescending: true,\n} satisfies PurchaseOrderQuery;\n\nexport const EmptyCommissionQuery = {\n eventTimeFrameFilter: null,\n eventDates: null,\n saleDates: null,\n saleStatuses: null,\n soldOnMarketplace: null,\n paymentDates: null,\n fulfillmentDates: null,\n purchaseCommissionUserId: null,\n isCommissionEligible: null,\n commissionEligibilityDates: null,\n timezoneOffsetMins: null,\n viewMode: null,\n isSortDescending: null,\n} satisfies UIReportCommissionQuery;\n\nexport const DefaultCommissionQuery = {\n ...EmptyCommissionQuery,\n eventTimeFrameFilter: EventTimeFrameFilter.Future,\n isSortDescending: true,\n} satisfies UIReportCommissionQuery;\n\nconst EmptyReportEntityWithTicketsQuery = {\n performerIds: null,\n venueIds: null,\n countryCodes: null,\n stateProvinceIds: null,\n cityIds: null,\n purchaseOrderId: null,\n purchaseVendorId: null,\n vendorAccessControlProviderId: null,\n purchaseVendorAccountIds: null,\n purchaseVendorOrderId: null,\n purchaseBuyerId: null,\n purchaseOrderCreatedBy: null,\n purchaseCommissionUserId: null,\n purchaseDates: null,\n inHandDates: null,\n eventTimeFrameFilter: null,\n sections: null,\n rows: null,\n sectionContains: null,\n sectionEquals: null,\n sectionNotContains: null,\n rowContains: null,\n rowEquals: null,\n rowNotContains: null,\n isSeatSaver: null,\n eventDates: null,\n noSaleDates: null,\n tagName: null,\n tagValue: null,\n eventTagName: null,\n eventTagValue: null,\n lastSaleDates: null,\n numberOfTicketsHeld: null,\n topLevelCategories: null,\n parentCategories: null,\n internalNotes: null,\n internalNotesContains: null,\n internalNotesEquals: null,\n internalNotesNotContains: null,\n timezoneOffsetMins: null,\n currencyCode: null,\n currencyCodes: null,\n eventStatuses: null,\n} satisfies ReportEntityWithTicketsQuery;\n\nexport const EmptyReportV2SaleQuery = {\n ...EmptyReportEntityWithTicketsQuery,\n isNoFulfill: null,\n saleDates: null,\n saleStatuses: null,\n soldOnMarketplace: null,\n cancellationDates: null,\n fulfillerSellerUserId: null,\n fulfillmentDates: null,\n paymentDates: null,\n marketplacePaymentState: null,\n viewMode: null,\n isSortDescending: null,\n} satisfies UIReportV2SaleQuery;\n\nexport const DefaultReportV2SaleQuery = {\n ...EmptyReportV2SaleQuery,\n eventTimeFrameFilter: EventTimeFrameFilter.Future,\n isSortDescending: true,\n} satisfies UIReportV2SaleQuery;\n\nexport const EmptyReportV2ListingQuery = {\n ...EmptyReportEntityWithTicketsQuery,\n isPredelivered: null,\n isNoFulfill: null,\n lastPriceUpdateDates: null,\n isPricedByMarketplace: null,\n isAutoPricingEnabled: null,\n isListed: null,\n isMapped: null,\n isDuplicate: null,\n isSeatingUnmapped: null,\n isAdminHold: null,\n viewMode: null,\n isSortDescending: null,\n} satisfies UIReportV2ListingQuery;\n\nexport const DefaultReportV2ListingQuery = {\n ...EmptyReportV2ListingQuery,\n eventTimeFrameFilter: EventTimeFrameFilter.Future,\n isSortDescending: true,\n} satisfies UIReportV2ListingQuery;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype FilterQueryType = Record;\n\nexport enum EventUiSort {\n DateDesc = 'Sort By: Newest to Oldest',\n DateAsc = 'Sort By: Oldest to Newest',\n SortAtoZ = 'Sort By: A to Z',\n SortZtoA = 'Sort By: Z to A',\n}\n\nexport const getEventUiSort = (\n sortBy: EventSort | null,\n isSortDescending: boolean | null\n) => {\n switch (sortBy) {\n case EventSort.MainDisplay:\n return isSortDescending ? EventUiSort.SortZtoA : EventUiSort.SortAtoZ;\n case EventSort.Date:\n default:\n return isSortDescending ? EventUiSort.DateDesc : EventUiSort.DateAsc;\n }\n};\n\nexport const getEventSort = (\n sort: EventUiSort | null\n): [EventSort, boolean] => {\n switch (sort) {\n case EventUiSort.SortAtoZ:\n return [EventSort.MainDisplay, false];\n case EventUiSort.SortZtoA:\n return [EventSort.MainDisplay, true];\n case EventUiSort.DateAsc:\n return [EventSort.Date, false];\n case EventUiSort.DateDesc:\n default:\n return [EventSort.Date, true];\n }\n};\n\nexport const getAppliedFilterCounts = (\n currentFilter: FilterQueryType,\n initialFilter: FilterQueryType,\n ignoreKeys: string[] = []\n) => {\n const initKeys = Object.keys(initialFilter);\n\n let count = 0;\n for (let i = 0; i < initKeys.length; i++) {\n if (ignoreKeys.includes(initKeys[i])) {\n continue;\n }\n const initValue = initialFilter[initKeys[i]];\n const curValue = currentFilter[initKeys[i]];\n if (!isEqual(curValue, initValue) && initValue !== undefined) {\n count++;\n }\n }\n\n return count;\n};\n\nconst isFilterApplied = (\n currentValue: unknown,\n initialValue: unknown\n): boolean => {\n // No need to differentiate between null and undefined\n if (currentValue == null && initialValue == null) {\n return false;\n }\n return !isEqual(currentValue, initialValue);\n};\n\n/**\n * Returns the filters that match with:\n * * not undefined (null is a valid value)\n * * not in initial/default query\n * * values is different from initial/default query\n * * not in ignored Ids list\n * @param currentFilterQuery\n * @param initialFilterQuery\n * @param ignoreFilterIds Not shown in the UI\n * @param filtersGroups\n */\nexport const getAppliedFilters = (\n currentFilterQuery: FilterQueryType,\n initialFilterQuery: FilterQueryType,\n ignoreFilterIds: string[] = [],\n filtersGroups: FilterToolbarGroup[]\n): FilterToolbarItemId[] => {\n // Sometimes, initialQuery has only default values, not the full query,\n // and the current query has more keys, so merge all together to make\n // the comparisons\n const initialKeys = [\n ...new Set([\n ...Object.keys(initialFilterQuery),\n ...Object.keys(currentFilterQuery),\n ]),\n ];\n\n const filtersMap: Partial> =\n {};\n\n filtersGroups.forEach((filterGroup) => {\n filterGroup.items.forEach((filterItem) => {\n filtersMap[filterItem.filterId] = filterItem;\n });\n });\n\n const appliedFilters = new Set();\n for (let i = 0; i < initialKeys.length; i++) {\n if (ignoreFilterIds.includes(initialKeys[i])) {\n continue;\n }\n const filterId = initialKeys[i] as FilterToolbarItemId;\n\n // Some filters rely on more than one key of the filterQuery, so check if\n // the declared keys in the filter are used.\n const filterKeys = filtersMap[filterId]?.filterQueryKeys ?? [];\n const someApplied = filterKeys.some((fId) => {\n const initialValue = initialFilterQuery[fId];\n const currentValue = currentFilterQuery[fId];\n return isFilterApplied(currentValue, initialValue);\n });\n if (someApplied) {\n appliedFilters.add(filterId);\n }\n }\n\n return [...appliedFilters] as FilterToolbarItemId[];\n};\n\nexport const MainFilterQueryParam = 'mainFilter';\n\nconst removeEntityIdsIfHasSearchId = (copy: FilterQueryType) => {\n const entityQuery = copy as EntityWithTicketsQuery;\n if (entityQuery.searchConfigId) {\n // If we have the search id, then we clear-out everything since only the search config id matter\n return {\n ...entityQuery,\n entityIds: null,\n } as EntityWithTicketsQuery;\n }\n\n return copy;\n};\n\nexport const deleteDefaultFields = (\n baseQuery: FilterQueryType,\n query: FilterQueryType | null,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n queryValueTransformToUrl?: (key: FilterToolbarItemId, value: any) => any\n) => {\n if (!query) {\n return null;\n }\n\n let copy = Object.entries(baseQuery).reduce((result, baseEntry) => {\n const curValue = query[baseEntry[0]];\n if (!isEqual(baseEntry[1], curValue)) {\n result[baseEntry[0]] = queryValueTransformToUrl\n ? queryValueTransformToUrl(\n baseEntry[0] as FilterToolbarItemId,\n curValue\n )\n : curValue;\n }\n\n return result;\n }, {} as FilterQueryType);\n\n copy = removeEntityIdsIfHasSearchId(copy);\n\n return copy;\n};\n\nexport const queryValueTransformFromUrlBase = (\n key: string,\n value: string | object\n) => {\n if (!value) {\n return value;\n }\n\n if (typeof value === 'object') {\n const obj = value as DateTimeRangeWithRelative;\n if (obj.relativeEndSecs || obj.relativeStartSecs) {\n return { ...obj, roundingMode: obj.roundingMode };\n }\n }\n\n return value;\n};\n\nexport const mapToBaseQuery = (\n baseQuery: TQuery,\n query: TQuery | null,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n queryValueTransformFromUrl?: (key: string, value: any) => any\n) => {\n if (!query) {\n return null;\n }\n\n let copy = Object.entries(baseQuery).reduce((result, baseEntry) => {\n const filterId = baseEntry[0];\n const queryValue = query?.[filterId];\n result[filterId] = queryValueTransformFromUrlBase(\n filterId,\n queryValue === undefined\n ? baseEntry[1] // Only use baseEntry's value if the queryValue is undefined (null is a valid value)\n : queryValueTransformFromUrl\n ? queryValueTransformFromUrl(filterId, queryValue)\n : queryValue\n );\n return result;\n }, {} as FilterQueryType);\n\n copy = removeEntityIdsIfHasSearchId(copy);\n\n return copy as TQuery;\n};\n\nexport const isQueryEqual = (\n baseQuery: TQuery,\n query1: TQuery | null,\n query2: TQuery | null\n) => {\n const baseKeys = Object.keys(baseQuery);\n\n for (const i in baseKeys) {\n const v1 = query1?.[baseKeys[i]];\n const v2 = query2?.[baseKeys[i]];\n\n if (!isEqual(v1, v2)) {\n return false;\n }\n }\n\n return true;\n};\nexport const getQueryFromUrl = (\n baseQuery: TQuery,\n urlSearchString: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n queryValueTransformFromUrl?: (key: string, value: any) => any\n): TQuery | null => {\n if (urlSearchString) {\n const searchParams = new URLSearchParams(urlSearchString);\n const filterQueryParam = searchParams.get(MainFilterQueryParam);\n if (filterQueryParam) {\n try {\n const obj = JSON.parse(filterQueryParam);\n if (obj) {\n return mapToBaseQuery(baseQuery, obj, queryValueTransformFromUrl);\n }\n } catch (e) {\n console.warn(`Unable to parse as a filter obj: ${filterQueryParam}`);\n return null;\n }\n }\n }\n\n return baseQuery;\n};\n\nexport const getUrlFilterQueryParam = (\n baseQuery: TQuery,\n query: TQuery | null,\n baseSearchParams?: URLSearchParams,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n queryValueTransformToUrl?: (key: FilterToolbarItemId, value: any) => any\n) => {\n const searchParams = baseSearchParams || new URLSearchParams();\n searchParams.set(\n MainFilterQueryParam,\n JSON.stringify(\n deleteDefaultFields(baseQuery, query, queryValueTransformToUrl)\n )\n );\n\n return `?${searchParams}`;\n};\n\nexport const isFilterQueryParamEmpty = (searchParams?: string): boolean => {\n if (!searchParams) {\n return true;\n }\n try {\n const urlSearchParams = new URLSearchParams(searchParams);\n const mainFilters = urlSearchParams.get(MainFilterQueryParam);\n return !mainFilters || mainFilters === '{}';\n } catch (e) {\n return false;\n }\n};\n\nexport const removeFilters = (\n urlSearchParams: string | undefined,\n filtersKeyToRemove: (keyof TQuery)[]\n): string => {\n if (!urlSearchParams || isFilterQueryParamEmpty(urlSearchParams)) {\n return urlSearchParams ?? '';\n }\n\n try {\n const searchFilterParams = new URLSearchParams(urlSearchParams);\n const mainFilter = searchFilterParams.get(MainFilterQueryParam)!;\n const filters = JSON.parse(mainFilter) as TQuery;\n filtersKeyToRemove.forEach((filterKey) => {\n delete filters[filterKey];\n });\n\n searchFilterParams.set(MainFilterQueryParam, JSON.stringify(filters));\n return searchFilterParams.toString();\n } catch (e) {\n return urlSearchParams ?? '';\n }\n};\n\nexport const getLastNDaysSaleQuery = (days: number): SaleQuery => {\n const today = new Date();\n const lastNDays = new Date();\n lastNDays.setDate(today.getDate() - days);\n return {\n ...DefaultSaleQuery,\n eventTimeFrameFilter: null, // all\n // cap the event time filter to filter with N look-back instead of all - which is perf hit\n eventDates: {\n start: lastNDays.toISOString(),\n end: null,\n } as DateTimeRangeWithRelative,\n saleDates: {\n start: lastNDays.toISOString(),\n end: today.toISOString(),\n } as DateTimeRangeWithRelative,\n };\n};\n\nexport const getPurchaseOrderIdSaleQuery = (\n purchaseOrderId: number\n): SaleQuery => {\n return {\n ...DefaultSaleQuery,\n purchaseOrderId,\n eventTimeFrameFilter: null, // we want all\n };\n};\n\nexport const getPurchaseOrderIdListingQuery = (\n purchaseOrderId: number\n): ListingQuery => {\n return {\n ...DefaultListingQuery,\n purchaseOrderId,\n eventTimeFrameFilter: null, // we want all\n };\n};\n\nexport const getSaleStatusesSaleQuery = (\n saleStatuses: PointOfSaleSaleStatus[]\n): SaleQuery => {\n return {\n ...DefaultSaleQuery,\n saleStatuses,\n };\n};\n\nexport enum YesNoEnum {\n Yes = 'Yes',\n No = 'No',\n}\n\nexport enum LastReviewedSinceDate {\n LastThreeDays = 'Last 3 Days',\n LastSevenDays = 'Last 7 Days',\n LastTwoWeeks = 'Last 2 weeks',\n LastThirtyDays = 'Last 30 Days',\n}\n\nexport enum TextFilterEnum {\n Contains = 'Contains',\n Equals = 'Equals',\n NotContains = 'NotContains',\n}\n\nexport const ToEventMappingStateFilter = (\n isMapped: boolean | null | undefined,\n isMappingRejected: boolean | null | undefined\n) => {\n if (isMapped == null) {\n return EventMappingStateFilter.All;\n }\n if (isMapped === true) {\n return EventMappingStateFilter.Mapped;\n }\n\n // isMapped === false\n return isMappingRejected === true\n ? EventMappingStateFilter.Rejected\n : EventMappingStateFilter.Pending;\n};\n\nexport const FromEventMappingStateFilter = (\n eventMappingStateFilter: EventMappingStateFilter\n): [boolean | null, boolean | null] => {\n // [isMapped, isMappingRejected]\n switch (eventMappingStateFilter) {\n case EventMappingStateFilter.All:\n return [null, null];\n case EventMappingStateFilter.Mapped:\n return [true, null];\n case EventMappingStateFilter.Pending:\n return [false, false];\n case EventMappingStateFilter.Rejected:\n return [false, true];\n }\n};\n\nexport const ToYesNoEnum = (value: boolean | null | undefined) => {\n return value == null ? null : value ? YesNoEnum.Yes : YesNoEnum.No;\n};\n\nexport const FromYesNoEnum = (yesNoEnumValue: YesNoEnum | null) => {\n return yesNoEnumValue === YesNoEnum.Yes\n ? true\n : yesNoEnumValue === YesNoEnum.No\n ? false\n : null;\n};\n\n/**\n * Filters the `catalogResults` using the given date range.\n *\n * This mutates the original `catalogResults`.\n * @param catalogResults\n * @param dateRangeStrings\n * @returns\n */\nexport function filterCatalogResultsByEventDate(\n catalogResults: CatalogResults,\n dateRangeStrings: DateTimeRange\n) {\n const dateRange = {\n start: dateRangeStrings?.start ? new Date(dateRangeStrings.start) : null,\n end: dateRangeStrings?.end ? new Date(dateRangeStrings.end) : null,\n };\n\n const filteredEvents: { [key: string]: EventWithData } = {};\n for (const id in catalogResults.events) {\n const { event } = catalogResults.events[id];\n if (event.dates.start != null) {\n const eventDate = new Date(event.dates.start);\n if (\n (dateRange.start == null || eventDate >= dateRange.start) &&\n (dateRange.end == null || eventDate <= dateRange.end)\n ) {\n filteredEvents[id] = catalogResults.events[id];\n }\n }\n }\n catalogResults.events = filteredEvents;\n return catalogResults;\n}\n\nexport const isFilterUnchanged = <\n T extends ListingQuery | SaleQuery | PurchaseOrderQuery,\n>(\n query: T,\n emptyQuery: T\n) => {\n const {\n entityIds,\n performerIds,\n venueIds,\n searchText,\n sortBy,\n isSortDescending,\n searchConfigId,\n viewMode,\n ...rest1\n } = query;\n\n const {\n entityIds: x1,\n performerIds: x2,\n venueIds: x3,\n searchText: x4,\n sortBy: x5,\n isSortDescending: x6,\n searchConfigId: x7,\n viewMode: x8,\n ...rest2\n } = emptyQuery;\n\n return Object.entries(rest1).length === 0 || isEqual(rest1, rest2);\n};\n","import type { Location } from '@remix-run/router';\nimport { isEqual, once } from 'lodash-es';\nimport React, {\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { useLocation, useSearchParams } from 'react-router-dom';\nimport { FilterToolbarItemId } from 'src/components/Filters';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport {\n getQueryFromUrl,\n getUrlFilterQueryParam,\n isFilterQueryParamEmpty,\n MainFilterQueryParam,\n QueryWithViewMode,\n VIEW_MODE_SETTING_ID_TO_DEFAULT,\n} from 'src/utils/eventQueryUtils';\nimport { UserSetting } from 'src/WebApiController';\n\nimport { useSiteTimezoneContext } from '../SiteTimezoneContext/SiteTimezoneContext';\n\nexport type IFilterQueryContext = {\n initialQuery: TQuery;\n filterQuery: TQuery;\n emptyQuery: TQuery;\n tempQuery: TQuery;\n setFilterQuery: (newQuery: TQuery) => void;\n setTempQuery: (newQuery: TQuery) => void;\n resetTempQuery: () => void;\n isQueryInitialized: boolean;\n};\n\ninterface ConstState {\n initialQuery: TQuery;\n filterQuery: TQuery;\n queryFromUrl: TQuery;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n queryValueTransformToUrl?: (key: FilterToolbarItemId, value: any) => any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n queryValueTransformFromUrl?: (key: string, value: any) => any;\n searchParams: URLSearchParams;\n saveQueryInUrl: boolean;\n readQueryFromUrl: boolean;\n handleFilterChange: (query: TQuery) => void;\n location: Location;\n}\n\nexport const createFilterQueryContext = once(<\n TQuery extends QueryWithViewMode,\n>() => React.createContext({} as IFilterQueryContext));\n\nexport function useFilterQueryContext() {\n return useContext(createFilterQueryContext());\n}\n\nexport function FilterQueryContextProvider({\n initialQuery,\n emptyQuery,\n saveQueryInUrl = false,\n loadQueryFromUrl = true,\n viewModeSettingId,\n queryValueTransformToUrl,\n queryValueTransformFromUrl,\n children,\n}: PropsWithChildren<{\n initialQuery: TQuery;\n emptyQuery: TQuery;\n saveQueryInUrl?: boolean;\n loadQueryFromUrl?: boolean;\n viewModeSettingId?:\n | UserSetting.InventoryPageViewMode\n | UserSetting.SalePageViewMode\n | UserSetting.PurchasePageViewMode;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n queryValueTransformToUrl?: (key: FilterToolbarItemId, value: any) => any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n queryValueTransformFromUrl?: (key: string, value: any) => any;\n}>) {\n const FilterQueryContext = createFilterQueryContext();\n\n const location = useLocation();\n const [searchParams, setSearchParams] = useSearchParams();\n\n const [isQueryInitialized, setIsQueryInitialized] = useState(false);\n\n const [readQueryFromUrl, setReadQueryFromUrl] =\n useState(loadQueryFromUrl);\n\n /**\n * This is used to not generate a new query from the url every time filterQuery changes.\n */\n const [queryFromUrl, setQueryFromUrl] = useState(initialQuery);\n\n // Source of truth query\n const [filterQuery, setFilterQuery] = useState(initialQuery);\n\n // Used in filters\n const [tempQuery, setTempQuery] = useState(initialQuery);\n\n const handleFilterChange = useCallback((f: TQuery) => {\n setFilterQuery(f);\n }, []);\n\n const constState: ConstState = {\n initialQuery,\n filterQuery,\n queryFromUrl,\n queryValueTransformToUrl,\n queryValueTransformFromUrl,\n searchParams,\n saveQueryInUrl,\n handleFilterChange,\n readQueryFromUrl,\n location,\n };\n const refConstState = useRef>(constState);\n refConstState.current = constState;\n\n // Effect when location changes => update filterQuery\n useEffect(() => {\n const {\n handleFilterChange,\n readQueryFromUrl,\n initialQuery,\n queryFromUrl,\n queryValueTransformFromUrl,\n } = refConstState.current;\n\n // if !loadQueryFromUrl then skip first render effect\n if (!readQueryFromUrl) {\n setReadQueryFromUrl(true);\n setIsQueryInitialized(true);\n return;\n }\n\n const tempQueryFromUrl = getQueryFromUrl(\n initialQuery,\n searchParams.toString(),\n queryValueTransformFromUrl\n );\n\n if (!tempQueryFromUrl) {\n setIsQueryInitialized(true);\n return;\n }\n\n if (isEqual(tempQueryFromUrl, queryFromUrl)) {\n setIsQueryInitialized(true);\n return;\n }\n\n setQueryFromUrl(tempQueryFromUrl);\n handleFilterChange(tempQueryFromUrl);\n setIsQueryInitialized(true);\n // Don't add any other deps than searchParams.\n // This needs to run only when search params changes\n }, [searchParams]);\n\n // filterQuery Change => Set in URL\n useEffect(() => {\n const {\n filterQuery,\n queryFromUrl,\n initialQuery,\n searchParams,\n queryValueTransformToUrl,\n saveQueryInUrl,\n } = refConstState.current;\n\n if (!queryFromUrl || !filterQuery || !initialQuery) {\n return;\n }\n\n if (isEqual(filterQuery, queryFromUrl)) {\n return;\n }\n\n if (saveQueryInUrl) {\n const searchQuery = getUrlFilterQueryParam(\n initialQuery,\n filterQuery,\n searchParams,\n queryValueTransformToUrl\n );\n const queryParamsToSet = new URLSearchParams(searchParams);\n if (isFilterQueryParamEmpty(searchQuery)) {\n queryParamsToSet.delete(MainFilterQueryParam);\n }\n setSearchParams(queryParamsToSet, {\n state: refConstState.current.location.state, // keep state as it is\n });\n setQueryFromUrl(filterQuery);\n }\n // DO NOT add more deps here.\n // This effect must run only when the filterQuery changes\n }, [filterQuery]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const {\n value: defaultViewModeUserSetting = viewModeSettingId\n ? VIEW_MODE_SETTING_ID_TO_DEFAULT[viewModeSettingId]\n : undefined,\n isLoading: isViewModeSettingLoading,\n } = useServerUserSetting({\n id: viewModeSettingId,\n currentLoginUserOnly: true,\n });\n\n const { timezoneOffsetMins: timezoneOffsetMinsAccount } =\n useSiteTimezoneContext();\n\n useEffect(() => {\n if (\n isQueryInitialized &&\n ((defaultViewModeUserSetting &&\n defaultViewModeUserSetting !== filterQuery?.viewMode) ||\n (timezoneOffsetMinsAccount != null &&\n timezoneOffsetMinsAccount !== filterQuery?.timezoneOffsetMins))\n ) {\n setFilterQuery((prev) => ({\n ...prev,\n viewMode: defaultViewModeUserSetting,\n timezoneOffsetMins: timezoneOffsetMinsAccount,\n }));\n // We need to update initialQuery, otherwise the quick filter \"All\"\n // may change the current fields\n initialQuery.viewMode = defaultViewModeUserSetting;\n initialQuery.timezoneOffsetMins = timezoneOffsetMinsAccount;\n emptyQuery.timezoneOffsetMins = timezoneOffsetMinsAccount;\n }\n // Only want to run this use-effect when the user settings changed\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n defaultViewModeUserSetting,\n isQueryInitialized,\n timezoneOffsetMinsAccount,\n ]);\n\n const resetTempQuery = useCallback(\n (queryKeys?: (keyof TQuery)[]) => {\n if (queryKeys) {\n const newTempQuery = { ...tempQuery };\n queryKeys.forEach((key) => (newTempQuery[key] = emptyQuery[key]));\n setTempQuery(newTempQuery);\n } else {\n setTempQuery(filterQuery);\n }\n },\n [emptyQuery, filterQuery, tempQuery]\n );\n\n return (\n \n {children}\n \n );\n}\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const SuggestionsContainer = styled.div`\n display: block;\n`;\n\nexport const SuggestionsHeading = styled.header`\n color: ${(props) => props.theme.colors.textPrimary};\n padding-bottom: ${() => vars.spacing.xxs};\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('caption1')};\n`;\nexport const SuggestionContainer = styled.div`\n padding: ${() => `${vars.spacing.sm} ${vars.spacing.lg}`};\n margin: ${() => `0 -${vars.spacing.lg}`};\n :hover {\n background-color: ${(props) => props.theme.colors.backgroundBrandLight};\n }\n`;\n\nexport const Suggestion = styled.button`\n text-align: left;\n text-transform: capitalize;\n padding: 0;\n border: none;\n background: none;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('body1')};\n`;\n","import clsx from 'clsx';\nimport { useMemo } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n DateRangePreset,\n DateRangePresetName,\n formatDateRange,\n getDateRangePresets,\n getPresetFromUiDateTimeRange,\n} from 'src/utils/dateTimeUtils';\nimport { DateTimeRange } from 'src/WebApiController';\n\nimport * as styles from './DateRangePresets.css';\nimport {\n Suggestion,\n SuggestionContainer,\n SuggestionsContainer,\n SuggestionsHeading,\n} from './DateRangePresets.styled';\n\nexport type DateRange = {\n from: Date;\n to: Date;\n};\n\nexport type DateRangePresetsProp = {\n presetNames: DateRangePresetName[];\n selectedDateRange?: DateTimeRange | null;\n onClick: (dateRange: DateRange) => void;\n disabled?: boolean;\n /**\n * If true, the site's timezone will be applied to the date being displayed.\n * the underlying date value (value, data, onDateChange) will not be changed.\n */\n useSiteTimeZone?: boolean;\n hideSuggestionTitle?: boolean;\n};\n\nexport function DateRangePresets({\n selectedDateRange,\n presetNames,\n onClick,\n disabled,\n useSiteTimeZone = true,\n hideSuggestionTitle,\n}: DateRangePresetsProp) {\n const { toZonedTime, fromZonedTime } = useSiteTimezoneContext();\n\n const handleClick = (preset: DateRangePreset) => {\n const dateRange = {\n from: useSiteTimeZone\n ? fromZonedTime(preset.range.start)\n : preset.range.start,\n to: useSiteTimeZone ? fromZonedTime(preset.range.end) : preset.range.end,\n };\n onClick(dateRange);\n };\n\n const presets = useMemo(() => {\n let now = new Date();\n if (useSiteTimeZone) {\n now = toZonedTime(now);\n }\n const presets = getDateRangePresets(presetNames, now);\n\n return presets;\n }, [useSiteTimeZone, presetNames, toZonedTime]);\n\n const presetName = getPresetFromUiDateTimeRange(\n selectedDateRange,\n useSiteTimeZone ? toZonedTime : undefined\n )?.name;\n\n return (\n \n {!hideSuggestionTitle && (\n \n \n \n )}\n {presets.map((preset, index) => (\n handleClick(preset)}>\n \n {preset.label}{' '}\n ({formatDateRange(preset.range)})\n \n \n ))}\n \n );\n}\n","import clsx from 'clsx';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n DateRangePresetName,\n DateRangeRelativePreset,\n formatRelativeDateRange,\n getDateRangeRelativePresets,\n getRelativePresetFromUiDateTimeRange,\n} from 'src/utils/dateTimeUtils';\nimport { DateTimeRangeWithRelative } from 'src/WebApiController';\n\nimport * as styles from './DateRangePresets.css';\nimport {\n Suggestion,\n SuggestionContainer,\n SuggestionsContainer,\n SuggestionsHeading,\n} from './DateRangePresets.styled';\n\nexport type DateRangeRelativePresetsProp = {\n presetNames: DateRangePresetName[];\n selectedDateRange?: DateTimeRangeWithRelative | null;\n onClick: (dateRange: DateTimeRangeWithRelative) => void;\n disabled?: boolean;\n hideSuggestionTitle?: boolean;\n};\n\nexport function DateRangeRelativePresets({\n selectedDateRange,\n presetNames,\n onClick,\n disabled,\n hideSuggestionTitle,\n}: DateRangeRelativePresetsProp) {\n const handleClick = (preset: DateRangeRelativePreset) => {\n onClick(preset.range);\n };\n\n const presets = getDateRangeRelativePresets(presetNames);\n const presetName =\n getRelativePresetFromUiDateTimeRange(selectedDateRange)?.name;\n return (\n \n {!hideSuggestionTitle && (\n \n \n \n )}\n {presets.map((preset, index) => (\n handleClick(preset)}>\n \n {preset.label}{' '}\n ({formatRelativeDateRange(preset.range)})\n \n \n ))}\n \n );\n}\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const DateRangeTriggerContent = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-transform: capitalize;\n width: 100%;\n\n > *:first-child {\n padding-right: ${() => vars.spacing.lg};\n }\n > *:last-child {\n padding-right: 0;\n }\n`;\n\nexport const DateRangeTrigger = styled.button<{\n isActive: boolean;\n}>`\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('body1')};\n background-color: ${vars.color.backgroundPrimaryActive};\n color: ${(props) =>\n props.isActive\n ? props.theme.colors.textStrong\n : props.theme.colors.textPrimary};\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: ${() => `${vars.spacing.xs} ${vars.spacing.lg}`};\n width: 100%;\n white-space: nowrap;\n border-radius: ${() => vars.spacing.xxs};\n border: 1px solid ${(props) => props.theme.colors.borderDark};\n z-index: 3;\n cursor: pointer;\n outline: none;\n transition: border 0.2s;\n\n &:hover:not([disabled]) {\n border-color: ${(props) => props.theme.colors.borderActive};\n }\n`;\n\nexport const IconContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n border-right: 1px solid ${(props) => props.theme.colors.borderActive};\n margin-right: ${() => vars.spacing.sm};\n padding-right: ${() => vars.spacing.sm};\n\n svg {\n height: 18px;\n cursor: pointer;\n }\n\n svg > path {\n fill: ${(props) => props.theme.colors.textBrand};\n }\n`;\n\nexport const DateRangeInputContainer = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-gap: ${() => vars.spacing.sm};\n padding-top: ${() => vars.spacing.xl};\n border-top: 1px solid ${(props) => props.theme.colors.borderPrimary};\n`;\n\nexport const DateInputLabel = styled.label`\n display: flex;\n flex-direction: column;\n height: ${() => `${vars.spacing['5xl']}`};\n padding: ${() =>\n `${vars.spacing.xxs} ${vars.spacing.lg} ${vars.spacing.m} ${vars.spacing.lg}`};\n width: 140px;\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('caption2')};\n color: ${(props) => props.theme.colors.textPrimary};\n border: 1px solid ${(props) => props.theme.colors.borderPrimary};\n border-radius: ${() => vars.spacing.xxs};\n background-color: ${(props) => props.theme.colors.backgroundSecondary};\n\n &:focus-within {\n border-color: ${(props) => props.theme.colors.borderActive};\n box-shadow: ${(props) => props.theme.shadow(2, 'b')};\n background-color: ${(props) => props.theme.colors.white};\n }\n`;\n\nexport const DateInput = styled.input`\n border: none;\n outline: none;\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('body2')};\n color: ${(props) => props.theme.colors.textStrong};\n background-color: transparent;\n`;\n\nexport const CustomDateRangeButton = styled.button`\n display: inline-flex;\n align-items: center;\n gap: ${() => vars.spacing.sm};\n padding: ${() => `${vars.spacing.sm} ${vars.spacing.lg}`};\n margin: ${() =>\n `${vars.spacing.sm} -${vars.spacing.lg} -${vars.spacing.lg} -${vars.spacing.lg}`};\n width: calc(100% + 32px);\n font-weight: 500;\n text-align: left;\n :hover {\n background-color: ${(props) => props.theme.colors.backgroundBrandLight};\n }\n border: none;\n background: none;\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('body1')};\n`;\n\nexport const DateErrorContainer = styled.ul`\n display: block;\n width: 100%;\n margin-left: 0;\n padding-left: 0;\n list-style-type: none;\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('caption2')};\n color: ${(props) =>\n props.color /* partner */ ?? props.theme.colors.textNegative};\n`;\n\nexport const DateRangePickerContainer = styled.div`\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('body1')};\n padding: ${() => vars.spacing.lg};\n width: 100%;\n`;\n","import 'react-date-range/dist/styles.css'; // main css file\nimport 'react-date-range/dist/theme/default.css'; // theme css file\n\nimport clsx from 'clsx';\nimport endOfDay from 'date-fns/endOfDay';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n DateRange as ReactDateRange,\n DateRangePickerProps,\n} from 'react-date-range';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { vars } from 'src/core/themes';\nimport { DividerLine, Popover } from 'src/core/ui';\nimport { CalendarIcon, CrossIcon, ExpandIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n formatDate,\n tryGetDateRangePresetSuggestionText,\n tryGetDateRangeRelativePresetSuggestionText,\n validateDate,\n} from 'src/utils/dateTimeUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { DateTimeRange, DateTimeRangeWithRelative } from 'src/WebApiController';\n\nimport {\n DateRange,\n DateRangePresets,\n DateRangePresetsProp,\n} from './DateRangePresets/DateRangePresets';\nimport { DateRangeRelativePresets } from './DateRangePresets/DateRangeRelativePresets';\nimport * as styles from './DateRangeSelector.css';\nimport {\n CustomDateRangeButton,\n DateErrorContainer,\n DateRangePickerContainer,\n DateRangeTrigger,\n DateRangeTriggerContent,\n IconContainer,\n} from './DateRangeSelector.styled';\n\nexport type DateRangeSelectorProps = Omit<\n DateRangePresetsProp,\n 'onClick' | 'selectedDateRange'\n> & {\n value?: DateTimeRangeWithRelative | DateTimeRange | null;\n defaultValue?: DateTimeRangeWithRelative | DateTimeRange | null;\n onChange?: (value: DateTimeRangeWithRelative | null) => void;\n onBlur?: (value: DateTimeRangeWithRelative | null) => void;\n useRelativePresets?: boolean;\n /**\n * If true, the site's timezone will be applied to the date being displayed.\n * the underlying date value (value, data, onDateChange) will not be changed.\n */\n useSiteTimeZone?: boolean;\n isEndDateFixed?: boolean; // New flag for controlling end date behavior\n displayTextStyle?: React.CSSProperties;\n} & Omit;\n\nexport function DateRangeSelector({\n value,\n startDatePlaceholder,\n endDatePlaceholder,\n className,\n dateDisplayFormat = 'MM/dd/yyyy',\n retainEndDateOnFirstSelection = true,\n rangeColors = [vars.color.backgroundHighlight],\n locale = getLocaleFromLanguageOrCurrent(),\n onChange,\n onBlur,\n disabled,\n useRelativePresets,\n useSiteTimeZone = true,\n onPreviewChange,\n isEndDateFixed = false,\n displayTextStyle,\n ...presetProps\n}: DateRangeSelectorProps) {\n const { toZonedTime, fromZonedTime } = useSiteTimezoneContext();\n const currentLocale = getLocaleFromLanguageOrCurrent();\n const [showDatePicker, setShowDatePicker] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n const [dateValue, setDateValue] = useState({\n start: formatDate(value?.start || '', currentLocale.code),\n end: formatDate(value?.end || '', currentLocale.code),\n });\n const [dateErrors, setDateErrors] = useState([]);\n\n const defaultDateRangeDisplayText = useContent(\n ContentId.DateRangeDisplayText\n );\n const defaultFromlabel = useContent(ContentId.FromDate);\n const defaultToLabel = useContent(ContentId.ToDate);\n const endDateBeforeStartDate = useContent(ContentId.EndDateBeforeStartDate);\n const invalidEndDate = useContent(ContentId.InvalidEndDate);\n const invalidStartDate = useContent(ContentId.InvalidStartDate);\n const dateErrorConfig = useMemo(\n () => ({\n endDateBeforeStartDate,\n invalidEndDate,\n invalidStartDate,\n }),\n [endDateBeforeStartDate, invalidEndDate, invalidStartDate]\n );\n\n const getFormattedDate = useCallback(\n (time: string | null | undefined) => {\n return useSiteTimeZone\n ? toZonedTime(time ? new Date(time) : new Date())\n : time\n ? new Date(time)\n : new Date();\n },\n [useSiteTimeZone, toZonedTime]\n );\n\n const onDateRangePickerChange = useCallback(\n (from: Date | undefined, to: Date | undefined) => {\n const newValue: DateTimeRangeWithRelative = value\n ? {\n relativeEndSecs: null,\n relativeStartSecs: null,\n roundingMode: null,\n ...value,\n }\n : {\n start: null,\n end: null,\n relativeStartSecs: null,\n relativeEndSecs: null,\n roundingMode: null,\n };\n\n if (from == null) {\n newValue.start = null;\n } else {\n newValue.start = from.toISOString();\n }\n if (to == null) {\n newValue.end = null;\n } else {\n newValue.end = to.toISOString();\n }\n newValue.relativeStartSecs = null;\n newValue.relativeEndSecs = null;\n\n onChange?.(newValue);\n onBlur?.(newValue);\n setDateValue({\n start: formatDate(newValue.start || '', currentLocale.code),\n end: formatDate(newValue.end || '', currentLocale.code),\n });\n },\n [value, onChange, onBlur, currentLocale.code]\n );\n\n const onClear = useCallback(() => {\n onDateRangePickerChange(undefined, undefined);\n }, [onDateRangePickerChange]);\n\n const onSuggestionClick = useCallback(\n (range: DateRange) => {\n onDateRangePickerChange(range.from, range.to);\n setIsOpen(false);\n },\n [onDateRangePickerChange]\n );\n\n const onSuggestionRelativeClick = useCallback(\n (range: DateTimeRangeWithRelative) => {\n onChange?.(range);\n onBlur?.(range);\n setDateValue({\n start: formatDate('', currentLocale.code),\n end: formatDate('', currentLocale.code),\n });\n setIsOpen(false);\n },\n [onChange, onBlur, currentLocale.code]\n );\n\n useEffect(() => {\n const dateErrors = validateDate(dateValue, currentLocale, dateErrorConfig);\n setDateErrors(dateErrors);\n }, [dateValue, dateErrorConfig, currentLocale]);\n\n const getDisplayText = useCallback(() => {\n const suggestionText = tryGetDateRangePresetSuggestionText(\n value,\n useSiteTimeZone ? toZonedTime : undefined,\n displayTextStyle\n );\n\n if (suggestionText) {\n return suggestionText;\n }\n\n const suggestionTextRelative = tryGetDateRangeRelativePresetSuggestionText(\n value as DateTimeRangeWithRelative | null | undefined\n );\n\n if (suggestionTextRelative) {\n return suggestionTextRelative;\n }\n\n const { end, start } = dateValue;\n if (value && start) {\n if (useSiteTimeZone && value.start && value.end) {\n const startZoned = formatDate(\n toZonedTime(new Date(value.start)).toISOString(),\n currentLocale.code\n );\n const endZoned = formatDate(\n toZonedTime(new Date(value.end)).toISOString(),\n currentLocale.code\n );\n\n return `${startZoned} - ${endZoned}`;\n }\n return `${start} - ${end}`;\n }\n\n return defaultDateRangeDisplayText;\n }, [\n currentLocale.code,\n dateValue,\n defaultDateRangeDisplayText,\n displayTextStyle,\n toZonedTime,\n useSiteTimeZone,\n value,\n ]);\n\n const highlightDropBox = !(\n value?.start == null &&\n value?.end == null &&\n (value as DateTimeRangeWithRelative)?.relativeEndSecs == null &&\n (value as DateTimeRangeWithRelative)?.relativeStartSecs == null\n );\n\n return (\n {\n setIsOpen(isOpen);\n if (!isOpen) {\n setShowDatePicker(false);\n }\n }}\n >\n \n \n \n
{getDisplayText()}
\n
\n {!disabled &&\n (!!dateValue.start ||\n (value as DateTimeRangeWithRelative)?.relativeEndSecs !=\n null ||\n (value as DateTimeRangeWithRelative)?.relativeStartSecs !=\n null) &&\n highlightDropBox && (\n \n \n \n )}\n \n
\n
\n
\n
\n \n \n {useRelativePresets ? (\n \n ) : (\n \n )}\n
\n \n
\n setShowDatePicker((val) => !val)}\n >\n
\n \n
{' '}\n \n \n {showDatePicker && (\n <>\n
\n \n {dateErrors.map((err) => (\n
  • {err}
  • \n ))}\n
    \n {\n const startDate =\n range.range.startDate && useSiteTimeZone\n ? fromZonedTime(range.range.startDate)\n : range.range.startDate;\n const rangeSelectorEndDate = range.range.endDate\n ? useSiteTimeZone\n ? fromZonedTime(endOfDay(range.range.endDate))\n : endOfDay(range.range.endDate)\n : undefined;\n\n const endDate = isEndDateFixed\n ? value?.end\n ? new Date(value.end)\n : new Date()\n : rangeSelectorEndDate;\n\n onDateRangePickerChange(startDate, endDate);\n }}\n rangeColors={rangeColors}\n locale={locale}\n />\n \n )}\n \n \n \n );\n}\n","import { ComponentPropsWithRef, useMemo } from 'react';\nimport {\n contentComparator,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport { PosSelect } from 'src/core/POS/PosSelect';\n\nexport type PosEnumSelectProps = {\n value?: EnumType | null;\n defaultValue?: EnumType | null;\n valueOptionsContent: Record;\n onChange: (option: EnumType | null) => void;\n} & Omit<\n ComponentPropsWithRef,\n 'value' | 'valueOptionsContent' | 'onChange' | 'defaultValue'\n>;\n\nexport function PosEnumSelect({\n value,\n defaultValue,\n onChange,\n valueOptionsContent,\n ...rest\n}: PosEnumSelectProps) {\n const contentContext = useContentContext();\n const s = useMemo(() => {\n return contentComparator.bind(undefined, contentContext);\n }, [contentContext]);\n\n return (\n {\n onChange(o as EnumType);\n }}\n valueOptionsContent={valueOptionsContent}\n {...rest}\n sortFn={s}\n />\n );\n}\n","import {\n ComponentProps,\n FocusEvent,\n forwardRef,\n ReactElement,\n ReactNode,\n useCallback,\n} from 'react';\nimport { FieldError, FieldErrorsImpl, Merge } from 'react-hook-form';\nimport { TextField } from 'src/core/ui';\n\nexport type PosTextFieldProps = ComponentProps & {\n trimOnBlur?: boolean;\n prefixDisplay?: ReactNode;\n postfixDisplay?: ReactNode;\n rootProps?: Omit, 'children'>;\n};\n\nexport const PosTextField = forwardRef(\n function PosTextField(\n {\n onBlur,\n onKeyUp,\n trimOnBlur,\n prefixDisplay,\n postfixDisplay,\n rootProps,\n ...props\n },\n ref\n ): ReactElement {\n const customOnBlur = useCallback(\n (params: FocusEvent) => {\n if (trimOnBlur) {\n params.target.value = params.target.value.trim();\n }\n if (onBlur) {\n onBlur(params);\n }\n },\n [trimOnBlur, onBlur]\n );\n\n return (\n \n {prefixDisplay}\n \n {postfixDisplay}\n \n );\n }\n);\n\nexport const getTextFieldState = (\n error?:\n | string\n | string[]\n | FieldError\n | FieldError[]\n | Merge\n): ComponentProps['state'] | undefined => {\n if (!error) return undefined;\n\n const isArray = Array.isArray(error);\n\n return (isArray ? error.length : error) ? 'error' : undefined;\n};\n","import { useRef } from 'react';\nimport { useDebounce } from 'react-use';\nimport * as styles from 'src/core/POS/PosSelect/PosSelect.css';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { CheckIcon, CrossIcon, IconsFill } from 'src/svgs/Viagogo';\n\ninterface InputSearchTestProps {\n searchPlaceholder: string;\n onChange: (value: string) => void;\n onSearchTextApplied: (value: string) => void;\n disabled: boolean;\n allowSearchAsInput: boolean;\n searchInput: string;\n}\n\nexport const SelectInputSearch = ({\n searchPlaceholder,\n onChange,\n onSearchTextApplied,\n searchInput,\n allowSearchAsInput,\n disabled,\n}: InputSearchTestProps) => {\n const refInput = useRef(null);\n\n useDebounce(\n () => {\n onChange(searchInput);\n setTimeout(() => refInput.current?.focus(), 10);\n },\n 200,\n [searchInput, onChange]\n );\n return (\n
    \n {\n refInput.current = input;\n setTimeout(() => refInput.current?.focus(), 0);\n }}\n value={searchInput}\n placeholder={searchPlaceholder}\n onChange={(e) => {\n e.stopPropagation();\n e.preventDefault();\n onChange(e.target.value);\n }}\n onTouchEnd={(e) => {\n // Note: This event is mobile only to explicitly trap focus on click\n // onClick won't work properly on mobile with Radix UI\n //\n // see more in `src\\core\\ui\\Select\\Select.tsx :: Select.Content`\n // and https://github.com/radix-ui/primitives/issues/1658\n e.currentTarget.focus();\n }}\n onKeyDown={(e) => {\n if (!disabled) {\n const key = e.key;\n if (key === 'Enter') {\n e.stopPropagation();\n\n // See if search-text matches any option, return it as a selection, else return searchText\n if (searchInput) {\n onSearchTextApplied(searchInput);\n }\n }\n }\n }}\n postfixDisplay={\n searchInput && (\n <>\n {allowSearchAsInput && (\n {\n // Note: This event is mobile only to explicitly handle event on click\n // onClick won't work properly on mobile with Radix UI\n //\n // see more in `src\\core\\ui\\Select\\Select.tsx :: Select.Content`\n // and https://github.com/radix-ui/primitives/issues/1658\n e.stopPropagation();\n e.preventDefault();\n onSearchTextApplied(searchInput);\n }}\n >\n {\n e.stopPropagation();\n e.preventDefault();\n onSearchTextApplied(searchInput);\n }}\n />\n
    \n )}\n {\n // Note: This event is mobile only to explicitly handle event on click\n // onClick won't work properly on mobile with Radix UI\n //\n // see more in `src\\core\\ui\\Select\\Select.tsx :: Select.Content`\n // and https://github.com/radix-ui/primitives/issues/1658\n e.stopPropagation();\n e.preventDefault();\n onChange('');\n }}\n >\n {\n e.stopPropagation();\n e.preventDefault();\n onChange('');\n }}\n />\n
    \n \n )\n }\n />\n \n );\n};\n","import { vars } from 'src/core/themes';\nimport styled, { keyframes } from 'styled-components/macro';\n\nexport const SpinnerWrapper = styled.div<{ centered?: boolean }>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${(props) => (props.centered ? '100%' : undefined)};\n padding: ${(props) => (props.centered ? vars.spacing.lg : undefined)};\n`;\n\nexport const SpinnerContainer = styled.div<{ size?: string }>`\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n width: calc(4 * ${(props) => props.size});\n height: calc(4 * ${(props) => props.size});\n`;\n\nSpinnerContainer.defaultProps = { size: vars.iconSize.s };\n\nexport const SpinnerSVG = styled.svg`\n width: 60%;\n position: absolute;\n`;\n\nconst circleAnimation = keyframes`\n 0% {\n stroke-dasharray: 0%, 300%;\n }\n\n 100% {\n stroke-dasharray: 300%, 300%;\n }\n`;\n\nconst circleWrapperAnimation = keyframes`\n 0% {\n transform: rotate(0);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n`;\n\nexport const SpinnerCircleWrapper = styled.div`\n width: 100%;\n position: absolute;\n animation: ${circleWrapperAnimation} 0.6s linear infinite;\n`;\n\nexport const SpinnerCircleSVG = styled.svg`\n width: 100%;\n stroke-width: 2px;\n animation: ${circleAnimation} 1s linear infinite alternate;\n`;\n","import { useEffect, useState } from 'react';\n\nimport {\n SpinnerCircleSVG,\n SpinnerCircleWrapper,\n SpinnerContainer,\n SpinnerSVG,\n SpinnerWrapper,\n} from './PosSpinner.styled';\n\nenum SpinnerLogos {\n Sports,\n Concerts,\n Theatre,\n}\n\nexport function PosSpinner({\n size,\n centered = true,\n}: {\n size?: string;\n centered?: boolean;\n}) {\n const [counter, setCounter] = useState(0);\n\n useEffect(() => {\n const interval = setInterval(() => {\n setCounter((c) => c + 1);\n }, 2000);\n return () => clearInterval(interval);\n }, []);\n\n const stroke = colors[counter % colors.length];\n const currentShape = shapes[counter % shapes.length];\n\n return (\n \n \n \n {spinnerLogos[currentShape]}\n \n \n \n \n \n \n \n \n );\n}\n\nconst colors = ['#db2c7b', '#29b2b2', '#3f1375'];\nconst shapes = [\n SpinnerLogos.Sports,\n SpinnerLogos.Concerts,\n SpinnerLogos.Theatre,\n];\n\nconst spinnerLogos = {\n [SpinnerLogos.Concerts]: (\n \n ),\n [SpinnerLogos.Sports]: (\n \n ),\n [SpinnerLogos.Theatre]: (\n \n ),\n};\n","import Flexsearch from 'flexsearch';\nimport { debounce } from 'lodash-es';\nimport { useCallback, useEffect, useState } from 'react';\nimport {\n getContent,\n IContentContext,\n isContentId,\n useContentContext,\n} from 'src/contexts/ContentContext';\n\n/**\n * Building index for FlexSearch is expensive (5-10s for 1M entries), so we defer building index until the select expands\n *\n * If number of items is greater than this threshold, we will defer building index until the select expands (see onOpenChange)\n * to avoid blocking the UI. Otherwise we will build the index immediately (see useEffect hook).\n */\nconst DEFER_BUILD_INDEX_ITEMS_THRESHOLD = 100_000;\n\nconst REVERSE_TOKENIZE_ITEM_THRESHOLD = 100_000;\nconst FULL_TOKENIZE_ITEM_THRESHOLD = 10_000;\n\nconst buildFlexSearchIndex = (\n valueOptionsContent: Record,\n contentContext: IContentContext\n) => {\n const itemCount = Object.keys(valueOptionsContent).length;\n\n const index = new Flexsearch.Index({\n preset: 'performance',\n tokenize:\n itemCount < FULL_TOKENIZE_ITEM_THRESHOLD\n ? 'full'\n : itemCount < REVERSE_TOKENIZE_ITEM_THRESHOLD\n ? 'reverse'\n : 'forward',\n });\n\n Object.entries(valueOptionsContent).forEach(([key, val]) => {\n const value = isContentId(val) ? getContent(val, contentContext) : val;\n index.add(key, value);\n });\n return index;\n};\n\n/**\n *\n * @param valueOptionsContent\n * @param enabled\n * @param isOpen is true when the select is expanded (ready to use)\n */\nexport function useFlexSearchIndex(\n valueOptionsContent: Record,\n enabled?: boolean,\n isOpen?: boolean\n) {\n const contentContext = useContentContext();\n\n const [flexSearchIndex, setFlexSearchIndex] =\n useState(null);\n\n useEffect(() => {\n setFlexSearchIndex(null);\n // If the number of items is less than the threshold, build the index immediately\n if (\n Object.keys(valueOptionsContent).length <=\n DEFER_BUILD_INDEX_ITEMS_THRESHOLD ||\n isOpen\n ) {\n if (enabled) {\n const index = buildFlexSearchIndex(valueOptionsContent, contentContext);\n setFlexSearchIndex(index);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [enabled, valueOptionsContent, contentContext]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedBuildSearchIndex = useCallback(\n debounce(() => {\n const index = buildFlexSearchIndex(valueOptionsContent, contentContext);\n setFlexSearchIndex(index);\n }, 300),\n [valueOptionsContent, contentContext]\n );\n\n useEffect(() => {\n // If the number of items is greater than the threshold, build the index when the select expands\n if (\n Object.keys(valueOptionsContent).length >\n DEFER_BUILD_INDEX_ITEMS_THRESHOLD\n ) {\n if (isOpen) {\n if (enabled && !flexSearchIndex) {\n debouncedBuildSearchIndex(); // debounce to avoid blocking the UI\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen, valueOptionsContent]);\n\n return {\n flexSearchIndex,\n };\n}\n","import { clsx } from 'clsx';\nimport { nanoid } from 'nanoid';\nimport {\n ComponentPropsWithoutRef,\n ComponentPropsWithRef,\n ReactNode,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Virtuoso } from 'react-virtuoso';\nimport {\n Content,\n getContent,\n useContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport { SelectInputSearch } from 'src/core/POS/PosSelect/SelectInputSearch';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Select, Stack } from 'src/core/ui';\nimport { mergeProps } from 'src/core/utils';\nimport { useFlexSearchIndex } from 'src/hooks/useFlexSearchIndex';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './PosSelect.css';\n\nconst EMPTY_CONTENT_DESIGNATOR = '____empty_content_____';\n\nexport type PosSelectProps = {\n value?: string;\n defaultValue?: string;\n placeholderText?: string | ContentId;\n displayText?: string | ContentId;\n enableEmptySelection?: boolean;\n hasErrors?: boolean;\n onChange: (value: string, searchText?: string) => void;\n prefixDisplay?: ReactNode;\n postfixDisplay?: ReactNode;\n showClearButton?: boolean;\n useVirtualWindow?: boolean;\n expectedItemSizeForVirtualWindow?: number;\n valueOptionsContent: Record;\n valueOptionsAlwaysShow?: Record;\n valueOptionsIcon?: Record;\n valueOptionsContentOverride?: Record;\n /* These are disabled and with reasoning why */\n valueOptionsDisabled?: Record<\n string,\n ContentId | string | boolean | undefined\n >;\n triggerContentClassName?: string;\n loading?: boolean;\n sortMode?: 'ascending' | 'descending' | 'none';\n sortFn?: (a: string, b: string) => number;\n sortBy?: 'key' | 'value';\n searchable?: boolean;\n /* this needs searchable to be true */\n allowSearchAsInput?: boolean;\n fetchNextPage?: () => void;\n hasNextPage?: boolean;\n isFetchingNextPage?: boolean;\n searchInput?: string;\n showFullWidth?: boolean;\n onSearchInputChange?: (searchText: string) => void;\n displayComponent?: (value: string) => ReactNode;\n rootProps?: Omit<\n ComponentPropsWithRef,\n 'defaultValue' | 'value' | 'children' | 'onValueChange'\n >;\n contentProps?: Omit<\n ComponentPropsWithRef,\n 'defaultValue' | 'children' | 'onChange'\n > & { 'data-testid'?: string };\n} & Omit<\n ComponentPropsWithRef,\n 'value' | 'defaultValue' | 'children' | 'onChange'\n>;\n\nexport const PosSelect = ({\n value,\n defaultValue,\n placeholderText,\n displayText,\n enableEmptySelection,\n prefixDisplay,\n postfixDisplay,\n hasErrors,\n rootProps,\n contentProps,\n triggerContentClassName,\n valueOptionsContent,\n useVirtualWindow,\n expectedItemSizeForVirtualWindow = 40,\n valueOptionsAlwaysShow,\n valueOptionsDisabled,\n valueOptionsIcon,\n valueOptionsContentOverride,\n onChange,\n showClearButton,\n loading,\n sortMode = 'ascending',\n sortFn,\n sortBy = 'value',\n searchable,\n allowSearchAsInput,\n disabled,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage,\n onSearchInputChange,\n showFullWidth,\n displayComponent,\n ...props\n}: PosSelectProps) => {\n const inputSearchRefKey = useRef(nanoid());\n const scrollerRef = useRef(null);\n const [searchText, setSearchText] = useState('');\n const [isOpen, setIsOpen] = useState(rootProps?.defaultOpen ?? false);\n\n const { flexSearchIndex } = useFlexSearchIndex(\n valueOptionsContent,\n searchable,\n isOpen\n );\n\n const isBuildingSearchIndex = searchable && !flexSearchIndex;\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n setIsOpen(open);\n rootProps?.onOpenChange?.(open);\n },\n [rootProps]\n );\n\n placeholderText = placeholderText ?? ContentId.Select;\n const placeholderTextContent = useContent(placeholderText);\n\n const displayTextContent = useContent(\n displayText ?? valueOptionsContent[value ?? defaultValue ?? '']\n );\n\n const searchPlaceholder = useContent(\n allowSearchAsInput ? ContentId.SearchOrEnter : ContentId.Search\n );\n\n const handleScrollerRef = (ref: HTMLElement | Window | null) => {\n scrollerRef.current = ref;\n };\n\n const onSearchTextApplied = useCallback(\n (searchText: string) => {\n const existingValue = Object.keys(valueOptionsContent).find(\n (k) =>\n valueOptionsContent[k]?.toLocaleUpperCase() ===\n searchText.toLocaleUpperCase()\n );\n if (existingValue || allowSearchAsInput) {\n onChange(existingValue ?? searchText);\n setIsOpen(false);\n }\n },\n [allowSearchAsInput, onChange, valueOptionsContent]\n );\n\n const keysOfValueOptionsAlwaysShow = useMemo(() => {\n return valueOptionsAlwaysShow ? Object.keys(valueOptionsAlwaysShow) : [];\n }, [valueOptionsAlwaysShow]);\n\n const keysOfValueOptionsContent = useMemo(() => {\n return Object.keys(valueOptionsContent);\n }, [valueOptionsContent]);\n\n const useVirtuoso = useMemo(() => {\n if (useVirtualWindow === null || useVirtualWindow === undefined) {\n return keysOfValueOptionsContent.length > 50;\n }\n return useVirtualWindow;\n }, [keysOfValueOptionsContent, useVirtualWindow]);\n\n const selectItems = useMemo(() => {\n let keysToRender = keysOfValueOptionsContent;\n\n if (searchable && searchText.trim().length > 0) {\n keysToRender = flexSearchIndex?.search(searchText) as string[];\n }\n\n let selectItemKeys =\n enableEmptySelection && searchText.length === 0\n ? [EMPTY_CONTENT_DESIGNATOR]\n : [];\n\n if (!sortMode || sortMode === 'none') {\n selectItemKeys = selectItemKeys.concat(keysToRender);\n } else {\n selectItemKeys = selectItemKeys.concat(\n (keysToRender ?? []).toSorted((keyA: string, keyB: string) => {\n const textA = sortBy === 'value' ? valueOptionsContent[keyA] : keyA;\n const textB = sortBy === 'value' ? valueOptionsContent[keyB] : keyB;\n\n let sortResult = textA\n .toLocaleUpperCase()\n .localeCompare(textB.toLocaleUpperCase());\n\n if (sortFn != null) {\n sortResult = sortFn(textA, textB);\n } else {\n const numberA = parseFloat(textA);\n const numberB = parseFloat(textB);\n if (!isNaN(numberA) && !isNaN(numberB)) {\n sortResult = numberA - numberB;\n }\n }\n\n return (sortMode === 'ascending' ? 1 : -1) * sortResult;\n })\n );\n }\n\n // Add selected value if exists to not break the Select\n if (value && !selectItemKeys.includes(value)) {\n selectItemKeys.push(value);\n }\n\n // Add keys that must be always shown\n if (valueOptionsAlwaysShow) {\n keysOfValueOptionsAlwaysShow.forEach((key) => {\n if (valueOptionsAlwaysShow[key] && !selectItemKeys.includes(key)) {\n selectItemKeys.push(key);\n }\n });\n }\n\n return selectItemKeys;\n }, [\n keysOfValueOptionsContent,\n keysOfValueOptionsAlwaysShow,\n valueOptionsContent,\n searchable,\n searchText,\n enableEmptySelection,\n value,\n valueOptionsAlwaysShow,\n flexSearchIndex,\n sortMode,\n sortFn,\n sortBy,\n ]);\n\n const renderItem = useCallback(\n (key: string) => {\n if (key === EMPTY_CONTENT_DESIGNATOR) {\n return (\n \n );\n }\n return (\n \n );\n },\n [\n placeholderText,\n valueOptionsContent,\n valueOptionsContentOverride,\n valueOptionsDisabled,\n valueOptionsIcon,\n ]\n );\n\n return (\n onChange(value, searchText)}\n >\n \n \n {prefixDisplay ?? valueOptionsIcon?.[value ?? '']}\n\n \n }\n >\n {(displayComponent && value && displayComponent(value)) ||\n displayTextContent ||\n placeholderTextContent}\n \n \n {showClearButton && value !== defaultValue && (\n {\n e.stopPropagation();\n onChange(defaultValue ?? '', '');\n }}\n />\n )}\n {postfixDisplay}\n \n \n {loading || isBuildingSearchIndex ? (\n \n ) : (\n <>\n {searchable && (\n {\n setSearchText(value);\n if (hasNextPage) {\n onSearchInputChange?.(value);\n }\n }}\n searchInput={searchText}\n disabled={!!disabled}\n onSearchTextApplied={onSearchTextApplied}\n allowSearchAsInput={!!allowSearchAsInput}\n />\n )}\n {useVirtuoso ? (\n renderItem(key)}\n endReached={() => {\n if (scrollerRef.current instanceof HTMLElement) {\n const { scrollHeight, clientHeight } = scrollerRef.current;\n if (scrollHeight > clientHeight) {\n !isFetchingNextPage && hasNextPage && fetchNextPage?.();\n }\n }\n }}\n scrollerRef={handleScrollerRef}\n />\n ) : (\n selectItems.map((key) => renderItem(key))\n )}\n \n )}\n \n \n );\n};\n\nexport const FilteredSelectItem = ({\n contentId,\n prefixIcon,\n disabledReason,\n optionContent,\n ...props\n}: ComponentPropsWithoutRef & {\n disabledReason?: ContentId | string | boolean;\n contentId: string | ContentId;\n searchText?: string;\n prefixIcon?: ReactNode;\n optionContent?: ReactNode;\n}) => {\n const contentContext = useContentContext();\n const targetText = useContent(contentId);\n const disabledReasonText =\n !disabledReason || typeof disabledReason === 'boolean'\n ? undefined\n : getContent(disabledReason, contentContext);\n\n return (\n \n {optionContent ? optionContent : targetText}\n \n );\n};\n","import { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\n\nimport { connector } from './StackedFilter.css';\n\nexport const StackedFilter = ({\n FilterComponents,\n isHorizontalLayout,\n}: {\n FilterComponents: React.ReactElement[];\n isHorizontalLayout?: boolean;\n}) => {\n return (\n \n {FilterComponents.map((FilterComponent, index) => (\n \n {!isHorizontalLayout && index > 0 && (\n 1 ? vars.spacing['lg'] : 0 }}\n />\n )}\n {FilterComponent}\n \n ))}\n \n );\n};\n","import { useCallback, useState } from 'react';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { DateRangeSelector } from 'src/core/POS/DateRangeSelector';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { PRICE_UPDATED_DATE_FILTER_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n getDisabledDatesForTimeFrameFilter,\n StandardDateRangePresetNames,\n} from 'src/utils/dateTimeUtils';\nimport {\n DateTimeRangeWithRelative,\n Feature,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { StackedFilter } from './StackedFilter';\n\nexport enum PriceUpdatedFilterEnum {\n PriceUpdatedDate = 'PriceUpdatedDate',\n PriceNotUpdatedDate = 'PriceNotUpdatedDate',\n}\n\nexport const PriceUpdatedDateStackedFilter = () => {\n const { tempQuery, setTempQuery } = useFilterQueryContext();\n const [mode, setMode] = useState(() => {\n // Set the initial mode based on tempQuery\n return tempQuery.lastPriceUpdateDates\n ? PriceUpdatedFilterEnum.PriceUpdatedDate\n : tempQuery.lastPriceNoUpdateDates\n ? PriceUpdatedFilterEnum.PriceNotUpdatedDate\n : PriceUpdatedFilterEnum.PriceUpdatedDate;\n });\n\n const setDateFilter = useCallback(\n (mode: PriceUpdatedFilterEnum, date: DateTimeRangeWithRelative | null) => {\n const newQuery: ListingQuery = {\n ...tempQuery,\n lastPriceUpdateDates:\n mode === PriceUpdatedFilterEnum.PriceUpdatedDate ? date : null,\n lastPriceNoUpdateDates:\n mode === PriceUpdatedFilterEnum.PriceNotUpdatedDate ? date : null,\n };\n\n setTempQuery(newQuery);\n setMode(mode);\n },\n [tempQuery, setTempQuery]\n );\n\n return (\n {\n if (mode === PriceUpdatedFilterEnum.PriceUpdatedDate) {\n setDateFilter(mode, tempQuery['lastPriceUpdateDates']);\n } else if (mode === PriceUpdatedFilterEnum.PriceNotUpdatedDate) {\n setDateFilter(mode, tempQuery['lastPriceNoUpdateDates']);\n }\n }}\n />,\n {\n setDateFilter(mode, value);\n }}\n disabledDay={(d) =>\n getDisabledDatesForTimeFrameFilter(\n d,\n tempQuery.eventTimeFrameFilter\n )\n }\n isEndDateFixed\n displayTextStyle={{ maxWidth: '260px' }}\n />,\n ]}\n />\n );\n};\n","import { useCallback, useState } from 'react';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { DateRangeSelector } from 'src/core/POS/DateRangeSelector';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { SALES_DATE_FILTER_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n getDisabledDatesForTimeFrameFilter,\n StandardDateRangePresetNames,\n} from 'src/utils/dateTimeUtils';\nimport {\n DateTimeRangeWithRelative,\n Feature,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { StackedFilter } from './StackedFilter';\n\nexport enum SaleDateFilterEnum {\n HasSaleDate = 'HasSaleDate',\n NoSaleDate = 'NoSaleDate',\n}\n\nexport const SaleDateStackedFilter = () => {\n const { tempQuery, setTempQuery } = useFilterQueryContext();\n\n const [mode, setMode] = useState(() => {\n // Set the initial mode based on tempQuery\n return tempQuery.lastSaleDates\n ? SaleDateFilterEnum.HasSaleDate\n : tempQuery.noSaleDates\n ? SaleDateFilterEnum.NoSaleDate\n : SaleDateFilterEnum.HasSaleDate;\n });\n\n const setDateFilter = useCallback(\n (mode: SaleDateFilterEnum, date: DateTimeRangeWithRelative | null) => {\n const newQuery: ListingQuery = {\n ...tempQuery,\n lastSaleDates: mode === SaleDateFilterEnum.HasSaleDate ? date : null,\n noSaleDates: mode === SaleDateFilterEnum.NoSaleDate ? date : null,\n };\n\n setTempQuery(newQuery);\n setMode(mode);\n },\n [tempQuery, setTempQuery]\n );\n\n return (\n {\n if (mode === SaleDateFilterEnum.HasSaleDate) {\n setDateFilter(mode, tempQuery['lastSaleDates']);\n } else if (mode === SaleDateFilterEnum.NoSaleDate) {\n setDateFilter(mode, tempQuery['noSaleDates']);\n }\n }}\n />,\n {\n setDateFilter(mode, value);\n }}\n disabledDay={(d) =>\n getDisabledDatesForTimeFrameFilter(\n d,\n tempQuery.eventTimeFrameFilter\n )\n }\n isEndDateFixed\n displayTextStyle={{ maxWidth: '260px' }}\n />,\n ]}\n />\n );\n};\n","export const NOT_FOUND_INDEX = -1;\n","import { isEqual } from 'lodash-es';\nimport {\n MutableRefObject,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport { NO_GROUP_ID } from 'src/contexts/MultiSelectionContext/MultiSelectionContext';\nimport {\n GroupStateInput,\n InputId,\n MultiSelectionContextType,\n SelectionMode,\n TableRow,\n} from 'src/contexts/MultiSelectionContext/MultiSelectionContext.types';\nimport { useKeyPress } from 'src/hooks/useKeyPress';\nimport { NOT_FOUND_INDEX } from 'src/utils/constants/global';\n\nexport interface IShiftKeySelection {\n setShiftKeyRowSelectionState: (\n rowId: InputId, // Row ID clicked\n rows: TableRow[], // Table rows\n groupId: InputId // Group ID the row belongs to\n ) => void;\n setShiftKeyGroupSelectionState: (groupId: InputId) => void;\n clearShiftKeySelection: () => void;\n\n // All groups IDs of the tables\n allGroupsIds: string[];\n\n // Checks if NoGroupId is present in all groups arrays\n isNoGroupIdSet: () => boolean;\n}\n\ninterface ShiftKeySelectionProps {\n allGroupsIds: string[];\n shiftKeySelectionRef: MutableRefObject;\n selectionMode?: SelectionMode;\n getGroupToggleState: MultiSelectionContextType['getGroupToggleState'];\n setGroupItems: MultiSelectionContextType['setGroupItems'];\n toggleGroup: MultiSelectionContextType['toggleGroup'];\n}\n\nexport interface ShiftKeyImperativeRef {\n clearShiftKeySelection: () => void;\n setShiftKeyGroupSelectionState: IShiftKeySelection['setShiftKeyGroupSelectionState'];\n}\n\nexport const NO_ROW_SELECTED_INDEX = -1;\n\ntype RowIndexSelection = {\n groupIndex: number;\n rowIndex: number;\n tableRows: TableRow[];\n};\n\ntype ShiftKeySelection = {\n lastRow: RowIndexSelection; // Last row the use clicked without shift key\n shiftRow: RowIndexSelection; // Row selected with shift key\n};\n\nexport const defaultShiftSelection: ShiftKeySelection = {\n lastRow: {\n rowIndex: NO_ROW_SELECTED_INDEX,\n groupIndex: NO_ROW_SELECTED_INDEX,\n tableRows: [],\n },\n shiftRow: {\n rowIndex: NO_ROW_SELECTED_INDEX,\n groupIndex: NO_ROW_SELECTED_INDEX,\n tableRows: [],\n },\n};\n\ntype PerfRefProps = Pick<\n ShiftKeySelectionProps,\n | 'getGroupToggleState'\n | 'setGroupItems'\n | 'selectionMode'\n | 'allGroupsIds'\n | 'toggleGroup'\n> & {\n isShiftKeyPressed: boolean;\n shiftKeySelection: ShiftKeySelection;\n clearShiftKeySelection: () => void;\n};\n\nconst isCleanState = (shiftKeySelection: ShiftKeySelection) => {\n return isEqual(shiftKeySelection, defaultShiftSelection);\n};\n\n/**\n * ShiftKey selection rows\n *\n * How to use it:\n * * When clicking a checkbox in a row, call \"setShiftKeyRowSelectionState\" with\n * the rowID, groupId and all rows of the table.\n * * When clicking a checkbox that represents an entire group, call\n * \"setShiftKeyGroupSelectionState\" with the groupId.\n *\n * How it works:\n * For selecting rows from one table to another and all in between, we need to\n * know the overall structure of how this is rendered. Usually, a table belongs\n * to a group, so the UI is rendering a group with a table inside.\n * The internal state is conformed by 2 objects with the same structure\n * (selected rowId, groupId the row belongs to, table Rows) and a list of all\n * groups Ids with the same order they are rendered. So, to go\n * from table 1 row 2 to table 4 row 4, we need to select from table1.row2\n * to the end of that table, then groups 2 & 3 and then from table4.row0 to\n * table4.row4.\n * If the user selects (with or without pressing shift Key) an entire group,\n * this is stored with `rowIndex` with `NO_ROW_SELECTED_INDEX` value\n * (this means, select entire group).\n */\nexport const useShiftKeySelection = ({\n allGroupsIds,\n shiftKeySelectionRef,\n selectionMode,\n setGroupItems,\n getGroupToggleState,\n toggleGroup,\n}: ShiftKeySelectionProps) => {\n const isShiftKeyPressed = useKeyPress('Shift');\n const [shiftKeySelection, setShiftKeySelection] = useState(\n defaultShiftSelection\n );\n\n const clearShiftKeySelection = useCallback(() => {\n setShiftKeySelection({ ...defaultShiftSelection });\n }, []);\n\n const perPropsRef: PerfRefProps = {\n shiftKeySelection,\n getGroupToggleState,\n setGroupItems,\n isShiftKeyPressed,\n selectionMode,\n allGroupsIds,\n toggleGroup,\n clearShiftKeySelection,\n };\n const refPerfProps = useRef(perPropsRef);\n refPerfProps.current = perPropsRef;\n\n const setShiftKeyRowSelectionState = useCallback(\n (rowId: InputId, tableRows: TableRow[], groupId: InputId) => {\n const { allGroupsIds, isShiftKeyPressed, shiftKeySelection } =\n refPerfProps.current;\n const rowIndex = tableRows.findIndex((row) => row.id === String(rowId));\n\n if (rowIndex === NOT_FOUND_INDEX) {\n return;\n }\n\n let groupIndex = allGroupsIds.findIndex((gId) => gId === groupId);\n\n groupIndex =\n groupIndex === NOT_FOUND_INDEX ? NO_ROW_SELECTED_INDEX : groupIndex;\n\n if (\n !isShiftKeyPressed ||\n // if the user is pressing shift, and it hasn't selected any row yet,\n // then assume it's the first row selected\n (isShiftKeyPressed && isCleanState(shiftKeySelection))\n ) {\n setShiftKeySelection({\n ...shiftKeySelection,\n lastRow: {\n rowIndex,\n groupIndex,\n tableRows,\n },\n });\n } else {\n setShiftKeySelection({\n ...shiftKeySelection,\n shiftRow: {\n rowIndex,\n groupIndex,\n tableRows,\n },\n });\n }\n },\n []\n );\n\n const setShiftKeyGroupSelectionState = useCallback((groupId: InputId) => {\n const {\n allGroupsIds,\n isShiftKeyPressed,\n shiftKeySelection,\n selectionMode,\n clearShiftKeySelection,\n } = refPerfProps.current;\n const groupIndex = allGroupsIds.findIndex((gId) => gId === groupId);\n\n // When clicking a toggle all checkbox inside an accordion,\n // (single table) shift selection should be ignored and just do\n // the toggle all action.\n if (selectionMode?.mode === 'singleGroup') {\n clearShiftKeySelection();\n return;\n }\n\n if (groupIndex === NOT_FOUND_INDEX) {\n return;\n }\n\n if (\n !isShiftKeyPressed ||\n // if the user is pressing shift, and it hasn't selected any row yet,\n // then assume it's the first row selected\n (isShiftKeyPressed && isCleanState(shiftKeySelection))\n ) {\n setShiftKeySelection({\n ...shiftKeySelection,\n lastRow: {\n rowIndex: NO_ROW_SELECTED_INDEX,\n groupIndex,\n tableRows: [],\n },\n });\n } else {\n setShiftKeySelection({\n ...shiftKeySelection,\n shiftRow: {\n rowIndex: NO_ROW_SELECTED_INDEX,\n groupIndex,\n tableRows: [],\n },\n });\n }\n }, []);\n\n // Make row range selection if conditions are met\n useEffect(() => {\n const { lastRow, shiftRow } = shiftKeySelection;\n const {\n getGroupToggleState,\n setGroupItems,\n isShiftKeyPressed,\n selectionMode,\n allGroupsIds,\n toggleGroup,\n clearShiftKeySelection,\n } = refPerfProps.current;\n if (\n lastRow.groupIndex === NO_ROW_SELECTED_INDEX ||\n shiftRow.groupIndex === NO_ROW_SELECTED_INDEX ||\n !selectionMode?.mode ||\n !isShiftKeyPressed\n ) {\n return;\n }\n\n // Select start with the lowest group index\n const minIndex = Math.min(lastRow.groupIndex, shiftRow.groupIndex);\n const maxIndex = Math.max(lastRow.groupIndex, shiftRow.groupIndex);\n\n // How to the use did the selection on the table\n const isTopToBottomUserSelection =\n lastRow.groupIndex <= shiftRow.groupIndex;\n const isSameGroupSelection = lastRow.groupIndex === shiftRow.groupIndex;\n\n for (let groupIndex = minIndex; groupIndex <= maxIndex; groupIndex++) {\n const currentRowIndexSelection: RowIndexSelection = {\n groupIndex: groupIndex,\n rowIndex: NO_ROW_SELECTED_INDEX,\n tableRows: [],\n };\n\n if (lastRow.groupIndex === groupIndex) {\n currentRowIndexSelection.rowIndex = lastRow.rowIndex;\n currentRowIndexSelection.tableRows = lastRow.tableRows;\n } else if (shiftRow.groupIndex === groupIndex) {\n currentRowIndexSelection.rowIndex = shiftRow.rowIndex;\n currentRowIndexSelection.tableRows = shiftRow.tableRows;\n }\n\n const { tableRows } = currentRowIndexSelection;\n const activeGroupId = allGroupsIds[groupIndex];\n const shouldSelectAllGroup =\n currentRowIndexSelection.rowIndex === NO_ROW_SELECTED_INDEX;\n const groupState = getGroupToggleState(activeGroupId);\n\n // Select full group\n if (shouldSelectAllGroup) {\n if (!groupState.isGroupSelected) {\n toggleGroup(activeGroupId);\n }\n continue;\n }\n\n // Select remaining rows on the group\n let fromIndex = NO_ROW_SELECTED_INDEX;\n let toIndex = NO_ROW_SELECTED_INDEX;\n\n // Always select table rows from top to bottom\n if (isSameGroupSelection) {\n // Normal selection from-to row indexes\n fromIndex = Math.min(lastRow.rowIndex, shiftRow.rowIndex);\n toIndex = Math.max(lastRow.rowIndex, shiftRow.rowIndex);\n } else if (isTopToBottomUserSelection) {\n // TopToBottom user selection\n if (groupIndex === lastRow.groupIndex) {\n // From table\n fromIndex = currentRowIndexSelection.rowIndex;\n toIndex = tableRows.length - 1;\n } else if (groupIndex === shiftRow.groupIndex) {\n // To table\n fromIndex = 0;\n toIndex = currentRowIndexSelection.rowIndex;\n }\n } else {\n // BottomToTop Selection\n if (groupIndex === lastRow.groupIndex) {\n fromIndex = 0;\n toIndex = currentRowIndexSelection.rowIndex;\n } else if (groupIndex === shiftRow.groupIndex) {\n fromIndex = currentRowIndexSelection.rowIndex;\n toIndex = tableRows.length - 1;\n }\n }\n\n if (\n fromIndex === NO_ROW_SELECTED_INDEX ||\n toIndex === NO_ROW_SELECTED_INDEX\n ) {\n // Reset everything in case of an error\n clearShiftKeySelection();\n return;\n }\n\n const groupStateInput = tableRows\n .slice(fromIndex, toIndex + 1) // +1 because slice end index is not included\n .map((row) => row.id)\n .concat(groupState.items) // Current selected items\n .reduce((result, rowId) => {\n result[String(rowId)] = true;\n return result;\n }, {});\n setGroupItems(activeGroupId, groupStateInput);\n }\n\n // Reset and set last shift selection to lastRow\n // to continue selecting with shiftKey\n setShiftKeySelection({\n ...shiftKeySelection,\n lastRow: {\n ...shiftRow,\n },\n shiftRow: {\n ...defaultShiftSelection.shiftRow,\n },\n });\n }, [shiftKeySelection]);\n\n useImperativeHandle(\n shiftKeySelectionRef,\n () => {\n return {\n clearShiftKeySelection,\n setShiftKeyGroupSelectionState,\n };\n },\n [clearShiftKeySelection, setShiftKeyGroupSelectionState]\n );\n\n const isNoGroupIdSet = useCallback(() => {\n const { allGroupsIds } = refPerfProps.current;\n return allGroupsIds.includes(NO_GROUP_ID);\n }, []);\n\n return {\n clearShiftKeySelection,\n setShiftKeyRowSelectionState,\n setShiftKeyGroupSelectionState,\n isNoGroupIdSet,\n };\n};\n","import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n ShiftKeyImperativeRef,\n useShiftKeySelection,\n} from 'src/contexts/MultiSelectionContext/useShiftKeySelection';\n\nimport {\n type SelectableGroupMetadata,\n useCatalogMultiSelectionContext,\n} from '../CatalogMultiSelectionContext';\nimport {\n GroupStateInput,\n InputId,\n ItemSelection,\n ItemSelectionValue,\n MultiSelectionContextProviderType,\n MultiSelectionContextType,\n SelectionItems,\n SelectionMode,\n} from './MultiSelectionContext.types';\n\n/**\n * Scope:\n * - AllGroups (all events or all months) - can select across groups\n * - SingleGroup - can select multiple items (listings, sales or purchases) for a single group\n * - SingleItem - can select a single item\n * - undefined (value, not enum) - inactive (no selection)\n */\nexport const enum MultiSelectScope {\n AllGroups = 'allGroups',\n SingleGroup = 'singleGroup',\n SingleItem = 'singleItem',\n}\n\nexport const NO_GROUP_ID = 'NoGroupId';\n\nconst defaultValues: MultiSelectionContextType = {\n allGroupsIds: [],\n selectionMode: undefined,\n setSelectionMode: () => void 0,\n isAllSelected: false,\n\n // ShiftKey Selection\n clearShiftKeySelection: () => undefined,\n setShiftKeyRowSelectionState: () => void 0,\n setShiftKeyGroupSelectionState: (groupId: InputId) => void 0,\n isNoGroupIdSet: () => false,\n\n setAllGroupsIds: () => void 0,\n toggleGroup: () => void 0,\n getSelection: () => ({\n groupIds: [],\n items: {\n itemIds: [],\n groupIds: [],\n },\n isSingleGroupMultiSelect: false,\n }),\n getGroupToggleState: () => ({\n isGroupSelected: false,\n items: [],\n }),\n getItemToggleState: () => false,\n getGroupSelectableGroupMetadata: (groupId: string) => undefined,\n setGroupItems: () => void 0,\n setGroupStates: () => void 0,\n toggleSelectAll: () => void 0,\n totalItemsSelected: 0,\n itemSelection: {},\n\n // Selected count label\n setSelectedCountLabel: (label: string | undefined) => undefined,\n selectedCountLabel: undefined,\n usingCustomSelectedCountLabel: false,\n setUsingCustomSelectedCountLabel: (usingCustomSelectedCountLabel: boolean) =>\n undefined,\n\n updateGroupFilteredIds: () => void 0,\n isHiddenCheckboxesFeatureEnabled: false,\n shouldHideCheckboxes: false,\n};\n\nconst MultiSelectionContext =\n createContext(defaultValues);\n\nconst defaultMultiSelection: ItemSelectionValue = {\n items: [],\n isGroupSelected: false,\n};\n\nexport const useMultiSelectionContext = () => useContext(MultiSelectionContext);\n\n/**\n * Context that handles multiselects for Item table/inventory view\n */\nexport const MultiSelectionContextProvider = ({\n children,\n initialSelectionMode,\n forceSelectionMode,\n isFlattenedView,\n isHiddenCheckboxesFeatureEnabled = false,\n}: MultiSelectionContextProviderType) => {\n // This state is used to handle visible checkboxes if there's\n // at least one selected. Otherwise, they are not visible unless on hover.\n const [shouldHideCheckboxes, setShouldHideCheckboxes] = useState(\n isHiddenCheckboxesFeatureEnabled\n );\n\n const [selectedCountLabel, setSelectedCountLabel] = useState<\n string | undefined\n >(undefined);\n const [usingCustomSelectedCountLabel, setUsingCustomSelectedCountLabel] =\n useState(false);\n\n const [allGroupsIds, setAllGroupsIds] = useState([]);\n const shiftKeySelectionRef = useRef(null);\n const [itemSelection, setMultiSelection] = useState({});\n\n const [selectionMode, setSelectionMode] = useState(\n forceSelectionMode ?? initialSelectionMode\n );\n const { flattenedIds, groupsArray, updateGroupFilteredIds } =\n useCatalogMultiSelectionContext();\n\n const getGroupSelectableGroupMetadata = useCallback(\n (groupId: string): SelectableGroupMetadata | undefined => {\n return groupsArray.find((group) => group.id === groupId);\n },\n [groupsArray]\n );\n\n const isMultiSelectActive =\n selectionMode?.mode === MultiSelectScope.AllGroups;\n\n const consolidatedSelectionMode = isMultiSelectActive\n ? { mode: MultiSelectScope.AllGroups }\n : selectionMode;\n\n const clearShiftKeySelection = useCallback(() => {\n shiftKeySelectionRef.current?.clearShiftKeySelection();\n }, []);\n\n const [totalItemsSelectedCount, totalItemsCount] = useMemo(() => {\n const itemCountsResult = groupsArray.reduce(\n ([selectionCount, totalCount], group) => {\n const groupId = group.id;\n const groupItemCount = group.itemCount;\n const selection = itemSelection[groupId];\n let selectedCount = selectionCount;\n if (isFlattenedView) {\n if (Array.isArray(flattenedIds) && flattenedIds.length > 0) {\n selectedCount =\n itemSelection[NO_GROUP_ID]?.items?.filter(\n (item) =>\n flattenedIds.includes(parseInt(item)) ||\n flattenedIds.includes(item)\n ).length ?? 0;\n } else {\n selectedCount = itemSelection[NO_GROUP_ID]?.items?.length;\n }\n } else {\n if (selection) {\n selectedCount = selectionCount += selection.isGroupSelected\n ? groupItemCount\n : selection.items.length;\n }\n }\n return [selectedCount, (totalCount += groupItemCount)];\n },\n [0, 0]\n );\n\n if (\n isFlattenedView &&\n Array.isArray(flattenedIds) &&\n flattenedIds.length > 0\n ) {\n // Assuming we DO NOT return any result when it's > max (flattenedIds.length > MAX_NUM_OF_ITEMS_IN_TABLES)\n return [itemCountsResult[0], flattenedIds.length];\n }\n\n return itemCountsResult;\n }, [flattenedIds, groupsArray, isFlattenedView, itemSelection]);\n\n const isAllSelected =\n totalItemsSelectedCount > 0 && totalItemsCount === totalItemsSelectedCount;\n\n const toggleGroupInternal = useCallback(\n (groupId: InputId) => {\n const strGroupId = String(groupId);\n const group = getGroupSelectableGroupMetadata(strGroupId);\n\n setMultiSelection((prev) => {\n const prevItem = prev[strGroupId] ?? defaultMultiSelection;\n\n const newIsGroupSelected = !prevItem.isGroupSelected;\n return {\n ...prev,\n [strGroupId]: {\n items: newIsGroupSelected\n ? (group?.filteredIds?.map((id) => String(id)) ?? [])\n : [],\n isGroupSelected: !prevItem.isGroupSelected,\n },\n };\n });\n },\n [getGroupSelectableGroupMetadata]\n );\n\n const toggleGroup = (groupId: InputId) => {\n shiftKeySelectionRef.current?.setShiftKeyGroupSelectionState(groupId);\n toggleGroupInternal(groupId);\n };\n\n const setGroupItems = useCallback(\n (groupId: InputId, items: GroupStateInput) => {\n const strGroupId = String(groupId);\n const toggledItems = Object.entries(items).reduce(\n (acc, [itemId, value]) => {\n if (value) acc.push(String(String(itemId)));\n return acc;\n },\n []\n );\n const toggledWOGroupsCount =\n Array.isArray(flattenedIds) && flattenedIds.length > 0\n ? toggledItems.filter(\n (item) =>\n flattenedIds.includes(parseInt(item)) ||\n flattenedIds.includes(item)\n ).length\n : toggledItems.length;\n let groupData = groupsArray.find((g) => g.id === groupId);\n if (!groupData) {\n groupData = {\n id: NO_GROUP_ID,\n itemCount:\n flattenedIds?.length ??\n groupsArray.reduce(\n (total, current) => total + current.itemCount,\n 0\n ),\n } as SelectableGroupMetadata;\n }\n const { comboId } = groupData;\n let totalItemCount: number;\n if (comboId) {\n const relatedGroups = groupsArray.filter(\n (group) => group.comboId === comboId\n );\n totalItemCount = relatedGroups.reduce(\n (total, current) => total + current.itemCount,\n 0\n );\n } else {\n totalItemCount = groupData.itemCount;\n }\n\n setMultiSelection((prev) => ({\n ...prev,\n [strGroupId]: {\n items: toggledItems,\n isGroupSelected: toggledWOGroupsCount === totalItemCount,\n },\n }));\n },\n [flattenedIds, groupsArray]\n );\n\n const setGroupStates = useCallback((groups: GroupStateInput) => {\n const state = Object.entries(groups).reduce(\n (acc, [key, value]) => {\n acc[key] = { isGroupSelected: value, items: [] };\n return acc;\n },\n {}\n );\n setMultiSelection(state);\n }, []);\n\n const toggleSelectAll = useCallback(() => {\n clearShiftKeySelection();\n const newSelections = isAllSelected\n ? {}\n : isFlattenedView\n ? {\n [NO_GROUP_ID]: {\n items: flattenedIds?.map((id) => String(id)) ?? [],\n isGroupSelected: true,\n },\n }\n : groupsArray.reduce((acc, group) => {\n acc[group.id] = {\n items: group.filteredIds?.map((id) => String(id)) ?? [],\n isGroupSelected: true,\n };\n return acc;\n }, {});\n\n setMultiSelection(newSelections);\n }, [\n clearShiftKeySelection,\n flattenedIds,\n groupsArray,\n isAllSelected,\n isFlattenedView,\n ]);\n\n const getGroupToggleState = useCallback(\n (groupId: InputId): ItemSelectionValue =>\n itemSelection[String(groupId)] || {\n isGroupSelected: false,\n items: [],\n },\n [itemSelection]\n );\n\n const getItemToggleState = useCallback(\n (itemId: InputId, groupId: InputId) => {\n const strGroupId = String(groupId);\n return (\n (!!itemSelection[strGroupId]?.isGroupSelected &&\n !itemSelection[strGroupId]?.items.length) ||\n !!itemSelection[strGroupId]?.items.includes(String(itemId))\n );\n },\n [itemSelection]\n );\n\n const getSelection = useCallback(\n (groupId?: InputId) => {\n const strGroupId = String(groupId);\n // Group wide\n const groupIds: string[] = [];\n // Partial selections\n const items: SelectionItems = {\n itemIds: [],\n groupIds: [],\n };\n if (!groupId) {\n // Calculate all\n Object.entries(itemSelection).forEach(([strGroupId, item]) => {\n if (item.isGroupSelected && !item.items.length)\n return groupIds.push(strGroupId);\n if (item.items.length) {\n items.groupIds.push(strGroupId);\n items.itemIds.push(...item.items);\n }\n });\n return {\n isSingleGroupMultiSelect: false,\n groupIds,\n items,\n };\n }\n\n // Calculate Group-wide\n const selection = itemSelection[strGroupId];\n if (!selection)\n return {\n isSingleGroupMultiSelect:\n selectionMode?.groupId === groupId &&\n selectionMode?.mode === MultiSelectScope.SingleGroup,\n groupIds,\n items,\n };\n\n if (selection.isGroupSelected && !selection.items.length) {\n groupIds.push(strGroupId);\n } else if (selection.items.length) {\n items.groupIds.push(strGroupId);\n items.itemIds.push(...selection.items);\n }\n\n return {\n isSingleGroupMultiSelect:\n selectionMode?.mode === MultiSelectScope.SingleGroup,\n groupIds,\n items,\n };\n },\n [itemSelection, selectionMode]\n );\n\n const onSetSelectionMode = useCallback(\n (mode?: SelectionMode) => {\n // Changing the mode should clear all selections\n setMultiSelection({});\n setSelectionMode(forceSelectionMode ?? mode);\n clearShiftKeySelection();\n },\n [clearShiftKeySelection, forceSelectionMode]\n );\n\n /* ShiftKey Selection */\n const shiftKeySelection = useShiftKeySelection({\n shiftKeySelectionRef,\n selectionMode,\n getGroupToggleState,\n setGroupItems,\n toggleGroup: toggleGroupInternal,\n allGroupsIds,\n });\n\n useEffect(() => {\n if (!isHiddenCheckboxesFeatureEnabled) {\n return;\n }\n\n // using hover\n setShouldHideCheckboxes(totalItemsSelectedCount <= 0);\n }, [isHiddenCheckboxesFeatureEnabled, totalItemsSelectedCount]);\n\n return (\n \n {children}\n \n );\n};\n","export const packNumericIds = (ids: number[]) => ids.join(',');\n\nexport const unpackNumericIds = (ids: string) => ids.split(',').map(Number);\n","export const PURCHASE_MONTHLY_CONTAINER_QUERY_KEY =\n 'PurchaseClient.getMonthsContainerPurchaseOrders';\nexport const PURCHASE_SINGLE_MONTH_QUERY_KEY =\n 'PurchaseClient.getPurchaseOrders';\n\nexport const PURCHASE_SINGLE_TIME_PERIOD_QUERY_KEY =\n 'PurchaseClient.getPurchaseOrders';\n\nexport const PURCHASE_TIME_PERIOD_CONTAINER_QUERY_KEY =\n 'PurchaseClient.getTimePeriodsContainerPurchaseOrders';\n","import { useQuery } from '@tanstack/react-query';\nimport { useCallback, useMemo } from 'react';\nimport {\n DATA_REFRESH_RATE_IN_MILLIS_LONG,\n MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS,\n} from 'src/utils/constants/constants';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n PurchaseClient,\n PurchaseOrder,\n PurchaseOrderQuery,\n PurchaseViewMode,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useCatalogDataContext } from '../CatalogDataContext';\nimport { useErrorBoundaryContext } from '../ErrorBoundaryContext';\nimport { useFilterQueryContext } from '../FilterQueryContext';\nimport { PURCHASE_SINGLE_TIME_PERIOD_QUERY_KEY } from './PurchaseDataContext.constants';\n\nexport const useGetAllPurchasesQuery = (\n useReadonlyDB?: boolean,\n viewModeOverride?: PurchaseViewMode,\n ignoreMaxCount?: boolean,\n doNotQueryForPurchases?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { filterQuery } = useFilterQueryContext();\n const { trackError } = useErrorBoundaryContext();\n const { allEventIds, totalPurchaseCount } = useCatalogDataContext();\n\n const moddedFilterQuery = useMemo(\n () => ({\n ...filterQuery,\n // This is not used by server\n searchText: null,\n sortBy: null,\n isSortDescending: null,\n viewMode: null,\n }),\n [filterQuery]\n );\n\n const filterPurchaseOrders = useCallback(\n (purchaseOrders: PurchaseOrder[] | null | undefined) => {\n if (purchaseOrders && filterQuery.purchaseOrderState) {\n return purchaseOrders.filter(\n (po) => po.poState === filterQuery.purchaseOrderState\n );\n }\n\n return purchaseOrders;\n },\n [filterQuery.purchaseOrderState]\n );\n\n const shouldQuery =\n !doNotQueryForPurchases &&\n !(\n viewModeOverride !== PurchaseViewMode.FlattenedView ||\n (viewModeOverride === PurchaseViewMode.FlattenedView &&\n !ignoreMaxCount &&\n (!totalPurchaseCount ||\n totalPurchaseCount > MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS)) ||\n activeAccountWebClientConfig.activeAccountId == null\n );\n\n const allPurchasesQuery = useQuery({\n queryKey: [\n PURCHASE_SINGLE_TIME_PERIOD_QUERY_KEY,\n moddedFilterQuery,\n allEventIds,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n // XXX Workaround for the backend\n // because backend treats empty arrays as \"no filter\" (get all) for backwards compatibility\n // so we require either eventIds, entityIds, or marketplaceEntityIds\n // as a minimum\n if (\n !allEventIds?.length &&\n !moddedFilterQuery.entityIds?.length &&\n !moddedFilterQuery.marketplaceEntityIds\n ) {\n return [];\n }\n\n const filterQueryWithEventIds = {\n ...moddedFilterQuery,\n eventOrMappingIds: (allEventIds ?? []).map((ev) => ev.viagVirtualId),\n performerIds: (allEventIds ?? [])\n .filter((ev) => ev.performerId != null)\n .map((ev) => ev.performerId!),\n venueIds: (allEventIds ?? []).map((ev) => ev.venueId),\n };\n\n return tryInvokeApi(\n async () => {\n const client = new PurchaseClient(activeAccountWebClientConfig);\n const data = await client.getPurchaseOrders(\n filterQueryWithEventIds,\n useReadonlyDB\n );\n return data;\n },\n (error) => {\n trackError(\n PURCHASE_SINGLE_TIME_PERIOD_QUERY_KEY,\n error,\n filterQueryWithEventIds\n );\n }\n );\n },\n enabled: shouldQuery,\n staleTime: Infinity, // Since we're always refetching on an interval, we don't want query to calculate whether the data is stale\n refetchOnWindowFocus: false,\n networkMode: 'offlineFirst',\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_LONG,\n });\n\n return {\n allPurchasesQuery,\n allPurchasesFiltered: filterPurchaseOrders(allPurchasesQuery.data),\n };\n};\n","// useGetPurchasesQuery.js\nimport { useQuery } from '@tanstack/react-query';\nimport { differenceInCalendarDays } from 'date-fns';\nimport { useMemo } from 'react';\nimport { DATA_REFRESH_RATE_IN_MILLIS_LONG } from 'src/utils/constants/constants';\nimport { getErrorInfoFromStatusCode } from 'src/utils/errorUtils';\nimport {\n MonthContainingPurchaseOrdersResult,\n PurchaseClient,\n PurchaseOrderQuery,\n PurchaseViewMode,\n TimePeriodContainingPurchaseOrderResult,\n TimePeriodType,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useCatalogDataContext } from '../CatalogDataContext';\nimport { ErrorTypes, useErrorBoundaryContext } from '../ErrorBoundaryContext';\nimport { useFilterQueryContext } from '../FilterQueryContext';\nimport { PURCHASE_TIME_PERIOD_CONTAINER_QUERY_KEY } from './PurchaseDataContext.constants';\n\nexport const useGetTimePeriodPurchasesQuery = (\n selectedIds: string[],\n setSelectedIds: (value: React.SetStateAction) => void,\n setErrorInfo: (\n value: React.SetStateAction<\n | {\n errorHeader: React.ReactNode;\n errorMessage: React.ReactNode;\n }\n | undefined\n >\n ) => void,\n timePeriodType: TimePeriodType,\n disabled?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { filterQuery, isQueryInitialized } =\n useFilterQueryContext();\n const { trackError } = useErrorBoundaryContext();\n const { allEventIds } = useCatalogDataContext();\n\n const queryKey = useMemo(\n () => [\n PURCHASE_TIME_PERIOD_CONTAINER_QUERY_KEY,\n activeAccountWebClientConfig?.activeAccountId,\n filterQuery,\n allEventIds,\n timePeriodType,\n ],\n [\n activeAccountWebClientConfig?.activeAccountId,\n allEventIds,\n filterQuery,\n timePeriodType,\n ]\n );\n\n const shouldQuery = Boolean(\n filterQuery &&\n activeAccountWebClientConfig?.activeAccountId &&\n isQueryInitialized &&\n allEventIds != null &&\n filterQuery.viewMode === PurchaseViewMode.TileView &&\n !disabled\n );\n\n function getDateValue(\n item:\n | TimePeriodContainingPurchaseOrderResult\n | MonthContainingPurchaseOrdersResult\n ): string {\n if ('firstOfTimePeriod' in item) {\n return item.firstOfTimePeriod;\n } else if ('firstOfMonth' in item) {\n return item.firstOfMonth;\n } else {\n throw new Error('Unexpected item type');\n }\n }\n\n const purchasesQuery = useQuery({\n queryKey,\n queryFn: async () => {\n setErrorInfo(undefined);\n\n if (!shouldQuery) {\n return null;\n }\n\n const client = new PurchaseClient(activeAccountWebClientConfig);\n\n const filterQueryWithEventIds = {\n ...filterQuery,\n eventOrMappingIds: (allEventIds ?? []).map((ev) => ev.viagVirtualId),\n performerIds: (allEventIds ?? [])\n .filter((ev) => ev.performerId != null)\n .map((ev) => ev.performerId!),\n venueIds: (allEventIds ?? []).map((ev) => ev.venueId),\n };\n\n // XXX Workaround for the backend\n // because backend treats empty arrays as \"no filter\" for backwards compatibility\n if (allEventIds?.length === 0) {\n return [];\n }\n\n const data = await client.getTimePeriodContainerPurchaseOrders(\n filterQueryWithEventIds,\n timePeriodType\n );\n\n const sortedData = data.toSorted((a, b) => {\n const dateA = new Date(getDateValue(a));\n const dateB = new Date(getDateValue(b));\n return filterQuery.isSortDescending\n ? differenceInCalendarDays(dateB, dateA)\n : differenceInCalendarDays(dateA, dateB);\n });\n\n let newSelectedIds = selectedIds;\n // Always expanding the first item if none selected and we just got data\n if (!selectedIds.length && sortedData.length) {\n const firstItem = sortedData[0];\n const dateValue = getDateValue(firstItem);\n newSelectedIds = [dateValue];\n setSelectedIds(newSelectedIds);\n }\n\n const mappedData = sortedData.map((item) => {\n const dateValue = getDateValue(item);\n return {\n ...item,\n firstOfTimePeriod: dateValue, // Use 'firstOfTimePeriod' as a consistent key\n } as TimePeriodContainingPurchaseOrderResult;\n });\n\n return mappedData;\n },\n\n enabled: shouldQuery,\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n networkMode: 'offlineFirst',\n meta: {\n onError: (error: ErrorTypes) => {\n const { headerDisplay, messageDisplay } = getErrorInfoFromStatusCode(\n error?.status,\n error?.message\n );\n setErrorInfo({\n errorHeader: headerDisplay,\n errorMessage: messageDisplay,\n });\n trackError(\n PURCHASE_TIME_PERIOD_CONTAINER_QUERY_KEY,\n error,\n filterQuery\n );\n },\n },\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_LONG,\n });\n\n return purchasesQuery;\n};\n","import {\n QueryObserverResult,\n useQueryClient,\n UseQueryResult,\n} from '@tanstack/react-query';\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react';\nimport { getErrorInfoFromStatusCode } from 'src/utils/errorUtils';\nimport {\n PurchaseOrder,\n PurchaseOrderDetails,\n PurchaseOrderQuery,\n PurchaseViewMode,\n TimePeriodContainingPurchaseOrderResult,\n TimePeriodType,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useCatalogDataContext } from '../CatalogDataContext';\nimport { ErrorTypes } from '../ErrorBoundaryContext';\nimport { useFilterQueryContext } from '../FilterQueryContext';\nimport {\n PURCHASE_SINGLE_TIME_PERIOD_QUERY_KEY,\n PURCHASE_TIME_PERIOD_CONTAINER_QUERY_KEY,\n} from './PurchaseDataContext.constants';\nimport { useGetAllPurchasesQuery } from './useGetAllPurchasesQuery';\nimport { useGetTimePeriodPurchasesQuery } from './useGetTimePeriodPurchasesQuery';\n\nexport type IPurchaseDataContext = {\n timePeriodPurchasesQuery: UseQueryResult<\n TimePeriodContainingPurchaseOrderResult[] | null,\n ErrorTypes\n >;\n allPurchasesQuery: UseQueryResult;\n allPurchasesFiltered: PurchaseOrder[] | null | undefined;\n purchaseCount: number;\n refreshData: (\n refetchAll?: boolean\n ) => Promise>;\n errorInfo?: { errorHeader: React.ReactNode; errorMessage: React.ReactNode };\n onSelect: (targetId: string, forceSelect?: boolean) => void;\n selectedIds: string[];\n onSetActivePurchaseOrderCallback: (\n item: PurchaseOrderDetails,\n forceRefresh?: boolean\n ) => Promise;\n scrollToId?: string;\n setScrollToId: (id?: string) => void;\n isFlattenedView: boolean;\n purchaseGroupTimePeriod: Exclude;\n setPurchaseGroupTimePeriod: (\n timePeriod: Exclude\n ) => void;\n};\n\nexport const PurchaseDataContext = createContext({\n timePeriodPurchasesQuery: {} as UseQueryResult<\n TimePeriodContainingPurchaseOrderResult[] | null\n >,\n allPurchasesQuery: {} as UseQueryResult,\n allPurchasesFiltered: [],\n purchaseCount: 0,\n refreshData: () =>\n Promise.resolve({} as QueryObserverResult),\n selectedIds: [],\n onSelect: () => {},\n onSetActivePurchaseOrderCallback: () => Promise.resolve(),\n setScrollToId: () => {},\n isFlattenedView: false,\n purchaseGroupTimePeriod: TimePeriodType.Weekly,\n setPurchaseGroupTimePeriod: () => {},\n});\n\nexport const usePurchaseDataContext = () => useContext(PurchaseDataContext);\n\nexport const PurchaseDataContextProvider = ({\n useReadonlyDB,\n viewModeOverride,\n ignoreMaxCount,\n children,\n doNotQueryForPurchases,\n}: {\n children: React.ReactNode;\n useReadonlyDB?: boolean;\n viewModeOverride?: PurchaseViewMode;\n ignoreMaxCount?: boolean;\n doNotQueryForPurchases?: boolean;\n}) => {\n const queryClient = useQueryClient();\n const { filterQuery } = useFilterQueryContext();\n const activeViewMode = useMemo(\n () => viewModeOverride ?? filterQuery.viewMode ?? PurchaseViewMode.TileView,\n [filterQuery.viewMode, viewModeOverride]\n );\n\n const { totalPurchaseCount } = useCatalogDataContext();\n\n const { activeAccountWebClientConfig } = useAppContext();\n const [errorInfo, setErrorInfo] = useState<{\n errorHeader: React.ReactNode;\n errorMessage: React.ReactNode;\n }>();\n const [selectedIds, setSelectedIds] = useState([]);\n\n const [scrollToId, setScrollToId] = useState();\n const [purchaseGroupTimePeriod, setPurchaseGroupTimePeriod] = useState<\n Exclude\n >(TimePeriodType.Weekly);\n\n const onSelect = useCallback(\n (targetId: string, forceSelect?: boolean) => {\n const indexOf = selectedIds.indexOf(targetId);\n\n if (indexOf >= 0) {\n // if force-select, we won't de-select if it's already selected\n if (forceSelect) {\n setScrollToId(targetId);\n } else {\n setSelectedIds(selectedIds.filter((id) => id !== targetId));\n }\n } else {\n setSelectedIds([...selectedIds, targetId]);\n setScrollToId(targetId);\n }\n },\n [selectedIds]\n );\n\n const timePeriodPurchasesQuery = useGetTimePeriodPurchasesQuery(\n selectedIds,\n setSelectedIds,\n setErrorInfo,\n purchaseGroupTimePeriod,\n activeViewMode !== PurchaseViewMode.TileView // disabled\n );\n\n const purchaseCount = useMemo(() => {\n let purchaseCount = 0;\n\n if (activeViewMode === PurchaseViewMode.TileView) {\n (timePeriodPurchasesQuery.data ?? []).forEach((ev) => {\n purchaseCount += ev.purchaseCount;\n });\n } else if (activeViewMode === PurchaseViewMode.FlattenedView) {\n purchaseCount = totalPurchaseCount ?? 0;\n }\n\n return purchaseCount;\n }, [activeViewMode, timePeriodPurchasesQuery.data, totalPurchaseCount]);\n\n const { allPurchasesQuery, allPurchasesFiltered } = useGetAllPurchasesQuery(\n useReadonlyDB,\n activeViewMode,\n ignoreMaxCount,\n doNotQueryForPurchases\n );\n\n const onSetActivePurchaseOrderCallback = useCallback(\n async (item: PurchaseOrderDetails, forceRefresh?: boolean) => {\n if (item.poDate) {\n if (forceRefresh) {\n // Refetch the month accordions\n const refetchQuery = await timePeriodPurchasesQuery.refetch();\n\n const targetTimePeriodIds = refetchQuery.data\n ?.filter((d) => d.firstOfTimePeriod <= item.poDate!)\n .map((d) => d.firstOfTimePeriod)\n .toSorted();\n if (targetTimePeriodIds?.length) {\n const targetTimePeriodId =\n targetTimePeriodIds[targetTimePeriodIds.length - 1];\n onSelect(targetTimePeriodId, true);\n }\n }\n }\n },\n [timePeriodPurchasesQuery, onSelect]\n );\n\n const refreshData = useCallback(\n async (refetchAll?: boolean) => {\n if (refetchAll) {\n queryClient.invalidateQueries({\n queryKey: [\n PURCHASE_TIME_PERIOD_CONTAINER_QUERY_KEY,\n activeAccountWebClientConfig.activeAccountId,\n ],\n });\n // For the months one we want to just query all - since this is each month ()\n queryClient.invalidateQueries({\n queryKey: [PURCHASE_SINGLE_TIME_PERIOD_QUERY_KEY, true],\n type: 'all',\n });\n }\n\n await allPurchasesQuery.refetch();\n return timePeriodPurchasesQuery.refetch();\n },\n [\n activeAccountWebClientConfig.activeAccountId,\n allPurchasesQuery,\n timePeriodPurchasesQuery,\n queryClient,\n ]\n );\n\n if (timePeriodPurchasesQuery.failureReason) {\n const { headerDisplay, messageDisplay } = getErrorInfoFromStatusCode(\n null,\n timePeriodPurchasesQuery.failureReason.message\n );\n setErrorInfo({\n errorHeader: headerDisplay,\n errorMessage: messageDisplay,\n });\n }\n\n return (\n \n {children}\n \n );\n};\n","import { fromPairs, isEqual } from 'lodash-es';\nimport {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { getFlattenedListingIds } from 'src/utils/inventoryUtils';\nimport {\n EventWithData,\n Listing,\n PurchaseOrderTicketGroup,\n Sale,\n TimePeriodContainingPurchaseOrderResult,\n} from 'src/WebApiController';\n\nimport { NO_GROUP_ID } from '../MultiSelectionContext';\nimport { packNumericIds } from '../MultiSelectionContext/MultiSelectionContext.utils';\nimport { usePurchaseDataContext } from '../PurchaseDataContext';\n\nexport type MultiSelectionType =\n | 'listing'\n | 'sale'\n | 'purchase'\n | 'ticketGroup';\n\n/** Metadata of the selectable group\n * @prop id - ID of the group (Event ID or month)\n * @prop comboId - Combo ID for related items (ViagogoVirtualId for combined events)\n * @prop itemCount - count of total items in the group - used to 1) add to total selected count when group is selected and 2) determine if group is fully selected\n * @prop unfilteredItemCount - count of total items in the group - used to restore itemCount when column filter is removed\n * @prop filteredIds - list of filtered IDs in the group - if undefined, all items are considered selected. If defined, represents full list of ids available for selection\n */\nexport type SelectableGroupMetadata = {\n id: string;\n comboId?: string;\n itemCount: number;\n unfilteredItemCount: number;\n filteredIds?: (number | string)[];\n};\n\nexport type ICatalogMultiSelectionContext = {\n flattenedIds: (number | string)[] | undefined;\n unfilteredFlattenedIds: (number | string)[] | undefined;\n groupsArray: SelectableGroupMetadata[];\n updateGroupFilteredIds: (\n groupId: string,\n filteredIds: (number | string)[] | undefined\n ) => void;\n};\n\nconst emptyContext: ICatalogMultiSelectionContext = {\n flattenedIds: undefined,\n unfilteredFlattenedIds: undefined,\n groupsArray: [],\n updateGroupFilteredIds: () => {},\n};\n\nexport const CatalogMultiSelectionContext =\n createContext(emptyContext);\n\nexport const useCatalogMultiSelectionContext = () =>\n useContext(CatalogMultiSelectionContext);\n\nfunction transformGroupsArray(\n data: EventWithData[] | TimePeriodContainingPurchaseOrderResult[] | undefined,\n type: MultiSelectionType,\n isPurchaseFlattenedView?: boolean\n): SelectableGroupMetadata[] {\n if (type === 'purchase' && !isPurchaseFlattenedView) {\n return ((data ?? []) as TimePeriodContainingPurchaseOrderResult[]).map(\n (monthData) => ({\n id: monthData.firstOfTimePeriod,\n itemCount: monthData.purchaseCount,\n unfilteredItemCount: monthData.purchaseCount,\n })\n );\n }\n return ((data ?? []) as EventWithData[]).map((event) => {\n const unfilteredItemCount =\n type === 'listing'\n ? event.counts.listCnt ?? 0\n : type === 'ticketGroup'\n ? event.counts.tktGrpsCnt ?? 0\n : type === 'purchase'\n ? event.counts.poCnt ?? 0\n : event.counts.salesCnt ?? 0;\n return {\n id: event.event.viagVirtualId,\n comboId: event.event.viagVirtualId,\n itemCount: unfilteredItemCount,\n unfilteredItemCount,\n };\n });\n}\n\nexport function CatalogMultiSelectionContextProvider({\n children,\n type,\n}: {\n children: ReactNode;\n type: MultiSelectionType;\n}) {\n const { data, eventsTransformed } = useCatalogDataContext();\n const {\n timePeriodPurchasesQuery,\n allPurchasesFiltered,\n isFlattenedView: isPurchaseFlattenedView,\n } = usePurchaseDataContext();\n const inputArray = useMemo(\n () =>\n type === 'purchase' && !isPurchaseFlattenedView\n ? timePeriodPurchasesQuery?.data ?? []\n : eventsTransformed,\n [\n eventsTransformed,\n isPurchaseFlattenedView,\n timePeriodPurchasesQuery?.data,\n type,\n ]\n );\n const inputObject = useMemo(\n () =>\n type === 'purchase' && !isPurchaseFlattenedView\n ? fromPairs(\n (timePeriodPurchasesQuery?.data ?? []).map((monthData) => [\n monthData.firstOfTimePeriod,\n monthData,\n ])\n )\n : data?.events,\n [\n data?.events,\n isPurchaseFlattenedView,\n timePeriodPurchasesQuery?.data,\n type,\n ]\n );\n\n const [flattenedIds, setFlattenedIDs] = useState<\n (number | string)[] | undefined\n >();\n const [unfilteredFlattenedIds, setUnfilteredFlattenedIDs] = useState<\n (number | string)[] | undefined\n >();\n\n const [groupsArray, setGroupsArray] = useState(\n transformGroupsArray(inputArray, type, isPurchaseFlattenedView)\n );\n\n useEffect(() => {\n const allItems =\n type === 'purchase' && allPurchasesFiltered\n ? allPurchasesFiltered\n : ((inputArray ?? []) as EventWithData[]).reduce(\n (all, current: EventWithData) => [\n ...all,\n ...(current?.entities?.listings ??\n current?.entities?.sales ??\n current?.entities?.ticketGroups ??\n []),\n ],\n [] as (Listing | Sale | PurchaseOrderTicketGroup)[]\n );\n const flattened =\n allItems.length > 0 && (allItems[0] as Listing).entityType === 'Listing'\n ? getFlattenedListingIds(allItems as Listing[])\n : type === 'ticketGroup'\n ? allItems.map((item) =>\n packNumericIds([\n item.id,\n (item as PurchaseOrderTicketGroup).tgId ?? 0,\n ])\n )\n : allItems.map((item) => item.id);\n setFlattenedIDs(flattened.length > 0 ? flattened : undefined);\n setUnfilteredFlattenedIDs(flattened.length > 0 ? flattened : undefined);\n setGroupsArray(\n transformGroupsArray(inputArray, type, isPurchaseFlattenedView)\n );\n }, [\n inputObject,\n inputArray,\n type,\n allPurchasesFiltered,\n isPurchaseFlattenedView,\n ]);\n\n const updateGroupFilteredIds = useCallback(\n (groupId: string, filteredIds: (number | string)[] | undefined) => {\n // Important - avoid calling set state if no change otherwise table can re-render unnecessarily\n if (groupId === NO_GROUP_ID) {\n if (filteredIds === undefined) {\n if (!isEqual(flattenedIds, unfilteredFlattenedIds)) {\n setFlattenedIDs(unfilteredFlattenedIds);\n }\n } else {\n if (!isEqual(flattenedIds, filteredIds)) {\n setFlattenedIDs(filteredIds);\n }\n }\n }\n\n const groupIndex = groupsArray.findIndex((group) => group.id === groupId);\n if (groupIndex === -1) {\n return;\n }\n\n if (filteredIds === undefined) {\n if (\n groupsArray[groupIndex].filteredIds === undefined &&\n groupsArray[groupIndex].itemCount ===\n groupsArray[groupIndex].unfilteredItemCount\n ) {\n return;\n }\n } else {\n if (isEqual(groupsArray[groupIndex].filteredIds, filteredIds)) {\n return;\n }\n }\n\n setGroupsArray((prev) => {\n const newGroupsArray = [...prev];\n\n if (filteredIds === undefined) {\n newGroupsArray[groupIndex] = {\n ...newGroupsArray[groupIndex],\n filteredIds: undefined,\n itemCount: newGroupsArray[groupIndex]?.unfilteredItemCount,\n };\n } else {\n newGroupsArray[groupIndex] = {\n ...newGroupsArray[groupIndex],\n filteredIds,\n itemCount: filteredIds.length,\n };\n }\n\n return newGroupsArray;\n });\n },\n [flattenedIds, groupsArray, unfilteredFlattenedIds]\n );\n\n return (\n \n {children}\n \n );\n}\n","import { useMemo } from 'react';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCatalogMultiSelectionContext } from 'src/contexts/CatalogMultiSelectionContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport {\n NO_GROUP_ID,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { unpackNumericIds } from 'src/contexts/MultiSelectionContext/MultiSelectionContext.utils';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport {\n ActionOutboxEntityType,\n InventoryViewMode,\n ListingQuery,\n PurchaseOrderQuery,\n SaleQuery,\n} from 'src/WebApiController';\n\nexport type FilterQueryType = ListingQuery | SaleQuery | PurchaseOrderQuery;\n\nexport type UseFilterQueryStateType = T & {\n eventOrMappingIds?: string[] | null;\n purchaseMonths?: string[];\n};\n\ntype UseFilterQueryState = {\n filterQueryWithEventIds: UseFilterQueryStateType;\n /**\n * Returns a list of selected viagogoIds grouped by event\n */\n selectedViagogoVirtualIds: string[] | undefined;\n};\n\nexport const useFilterQueryState = (\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Sale\n | ActionOutboxEntityType.Purchase,\n // All the group ids cannot be outside of this one\n groupIdSuperSet?: string[],\n useTicketGroupIds?: boolean\n): UseFilterQueryState => {\n const { flattenedIds, unfilteredFlattenedIds } =\n useCatalogMultiSelectionContext();\n const { getSelection, isAllSelected } = useMultiSelectionContext();\n const selectionState = getSelection();\n\n const { filterQuery } = useFilterQueryContext();\n const { eventsTransformed } = useCatalogDataContext();\n const { timePeriodPurchasesQuery } = usePurchaseDataContext();\n\n const isFlattenedViewWithNoGroupId = useMemo(() => {\n const { groupIds, items } = selectionState;\n return (\n filterQuery.viewMode === InventoryViewMode.FlattenedView &&\n ((groupIds.length === 1 && groupIds[0] === NO_GROUP_ID) ||\n (items.groupIds.length === 1 && items.groupIds[0] === NO_GROUP_ID))\n );\n }, [filterQuery.viewMode, selectionState]);\n\n const filterQueryWithEventIds = useMemo>(() => {\n const { groupIds, items } = selectionState;\n\n // Clean up the oldPosEventIds for filtering, which is only used for the event inventory page\n if (entityType === ActionOutboxEntityType.Listing) {\n Object.assign(filterQuery as ListingQuery, { oldPosEventIds: null });\n }\n\n // Flattened view, have to pick events from listings\n if (isFlattenedViewWithNoGroupId) {\n if (\n isAllSelected &&\n flattenedIds?.length === unfilteredFlattenedIds?.length\n ) {\n const allEventMappingIds =\n eventsTransformed\n ?.map((ev) => ev.event.viagVirtualId)\n ?.filter(\n (id) =>\n id !== NO_GROUP_ID &&\n (!groupIdSuperSet?.length || groupIdSuperSet.includes(id))\n ) ?? [];\n\n if (entityType === ActionOutboxEntityType.Purchase) {\n return {\n ...filterQuery,\n purchaseMonths: timePeriodPurchasesQuery.data?.map(\n (m) => m.firstOfTimePeriod\n ),\n eventOrMappingIds: allEventMappingIds,\n };\n }\n\n return {\n ...filterQuery,\n eventOrMappingIds: allEventMappingIds,\n };\n } else {\n // Item selections only\n const entityIds = selectionState.items.itemIds;\n return {\n ...filterQuery,\n eventOrMappingIds: [],\n entityIds: entityIds,\n };\n }\n }\n\n // Non-flattened view\n\n // Filter the group ids to the super-set so we don't accidentally include more items than this was meant for\n const filteredGroupIds = !groupIdSuperSet?.length\n ? groupIds\n : groupIds.filter((id) => groupIdSuperSet.includes(id));\n\n if (entityType === ActionOutboxEntityType.Purchase) {\n const unpackedPurchaseIds = new Set();\n const unpackedTicketGroupIds = new Set();\n if (useTicketGroupIds) {\n items.itemIds.forEach((packedId) => {\n const unpackedIds = unpackNumericIds(packedId);\n if (unpackedIds[0]) {\n unpackedPurchaseIds.add(unpackedIds[0]);\n }\n if (unpackedIds[1]) {\n unpackedTicketGroupIds.add(unpackedIds[1]);\n }\n });\n }\n\n const entityIds: number[] | null = useTicketGroupIds\n ? Array.from(unpackedPurchaseIds)\n : items.itemIds.map((id) => parseInt(id, 10));\n\n const ticketGroupIds: number[] | null = useTicketGroupIds\n ? Array.from(unpackedTicketGroupIds)\n : null;\n\n const allEventMappingIds =\n eventsTransformed\n ?.map((ev) => ev.event.viagVirtualId)\n ?.filter(\n (id) =>\n id !== NO_GROUP_ID &&\n (!groupIdSuperSet?.length ||\n !useTicketGroupIds ||\n groupIdSuperSet.includes(id))\n ) ?? [];\n\n return {\n ...filterQuery,\n // If it's a purchase query, use the purchase months\n purchaseMonths: useTicketGroupIds ? undefined : filteredGroupIds,\n eventOrMappingIds: useTicketGroupIds\n ? filteredGroupIds\n : allEventMappingIds,\n entityIds: entityIds,\n ticketGroupIds: ticketGroupIds,\n };\n }\n\n if (eventsTransformed == null) {\n return {\n ...filterQuery,\n eventOrMappingIds: filteredGroupIds,\n entityIds: items.itemIds.map((id) => parseInt(id, 10)),\n };\n }\n\n // We want to make sure we get all the events sharing the same group ids because a single gropu id can be part of a merged event\n const normalizedGroupIdsByMergedEvents = eventsTransformed\n ?.filter((ev) => groupIds.includes(ev.event.viagVirtualId))\n ?.map((ev) => ev.event.viagVirtualId)\n ?.filter((id) => id.length && !id.includes(NO_GROUP_ID));\n\n return {\n ...filterQuery,\n // Get all the event ids that matches the viagogo ids in groupIdsAsViagogoIds\n eventOrMappingIds: normalizedGroupIdsByMergedEvents,\n entityIds: items.itemIds.map((id) => parseInt(id, 10)),\n };\n }, [\n selectionState,\n entityType,\n isFlattenedViewWithNoGroupId,\n groupIdSuperSet,\n eventsTransformed,\n filterQuery,\n isAllSelected,\n flattenedIds?.length,\n unfilteredFlattenedIds?.length,\n timePeriodPurchasesQuery.data,\n useTicketGroupIds,\n ]);\n\n // This is used for the Catchup\n const selectedViagogoVirtualIds = useMemo(() => {\n const { groupIds, items } = selectionState;\n\n // Flattened view, have to pick events from listings\n if (isFlattenedViewWithNoGroupId) {\n if (isAllSelected) {\n return eventsTransformed?.map((ev) => ev.event.viagVirtualId);\n } else {\n const entityIds = items.itemIds;\n return eventsTransformed\n ?.filter((ev) =>\n entityType === ActionOutboxEntityType.Listing\n ? ev.entities.listings?.some((l) =>\n entityIds.includes(l.id.toString())\n )\n : ev.entities.sales?.some((s) =>\n entityIds.includes(s.id.toString())\n )\n )\n ?.map((ev) => ev.event.viagVirtualId)\n ?.filter((id) => id.length && !id.includes(NO_GROUP_ID));\n }\n }\n\n // If the selection has events, use it\n if (groupIds?.length) {\n if (entityType === ActionOutboxEntityType.Purchase) {\n return;\n }\n\n return eventsTransformed\n ?.filter((ev) => groupIds.includes(ev.event.viagVirtualId))\n ?.map((ev) => ev.event.viagVirtualId)\n ?.filter((id) => id.length && !id.includes(NO_GROUP_ID));\n }\n\n return;\n }, [\n entityType,\n eventsTransformed,\n isAllSelected,\n isFlattenedViewWithNoGroupId,\n selectionState,\n ]);\n\n return { filterQueryWithEventIds, selectedViagogoVirtualIds };\n};\n","export const newIntId = () => -new Date().getTime() % 2147483647;\nexport const newBigIntId = () => -new Date().getTime();\nexport const newGuidId = () => crypto.randomUUID();\n","import { isEqual, sampleSize } from 'lodash-es';\n\nfunction getRandomCentroids(dataset: VectorWithData[], k: number) {\n return sampleSize(dataset, k).map((v) => v.vector);\n}\n\nfunction squaredEuclideanDistance(a: Vector, b: Vector) {\n return a.map((_, i) => a[i] - b[i]).reduce((r, e) => r + e * e, 0);\n}\n\nexport type Vector = number[];\n\nexport type VectorWithData = {\n vector: Vector;\n data: T;\n value?: string | null;\n};\n\nexport type KmeansClusteringResults = {\n clusters: Cluster[];\n centroids: Vector[];\n iterations: number;\n converged: boolean;\n};\n\n/**\n * @param dataset\n * @param k Number of clusters\n * @param options\n * @returns\n */\nexport function kmeans(\n dataset: VectorWithData[],\n k: number,\n options: {\n maxIterations?: number;\n initializeCentroids?: (dataset: VectorWithData[], k: number) => Vector[];\n } = {}\n): KmeansClusteringResults {\n if (dataset.length < k) {\n throw new Error(`Invalid dataset length ${dataset.length} < k = ${k}`);\n }\n\n const { maxIterations = 50, initializeCentroids = getRandomCentroids } =\n options;\n\n let prevCentroids: Vector[] | undefined,\n centroids = initializeCentroids(dataset, k);\n let clusters: Cluster[] = [];\n\n let iterations = 0;\n for (\n ;\n iterations < maxIterations && !isEqual(prevCentroids, centroids);\n iterations++\n ) {\n prevCentroids = centroids.slice(0);\n clusters = clusterVectors(dataset, centroids);\n centroids = updateCentroids(dataset, clusters);\n }\n\n return {\n clusters,\n centroids,\n iterations,\n converged: iterations < maxIterations,\n };\n}\n\ntype Cluster = {\n centroid: Vector;\n vectors: VectorWithData[];\n value?: string | null;\n};\n\n/**\n * Assign each vector to a centroid.\n * @param dataset\n * @param centroids\n * @returns\n */\nfunction clusterVectors(dataset: VectorWithData[], centroids: Vector[]) {\n const clusters = centroids.map>((centroid) => ({\n centroid,\n vectors: [],\n }));\n for (const vectorWithData of dataset) {\n let closestCentroidIndex = 0;\n let closestCentroid = centroids[closestCentroidIndex];\n let prevDistance = squaredEuclideanDistance(\n vectorWithData.vector,\n closestCentroid\n );\n for (let i = 1; i < centroids.length; i++) {\n const centroid = centroids[i];\n const distance = squaredEuclideanDistance(\n vectorWithData.vector,\n centroid\n );\n if (distance < prevDistance) {\n prevDistance = distance;\n closestCentroid = centroid;\n closestCentroidIndex = i;\n }\n }\n clusters[closestCentroidIndex].vectors.push(vectorWithData);\n if (vectorWithData.value !== undefined) {\n clusters[closestCentroidIndex].value = vectorWithData.value;\n }\n }\n return clusters;\n}\n\n/**\n * Update centroids to the mean vector of the clusters.\n * @param dataset\n * @param clusters\n * @returns\n */\nfunction updateCentroids(\n dataset: VectorWithData[],\n clusters: Cluster[]\n) {\n return clusters.map((cluster) =>\n cluster.vectors.length > 0\n ? getMeanVector(cluster.vectors)\n : getRandomCentroids(dataset, 1)[0]\n );\n}\n\nfunction getMeanVector(vectors: VectorWithData[]) {\n const meanVector = new Array(vectors[0].vector.length).fill(0);\n for (const vectorWithData of vectors) {\n const { vector } = vectorWithData;\n for (let i = 0; i < vector.length; i++) {\n meanVector[i] = meanVector[i] + vector[i] / vectors.length;\n }\n }\n return meanVector;\n}\n","import {\n AutoPricingInputs,\n BucketType,\n EventWithData,\n GroupingType,\n ListingGroup,\n ListingGroupListingMarketplaceSettings,\n MergeListingGroupInputList,\n RowCompOverride,\n RowGroupSetting,\n Seating,\n UiMoney,\n VenueZoneConfigType,\n ZoneSectionAreaGroupLookup,\n} from 'src/WebApiController';\n\nexport type GroupListingsBodyProps = {\n events: EventWithData[];\n listingGroup?: ListingGroup;\n onEventSelected: (event?: EventWithData) => void;\n isViewingTemplate: boolean;\n};\n\nexport type GroupingTemplateSeating = {\n id: string | number;\n seating: Seating;\n availQty: number | null;\n unitCst: UiMoney | null;\n faceValue: UiMoney | null; // this is just to match the IListingGroupItem interface\n ticketClassId?: number | null;\n priority?: number;\n};\n\nexport type GroupingTemplate = {\n groupId: string;\n groupName: string;\n desiredActiveListings: number;\n deprioritizedQuantities: string[];\n seatings: GroupingTemplateSeating[];\n // This is for when applying to events\n // it's gonna be more efficient to check if a listing matches the group\n seatingsMap?: {\n sectionRowKeys: Record;\n rowIdKeys: Record;\n };\n};\n\nexport type MergeListingGroupInputListFields = MergeListingGroupInputList & {\n templateSettings: {\n groupBy: ListingGroupBy;\n desiredActiveListings: number;\n deprioritizedQuantities: string[];\n groupTemplates: GroupingTemplate[];\n randomizePriority: boolean;\n templateRankPremiums: {\n undercutAbsoluteAmount: number | null;\n undercutRelativeAmount: number | null;\n } | null;\n minActiveListings: number | null;\n maxActiveListings: number | null;\n targetPercentage: number | null;\n };\n eventSettings: {\n groupBys: ListingGroupBy[];\n desiredActiveListings: number;\n minActiveListings: number | null;\n maxActiveListings: number | null;\n targetPercentage: number | null;\n deprioritizedQuantities: string[];\n }[];\n pricingSettingsInputs?: AutoPricingInputs;\n resetListingAutoPricingSettings?: boolean; // Toggle to reset the auto pricing settings within group\n venueZoneConfigType: VenueZoneConfigType;\n combineCornersAndEnds: boolean;\n zoneSectionAreaGroupLookup: ZoneSectionAreaGroupLookup;\n rowCompOffset: number;\n rowGroupSetting: RowGroupSetting;\n sectionGroupCustomRankEnabled: boolean;\n rowCompOverrides: RowCompOverride[];\n};\n\n/**\n * If this is null, the backend will do nothing\n * If it's undefined or empty array, the backend will clear out the values to be null in the db\n * If it has a value, then we will have a value\n */\nexport type BulkEditListingGroupSettingsFields = {\n // pricingSettingsInputs?: AutoPricingInputs | null;\n desiredActiveListings?: number | null;\n deprioritizedQuantities?: string[] | null;\n rankPremiums?: {\n undercutAbsoluteAmount: number | null;\n undercutRelativeAmount: number | null;\n } | null;\n marketplaceSettings?: ListingGroupListingMarketplaceSettings | null;\n pricingSettingsInputs?: AutoPricingInputs;\n};\n\nexport type ListingGroupBy = {\n groupingType: GroupingType;\n numOfClusters?: number;\n bucketOption?: BucketType;\n groupingValue?: string;\n};\n\nexport const ListingGroupingTypesWithClusteringOptions = [\n GroupingType.Row,\n GroupingType.Quantity,\n GroupingType.UnitCost,\n GroupingType.SeatScore,\n];\nexport const ListingGroupingTypesNotSupportingAdditionalGroupBys = [\n GroupingType.Custom,\n GroupingType.None,\n];\n\nexport type GroupListingSortingCriteria = {\n isAdminHold: boolean;\n availableQuantity: number;\n};\n","import { isEmpty } from 'lodash-es';\nimport { getContent, IContentContext } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { LISTING_GROUPING_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { newGuidId } from 'src/utils/idUtils';\nimport { kmeans } from 'src/utils/kmeans';\nimport { getSeatScore } from 'src/utils/seatScoreUtils';\nimport { findTicketClass } from 'src/utils/venueConfigUtils';\nimport { BucketType, EventWithData, GroupingType } from 'src/WebApiController';\nimport {\n Event,\n GroupType,\n IListingGroupItem,\n Listing,\n ListingGroup,\n ListingMarketplaceSetting,\n MergeListingGroupInput,\n SectionInfo,\n SectionScoreOverride,\n} from 'src/WebApiController';\n\nimport {\n GroupingTemplateSeating,\n ListingGroupBy,\n ListingGroupingTypesWithClusteringOptions,\n} from './groupingTypes';\n\nexport const getGroupByData = (\n listing: IListingGroupItem | GroupingTemplateSeating,\n groupingType: GroupingType,\n listingToGroupKey: Record,\n contentContext: IContentContext,\n scoreOverrides?: SectionScoreOverride[] | null,\n sections?: SectionInfo[] | null\n) => {\n const prevKey = listingToGroupKey[listing.id];\n const prevKeyPrefix = prevKey ? `${prevKey.key}|` : '';\n const prevNamePrefix = prevKey ? `${prevKey.name} - ` : '';\n const nameContent = getNameContent(groupingType, contentContext);\n\n switch (groupingType) {\n case GroupingType.Section:\n return {\n key: prevKeyPrefix + listing.seating.section,\n name: prevNamePrefix + `${nameContent} ${listing.seating.section}`,\n value: listing.seating.section,\n };\n case GroupingType.Row:\n return {\n key: listing.seating.rowId\n ? prevKeyPrefix + listing.seating.rowId\n : prevKeyPrefix +\n `${listing.seating.section}__${listing.seating.row}`,\n name: prevNamePrefix + `${nameContent} ${listing.seating.row}`,\n value: listing.seating.row,\n };\n\n case GroupingType.Zone: {\n const tc = findTicketClass(listing.seating, sections);\n return {\n key: prevKeyPrefix + (tc?.id ?? 0),\n name: prevNamePrefix + `${nameContent} ${tc?.name || ''}`,\n value: tc?.name || '',\n };\n }\n case GroupingType.Quantity:\n return {\n key: prevKeyPrefix + listing.availQty,\n name: prevNamePrefix + `${nameContent} ${listing.availQty}`,\n value: listing.availQty + '',\n };\n case GroupingType.UnitCost:\n return {\n key:\n prevKeyPrefix +\n (listing.unitCst?.amt || listing?.faceValue?.amt || 0),\n name:\n prevNamePrefix +\n `${nameContent} ${\n listing.unitCst?.disp ??\n listing?.faceValue?.disp ??\n (listing.unitCst?.amt || listing?.faceValue?.amt)\n }`,\n value: (listing.unitCst?.amt || listing?.faceValue?.amt || 0) + '',\n };\n case GroupingType.SeatScore: {\n const score =\n getSeatScore(listing.seating, scoreOverrides, sections) ?? 0;\n return {\n key: prevKeyPrefix + score,\n name: prevNamePrefix + `${nameContent} ${score}`,\n value: score + '',\n };\n }\n }\n\n return {\n key: prevKeyPrefix + 0,\n name: prevNamePrefix + nameContent,\n value: nameContent,\n };\n};\n\nexport const getNameContent = (\n groupingType: GroupingType,\n contentContext: IContentContext\n) => {\n switch (groupingType) {\n case GroupingType.Section:\n return getContent(ContentId.Section, contentContext);\n case GroupingType.Row:\n return getContent(ContentId.Row, contentContext);\n case GroupingType.Zone:\n return getContent(ContentId.Zone, contentContext);\n case GroupingType.Quantity:\n return getContent(ContentId.UnsoldQty, contentContext);\n case GroupingType.UnitCost:\n return getContent(ContentId.UnitCost, contentContext);\n case GroupingType.SeatScore:\n return getContent(ContentId.SeatScore, contentContext);\n }\n\n return '';\n};\n\nexport const getClusteringData = (\n listing: IListingGroupItem | GroupingTemplateSeating,\n groupingType: GroupingType,\n scoreOverrides?: SectionScoreOverride[] | null,\n sections?: SectionInfo[] | null,\n rowIdToRowOrdinalMap?: Record | undefined\n) => {\n switch (groupingType) {\n case GroupingType.Quantity:\n return listing.availQty;\n case GroupingType.UnitCost:\n return listing.unitCst?.amt ?? 0;\n case GroupingType.SeatScore: {\n const score =\n getSeatScore(listing.seating, scoreOverrides, sections) ?? 0;\n return score;\n }\n case GroupingType.Row:\n // At this point, we should never have a case where listing.seating.rowId is null or\n // a null rowIdToRowOrdinalMap. However, we should have the safety guards in place in case\n return rowIdToRowOrdinalMap?.[listing.seating.rowId ?? 0] ?? 0;\n }\n};\n\nexport const flattenListingGroup = (l?: Listing | null) =>\n l == null\n ? []\n : [\n l,\n ...((l as ListingGroup).groupItems ?? []),\n ...((l as ListingGroup)?.groupItems ?? []).flatMap(\n (l2) => (l2 as ListingGroup)?.groupItems ?? []\n ),\n ].filter((l) => !l.isLtGrp);\n\nexport const filterAndflattenListingGroup =\n (groupFilter = (l: IListingGroupItem) => true) =>\n (l?: Listing | null) =>\n l == null\n ? []\n : [\n l,\n ...((l as ListingGroup).groupItems ?? []),\n ...((l as ListingGroup)?.groupItems ?? [])\n .filter(groupFilter)\n .flatMap((l2) => (l2 as ListingGroup)?.groupItems ?? [])\n .filter(groupFilter),\n ].filter((l) => !l.isLtGrp);\n\nexport const getListingsForMergeListingGroupInput = (\n x: MergeListingGroupInput | null | undefined,\n events: EventWithData[]\n) => {\n const ev = events.find(\n (ev) =>\n ev.event.viagVirtualId ===\n (x?.viagogoEventId?.toString() ?? x?.viagogoMappingId)\n );\n\n return ev?.entities?.listings ?? [];\n};\n\nexport const generateMergeListingGroupInputsForEvents = (\n events: Event[] | null | undefined,\n namePrefix: string,\n listingMarketplaceSettings?: {\n [key: string]: ListingMarketplaceSetting;\n } | null\n) => {\n return (\n events?.map(\n (ev, i) =>\n ({\n listingGroupId: newGuidId(),\n name: `${namePrefix} ${i + 1}`,\n listingGroupItems: [],\n viagogoEventId: ev.viagId,\n viagogoMappingId: ev.mappingId,\n desiredActiveListings: 0,\n minActiveListings: null,\n maxActiveListings: null,\n targetPercentage: null,\n deprioritizedQuantities: null,\n marketplaceSettings: listingMarketplaceSettings\n ? { listingMarketplaceSettings }\n : null,\n groupUndercutSetting: {\n undAbsAmt: null,\n undRelAmt: null,\n actRankUndAbsAmt: null,\n actRankUndRelAmt: null,\n },\n groupingMethods: {\n groupingMethods: [],\n },\n }) as MergeListingGroupInput\n ) ?? []\n );\n};\n\nexport const getAvailableGroupingTypes = (\n prevGroupingTypes: GroupingType[]\n) => {\n const listingGroupTypes = {\n ...LISTING_GROUPING_TO_CID,\n } as Record;\n\n // Do not allow duplicate group-bys\n if (prevGroupingTypes.length) {\n prevGroupingTypes.forEach((t) => {\n delete listingGroupTypes[t];\n });\n\n // Custom is not allowed as follow-up group-bys\n delete listingGroupTypes[GroupingType.Custom];\n } else {\n // None is not allowed as the top group-by\n delete listingGroupTypes[GroupingType.None];\n }\n\n return listingGroupTypes;\n};\n\nexport const getListingGroupsMap = (\n groupBys: ListingGroupBy[],\n contentContext: IContentContext,\n listingsForGrouping: T[],\n scoreOverrides?: SectionScoreOverride[] | null,\n sections?: SectionInfo[] | null,\n rowIdToRowOrdinalMap?: Record | undefined,\n canClusterByRows = false\n) => {\n const result: Record<\n string,\n { name: string; data: T[]; values: (string | null)[] }\n > = {};\n\n if (listingsForGrouping == null || !listingsForGrouping.length) {\n return result;\n }\n\n const listingToGroupKey: Record<\n string,\n { key: string; name: string; values: (string | null)[] }\n > = {};\n const listingGroupState: Record<\n string,\n {\n listingsInBucket: number;\n bucketCounter: number;\n data: GroupingTemplateSeating[];\n }\n > = {};\n\n const nonKmeansGrouping = (groupBy: ListingGroupBy) => {\n return listingsForGrouping.map((l) => {\n const key = getGroupByData(\n l,\n groupBy.groupingType,\n listingToGroupKey,\n contentContext,\n scoreOverrides,\n sections\n );\n return {\n data: [l],\n ...key,\n };\n });\n };\n\n const kmeansGrouping = (groupBy: ListingGroupBy) => {\n const dataset = listingsForGrouping.map((l) => {\n const value =\n getClusteringData(\n l,\n groupBy.groupingType,\n scoreOverrides,\n sections,\n rowIdToRowOrdinalMap\n ) ?? 0;\n return {\n vector: [value],\n data: l,\n value: value + '',\n };\n });\n return kmeans(\n dataset,\n groupBy.numOfClusters ?? 1 // defaults to 1\n ).clusters.flatMap((c, i) => {\n const data = c.vectors.map((d) => d.data);\n if (Object.keys(listingToGroupKey).length === 0) {\n return [\n {\n data: data,\n key: i.toString(),\n name:\n getNameContent(groupBy.groupingType, contentContext) + ' ' + i,\n value: c.value + '',\n },\n ];\n }\n\n // Each cluster needs to permutate with the previous key\n // ie, if the prev group is A, B, C and the new clustering has 1,2, then you will end up with\n // A1, A2, B1, B2, and C1, C2 and then which ones are empty - ignore\n const resultMap = data.reduce(\n (r, l) => {\n const prevKey = listingToGroupKey[l.id];\n const prevKeyPrefix = prevKey ? `${prevKey.key}|` : '';\n const key = prevKeyPrefix + i.toString();\n const name = (prevKey ? `${prevKey.name} - ` : '') + i;\n\n if (!r[key]) {\n r[key] = { name: name, data: [l] };\n } else {\n r[key].data.push(l);\n }\n\n return r;\n },\n {} as Record<\n string,\n {\n name: string;\n data: (IListingGroupItem | GroupingTemplateSeating)[];\n }\n >\n );\n\n return Object.keys(resultMap).map((k) => ({\n data: resultMap[k].data,\n key: k,\n name: resultMap[k].name,\n value: c.value + '',\n }));\n });\n };\n\n const sameSizeGrouping = (groupBy: ListingGroupBy) => {\n // The UI has a guard against this, but adding a check here to ensure no division by zero\n let numberOfBuckets = groupBy.numOfClusters ?? 1;\n if (numberOfBuckets < 1) {\n numberOfBuckets = 1;\n }\n\n // We take ceiling because we want the last bucket to have the remainder\n // i.e. 9 listings, 2 buckets. Bucket 1 should have 5, bucket 2 should have 4\n let listingsPerBucket = Math.ceil(\n listingsForGrouping.length / numberOfBuckets\n );\n\n let bucketCounter = 0;\n return listingsForGrouping.map((l, i) => {\n const prevKey = listingToGroupKey[l.id];\n const prevKeyPrefix = prevKey ? `${prevKey.key}|` : '';\n const prevNamePrefix = prevKey ? `${prevKey.name} - ` : '';\n\n // If prevKey is set then we are in \"ThenBy\" cluase. We should operate on the subset\n // of listings, and not the entire group. This means that we need to keep track of the\n // following values on a per group basis:\n // 1. The number of listings in the group\n // 2. The number of listings we've added to our group sub-bucket so far\n // 3. The group specific bucket counter\n if (prevKey) {\n const listingsInGroupCount = listingGroupState[prevKey.key].data.length;\n listingsPerBucket = Math.ceil(listingsInGroupCount / numberOfBuckets);\n const listingsInBucket =\n listingGroupState[prevKey.key].listingsInBucket;\n\n // Make sure we increment the right bucket counter\n if (listingsInBucket % listingsPerBucket === 0) {\n listingGroupState[prevKey.key].bucketCounter++;\n }\n\n // Increment the number of listings in the bucket\n listingGroupState[prevKey.key].listingsInBucket++;\n\n // Bucket counter state should be maintained per group\n bucketCounter = listingGroupState[prevKey.key].bucketCounter;\n } else {\n // Top level fixed size bucketing scenario. A lot less information we need to keep track of\n if (i % listingsPerBucket === 0) {\n bucketCounter++;\n }\n }\n return {\n key: prevKeyPrefix + bucketCounter,\n name: prevNamePrefix + `Bucket ${bucketCounter}`,\n data: [l],\n value: `${numberOfBuckets}`,\n };\n });\n };\n\n groupBys.forEach((groupBy) => {\n if (groupBy.groupingType === GroupingType.None) return;\n\n const bucketOption = groupBy.bucketOption;\n\n const shouldUseNormalCluster =\n !ListingGroupingTypesWithClusteringOptions.includes(\n groupBy.groupingType\n ) ||\n (groupBy.groupingType === GroupingType.Row && !canClusterByRows);\n\n const clusters = shouldUseNormalCluster\n ? nonKmeansGrouping(groupBy)\n : bucketOption == BucketType.SameSize\n ? sameSizeGrouping(groupBy)\n : kmeansGrouping(groupBy);\n\n clusters.forEach((c) => {\n c.data.forEach((l) => {\n if (!listingToGroupKey[l.id]) {\n listingToGroupKey[l.id] = {\n key: c.key.toString(),\n name: c.name,\n values: [c.value],\n };\n } else {\n listingToGroupKey[l.id].values.push(c.value);\n }\n\n if (!listingGroupState[c.key]) {\n listingGroupState[c.key] = {\n listingsInBucket: 0,\n bucketCounter: 0,\n data: [l],\n };\n } else {\n listingGroupState[c.key].data.push(l);\n }\n });\n });\n });\n\n const listingGroupsMap = listingsForGrouping.reduce(\n (acc, l) => {\n const key = listingToGroupKey[l.id];\n\n if (key) {\n if (!acc[key.key]) {\n acc[key.key] = { name: key.name, data: [l], values: key.values };\n } else {\n acc[key.key].data.push(l);\n }\n }\n return acc;\n },\n {} as Record\n );\n\n return listingGroupsMap;\n};\n\nexport const quantityMatches = (\n quantity: number,\n desiredQuantities: string[] | null\n): boolean => {\n if (isEmpty(desiredQuantities)) return false;\n\n return (\n desiredQuantities?.some((temp) => {\n if (temp.includes('+')) {\n return quantity >= parseInt(temp.replace('+', ''));\n }\n return quantity === parseInt(temp);\n }) ?? false\n );\n};\n\nexport const getQuantitiesOptions = () =>\n ['1', '2', '3', '4', '5', '6', '7', '8+'].reduce(\n (acc, q) => ({\n ...acc,\n [q]: q,\n }),\n {} as Record\n );\n\nexport const sortGroupType = (a: GroupType, b: GroupType) => {\n const order = {\n Invisible: 1,\n FullySold: 2,\n Inactive: 3,\n Active: 4,\n Leader: 5,\n };\n\n // Sort as the reverse order\n return order[b] - order[a];\n};\n","import { useMemo } from 'react';\nimport {\n useFilterQueryState,\n UseFilterQueryStateType,\n} from 'src/components/MainFilterBar/useFilterQueryState';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { flattenListingGroup } from 'src/modals/GroupListings/components/groupingUtils';\nimport { EventWithData } from 'src/WebApiController';\nimport {\n ActionOutboxEntityType,\n Listing,\n ListingQuery,\n} from 'src/WebApiController';\n\ninterface UseInventoryEventBulkActionsState {\n /**\n * Whether all **visible** listings are selected.\n * Even if set to true, some listings can be hidden by table column filters.\n */\n isAllListingsSelected: boolean;\n affectedVisibleListingIds: number[];\n filterQueryWithEventIds: UseFilterQueryStateType;\n}\n\nexport const useInventoryEventBulkActionsState = (\n event?: EventWithData['event']\n): UseInventoryEventBulkActionsState => {\n const { isAllSelected } = useMultiSelectionContext();\n\n const { filterQueryWithEventIds } = useFilterQueryState(\n ActionOutboxEntityType.Listing,\n event?.viagVirtualId ? [event.viagVirtualId] : []\n );\n\n const { eventsTransformed } = useCatalogDataContext();\n\n const listings = useMemo(() => {\n return (eventsTransformed ?? [])\n .flatMap((ev) => ev.entities.listings)\n .flatMap(flattenListingGroup)\n .filter(({ id, isLtGrp }) => id > 0 && !isLtGrp) as Listing[];\n }, [eventsTransformed]);\n\n const affectedVisibleListingIds = useMemo(() => {\n // Else we must respect only the entity Ids and event Ids\n const ids = [...(filterQueryWithEventIds.entityIds ?? [])];\n ids.push(\n ...listings\n .filter((l) =>\n filterQueryWithEventIds.eventOrMappingIds?.includes(l.viagVirtualId)\n )\n .map((l) => l.id)\n );\n return ids;\n }, [\n filterQueryWithEventIds.entityIds,\n filterQueryWithEventIds.eventOrMappingIds,\n listings,\n ]);\n\n return {\n isAllListingsSelected: isAllSelected,\n affectedVisibleListingIds,\n filterQueryWithEventIds,\n };\n};\n","import {\n Modal,\n ModalBody as RSModalBody,\n ModalFooter as RSModalFooter,\n ModalHeader as RSModalHeader,\n} from 'reactstrap';\nimport { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\n// See this PR for information about \"-fake\" classes https://github.com/stubhub/StubHub.PointOfSale/pull/3041\n// .modal-dialog\nexport const StyledModal = styled(Modal)<{\n size?:\n | 'sm'\n | 'm'\n | 'lg'\n | 'xl'\n | 'fullscreen'\n | 'slide-in'\n | 'slide-in-lg'\n | 'slide-left'\n | 'slide-left-sm'\n | 'slide-in-full';\n}>`\n .modal-content {\n border: none;\n }\n\n ${({ size, theme: { media } }) =>\n media.makeMediaQuery(\n media.breakpoints.md,\n `max-width: ${size === 'sm' ? '500px' : '650px'};`\n )}\n\n ${({ size, theme: { media } }) =>\n size !== 'sm' &&\n size !== 'm' &&\n media.makeMediaQuery(media.breakpoints.md, `max-width: 750px;`)}\n\n ${({ size, theme: { media } }) =>\n size !== 'sm' &&\n size !== 'm' &&\n media.makeMediaQuery(media.breakpoints.lg, `max-width: 850px;`)}\n\n ${({ size, theme: { media } }) =>\n size === 'fullscreen' &&\n media.makeMediaQuery(\n media.breakpoints.sm,\n `\n min-width: 100%;\n width: 100%;\n max-width: 100%;\n `\n )}\n \n // See this PR for information about \"-fake\" classes https://github.com/stubhub/StubHub.PointOfSale/pull/3041\n ${({ size }) =>\n (size === 'slide-in' ||\n size === 'slide-in-lg' ||\n size === 'slide-left' ||\n size === 'slide-left-sm' ||\n size === 'slide-in-full') &&\n `\n .modal.fade > &.modal-slide-fake,\n .modal.fade > &.modal-slide-in,\n .modal.fade > &.modal-slide-in-lg,\n .modal.fade > &.modal-slide-in-full,\n .modal.fade > &.modal-slide-left,\n .modal.fade > &.modal-slide-left-sm {\n transition: transform 0.3s ease-out !important;\n min-width: calc(100vw - 16px);\n max-width: calc(100vw - 16px);\n height: calc(100vh - 32px);\n max-height: calc(100vh - 32px);\n margin: 16px auto;\n }\n\n @supports (-webkit-touch-callout: none) {\n .modal.fade > &.modal-slide-fake,\n .modal.fade > &.modal-slide-in,\n .modal.fade > &.modal-slide-in-lg,\n .modal.fade > &.modal-slide-in-full,\n .modal.fade > &.modal-slide-left,\n .modal.fade > &.modal-slide-left-sm {\n max-height: -webkit-fill-available;\n padding-bottom: 16px;\n }\n }\n `}\n\n ${({ size }) =>\n (size === 'slide-in' ||\n size === 'slide-left' ||\n size === 'slide-left-sm' ||\n size === 'slide-in-full') &&\n `\n .modal-body {\n width: 1000px;\n max-width: 100%;\n }\n `}\n\n ${({ size }) =>\n size === 'slide-in-lg' &&\n `\n .modal-body {\n width: 1500px;\n max-width: 100%;\n }\n `}\n\n // Modal type: slide-in, size: sm and above\n ${({ size, theme }) =>\n (size === 'slide-in' ||\n size === 'slide-in-lg' ||\n size === 'slide-in-full' ||\n size === 'slide-left' ||\n size === 'slide-left-sm') &&\n `\n .modal.fade > &.modal-slide-fake > .modal-content,\n .modal.fade > &.modal-slide-in > .modal-content,\n .modal.fade > &.modal-slide-in-lg > .modal-content,\n .modal.fade > &.modal-slide-in-full > .modal-content,\n .modal.fade > &.modal-slide-left > .modal-content,\n .modal.fade > &.modal-slide-left-sm > .modal-content {\n border-radius: 16px;\n height: 100%;\n }\n\n ${ModalHeader} {\n padding: 0 ${vars.spacing.xl};\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n ${ModalBody} {\n border-bottom: none;\n }\n\n ${CloseButton} {\n position: relative;\n top: 0;\n right: 0;\n }\n `}\n\n // Modal type: slide-in, size: md and above\n ${({ size, theme: { media } }) =>\n (size === 'slide-in' ||\n size === 'slide-left' ||\n size === 'slide-left-sm') &&\n media.makeMediaQuery(\n media.breakpoints.md,\n `\n .modal.fade > &.modal-slide-fake > .modal-content,\n .modal.fade > &.modal-slide-in > .modal-content,\n .modal.fade > &.modal-slide-left > .modal-content,\n .modal.fade > &.modal-slide-left-sm > .modal-content {\n --bs-modal-inner-border-radius: 0;\n border-radius: 0;\n }\n\n .modal.fade > &.modal-slide-fake,\n .modal.fade > &.modal-slide-in,\n .modal.fade > &.modal-slide-left,\n .modal.fade > &.modal-slide-left-sm {\n margin: 0;\n min-width: 600px; // This is the smallest screen-width supported\n max-width: 95%; // Make the slide-in occupies at most 95% of the screen unless it's smaller than min-width which then becomes full-screen\n min-height: 100%;\n }\n\n .modal.fade.show > &.modal-slide-fake,\n .modal.fade.show > &.modal-slide-in,\n .modal.fade.show > &.modal-slide-left,\n .modal.fade.show > &.modal-slide-left-sm {\n transform: translate(0, 0);\n transition: transform 0.3s ease-in-out;\n display: flex;\n align-items: stretch;\n height: 100%;\n }\n `\n )}\n\n${({ size, theme: { media } }) =>\n size === 'slide-in-full' &&\n media.makeMediaQuery(\n media.breakpoints.md,\n `\n .modal.fade > &.modal-slide-fake > .modal-content,\n .modal.fade > &.modal-slide-in-full > .modal-content {\n --bs-modal-inner-border-radius: 0;\n border-radius: 0;\n }\n\n .modal.fade > &.modal-slide-fake,\n .modal.fade > &.modal-slide-in-full {\n margin: 0;\n min-width: 600px; // This is the smallest screen-width supported\n max-width: 100%; // Make the slide-in occupies at most 100% of the screen unless it's smaller than min-width which then becomes full-screen\n min-height: 100%;\n }\n\n .modal.fade.show > &.modal-slide-fake,\n .modal.fade.show > &.modal-slide-in-full {\n transform: translate(0, 0);\n transition: transform 0.3s ease-in-out;\n display: flex;\n align-items: stretch;\n height: 100%;\n }\n `\n )}\n\n // Modal type: slide-in-lg, size: md and above\n ${({ size, theme: { media } }) =>\n size === 'slide-in-lg' &&\n media.makeMediaQuery(\n media.breakpoints.md,\n `\n .modal.fade > &.modal-slide-fake > .modal-content,\n .modal.fade > &.modal-slide-in-lg > .modal-content {\n --bs-modal-inner-border-radius: 0;\n border-radius: 0;\n }\n\n .modal.fade > &.modal-slide-fake,\n .modal.fade > &.modal-slide-in-lg {\n margin: 0;\n min-width: 1500px; // This is the smallest screen-width supported\n max-width: 95%; // Make the slide-in occupies at most 95% of the screen unless it's smaller than min-width which then becomes full-screen\n min-height: 100%;\n }\n\n .modal.fade.show > &.modal-slide-fake,\n .modal.fade.show > &.modal-slide-in-lg {\n transform: translate(0, 0);\n transition: transform 0.3s ease-in-out;\n display: flex;\n align-items: stretch;\n height: 100%;\n }\n `\n )}\n\n ${({ size, theme: { media } }) =>\n (size === 'slide-in' ||\n size === 'slide-in-lg' ||\n size === 'slide-in-full') &&\n media.makeMediaQuery(\n media.breakpoints.md,\n `\n .modal.fade > &.modal-slide-fake,\n .modal.fade > &.modal-slide-in,\n .modal.fade > &.modal-slide-in-full,\n .modal.fade > &.modal-slide-in-lg {\n position: absolute;\n top: 0;\n right: 0;\n\n transform: translate(50%, 0) scale(1); // Note: translate(100%, 0) is not used because it will cause the modal to be pushed out of the screen and cause jittering when sliding back in\n transition: transform 0.3s ease-in-out;\n }\n `\n )}\n\n ${({ size, theme: { media } }) =>\n (size === 'slide-left' || size === 'slide-left-sm') &&\n media.makeMediaQuery(\n media.breakpoints.md,\n `\n .modal.fade > &.modal-slide-fake,\n .modal.fade > &.modal-slide-left,\n .modal.fade > &.modal-slide-left-sm {\n position: absolute;\n top: 0;\n left: 0;\n\n transform: translate(-50%, 0) scale(1); // Note: translate(-100%, 0) is not used because it will cause the modal to be pushed out of the screen and cause jittering when sliding back in\n transition: transform 0.3s ease-in-out;\n }\n `\n )}\n\n ${({ size, theme: { media } }) =>\n size === 'slide-in' &&\n media.makeMediaQuery(\n media.breakpoints.lg,\n `\n .modal.fade > &.modal-slide-fake,\n .modal.fade > &.modal-slide-in {\n min-width: 1000px;\n max-width: 95%; // Make the slide-in occupies at most 95% of the screen unless it's smaller than min-width which then becomes full-screen\n }\n `\n )}\n\n${({ size, theme: { media } }) =>\n size === 'slide-in-full' &&\n media.makeMediaQuery(\n media.breakpoints.lg,\n `\n .modal.fade > &.modal-slide-in-fake,\n .modal.fade > &.modal-slide-in-full {\n min-width: 1000px;\n max-width: 100%; // Make the slide-in occupies at most 100% of the screen unless it's smaller than min-width which then becomes full-screen\n }\n `\n )}\n\n ${({ size, theme: { media } }) =>\n size === 'slide-in-lg' &&\n media.makeMediaQuery(\n media.breakpoints.lg,\n `\n .modal.fade > &.modal-slide-fake,\n .modal.fade > &.modal-slide-in-lg {\n min-width: 1500px;\n max-width: 95%; // Make the slide-in occupies at most 95% of the screen unless it's smaller than min-width which then becomes full-screen\n }\n `\n )}\n\n ${({ size, theme: { media } }) =>\n size === 'slide-left' &&\n media.makeMediaQuery(\n media.breakpoints.lg,\n `\n .modal.fade > &.modal-slide-fake,\n .modal.fade > &.modal-slide-left {\n min-width: 1000px;\n max-width: 95%; // Make the slide-left occupies at most 95% of the screen unless it's smaller than min-width which then becomes full-screen\n }\n `\n )}\n\n ${({ size, theme: { media } }) =>\n size === 'slide-left-sm' &&\n media.makeMediaQuery(\n media.breakpoints.lg,\n `\n .modal.fade > &.modal-slide-fake,\n .modal.fade > &.modal-slide-left-sm {\n min-width: 200px;\n max-width: 95%; // Make the slide-left-sm occupies at most 95% of the screen unless it's smaller than min-width which then becomes full-screen\n }\n `\n )}\n\n height: -moz-available; /* WebKit-based browsers will ignore this. */\n height: -webkit-fill-available; /* Mozilla-based browsers will ignore this. */\n height: fill-available;\n`;\n\nexport const ModalHeader = styled(RSModalHeader)`\n border-color: ${(props) => props.theme.colors.borderPrimary};\n padding: 0 ${() => vars.spacing.lg};\n\n .modal-title {\n width: 100%;\n }\n`;\n\nexport const CloseButton = styled.div`\n z-index: 1;\n line-height: 1;\n\n @media ${({ theme: { media } }) => `${media.tablet}`} {\n top: ${() => `${vars.spacing.sm}`};\n right: ${() => `${vars.spacing.sm}`};\n }\n\n @media ${({ theme: { media } }) => `${media.desktop}`} {\n top: ${() => `${vars.spacing.m}`};\n right: ${() => `${vars.spacing.m}`};\n }\n`;\n\nexport const ModalBody = styled(RSModalBody)`\n padding: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n`;\n\nexport const ModalBodyHeaderContainer = styled.div`\n padding: ${() => vars.spacing.lg};\n padding-bottom: 0;\n width: 100%;\n\n ${({ theme: { media } }) =>\n media.makeMediaQuery(\n media.breakpoints.md,\n `\n padding: ${vars.spacing.xl};\n padding-bottom: 0;\n `\n )}\n`;\n\nexport const ModalBodyDataContainer = styled.div`\n padding: ${() => vars.spacing.lg};\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow-x: auto;\n\n ${({ theme: { media } }) =>\n media.makeMediaQuery(\n media.breakpoints.md,\n `\n padding: ${vars.spacing.xl};\n `\n )}\n`;\n\nexport const ModalFooter = styled(RSModalFooter)`\n padding: ${() => `${vars.spacing.lg} ${vars.spacing.xl}`};\n border: none;\n`;\n\nexport const Spacer = styled.div`\n width: 10px;\n height: 100%;\n margin: auto;\n background: ${({ theme }) => theme.colors.backgroundPrimary};\n`;\n","import React from 'react';\nimport { vars } from 'src/core/themes';\nimport { CrossIcon } from 'src/svgs/Viagogo';\n\nimport { CloseButton, ModalHeader as StyledModalHeader } from './Modal.styled';\n\nexport const ModalHeader = ({\n onClose,\n children,\n disabled,\n}: {\n onClose?: () => void;\n children: React.ReactNode;\n disabled?: boolean;\n}) => {\n return (\n \n \n \n }\n >\n {children}\n \n );\n};\n","import clsx from 'clsx';\nimport React, { ComponentProps } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { darkModeRoot } from 'src/app/App.css';\nimport { ErrorBoundaryContextProvider } from 'src/contexts/ErrorBoundaryContext';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { ActionOutboxEntityType } from 'src/WebApiController';\n\nimport * as styles from './Modal.css';\nimport { ModalBody, ModalFooter, StyledModal } from './Modal.styled';\nimport { ModalHeader } from './ModalHeader';\n\nexport type FullControlModalProps = Omit<\n ComponentProps,\n 'Body' | 'Header' | 'Footer' | 'ContentWrapper'\n> & { children: React.ReactNode };\n\nexport type ModalProps =\n | ({\n Body: React.ComponentType | JSX.Element;\n Header?: React.ComponentType | JSX.Element;\n Footer?: React.ComponentType | JSX.Element;\n ContentWrapper?: React.FC;\n size?:\n | 'sm'\n | 'lg'\n | 'xl'\n | 'fullscreen'\n | 'slide-in'\n | 'slide-in-lg'\n | 'slide-left'\n | 'slide-left-sm';\n /**\n * Whether to dismiss the dialog when clicking outside of its boundary\n * For message box, setting this to true is the norm.\n * For wizards, we do not want user to accidentally dismiss the entire dialog by clicking elsewhere.\n * Therefore, set this to true with care.\n */\n clickOutsideToClose?: boolean;\n /* When set, the url is appended with a query param = to allow a deep link visible on the browser's address bar */\n deepLinkKey?: string;\n deepLinkValue?: string | number;\n trackViewEntityType?: ActionOutboxEntityType;\n onCloseOverride?: () => void;\n onExit?: () => void;\n } & ComponentProps)\n | FullControlModalProps;\n\nexport const Modal = ({\n Header,\n Body,\n Footer,\n isOpen,\n onClose,\n children,\n clickOutsideToClose,\n backdrop,\n scrollable = true,\n size = 'lg',\n className,\n ...rest\n}: ModalProps) => {\n const hasChildren = React.Children.count(children) > 0;\n const commonModalProps = {\n isOpen: isOpen,\n toggle: onClose,\n fullscreen: 'sm',\n };\n const { isDarkMode } = useSiteTheme();\n\n return (\n \n \n {hasChildren ? (\n children\n ) : (\n <>\n {Header ? (\n \n {asJsxElement(Header)}\n \n ) : null}\n {asJsxElement(Body)}\n {Footer ? {asJsxElement(Footer)} : null}\n \n )}\n \n \n );\n};\n\nconst asJsxElement = (Element: React.ComponentType | JSX.Element) =>\n typeof Element === 'function' ? : Element;\n","import { Path } from '@remix-run/router/history';\nimport { useCallback } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { AppRouteConfigs, MenuItems } from 'src/app/AppRoutes';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\n\nimport { EventIdQueryParam } from './constants/constants';\n\nconst QUERIES_TO_KEEP_FOR_DEEPLINK = [EventIdQueryParam];\n\nexport const getDeepLinkUrlPart = (\n queryParamName: string,\n id?: string | number\n): [string, string] | undefined => {\n return id ? [queryParamName, id.toString()] : undefined;\n};\n\nexport const getDeepLinkIdFromUrl = (queryParamName: string, url?: string) => {\n if (url) {\n const urlObj = new URL(url);\n const queryParam = urlObj.searchParams.get(queryParamName);\n if (queryParam) {\n return queryParam;\n }\n }\n\n return '';\n};\n\n/**\n *\n * @param deepLinkKey\n * @param deepLinkValue\n * @param navigate react-router-dom navigate function. Used to update useSearchParams values\n * * when needed.\n */\nexport const addDeepLinkUrlPart = (\n deepLinkKey: string,\n deepLinkValue: string,\n navigate?: (fullPathname: string) => void\n) => {\n const url = new URL(window.location.href);\n // If we have a deep link for this modal, and the url currently doesn't already include it,\n if (\n deepLinkKey &&\n deepLinkValue &&\n url.searchParams.get(deepLinkKey) !== deepLinkValue\n ) {\n url.searchParams.set(deepLinkKey, deepLinkValue);\n if (navigate) {\n navigate(url.href.substring(location.origin.length));\n } else {\n window.history.pushState('', '', url.toString());\n }\n }\n};\n\nexport const getUrlWithDeepLink = (deepLinkKey: string) => {\n const url = new URL(window.location.href);\n if (deepLinkKey) {\n const deepLinkValue = url.searchParams.get(deepLinkKey);\n const queriesToKeep: [string, string][] = [];\n QUERIES_TO_KEEP_FOR_DEEPLINK.forEach((k) => {\n const val = url.searchParams.get(k);\n if (val) {\n queriesToKeep.push([k, val]);\n }\n });\n if (deepLinkValue) {\n //Get href without Query Params\n url.search = '';\n url.searchParams.set(deepLinkKey, deepLinkValue);\n queriesToKeep.forEach(([k, v]) => {\n url.searchParams.set(k, v);\n });\n }\n }\n return url;\n};\n\nexport const useRemoveDeepLinkUrlPart = () => {\n const navigate = useNavigate();\n\n return useCallback(\n (deepLinkKey: string) => {\n if (deepLinkKey) {\n const url = new URL(window.location.href);\n url.searchParams.delete(deepLinkKey);\n const path: Path = {\n hash: url.hash,\n search: url.search,\n pathname: url.pathname,\n };\n navigate(path);\n }\n },\n [navigate]\n );\n};\n\nexport const removeDeepLinkUrlPartsFromRelativeUrl = (\n relativeUrl: string,\n deepLinkKeys: string[]\n) => {\n if (relativeUrl && deepLinkKeys.length) {\n const url = new URL(\n window.location.protocol + '//' + window.location.host + relativeUrl\n );\n deepLinkKeys.forEach((key) => {\n url.searchParams.delete(key);\n });\n return url.pathname + url.search + url.hash;\n }\n\n return undefined;\n};\n\nexport const removeDeepLinkUrlPartFromRelativeUrl = (\n relativeUrl?: string,\n deepLinkKey?: string\n) => {\n if (relativeUrl && deepLinkKey) {\n const url = new URL(\n window.location.protocol + '//' + window.location.host + relativeUrl\n );\n url.searchParams.delete(deepLinkKey);\n return url.pathname + url.search + url.hash;\n }\n\n return undefined;\n};\n\nexport const getPathFromMainRoute = (mainRoute: MainRoute) => {\n return Object.values(AppRouteConfigs).find((r) => r.view === mainRoute)!\n .path!;\n};\n\nexport const getFullUrl = (\n mainRoute: MainRoute,\n deepLinkKey?: string,\n deepLinkValue?: string | number\n) => {\n let relativeUrl = getPathFromMainRoute(mainRoute);\n relativeUrl =\n relativeUrl?.length > 0 && relativeUrl[0] !== '/'\n ? '/' + relativeUrl\n : relativeUrl;\n\n const returnUrl = new URL(\n window.location.protocol + '//' + window.location.host + relativeUrl\n );\n\n if (deepLinkKey && deepLinkValue) {\n returnUrl.searchParams.set(deepLinkKey, deepLinkValue.toString());\n }\n\n return returnUrl;\n};\n\nexport const getCurrentViewPath = (route: MainRoute) => {\n let result = Object.values(AppRouteConfigs).find((r) => r.view === route);\n if (result) {\n return result.path!;\n }\n\n result = Object.values(MenuItems).find((r) => r.view === route);\n if (result) {\n return result.path!;\n }\n\n return null;\n};\n\nexport const navigateToMainRoute = (\n mainRouteAccess: MainRoute,\n navigate: (url: string) => void\n) => {\n const url = getCurrentViewPath(mainRouteAccess);\n if (url) {\n if (url.startsWith('https://')) {\n // to be safe we should only redirect to full HTTPS\n window.location.assign(url);\n } else {\n navigate(url);\n }\n }\n};\n\n// Check if the current page is in full event view\nexport const isInFullPageEventView = (mainRoute: MainRoute) => {\n return (\n mainRoute === MainRoute.SalesEvent ||\n mainRoute === MainRoute.PurchasesEvent ||\n mainRoute === MainRoute.InventoryEvent\n );\n};\n","import { createContext, useCallback, useEffect, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Modal, ModalProps } from 'src/modals/Modal';\nimport {\n addDeepLinkUrlPart,\n useRemoveDeepLinkUrlPart,\n} from 'src/utils/deepLinkUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { ActivityLogClient } from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useErrorBoundaryContext } from '../ErrorBoundaryContext';\n\ntype ModalContextType = {\n isModalOpen: boolean;\n closeModal: (forceClose?: boolean | React.SyntheticEvent) => void;\n setModal: (props: ModalProps) => void;\n updateModal: (props: Partial) => void;\n};\n\nexport const ModalContext = createContext({\n isModalOpen: false,\n setModal: () => {},\n updateModal: () => {},\n closeModal: () => {},\n});\n\n/**\n * Adds a modal to the page where the provider is added\n * Provides utils to set all or update part of the modal\n * The modal is assumed to be open when it contains content\n */\nexport const ModalProvider = ({ children }: { children: React.ReactNode }) => {\n const [modalProps, setModalProps] = useState(null);\n const { deepLinkKey, deepLinkValue } = modalProps ?? {};\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n const removeDeepLinkUrlPart = useRemoveDeepLinkUrlPart();\n const navigate = useNavigate();\n\n useEffect(() => {\n if (deepLinkKey && deepLinkValue) {\n addDeepLinkUrlPart(deepLinkKey, deepLinkValue, navigate);\n }\n }, [deepLinkKey, deepLinkValue, navigate]);\n\n const handleCloseModal = (forceClose?: boolean | React.SyntheticEvent) => {\n if (forceClose !== true && modalProps?.onCloseOverride) {\n modalProps.onCloseOverride();\n } else {\n closeModal();\n }\n };\n\n const setModal = useCallback(\n (modal: ModalProps) => {\n if (modal.deepLinkValue && modal.trackViewEntityType) {\n tryInvokeApi(\n async () => {\n await new ActivityLogClient(\n activeAccountWebClientConfig\n ).trackEntityView(modal.deepLinkValue, modal.trackViewEntityType);\n },\n (error) => {\n trackError('ActivityLogClient.trackEntityView', error, {\n deepLinkValue: modal.deepLinkValue,\n trackViewEntityType: modal.trackViewEntityType,\n });\n }\n );\n }\n setModalProps(modal);\n },\n [activeAccountWebClientConfig, trackError]\n );\n\n const closeModal = useCallback(() => {\n // TODO: refactor deeplink to a hook and pass as onClose where used\n removeDeepLinkUrlPart(deepLinkKey);\n setModalProps(null);\n }, [deepLinkKey, removeDeepLinkUrlPart]);\n\n const updateModal = useCallback(\n (partial) => {\n if (modalProps) {\n setModalProps({ ...modalProps, ...partial });\n }\n },\n [modalProps]\n );\n\n const isModalOpen = !!modalProps;\n\n return (\n \n {children}\n {modalProps && (\n \n )}\n \n );\n};\n","import React, { createContext, useContext, useState } from 'react';\n\nimport { ModalProvider } from '../ModalContext';\n\n// DialogId is an enum that stores the unique DialogIds to pre\nexport enum DialogId {\n AddToGroup = 'add-to-group-dialog',\n AutoPricingStrategy = 'auto-pricing-strategy',\n Confirm = 'confirm',\n BulkEditListingSettings = 'bulk-edit-listing-settings-dialog',\n BulkUpdateAutoFulfill = 'bulk-update-auto-fulfill-dialog',\n BulkEditTags = 'bulk-edit-tags-dialog',\n BulkChangeFloorCeilingActions = 'bulk-change-floor-ceiling-actions',\n BulkAddListingAdminHold = 'bulk-add-listing-admin-hold-dialog',\n BulkEditMarketplacePrices = 'bulk-edit-marketplace-prices-dialog',\n BulkEditListingPrice = 'bulk-edit-listing-price-dialog',\n BulkDeleteSeatSeavers = 'bulk-delete-seat-savers-dialog',\n BulkEditSeatTraits = 'bulk-edit-seat-traits-dialog',\n BulkEditBroadcastSettings = 'bulk-edit-broadcast-settings-dialog',\n BulkRemoveHold = 'bulk-remove-hold-dialog',\n BulkChangeTicketTypeRule = 'bulk-change-ticket-type-rule-dialog',\n BulkMarkAsFulfilled = 'bulk-mark-as-fulfilled-dialog',\n BulkEditPurchaseSettings = 'bulk-edit-purchase-settings-dialog',\n BulkEditCommission = 'bulk-edit-commission-dialog',\n BulkChangeEvent = 'bulk-change-event-dialog',\n BulkEditMarketplaceSeating = 'bulk-edit-marketplace-seating-dialog',\n BulkEditDeliveryType = 'bulk-edit-delivery-type-dialog',\n BulkDeleteTicketGroup = 'bulk-delete-ticket-group-dialog',\n BulkEditSalesSettings = 'bulk-edit-sales-settings-dialog',\n BulkCancelPurchase = 'bulk-cancel-purchase-dialog',\n BulkUpdateInternalNotes = 'bulk-update-internal-notes-dialog',\n BulkRemovePredilivery = 'bulk-remove-predelivery-dialog',\n BulkUngroupListings = 'bulk-ungroup-listings-dialog',\n BulkBackfillDeliverySettings = 'bulk-backfill-delivery-settings-dialog',\n BulkConvertPurchasePayments = 'bulk-convert-purchase-payments-dialog',\n ResetFulfillment = 'reset-fulfillment-dialog',\n BulkUpdateListingGroupSettings = 'bulk-update-listing-group-settings-dialog',\n BulkMarkPurchaseAsPaid = 'bulk-mark-purchase-as-paid-dialog',\n BulkEditAutoPricingSettings = 'bulk-edit-auto-pricing-settings-dialog',\n BulkUpdatePurchaseCurrencyCode = 'bulk-update-purchase-currency-code-dialog',\n BulkWasteTickets = 'bulk-waste-tickets-dialog',\n AddMarketplacePaymentLineToSale = 'add-marketplace-payment-line-to-sale',\n BulkMarkSaleAsPaid = 'bulk-mark-sale-as-paid',\n}\n\ntype DialogStore = {\n id: DialogId;\n content: React.ReactNode;\n};\n\ninterface DialogContextType {\n openDialog: (id: DialogId, options: Omit) => void;\n closeDialog: (id: DialogId) => void;\n}\n\nconst DialogContext = createContext({\n openDialog: () => {},\n closeDialog: () => {},\n});\n\nexport const useDialogContext = () => useContext(DialogContext);\n\n// DialogProvider is a context provider that manages the state of the dialogs\nexport const DialogProvider = ({ children }: { children: React.ReactNode }) => {\n const [dialogs, setDialogs] = useState([]);\n\n const openDialog = (id: DialogId, options: Omit) => {\n setDialogs((prevDialogs) => [...prevDialogs, { ...options, id }]);\n };\n\n const closeDialog = (id: DialogId) => {\n setDialogs((prevDialogs) =>\n prevDialogs.filter((dialog) => dialog.id !== id)\n );\n };\n\n return (\n \n {/* ModalProvider needs to be inside DialogProvider, as modals can launch dialogs, but not the other way around */}\n \n {children}\n {dialogs.map(({ id, content }) => (\n
    {content}
    \n ))}\n
    \n
    \n );\n};\n\nexport default DialogContext;\n","import { DialogId, useDialogContext } from './DialogContext';\n\ntype DialogPropsWithCallbacks = PropsType & {\n onClosed?: () => void;\n onCancel?: () => void;\n};\n\nexport function useDialog(\n dialogId: DialogId,\n DialogComponent: React.ComponentType>\n) {\n const { openDialog, closeDialog } = useDialogContext();\n\n const openDialogWithProps = (props: DialogPropsWithCallbacks) => {\n openDialog(dialogId, {\n content: (\n {\n if (props.onClosed) {\n props.onClosed();\n } else {\n closeDialog(dialogId);\n }\n }}\n onCancel={() => {\n if (props.onCancel) {\n props.onCancel();\n } else {\n closeDialog(dialogId);\n }\n }}\n />\n ),\n });\n };\n\n return {\n openDialog: openDialogWithProps,\n closeDialog: () => closeDialog(dialogId),\n };\n}\n","import { useAppContext } from 'src/contexts/AppContext';\nimport { hasAnyOfPermissions } from 'src/utils/userPermissionUtils';\nimport { Permission } from 'src/WebApiController';\n\nexport const useUserHasAnyOfPermissions = (...permissions: Permission[]) => {\n const { loginContext } = useAppContext();\n\n return hasAnyOfPermissions(loginContext?.user, permissions);\n};\n","import { Venue } from 'src/WebApiController';\n\nexport const getFormattedLocation = (venue: Venue): string => {\n const { city, state: stateProvince, country } = venue;\n return `${city ? `${city}, ` : ''}${\n stateProvince ? `${stateProvince}, ` : ''\n }${country?.code || ''}`;\n};\n\n/**\n * Convert size in bytes (number) to human readable string with units.\n * E.g. 1024 -> '1 KB'\n * @param numBytes number of bytes\n * @param precision precision in the formatted string\n * @param addSpace whether to add space between number and unit in the output string\n * @returns\n */\nexport const getFormattedBytesSize = (\n numBytes: number,\n precision = 3,\n addSpace = true\n) => {\n const UNITS = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n if (Math.abs(numBytes) < 1)\n return numBytes + (addSpace ? ' ' : '') + UNITS[0];\n\n const exponent = Math.min(\n Math.floor(Math.log10(numBytes < 0 ? -numBytes : numBytes) / 3),\n UNITS.length - 1\n );\n\n const n = Number(\n ((numBytes < 0 ? -numBytes : numBytes) / 1000 ** exponent).toPrecision(\n precision\n )\n );\n\n return (\n (numBytes < 0 ? '-' : '') + n + (addSpace ? ' ' : '') + UNITS[exponent]\n );\n};\n\n/**\n * Decodes base64 encoded string and returns a byte array.\n * @param base64String\n * @returns\n */\nexport function decodeBase64(base64String: string): Uint8Array {\n const byteCharacters = atob(base64String);\n const byteNumbers = new Array(byteCharacters.length);\n\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n\n const byteArray = new Uint8Array(byteNumbers);\n return byteArray;\n}\n","import { useQuery, UseQueryResult } from '@tanstack/react-query';\nimport { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PosSelectProps } from 'src/core/POS/PosSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { PurchaseClient, PurchaseVendor } from 'src/WebApiController';\n\nexport type UsePurchaseVendorSelectorOptions = {\n disabled?: boolean;\n additionalOptions?: Record;\n additionalOptionsPosition?: 'top' | 'bottom';\n placeholderText?: string | ContentId;\n};\n\nexport const usePurchaseVendorSelector = ({\n disabled,\n additionalOptions,\n additionalOptionsPosition = 'bottom',\n placeholderText,\n}: UsePurchaseVendorSelectorOptions): {\n query: UseQueryResult;\n availableVendors: Record;\n posSelectProps: Pick<\n PosSelectProps,\n | 'placeholderText'\n | 'valueOptionsContent'\n | 'sortMode'\n | 'searchable'\n | 'sortFn'\n | 'loading'\n >;\n} => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n !disabled && activeAccountWebClientConfig.activeAccountId != null;\n const query = useQuery({\n queryKey: [\n 'getAccessibleVendors',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n return tryInvokeApi(\n () => {\n return new PurchaseClient(\n activeAccountWebClientConfig\n ).getAccessibleVendors(false, false);\n },\n (error) => {\n trackError('PurchaseClient.getAccessibleVendors', error);\n }\n );\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n staleTime: Infinity,\n networkMode: 'offlineFirst',\n });\n\n const availableVendors = useMemo(() => {\n const dataSorted = query.data?.toSorted(\n (a: PurchaseVendor, b: PurchaseVendor) => a.name.localeCompare(b.name)\n );\n\n const results = dataSorted?.reduce(\n (r, cur) => {\n r[cur.id] = cur;\n return r;\n },\n {} as Record\n );\n\n return results ?? {};\n }, [query.data]);\n\n const availableVendorsOptions = useMemo(() => {\n const dataSorted = query.data?.toSorted(\n (a: PurchaseVendor, b: PurchaseVendor) => a.name.localeCompare(b.name)\n );\n\n const results = dataSorted?.reduce(\n (r, cur) => {\n r[cur.id] = cur.name;\n return r;\n },\n (additionalOptions && additionalOptionsPosition === 'top'\n ? additionalOptions\n : {}) as Record\n );\n\n return {\n ...(additionalOptionsPosition === 'top' ? additionalOptions : {}),\n ...(results ?? {}),\n ...(additionalOptionsPosition === 'bottom' ? additionalOptions : {}),\n };\n }, [query.data, additionalOptions, additionalOptionsPosition]);\n\n return {\n query,\n availableVendors,\n posSelectProps: {\n loading: query.isLoading,\n placeholderText: placeholderText ?? ContentId.ChooseVendor,\n valueOptionsContent: availableVendorsOptions,\n sortMode: 'ascending',\n searchable: true,\n sortFn: (a: string, b: string) => {\n const addOptionTexts = Object.values(additionalOptions ?? {});\n if (addOptionTexts.includes(a)) {\n return additionalOptionsPosition === 'top' ? -1 : 1;\n }\n if (addOptionTexts.includes(b)) {\n return additionalOptionsPosition === 'top' ? 1 : -1;\n }\n return a.localeCompare(b);\n },\n },\n };\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { REACT_QUERY_CACHE_MAX_AGE_IN_MS } from 'src/utils/constants/constants';\nimport { DeliveryType, TicketClient, TicketType } from 'src/WebApiController';\n\nexport function useTicketTypes(deliveryType?: DeliveryType | null) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const mappingsQuery = useQuery({\n queryKey: [\n 'getAllDeliveryTypeTicketTypeMappings',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: () =>\n new TicketClient(\n activeAccountWebClientConfig\n ).getAllDeliveryTypeTicketTypeMappings(),\n refetchOnWindowFocus: false,\n staleTime: REACT_QUERY_CACHE_MAX_AGE_IN_MS,\n meta: {\n onError: (error: ErrorTypes) => {\n showErrorDialog(\n 'TicketClient.getAllDeliveryTypeTicketTypeMappings',\n error\n );\n },\n },\n });\n\n const ticketTypes = useMemo(() => {\n if (mappingsQuery.isLoading) return [];\n\n const mapping =\n deliveryType == null\n ? null\n : mappingsQuery.data?.find((m) => m.deliveryType === deliveryType)\n ?.ticketTypes;\n\n return mapping\n ? Object.entries(mapping)\n .toSorted((a, b) => a[1][0] - b[1][0])\n .map((a) => a[0] as TicketType)\n : Object.values(TicketType);\n }, [deliveryType, mappingsQuery.data, mappingsQuery.isLoading]);\n\n return { ticketTypes };\n}\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const CustomDeliveryIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n","export const splitIntoGroups = (array: T[], itemsPerGroup: number) => {\n array = array.slice();\n const result = [];\n while (array.length) {\n result.push(array.splice(0, itemsPerGroup));\n }\n return result;\n};\n\nexport const randomizeInPlace = (values: unknown[]) => {\n if (values.length <= 1) {\n return values;\n }\n if (values.length === 2) {\n // when there's only 2, guarantee to randomize by swapping\n [values[0], values[1]] = [values[1], values[0]];\n return values;\n }\n\n for (let i = values.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [values[i], values[j]] = [values[j], values[i]];\n }\n\n return values;\n};\n\nexport const moveElements = (\n array: T[],\n fromIndex: number,\n toIndex: number\n): T[] => {\n // Ensure the indices are within array bounds\n if (\n fromIndex < 0 ||\n fromIndex >= array.length ||\n toIndex < 0 ||\n toIndex >= array.length\n ) {\n return array;\n }\n if (fromIndex === toIndex) {\n return array;\n }\n\n // Remove the element from the fromIndex position\n const element = array.splice(fromIndex, 1)[0];\n\n // Insert the element at the toIndex position\n array.splice(toIndex, 0, element);\n\n return [...array];\n};\n\nexport const calculatePercentile = (\n values: number[],\n percentile: number\n): number => {\n if (values.length === 0) {\n return 0;\n }\n\n // Calculate the rank (N * (p / 100)) - adjust for 0-based index\n const rank = (values.length * percentile) / 100.0 - 0.5;\n if (rank <= 0) {\n // If rank is less than or equal to 0, take the first element\n return values[0];\n }\n\n if (rank >= values.length - 1) {\n // If rank is greater than or equal to the last index, take the last element\n return values[values.length - 1];\n }\n\n // Interpolate between the two surrounding elements\n const lowerIndex = Math.floor(rank);\n const upperIndex = Math.ceil(rank);\n const fraction = rank - lowerIndex;\n const lowerValue = values[lowerIndex];\n const upperValue = values[upperIndex];\n\n const percentileValue = lowerValue + fraction * (upperValue - lowerValue);\n return percentileValue;\n};\n","import { ReactNode } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { MobileQRIcon } from 'src/svgs';\nimport { CustomDeliveryIcon } from 'src/svgs/CustomDeliveryIcon';\nimport {\n BarcodeIcon,\n IconsFill,\n IconsProps,\n MobileTransferIcon,\n PaperTicketOutlineIcon,\n PdfIcon,\n PrintAtHomeIcon,\n TicketAlertOutlineIcon,\n WalletOutlineIcon,\n} from 'src/svgs/Viagogo';\nimport {\n DeliveryType,\n TicketType,\n TicketTypePriority,\n} from 'src/WebApiController';\n\nimport { moveElements } from './arrayUtils';\nimport { ContentId } from './constants/contentId';\nimport { TICKET_TYPE_TO_CID } from './constants/contentIdMaps';\n\nexport const getTicketTypeIcon = (\n type: TicketType | null,\n fill: IconsFill,\n showIconTitle = true\n) => {\n const props = {\n title: showIconTitle ? (type ?? TicketType.Custom) : undefined,\n fill: fill,\n size: vars.iconSize.m,\n align: 'middle',\n } as IconsProps;\n\n switch (type) {\n case TicketType.Barcode:\n return ;\n case TicketType.ETicket:\n return ;\n case TicketType.QRCode:\n return ;\n case TicketType.Paper:\n return ;\n case TicketType.Transfer:\n return ;\n case TicketType.Season:\n return ;\n case TicketType.ETicketUrl:\n case TicketType.SMPWallet:\n return ;\n case TicketType.Custom:\n default:\n return ;\n }\n};\n\nexport const getTicketTypeIcons = (fill: IconsFill) => {\n return Object.keys(typeof TicketType).reduce(\n (r, t) => {\n r[t as TicketType] = getTicketTypeIcon(t as TicketType, fill);\n return r;\n },\n {} as Record\n );\n};\n\nexport const isPriorityBlocked = (p: TicketTypePriority) => {\n return p.isBlocked || p.priority == null;\n};\n\nexport const getTicketTypeLabel = (type: TicketType | null) => {\n if (!type) {\n return ;\n }\n\n return ;\n};\n\nexport const getDefaultTicketType = (\n deliveryType: DeliveryType\n): TicketType => {\n switch (deliveryType) {\n case DeliveryType.InApp:\n return TicketType.Transfer;\n\n case DeliveryType.PDF:\n return TicketType.ETicket;\n\n case DeliveryType.Paper:\n return TicketType.Paper;\n\n case DeliveryType.MemberCard:\n return TicketType.Season;\n case DeliveryType.Wallet:\n return TicketType.ETicketUrl;\n default:\n return TicketType.Custom;\n }\n};\n\nexport const getDeliveryTypeIcon = (\n deliveryType?: DeliveryType | null,\n topPriTicketType?: TicketType | null,\n fill?: IconsFill,\n showIconTitle = true\n) => {\n if (topPriTicketType) {\n return getTicketTypeIcon(\n topPriTicketType,\n fill ?? IconsFill.currentColor,\n showIconTitle\n );\n }\n\n const props = {\n title: showIconTitle ? deliveryType : undefined,\n fill: fill ?? IconsFill.currentColor,\n size: vars.iconSize.m,\n align: 'middle',\n } as IconsProps;\n\n switch (deliveryType) {\n case DeliveryType.InApp:\n return ;\n\n case DeliveryType.PDF:\n return ;\n\n case DeliveryType.Paper:\n return ;\n\n case DeliveryType.MemberCard:\n return ;\n\n case DeliveryType.Wallet:\n return ;\n\n case DeliveryType.Custom:\n return ;\n\n default:\n return ;\n }\n};\n\nexport const sortPriorityOrders = (\n a: TicketTypePriority,\n b: TicketTypePriority\n) => {\n // blocked always go last\n if (a.isBlocked && !b.isBlocked) {\n return 1;\n }\n if (!a.isBlocked && b.isBlocked) {\n return -1;\n }\n return a.priority - b.priority;\n};\n\n// Normally we don't need this, but just in case existing data from DB is already corrupted\nexport const backfillTicketTypePriorityOrders = (\n ticketTypes: TicketType[],\n ticketTypePriorities: TicketTypePriority[]\n) => {\n ticketTypes.forEach((tt) => {\n if (!ticketTypePriorities.find((to) => to.ticketType === tt)) {\n ticketTypePriorities.push({\n ticketType: tt,\n priority: null,\n } as unknown as TicketTypePriority);\n }\n });\n\n ticketTypePriorities.forEach((to, i) => {\n if (!to.priority && !to.isBlocked) {\n // For those missing value we put to the end\n to.priority = i + ticketTypePriorities.length;\n }\n });\n};\n\nexport const BLOCKED_PRIORITY = -1;\n\nexport const shiftTicketTypePriority = (\n priorityOrderBefore: TicketTypePriority[],\n ticketType: TicketType,\n priority: number // starting from one\n): TicketTypePriority[] => {\n priorityOrderBefore = priorityOrderBefore.toSorted(sortPriorityOrders);\n\n const fromIndex = priorityOrderBefore.findIndex(\n (p) => p.ticketType === ticketType\n );\n\n const isBlocked = priority === BLOCKED_PRIORITY;\n const toIndex = isBlocked ? priorityOrderBefore.length - 1 : priority - 1;\n\n priorityOrderBefore[fromIndex].isBlocked = isBlocked;\n priorityOrderBefore[fromIndex].priority = isBlocked ? 0 : priority;\n\n const priorityOrderAfter = moveElements(\n priorityOrderBefore,\n fromIndex,\n toIndex\n ).map((to, i) => {\n if (to.isBlocked) {\n return to;\n }\n return {\n ...to,\n isBlocked: false,\n priority: i + 1,\n };\n });\n\n return priorityOrderAfter;\n};\n","import { isEmpty } from 'lodash-es';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { BLOCKED_PRIORITY } from 'src/utils/ticketTypeUtils';\nimport {\n DeliveryType,\n SyncCenterSettings,\n TicketType,\n TicketTypePriorityOrder,\n TicketTypeRule,\n} from 'src/WebApiController';\n\nimport { SyncCenterFieldValues } from './SyncCenter.types';\n\nexport const getTicketTypePriorityOptions = (len: number) => {\n const options: { [key: string]: string } = {\n [ContentId.ResetAll]: ContentId.ResetAll,\n [ContentId.OnlyThis]: ContentId.OnlyThis,\n [`${BLOCKED_PRIORITY}`]: ContentId.Blocked,\n };\n for (let i = 1; i <= len; i++) {\n const order = i.toString();\n options[order] = order;\n }\n return options;\n};\n\nexport const getListingPackQuantityOptions = (len: number) => {\n const options: { [key: string]: string } = {};\n for (let i = 1; i <= len; i++) {\n options[i] = `${i}+`;\n }\n return options;\n};\n\nexport function toSyncCenterFieldValues({\n ticketTypeRules,\n ...settings\n}: SyncCenterSettings): SyncCenterFieldValues {\n const fieldValues: SyncCenterFieldValues = { ...settings };\n fieldValues.ticketTypeRules = {};\n if (ticketTypeRules) {\n for (const { deliveryType, ticketTypePriorityOrders } of ticketTypeRules) {\n if (deliveryType != null) {\n const ticketTypePriorityOrderMap: {\n [key in TicketType]?: number;\n } = {};\n for (const {\n ticketType,\n priorityOrder,\n blocked = false,\n } of ticketTypePriorityOrders) {\n if (blocked) {\n ticketTypePriorityOrderMap[ticketType] = BLOCKED_PRIORITY;\n } else if (priorityOrder != null) {\n ticketTypePriorityOrderMap[ticketType] = priorityOrder;\n }\n }\n fieldValues.ticketTypeRules[deliveryType] = ticketTypePriorityOrderMap;\n }\n }\n }\n /* JavaScript has a bug where 0.07 * 100 = 7.00000000001 (and various similar problems exists)\n The way is to realize how many maximum decimals we need and just round about that out\n */\n if (fieldValues.priceFloor) {\n fieldValues.priceFloor = roundToPrecision(fieldValues.priceFloor! * 100, 2);\n }\n if (fieldValues.marketplaceSettings) {\n for (let i = 0; i < fieldValues.marketplaceSettings.length; i++) {\n if (fieldValues.marketplaceSettings[i].markup) {\n fieldValues.marketplaceSettings[i].markup = roundToPrecision(\n fieldValues.marketplaceSettings[i].markup! * 100,\n 3\n );\n }\n\n if (fieldValues.marketplaceSettings[i].sellerFee) {\n fieldValues.marketplaceSettings[i].sellerFee = roundToPrecision(\n fieldValues.marketplaceSettings[i].sellerFee! * 100,\n 3\n );\n }\n }\n }\n\n return fieldValues;\n}\n\nexport function toSyncCenterSettings({\n ticketTypeRules,\n ...fieldValues\n}: SyncCenterFieldValues): SyncCenterSettings {\n const settingsTicketTypeRules: TicketTypeRule[] = [];\n if (ticketTypeRules) {\n for (const [key, ticketTypePriorityOrderMap] of Object.entries(\n ticketTypeRules\n )) {\n if (ticketTypePriorityOrderMap) {\n const ticketTypePriorityOrders: TicketTypePriorityOrder[] = [];\n for (const [key, value] of Object.entries(ticketTypePriorityOrderMap)) {\n if (value) {\n ticketTypePriorityOrders.push({\n ticketType: key as TicketType,\n priorityOrder: value === -1 ? null : value,\n blocked: value === -1 ? true : null,\n });\n }\n }\n if (ticketTypePriorityOrders.length > 0) {\n settingsTicketTypeRules.push({\n deliveryType: key as DeliveryType,\n ticketTypePriorityOrders,\n });\n }\n }\n }\n }\n /* Again, JavaScript has a bug where 0.7 * 0.01 = 0.006999999999999999 (and various similar problems exists)\n The way is to realize how many maximum decimals we need (e.g. check in DB) and just round about that out\n */\n if (fieldValues.priceFloor) {\n fieldValues.priceFloor = roundToPrecision(\n fieldValues.priceFloor! * 0.01,\n 4\n );\n }\n if (fieldValues.marketplaceSettings) {\n for (let i = 0; i < fieldValues.marketplaceSettings.length; i++) {\n if (fieldValues.marketplaceSettings[i].markup) {\n fieldValues.marketplaceSettings[i].markup = roundToPrecision(\n fieldValues.marketplaceSettings[i].markup! * 0.01,\n 5\n );\n }\n if (fieldValues.marketplaceSettings[i].sellerFee) {\n fieldValues.marketplaceSettings[i].sellerFee = roundToPrecision(\n fieldValues.marketplaceSettings[i].sellerFee! * 0.01,\n 5\n );\n }\n }\n }\n\n const settings: SyncCenterSettings = {\n ...fieldValues,\n ticketTypeRules: settingsTicketTypeRules,\n };\n return settings;\n}\n\nexport const setValueAsNumber = (value: string) =>\n value === '' || value == null ? null : Number(value);\n\nexport const setValueAsDecimalNumber = (value: string) =>\n value === '' || value == null ? null : Number(value) / 100;\n","import { Fragment, useCallback, useMemo } from 'react';\nimport {\n Content,\n getContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { useTicketTypes } from 'src/hooks/api/useTicketTypes';\nimport { getTicketTypePriorityOptions } from 'src/navigations/Routes/Settings/Views/SyncCenter/SyncCenter.utils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { TICKET_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n backfillTicketTypePriorityOrders,\n BLOCKED_PRIORITY,\n shiftTicketTypePriority,\n sortPriorityOrders,\n isPriorityBlocked,\n} from 'src/utils/ticketTypeUtils';\nimport {\n DeliveryType,\n TicketType,\n TicketTypeOverride,\n TicketTypePriority,\n} from 'src/WebApiController';\n\nimport * as styles from './TicketTypePriorityInput.css';\n\nexport const TicketTypePriorityInput = ({\n deliveryType,\n ticketTypeRules,\n onTicketTypeRulesChange,\n disabled,\n}: {\n deliveryType: DeliveryType | null;\n ticketTypeRules?: TicketTypeOverride | null;\n onTicketTypeRulesChange: (ticketTypeRules: TicketTypeOverride | null) => void;\n disabled?: boolean;\n}) => {\n const { ticketTypes } = useTicketTypes(deliveryType);\n const contentContext = useContentContext();\n\n const onOnlyThisChange = useCallback(\n (ticketType: TicketType) => {\n const ticketTypePriorityOrdersNew: TicketTypePriority[] = ticketTypes.map(\n (tt) => {\n if (tt === ticketType) {\n return {\n ticketType,\n priority: 1,\n isBlocked: false,\n };\n }\n return {\n ticketType: tt,\n priority: 0,\n isBlocked: true,\n };\n }\n );\n\n onTicketTypeRulesChange({\n overrides: [\n {\n deliveryType: deliveryType ?? DeliveryType.InApp,\n ticketTypePriorities: ticketTypePriorityOrdersNew,\n },\n ],\n });\n },\n [deliveryType, onTicketTypeRulesChange, ticketTypes]\n );\n\n const onResetAll = useCallback(() => {\n onTicketTypeRulesChange(null);\n }, [onTicketTypeRulesChange]);\n\n const defaultTicketTypePriorityOrders: TicketTypePriority[] = useMemo(\n () =>\n ticketTypes.map((tt, i) => ({\n ticketType: tt,\n priority: i + 1,\n isBlocked: false,\n })),\n [ticketTypes]\n );\n\n const overridesForDeliveryType = ticketTypeRules?.overrides?.find(\n (o) => o.deliveryType === deliveryType\n );\n\n const onPriorityChange = useCallback(\n (val: string, ticketType: TicketType) => {\n if (val === ContentId.OnlyThis) {\n onOnlyThisChange(ticketType);\n return;\n }\n if (val === ContentId.ResetAll) {\n onResetAll();\n return;\n }\n\n const priorityOrderBefore =\n overridesForDeliveryType?.ticketTypePriorities ??\n defaultTicketTypePriorityOrders;\n backfillTicketTypePriorityOrders(ticketTypes, priorityOrderBefore);\n\n const priorityOrderAfter = shiftTicketTypePriority(\n priorityOrderBefore,\n ticketType,\n Number(val)\n );\n\n const ticketTypePriorityOrdersNew = ticketTypes.map((tt, ii) => {\n const to = priorityOrderAfter.find((to) => to.ticketType === tt);\n\n if (to) {\n return { ...to };\n }\n\n // This should never happen, but just in case\n return {\n ticketType: tt,\n priority: ii + ticketTypes.length,\n isBlocked: false,\n };\n });\n\n onTicketTypeRulesChange({\n overrides: [\n {\n deliveryType: deliveryType ?? DeliveryType.InApp,\n ticketTypePriorities: ticketTypePriorityOrdersNew,\n },\n ],\n });\n },\n [\n defaultTicketTypePriorityOrders,\n deliveryType,\n onOnlyThisChange,\n onResetAll,\n onTicketTypeRulesChange,\n overridesForDeliveryType?.ticketTypePriorities,\n ticketTypes,\n ]\n );\n\n // This is used for display only - the ticketTypes variable is ordered by default priority\n // so we don't want to alter that\n const {\n ticketTypesOrderedByPriority,\n numBlockedTicketTypes,\n isEmptyTicketTypesOverridesFromResponse,\n } = useMemo(() => {\n const ticketTypePriorityOverrides = [\n ...(overridesForDeliveryType?.ticketTypePriorities ?? []),\n ]\n .filter((to) => to.ticketType != null)\n .map((to) => ({\n ...to,\n // If the priority is null (which is actually broken data), it is effectively blocked\n isBlocked: isPriorityBlocked(to),\n }));\n\n let numBlockedTicketTypes =\n ticketTypePriorityOverrides.filter((to) => to.isBlocked).length ?? 0;\n\n const orderedTicketTypePriority = ticketTypePriorityOverrides\n .toSorted(sortPriorityOrders)\n .map((to) => to.ticketType);\n\n // this need to happen when data is corrupted or overrides only got partially returned from backend\n // or emtpy overrides returned from backedn\n const missingTicketTypePriority = ticketTypes.filter(\n (tt) => !orderedTicketTypePriority.includes(tt)\n );\n\n // if overrides are partially returned, treat the missing ones as Blocked if any\n if (ticketTypePriorityOverrides.length > 0) {\n numBlockedTicketTypes += missingTicketTypePriority.length ?? 0;\n }\n\n return {\n ticketTypesOrderedByPriority: orderedTicketTypePriority.concat(\n missingTicketTypePriority\n ),\n numBlockedTicketTypes,\n isEmptyTicketTypesOverridesFromResponse:\n ticketTypePriorityOverrides.length == 0,\n };\n }, [overridesForDeliveryType?.ticketTypePriorities, ticketTypes]);\n\n return (\n
    \n {ticketTypesOrderedByPriority.map((ticketType, i) => {\n const priorityOrder =\n overridesForDeliveryType?.ticketTypePriorities.find(\n (to) => to.ticketType === ticketType\n );\n\n const isBlocked = isEmptyTicketTypesOverridesFromResponse\n ? false // if the backend responded with empty, then the priority will be default and not blocked\n : priorityOrder == null || isPriorityBlocked(priorityOrder);\n\n /**\n * UI will make the ticket type priorty contiguous, changing and saving the priority from website\n * will change the priority value on the backend (also when it map to multiple backend ticket type),\n * but the order of the priority would still retain.\n * */\n const uiTicketPriority =\n ticketTypesOrderedByPriority.indexOf(ticketType) + 1;\n return (\n \n
    \n \n
    \n
    \n onPriorityChange(val, ticketType)}\n />\n
    \n
    \n );\n })}\n
    \n );\n};\n","/* IMPORTANT - whenever you add a new one here\n You need to add a handling for it in the BulkEditStatusPurchasePopover.tsx\n */\nexport const PURCHASE_BULK_UPDATE_GENERAL_SETTINGS_UPDATE_KEY =\n 'general-settings-event-purchases';\nexport const PURCHASE_BULK_UPDATE_COMMISSION_UPDATE_KEY =\n 'commission-event-purchases';\nexport const PURCHASE_BULK_UPDATE_TAGS_UPDATE_KEY = 'tags-event-purchases';\nexport const PURCHASE_BULK_UPDATE_INTERNAL_NOTES_UPDATE_KEY =\n 'update-internal-notes-purchases';\nexport const PURCHASE_BULK_UPLOAD_PURCHASE_KEY = `upload-csv-puchases`;\nexport const PURCHASE_BULK_CANCEL_UPDATE_KEY = `cancel-puchases`;\nexport const PURCHASE_BULK_UPDATE_DELIVERY_TYPE_UPDATE_KEY =\n 'update-delivery-type-purchases';\nexport const PURCHASE_BULK_UPDATE_SEAT_TRAITS_UPDATE_KEY =\n 'update-seat-traits-purchases';\nexport const TICKET_GROUP_BULK_DELETE_UPDATE_KEY = `delete-ticket-groups`;\nexport const PURCHASE_BULK_BACKFILL_DELIVERY_SETTINGS_KEY = `backfill-delivery-settings-purchases`;\nexport const PURCHASE_BULK_CONVERT_PAYMENTS_KEY = 'convert-payments-purchases';\n\nexport const PURCHASE_BULK_MARK_AS_PAID_KEY = 'bulk-mark-as-paid-purchases';\nexport const PURCHASE_BULK_UPDATE_PURCHASE_CURRENCY_CODE_KEY =\n 'bulk-update-purchase-currency-code';\n\n// There's a very similar contentId: TicketGroupBulkEditPurchaseWarning\n// and this one is not worthy to be a content\n// This is a temporary message that lives with BulkUpdateIndividualTicketGroup feature flag\n// for a temporary fix. Can be removed once BulkUpdateIndividualTicketGroup is GA\nexport const TicketGroupBulkEditPurchaseWarningTemporaryMessage =\n 'Performing a bulk action on the selected purchase lines will affect the entire purchase order.';\n","import { ComponentProps } from 'react';\nimport { vars } from 'src/core/themes';\nimport { DownloadIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { ButtonWithIcon } from './ButtonWithIcon';\n\nexport const DownloadButton = ({\n textContentId,\n iconOnlyMode,\n variant,\n ...props\n}: Omit, 'icon'>) => {\n return (\n \n }\n iconOnlyMode={iconOnlyMode}\n variant={variant}\n textContentId={textContentId || ContentId.Download}\n />\n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const DnDFileUploaderLabel = styled.label`\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `padding: ${vars.spacing.xl};`\n )}`}\n`;\n\nexport const SVGWrapper = styled.div`\n margin-bottom: ${() => `${vars.spacing.m}`};\n`;\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const SelectedFileWrapper = styled.div`\n display: flex;\n flex-direction: row;\n margin-top: ${() => `${vars.spacing.m}`};\n align-items: center;\n`;\n\nexport const FileName = styled.div`\n ${(props) => props.theme.typography.getStyles('subtitle2')}\n`;\n\nexport const IconWrapper = styled.div`\n padding: ${() =>\n `0 ${vars.spacing.sm} ${vars.spacing.xs} ${vars.spacing.sm}`};\n`;\n","import React from 'react';\nimport { IconButton } from 'src/components/Buttons';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport {\n FileName,\n IconWrapper,\n SelectedFileWrapper,\n} from './SelectedFile.styled';\n\nexport const SelectedFile = ({\n children,\n onRemove,\n}: {\n children: React.ReactNode;\n onRemove: () => void;\n}) => {\n return (\n \n {children}\n \n }\n />\n \n \n );\n};\n","import clsx from 'clsx';\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Content, useContentContext } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { AddFileIcon } from 'src/svgs/AddFileIcon';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { FormatContentIds } from 'src/utils/constants/formatContentIdDataMap';\n\nimport * as styles from './DnDFileUploader.css';\nimport { DnDFileUploaderLabel, SVGWrapper } from './DnDFileUploader.styled';\nimport { SelectedFile } from './SelectedFile';\n\nfunction preventDefaults(e: React.SyntheticEvent) {\n e.preventDefault();\n e.stopPropagation();\n}\n\nexport interface DnDFileUploaderExternalContext {\n selectFiles: () => void; // Opens HTML file picker\n isDragging: boolean;\n handleDrag: (e: React.DragEvent) => void;\n handleDrop: (e: React.DragEvent) => void;\n}\n\ninterface DnDFileUploaderProps {\n onChange?: (files: File[]) => void; // called with all selected files\n onNewFilesSelected?: (files: File[]) => void; // called only with new selected files\n acceptedFileTypes?: string[];\n multiple?: boolean;\n disabled?: boolean;\n maxFileSize?: number;\n showSelectedFiles?: boolean;\n useLabelV2Styles?: boolean;\n setExternalContext?: (context: DnDFileUploaderExternalContext) => void;\n highlightDropBoxOnDragging?: boolean;\n}\n\nexport const DnDFileUploader = ({\n onChange,\n multiple,\n disabled,\n acceptedFileTypes = [],\n maxFileSize,\n showSelectedFiles = true,\n useLabelV2Styles = false,\n onNewFilesSelected,\n setExternalContext,\n highlightDropBoxOnDragging = true,\n}: DnDFileUploaderProps) => {\n const { formattedContentResolver } = useContentContext();\n\n const isMobile = useMatchMedia('mobile');\n const inputRef = useRef(null);\n const [errorMsg, setErrorMsg] = useState(null);\n const [isDragging, setIsDragging] = useState(false);\n const [files, setFiles] = useState([]);\n const acceptProp =\n acceptedFileTypes?.length > 0\n ? {\n accept: acceptedFileTypes.join(', '),\n }\n : {};\n\n const callbacksRef = useRef<\n Pick\n >({\n onChange,\n onNewFilesSelected,\n });\n\n callbacksRef.current = {\n onChange,\n onNewFilesSelected,\n };\n\n const maxFileSizeErrorMsg = useMemo(() => {\n if (maxFileSize == null) return null;\n\n return formattedContentResolver(\n FormatContentId.MaxAllowedFileSizeMb,\n [(maxFileSize / 1024 / 1024).toFixed(0)],\n FormatContentIds[FormatContentId.MaxAllowedFileSizeMb].defaultValue\n ) as string;\n }, [formattedContentResolver, maxFileSize]);\n\n useEffect(() => {\n callbacksRef.current.onChange?.(files);\n }, [files]);\n\n const onBtnClick = useCallback(() => {\n // trigger the hidden input\n inputRef?.current?.click();\n }, []);\n\n const handleDrag = useCallback(\n (e: React.DragEvent) => {\n preventDefaults(e);\n\n const { type } = e;\n\n if (type === 'dragenter' || type === 'dragover') {\n setIsDragging(true);\n } else if (type === 'dragleave') {\n setIsDragging(false);\n }\n },\n [setIsDragging]\n );\n\n const updateSelectedFiles = useCallback(\n (newFiles: FileList | null) => {\n if (newFiles?.length) {\n callbacksRef.current.onNewFilesSelected?.(Array.from(newFiles));\n if (multiple) {\n // If multiple, add on to already selected files\n setFiles((prevFiles) => [...prevFiles, ...Array.from(newFiles)]);\n } else {\n // Else, replace existing files with the new selected file\n setFiles([newFiles[0]]);\n }\n }\n },\n [multiple]\n );\n\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n preventDefaults(e);\n\n setIsDragging(false);\n const newFiles = e.dataTransfer?.files;\n\n if (maxFileSize != null) {\n const files = Array.from(newFiles || []);\n if (files.some((f) => f.size > maxFileSize)) {\n setErrorMsg(maxFileSizeErrorMsg);\n return;\n }\n }\n\n setErrorMsg(null);\n\n updateSelectedFiles(newFiles);\n },\n [maxFileSize, maxFileSizeErrorMsg, updateSelectedFiles]\n );\n\n const handleChange = (e: React.SyntheticEvent) => {\n preventDefaults(e);\n const target = e.target as HTMLInputElement;\n\n setIsDragging(false);\n\n const newFiles = target?.files;\n\n if (maxFileSize != null) {\n const files = Array.from(newFiles || []);\n if (files.some((f) => f.size > maxFileSize)) {\n setErrorMsg(maxFileSizeErrorMsg);\n return;\n }\n }\n\n setErrorMsg(null);\n updateSelectedFiles(newFiles);\n };\n\n const onRemoveFile = (index: number) => {\n const newFiles = [...files];\n newFiles.splice(index, 1);\n setFiles(newFiles);\n\n inputRef!.current!.value = newFiles.map((f) => f.name).join(',');\n };\n\n // Set external context if needed\n useEffect(() => {\n setExternalContext?.({\n isDragging,\n handleDrag,\n handleDrop,\n selectFiles: () => {\n inputRef.current?.click();\n },\n });\n }, [handleDrag, handleDrop, isDragging, setExternalContext]);\n\n return (\n
    \n \n \n \n \n \n \n {!isMobile && (\n <>\n
    \n \n
    \n
    \n \n
    \n \n )}\n\n \n \n \n \n
    \n \n {showSelectedFiles &&\n files.map((file: File, i: number) => (\n onRemoveFile(i)}>\n {file.name}\n \n ))}\n {errorMsg ? (\n {errorMsg}\n ) : null}\n \n );\n};\n","import { useCallback } from 'react';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditProgress,\n} from 'src/WebApiController';\n\n/**\n * Needs to be in sync with the method in C#\n * GetMethodName in BackgroundActionService.cs\n */\nexport const parseBulkEditMethodName = (methodName: string) => {\n const parts = methodName.split('-');\n return {\n entityType: parts[0] as ActionOutboxEntityType,\n bulkActionType: parts[1] as BulkActionType,\n };\n};\n\nexport function useBulkEditHub(\n entityType: ActionOutboxEntityType,\n bulkEditAction: BulkActionType,\n updateKey: string,\n onBulkEditDone?: (\n progress: BulkEditProgress,\n errors: string[]\n ) => Promise\n) {\n const {\n bulkEditHub,\n progress,\n errors,\n warnings,\n mainDialogOpened,\n stage,\n setStage,\n preview,\n setPreview,\n setCurJob,\n setProgress,\n setErrors,\n setWarnings,\n setMainDialogOpened,\n retryableEntities,\n progressBeforeRetry,\n clearRetryStates,\n } = useBulkEditHubContext();\n\n const initJob = useCallback(() => {\n setProgress(undefined);\n setErrors([]);\n setWarnings([]);\n setMainDialogOpened(true);\n setPreview(undefined);\n setStage(BulkEditStage.Idle);\n clearRetryStates();\n setCurJob({\n entityType,\n action: bulkEditAction,\n updateKey,\n onBulkEditDone,\n });\n }, [\n bulkEditAction,\n clearRetryStates,\n entityType,\n onBulkEditDone,\n setCurJob,\n setErrors,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setStage,\n setWarnings,\n updateKey,\n ]);\n\n return {\n bulkEditHub,\n progress,\n errors,\n warnings,\n mainDialogOpened,\n stage,\n preview,\n initJob,\n retryableEntities,\n progressBeforeRetry,\n clearRetryStates,\n };\n}\n","import md5 from 'md5';\n\nimport { decodeBase64 } from './format';\n\nexport const downloadFile = (\n fileName: string,\n content: string,\n contentType: string | undefined,\n isBase64 = false\n) => {\n const blob = new Blob([isBase64 ? decodeBase64(content) : content], {\n type: contentType,\n });\n downloadFileFromBlob(fileName, blob);\n};\n\nexport const downloadFileFromUrl = (fileName: string, url: string) => {\n const a = document.createElement('a');\n a.href = url;\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n window.URL.revokeObjectURL(url);\n document.body.removeChild(a);\n};\n\nexport const downloadFileFromBlob = (fileName: string, data: Blob) => {\n const url = window.URL.createObjectURL(data);\n const a = document.createElement('a');\n a.href = url;\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n window.URL.revokeObjectURL(url);\n document.body.removeChild(a);\n};\n\nexport const getFileHash = async (file: File): Promise => {\n return md5(new Uint8Array(await file.arrayBuffer()));\n};\n","import { ReactNode } from 'react';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport type BulkEditHeaderProps = {\n headerText: ReactNode;\n};\n\nexport const BulkEditHeader = ({ headerText }: BulkEditHeaderProps) => {\n const { stage } = useBulkEditHubContext();\n return (\n \n {headerText}{' '}\n {stage === BulkEditStage.GettingPreview ? (\n <>\n {' - '}\n \n \n ) : stage === BulkEditStage.Preview ? (\n <>\n {' - '}\n \n \n ) : (\n <>\n )}\n \n );\n};\n","import { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { Button, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { downloadFileFromBlob } from 'src/utils/fileUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { PurchaseClient } from 'src/WebApiController';\n\nexport type RequestEventDetailsViewProps = {\n isRequestingEventDetails: boolean;\n setIsRequestingEventDetails: (isOpen: boolean) => void;\n setIsLoading: (isLoading: boolean) => void;\n};\n\nexport function RequestEventDetailsView({\n isRequestingEventDetails,\n setIsRequestingEventDetails,\n setIsLoading,\n}: RequestEventDetailsViewProps) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const onAnswer = useCallback(\n (hasEventId: boolean) => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const file = await new PurchaseClient(\n activeAccountWebClientConfig\n ).downloadPurchaseFileTemplate(hasEventId);\n\n if (file) {\n downloadFileFromBlob(\n file.fileName ?? 'purchase-creation-template.csv',\n file.data\n );\n }\n },\n (error) => {\n showErrorDialog('PurchaseClient.downloadPurchaseFileTemplate', error);\n },\n () => {\n setIsLoading(false);\n setIsRequestingEventDetails(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n setIsRequestingEventDetails,\n setIsLoading,\n showErrorDialog,\n ]\n );\n\n return (\n isRequestingEventDetails && (\n <>\n \n \n {\n onAnswer(false);\n }}\n >\n \n \n {\n onAnswer(true);\n }}\n >\n \n \n \n \n )\n );\n}\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { ComponentProps, useCallback, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { DownloadButton } from 'src/components/Buttons/DownloadButton';\nimport {\n bulkEditInProgress,\n BulkEditStatus,\n} from 'src/components/common/BulkActions/BulkEditStatus';\nimport { PURCHASE_BULK_UPLOAD_PURCHASE_KEY } from 'src/components/Purchases/PurchaseActionDropdown';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useBulkEditHubContext } from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { PURCHASE_TIME_PERIOD_CONTAINER_QUERY_KEY } from 'src/contexts/PurchaseDataContext/PurchaseDataContext.constants';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { DnDFileUploader } from 'src/core/POS/DnDFileUploader';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Button, Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { downloadFileFromBlob } from 'src/utils/fileUtils';\nimport {\n ListingCatalogMetricsQueryKey,\n ListingCatalogQueryKey,\n} from 'src/utils/inventoryUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditProgress,\n BulkEditPurchaseClient,\n BulkEditStep,\n Feature,\n PurchaseClient,\n} from 'src/WebApiController';\n\nimport { BulkEditHeader } from '../common/BulkEditHeader';\nimport { RequestEventDetailsView } from './components/RequestEventDetailsView';\n\nexport type BulkUploadPurchaseDialogProps = ComponentProps & {\n onCancel: () => void;\n};\n\nexport function BulkUploadPurchaseDialog({\n onCancel,\n ...rest\n}: BulkUploadPurchaseDialogProps) {\n const queryClient = useQueryClient();\n\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const [isLoading, setIsLoading] = useState(false);\n const [uploadedFile, setUploadeFile] = useState();\n const [isRequestingEventDetails, setIsRequestingEventDetails] =\n useState(false);\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n refreshCatalog,\n } = useCatalogDataContext();\n const { refreshData } = usePurchaseDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n\n const onBulkEditProgressDone = useCallback(async () => {\n setActivePosEntity(0);\n queryClient.refetchQueries({\n queryKey: [ListingCatalogQueryKey],\n type: 'all',\n });\n queryClient.refetchQueries({\n queryKey: [ListingCatalogQueryKey],\n type: 'all',\n });\n queryClient.refetchQueries({\n queryKey: [ListingCatalogMetricsQueryKey],\n type: 'all',\n });\n queryClient.refetchQueries({\n queryKey: [\n PURCHASE_TIME_PERIOD_CONTAINER_QUERY_KEY,\n activeAccountWebClientConfig.activeAccountId,\n ],\n type: 'all',\n });\n\n if (refreshData) {\n await refreshData(true);\n }\n if (refreshExpandedListItems) {\n await refreshCatalog();\n await refreshExpandedListItems();\n }\n }, [\n activeAccountWebClientConfig.activeAccountId,\n queryClient,\n refreshCatalog,\n refreshData,\n refreshExpandedListItems,\n setActivePosEntity,\n ]);\n\n const onCancelDialog = useCallback(async () => {\n setIsRequestingEventDetails(false);\n\n setIsRefreshing(true);\n setActivePosEntity(0);\n if (refreshData) {\n await refreshData(true);\n }\n if (refreshExpandedListItems) {\n await refreshCatalog();\n await refreshExpandedListItems();\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n\n onCancel();\n }, [\n onCancel,\n refreshCatalog,\n refreshData,\n refreshExpandedListItems,\n setActivePosEntity,\n ]);\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n onCancelDialog();\n }\n },\n [\n onCancelDialog,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n await onBulkEditProgressDone();\n onClose(doneProgress, true);\n }\n },\n [onBulkEditProgressDone, onClose]\n );\n\n const { bulkEditHub, progress, errors, warnings, initJob } = useBulkEditHub(\n ActionOutboxEntityType.Purchase,\n BulkActionType.UploadPurchaseFile,\n PURCHASE_BULK_UPLOAD_PURCHASE_KEY,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n const hasBulkDownloadEventPromptFeature = useUserHasFeature(\n Feature.BulkDownloadEventPrompt\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const onUploadPurchaseFile = useCallback(() => {\n if (!uploadedFile) {\n return;\n }\n\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const result = await new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n ).importPurchaseFromFile(\n PURCHASE_BULK_UPLOAD_PURCHASE_KEY,\n hasBackgroundBulkEditFeature,\n {\n data: uploadedFile,\n fileName: uploadedFile!.name,\n }\n );\n\n if (!hasBackgroundBulkEditFeature) {\n if (result.success) {\n onCancel();\n } else {\n showErrorDialog(\n 'PurchaseClient.importPurchaseFromFile',\n {\n message: result.errors.join('\\n'),\n },\n {\n trackErrorData: { uploadedFile },\n }\n );\n }\n }\n },\n (error) => {\n showErrorDialog('PurchaseClient.importPurchaseFromFile', error, {\n trackErrorData: { uploadedFile },\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n }, [\n activeAccountWebClientConfig,\n hasBackgroundBulkEditFeature,\n onCancel,\n showErrorDialog,\n uploadedFile,\n ]);\n\n const onDownloadTemplateClick = useCallback(() => {\n setIsRequestingEventDetails(true);\n }, []);\n\n const onDownloadTemplateClickNoPrompt = useCallback(() => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const file = await new PurchaseClient(\n activeAccountWebClientConfig\n ).downloadPurchaseFileTemplate(true);\n\n if (file) {\n downloadFileFromBlob(\n file.fileName ?? 'purchase-creation-template.csv',\n file.data\n );\n }\n },\n (error) => {\n showErrorDialog('PurchaseClient.downloadPurchaseFileTemplate', error);\n },\n () => setIsLoading(false)\n );\n }, [activeAccountWebClientConfig, showErrorDialog]);\n\n return (\n <>\n {\n initJob();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n header={\n }\n />\n }\n footer={\n <>\n \n {(progress?.step !== BulkEditStep.Done ||\n Boolean(progress?.failureCount)) && (\n {\n onUploadPurchaseFile();\n }}\n >\n {progress?.failureCount ? (\n \n ) : (\n \n )}\n \n )}\n \n }\n onCancel={isLoading ? undefined : onCancelDialog}\n >\n {hasBulkDownloadEventPromptFeature ? (\n \n {isLoading && !isRequestingEventDetails ? (\n \n ) : (\n \n {isRequestingEventDetails ? (\n \n ) : (\n \n )}\n files[0] && setUploadeFile(files[0])}\n multiple={false}\n acceptedFileTypes={['.csv']}\n />\n \n )}\n \n ) : (\n \n {isLoading ? (\n \n ) : (\n \n \n files[0] && setUploadeFile(files[0])}\n multiple={false}\n acceptedFileTypes={['.csv']}\n />\n \n )}\n \n )}\n \n \n );\n}\n","import { ComponentProps } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { IconsFill, UploadIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { BulkUploadPurchaseDialog } from './BulkUploadPurchaseDialog';\n\nexport type LaunchBulkUploadPurchaseDialogProps = ComponentProps<\n typeof Button\n> & { className?: string };\n\nexport const LaunchBulkUploadPurchaseDialog = ({\n variant = 'link',\n ...props\n}: LaunchBulkUploadPurchaseDialogProps) => {\n const bulkUploadPurchaseDialog = useBasicDialog();\n\n const onBulkUploadPurchase = () => {\n bulkUploadPurchaseDialog.launchDialog();\n };\n\n return (\n <>\n \n \n \n );\n};\n","import { useContent } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { LaunchBulkUploadPurchaseDialog } from 'src/dialogs/BulkEdits/BulkUploadPurchaseDialog';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { IconsFill, MoreIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Permission } from 'src/WebApiController';\n\nexport const PurchaseGlobalActionDropdown = ({\n showBulkUpload,\n}: {\n showBulkUpload?: boolean;\n}) => {\n const actionsMsg = useContent(ContentId.Actions);\n\n const hasPurchaseUpdatePermission = useUserHasAnyOfPermissions(\n Permission.Purchases_Edit,\n Permission.Purchases_EditOwned\n );\n\n if (!showBulkUpload && !hasPurchaseUpdatePermission) {\n return null;\n }\n\n return (\n <>\n \n \n \n }\n align=\"end\"\n triggerProps={{ disabled: false }}\n >\n {showBulkUpload && (\n \n )}\n \n \n );\n};\n","import { ReactNode } from 'react';\nimport { getDeliveryTypeIcon } from 'src/utils/ticketTypeUtils';\nimport { DeliveryType } from 'src/WebApiController';\n\nexport const getDeliveryTypeIcons = () => {\n const InApp = getDeliveryTypeIcon(DeliveryType.InApp);\n const MemberCard = getDeliveryTypeIcon(DeliveryType.MemberCard);\n const PDF = getDeliveryTypeIcon(DeliveryType.PDF);\n const Paper = getDeliveryTypeIcon(DeliveryType.Paper);\n const Wallet = getDeliveryTypeIcon(DeliveryType.Wallet);\n const Custom = getDeliveryTypeIcon(DeliveryType.Custom);\n\n return {\n [DeliveryType.InApp]: InApp,\n [DeliveryType.MemberCard]: MemberCard,\n [DeliveryType.PDF]: PDF,\n [DeliveryType.Paper]: Paper,\n [DeliveryType.Wallet]: Wallet,\n [DeliveryType.Custom]: Custom,\n } as Record;\n};\n","import { PosEnumSelect, PosEnumSelectProps } from 'src/core/POS/PosSelect';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { DELIVERY_OPTIONS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { DeliveryType, Feature, Permission } from 'src/WebApiController';\n\nimport { getDeliveryTypeIcons } from './DeliveryTypeSelector.utils';\n\nexport type DeliveryTypeSelectorProps = Omit<\n PosEnumSelectProps,\n 'valueOptionsContent' | 'valueOptionsIcon'\n> & {\n valueOptionsContent?: Record;\n // Use this when the delivery type is used for read only purposes (filter, etc)\n allowCustomDeliveryType?: boolean;\n};\n\nexport const DeliveryTypeSelector = ({\n allowCustomDeliveryType,\n placeholderText = ContentId.AllDeliveryOptions,\n valueOptionsContent,\n ...rest\n}: DeliveryTypeSelectorProps) => {\n const hasCustomDeliveryTypeFeature = useUserHasFeature(\n Feature.CustomDeliveryType\n );\n\n const canSetCustomDeliveryType = useUserHasAnyOfPermissions(\n Permission.Purchases_UpdateCustomDeliveryType,\n Permission.Purchases_UpdateCustomDeliveryTypeOwned\n );\n\n const moderatedOptionsContent = Object.entries(\n valueOptionsContent ?? DELIVERY_OPTIONS_TO_CID\n ).reduce(\n (acc, [key, val]) => {\n if (\n key === DeliveryType.Custom &&\n ((!allowCustomDeliveryType && !canSetCustomDeliveryType) ||\n !hasCustomDeliveryTypeFeature)\n ) {\n return acc;\n }\n\n if (key === DeliveryType.Wallet) {\n return acc;\n }\n\n return { ...acc, [key]: val };\n },\n {} as Record\n );\n\n return (\n \n );\n};\n","import { useQuery, UseQueryResult } from '@tanstack/react-query';\nimport { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PosSelectProps } from 'src/core/POS/PosSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { PurchaseClient, PurchasePaymentMethod } from 'src/WebApiController';\n\nexport type UsePurchasePaymentMethodSelectorOptions = {\n disabled?: boolean;\n additionalOptions?: Record;\n additionalOptionsPosition?: 'top' | 'bottom';\n};\n\nconst SEARCHABLE_OPTIONS_THRESHOLD = 10;\n\nexport function usePurchasePaymentMethodSelector({\n disabled,\n additionalOptions,\n additionalOptionsPosition = 'bottom',\n}: UsePurchasePaymentMethodSelectorOptions): {\n query: UseQueryResult;\n posSelectProps: Pick<\n PosSelectProps,\n 'placeholderText' | 'valueOptionsContent' | 'searchable' | 'loading'\n >;\n} {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n !disabled && activeAccountWebClientConfig.activeAccountId != null;\n const query = useQuery({\n queryKey: [\n 'PurchaseClient.getAccessiblePurchasePaymentMethods',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n return tryInvokeApi(\n () => {\n return new PurchaseClient(\n activeAccountWebClientConfig\n ).getAccessiblePurchasePaymentMethods();\n },\n (error) => {\n trackError(\n 'PurchaseClient.getAccessiblePurchasePaymentMethods',\n error\n );\n }\n );\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n staleTime: Infinity,\n networkMode: 'offlineFirst',\n meta: {\n persist: false, // we do not want this thing persisted between sessions\n },\n });\n\n const paymentMethodOptions = useMemo(() => {\n const paymentMethods =\n query.data?.toSorted((a, b) => {\n return a.display.localeCompare(b.display);\n }) ?? [];\n\n const options: Record = {};\n for (const { id, name, display } of paymentMethods) {\n options[id] = `${name} (${display})`;\n }\n return {\n ...(additionalOptionsPosition === 'top' ? additionalOptions : {}),\n ...options,\n ...(additionalOptionsPosition === 'bottom' ? additionalOptions : {}),\n };\n }, [query.data, additionalOptions, additionalOptionsPosition]);\n return {\n query,\n posSelectProps: {\n placeholderText: ContentId.ChoosePaymentMethodPlaceholder,\n valueOptionsContent: paymentMethodOptions,\n searchable:\n Object.keys(paymentMethodOptions).length > SEARCHABLE_OPTIONS_THRESHOLD,\n loading: query.isLoading,\n },\n };\n}\n","import { PosSelect, PosSelectProps } from 'src/core/POS/PosSelect';\n\nimport {\n usePurchasePaymentMethodSelector,\n UsePurchasePaymentMethodSelectorOptions,\n} from './usePurchasePaymentMethodSelector';\n\nexport type PurchasePaymentMethodSelectorProps = Omit<\n PosSelectProps,\n 'valueOptionsContent'\n> &\n UsePurchasePaymentMethodSelectorOptions;\n\nexport function PurchasePaymentMethodSelector({\n disabled,\n additionalOptions,\n additionalOptionsPosition,\n ...props\n}: PurchasePaymentMethodSelectorProps) {\n const { posSelectProps } = usePurchasePaymentMethodSelector({\n disabled,\n additionalOptions,\n additionalOptionsPosition,\n });\n return ;\n}\n","import { useQuery } from '@tanstack/react-query';\nimport {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useMemo,\n} from 'react';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n Feature,\n SellerAccountClient,\n SellerUserAccountInfo,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useContent } from '../ContentContext';\n\ntype ISellerAccountContext = {\n allUserInfos: Record | null; // List of all user-infos for the seller account (including deleted ones so they can be displayed on entity's ownership)\n allActiveUserInfos: Record | null; // List of all active user-infos for the seller account\n isLoading?: boolean;\n getUserInfo: (id: string) => SellerUserAccountInfo | null;\n refetchUserInfos: () => void;\n};\n\nexport const SellerAccountContext = createContext({\n allUserInfos: {},\n allActiveUserInfos: {},\n isLoading: false,\n getUserInfo: () => null,\n refetchUserInfos: () => {},\n});\n\nexport const useSellerAccountContext = () => useContext(SellerAccountContext);\n\nexport const SELLER_ACCOUNT_SELLER_USERS_QUERY_KEY =\n 'SellerAccountClient.getSellerUsersForSellerAccount';\n\n/**\n * Adds a modal to the page where the provider is added\n * Provides utils to set all or update part of the modal\n * The modal is assumed to be open when it contains content\n */\nexport const SellerAccountContextProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n const deactivatedText = useContent(ContentId.Deactivated);\n const hasDisplayDeactivatedUser = useUserHasFeature(\n Feature.DisplayDeactivatedUser\n );\n\n const getQuery = useQuery({\n queryKey: [\n SELLER_ACCOUNT_SELLER_USERS_QUERY_KEY,\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n const results = await new SellerAccountClient(\n activeAccountWebClientConfig\n ).getSellerUsersForSellerAccount();\n\n const resultsMap = results?.reduce>(\n (r, cur) => {\n r[cur.userId] = cur;\n return r;\n },\n {}\n );\n\n return resultsMap;\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('SellerAccountClient.getSellerUsersForSellerAccount', error);\n },\n },\n });\n\n const getUserInfo = useCallback(\n (userId: string) => {\n if (!userId || !getQuery.data) {\n return null;\n }\n\n return getQuery.data[userId];\n },\n [getQuery.data]\n );\n\n const allUserInfos = useMemo(() => {\n if (!getQuery.data) return null;\n\n return Object.values(getQuery.data).reduce<\n Record\n >((r, cur) => {\n if (cur.isDeactivated) {\n cur.displayName = `${cur.displayName} (${deactivatedText})`;\n }\n r[cur.userId] = cur;\n return r;\n }, {});\n }, [deactivatedText, getQuery.data]);\n\n const allActiveUserInfos = useMemo(() => {\n if (!getQuery.data) return null;\n\n return Object.values(getQuery.data)\n .filter((u) => !u.isDeactivated)\n .reduce>((r, cur) => {\n r[cur.userId] = cur;\n return r;\n }, {});\n }, [getQuery.data]);\n\n return (\n \n {children}\n \n );\n};\n","import Flexsearch from 'flexsearch';\nimport { ReactNode, useCallback, useMemo } from 'react';\nimport { Virtuoso } from 'react-virtuoso';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { CheckIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport {\n Content,\n getContent,\n isContentId,\n useContent,\n useContentContext,\n} from '../../../contexts/ContentContext';\nimport { PosDropdownItem } from '../PosDropdown';\nimport * as styles from './PosMultiSelect.css';\n\nconst EMPTY_CONTENT_DESIGNATOR = '____empty_content_____';\nconst USE_VIRTUOSO_MIN_OPTIONS_COUNT = 50;\n\nexport enum ToggleAllKeys {\n SelectAll = ContentId.SelectAll,\n ClearAll = ContentId.ClearAll,\n}\n\nexport const isToggleAllValue = (value: string | ContentId | null): boolean => {\n return (\n !!value &&\n (value === ToggleAllKeys.SelectAll || value === ToggleAllKeys.ClearAll)\n );\n};\n\nexport const PosMultiSelectOptions = ({\n contentHeight,\n selectedOptions,\n onChange,\n valueOptionsContent,\n valueOptionsIcon,\n emptySelectionText,\n searchText,\n sortMode = 'ascending',\n sortFn,\n useVirtualWindow: useVirtualWindowProp,\n expectedItemSizeForVirtualWindow = 40,\n flexSearchIndex,\n showSelectedOptionsFirst = true,\n showSelectAllOption,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage,\n includeSelectedInSearch,\n}: {\n contentHeight: string;\n selectedOptions: string[];\n onChange: (o: string | null) => void;\n emptySelectionText?: string | ContentId;\n valueOptionsContent: Record;\n valueOptionsIcon?: Record;\n searchText?: string | null;\n sortMode?: 'ascending' | 'descending' | 'none';\n sortFn?: (a: string, b: string) => number;\n useVirtualWindow?: boolean;\n expectedItemSizeForVirtualWindow?: number;\n flexSearchIndex?: Flexsearch.Index | null;\n showSelectedOptionsFirst?: boolean;\n showSelectAllOption: boolean;\n fetchNextPage?: () => void;\n hasNextPage?: boolean;\n isFetchingNextPage?: boolean;\n includeSelectedInSearch?: boolean;\n}) => {\n const contentContext = useContentContext();\n const valueOptionsKeys = Object.keys(valueOptionsContent);\n const hasOptions = valueOptionsKeys.length > 0;\n\n const useVirtualWindow = useMemo(() => {\n if (typeof useVirtualWindowProp === 'boolean') {\n return useVirtualWindowProp;\n }\n return (\n Object.keys(valueOptionsContent).length > USE_VIRTUOSO_MIN_OPTIONS_COUNT\n );\n }, [useVirtualWindowProp, valueOptionsContent]);\n\n const toggleKey = useMemo(() => {\n if (showSelectAllOption) {\n const allOptionsSelected =\n valueOptionsKeys.length === selectedOptions.length;\n return allOptionsSelected\n ? ToggleAllKeys.ClearAll\n : ToggleAllKeys.SelectAll;\n }\n\n // Hide SelectAll option\n return selectedOptions.length > 0 ? ToggleAllKeys.ClearAll : undefined;\n }, [selectedOptions, valueOptionsKeys, showSelectAllOption]);\n\n const selectItems = useMemo(() => {\n const topOptions: string[] = [];\n if (emptySelectionText) {\n topOptions.push(EMPTY_CONTENT_DESIGNATOR);\n } else if (hasOptions && toggleKey) {\n topOptions.push(toggleKey);\n }\n\n let keysToRender = Object.keys(valueOptionsContent);\n\n if (searchText && searchText.trim().length > 0) {\n keysToRender = flexSearchIndex?.search(searchText, {\n limit: keysToRender.length,\n }) as string[];\n }\n\n if (includeSelectedInSearch) {\n selectedOptions.forEach((item) => {\n if (!keysToRender.includes(item)) {\n keysToRender.push(item);\n }\n });\n }\n\n let selectItems = (keysToRender ?? []).toSorted((a: string, b: string) => {\n if (!sortMode || sortMode === 'none') {\n return 0;\n }\n\n const textA = getContent(valueOptionsContent[a], contentContext);\n const textB = getContent(valueOptionsContent[b], contentContext);\n\n let sortResult = textA\n .toLocaleUpperCase()\n .localeCompare(textB.toLocaleUpperCase());\n\n if (sortFn != null) {\n sortResult = sortFn(textA, textB);\n } else {\n const numberA = parseFloat(textA);\n const numberB = parseFloat(textB);\n if (!isNaN(numberA) && !isNaN(numberB)) {\n sortResult = numberA - numberB;\n }\n }\n\n return (sortMode === 'ascending' ? 1 : -1) * sortResult;\n });\n\n if (showSelectedOptionsFirst) {\n selectItems = [\n ...selectItems.filter((key) => selectedOptions.includes(key)),\n ...selectItems.filter((key) => !selectedOptions.includes(key)),\n ];\n }\n\n return topOptions.concat(selectItems);\n }, [\n contentContext,\n emptySelectionText,\n flexSearchIndex,\n hasOptions,\n includeSelectedInSearch,\n searchText,\n selectedOptions,\n showSelectedOptionsFirst,\n sortFn,\n sortMode,\n toggleKey,\n valueOptionsContent,\n ]);\n\n const renderItem = useCallback(\n (key: string) => {\n if (key === EMPTY_CONTENT_DESIGNATOR) {\n return (\n {\n onChange(null);\n }}\n keepOpenAfterSelection={true}\n >\n \n \n \n \n\n {selectedOptions.length === 0 && (\n \n )}\n \n \n );\n }\n\n if (isToggleAllValue(key) && toggleKey) {\n return (\n onChange(toggleKey)}\n selectedOptions={selectedOptions}\n includeSelectedInSearch={includeSelectedInSearch}\n />\n );\n }\n\n return (\n onChange(o)}\n filterText={searchText}\n selectedOptions={selectedOptions}\n includeSelectedInSearch={includeSelectedInSearch}\n />\n );\n },\n [\n emptySelectionText,\n includeSelectedInSearch,\n onChange,\n searchText,\n selectedOptions,\n toggleKey,\n valueOptionsContent,\n valueOptionsIcon,\n ]\n );\n\n return (\n
    \n {useVirtualWindow ? (\n renderItem(key)}\n endReached={() => {\n !isFetchingNextPage && hasNextPage && fetchNextPage?.();\n }}\n />\n ) : (\n \n {selectItems.map((key) => renderItem(key))}\n
    \n )}\n \n );\n};\n\nexport const FilteredOptionItem = ({\n optionKey,\n optionValue,\n prefixIcon,\n filterText,\n selectedOptions,\n onChange,\n includeSelectedInSearch,\n}: {\n optionKey: string;\n optionValue: string | ContentId;\n prefixIcon?: ReactNode;\n filterText?: string | null;\n selectedOptions: string[];\n onChange: (o: string | null) => void;\n includeSelectedInSearch?: boolean;\n}) => {\n const isSelected = selectedOptions.includes(optionKey);\n\n const contentWrapper = useCallback(\n (\n key: string | ContentId,\n content: string | JSX.Element,\n isSelected: boolean\n ) => {\n return (\n {\n onChange(key);\n }}\n onKeyUp={(k) => {\n if (k.key === 'Enter') {\n onChange(key);\n }\n }}\n keepOpenAfterSelection={true}\n >\n \n \n
    {prefixIcon}
    \n
    \n {content}\n
    \n
    \n {isSelected && (\n \n )}\n \n \n );\n },\n [onChange, prefixIcon]\n );\n\n if (filterText) {\n if (isContentId(optionValue)) {\n return (\n \n );\n } else if (\n optionValue?.toUpperCase()?.includes(filterText?.toUpperCase()) ||\n includeSelectedInSearch\n ) {\n return contentWrapper(optionKey, optionValue, isSelected);\n }\n return null;\n }\n\n return contentWrapper(optionKey, , isSelected);\n};\n\nexport const FilteredContent = ({\n optionKey,\n id,\n filterText,\n contentWrapper,\n isSelected,\n}: {\n optionKey: string | ContentId;\n id: ContentId;\n filterText: string;\n isSelected: boolean;\n contentWrapper: (\n key: string | ContentId,\n content: string | JSX.Element,\n isSelected: boolean\n ) => JSX.Element;\n}) => {\n const text = useContent(id);\n if (!text.toUpperCase().includes(filterText.toUpperCase())) {\n return null;\n }\n\n return contentWrapper(optionKey, , isSelected);\n};\n","import clsx from 'clsx';\nimport {\n ComponentPropsWithoutRef,\n forwardRef,\n ReactElement,\n ReactNode,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport {\n isFormatContentId,\n useContent,\n useFormattedContent,\n} from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useFlexSearchIndex } from 'src/hooks/useFlexSearchIndex';\nimport {\n CheckIcon,\n CrossIcon,\n ExpandIcon,\n FoldIcon,\n IconsFill,\n} from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\n\nimport { PosDropdown } from '../PosDropdown';\nimport { PosSpinner } from '../PosSpinner';\nimport { PosTextField } from '../PosTextField';\nimport * as styles from './PosMultiSelect.css';\nimport {\n isToggleAllValue,\n PosMultiSelectOptions,\n} from './PosMultiSelectOptions';\n\nconst MIN_ITEMS_COUNT_TO_HIDE_SELECT_ALL = 50;\n\nexport type PosMultiSelectProps = Omit<\n ComponentPropsWithoutRef,\n 'onChange'\n> & {\n values: string[];\n placeholderText?: string | ContentId;\n enableEmptySelection?: boolean;\n hasErrors?: boolean;\n onChange: (values: string[], searchText?: string | null) => void;\n leftIcon?: ReactNode;\n showClearButton?: boolean;\n closeAfterToggleAll?: boolean;\n valueOptionsContent: Record;\n valueOptionsIcon?: Record;\n disabled?: boolean;\n loading?: boolean;\n searchable?: boolean;\n /* this needs searchable to be true */\n allowSearchAsInput?: boolean;\n sortMode?: 'ascending' | 'descending' | 'none';\n sortFn?: (a: string, b: string) => number;\n useVirtualWindow?: boolean;\n expectedItemSizeForVirtualWindow?: number;\n contentHeight?: string;\n fullWidth?: boolean;\n showSelectedOptionsFirst?: boolean;\n showSelectAllOption?: boolean;\n fetchNextPage?: () => void;\n hasNextPage?: boolean;\n isFetchingNextPage?: boolean;\n onSearchTextChange?: (searchText: string) => void;\n includeSelectedInSearch?: boolean;\n valuesDisplayText?: string | null;\n prefixDisplay?: React.ReactNode;\n childrenAsTrigger?: boolean;\n pluralDisplayFormatContentId?: FormatContentId;\n};\n\nexport const PosMultiSelect = forwardRef(\n function PosMultiSelect(\n {\n values,\n placeholderText,\n enableEmptySelection,\n hasErrors,\n onChange,\n leftIcon,\n valueOptionsContent,\n valueOptionsIcon,\n disabled,\n loading,\n showClearButton,\n closeAfterToggleAll,\n searchable,\n allowSearchAsInput,\n rootProps,\n sortMode,\n sortFn,\n useVirtualWindow,\n expectedItemSizeForVirtualWindow,\n contentHeight,\n fullWidth,\n showSelectedOptionsFirst,\n showSelectAllOption: showSelectAllOptionProp,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage,\n onSearchTextChange,\n includeSelectedInSearch,\n valuesDisplayText,\n prefixDisplay,\n childrenAsTrigger,\n pluralDisplayFormatContentId,\n ...rest\n },\n ref\n ): ReactElement {\n const [searchText, setSearchText] = useState('');\n const [isOpen, setIsOpen] = useState(false);\n\n const showSelectAllOption = useMemo(() => {\n if (typeof showSelectAllOptionProp === 'boolean') {\n return showSelectAllOptionProp;\n }\n return (\n Object.keys(valueOptionsContent).length <\n MIN_ITEMS_COUNT_TO_HIDE_SELECT_ALL\n );\n }, [showSelectAllOptionProp, valueOptionsContent]);\n\n const { flexSearchIndex } = useFlexSearchIndex(\n valueOptionsContent,\n searchable,\n isOpen\n );\n\n const isBuildingSearchIndex = searchable && !flexSearchIndex;\n\n const onOpenChange = useCallback(\n (open: boolean) => {\n setIsOpen(open);\n rootProps?.onOpenChange?.(open);\n },\n [rootProps]\n );\n\n const valueDisplay =\n values.length === 1\n ? valueOptionsContent[values[0]]\n : values.length > 1\n ? pluralDisplayFormatContentId\n ? pluralDisplayFormatContentId\n : FormatContentId.ItemsSelected\n : null; // we only display value when we have only 1 value selected\n\n const singleValueContentDisplay = useContent(valueDisplay ?? undefined);\n const valueContentDisplay =\n useFormattedContent(\n valueDisplay && isFormatContentId(valueDisplay)\n ? valueDisplay\n : FormatContentId.EmptyContent,\n `${values.length}`\n ) || singleValueContentDisplay;\n\n placeholderText = placeholderText ?? ContentId.Select;\n const placeholderTextContent = useContent(placeholderText);\n\n const mergeSelectedValue = useCallback(\n (newValue: string | null) => {\n const isToggleAll = isToggleAllValue(newValue);\n const allValuesKeys = Object.keys(valueOptionsContent);\n const areValuesSelected = values.length === allValuesKeys.length;\n\n if (isToggleAll) {\n if (showSelectAllOption) {\n return areValuesSelected ? [] : allValuesKeys;\n } else {\n // It's clear all option, then clear all\n return [];\n }\n }\n\n if (newValue && values.includes(newValue)) {\n // Unselect\n return values.filter((v) => v !== newValue);\n }\n\n // If we allow empty selections, just clear the selected values\n if (enableEmptySelection && !newValue) {\n return [];\n }\n\n return newValue ? [...values, newValue] : [...values];\n },\n [valueOptionsContent, values, showSelectAllOption, enableEmptySelection]\n );\n\n const searchPlaceholder = useContent(\n allowSearchAsInput ? ContentId.SearchOrEnter : ContentId.Search\n );\n\n const onSearchTextApplied = useCallback(\n (searchText: string) => {\n const existingValue = Object.keys(valueOptionsContent).find(\n (k) =>\n valueOptionsContent[k]?.toLocaleUpperCase() ===\n searchText.toLocaleUpperCase()\n );\n\n if (existingValue) {\n onChange(mergeSelectedValue(existingValue));\n if (isToggleAllValue(existingValue) && closeAfterToggleAll) {\n setIsOpen(false);\n }\n } else if (allowSearchAsInput) {\n onChange(values, searchText);\n setIsOpen(false);\n }\n },\n [\n allowSearchAsInput,\n closeAfterToggleAll,\n mergeSelectedValue,\n onChange,\n valueOptionsContent,\n values,\n ]\n );\n\n const searchBox = useMemo(\n () => (\n
    \n input?.focus()}\n value={searchText}\n placeholder={searchPlaceholder}\n onChange={(e) => {\n setSearchText(e.target.value);\n onSearchTextChange?.(e.target.value);\n }}\n onKeyDown={(e) => {\n if (!disabled) {\n const key = e.key;\n if (key === 'Enter') {\n e.stopPropagation();\n\n // See if search-text matches any option, return it as a selection, else return searchText\n if (searchText) {\n onSearchTextApplied(searchText);\n }\n }\n }\n }}\n postfixDisplay={\n searchText && (\n <>\n {allowSearchAsInput && (\n {\n e.stopPropagation();\n e.preventDefault();\n onSearchTextApplied(searchText);\n }}\n />\n )}\n {\n e.stopPropagation();\n e.preventDefault();\n setSearchText('');\n onSearchTextChange?.('');\n }}\n />\n \n )\n }\n />\n
    \n ),\n [\n allowSearchAsInput,\n disabled,\n onSearchTextApplied,\n onSearchTextChange,\n searchPlaceholder,\n searchText,\n ]\n );\n\n return (\n \n {childrenAsTrigger ? (\n <>{rest.children}\n ) : (\n \n \n {prefixDisplay}\n {leftIcon}\n
    \n {valuesDisplayText\n ? valuesDisplayText\n : !valueDisplay\n ? placeholderTextContent || placeholderText\n : valueContentDisplay}\n
    \n \n \n {showClearButton && values.length > 0 && (\n {\n e.stopPropagation();\n onChange([], null);\n }}\n />\n )}\n {isOpen ? (\n \n ) : (\n \n )}\n \n \n )}\n \n }\n >\n {loading || isBuildingSearchIndex ? (\n \n ) : (\n <>\n {searchable && searchBox}\n {\n onChange(mergeSelectedValue(v), null);\n if (isToggleAllValue(v) && closeAfterToggleAll) {\n setIsOpen(false);\n }\n }}\n valueOptionsContent={valueOptionsContent}\n valueOptionsIcon={valueOptionsIcon}\n searchText={searchText}\n emptySelectionText={\n enableEmptySelection ? placeholderText : undefined\n }\n sortMode={sortMode}\n sortFn={sortFn}\n useVirtualWindow={useVirtualWindow}\n expectedItemSizeForVirtualWindow={\n expectedItemSizeForVirtualWindow\n }\n contentHeight={\n contentHeight\n ? contentHeight\n : searchable\n ? 'calc(var(--radix-popper-available-height) - 60px - 16px)'\n : 'calc(var(--radix-popper-available-height) - 16px)'\n }\n flexSearchIndex={flexSearchIndex}\n showSelectedOptionsFirst={showSelectedOptionsFirst}\n showSelectAllOption={showSelectAllOption}\n fetchNextPage={fetchNextPage}\n hasNextPage={hasNextPage}\n isFetchingNextPage={isFetchingNextPage}\n includeSelectedInSearch={includeSelectedInSearch}\n />\n \n )}\n \n );\n }\n);\n","import { useMemo } from 'react';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport {\n PosMultiSelect,\n PosMultiSelectProps,\n} from 'src/core/POS/PosMultiSelect';\nimport { EMPTY_SELLER_USER_ID } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const SellerAccountEmployeeMultiSelector = ({\n placeholderText,\n ...props\n}: Omit & {\n showEmail?: boolean;\n allowUnchanged?: boolean;\n}) => {\n const { allActiveUserInfos } = useSellerAccountContext();\n\n const unchanged = useContent(ContentId.DontChange);\n\n const allActiveUserOptions = useMemo(() => {\n if (!allActiveUserInfos) return {};\n\n const results = {} as Record;\n if (props.allowUnchanged) {\n results[EMPTY_SELLER_USER_ID] = unchanged;\n }\n\n Object.values(allActiveUserInfos).reduce((r, cur) => {\n r[cur.userId] = props.showEmail\n ? `${cur.displayName} (${cur.email})`\n : cur.displayName;\n return r;\n }, results);\n\n return results;\n }, [allActiveUserInfos, props.allowUnchanged, props.showEmail, unchanged]);\n\n return (\n \n );\n};\n","import {useQuery} from '@tanstack/react-query';\nimport {useAppContext} from 'src/contexts/AppContext';\nimport {ErrorTypes, useErrorBoundaryContext,} from 'src/contexts/ErrorBoundaryContext';\nimport {FulfillmentProviderClient} from 'src/WebApiController';\n\nexport const useGetFulfillmentProviderSettings = () => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const shouldQuery =\n activeAccountWebClientConfig.activeAccountId != null;\n const fulfillmentProviderSettingsQuery = useQuery({\n queryKey: [\n 'FulfillmentProviderClient.getFulfillmentProviderSettings',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n return await new FulfillmentProviderClient(\n activeAccountWebClientConfig\n ).getFulfillmentProviderSettings();\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n showErrorDialog('FulfillmentProviderClient.getFulfillmentProviderSettings', error, {\n trackErrorData: {\n activeAccountId: activeAccountWebClientConfig.activeAccountId,\n },\n });\n },\n },\n });\n\n return {\n fulfillmentProviderSettings: fulfillmentProviderSettingsQuery.data,\n fulfillmentProviderSettingsQuery\n };\n};\n","import * as styles from './FulfillmentProviders.css';\nimport { Card } from \"reactstrap\";\nimport { Switch } from \"src/core/ui\";\nimport { useCallback, useState } from \"react\";\nimport { FulfillmentProviderClient } from \"src/WebApiController\";\nimport { tryInvokeApi } from \"src/utils/tryExecuteUtils\";\nimport { useAppContext } from \"src/contexts/AppContext\";\nimport {useErrorBoundaryContext} from \"src/contexts/ErrorBoundaryContext\";\n\ninterface FulfillmentProviderCardProps {\n logo: JSX.Element | null;\n fulfillmentProviderSellerUserId: string;\n name: string;\n description: string;\n enabled: boolean;\n}\n\nexport const FulfillmentProviderCard: React.FC = ({ logo, fulfillmentProviderSellerUserId, name, description, enabled }) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const [isSwitchChecked, setIsSwitchChecked] = useState(enabled);\n const { trackError } = useErrorBoundaryContext();\n\n const toggleFulfillmentProviderSetting = useCallback(\n async (isChecked: boolean) => {\n const originalState = isSwitchChecked;\n setIsSwitchChecked(isChecked);\n\n await tryInvokeApi(\n async () => {\n const fulfillmentProviderClient = new FulfillmentProviderClient(\n activeAccountWebClientConfig\n );\n\n const succeeded = await fulfillmentProviderClient.toggleFulfillmentProviderSetting(\n fulfillmentProviderSellerUserId,\n isChecked\n );\n\n if (!succeeded) {\n setIsSwitchChecked(originalState);\n }\n },\n (error) => {\n setIsSwitchChecked(originalState);\n trackError('FulfillmentProviderClient.ToggleFulfillmentProviderSetting', error);\n }\n );\n },\n [activeAccountWebClientConfig, fulfillmentProviderSellerUserId, isSwitchChecked]\n );\n\n return (\n \n
    \n
    \n \n {logo}\n \n \n {name}\n \n
    \n
    \n {description}\n
    \n
    \n
    \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n toggleFulfillmentProviderSetting(isChecked);\n }}\n />\n
    \n
    \n );\n};\n","import { PosIconProps } from './SvgWrapper';\n\nexport function TradedeskTransferLogo(props: Omit) {\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","import { PosIconProps } from './SvgWrapper';\n\nexport function TdcTransferLogo(props: Omit) {\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","import { PosIconProps } from './SvgWrapper';\n\nexport function TaciyonLogo(props: Omit) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { PosIconProps } from './SvgWrapper';\n\nexport function StubhubFulfillmentLogo(props: Omit) {\n return (\n \n \n \n \n );\n}\n","import * as styles from './FulfillmentProviders.css';\nimport { Content } from \"src/contexts/ContentContext\";\nimport { ContentId } from \"src/utils/constants/contentId\";\nimport {\n FulfillmentProviderCard\n} from \"src/navigations/Routes/Settings/Views/FulfillmentProviders/FulfillmentProviderCard\";\nimport { Stack } from \"src/core/ui\";\nimport { useGetFulfillmentProviderSettings } from \"src/hooks/useGetFulfillmentProviderSettings\";\nimport { TradedeskTransferLogo } from \"src/svgs/TradedeskTransferLogo\";\nimport { TdcTransferLogo } from \"src/svgs/TdcTransferLogo\";\nimport { TaciyonLogo } from \"src/svgs/TaciyonLogo\";\nimport { StubhubFulfillmentLogo } from \"src/svgs/StubhubFulfillmentLogo\";\n\nexport const MapFulfillmentProviderToIcon = (providerName: string) => {\n // TODO: switch to mapping icon to guid instead of name once they are created in the DB\n switch (providerName.toLowerCase()) {\n case \"stubhub fulfillment\":\n return ;\n case \"taciyon\":\n return ;\n case \"tradedesk transfer\":\n return ;\n case \"transfer\":\n return ;\n default:\n return null;\n }\n};\n\nexport const FulfillmentProviders = () => {\n const {\n fulfillmentProviderSettings\n } = useGetFulfillmentProviderSettings();\n\n const providers = fulfillmentProviderSettings ?? [];\n\n return (\n
    \n
    \n
    \n

    \n \n

    \n
    \n \n
    \n
    \n \n {providers.length > 0 ? (\n providers.map(provider => (\n \n ))\n ) : (\n
    \n \n
    \n )}\n
    \n
    \n
    \n
    \n
    \n );\n};\n","import { ReactNode, useMemo } from 'react';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { PosSelect, PosSelectProps } from 'src/core/POS/PosSelect';\nimport { useGetFulfillmentProviderSettings } from 'src/hooks/useGetFulfillmentProviderSettings';\nimport { MapFulfillmentProviderToIcon } from 'src/navigations/Routes/Settings/Views/FulfillmentProviders';\nimport {\n EMPTY_SELLER_USER_ID,\n FULFILLMENT_PROVIDER_SELLER_USER_IDS,\n} from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const SellerAccountEmployeeSelector = ({\n placeholderText,\n ...props\n}: Omit & {\n showEmail?: boolean;\n allowUnchanged?: boolean;\n isFulfillmentSection?: boolean;\n}) => {\n const { allActiveUserInfos } = useSellerAccountContext();\n const unchanged = useContent(ContentId.DontChange);\n const { fulfillmentProviderSettings } = useGetFulfillmentProviderSettings();\n\n const allActiveUserOptions = useMemo(() => {\n if (!allActiveUserInfos) return {};\n\n const results = {} as Record;\n if (props.allowUnchanged) {\n results[EMPTY_SELLER_USER_ID] = unchanged;\n }\n\n if (props.isFulfillmentSection) {\n if (fulfillmentProviderSettings?.length) {\n fulfillmentProviderSettings.forEach((provider) => {\n if (provider.isEnabled) {\n results[provider.fulfillmentProviderSellerUserId] =\n provider.fulfillmentProviderName;\n }\n });\n }\n }\n\n Object.values(allActiveUserInfos).reduce((r, cur) => {\n r[cur.userId] = props.showEmail\n ? `${cur.displayName} (${cur.email})`\n : cur.displayName;\n return r;\n }, results);\n\n return results;\n }, [\n allActiveUserInfos,\n fulfillmentProviderSettings,\n props.allowUnchanged,\n props.isFulfillmentSection,\n props.showEmail,\n unchanged,\n ]);\n\n const allActiveValueOptionIcons = useMemo(() => {\n if (!allActiveUserOptions) return {};\n\n const results = {} as Record;\n for (const [sellerUserId, displayName] of Object.entries(\n allActiveUserOptions\n )) {\n if (FULFILLMENT_PROVIDER_SELLER_USER_IDS.has(sellerUserId)) {\n results[sellerUserId] = MapFulfillmentProviderToIcon(displayName);\n }\n }\n\n return results;\n }, [allActiveUserOptions]);\n\n return (\n 10\n }\n sortFn={(sellerIdA, sellerIdB) => {\n if (sellerIdA === EMPTY_SELLER_USER_ID) {\n return -1;\n }\n if (sellerIdB === EMPTY_SELLER_USER_ID) {\n return 1;\n }\n const isFulfillmentA =\n FULFILLMENT_PROVIDER_SELLER_USER_IDS.has(sellerIdA);\n const isFulfillmentB =\n FULFILLMENT_PROVIDER_SELLER_USER_IDS.has(sellerIdB);\n\n if (!isFulfillmentA && !isFulfillmentB) {\n return (allActiveUserOptions[sellerIdA] ?? '').localeCompare(\n allActiveUserOptions[sellerIdB] ?? ''\n );\n }\n\n if (isFulfillmentA && !isFulfillmentB) {\n return -1;\n } else if (!isFulfillmentA && isFulfillmentB) {\n return 1;\n } else if (isFulfillmentA && isFulfillmentB) {\n const aDisplayName = allActiveUserOptions[sellerIdA];\n const bDisplayName = allActiveUserOptions[sellerIdB];\n if (aDisplayName < bDisplayName) {\n return -1;\n } else if (aDisplayName > bDisplayName) {\n return 1;\n }\n }\n return 0;\n }}\n loading={allActiveUserInfos == null}\n placeholderText={placeholderText ?? ContentId.Everyone}\n valueOptionsContent={allActiveUserOptions}\n valueOptionsIcon={allActiveValueOptionIcons}\n sortBy=\"key\"\n />\n );\n};\n","/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\nimport clsx from 'clsx';\nimport { ChangeEvent, ComponentProps, ReactNode, useRef } from 'react';\nimport { vars } from 'src/core/themes';\nimport { CheckIcon, IconsFill, MinusIcon } from 'src/svgs/Viagogo';\n\nimport * as styles from './Checkbox.css';\n\ntype CheckboxProps = {\n onChange: (e: ChangeEvent) => void;\n checked: boolean;\n indeterminate?: boolean;\n disabled?: boolean;\n labelPosition?: 'left' | 'right';\n name?: string;\n label?: ReactNode | null;\n error?: string | (() => string | null | undefined);\n small?: boolean;\n} & Omit, 'onChange' | 'disabled'>;\n\nconst getRenderedMessage = (message: CheckboxProps['error']) =>\n typeof message === 'function' ? message() : message;\n\nexport const Checkbox = ({\n onChange,\n checked = false,\n indeterminate = false,\n disabled = false,\n labelPosition = 'left',\n name = '',\n label,\n error,\n small,\n ...props\n}: CheckboxProps) => {\n const errorMessage = getRenderedMessage(error);\n const inputRef = useRef(null);\n\n return (\n <>\n {\n if (disabled) return;\n\n if (inputRef.current) {\n inputRef.current.click();\n }\n }}\n >\n \n {labelPosition === 'left' && label != null &&
    {label}
    }\n \n {checked && !indeterminate && (\n \n )}\n {checked && indeterminate && (\n \n )}\n \n {labelPosition === 'right' && label != null && (\n \n {label}\n \n )}\n \n {error &&
    {errorMessage}
    }\n \n );\n};\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n ReactElement,\n ReactNode,\n} from 'react';\nimport { vars } from 'src/core/themes';\nimport { Tooltip } from 'src/core/ui';\nimport { mergeProps } from 'src/core/utils';\nimport { IconsFill, WarningSolidIcon } from 'src/svgs/Viagogo';\n\nimport * as styles from './PosFormField.css';\n\nexport type PosFormFieldProps = React.PropsWithChildren<{\n label?: ReactNode;\n errors?: string | string[];\n warnings?: string | string[];\n showErrorsInline?: boolean;\n doNotShowErrorDetails?: boolean;\n labelPosition?: 'top' | 'bottom' | undefined;\n}>;\n\nexport const PosFormField = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<'div'> & PosFormFieldProps\n>(function PosFormField(\n {\n label,\n errors,\n warnings,\n showErrorsInline,\n doNotShowErrorDetails,\n children,\n labelPosition = 'top',\n ...rest\n },\n ref\n): ReactElement {\n const isArray = Array.isArray(errors);\n const errorsDiv = errors && (\n
    \n {isArray ? (\n (errors as string[]).map((er, i) => (\n
    \n {er}\n
    \n ))\n ) : (\n
    {errors}
    \n )}\n
    \n );\n const warningsDiv = warnings && (\n
    \n {isArray ? (\n (warnings as string[]).map((er, i) => (\n
    \n {er}\n
    \n ))\n ) : (\n
    {warnings}
    \n )}\n
    \n );\n\n return (\n \n {labelPosition === 'top' && label}\n
    \n {children}\n {errors && showErrorsInline && (\n \n \n
    \n }\n >\n {errorsDiv}\n \n )}\n {warnings && showErrorsInline && (\n \n \n \n }\n >\n {warningsDiv}\n \n )}\n \n {labelPosition === 'bottom' && label}\n {!showErrorsInline && !doNotShowErrorDetails && errorsDiv}\n {!showErrorsInline && !doNotShowErrorDetails && warningsDiv}\n \n );\n});\n","import clsx from 'clsx';\nimport { differenceInDays } from 'date-fns';\nimport { FormatContent } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport {\n CalendarOutlineIcon,\n IconsFill,\n ToBeDeterminedIcon,\n} from 'src/svgs/Viagogo';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { getEventDateDisplayStrings } from 'src/utils/dateTimeUtils';\n\nimport * as styles from './EventDateDisplay.css';\n\nexport type EventDateDisplayProps = {\n eventDateString?: string;\n /**\n * Optional end date that is used to calculate and show the number of dates after the date.\n *\n * eg. Feb 12 - 2:30pm, Sunday (3 days)\n */\n eventEndDateString?: string;\n /**\n * If `eventDate` is `undefined`, shows a `ToBeDeterminedIcon` instead of the event date if this\n * is set to `true`. Otherwise if `false`, event date will be fully omitted.\n */\n showEventDateTbd?: boolean;\n eventDateFormat?: string;\n eventSubDateFormat?: string;\n slimMode?: boolean;\n className?: string;\n};\n\nexport function EventDateDisplay({\n slimMode,\n eventDateString,\n eventEndDateString,\n showEventDateTbd,\n eventDateFormat,\n eventSubDateFormat,\n className,\n}: EventDateDisplayProps) {\n if (eventDateString) {\n const numDays: number =\n eventDateString && eventEndDateString\n ? differenceInDays(\n new Date(eventEndDateString),\n new Date(eventDateString)\n ) + 1\n : 0;\n\n const { formattedEventDate, formattedEventSubDate } =\n getEventDateDisplayStrings(eventDateString, {\n dateFormat: eventDateFormat,\n subDateFormat: eventSubDateFormat,\n });\n return (\n \n {!slimMode && (\n
    \n \n
    \n )}\n \n \n {formattedEventDate}\n \n \n {formattedEventSubDate}\n {numDays > 1 && (\n <>\n {' '}\n (\n \n )\n \n )}\n \n
    \n \n );\n }\n if (showEventDateTbd) {\n return (\n \n );\n }\n return null;\n}\n","import { Path } from '@remix-run/router/history';\nimport clsx from 'clsx';\nimport * as React from 'react';\nimport { MouseEvent, useCallback, useMemo } from 'react';\nimport { Link, LinkProps } from 'react-router-dom';\n\nimport * as styles from './PosLink.css';\n\ntype PosLinkProps = Omit &\n React.RefAttributes & {\n to: string | undefined | null;\n variant?: 'brand';\n };\n\n/**\n * Wrapper of react-router-dom Link component.\n * property \"to\" accepts a string | undefined |null. It can be a full URL or\n * path with query string parameters.\n * If not \"to\" is passed, then nothing happens when clicking the link.\n */\nexport const PosLink = ({\n children,\n onClick,\n to,\n className,\n variant,\n ...rest\n}: PosLinkProps) => {\n const onEventNameClick = useCallback(\n (e: MouseEvent) => {\n if (!to) {\n e.stopPropagation();\n e.preventDefault();\n }\n onClick?.(e);\n },\n [to, onClick]\n );\n\n const toProps = useMemo | string>(() => {\n if (!to) {\n return '';\n }\n try {\n const url = new URL(to, window.location.origin);\n return {\n pathname: url.pathname,\n search: url.search,\n searchParams: url.searchParams,\n };\n } catch (e) {\n return '';\n }\n }, [to]);\n\n return (\n \n {children}\n \n );\n};\n","import { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { ErrorOutlineIcon, IconsFill } from 'src/svgs/Viagogo';\n\nimport * as styles from './MessageWithIcon.css';\n\nexport const FailureMessage = ({\n message,\n}: {\n message: string | JSX.Element;\n}) => {\n return (\n \n \n
    {message}
    \n
    \n );\n};\n","import { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { IconsFill, SuccessOutlineIcon } from 'src/svgs/Viagogo';\n\nimport * as styles from './MessageWithIcon.css';\n\nexport const SuccessMessage = ({\n message,\n}: {\n message: string | JSX.Element;\n}) => {\n return (\n \n \n
    {message}
    \n
    \n );\n};\n","import { CSSProperties } from 'react';\nimport { vars } from 'src/core/themes';\nimport { Stack, StackProps } from 'src/core/ui';\nimport { IconsFill, WarningOutlineIcon } from 'src/svgs/Viagogo';\n\nimport * as styles from './MessageWithIcon.css';\n\nexport const WarningMessage = ({\n message,\n iconSize = vars.iconSize.l,\n messageStyle,\n ...rest\n}: {\n message: string | JSX.Element;\n iconSize?: string;\n messageStyle?: CSSProperties;\n} & StackProps) => {\n return (\n \n \n
    \n {message}\n
    \n \n );\n};\n","import styled from 'styled-components/macro';\n\nexport const BlinkingWrapper = styled.div`\n line-height: 0;\n &.blink-on {\n animation: blink-animation 1s steps(10, start) infinite;\n -webkit-animation: blink-animation 1s steps(10, start) infinite;\n transition: all 0.2s;\n }\n @keyframes blink-animation {\n to {\n opacity: 0.5;\n }\n }\n @-webkit-keyframes blink-animation {\n to {\n opacity: 0.5;\n }\n }\n`;\n","import styled, { keyframes } from 'styled-components/macro';\n\nconst CircleWrapperAnimation = keyframes`\n 0% {\n transform: rotate(0);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n`;\n\nexport const RotatingWrapper = styled.div`\n display: flex;\n &.blink-on {\n animation: blink-animation 1s steps(10, start) infinite;\n -webkit-animation: blink-animation 1s steps(10, start) infinite;\n transition: all 0.2s;\n }\n\n svg {\n animation: ${CircleWrapperAnimation} 1s linear infinite;\n }\n`;\n","import { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { ProcessingIcon } from 'src/svgs/Viagogo';\n\nimport { RotatingWrapper } from '../../ui/AnimatingWrapper';\nimport * as styles from './MessageWithIcon.css';\n\nexport const WorkingMessage = ({\n message,\n}: {\n message: string | JSX.Element;\n}) => {\n return (\n \n \n \n \n
    {message}
    \n
    \n );\n};\n","import {\n Content,\n FormatContent,\n isContentId,\n useContent,\n} from 'src/contexts/ContentContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n EVENT_MAPPING_STATE_FILTER_TO_CID,\n MAPPING_REJECTION_REASON_ID_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EventMappingStateFilter } from 'src/utils/eventQueryUtils';\n\nimport * as styles from './EventInfo.css';\n\nexport type EventMappingStateDisplayProps = {\n eventMappingState?:\n | EventMappingStateFilter.Pending\n | EventMappingStateFilter.Rejected;\n mappingRejectionReasonId?: number | null;\n mappingRejectionReasonDescriptionDefault?: string | null;\n};\n\nexport function EventMappingStateDisplay({\n eventMappingState,\n mappingRejectionReasonId,\n mappingRejectionReasonDescriptionDefault,\n}: EventMappingStateDisplayProps) {\n const requestStateText = useContent(\n EVENT_MAPPING_STATE_FILTER_TO_CID[\n eventMappingState ?? EventMappingStateFilter.Pending\n ]\n );\n\n const eventMappingRejectionReason = mappingRejectionReasonId\n ? MAPPING_REJECTION_REASON_ID_TO_CID[mappingRejectionReasonId] ??\n mappingRejectionReasonDescriptionDefault\n : undefined;\n\n if (eventMappingState == null) {\n return null;\n }\n\n if (eventMappingState === EventMappingStateFilter.Rejected) {\n return (\n \n \n \n \n \n \n \n {': '}\n {eventMappingRejectionReason &&\n isContentId(eventMappingRejectionReason) ? (\n \n ) : (\n eventMappingRejectionReason\n )}\n \n \n }\n />\n \n );\n }\n\n return (\n \n \n }\n />\n \n );\n}\n","import clsx from 'clsx';\nimport { ReactNode } from 'react';\nimport { Stack } from 'src/core/ui';\n\nimport * as styles from './EventNameDisplay.css';\n\nexport type EventNameDisplayProps = {\n eventName?: ReactNode;\n /**\n * Portion of the event name to be displayed with less emphasis.\n */\n eventNameConnector?: ReactNode;\n eventSubName?: ReactNode;\n className?: string;\n slimMode?: boolean;\n showTitle?: boolean;\n boldSubName?: boolean;\n useBigStyle?: boolean;\n};\n\nexport function EventNameDisplay({\n eventName,\n eventNameConnector,\n eventSubName,\n className,\n slimMode,\n showTitle = true,\n boldSubName = false,\n useBigStyle = false,\n}: EventNameDisplayProps) {\n return (\n \n {eventNameConnector && !eventSubName && (\n <>\n \n {eventNameConnector}\n {' '}\n \n )}\n {eventName}\n {eventNameConnector && eventSubName && (\n <>\n {' '}\n \n {eventNameConnector}\n {' '}\n \n {eventSubName}\n \n \n )}\n \n );\n}\n","import clsx from 'clsx';\nimport { ReactNode } from 'react';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { IconsFill, LocationOutlineIcon } from 'src/svgs/Viagogo';\n\nimport * as styles from './VenueNameDisplay.css';\n\nexport type VenueNameDisplayProps = {\n venueName?: ReactNode;\n /**\n * The location of the venue (eg. City, State).\n */\n venueLocation?: ReactNode;\n slimMode?: boolean;\n showTitle?: boolean;\n};\n\nexport function VenueNameDisplay({\n venueName,\n venueLocation,\n slimMode,\n showTitle = true,\n}: VenueNameDisplayProps) {\n return venueName || venueLocation ? (\n \n {(venueName || venueLocation) && (\n <>\n {!slimMode && (\n
    \n \n
    \n )}\n \n {venueName && (\n \n {venueName}\n \n )}\n {venueLocation && (\n <>\n {/* TODO: create a component for joining react components */}\n {venueName && <>  }\n \n {venueLocation}\n \n \n )}\n
    \n \n )}\n \n ) : null;\n}\n","import clsx from 'clsx';\nimport { ReactNode } from 'react';\nimport { PosLink } from 'src/core/POS/PosLink/PosLink';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ParkingPassIcon } from 'src/svgs/Viagogo';\nimport { EventPageLocationState } from 'src/utils/types/EventPageLocationState';\nimport { Feature, TopLevelCategory } from 'src/WebApiController';\n\nimport { EventDateDisplay } from './EventDateDisplay';\nimport * as styles from './EventInfo.css';\nimport {\n EventMappingStateDisplay,\n EventMappingStateDisplayProps,\n} from './EventMappingStateDisplay';\nimport { EventNameDisplay } from './EventNameDisplay';\nimport { VenueNameDisplay } from './VenueNameDisplay';\n\nexport type EventInfoProps = {\n eventName?: ReactNode;\n /**\n * Portion of the event name to be displayed with less emphasis.\n */\n eventNameConnector?: ReactNode;\n eventSubName?: ReactNode;\n eventDateString?: string;\n /**\n * Optional end date that is used to calculate and show the number of dates after the date.\n *\n * eg. Feb 12 - 2:30pm, Sunday (3 days)\n */\n eventEndDateString?: string;\n /**\n * If `eventDate` is `undefined`, shows a `ToBeDeterminedIcon` instead of the event date if this\n * is set to `true`. Otherwise if `false`, event date will be fully omitted.\n */\n showEventDateTbd?: boolean;\n /**\n * Whether to show the year in the event date\n */\n showYear?: boolean;\n venueName?: ReactNode;\n /**\n * The location of the venue (eg. City, State).\n */\n venueLocation?: ReactNode;\n /**\n * Whether to show the mapping state (pending, rejected) of the event.\n */\n showMappingState?: boolean;\n /* Show only event name\n */\n eventNameOnly?: boolean;\n /* Show venue and date in smaller/compressed style */\n slimMode?: boolean;\n showParkingPassIcon?: boolean;\n\n eventGenre?: TopLevelCategory;\n eventNameLink?: string;\n} & EventMappingStateDisplayProps;\n\n/**\n * Component that shows event info.\n * @param props\n * @returns\n */\nexport function EventInfo({\n eventName,\n eventNameConnector,\n eventSubName,\n eventDateString,\n eventEndDateString,\n showEventDateTbd,\n showMappingState,\n mappingRejectionReasonId,\n mappingRejectionReasonDescriptionDefault,\n eventMappingState,\n showYear = false,\n venueName,\n venueLocation,\n eventNameOnly,\n slimMode,\n showParkingPassIcon = false,\n eventGenre,\n eventNameLink,\n}: EventInfoProps) {\n const canLinkEventName = useUserHasFeature(Feature.LinkEventName);\n const eventDisplayName = (\n \n );\n\n return (\n \n \n {canLinkEventName ? (\n \n {eventDisplayName}\n \n ) : (\n eventDisplayName\n )}\n {showParkingPassIcon && (\n \n )}\n \n {!eventNameOnly &&\n (venueName ||\n venueLocation ||\n eventDateString ||\n eventEndDateString) && (\n \n \n \n \n )}\n {showMappingState && (\n \n )}\n \n );\n}\n","import { EventInfo, EventInfoProps } from 'src/components/Events/EventInfo';\nimport {\n EVENT_TYPE_PARKING,\n getFormattedEventName,\n} from 'src/utils/eventWithDataUtils';\nimport { getFormattedLocation } from 'src/utils/format';\nimport { Event, Performer, Venue } from 'src/WebApiController';\n\nimport * as styles from '../EventInfo/EventNameDisplay/EventNameDisplay.css';\n\nexport type ConnectedEventInfoProps = Pick<\n EventInfoProps,\n | 'showEventDateTbd'\n | 'showYear'\n | 'showMappingState'\n | 'eventMappingState'\n | 'mappingRejectionReasonId'\n | 'mappingRejectionReasonDescriptionDefault'\n | 'eventNameOnly'\n | 'slimMode'\n> & {\n event?: Event | null;\n performer?: Performer | null;\n venue?: Venue | null;\n\n useShortName?: boolean;\n eventNameLink?: string;\n};\n\nexport function ConnectedEventInfo({\n event,\n performer,\n venue,\n useShortName,\n ...eventInfoProps\n}: ConnectedEventInfoProps) {\n let eventName: string | null = null;\n let eventNameConnector: string | null = null;\n let eventSubName: string | null = null;\n\n [eventName, eventNameConnector, eventSubName] = getFormattedEventName({\n event,\n performer,\n useShortName,\n });\n\n const eventNameNode =\n eventInfoProps.slimMode && eventName ? (\n {eventName}\n ) : (\n eventName\n );\n\n const venueName = useShortName\n ? venue?.shortName || venue?.name\n : venue?.name;\n\n return (\n \n );\n}\n","import { ReactNode } from 'react';\nimport {\n ConnectedEventInfo,\n ConnectedEventInfoProps,\n} from 'src/components/Events/ConnectedEventInfo';\nimport { Stack } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { EventMappingStateFilter } from 'src/utils/eventQueryUtils';\nimport { Event, EventWithData, Performer, Venue } from 'src/WebApiController';\n\nimport * as styles from './EventItemHeader.css';\n\nexport const METRICS_PLACEHOLDER_DIMS = { width: '50px' };\n\nexport type EventItemHeaderType = {\n event: Event;\n entityCount: number;\n performer?: Performer | null;\n venue?: Venue | null;\n hideYearFromDate: boolean;\n mainMetrics?: string | React.ReactNode;\n subMetrics?: string[] | React.ReactNode[];\n};\n\nexport type EventItemHeaderComponentType = Pick<\n ConnectedEventInfoProps,\n 'showYear' | 'showMappingState'\n> & {\n event: Event;\n performer?: Performer | null;\n venue?: Venue | null;\n actions?: ReactNode;\n headerMetrics?: ReactNode;\n metrics?: ReactNode;\n eventNameLink?: string;\n};\n\n/**\n * Wraps `ConnectedEventInfo` and adds actions and metrics.\n * @param props\n * @returns\n */\nexport const EventItemHeader = ({\n showYear,\n event,\n performer,\n venue,\n actions,\n headerMetrics,\n metrics,\n showMappingState,\n eventNameLink,\n}: EventItemHeaderComponentType) => {\n const isMobile = useMatchMedia('mobile');\n\n const eventMappingState =\n event.viagId == null\n ? event.mapRejRsnId != null\n ? EventMappingStateFilter.Rejected\n : EventMappingStateFilter.Pending\n : undefined; // Mapped is not used for display yet\n\n const afterContent = (\n <>\n \n {actions}\n {headerMetrics}\n \n \n {metrics}\n \n \n );\n\n return (\n \n \n {isMobile ? (\n afterContent\n ) : (\n \n {afterContent}\n \n )}\n \n );\n};\n","import { ReactNode } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './Metrics.css';\n\nexport type ListingMainMetricsProps = {\n ticketsCount: ReactNode;\n};\n\nexport function ListingMainMetrics({ ticketsCount }: ListingMainMetricsProps) {\n return (\n
    \n {ticketsCount} \n
    \n );\n}\n\nexport type ListingSubMetricsProps = {\n totalUnsoldListPrice: ReactNode;\n totalNetProceeds: ReactNode;\n totalGrossMargin: ReactNode;\n};\n\nexport function ListingSubMetrics({\n totalUnsoldListPrice,\n totalNetProceeds,\n totalGrossMargin,\n}: ListingSubMetricsProps) {\n return (\n
    \n {totalUnsoldListPrice}\n {totalNetProceeds}\n {totalGrossMargin}\n
    \n );\n}\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const Metrics = styled.span`\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n text-align: right;\n line-height: 18px;\n white-space: nowrap;\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('caption1')};\n`;\n\nexport const MainMetrics = styled.span`\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('subtitle1')};\n`;\n\nexport const BulletPoint = styled.span<{ addBulletPoint?: boolean }>`\n width: ${() => vars.spacing.xxs};\n height: ${() => vars.spacing.xxs};\n margin: ${() => `0 ${vars.spacing.sm}`};\n ${(props) =>\n props.addBulletPoint\n ? `background-color: ${props.theme.colors.borderPrimary}`\n : ''};\n border-radius: ${() => vars.spacing.xxs};\n display: inline-block;\n vertical-align: middle;\n`;\n","import { ReactNode } from 'react';\n\nimport { MainMetrics, Metrics } from './MetricsDisplay.styled';\n\nexport const MetricsDisplay = ({\n className,\n mainMetrics,\n subMetrics,\n subMetricBelow,\n style,\n}: {\n className?: string;\n mainMetrics: ReactNode;\n subMetrics?: ReactNode;\n subMetricBelow?: boolean;\n style?: React.CSSProperties;\n}) => {\n return (\n \n {!subMetricBelow && subMetrics}\n {mainMetrics}\n {subMetricBelow && subMetrics}\n \n );\n};\n","import clsx from 'clsx';\nimport { ComponentProps, ReactNode } from 'react';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\n\nimport * as styles from './ContentPlaceholder.css';\n\nexport type ContentPlaceholderProps = Pick<\n ComponentProps<'div'>,\n 'className' | 'style'\n> & {\n width?: string;\n height?: string;\n isCircle?: boolean;\n children?: ReactNode;\n};\n\nexport const ContentPlaceholder = ({\n width = '100%',\n height = '100%',\n isCircle = false,\n children,\n className,\n ...rest\n}: ContentPlaceholderProps) => {\n const { isDarkMode } = useSiteTheme();\n return (\n \n {children}\n \n );\n};\n","import { ContentPlaceholder } from 'src/core/POS/ContentPlaceholder';\nimport styled from 'styled-components/macro';\n\nimport * as styles from './MetricsDisplay.css';\n\nconst SUB_HEIGHT = '10px';\nexport const MetricsDisplayPlaceholder = ({\n width = '100%',\n height = '100%',\n}: {\n width?: string;\n height?: string;\n}) => {\n return (\n \n \n \n \n );\n};\n\nconst MetricsPlaceholderWrapper = styled.div<{ width: string; height: string }>`\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: ${({ width }) => width};\n height: ${({ height }) => height};\n`;\n","import { calc } from '@vanilla-extract/css-utils';\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { vars } from 'src/core/themes';\n\nimport * as styles from './CircleProgressBar.css';\n\n/**\n * Glyph widths in px for a font size of 24px.\n */\nconst GLYPH_WIDTHS = {\n '-': 11.25,\n ',': 5.09,\n '.': 4.97,\n '%': 20.63,\n '1': 11.75,\n '2': 15.13,\n '3': 15.83,\n '4': 16.28,\n '5': 15.47,\n '6': 15.84,\n '7': 13.94,\n '8': 15.88,\n '9': 15.84,\n};\n/**\n * Arbitrary default width of 13px.\n */\nconst DEFAULT_GLYPH_WIDTH = 13;\n\n/**\n * The maximum text width assuming the default props.\n */\nconst MAX_TEXT_WIDTH = 56;\n\n/**\n * @param text\n * @param maxTextWidth\n * @returns The estimated font scaling factor needed to fit within the given `maxTextWidth`.\n */\nconst calcEstimatedFontScale = (text: string, maxTextWidth: number) => {\n let textWidth = 0;\n for (const c of text) {\n textWidth +=\n GLYPH_WIDTHS[c as keyof typeof GLYPH_WIDTHS] ?? DEFAULT_GLYPH_WIDTH;\n }\n // since we set a letter spacing of `-0.0625em` which comes out to -1px with a font size of 24px,\n // we reduce by this amount between each letter\n const letterSpacingOffset = -(text.length - 1);\n return maxTextWidth / (textWidth + letterSpacingOffset);\n};\n\n/**\n * -100%\n */\nconst MIN_VALUE = -100;\n/**\n * 200%\n */\nconst MAX_VALUE = 200;\n\nexport type CircleProgressBarProps = {\n /**\n * Height and width of the bounding box.\n */\n size?: number;\n /**\n * Thickness of the progress bar.\n */\n barWidth?: number;\n /**\n * Progress percentage. This does not affect what text is displayed in the center.\n *\n * eg. `75` for 75%\n */\n value?: number;\n /**\n * Text to render in the center of the circle.\n */\n children?: string;\n};\n\nexport function CircleProgressBar({\n size = 48,\n barWidth = 6,\n value = 0,\n children,\n}: CircleProgressBarProps) {\n const { isDarkMode } = useSiteTheme();\n\n value = Math.min(Math.max(value, MIN_VALUE), MAX_VALUE);\n\n const radius = (size - barWidth) / 2;\n const center = radius + barWidth / 2;\n const circumference = 2 * Math.PI * radius;\n\n const relativePercent = (value / 100) % 1 || Math.sign(value);\n const offset = circumference * (1 - relativePercent);\n\n const foregroundColor =\n value < 0\n ? !isDarkMode\n ? vars.color.backgroundDisabled\n : vars.color.borderError\n : value <= 100\n ? !isDarkMode\n ? vars.color.backgroundBrandActive\n : vars.color.textBrand\n : !isDarkMode\n ? '#2D0F54'\n : vars.color.textBrand;\n\n const backgroundColor =\n value < 0\n ? !isDarkMode\n ? 'transparent'\n : vars.color.backgroundPrimaryActive\n : value <= 100\n ? !isDarkMode\n ? vars.color.backgroundBrandHoverLight\n : vars.color.backgroundPrimaryActive\n : vars.color.backgroundBrandActive;\n\n return (\n
    \n \n \n \n \n 4\n ? {\n fontSize: calc(vars.typography.fontSize['2xl'])\n .multiply(calcEstimatedFontScale(children, MAX_TEXT_WIDTH))\n .toString(),\n }\n : {}),\n }}\n >\n {children}\n
    \n \n );\n}\n","import clsx from 'clsx';\nimport { ComponentProps, PropsWithChildren, ReactNode } from 'react';\nimport {\n CircleProgressBar as OriginalCircleProgressBar,\n CircleProgressBarProps,\n} from 'src/core/POS/CircleProgressBar';\nimport { ContentPlaceholder } from 'src/core/POS/ContentPlaceholder';\nimport { shared, vars } from 'src/core/themes';\nimport { mergeProps } from 'src/core/utils';\n\nimport * as styles from './MetricTile.css';\nimport { ArrowDownIcon7, ArrowUpIcon7 } from 'src/svgs/Viagogo';\nimport { PosIconProps } from 'src/svgs/SvgWrapper';\nimport { getCurrentLanguage } from 'src/utils/localeUtils';\n\ntype RootProps = Pick, 'style' | 'className'> &\n PropsWithChildren;\n\nexport function Root({ children, ...props }: RootProps) {\n return (\n
    {children}
    \n );\n}\n\nexport function Title({\n isCompact,\n children,\n}: { isCompact?: boolean } & PropsWithChildren) {\n return isCompact ? (\n
    \n
    {children}
    \n
    \n ) : (\n
    {children}
    \n );\n}\n\nexport function Metric({\n isCompact: isCompact,\n showLoadingPlaceholders,\n children,\n}: PropsWithChildren<{\n isCompact?: boolean;\n /**\n * Whether to show a placeholder if the metric value is `undefined`.\n */\n showLoadingPlaceholders?: boolean;\n}>) {\n return (\n \n {showLoadingPlaceholders && children === undefined ? (\n \n ) : (\n children\n )}\n \n );\n}\n\nexport function FractionMetricText({\n numerator,\n denominator,\n}: {\n numerator: ReactNode;\n denominator: ReactNode;\n}) {\n return (\n
    \n
    {numerator}
    \n
    \n
    {denominator}
    \n
    \n );\n}\n\nexport function CircleProgressBar({\n ...props\n}: Pick) {\n return ;\n}\n\nexport function Link({ href, children }: PropsWithChildren<{ href?: string }>) {\n return (\n \n {children}\n \n );\n}\n\n/**\n * This component can be used for the \"See All\" link instead of `Link`.\n * @param props\n */\nexport function SeeAllLink({ href }: { href?: string }) {\n return See All >;\n}\n\nexport function PercentChangeMetricText({\n formattedCurrentValue,\n currentValue,\n previousValue,\n}: {\n formattedCurrentValue: string,\n currentValue: number,\n previousValue: number,\n }) {\n let percentageChangeValue: number | null = null;\n if (currentValue === previousValue) {\n percentageChangeValue = 0;\n }\n else if (currentValue !== 0 && previousValue !== 0) {\n percentageChangeValue = (currentValue - previousValue) / previousValue;\n }\n\n const percentageNumberFormatter = new Intl.NumberFormat(getCurrentLanguage(), {\n style: 'percent',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n\n const absPercentageChange = percentageChangeValue\n ? percentageNumberFormatter.format(Math.abs(percentageChangeValue))\n : \"\";\n const PercentageChangeArrowIcon = (props: PosIconProps) => {\n if (!percentageChangeValue) {\n return <>;\n }\n\n return percentageChangeValue && percentageChangeValue < 0\n ? \n : \n };\n\n return (\n
    \n
    {formattedCurrentValue}
    \n
    \n \n
    {absPercentageChange}
    \n
    \n
    \n );\n}\n","import { ReactNode } from 'react';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './Metrics.css';\n\nexport type ListingMainMetricsV2Props = {\n unsoldTicketsCount: ReactNode;\n ticketsCount: ReactNode;\n};\n\nexport function ListingMainMetricsV2({\n unsoldTicketsCount,\n ticketsCount,\n}: ListingMainMetricsV2Props) {\n const unsoldTicketsCountText = useContent(ContentId.NumberOfUnsoldTickets);\n return (\n
    \n {unsoldTicketsCount}\n {'/'}\n {ticketsCount} \n
    \n );\n}\n\nexport const DividerLine = () => {\n return
    ;\n};\n\nexport type ListingSubMetricsV2Props = {\n totalPandL: ReactNode;\n totalUnsoldCost: ReactNode;\n totalUnlistedQuantity: ReactNode;\n};\n\nexport function ListingSubMetricsV2({\n totalPandL,\n totalUnsoldCost,\n totalUnlistedQuantity,\n}: ListingSubMetricsV2Props) {\n const totalUnsoldCostText = useContent(ContentId.TotalCostOfUnsoldTickets);\n const pandLText = useContent(ContentId.PandLTitle);\n const totalUnlistedQuantityText = useContent(\n ContentId.NumberOfUnlistedTicketsDescription\n );\n\n return (\n
    \n \n {totalPandL}\n \n \n \n {totalUnsoldCost}\n \n \n \n {totalUnlistedQuantity}\n \n
    \n );\n}\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const UnlistedTicketsIcon = (props: PosIconProps) => {\n return (\n // It's import for the viewbox fo this SVG to stay this value else it won't resize properly\n \n \n \n \n );\n};\n","import clsx from 'clsx';\nimport {\n ListingMainMetrics,\n ListingSubMetrics,\n SaleHeaderMetrics,\n SaleMainMetrics,\n SaleSubMetrics,\n} from 'src/components/Metrics';\nimport {\n ListingMainMetricsV2,\n ListingSubMetricsV2,\n} from 'src/components/Metrics/ListingMetricsV2';\nimport {\n BaseContentProps,\n Content,\n FormatContent,\n} from 'src/contexts/ContentContext';\nimport { ContentPlaceholder } from 'src/core/POS/ContentPlaceholder';\nimport { vars } from 'src/core/themes';\nimport { MarginMetricIcon, SalesMetricIcon, SignalIcon } from 'src/svgs';\nimport { UnlistedTicketsIcon } from 'src/svgs/UnlistedTicketsIcon';\nimport {\n ListingMetrics,\n SaleMetrics,\n TicketGroupMetrics,\n UiMoney,\n} from 'src/WebApiController';\n\nimport { ContentId } from './constants/contentId';\nimport { FormatContentId } from './constants/formatContentId';\nimport { getCurrentLanguage } from './localeUtils';\nimport * as styles from './ticketMetricUtils.css';\n\n// TODO:\n// - Unit test file\n// - Are the other untranslated parts even used/needed?\nexport const getMetricsDisplay = (\n key: keyof SaleMetrics,\n params: BaseContentProps['params']\n) => {\n switch (key) {\n case 'qtySold':\n return ;\n case 'saleUnfilled':\n return ;\n case 'netProcs':\n return ;\n case 'marg':\n return ;\n case 'ttlCst':\n return ;\n default:\n return '';\n }\n};\n\nexport type InventorySummaryListingMetricsDisplayStrings = {\n formattedTotalSoldQuantity: string;\n formattedTotalTicketQuantity: string;\n formattedTotalSoldPercentage: string;\n formattedTotalListPrice: string;\n formattedTotalNetProceeds: string;\n formattedTotalGrossMargin: string;\n formattedAverageSalePrice: string;\n totalSoldPercentage: number;\n totalGrossMargin: number;\n};\n\nexport const getInventorySummaryListingMetricsDisplayStrings = (\n {\n soldQty: totalSoldQuantity,\n tktQty: totalTicketQuantity,\n currency: currencyCode,\n ttlListPrc: totalListPrice,\n netProcs: totalNetProceeds,\n pandL: totalGrossProfit,\n }: ListingMetrics,\n currency?: string | null\n) => {\n const quantityNumberFormat = new Intl.NumberFormat(getCurrentLanguage(), {\n style: 'decimal',\n notation: 'compact',\n });\n\n const curCode = currencyCode || currency || 'USD';\n const currencyNumberFormat = new Intl.NumberFormat(getCurrentLanguage(), {\n style: 'currency',\n notation: 'compact',\n currency: curCode,\n });\n\n const totalGrossMargin =\n totalGrossProfit?.amt > 0 && totalNetProceeds?.amt > 0\n ? totalGrossProfit.amt / totalNetProceeds.amt\n : 0;\n const totalSoldPercentage =\n totalTicketQuantity > 0 ? totalSoldQuantity / totalTicketQuantity : 0;\n const averageSalePrice =\n totalNetProceeds?.amt > 0 && totalSoldQuantity > 0\n ? totalNetProceeds?.amt / totalSoldQuantity\n : 0;\n return {\n formattedTotalSoldQuantity: quantityNumberFormat.format(\n totalSoldQuantity ?? 0\n ),\n formattedTotalTicketQuantity:\n quantityNumberFormat.format(totalTicketQuantity),\n formattedTotalSoldPercentage: (totalSoldPercentage ?? 0).toLocaleString(\n undefined,\n { style: 'percent', minimumFractionDigits: 0 }\n ),\n formattedTotalListPrice: new Intl.NumberFormat(getCurrentLanguage(), {\n style: 'currency',\n currency: curCode,\n }).format(totalListPrice?.amt ?? 0),\n formattedTotalNetProceeds: currencyNumberFormat.format(\n totalNetProceeds?.amt ?? 0\n ),\n formattedTotalGrossMargin: (totalGrossMargin ?? 0).toLocaleString(\n undefined,\n {\n style: 'percent',\n minimumFractionDigits: 0,\n }\n ),\n formattedAverageSalePrice: currencyNumberFormat.format(\n averageSalePrice ?? 0\n ),\n totalSoldPercentage,\n totalGrossMargin,\n };\n};\n\nexport const getInventoryListingMetricsDisplayStrings = (\n {\n tktQty: totalTicketQuantity,\n unsoldQty: totalUnsoldQuantity,\n listQty: totalListedQuantity,\n unlistQty: totalUnlistedQuantity,\n currency: currencyCode,\n ttlCst: totalCost,\n unsoldCst: totalUnsoldCost,\n ttlUnsoldListPrc: totalUnsoldListPrice,\n netProcs: totalNetProceeds,\n pandL: totalGrossProfit,\n }: ListingMetrics,\n currency?: string | null\n) => {\n const BIG_NUMBER_THRESHOLD = 1000;\n const curCode = currencyCode || currency || 'USD';\n\n const getFractionDigits = (val: number) =>\n val >= BIG_NUMBER_THRESHOLD ? 1 : 0;\n\n const getQuantityNumberFormat = () =>\n Intl.NumberFormat(undefined, {\n style: 'decimal',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n\n const getCurrencyNumberFormat = (val: number) =>\n Intl.NumberFormat(undefined, {\n style: 'currency',\n notation: 'compact',\n currency: curCode,\n minimumFractionDigits: getFractionDigits(val),\n maximumFractionDigits: getFractionDigits(val),\n });\n\n const totalCostAmount = totalCost?.amt ?? 0;\n const totalUnsoldCostAmount = totalUnsoldCost?.amt ?? 0;\n const totalUnsoldListPriceAmount = totalUnsoldListPrice?.amt ?? 0;\n const totalNetProceedsAmount = totalNetProceeds?.amt ?? 0;\n const totalGrossProfitAmount = totalGrossProfit?.amt ?? 0;\n const totalGrossMargin =\n totalNetProceeds?.amt > 0\n ? (totalGrossProfit?.amt ?? 0) / totalNetProceeds.amt\n : 0;\n\n return {\n formattedTotalTicketQuantity: getQuantityNumberFormat().format(\n totalTicketQuantity ?? 0\n ),\n formattedTotalUnsoldQuantity: getQuantityNumberFormat().format(\n totalUnsoldQuantity ?? 0\n ),\n formattedTotalListedQuantity: getQuantityNumberFormat().format(\n totalListedQuantity ?? 0\n ),\n formattedTotalUnlistedQuantity: getQuantityNumberFormat().format(\n totalUnlistedQuantity ?? 0\n ),\n formattedTotalCost:\n getCurrencyNumberFormat(totalCostAmount).format(totalCostAmount),\n formattedTotalUnsoldCost: getCurrencyNumberFormat(\n totalUnsoldCostAmount\n ).format(totalUnsoldCostAmount),\n formattedTotalUnsoldListPrice: getCurrencyNumberFormat(\n totalUnsoldListPriceAmount\n ).format(totalUnsoldListPriceAmount),\n formattedTotalNetProceeds: getCurrencyNumberFormat(\n totalNetProceedsAmount\n ).format(totalNetProceedsAmount),\n\n formattedTotalGrossMargin: totalGrossMargin.toLocaleString(undefined, {\n style: 'percent',\n minimumFractionDigits: 0,\n }),\n formattedTotalGrossProfit: getCurrencyNumberFormat(\n totalGrossProfitAmount\n ).format(totalGrossProfitAmount),\n };\n};\n\ntype InventoryListingMetricsDisplay = {\n mainMetrics: JSX.Element;\n subMetrics: JSX.Element;\n};\n\n/**\n * Displaying metrics for the inventory listing (v2)\n * Main Metric: UnsoldTickets / TotalTickets\n * Sub Metrics: UnsoldCost, ListedQuantity, UnlistedQuantity\n */\nexport const getInventoryListingMetricsV2 = (\n metrics: ListingMetrics | null | undefined,\n currencyCode?: string | null\n): InventoryListingMetricsDisplay => {\n if (!metrics) {\n return {\n mainMetrics: ,\n subMetrics: (\n \n \n \n }\n totalUnsoldCost={\n <>\n \n \n }\n totalUnlistedQuantity={\n <>\n \n \n \n }\n />\n ),\n };\n }\n const {\n formattedTotalTicketQuantity,\n formattedTotalUnsoldQuantity,\n formattedTotalUnsoldCost: displayTotalUnsoldCost,\n formattedTotalGrossProfit,\n formattedTotalUnlistedQuantity,\n } = getInventoryListingMetricsDisplayStrings(metrics, currencyCode);\n\n const isLoss = (metrics.pandL?.amt ?? 0) < 0;\n const isProfit = (metrics.pandL?.amt ?? 0) > 0;\n const displayTotalGrossProfit = `${\n isProfit ? '+' : ''\n }${formattedTotalGrossProfit}`;\n\n return {\n mainMetrics: (\n \n ),\n subMetrics: (\n \n \n {displayTotalGrossProfit}\n \n \n }\n totalUnsoldCost={\n <>\n {displayTotalUnsoldCost}\n \n }\n totalUnlistedQuantity={\n <>\n \n \n \n {formattedTotalUnlistedQuantity}\n \n }\n />\n ),\n };\n};\n\nexport const addMoneySameCurrency = (\n a: UiMoney | null | undefined,\n b: UiMoney | null | undefined,\n removeDecimals?: boolean,\n keepDecimalsForValuesLessThanOne?: boolean,\n skipDisplay?: boolean\n): UiMoney | null => {\n if (!a && !b) {\n return null;\n }\n if (a && !b) {\n return a;\n }\n if (!a && b) {\n return b;\n }\n\n const amt = a!.amt + b!.amt;\n if (keepDecimalsForValuesLessThanOne && amt < 1) {\n removeDecimals = false;\n }\n\n let disp: string | null = null;\n\n if (!skipDisplay) {\n const dispFormat = new Intl.NumberFormat(undefined, {\n minimumFractionDigits: removeDecimals ? 0 : a!.dec,\n maximumFractionDigits: removeDecimals ? 0 : a!.dec,\n style: 'currency',\n currency: a!.currency ?? 'USD',\n });\n\n disp = dispFormat.format(amt);\n }\n\n return {\n amt,\n disp,\n currency: a!.currency,\n dec: a!.dec,\n };\n};\n\nexport const addListingMetrics = (\n metricA: ListingMetrics,\n metricB: ListingMetrics\n): ListingMetrics => {\n const currencyCode = metricA.currency;\n\n const addListingMoney = (\n a: UiMoney | null | undefined,\n b: UiMoney | null | undefined\n ) =>\n addMoneySameCurrency(\n a,\n b,\n false, // removeDecimal\n true, // keepDecimalForValueLessThanOne\n true // skipDisplay\n );\n\n return {\n tktQty: metricA.tktQty + metricB.tktQty,\n soldQty: metricA.soldQty + metricB.soldQty,\n unsoldQty: metricA.unsoldQty + metricB.unsoldQty,\n listQty: metricA.listQty + metricB.listQty,\n unlistQty: metricA.listQty + metricB.unlistQty,\n currency: currencyCode,\n\n ttlCst: addListingMoney(metricA.ttlCst, metricB.ttlCst)!,\n soldCst: addListingMoney(metricA.soldCst, metricB.soldCst)!,\n unsoldCst: addListingMoney(metricA.unsoldCst, metricB.unsoldCst)!,\n ttlListPrc: addListingMoney(metricA.ttlListPrc, metricB.ttlListPrc)!,\n ttlUnsoldListPrc: addListingMoney(\n metricA.ttlUnsoldListPrc,\n metricB.ttlUnsoldListPrc\n )!,\n netProcs: addListingMoney(metricA.netProcs, metricB.netProcs)!,\n pandL: addListingMoney(metricA.pandL, metricB.pandL)!,\n };\n};\n\nexport const addSaleMetrics = (\n metricA: SaleMetrics,\n metricB: SaleMetrics\n): SaleMetrics => {\n const currencyCode = metricA.currency ?? metricB.currency;\n\n return {\n qtySold: metricA.qtySold + metricB.qtySold,\n saleUnfilled: metricA.saleUnfilled + metricB.saleUnfilled,\n netProcs: addMoneySameCurrency(\n metricA.netProcs,\n metricB.netProcs,\n true, // removeDecimal\n true, // keepDecimalForValueLessThanOne\n true // skipDisplay\n ),\n ttlCst: addMoneySameCurrency(\n metricA.ttlCst,\n metricB.ttlCst,\n true, // removeDecimal\n true, // keepDecimalForValueLessThanOne\n true // skipDisplay\n ),\n currency: currencyCode,\n marg:\n metricA.marg == null && metricB.marg == null\n ? null\n : (metricA.marg ?? 0) + (metricB.marg ?? 0),\n };\n};\n\nexport const addTicketGroupMetrics = (\n metricA: TicketGroupMetrics,\n metricB: TicketGroupMetrics\n): TicketGroupMetrics => {\n const currencyCode = metricA.currency ?? metricB.currency;\n\n return {\n tktQty: metricA.tktQty + metricB.tktQty,\n ttlCst: addMoneySameCurrency(\n metricA.ttlCst,\n metricB.ttlCst,\n true, // removeDecimal\n true, // keepDecimalForValueLessThanOne\n true // skipDisplay\n ),\n currency: currencyCode,\n };\n};\n\nexport const getInventoryListingMetrics = (\n metrics: ListingMetrics | null | undefined,\n currencyCode?: string | null\n): InventoryListingMetricsDisplay => {\n if (!metrics) {\n return {\n mainMetrics: ,\n subMetrics: (\n \n \n \n \n }\n totalNetProceeds={\n <>\n \n \n \n }\n totalGrossMargin={\n <>\n \n \n \n }\n />\n ),\n };\n }\n const {\n formattedTotalTicketQuantity,\n formattedTotalUnsoldListPrice,\n formattedTotalNetProceeds,\n formattedTotalGrossMargin,\n } = getInventoryListingMetricsDisplayStrings(metrics, currencyCode);\n return {\n mainMetrics: (\n \n ),\n subMetrics: (\n \n \n \n \n {formattedTotalUnsoldListPrice}\n \n }\n totalNetProceeds={\n <>\n \n \n \n {formattedTotalNetProceeds}\n \n }\n totalGrossMargin={\n <>\n \n \n \n {formattedTotalGrossMargin}\n \n }\n />\n ),\n };\n};\n\nexport const getSalesSaleMetrics = (\n metrics: SaleMetrics | null | undefined,\n addBulletPoint = true,\n firstBulletPoint = true,\n secondBulletPoint = true\n) => {\n return metrics === undefined\n ? null\n : !metrics\n ? { headerMetrics: [], mainMetrics: '', subMetrics: [] }\n : {\n headerMetrics: (\n 0} />\n ),\n mainMetrics: (\n \n ),\n subMetrics: (\n \n ),\n };\n};\n\nexport const getEmptyMetric = () =>\n ({\n ticketsTotal: 0,\n qtySold: 0,\n saleUnfilled: 0,\n netProcs: { disp: '' } as UiMoney,\n ttlCst: { disp: '' } as UiMoney,\n marg: 0,\n currency: null,\n }) as SaleMetrics;\n","import { Content } from 'src/contexts/ContentContext';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { formatPercent } from 'src/utils/numberFormatter';\nimport { getMetricsDisplay } from 'src/utils/ticketMetricUtils';\nimport { Permission } from 'src/WebApiController';\n\nimport * as styles from './Metrics.css';\nimport { BulletPoint } from './MetricsDisplay/MetricsDisplay.styled';\n\nexport type SaleMainMetricsProps = {\n totalNetProceeds: string | null;\n};\n\nexport function SaleMainMetrics({ totalNetProceeds }: SaleMainMetricsProps) {\n const hasTotalNetProceedsPermissions = useUserHasAnyOfPermissions(\n Permission.Sales_ViewProceeds,\n Permission.Sales_ViewRecentProceeds\n );\n return totalNetProceeds == null ? (\n hasTotalNetProceedsPermissions ? (\n \n ) : null\n ) : (\n {totalNetProceeds}\n );\n}\n\nexport type SaleHeaderMetricsProps = {\n needFulfillment: boolean;\n};\n\nexport function SaleHeaderMetrics({ needFulfillment }: SaleHeaderMetricsProps) {\n return needFulfillment ? (\n
    \n \n
    \n ) : null;\n}\n\nexport type SaleSubMetricsProps = {\n margin: number | null;\n ticketsFulfilled: number;\n ticketsSold: number;\n addBulletPoint?: boolean;\n firstBulletPoint?: boolean;\n secondBulletPoint?: boolean;\n};\n\nexport function SaleSubMetrics({\n margin,\n ticketsFulfilled,\n ticketsSold,\n addBulletPoint = true,\n firstBulletPoint = true,\n secondBulletPoint = true,\n}: SaleSubMetricsProps) {\n const hasCostMarginPermission = useUserHasAnyOfPermissions(\n Permission.Sales_ViewCostAndMargin\n );\n\n return (\n \n {margin == null ? (\n hasCostMarginPermission ? (\n \n ) : null\n ) : (\n {getMetricsDisplay('marg', `${formatPercent(margin)}`)}\n )}\n {firstBulletPoint && }\n \n {getMetricsDisplay(\n 'saleUnfilled',\n `${ticketsFulfilled}/${ticketsSold}`\n )}\n \n {secondBulletPoint && }\n \n );\n}\n","import { useMemo } from 'react';\nimport {\n EventItemHeader,\n EventItemHeaderType,\n} from 'src/components/Events/EventItemHeader/EventItemHeader';\nimport { MetricsDisplay } from 'src/components/Metrics';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Button } from 'src/core/ui';\nimport { PurchaseDeeplinkQueryParam } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { createPurchaseEventPageUrl } from 'src/utils/purchaseUtils';\nimport { Event, Performer, Venue } from 'src/WebApiController';\n\nimport * as styles from './PurchaseEventItemHeader.css';\n\nexport type PurchaseEventItemHeaderProps = Pick<\n EventItemHeaderType,\n 'event' | 'performer' | 'venue' | 'hideYearFromDate'\n> & {\n cost?: string;\n numOfTicketGroups?: number;\n numOfTickets?: number;\n disabled?: boolean;\n onAddTicketsForEvent?: (\n event: Event,\n performer?: Performer | null,\n venue?: Venue | null\n ) => void;\n removeMetrics?: boolean;\n};\n\nexport const PurchaseEventItemHeader = ({\n event,\n performer,\n venue,\n numOfTicketGroups,\n numOfTickets,\n onAddTicketsForEvent,\n cost,\n disabled,\n removeMetrics,\n ...rest\n}: PurchaseEventItemHeaderProps) => {\n const purchaseEventUrl = useMemo(() => {\n const eventId = event?.viagVirtualId;\n if (eventId) {\n return createPurchaseEventPageUrl(eventId, [PurchaseDeeplinkQueryParam]);\n }\n return undefined;\n }, [event]);\n\n const actions =\n !disabled && onAddTicketsForEvent\n ? [\n \n onAddTicketsForEvent(event, performer, venue)}\n >\n \n \n ,\n ]\n : undefined;\n return (\n \n {numOfTicketGroups ? (\n
    \n {numOfTicketGroups}{' '}\n 1\n ? ContentId.TicketGroups\n : ContentId.TicketGroup\n }\n />\n
    \n ) : null}\n {numOfTickets ? (\n
    \n {numOfTickets}{' '}\n 1 ? ContentId.Tickets : ContentId.Ticket\n }\n />\n
    \n ) : null}\n
    \n }\n />\n )\n }\n />\n );\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useCallback, useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n ActionOutboxEntityType,\n Tag,\n TagClient,\n TagsValueType,\n} from 'src/WebApiController';\n\nexport function useTagsForEntityType(\n entityType?:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Purchase\n | ActionOutboxEntityType.Sale\n | ActionOutboxEntityType.SellerEvent,\n includeInReport?: boolean\n) {\n const enabled = entityType != null;\n\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n\n const queryClient = useQueryClient();\n const mainQueryKey = [\n 'TagClient.getTagsByEntityTypeId',\n activeAccountWebClientConfig.activeAccountId,\n entityType,\n enabled,\n ];\n\n const shouldQuery =\n activeAccountWebClientConfig.activeAccountId != null && enabled;\n\n const tagByEntityTypeQuery = useQuery({\n queryKey: [...mainQueryKey, includeInReport],\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n\n return new TagClient(activeAccountWebClientConfig).getTagsByEntityTypeId(\n entityType,\n includeInReport ?? null\n );\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n staleTime: Infinity,\n networkMode: 'offlineFirst',\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('TagClient.getTagsByEntityTypeId', error, {\n entityType,\n includeInReport,\n });\n },\n },\n });\n\n const tagWithValueByEntityTypeQuery = useQuery({\n queryKey: [\n 'TagClient.getTagsWithValueByEntityTypeId',\n activeAccountWebClientConfig.activeAccountId,\n entityType,\n ],\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n return new TagClient(\n activeAccountWebClientConfig\n ).getTagsWithValueByEntityTypeId(entityType);\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n staleTime: Infinity,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('TagClient.getTagsWithValueByEntityTypeId', error, {\n entityType,\n });\n },\n },\n });\n\n const isTag = useCallback(\n (name: string) => {\n return tagByEntityTypeQuery.data?.find((t) => t.key === name) != null;\n },\n [tagByEntityTypeQuery.data]\n );\n\n const mutation = useMutation({\n mutationFn: async ({ tags }: { tags: Tag[] }) => {\n return await new TagClient(\n activeAccountWebClientConfig\n ).upsertEntityTagsMetadata(entityType, tags);\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n onMutate: ({ tags }) => {\n queryClient.cancelQueries({ queryKey: mainQueryKey });\n const prevValue = queryClient.getQueryData(mainQueryKey);\n queryClient.setQueryData(mainQueryKey, tags);\n return { prevValue };\n },\n onError: (err: ErrorTypes, { tags }, context) => {\n queryClient.setQueryData(mainQueryKey, context?.prevValue);\n showErrorDialog('TagClient.upsertEntityTagsMetadata', err, {\n trackErrorData: { tags },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey: mainQueryKey });\n },\n });\n\n const deleteMutation = useMutation({\n mutationFn: async ({ tags }: { tags: Tag[] }) => {\n return await new TagClient(\n activeAccountWebClientConfig\n ).deleteEntityTagsMetadata(\n entityType,\n tags.map((t) => t.key)\n );\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n onMutate: ({ tags }) => {\n queryClient.cancelQueries({ queryKey: mainQueryKey });\n const prevValue = queryClient.getQueryData(mainQueryKey);\n queryClient.setQueryData(\n mainQueryKey,\n prevValue?.filter((t) => !tags.includes(t))\n );\n return { prevValue };\n },\n onError: (err: ErrorTypes, { tags }, context) => {\n queryClient.setQueryData(mainQueryKey, context?.prevValue);\n showErrorDialog('TagClient.deleteEntityTagsMetadata', err, {\n trackErrorData: { tags },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey: mainQueryKey });\n },\n });\n\n const tagsWithNoValue = useMemo(() => {\n if (\n tagByEntityTypeQuery.data == null ||\n tagWithValueByEntityTypeQuery.data == null\n ) {\n return [];\n }\n\n return tagByEntityTypeQuery.data.filter((t) => {\n const tagWithValue = tagWithValueByEntityTypeQuery.data?.find(\n (t2) => t2.key === t.key\n );\n return tagWithValue == null;\n });\n }, [tagByEntityTypeQuery.data, tagWithValueByEntityTypeQuery.data]);\n\n return {\n tagsMetadata: tagByEntityTypeQuery.data,\n isLoading: tagByEntityTypeQuery.isLoading,\n tagsMetadataNumeric: tagByEntityTypeQuery.data?.filter(\n (t) =>\n t.valueType === TagsValueType.Decimal ||\n t.valueType === TagsValueType.Int\n ),\n tagsWithNoValue,\n isError: tagByEntityTypeQuery.isError,\n refetch: tagByEntityTypeQuery.refetch,\n async mergeEntityTagsMetadata(tagsToUpdate: Tag[]) {\n await mutation.mutateAsync({ tags: tagsToUpdate });\n },\n async deleteEntityTagsMetadata(tagsToDelete: Tag[]) {\n await deleteMutation.mutateAsync({ tags: tagsToDelete });\n },\n isTag,\n };\n}\n","import { Children, ComponentProps, PropsWithChildren } from 'react';\nimport { isContentId } from 'src/contexts/ContentContext';\nimport { Tooltip } from 'src/core/ui';\n\n/**\n * Gets text value - only works for simple text elements\n * @param element\n * @returns\n */\nconst getTextValueFromSingleChild = (\n element: React.ReactNode\n): string | undefined => {\n if (element == null) {\n return undefined;\n }\n\n if (typeof element === 'string' || typeof element === 'number') {\n return element.toString();\n }\n\n const childrenArray = Children.toArray(element);\n const isSingleElement = childrenArray.length === 1;\n if (isSingleElement) {\n const childNode = (childrenArray[0] as React.ReactElement)?.props\n ?.children as React.ReactNode;\n\n if (childNode) {\n return getTextValueFromSingleChild(childNode);\n }\n }\n\n return undefined;\n};\n\n/**\n * Gets content Id recursively from single child\n * @param element\n * @returns\n */\nconst getContentIdFromSingleChild = (\n element: React.ReactNode\n): string | undefined => {\n if (element == null) {\n return undefined;\n }\n\n if (typeof element === 'string' && isContentId(element)) {\n return element;\n }\n\n const propsId = (element as React.ReactElement).props?.id;\n if (propsId != null && isContentId(propsId)) {\n return propsId;\n }\n\n const childrenArray = Children.toArray(element);\n const isSingleElement = childrenArray.length === 1;\n if (isSingleElement) {\n const childNode = (childrenArray[0] as React.ReactElement)?.props\n ?.children as React.ReactNode;\n\n if (childNode) {\n return getContentIdFromSingleChild(childNode);\n }\n }\n\n return undefined;\n};\n\nexport const DivWithTitle = ({\n children,\n showTooltip = true,\n align = 'right',\n title,\n ...props\n}: PropsWithChildren> & {\n showTooltip?: boolean;\n align?: 'center' | 'left' | 'right' | undefined;\n}) => {\n const content =
    {children}
    ;\n\n const contentUnwrapped = (\n \n {children}\n \n );\n\n if (showTooltip) {\n const mappedAligned =\n align === 'left' ? 'start' : align === 'right' ? 'end' : 'center';\n return (\n \n {title || contentUnwrapped}\n \n );\n }\n\n return <>{content};\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { id } from 'date-fns/locale';\nimport { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { SELLER_ACCOUNT_SELLER_USERS_QUERY_KEY } from 'src/contexts/SellerAccountContext';\nimport { Feature, UserGroup, UserGroupClient } from 'src/WebApiController';\n\nimport { useUserHasFeature } from './useUserHasFeature';\n\nexport type UserGroupInput = Omit;\n\n/**\n * Data and functions returned by the hook to help with CRUD of user group\n */\ntype UseUserGroups = {\n userGroups: UserGroup[] | null | undefined;\n isLoading: boolean;\n deleteUserGroup: (userGroupId: number) => Promise;\n createUserGroup: (userGroupInput: UserGroupInput) => Promise;\n updateUserGroup: (\n userGroupId: number,\n userGroupInput: UserGroupInput\n ) => Promise;\n};\n/**\n * Hook to help with CRUD of user group\n * @param options\n * @returns\n */\nexport function useUserGroups(): UseUserGroups {\n const { showErrorDialog, trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const userGroupClient = useMemo(\n () => new UserGroupClient(activeAccountWebClientConfig),\n [activeAccountWebClientConfig]\n );\n\n const hasTeamManagementFeature = useUserHasFeature(Feature.TeamManagement);\n\n const queryClient = useQueryClient();\n const queryKey = [\n 'useUserGroups',\n activeAccountWebClientConfig.activeAccountId,\n ];\n\n const shouldQuery =\n activeAccountWebClientConfig?.activeAccountId != null &&\n hasTeamManagementFeature;\n\n const userGroupQuery = useQuery({\n queryKey,\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n return await userGroupClient.getUserGroups();\n },\n\n enabled: shouldQuery,\n meta: {\n onError: (err: ErrorTypes) => {\n trackError('UserGroupClient.getUserGroups', err);\n },\n },\n refetchOnWindowFocus: false,\n });\n\n const updateMutation = useMutation({\n mutationFn: async ({ value }: { value: UserGroup }) => {\n return await userGroupClient.updateUserGroup(\n value.userGroupId,\n value.userGroupName,\n value.userGroupDescription ?? undefined,\n value.sellerUserIds\n );\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n onMutate: ({ value }) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue = queryClient.getQueryData(queryKey);\n\n const newValue =\n value.userGroupId == null\n ? [...(prevValue ?? []), value]\n : prevValue?.map((r) =>\n r.userGroupId === value.userGroupId ? value : r\n );\n\n queryClient.setQueryData(queryKey, newValue);\n return { prevValue };\n },\n onError: (err: ErrorTypes, { value }, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('userGroupClient.updateUserGroup', err, {\n trackErrorData: { id, value },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n queryClient.invalidateQueries({\n queryKey: [\n SELLER_ACCOUNT_SELLER_USERS_QUERY_KEY,\n activeAccountWebClientConfig.activeAccountId,\n ],\n });\n },\n });\n\n const updateUserGroup = async (\n userGroupId: number,\n userGroupInput: UserGroupInput\n ) => {\n return await updateMutation.mutateAsync({\n value: {\n userGroupId,\n userGroupName: userGroupInput.userGroupName,\n userGroupDescription: userGroupInput.userGroupDescription,\n sellerUserIds: userGroupInput.sellerUserIds,\n },\n });\n };\n\n const createMutation = useMutation({\n mutationFn: async ({ value }: { value: UserGroupInput }) => {\n return await userGroupClient.insertUserGroup(\n value.userGroupName,\n value.userGroupDescription ?? undefined,\n value.sellerUserIds\n );\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n onMutate: ({ value }) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue = queryClient.getQueryData(queryKey);\n\n const newValue = [...(prevValue ?? []), value as UserGroup];\n\n queryClient.setQueryData(queryKey, newValue);\n return { prevValue };\n },\n onError: (err: ErrorTypes, { value }, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('userGroupClient.createUserGroup', err, {\n trackErrorData: { id, value },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n queryClient.invalidateQueries({\n queryKey: [\n SELLER_ACCOUNT_SELLER_USERS_QUERY_KEY,\n activeAccountWebClientConfig.activeAccountId,\n ],\n });\n },\n });\n\n const createUserGroup = async (userGroupInput: UserGroupInput) => {\n return await createMutation.mutateAsync({ value: userGroupInput });\n };\n\n const deleteMutation = useMutation({\n mutationFn: async (userGroupId: number) => {\n return await userGroupClient.deleteUserGroup(userGroupId);\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n onMutate: (userGroupId: number) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue = queryClient.getQueryData(queryKey);\n\n const newValue = prevValue?.filter((r) => r.userGroupId !== userGroupId);\n\n queryClient.setQueryData(queryKey, newValue);\n return { prevValue };\n },\n onError: (err: ErrorTypes, userGroupId: number, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('userGroupClient.deleteUserGroup', err, {\n trackErrorData: { id, userGroupId },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n queryClient.invalidateQueries({\n queryKey: [\n SELLER_ACCOUNT_SELLER_USERS_QUERY_KEY,\n activeAccountWebClientConfig.activeAccountId,\n ],\n });\n },\n });\n\n const deleteUserGroup = (userGroupId: number) => {\n return deleteMutation.mutateAsync(userGroupId);\n };\n\n return {\n userGroups: userGroupQuery.data,\n isLoading: userGroupQuery.isLoading,\n deleteUserGroup,\n createUserGroup,\n updateUserGroup,\n };\n}\n","import { formatInTimeZone } from 'date-fns-tz';\nimport { useMemo } from 'react';\nimport { usePurchaseVendorSelector } from 'src/components/Selectors/PurchaseVendorSelector/usePurchaseVendorSelector';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { DivWithTitle } from 'src/core/ui/DivWithTitle';\nimport { useUserGroups } from 'src/hooks/useUserGroups';\nimport { Tag, TagsValueType } from 'src/WebApiController';\n\nimport * as styles from '../TagsFormBody.css';\n\nexport const TagValueDisplay = ({\n tag,\n displayMode,\n}: {\n tag: Tag;\n displayMode?: boolean;\n}) => {\n if (tag.valueType === TagsValueType.Url && displayMode) {\n return ;\n }\n\n if (tag.valueType === TagsValueType.Date) {\n return ;\n }\n\n if (tag.valueType === TagsValueType.POSUser) {\n return ;\n }\n\n if (tag.valueType === TagsValueType.UserGroup) {\n return ;\n }\n\n if (tag.valueType === TagsValueType.Vendor) {\n return ;\n }\n\n return (\n {tag.value}\n );\n};\n\nconst POSUserDisplay = ({ tag }: { tag: Tag }) => {\n const { allActiveUserInfos } = useSellerAccountContext();\n\n const sellerUserId = tag.value;\n\n const user = useMemo(() => {\n if (!sellerUserId || !allActiveUserInfos) {\n return null;\n }\n\n return allActiveUserInfos[sellerUserId];\n }, [allActiveUserInfos, sellerUserId]);\n\n return
    {user?.displayName}
    ;\n};\n\nconst UserGroupDisplay = ({ tag }: { tag: Tag }) => {\n const { userGroups } = useUserGroups();\n\n const userGroupId = tag.value;\n\n const userGroup = useMemo(() => {\n if (!userGroupId?.length || !userGroups?.length) {\n return null;\n }\n\n return userGroups.find((ug) => ug.userGroupId.toString() === userGroupId);\n }, [userGroupId, userGroups]);\n\n return
    {userGroup?.userGroupName}
    ;\n};\n\nconst VendorDisplay = ({ tag }: { tag: Tag }) => {\n const vendorId = tag.value;\n\n const { availableVendors } = usePurchaseVendorSelector({});\n const vendor = useMemo(() => {\n if (vendorId == null) {\n return null;\n }\n\n return availableVendors[vendorId];\n }, [availableVendors, vendorId]);\n\n return
    {vendor?.name}
    ;\n};\n\nconst DateDisplay = ({ tag }: { tag: Tag }) => {\n const { timeZone } = useSiteTimezoneContext();\n return (\n
    \n {tag?.value\n ? formatInTimeZone(\n new Date(tag.value),\n timeZone,\n \"MMMM d, yyyy 'at' h:mm a\"\n )\n : ''}\n
    \n );\n};\n\nconst UrlDisplay = ({ tag }: { tag: Tag }) => {\n const absoluteUrl = useMemo(() => {\n if (tag.valueType !== TagsValueType.Url || !tag.value) {\n return;\n }\n if (\n tag.value.toLocaleLowerCase().startsWith('http') ||\n tag.value.toLocaleLowerCase().startsWith('https')\n ) {\n return tag.value;\n }\n\n // Browser will automatically use https if the site supports it\n return `http://${tag.value}`;\n }, [tag.value, tag.valueType]);\n\n return (\n {\n e.stopPropagation();\n }}\n title={tag.value}\n >\n \n {tag.value}\n \n \n );\n};\n","import { PosSelect, PosSelectProps } from 'src/core/POS/PosSelect';\n\nimport {\n usePurchaseVendorSelector,\n UsePurchaseVendorSelectorOptions,\n} from './usePurchaseVendorSelector';\n\nexport type PurchaseVendorSelectorProps = Omit<\n PosSelectProps,\n 'valueOptionsContent'\n> &\n UsePurchaseVendorSelectorOptions;\n\nexport function PurchaseVendorSelector({\n disabled,\n additionalOptions,\n additionalOptionsPosition,\n placeholderText,\n ...props\n}: PurchaseVendorSelectorProps) {\n const { posSelectProps } = usePurchaseVendorSelector({\n additionalOptions,\n additionalOptionsPosition,\n placeholderText,\n });\n\n return ;\n}\n","import {\n PosMultiSelect,\n PosMultiSelectProps,\n} from 'src/core/POS/PosMultiSelect';\nimport { useUserGroups } from 'src/hooks/useUserGroups';\n\nexport const UserGroupMultiSelector = ({\n ...props\n}: Omit) => {\n const { userGroups, isLoading } = useUserGroups();\n\n const userGroupsContentSelect = (userGroups ?? []).reduce<\n Record\n >((acc, userGroup) => {\n acc[userGroup.userGroupId.toString()] = userGroup.userGroupName;\n return acc;\n }, {});\n\n return (\n \n );\n};\n","import { PosSelect, PosSelectProps } from 'src/core/POS/PosSelect';\nimport { useUserGroups } from 'src/hooks/useUserGroups';\n\nexport const UserGroupSelector = ({\n ...props\n}: Omit) => {\n const { userGroups, isLoading } = useUserGroups();\n\n const userGroupsContentSelect = (userGroups ?? []).reduce<\n Record\n >((acc, userGroup) => {\n acc[userGroup.userGroupId.toString()] = userGroup.userGroupName;\n return acc;\n }, {});\n\n return (\n \n );\n};\n","import clsx from 'clsx';\nimport { isValid, parse } from 'date-fns';\nimport { format } from 'date-fns';\nimport { Calendar, CalendarProps } from 'react-date-range';\nimport { FieldError } from 'react-hook-form';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { vars } from 'src/core/themes';\nimport { Popover } from 'src/core/ui';\nimport { CalendarOutlineIcon, CrossIcon } from 'src/svgs/Viagogo';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\n\nimport { getTextFieldState, PosTextField } from '../PosTextField';\nimport * as styles from './DatePicker.css';\n\nexport const DatePickerInput = ({\n value,\n date,\n fieldError,\n disabled,\n className,\n dateDisplayFormat = 'MM/dd/yyyy',\n color = vars.color.backgroundHighlight,\n locale = getLocaleFromLanguageOrCurrent(),\n onDateChange,\n textFieldStyles,\n useSiteTimeZone = true,\n ...props\n}: Omit & {\n value?: string | null | Date;\n onDateChange?: (d: Date) => void;\n fieldError?: string | FieldError | undefined;\n disabled?: boolean;\n textFieldStyles?: React.CSSProperties;\n /**\n * If true, the site's timezone will be applied to the date being displayed.\n * the underlying date value (value, data, onDateChange) will not be changed.\n */\n useSiteTimeZone?: boolean;\n}) => {\n const { toZonedTime, fromZonedTime } = useSiteTimezoneContext();\n\n date = date ?? (value ? new Date(value) : undefined);\n if (useSiteTimeZone) {\n if (date) {\n date = toZonedTime(date);\n }\n if (props.minDate) {\n props.minDate = toZonedTime(props.minDate);\n }\n if (props.maxDate) {\n props.maxDate = toZonedTime(props.maxDate);\n }\n }\n\n return (\n \n \n
    \n }\n value={date ? format(date, dateDisplayFormat) : undefined}\n onChange={(e) => {\n const str = e.target.value;\n const newDate = parse(str, dateDisplayFormat, new Date(), {\n locale: getLocaleFromLanguageOrCurrent(),\n });\n if (isValid(newDate)) {\n onDateChange?.(\n useSiteTimeZone ? fromZonedTime(newDate) : newDate\n );\n }\n }}\n disabled={disabled}\n style={textFieldStyles}\n />\n
    \n
    \n \n \n \n \n true : undefined}\n className={clsx(className, styles.datePicker)}\n dateDisplayFormat={dateDisplayFormat}\n color={color}\n locale={locale}\n onChange={(d) =>\n onDateChange?.(useSiteTimeZone ? fromZonedTime(d) : d)\n }\n />\n \n
    \n );\n};\n","import clsx from 'clsx';\nimport { isValid, parse } from 'date-fns';\nimport { format } from 'date-fns';\nimport { CalendarProps } from 'react-date-range';\nimport { FieldError } from 'react-hook-form';\nimport TimePicker from 'react-time-picker';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { Popover } from 'src/core/ui';\nimport { CalendarOutlineIcon } from 'src/svgs/Viagogo';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\n\nimport { getTextFieldState, PosTextField } from '../PosTextField';\nimport * as styles from './DatePicker.css';\n\nconst TIME_PICKER_CALLBACK_FORMAT = 'HH:mm';\n\nexport const TimePickerInput = ({\n value,\n fieldError,\n disabled,\n className,\n timeDisplayFormat = 'hh:mm a',\n locale = getLocaleFromLanguageOrCurrent(),\n onTimeChange,\n textFieldStyles,\n useSiteTimeZone = true,\n ...props\n}: Omit & {\n value?: string | null | Date;\n /**\n * the whole data object will be returned. Because if the timezone is applied,\n * the returned date can change\n */\n onTimeChange?: (t: Date | null) => void;\n fieldError?: string | FieldError | undefined;\n disabled?: boolean;\n timeDisplayFormat?: string;\n textFieldStyles?: React.CSSProperties;\n /**\n * If true, the site's timezone will be applied to the date being displayed.\n * the underlying date value (value, data, onDateChange) will not be changed.\n */\n useSiteTimeZone?: boolean;\n}) => {\n const { toZonedTime, fromZonedTime } = useSiteTimezoneContext();\n\n let date = value ? new Date(value) : undefined;\n if (useSiteTimeZone) {\n if (date) {\n date = toZonedTime(date);\n }\n if (props.minDate) {\n props.minDate = toZonedTime(props.minDate);\n }\n if (props.maxDate) {\n props.maxDate = toZonedTime(props.maxDate);\n }\n }\n\n return (\n \n \n
    \n }\n value={date ? format(date, timeDisplayFormat) : undefined}\n onChange={(e) => {\n let str = e.target.value;\n let newTime = parse(str, timeDisplayFormat, new Date(), {\n locale: getLocaleFromLanguageOrCurrent(),\n });\n if (isValid(newTime)) {\n if (useSiteTimeZone) {\n newTime = fromZonedTime(newTime);\n str = format(newTime, TIME_PICKER_CALLBACK_FORMAT);\n }\n onTimeChange?.(newTime);\n }\n }}\n disabled={disabled}\n style={textFieldStyles}\n />\n
    \n
    \n \n {\n if (t) {\n let newTime = parse(t, TIME_PICKER_CALLBACK_FORMAT, new Date());\n\n if (isValid(newTime)) {\n if (useSiteTimeZone) {\n newTime = fromZonedTime(newTime);\n }\n onTimeChange?.(newTime);\n }\n }\n }}\n disabled={disabled}\n clockIcon={null}\n clearIcon={null}\n />\n \n
    \n );\n};\n","import { Marketplace, PosFieldArrayOfTag, Tag } from 'src/WebApiController';\n\nexport const tagFieldHasChanges = (\n tags1: PosFieldArrayOfTag | null | undefined,\n tags2: PosFieldArrayOfTag | null | undefined,\n // tagsMetadata is an optional parameter\n // If it is provided, only tags that are in tagsMetadata will be compared\n tagsMetadata?: Tag[]\n): boolean => {\n if (!tags1?.hasChanged) {\n return false;\n }\n\n const _tags1 = !tags1?.value\n ? null\n : !tagsMetadata\n ? tags1.value\n : tags1.value.filter((t) => tagsMetadata.find((tm) => tm.key === t.key));\n const _tags2 = !tags2?.value\n ? null\n : !tagsMetadata\n ? tags2.value\n : tags2.value.filter((t) => tagsMetadata.find((tm) => tm.key === t.key));\n\n if ((!_tags1 || !_tags1.length) && (!_tags2 || !_tags2.length)) {\n return false;\n }\n if (!_tags1 || !_tags1.length || !_tags2 || !_tags2.length) {\n return true;\n }\n if (_tags1.length !== _tags2.length) {\n return true;\n }\n return _tags1.some((t1) => {\n return !_tags2.find(\n (t2) =>\n t1.key === t2.key &&\n t1.value === t2.value &&\n t1.includeInReport === t2.includeInReport &&\n t1.ordinal === t2.ordinal\n );\n });\n};\n\nexport const tagHasChanges = (\n tags1: Tag[] | null | undefined,\n tags2: Tag[] | null | undefined,\n // tagsMetadata is an optional parameter\n // If it is provided, only tags that are in tagsMetadata will be compared\n tagsMetadata?: Tag[]\n): boolean => {\n const _tags1 = !tags1\n ? null\n : !tagsMetadata\n ? tags1\n : tags1.filter((t) => tagsMetadata.find((tm) => tm.key === t.key));\n const _tags2 = !tags2\n ? null\n : !tagsMetadata\n ? tags2\n : tags2.filter((t) => tagsMetadata.find((tm) => tm.key === t.key));\n\n if ((!_tags1 || !_tags1.length) && (!_tags2 || !_tags2.length)) {\n return false;\n }\n if (!_tags1 || !_tags1.length || !_tags2 || !_tags2.length) {\n return true;\n }\n if (_tags1.length !== _tags2.length) {\n return true;\n }\n return _tags1.some((t1) => {\n return !_tags2.find(\n (t2) =>\n t1.key === t2.key &&\n t1.value === t2.value &&\n t1.includeInReport === t2.includeInReport &&\n t1.ordinal === t2.ordinal\n );\n });\n};\n\nexport function ToMarketplaceEnum(value: string | null | undefined) {\n if (!value) {\n return null;\n }\n\n const entry = Object.entries(Marketplace).find(([, val]) => val === value);\n return entry ? entry[1] : undefined;\n}\n","import { forwardRef, ReactElement, useCallback, useState } from 'react';\nimport { Button } from 'reactstrap';\nimport { PurchaseVendorSelector } from 'src/components/Selectors/PurchaseVendorSelector';\nimport { SellerAccountEmployeeSelector } from 'src/components/Selectors/SellerAccountEmployeeSelector';\nimport { UserGroupSelector } from 'src/components/Selectors/UserGroupSelector';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { DatePickerInput, TimePickerInput } from 'src/core/POS/DateSelector';\nimport { PosEnumSelect, PosSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n BOOLEAN_OPTIONS_CONTENT,\n MARKET_PLACE_TO_CID,\n TAG_VALUE_TYPE_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { ToMarketplaceEnum } from 'src/utils/tagUtils';\nimport { Marketplace, Tag, TagsValueType } from 'src/WebApiController';\n\nexport const TOTAL_VALUE_LENGTH_LIMIT = 2000;\n\ntype TagValueInputProps = {\n tag: Tag | undefined;\n newValue: string;\n isValidNewValue: boolean;\n setNewValue: (newValue: string) => void;\n onChange: (newValue: string) => void;\n onBlur?: () => void;\n disabled?: boolean;\n disableBlur?: boolean;\n inputFieldPosfix?: JSX.Element;\n style?: React.CSSProperties;\n};\n\nexport const TagValueInput = forwardRef(\n function TagValueInput(\n {\n tag,\n newValue,\n isValidNewValue,\n setNewValue,\n onChange,\n onBlur,\n disabled,\n disableBlur,\n inputFieldPosfix,\n style,\n },\n ref\n ): ReactElement {\n const tagTypeText = useContent(\n TAG_VALUE_TYPE_TO_CID[tag?.valueType ?? ContentId.EmptyContent]\n );\n\n const customOnBlurSelect = useCallback(() => {\n if (disabled) return;\n\n if (isValidNewValue) {\n onChange(newValue);\n } else {\n setNewValue(tag!.value);\n onBlur?.();\n }\n }, [\n disabled,\n isValidNewValue,\n newValue,\n onBlur,\n onChange,\n setNewValue,\n tag,\n ]);\n\n const customOnBlurInput = useCallback(() => {\n // disableBlur is used to prevent onBlur from being called when clicking on the cross icon\n if (disabled || disableBlur) return;\n\n if (isValidNewValue) {\n onChange(newValue);\n } else {\n setNewValue(tag?.value ?? '');\n onBlur?.();\n }\n }, [\n disableBlur,\n disabled,\n isValidNewValue,\n newValue,\n onBlur,\n onChange,\n setNewValue,\n tag?.value,\n ]);\n\n const onKeyDownHandler = useCallback(\n (e: React.KeyboardEvent) => {\n if (!disabled) {\n const key = e.key;\n if (key === 'Enter') {\n e.stopPropagation();\n if (isValidNewValue) {\n onChange(newValue);\n } else {\n setNewValue(tag?.value ?? '');\n onBlur?.();\n }\n }\n if (key === 'Escape') {\n e.stopPropagation();\n setNewValue(tag?.value ?? '');\n onBlur?.();\n }\n }\n },\n [\n disabled,\n isValidNewValue,\n newValue,\n onBlur,\n onChange,\n setNewValue,\n tag?.value,\n ]\n );\n\n const [tagValueDate, setTagValueDate] = useState(\n tag?.value ? new Date(tag.value) : null\n );\n\n return (\n <>\n {tag?.valueType === TagsValueType.Date ? (\n \n \n {\n const newDate = tagValueDate\n ? new Date(tagValueDate.getTime())\n : new Date();\n newDate.setFullYear(date.getFullYear());\n newDate.setMonth(date.getMonth());\n newDate.setDate(date.getDate());\n\n setTagValueDate(newDate);\n setNewValue(newDate.toISOString());\n }}\n disabled={disabled}\n textFieldStyles={{ width: '100px' }}\n />\n\n {\n const newDate = tagValueDate\n ? new Date(tagValueDate.getTime())\n : new Date();\n\n if (t) {\n newDate.setFullYear(t.getFullYear());\n newDate.setMonth(t.getMonth());\n newDate.setDate(t.getDate());\n newDate.setHours(t.getHours());\n newDate.setMinutes(t.getMinutes());\n } else {\n newDate.setHours(0);\n newDate.setMinutes(0);\n }\n\n setTagValueDate(newDate);\n setNewValue(newDate.toISOString());\n }}\n disabled={disabled}\n textFieldStyles={{ width: '100px' }}\n />\n\n {\n onChange(tagValueDate?.toISOString() ?? '');\n }}\n >\n \n \n {\n setTagValueDate(null);\n setNewValue('');\n onChange('');\n }}\n >\n \n \n \n \n ) : tag?.valueType === TagsValueType.Marketplace ? (\n {\n setNewValue(Marketplace[value as keyof typeof Marketplace]);\n onChange(Marketplace[value as keyof typeof Marketplace]);\n }}\n disabled={disabled}\n style={style}\n valueOptionsContent={MARKET_PLACE_TO_CID}\n onBlur={customOnBlurSelect}\n />\n ) : tag?.valueType === TagsValueType.POSUser ? (\n {\n setNewValue(value);\n onChange(value);\n }}\n placeholderText={ContentId.None}\n disabled={disabled}\n style={style}\n onBlur={customOnBlurSelect}\n />\n ) : tag?.valueType === TagsValueType.UserGroup ? (\n {\n setNewValue(value);\n onChange(value);\n }}\n placeholderText={ContentId.None}\n disabled={disabled}\n style={style}\n onBlur={customOnBlurSelect}\n />\n ) : tag?.valueType === TagsValueType.Vendor ? (\n {\n setNewValue(newId);\n onChange(newId);\n }}\n onBlur={customOnBlurSelect}\n />\n ) : tag?.valueType === TagsValueType.Boolean ? (\n {\n setNewValue(value);\n onChange(value);\n }}\n style={style}\n valueOptionsContent={BOOLEAN_OPTIONS_CONTENT}\n placeholderText={ContentId.None}\n onBlur={customOnBlurSelect}\n enableEmptySelection\n />\n ) : (\n // String, Decimal, Int\n {\n setNewValue(e.target.value);\n }}\n postfixDisplay={inputFieldPosfix}\n maxLength={TOTAL_VALUE_LENGTH_LIMIT}\n onBlur={customOnBlurInput}\n onKeyDown={onKeyDownHandler}\n // Need this for onBlur to work\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus\n style={style}\n />\n )}\n \n );\n }\n);\n","import { BOOLEAN_OPTIONS_CONTENT } from 'src/utils/constants/contentIdMaps';\nimport { TagsValueType } from 'src/WebApiController';\n\nexport const URL_REGEX_TAGS =\n /^((http|https):\\/\\/)?(www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)$/;\n\nexport const checkMatchValueType = (\n valueType: TagsValueType | null,\n value: string\n) => {\n if (valueType == null) return true;\n switch (valueType) {\n case TagsValueType.String:\n return true;\n case TagsValueType.Url:\n return Boolean(value.match(URL_REGEX_TAGS));\n case TagsValueType.Decimal:\n return !isNaN(Number(value));\n case TagsValueType.Int:\n return !isNaN(Number(value)) && Number.isInteger(Number(value));\n case TagsValueType.Boolean:\n return Object.values(BOOLEAN_OPTIONS_CONTENT).includes(\n value.toLowerCase()\n );\n default:\n return true;\n }\n};\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { CrossIcon, WarningOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Tag } from 'src/WebApiController';\n\nimport { checkMatchValueType } from '../TagsFormBody.util';\nimport { TagValueInput } from './TagValueInput';\n\nexport const TagValueInputCell = ({\n tag,\n tagsCurrentEntity,\n onChange,\n onBlur,\n disabled,\n}: {\n tag: Tag;\n tagsCurrentEntity: Tag[];\n onChange: (newValue: string) => void;\n onBlur?: () => void;\n disabled?: boolean;\n}) => {\n const [newValue, setNewValue] = useState(tag.value);\n const [disableBlur, setDisableBlur] = useState(false);\n const duplicateMsg = useContent(ContentId.ExistingTagValue);\n const valueTypeErrorMsg = useContent(ContentId.ValueDoesNotSatisfyType);\n const inputRef = useRef(null);\n\n useEffect(() => {\n if (tag.value !== newValue) {\n setNewValue(tag.value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tag.value]);\n\n const hasDuplicate = useMemo(() => {\n const existingTags = tagsCurrentEntity.filter((t) => t.key === tag.key);\n if (existingTags.length) {\n const values = existingTags.map((t) => t.value);\n return values.includes(newValue) && newValue !== tag.value;\n }\n return false;\n }, [newValue, tag.key, tag.value, tagsCurrentEntity]);\n\n const isValidNewValue = useMemo(() => {\n if (!newValue) return true;\n return checkMatchValueType(tag.valueType, newValue) && !hasDuplicate;\n }, [hasDuplicate, newValue, tag.valueType]);\n\n const errorMsg = useMemo(() => {\n if (!newValue) return null;\n if (hasDuplicate) {\n return duplicateMsg;\n }\n if (!checkMatchValueType(tag.valueType, newValue)) {\n return valueTypeErrorMsg;\n }\n return null;\n }, [duplicateMsg, hasDuplicate, newValue, tag.valueType, valueTypeErrorMsg]);\n\n const inputFieldPosfix = (\n <>\n {errorMsg && (\n \n )}\n {newValue ? (\n setDisableBlur(true)}\n onMouseLeave={() => setDisableBlur(false)}\n onClick={() => {\n setNewValue('');\n setDisableBlur(false);\n inputRef.current?.focus();\n }}\n disabled={disabled}\n />\n ) : null}\n \n );\n\n return (\n \n );\n};\n","import { useCallback, useState } from 'react';\nimport {\n Content,\n FormatContent,\n useContent,\n} from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { TAG_VALUE_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { Tag, TagsValueType } from 'src/WebApiController';\n\nimport * as styles from './TagsFormBody.css';\nimport { TagValueDisplay, TagValueInputCell } from './TagValueCell';\n\nconst TagListItem = ({\n tag,\n tagsCurrentEntity,\n disabled,\n onClick,\n onBlur,\n isEditing,\n onRowChange,\n}: {\n tag: Tag;\n tagsCurrentEntity: Tag[];\n disabled?: boolean;\n isEditing?: boolean;\n onClick: () => void;\n onBlur: () => void;\n onRowChange: (tag: Tag, newValue: string) => void;\n}) => {\n const singleValueMsg = useContent(ContentId.SingleValueOnly);\n const dataTypeMsg = useContent(\n TAG_VALUE_TYPE_TO_CID[tag.valueType ?? TagsValueType.String]\n );\n const [hovered, setHovered] = useState(false);\n\n let metadataTitle = '';\n if (tag.singleValueOnly) {\n metadataTitle += `${singleValueMsg}, `;\n }\n if (dataTypeMsg) {\n metadataTitle += dataTypeMsg;\n }\n\n return (\n {\n if (!disabled) {\n onClick();\n }\n }}\n title={isEditing ? '' : metadataTitle}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n >\n
    {tag.key}
    \n
    \n {isEditing ? (\n {\n onRowChange(tag, newValue);\n }}\n />\n ) : (\n <>\n {tag.value || !hovered ? (\n \n ) : (\n \n \n \n )}\n \n )}\n \n );\n};\n\nexport const TagsPanelDisplayMode = ({\n tagsWithEmptyValue,\n tagsWithValue,\n onTagsUpdate,\n onTagValueChange,\n disabled,\n}: {\n tagsWithEmptyValue: Tag[];\n tagsWithValue: Tag[];\n disabled?: boolean;\n onTagsUpdate: (tagsCurrentEntity: Tag[]) => void;\n onTagValueChange: (tag: Tag, newValue: string) => void;\n}) => {\n const [tagsEditing, setTagsEditing] = useState();\n\n const onTagAdd = useCallback(\n (tag: Tag, newValue: string) => {\n if (newValue) {\n const newTags = [...tagsWithValue, { ...tag, value: newValue }]\n .toSorted((t1, t2) => (t1.ordinal ?? 0) - (t2.ordinal ?? 0))\n .map((t, i) => ({ ...t, ordinal: i }));\n onTagsUpdate(newTags);\n }\n setTagsEditing(undefined);\n },\n [onTagsUpdate, tagsWithValue]\n );\n\n return (\n
    \n {tagsWithEmptyValue.map((tag) => {\n const tagListItem = (\n {\n setTagsEditing(tag);\n }}\n tagsCurrentEntity={tagsWithValue}\n disabled={disabled}\n onBlur={() => setTagsEditing(undefined)}\n onRowChange={(tag, newValue) => {\n onTagValueChange(tag, newValue);\n setTagsEditing(undefined);\n }}\n />\n );\n\n const isLastNonEmptyMultiValueTag =\n tag.value &&\n !tag.singleValueOnly &&\n tagsWithValue.findLast((t) => t.key === tag.key && t.value) === tag;\n\n if (!isLastNonEmptyMultiValueTag) {\n return tagListItem;\n } else {\n if (tagsEditing?.key === tag.key && tagsEditing?.value === '') {\n const newTag = {\n ...tag,\n value: '',\n };\n return (\n <>\n {tagListItem}\n {\n setTagsEditing(newTag);\n }}\n tagsCurrentEntity={tagsWithValue}\n disabled={disabled}\n onBlur={() => setTagsEditing(undefined)}\n onRowChange={onTagAdd}\n />\n \n );\n }\n return (\n <>\n {tagListItem}\n {\n setTagsEditing({\n ...tag,\n value: '',\n });\n }}\n style={{ width: 'min-content', whiteSpace: 'nowrap' }}\n variant={'text'}\n disabled={disabled}\n >\n \n \n \n \n );\n }\n })}\n
    \n );\n};\n","import { UniqueIdentifier } from '@dnd-kit/core';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { ReactNode, useEffect } from 'react';\n\n/**\n * Extends functionality of any component to inherit sort functionality\n */\nexport const DropWrapper = ({\n children,\n id,\n disabled,\n onDragStart,\n onDragEnd,\n}: {\n children: ReactNode;\n id: UniqueIdentifier;\n disabled?: boolean;\n onDragStart?: () => void;\n onDragEnd?: () => void;\n}) => {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id, disabled });\n\n useEffect(() => {\n if (isDragging) {\n onDragStart?.();\n } else {\n onDragEnd?.();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDragging]);\n\n return (\n \n {children}\n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const EventIcon = (props: PosIconProps) => {\n const stroke = props.stroke || '#3F1D75';\n return (\n \n \n \n \n \n \n \n \n );\n};\n","/**\n * These values are associated with the available columns and tied in with the Edit Inventory Columns feature.\n */\n\nexport enum ListingTableColumnId {\n // Not Configurable\n Checkbox = 'checkbox',\n // Configurable\n TicketClassColor = 'ticketClassColor',\n Seating = 'seating',\n DeliveryType = 'deliveryType',\n ShownQuantity = 'shownQuantity',\n UnsoldQuantity = 'unsoldQuantity',\n TicketCount = 'ticketCount',\n InHandDate = 'inHandDate',\n UnitCost = 'unitCost',\n ListPrice = 'listPrice',\n AllInPrice = 'allInPrice',\n Actions = 'actions',\n // Default Visibility Off (optional columns)\n ListingId = 'listingId',\n AutoPricing = 'autoPricing',\n ProceedsFloor = 'priceFloor',\n ProceedsCeiling = 'priceCeiling',\n WebsiteFloor = 'priceWebsiteFloor',\n WebsiteCeiling = 'priceWebsiteCeiling',\n UndercutMode = 'undercutMode',\n UndercutAbsoluteAmount = 'undercutAbsoluteAmount',\n UndercutRelativeAmount = 'undercutRelativeAmount',\n UndercutNewPrice = 'undercutNewPrice',\n CompListingMode = 'compListingMode',\n CompListingCeiling = 'compListingCeiling',\n CompListingFloor = 'compListingFloor',\n CompListingMinimumQuantity = 'compListingMinimumQuantity',\n CompListingExcludeFanInventory = 'compListingExcludeFanInventory',\n OutlierMode = 'outlierMode',\n OutlierFiltering = 'outlierFiltering',\n OutlierLimit = 'outlierLimit',\n OutlierSpacing = 'outlierSpacing',\n CircuitBreakerMinCompListingCount = 'circuitBreakerMinCompListingCount',\n CircuitBreakerVelocity = 'circuitBreakerVelocity',\n CircuitBreakerVelocityHours = 'circuitBreakerVelocityHours',\n SeatingRow = 'seatingrow',\n SeatingSeats = 'seatingSeats',\n AutoPricingResultType = 'autoPricingResultType',\n LastPriceUpdatedDate = 'lastPriceUpdatedDate',\n WastedTickets = 'wastedTickets',\n WastedCost = 'wastedCost',\n PurchaseId = 'purchaseId',\n VendorAccount = 'vendor',\n AutoFulfill = 'autoFulfill',\n MarketplaceVisibility = 'marketplaceVisibility',\n PurchaseCreatedBy = 'purchaseCreatedBy',\n PurchasedBy = 'purchasedBy',\n PurchaseDate = 'purchaseDate',\n RelativeRankPremium = 'relativeRankPremium',\n AbsoluteRankPremium = 'absoluteRankPremium',\n UnsoldProceeds = 'unsoldProceeds',\n UnsoldCost = 'unsoldCost',\n SoldQty = 'soldQty',\n SoldCost = 'soldCost',\n TotalCost = 'totalCost',\n SeatTraits = 'seatTraits',\n SplitType = 'splitType',\n}\n\nexport enum ListingTableFlattenedColumnId {\n Event = 'Event',\n Venue = 'Venue',\n Location = 'Location',\n EventDate = 'Date',\n}\n\nexport enum ListingReportTableColumnId {\n // Group by types\n Performer = 'performer',\n Venue = 'venue',\n Event = 'event',\n EventGenre = 'eventGenre',\n EventCountry = 'eventCountry',\n EventCity = 'eventCity',\n SeatingSection = 'seatingSection',\n SeatingRow = 'seatingRow',\n // Configurable - shared precision with ListingTableColumnId\n UnsoldQuantity = ListingTableColumnId.UnsoldQuantity,\n TicketCount = ListingTableColumnId.TicketCount,\n SoldQuantity = 'soldQuantity',\n UnitCost = ListingTableColumnId.UnitCost,\n SoldCost = 'soldCost',\n SoldProceeds = 'soldProceeds',\n UnsoldCost = 'unsoldCost',\n ListPrice = ListingTableColumnId.ListPrice,\n AllInPrice = ListingTableColumnId.AllInPrice,\n // Auxiliary columns\n EventId = 'eventId',\n Category = 'category',\n EventDate = 'eventDate',\n EventStateProvince = 'eventStateProvince',\n ListingId = 'listingId',\n SaleId = 'saleId',\n HoldId = 'holdId',\n SeatingSeats = 'seatingSeats',\n DeliveryType = ListingTableColumnId.DeliveryType,\n InHandDate = ListingTableColumnId.InHandDate,\n PurchaseId = 'purchaseId',\n PurchasedBy = ListingTableColumnId.PurchasedBy,\n PurchaseDate = 'purchaseDate',\n PurchaseCreatedBy = ListingTableColumnId.PurchaseCreatedBy,\n Vendor = 'vendor',\n SalePaymentState = 'paymentState',\n Charges = 'charges',\n Credits = 'credits',\n Fulfiller = 'fulfiller',\n PaymentMethodType = 'paymentMethodType',\n PurchasePaymentStatus = 'purchasePaymentStatus',\n Zone = 'zone',\n PricedBy = 'pricedBy',\n InternalNotes = 'internalNotes',\n InternalNotesPurchase = 'internalNotesPurchase',\n VendorOrderId = 'vendorOrderId',\n VendorAccountEmail = 'vendorAccountEmail',\n CancellationDatePurchase = 'cancellationDatePurchase',\n PandL = 'PandL',\n Margin = 'margin',\n}\n\n// Subset of ReportInventoryColumnName from ReportingService\nexport enum ListingReportTableGroupingColumnId {\n PerformerName = 'performerName',\n VenueName = 'venueName',\n EventName = 'eventName',\n TopLevelCategoryName = 'topLevelCategoryName',\n CountryName = 'countryName',\n CityName = 'cityName',\n EventId = 'viagogoEventId',\n LocalEventDateTime = 'localEventDateTime',\n StateProvince = 'stateProvince',\n InternalNotes = 'internalNotes',\n ListingId = 'listingId',\n IsSeatSaver = 'isSeatSaver',\n IsNoFulfill = 'isNoFulfill',\n PricerSellerUserId = 'pricerSellerUserId',\n Section = 'section',\n SeatingRow = 'seatingRow',\n SeatFrom = 'seatFrom',\n SeatTo = 'seatTo',\n}\n\nexport enum ListingReportTableValueColumnId {\n UnsoldQuantity = 'unsoldQuantity',\n SoldQuantity = 'soldQuantity',\n TotalQuantity = 'totalQuantity',\n SoldCost = 'soldCost',\n UnsoldCost = 'unsoldCost',\n UnitCost = 'unitCost',\n UnitNetProceeds = 'unitNetProceeds',\n UnitAllInPrice = 'unitAllInPrice',\n PurchaseOrderId = 'purchaseOrderId',\n PurchaseOrderDate = 'purchaseOrderDate',\n BuyerUserId = 'buyerUserId',\n PurchaseOrderVendorName = 'purchaseOrderVendorName',\n VendorOrderId = 'vendorOrderId',\n VendorAccountEmail = 'encryptedEmailAddress',\n}\n\nexport const ListingReportArrayAggregateColumnIds: string[] = [\n ListingReportTableValueColumnId.PurchaseOrderId,\n ListingReportTableValueColumnId.PurchaseOrderDate,\n ListingReportTableValueColumnId.BuyerUserId,\n ListingReportTableValueColumnId.PurchaseOrderVendorName,\n ListingReportTableValueColumnId.VendorOrderId,\n ListingReportTableValueColumnId.VendorAccountEmail,\n];\n","import { isEqual } from 'lodash';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { vars } from 'src/core/themes';\nimport { CityIcon } from 'src/svgs/CityIcon';\nimport { CountryIcon } from 'src/svgs/CountryIcon';\nimport { DayIcon } from 'src/svgs/DayIcon';\nimport { EventIcon } from 'src/svgs/EventIcon';\nimport { MonthIcon } from 'src/svgs/MonthIcon';\nimport { PerformerIcon } from 'src/svgs/PerformerIcon';\nimport { SaleIcon } from 'src/svgs/SaleIcon';\nimport { VenueIcon } from 'src/svgs/VenueIcon';\nimport {\n PaperTicketsOutlineIcon,\n ResellAnytimeIcon,\n SeatIcon,\n SellerTraderOutlineIcon,\n SellOutlineIcon,\n} from 'src/svgs/Viagogo';\nimport { WeekIcon } from 'src/svgs/WeekIcon';\nimport {\n EntityWithTicketsQuery,\n Event,\n ListingQuery,\n ListingReportMetricColumn,\n ListingReportMetrics,\n Performer,\n ReportGroupBy,\n SaleQuery,\n SaleReportMetrics,\n Venue,\n} from 'src/WebApiController';\n\nimport { ListingReportTableColumnId } from './columns/inventory/inventoryColumnUtils.types';\n\nexport enum ReportTypes {\n Inventory = 'listing',\n Sale = 'sale',\n}\n\nexport type ArTimeBucketWithData = Pick<\n SaleReportMetrics,\n 'timeBkt' | 'ttlOutsBal'\n>;\n\nexport enum ReportTypesV2 {\n InventoryV2 = 'listingV2',\n SaleV2 = 'saleV2',\n Commission = 'commission',\n}\n\nexport type SaleReportMetricsWithGroupBy = SaleReportMetrics & {\n performer?: Performer;\n venue?: Venue;\n event?: Event;\n timeBucketsWithData?: ArTimeBucketWithData[];\n};\n\nexport type ListingReportMetricsWithGroupBy = ListingReportMetrics & {\n performer?: Performer;\n venue?: Venue;\n event?: Event;\n};\n\nexport const GetIconByGroupByType = (groupByType: ReportGroupBy) => {\n const { isDarkMode } = useSiteTheme();\n\n switch (groupByType) {\n case ReportGroupBy.Performer:\n return (\n \n );\n case ReportGroupBy.Event:\n case ReportGroupBy.EventGenre:\n return (\n \n );\n case ReportGroupBy.EventCity:\n return (\n \n );\n case ReportGroupBy.EventCountry:\n return (\n \n );\n case ReportGroupBy.SeatingRow:\n case ReportGroupBy.SeatingSection:\n return ;\n case ReportGroupBy.SaleDay:\n return ;\n case ReportGroupBy.SaleWeek:\n return ;\n case ReportGroupBy.SaleMonth:\n return ;\n case ReportGroupBy.SaleId:\n return ;\n case ReportGroupBy.ListingId:\n return ;\n case ReportGroupBy.PurchaseId:\n return ;\n case ReportGroupBy.SaleMarketplace:\n case ReportGroupBy.Vendor:\n return ;\n case ReportGroupBy.PurchasedBy:\n case ReportGroupBy.PricedBy:\n case ReportGroupBy.FulfilledBy:\n return ;\n default:\n return (\n \n );\n }\n};\n\nexport const listingMetricsToReportMetricRequest = (metric: string) => {\n if (metric === ListingReportTableColumnId.Zone.toString()) {\n return ListingReportMetricColumn.Zone;\n }\n\n // TODO complete this on https://thestubhub.atlassian.net/browse/POS-3290\n return undefined;\n};\n\nexport const isReportFilterOverriden = (\n filterQuery: EntityWithTicketsQuery,\n filter: ListingQuery | SaleQuery | null | undefined\n) => {\n const filterQueryToCompare = {\n ...filterQuery,\n eventIds: null,\n eventOrMappingIds: null,\n performerIds: null,\n venueIds: null,\n isSortDescending: null,\n sortBy: null,\n searchText: null,\n viewMode: null,\n };\n const reportConfigFilterToCompare = {\n ...filter,\n eventIds: null,\n eventOrMappingIds: null,\n performerIds: null,\n venueIds: null,\n isSortDescending: null,\n searchText: null,\n sortBy: null,\n viewMode: null,\n };\n\n return !isEqual(filterQueryToCompare, reportConfigFilterToCompare);\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { id } from 'date-fns/locale';\nimport { castDraft, produce } from 'immer';\nimport { isEqual } from 'lodash-es';\nimport { useCallback, useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useContentContext } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { FormatContentIds } from 'src/utils/constants/formatContentIdDataMap';\nimport { ReportTypes } from 'src/utils/reportsUtils';\nimport {\n ListingQuery,\n ReportClient,\n ReportConfigOfListingQueryAndReportWidgetTypesInventory,\n ReportConfigOfSaleQueryAndReportWidgetTypesSale,\n ReportConfigOverrideOfListingQuery,\n ReportConfigOverrideOfSaleQuery,\n SaleQuery,\n} from 'src/WebApiController';\n\n/**\n * Map report config settings to their data types.\n *\n * Add to this type if new settings are added.\n */\ntype ReportConfigMap = {\n [ReportTypes.Inventory]: ReportConfigOfListingQueryAndReportWidgetTypesInventory;\n [ReportTypes.Sale]: ReportConfigOfSaleQueryAndReportWidgetTypesSale;\n};\n\n/**\n * Internal type to unify the different report config types.\n */\ntype ReportConfigTypeBase =\n | ReportConfigOfListingQueryAndReportWidgetTypesInventory\n | ReportConfigOfSaleQueryAndReportWidgetTypesSale;\n\ntype ReportConfigType = ReportConfigMap[S];\n\n/**\n * Helper type for consumers of this hook to use for typing report configs more easily.\n */\nexport type ReportConfig = ReportConfigTypeBase & {\n reportType: ReportTypes;\n};\n\ntype UseReportConfigsOptions = {\n reportType: ReportTypes;\n};\n\ntype ReportConfigInput = Omit<\n ReportConfig,\n 'schemaVersion' | 'reportId' | 'reportType'\n>;\n\n/**\n * Data and functions returned by the hook to help with CRUD of report config with different types\n */\ntype UseReportConfigs = {\n reportConfigs: ReportConfig[];\n isLoading: boolean;\n deleteReportConfig: (reportId: number) => void;\n upsertReportConfig: (\n reportId: number | null,\n updatedConfig: Partial,\n isTemporary?: boolean\n ) => Promise;\n upsertReportOverride: (\n configOverride:\n | ReportConfigOverrideOfListingQuery\n | ReportConfigOverrideOfSaleQuery,\n originalReportConfig:\n | ReportConfigOfListingQueryAndReportWidgetTypesInventory\n | ReportConfigOfSaleQueryAndReportWidgetTypesSale\n ) => void;\n getReportConfigNameForDuplicate: (reportName: string) => string;\n};\n\nconst addTimezoneOffsetToSaleReportConfig = (\n reportNoOffset: ReportConfigOfSaleQueryAndReportWidgetTypesSale\n): ReportConfigOfSaleQueryAndReportWidgetTypesSale => {\n return {\n ...reportNoOffset,\n filter: !reportNoOffset.filter\n ? reportNoOffset.filter\n : ({\n ...reportNoOffset.filter,\n timezoneOffsetMins: new Date().getTimezoneOffset(),\n } as SaleQuery),\n };\n};\n\nconst addTimezoneOffsetToListingReportConfig = (\n reportNoOffset: ReportConfigOfListingQueryAndReportWidgetTypesInventory\n): ReportConfigOfListingQueryAndReportWidgetTypesInventory => {\n return {\n ...reportNoOffset,\n filter: !reportNoOffset.filter\n ? reportNoOffset.filter\n : ({\n ...reportNoOffset.filter,\n timezoneOffsetMins: new Date().getTimezoneOffset(),\n } as ListingQuery),\n };\n};\n\n/**\n * Hook to help with CRUD of report config with different types\n * @param options\n * @returns\n */\nexport function useReportConfigs({\n reportType,\n}: UseReportConfigsOptions): UseReportConfigs {\n const { showErrorDialog, trackError } = useErrorBoundaryContext();\n const { formattedContentResolver } = useContentContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const reportClient = useMemo(\n () => new ReportClient(activeAccountWebClientConfig),\n [activeAccountWebClientConfig]\n );\n\n const queryClient = useQueryClient();\n const queryKey = useMemo(\n () => [\n 'useReportConfigs',\n activeAccountWebClientConfig.activeAccountId,\n reportType,\n ],\n [activeAccountWebClientConfig.activeAccountId, reportType]\n );\n\n // Query to get all report configs\n const reportConfigQuery = useQuery[] | null>({\n queryKey,\n queryFn: async () => {\n if (activeAccountWebClientConfig?.activeAccountId == null) {\n return null;\n }\n\n if (reportType === ReportTypes.Inventory) {\n return (await reportClient.getAvailableInventoryReportConfig()).map(\n addTimezoneOffsetToListingReportConfig\n ) as ReportConfigType[];\n } else {\n return (await reportClient.getAvailableSaleReportConfig()).map(\n addTimezoneOffsetToSaleReportConfig\n ) as ReportConfigType[];\n }\n },\n\n enabled: activeAccountWebClientConfig?.activeAccountId != null,\n meta: {\n onError: (err: ErrorTypes) => {\n trackError('ReportClient.getAvailableReportConfig', err, {\n trackErrorData: { reportType },\n });\n },\n },\n refetchOnWindowFocus: false,\n });\n\n const _reportConfigs = useMemo(() => {\n if (reportConfigQuery.data == null) {\n return [];\n }\n return reportConfigQuery.data;\n }, [reportConfigQuery.data]);\n\n // Mutation to upsert report config\n const upsertMutation = useMutation({\n mutationFn: async ({\n value,\n isTemporary,\n }: {\n value: ReportConfigType;\n isTemporary?: boolean;\n }) => {\n if (isTemporary) {\n // Do nothing, just let onMutate handle the optimistic update\n return value.reportId!;\n }\n\n if (reportType === ReportTypes.Inventory) {\n return await reportClient.upsertInventoryReportConfig(\n value as ReportConfigOfListingQueryAndReportWidgetTypesInventory\n );\n }\n return await reportClient.upsertSaleReportConfig(\n value as ReportConfigOfSaleQueryAndReportWidgetTypesSale\n );\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n\n onMutate: ({ value }) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue =\n queryClient.getQueryData[]>(queryKey);\n\n const newValue =\n value.reportId == null\n ? [...(prevValue ?? []), value]\n : prevValue?.map((r) => (r.reportId === value.reportId ? value : r));\n queryClient.setQueryData[]>(queryKey, newValue);\n return { prevValue };\n },\n onError: (err: ErrorTypes, { value }, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('reportClient.upsertReportConfig', err, {\n trackErrorData: { id, value },\n });\n },\n onSettled: (_data, _error, { isTemporary }) => {\n if (!isTemporary) {\n queryClient.invalidateQueries({ queryKey });\n }\n },\n });\n\n const upsertOverrideMutation = useMutation({\n mutationFn: async ({\n configOverride,\n originalReportConfig,\n }: {\n configOverride:\n | ReportConfigOverrideOfListingQuery\n | ReportConfigOverrideOfSaleQuery;\n originalReportConfig:\n | ReportConfigOfListingQueryAndReportWidgetTypesInventory\n | ReportConfigOfSaleQueryAndReportWidgetTypesSale;\n }) => {\n const reportConfigId = originalReportConfig.reportId!;\n configOverride.schemaVersion = originalReportConfig.schemaVersion;\n\n // Set override to null if it is the same as the original report config\n // and the original report config does not have an override.\n if (\n !originalReportConfig.hasFilterOverride &&\n isEqual(originalReportConfig.filter, configOverride.filter)\n ) {\n configOverride.filter = null;\n }\n if (\n !originalReportConfig.hasMetricsOverride &&\n isEqual(originalReportConfig.metrics, configOverride.metrics)\n ) {\n configOverride.metrics = null;\n }\n\n if (reportType === ReportTypes.Inventory) {\n await reportClient.upsertInventoryReportConfigOverride(\n reportConfigId,\n configOverride as ReportConfigOverrideOfListingQuery\n );\n } else {\n await reportClient.upsertSaleReportConfigOverride(\n reportConfigId,\n configOverride as ReportConfigOverrideOfSaleQuery\n );\n }\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n onMutate: ({ originalReportConfig, configOverride }) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue =\n queryClient.getQueryData[]>(queryKey);\n\n const newReportConfig = {\n ...originalReportConfig,\n filter: configOverride.filter ?? originalReportConfig.filter,\n metrics: configOverride.metrics ?? originalReportConfig.metrics,\n } as ReportConfigType;\n\n const newValue = prevValue?.map((r) =>\n r.reportId === newReportConfig.reportId ? newReportConfig : r\n );\n queryClient.setQueryData[]>(queryKey, newValue);\n return { prevValue };\n },\n onError: (\n err: ErrorTypes,\n { originalReportConfig, configOverride },\n context\n ) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('reportClient.upsertReportConfig', err, {\n trackErrorData: { id, originalReportConfig, configOverride },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n },\n });\n\n // Mutation to upsert report config\n const upsertReportOverride = useCallback(\n async (\n configOverride:\n | ReportConfigOverrideOfListingQuery\n | ReportConfigOverrideOfSaleQuery,\n originalReportConfig:\n | ReportConfigOfListingQueryAndReportWidgetTypesInventory\n | ReportConfigOfSaleQueryAndReportWidgetTypesSale\n ) => {\n return await upsertOverrideMutation.mutateAsync({\n configOverride,\n originalReportConfig,\n });\n },\n [upsertOverrideMutation]\n );\n\n const upsertReportConfig = (\n reportConfig: ReportConfigType,\n isTemporary?: boolean\n ) => {\n return upsertMutation.mutateAsync({ value: reportConfig, isTemporary });\n };\n\n // Mutation to delete report config\n const deleteMutation = useMutation({\n mutationFn: async ({ reportId }: { reportId: number }) => {\n return await reportClient.deleteReportConfig(reportId);\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n onMutate: ({ reportId }) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue =\n queryClient.getQueryData[]>(queryKey);\n\n queryClient.setQueryData[]>(\n queryKey,\n prevValue?.filter((r) => r.reportId !== reportId)\n );\n return { prevValue };\n },\n onError: (err: ErrorTypes, { reportId }, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('reportClient.deleteReportConfig', err, {\n trackErrorData: { id, reportId },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n },\n });\n\n const deleteReportConfig = (reportId: number) => {\n deleteMutation.mutateAsync({ reportId });\n };\n\n // Array of report config only used within the hook that has the type\n // which can be directly set to the user setting.\n const reportConfigsInternal: ReportConfigType[] = _reportConfigs.filter(\n (r) => {\n return r.schemaVersion === '1';\n }\n );\n\n const reportConfigs: ReportConfig[] = reportConfigsInternal.map(\n (r) =>\n ({\n ...r,\n reportType,\n }) satisfies ReportConfig\n );\n\n const getReportConfigNameForDuplicate = useCallback(\n (reportName: string) => {\n const reportNames = reportConfigsInternal.map((r) => r.reportName);\n const defaultName = formattedContentResolver(\n FormatContentIds[FormatContentId.CopyOf].id,\n reportName,\n FormatContentIds[FormatContentId.CopyOf].defaultValue\n ) as string;\n if (!reportNames.includes(defaultName)) {\n return defaultName;\n }\n\n let newName = defaultName;\n let i = 2;\n while (reportNames.includes(newName)) {\n newName = `${defaultName} (${i})`;\n i++;\n }\n return newName;\n },\n [formattedContentResolver, reportConfigsInternal]\n );\n\n return {\n reportConfigs,\n isLoading: reportConfigQuery.isLoading,\n deleteReportConfig: (reportId: number) => {\n deleteReportConfig(reportId);\n },\n upsertReportConfig: (\n reportId: number | null,\n configInput: Partial,\n isTemporary?: boolean\n ) => {\n // Create new\n if (reportId == null) {\n // Force conversion is applied here because the type of the report config\n // Depends on the consumer to pass in the right set of widgets and filter types.\n const newConfig = castDraft({\n ...configInput,\n schemaVersion: '1',\n reportId: null,\n } as ReportConfigType);\n\n return upsertReportConfig(newConfig as ReportConfigType);\n }\n\n // Update existing\n const configToUpdate = reportConfigsInternal.find(\n (r) => r.reportId === reportId\n );\n if (!configToUpdate) {\n return new Promise((resolve) => resolve(null));\n }\n const initDraft = castDraft(configToUpdate as ReportConfigType);\n\n const updatedDraft = produce(initDraft, (draft) => {\n if (configInput.reportName != null) {\n draft.reportName = configInput.reportName;\n }\n\n if (configInput.groupBy != null) {\n draft.groupBy = configInput.groupBy;\n }\n if (configInput.metrics != null) {\n draft.metrics = configInput.metrics;\n }\n draft.ownerDisplayName = configInput.ownerDisplayName ?? '';\n draft.widgets = castDraft(configInput.widgets ?? null);\n draft.filter = castDraft(configInput.filter ?? null);\n draft.numberOfItemsPerPage = configInput.numberOfItemsPerPage ?? null;\n draft.sortBy = configInput.sortBy ?? null;\n draft.isSortDescending = configInput.isSortDescending ?? null;\n draft.sellerUserIdsToShare = configInput.sellerUserIdsToShare ?? [];\n draft.roleIdsToShare = configInput.roleIdsToShare ?? [];\n draft.viewableFilterItemIds = configInput.viewableFilterItemIds ?? [];\n draft.editableFilterItemIds = configInput.editableFilterItemIds ?? [];\n draft.hiddenFilterItemIds = configInput.hiddenFilterItemIds ?? [];\n });\n\n return upsertReportConfig(\n updatedDraft as ReportConfigType,\n isTemporary\n );\n },\n upsertReportOverride,\n getReportConfigNameForDuplicate,\n };\n}\n","import { useMemo } from 'react';\nimport { useReportConfigs } from 'src/hooks/useReportConfigs';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { ReportTypes } from 'src/utils/reportsUtils';\nimport { ActionOutboxEntityType, UserSetting } from 'src/WebApiController';\n\nexport function useGetMetricsInUse({\n entityType,\n}: {\n entityType: ActionOutboxEntityType;\n}) {\n const { reportConfigs: listingReports } =\n useReportConfigs({\n reportType: ReportTypes.Inventory,\n });\n const { reportConfigs: saleReports } = useReportConfigs({\n reportType: ReportTypes.Sale,\n });\n const { value: listingColumns = [] } = useServerUserSetting({\n id: UserSetting.InventoryColumnOrder,\n });\n const { value: saleColumns = [] } = useServerUserSetting({\n id: UserSetting.SaleColumnOrder,\n });\n\n const metricsInUse = useMemo(() => {\n if (entityType === ActionOutboxEntityType.Listing) {\n return [\n ...new Set([\n ...listingColumns,\n ...listingReports.flatMap((r) => r.metrics),\n ]),\n ];\n } else if (entityType === ActionOutboxEntityType.Sale) {\n return [\n ...new Set([...saleColumns, ...saleReports.flatMap((r) => r.metrics)]),\n ];\n } else {\n return [];\n }\n }, [entityType, listingColumns, listingReports, saleColumns, saleReports]);\n\n return {\n metricsInUse,\n };\n}\n","import { useCallback, useMemo, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { TAG_VALUE_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { Feature, Tag, TagsValueType, UserSetting } from 'src/WebApiController';\n\nimport { CancelButton } from '../Buttons';\nimport * as styles from './TagsFormBody.css';\n\n// Special characters that are not allowed in reporting column names to avoid interfering with the formula\nconst SPECIAL_CHAR_SET = [\"'\", '[', ']', '{', '}'];\nconst DEFAULT_MAX_NUM_REPORTING_COLUMN = 5;\n\n// Reserved tag names that are not allowed to be created\nconst RESERVED_NAMES = ['SkyboxNotes'];\n\nexport const CreateTagMetadataForm = ({\n mergedTagsMetadata,\n disabled,\n onSubmit,\n onClose,\n}: {\n mergedTagsMetadata: Tag[];\n disabled?: boolean;\n onSubmit: (newTagMetadata: Tag) => void;\n onClose: () => void;\n}) => {\n const {\n watch,\n setValue,\n handleSubmit,\n formState: { errors },\n setError,\n clearErrors,\n } = useForm({\n defaultValues: { key: '', value: '', valueType: TagsValueType.String },\n });\n\n const hasTagTypesUserGroupFeature = useUserHasFeature(\n Feature.TagTypesUserGroup\n );\n\n const duplicateMsg = useContent(ContentId.ExistingTagName);\n const requiredMsg = useContent(ContentId.Required);\n const specialCharsMsg = useContent(ContentId.SpecialCharactersNotAllowed);\n const notAllowedMsg = useContent(ContentId.TagNameNotAllowed);\n\n const { value: maxNumReportingColumn = DEFAULT_MAX_NUM_REPORTING_COLUMN } =\n useServerUserSetting({\n id: UserSetting.ReportingColumnLimit,\n });\n\n const key = watch('key');\n const valueType = watch('valueType');\n const singleValueOnly = watch('singleValueOnly') ?? false;\n const allowMultipleValues = !singleValueOnly;\n const includeInReport = watch('includeInReport');\n\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const validateTagInput = useCallback(\n (data: Tag) => {\n clearErrors('key');\n clearErrors('valueType');\n\n if (!data.key) {\n setError('key', { message: requiredMsg }, { shouldFocus: true });\n return false;\n }\n\n if (mergedTagsMetadata.find((t) => t.key === data.key) != null) {\n setError('key', { message: duplicateMsg }, { shouldFocus: true });\n return false;\n }\n\n if (!data.valueType) {\n setError('valueType', { message: requiredMsg }, { shouldFocus: true });\n return false;\n }\n\n if (SPECIAL_CHAR_SET.some((c) => data.key.includes(c))) {\n setError('key', { message: specialCharsMsg }, { shouldFocus: true });\n return false;\n }\n\n if (RESERVED_NAMES.includes(data.key)) {\n setError('key', { message: notAllowedMsg }, { shouldFocus: true });\n return false;\n }\n\n return true;\n },\n [\n clearErrors,\n duplicateMsg,\n mergedTagsMetadata,\n notAllowedMsg,\n requiredMsg,\n setError,\n specialCharsMsg,\n ]\n );\n\n const onSubmitHandler = useCallback(\n async (newTag: Tag) => {\n // Validation\n if (!validateTagInput(newTag)) {\n return;\n }\n\n try {\n setIsSubmitting(true);\n await onSubmit(newTag);\n setIsSubmitting(false);\n onClose();\n } catch (e) {\n // error tracking is handled in the api hook, only doing console here\n console.error('Unable to save new tag metadata:', e);\n } finally {\n setIsSubmitting(false);\n }\n },\n [onClose, onSubmit, validateTagInput]\n );\n\n const tagTypesOptionsContent = useMemo(() => {\n return Object.entries(TAG_VALUE_TYPE_TO_CID).reduce(\n (cur, [key, value]) => {\n if (!hasTagTypesUserGroupFeature && key === TagsValueType.UserGroup) {\n return cur;\n }\n cur[key] = value;\n return cur;\n },\n {} as Record\n );\n }, [hasTagTypesUserGroupFeature]);\n\n const willExceedReportingColumnLimit = useMemo(() => {\n const numReportingTags = mergedTagsMetadata.filter(\n (t) => t.includeInReport\n ).length;\n return numReportingTags >= maxNumReportingColumn;\n }, [maxNumReportingColumn, mergedTagsMetadata]);\n\n return (\n
    \n }\n errors={errors?.key?.message}\n >\n {\n clearErrors('key');\n setValue('key', e.target.value);\n }}\n disabled={disabled || isSubmitting}\n maxLength={750}\n />\n \n\n }\n errors={errors?.valueType?.message}\n >\n \n placeholderText={ContentId.SelectValueType}\n valueOptionsContent={tagTypesOptionsContent}\n value={valueType}\n onChange={(newValueType) => {\n clearErrors('valueType');\n setValue('valueType', newValueType);\n }}\n disabled={disabled || isSubmitting}\n style={{ width: '100%' }}\n />\n \n {\n // isChecked is true means allow multiple values\n const isChecked = !allowMultipleValues;\n\n setValue('singleValueOnly', !isChecked);\n if (isChecked) {\n setValue('includeInReport', false);\n }\n }}\n disabled={disabled || isSubmitting}\n label={}\n />\n\n {\n const isChecked = !includeInReport;\n setValue('includeInReport', isChecked);\n }}\n label={}\n />\n\n
    \n {\n handleSubmit(onSubmitHandler)();\n }}\n disabled={disabled || isSubmitting}\n >\n \n \n\n \n
    \n
    \n );\n};\n","import React, { ComponentProps } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport type ConfirmDialogProps = {\n onOkay?: () => void;\n headerText: React.ReactNode;\n bodyText: React.ReactNode;\n onCancel?: () => void;\n cancelText?: ContentId;\n okText?: ContentId;\n disabled?: boolean;\n isLoading?: boolean;\n} & ComponentProps;\n\nexport function ConfirmDialog({\n headerText,\n bodyText,\n onCancel,\n onOkay,\n okText,\n cancelText,\n isOpen,\n disabled,\n isLoading,\n ...rest\n}: ConfirmDialogProps) {\n return (\n \n {onCancel && (\n \n )}\n {onOkay && (\n \n )}\n \n }\n {...rest}\n isOpen={isOpen}\n onCancel={onCancel}\n >\n \n {bodyText}\n {isLoading && }\n \n \n );\n}\n","import { useCallback, useMemo, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect, PosSelect } from 'src/core/POS/PosSelect';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { TAG_VALUE_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n Feature,\n Permission,\n Tag,\n TagsValueType,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { CancelButton } from '../Buttons';\nimport * as styles from './TagsFormBody.css';\n\n// Special characters that are not allowed in reporting column names to avoid interfering with the formula\nconst SPECIAL_CHAR_SET = [\"'\", '[', ']', '{', '}'];\nconst DEFAULT_MAX_NUM_REPORTING_COLUMN = 5;\n\nexport const EditTagMetadataForm = ({\n mergedTagsMetadata,\n mergedTagsMetadataWithNoValue,\n disabled,\n onSubmit,\n onDeleteSubmit,\n onClose,\n metricsInUse,\n}: {\n mergedTagsMetadata: Tag[];\n mergedTagsMetadataWithNoValue: Tag[];\n disabled?: boolean;\n onSubmit: (newTagMetadata: Tag) => void;\n onDeleteSubmit: (tagToDelete: Tag) => void;\n onClose: () => void;\n metricsInUse: string[];\n}) => {\n const {\n watch,\n setValue,\n handleSubmit,\n formState: { errors },\n setError,\n clearErrors,\n } = useForm({\n defaultValues: { key: '', value: '', valueType: TagsValueType.String },\n });\n\n const hasTagTypesUserGroupFeature = useUserHasFeature(\n Feature.TagTypesUserGroup\n );\n\n // TODO: Change this to correct one: https://thestubhub.atlassian.net/browse/POS-3668\n const hasDeleteTagTypePermission = useUserHasAnyOfPermissions(\n Permission.Inventory_AddTagType,\n Permission.Sales_AddTagType,\n Permission.Purchases_AddTagType,\n Permission.Events_AddTagType\n );\n\n const reportMsg = useContent(ContentId.Reporting);\n const requiredMsg = useContent(ContentId.Required);\n const specialCharsMsg = useContent(ContentId.SpecialCharactersNotAllowed);\n\n const { value: maxNumReportingColumn = DEFAULT_MAX_NUM_REPORTING_COLUMN } =\n useServerUserSetting({\n id: UserSetting.ReportingColumnLimit,\n });\n\n const key = watch('key');\n const valueType = watch('valueType');\n const singleValueOnly = watch('singleValueOnly') ?? false;\n const allowMultipleValues = !singleValueOnly;\n const includeInReport = watch('includeInReport');\n\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const unselectReportConfirmDialog = useBasicDialog();\n const deleteConfirmDialog = useBasicDialog();\n const keyOptionsContent = useMemo(() => {\n const keyOptions = mergedTagsMetadata\n .toSorted((r1, r2) => r1.key.localeCompare(r2.key))\n .reduce(\n (re, r) => {\n re[r.key] = r.includeInReport ? `${r.key} (${reportMsg})` : r.key;\n return re;\n },\n {} as Record\n );\n\n return keyOptions ?? {};\n }, [mergedTagsMetadata, reportMsg]);\n\n const isUsingTagWithNoValue = useMemo(() => {\n return mergedTagsMetadataWithNoValue.find((t) => t.key === key) != null;\n }, [mergedTagsMetadataWithNoValue, key]);\n\n const validateTagInput = useCallback(\n (data: Tag) => {\n clearErrors('key');\n clearErrors('valueType');\n\n if (!data.key) {\n setError('key', { message: requiredMsg }, { shouldFocus: true });\n return false;\n }\n\n if (!data.valueType) {\n setError('valueType', { message: requiredMsg }, { shouldFocus: true });\n return false;\n }\n\n if (SPECIAL_CHAR_SET.some((c) => data.key.includes(c))) {\n setError('key', { message: specialCharsMsg }, { shouldFocus: true });\n return false;\n }\n\n return true;\n },\n [clearErrors, requiredMsg, setError, specialCharsMsg]\n );\n\n const onSubmitHandler = useCallback(\n async (newTag: Tag) => {\n // Validation\n if (!validateTagInput(newTag)) {\n return;\n }\n\n try {\n setIsSubmitting(true);\n await onSubmit(newTag);\n setIsSubmitting(false);\n onClose();\n } catch (e) {\n // error tracking is handled in the api hook, only doing console here\n console.error('Unable to update tag metadata:', e);\n } finally {\n setIsSubmitting(false);\n }\n },\n [onClose, onSubmit, validateTagInput]\n );\n const tagTypesOptionsContent = useMemo(() => {\n return Object.entries(TAG_VALUE_TYPE_TO_CID).reduce(\n (cur, [key, value]) => {\n if (!hasTagTypesUserGroupFeature && key === TagsValueType.UserGroup) {\n return cur;\n }\n cur[key] = value;\n return cur;\n },\n {} as Record\n );\n }, [hasTagTypesUserGroupFeature]);\n\n const onDeleteSubmitHandler = useCallback(\n async (tag: Tag) => {\n // Validation\n if (!tag.key) {\n return;\n }\n\n try {\n setIsSubmitting(true);\n await onDeleteSubmit(tag);\n setIsSubmitting(false);\n onClose();\n } catch (e) {\n // error tracking is handled in the api hook, only doing console here\n console.error('Unable to delete tag metadata:', e);\n } finally {\n setIsSubmitting(false);\n }\n },\n [onClose, onDeleteSubmit]\n );\n\n const exceedsReportingColumnLimit = useMemo(() => {\n const numReportingTagsExcludingCurrent = mergedTagsMetadata.filter(\n (t) => t.includeInReport && t.key !== key\n ).length;\n\n return numReportingTagsExcludingCurrent >= maxNumReportingColumn;\n }, [key, maxNumReportingColumn, mergedTagsMetadata]);\n\n return (\n <>\n
    \n }\n errors={errors?.key?.message}\n >\n {\n clearErrors('key');\n setValue('key', key);\n\n const existingTag = mergedTagsMetadata.find((t) => t.key === key);\n if (existingTag && existingTag.valueType) {\n setValue('valueType', existingTag.valueType);\n setValue(\n 'singleValueOnly',\n existingTag.singleValueOnly ?? false\n );\n setValue(\n 'includeInReport',\n existingTag.includeInReport ?? false\n );\n } else {\n setValue('valueType', TagsValueType.String);\n setValue('singleValueOnly', false);\n setValue('includeInReport', false);\n }\n }}\n value={key}\n displayText={key}\n disabled={disabled || isSubmitting}\n style={{ width: '100%' }}\n searchable\n valueOptionsContent={keyOptionsContent}\n placeholderText={ContentId.Key}\n />\n \n\n }\n errors={errors?.valueType?.message}\n >\n \n placeholderText={ContentId.SelectValueType}\n valueOptionsContent={tagTypesOptionsContent}\n value={valueType}\n onChange={(newValueType) => {\n clearErrors('valueType');\n setValue('valueType', newValueType);\n }}\n disabled={!isUsingTagWithNoValue || disabled || isSubmitting}\n style={{ width: '100%' }}\n />\n \n {\n // isChecked is true means allow multiple values\n const isChecked = !allowMultipleValues;\n\n setValue('singleValueOnly', !isChecked);\n if (isChecked) {\n setValue('includeInReport', false);\n }\n }}\n disabled={!isUsingTagWithNoValue || disabled || isSubmitting}\n label={}\n />\n {\n const isChecked = !includeInReport;\n if (!isChecked) {\n if (metricsInUse.includes(key)) {\n unselectReportConfirmDialog.launchDialog();\n } else {\n setValue('includeInReport', isChecked);\n }\n } else {\n setValue('includeInReport', isChecked);\n }\n }}\n label={}\n />\n\n \n \n {\n handleSubmit(onSubmitHandler)();\n }}\n disabled={disabled || isSubmitting || !key}\n >\n \n \n\n \n \n
    \n {hasDeleteTagTypePermission && (\n {\n deleteConfirmDialog.launchDialog();\n }}\n disabled={disabled || isSubmitting || !key}\n >\n \n \n )}\n
    \n
    \n \n }\n bodyText={}\n onOkay={() => {\n setValue('includeInReport', false);\n unselectReportConfirmDialog.closeDialog();\n }}\n onCancel={() => unselectReportConfirmDialog.closeDialog()}\n />\n }\n bodyText={\n \n \n \n \n \n }\n onOkay={handleSubmit(onDeleteSubmitHandler)}\n disabled={disabled || isSubmitting}\n onCancel={() => deleteConfirmDialog.closeDialog()}\n />\n \n );\n};\n","import { DndContext, DragEndEvent } from '@dnd-kit/core';\nimport { arrayMove, SortableContext } from '@dnd-kit/sortable';\nimport { useCallback, useMemo, useState } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DropWrapper } from 'src/core/POS/DragAndDropSort/DragAndDrop';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useGetMetricsInUse } from 'src/hooks/useGetMetricsInUse';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { HamburgerMenuIcon } from 'src/svgs';\nimport { DeleteIcon, EditIcon, IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ActionOutboxEntityType, Permission, Tag } from 'src/WebApiController';\n\nimport { ButtonWithIcon } from '../Buttons';\nimport { CreateTagMetadataForm } from './CreateTagMetadataForm';\nimport { EditTagMetadataForm } from './EditTagMetadataForm';\nimport * as styles from './TagsFormBody.css';\nimport { TagValueDisplay, TagValueInputCell } from './TagValueCell';\n\nconst TagDraggableListItem = ({\n tag,\n tagsCurrentEntity,\n disabled,\n onBlur,\n isEditing,\n onRowStartEdit,\n onRowChange,\n onRowDelete,\n}: {\n tag: Tag;\n tagsCurrentEntity: Tag[];\n disabled?: boolean;\n onRowDelete: (tag: Tag) => void;\n isEditing?: boolean;\n onRowStartEdit?: () => void;\n onRowChange: (tag: Tag, newValue: string) => void;\n onBlur: () => void;\n}) => {\n return (\n {\n // Disable dragging\n if (disabled) {\n e.stopPropagation();\n }\n }}\n >\n
    \n {!disabled && (\n \n )}\n
    \n {tag.key}\n
    \n
    \n
    \n {isEditing ? (\n {\n e.stopPropagation();\n }}\n >\n {\n onRowChange(tag, newValue);\n }}\n />\n
    \n ) : (\n <>\n \n {\n e.stopPropagation();\n }}\n style={{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: vars.spacing['xxs'],\n }}\n >\n {\n e.stopPropagation();\n onRowStartEdit?.();\n }}\n />\n onRowDelete(tag)}\n />\n \n \n )}\n \n \n );\n};\n\nexport const TagsPanelEditMode = ({\n tagsWithEmptyValue,\n tagsWithValue,\n onTagsUpdate,\n onTagValueChange,\n disabled,\n entityType,\n onEditDone,\n}: {\n tagsWithEmptyValue: Tag[];\n tagsWithValue: Tag[];\n disabled?: boolean;\n onTagsUpdate: (tagsCurrentEntity: Tag[]) => void;\n onTagValueChange: (tag: Tag, newValue: string) => void;\n onEditDone: () => void;\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Purchase\n | ActionOutboxEntityType.Sale\n | ActionOutboxEntityType.SellerEvent;\n}) => {\n const [isEditingTagMetadata, setIsEditingTagMetadata] =\n useState(false);\n const [isCreatingTag, setIsCreatingTag] = useState(false);\n const [tagsEditing, setTagsEditing] = useState();\n const {\n tagsMetadata: existingTagsCurrentType = [],\n tagsWithNoValue: existingTagsCurrentTypeWithNoValue = [],\n mergeEntityTagsMetadata,\n deleteEntityTagsMetadata,\n } = useTagsForEntityType(entityType);\n const { metricsInUse } = useGetMetricsInUse({ entityType });\n\n const hasCreateTagPermission = useUserHasAnyOfPermissions(\n entityType === ActionOutboxEntityType.Listing\n ? Permission.Inventory_AddTagType\n : entityType === ActionOutboxEntityType.Sale\n ? Permission.Sales_AddTagType\n : entityType === ActionOutboxEntityType.Purchase\n ? Permission.Purchases_AddTagType\n : Permission.Events_AddTagType\n );\n\n const onDragEndHandler = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event;\n const activeIndex = active.data.current?.sortable.index;\n const overIndex = over?.data.current?.sortable.index;\n if (!over) return;\n onTagsUpdate(\n arrayMove(tagsWithEmptyValue, activeIndex, overIndex)\n .filter((t) => t.value)\n .map((t, i) => ({\n ...t,\n ordinal: i,\n }))\n );\n },\n [onTagsUpdate, tagsWithEmptyValue]\n );\n\n const onTagDelete = useCallback(\n (tag: Tag) => {\n const newTags = tagsWithEmptyValue.filter(\n (t) => !(t.key === tag.key && t.value === tag.value)\n );\n onTagsUpdate(newTags.filter((t) => t.value));\n },\n [onTagsUpdate, tagsWithEmptyValue]\n );\n\n const onTagMetadataUpdate = useCallback(\n async (tagMetadataUpdate: Tag) => {\n // Update tags metadata immediately\n await mergeEntityTagsMetadata([tagMetadataUpdate]);\n },\n [mergeEntityTagsMetadata]\n );\n\n const onTagMetadataDelete = useCallback(\n async (tag: Tag) => {\n // Delete tags metadata immediately\n await deleteEntityTagsMetadata([tag]);\n // Remove tags with the deleted key in the entity in edit mode\n onTagsUpdate(tagsWithEmptyValue.filter((t) => t.key !== tag.key));\n },\n [deleteEntityTagsMetadata, onTagsUpdate, tagsWithEmptyValue]\n );\n\n // Merge tags with no value from the entity type with the ones from the entity\n const existingTagsCurrentTypeWithNoValueMerged = useMemo(\n () =>\n existingTagsCurrentTypeWithNoValue.filter(\n (t) => tagsWithValue.find((t2) => t2.key === t.key) == null\n ),\n [existingTagsCurrentTypeWithNoValue, tagsWithValue]\n );\n\n return (\n \n
    \n \n tag.ordinal?.toString() ?? '')}\n >\n {tagsWithValue.map((tag) => (\n \n {\n setTagsEditing(tag);\n }}\n disabled={isEditingTagMetadata || disabled}\n onBlur={() => setTagsEditing(undefined)}\n onRowChange={onTagValueChange}\n onRowDelete={onTagDelete}\n />\n \n ))}\n \n \n
    \n {isEditingTagMetadata ? (\n <>\n {isCreatingTag ? (\n setIsEditingTagMetadata(false)}\n />\n ) : (\n setIsEditingTagMetadata(false)}\n metricsInUse={metricsInUse}\n />\n )}\n \n ) : (\n <>\n \n {hasCreateTagPermission ? (\n \n }\n textContentId={ContentId.CreateNewTag}\n onClick={() => {\n setIsCreatingTag(true);\n setIsEditingTagMetadata(true);\n }}\n style={{ width: 'min-content', whiteSpace: 'nowrap' }}\n variant={'text'}\n />\n ) : (\n \n )}\n {mergeEntityTagsMetadata.length > 0 ? (\n \n }\n textContentId={ContentId.EditTagTypes}\n onClick={() => {\n setIsCreatingTag(false);\n setIsEditingTagMetadata(true);\n }}\n style={{ width: 'min-content', whiteSpace: 'nowrap' }}\n variant={'text'}\n />\n ) : (\n \n )}\n \n {\n setIsEditingTagMetadata(false);\n setTagsEditing(undefined);\n onTagsUpdate(tagsWithValue.map((t, i) => ({ ...t, ordinal: i })));\n onEditDone();\n }}\n disabled={disabled}\n style={{ width: '100%', whiteSpace: 'nowrap' }}\n variant=\"outline\"\n >\n \n \n \n )}\n
    \n );\n};\n","import { useCallback, useMemo, useState } from 'react';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { EditIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ActionOutboxEntityType, Tag } from 'src/WebApiController';\n\nimport * as styles from './TagsFormBody.css';\nimport { TagsPanelDisplayMode } from './TagsPanelDisplayMode';\nimport { TagsPanelEditMode } from './TagsPanelEditMode';\n\nexport const TagsFormBodyV2 = ({\n disabled,\n tagsCurrentEntity,\n onTagsUpdate,\n entityType,\n canCreateTagType,\n canEditTags,\n}: {\n disabled?: boolean;\n canCreateTagType: boolean;\n canEditTags: boolean;\n tagsCurrentEntity: Tag[];\n onTagsUpdate: (tagsCurrentEntity: Tag[]) => void;\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Purchase\n | ActionOutboxEntityType.Sale\n | ActionOutboxEntityType.SellerEvent;\n}) => {\n const { tagsMetadata: existingTagsCurrentType = [] } =\n useTagsForEntityType(entityType);\n\n const tagsWithEmptyValue = useMemo(() => {\n // Fill in the ordinal for tags that don't have it\n const hasEveryOrdinal = tagsCurrentEntity.every((t) => t.ordinal != null);\n\n let tagsOrdinalFilled: Tag[] = [...tagsCurrentEntity];\n if (!hasEveryOrdinal) {\n tagsOrdinalFilled = tagsOrdinalFilled\n .toSorted((t1, t2) => t1.key.localeCompare(t2.key))\n .map((t, i) => ({ ...t, ordinal: i }));\n }\n\n tagsOrdinalFilled = tagsOrdinalFilled.toSorted(\n (t1, t2) => (t1.ordinal ?? 0) - (t2.ordinal ?? 0)\n );\n\n // Add tags that don't have value\n (existingTagsCurrentType ?? []).forEach((t) => {\n if (!tagsOrdinalFilled.find((t2) => t2.key === t.key)) {\n tagsOrdinalFilled.push({\n ...t,\n value: '',\n ordinal: tagsOrdinalFilled.length,\n });\n }\n });\n\n return tagsOrdinalFilled;\n }, [existingTagsCurrentType, tagsCurrentEntity]);\n\n const tagsWithValue = useMemo(() => {\n return tagsWithEmptyValue.filter((t) => t.value);\n }, [tagsWithEmptyValue]);\n\n const [isEditMode, setIsEditMode] = useState(false);\n\n const onTagsUpdateHandler = useCallback(\n (newTags: Tag[]) => {\n // Filter out tags with empty value\n const tagsWithValue = newTags.filter((t) => t.value);\n // De-duplicate tags\n let tagsDeDup: Tag[] = [];\n tagsWithValue.forEach((t) => {\n if (!tagsDeDup.find((t2) => t2.key === t.key && t2.value === t.value)) {\n tagsDeDup.push(t);\n }\n });\n tagsDeDup = tagsDeDup.map((t, i) => ({ ...t, ordinal: i }));\n onTagsUpdate(tagsDeDup);\n },\n [onTagsUpdate]\n );\n\n const onTagValueChange = useCallback(\n (tag: Tag, newValue: string) => {\n const newTags = tagsWithEmptyValue.map((t) => {\n if (t.key === tag.key && t.value === tag.value) {\n return { ...t, value: newValue };\n }\n return t;\n });\n onTagsUpdateHandler(newTags);\n },\n [onTagsUpdateHandler, tagsWithEmptyValue]\n );\n\n const editTagTypesLabel = useContent(ContentId.EditTagTypes);\n\n return (\n <>\n
    \n
    \n {\n setIsEditMode(true);\n }}\n withHoverEffect\n title={editTagTypesLabel}\n />\n
    \n {isEditMode ? (\n {\n setIsEditMode(false);\n }}\n entityType={entityType}\n />\n ) : (\n \n )}\n
    \n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport React, { useCallback, useContext } from 'react';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { MoneyClient, UiCurrency } from 'src/WebApiController';\n\ntype ILocalizationContext = {\n currencyCache: Record;\n getUiCurrency: (currencyCode: string | null | undefined) => UiCurrency;\n};\n\nexport const LocalizationContext = React.createContext({\n currencyCache: {},\n getUiCurrency: () =>\n ({\n code: 'USD',\n sym: '$',\n dec: 2,\n }) as UiCurrency,\n});\n\nexport const useLocalizationContext = () => useContext(LocalizationContext);\n\n/**\n * Adds a modal to the page where the provider is added\n * Provides utils to set all or update part of the modal\n * The modal is assumed to be open when it contains content\n */\nexport const LocalizationContextProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const { trackError } = useErrorBoundaryContext();\n\n const availableCurrenciesQuery = useQuery({\n queryKey: ['getAvailableCurrencies'],\n queryFn: async () => {\n const results = await new MoneyClient({}).getAvailableCurrencies();\n\n const resultsMap = results?.reduce(\n (r, cur) => {\n r[cur.code] = cur;\n return r;\n },\n {} as Record\n );\n\n return resultsMap;\n },\n\n staleTime: Infinity, // currencies don't change often and we're invalidate on reload\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('MoneyClient.getAvailableCurrencies', error);\n },\n },\n });\n\n const getUiCurrency = useCallback(\n (currencyCode: string | null | undefined) => {\n if (!currencyCode || !availableCurrenciesQuery.data) {\n return {\n code: currencyCode ?? '',\n sym: currencyCode ?? '',\n dec: 2,\n } as UiCurrency;\n }\n\n return (\n availableCurrenciesQuery.data[currencyCode] ??\n ({\n code: currencyCode ?? '',\n sym: currencyCode ?? '',\n dec: 2,\n } as UiCurrency)\n );\n },\n [availableCurrenciesQuery.data]\n );\n\n return (\n \n {children}\n \n );\n};\n","import styled from 'styled-components/macro';\n\nexport const TableOverflowWrapper = styled.div`\n // TODO temporarily comment out until popover overflow is fixed\n /* overflow-x: auto; */\n`;\n","import { useMemo } from 'react';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport {\n PosMultiSelect,\n PosMultiSelectProps,\n} from 'src/core/POS/PosMultiSelect';\n\nexport const CurrencyFilterMultiSelector = (\n props: Omit\n) => {\n const { currencyCache } = useLocalizationContext();\n\n const availableCurrenciesOptions = useMemo(\n () =>\n Object.values(currencyCache || []).reduce(\n (result, cur) => {\n result[cur.code] = cur.code;\n return result;\n },\n {} as Record\n ),\n [currencyCache]\n );\n\n return (\n \n );\n};\n","import { useEffect, useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { PosSelect, PosSelectProps } from 'src/core/POS/PosSelect';\n\nexport const CurrencyFilterSelector = (\n props: Omit\n) => {\n const { loginContext } = useAppContext();\n const { currencyCache } = useLocalizationContext();\n\n const { value, onChange, enableEmptySelection } = props;\n\n useEffect(() => {\n if (\n loginContext?.user?.activeAccount?.currencyCode &&\n !value &&\n !enableEmptySelection\n ) {\n onChange(loginContext?.user?.activeAccount?.currencyCode);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [loginContext?.user?.activeAccount?.currencyCode, value]);\n\n const availableCurrenciesOptions = useMemo(\n () =>\n Object.values(currencyCache || []).reduce(\n (result, cur) => {\n result[cur.code] = cur.code;\n return result;\n },\n {} as Record\n ),\n [currencyCache]\n );\n\n return (\n \n );\n};\n","import { ChangeEventHandler, ComponentPropsWithRef } from 'react';\nimport { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport type SwitchProps = {\n checked: boolean;\n onChange?: ChangeEventHandler;\n disabled?: boolean;\n containerClassName?: string;\n};\nexport function Switch({\n checked,\n onChange,\n disabled,\n containerClassName,\n ...props\n}: SwitchProps &\n Omit<\n ComponentPropsWithRef,\n 'type' | 'checked' | 'onChange' | 'disabled'\n >) {\n return (\n \n \n \n \n \n );\n}\n\nconst StyledContainer = styled.div`\n display: flex;\n height: 24px;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nconst StyledInput = styled.input`\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n`;\n\nconst Styledlabel = styled.label<{ checked: boolean; disable?: boolean }>`\n width: 32px !important;\n height: ${() => `${vars.spacing.xs}`};\n position: relative;\n background-color: ${(props) => props.theme.colors.textDisabled};\n border-radius: ${() => vars.spacing.xxs};\n cursor: ${(props) => (props.disable ? 'default' : 'pointer')};\n\n &::before {\n content: '';\n top: 50%;\n left: 0;\n transform: ${(props) =>\n props.checked ? 'translate(100%, -50%)' : 'translate(0, -50%)'};\n transition: 0.3s transform;\n position: absolute;\n width: ${() => vars.spacing.lg};\n height: ${() => vars.spacing.lg};\n border-radius: 50%;\n background: ${(props) => props.theme.colors.backgroundPrimary};\n border: 2px solid\n ${(props) =>\n props.disable\n ? props.theme.colors.borderDisabled\n : props.theme.colors.borderActive};\n }\n`;\n","import {\n ChangeEvent,\n forwardRef,\n ReactElement,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport { mergeProps } from 'src/core/utils';\nimport { UiCurrency } from 'src/WebApiController';\n\nimport { PosTextField } from '../PosTextField';\nimport * as styles from './PosCurrencyField.css';\n\nexport type PosCurrencyFieldProps = Omit<\n React.ComponentProps,\n 'step' | 'type' | 'inputMode'\n> & {\n uiCurrency: UiCurrency;\n};\n\nexport const PosCurrencyField = forwardRef<\n HTMLInputElement,\n PosCurrencyFieldProps\n>(function PosCurrencyField(\n { uiCurrency, value, onChange, onBlur, onKeyUp, rootProps, ...rest },\n ref\n): ReactElement {\n const [isInputting, setIsInputting] = useState(false);\n\n const fixedValue = useMemo(() => {\n if (value == null) {\n return '';\n }\n const numericalValue = parseFloat((value ?? 0).toString());\n return isInputting\n ? numericalValue\n : numericalValue.toFixed(uiCurrency.dec);\n }, [isInputting, uiCurrency.dec, value]);\n\n const onChangeHandler = useCallback(\n (e: ChangeEvent) => {\n setIsInputting(true);\n onChange?.(e);\n },\n [onChange]\n );\n\n const onBlurHandler = useCallback(\n (e: React.FocusEvent) => {\n setIsInputting(false);\n\n // If user type in numbers less than the current decimal digit,\n // like 0.003 when the display is 0.00, we know they meant to type from the end\n // so it should shift upward (like how the rest of money inputs are)\n if (e.target.value) {\n const newValue = parseFloat(e.target.value);\n const fixedNum = newValue.toFixed(uiCurrency.dec);\n if (fixedNum !== fixedValue) {\n e.target.value = fixedNum;\n onChange?.(e);\n }\n }\n\n onBlur?.(e);\n },\n [fixedValue, onBlur, onChange, uiCurrency.dec]\n );\n\n return (\n \n );\n});\n","import styled from 'styled-components/macro';\n\nexport const FormTable = styled.table`\n border-collapse: collapse;\n\n th {\n font-family: var(--bs-body-font-family);\n font-size: var(--bs-body-font-size);\n font-weight: var(--bs-body-font-weight);\n }\n\n td,\n th {\n border: 0px solid transparent;\n background-clip: padding-box;\n vertical-align: middle;\n }\n\n tr > td + td,\n tr > th + th {\n border-left-width: 16px;\n }\n\n tr + tr > td {\n border-top-width: 8px;\n }\n`;\n","import {\n Controller,\n UseFieldArrayReturn,\n UseFormReturn,\n} from 'react-hook-form';\nimport { CurrencyFilterSelector } from 'src/components/Selectors/CurrencyFilterSelector';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { DatePickerInput } from 'src/core/POS/DateSelector';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n FieldError,\n PurchasePaymentMethodSelectionInput,\n} from 'src/modals/common/Purchase';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { Feature } from 'src/WebApiController';\n\nimport { FormTable } from './AddPurchasePaymentTable.styled';\n\nexport type AddPurchasePaymentTableFieldValues = {\n payments: {\n currencyCode: string;\n paymentAmount?: number;\n isPaid: boolean;\n paymentDueDate?: Date;\n paymentDate?: Date;\n paymentMethodId?: number;\n }[];\n};\n\nexport type AddPurchasePaymentTableProps = {\n form: UseFormReturn;\n fieldArray: UseFieldArrayReturn<\n AddPurchasePaymentTableFieldValues,\n 'payments',\n 'id'\n >;\n};\n\nexport function AddPurchasePaymentTable({\n form: {\n control,\n formState,\n resetField,\n setValue,\n getValues,\n getFieldState,\n watch,\n register,\n clearErrors,\n },\n fieldArray: { fields },\n}: AddPurchasePaymentTableProps) {\n const requiredMsg = useContent(ContentId.Required);\n const { getUiCurrency } = useLocalizationContext();\n\n const hasEnforcePurchasePaymentCurrencyFeature = useUserHasFeature(\n Feature.EnforcePurchasePaymentCurrency\n );\n\n const table = (\n \n \n \n \n \n \n {!hasEnforcePurchasePaymentCurrencyFeature && }\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {fields.map((field, index) => (\n \n {!hasEnforcePurchasePaymentCurrencyFeature && (\n \n (\n \n )}\n />\n \n )}\n \n {\n return parseFloat(fieldVal?.toString() ?? '')\n ? undefined\n : requiredMsg;\n },\n },\n valueAsNumber: true,\n onChange: ({ target: { value } }) => {\n clearErrors(`payments.${index}.paymentAmount`);\n setValue(\n `payments.${index}.paymentAmount`,\n parseFloat(value)\n );\n },\n })}\n />\n \n \n (\n {\n setValue(field.name, d);\n }}\n />\n )}\n />\n \n \n (\n {\n const isPaid = e.currentTarget.checked;\n if (isPaid) {\n setValue(\n `payments.${index}.paymentDate`,\n getValues(`payments.${index}.paymentDueDate`)\n );\n } else {\n resetField(`payments.${index}.paymentDate`);\n }\n onChange(e);\n }}\n {...field}\n />\n )}\n />\n \n \n (\n {\n setValue(field.name, d);\n }}\n />\n )}\n />\n \n \n (\n \n )}\n />\n \n \n ))}\n \n \n );\n return (\n
    \n {table}\n {formState.errors.payments && (\n \n \n \n )}\n
    \n );\n}\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const InputRowAmount = styled.div`\n flex-wrap: nowrap;\n display: flex;\n column-gap: ${() => vars.spacing.m};\n align-items: center;\n div:nth-child(2) {\n flex-grow: 1;\n }\n`;\n\nexport const Divider = styled.div`\n border-bottom: 1px solid ${(props) => props.theme.colors.borderPrimary};\n width: 100%;\n padding-bottom: ${() => vars.spacing.lg};\n`;\n\nexport const SwitchContainer = styled.span`\n label {\n width: ${() => vars.spacing.xl};\n }\n`;\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\n// XXX: Use this instead of `theme.media.tablet` because theme breakpoints are exclusive.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst tabletBreakPoint = ({ theme }: { theme: any }) =>\n `min-width: ${theme.media.breakpoints.md}px`;\n\nexport const InputGrid = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n column-gap: ${() => vars.spacing.m};\n\n label {\n width: 100%;\n }\n\n .DayPickerInput input {\n // fixes overflow issue on smaller screen sizes\n width: 120px;\n }\n\n @media only screen and (${tabletBreakPoint}) {\n grid-template-columns: 1fr 1fr;\n }\n`;\n\nexport const InputRow = styled.div`\n display: flex;\n column-gap: ${() => vars.spacing.m};\n align-items: baseline;\n flex-wrap: wrap;\n`;\n\nexport const InputRowAmount = styled(InputRow)`\n flex-wrap: nowrap;\n\n div:nth-child(2) {\n flex-grow: 1;\n }\n`;\n\nexport const FullWidthSelectionInputContainer = styled.div`\n div.full-width {\n max-width: 100%;\n width: 100%;\n .value-selected {\n position: absolute;\n width: 80%;\n text-align: left;\n }\n }\n`;\n\nexport const InputRowSide = styled.div`\n width: 100%;\n @media only screen and (${tabletBreakPoint}) {\n width: initial;\n flex-grow: 1;\n }\n`;\n","import {\n Controller,\n UseFieldArrayReturn,\n UseFormReturn,\n} from 'react-hook-form';\nimport { CurrencyFilterSelector } from 'src/components/Selectors/CurrencyFilterSelector';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { DatePickerInput } from 'src/core/POS/DateSelector';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n FieldError,\n FieldLabel,\n FieldWrapper,\n PurchasePaymentMethodSelectionInput,\n} from 'src/modals/common/Purchase';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { Feature } from 'src/WebApiController';\n\nimport * as styles from './AddPurchasePaymentTiles.css';\nimport {\n Divider,\n InputRowAmount,\n SwitchContainer,\n} from './AddPurchasePaymentTiles.styled';\nimport { FullWidthSelectionInputContainer } from './GeneratePurchasePaymentsForm.styled';\n\nexport type AddPurchasePaymentTilesFieldValues = {\n payments: {\n currencyCode: string;\n paymentAmount?: number;\n isPaid: boolean;\n paymentDueDate?: Date;\n paymentDate?: Date;\n paymentMethodId?: number;\n }[];\n};\n\nexport type AddPurchasePaymentTilesProps = {\n form: UseFormReturn;\n fieldArray: UseFieldArrayReturn<\n AddPurchasePaymentTilesFieldValues,\n 'payments',\n 'id'\n >;\n};\n\nexport function AddPurchasePaymentTiles({\n form: {\n control,\n formState,\n resetField,\n setValue,\n getValues,\n getFieldState,\n clearErrors,\n watch,\n register,\n },\n fieldArray: { fields },\n}: AddPurchasePaymentTilesProps) {\n const requiredMsg = useContent(ContentId.Required);\n const { getUiCurrency } = useLocalizationContext();\n\n const hasEnforcePurchasePaymentCurrencyFeature = useUserHasFeature(\n Feature.EnforcePurchasePaymentCurrency\n );\n\n return (\n
    \n {fields.map((field, index) => (\n
    \n \n \n \n \n \n {!hasEnforcePurchasePaymentCurrencyFeature && (\n (\n \n )}\n />\n )}\n {\n return parseFloat(fieldVal?.toString() ?? '')\n ? undefined\n : requiredMsg;\n },\n },\n valueAsNumber: true,\n onChange: ({ target: { value } }) => {\n clearErrors(`payments.${index}.paymentAmount`);\n setValue(\n `payments.${index}.paymentAmount`,\n parseFloat(value)\n );\n },\n })}\n />\n \n \n \n \n \n \n (\n {\n setValue(field.name, d);\n }}\n />\n )}\n />\n \n \n \n \n \n (\n \n {\n const isPaid = e.currentTarget.checked;\n if (isPaid) {\n setValue(\n `payments.${index}.paymentDate`,\n getValues(`payments.${index}.paymentDueDate`)\n );\n } else {\n resetField(`payments.${index}.paymentDate`);\n }\n onChange(e);\n }}\n {...field}\n />\n \n )}\n />\n \n \n \n \n \n (\n {\n setValue(field.name, d);\n }}\n />\n )}\n />\n \n \n \n \n \n \n (\n \n )}\n />\n \n \n \n
    \n ))}\n {formState.errors.payments && (\n \n \n \n )}\n
    \n );\n}\n","import { uniq } from 'lodash-es';\nimport { Controller, useForm, UseFormReturn } from 'react-hook-form';\nimport { CurrencyFilterSelector } from 'src/components/Selectors/CurrencyFilterSelector';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { DatePickerInput } from 'src/core/POS/DateSelector';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n FieldError,\n FieldLabel,\n FieldWrapper,\n PurchasePaymentMethodSelectionInput,\n} from 'src/modals/common/Purchase';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { Feature } from 'src/WebApiController';\n\nimport {\n FullWidthSelectionInputContainer,\n InputGrid,\n InputRow,\n InputRowAmount,\n InputRowSide,\n} from './GeneratePurchasePaymentsForm.styled';\n\nexport type GeneratePurchasePaymentsFieldValues = {\n fromDate: Date;\n toDate: Date;\n paymentCount: number;\n currencyCode: string;\n paymentAmountType: 'occurrence' | 'total';\n paymentAmount: number;\n paymentMethodId: number;\n};\n\nexport type GeneratePurchasePaymentsFormProps = {\n form: UseFormReturn;\n};\n\nexport function GeneratePurchasePaymentsForm({\n form: {\n control,\n formState: { errors },\n register,\n watch,\n setValue,\n },\n}: GeneratePurchasePaymentsFormProps) {\n const hasEnforcePurchasePaymentCurrencyFeature = useUserHasFeature(\n Feature.EnforcePurchasePaymentCurrency\n );\n\n const requiredMsg = useContent(ContentId.Required);\n const occurrenceText = useContent(ContentId.PerPayment);\n const totalText = useContent(ContentId.Total);\n\n const paymentAmount = watch('paymentAmount');\n const currencyCode = watch('currencyCode');\n const { getUiCurrency } = useLocalizationContext();\n\n return (\n <>\n \n \n \n \n \n (\n {\n setValue(field.name, d);\n }}\n />\n )}\n />\n {errors.fromDate && (\n {errors.fromDate?.message}\n )}\n \n \n \n \n \n (\n {\n setValue(field.name, d);\n }}\n />\n )}\n />\n {errors.toDate && {errors.toDate?.message}}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n (\n \n )}\n />\n \n \n \n \n \n \n \n \n \n \n {!hasEnforcePurchasePaymentCurrencyFeature && (\n (\n \n )}\n />\n )}\n {\n return parseFloat(fieldVal?.toString() ?? '')\n ? undefined\n : requiredMsg;\n },\n },\n valueAsNumber: true,\n })}\n />\n \n {(errors.currencyCode || errors.paymentAmount) &&\n uniq([\n errors.currencyCode?.message,\n errors.paymentAmount?.message,\n ])\n .filter((msg) => Boolean(msg))\n .map((msg) => {\n return {msg};\n })}\n \n \n \n \n \n \n \n (\n \n )}\n />\n \n {errors.paymentMethodId && (\n {errors.paymentMethodId?.message}\n )}\n \n \n \n );\n}\n\nexport function useGeneratePurchasePaymentsForm({\n defaultCurrencyCode,\n}: {\n defaultCurrencyCode: string;\n}) {\n return useForm({\n defaultValues: {\n currencyCode: defaultCurrencyCode,\n paymentAmountType: 'occurrence',\n },\n });\n}\n","import { ComponentProps, useCallback, useState } from 'react';\nimport { useFieldArray, useForm } from 'react-hook-form';\nimport { CancelButton } from 'src/components/Buttons';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Radio, RadioGroup, Stack } from 'src/core/ui';\nimport { Button } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { divideDateInterval } from 'src/utils/dateTimeUtils';\nimport { newBigIntId } from 'src/utils/idUtils';\nimport {\n PurchasePayment,\n PurchasePaymentMethodType,\n PurchasePaymentStatus,\n UiMoney,\n} from 'src/WebApiController';\n\nimport { TableOverflowWrapper } from './AddPurchasePaymentDialog.styled';\nimport {\n AddPurchasePaymentTable,\n AddPurchasePaymentTableFieldValues,\n} from './components/AddPurchasePaymentTable';\nimport { AddPurchasePaymentTiles } from './components/AddPurchasePaymentTiles';\nimport {\n GeneratePurchasePaymentsForm,\n useGeneratePurchasePaymentsForm,\n} from './components/GeneratePurchasePaymentsForm';\n\nexport type AddPurchasePaymentDialogProps = Omit<\n ComponentProps,\n 'header' | 'footer'\n> & {\n defaultCurrencyCode: string;\n onSave: (data: PurchasePayment[]) => void;\n onCancel: () => void;\n};\n\nexport function AddPurchasePaymentDialog({\n defaultCurrencyCode,\n onSave,\n onCancel,\n ...genericDialogProps\n}: AddPurchasePaymentDialogProps) {\n const { getUiCurrency } = useLocalizationContext();\n\n const requiredMsg = useContent(ContentId.Required);\n const [isSinglePayment, setIsSinglePayment] = useState(true);\n const getDefaultSinglePaymentStore = () => ({\n currencyCode: defaultCurrencyCode,\n isPaid: true,\n });\n const getDefaultMultiplePaymentsStore = () => [];\n const [singlePaymentStore, setSinglePaymentStore] = useState(\n getDefaultSinglePaymentStore()\n );\n const [multiplePaymentsStore, setMultiplePaymentsStore] = useState<\n AddPurchasePaymentTableFieldValues['payments']\n >(getDefaultMultiplePaymentsStore());\n\n const paymentsTableForm = useForm({\n defaultValues: {\n payments: [singlePaymentStore],\n },\n });\n const paymentsTableFieldArray = useFieldArray({\n control: paymentsTableForm.control,\n name: 'payments',\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const paymentsTableFormOnSubmit = useCallback(\n paymentsTableForm.handleSubmit((data) => {\n const payments = [];\n for (let i = 0; i < data.payments.length; i++) {\n const payment = data.payments[i];\n if (payment.paymentDueDate === undefined) {\n paymentsTableForm.setError(`payments.${i}.paymentDueDate`, {\n message: requiredMsg,\n });\n return;\n }\n const paymentStatus = payment.isPaid\n ? payment.paymentDate && payment.paymentDate > payment.paymentDueDate\n ? PurchasePaymentStatus.RefundNeeded\n : PurchasePaymentStatus.Paid\n : PurchasePaymentStatus.Unpaid;\n\n const uiCurrency = getUiCurrency(payment.currencyCode);\n\n payments.push({\n paymentId: newBigIntId(),\n paymentStatus: paymentStatus,\n paymentDueDate: payment.paymentDueDate.toISOString(),\n paymentDate: payment.paymentDate?.toISOString() ?? null,\n paymentAmount: {\n amt: Number(payment.paymentAmount),\n disp: null,\n currency: uiCurrency.code,\n dec: uiCurrency.dec,\n } as UiMoney,\n currencyCode: payment.currencyCode,\n paymentMethod: {\n id: payment.paymentMethodId!,\n display: '',\n name: '',\n type: PurchasePaymentMethodType.Other,\n },\n convertedPaymentAmount: null,\n convertedCurrencyCode: null,\n conversionRate: null,\n conversionDate: null,\n conversionUserId: null,\n } as PurchasePayment);\n }\n onSave(payments);\n }),\n []\n );\n\n const generatePaymentsForm = useGeneratePurchasePaymentsForm({\n defaultCurrencyCode,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const generatePaymentsFormOnSubmit = useCallback(\n generatePaymentsForm.handleSubmit(\n ({\n fromDate,\n toDate,\n paymentCount,\n currencyCode,\n paymentAmountType,\n paymentAmount,\n paymentMethodId,\n }) => {\n const dates = divideDateInterval({ fromDate, toDate }, paymentCount);\n const amounts =\n paymentAmountType === 'occurrence'\n ? []\n : dividePaymentAmount(Number(paymentAmount), paymentCount);\n const payments: AddPurchasePaymentTableFieldValues['payments'] = [];\n for (let i = 0; i < paymentCount; i++) {\n payments.push({\n currencyCode,\n paymentAmount:\n paymentAmountType === 'occurrence' ? paymentAmount : amounts[i],\n isPaid: true,\n paymentDueDate: dates[i],\n paymentDate: dates[i],\n paymentMethodId,\n });\n }\n paymentsTableForm.setValue('payments', payments);\n }\n ),\n []\n );\n\n const state = isSinglePayment\n ? 'singlePayment'\n : paymentsTableForm.getValues('payments').length === 0\n ? 'generatePaymentsForm'\n : 'multiPayment';\n const isMobile = useMatchMedia('mobile');\n return (\n }\n footer={\n <>\n {state === 'multiPayment' && (\n {\n paymentsTableForm.reset({\n payments: getDefaultMultiplePaymentsStore(),\n });\n }}\n >\n \n \n )}\n \n {\n if (state === 'generatePaymentsForm') {\n generatePaymentsFormOnSubmit(e);\n } else {\n paymentsTableFormOnSubmit(e);\n }\n }}\n >\n {state === 'generatePaymentsForm' ? (\n \n ) : (\n \n )}\n \n \n }\n onClosed={() => {\n paymentsTableForm.reset();\n }}\n {...genericDialogProps}\n onCancel={onCancel}\n >\n {\n paymentsTableForm.reset(undefined, { keepValues: true });\n\n const isSinglePayment = value == ContentId.SinglePayment;\n const values = paymentsTableForm.getValues('payments');\n if (isSinglePayment) {\n setMultiplePaymentsStore(values);\n paymentsTableForm.setValue('payments', [singlePaymentStore]);\n } else {\n setSinglePaymentStore(values[0]);\n paymentsTableForm.setValue('payments', multiplePaymentsStore);\n }\n setIsSinglePayment(isSinglePayment);\n }}\n value={\n isSinglePayment ? ContentId.SinglePayment : ContentId.MultiplePayments\n }\n >\n \n }\n />\n }\n />\n \n \n
    \n {state === 'singlePayment' ? (\n \n \n \n ) : state === 'generatePaymentsForm' ? (\n \n ) : (\n <>\n \n {isMobile ? (\n \n ) : (\n \n )}\n \n {\n const payments = paymentsTableForm.getValues('payments');\n const lastPayment = payments[payments.length - 1];\n paymentsTableFieldArray.append({\n currencyCode: lastPayment?.currencyCode ?? defaultCurrencyCode,\n isPaid: true,\n paymentMethodId: lastPayment?.paymentMethodId,\n });\n }}\n >\n \n \n \n )}\n \n );\n}\n\n/**\n * Divides the `totalAmount` into `paymentCount` number of occurrence amounts. If the amount is not\n * evenly divisible, the remainder is added onto the last amount.\n * @param totalAmount\n * @param paymentCount\n */\nfunction dividePaymentAmount(totalAmount: number, paymentCount: number) {\n const perOccurrence = Math.round((totalAmount / paymentCount) * 100) / 100;\n const amounts = [];\n for (let i = 0; i < paymentCount - 1; i++) {\n amounts.push(perOccurrence);\n totalAmount -= perOccurrence;\n }\n // floating point arithmetic issues so we round again\n // TODO would be better to use a currency math library to avoid this issue\n amounts.push(Math.round(totalAmount * 100) / 100);\n return amounts;\n}\n","import { ComponentProps, useCallback, useContext } from 'react';\nimport { CancelButton } from 'src/components/Buttons';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { ModalProps } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const BackToModalButton = ({\n textContentId,\n cancelTo,\n ...rest\n}: { textContentId?: ContentId } & Omit<\n ComponentProps,\n 'onClick'\n> & {\n cancelTo?: ModalProps;\n }) => {\n const { setModal, closeModal } = useContext(ModalContext);\n /**\n * Allow a modal 'config' (`Modal` component props) to determine\n * Which modal to go back to in the workflow\n * If nothing is provided, treat as a close button\n */\n const onCancel = useCallback(() => {\n if (cancelTo) {\n setModal(cancelTo);\n } else {\n closeModal();\n }\n }, [setModal, closeModal, cancelTo]);\n\n return (\n \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport {\n ConfirmDialog,\n ConfirmDialogProps,\n} from 'src/core/interim/dialogs/ConfirmDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport type UnsavedChangesProps = Omit<\n ConfirmDialogProps,\n 'headerText' | 'bodyText'\n>;\nexport const UnsavedChanges = ({\n onOkay,\n onCancel,\n ...props\n}: UnsavedChangesProps) => {\n return (\n }\n bodyText={}\n onOkay={onOkay}\n onCancel={onCancel}\n okText={ContentId.Yes}\n cancelText={ContentId.No}\n {...props}\n />\n );\n};\n","import {\n ComponentProps,\n PropsWithChildren,\n useCallback,\n useContext,\n useState,\n} from 'react';\nimport { CancelButton } from 'src/components/Buttons';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { UnsavedChanges } from 'src/dialogs/UnsavedChanges';\nimport { ModalProps } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport type CancellableFormFooterProps = PropsWithChildren<\n {\n cancelTo?: ModalProps;\n onBeforeClose?: () => void;\n showDialogOnCancel?: boolean;\n } & ComponentProps\n>;\n\nexport function CancellableFormFooter({\n cancelTo,\n children, // action button\n showDialogOnCancel,\n onBeforeClose,\n ...props\n}: PropsWithChildren) {\n const [showDialog, setShowDialog] = useState(false);\n const { setModal, closeModal } = useContext(ModalContext);\n\n /**\n * Allow a modal 'config' (`Modal` component props) to determine\n * Which modal to go back to in the workflow\n * If nothing is provided, treat as a close button\n */\n const goToCancelView = useCallback(() => {\n setShowDialog(false);\n\n onBeforeClose?.();\n\n if (cancelTo) {\n setModal(cancelTo);\n } else {\n closeModal(true);\n }\n }, [onBeforeClose, cancelTo, setModal, closeModal]);\n\n const onCancel = useCallback(() => {\n if (showDialogOnCancel) {\n setShowDialog(true);\n } else {\n goToCancelView();\n }\n }, [showDialogOnCancel, goToCancelView]);\n\n const closeDialog = useCallback(() => {\n setShowDialog(false);\n }, [setShowDialog]);\n\n return (\n <>\n \n {children}\n \n \n );\n}\n","import { ComponentProps, PropsWithChildren, useContext } from 'react';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { Button } from 'src/core/ui';\n\nexport function CloseModalButton({\n children,\n ...props\n}: PropsWithChildren>) {\n const { closeModal } = useContext(ModalContext);\n\n return (\n \n );\n}\n","import clsx from 'clsx';\nimport type { ReactNode } from 'react';\nimport { ComponentPropsWithoutRef } from 'react';\n\nimport * as styles from './Detail.css';\n\nexport const Detail = ({\n label,\n detail,\n isStrong,\n isRightAligned,\n ...rest\n}: {\n label: string | ReactNode;\n detail: string | ReactNode;\n isStrong?: boolean;\n isRightAligned?: boolean;\n} & ComponentPropsWithoutRef<'div'>) => {\n return (\n \n {label}\n \n {detail}\n \n \n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const SectionWrapper = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n\n > * {\n flex: 1;\n }\n`;\n\nexport const SectionContent = styled.div<{\n numOfColumns?: number;\n format?: string;\n}>`\n display: grid;\n align-items: start;\n grid-template-columns: ${({ format, numOfColumns }) =>\n format ? format : `repeat(${numOfColumns ?? 4}, auto)`};\n row-gap: ${() => vars.spacing.lg};\n column-gap: ${() => vars.spacing.m};\n & + & {\n margin-top: ${() => vars.spacing.lg};\n }\n`;\n\nexport const DetailGroup = styled.div<{ isDouble?: boolean }>`\n display: flex;\n flex-direction: column;\n gap: ${() => vars.spacing.xl};\n\n grid-column: ${({ isDouble }) => (isDouble ? 'span 2' : '')};\n\n & > div:last-child {\n padding-bottom: 0;\n }\n`;\n\nexport const AttrLabel = styled.span`\n font-weight: 400;\n font-size: ${() => vars.typography.fontSize['xs']};\n line-height: 16px;\n color: ${(props) => props.theme.colors.textPrimary};\n text-transform: capitalize;\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n font-size: ${() => vars.typography.fontSize['sm']};\n line-height: 20px;\n }`\n )}`}\n`;\n\nexport const DetailText = styled.div`\n color: ${(props) => props.theme.colors.textDarker};\n ${(props) => props.theme.typography.getStyles('body2', 'regular')}\n`;\n","import clsx from 'clsx';\nimport { PropsWithChildren, ReactNode } from 'react';\nimport { Stack } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\n\nimport * as styles from './DetailSection.css';\n\nexport const DetailSection = ({\n name,\n children,\n extraContent,\n fullHeight,\n className,\n}: PropsWithChildren<{\n name: ReactNode;\n extraContent?: ReactNode;\n fullHeight?: boolean;\n className?: string;\n}>) => {\n const isMobile = useMatchMedia('mobile');\n return (\n \n \n \n {name}\n \n \n {children}\n \n \n {extraContent}\n \n );\n};\n","import { getContent, IContentContext } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport {\n AccessibilityIcon,\n AisleSeatIcon,\n GenericDisclosuresIcon,\n IconsFill,\n ObstructedViewIcon,\n ParkingPassIcon,\n} from 'src/svgs/Viagogo';\nimport { ListingNote, ListingNoteType } from 'src/WebApiController';\n\nimport { LISTING_NOTE_TYPE_TO_CID } from './constants/contentIdMaps';\n\nexport const getListingNoteIcon = (\n note: ListingNote,\n contentContext: IContentContext,\n showTypeInfo = false\n) => {\n const listingNoteTypeText = getContent(\n note.type ? LISTING_NOTE_TYPE_TO_CID[note.type] : '',\n contentContext\n );\n const listNoteText = (note.listingNoteUntranslated || note.listingNoteText)\n .trim()\n .toLocaleLowerCase();\n\n const fill = showTypeInfo\n ? note.type === ListingNoteType.Defect\n ? IconsFill.textNegative\n : note.type === ListingNoteType.Perk\n ? IconsFill.textSuccess\n : note.type === ListingNoteType.RestrictionOnUse\n ? IconsFill.textWarning\n : IconsFill.currentColor\n : undefined;\n\n const iconProps = {\n size: vars.iconSize.s,\n fill: fill,\n title: listingNoteTypeText,\n };\n\n if (listNoteText.includes('aisle')) {\n return ;\n }\n\n if (listNoteText.includes('parking')) {\n return ;\n }\n\n if (listNoteText.includes('wheelchair')) {\n return ;\n }\n\n if (\n listNoteText.includes('view') &&\n ['limited', 'obstructed', 'side', 'rear', 'partial'].findIndex((x) =>\n listNoteText.includes(x)\n ) > 0\n ) {\n return ;\n }\n\n return ;\n};\n","import { useQuery, UseQueryResult } from '@tanstack/react-query';\nimport { ReactNode, useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useContentContext } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getListingNoteIcon } from 'src/utils/listingNotesUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { Feature, ListingNote, ListingNoteClient } from 'src/WebApiController';\n\nimport { MultiSelectDropBoxWithPillsProps } from '../../../core/POS/MultiSelectDropBoxWithPills';\n\nexport type UseListingNotesSelectorOptions = {\n disabled?: boolean;\n additionalOptions?: Record;\n additionalOptionsPosition?: 'top' | 'bottom';\n validListingNoteIds?: number[] | null;\n placeholderText?: string;\n};\n\nexport const useListingNotesSelector = ({\n disabled,\n additionalOptions,\n additionalOptionsPosition = 'bottom',\n validListingNoteIds,\n placeholderText = ContentId.ChooseSeatingNotes,\n}: UseListingNotesSelectorOptions): {\n query: UseQueryResult;\n multiSelectorProps: Pick<\n MultiSelectDropBoxWithPillsProps,\n | 'searchable'\n | 'allowSearchAsInput'\n | 'placeholderText'\n | 'valueOptionsContent'\n | 'valueOptionsIcon'\n >;\n} => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n !disabled && activeAccountWebClientConfig.activeAccountId != null;\n\n const query = useQuery({\n queryKey: [\n 'getAccessibleListingNotes',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n return tryInvokeApi(\n () => {\n return new ListingNoteClient(\n activeAccountWebClientConfig\n ).getAccessibleListingNotes();\n },\n (error) => {\n trackError('ListingNoteClient.getAccessibleListingNotes', error);\n }\n );\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n persist: false, // we do not want this thing persisted between sessions\n },\n });\n\n const hasAdditionalInfoFeature = useUserHasFeature(\n Feature.ListingNotesAdditionalInfo\n );\n const availableNotes = useMemo(() => {\n const dataSorted =\n query.data?.toSorted((a, b) => {\n return a.listingNoteText.localeCompare(b.listingNoteText);\n }) ?? [];\n\n const options: Record = {};\n for (const ln of dataSorted ?? []) {\n if (\n ln.listingNoteText.trim() ||\n ln.listingNoteUntranslated.trim() ||\n (ln.stubhubListingNoteId &&\n validListingNoteIds?.includes(ln.stubhubListingNoteId))\n ) {\n options[ln.listingNoteId] =\n ln.listingNoteText.trim() ||\n ln.listingNoteUntranslated.trim() ||\n ln.stubhubListingNoteId?.toString() ||\n '';\n }\n }\n return {\n ...(additionalOptionsPosition === 'top' ? additionalOptions : {}),\n ...(options ?? {}),\n ...(additionalOptionsPosition === 'bottom' ? additionalOptions : {}),\n };\n }, [\n query.data,\n additionalOptionsPosition,\n additionalOptions,\n validListingNoteIds,\n ]);\n\n const contentContext = useContentContext();\n const noteIcons = useMemo(() => {\n const optionIcons: Record = {};\n for (const ln of query.data ?? []) {\n const icon = getListingNoteIcon(ln, contentContext, true);\n\n optionIcons[ln.listingNoteId] = icon;\n }\n return optionIcons;\n }, [contentContext, query.data]);\n\n return {\n query,\n multiSelectorProps: {\n searchable: true,\n allowSearchAsInput: true,\n placeholderText: placeholderText,\n valueOptionsContent: availableNotes,\n valueOptionsIcon: hasAdditionalInfoFeature ? noteIcons : undefined,\n },\n };\n};\n","import { ScrollAreaProps } from '@radix-ui/react-scroll-area';\nimport { PropsWithChildren } from 'react';\nimport { ScrollArea } from 'src/core/ui';\nimport { ScrollAreaRefActions } from 'src/core/ui/ScrollArea/ScrollArea';\n\nimport * as styles from './ScrollableToolbar.css';\n\nexport function ScrollableToolbar({\n children,\n scrollAreaRefActions,\n ...props\n}: PropsWithChildren & ScrollAreaRefActions) {\n return (\n \n
    {children}
    \n \n );\n}\n","import clsx from 'clsx';\nimport { ReactNode } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { Stack } from '../Stack';\nimport * as styles from './PillList.css';\nexport type PillItemProps = {\n value: string;\n display: ReactNode | ContentId;\n icon?: React.ReactElement;\n disabled?: boolean;\n onPillHover?: (e: React.MouseEvent) => void;\n onPillLeave?: (e: React.MouseEvent) => void;\n onPillClick?: (id: number, e: React.MouseEvent) => void;\n onDelete?: () => void;\n postfixItem?: React.ReactNode;\n customPillContainer?: string;\n useCondensedBorders?: boolean;\n};\n\nexport const PillItem = ({\n value,\n display,\n icon,\n disabled,\n onPillHover,\n onPillLeave,\n onPillClick,\n onDelete,\n postfixItem,\n customPillContainer,\n useCondensedBorders,\n}: PillItemProps) => {\n return (\n onPillClick && onPillClick(parseInt(value ?? '0'), e)}\n >\n \n {icon}\n \n {postfixItem}\n \n {!disabled && (\n
    \n \n
    \n )}\n \n );\n};\n","import { ComponentProps } from 'react';\n\nimport { ScrollableToolbar } from '../ScrollableToolbar';\nimport { Stack } from '../Stack';\nimport { PillItem, PillItemProps } from './PillItem';\n\nexport const PillList = ({\n pills,\n disabled,\n condensed,\n scrollButtonClassName,\n onPillHover,\n onPillLeave,\n onPillClick,\n onPillDeleted,\n direction = 'row',\n flexWrap,\n}: {\n pills: PillItemProps[];\n condensed?: boolean;\n disabled?: boolean;\n scrollButtonClassName?: Record<'up' | 'down' | 'left' | 'right', string>;\n onPillHover?: (e: React.MouseEvent) => void;\n onPillLeave?: (e: React.MouseEvent) => void;\n onPillClick?: (id: number, e: React.MouseEvent) => void;\n onPillDeleted?: (key: string) => void;\n} & Pick, 'flexWrap' | 'direction'>) => {\n return (\n \n \n {pills.map((pill, i) => {\n return (\n {\n onPillDeleted?.(pill.value);\n pill.onDelete?.();\n }}\n />\n );\n })}\n \n \n );\n};\n","import { ComponentProps, useMemo } from 'react';\nimport { getContent, useContentContext } from 'src/contexts/ContentContext';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { Stack } from 'src/core/ui';\nimport { PillList } from 'src/core/ui/PillList';\nimport { PillItemProps } from 'src/core/ui/PillList/PillItem';\n\nimport * as styles from './MultiSelectDropBoxWithPills.css';\n\nexport type MultiSelectDropBoxWithPillsProps = ComponentProps<\n typeof PosMultiSelect\n> &\n Pick, 'flexWrap' | 'direction'> & {\n showPills?: boolean;\n };\n\nexport const MultiSelectDropBoxWithPills = ({\n values,\n valueOptionsContent,\n valueOptionsIcon,\n disabled,\n onChange,\n align,\n fullWidth,\n direction: pillsDirection = 'row',\n flexWrap: pillsFlexWrap,\n showPills = true,\n ...rest\n}: MultiSelectDropBoxWithPillsProps) => {\n const contentContext = useContentContext();\n const pills = useMemo(\n () =>\n values.map((v) => {\n const valueDisplay = valueOptionsContent[v];\n const valueContentDisplay = getContent(valueDisplay, contentContext);\n const valueIcon = valueOptionsIcon?.[v];\n\n return {\n value: v,\n display: valueContentDisplay || v,\n icon: valueIcon,\n } as PillItemProps;\n }),\n [values, valueOptionsContent, contentContext, valueOptionsIcon]\n );\n\n return (\n
    \n \n {showPills && pills.length > 0 && (\n
    \n \n onChange?.(values.filter((v) => v !== value))\n }\n direction={pillsDirection}\n flexWrap={pillsFlexWrap}\n />\n
    \n )}\n
    \n );\n};\n","import { ComponentProps, useCallback, useMemo } from 'react';\nimport { useListingNotesSelector } from 'src/components/Selectors/ListingNotesSelector/useListingNotesSelector';\nimport { MultiSelectDropBoxWithPills } from 'src/core/POS/MultiSelectDropBoxWithPills';\nimport { newIntId } from 'src/utils/idUtils';\nimport { ListingNote, ListingNoteType } from 'src/WebApiController';\n\nexport type ListingNoteSelectionInputProps = {\n listingNotes: ListingNote[] | null;\n validListingNoteIds?: number[] | null;\n onChange: (listingNotes: ListingNote[]) => void;\n} & Omit<\n ComponentProps,\n 'values' | 'onChange' | 'valueOptionsContent'\n>;\n\nexport const ListingNoteSelectionInput = ({\n disabled,\n listingNotes,\n validListingNoteIds,\n placeholderText,\n onChange,\n showPills = true,\n ...multiSelectorProps\n}: ListingNoteSelectionInputProps) => {\n const { query, multiSelectorProps: hookMultiSelectorProps } =\n useListingNotesSelector({\n disabled,\n validListingNoteIds,\n placeholderText,\n });\n\n const listingNotesMap = useMemo(\n () =>\n query.data\n ?.filter((l) => (l.listingNoteText || l.listingNoteUntranslated).trim())\n .reduce(\n (r, l) => {\n r[l.listingNoteId.toString()] = l;\n return r;\n },\n {} as Record\n ),\n [query.data]\n );\n\n const onSelectionChanged = useCallback(\n (lnIds: string[], searchText?: string | null) => {\n if (!listingNotesMap) {\n return;\n }\n\n const newListingNotes = lnIds.map((lnId) => {\n const listingNoteId = parseInt(lnId);\n return listingNotesMap[listingNoteId];\n });\n\n if (searchText) {\n newListingNotes.push({\n listingNoteId: newIntId(),\n listingNoteText: searchText,\n listingNoteUntranslated: searchText,\n sellerAccountId: null, // this gets filled in the backend\n stubhubListingNoteId: null,\n type: ListingNoteType.Information,\n });\n }\n\n onChange(newListingNotes);\n },\n [listingNotesMap, onChange]\n );\n\n return (\n l != null)\n .map((l) => {\n const listingNote = listingNotesMap?.[l.listingNoteId];\n if (listingNote) {\n return l.listingNoteId.toString();\n }\n\n return l.listingNoteText || l.listingNoteUntranslated;\n })}\n onChange={onSelectionChanged}\n />\n );\n};\n","import clsx from 'clsx';\nimport { FormatContent } from 'src/contexts/ContentContext';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\n\nimport * as styles from './HorizontalTextList.css';\n\nexport function HorizontalTextList({\n className,\n texts,\n preIcon: prefix,\n maxTextsToShow: textCountToShow = 1,\n maxTextsToShowOnHover: textCountToShowTitle = 1,\n}: {\n className?: string;\n texts: string[];\n preIcon?: JSX.Element;\n maxTextsToShow?: number;\n maxTextsToShowOnHover?: number;\n}) {\n const textToDisplay = texts.slice(0, textCountToShow).join(', ');\n const titleTextToDisplay = texts.slice(0, textCountToShowTitle).join(', ');\n return (\n \n {prefix && (\n
    \n {prefix}\n
    \n )}\n
    \n {textToDisplay}\n
    \n {texts.length > textCountToShow && (\n
    \n \n
    \n )}\n \n );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n EventConfigClient,\n EventListingConstraints,\n} from 'src/WebApiController';\n\nexport const useGetEventListingConstraints = (eventIds: number[]) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const query = useQuery({\n queryKey: ['EventConfigClient.getListingConstraintsForEvents', eventIds],\n queryFn: async () => {\n if (!eventIds.length) {\n return null;\n }\n const results = await new EventConfigClient(\n activeAccountWebClientConfig\n ).getListingConstraintsForEvents(eventIds);\n\n if (results) {\n return results.reduce(\n (r, c) => {\n r[c.eventId] = c;\n return r;\n },\n {} as Record\n );\n }\n\n return null;\n },\n\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('EventConfigClient.getListingConstraintsForEvents', error, {\n trackErrorData: {\n eventIds,\n },\n });\n },\n },\n });\n\n return {\n eventListingConstraintsQuery: query,\n };\n};\n","import { ComponentProps, forwardRef, ReactElement } from 'react';\nimport { TextArea } from 'src/core/ui';\n\nexport type PosTextAreaProps = ComponentProps & {\n rootProps?: Omit, 'children'>;\n};\n\nexport const PosTextArea = forwardRef(\n function PosTextArea({ rootProps, ...rest }, ref): ReactElement {\n return (\n \n \n \n );\n }\n);\n","import { Label } from '@radix-ui/react-label';\nimport clsx from 'clsx';\nimport { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useToggle } from 'react-use';\nimport { CancelButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { PosTextArea } from 'src/core/POS/PosTextArea';\nimport { typography } from 'src/core/themes/shared.css';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '../Modal';\nimport * as styles from './AddNote.css';\n\ntype AddNoteModalProps = {\n onClose: () => void;\n onSubmit: () => void;\n internalNotes?: string | null;\n onInternalNotesChanged?: (notes?: string | null) => void;\n};\n\nexport const AddInternalNoteModal = ({\n onSubmit,\n onClose,\n internalNotes,\n onInternalNotesChanged,\n}: AddNoteModalProps) => {\n const [isOpen, toggleIsOpen] = useToggle(true);\n\n const [note, setNote] = useState(internalNotes ?? '');\n\n const onSubmitHandler = () => {\n onInternalNotesChanged?.(note);\n onSubmit();\n };\n\n useEffect(() => {\n if (!isOpen) setTimeout(onClose, 300);\n }, [isOpen, onClose]);\n\n return (\n \n );\n};\n\nexport const AddAdminHoldNoteModal = ({\n onSubmit,\n onClose,\n}: Omit) => {\n const [isOpen, toggleIsOpen] = useToggle(true);\n const { watch, setValue } = useFormContext<{\n adminHoldNotes?: string | null;\n }>();\n const adminHoldNotes = watch('adminHoldNotes');\n const [note, setNote] = useState(adminHoldNotes ?? '');\n\n const onSubmitHandler = () => {\n setValue('adminHoldNotes', note, { shouldDirty: true });\n onSubmit();\n };\n\n useEffect(() => {\n if (!isOpen) setTimeout(onClose, 300);\n }, [isOpen, onClose]);\n\n return (\n \n );\n};\n\ntype AddNoteDisplayProps = {\n isOpen: boolean;\n toggleIsOpen: () => void;\n note: string;\n setNote: (note: string) => void;\n onSubmitHandler: () => void;\n showVisibility?: boolean;\n};\n\nconst AddNoteDisplay = ({\n isOpen,\n toggleIsOpen,\n note,\n setNote,\n onSubmitHandler,\n showVisibility,\n}: AddNoteDisplayProps) => {\n return (\n \n \n
    \n
    \n \n
    \n
    \n
    \n \n {showVisibility && (\n
    \n \n \n \n \n }\n >\n \n \n \n \n
    \n )}\n
    \n \n setNote(e.currentTarget.value)}\n value={note}\n />\n
    \n
    \n \n \n \n \n \n );\n};\n","import { useToggle } from 'react-use';\nimport { ListingNoteSelectionInput } from 'src/components/Input/ListingNoteSelectionInput';\nimport { Content, useContentContext } from 'src/contexts/ContentContext';\nimport { HorizontalTextList } from 'src/core/POS/HorizontalTextList';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useGetEventListingConstraints } from 'src/hooks/useGetEventListingConstraints';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { AddInternalNoteModal } from 'src/modals/AddNote';\nimport { EditIcon, IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getListingNoteIcon } from 'src/utils/listingNotesUtils';\nimport {\n Event,\n Feature,\n ListingDetailsUpdateInput,\n ListingNote,\n SaleInput,\n} from 'src/WebApiController';\n\nimport { Detail } from '../Detail';\nimport * as styles from './ListingNotesSection.css';\n\nexport type InternalNotesFormKey =\n | 'privateNotes.value'\n | keyof Pick;\n\nexport type ListingNotesFormKey = keyof Pick<\n ListingDetailsUpdateInput,\n 'seatTraits'\n>;\n\nexport const ListingNotesSection = ({\n listingNotes,\n internalNotes,\n disabled,\n event,\n allowEditListingNotes,\n onListingNotesChanged,\n onInternalNotesChanged,\n}: {\n disabled?: boolean;\n listingNotes?: ListingNote[] | null;\n internalNotes?: string | null;\n event?: Event;\n allowEditListingNotes?: boolean;\n onListingNotesChanged?: (listingNotes?: ListingNote[] | null) => void;\n onInternalNotesChanged?: (internalNotes?: string | null) => void;\n}) => {\n const [isAddNoteModalOpen, toggleAddNoteModal] = useToggle(false);\n\n const onSubmit = () => {\n toggleAddNoteModal();\n };\n const { eventListingConstraintsQuery } = useGetEventListingConstraints(\n event?.viagId ? [event.viagId] : []\n );\n const validListingNoteIds = event?.viagId\n ? eventListingConstraintsQuery.data?.[event.viagId]?.validListingNoteIds\n : null;\n\n const contentContext = useContentContext();\n const hasListingNotesAdditionalInfoFeature = useUserHasFeature(\n Feature.ListingNotesAdditionalInfo\n );\n\n return (\n <>\n {isAddNoteModalOpen && (\n \n )}\n\n \n {allowEditListingNotes ? (\n }\n detail={\n \n onListingNotesChanged?.(listingNotes)\n }\n />\n }\n />\n ) : (\n listingNotes?.map((n) => (\n \n ))\n )}\n }\n detail={\n \n {internalNotes ? (\n
    \n \n
    \n ) : null}\n \n {internalNotes ? (\n \n ) : (\n \n )}\n \n \n
    \n }\n />\n
    \n \n );\n};\n","import { Fragment, PropsWithChildren, ReactNode } from 'react';\nimport { Stack } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\n\nimport * as styles from './MultiDetailSection.css';\n\ntype MultiDetailSectionProps = PropsWithChildren<{\n name: ReactNode;\n extraContent: ReactNode[];\n}>;\n\nexport const MultiDetailSection = ({\n name,\n children,\n extraContent,\n}: MultiDetailSectionProps) => {\n const isMobile = useMatchMedia('mobile');\n\n return (\n \n \n \n {name}\n \n \n {children}\n \n \n {extraContent &&\n extraContent.map((content, index) => (\n {content}\n ))}\n \n );\n};\n","import { ComponentProps } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { ModalProps } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport styled from 'styled-components/macro';\n\nimport { BackToModalButton } from './BackToModalButton';\n\ntype NextFooterProps = Omit, 'children'> & {\n cancelTo?: ModalProps | null;\n};\n\nexport const NextFooter = ({ cancelTo, ...props }: NextFooterProps) => {\n return (\n
    \n {cancelTo && (\n \n \n \n )}\n \n
    \n );\n};\n\nconst Footer = styled.div`\n display: flex;\n justify-content: flex-end;\n padding: ${() => `${vars.spacing.lg} 0 0 0`};\n\n > * {\n display: inline-flex;\n align-items: center;\n }\n`;\n\nconst BackBtnWrapper = styled.div`\n margin-right: ${() => vars.spacing.sm};\n`;\n","export const getConversionRate = (numA: number, numbB: number): number => {\n return Number((numA / numbB).toFixed(4));\n};\n","import { ComponentProps, useCallback, useEffect } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { CurrencyFilterSelector } from 'src/components/Selectors/CurrencyFilterSelector';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { FieldWrapper } from 'src/modals/common';\nimport { ChevronRightIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getConversionRate } from 'src/utils/currencyUtils';\nimport { formatCurrency } from 'src/utils/numberFormatter';\nimport { PurchasePayment, UiMoney } from 'src/WebApiController';\n\nimport * as styles from './ConvertCurrencyDialog.css';\n\nexport type CurrencyConversionPayment = Pick<\n PurchasePayment,\n | 'paymentAmount'\n | 'convertedPaymentAmount'\n | 'convertedCurrencyCode'\n | 'conversionRate'\n>;\n\nexport type ConvertCurrencyDialogProps = Omit<\n ComponentProps,\n 'header' | 'footer'\n> & {\n onSave: (formValues: ConvertCurrencyForm) => void;\n onCancel: () => void;\n payment: CurrencyConversionPayment;\n currentUserId: string;\n isLoading?: boolean;\n};\n\nexport type ConvertCurrencyForm = Pick<\n PurchasePayment,\n | 'convertedPaymentAmount'\n | 'convertedCurrencyCode'\n | 'conversionRate'\n | 'conversionDate'\n | 'conversionUserId'\n>;\n\nconst defaultCurrentCode = 'USD';\n\nexport const ConvertCurrencyDialog = ({\n onCancel,\n onSave,\n payment,\n currentUserId,\n isLoading,\n ...dialogProps\n}: ConvertCurrencyDialogProps) => {\n const fxText = useContent(ContentId.FX);\n const requiredMsg = useContent(ContentId.Required);\n const convertedPaymentAmountMustBeGreaterThanZeroMsg = useContent(\n ContentId.ConvertedPaymentAmountMustBeGreaterThanZero\n );\n const conversionRateMustBeGreaterThanZeroMsg = useContent(\n ContentId.ConversionRateMustBeGreaterThanZero\n );\n\n const { getUiCurrency } = useLocalizationContext();\n\n const {\n register,\n setValue,\n getValues,\n watch,\n formState,\n handleSubmit,\n trigger,\n reset,\n } = useForm({\n mode: 'all',\n defaultValues: {\n convertedCurrencyCode:\n payment.convertedPaymentAmount?.currency ??\n payment.convertedCurrencyCode ??\n defaultCurrentCode,\n conversionRate: payment.conversionRate,\n convertedPaymentAmount: payment.convertedPaymentAmount,\n conversionDate: new Date().toISOString(),\n conversionUserId: currentUserId,\n },\n });\n\n useEffect(() => {\n reset({\n convertedCurrencyCode:\n payment.convertedPaymentAmount?.currency ??\n payment.convertedCurrencyCode ??\n defaultCurrentCode,\n conversionRate: payment.conversionRate,\n convertedPaymentAmount: payment.convertedPaymentAmount,\n conversionDate: new Date().toISOString(),\n conversionUserId: currentUserId,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [payment]);\n\n const convertedCurrencyCode =\n watch('convertedCurrencyCode') ?? defaultCurrentCode;\n const { currency, disp, amt, dec } = payment.paymentAmount;\n\n const onSubmit = useCallback(async () => {\n await trigger();\n const hasErrors = Object.keys(formState.errors).length > 0;\n if (hasErrors) {\n return;\n }\n\n onSave(getValues());\n }, [formState.errors, getValues, onSave, trigger]);\n\n return (\n
    \n }\n footer={\n \n }\n onCancel={onCancel}\n >\n {isLoading ? (\n \n ) : (\n <>\n \n \n \n \n \n \n\n
    \n \n
    \n\n \n \n {\n const v = value ? String(value) : '';\n return !v.length ? requiredMsg : undefined;\n },\n minValue: (value: number | null) => {\n return value && value <= 0\n ? convertedPaymentAmountMustBeGreaterThanZeroMsg\n : undefined;\n },\n },\n setValueAs(convertedAmount): number | null {\n if (\n !convertedAmount ||\n isNaN(Number(convertedAmount))\n ) {\n return null;\n }\n\n return Number(convertedAmount);\n },\n onChange() {\n const convertedAmount =\n getValues().convertedPaymentAmount?.amt;\n if (\n formState.errors['convertedPaymentAmount'] ||\n !convertedAmount\n ) {\n return;\n }\n\n const uiCurrency = getUiCurrency(convertedCurrencyCode);\n setValue('convertedPaymentAmount', {\n currency: convertedCurrencyCode,\n dec: uiCurrency.dec,\n amt: Number(convertedAmount),\n disp: formatCurrency(\n Number(convertedAmount),\n uiCurrency.code,\n uiCurrency.dec\n ),\n });\n\n const conversionRate = getConversionRate(\n Math.abs(convertedAmount),\n Math.abs(payment.paymentAmount.amt)\n );\n if (Number.isFinite(conversionRate)) {\n setValue('conversionRate', conversionRate, {\n shouldValidate: true,\n });\n }\n },\n })}\n type=\"number\"\n prefixDisplay={getUiCurrency(convertedCurrencyCode).sym}\n postfixDisplay={\n {\n setValue('convertedCurrencyCode', currencyCode, {\n shouldValidate: true,\n });\n }}\n />\n }\n />\n \n \n\n \n \n {\n return !value ? requiredMsg : undefined;\n },\n minValue: (value: number | null) => {\n return !value || value <= 0\n ? conversionRateMustBeGreaterThanZeroMsg\n : undefined;\n },\n },\n onChange() {\n const conversionRate = getValues().conversionRate;\n if (\n formState.errors['conversionRate'] ||\n !conversionRate\n ) {\n return;\n }\n\n const convertedAmountAmount =\n payment.paymentAmount.amt * conversionRate;\n\n if (Number.isFinite(convertedAmountAmount)) {\n const uiCurrency = getUiCurrency(\n convertedCurrencyCode\n );\n\n const convertedAmount = {\n currency: convertedCurrencyCode,\n amt: Number(convertedAmountAmount),\n disp: formatCurrency(\n convertedAmountAmount,\n uiCurrency.code,\n uiCurrency.dec\n ),\n };\n\n setValue(\n 'convertedPaymentAmount',\n convertedAmount as UiMoney,\n {\n shouldValidate: true,\n }\n );\n }\n },\n valueAsNumber: true,\n })}\n />\n \n \n
    \n \n )}\n \n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { uniq } from 'lodash-es';\nimport { ComponentProps, useMemo } from 'react';\nimport { Controller, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { CurrencyFilterSelector } from 'src/components/Selectors/CurrencyFilterSelector';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Switch } from 'src/core/interim/Switch';\nimport { DatePickerInput } from 'src/core/POS/DateSelector';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState } from 'src/core/POS/PosTextField';\nimport { Button } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n FieldError,\n FieldLabel,\n FieldWrapper,\n PurchasePaymentMethodSelectionInput,\n} from 'src/modals/common/Purchase';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport {\n Feature,\n PurchaseClient,\n PurchasePayment,\n PurchasePaymentMethodType,\n PurchasePaymentStatus,\n} from 'src/WebApiController';\n\nimport * as styles from './EditPurchasePaymentDialog.css';\n\nexport type EditPurchasePaymentDialogFormInputs = {\n paymentDueDate: Date;\n paymentDate: Date | null;\n paymentAmount: number;\n currencyCode: string;\n paymentMethodId: number;\n isPaid: boolean;\n};\n\nexport type EditPurchasePaymentDialogProps = ComponentProps & {\n payment: PurchasePayment;\n onSave: (data: PurchasePayment) => void;\n onCancel: () => void;\n};\n\nexport function EditPurchasePaymentDialog({\n payment,\n onSave,\n onCancel,\n ...rest\n}: EditPurchasePaymentDialogProps) {\n const requiredMsg = useContent(ContentId.Required);\n\n const hasEnforcePurchasePaymentCurrencyFeature = useUserHasFeature(\n Feature.EnforcePurchasePaymentCurrency\n );\n\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n const { getUiCurrency } = useLocalizationContext();\n const paymentMethods = useQuery({\n queryKey: [\n 'PurchaseClient.getAccessiblePurchasePaymentMethods',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return new PurchaseClient(\n activeAccountWebClientConfig\n ).getAccessiblePurchasePaymentMethods();\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('PurchaseClient.getAccessiblePurchasePaymentMethods', error);\n },\n },\n });\n\n const {\n getValues,\n setValue,\n watch,\n register,\n handleSubmit,\n control,\n formState: { errors },\n } = useForm({\n defaultValues: {\n paymentDueDate: new Date(payment.paymentDueDate),\n paymentDate: payment.paymentDate ? new Date(payment.paymentDate) : null,\n paymentAmount: payment.paymentAmount.amt,\n currencyCode: payment.currencyCode,\n paymentMethodId: payment.paymentMethod.id,\n isPaid:\n payment.paymentStatus === PurchasePaymentStatus.Paid ||\n payment.paymentStatus === PurchasePaymentStatus.RefundNeeded,\n },\n });\n\n const paymentAmount = watch('paymentAmount');\n const currencyCode = watch('currencyCode');\n\n const uiCurrency = useMemo(\n () => getUiCurrency(currencyCode),\n [currencyCode, getUiCurrency]\n );\n\n return (\n }\n footer={\n <>\n {onCancel && }\n {\n const paymentMethod = paymentMethods.data?.find(\n ({ id }) => id === data.paymentMethodId\n );\n const paymentStatus = data.isPaid\n ? payment.paymentDate &&\n payment.paymentDate > payment.paymentDueDate\n ? PurchasePaymentStatus.RefundNeeded\n : PurchasePaymentStatus.Paid\n : PurchasePaymentStatus.Unpaid;\n onSave({\n paymentId: payment.paymentId,\n paymentStatus: paymentStatus,\n paymentDueDate: data.paymentDueDate.toISOString(),\n paymentDate: data.paymentDate?.toISOString() ?? null,\n paymentAmount: {\n amt: Number(data.paymentAmount),\n disp: null,\n currency: uiCurrency.code,\n dec: uiCurrency.dec,\n },\n currencyCode: data.currencyCode,\n paymentMethod: {\n id: data.paymentMethodId,\n display: paymentMethod?.display ?? '',\n name: paymentMethod?.name ?? '',\n type: paymentMethod?.type ?? PurchasePaymentMethodType.Other,\n },\n convertedPaymentAmount: null,\n convertedCurrencyCode: null,\n conversionRate: null,\n conversionDate: null,\n conversionUserId: null,\n });\n })}\n >\n \n \n \n }\n {...rest}\n onCancel={onCancel}\n >\n \n \n \n \n
    \n {!hasEnforcePurchasePaymentCurrencyFeature && (\n (\n \n )}\n />\n )}\n {\n return parseFloat(fieldVal?.toString() ?? '')\n ? undefined\n : requiredMsg;\n },\n },\n valueAsNumber: true,\n })}\n />\n
    \n {(errors.currencyCode || errors.paymentAmount) &&\n uniq([errors.currencyCode?.message, errors.paymentAmount?.message])\n .filter((msg) => Boolean(msg))\n .map((msg, i) => {\n return {msg};\n })}\n
    \n
    \n \n (\n }\n errors={fieldState.error?.message}\n >\n {\n setValue(field.name, d);\n }}\n />\n \n )}\n />\n \n
    \n
    \n \n {\n return (\n }\n errors={fieldState.error?.message}\n >\n {\n setValue(field.name, d);\n }}\n />\n \n );\n }}\n />\n {errors.paymentDate && (\n {errors.paymentDate?.message}\n )}\n \n \n \n \n \n (\n {\n const isPaid = e.currentTarget.checked;\n if (isPaid) {\n setValue('paymentDate', getValues('paymentDueDate'));\n } else {\n setValue('paymentDate', null);\n }\n onChange(e);\n }}\n {...field}\n />\n )}\n />\n \n
    \n \n \n \n \n (\n \n )}\n />\n {errors.paymentMethodId && (\n {errors.paymentMethodId?.message}\n )}\n \n \n );\n}\n","import { ChangeEvent, ComponentProps, useCallback } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { DatePickerInput } from 'src/core/POS/DateSelector';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { Button } from 'src/core/ui';\nimport {\n FieldError,\n FieldLabel,\n FieldWrapper,\n} from 'src/modals/common/Purchase';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PURCHASE_COST_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { CostDetail } from 'src/WebApiController';\n\nimport * as styles from './PurchaseCostDialog.css';\n\nexport type PurchaseCostDialogProps = ComponentProps & {\n cost: CostDetail;\n currencyCode: string;\n onSave: (data: CostDetail) => void;\n};\n\nexport function PurchaseCostDialog({ cost, ...rest }: PurchaseCostDialogProps) {\n const methods = useForm({\n defaultValues: {\n ...cost,\n cost: cost?.cost && {\n ...cost.cost,\n disp: null, // we clear the display because editing cost now will dynamically render the amount with the currency\n },\n },\n });\n\n return (\n \n \n \n );\n}\n\nconst PurchaseCostDialogBody = ({\n currencyCode,\n onSave,\n onClosed,\n getValues,\n setValue,\n register,\n formState,\n clearErrors,\n setError,\n handleSubmit,\n watch,\n ...rest\n}: Omit &\n Omit<\n ComponentProps>,\n 'children'\n >) => {\n const { date, id } = getValues();\n const costType = watch('costType');\n const costAmount = watch('cost.amt');\n const costDateError = formState.errors.date?.message;\n const costTypeError = formState.errors.costType?.message;\n const amountError = formState.errors.cost?.amt?.message;\n\n const requiredMsg = useContent(ContentId.Required);\n\n const { getUiCurrency } = useLocalizationContext();\n\n const onSubmit = useCallback(() => {\n clearErrors();\n\n let hasErrors = false;\n if (!date) {\n setError('date', { message: requiredMsg }, { shouldFocus: true });\n hasErrors = true;\n }\n if (!costAmount) {\n setError('cost.amt', { message: requiredMsg }, { shouldFocus: true });\n hasErrors = true;\n }\n if (!costType) {\n setError('costType', { message: requiredMsg }, { shouldFocus: true });\n hasErrors = true;\n }\n\n if (!hasErrors) {\n handleSubmit(onSave)();\n }\n }, [\n clearErrors,\n costAmount,\n costType,\n date,\n handleSubmit,\n onSave,\n requiredMsg,\n setError,\n ]);\n\n return (\n 0 ? ContentId.EditCostCredit : ContentId.AddCostCredit}\n />\n }\n footer={\n <>\n {onClosed && }\n \n \n \n \n }\n onCancel={onClosed}\n >\n
    \n \n \n \n \n {\n if (newCostType && newCostType !== costType) {\n setValue('costType', newCostType);\n }\n }}\n valueOptionsContent={PURCHASE_COST_TYPE_TO_CID}\n />\n {costTypeError && {costTypeError}}\n \n \n }\n >\n {\n return parseFloat(fieldVal?.toString() ?? '')\n ? undefined\n : requiredMsg;\n },\n },\n valueAsNumber: true,\n onChange: (e: ChangeEvent) => {\n const rval = parseFloat(e.target.value);\n clearErrors('cost.amt');\n setValue('cost.disp', null); // Clear the display because now th\n setValue('cost.amt', rval);\n },\n })}\n />\n \n \n \n }\n errors={costDateError}\n >\n {\n if (newDate) {\n clearErrors('date');\n const dateStr = newDate.toISOString();\n if (dateStr !== date) {\n setValue('date', dateStr);\n }\n } else {\n setValue('date', ''); // this allow setting to empty and validating\n }\n }}\n locale={getLocaleFromLanguageOrCurrent()}\n />\n \n \n \n }>\n \n \n \n
    \n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { DEFAULT_AUTO_GENERATED_PAYMENT_METHOD } from 'src/utils/constants/constants';\nimport { PurchaseClient } from 'src/WebApiController';\n\nexport const useGetDefaultAutoGeneratedPaymentMethod = () => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const shouldQuery = activeAccountWebClientConfig.activeAccountId != null;\n const defaultAutoGeneratedPaymentMethodQuery = useQuery({\n queryKey: [\n 'PurchaseClient.getPurchasePaymentMethodsByName',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n const response = await new PurchaseClient(\n activeAccountWebClientConfig\n ).getPurchasePaymentMethodsByName(DEFAULT_AUTO_GENERATED_PAYMENT_METHOD);\n\n if (response == null || response.length == 0) {\n return null;\n }\n\n return response[0];\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n showErrorDialog(\n 'PurchaseClient.getPurchasePaymentMethodsByName',\n error,\n {\n trackErrorData: {\n activeAccountId: activeAccountWebClientConfig.activeAccountId,\n },\n }\n );\n },\n },\n });\n\n return {\n defaultAutoGeneratedPaymentMethod:\n defaultAutoGeneratedPaymentMethodQuery.data,\n defaultAutoGeneratedPaymentMethodQuery,\n };\n};\n","import { useAppContext } from 'src/contexts/AppContext';\nimport {\n hasPermissionForPurchase,\n PurchaseInfoForPermission,\n} from 'src/utils/userPermissionUtils';\nimport { Permission } from 'src/WebApiController';\n\nexport const useUserHasPurchasePermission = (\n purchase: PurchaseInfoForPermission | null | undefined,\n root: Permission,\n owned?: Permission,\n allowForNewCreate = true\n) => {\n const { loginContext } = useAppContext();\n\n const canUpdate = hasPermissionForPurchase(\n loginContext?.user,\n purchase,\n root,\n owned,\n allowForNewCreate\n );\n\n return canUpdate;\n};\n\nexport const useUserCanUpdatePurchase = (\n purchase: PurchaseInfoForPermission | null | undefined\n) => {\n return useUserHasPurchasePermission(\n purchase,\n Permission.Purchases_Edit,\n Permission.Purchases_EditOwned\n );\n};\n\nexport const useUserCanUpdatePurchaseTags = (\n purchase: PurchaseInfoForPermission | null | undefined\n) => {\n return useUserHasPurchasePermission(\n purchase,\n Permission.Purchases_UpdateTags,\n Permission.Purchases_UpdateTagsOwned\n );\n};\n\nexport const useUserCanUpdatePurchaseCommission = (\n purchase: PurchaseInfoForPermission | null | undefined\n) => {\n return useUserHasPurchasePermission(\n purchase,\n Permission.Purchases_UpdateBuyerCommission,\n Permission.Purchases_UpdateBuyerCommissionOwned\n );\n};\n\nexport const useUserCanLockPurchaseCommission = (\n purchase: PurchaseInfoForPermission | null | undefined\n) => {\n return useUserHasPurchasePermission(\n purchase,\n Permission.Purchases_LockUnlockCommission,\n Permission.Purchases_LockUnlockCommissionOwned\n );\n};\n\nexport const useUserCanUpdatePurchaseDeliveryType = (\n purchase: PurchaseInfoForPermission | null | undefined\n) => {\n return useUserHasPurchasePermission(\n purchase,\n Permission.Purchases_UpdateDeliveryType,\n Permission.Purchases_UpdateDeliveryTypeOwned\n );\n};\n\nexport const useUserCanUpdatePurchaseCustomDeliveryType = (\n purchase: PurchaseInfoForPermission | null | undefined\n) => {\n return useUserHasPurchasePermission(\n purchase,\n Permission.Purchases_UpdateCustomDeliveryType,\n Permission.Purchases_UpdateCustomDeliveryTypeOwned,\n false // allowForNewCreate\n );\n};\n\nexport const useUserCanUpdatePurchaseSeatTraits = (\n purchase: PurchaseInfoForPermission | null | undefined\n) => {\n return useUserHasPurchasePermission(\n purchase,\n Permission.Purchases_UpdateSeatTraits,\n Permission.Purchases_UpdateSeatTraitsOwned\n );\n};\n\nexport const useUserCanUpdateListingTicketTypePriorityFromPurchase = (\n purchase: PurchaseInfoForPermission | null | undefined\n) => {\n return useUserHasPurchasePermission(\n purchase,\n Permission.Inventory_UpdateDeliveryStrategy,\n Permission.Inventory_UpdateDeliveryStrategyOnPurchasedBy\n );\n};\n","import { isEqual } from 'lodash-es';\n\nexport type OptionalPosField = { value?: T | null; hasChanged?: boolean };\n\nexport const posField = (value: T | null, hasChanged = false) => {\n return { value, hasChanged };\n};\n\nexport const posChangedField = (value: T | null) => {\n return posField(value, true);\n};\n\nexport const hasChanged = (\n newP: OptionalPosField | null | undefined,\n oldP: OptionalPosField | null | undefined\n) => {\n if (oldP == null) {\n return newP?.hasChanged;\n }\n\n return newP?.hasChanged && !isEqual(newP.value, oldP.value);\n};\n","import { BarcodeForm } from 'src/components/UploadArtifacts/UploadBarcodes';\nimport { EntityWithRealTicketsPartial } from 'src/components/UploadArtifacts/UploadETicketsV2';\nimport {\n ActionOutboxEntityType,\n CostDetail,\n DeliveryType,\n MarketplaceEntityWithTickets,\n Ticket,\n TicketGroup,\n TicketGroupInput,\n TicketTransferRequest,\n VenueMapSectionType,\n} from 'src/WebApiController';\n\nimport { ContentId } from './constants/contentId';\nimport { ContentIds } from './constants/contentIdDataMap';\nimport { FormatContentId } from './constants/formatContentId';\nimport { FormatContentIds } from './constants/formatContentIdDataMap';\nimport { posField } from './posFieldUtils';\n\nexport type EntityWithRealTickets = MarketplaceEntityWithTickets & {\n tickets: Ticket[];\n entityType: ActionOutboxEntityType;\n};\n\nexport function initSeats(\n count: number,\n row: string | null,\n seatFr?: string | null,\n seatTo?: string | null\n) {\n const seats = [];\n const startSeat = parseInt(seatFr!);\n const initialHasRowsAndSeats = Boolean(seatFr);\n\n for (let i = 0; i < count; i++) {\n const seatNum = !isNaN(startSeat) ? `${startSeat + i}` : i + 1;\n const seat = initialHasRowsAndSeats\n ? seatFr === seatTo\n ? seatFr || seatNum\n : seatNum\n : '';\n seats.push(makeSeat(i, row, seat));\n }\n return seats;\n}\n\nexport function makeSeat(i: number, row: string | null, seat: string | number) {\n return {\n id: -i,\n ord: i,\n lstOrd: i,\n row: row,\n seat: seat,\n } as Ticket;\n}\n\n// Stringify the props because RHF lib only allows for string returns in TS\nexport const validateSeat = (\n seat: string,\n ordinal: number,\n currentSeats: Record\n) => {\n if (!seat) {\n return JSON.stringify(ContentIds[ContentId.Required]);\n }\n\n // Sometimes this comes in as a number for some reason\n seat = seat.toString().trim();\n if (currentSeats[seat] && currentSeats[seat] !== ordinal) {\n return JSON.stringify({\n ...FormatContentIds[FormatContentId.DuplicatingSeats],\n params: currentSeats[seat.trim()],\n });\n }\n};\n\nexport type TransferTicketsForm = {\n /* This is to used with react-hook-form's field-arrays, which requires these things to be an object\n The id field is basically just the ordinal number of the input.\n The values for these will get mapped to \"acceptanceUrls\" before submitting to the backend.\n */\n acceptanceUrlInputs: { id: number; url: string }[];\n} & TicketTransferRequest &\n BarcodeForm;\n\nexport const getTicketGroupTotalCost = (tg: TicketGroup) => {\n return getTicketGroupTotalTicketCost(tg) + (tg.delivCst?.amt ?? 0);\n};\n\nexport const getTicketGroupInputTotalCost = (tg: TicketGroupInput) => {\n return getTicketGroupInputTotalTicketCost(tg) + (tg.deliveryCost?.value ?? 0);\n};\n\nexport const getTicketGroupTotalTicketCost = (tg: TicketGroup) => {\n return (tg.unitCst?.amt ?? 0) * tg.ticketCnt;\n};\n\nexport const getTicketGroupInputTotalTicketCost = (tg: TicketGroupInput) => {\n return (tg.unitCost?.value ?? 0) * (tg.numberOfTickets?.value ?? 0);\n};\n\nexport const getCosts = (\n ticketGroups?: TicketGroupInput[],\n costs?: CostDetail[] | null\n) => {\n // TODO - https://thestubhub.atlassian.net/browse/POS-426\n // how do we handle these being in different currency units?\n // Perhaps when the currency code for each ticket-group is different from the main currency code, then\n // we submit all the amounts to the server to use the money service to convert prior to displaying them\n const totalTicketCost = (ticketGroups ?? []).reduce(\n (acc, tg) => acc + getTicketGroupInputTotalTicketCost(tg),\n 0\n );\n\n const totalShipping = (ticketGroups ?? []).reduce(\n (acc, tg) => acc + (tg.deliveryCost?.value ?? 0),\n 0\n );\n\n const totalCost = (costs ?? []).reduce(\n (acc, c) => acc + (c.cost?.amt ?? 0),\n totalTicketCost + totalShipping\n );\n\n return {\n totalTicketCost,\n totalShipping,\n totalCost,\n };\n};\n\nconst getLongestConsecutiveNumber = (str: string) => {\n let longestNumber = '';\n let currentNumber = '';\n\n for (let i = str.length - 1; i >= 0; i--) {\n const charCode = str.charCodeAt(i);\n\n if (charCode >= 48 && charCode <= 57) {\n currentNumber = str[i] + currentNumber;\n } else {\n if (currentNumber.length > longestNumber.length) {\n longestNumber = currentNumber;\n }\n currentNumber = '';\n }\n }\n\n // Check the last currentNumber in case the string ends with a number\n if (currentNumber.length > longestNumber.length) {\n longestNumber = currentNumber;\n }\n\n return longestNumber;\n};\n\nexport const fitsSeatIncrementType = (\n seatFr: string,\n seatTo: string,\n quantity: number,\n increment: number\n) => {\n let seatValue = seatFr;\n for (let i = 0; i < quantity - 1; i++) {\n seatValue = getNextTicketBy(seatValue, increment).toString();\n }\n\n return seatValue === seatTo;\n};\n\nexport const getNextTicketBy = (\n ticketNo: string | number,\n increment: number\n) => {\n let result = ticketNo;\n for (let i = 0; i < increment; i++) {\n result = getNextTicket(result);\n }\n\n return result;\n};\n\nexport const getNextTicket = (ticketNo: string | number) => {\n if (typeof ticketNo === 'number') {\n return ticketNo + 1;\n }\n\n const lastChar = ticketNo.slice(-1);\n\n if (lastChar === 'Z') {\n return `${ticketNo}A`;\n } else if (lastChar === 'z') {\n return `${ticketNo}a`;\n } else if (!isNaN(parseInt(lastChar))) {\n const numPart = getLongestConsecutiveNumber(ticketNo);\n\n return `${ticketNo.slice(0, ticketNo.length - numPart.length)}${\n parseInt(numPart) + 1\n }`;\n }\n\n return (\n ticketNo.slice(0, -1) + String.fromCharCode(lastChar.charCodeAt(0) + 1)\n );\n};\n\nexport const selectEventInfoFromTicketGroups = (\n ticketGroups: TicketGroupInput[]\n) => {\n return ticketGroups.map((ticketGroup) => {\n return {\n tickets: posField([] as Ticket[]),\n event: ticketGroup.event,\n posEventId: ticketGroup.posEventId,\n viagogoEventId: ticketGroup.viagogoEventId,\n eventMappingId: ticketGroup.eventMappingId,\n viagogoVirtualId:\n ticketGroup.event?.viagVirtualId ?? ticketGroup.viagogoVirtualId,\n purchaseOrderId: ticketGroup.purchaseOrderId,\n venue: ticketGroup.venue,\n currencyCode: ticketGroup.currencyCode,\n ticketGroupId: ticketGroup.ticketGroupId,\n deliveryType: posField(\n ticketGroup.deliveryType?.value ?? DeliveryType.InApp\n ),\n taxPaid: posField(1), // This is to turn off taxExempt by default\n } as unknown as TicketGroupInput;\n });\n};\n\nexport const selectDistinctListingIds = (tickets: Ticket[]) => {\n return Array.from(new Set(tickets.map((ticket) => ticket.listingId)));\n};\n\nexport const selectDistinctPurchaseOrderIds = (tickets: Ticket[]) => {\n return Array.from(new Set(tickets.map((ticket) => ticket.poId)));\n};\n\nexport const formatSeatDisplay = (\n seatFr: string | null,\n seatTo: string | null\n) => {\n let text = seatFr ?? '';\n if (seatTo && seatFr && seatTo !== seatFr) {\n text += ` - ${seatTo}`;\n }\n\n return text;\n};\n\nexport const SECTION_TYPES_GA = [\n VenueMapSectionType.GeneralAdmission,\n VenueMapSectionType.GeneralAdmissionSeating,\n VenueMapSectionType.GeneralAdmissionStanding,\n VenueMapSectionType.GeneralAdmissionWithQueueNumber,\n];\n\nexport const isSectionTypeGeneralAdmission = (\n sectionType: VenueMapSectionType | null | undefined\n) => sectionType != null && SECTION_TYPES_GA.includes(sectionType);\n\nexport const toSeating = (ticketGroup: TicketGroupInput) => {\n return {\n section: ticketGroup.section?.value ?? '',\n row: ticketGroup.row?.value ?? '',\n seatFr: ticketGroup.tickets?.value?.length\n ? ticketGroup.tickets.value[0]!.seat\n : '',\n seatTo: ticketGroup.tickets?.value?.length\n ? ticketGroup.tickets.value[ticketGroup.tickets?.value?.length - 1]!.seat\n : '',\n sectionId: ticketGroup.sectionId?.value ?? null,\n rowId: ticketGroup.rowId?.value ?? null,\n ticketIds: null,\n listingIds: null,\n };\n};\n\nexport const toEntityWithTicket = (\n ticketGroup: TicketGroupInput\n): EntityWithRealTicketsPartial => {\n return {\n id: ticketGroup.ticketGroupId,\n entityType: ActionOutboxEntityType.TicketGroup,\n viagVirtualId: ticketGroup.viagogoVirtualId,\n seating: toSeating(ticketGroup),\n ticketCnt: ticketGroup.numberOfTickets?.value ?? 0,\n tickets: ticketGroup.tickets?.value ?? [],\n };\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const PurchaseTicketTableContainer = styled.div`\n margin-bottom: ${() => vars.spacing.xl};\n border: 1px solid ${(props) => props.theme.colors.borderPrimary};\n border-radius: ${() => vars.spacing.sm};\n overflow: hidden;\n`;\n\nexport const PurchaseEventItemHeaderWrapper = styled.div`\n border-bottom: 1px solid ${(props) => props.theme.colors.borderPrimary};\n padding: ${() =>\n `${vars.spacing.lg} ${vars.spacing.lg} ${vars.spacing.sm} ${vars.spacing.lg}`};\n background-color: ${(props) => props.theme.colors.backgroundSecondary};\n`;\n\nexport const ChangesIndicator = styled.div`\n color: ${(props) => props.theme.colors.backgroundBrandActive};\n font-size: ${() => vars.typography.fontSize['2xl']};\n cursor: pointer;\n`;\n","import { SortingState } from '@tanstack/react-table';\nimport { useEffect } from 'react';\nimport {\n MultiSelectScope,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext/MultiSelectionContext';\n\ninterface UseClearShiftSelectionOnSortingChangeProps {\n sortingState: SortingState;\n}\n\nexport const useClearShiftSelectionOnSortingChange = ({\n sortingState,\n}: UseClearShiftSelectionOnSortingChangeProps) => {\n const { clearShiftKeySelection, selectionMode } = useMultiSelectionContext();\n\n useEffect(() => {\n // If selection mode is AllGroups, then don't reset the shiftKey selection state\n // because the user is selecting between different tables,\n // and when the component is mounted using an Accordion, this effect runs\n // clearing the state.\n if (!selectionMode || selectionMode.mode === MultiSelectScope.AllGroups) {\n return;\n }\n clearShiftKeySelection();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectionMode, sortingState]);\n};\n","import { range } from 'lodash-es';\n\nexport const generateShimmeringRows = (\n numOfRows: number,\n numOfListingGroups?: number\n) => {\n return [\n ...(numOfListingGroups\n ? range(0, numOfListingGroups, 1).map(() => ({\n listing: null,\n isLtGrp: true,\n }))\n : []),\n ...range(0, numOfRows, 1).map(() => null),\n ];\n};\n","export const dataThemeAttributeName = 'data-bs-theme';\nexport const dataDarkThemeAttribute = `[${dataThemeAttributeName}=\"dark\"]`;\n","import { DefaultTheme } from 'styled-components/macro';\n\nimport { Colors } from './constants/colors';\nimport { PurpleTheme } from './legacy';\nimport {\n ThemeColors,\n ThemeMediaQuery,\n ThemeTypography,\n} from './legacy/theme-types';\n\ntype CustomDefaultTheme = DefaultTheme & {\n name: string;\n rounded: boolean;\n floatingInputLabel: boolean;\n filledInLoading: boolean;\n colors: ThemeColors;\n typography: ThemeTypography;\n spacing: (...multipliers: number[]) => string;\n media: ThemeMediaQuery;\n logoPath: string;\n};\n\nconst OldTheme = PurpleTheme as CustomDefaultTheme;\n\nexport const DarkLegacyTheme: CustomDefaultTheme = {\n ...OldTheme /* We will slowly remove this as will fill in all the blanks */,\n colors: {\n ...OldTheme.colors,\n borderPrimary: Colors.neutral075,\n borderActive: Colors.indigo200,\n borderDark: Colors.neutral075,\n backgroundPrimary: Colors.neutral025,\n backgroundSecondary: Colors.dark060,\n backgroundBrandActive: Colors.indigo300,\n backgroundBrandLight: Colors.indigo100,\n backgroundBrandHover: Colors.indigo200,\n backgroundDark: Colors.neutral025,\n textBrand: Colors.indigo600,\n textBrandHover: Colors.indigo200,\n textOnBrandBgLink: Colors.white,\n textStrong: Colors.neutral500,\n },\n};\n","import { ClientLogClient, LogLevel } from 'src/WebApiController';\n\nimport { REACT_APP_NAME } from './constants/constants';\n\nexport const logToServer = (\n logLevel: LogLevel,\n errorId: string,\n errorMessage: string,\n additionalInfo: object\n) => {\n return new ClientLogClient({}).log({\n logLevel: logLevel,\n applicationSource: REACT_APP_NAME,\n errorId: errorId,\n error: errorMessage,\n pageUrl: window.location.href,\n componentStack: '',\n additionalInfo: additionalInfo,\n });\n};\n","import { type AsyncStorage } from '@tanstack/react-query-persist-client';\nimport { clear, del, get, set } from 'idb-keyval';\nimport { logToServer } from 'src/utils/clientLogUtils';\nimport { LogLevel } from 'src/WebApiController';\n\nexport async function clearIDBCache() {\n try {\n await clear();\n } catch (e) {\n console.warn(e);\n logToServer(\n LogLevel.Warning,\n 'QueryClient-index-db-clear',\n `Failed to clear the index-db`,\n e instanceof Object && e.constructor === Object ? e : {}\n );\n }\n}\n\nexport function createIDBAsyncStorage(): AsyncStorage {\n return {\n getItem: async (key) => {\n try {\n return await get(key);\n } catch (e) {\n console.warn(e);\n logToServer(\n LogLevel.Warning,\n 'QueryClient-index-db-get',\n `Failed to get ${key} from index-db`,\n e instanceof Object && e.constructor === Object ? e : {}\n );\n }\n },\n setItem: async (key, data) => {\n try {\n return await set(key, data);\n } catch (e) {\n console.warn(e);\n logToServer(\n LogLevel.Warning,\n 'QueryClient-index-db-set',\n `Failed to set ${key} / ${data} to index-db`,\n e instanceof Object && e.constructor === Object ? e : {}\n );\n }\n },\n removeItem: async (key: string) => {\n try {\n return await del(key);\n } catch (e) {\n console.warn(e);\n logToServer(\n LogLevel.Warning,\n 'QueryClient-index-db-del',\n `Failed to delete ${key} from index-db`,\n e instanceof Object && e.constructor === Object ? e : {}\n );\n }\n },\n };\n}\n","import { debounce } from 'lodash-es';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport const useNetworkState = (offlineTimeoutMs = 0) => {\n const [isOnline, setIsOnline] = useState(navigator.onLine);\n\n const setOffline = debounce(() => {\n setIsOnline(false);\n }, offlineTimeoutMs);\n\n const setOnline = useCallback(() => {\n setOffline.cancel();\n setIsOnline(true);\n }, [setOffline]);\n\n useEffect(() => {\n const handleStatusChange = () =>\n navigator.onLine ? setOnline() : setOffline();\n\n window.addEventListener('online', handleStatusChange);\n window.addEventListener('offline', handleStatusChange);\n\n return () => {\n window.removeEventListener('online', handleStatusChange);\n window.removeEventListener('offline', handleStatusChange);\n };\n }, [isOnline, setOffline, setOnline]);\n\n return isOnline;\n};\n","import { useNavigate } from 'react-router-dom';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { clearIDBCache } from 'src/core/utils/createIndexDBPersister';\nimport { useNetworkState } from 'src/hooks/useNetworkState';\nimport { IconsFill, NotifyIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './SomethingWentWrong.css';\n\nexport const SomethingWentWrong = ({\n header,\n message,\n messages,\n}: {\n header?: React.ReactNode;\n message?: React.ReactNode;\n messages?: React.ReactNode[];\n}) => {\n const navigate = useNavigate();\n const isOnline = useNetworkState();\n\n const allMessages = [\n message ?? (\n \n ),\n ...(messages ?? []),\n ];\n return (\n
    \n

    \n \n {header ?? (\n \n )}\n

    \n {allMessages.map((message, i) => (\n
    \n {message}\n
    \n ))}\n
    \n {\n // Clear local-storage in case bad/empty results stored in local-storage\n clearIDBCache();\n navigate(0);\n }}\n >\n \n \n
    \n
    \n );\n};\n","import {\n QueryCache,\n QueryClient,\n QueryClientProvider,\n} from '@tanstack/react-query';\nimport { useEffect, useMemo } from 'react';\nimport { isRouteErrorResponse, useRouteError } from 'react-router-dom';\nimport { dataThemeAttributeName } from 'src/app/constants';\nimport {\n AppContextProvider,\n AppTelemetryProvider,\n useAppContext,\n} from 'src/contexts/AppContext';\nimport { SiteContentProvider } from 'src/contexts/ContentContext';\nimport { ScreenSizeProvider } from 'src/contexts/ScreenSizeContext/ScreenSizeContext';\nimport {\n SiteThemeContextProvider,\n useSiteTheme,\n} from 'src/contexts/SiteTheme/SiteThemeContext';\nimport {\n PurpleLegacyTheme,\n purpleTheme,\n TicketUtilLegacyTheme,\n ticketUtilTheme,\n} from 'src/core/themes';\nimport { DarkLegacyTheme } from 'src/core/themes/darkLegacyTheme';\nimport { darkTheme } from 'src/core/themes/darkTheme.css';\nimport { clearIDBCache } from 'src/core/utils/createIndexDBPersister';\nimport { REACT_APP_NAME } from 'src/utils/constants/constants';\nimport { getErrorInfoFromStatusCode } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ApiException,\n ClientLogClient,\n ClientLogRequest,\n CoBrandId,\n LogLevel,\n} from 'src/WebApiController';\nimport { ThemeProvider } from 'styled-components/macro';\n\nimport { SomethingWentWrong } from './SomethingWentWrong';\n\nconst queryClient = new QueryClient({\n queryCache: new QueryCache({\n onError(error) {\n if (ApiException.isApiException(error) && error.status === 401) {\n clearIDBCache(); // delete the cache storage before reloading\n window.location.reload();\n }\n },\n }),\n});\n\nexport const RootErrorPage = () => {\n const error = useRouteError();\n console.log(error);\n\n const message = (error as { message?: string }).message;\n const status = isRouteErrorResponse(error) ? error.status : undefined;\n const statusText = isRouteErrorResponse(error) ? error.statusText : undefined;\n const stack = (error as { stack?: string }).stack;\n\n const { activeAccountWebClientConfig } = useAppContext();\n const logClient = useMemo(\n () => new ClientLogClient(activeAccountWebClientConfig),\n [activeAccountWebClientConfig]\n );\n\n useEffect(() => {\n const logRequest: ClientLogRequest = {\n logLevel: LogLevel.Error,\n applicationSource: REACT_APP_NAME,\n errorId: null,\n error: message ?? '',\n pageUrl: window.location.href,\n componentStack: stack ?? null,\n additionalInfo: {\n status: status,\n statusText: statusText,\n },\n };\n\n tryInvokeApi(\n async () => {\n await logClient.log(logRequest);\n\n if (message?.includes('Minified React error #301')) {\n // When this happens - the cache is corrupted and usually clearing the cache fixes it\n // So instead of forcing the user to do it automatically - we should just do it and take\n // them back to where they were before\n clearIDBCache();\n window.location.reload();\n }\n },\n () => {\n console.warn('Failed to log error to server');\n }\n );\n });\n\n const { headerDisplay, messageDisplay } = status\n ? getErrorInfoFromStatusCode(status, statusText)\n : { headerDisplay: undefined, messageDisplay: undefined };\n\n const { cobrandId } = useAppContext();\n const { isDarkMode } = useSiteTheme();\n\n useEffect(() => {\n document.body.setAttribute(dataThemeAttributeName, 'light');\n\n if (cobrandId === CoBrandId.TicketUtil) {\n document.body.classList.toggle(ticketUtilTheme, true);\n document.body.classList.remove(purpleTheme);\n document.body.classList.remove(darkTheme);\n } else if (isDarkMode) {\n document.body.classList.toggle(darkTheme, true);\n document.body.setAttribute(dataThemeAttributeName, 'dark');\n document.body.classList.remove(ticketUtilTheme);\n document.body.classList.remove(purpleTheme);\n } else {\n document.body.classList.toggle(purpleTheme, true);\n document.body.classList.remove(ticketUtilTheme);\n document.body.classList.remove(darkTheme);\n }\n }, [cobrandId, isDarkMode]);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { InitialTableState, PaginationState } from '@tanstack/react-table';\nimport { useEffect, useState } from 'react';\n\nexport const usePaginationSettings = (\n numOfItems: number,\n currentPage: number,\n pageSize: number,\n disablePagination?: boolean,\n initState?: InitialTableState\n) => {\n const [pagination, setPagination] = useState({\n pageIndex:\n currentPage >= 0 ? currentPage : initState?.pagination?.pageIndex || 0,\n pageSize: disablePagination ? numOfItems : pageSize,\n });\n\n useEffect(() => {\n if (disablePagination && pagination.pageSize !== numOfItems) {\n setPagination((prevState) => ({\n ...prevState,\n pageSize: numOfItems,\n }));\n } else {\n if (pagination.pageIndex * pagination.pageSize >= numOfItems) {\n // If the current page index is greater than the number of pages, reset to the first page\n setPagination((prevState) => ({\n ...prevState,\n pageIndex: 0,\n }));\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [numOfItems]);\n\n useEffect(() => {\n if (currentPage >= 0) {\n setPagination((prevState) => ({\n ...prevState,\n pageIndex: currentPage,\n }));\n }\n }, [currentPage]);\n\n return { pagination, setPagination };\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function ClockTrashIcon(props: Omit) {\n const stroke = props.stroke || '#3F1D75';\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import clsx from 'clsx';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Stack, StackProps, TooltipPopover } from 'src/core/ui';\nimport { SeatSaverIcon } from 'src/svgs';\nimport { AdminHoldIcon } from 'src/svgs/AdminHoldIcon';\nimport { ClockTrashIcon } from 'src/svgs/ClockTrashIcon';\nimport { IconsFill, WarningOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './SeatingInfo.css';\n\nexport type SeatingInfoProps = {\n section: string;\n row: string | null;\n rowId?: number | null;\n seatFr: string | null;\n seatTo: string | null;\n isSeatSaver?: boolean;\n showSectionPrefix?: boolean;\n showSeatPrefix?: boolean;\n fontSize?: string;\n isDuplicate?: boolean;\n showAdminHold?: boolean;\n isAdminHold?: boolean;\n showOrgSeat?: boolean;\n orgSeatFr?: string | null;\n orgSeatTo?: string | null;\n isSoldOut?: boolean;\n justifyIconContent?: StackProps['justifyContent'];\n showUnmappedSection?: boolean;\n darkBackground?: boolean; // force dark-background\n lightBackground?: boolean; // force light-background\n isWasted?: boolean;\n};\n\nexport const getSeatDisplayText = ({\n seatFr,\n seatTo,\n compact,\n}: {\n seatFr: string | null | undefined;\n seatTo: string | null | undefined;\n compact?: boolean;\n}) => {\n const hasSeats = !!(seatFr || seatTo);\n const isSingleSeat = hasSeats && (seatFr === seatTo || !seatTo);\n const isSeatRange = seatFr && seatTo && seatFr !== seatTo;\n\n let text = seatFr ?? '';\n if (isSeatRange) {\n text += compact ? '-' : ` - `;\n }\n if (!isSingleSeat) {\n text += seatTo ?? '';\n }\n\n return text;\n};\n\n// TODO: piggyback rows display?\nexport const SeatingInfo = ({\n seatFr,\n seatTo,\n section,\n row,\n rowId,\n isSeatSaver,\n showSectionPrefix,\n showSeatPrefix = true,\n fontSize,\n isDuplicate,\n showAdminHold,\n isAdminHold,\n showOrgSeat,\n orgSeatFr,\n orgSeatTo,\n isSoldOut,\n justifyIconContent,\n showUnmappedSection,\n darkBackground,\n lightBackground,\n isWasted,\n}: SeatingInfoProps) => {\n const hasSeats = !isSoldOut && !!(seatFr || seatTo);\n const hasOrgSeats = !!(orgSeatFr || orgSeatTo);\n const isSingleSeat = hasSeats && (seatFr === seatTo || !seatTo);\n const isOrgSingleSeat =\n hasOrgSeats && (orgSeatFr === orgSeatTo || !orgSeatTo);\n const showOrgSeatFr = showOrgSeat && orgSeatFr && seatFr !== orgSeatFr;\n const showOrgSeatTo =\n showOrgSeat && orgSeatTo && seatTo !== orgSeatTo && orgSeatTo !== seatFr;\n const isUnmappedSection = !rowId;\n\n return (\n \n \n {showSectionPrefix && (\n \n \n \n )}\n {section}\n {row && (\n <>\n
    \n \n
    \n {row}\n \n )}\n {hasSeats && (\n <>\n {showSeatPrefix && (\n
    \n \n
    \n )}\n {showOrgSeatFr && (\n {orgSeatFr}\n )}\n {getSeatDisplayText({ seatFr, seatTo })}\n {showOrgSeatTo && (\n {orgSeatTo}\n )}\n \n )}\n {isSoldOut && showOrgSeat && hasOrgSeats && (\n <>\n {showSeatPrefix && (\n
    \n \n
    \n )}\n \n {getSeatDisplayText({ seatFr: orgSeatFr, seatTo: orgSeatTo })}\n \n \n )}\n \n \n {isUnmappedSection && showUnmappedSection && (\n \n }\n >\n \n \n )}\n {isWasted && }\n {isSeatSaver && (\n \n )}\n {showAdminHold && isAdminHold && (\n \n )}\n {isDuplicate && (\n \n \n \n )}\n \n
    \n );\n};\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { EntityWithTicketsQuery } from 'src/WebApiController';\n\nimport { QueryWithViewMode } from './eventQueryUtils';\n\nexport const getServerSideOnlyMetricsQuery = <\n TQuery extends EntityWithTicketsQuery & QueryWithViewMode,\n>(\n query: TQuery\n) => {\n const {\n // IMPORTANT: pulling out all the parts that do not affect server and if we leave them in\n // they will trigger a re-get unnecessarily and cause performance issue\n searchText,\n sortBy,\n isSortDescending,\n performerIds,\n venueIds,\n viewMode,\n ...rest\n } = query;\n\n return rest as TQuery;\n};\n\nexport const getServerSideOnlyMetricsQueryV2 = <\n TQuery extends EntityWithTicketsQuery & QueryWithViewMode,\n>(\n query: TQuery\n) => {\n const {\n eventOrMappingIds,\n eventTimeFrameFilter,\n eventDates,\n purchaseDates,\n timezoneOffsetMins,\n topLevelCategories,\n parentCategories,\n eventStatuses,\n cityIds,\n stateProvinceIds,\n countryCodes,\n numberOfTicketsHeld,\n lastSaleDates,\n eventTagName,\n eventTagValue,\n purchaseBuyerId,\n purchaseOrderCreatedBy,\n isSeatSaver,\n } = query;\n\n let eventChangingFilter = {\n eventOrMappingIds,\n eventTimeFrameFilter,\n eventDates,\n purchaseDates,\n timezoneOffsetMins,\n topLevelCategories,\n parentCategories,\n eventStatuses,\n cityIds,\n stateProvinceIds,\n countryCodes,\n numberOfTicketsHeld,\n lastSaleDates,\n eventTagName,\n eventTagValue,\n } as TQuery;\n\n let dataChangingFilter = {\n purchaseBuyerId,\n purchaseOrderCreatedBy,\n isSeatSaver,\n } as TQuery;\n\n // Listing specific filters\n if (\n 'eventHasUnsoldTickets' in query &&\n 'lastPriceUpdateDates' in query &&\n 'lastPriceNoUpdateDates' in query &&\n 'pricerSellerUserId' in query\n ) {\n const {\n eventHasUnsoldTickets,\n lastPriceUpdateDates,\n lastPriceNoUpdateDates,\n pricerSellerUserId,\n } = query;\n\n eventChangingFilter = {\n ...dataChangingFilter,\n eventHasUnsoldTickets,\n lastPriceUpdateDates,\n lastPriceNoUpdateDates,\n } as TQuery;\n\n dataChangingFilter = {\n ...dataChangingFilter,\n pricerSellerUserId,\n } as TQuery;\n }\n\n // Sales specific filters\n if ('listingInsertBy' in query && 'fulfillerSellerUserId' in query) {\n const { listingInsertBy, fulfillerSellerUserId } = query;\n\n dataChangingFilter = {\n ...dataChangingFilter,\n listingInsertBy,\n fulfillerSellerUserId,\n } as TQuery;\n }\n\n return { eventChangingFilter, dataChangingFilter };\n};\n","import { once } from 'lodash-es';\nimport React, { PropsWithChildren } from 'react';\nimport {\n ActionOutboxEntityType,\n CatalogClient,\n DateTimeRange,\n EntityWithTicketsQuery,\n} from 'src/WebApiController';\n\nexport const MAX_ENTITIES_IN_GROUP_FOR_LOAD = 1000;\n\nexport type EventIdGroup = {\n viagId: number;\n viagVirtualId: string;\n performerId: string | null;\n venueId: number;\n name: string;\n date: DateTimeRange;\n};\n\nexport type ICatalogMetricsContext<\n TMetrics extends { currency: string | null },\n> = {\n isLoading: boolean;\n eventDetailedMetrics?: Record;\n eventMetrics?: Record;\n performerMetrics?: Record;\n venueMetrics?: Record;\n refreshMetrics: () => void;\n};\n\nexport type CatalogMetricsContextProviderProps<\n TMetrics extends { currency: string | null },\n TQuery extends EntityWithTicketsQuery,\n> = PropsWithChildren<{\n queryKey: string;\n entityType: ActionOutboxEntityType;\n getCatalogMetrics?: (\n client: CatalogClient,\n filterQuery: TQuery,\n rowVersion?: number | null\n ) => Promise<{\n events: Record;\n performers?: Record;\n venues?: Record;\n eventsDetailed?: Record;\n maxRowVersion?: number | null;\n }>;\n /**\n * Only for V1 (where metrics are split into batches)\n * Needs to be provided if getCatalogMetrics is provided\n */\n addCatalogMetrics?: (metricA: TMetrics, metricB: TMetrics) => TMetrics;\n disabled?: boolean;\n isDetailed?: boolean;\n}>;\n\nexport type CatalogMetricsResults<\n TMetrics extends { currency: string | null },\n TQuery extends EntityWithTicketsQuery,\n> = {\n filter: TQuery;\n eventsDetailed: Record;\n events: Record;\n performers?: Record;\n venues?: Record;\n maxRowVersion?: number | null;\n};\n\nexport const createCatalogMetricsContextV1 = once(<\n TMetrics extends { currency: string | null },\n>() => React.createContext({} as ICatalogMetricsContext));\n\nexport const createCatalogMetricsContextV2 = once(<\n TMetrics extends { currency: string | null },\n>() => React.createContext({} as ICatalogMetricsContext));\n","import { compareAsc, compareDesc } from 'date-fns';\nimport {\n ActionOutboxEntityType,\n EventSort,\n EventWithData,\n} from 'src/WebApiController';\n\nimport { getEventsWithNonZeroCounts } from '../CatalogDataContext/CatalogDataContext.utils';\nimport {\n EventIdGroup,\n MAX_ENTITIES_IN_GROUP_FOR_LOAD,\n} from './CatalogMetrics.type';\n\nexport const getEventIdsForPerformersOrVenues = (\n events?: Record,\n performerIds?: number[] | null,\n venueEventIds?: number[] | null\n) => {\n if (!events || !performerIds) {\n return [];\n }\n\n const results = Object.values(events)\n .filter(\n (ev) =>\n (ev.event.perfId && performerIds?.includes(ev.event.perfId)) ||\n (ev.event.venueId && venueEventIds?.includes(ev.event.venueId))\n )\n .map((ev) => ev.event.viagVirtualId);\n\n return results;\n};\n\n/* The goal of this method is to aggregate all the listing metrics with similar currency so we can reduce significantly the number of listing metrics\n * being sent to the server for aggregation just because of currency conversions\n * if the aggregation result in just 1 ListingMetrics - we don't need to send anything\n */\nexport const groupAndAggregateMetrics = <\n TMetrics extends { currency: string | null },\n>(\n listingMetrics: TMetrics[],\n addMetrics: (metricA: TMetrics, metricB: TMetrics) => TMetrics\n) => {\n const metricsByCurrency = {} as Record;\n\n listingMetrics.forEach((lm) => {\n const existing = metricsByCurrency[lm.currency ?? ''];\n if (!existing) {\n metricsByCurrency[lm.currency ?? ''] = lm;\n } else {\n metricsByCurrency[lm.currency ?? ''] = addMetrics(existing, lm);\n }\n });\n\n return Object.values(metricsByCurrency);\n};\n\nexport function getEventsToGetMetricsFor(\n data: EventWithData[],\n entityType: ActionOutboxEntityType,\n sortBy?: EventSort | null,\n isSortDescending?: boolean | null,\n filterZeroCounts?: boolean\n): EventIdGroup[][] {\n const events = filterZeroCounts\n ? getEventsWithNonZeroCounts(entityType, data, true)\n : data;\n\n const allEventIds = events\n .map(\n (ev) =>\n ({\n viagId: ev.event.viagId,\n viagVirtualId: ev.event.viagVirtualId,\n performerId: ev.event.perfId,\n venueId: ev.event.venueId,\n name: ev.event.name,\n date: ev.event.datesUtc,\n }) as EventIdGroup\n )\n .toSorted((ev1, ev2) => {\n if (sortBy === EventSort.MainDisplay) {\n return isSortDescending\n ? ev2.name.localeCompare(ev1.name)\n : ev1.name.localeCompare(ev2.name);\n }\n\n const date1 = ev1.date.start ? new Date(ev1.date.start) : new Date(0);\n const date2 = ev2.date.start ? new Date(ev2.date.start) : new Date(0);\n // Sort the events by dates\n // given 99% of the time the sort is date\n // If the sort is by name\n return isSortDescending\n ? compareDesc(date1, date2)\n : compareAsc(date1, date2);\n });\n\n if (allEventIds.length <= MAX_ENTITIES_IN_GROUP_FOR_LOAD) {\n return [allEventIds];\n }\n\n return [\n allEventIds.slice(0, MAX_ENTITIES_IN_GROUP_FOR_LOAD),\n allEventIds.slice(MAX_ENTITIES_IN_GROUP_FOR_LOAD),\n ];\n}\n","import { useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport isEqual from 'react-fast-compare';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { DATA_REFRESH_RATE_IN_MILLIS_LONG } from 'src/utils/constants/constants';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\nimport { getServerSideOnlyMetricsQueryV2 } from 'src/utils/getServerSideOnlyMetricsQuery';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n CatalogClient,\n EntityWithTicketsQuery,\n EventWithData,\n Feature,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useCatalogDataContext } from '../CatalogDataContext';\nimport { getEventsWithNonZeroCounts } from '../CatalogDataContext/CatalogDataContext.utils';\nimport { useFilterQueryContext } from '../FilterQueryContext';\nimport {\n CatalogMetricsContextProviderProps,\n CatalogMetricsResults,\n createCatalogMetricsContextV2,\n ICatalogMetricsContext,\n} from './CatalogMetrics.type';\n\nexport function CatalogMetricsContextV2Provider<\n TMetrics extends { currency: string | null },\n TQuery extends EntityWithTicketsQuery & QueryWithViewMode,\n>({\n queryKey,\n entityType,\n getCatalogMetrics,\n children,\n disabled,\n isDetailed,\n}: CatalogMetricsContextProviderProps) {\n const CatalogMetricsContext = createCatalogMetricsContextV2();\n\n const { trackError } = useErrorBoundaryContext();\n\n const { data } = useCatalogDataContext();\n const { filterQuery } = useFilterQueryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const queryClient = useQueryClient();\n const transformedQuery = useMemo(\n () => getServerSideOnlyMetricsQueryV2(filterQuery),\n [filterQuery]\n );\n\n const hasCatalogV2Feature = useUserHasFeature(Feature.CatalogCacheStrategyV2);\n\n const [metrics, setMetrics] =\n useState>();\n const [lastRefetchTime, setLastRefetchTime] = useState();\n\n const getEventIdsToGetMetrics = (events: EventWithData[]) => {\n const eventIds = events\n .map((ev) => ev.counts?.viagVirtId ?? ev.event?.viagVirtualId)\n .filter((id: string | null): id is string => id != null);\n const performerIds = events\n .map((ev) => ev.counts?.perfId ?? ev.event?.perfId)\n .filter((id: number | null): id is number => id != null);\n const venueIds = events\n .map((ev) => ev.counts?.venId ?? ev.event?.venueId)\n .filter((id: number | null): id is number => id != null);\n\n return {\n eventIds,\n performerIds,\n venueIds,\n maxRowVersions: undefined,\n };\n };\n\n const eventsMissingMetrics = useMemo(() => {\n if (!data?.events) {\n return {}; // don't need any metrics\n }\n const eventsWithdata = Object.values(data.events);\n const events = hasCatalogV2Feature\n ? getEventsWithNonZeroCounts(entityType, eventsWithdata)\n : eventsWithdata;\n\n if (!events.length) {\n return {}; // don't need any metrics\n }\n\n if (\n !metrics ||\n !isEqual(metrics?.filter, transformedQuery.dataChangingFilter)\n ) {\n // no metrics, or metrics filter changed, need to re-get for all events\n return getEventIdsToGetMetrics(events);\n }\n\n // metrics filter didn't change, so just check if any event are missing metrics\n // if they are missing, go get them\n const results = events.filter((ev) =>\n isDetailed\n ? !metrics.eventsDetailed[\n ev.counts?.viagVirtId ?? ev.event?.viagVirtualId\n ]\n : !metrics.events[ev.counts?.viagVirtId ?? ev.event?.viagVirtualId]\n );\n\n if (results.length) {\n // We have some missing metrics, so we need to get them\n return getEventIdsToGetMetrics(results);\n }\n\n // We don't have any missing metrics, but we want to get all if the time has ellapsed\n if (\n lastRefetchTime &&\n new Date().getTime() - lastRefetchTime.getTime() >\n DATA_REFRESH_RATE_IN_MILLIS_LONG\n ) {\n const maxRowVersions = metrics?.maxRowVersion; // if we're refreshing, we only want to get the new ones\n const eventIds = Object.keys(metrics?.events ?? {});\n const performerIds = Object.keys(metrics?.performers ?? {});\n const venueIds = Object.keys(metrics?.venues ?? {});\n\n return {\n eventIds,\n performerIds,\n venueIds,\n maxRowVersions: maxRowVersions ?? undefined,\n };\n }\n\n return {};\n }, [\n data?.events,\n entityType,\n hasCatalogV2Feature,\n isDetailed,\n lastRefetchTime,\n metrics,\n transformedQuery.dataChangingFilter,\n ]);\n\n const shouldQuery = useMemo(\n () =>\n !disabled &&\n Boolean(eventsMissingMetrics.eventIds?.length) &&\n !(!activeAccountWebClientConfig.activeAccountId || !getCatalogMetrics),\n [\n activeAccountWebClientConfig.activeAccountId,\n disabled,\n eventsMissingMetrics?.eventIds?.length,\n getCatalogMetrics,\n ]\n );\n\n const metricsQueryKey = useMemo(\n () => [\n queryKey,\n eventsMissingMetrics.eventIds?.toSorted(),\n transformedQuery.dataChangingFilter,\n activeAccountWebClientConfig.activeAccountId,\n ],\n [\n queryKey,\n eventsMissingMetrics,\n transformedQuery.dataChangingFilter,\n activeAccountWebClientConfig.activeAccountId,\n ]\n );\n\n const metricsQuery = useQuery({\n queryKey: metricsQueryKey,\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n\n return tryInvokeApi(\n () => {\n return getCatalogMetrics!(\n new CatalogClient(activeAccountWebClientConfig),\n {\n ...transformedQuery.dataChangingFilter,\n // We are sending back the event ids we need metrics for - which can be a lot\n // TODO (SAPI-2030) - in the case where there's a lot of these, we should just send back\n // the event effecting filters and let the server figure out the events\n // Also - we need to send a row-version so refresh only update the changed entities\n eventOrMappingIds: eventsMissingMetrics.eventIds,\n performerIds: eventsMissingMetrics.performerIds,\n venueIds: eventsMissingMetrics.venueIds,\n },\n eventsMissingMetrics.maxRowVersions\n );\n },\n (error: ErrorTypes) => {\n trackError('CatalogClient.getCatalogMetrics', error, {\n ...transformedQuery,\n });\n // Since this is just loading metrics, we have the data so we'll just ignore that metrics error\n }\n );\n },\n enabled: shouldQuery,\n staleTime: Infinity,\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_LONG,\n });\n\n useEffect(() => {\n if (metricsQuery.data) {\n const newMetrics = {\n filter: transformedQuery.dataChangingFilter,\n maxRowVersion: metricsQuery.data.maxRowVersion,\n eventsDetailed: {\n ...(metrics?.eventsDetailed ?? {}),\n ...metricsQuery.data.eventsDetailed,\n },\n events: {\n ...(metrics?.events ?? {}),\n ...metricsQuery.data.events,\n },\n performers: {\n ...(metrics?.performers ?? {}),\n ...metricsQuery.data.performers,\n },\n venues: {\n ...(metrics?.venues ?? {}),\n ...metricsQuery.data.venues,\n },\n };\n if (!isEqual(metrics, newMetrics)) {\n setLastRefetchTime(new Date());\n setMetrics(newMetrics);\n }\n }\n }, [\n metrics,\n metricsQuery.data,\n setMetrics,\n transformedQuery.dataChangingFilter,\n ]);\n\n const refreshMetrics = useCallback(async () => {\n setMetrics(undefined); // clear the cached metrics\n await queryClient.invalidateQueries({\n queryKey: metricsQueryKey,\n });\n }, [metricsQueryKey, queryClient, setMetrics]);\n\n const contextValues = useMemo>(() => {\n return {\n isLoading: metricsQuery.isLoading,\n eventDetailedMetrics: metrics?.eventsDetailed,\n eventMetrics: metrics?.events,\n performerMetrics: metrics?.performers,\n venueMetrics: metrics?.venues,\n refreshMetrics: refreshMetrics,\n };\n }, [\n metrics?.events,\n metrics?.eventsDetailed,\n metrics?.performers,\n metrics?.venues,\n metricsQuery.isLoading,\n refreshMetrics,\n ]);\n\n return (\n \n {children}\n \n );\n}\n","import { useQueries, useQueryClient } from '@tanstack/react-query';\nimport { isEqual } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { DATA_REFRESH_RATE_IN_MILLIS_LONG } from 'src/utils/constants/constants';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\nimport { getServerSideOnlyMetricsQuery } from 'src/utils/getServerSideOnlyMetricsQuery';\nimport {\n CatalogClient,\n EntityWithTicketsQuery,\n Feature,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useCatalogDataContext } from '../CatalogDataContext';\nimport { useFilterQueryContext } from '../FilterQueryContext';\nimport {\n CatalogMetricsContextProviderProps,\n createCatalogMetricsContextV1,\n ICatalogMetricsContext,\n} from './CatalogMetrics.type';\nimport { getEventsToGetMetricsFor } from './CatalogMetrics.utils';\nimport { CatalogMetricsContextV2Provider } from './CatalogMetricsContextV2';\n\nfunction CatalogMetricsContextV1Provider<\n TMetrics extends { currency: string | null },\n TQuery extends EntityWithTicketsQuery & QueryWithViewMode,\n>({\n queryKey,\n entityType,\n getCatalogMetrics,\n addCatalogMetrics,\n children,\n disabled,\n}: CatalogMetricsContextProviderProps) {\n const CatalogMetricsContext = createCatalogMetricsContextV1();\n\n const { trackError } = useErrorBoundaryContext();\n\n const { data } = useCatalogDataContext();\n const { filterQuery } = useFilterQueryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const queryClient = useQueryClient();\n\n const hasCatalogV2Feature = useUserHasFeature(Feature.CatalogCacheStrategyV2);\n\n const groupsToGetMetricsFor = useMemo(() => {\n if (!data?.events) {\n return [];\n }\n return getEventsToGetMetricsFor(\n Object.values(data.events),\n entityType,\n filterQuery.sortBy,\n filterQuery.isSortDescending,\n hasCatalogV2Feature\n );\n }, [\n data?.events,\n entityType,\n filterQuery.sortBy,\n filterQuery.isSortDescending,\n hasCatalogV2Feature,\n ]);\n\n const queries = useMemo(() => {\n // Removing the client-side queries\n const transformedQuery = getServerSideOnlyMetricsQuery(\n filterQuery\n ) as TQuery;\n return {\n queries: groupsToGetMetricsFor.map((idGroup) => {\n const shouldQuery =\n !disabled &&\n !(\n !idGroup.length ||\n !transformedQuery ||\n !activeAccountWebClientConfig.activeAccountId ||\n !getCatalogMetrics\n );\n\n return {\n queryKey: [\n queryKey,\n transformedQuery,\n idGroup,\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n return await getCatalogMetrics!(\n new CatalogClient(activeAccountWebClientConfig),\n {\n ...transformedQuery,\n eventOrMappingIds: idGroup.map((ev) => ev.viagVirtualId),\n performerIds: idGroup\n .filter((ev) => ev.performerId != null)\n .map((ev) => ev.performerId!),\n venueIds: idGroup.map((ev) => ev.venueId),\n }\n );\n },\n enabled: shouldQuery,\n staleTime: Infinity, // Since we're always refetching on an interval, we don't want query to calculate whether the data is stale\n refetchOnWindowFocus: false,\n onError: (error: ErrorTypes) => {\n trackError('CatalogClient.getCatalogMetrics', error, {\n ...transformedQuery,\n eventIds: idGroup,\n });\n // Since this is just loading metrics, we have the data so we'll just ignore that metrics error\n },\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_LONG,\n };\n }),\n };\n }, [\n activeAccountWebClientConfig,\n disabled,\n getCatalogMetrics,\n groupsToGetMetricsFor,\n queryKey,\n trackError,\n filterQuery,\n ]);\n\n const metricsQueriesFromHook = useQueries(queries);\n const [metricsQueries, setMetricsQueries] = useState(metricsQueriesFromHook);\n\n /**\n * IMPORTANT: This is needed because event that useQueries receives a memoized object,\n * on every render it returns a new array with metrics, causing the app\n * to re-render.\n */\n useEffect(() => {\n if (!isEqual(metricsQueries, metricsQueriesFromHook)) {\n setMetricsQueries(metricsQueriesFromHook);\n return;\n }\n }, [metricsQueriesFromHook, metricsQueries]);\n\n const refreshMetrics = useCallback(() => {\n queryClient.invalidateQueries({\n queryKey: [queryKey],\n });\n metricsQueries.forEach((q) => q.refetch());\n }, [metricsQueries, queryClient, queryKey]);\n\n const getMergedMetricsRecord = useCallback(\n (metricsRecords: (Record | undefined)[]) => {\n const entries = metricsRecords.filter((m) => m != null) as Record<\n string,\n TMetrics\n >[];\n if (!entries.length) {\n return undefined;\n }\n\n return entries.reduce(\n (obj, m) => {\n Object.entries(m).forEach(([key, value]) => {\n if (addCatalogMetrics == null) {\n obj[key] = value;\n } else {\n obj[key] = obj[key] ? addCatalogMetrics(obj[key], value) : value;\n }\n });\n return obj;\n },\n {} as Record\n );\n },\n [addCatalogMetrics]\n );\n\n const contextValues = useMemo>(() => {\n return {\n isLoading: metricsQueries.every((q) => q.isLoading),\n eventDetailedMetrics: getMergedMetricsRecord(\n metricsQueries.map((q) => q.data?.eventsDetailed)\n ),\n eventMetrics: getMergedMetricsRecord(\n metricsQueries.map((q) => q.data?.events)\n ),\n performerMetrics: getMergedMetricsRecord(\n metricsQueries.map((q) => q.data?.performers)\n ),\n venueMetrics: getMergedMetricsRecord(\n metricsQueries.map((q) => q.data?.venues)\n ),\n refreshMetrics: refreshMetrics,\n };\n }, [getMergedMetricsRecord, metricsQueries, refreshMetrics]);\n\n return (\n \n {children}\n \n );\n}\n\nexport function CatalogMetricsContextProvider<\n TMetrics extends { currency: string | null },\n TQuery extends EntityWithTicketsQuery & QueryWithViewMode,\n>(props: CatalogMetricsContextProviderProps) {\n const hasMetricsV2Feature = useUserHasFeature(Feature.CatalogMetricsV2);\n\n return hasMetricsV2Feature ? (\n \n ) : (\n \n );\n}\n","import { useContext } from 'react';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Feature } from 'src/WebApiController';\n\nimport {\n createCatalogMetricsContextV1,\n createCatalogMetricsContextV2,\n} from './CatalogMetrics.type';\n\nexport function useCatalogMetricsContext<\n TMetrics extends { currency: string | null },\n>() {\n const hasMetricsV2Feature = useUserHasFeature(Feature.CatalogMetricsV2);\n\n return useContext(\n hasMetricsV2Feature\n ? createCatalogMetricsContextV2()\n : createCatalogMetricsContextV1()\n );\n}\n","import {\n FilterToolbarGroup,\n FilterToolbarItemId,\n SelectedFilters,\n} from 'src/components/Filters';\n\ninterface UseMapFiltersToFiltersStateProps {\n filters: FilterToolbarGroup[];\n appliedFilterIds: FilterToolbarItemId[];\n mandatoryFiltersToShow: FilterToolbarItemId[];\n}\n\nexport const mapFiltersToFiltersState = ({\n filters,\n appliedFilterIds,\n mandatoryFiltersToShow,\n}: UseMapFiltersToFiltersStateProps): SelectedFilters => {\n const selectedFilters: SelectedFilters = {};\n\n filters.forEach((filterToolbarGroup) => {\n const groupId = filterToolbarGroup.titleContentId;\n if (!groupId) {\n return;\n }\n filterToolbarGroup.items.forEach((filterToolbarItem) => {\n const { filterId } = filterToolbarItem;\n if (\n appliedFilterIds.includes(filterId) ||\n mandatoryFiltersToShow.includes(filterId)\n ) {\n selectedFilters[groupId] = selectedFilters[groupId] ?? [];\n selectedFilters[groupId].push({\n filterId: filterId,\n titleContentId: filterToolbarGroup.titleContentId,\n });\n }\n });\n });\n\n return selectedFilters;\n};\n","import { useMemo } from 'react';\nimport { FilterToolbarGroup } from 'src/components/Filters';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { hasAnyOfPermissions } from 'src/utils/userPermissionUtils';\n\ninterface UseFilterFiltersByPermissionProps {\n filters: FilterToolbarGroup[];\n}\n\nexport const useFilterFiltersByPermission = ({\n filters,\n}: UseFilterFiltersByPermissionProps) => {\n const { loginContext } = useAppContext();\n\n return useMemo(\n () =>\n filters\n .map((filter) => {\n return {\n ...filter,\n items: filter.items.filter(\n (fi) =>\n fi.requiredPermissions == null ||\n hasAnyOfPermissions(loginContext?.user, fi.requiredPermissions)\n ),\n };\n })\n .filter((filter) => filter.items.length > 0),\n [filters, loginContext?.user]\n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { CONTAINS_EQUALS_ENUM_FILTER_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { TextFilterEnum } from 'src/utils/eventQueryUtils';\nimport { EntityWithTicketsQuery } from 'src/WebApiController';\n\nimport { StackedFilter } from '../StackedFilter/StackedFilter';\n\nexport type TextFilterQuery = Pick<\n EntityWithTicketsQuery,\n | 'internalNotesContains'\n | 'internalNotesEquals'\n | 'internalNotesNotContains'\n | 'rowContains'\n | 'rowNotContains'\n | 'rowEquals'\n | 'sectionEquals'\n | 'sectionNotContains'\n | 'sectionContains'\n>;\n\ntype KeysOfUnion = T extends T ? keyof T : never;\n\nexport const TextFilter = <\n TQuery extends TextFilterQuery,\n TQueryKey extends KeysOfUnion,\n>({\n query,\n setQuery,\n keys,\n isHorizontalLayout,\n}: {\n query: TQuery;\n setQuery: (q: TQuery) => void;\n keys: {\n textContainsKey: TQueryKey;\n textEqualsKey: TQueryKey;\n textNotContainsKey: TQueryKey;\n };\n isHorizontalLayout?: boolean;\n}) => {\n const { textContainsKey, textNotContainsKey, textEqualsKey } = keys;\n\n // Contains will win over Equals for defaults\n const mode = useMemo(\n () =>\n query[textContainsKey] ||\n (query[textNotContainsKey] == null && query[textEqualsKey] == null)\n ? TextFilterEnum.Contains\n : query[textNotContainsKey] ||\n (query[textContainsKey] == null && query[textEqualsKey] == null)\n ? TextFilterEnum.NotContains\n : TextFilterEnum.Equals,\n [query, textContainsKey, textEqualsKey, textNotContainsKey]\n );\n const filterText = useMemo(\n () =>\n mode === TextFilterEnum.Contains\n ? query[textContainsKey]\n : mode === TextFilterEnum.NotContains\n ? query[textNotContainsKey]\n : query[textEqualsKey],\n [mode, query, textContainsKey, textEqualsKey, textNotContainsKey]\n );\n\n const setRowFilter = useCallback(\n (mode: TextFilterEnum, text: string) => {\n if (mode === TextFilterEnum.Contains) {\n setQuery({\n ...query,\n [textContainsKey]: text,\n [textEqualsKey]: null,\n [textNotContainsKey]: null,\n });\n } else if (mode === TextFilterEnum.NotContains) {\n setQuery({\n ...query,\n [textNotContainsKey]: text,\n [textEqualsKey]: null,\n [textContainsKey]: null,\n });\n } else {\n setQuery({\n ...query,\n [textEqualsKey]: text,\n [textContainsKey]: null,\n [textNotContainsKey]: null,\n });\n }\n },\n [query, setQuery, textContainsKey, textEqualsKey, textNotContainsKey]\n );\n\n return (\n {\n if (value) {\n const text =\n value === TextFilterEnum.Contains\n ? query[textEqualsKey] ||\n query[textNotContainsKey] ||\n query[textContainsKey] ||\n ''\n : value === TextFilterEnum.NotContains\n ? query[textEqualsKey] ||\n query[textContainsKey] ||\n query[textNotContainsKey] ||\n ''\n : query[textContainsKey] ||\n query[textNotContainsKey] ||\n query[textEqualsKey] ||\n '';\n\n setRowFilter(value, text);\n }\n }}\n shape=\"rectFull\"\n />,\n {\n setRowFilter(mode, e.target.value);\n }}\n />,\n ]}\n />\n );\n};\n","import { TextFilter } from 'src/components/Filters/TextFilter';\nimport { TextFilterQuery } from 'src/components/Filters/TextFilter/TextFilter';\n\nexport const InternalNotesFilter = ({\n query,\n setQuery,\n isHorizontalLayout,\n}: {\n query: TQuery;\n setQuery: (q: TQuery) => void;\n isHorizontalLayout?: boolean;\n}) => {\n return (\n \n );\n};\n","import { useMemo } from 'react';\nimport { FilterToolbarGroup } from 'src/components/Filters';\nimport { InternalNotesFilter } from 'src/components/Filters/InternalNotesFilter/InternalNotesFilter';\nimport { TextFilterQuery } from 'src/components/Filters/TextFilter/TextFilter';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\nimport { ActionOutboxEntityType } from 'src/WebApiController';\n\ntype EntityType =\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Purchase\n | ActionOutboxEntityType.Sale;\n\nconst getInternalNotesLabel = (entity: EntityType) => {\n if (entity === ActionOutboxEntityType.Listing) {\n return ContentId.PrivateInventoryNotes;\n }\n\n if (entity === ActionOutboxEntityType.Sale) {\n return ContentId.PrivateSaleNotes;\n }\n\n if (entity === ActionOutboxEntityType.Purchase) {\n return ContentId.PrivatePurchaseNotes;\n }\n\n return ContentId.PrivateNote;\n};\n\ninterface UseMultipleInternalNotesFilterProps {\n entityType: EntityType;\n isHorizontalLayout?: boolean;\n}\n\nexport const useMultipleInternalNotesFilter = <\n TQuery extends QueryWithViewMode & TextFilterQuery,\n>({\n entityType,\n isHorizontalLayout,\n}: UseMultipleInternalNotesFilterProps): FilterToolbarGroup => {\n const { tempQuery, setTempQuery } = useFilterQueryContext();\n return useMemo(() => {\n return {\n titleContentId: ContentId.Notes,\n type: 'row',\n items: [\n {\n filterId: 'internalNotes',\n labelContentId: getInternalNotesLabel(entityType),\n filterQueryKeys: [\n 'internalNotesContains',\n 'internalNotesEquals',\n 'internalNotesNotContains',\n ],\n filterItem: (\n \n ),\n },\n ],\n };\n }, [entityType, tempQuery, setTempQuery, isHorizontalLayout]);\n};\n","import { useMultipleInternalNotesFilter } from 'src/components/Filters/InternalNotesFilter/useMultipleInternalNotesFilter';\nimport { TextFilterQuery } from 'src/components/Filters/TextFilter/TextFilter';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\nimport {\n ActionOutboxEntityType,\n EntityWithTicketsQuery,\n} from 'src/WebApiController';\n\ninterface InternalNotesFilterProps {\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Purchase\n | ActionOutboxEntityType.Sale;\n isHorizontalLayout?: boolean;\n}\n\nexport const useInternalNotesFilter = <\n TQuery extends QueryWithViewMode &\n TextFilterQuery &\n Pick,\n>({\n entityType,\n isHorizontalLayout,\n}: InternalNotesFilterProps) => {\n const multipleInternalNotesFilter = useMultipleInternalNotesFilter({\n entityType,\n isHorizontalLayout,\n });\n\n return multipleInternalNotesFilter;\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { AddressClient } from 'src/WebApiController';\n\nexport function useCities() {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const citiesWithStateProvinceQuery = useQuery({\n queryKey: [\n 'getCitiesWithStateProvince',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return await new AddressClient(\n activeAccountWebClientConfig\n ).getCitiesWithStateProvince();\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n staleTime: Infinity,\n meta: {\n onError: (error: ErrorTypes) => {\n showErrorDialog('AddressClient.getCitiesWithStateProvince', error);\n },\n },\n });\n\n const citiesWithoutStateProvinceQuery = useQuery({\n queryKey: [\n 'getCitiesWithoutStateProvince',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return await new AddressClient(\n activeAccountWebClientConfig\n ).getCitiesWithoutStateProvince();\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n staleTime: Infinity,\n meta: {\n onError: (error: ErrorTypes) => {\n showErrorDialog('AddressClient.getCitiesWithoutStateProvince', error);\n },\n },\n });\n\n return { citiesWithStateProvinceQuery, citiesWithoutStateProvinceQuery };\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { AddressClient } from 'src/WebApiController';\n\nexport function useStateProvinces() {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const query = useQuery({\n queryKey: [\n 'getStateProvinces',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return await new AddressClient(\n activeAccountWebClientConfig\n ).getStateProvinces();\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n staleTime: Infinity,\n meta: {\n onError: (error: ErrorTypes) => {\n showErrorDialog('AddressClient.getStateProvinces', error);\n },\n },\n });\n\n return query;\n}\n","import { useMemo } from 'react';\nimport {\n PosMultiSelect,\n PosMultiSelectProps,\n} from 'src/core/POS/PosMultiSelect';\nimport { useCities } from 'src/hooks/api/useCities';\nimport { useStateProvinces } from 'src/hooks/api/useStateProvinces';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { City } from 'src/WebApiController';\n\nexport const CityMultiSelector = ({\n placeholderText,\n stateProvinceIds,\n countryCodes,\n ...props\n}: Omit & {\n countryCodes: string[] | null;\n stateProvinceIds: number[] | null;\n}) => {\n const { citiesWithStateProvinceQuery, citiesWithoutStateProvinceQuery } =\n useCities();\n const stateProvincesQuery = useStateProvinces();\n\n const citiesOptions = useMemo(() => {\n if (\n citiesWithStateProvinceQuery.data == null ||\n citiesWithoutStateProvinceQuery.data == null\n ) {\n return {};\n }\n\n const cities: City[] = [];\n\n // add cities without state/province\n if (countryCodes?.length) {\n countryCodes.forEach((countryCode) => {\n cities.push(\n ...(citiesWithoutStateProvinceQuery.data?.[countryCode] ?? [])\n );\n });\n } else {\n cities.push(\n ...Object.values(citiesWithoutStateProvinceQuery.data).flatMap(\n (cities) => cities\n )\n );\n }\n\n if (stateProvinceIds?.length) {\n // If state/province is specified, add cities associated with those state/province\n stateProvinceIds.forEach((stateProvinceId) => {\n cities.push(\n ...(citiesWithStateProvinceQuery.data?.[stateProvinceId] ?? [])\n );\n });\n } else {\n // If state/province is not specified\n if (countryCodes?.length) {\n // Case 1: Country is specified, add all cities associated with that country\n const allStateProvinceIdsForCountries = countryCodes.flatMap(\n (countryCode) =>\n stateProvincesQuery.data?.[countryCode]?.map((sp) => sp.id) ?? []\n );\n\n allStateProvinceIdsForCountries.forEach((stateProvinceId) => {\n cities.push(\n ...(citiesWithStateProvinceQuery.data?.[stateProvinceId] ?? [])\n );\n });\n } else {\n // Case 2: Country is not specified, add all cities\n cities.push(\n ...Object.values(citiesWithStateProvinceQuery.data).flatMap(\n (cities) => cities\n )\n );\n }\n }\n\n return cities.reduce(\n (r, s) => {\n let displayName = s.name;\n if (stateProvinceIds?.length !== 1 && s.stateProvinceName != null) {\n displayName = `${s.name}, ${s.stateProvinceName}`;\n }\n if (countryCodes?.length !== 1) {\n displayName = `${displayName}, ${s.countryName}`;\n }\n\n r[s.id] = displayName;\n return r;\n },\n {} as Record\n );\n }, [\n citiesWithStateProvinceQuery.data,\n citiesWithoutStateProvinceQuery.data,\n countryCodes,\n stateProvinceIds,\n stateProvincesQuery.data,\n ]);\n\n return (\n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { AddressClient } from 'src/WebApiController';\n\nexport function useKnownCountries() {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const query = useQuery({\n queryKey: [\n 'getKnownCountries',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return await new AddressClient(\n activeAccountWebClientConfig\n ).getKnownCountries();\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n staleTime: Infinity,\n meta: {\n onError: (error: ErrorTypes) => {\n showErrorDialog('AddressClient.getKnownCountries', error);\n },\n },\n });\n\n return query;\n}\n","import { useMemo } from 'react';\nimport {\n PosMultiSelect,\n PosMultiSelectProps,\n} from 'src/core/POS/PosMultiSelect';\nimport { useKnownCountries } from 'src/hooks/api/useKnownCountries';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const CountryMultiSelector = ({\n placeholderText,\n ...props\n}: Omit) => {\n const knownCountriesQuery = useKnownCountries();\n\n const knownCountriesOptions = useMemo(() => {\n if (knownCountriesQuery.data == null) {\n return {};\n }\n\n return Object.entries(knownCountriesQuery.data).reduce(\n (r, [key, value]) => {\n r[key] = value;\n return r;\n },\n {} as Record\n );\n }, [knownCountriesQuery.data]);\n\n return (\n \n );\n};\n","import { useMemo } from 'react';\nimport {\n PosMultiSelect,\n PosMultiSelectProps,\n} from 'src/core/POS/PosMultiSelect';\nimport { useStateProvinces } from 'src/hooks/api/useStateProvinces';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { StateProvince } from 'src/WebApiController';\n\nexport const StateProvinceMultiSelector = ({\n placeholderText,\n countryCodes,\n ...props\n}: Omit & {\n countryCodes: string[] | null;\n}) => {\n const stateProvincesQuery = useStateProvinces();\n\n const stateProvincesOptions = useMemo(() => {\n if (stateProvincesQuery.data == null) {\n return {};\n }\n\n let stateProvinces: StateProvince[] = [];\n\n if (countryCodes?.length) {\n stateProvinces = countryCodes.flatMap((countryCode) => {\n return stateProvincesQuery.data?.[countryCode] ?? [];\n });\n } else {\n stateProvinces = Object.values(stateProvincesQuery.data).flatMap(\n (stateProvinces) => stateProvinces\n );\n }\n\n return stateProvinces.reduce(\n (r, s) => {\n if (!s.name) {\n return r;\n }\n r[s.id] =\n countryCodes?.length === 1\n ? s.name\n : `${s.name}${s.countryName ? ', ' : ''}${s.countryName}`;\n return r;\n },\n {} as Record\n );\n }, [countryCodes, stateProvincesQuery.data]);\n\n return (\n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { useMemo } from 'react';\nimport { FilterToolbarItem } from 'src/components/Filters';\nimport {\n CityMultiSelector,\n CountryMultiSelector,\n StateProvinceMultiSelector,\n} from 'src/components/Selectors/LocationSelector';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\nimport { EntityWithTicketsQuery, Feature } from 'src/WebApiController';\n\nexport type LocationFilterQuery = Pick<\n EntityWithTicketsQuery,\n 'countryCodes' | 'stateProvinceIds' | 'cityIds'\n>;\n\nexport const useLocationFilter = <\n TQuery extends QueryWithViewMode & LocationFilterQuery,\n>(): FilterToolbarItem[] => {\n const hasFeature = useUserHasFeature(Feature.FilterEventByLocation);\n const { tempQuery, setTempQuery } = useFilterQueryContext();\n\n const { countryCodes, stateProvinceIds, cityIds } = tempQuery;\n\n return useMemo(() => {\n return hasFeature\n ? [\n {\n filterId: 'countryCodes',\n labelContentId: ContentId.Country,\n filterQueryKeys: ['countryCodes'],\n filterItem: (\n {\n const countryCodesSorted = newCountryCodes.toSorted();\n const orgCountryCodesSorted = (countryCodes ?? []).toSorted();\n const hasChange = !isEqual(\n countryCodesSorted,\n orgCountryCodesSorted\n );\n\n if (hasChange) {\n setTempQuery({\n ...tempQuery,\n countryCodes: countryCodesSorted?.length\n ? countryCodesSorted\n : null,\n stateProvinceIds: null,\n cityIds: null,\n });\n }\n }}\n />\n ),\n },\n {\n filterId: 'stateProvinceIds',\n labelContentId: ContentId.StateProvince,\n filterQueryKeys: ['stateProvinceIds'],\n filterItem: (\n {\n const stateProvinceIdsSorted = newStateProvinceIds\n .map(Number)\n .toSorted() as number[];\n const orgStateProvinceIdsSorted = (\n stateProvinceIds ?? []\n ).toSorted();\n const hasChange = !isEqual(\n stateProvinceIdsSorted,\n orgStateProvinceIdsSorted\n );\n\n if (hasChange) {\n setTempQuery({\n ...tempQuery,\n stateProvinceIds: stateProvinceIdsSorted,\n cityIds: null,\n });\n }\n }}\n />\n ),\n },\n {\n filterId: 'cityIds',\n labelContentId: ContentId.City,\n filterQueryKeys: ['cityIds'],\n filterItem: (\n {\n const cityIdsSorted = newCityIds\n .map(Number)\n .toSorted() as number[];\n const orgCityIdsSorted = (cityIds ?? []).toSorted();\n const hasChange = !isEqual(cityIdsSorted, orgCityIdsSorted);\n\n if (hasChange) {\n setTempQuery({\n ...tempQuery,\n cityIds: cityIdsSorted,\n });\n }\n }}\n />\n ),\n },\n ]\n : [];\n }, [\n cityIds,\n countryCodes,\n hasFeature,\n setTempQuery,\n stateProvinceIds,\n tempQuery,\n ]);\n};\n","import { TextFilter } from 'src/components/Filters/TextFilter';\nimport { TextFilterQuery } from 'src/components/Filters/TextFilter/TextFilter';\n\nexport const RowFilter = ({\n query,\n setQuery,\n isHorizontalLayout,\n}: {\n query: TQuery;\n setQuery: (q: TQuery) => void;\n isHorizontalLayout?: boolean;\n}) => {\n return (\n \n );\n};\n","import {\n TextFilter,\n TextFilterQuery,\n} from 'src/components/Filters/TextFilter/TextFilter';\n\nexport const SectionFilter = ({\n query,\n setQuery,\n isHorizontalLayout,\n}: {\n query: TQuery;\n setQuery: (q: TQuery) => void;\n isHorizontalLayout?: boolean;\n}) => {\n return (\n \n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const FilterSectionsContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: calc(100vw - 48px);\n margin: 0 auto;\n max-width: var(--radix-popover-content-available-width);\n max-height: calc(var(--radix-popover-content-available-height) - 60px);\n\n ${({ theme: { media } }) => `\n ${media.makeMediaQuery(\n media.breakpoints.md,\n `\n min-width: 490px;\n max-width: max-content;\n max-height: var(--radix-popover-content-available-height)`\n )}\n `}\n\n /* Works on Firefox */\n * {\n scrollbar-width: thin;\n scrollbar-color: ${(props) =>\n `${props.theme.colors.secondary400} ${props.theme.colors.backgroundPrimary}`};\n }\n\n /* Works on Chrome, Edge, and Safari */\n *::-webkit-scrollbar {\n width: 12px;\n height: 12px;\n }\n\n *::-webkit-scrollbar-track {\n background: ${(props) => props.theme.colors.backgroundPrimary};\n padding: 2px;\n border-radius: 6px;\n }\n\n *::-webkit-scrollbar-thumb {\n background-color: ${(props) => props.theme.colors.secondary400};\n border-radius: 6px;\n border: 2px solid ${(props) => props.theme.colors.backgroundPrimary};\n\n &:hover {\n background-color: ${(props) => props.theme.colors.secondary500};\n }\n }\n`;\n\nexport const FilterDialogBody = styled.div`\n overflow-x: hidden;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: ${() => `${vars.spacing.sm} ${vars.spacing.lg}`};\n ${({ theme: { media } }) => `\n ${media.makeMediaQuery(\n media.breakpoints.md,\n `\n padding: ${vars.spacing.sm} ${vars.spacing.xl}`\n )}\n `}\n`;\n\nexport const FilterDialogFooter = styled.div`\n display: flex;\n justify-content: space-between;\n padding: ${() => `${vars.spacing.sm} ${vars.spacing.lg} ${vars.spacing.lg}`};\n ${({ theme: { media } }) => `\n ${media.makeMediaQuery(\n media.breakpoints.md,\n `\n padding: ${vars.spacing.sm} ${vars.spacing.xl} ${vars.spacing.lg}`\n )}\n `}\n gap: ${() => vars.spacing.sm};\n`;\n\nexport const FilterDialogFooterMessage = styled.div`\n display: flex;\n padding: ${() => `${vars.spacing.sm} ${vars.spacing.lg} ${vars.spacing.lg}`};\n ${({ theme: { media } }) => `\n ${media.makeMediaQuery(\n media.breakpoints.md,\n `\n padding: ${vars.spacing.sm} ${vars.spacing.xl} ${vars.spacing.lg}`\n )}\n `}\n align-items: center;\n gap: ${() => vars.spacing.sm};\n`;\n\nexport const FilterDialogFooterButtons = styled.div`\n display: flex;\n padding: ${() => `${vars.spacing.sm} ${vars.spacing.lg} ${vars.spacing.lg}`};\n ${({ theme: { media } }) => `\n ${media.makeMediaQuery(\n media.breakpoints.md,\n `\n padding: ${vars.spacing.sm} ${vars.spacing.xl} ${vars.spacing.lg}`\n )}\n `}\n gap: ${() => vars.spacing.sm};\n`;\n\nexport const FilterDialogDisplaySection = styled.section`\n position: relative;\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n align-items: flex-start;\n`;\n\nexport const FilterDialogDisplaySectionHeader = styled.header`\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('caption1', 'bold')};\n text-transform: uppercase;\n padding-bottom: ${() => vars.spacing.sm};\n`;\n\nexport const FilterDialogDisplaySectionContent = styled.div<{ type?: string }>`\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n flex-direction: ${(props) => (props.type === 'row' ? 'row' : 'column')};\n flex-wrap: wrap;\n width: 100%;\n gap: ${() => vars.spacing.sm};\n\n ${({ type }) =>\n type === 'row' &&\n `\n ${FilterDialogItemContainer} {\n min-width: calc(50% - 16px);\n width: max-content;\n }\n `}\n`;\n\nexport const FilterDialogItemContainer = styled.div`\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('body1', 'medium')};\n\n width: 100%;\n`;\n\nexport const FilterDialogItemDiv = styled.div`\n margin-top: ${() => vars.spacing.xxs};\n`;\n","import { ReloadButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport {\n FilterToolbarGroup,\n useFilterFiltersByPermission,\n} from 'src/components/Filters';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Button, Popover } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { hasAnyOfPermissions } from 'src/utils/userPermissionUtils';\n\nimport * as styles from './FilterDialog.css';\nimport {\n FilterDialogBody,\n FilterDialogDisplaySection,\n FilterDialogDisplaySectionContent,\n FilterDialogDisplaySectionHeader,\n FilterDialogFooter,\n FilterDialogFooterButtons,\n FilterDialogFooterMessage,\n FilterDialogItemContainer,\n FilterDialogItemDiv,\n FilterSectionsContainer,\n} from './FilterDialog.styled';\n\nexport type FilterDialogProps = {\n onResetAll: () => void;\n onSubmitFilter?: () => void;\n filters: FilterToolbarGroup[];\n hasFiltersApplied?: boolean;\n onSaveQuickFilter?: () => void;\n filterAppliedMessage?: React.ReactNode;\n};\n\nexport const FilterDialog = ({\n filters,\n onResetAll,\n onSubmitFilter,\n onSaveQuickFilter,\n filterAppliedMessage,\n hasFiltersApplied,\n}: FilterDialogProps) => {\n const { loginContext } = useAppContext();\n const disabled = !hasFiltersApplied;\n\n const filteredByPermissionsFilters = useFilterFiltersByPermission({\n filters,\n });\n\n return (\n \n
    \n \n
    \n \n {filteredByPermissionsFilters.map((g, i) => (\n \n {g.titleContentId && (\n \n \n \n )}\n \n {g.items\n ?.filter(\n (fi) =>\n fi.requiredPermissions == null ||\n hasAnyOfPermissions(\n loginContext?.user,\n fi.requiredPermissions\n )\n )\n .map((c, i) => (\n \n \n \n {c.filterItem}\n \n \n ))}\n \n \n ))}\n \n \n \n {filterAppliedMessage}\n \n \n {onSaveQuickFilter && (\n \n {\n onSaveQuickFilter();\n }}\n >\n \n \n \n )}\n \n {onSubmitFilter && (\n \n \n \n )}\n \n \n
    \n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const FilterToolbarContainer = styled.div`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n column-gap: ${() => vars.spacing.sm};\n overflow-x: hidden;\n overflow-y: auto;\n height: 100%;\n width: 100%;\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(media.breakpoints.xs, `flex-wrap: nowrap`)}`}\n`;\n\nexport const FilterCount = styled.div`\n background-color: ${(props) => props.theme.colors.backgroundBrandActive};\n width: ${() => vars.iconSize.s};\n height: ${() => vars.iconSize.s};\n color: ${(props) => props.theme.colors.textInverted};\n align-items: center;\n font-size: ${() => vars.typography.fontSize['xs']};\n line-height: 12px;\n justify-content: center;\n border-radius: ${() => vars.spacing.sm};\n display: flex;\n`;\n\nexport const CustomFilterPopoverContainer = styled.div`\n display: flex;\n flex-direction: column;\n row-gap: ${() => vars.spacing.sm};\n padding: ${() => vars.spacing.lg};\n width: 280px;\n border-radius: ${() => vars.borderRadius.s};\n box-shadow: ${(props) => props.theme.shadow(4, 'c')};\n max-width: var(--radix-popover-content-available-width);\n`;\n\nexport const CustomFilterPopoverTitle = styled.div`\n font-weight: 600;\n`;\n\nexport const CustomFilterItem = styled.div`\n display: flex;\n justify-content: space-between;\n border: 1px solid ${(props) => props.theme.colors.borderPrimary};\n border-radius: 4px;\n padding: ${() => vars.spacing.sm};\n label {\n margin-bottom: 0;\n }\n label > div:nth-child(2) {\n margin-left: ${() => vars.spacing.sm};\n }\n svg {\n display: block;\n }\n`;\n\nexport const CustomFilterIconsContainer = styled.div`\n display: flex;\n flex-shrink: 0;\n`;\n","import {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { CrossIcon, IconsFill, SearchSolidIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { PosTextField, PosTextFieldProps } from '../PosTextField';\n\nexport type PosSearchBoxProps = PosTextFieldProps & {\n onSearchChange?: (value: string) => void;\n onEnterKeyPressed?: (curValue: string) => void;\n minWidth?: number | string;\n maxWidth?: number | string;\n focusOnMount?: boolean;\n};\n\nexport function PosSearchBox({\n value,\n placeholder,\n onChange,\n onSearchChange,\n onEnterKeyPressed,\n onKeyDown,\n onBlur,\n minWidth,\n maxWidth,\n disabled,\n postfixDisplay,\n focusOnMount,\n ...textFieldProps\n}: PosSearchBoxProps) {\n const inputRef = useRef(null);\n const [inputText, setInputText] = useState(value?.toString() ?? '');\n\n const onInputChanged = (e: ChangeEvent) => {\n if (!disabled) {\n onChange?.(e);\n onSearchTextChanged(e.target.value);\n }\n };\n\n const onSearchTextChanged = (value: string) => {\n if (!disabled) {\n onSearchChange?.(value);\n setInputText(value);\n }\n };\n\n const onKeyDownHandler = (e: KeyboardEvent) => {\n if (!disabled) {\n const key = e.key;\n if (key === 'Enter') {\n e.stopPropagation();\n\n // TODO - figuring out how to clear the input when Enter key is handled\n onEnterKeyPressed?.(e.currentTarget.value);\n } else if (key === 'Escape') {\n e.stopPropagation();\n onSearchTextChanged('');\n }\n\n onKeyDown?.(e);\n }\n };\n\n useEffect(() => {\n if (value !== undefined && value !== inputText) {\n setInputText(value?.toString());\n }\n }, [inputText, value]);\n\n const onBlurHandler = useCallback(\n (e: FocusEvent) => {\n if (inputText?.startsWith(' ') || inputText?.endsWith(' ')) {\n setInputText(inputText.trim());\n }\n onBlur?.(e);\n },\n [inputText, onBlur]\n );\n\n const hasText = Boolean(inputText && inputText.length > 0);\n const searchPlaceholder = useContent(ContentId.Search);\n\n useEffect(() => {\n if (focusOnMount && inputRef.current) {\n inputRef.current.focus();\n }\n }, [focusOnMount]);\n\n return (\n \n }\n postfixDisplay={\n <>\n {hasText && (\n onSearchTextChanged('')}\n />\n )}\n {postfixDisplay && postfixDisplay}\n \n }\n {...textFieldProps}\n />\n );\n}\n","import { vars } from 'src/core/themes';\n\nimport { PosEnumSelect, PosEnumSelectProps } from '../PosSelect';\nimport { PosSearchBox, PosSearchBoxProps } from './PosSearchBox';\n\nexport type PosSelectableSearchBoxProps = Omit<\n PosSearchBoxProps,\n 'postfixDisplay'\n> & {\n selectorProps:\n | Omit<\n PosEnumSelectProps,\n 'shape' | 'size' | 'variant' | 'className'\n >\n | undefined;\n};\n\nexport function PosSelectableSearchBox({\n selectorProps,\n ...props\n}: PosSelectableSearchBoxProps) {\n return (\n \n )\n }\n />\n );\n}\n","import { format } from 'date-fns';\nimport { ComponentProps, useCallback, useState } from 'react';\nimport { Controller, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { DatePickerInput } from 'src/core/POS/DateSelector';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { convertDateToTemporalPlainDateTime } from 'src/utils/dateTimeUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n CatalogClient,\n EventMappingRequest,\n ValueTupleOfEventAndVenueAndPerformer,\n} from 'src/WebApiController';\n\nimport { FieldWrapper } from '../../modals/common/Purchase';\n\nexport type RequestEventDialogFieldValues = Omit<\n EventMappingRequest,\n 'eventDate'\n> & {\n eventDate: Date;\n};\n\nexport type RequestEventDialogProps = ComponentProps & {\n onSave: (data: ValueTupleOfEventAndVenueAndPerformer) => void;\n onCancel: () => void;\n};\n\nexport function RequestEventDialog({\n onSave,\n onCancel,\n ...dialogProps\n}: RequestEventDialogProps) {\n const {\n control,\n formState: { errors },\n register,\n handleSubmit,\n } = useForm();\n const [isLoading, setIsLoading] = useState(false);\n const { showErrorDialog } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const curLocale = getLocaleFromLanguageOrCurrent();\n const onSaveHandler = useCallback[0]>(\n async ({ eventDate, ...data }) => {\n setIsLoading(true);\n const requestedEvent = {\n ...data,\n eventDate: convertDateToTemporalPlainDateTime(eventDate).toString(),\n };\n await tryInvokeApi(\n async () => {\n const results = await new CatalogClient(\n activeAccountWebClientConfig\n ).requestEventMapping(requestedEvent);\n\n if (results) {\n // Set the search query so it set the event to be displayed\n onSave(results);\n }\n },\n (error) => {\n showErrorDialog('CatalogClient.requestEventMapping', error, {\n trackErrorData: requestedEvent,\n });\n },\n () => setIsLoading(false)\n );\n },\n [activeAccountWebClientConfig, onSave, showErrorDialog]\n );\n\n return (\n }\n footer={\n <>\n \n \n \n \n \n }\n {...dialogProps}\n onCancel={onCancel}\n >\n {isLoading && }\n {!isLoading && (\n \n }\n >\n \n \n \n \n }\n >\n (\n \n d <\n new Date() /* Event date should always be in the future */\n }\n {...field}\n onDateChange={(date) => {\n const currentDate = field.value;\n date.setHours(currentDate?.getHours() ?? 0);\n date.setMinutes(currentDate?.getMinutes() ?? 0);\n field.onChange(date);\n }}\n />\n )}\n />\n \n }\n >\n (\n {\n const date = (value && new Date(value)) || new Date();\n const time = e.target.value.split(':');\n date.setHours(parseInt(time[0]));\n date.setMinutes(parseInt(time[1]));\n field.onChange(date);\n }}\n />\n )}\n />\n \n \n \n }\n >\n \n \n }\n >\n \n \n }\n >\n \n \n }\n >\n \n \n \n )}\n \n );\n}\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const EventSearchInputBoxContainer = styled.div`\n flex: 1;\n display: grid;\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(media.breakpoints.md, `min-width: 600px;`)}`}\n`;\n\nexport const EventSearchItemDiv = styled.div`\n display: flex;\n gap: ${() => vars.spacing.lg};\n align-items: center;\n overflow: hidden;\n width: 100%;\n cursor: pointer;\n border: 1px solid ${(props) => props.theme.colors.borderPrimary};\n border-radius: ${() => vars.borderRadius.m};\n padding-left: ${() => vars.spacing.lg};\n\n &:hover {\n background-color: ${(props) => props.theme.colors.backgroundSecondary};\n border-color: ${(props) => props.theme.colors.borderDark};\n }\n svg {\n cursor: pointer;\n }\n`;\n\nexport const EventSearchItemInfoContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n overflow: hidden;\n flex-grow: 1;\n padding: ${() =>\n `${vars.spacing.lg} ${vars.spacing.lg} ${vars.spacing.lg} 0`};\n`;\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const EventSearchDropdownResultItemHeader = styled.div`\n font-weight: 700;\n border-bottom: 1px solid ${(props) => props.theme.colors.borderPrimary};\n margin-inline-start: 0;\n margin-inline-end: 0;\n\n display: flex;\n align-items: center;\n justify-content: left;\n\n &:not(:first-child) {\n padding-top: ${() => vars.spacing.lg};\n }\n\n svg {\n padding-right: ${() => vars.spacing.sm};\n }\n`;\n","import { Content } from 'src/contexts/ContentContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Event, Venue } from 'src/WebApiController';\n\nimport {\n EventDateDisplay,\n EventNameDisplay,\n VenueNameDisplay,\n} from '../../EventInfo';\nimport * as styles from './EventSearchDropdownResult.css';\n\nexport const EventSearchResultItem = ({\n event,\n venue,\n}: {\n event: Event;\n venue?: Venue | null;\n}) => {\n let eventName = event.name;\n let eventSubName = '';\n const lastIndex = eventName.lastIndexOf(' - ');\n if (lastIndex > 0) {\n eventSubName = eventName.slice(lastIndex + 3);\n eventName = eventName.slice(0, lastIndex);\n }\n\n const subnameIsVenue =\n venue?.name &&\n eventSubName.toLocaleLowerCase().includes(venue.name.toLocaleLowerCase());\n\n return (\n
    \n \n \n \n \n \n {event.viagId == null && (\n } />\n )}\n \n \n
    \n );\n};\n","import { Performer } from 'src/WebApiController';\n\nimport * as styles from './EventSearchDropdownResult.css';\n\nexport const PerformerSearchResultItem = ({\n performer,\n}: {\n performer: Performer;\n}) => {\n return (\n
    \n
    \n {performer.name}\n
    \n
    \n );\n};\n","import { Content, useContent } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Event, Performer, Venue } from 'src/WebApiController';\n\nimport * as styles from './EventSearchDropdownResult.css';\n\nexport const VenueConfigSearchResultItem = ({\n events,\n performer,\n venue,\n}: {\n events: Event[];\n performer?: Performer | null;\n venue?: Venue | null;\n}) => {\n const atText = useContent(ContentId.at);\n return (\n
    \n
    \n {performer?.name ?? events[0].name}\n {venue?.name ? ` ${atText} ${venue.name}` : ''}\n
    \n
    \n {events.length} \n
    \n
    \n );\n};\n","import { Venue } from 'src/WebApiController';\n\nimport * as styles from './EventSearchDropdownResult.css';\n\nexport const VenueSearchResultItem = ({ venue }: { venue: Venue }) => {\n return (\n
    \n
    {venue.name}
    \n
    \n {`${venue.city}, ${venue.state || ''} ${venue.country?.name || ''}`}\n
    \n
    \n );\n};\n","import { useMemo } from 'react';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ContentPlaceholder } from 'src/core/POS/ContentPlaceholder';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport {\n ArtistIcon,\n LocationOutlineIcon,\n MyTicketsOutlineIcon,\n} from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getPerformerAndVenueForEvent } from 'src/utils/eventWithDataUtils';\nimport { CatalogResults, Event, Performer, Venue } from 'src/WebApiController';\n\nimport * as styles from './EventSearchDropdownResult.css';\nimport { EventSearchDropdownResultItemHeader } from './EventSearchDropdownResult.styled';\nimport { EventSearchResultItem } from './EventSearchResultItem';\nimport { PerformerSearchResultItem } from './PerformerSearchResultItem';\nimport { VenueConfigSearchResultItem } from './VenueConfigSearchResultItem';\nimport { VenueSearchResultItem } from './VenueSearchResultItem';\n\nexport const EventSearchDropdownResult = ({\n searchText,\n isSearching,\n catalogResults,\n maxNumOfResults,\n onSearchItemSelected,\n}: {\n searchText: string;\n isSearching: boolean;\n catalogResults?: CatalogResults | null;\n maxNumOfResults?: number;\n onSearchItemSelected: (\n searchText: string | null,\n event?: Event | null,\n performer?: Performer | null,\n venue?: Venue | null,\n events?: Event[]\n ) => void;\n}) => {\n const { data } = useCatalogDataContext();\n\n maxNumOfResults = maxNumOfResults ?? 5;\n\n const events = useMemo(\n () =>\n Object.values(\n catalogResults?.events || (isSearching ? [null, null, null] : [])\n )\n .toSorted(\n (e1, e2) =>\n // Reverse sort so the mapped are top\n (e2?.event.viagId ?? 0) - (e1?.event.viagId ?? 0)\n )\n .map((e, i) => {\n const { performer, venue } = getPerformerAndVenueForEvent(\n e?.event,\n catalogResults\n );\n return (\n \n e?.event &&\n onSearchItemSelected(null, e.event, performer, venue)\n }\n >\n
    \n {e?.event ? (\n \n ) : (\n \n )}\n
    \n \n );\n }),\n [catalogResults, isSearching, onSearchItemSelected]\n );\n\n const performers = useMemo(\n () =>\n Object.values(\n catalogResults?.performers || (isSearching ? [null, null, null] : [])\n ).map((p, i) => (\n p && onSearchItemSelected(null, null, p, null)}\n disabled={!p?.name}\n >\n
    \n {p ? (\n \n ) : (\n \n )}\n
    \n \n )),\n [catalogResults?.performers, isSearching, onSearchItemSelected]\n );\n\n const venues = useMemo(\n () =>\n Object.values(\n catalogResults?.venues || (isSearching ? [null, null, null] : [])\n )\n .filter((v) => !v?.excludeSearch)\n .map((v, i) => (\n v && onSearchItemSelected(null, null, null, v)}\n disabled={!v?.name}\n >\n
    \n {v ? (\n \n ) : (\n \n )}\n
    \n \n )),\n [catalogResults?.venues, isSearching, onSearchItemSelected]\n );\n\n const venueConfigs = useMemo(\n () =>\n Object.values(catalogResults?.venueCfgs ?? []).map((v, i) => {\n const { venue, performer } = getPerformerAndVenueForEvent(v[0], data);\n return (\n v && onSearchItemSelected(null, null, null, null, v)}\n >\n
    \n {v ? (\n \n ) : (\n \n )}\n
    \n \n );\n }),\n [catalogResults?.venueCfgs, data, onSearchItemSelected]\n );\n\n const resultItemList = useMemo(() => {\n const results = [];\n if (venueConfigs.length) {\n results.push(\n \n \n \n \n \n \n );\n results.push(...venueConfigs.slice(0, maxNumOfResults));\n }\n\n if (events.length) {\n results.push(\n \n \n \n \n \n \n );\n results.push(...events.slice(0, maxNumOfResults));\n }\n if (performers.length) {\n results.push(\n \n \n \n \n \n \n );\n results.push(...performers.slice(0, maxNumOfResults));\n }\n if (venues.length) {\n results.push(\n \n \n \n \n \n \n );\n results.push(...venues.slice(0, maxNumOfResults));\n }\n\n results.push();\n results.push(\n onSearchItemSelected(searchText, null, null, null)}\n disabled={!searchText}\n >\n
    \n {searchText}\n
    \n \n );\n\n return results;\n }, [\n events,\n maxNumOfResults,\n onSearchItemSelected,\n performers,\n searchText,\n venueConfigs,\n venues,\n ]);\n\n return <>{resultItemList};\n};\n","import clsx from 'clsx';\nimport { EventItemHeader } from 'src/components/Events/EventItemHeader';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { vars } from 'src/core/themes';\nimport { ChevronRightIcon } from 'src/svgs/Viagogo';\nimport { getPerformerAndVenueForEvent } from 'src/utils/eventWithDataUtils';\nimport { CatalogResults, Event, Performer, Venue } from 'src/WebApiController';\n\nimport * as styles from './EventSearch.css';\nimport {\n EventSearchItemDiv,\n EventSearchItemInfoContainer,\n} from './EventSearch.styled';\n\nexport const EventSearchItem = ({\n event,\n isSelected,\n catalog,\n onChecked,\n isSingleSelect,\n}: {\n event: Event;\n isSelected?: boolean;\n catalog: CatalogResults;\n onChecked: (\n event: Event,\n isSelected: boolean,\n performer?: Performer | null,\n venue?: Venue | null\n ) => void;\n isSingleSelect?: boolean;\n}) => {\n const { performer, venue } = getPerformerAndVenueForEvent(event, catalog);\n return (\n {\n e.stopPropagation();\n onChecked?.(event, !isSelected, performer, venue);\n }}\n >\n \n {!isSingleSelect && (\n {\n onChecked?.(event, !isSelected, performer, venue);\n }}\n />\n )}\n\n \n \n \n {isSingleSelect && (\n
    \n \n
    \n )}\n \n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { debounce } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Virtuoso } from 'react-virtuoso';\nimport removeAccents from 'remove-accents';\nimport { FilterToolbarItemId } from 'src/components/Filters';\nimport { FilterDialog } from 'src/components/FilterToolbar/FilterDialog';\nimport * as filterToolbarStyles from 'src/components/FilterToolbar/FilterToolbar.css';\nimport { FilterCount } from 'src/components/FilterToolbar/FilterToolbar.styled';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n Content,\n useContent,\n useFormattedContent,\n} from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { DateRangeSelector } from 'src/core/POS/DateRangeSelector';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { PosSearchBox } from 'src/core/POS/PosSearchBox';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Button, Popover, Stack } from 'src/core/ui';\nimport { PillList } from 'src/core/ui/PillList';\nimport { PillItemProps } from 'src/core/ui/PillList/PillItem';\nimport { RequestEventDialog } from 'src/dialogs/RequestEventDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport {\n ArtistIcon,\n FilterIcon,\n IconsFill,\n LocationOutlineIcon,\n} from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n EVENT_SORT_TO_CID,\n YES_NO_ENUM_FILTER_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EventDateRangePresetNames } from 'src/utils/dateTimeUtils';\nimport {\n FromYesNoEnum,\n getAppliedFilterCounts,\n getEventSort,\n getEventUiSort,\n ToYesNoEnum,\n} from 'src/utils/eventQueryUtils';\nimport {\n getPerformerAndVenueForEvent,\n sortEventsByDate,\n sortEventsByName,\n} from 'src/utils/eventWithDataUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n CatalogClient,\n CatalogResults,\n DateTimeRange,\n Event,\n EventSearchQuery,\n EventSort,\n EventWithData,\n Performer,\n ValueTupleOfEventAndVenueAndPerformer,\n Venue,\n} from 'src/WebApiController';\n\nimport * as styles from './EventSearch.css';\nimport { EventSearchInputBoxContainer } from './EventSearch.styled';\nimport { EventSearchFilterQuery, EventSearchProps } from './EventSearch.types';\nimport { EventSearchDropdownResult } from './EventSearchDropdownResult';\nimport { EventSearchItem } from './EventSearchItem';\n\nconst DEFAULT_EVENT_SEARCH_FILTER_QUERY: EventSearchFilterQuery = {\n showParkingTickets: true,\n};\n\nexport function EventSearch({\n selectedEvents,\n eventsToSearchFrom,\n showEventsToSearchFromOnEmptySearch,\n onEventsSelect,\n searchTextPrefill,\n numEventsSelected,\n onDeleteNumEventsSelected,\n maxNumOfResults,\n allowSearchByVenueConfig,\n searchPlaceHolder,\n isSingleSelect,\n timeFrame,\n}: EventSearchProps) {\n const [tempFilterQuery, setTempFilterQuery] =\n useState(DEFAULT_EVENT_SEARCH_FILTER_QUERY);\n const [filterQuery, setFilterQuery] = useState(\n DEFAULT_EVENT_SEARCH_FILTER_QUERY\n );\n\n const [dateFilter, setDateFilter] = useState<\n DateTimeRange | null | undefined\n >();\n\n const [isAllSelected, setIsAllSelected] = useState(false);\n\n const toggleSelectAll = () => {\n const events =\n (filteredSearchEvents?.events &&\n Object.values(filteredSearchEvents.events)) ??\n [];\n onEventsSelect(\n events.map((eventWithData) => {\n const { event } = eventWithData;\n const catalog = filteredSearchEvents;\n const { performer, venue } = getPerformerAndVenueForEvent(\n eventWithData.event,\n catalog\n );\n return {\n event,\n isSelected: isAllSelected ? false : true,\n performer,\n venue,\n };\n })\n );\n setIsAllSelected((previous) => !previous);\n };\n\n const filterAppliedCounts = getAppliedFilterCounts(\n tempFilterQuery,\n DEFAULT_EVENT_SEARCH_FILTER_QUERY\n );\n const onResetAll = () => {\n setTempFilterQuery(DEFAULT_EVENT_SEARCH_FILTER_QUERY);\n setFilterQuery(DEFAULT_EVENT_SEARCH_FILTER_QUERY);\n };\n const onSubmitFilter = () => {\n setFilterQuery(tempFilterQuery);\n };\n\n const numEventsSelectedText = useFormattedContent(\n FormatContentId.EventsSelected,\n numEventsSelected.toString()\n );\n const searchPlaceholderText = useContent(\n searchPlaceHolder ?? ContentId.SearchEventPlaceholderText\n );\n const { activeAccountWebClientConfig } = useAppContext();\n const isMobile = useMatchMedia('mobile');\n const { showErrorDialog } = useErrorBoundaryContext();\n const [searchText, setSearchText] = useState(searchTextPrefill ?? '');\n const [searchTextDebounced, setSearchTextDebounced] = useState();\n const [searchEventsQuery, setSearchEventQuery] = useState<\n EventSearchQuery & {\n performer?: Performer | null;\n venue?: Venue | null;\n event?: Event | null;\n }\n >();\n const [eventSortQuery, setEventSortQuery] = useState<{\n sortBy: EventSort | null;\n isSortDescending: boolean | null;\n }>({ sortBy: null, isSortDescending: false });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const onSearchTextChangedDebounced = useCallback(\n debounce((s: string | undefined) => {\n s = s?.trim();\n if (s !== searchTextDebounced) {\n setSearchTextDebounced(s);\n\n if (\n searchEventsQuery &&\n (!s || searchEventsQuery.performerId || searchEventsQuery.venueId)\n ) {\n // If we have a filterQuery, and we s is null (being reset)\n // or we have either performerId or venueId set\n // we want to invoke a search-event based on s\n searchEventsQuery.searchText = s || null;\n setSearchEventQuery({ ...searchEventsQuery });\n }\n }\n }, 300),\n [searchEventsQuery]\n );\n\n useEffect(() => {\n if (searchTextPrefill) {\n onSearchTextChangedDebounced(searchTextPrefill);\n }\n }, [onSearchTextChangedDebounced, searchTextPrefill]);\n\n const getStaticResult = useCallback(\n async (searchText: string) => {\n if (eventsToSearchFrom) {\n const eventResults = eventsToSearchFrom.filter((e) =>\n removeAccents(e.event.name)\n .toLocaleUpperCase()\n .includes(removeAccents(searchText ?? '').toLocaleUpperCase())\n );\n return {\n events: eventResults.reduce>((r, e) => {\n r[e.event.viagVirtualId] = e;\n return r;\n }, {}),\n venueCfgs: allowSearchByVenueConfig\n ? eventResults\n .filter((e) => e.event.venueCfgId)\n .reduce>((r, e) => {\n const key = e.event.venueCfgId!.toString();\n if (r[key]) {\n r[key] = [...r[key], e.event];\n } else {\n r[key] = [e.event];\n }\n return r;\n }, {})\n : {},\n } as CatalogResults;\n }\n },\n [allowSearchByVenueConfig, eventsToSearchFrom]\n );\n\n const searchEvents = useQuery({\n queryKey: ['searchEvents', searchEventsQuery],\n queryFn: () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n\n if (\n !searchEventsQuery?.searchText &&\n !searchEventsQuery?.performerId &&\n !searchEventsQuery?.venueId &&\n !searchEventsQuery?.event\n ) {\n if (eventsToSearchFrom != null && showEventsToSearchFromOnEmptySearch) {\n return getStaticResult('');\n }\n // If all of these are nulls, return nothing\n return null;\n }\n\n if (eventsToSearchFrom != null) {\n return getStaticResult(searchEventsQuery?.searchText ?? '');\n }\n\n return tryInvokeApi(\n async () => {\n if (searchEventsQuery.event) {\n return {\n events: {\n [searchEventsQuery.event.viagVirtualId]: {\n event: searchEventsQuery.event,\n counts: {},\n entities: {},\n } as EventWithData,\n },\n performers: searchEventsQuery.performer?.viagId\n ? {\n [searchEventsQuery.performer?.viagId]:\n searchEventsQuery.performer,\n }\n : {},\n venues: searchEventsQuery.venue?.viagId\n ? {\n [searchEventsQuery.venue?.viagId]: searchEventsQuery.venue,\n }\n : {},\n } as CatalogResults;\n }\n\n return new CatalogClient(activeAccountWebClientConfig).searchEvents(\n searchEventsQuery\n );\n },\n (error) => {\n showErrorDialog('CatalogClient.searchEvents', error, {\n trackErrorData: searchEventsQuery,\n });\n }\n );\n },\n refetchOnWindowFocus: false,\n meta: {\n persist: false, // we do not want this thing persisted between sessions\n },\n });\n\n const filteredSearchEvents = useMemo(() => {\n const catalog = searchEvents.data;\n if (!catalog) {\n return null;\n }\n const filteredEvents: typeof catalog.events = {};\n for (const [key, event] of Object.entries(catalog.events)) {\n if (\n dateFilter?.start &&\n (!event.event.dates.start ||\n new Date(event.event.dates.start).valueOf() <\n new Date(dateFilter?.start).valueOf())\n ) {\n continue;\n }\n if (\n dateFilter?.end &&\n (!event.event.dates.start ||\n new Date(event.event.dates.start).valueOf() >\n new Date(dateFilter?.end).valueOf())\n ) {\n continue;\n }\n // filter out parking tickets\n if (\n !filterQuery.showParkingTickets &&\n // TODO we should check the event type here instead\n // currently we don't have that data in the response\n event.event.name.toLowerCase().startsWith('parking passes only')\n ) {\n continue;\n }\n filteredEvents[key] = event;\n }\n return {\n ...catalog,\n events: filteredEvents,\n };\n }, [searchEvents.data, dateFilter, filterQuery.showParkingTickets]);\n\n const shouldQuery = Boolean(\n searchTextDebounced &&\n !(searchEventsQuery?.performerId && searchEventsQuery?.venueId)\n );\n\n const autoCompleteResultQuery = useQuery({\n queryKey: [\n 'getSearchEventsAutoCompleteResult',\n searchTextDebounced,\n timeFrame,\n maxNumOfResults ?? 10,\n ],\n queryFn: () => {\n return tryInvokeApi(\n async () => {\n if (!shouldQuery) {\n return null;\n }\n\n if (eventsToSearchFrom != null) {\n return getStaticResult(searchTextDebounced!);\n } else {\n return new CatalogClient(\n activeAccountWebClientConfig\n ).getSearchEventsAutoCompleteResult(\n searchTextDebounced,\n maxNumOfResults ?? 10, // we want 10 at least so we can get the best result up top\n timeFrame\n );\n }\n },\n (error) => {\n showErrorDialog(\n 'CatalogClient.getSearchEventsAutoCompleteResult',\n error,\n { trackErrorData: { searchTextDebounced } }\n );\n }\n );\n },\n refetchOnWindowFocus: false,\n enabled: shouldQuery,\n });\n\n const getItemsToDisplay = useCallback(() => {\n let events =\n (filteredSearchEvents?.events &&\n Object.values(filteredSearchEvents.events)) ??\n [];\n\n if (!events || events.length === 0) return [];\n const result = [] as React.ReactNode[];\n if (eventSortQuery.sortBy === EventSort.MainDisplay) {\n events = sortEventsByName(events, eventSortQuery.isSortDescending);\n } else {\n events = sortEventsByDate(events, eventSortQuery.isSortDescending);\n }\n\n events.forEach((event) => {\n const isSelected = selectedEvents?.find(\n (seid) => seid === event.event.viagVirtualId\n );\n result.push(\n {\n onEventsSelect([{ event, isSelected, performer, venue }]);\n }}\n isSingleSelect={isSingleSelect}\n />\n );\n });\n return result;\n }, [\n filteredSearchEvents,\n eventSortQuery.sortBy,\n eventSortQuery.isSortDescending,\n selectedEvents,\n isSingleSelect,\n onEventsSelect,\n ]);\n\n const eventsToDisplay = getItemsToDisplay();\n\n const onSearchItemSelected = useCallback(\n async (\n searchText: string | null,\n event?: Event | null,\n performer?: Performer | null,\n venue?: Venue | null,\n events?: Event[]\n ) => {\n setSearchText(searchText || '');\n setSearchTextDebounced(undefined);\n if (event != null) {\n setSearchEventQuery({\n searchText: null,\n performerId: null,\n venueId: null,\n performer: performer,\n venue: venue,\n event: event,\n timeFrame: timeFrame ?? null,\n });\n onEventsSelect([{ event, isSelected: true, performer, venue }]);\n } else if (events != null) {\n // venue config selected\n onEventsSelect(\n events.map((ev) => ({\n event: ev,\n isSelected: true,\n performer: null,\n venue: null,\n }))\n );\n } else {\n setSearchEventQuery({\n searchText: searchText || performer?.name || '',\n performer:\n performer ??\n (searchEventsQuery?.event ? null : searchEventsQuery?.performer),\n performerId:\n performer?.viagId ?? searchEventsQuery?.performer?.viagId ?? null,\n venue:\n venue ||\n (searchEventsQuery?.event ? null : searchEventsQuery?.venue),\n venueId: venue?.viagId ?? searchEventsQuery?.venue?.viagId ?? null,\n timeFrame: timeFrame ?? null,\n });\n }\n },\n [\n onEventsSelect,\n searchEventsQuery?.event,\n searchEventsQuery?.performer,\n searchEventsQuery?.venue,\n timeFrame,\n ]\n );\n\n const hasResult = Boolean(\n (searchEventsQuery || showEventsToSearchFromOnEmptySearch) &&\n eventsToDisplay?.length\n );\n const pills = useMemo(() => {\n const pills = [] as PillItemProps[];\n if (searchEventsQuery?.performer && searchEventsQuery.event == null) {\n pills.push({\n value: 'performer',\n display: searchEventsQuery.performer.name,\n icon: ,\n onDelete: () => {\n if (searchEventsQuery) {\n searchEventsQuery.performer = undefined;\n searchEventsQuery.performerId = null;\n setSearchEventQuery({ ...searchEventsQuery! });\n }\n },\n });\n }\n\n if (searchEventsQuery?.venue && searchEventsQuery.event == null) {\n pills.push({\n value: 'venue',\n display: searchEventsQuery.venue.name,\n icon: ,\n onDelete: () => {\n if (searchEventsQuery) {\n searchEventsQuery.venue = undefined;\n searchEventsQuery.venueId = null;\n setSearchEventQuery({ ...searchEventsQuery! });\n }\n },\n });\n }\n\n if (numEventsSelected && numEventsSelected > 0) {\n pills.push({\n value: 'numEventsSelected',\n display: numEventsSelectedText,\n onDelete: onDeleteNumEventsSelected,\n });\n }\n\n return pills;\n }, [\n searchEventsQuery,\n numEventsSelected,\n numEventsSelectedText,\n onDeleteNumEventsSelected,\n ]);\n\n const requestEventDialog = useBasicDialog();\n\n const onSaveRequestEvent = useCallback(\n async (results: ValueTupleOfEventAndVenueAndPerformer) => {\n if (!results) {\n return;\n }\n\n // Set the search query so it set the event to be displayed\n setSearchEventQuery({\n ...searchEventsQuery,\n searchText: null,\n event: results.item1,\n venueId: null,\n venue: results.item2,\n performer: results.item3,\n performerId: null,\n timeFrame: timeFrame ?? null,\n });\n\n requestEventDialog.closeDialog();\n },\n [requestEventDialog, searchEventsQuery, timeFrame]\n );\n\n const openDropdown =\n searchText &&\n searchTextDebounced &&\n !(searchEventsQuery?.performerId && searchEventsQuery?.venueId);\n\n return (\n <>\n \n \n
    \n \n \n {\n setSearchText(value);\n onSearchTextChangedDebounced(value);\n }}\n postfixDisplay={\n hasResult && (\n {\n setSearchEventQuery(undefined);\n setEventSortQuery({\n sortBy: null,\n isSortDescending: true,\n });\n setSearchText('');\n }}\n >\n \n \n )\n }\n />\n
    \n }\n onOpenAutoFocus={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onCloseAutoFocus={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n {openDropdown ? (\n \n ) : undefined}\n \n \n\n
    \n \n \n
    \n \n {Boolean(filterAppliedCounts) && (\n {filterAppliedCounts}\n )}\n
    \n
    \n \n 0}\n onResetAll={onResetAll}\n onSubmitFilter={onSubmitFilter}\n filters={[\n {\n items: [\n {\n filterId:\n 'showParkingTickets' as FilterToolbarItemId,\n labelContentId: ContentId.ShowParkingTickets,\n filterQueryKeys: [\n 'showParkingTickets',\n ] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !==\n ToYesNoEnum(\n tempFilterQuery.showParkingTickets\n )\n ) {\n setTempFilterQuery({\n ...tempFilterQuery,\n showParkingTickets:\n FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n />\n ),\n },\n {\n filterId: 'eventDate' as FilterToolbarItemId,\n labelContentId: ContentId.EventDate,\n filterQueryKeys: [\n 'eventDate',\n ] as unknown as FilterToolbarItemId[],\n filterItem: (\n {\n setDateFilter(value);\n }}\n />\n ),\n },\n ],\n },\n ]}\n />\n \n
    \n
    \n \n\n \n
    \n\n
    \n {hasResult && !isSingleSelect && (\n \n )}\n {hasResult && (\n {\n const [sortBy, isSortDescending] = getEventSort(sort);\n if (\n sortBy !== eventSortQuery.sortBy ||\n isSortDescending !== eventSortQuery.isSortDescending\n ) {\n setEventSortQuery({\n ...eventSortQuery,\n sortBy,\n isSortDescending,\n });\n }\n }}\n valueOptionsContent={EVENT_SORT_TO_CID}\n />\n )}\n
    \n
    \n {!hasResult ? (\n searchEvents.isPending ? (\n \n ) : (\n <>\n
    \n \n
    \n {eventsToSearchFrom == null && (\n
    \n \n \n \n
    \n )}\n \n )\n ) : (\n d}\n />\n )}\n
    \n \n {requestEventDialog.dialogProps.isOpen && (\n \n )}\n \n );\n}\n","import { useCallback } from 'react';\nimport {\n ActionOutboxEntityTypeForBulkEdit,\n bulkEditInProgress,\n hasPrimaryAffectedIds,\n} from 'src/components/common/BulkActions/BulkEditStatus';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n} from 'src/WebApiController';\n\nexport const BulkEditFooter = ({\n entityType,\n primaryEntityTypesAffected,\n isLoading,\n hasBackgroundBulkEditFeature,\n onClose,\n onSubmit,\n onBeforeSubmit,\n disabled,\n submittButtonRef,\n onCloseContentIdOverride,\n onSubmitContentIdOverride,\n}: {\n entityType: ActionOutboxEntityTypeForBulkEdit;\n primaryEntityTypesAffected?: ActionOutboxEntityTypeForBulkEdit[];\n isLoading?: boolean;\n hasBackgroundBulkEditFeature: boolean;\n onBeforeSubmit?: () => boolean;\n onSubmit: (\n onPreviewCallback?: (preview: BulkEditPreviewWithDetails) => void\n ) => void;\n onClose: (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => void;\n disabled?: boolean;\n submittButtonRef: React.RefObject;\n onCloseContentIdOverride?: ContentId;\n onSubmitContentIdOverride?: ContentId;\n}) => {\n const {\n stage,\n progress,\n preview,\n setStage,\n setPreview,\n setProgress,\n setErrors,\n setWarnings,\n retryableEntities,\n progressBeforeRetry,\n onRetryCancel,\n clearRetryStates,\n } = useBulkEditHubContext();\n\n const onCloseHandler = useCallback(\n async (newProgress?: BulkEditProgress) => {\n // We clean the progress if we want to cancel with retries\n if (retryableEntities) {\n clearRetryStates();\n setProgress(undefined);\n }\n if (stage === BulkEditStage.Preview) {\n setPreview(undefined);\n setStage(BulkEditStage.Idle);\n } else {\n if (\n stage === BulkEditStage.Idle &&\n retryableEntities &&\n progressBeforeRetry\n ) {\n onRetryCancel();\n }\n onClose(newProgress);\n }\n },\n [\n clearRetryStates,\n onClose,\n onRetryCancel,\n progressBeforeRetry,\n retryableEntities,\n setPreview,\n setProgress,\n setStage,\n stage,\n ]\n );\n\n const onSubmitHandler = useCallback(() => {\n if (onBeforeSubmit && !onBeforeSubmit()) {\n return;\n }\n\n if (stage === BulkEditStage.Idle) {\n setStage(BulkEditStage.GettingPreview);\n onSubmit((preview) => {\n setPreview(preview);\n setStage(BulkEditStage.Preview);\n });\n } else {\n setStage(BulkEditStage.Execute);\n setErrors([]); // clear errors on start/retry\n setWarnings([]); // clear warnings on start/retry\n onSubmit();\n }\n }, [\n onBeforeSubmit,\n onSubmit,\n setErrors,\n setPreview,\n setStage,\n setWarnings,\n stage,\n ]);\n\n return (\n <>\n \n\n {(progress?.step !== BulkEditStep.Done ||\n Boolean(progress?.failureCount)) && (\n \n {onSubmitContentIdOverride ? (\n \n ) : stage === BulkEditStage.Idle &&\n retryableEntities &&\n progressBeforeRetry ? (\n \n ) : stage === BulkEditStage.Idle ||\n stage === BulkEditStage.GettingPreview ? (\n \n ) : stage === BulkEditStage.Preview ||\n stage === BulkEditStage.Execute ? (\n \n ) : progress?.failureCount ? (\n \n ) : (\n \n )}\n \n )}\n \n );\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { EventSearch } from 'src/components/Events/EventSearch';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n Event,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\nimport * as styles from './BulkChangeEventDialog.css';\n\nexport type BulkChangeEventDialogProps = ComponentProps & {\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.TicketGroup;\n updateKey: string;\n onOkay: (\n event: Event | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n doNotUseBackgroundProgress?: boolean;\n};\n\nexport function BulkChangeEventDialog({\n entityType,\n updateKey,\n onOkay,\n onCancel,\n doNotUseBackgroundProgress,\n ...rest\n}: BulkChangeEventDialogProps) {\n const {\n refreshCatalog,\n eventsExpansion: { setListItemExpansion },\n } = useCatalogDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n const [event, setEvent] = useState();\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n if (event) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n\n await refreshCatalog();\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n event,\n onCancel,\n refreshCatalog,\n setListItemExpansion,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n entityType,\n BulkActionType.ChangeEvent,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n !doNotUseBackgroundProgress &&\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const onEventsSelect = useCallback(\n (\n data: {\n event: Event;\n }[]\n ) => {\n const events = data.map((e) => e.event);\n setEvent(events[0]);\n },\n []\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(null, false, onPreviewReceived);\n } else {\n onOkay(event!, hasBackgroundBulkEditFeature, undefined, preview);\n }\n setIsLoading(false);\n },\n [onOkay, event, preview, hasBackgroundBulkEditFeature]\n );\n\n const submittButtonRef = useRef(null);\n\n return (\n } />\n }\n onOpened={() => {\n setEvent(undefined);\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter' && event) {\n submittButtonRef.current.click();\n }\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n \n );\n}\n","import { ComponentProps, useEffect, useState } from 'react';\nimport { Controller, FormProvider, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosTextArea } from 'src/core/POS/PosTextArea';\nimport { Button } from 'src/core/ui';\nimport { FieldWrapper } from 'src/modals/common/Purchase';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { TICKET_GROUP_EDIT_REASON_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport {\n TicketGroupEditReason,\n TicketGroupIntention,\n} from 'src/WebApiController';\n\nimport * as styles from './TicketGroupIntentionDialog.css';\n\nexport type TicketGroupIntentionDialogProps = ComponentProps & {\n salesCount?: number;\n intention: TicketGroupIntention;\n onSave: (intention: TicketGroupIntention, deallocateSales?: boolean) => void;\n saveButtonContentId?: ContentId;\n};\n\nexport function TicketGroupIntentionDialog({\n intention,\n ...rest\n}: TicketGroupIntentionDialogProps) {\n const methods = useForm({\n defaultValues: intention,\n });\n\n useEffect(() => {\n methods.reset(intention);\n }, [intention, methods]);\n\n return (\n \n \n \n );\n}\n\nconst TicketGroupIntentionDialogBody = ({\n salesCount,\n saveButtonContentId,\n onSave,\n onClosed,\n getValues,\n control,\n handleSubmit,\n formState,\n ...rest\n}: TicketGroupIntentionDialogProps &\n Omit<\n ComponentProps>,\n 'children'\n >) => {\n const { reason } = getValues();\n\n const [deallocateSales, setDeallocateSales] = useState(true);\n\n return (\n {\n e.preventDefault();\n e.stopPropagation();\n }}\n header={}\n footer={\n <>\n {onClosed && }\n {\n handleSubmit((i) => onSave(i, deallocateSales))();\n }}\n disabled={formState.isSubmitting}\n >\n \n \n \n }\n onCancel={() => {\n onClosed?.();\n }}\n >\n
    \n \n \n \n {!!salesCount && (\n \n \n {salesCount === 1 ? (\n \n ) : (\n \n )}\n \n }\n />\n \n )}\n {reason === TicketGroupEditReason.EditEvent && (\n <>\n \n }\n />\n \n\n \n {\n setDeallocateSales(!deallocateSales);\n }}\n label={\n \n }\n labelPosition=\"right\"\n />\n \n \n )}\n \n (\n \n )}\n />\n \n
    \n \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { EventIcon } from 'src/svgs/EventIcon';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Permission } from 'src/WebApiController';\n\nexport const LaunchChangeEvent = ({\n onClick,\n disabled,\n showIcon,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n showIcon?: boolean;\n}) => {\n const hasPermission = useUserHasAnyOfPermissions(\n Permission.Purchases_Edit,\n Permission.Purchases_EditOwned\n );\n\n if (!hasPermission) {\n return null;\n }\n\n return (\n <>\n \n \n {showIcon && (\n \n )}\n \n \n \n \n );\n};\n","import { useCallback, useRef, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { BulkChangeEventDialog } from 'src/dialogs/BulkEdits/BulkChangeEventDialog';\nimport { TicketGroupIntentionDialog } from 'src/dialogs/TicketGroupIntentionDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditPreviewWithDetails,\n BulkEditTicketGroupClient,\n Event,\n PurchaseOrderQuery,\n TicketGroupEditReason,\n} from 'src/WebApiController';\n\nimport { LaunchChangeEvent } from './LaunchChangeEvent';\n\nexport const useBulkChangeEventAction = (\n filterQuery: PurchaseOrderQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n groupId?: string,\n onSuccess?: () => void,\n showIcon?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const updateKey = `ticket-group-changeEvent-event-${groupId}`;\n\n const [changeEventNote, setChangeEventNote] = useState();\n const deallocateSalesRef = useRef(true);\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const ticketGroupIntentionDialog = useBasicDialog();\n const {\n openDialog: openBulkChangeEventDialog,\n closeDialog: closeBulkChangeEventDialog,\n } = useDialog(DialogId.BulkChangeEvent, BulkChangeEventDialog);\n\n const { refreshData } = usePurchaseDataContext();\n const {\n eventsExpansion: { refreshExpandedListItems, setListItemExpansion },\n refreshCatalog,\n } = useCatalogDataContext();\n const { refreshMetrics } = useCatalogMetricsContext();\n const onSubmitChangeEvent = useCallback(\n async (\n newSelectedEvent: Event | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const bulkEditClient = new BulkEditTicketGroupClient(\n activeAccountWebClientConfig\n );\n\n const preview =\n await bulkEditClient.bulkChangeEventPreview(filterQuery);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateTagsPreview', error, {\n trackErrorData: { filterQuery },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (newSelectedEvent) {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditTicketGroupClient(\n activeAccountWebClientConfig\n ).bulkChangeEvent(\n preview!.preview,\n newSelectedEvent.posIds[0],\n newSelectedEvent.viagId,\n newSelectedEvent.mappingId,\n deallocateSalesRef.current,\n changeEventNote ?? '',\n updateKey,\n supportBackgroundProcess\n );\n if (!supportBackgroundProcess) {\n if (succeeded) {\n onSuccess?.();\n await refreshData(true);\n // Metrics/events may have changed with TGs being cancelled, so refresh the whole catalog\n refreshMetrics();\n await refreshCatalog();\n await refreshExpandedListItems();\n }\n\n closeBulkChangeEventDialog();\n }\n },\n (error) => {\n showErrorDialog('onSubmitChangeEvent', error, {\n trackErrorData: { preview },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n changeEventNote,\n closeBulkChangeEventDialog,\n filterQuery,\n onSuccess,\n refreshCatalog,\n refreshData,\n refreshExpandedListItems,\n refreshMetrics,\n setIsLoading,\n showErrorDialog,\n updateKey,\n ]\n );\n\n const onChangeEventClick = useCallback(\n (changeEventNote?: string) => {\n setChangeEventNote(changeEventNote);\n openBulkChangeEventDialog({\n changeEventNote,\n updateKey,\n entityType: ActionOutboxEntityType.TicketGroup,\n onOkay: onSubmitChangeEvent,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkChangeEventDialog,\n doNotUseBackgroundProgress: onSuccess != null,\n });\n },\n [\n closeBulkChangeEventDialog,\n onSubmitChangeEvent,\n onSuccess,\n openBulkChangeEventDialog,\n setIsLoading,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n ticketGroupIntentionDialog.launchDialog();\n }}\n disabled={isLoading}\n showIcon={showIcon}\n />\n ),\n dialog: (\n <>\n {\n deallocateSalesRef.current = deallocateSales == true;\n onChangeEventClick(i.additionalInfo);\n ticketGroupIntentionDialog.closeDialog();\n }}\n saveButtonContentId={ContentId.Save}\n />\n \n ),\n };\n};\n","import { RecipeVariants } from '@vanilla-extract/recipes';\nimport clsx from 'clsx';\nimport { ComponentPropsWithoutRef, forwardRef, PropsWithChildren } from 'react';\nimport { useColumnResizingContext } from 'src/contexts/ColumnResizingContext/ColumnResizingContext';\nimport { mergeProps } from 'src/core/utils';\n\nimport { DivWithTitle } from '../DivWithTitle';\nimport * as styles from './TableCellDiv.css';\n\nexport type TableCellDivProps = ComponentPropsWithoutRef<'div'> &\n PropsWithChildren> & {\n showTooltip?: boolean;\n wrap?: 'wrap' | 'nowrap' | undefined;\n shouldHideCheckboxes?: boolean;\n };\n\nexport const TableCellDiv = forwardRef(\n function TableCellDiv(\n {\n align = 'left',\n overflowWrap,\n children,\n showTooltip,\n title,\n wrap,\n shouldHideCheckboxes,\n ...props\n },\n ref\n ) {\n const { isResizeEnabled } = useColumnResizingContext();\n return (\n \n {children}\n \n );\n }\n);\n","import { ComponentPropsWithoutRef, forwardRef } from 'react';\nimport { TableCellDiv, TableCellDivProps } from 'src/core/ui/TableCellDiv';\n\ntype TableHeaderCellDivProps = ComponentPropsWithoutRef<'div'> &\n TableCellDivProps;\n\nexport const TableHeaderCellDiv = forwardRef<\n HTMLDivElement,\n TableHeaderCellDivProps\n>(function TableHeaderCellDiv({ children, ...props }, ref) {\n return (\n \n {children}\n \n );\n});\n","import { useState } from 'react';\n\nconst useCopyToClipboard = () => {\n const [referenceIsCopied, setReferenceIsCopied] = useState('');\n\n function copyToClipboard(\n text: string,\n referenceId?: string\n ): Promise {\n return navigator.clipboard\n .writeText(text)\n .then(() => referenceId && setReferenceIsCopied(referenceId))\n .catch((err) => {\n console.error('Failed to copy: ', err);\n setReferenceIsCopied('');\n });\n }\n\n function resetReferenceIsCopiedState() {\n setReferenceIsCopied('');\n }\n\n return { referenceIsCopied, copyToClipboard, resetReferenceIsCopiedState };\n};\n\nexport default useCopyToClipboard;\n","import { useMemo } from 'react';\nimport { getContent, useContentContext } from 'src/contexts/ContentContext';\nimport {\n DELIVERY_OPTIONS_TO_CID,\n TICKET_TYPE_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport {\n DeliveryType,\n TicketType,\n ValueTupleOfDeliveryTypeAndNullableTicketType,\n} from 'src/WebApiController';\n\ninterface UseMapDeliveryTypesToStringProps {\n deliveryTypesObj:\n | {\n deliveryTypes?: ValueTupleOfDeliveryTypeAndNullableTicketType[];\n delivType?: DeliveryType | null;\n topPriTktType?: TicketType | null;\n }\n | undefined\n | null;\n}\n\nexport const useMapDeliveryTypesToString = ({\n deliveryTypesObj,\n}: UseMapDeliveryTypesToStringProps): string => {\n const contentContext = useContentContext();\n\n const { deliveryTypes, delivType, topPriTktType } = deliveryTypesObj || {};\n\n return useMemo(() => {\n const delTypes = deliveryTypes\n ? deliveryTypes\n : [{ item1: delivType, item2: topPriTktType }];\n\n return delTypes\n .map((dt) =>\n dt.item2\n ? getContent(TICKET_TYPE_TO_CID[dt.item2], contentContext)\n : dt.item1\n ? getContent(DELIVERY_OPTIONS_TO_CID[dt.item1], contentContext)\n : ''\n )\n .join(', ');\n }, [contentContext, delivType, deliveryTypes, topPriTktType]);\n};\n","import { useCallback, useState } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { vars } from 'src/core/themes';\nimport { ButtonProps } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { DownloadIcon, ProcessingIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { downloadFileFromBlob } from 'src/utils/fileUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { PurchaseClient } from 'src/WebApiController';\n\nexport const LaunchDownloadUserDocuments = ({\n ticketGroupId,\n variant,\n iconOnlyMode,\n disabled,\n}: {\n ticketGroupId: number;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n disabled?: boolean;\n}) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const onDownload = useCallback(async () => {\n setIsLoading(true);\n return await tryInvokeApi(\n async () => {\n const result = await new PurchaseClient(\n activeAccountWebClientConfig\n ).downloadMergedUserDocumentsPdf(ticketGroupId);\n if (result.data) {\n downloadFileFromBlob(result.fileName ?? 'tickets.pdf', result.data);\n }\n },\n (error) => {\n showErrorDialog('ListingClient.downloadMergedUserDocumentsPdf', error);\n },\n () => setIsLoading(false)\n );\n }, [activeAccountWebClientConfig, ticketGroupId, showErrorDialog]);\n\n const onClickHandler = useCallback(\n (e: React.MouseEvent) => {\n onDownload();\n },\n [onDownload]\n );\n\n const iconFill =\n iconOnlyMode || (variant && variant !== 'regular')\n ? vars.color.textBrand\n : vars.color.textInverted;\n\n return (\n \n \n \n ) : (\n \n )\n }\n />\n );\n};\n","import { ReactNode } from 'react';\nimport { Content } from 'src/contexts/ContentContext/Content';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { UploadPredeliveryAction } from 'src/modals/PurchaseWizard/PurchaseTicketsFlow/purchaseTicketsFlow.utils';\nimport { ChevronUpIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ListingActionType, TicketGroupInput } from 'src/WebApiController';\n\nexport const PredeliveryActionsDropdown = ({\n ticketGroup,\n disabled,\n onPredeliveryAction,\n triggerCmp,\n}: {\n ticketGroup: Pick;\n disabled?: boolean;\n onPredeliveryAction: (action: UploadPredeliveryAction) => void;\n triggerCmp?: ReactNode;\n}) => {\n const hasBarcodes = ticketGroup.tickets?.value?.some((t) => t.barcode);\n const hasExternalIds = ticketGroup.tickets?.value?.some((t) => t.externalTicketId);\n const hasTicketUrls = ticketGroup.tickets?.value?.some((t) => t.ticketUrl);\n const hasETickets = ticketGroup.tickets?.value?.some((t) => t.eTicket);\n const hasQRcodes = ticketGroup.tickets?.value?.some((t) => t.qrCode);\n return (\n \n \n \n \n \n \n )\n }\n align=\"start\"\n triggerProps={{\n disabled: disabled,\n }}\n >\n \n onPredeliveryAction(ListingActionType.PredeliverBarcodes)\n }\n >\n \n \n \n onPredeliveryAction(ListingActionType.PredeliverTicketUrls)\n }\n >\n \n \n \n onPredeliveryAction(ListingActionType.PredeliverExternalIds)\n }\n >\n \n \n \n onPredeliveryAction(ListingActionType.PredeliverETickets)\n }\n >\n \n \n onPredeliveryAction(ListingActionType.PredeliverQRCode)}\n >\n \n \n \n );\n};\n","import { ContentPlaceholder } from 'src/core/POS/ContentPlaceholder';\nimport { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const TableRowDiv = styled('tr')<{\n selected: boolean;\n isSubRow?: boolean;\n}>`\n ${(props) =>\n props.selected\n ? `background-color: ${props.theme.colors.backgroundAccent700};`\n : props.isSubRow\n ? `background-color: ${props.theme.colors.backgroundSecondary};`\n : ''}\n min-width: max-content;\n\n &:hover,\n &:focus,\n &:active,\n &:focus-visible,\n &:focus-within {\n background-color: ${(props) =>\n props.isSubRow\n ? props.theme.colors.backgroundActiveDisabled\n : props.selected\n ? props.theme.colors.backgroundAccent700\n : props.theme.colors.backgroundInteraction};\n }\n`;\n\nexport const SeatInfoContainer = styled.div`\n display: flex;\n flex-direction: column;\n\n max-width: 300px;\n\n .listing-notes {\n font-size: ${() => vars.typography.fontSize['xs']};\n }\n`;\n\ntype TableShimmeringDivProps = { height?: string };\nexport const TableShimmeringDiv = ({ height }: TableShimmeringDivProps) => {\n return ;\n};\n\nexport const NoData = styled.div`\n color: ${({ theme: { colors } }) => colors.textPrimary};\n text-align: center;\n padding: 1em 0;\n display: flex;\n justify-content: center;\n`;\n","export const coalesceUndefinedOnly = (\n x: T | null | undefined,\n y: T | null | undefined\n) => {\n return x === undefined ? y : x;\n};\n\nexport const removeDuplicates = (arr: T[]): T[] => {\n return [...new Set(arr)];\n};\n\nexport const compareNumber = (\n numA: number | undefined | null,\n numB: number | undefined | null\n) => {\n if (numA == null && numB != null) return 1;\n if (numA != null && numB == null) return -1;\n\n if (numA != null && numB != null) {\n if (numA !== numB) {\n return numA < numB ? -1 : 1;\n }\n }\n return 0;\n};\n","import { Row } from '@tanstack/react-table';\nimport { MarketplacePaymentLineWithSaleAndEventInfo } from 'src/hooks/useGetMarketplacePaymentLineTableData';\nimport { sortGroupType } from 'src/modals/GroupListings/components/groupingUtils';\nimport { ListingWithEvent } from 'src/tables/ListingTable/ListingTable.types';\nimport { SaleWithEvent } from 'src/tables/SalesTable/SalesTable.type';\nimport {\n ListingGroup,\n ListingNote,\n Money,\n PurchaseOrderTicketGroup,\n ReportValueType,\n Seating,\n UiMoney,\n} from 'src/WebApiController';\n\nimport { compareNumber } from './miscUtils';\n\nexport const localeCompareNumeric = (\n rowA: Row,\n rowB: Row,\n colId: string\n) => {\n const valueA = rowA.getValue(colId);\n const valueB = rowB.getValue(colId);\n if (!valueA) return valueB ? -1 : 1;\n if (!valueB) return 1;\n\n return valueA.localeCompare(valueB, undefined, {\n numeric: true,\n });\n};\n\nexport const sortMoney = (\n rowA: Row,\n rowB: Row,\n colId: string\n) => {\n const valueA = rowA.getValue(colId) as UiMoney | Money;\n const valueB = rowB.getValue(colId) as UiMoney | Money;\n if (valueA == null) return valueB ? -1 : 1;\n if (valueB == null) return 1;\n\n const amtA =\n (valueA as UiMoney).amt != null\n ? (valueA as UiMoney).amt\n : (valueA as Money).amount;\n const amtB =\n (valueB as UiMoney).amt != null\n ? (valueB as UiMoney).amt\n : (valueB as Money).amount;\n\n return amtA - amtB;\n};\n\nconst getNumericPrefix = (str: string | null) => {\n if (!str) return null;\n\n const match = str.match(/^\\d+/);\n return match ? parseInt(match[0]) : null;\n};\n\nexport const sortByNumericPrefix = (\n rowA: Row,\n rowB: Row,\n colId: string\n) => {\n const valueA = rowA.getValue(colId) as string;\n const valueB = rowB.getValue(colId) as string;\n if (!valueA) return valueB ? -1 : 1;\n if (!valueB) return 1;\n\n return compareByNumericPrefix(valueA, valueB);\n};\n\nexport const compareByNumericPrefix = (\n strA: string | null,\n strB: string | null\n) => {\n const numA = getNumericPrefix(strA);\n const numB = getNumericPrefix(strB);\n\n const cmpNumberResult = compareNumber(numA, numB);\n if (cmpNumberResult !== 0) {\n return cmpNumberResult;\n }\n\n const postfixA = strA ? strA.slice(numA ? numA.toString().length : 0) : '';\n const postfixB = strB ? strB.slice(numB ? numB.toString().length : 0) : '';\n\n return postfixA < postfixB ? -1 : 1;\n};\n\nconst compareGeneric = (a: number | string, b: number | string) => {\n if (a === b) return 0;\n if (a === '') return 1;\n if (b === '') return -1;\n if (typeof a === 'number' && typeof b !== 'number') return -1;\n if (typeof b === 'number' && typeof a !== 'number') return 1;\n return a < b ? -1 : 1;\n};\n\nexport const sortGeneric = (\n rowA: Row,\n rowB: Row,\n colId: string\n) => {\n const convertToComparableValue = (value: unknown) => {\n const str = String(value ?? '')\n .trim()\n .toLowerCase();\n const strAsInt = parseInt(str);\n return !Number.isNaN(strAsInt) ? strAsInt : str;\n };\n\n const [a, b] = [\n convertToComparableValue(rowA.getValue(colId)),\n convertToComparableValue(rowB.getValue(colId)),\n ];\n\n return compareGeneric(a, b);\n};\n\nexport const sortListingSeating = (\n rowA: Row,\n rowB: Row,\n colId: string\n) => {\n if (rowA.original?.isLtGrp && rowB.original?.listing?.isLtGrp) {\n return sortGroupType(\n (rowA.original.listing as ListingGroup).groupType,\n (rowB.original.listing as ListingGroup).groupType\n );\n } else if (rowA.original?.isLtGrp || rowB.original?.listing?.isLtGrp) {\n return rowA.original?.isLtGrp ? 1 : -1; // listing group sort first\n }\n\n return sortSeatingForTable(rowA, rowB, colId);\n};\n\nexport const sortListingSeatingSection = (\n rowA: Row,\n rowB: Row,\n colId: string\n) => {\n if (rowA.original?.isLtGrp && rowB.original?.listing?.isLtGrp) {\n return sortGroupType(\n (rowA.original.listing as ListingGroup).groupType,\n (rowB.original.listing as ListingGroup).groupType\n );\n } else if (rowA.original?.isLtGrp || rowB.original?.listing?.isLtGrp) {\n return rowA.original?.isLtGrp ? 1 : -1; // listing group sort first\n }\n\n return sortSeatingSection(\n rowA.original?.listing?.seating,\n rowB.original?.listing?.seating\n );\n};\n\nexport const sortPurchaseOrderTicketGroupSeating = (\n rowA: Row,\n rowB: Row,\n colId: string\n) => {\n if (!rowA?.original || !rowB?.original) {\n return 0;\n }\n\n const rowATicketGroupToGetSeating = rowA.original.isTktGrp\n ? rowA.original\n : rowA.original.ticketGroupItems?.[0];\n\n const rowBTicketGroupToGetSeating = rowB.original.isTktGrp\n ? rowB.original\n : rowB.original.ticketGroupItems?.[0];\n\n if (rowATicketGroupToGetSeating?.seating == null) {\n return -1;\n }\n\n if (rowBTicketGroupToGetSeating?.seating == null) {\n return -1;\n }\n\n return sortSeating(\n rowATicketGroupToGetSeating.seating,\n rowBTicketGroupToGetSeating.seating\n );\n};\n\nexport const sortSalesSeating = (\n rowA: Row,\n rowB: Row,\n colId: string\n) => {\n if (!rowA?.original || !rowB?.original) {\n return 0;\n }\n\n return sortSeating(rowA.original.sale.seating, rowB.original.sale.seating);\n};\n\nexport const sortSalesSeatingSection = (\n rowA: Row,\n rowB: Row,\n colId: string\n) => {\n if (!rowA?.original || !rowB?.original) {\n return 0;\n }\n\n return sortSeatingSection(\n rowA.original.sale.seating,\n rowB.original.sale.seating\n );\n};\n\nexport const sortSeatingForTable = (\n rowA: Row,\n rowB: Row,\n colId: string\n) => {\n const valueA = rowA.getValue(colId);\n const valueB = rowB.getValue(colId);\n if (!valueA) return valueB ? -1 : 1;\n if (!valueB) return 1;\n\n const { seating: a } = valueA as {\n seating: Seating;\n };\n const { seating: b } = valueB as {\n seating: Seating;\n };\n\n return sortSeating(a, b);\n};\n\nexport const sortSeating = (a: Seating, b: Seating) => {\n if (a.section !== b.section) {\n return compareByNumericPrefix(a.section, b.section);\n } else {\n if (a.row !== b.row) {\n return compareByNumericPrefix(a.row, b.row);\n }\n\n return sortSeatingSeats(a, b);\n }\n};\n\nexport const sortSeatingSeatsForTable = (\n rowA: Row,\n rowB: Row,\n colId: string\n) => {\n const valueA = rowA.getValue(colId) as Seating;\n const valueB = rowB.getValue(colId) as Seating;\n if (!valueA) return valueB ? -1 : 1;\n if (!valueB) return 1;\n\n return sortSeatingSeats(valueA, valueB);\n};\n\nexport const sortSeatingSeats = (a: Seating, b: Seating) => {\n const seatFromA = a.seatFr ?? '';\n const seatFromB = b.seatFr ?? '';\n const seatFromAInt = parseInt(seatFromA);\n const seatFromBInt = parseInt(seatFromB);\n if (!isNaN(seatFromAInt) && !isNaN(seatFromBInt)) {\n return seatFromAInt < seatFromBInt ? -1 : 1;\n }\n return seatFromA < seatFromB ? -1 : 1;\n};\n\nexport const sortPurchaseOrderSeatingSection = (\n rowA: Row,\n rowB: Row,\n colId: string\n) => {\n if (!rowA?.original || !rowB?.original) {\n return 0;\n }\n\n const rowATicketGroupToGetSeating = rowA.original.isTktGrp\n ? rowA.original\n : rowA.original.ticketGroupItems?.[0];\n\n const rowBTicketGroupToGetSeating = rowB.original.isTktGrp\n ? rowB.original\n : rowB.original.ticketGroupItems?.[0];\n\n if (rowATicketGroupToGetSeating?.seating == null) {\n return -1;\n }\n\n if (rowBTicketGroupToGetSeating?.seating == null) {\n return -1;\n }\n\n return sortSeatingSection(\n rowATicketGroupToGetSeating.seating,\n rowBTicketGroupToGetSeating.seating\n );\n};\n\nexport const sortSeatingSection = (\n seatingA: Seating | undefined,\n seatingB: Seating | undefined\n) => {\n if (!seatingA) return -1;\n if (!seatingB) return 1;\n\n return compareByNumericPrefix(seatingA.section, seatingB.section);\n};\n\nexport const safeSortDateTime = (\n rowA: Row,\n rowB: Row,\n colId: string\n) => {\n // Convert both null and empty string to 0 timestamp\n const valueA = rowA.getValue(colId) || 0;\n const valueB = rowB.getValue(colId) || 0;\n\n const timestampA = new Date(valueA).getTime();\n const timestampB = new Date(valueB).getTime();\n if (!isNaN(timestampA) && !isNaN(timestampB)) {\n return timestampA - timestampB;\n }\n return isNaN(timestampA) ? 1 : -1;\n};\n\nexport enum GridActionType {\n Edit,\n Delete,\n Select,\n Share,\n Duplicate,\n History,\n}\n\nexport const getNextEditableListingRow = (\n rows: ListingWithEvent[],\n currentRow: ListingWithEvent\n): ListingWithEvent | undefined => {\n const currentIndex = rows.findIndex(\n (row) => row.listing?.id === currentRow.listing?.id\n );\n for (let index = currentIndex + 1; index < rows.length; index++) {\n const row = rows[index];\n if (!row.isCompListing && !row.isLtGrp) {\n return row;\n }\n }\n return undefined;\n};\n\nexport const sortMarketplacePaymentLineSeating = (\n rowA: Row,\n rowB: Row,\n colId: string\n) => {\n if (!rowA?.original?.seating || !rowB?.original?.seating) {\n return 0;\n }\n\n return sortSeating(rowA.original.seating, rowB.original.seating);\n};\n\n/**\n * Column filter custom function: https://tanstack.com/table/v8/docs/guide/column-filtering#custom-filter-functions\n * Assumes the column value contains a Seating object and compares by section\n * Use together with uniqueValueVariant='seatingSection' in ColumnMeta in Table.tsx\n */\nexport const filterSeatingSectionFn = (\n row: Row,\n columnId: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n filterValue: any\n): boolean => {\n if (!filterValue) {\n return true;\n }\n\n const filterSectionValues = filterValue as string[];\n if (filterSectionValues.length === 0) {\n return true;\n }\n\n // Skip if row has children\n if (row.getLeafRows().length > 0) {\n const leafRows = row.getLeafRows();\n for (const leafRow of leafRows) {\n if (filterSeatingSectionFn(leafRow, columnId, filterValue)) {\n return true;\n }\n }\n\n return false;\n }\n\n const value = row.getValue(columnId);\n\n if (!value) {\n return false;\n }\n\n const { seating } = value as {\n seating: Seating;\n };\n\n return filterSectionValues.includes(seating.section);\n};\n\n/**\n * Column filter custom function: https://tanstack.com/table/v8/docs/guide/column-filtering#custom-filter-functions\n * Assumes the column value returns a list of ListingNotes and compares by listingNoteId\n * Use together with uniqueValueVariant='seatTraits' in ColumnMeta in Table.tsx\n */\nexport const filterSeatTraitsFn = (\n row: Row,\n columnId: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n filterValue: any\n): boolean => {\n if (!filterValue) {\n return true;\n }\n\n const filterListingNoteIds = (filterValue as string[]).map((value) =>\n Number(value)\n );\n if (filterListingNoteIds.length === 0) {\n return true;\n }\n\n // Skip if row has children\n if (row.getLeafRows().length > 0) {\n const leafRows = row.getLeafRows();\n for (const leafRow of leafRows) {\n if (filterSeatTraitsFn(leafRow, columnId, filterValue)) {\n return true;\n }\n }\n\n return false;\n }\n\n const value = row.getValue(columnId) as ListingNote[] | null | undefined;\n\n return (\n value?.some((note) => filterListingNoteIds.includes(note.listingNoteId)) ??\n false\n );\n};\n\n/**\n * Column filter custom function: https://tanstack.com/table/v8/docs/guide/column-filtering#custom-filter-functions\n * If the filter value has any overlap with the seat range, return true\n * Use together with columnFilterVariant='seatRange' in ColumnMeta in Table.tsx\n */\nexport const filterSeatRangeFn = (\n row: Row,\n columnId: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n filterValue: any\n): boolean => {\n if (!filterValue) {\n return true;\n }\n\n const [filterMin, filterMax] = filterValue as [number, number];\n if (filterMin == null && filterMax == null) {\n return true;\n }\n\n const seating = row.getValue(columnId);\n\n if (!seating) {\n return false;\n }\n\n const seatFrNum = Number(seating.seatFr || 'NaN');\n const seatToNum = Number(seating.seatTo || 'NaN');\n\n let result = false;\n\n if (isNaN(seatFrNum) && isNaN(seatToNum)) {\n result = false;\n } else if (isNaN(seatToNum)) {\n if (filterMin == null) {\n result = seatFrNum <= filterMax;\n } else if (filterMax == null) {\n result = seatFrNum >= filterMin;\n } else {\n result = seatFrNum >= filterMin && seatFrNum <= filterMax;\n }\n } else {\n // seatFrNum and seatToNum are both numbers\n // return true if [seatFrNum, seatToNum] and [filterMin, filterMax] have any overlap\n if (filterMin == null) {\n result = seatFrNum <= filterMax;\n } else if (filterMax == null) {\n result = seatToNum >= filterMin;\n } else {\n result = seatFrNum <= filterMax && seatToNum >= filterMin;\n }\n }\n\n if (!result) {\n const leafRows = row.getLeafRows();\n for (const leafRow of leafRows) {\n if (filterSeatRangeFn(leafRow, columnId, filterValue)) {\n result = true;\n break;\n }\n }\n }\n\n return result;\n};\n\n/**\n * Column filter custom function: https://tanstack.com/table/v8/docs/guide/column-filtering#custom-filter-functions\n * Assumes the column value returns a string, compares case insensitive\n * Use together with uniqueValueVariant=undefined in ColumnMeta in Table.tsx\n */\nexport const filterStringMultiSelect = (\n row: Row,\n columnId: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n filterValue: any\n): boolean => {\n if (!filterValue) {\n return true;\n }\n\n const filterValues = (filterValue as string[]).map((value) =>\n value.toLowerCase()\n );\n if (filterValues.length === 0) {\n return true;\n }\n\n // Skip if row has children\n if (row.getLeafRows().length > 0) {\n const leafRows = row.getLeafRows();\n for (const leafRow of leafRows) {\n if (filterStringMultiSelect(leafRow, columnId, filterValue)) {\n return true;\n }\n }\n\n return false;\n }\n\n const value = row.getValue(columnId) as string | null | undefined;\n\n if (!value) {\n return false;\n }\n\n return filterValues.includes(value.toLowerCase());\n};\n\nexport const getReportValueTypeDisplayConfig = (\n valueType: ReportValueType | undefined\n) => {\n const isNumeric =\n valueType === ReportValueType.Integer ||\n valueType === ReportValueType.Money ||\n valueType === ReportValueType.Decimal ||\n valueType === ReportValueType.IntegerList;\n\n const isCurrency = valueType === ReportValueType.Money;\n const isPercent = valueType === ReportValueType.Money;\n const isDateTime =\n valueType === ReportValueType.DateTime ||\n valueType === ReportValueType.DateTimeList;\n\n const isBoolean =\n valueType === ReportValueType.Boolean ||\n valueType === ReportValueType.BooleanList;\n\n const isArray =\n valueType === ReportValueType.DateTimeList ||\n valueType === ReportValueType.IntegerList ||\n valueType === ReportValueType.GuidList ||\n valueType === ReportValueType.UserList ||\n valueType === ReportValueType.StringList ||\n valueType === ReportValueType.BooleanList;\n\n return {\n isNumeric,\n isCurrency,\n isPercent,\n isDateTime,\n isBoolean,\n isArray,\n };\n};\n","import { useMemo } from 'react';\nimport { Ticket } from 'src/WebApiController';\n\ninterface UseNumberOfSalesProps {\n ticketGroups?: { tickets?: Ticket[] | null }[] | null;\n}\n\nexport const useGetListingAndSaleIds = ({\n ticketGroups,\n}: UseNumberOfSalesProps) => {\n return useMemo(() => {\n const ids = ticketGroups?.flatMap((tg) => ({\n saleIds:\n tg.tickets\n ?.filter((t) => t.saleId || t.holdId)\n ?.map((t) => (t.saleId || t.holdId)!) ?? [],\n listingIds:\n tg.tickets?.filter((t) => t.listingId)?.map((t) => t.listingId!) ?? [],\n }));\n\n const result = ids?.reduce(\n (r, cur) => {\n cur.saleIds.forEach((id) => r.saleIds.add(id));\n cur.listingIds.forEach((id) => r.listingIds.add(id));\n return r;\n },\n {\n saleIds: new Set(),\n listingIds: new Set(),\n }\n );\n\n return (\n result ?? {\n saleIds: new Set(),\n listingIds: new Set(),\n }\n );\n }, [ticketGroups]);\n};\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { BlinkingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { TicketGroupIntentionDialog } from 'src/dialogs/TicketGroupIntentionDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useGetListingAndSaleIds } from 'src/modals/common/Purchase/hooks/useGetListingAndSaleIds';\nimport { IconsFill, WarningSolidIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PurchaseOrderDetailsInput } from 'src/utils/purchaseUtils';\nimport { TicketGroupInput, TicketGroupIntention } from 'src/WebApiController';\n\nimport { ChangesIndicator } from '../PurchaseTicketTable.styled';\n\nexport const TicketGroupStatusIndicator = ({\n ticketGroup,\n}: {\n ticketGroup: TicketGroupInput;\n}) => {\n const { setValue, getFieldState, watch, formState } =\n useFormContext();\n const ticketGroups = watch('ticketGroups');\n const intentions = watch('ticketGroupIntentions');\n\n const unsavedActionText = useContent(ContentId.UnsavedChanges);\n\n const originalTicketGroup = useMemo(\n () =>\n formState.defaultValues?.ticketGroups?.find(\n (t) => t?.ticketGroupId === ticketGroup.ticketGroupId\n ),\n [formState.defaultValues?.ticketGroups, ticketGroup.ticketGroupId]\n );\n\n const index = useMemo(\n () =>\n ticketGroups.findIndex(\n (tg) => tg.ticketGroupId === ticketGroup.ticketGroupId\n ),\n [ticketGroup.ticketGroupId, ticketGroups]\n );\n const error = getFieldState(`ticketGroups.${index}`, formState).error\n ?.message;\n\n const intention = useMemo(\n () => intentions[ticketGroup.ticketGroupId],\n [intentions, ticketGroup.ticketGroupId]\n );\n\n const ticketGroupIntentionDialog = useBasicDialog();\n const hasChanges = !isEqual(ticketGroup, originalTicketGroup);\n\n const onTicketGroupIntentionSave = useCallback(\n (intention: TicketGroupIntention) => {\n intentions[intention.ticketGroupId] = intention;\n setValue('ticketGroupIntentions', { ...intentions });\n ticketGroupIntentionDialog.closeDialog();\n },\n [intentions, setValue, ticketGroupIntentionDialog]\n );\n\n const { saleIds } = useGetListingAndSaleIds({\n ticketGroups: [{ tickets: ticketGroup.tickets?.value }],\n });\n\n return (\n <>\n {error && (\n
    \n \n
    \n )}\n {hasChanges && (\n \n ticketGroupIntentionDialog.launchDialog()}\n >\n *\n \n \n )}\n \n \n );\n};\n","import { ColumnDef } from '@tanstack/react-table';\nimport { useCallback, useContext, useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport { IconButton } from 'src/components/Buttons';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { EventDateDisplay } from 'src/components/Events/EventInfo';\nimport { useBulkChangeEventAction } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkChangeEventAction';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport {\n Content,\n useContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { HorizontalTextList } from 'src/core/POS/HorizontalTextList';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport useCopyToClipboard from 'src/hooks/useCopyToClipboard';\nimport { useMapDeliveryTypesToString } from 'src/hooks/useMapDeliveryTypesToString';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { LaunchDownloadUserDocuments } from 'src/modals/PurchaseWizard/LaunchDownloadUserDocuments';\nimport { PredeliveryActionsDropdown } from 'src/modals/PurchaseWizard/PurchaseTicketsFlow/components/PredeliveryActionsDropdown';\nimport { UploadPredeliveryAction } from 'src/modals/PurchaseWizard/PurchaseTicketsFlow/purchaseTicketsFlow.utils';\nimport { AmendActionData } from 'src/modals/PurchaseWizard/PurchaseWizard.types';\nimport { CopyIcon } from 'src/svgs';\nimport { OpenLinkIcon } from 'src/svgs/OpenLinkIcon';\nimport {\n DeleteIcon,\n EditIcon,\n IconsFill,\n MoreIcon,\n ProcessingIcon,\n UploadIcon,\n} from 'src/svgs/Viagogo';\nimport {\n SeatInfoContainer,\n TableShimmeringDiv,\n} from 'src/tables/Table/Table.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EmptyPurchaseQuery } from 'src/utils/eventQueryUtils';\nimport {\n compareEventsByName,\n getEventPerformerVenue,\n} from 'src/utils/eventWithDataUtils';\nimport { getListingNoteIcon } from 'src/utils/listingNotesUtils';\nimport { formatCurrency } from 'src/utils/numberFormatter';\nimport {\n combineWithTicketGroupId,\n combineWithTicketGroupIdSimple,\n getPurchaseOrderDetailsModalConfigWithDeepLink,\n getPurchaseOrderRelativeUrl,\n} from 'src/utils/purchaseUtils';\nimport { sortMoney, sortSeatingForTable } from 'src/utils/tableUtils';\nimport { getDeliveryTypeIcon } from 'src/utils/ticketTypeUtils';\nimport { toSeating } from 'src/utils/ticketUtils';\nimport {\n DeliveryType,\n Event,\n Feature,\n ListingNote,\n Performer,\n PurchaseOrderDetails,\n Seating,\n TicketGroupEditReason,\n TicketGroupInput,\n Venue,\n} from 'src/WebApiController';\n\nimport { TicketGroupStatusIndicator } from './TicketGroupStatusIndicator';\nimport * as styles from './TicketGroupTableColumnsConfig.css';\n\nexport type TicketGroupAdditionalData = {\n event?: Event | null;\n performer?: Performer | null;\n venue?: Venue | null;\n purchaseVendorOrderId?: string | null;\n amendActionData?: AmendActionData;\n};\n\nexport type TicketGroupActionParams = {\n ticketGroupId: number;\n action: TicketGroupEditReason;\n additionalData?: TicketGroupAdditionalData;\n};\n\nexport type TicketGroupWithHandlers = {\n ticketGroup: TicketGroupInput;\n disabled?: boolean;\n additionalData?: TicketGroupAdditionalData;\n onTicketGroupAction?: (\n params: TicketGroupActionParams,\n showConfirmDialog?: boolean\n ) => void;\n /**\n * Show the ticket groups from expanding a single purchase\n */\n showFromPurchaseAccordions?: boolean;\n};\n\nexport const TICKET_GROUP_TABLE_COLUMNS_CONFIG: ColumnDef[] =\n [\n {\n id: 'event',\n header: () => (\n \n \n \n ),\n minSize: 230,\n maxSize: 600,\n accessorFn: (data) => data?.ticketGroup,\n cell: function Cell({ row: { original } }) {\n const ticketGroup = original?.ticketGroup;\n const { data } = useCatalogDataContext();\n\n if (!ticketGroup) {\n return ;\n }\n\n const { event } = getEventPerformerVenue(\n ticketGroup.viagogoVirtualId,\n data\n );\n\n return (\n \n {event?.event?.name}\n \n );\n },\n sortingFn: compareEventsByName,\n },\n {\n id: 'venue',\n header: () => (\n \n \n \n ),\n minSize: 230,\n maxSize: 600,\n accessorFn: (data) => data?.ticketGroup,\n cell: function Cell({ row: { original } }) {\n const ticketGroup = original?.ticketGroup;\n const { data } = useCatalogDataContext();\n\n if (!ticketGroup) {\n return ;\n }\n\n const { venue } = getEventPerformerVenue(\n ticketGroup.viagogoVirtualId,\n data\n );\n\n return (\n \n {venue?.name}\n \n );\n },\n },\n {\n id: 'eventDate',\n header: () => (\n \n \n \n ),\n minSize: 230,\n maxSize: 600,\n accessorFn: (data) => data?.ticketGroup,\n cell: function Cell({ row: { original } }) {\n const ticketGroup = original?.ticketGroup;\n const { data } = useCatalogDataContext();\n\n if (!ticketGroup) {\n return ;\n }\n\n const { event } = getEventPerformerVenue(\n ticketGroup.viagogoVirtualId,\n data\n );\n\n return (\n \n \n \n );\n },\n },\n {\n id: 'seating',\n header: () => (\n \n \n \n ),\n minSize: 230,\n maxSize: 400,\n accessorFn: (data) =>\n data\n ? {\n seating: toSeating(data.ticketGroup),\n listingNotes: data.ticketGroup.listingNotes?.value,\n }\n : null,\n cell: function Cell({ getValue, row: { original } }) {\n const contentContext = useContentContext();\n const hasListingNotesAdditionalInfoFeature = useUserHasFeature(\n Feature.ListingNotesAdditionalInfo\n );\n\n const value = getValue();\n if (!original) {\n return ;\n }\n\n const { seating, listingNotes } = value as {\n seating: Seating;\n listingNotes: ListingNote[] | null;\n };\n return (\n \n \n {listingNotes?.length ? (\n n.listingNoteText)}\n maxTextsToShowOnHover={listingNotes.length}\n />\n ) : null}\n \n );\n },\n sortingFn: sortSeatingForTable,\n },\n {\n id: 'quantity',\n header: () => (\n \n \n \n ),\n minSize: 80,\n maxSize: 80,\n accessorFn: (data) =>\n data ? data.ticketGroup.numberOfTickets?.value ?? 0 : null,\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue() as number;\n const quantityText = useContent(ContentId.QuantityAbbreviated);\n if (!original) {\n return ;\n }\n\n if (original.showFromPurchaseAccordions) {\n return (\n {`${quantityText}: ${value}`}\n );\n }\n\n return {value};\n },\n },\n {\n id: 'ticketType',\n header: () => (\n \n \n \n ),\n minSize: 65,\n maxSize: 65,\n accessorFn: (data) => data?.ticketGroup?.deliveryType?.value,\n cell: function Cell({ getValue, row: { original } }) {\n const delivType = getValue();\n const strDelivType = useMapDeliveryTypesToString({\n deliveryTypesObj: {\n delivType,\n },\n });\n\n if (!original) {\n return ;\n }\n const icon = getDeliveryTypeIcon(\n delivType,\n null,\n IconsFill.currentColor\n );\n return (\n \n {icon}\n \n );\n },\n },\n {\n id: 'cost',\n header: () => (\n \n \n \n ),\n minSize: 90,\n maxSize: 110,\n accessorFn: (data) =>\n formatCurrency(\n data?.ticketGroup?.unitCost?.value,\n data?.ticketGroup?.currencyCode?.value\n ),\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue() as string;\n const costText = useContent(ContentId.Cost);\n if (!original) {\n return ;\n }\n\n if (original.showFromPurchaseAccordions) {\n return (\n {`${costText}: ${value}`}\n );\n }\n\n return {value};\n },\n sortingFn: sortMoney,\n },\n {\n id: 'expectedValue',\n header: () => (\n \n \n \n ),\n minSize: 90,\n maxSize: 110,\n accessorFn: (data) =>\n formatCurrency(\n data?.ticketGroup?.expectedValue?.value,\n data?.ticketGroup?.currencyCode?.value\n ),\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as string;\n if (!original) {\n return ;\n }\n return {value};\n },\n sortingFn: sortMoney,\n },\n {\n id: 'taxPaid',\n header: () => (\n \n \n \n ),\n minSize: 90,\n maxSize: 110,\n accessorFn: (data) => Boolean(data?.ticketGroup?.taxPaid?.value),\n cell: ({ getValue, row: { original } }) => {\n const taxPaid = getValue() as boolean;\n if (!original) {\n return ;\n }\n return (\n \n {taxPaid ? (\n \n ) : (\n \n )}\n \n );\n },\n },\n {\n id: 'actions',\n enableSorting: false,\n header: () => (\n \n \n \n ),\n minSize: 100,\n maxSize: 100,\n cell: function Cell({ row: { original } }) {\n const { setActivePosEntity } =\n useActivePosEntityContext();\n const { setModal } = useContext(ModalContext);\n const hasMultiTicketGroupTableFeature = useUserHasFeature(\n Feature.MultiTicketGroupTable\n );\n const showFromAccordions = original?.showFromPurchaseAccordions;\n const [isLoading, setIsLoading] = useState(false);\n\n const bulkChangeEvent = useBulkChangeEventAction(\n {\n ...EmptyPurchaseQuery,\n ticketGroupIds: [original?.ticketGroup.ticketGroupId ?? 0],\n },\n setIsLoading,\n isLoading,\n original?.ticketGroup.viagogoVirtualId,\n // Passing onSuccess to refresh the purchase if change-Event is successful\n () =>\n setActivePosEntity(\n original!.ticketGroup.purchaseOrderId!,\n undefined,\n true\n ),\n true\n );\n\n const { copyToClipboard } = useCopyToClipboard();\n const onAmendTickets = useCallback(\n (data?: { additionalData?: TicketGroupAdditionalData }) => {\n if (showFromAccordions) {\n setActivePosEntity(\n original!.ticketGroup.purchaseOrderId!,\n undefined,\n true\n );\n setModal(\n getPurchaseOrderDetailsModalConfigWithDeepLink(\n combineWithTicketGroupId(\n (original!.additionalData?.purchaseVendorOrderId ??\n original!.ticketGroup.purchaseOrderId)!,\n {\n ticketGroupId: original!.ticketGroup.ticketGroupId,\n editIntention: TicketGroupEditReason.AmendTickets,\n }\n )\n )\n );\n } else {\n original?.onTicketGroupAction?.({\n ticketGroupId: original!.ticketGroup.ticketGroupId,\n action: TicketGroupEditReason.AmendTickets,\n additionalData: {\n ...data?.additionalData,\n },\n });\n }\n },\n [original, setActivePosEntity, setModal, showFromAccordions]\n );\n\n const onCancelTickets = useCallback(() => {\n original?.onTicketGroupAction?.(\n {\n ticketGroupId: original!.ticketGroup.ticketGroupId,\n action: TicketGroupEditReason.CancelTickets,\n },\n true // showConfirmDialog\n );\n }, [original]);\n\n const onExchangeTickets = useCallback(() => {\n original?.onTicketGroupAction?.({\n ticketGroupId: original!.ticketGroup.ticketGroupId,\n action: TicketGroupEditReason.ExchangeTickets,\n additionalData: original.additionalData,\n });\n }, [original]);\n\n const onViewTicketGroup = useCallback(() => {\n setActivePosEntity(\n original!.ticketGroup.purchaseOrderId!,\n undefined,\n true\n );\n setModal(\n getPurchaseOrderDetailsModalConfigWithDeepLink(\n combineWithTicketGroupIdSimple(\n (original!.additionalData?.purchaseVendorOrderId ??\n original!.ticketGroup.purchaseOrderId)!,\n original!.ticketGroup.ticketGroupId\n )\n )\n );\n }, [original, setActivePosEntity, setModal]);\n\n if (!original) {\n return ;\n }\n\n if (!original.additionalData && !original.onTicketGroupAction) {\n return null;\n }\n\n return (\n \n \n ) : (\n \n )\n }\n onClick={() =>\n onAmendTickets(\n hasMultiTicketGroupTableFeature ? original : undefined\n )\n }\n titleContentId={\n !original.disabled\n ? ContentId.AmendTickets\n : ContentId.ViewDetails\n }\n />\n {original.ticketGroup.canGetDocArts ? (\n \n ) : (\n \n }\n />\n }\n ticketGroup={original.ticketGroup}\n onPredeliveryAction={(\n uploadPredeliveryAction: UploadPredeliveryAction\n ) => {\n onAmendTickets({\n additionalData: {\n amendActionData: {\n uploadPredeliveryAction: uploadPredeliveryAction,\n },\n },\n });\n }}\n />\n )}\n\n {!showFromAccordions && (\n <>\n \n }\n />\n }\n align=\"end\"\n >\n {!original.disabled && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n\n {bulkChangeEvent.dropDown}\n \n )}\n {(original.additionalData?.purchaseVendorOrderId ??\n original.ticketGroup.purchaseOrderId) && (\n {\n copyToClipboard(\n combineWithTicketGroupIdSimple(\n (original.additionalData?.purchaseVendorOrderId ??\n original.ticketGroup.purchaseOrderId)!,\n original.ticketGroup.ticketGroupId\n )\n );\n }}\n >\n \n \n \n \n \n )}\n \n {bulkChangeEvent.dialog}\n \n )}\n\n {showFromAccordions && (\n {\n if (\n e.button === 0 &&\n e.getModifierState('Control') === false\n ) {\n // Perform like a button click when it's a left-click (and no Ctrl)\n // Else the click will be whatever does\n e.preventDefault();\n e.stopPropagation();\n\n onViewTicketGroup();\n }\n }}\n >\n \n }\n titleContentId={ContentId.ViewDetails}\n />\n \n )}\n \n );\n },\n },\n {\n id: 'errors',\n enableSorting: false,\n header: () => '',\n minSize: 24,\n maxSize: 24,\n cell: ({ row: { original } }) => {\n return original ? (\n \n ) : null;\n },\n },\n ];\n","import {\n functionalUpdate,\n RowSelectionState,\n SortingState,\n TableOptions,\n Updater,\n} from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport {\n ComponentType,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { EventAccordionItemBodyComponentType } from 'src/components/Accordions';\nimport {\n Content,\n FormatContent,\n useContent,\n} from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { packNumericIds } from 'src/contexts/MultiSelectionContext/MultiSelectionContext.utils';\nimport { useClearShiftSelectionOnSortingChange } from 'src/contexts/MultiSelectionContext/useClearShiftSelectionOnSortingChange';\nimport { NoData, Table, TableProps } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { generateShimmeringRows } from 'src/utils/dataTableUtils';\nimport { PurchaseOrderDetailsInput } from 'src/utils/purchaseUtils';\nimport { SomethingWentWrong } from 'src/views';\nimport {\n Event,\n Performer,\n TicketGroupInput,\n Venue,\n} from 'src/WebApiController';\n\nimport { usePaginationSettings } from '../Table/hooks/usePaginationSettings';\nimport { RowComponentWithRowData } from '../Table/Table.types';\nimport {\n TICKET_GROUP_TABLE_COLUMNS_CONFIG,\n TicketGroupWithHandlers,\n} from './configs/TicketGroupTableColumnsConfig';\nimport * as styles from './TicketGroupTable.css';\n\nexport type TicketGroupTableDataProps = {\n highlightTicketGroupIds?: number[];\n} & Pick<\n EventAccordionItemBodyComponentType,\n | 'onMount'\n | 'onUnmount'\n | 'initState'\n | 'disablePagination'\n | 'entities'\n | 'entityCount'\n | 'getDataFail'\n>;\n\nexport type TicketGroupTableProps = TicketGroupTableDataProps & {\n groupId: string;\n event?: Event | null;\n performer?: Performer | null;\n venue?: Venue | null;\n disabled?: boolean;\n /**\n * Show the ticket groups from expanding a single purchase\n */\n showFromPurchaseAccordions?: boolean;\n} & Pick<\n TableProps,\n 'tableStyle' | 'tableHeadStyle' | 'tableCellStyle' | 'withOuterPadding'\n > &\n Pick;\n\nconst PAGE_SIZE = 10;\n\nconst getRowId = (\n originalRow: TicketGroupWithHandlers | null,\n index: number\n) =>\n originalRow?.ticketGroup.purchaseOrderId\n ? packNumericIds([\n originalRow.ticketGroup.purchaseOrderId,\n originalRow.ticketGroup.ticketGroupId,\n ])\n : index.toString();\n\nexport function TicketGroupTable({\n groupId,\n entities: ticketGroups,\n highlightTicketGroupIds,\n onTicketGroupAction,\n event,\n performer,\n venue,\n onMount,\n onUnmount,\n disabled,\n initState,\n showFromPurchaseAccordions = false,\n entityCount: ticketGrpsCnt,\n tableStyle,\n tableHeadStyle,\n tableCellStyle,\n getDataFail,\n disablePagination,\n withOuterPadding,\n}: TicketGroupTableProps) {\n const ticketsText = useContent(ContentId.Tickets);\n\n const { watch } = useFormContext();\n const vendorOrderId = watch('vendorOrderId');\n\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const [sorting, setSorting] = useState(\n initState?.sorting || []\n );\n\n const { setGroupItems, getGroupToggleState, getSelection, selectionMode } =\n useMultiSelectionContext();\n\n useClearShiftSelectionOnSortingChange({ sortingState: sorting });\n\n const groupSelection = getSelection(groupId);\n\n const data = useMemo(() => {\n if (!ticketGroups || (!ticketGroups.length && showFromPurchaseAccordions)) {\n return generateShimmeringRows(ticketGrpsCnt || 1) as null[];\n }\n\n return ticketGroups?.map(\n (tg) =>\n ({\n ticketGroup: tg,\n disabled,\n onTicketGroupAction,\n additionalData: {\n purchaseVendorOrderId: vendorOrderId?.value,\n event,\n performer,\n venue,\n },\n showFromPurchaseAccordions,\n }) as TicketGroupWithHandlers\n );\n }, [\n ticketGroups,\n showFromPurchaseAccordions,\n ticketGrpsCnt,\n disabled,\n onTicketGroupAction,\n vendorOrderId?.value,\n event,\n performer,\n venue,\n ]);\n\n const { pagination, setPagination } = usePaginationSettings(\n data.length,\n -1,\n PAGE_SIZE,\n disablePagination,\n initState\n );\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n const rowSelection = useMemo(() => {\n // Type casting needed because of a bug in older TS versions: https://github.com/microsoft/TypeScript/issues/44373\n return (data as (TicketGroupWithHandlers | null)[]).reduce<\n Record\n >(\n (result, rowItem) => {\n if (rowItem?.ticketGroup?.purchaseOrderId) {\n const rowId = getRowId(rowItem!, -1);\n result[rowId] =\n getGroupToggleState(groupId).isGroupSelected &&\n !groupSelection.items.itemIds.length\n ? true\n : (groupSelection?.items.itemIds ?? [])?.includes(rowId) ?? false;\n }\n return result;\n },\n {} as Record\n );\n }, [data, getGroupToggleState, groupId, groupSelection.items.itemIds]);\n\n const onRowSelectionChange = useCallback(\n (updater: Updater) => {\n const newSelections =\n typeof updater === 'function' ? updater(rowSelection) : updater;\n setGroupItems(groupId, newSelections);\n },\n [groupId, rowSelection, setGroupItems]\n );\n\n const options: Partial> =\n useMemo(\n () => ({\n data,\n columns: TICKET_GROUP_TABLE_COLUMNS_CONFIG,\n state: {\n pagination,\n rowSelection,\n sorting,\n columnVisibility: {\n event: showFromPurchaseAccordions,\n venue: showFromPurchaseAccordions,\n eventDate: showFromPurchaseAccordions,\n expectedValue: !showFromPurchaseAccordions,\n taxPaid: !showFromPurchaseAccordions,\n errors: !showFromPurchaseAccordions,\n },\n },\n enableSorting: !showFromPurchaseAccordions,\n getRowId: getRowId,\n onPaginationChange: setPagination,\n onRowSelectionChange,\n onSortingChange: (sortingUpdaterFn) => {\n const newSortVal = functionalUpdate(sortingUpdaterFn, sorting);\n setSorting(newSortVal);\n },\n }),\n [\n data,\n onRowSelectionChange,\n pagination,\n rowSelection,\n setPagination,\n showFromPurchaseAccordions,\n sorting,\n ]\n );\n\n const RowComponent: ComponentType<\n RowComponentWithRowData\n > = (props) => {\n const { row, className, children, ...rest } = props;\n const highlight = highlightTicketGroupIds?.includes(\n row?.original?.ticketGroup.ticketGroupId ?? -1\n );\n return (\n \n {children}\n \n );\n };\n\n return getDataFail ? (\n }\n />\n ) : data?.length ? (\n \n ) : (\n // We should never see this - because the events are filtered to only those that has listings\n // So this is to prevent a crash - but this should be looked at\n \n \n \n );\n}\n","import { useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { NO_GROUP_ID } from 'src/contexts/MultiSelectionContext';\nimport { Stack } from 'src/core/ui';\nimport { FieldError } from 'src/modals/common';\nimport { PurchaseEventItemHeader } from 'src/modals/common/Purchase/PurchaseEventItemHeader';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { formatCurrency } from 'src/utils/numberFormatter';\nimport { PurchaseOrderDetailsInput } from 'src/utils/purchaseUtils';\nimport { getTicketGroupInputTotalCost } from 'src/utils/ticketUtils';\nimport {\n Event,\n Performer,\n TicketGroupEditReason,\n TicketGroupInput,\n Venue,\n} from 'src/WebApiController';\n\nimport { TicketGroupWithHandlers } from './configs/TicketGroupTableColumnsConfig';\nimport * as styles from './PurchaseTicketTable.css';\nimport {\n PurchaseEventItemHeaderWrapper,\n PurchaseTicketTableContainer,\n} from './PurchaseTicketTable.styled';\nimport { TicketGroupTable } from './TicketGroupTable';\n\nexport function PurchaseTicketTable({\n currencyCode,\n disabled,\n ticketGroups,\n highlightTicketGroupIds,\n onTicketGroupAction,\n}: {\n disabled?: boolean;\n currencyCode: string;\n ticketGroups?: TicketGroupInput[];\n highlightTicketGroupIds?: number[];\n} & Pick) {\n const { getFieldState } = useFormContext();\n const uniqueEvents = useMemo(\n () =>\n ticketGroups?.reduce(\n (events, tg) => {\n const eventId =\n tg.event?.viagVirtualId ??\n tg.viagogoEventId?.toString() ??\n tg.eventMappingId;\n if (eventId && !events[eventId]) {\n events[eventId] = {\n event: tg.event!,\n performer: tg.performer,\n venue: tg.venue,\n };\n }\n\n return events;\n },\n {} as Record<\n string,\n { event: Event; performer?: Performer | null; venue?: Venue | null }\n >\n ),\n [ticketGroups]\n );\n\n const events = Object.values(uniqueEvents || []);\n\n return (\n <>\n {events.length ? (\n events\n .filter((ev) => ev.event)\n .map((ev) => {\n const eventTicketGroups = ticketGroups\n ?.map((tg, i) => ({ tg, i }))\n .filter(\n (tg) => tg.tg.event?.viagVirtualId === ev.event.viagVirtualId\n );\n const totalCost =\n eventTicketGroups?.reduce((sum, tg) => {\n sum += getTicketGroupInputTotalCost(tg.tg);\n return sum;\n }, 0) || 0;\n\n return (\n \n \n r + (tg.tg.numberOfTickets?.value ?? 0),\n 0\n )}\n cost={formatCurrency(totalCost, currencyCode)}\n onAddTicketsForEvent={\n onTicketGroupAction\n ? (e, p, v) => {\n onTicketGroupAction({\n ticketGroupId: -1,\n action: TicketGroupEditReason.AddTickets,\n additionalData: {\n event: e,\n performer: p,\n venue: v,\n },\n });\n }\n : undefined\n }\n />\n \n
    \n tg.tg) ?? []}\n entityCount={eventTicketGroups?.length ?? 0}\n highlightTicketGroupIds={highlightTicketGroupIds}\n onTicketGroupAction={onTicketGroupAction}\n event={ev.event}\n performer={ev.performer}\n venue={ev.venue}\n getDataFail={false}\n />\n \n {eventTicketGroups?.flatMap((tg) => {\n const errors = [];\n const tgFieldState = getFieldState(\n `ticketGroups.${tg.i}`\n );\n if (tgFieldState.error?.message) {\n errors.push(\n \n {tgFieldState.error.message}\n \n );\n }\n tg.tg.tickets?.value?.forEach((t, j) => {\n const seatField = getFieldState(\n `ticketGroups.${tg.i}.tickets.value.${j}.seat`\n );\n if (seatField.error?.message) {\n errors.push(\n \n {seatField.error.message}\n \n );\n }\n });\n\n return errors;\n })}\n \n
    \n
    \n );\n })\n ) : (\n \n )}\n \n );\n}\n","export const MAX_COMMISSIONERS = 10;\n","import differenceWith from 'lodash-es/differenceWith';\nimport {\n MutableRefObject,\n ReactNode,\n useCallback,\n useImperativeHandle,\n useMemo,\n} from 'react';\nimport { Controller, useFieldArray, useFormContext } from 'react-hook-form';\nimport { SellerAccountEmployeeSelector } from 'src/components/Selectors/SellerAccountEmployeeSelector';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { MAX_COMMISSIONERS } from 'src/dialogs/SaleCommissionOverrideDialog/SaleCommissionOverrideDialog.constants';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { FieldError, FieldWrapper } from 'src/modals/common';\nimport { PurchaseCommissionInput } from 'src/modals/common/Purchase/CommissionSection';\nimport { DeleteIcon, IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { Commission } from 'src/WebApiController';\n\nimport * as styles from './SetCommissions.css';\n\nenum FormErrorKey {\n TotalCommissionsValueExceeded = 'totalCommissionsValueExceeded',\n UserAlreadySelected = 'userAlreadySelected',\n MinValue = 'minValue',\n}\n\nconst validateMaxCommissions = (fields: Commission[]): string | undefined => {\n const total = fields.reduce((acc, curr) => {\n return acc + curr.commissionPercentage;\n }, 0);\n return total <= 1 ? undefined : FormErrorKey.TotalCommissionsValueExceeded;\n};\n\ninterface SaleCommissionOverrideContentProps {\n onSave?: (commissions: Commission[]) => void;\n actionsRef?: MutableRefObject;\n footerActions?: ReactNode;\n disableForm?: boolean;\n}\n\nexport interface SetCommissionsRefActions {\n onSave: () => void;\n addCommissionAction: () => void;\n}\n\nexport type SetCommissionForm = Pick;\n\nexport const SetCommissionsForm = ({\n onSave,\n actionsRef,\n footerActions,\n disableForm,\n}: SaleCommissionOverrideContentProps) => {\n const isMobile = useMatchMedia('mobile');\n const methods = useFormContext();\n\n const { control, formState, trigger, watch, setValue } = methods;\n const formValues = watch();\n const formErrors = formState.errors;\n const formRootErrors = formErrors?.['commissions']?.['value']?.['root'];\n const isFormValid = formState.isValid && !formRootErrors;\n const requiredText = useContent(ContentId.Required);\n const minCommissionValueText = useContent(ContentId.MinCommissionValue);\n\n const { append, fields, remove } = useFieldArray({\n control: control,\n name: 'commissions.value',\n rules: {\n validate: {\n [FormErrorKey.TotalCommissionsValueExceeded]: validateMaxCommissions,\n },\n },\n });\n\n const maxCommissionersReached = fields.length >= MAX_COMMISSIONERS;\n\n const { allActiveUserInfos } = useSellerAccountContext();\n const activeUserIds = useMemo(\n () =>\n allActiveUserInfos\n ? Object.values(allActiveUserInfos).map((u) => u.userId)\n : [],\n [allActiveUserInfos]\n );\n\n const add = useCallback(() => {\n if (maxCommissionersReached) {\n return;\n }\n\n const firstAvailableUserId = differenceWith(\n activeUserIds,\n formValues.commissions?.value ?? [],\n (activeUserId, commission) => activeUserId === commission.buyerUserId\n )[0];\n\n if (!firstAvailableUserId) {\n return;\n }\n\n append({ buyerUserId: firstAvailableUserId, commissionPercentage: 0 });\n }, [\n activeUserIds,\n append,\n formValues.commissions?.value,\n maxCommissionersReached,\n ]);\n\n const onSubmit = useCallback(\n (value: SetCommissionForm) => {\n if (value.commissions?.value?.length === 0 || !isFormValid) {\n return;\n }\n onSave?.(value.commissions?.value!);\n },\n [isFormValid, onSave]\n );\n\n useImperativeHandle(\n actionsRef,\n () => {\n return {\n onSave: methods.handleSubmit(onSubmit),\n addCommissionAction: add,\n };\n },\n [add, methods, onSubmit]\n );\n\n return (\n \n {fields.map((field, index) => (\n \n \n {\n const otherFieldsWithSameUserId = (\n formValues.commissions?.value ?? []\n ).filter((f) => {\n return f.buyerUserId === selectedUserId;\n });\n return otherFieldsWithSameUserId.length > 1\n ? FormErrorKey.UserAlreadySelected\n : undefined;\n },\n },\n }}\n name={`commissions.value.${index}.buyerUserId`}\n render={({ field, fieldState }) => {\n return (\n
    \n {\n setValue(field.name, userId);\n setValue('commissions.hasChanged', true);\n }}\n disabled={disableForm}\n />\n {fieldState.error && (\n <>\n {fieldState.error.type === 'required' && (\n \n \n \n )}\n {fieldState.error.type ===\n FormErrorKey.UserAlreadySelected && (\n \n \n \n )}\n \n )}\n
    \n );\n }}\n />\n \n \n \n v && v > 0 ? undefined : minCommissionValueText,\n },\n }}\n name={`commissions.value.${index}.commissionPercentage`}\n render={({ field, fieldState }) => {\n const { onChange, value, ...restField } = field;\n return (\n \n {\n const changedValue = e.target.value || '0';\n const commissionValue = parseFloat(changedValue);\n\n if (isNaN(commissionValue)) {\n return;\n }\n\n const cleanValueToSet = parseFloat(\n (commissionValue / 100).toFixed(4) // 4 decimals, 0.0001\n );\n\n onChange(cleanValueToSet);\n setValue('commissions.hasChanged', true, {\n shouldDirty: true,\n });\n }}\n rootProps={{\n state:\n fieldState.isTouched && fieldState.isDirty\n ? getTextFieldState(fieldState.error)\n : undefined,\n }}\n min={0}\n max={100}\n {...restField}\n disabled={disableForm}\n ref={(e) => {\n if (e && !fieldState.isDirty) {\n /**\n * The value entered by the user is being transformed to a value\n * between 0 & 1 by diving by 100. If the user enters a comma or dot,\n * depending on the locale, it can produce null values have incorrect validations.\n * Best approach is to use an uncontrolled input and let the browser\n * handle the decimal parts, so we just set the initial value to the input\n * if the user hasn't touched it.\n * */\n e.value = roundToPrecision(value * 100, 2).toString();\n }\n restField.ref(e);\n }}\n />\n \n );\n }}\n />\n \n \n
    \n {\n remove(index);\n setTimeout(trigger, 1);\n setValue('commissions.hasChanged', true);\n }}\n />\n
    \n
    \n
    \n ))}\n {formRootErrors &&\n formRootErrors.type === FormErrorKey.TotalCommissionsValueExceeded && (\n \n \n \n )}\n\n {footerActions ? (\n footerActions\n ) : (\n \n \n \n \n )}\n \n );\n};\n","import { IconsProps } from 'src/svgs/Viagogo';\nimport { SvgWrapper } from 'src/svgs/Viagogo/svg-wrapper/icon-wrapper';\n\nexport const LockedIcon = (props: IconsProps) => {\n return (\n \n \n \n \n \n \n );\n};\n","import { IconsProps } from 'src/svgs/Viagogo';\nimport { SvgWrapper } from 'src/svgs/Viagogo/svg-wrapper/icon-wrapper';\n\nexport const UnlockedIcon = (props: IconsProps) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { LockedIcon } from 'src/svgs/LockedIcon';\nimport { UnlockedIcon } from 'src/svgs/UnlockedIcon';\nimport { IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\ninterface LockCommissionsProps {\n isCommissionsLocked: boolean;\n onCommissionsLockChange: (isCommissionsLocked: boolean) => void;\n disabledLockButton?: boolean;\n disabledUnlockButton?: boolean;\n}\n\nexport const LockCommissions = ({\n isCommissionsLocked,\n onCommissionsLockChange,\n disabledLockButton,\n disabledUnlockButton,\n}: LockCommissionsProps) => {\n const onCommissionsLockClick = useCallback(() => {\n onCommissionsLockChange(!isCommissionsLocked);\n }, [isCommissionsLocked, onCommissionsLockChange]);\n\n return (\n
    \n {isCommissionsLocked ? (\n \n \n \n \n ) : (\n \n \n \n \n )}\n
    \n );\n};\n","import { useCallback, useMemo, useRef } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport {\n SetCommissionsForm,\n SetCommissionsRefActions,\n} from 'src/components/common/SetCommissions/SetCommissionsForm';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { MAX_COMMISSIONERS } from 'src/dialogs/SaleCommissionOverrideDialog/SaleCommissionOverrideDialog.constants';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { BodySectionTitle, TicketsDetailRow } from 'src/modals/common';\nimport { LockCommissions } from 'src/modals/common/Purchase/CommissionSection/LockCommissions';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseOrderDetailsInput } from 'src/utils/purchaseUtils';\nimport { Feature } from 'src/WebApiController';\n\nimport * as styles from '../PurchaseModal.css';\n\nexport type PurchaseCommissionInput = Pick<\n PurchaseOrderDetailsInput,\n 'commissions' | 'isCommissionsLocked'\n>;\n\nexport function CommissionSection({\n disabled: disableProp,\n readonly,\n showLockCommissionsButton = true,\n canLockUnlockCommission = true,\n}: {\n disabled?: boolean;\n readonly?: boolean;\n showLockCommissionsButton?: boolean;\n canLockUnlockCommission?: boolean;\n}) {\n const ref = useRef(null);\n const { setValue, watch, formState } =\n useFormContext();\n\n const { allActiveUserInfos } = useSellerAccountContext();\n const activeUserIds = useMemo(\n () =>\n allActiveUserInfos\n ? Object.values(allActiveUserInfos).map((u) => u.userId)\n : [],\n [allActiveUserInfos]\n );\n\n const commissions = watch('commissions');\n const isCommissionsLocked = watch('isCommissionsLocked')?.value ?? false;\n const selectedCommissionsCount = (commissions?.value ?? []).length;\n const maxCommissionersReached = selectedCommissionsCount >= MAX_COMMISSIONERS;\n\n const userHasLockCommissionsOnPoFeature = useUserHasFeature(\n Feature.LockCommissionsOnPo\n );\n const disabled =\n disableProp || (userHasLockCommissionsOnPoFeature && isCommissionsLocked);\n\n const showAddCommission = useMemo(() => {\n if (!activeUserIds) return false;\n return (commissions?.value?.length ?? 0) < activeUserIds.length;\n }, [commissions, activeUserIds]);\n\n const onCommissionsLockChange = useCallback(\n (isCommissionsLocked: boolean) => {\n setValue('isCommissionsLocked', posChangedField(isCommissionsLocked));\n },\n [setValue]\n );\n\n return (\n
    \n \n \n \n \n \n \n {showAddCommission && !readonly && (\n ref.current?.addCommissionAction()}\n disabled={\n maxCommissionersReached ||\n (userHasLockCommissionsOnPoFeature && isCommissionsLocked)\n }\n >\n \n \n \n )}\n {showLockCommissionsButton &&\n userHasLockCommissionsOnPoFeature &&\n selectedCommissionsCount > 0 && (\n \n )}\n \n \n }\n />\n \n
    \n );\n}\n","import { vars } from 'src/core/themes';\nimport { PurchasePaymentStatus } from 'src/WebApiController';\nimport styled from 'styled-components/macro';\n\nexport const Title = styled.h2<{ showOnMobile?: boolean }>`\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('title3', 'regular')};\n display: ${(props) => (props.showOnMobile ? 'flex' : 'none')};\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n display: flex;\n `\n )}`}\n\n justify-content: center;\n padding-block-end: ${() => vars.spacing.xl};\n`;\n\nexport const WizardFooter = styled.footer`\n display: flex;\n flex-direction: row-reverse;\n width: 100%;\n max-width: 1440px;\n margin: 0 auto;\n margin-bottom: ${() => vars.spacing.xxl};\n justify-content: space-between;\n padding: ${() => vars.spacing.xl};\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n margin-bottom: 0;\n `\n )}`}\n`;\n\nexport const EmailPreviewContainer = styled.div`\n background-color: ${(props) => props.theme.colors.backgroundSecondary};\n padding: ${() => `${vars.spacing.sm} ${vars.spacing.xl}`};\n display: flex;\n flex-direction: column;\n`;\n\nexport const EmailBodyWrapper = styled.div`\n flex: 1;\n width: 300px;\n border: 2px solid ${(props) => props.theme.colors.borderPrimary};\n overflow-y: scroll;\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.lg,\n `\n width: 500px;\n `\n )}`}\n`;\n\nexport const EmailPreviewTitle = styled.div`\n ${(props) => props.theme.typography.getStyles('subtitle1')};\n margin: 0;\n padding-block-end: ${() => vars.spacing.sm};\n`;\n\nexport const StyledPurchaseWizardBody = styled.div`\n height: 100%;\n display: grid;\n grid-template-rows: auto 1fr auto;\n\n @supports (-webkit-touch-callout: none) {\n max-height: -webkit-fill-available;\n }\n`;\n\nexport const BodySectionTitle = styled.div`\n ${(props) => props.theme.typography.getStyles('subtitle1')};\n color: ${(props) => props.theme.colors.textBrand};\n text-transform: uppercase;\n margin: 0;\n padding-block-end: ${() => vars.spacing.lg};\n`;\n\nexport const TicketsDetailRow = styled.div`\n display: flex;\n justify-content: space-between;\n width: 100%;\n padding-block-end: ${() => vars.spacing.sm};\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('subtitle1', 'regular')};\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n padding-block-end: ${vars.spacing.lg};\n `\n )}`}\n`;\n\nexport const TicketDetailRowPaymentList = styled(TicketsDetailRow)`\n overflow-x: auto;\n`;\n\nexport const RadioContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n margin-right: ${() => vars.spacing.lg};\n\n label {\n min-width: min-content;\n }\n`;\n\nexport const CheckboxContainer = styled.div`\n display: flex;\n flex-direction: row-reverse;\n justify-content: center;\n align-items: center;\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n flex-direction: column;\n `\n )}`}\n > * {\n width: max-content !important;\n }\n\n label {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 0;\n }\n`;\n\nexport const FieldWrapper = styled.div<{\n width?: string;\n minWidth?: string;\n addFlexGrow?: boolean;\n}>`\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding-block-end: ${() => vars.spacing.m};\n width: ${(props) => (props.width != null ? props.width : '100%')};\n min-width: ${(props) => (props.minWidth != null ? props.minWidth : 'auto')};\n ${({ addFlexGrow }) => (addFlexGrow ? 'flex-grow: 1;' : null)};\n\n label {\n width: 100%;\n margin-bottom: 0;\n }\n`;\nexport const FieldLabel = styled.div<{ isCheckbox?: boolean }>`\n text-transform: capitalize;\n font-size: ${() => vars.typography.fontSize['lg']};\n font-weight: 400;\n padding-left: ${(props) => (props.isCheckbox ? vars.spacing.sm : 0)};\n`;\n\nexport const HeaderFieldLabel = styled.div<{ isCheckbox?: boolean }>`\n text-transform: capitalize;\n font-size: ${() => vars.typography.fontSize['sm']};\n font-weight: 400;\n padding-left: ${(props) => (props.isCheckbox ? vars.spacing.sm : 0)};\n`;\n\nexport const FieldError = styled.div`\n color: ${(props) => props.theme.colors.textNegative};\n font-size: ${() => vars.typography.fontSize['sm']};\n margin-top: ${() => vars.spacing.xxs};\n margin-bottom: ${() => vars.spacing.xxs};\n`;\n\nexport const FormRow = styled.div<{ vertical?: boolean }>`\n display: flex;\n flex-direction: ${({ vertical }) => (vertical ? 'column' : 'row')};\n gap: ${() => vars.spacing.lg};\n`;\nexport const PurchaseDetailsDataTable = styled.table`\n border-spacing: 8px 0;\n border-collapse: separate;\n\n svg {\n display: block;\n }\n\n td {\n padding-right: ${() => vars.spacing.xl};\n }\n`;\n\nexport const PurchaseDetailsDataTableCell = styled.div<{\n align?: 'left' | 'center' | 'right';\n}>`\n border-spacing: ${() => vars.spacing.lg} 0;\n border-collapse: separate;\n vertical-align: middle;\n display: flex;\n width: 100%;\n justify-content: ${(props) =>\n props.align === 'center'\n ? 'center'\n : props.align === 'right'\n ? 'flex-end'\n : 'flex-start'};\n`;\n\nexport const PurchaseDetailsDataTableFooter = styled(\n PurchaseDetailsDataTableCell\n)`\n border-top: 2px solid ${(props) => props.theme.colors.borderDark};\n margin-top: ${() => vars.spacing.sm};\n`;\n\nexport const BodySectionTitleTicketGroup = styled(BodySectionTitle)`\n display: flex;\n align-items: center;\n\n svg {\n margin-right: ${() => vars.spacing.sm};\n }\n`;\n\nexport const PaymentStatusTextContainer = styled.span<{\n purchasePaymentStatus: PurchasePaymentStatus;\n isPaymentPastDueDate: boolean;\n isPaymentRefunded: boolean;\n}>`\n color: ${(props) => {\n switch (props.purchasePaymentStatus) {\n case PurchasePaymentStatus.Paid:\n return props.isPaymentRefunded\n ? props.theme.colors.textInfo\n : props.theme.colors.textSuccess;\n case PurchasePaymentStatus.Unpaid:\n return props.isPaymentPastDueDate\n ? props.theme.colors.textNegative\n : props.theme.colors.textPrimary;\n case PurchasePaymentStatus.Failed:\n return props.theme.colors.textNegative;\n default:\n return props.theme.colors.textPrimary;\n }\n }};\n`;\nexport const PurchasePaymentStatusTextContainer = styled.span`\n color: ${(props) => props.theme.colors.textPrimary};\n background: ${(props) => props.theme.colors.backgroundSecondary};\n font-size: ${() => vars.typography.fontSize['xs']};\n padding: ${() =>\n `${vars.spacing.xs} ${vars.spacing.sm} ${vars.spacing.xs} ${vars.spacing.sm}`};\n float: right;\n border-radius: ${() => vars.spacing.sm};\n\n &.Paid {\n color: ${(props) => props.theme.colors.textSuccess};\n background: ${(props) => props.theme.colors.backgroundSuccess};\n }\n\n &.Failed {\n color: ${(props) => props.theme.colors.textNegative};\n background: ${(props) => props.theme.colors.backgroundNegative};\n }\n`;\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nimport {\n PurchaseDetailsDataTableCell,\n PurchaseDetailsDataTableFooter,\n} from '../PurchaseModal.styled';\n\nexport const CostDetailsDataTable = styled.table`\n width: 50%;\n svg {\n display: block;\n }\n\n tr.padding-top-bottom td {\n padding-bottom: ${() => vars.spacing.m};\n }\n`;\n\nexport const PurchaseDetailsDataTableLabelCell = styled(\n PurchaseDetailsDataTableCell\n)`\n color: ${(props) => props.theme.colors.textPrimary};\n`;\n\nexport const PurchaseDetailsDataTableValueCell = styled(\n PurchaseDetailsDataTableCell\n)`\n font-weight: 600;\n`;\n\nexport const PurchaseDetailsDataTableValueFooter = styled(\n PurchaseDetailsDataTableFooter\n)`\n font-weight: 600;\n`;\n","import { useMemo } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { IconsFill, MoreIcon, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PURCHASE_COST_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { formatCurrency } from 'src/utils/numberFormatter';\nimport { getCosts } from 'src/utils/ticketUtils';\nimport { CostDetail, TicketGroupInput } from 'src/WebApiController';\n\nimport {\n PurchaseDetailsDataTableCell,\n PurchaseDetailsDataTableFooter,\n} from '../PurchaseModal.styled';\nimport * as styles from './CostDetailsTable.css';\nimport {\n CostDetailsDataTable,\n PurchaseDetailsDataTableLabelCell,\n PurchaseDetailsDataTableValueCell,\n PurchaseDetailsDataTableValueFooter,\n} from './CostDetailsTable.styled';\n\nexport type CostDetailsTableProps = {\n currencyCode: string;\n ticketGroups?: TicketGroupInput[];\n costs?: CostDetail[] | null;\n disabled?: boolean;\n onEditCost: (cost: CostDetail) => void;\n onAddNewCost: () => void;\n onRemoveCost: (costId: number) => void;\n};\n\nexport function CostDetailsTable({\n currencyCode,\n ticketGroups,\n costs,\n disabled,\n onEditCost,\n onAddNewCost,\n onRemoveCost,\n}: CostDetailsTableProps) {\n const { totalTicketCost, totalShipping, totalCost } = getCosts(\n ticketGroups,\n costs\n );\n\n const dividerClassName = useMemo(() => {\n return `add-divider-top padding-top-bottom\n ${\n costs !== undefined && costs != null && costs.length > 0\n ? ' add-divider-bottom'\n : ''\n }`;\n }, [costs]);\n\n return (\n \n \n \n \n \n \n \n \n \n \n {formatCurrency(totalTicketCost, currencyCode)}\n \n \n \n \n \n \n \n \n \n \n \n {formatCurrency(totalShipping, currencyCode)}\n \n \n \n {costs?.map((costDetail) => {\n const { id, cost, costType, description } = costDetail;\n return (\n \n \n \n {}\n \n \n \n \n {cost?.disp ||\n formatCurrency(\n cost?.amt,\n cost?.currency ?? currencyCode,\n cost?.dec\n )}\n \n \n {!disabled && (\n \n \n \n }\n align=\"end\"\n >\n onEditCost(costDetail)}>\n \n \n onRemoveCost(id)}>\n \n \n \n \n \n )}\n \n );\n })}\n {!disabled && (\n \n \n \n \n \n )}\n \n \n \n
    \n \n
    \n
    \n \n \n \n {formatCurrency(totalCost, currencyCode)}\n \n \n \n \n
    \n );\n}\n","import {\n createContext,\n Dispatch,\n SetStateAction,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport {\n PurchaseOrderDealConfig,\n PurchaseOrderDealDetailsInput,\n PurchaseOrderDealInput,\n PurchaseOrderDetailsInput,\n} from 'src/WebApiController';\n\nimport { useSellerAccountContext } from '../SellerAccountContext';\n\ninterface DealContextValue {\n localDeal: PurchaseOrderDealInput | null;\n setLocalDeal: Dispatch>;\n updateLocalDealDetails: (\n value: Partial\n ) => void;\n updateLocalDealConfigHurdle: (\n index: number,\n value: Partial\n ) => void;\n updateLocalDealConfigHurdlePriority: (value: number, index: number) => void;\n deleteLocalDealConfigHurdle: (index: number) => void;\n isEditDeal: boolean;\n setIsEditDeal: Dispatch>;\n activeUserIds: string[];\n isValidDeal: boolean;\n assignedPriorities: Set;\n}\nconst DealContext = createContext(undefined);\n\nexport const DealProvider: React.FC<{\n deal?: PurchaseOrderDealInput;\n defaultEdit?: boolean;\n children?: React.ReactNode;\n}> = ({ deal, defaultEdit = false, children }) => {\n const [localDeal, setLocalDeal] = useState(\n deal || null\n );\n\n const { clearErrors, setError } = useFormContext();\n\n const [isEditDeal, setIsEditDeal] = useState(defaultEdit);\n const { allActiveUserInfos } = useSellerAccountContext();\n\n const updateLocalDealDetails = useCallback(\n (value: Partial) => {\n setLocalDeal((prev) => {\n if (!prev) return prev;\n return { ...prev, dealDetails: { ...prev.dealDetails, ...value } };\n });\n },\n []\n );\n\n const updateLocalDealConfigHurdle = useCallback(\n (index: number, value: Partial) => {\n setLocalDeal((prev) => {\n if (!prev || !prev.dealDetails.dealConfigs?.value) return prev;\n\n const updatedConfigs = prev.dealDetails.dealConfigs.value.map(\n (config, i) => (i === index ? { ...config, ...value } : config)\n );\n\n return {\n ...prev,\n dealDetails: {\n ...prev.dealDetails,\n dealConfigs: posChangedField(updatedConfigs),\n },\n };\n });\n },\n []\n );\n\n const deleteLocalDealConfigHurdle = useCallback((index: number) => {\n setLocalDeal((prev) => {\n if (!prev || !prev.dealDetails.dealConfigs?.value) return prev;\n\n const updatedConfigs = prev.dealDetails.dealConfigs.value\n .filter((_, i) => i !== index)\n .map((config) => ({ ...config }));\n\n // Recalculate config priorities to ensure contiguous and uniqueness\n const deletedPriority =\n prev.dealDetails.dealConfigs.value[index].priority;\n\n const seenPriorities = new Set();\n const expectedPriorities = new Set(\n Array.from({ length: updatedConfigs.length }, (_, i) => i + 1)\n );\n\n // Only decrement priorities > deleted priority. Ensure uniqueness by tracking decremented priority\n updatedConfigs.forEach((config) => {\n if (\n deletedPriority &&\n config.priority &&\n config.priority >= deletedPriority\n ) {\n if (!seenPriorities.has(config.priority - 1)) {\n config.priority -= 1;\n } else if (!expectedPriorities.has(config.priority)) {\n config.priority = null;\n }\n }\n seenPriorities.add(config.priority);\n });\n\n clearErrors();\n checkDealConfigHurdlePriorities(updatedConfigs);\n\n return {\n ...prev,\n dealDetails: {\n ...prev.dealDetails,\n dealConfigs: posChangedField(updatedConfigs),\n },\n };\n });\n }, []);\n\n const updateLocalDealConfigHurdlePriority = useCallback(\n (value: number, index: number) => {\n updateLocalDealConfigHurdle(index, {\n priority: Number(value),\n });\n\n const updatedConfigs = localDeal?.dealDetails?.dealConfigs?.value;\n if (!updatedConfigs) return;\n\n updatedConfigs[index].priority = value;\n\n checkDealConfigHurdlePriorities(updatedConfigs);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [localDeal?.dealDetails?.dealConfigs?.value]\n );\n\n const checkDealConfigHurdlePriorities = useCallback(\n (configs: PurchaseOrderDealConfig[]) => {\n const priorityMap = configs.reduce(\n (map, config, i) => {\n if (config.priority !== null) {\n if (!map[config.priority]) {\n map[config.priority] = [];\n }\n map[config.priority].push(i);\n }\n return map;\n },\n {} as Record\n );\n\n Object.entries(priorityMap).forEach(([priority, indices]) => {\n if (indices.length > 1) {\n indices.forEach((i) => {\n setError(`deal.value.dealDetails.dealConfigs.value.${i}.priority`, {\n message: 'Priority must be unique',\n });\n });\n } else {\n clearErrors(\n `deal.value.dealDetails.dealConfigs.value.${indices[0]}.priority`\n );\n }\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n const activeUserIds = useMemo(\n () =>\n allActiveUserInfos\n ? Object.values(allActiveUserInfos).map((u) => u.userId)\n : [],\n [allActiveUserInfos]\n );\n\n const assignedPriorities = useMemo(() => {\n return new Set(\n localDeal?.dealDetails.dealConfigs?.value\n ?.map((config) => config.priority)\n .filter((priority): priority is number => priority !== null)\n );\n }, [localDeal?.dealDetails]);\n\n const isValidDeal = useMemo(() => {\n if (\n !localDeal ||\n !localDeal.dealDetails.dealConfigs?.value ||\n !localDeal.dealDetails.dealFallbackConfig\n )\n return true;\n\n const validHurdles = localDeal.dealDetails.dealConfigs.value.every(\n (config) => {\n const vendorSplit = config.vendorCommission.splitValue;\n const totalPurchaserSplit = config.purchaserCommissions.reduce(\n (acc, split) => acc + split.splitValue,\n 0\n );\n return vendorSplit + totalPurchaserSplit === 100;\n }\n );\n\n const validFallbackHurdle =\n localDeal.dealDetails.dealFallbackConfig.vendorCommission.splitValue +\n localDeal.dealDetails.dealFallbackConfig.purchaserCommissions.reduce(\n (acc, split) => acc + split.splitValue,\n 0\n ) ===\n 100;\n\n return (\n validHurdles &&\n validFallbackHurdle &&\n assignedPriorities.size === localDeal.dealDetails.dealConfigs.value.length\n );\n }, [assignedPriorities.size, localDeal]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useDealContext = (): DealContextValue => {\n const context = useContext(DealContext);\n if (!context) {\n throw new Error('useDealContext must be used within a DealProvider');\n }\n return context;\n};\n","import clsx from 'clsx';\nimport {\n ComponentProps,\n ComponentPropsWithoutRef,\n ComponentType,\n forwardRef,\n ReactNode,\n} from 'react';\nimport { vars } from 'src/core/themes';\nimport { Collapsible } from 'src/core/ui';\nimport { mergeProps, styledComponent } from 'src/core/utils';\nimport {\n ExpandIcon as ExpandIconDefault,\n FoldIcon as FoldIconDefault,\n IconsFill,\n} from 'src/svgs/Viagogo';\n\nimport * as styles from './PosCollapsible.css';\n\nexport type PosCollapsibleProps = Pick<\n ComponentProps,\n 'open' | 'onOpenChange'\n> & {\n trigger?: ReactNode;\n children?: ReactNode;\n};\n\nexport function PosCollapsible({\n open,\n onOpenChange,\n trigger,\n children,\n}: PosCollapsibleProps) {\n return (\n \n {trigger}\n {children}\n \n );\n}\n\nexport const Root = styledComponent(Collapsible.Root, styles.root);\n\nexport const Trigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef & {\n ExpandIcon?: ComponentType<{ size: string; fill: IconsFill }>;\n FoldIcon?: ComponentType<{ size: string; fill: IconsFill }>;\n iconSize?: string;\n }\n>(function Content({ children, ...props }, ref) {\n const ExpandIcon = props.ExpandIcon ?? ExpandIconDefault;\n const FoldIcon = props.FoldIcon ?? FoldIconDefault;\n\n return (\n \n
    \n
    {children}
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n );\n});\n\nexport const Content = styledComponent(Collapsible.Content, styles.content);\n","import { MouseEventHandler, useEffect } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { SellerAccountEmployeeSelector } from 'src/components/Selectors/SellerAccountEmployeeSelector';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { DeleteIcon, IconsFill } from 'src/svgs/Viagogo';\nimport {\n PurchaseOrderDealCommission,\n PurchaseOrderDetailsInput,\n} from 'src/WebApiController';\n\nimport { ChangeCommissionInput } from './DealConfigHurdle';\n\nexport const createDefaultDealCommission = (\n userId: string\n): PurchaseOrderDealCommission => ({\n userId,\n splitValue: 0,\n});\n\nexport const DealConfigSplitCommissionVendorAccount = ({\n vendorCommission,\n onChangeCommission,\n}: {\n vendorCommission: PurchaseOrderDealCommission;\n onChangeCommission: (input: number) => void;\n}) => {\n const { watch } = useFormContext();\n const vendorAccount = watch('vendorAccount');\n\n return (\n \n \n\n onChangeCommission(Number(e.target.value))}\n type=\"number\"\n inputMode=\"decimal\"\n postfixDisplay=\"%\"\n value={Number(vendorCommission.splitValue)}\n min={0}\n max={100}\n maxLength={200}\n />\n \n );\n};\n\nexport const DealConfigSplitCommissionPurchasedBy = ({\n index,\n commission,\n onDeleteCommission,\n onChangeCommission,\n}: {\n index: number;\n commission: PurchaseOrderDealCommission;\n onDeleteCommission: MouseEventHandler;\n onChangeCommission: (input: ChangeCommissionInput) => void;\n}) => {\n return (\n \n e.stopPropagation()}\n onChange={(value) => {\n onChangeCommission({\n changedUserId: value,\n changedValue: null,\n commissionIndex: index,\n });\n }}\n style={{ flex: 2 }}\n />\n\n {\n onChangeCommission({\n changedUserId: null,\n changedValue: Number(e.target.value),\n commissionIndex: index,\n });\n }}\n maxLength={200}\n />\n {index !== 0 && (\n \n )}\n \n );\n};\n","import { Content } from 'src/contexts/ContentContext/Content';\nimport { useDealContext } from 'src/contexts/DealContext/DealContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { IconsFill, InfoOutlineIcon, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n PurchaseOrderDealCommission,\n PurchaseOrderDealConfig,\n} from 'src/WebApiController';\n\nimport * as styles from '../Deals.css';\nimport { ChangeCommissionInput } from './DealConfigHurdle';\nimport {\n DealConfigSplitCommissionPurchasedBy,\n DealConfigSplitCommissionVendorAccount,\n} from './DealConfigHurdleSplitCommissions';\n\nexport const DealConfigHurdleSplit = ({\n index,\n config,\n vendorCommission,\n onChangeVendorCommission,\n onAddNewCommission,\n onDeleteCommission,\n onChangeCommission,\n}: {\n index: number;\n config: PurchaseOrderDealConfig;\n vendorCommission: PurchaseOrderDealCommission;\n onChangeVendorCommission: (input: number) => void;\n onAddNewCommission?: () => void;\n onDeleteCommission: (removeIndex: number) => void;\n onChangeCommission: ({\n changedUserId,\n changedValue,\n commissionIndex,\n }: ChangeCommissionInput) => void;\n}) => {\n const { activeUserIds } = useDealContext();\n const totalHurdlePercentage =\n config.vendorCommission.splitValue +\n config.purchaserCommissions.reduce(\n (acc, commission) => acc + commission.splitValue,\n 0\n );\n\n return (\n \n \n \n }\n errors={undefined}\n >\n \n \n \n \n \n {config.purchaserCommissions.map(\n (commission: PurchaseOrderDealCommission, index: number) => {\n return (\n onDeleteCommission(index)}\n onChangeCommission={onChangeCommission}\n />\n );\n }\n )}\n \n \n {onAddNewCommission &&\n activeUserIds.length > config.purchaserCommissions.length && (\n \n \n \n \n )}\n \n \n
    \n \n \n : {totalHurdlePercentage}/100%\n {totalHurdlePercentage !== 100 && (\n \n \n \n \n )}\n
    \n
    \n
    \n \n \n );\n};\n","import { differenceWith } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useDealContext } from 'src/contexts/DealContext/DealContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport * as PosCollapsible from 'src/core/POS/PosCollapsible';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n PurchaseOrderDealConfig,\n PurchaseOrderDetailsInput,\n} from 'src/WebApiController';\n\nimport * as styles from '../Deals.css';\nimport { ChangeCommissionInput } from './DealConfigHurdle';\nimport { DealConfigHurdleSplit } from './DealConfigHurdleSplit';\nimport { createDefaultDealCommission } from './DealConfigHurdleSplitCommissions';\n\nexport const DealFallbackSection = ({\n dealFallbackConfig,\n}: {\n dealFallbackConfig: PurchaseOrderDealConfig;\n}) => {\n const { watch } = useFormContext();\n const { updateLocalDealDetails } = useDealContext();\n const { allActiveUserInfos } = useSellerAccountContext();\n const [open, setOpen] = useState(true);\n\n const { purchaserCommissions, vendorCommission } = dealFallbackConfig;\n const activeUserIds = useMemo(\n () =>\n allActiveUserInfos\n ? Object.values(allActiveUserInfos).map((u) => u.userId)\n : [],\n [allActiveUserInfos]\n );\n\n const vendorAccount = watch('vendorAccount');\n\n useEffect(() => {\n updateLocalDealDetails({\n dealFallbackConfig: {\n ...dealFallbackConfig,\n vendorCommission: {\n ...vendorCommission,\n userId: vendorAccount?.value?.id || '',\n },\n },\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [vendorAccount]);\n\n const onChangeVendorCommission = useCallback(\n (changedValue: number) => {\n updateLocalDealDetails({\n dealFallbackConfig: {\n ...dealFallbackConfig,\n vendorCommission: {\n ...vendorCommission,\n splitValue: changedValue,\n },\n },\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [vendorCommission]\n );\n\n const onAddNewCommission = useCallback(() => {\n const firstAvailableUserId = differenceWith(\n activeUserIds,\n purchaserCommissions ?? [],\n (activeUserId, commission) => activeUserId === commission.userId\n )[0];\n\n if (!firstAvailableUserId) return;\n updateLocalDealDetails({\n dealFallbackConfig: {\n ...dealFallbackConfig,\n purchaserCommissions: [\n ...purchaserCommissions,\n createDefaultDealCommission(firstAvailableUserId),\n ],\n },\n });\n }, [\n activeUserIds,\n dealFallbackConfig,\n purchaserCommissions,\n updateLocalDealDetails,\n ]);\n\n const onChangeCommission = useCallback(\n ({\n changedUserId,\n changedValue,\n commissionIndex,\n }: ChangeCommissionInput) => {\n if (changedUserId) {\n const isUserIdAlreadyUsed = purchaserCommissions?.find(\n (existingCommission) => existingCommission.userId === changedUserId\n );\n if (isUserIdAlreadyUsed) return;\n updateLocalDealDetails({\n dealFallbackConfig: {\n ...dealFallbackConfig,\n purchaserCommissions: [\n ...purchaserCommissions.map((commission, i) =>\n i === commissionIndex\n ? { ...commission, userId: changedUserId }\n : commission\n ),\n ],\n },\n });\n }\n\n if (changedValue !== null) {\n updateLocalDealDetails({\n dealFallbackConfig: {\n ...dealFallbackConfig,\n purchaserCommissions: [\n ...purchaserCommissions.map((commission, i) =>\n i === commissionIndex\n ? { ...commission, splitValue: changedValue }\n : commission\n ),\n ],\n },\n });\n }\n },\n [dealFallbackConfig, purchaserCommissions, updateLocalDealDetails]\n );\n\n const onDeleteCommission = useCallback(\n (removeIndex: number) => {\n if (dealFallbackConfig.purchaserCommissions.length <= 1) return;\n const newCommissions = [...dealFallbackConfig.purchaserCommissions];\n const updatedCommissions = newCommissions.filter(\n (_, i) => i !== removeIndex\n );\n\n updateLocalDealDetails({\n dealFallbackConfig: {\n ...dealFallbackConfig,\n purchaserCommissions: updatedCommissions,\n },\n });\n },\n [dealFallbackConfig, updateLocalDealDetails]\n );\n\n return (\n setOpen(!open)}>\n
    \n \n \n
    \n \n
    \n
    \n \n
    \n \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n );\n};\n","import differenceWith from 'lodash-es/differenceWith';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content, FormatContent } from 'src/contexts/ContentContext/Content';\nimport { useDealContext } from 'src/contexts/DealContext/DealContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect, PosSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { DeleteIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { DEAL_CONFIG_TRESHOLD_SPLIT_DIRECTION_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { PurchaseOrderDetailsInput } from 'src/utils/purchaseUtils';\nimport {\n DealSplitType,\n PurchaseOrderDealCommission,\n PurchaseOrderDealConfig,\n} from 'src/WebApiController';\n\nimport * as styles from '../Deals.css';\nimport { DealConfigHurdleSplit } from './DealConfigHurdleSplit';\nimport { createDefaultDealCommission } from './DealConfigHurdleSplitCommissions';\n\nexport type ChangeCommissionInput = {\n changedUserId: string | null;\n changedValue: number | null;\n commissionIndex: number;\n};\n\nexport const DealConfigHurdle = ({\n config,\n index,\n}: {\n config: PurchaseOrderDealConfig;\n index: number;\n}) => {\n const {\n updateLocalDealConfigHurdle,\n activeUserIds,\n updateLocalDealConfigHurdlePriority,\n } = useDealContext();\n\n const { watch, formState, setError } =\n useFormContext();\n const configSplitType = watch('deal.value.dealDetails.configSplitType.value');\n\n const { purchaserCommissions } = config;\n\n const vendorCommission = config.vendorCommission;\n const vendorAccount = watch('vendorAccount');\n\n useEffect(() => {\n updateLocalDealConfigHurdle(index, {\n vendorCommission: {\n ...vendorCommission,\n userId: vendorAccount?.value?.id || '',\n },\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [vendorAccount]);\n\n const onChangeVendorCommission = useCallback(\n (changedValue: number) => {\n updateLocalDealConfigHurdle(index, {\n vendorCommission: {\n ...vendorCommission,\n splitValue: changedValue,\n },\n });\n },\n [index, updateLocalDealConfigHurdle, vendorCommission]\n );\n\n const onAddNewCommission = useCallback(() => {\n const firstAvailableUserId = differenceWith(\n activeUserIds,\n purchaserCommissions ?? [],\n (activeUserId, commission) => activeUserId === commission.userId\n )[0];\n if (!firstAvailableUserId) return;\n updateLocalDealConfigHurdle(index, {\n purchaserCommissions: [\n ...purchaserCommissions,\n createDefaultDealCommission(firstAvailableUserId),\n ],\n });\n }, [activeUserIds, purchaserCommissions, updateLocalDealConfigHurdle, index]);\n\n const onChangeCommission = useCallback(\n ({\n changedUserId,\n changedValue,\n commissionIndex,\n }: ChangeCommissionInput) => {\n if (changedUserId) {\n const isUserIdAlreadyUsed = purchaserCommissions?.find(\n (existingCommission) => existingCommission.userId === changedUserId\n );\n if (isUserIdAlreadyUsed) return;\n updateLocalDealConfigHurdle(index, {\n purchaserCommissions: [\n ...purchaserCommissions.map((commission, i) =>\n i === commissionIndex\n ? { ...commission, userId: changedUserId }\n : commission\n ),\n ],\n });\n }\n\n if (changedValue !== null) {\n updateLocalDealConfigHurdle(index, {\n purchaserCommissions: [\n ...purchaserCommissions.map((commission, i) =>\n i === commissionIndex\n ? { ...commission, splitValue: changedValue }\n : commission\n ),\n ],\n });\n }\n },\n [index, purchaserCommissions, updateLocalDealConfigHurdle]\n );\n\n const onDeleteCommission = useCallback(\n (removeIndex: number) => {\n if (config.purchaserCommissions.length <= 1) return;\n const newCommissions = [...config.purchaserCommissions];\n const updatedCommissions = newCommissions.filter(\n (_, i) => i !== removeIndex\n );\n updateLocalDealConfigHurdle(index, {\n purchaserCommissions: updatedCommissions,\n });\n },\n [config.purchaserCommissions, index, updateLocalDealConfigHurdle]\n );\n\n return (\n \n );\n};\n\nconst HurdleConfig = ({\n config,\n vendorCommission,\n onChangeVendorCommission,\n onAddNewCommission,\n onChangeCommission,\n onDeleteCommission,\n index,\n}: {\n config: PurchaseOrderDealConfig;\n vendorCommission: PurchaseOrderDealCommission;\n onChangeVendorCommission: (input: number) => void;\n onAddNewCommission: () => void;\n onChangeCommission: ({\n changedUserId,\n changedValue,\n commissionIndex,\n }: ChangeCommissionInput) => void;\n onDeleteCommission: (removeIndex: number) => void;\n index: number;\n}) => {\n const {\n localDeal,\n deleteLocalDealConfigHurdle,\n updateLocalDealConfigHurdle,\n updateLocalDealConfigHurdlePriority,\n } = useDealContext();\n\n const { formState } = useFormContext();\n\n const configSplitType = localDeal?.dealDetails?.configSplitType.value;\n const thresholdValue = config.thresholdValue;\n\n const numHurdles = localDeal?.dealDetails?.dealConfigs?.value?.length || 0;\n\n const priorityOptions = useMemo(() => {\n const options: Record = {};\n for (let i = 1; i <= numHurdles; i++) {\n options[i.toString()] = i.toString();\n }\n return options;\n }, [numHurdles]);\n\n return (\n <>\n \n
    \n \n
    \n {index !== 0 && (\n deleteLocalDealConfigHurdle(index)}\n />\n )}\n \n }\n errors={\n formState.errors.deal?.value?.dealDetails?.dealConfigs?.value?.[index]\n ?.priority?.message\n }\n >\n \n \n updateLocalDealConfigHurdle(index, {\n thresholdSplitDirection: value,\n })\n }\n />\n \n updateLocalDealConfigHurdle(index, {\n thresholdValue: Number(e.target.value),\n })\n }\n value={thresholdValue || 0}\n />\n {\n updateLocalDealConfigHurdlePriority(Number(value), index);\n }}\n placeholderText={ContentId.SetPriority}\n />\n \n \n\n \n \n \n \n );\n};\n\nconst NonHurdleConfig = ({\n config,\n vendorCommission,\n onChangeVendorCommission,\n onChangeCommission,\n onDeleteCommission,\n index,\n}: {\n config: PurchaseOrderDealConfig;\n vendorCommission: PurchaseOrderDealCommission;\n onChangeVendorCommission: (input: number) => void;\n onChangeCommission: ({\n changedUserId,\n changedValue,\n commissionIndex,\n }: ChangeCommissionInput) => void;\n onDeleteCommission: (removeIndex: number) => void;\n index: number;\n}) => {\n return (\n \n \n \n \n }\n >\n \n \n \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext/Content';\nimport { useDealContext } from 'src/contexts/DealContext/DealContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseOrderDetailsInput } from 'src/utils/purchaseUtils';\nimport {\n DealSplitType,\n DealThresholdSplitDirection,\n PurchaseOrderDealConfig,\n} from 'src/WebApiController';\n\nimport { DealConfigHurdle } from './DealConfigHurdle/DealConfigHurdle';\nimport { createDefaultDealCommission } from './DealConfigHurdle/DealConfigHurdleSplitCommissions';\nimport * as styles from './Deals.css';\n\nexport const createDefaultDealConfig = (\n userId?: string | null,\n buyerUserId?: string | null,\n priority?: number | null\n): PurchaseOrderDealConfig => {\n return {\n dealConfigHurdleId: null,\n thresholdSplitDirection: DealThresholdSplitDirection.Above,\n thresholdValue: 0,\n vendorCommission: createDefaultDealCommission(userId || ''),\n purchaserCommissions: [createDefaultDealCommission(buyerUserId || '')],\n priority: priority || 1,\n };\n};\n\nexport const DealConfigSection = ({\n dealConfigs,\n}: {\n dealConfigs: PurchaseOrderDealConfig[] | null;\n}) => {\n const { watch } = useFormContext();\n const { localDeal, updateLocalDealDetails } = useDealContext();\n const buyerUserId = watch('buyerUserId')?.value;\n\n const vendorAccount = watch('vendorAccount');\n const configSplitType = localDeal?.dealDetails?.configSplitType.value;\n\n if (!dealConfigs) {\n return null;\n }\n\n return (\n <>\n {dealConfigs.map((dealConfig: PurchaseOrderDealConfig, i: number) => {\n return (\n <>\n {i !== 0 &&
    }\n \n \n );\n })}\n {configSplitType !== DealSplitType.None && (\n {\n updateLocalDealDetails({\n dealConfigs: posChangedField([\n ...dealConfigs,\n createDefaultDealConfig(\n vendorAccount?.value?.id || null,\n buyerUserId,\n dealConfigs.length + 1\n ),\n ]),\n });\n }}\n style={{ alignSelf: 'end' }}\n >\n \n \n \n )}\n \n );\n};\n","import { endOfDay, startOfDay } from 'date-fns';\nimport { Content } from 'src/contexts/ContentContext/Content';\nimport { useDealContext } from 'src/contexts/DealContext/DealContext';\nimport { DatePickerInput } from 'src/core/POS/DateSelector';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\n\nimport * as styles from './Deals.css';\n\nexport const DealDateRangeSection = ({\n dealStartDate,\n dealEndDate,\n}: {\n dealStartDate?: string | null;\n dealEndDate?: string | null;\n}) => {\n const { updateLocalDealDetails } = useDealContext();\n\n return (\n \n \n
    \n }\n >\n {\n const startDate = startOfDay(value);\n const currentEndDate = dealEndDate ? new Date(dealEndDate) : null;\n updateLocalDealDetails({ dealStartDate: startDate.toISOString() });\n\n // Update end date only if it's less than the new start date\n if (currentEndDate && currentEndDate < startDate) {\n updateLocalDealDetails({\n dealEndDate: endOfDay(startDate).toISOString(),\n });\n }\n }}\n locale={getLocaleFromLanguageOrCurrent()}\n />\n {\n const endDate = endOfDay(value);\n const currentStartDate = dealStartDate\n ? new Date(dealStartDate)\n : null;\n updateLocalDealDetails({ dealEndDate: endDate.toISOString() });\n\n // Update start date only if it's less than the new end date\n if (currentStartDate && currentStartDate > endDate) {\n updateLocalDealDetails({\n dealStartDate: startOfDay(endDate).toISOString(),\n });\n }\n }}\n locale={getLocaleFromLanguageOrCurrent()}\n />\n \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext/Content';\nimport { useDealContext } from 'src/contexts/DealContext/DealContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { DEAL_CONFIG_SPLIT_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { DealSplitType, PurchaseOrderDetailsInput } from 'src/WebApiController';\n\nimport { createDefaultDealConfig } from './DealConfigSection';\nimport * as styles from './Deals.css';\n\nexport const DealSplitTypeSection = ({\n dealSplitType,\n}: {\n dealSplitType: DealSplitType | null;\n}) => {\n const { updateLocalDealDetails } = useDealContext();\n const { watch } = useFormContext();\n const buyerUserId = watch('buyerUserId')?.value;\n const vendorAccountId = watch('vendorAccount')?.value?.id;\n\n if (!dealSplitType) {\n return;\n }\n\n return (\n \n \n \n }\n errors={undefined}\n >\n {\n if (value === DealSplitType.None) {\n updateLocalDealDetails({\n configSplitType: posChangedField(value),\n dealConfigs: posChangedField([]),\n });\n } else if (\n dealSplitType === DealSplitType.None &&\n (value === DealSplitType.Quantity || value === DealSplitType.Sales)\n ) {\n updateLocalDealDetails({\n configSplitType: posChangedField(value),\n dealConfigs: posChangedField([\n createDefaultDealConfig(vendorAccountId, buyerUserId, 1),\n ]),\n });\n } else {\n updateLocalDealDetails({\n configSplitType: posChangedField(value),\n });\n }\n }}\n />\n \n );\n};\n","import { Content } from 'src/contexts/ContentContext/Content';\nimport { useDealContext } from 'src/contexts/DealContext/DealContext';\nimport { Radio, RadioGroup, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { DealType } from 'src/WebApiController';\n\nexport const DealTypeSection = ({ dealType }: { dealType?: DealType }) => {\n const { setLocalDeal } = useDealContext();\n\n return (\n {\n setLocalDeal((prev) => {\n if (!prev) return prev;\n return { ...prev, dealType: value };\n });\n }}\n value={dealType}\n >\n \n } />\n }\n />\n \n \n );\n};\n","import { endOfDay, startOfDay } from 'date-fns';\nimport { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n DealProvider,\n useDealContext,\n} from 'src/contexts/DealContext/DealContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { DeleteIcon, EditIcon, IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField, posField } from 'src/utils/posFieldUtils';\nimport { PurchaseOrderDetailsInput } from 'src/utils/purchaseUtils';\nimport {\n DealSplitType,\n DealType,\n Feature,\n PurchaseOrderDealDetailsInput,\n PurchaseOrderDealInput,\n} from 'src/WebApiController';\n\nimport { DealFallbackSection } from './DealConfigHurdle/DealConfigFallbackHurdle';\nimport {\n createDefaultDealConfig,\n DealConfigSection,\n} from './DealConfigSection';\nimport { DealDateRangeSection } from './DealDateRangeSection';\nimport * as styles from './Deals.css';\nimport { DealSplitTypeSection } from './DealSplitTypeSection';\nimport { DealTypeSection } from './DealTypeSection';\n\nexport const createDefaultPODeal = (\n userId: string,\n buyerUserId?: string | null\n): PurchaseOrderDealInput => ({\n dealId: null,\n dealType: DealType.Sor,\n dealDetails: {\n dealConfigId: null,\n dealFallbackConfig: createDefaultDealConfig(userId, buyerUserId),\n dealConfigs: posField([createDefaultDealConfig(userId, buyerUserId)]),\n dealStartDate: startOfDay(new Date()).toISOString(),\n dealEndDate: endOfDay(new Date()).toISOString(),\n configSplitType: posField(DealSplitType.Sales),\n guaranteedAmountPaid: 0,\n },\n});\n\nconst DealSectionInput = ({\n dealDetails,\n}: {\n dealDetails?: PurchaseOrderDealDetailsInput;\n}) => {\n if (!dealDetails) {\n return;\n }\n\n return (\n \n \n \n \n {dealDetails.dealFallbackConfig && (\n \n )}\n \n );\n};\n\nconst DealSectionContent = () => {\n const [isEditDeal, setIsEditDeal] = useState(false);\n const { watch, setValue } = useFormContext();\n const hasConsignmentDealFeature = useUserHasFeature(Feature.ConsignmentDeal);\n const dealField = watch('deal');\n const buyerUserId = watch('buyerUserId')?.value;\n const { localDeal, setLocalDeal, isValidDeal } = useDealContext();\n\n if (!hasConsignmentDealFeature) {\n return null;\n }\n\n const { value: deal } = dealField || {};\n\n // Show Collapsed Deal UI if deal is present\n if (deal && !isEditDeal) {\n return (\n \n \n
    \n \n
    \n {deal?.dealType === DealType.Sor && }\n {deal?.dealType === DealType.Guaranteed && (\n \n )}\n
    \n \n setValue('deal', posChangedField(null))}\n />\n {\n setIsEditDeal(true);\n setLocalDeal(deal);\n }}\n style={{ alignSelf: 'center' }}\n >\n \n \n \n \n
    \n );\n }\n\n return isEditDeal ? (\n \n \n \n \n {\n setIsEditDeal(false);\n }}\n style={{ alignSelf: 'end' }}\n >\n \n \n {\n setIsEditDeal(false);\n setValue('deal', posChangedField(localDeal || null));\n }}\n style={{ alignSelf: 'end' }}\n disabled={!isValidDeal}\n >\n \n \n \n \n ) : (\n \n
    \n \n
    \n {\n setIsEditDeal(true);\n setLocalDeal(createDefaultPODeal('userId', buyerUserId));\n }}\n style={{ alignSelf: 'end' }}\n >\n \n \n \n \n );\n};\n\nexport const DealSection = () => {\n const { watch } = useFormContext();\n const hasConsignmentDealFeature = useUserHasFeature(Feature.ConsignmentDeal);\n\n if (!hasConsignmentDealFeature) {\n return null;\n }\n\n const dealField = watch('deal');\n const { value: deal } = dealField || {};\n\n return (\n \n \n \n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const AccountSectionLabel = styled.div`\n font-size: ${() => vars.typography.fontSize.base};\n color: ${(props) => props.theme.colors.textPrimary};\n`;\n\nexport const AccountSectionEmail = styled(AccountSectionLabel)`\n color: ${(props) => props.theme.colors.textStrong};\n font-weight: 500;\n`;\n\nexport const VendorSectionLabel = styled(AccountSectionLabel)``;\n\nexport const VendorSectionName = styled.div`\n color: ${(props) => props.theme.colors.textStrong};\n font-weight: 500;\n`;\n","import { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { EditIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PurchaseVendor, PurchaseVendorAccount } from 'src/WebApiController';\n\nimport * as modalStyles from '../PurchaseModal.css';\nimport { BodySectionTitle } from '../PurchaseModal.styled';\nimport * as styles from './DeliverySection.css';\nimport {\n AccountSectionEmail,\n AccountSectionLabel,\n VendorSectionLabel,\n VendorSectionName,\n} from './DeliverySection.styled';\n\nexport type DeliverySectionProps = {\n vendor: PurchaseVendor | null;\n vendorAccount: PurchaseVendorAccount | null;\n onChangeClick?: () => void;\n disabled?: boolean;\n};\n\nexport const DeliverySection = ({\n vendor,\n vendorAccount,\n onChangeClick,\n disabled,\n}: DeliverySectionProps) => {\n return (\n
    \n \n \n \n
    \n
    \n \n \n \n {vendorAccount?.email}\n {!disabled && (\n \n )}\n
    \n
    \n \n \n \n {vendor?.name}\n
    \n
    \n
    \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { SellerAccountClient } from 'src/WebApiController';\n\nexport type UseGetUserInfo = {\n id: string;\n name: string;\n email: string;\n isDeactivated: boolean;\n};\n\nexport const getUserDisplayName = (\n userInfo: UseGetUserInfo,\n deactivatedText?: string\n) => {\n let displayString = userInfo.name ?? userInfo.email ?? userInfo.id;\n\n if (userInfo.isDeactivated && deactivatedText) {\n displayString += ` (${deactivatedText})`;\n }\n\n return displayString;\n};\n\nexport const useGetUserInfos = (userIds?: string[]) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const { getUserInfo } = useSellerAccountContext();\n const getUserInfosQuery = useQuery({\n queryKey: ['GetUserInfo', userIds],\n queryFn: async () => {\n const result = {} as Record;\n\n if (!userIds?.length) return result;\n\n const userInfos = userIds.map(async (userId) => {\n const userInfo = getUserInfo(userId);\n if (userInfo) {\n return {\n id: userInfo.userId,\n name: userInfo.displayName,\n email: userInfo.email,\n isDeactivated: userInfo.isDeactivated,\n };\n }\n\n if (userId != null) {\n const sellerUser = await new SellerAccountClient(\n activeAccountWebClientConfig\n ).getSellerUser(userId);\n\n if (sellerUser) {\n return {\n id: sellerUser.sellerUserId,\n name: sellerUser.sellerDisplayName,\n email: sellerUser.email,\n isDeactivated: Boolean(sellerUser.deleteDate),\n };\n }\n }\n\n return null;\n });\n\n return (await Promise.all(userInfos)).reduce((r, c) => {\n if (c) {\n r[c.id] = c;\n }\n return r;\n }, result);\n },\n\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('SellerAccountClient.GetUserInfo', error);\n },\n },\n });\n\n return getUserInfosQuery;\n};\n","import { ComponentType } from 'react';\nimport { vars } from 'src/core/themes';\nimport { BASE_LIGHT_PALETTE } from 'src/core/themes/legacy/shared/palette/common-palette-light';\nimport { HistoryIcon as HistoryIconOriginal } from 'src/svgs/Viagogo';\nimport styled from 'styled-components/macro';\n\n/**\n * XXX: Fix for `HistoryIcon` size and positioning.\n */\nconst HistoryIconFix = styled.div`\n path {\n scale: 1.35;\n transform: translate(-1px, -1px);\n }\n`;\n\ntype HistoryIconProps = Parameters[0];\n\n/**\n * XXX: Fix because `HistoryIcon` is typed incorrectly.\n */\nconst HistoryIconFixedType =\n HistoryIconOriginal as unknown as ComponentType;\n\nexport const HistoryIcon = (props: HistoryIconProps) => {\n return (\n \n \n \n );\n};\n\nexport const UpdatedByBannerWrapper = styled.div`\n background-color: ${BASE_LIGHT_PALETTE.surfaceSecondary};\n color: ${BASE_LIGHT_PALETTE.textSecondaryOnSurface};\n padding: ${vars.spacing.m} ${vars.spacing.lg};\n line-height: normal;\n border-radius: ${vars.borderRadius.m};\n`;\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const ConvertCurrencyIcon = (props: PosIconProps) => {\n return (\n \n \n \n );\n};\n","import {\n BankAccountIcon,\n GeneralIcon,\n PaypalIcon,\n WalletIcon,\n WireIcon,\n} from 'src/svgs/Viagogo';\nimport { PurchasePaymentMethodType } from 'src/WebApiController';\n\nexport function getPaymentMethodIcon(method: PurchasePaymentMethodType) {\n switch (method) {\n case PurchasePaymentMethodType.PayPal:\n return PaypalIcon;\n case PurchasePaymentMethodType.MoneyOrder:\n case PurchasePaymentMethodType.Cash:\n case PurchasePaymentMethodType.COD:\n return WalletIcon;\n case PurchasePaymentMethodType.BankTransfer:\n return WireIcon;\n case PurchasePaymentMethodType.Check:\n case PurchasePaymentMethodType.ECheck:\n return BankAccountIcon;\n\n case PurchasePaymentMethodType.DebitCard:\n case PurchasePaymentMethodType.DebitNote:\n case PurchasePaymentMethodType.CreditMemo:\n case PurchasePaymentMethodType.Card:\n case PurchasePaymentMethodType.Credit:\n case PurchasePaymentMethodType.Other:\n default:\n return GeneralIcon;\n }\n}\n","import { format } from 'date-fns';\nimport { useMemo } from 'react';\nimport { IconButton } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Button } from 'src/core/ui';\nimport { useGetUserInfos } from 'src/hooks/userGetUserInfo';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { UpdatedByBannerWrapper } from 'src/modals/common/Purchase/PaymentDetailsTable/PaymentDetailsTable.styled';\nimport { ConvertCurrencyIcon } from 'src/svgs/ConvertCurrencyIcon';\nimport { DeleteIcon, EditIcon, IconsFill, PaymentSize } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { formatCurrency } from 'src/utils/numberFormatter';\nimport { getPaymentMethodIcon } from 'src/utils/paymentMethodUtils';\nimport {\n Feature,\n PurchasePayment,\n PurchasePaymentMethodType,\n PurchasePaymentStatus,\n} from 'src/WebApiController';\n\nimport * as styles from '../PurchaseModal.css';\nimport {\n PaymentStatusTextContainer,\n PurchaseDetailsDataTable,\n PurchaseDetailsDataTableCell,\n} from '../PurchaseModal.styled';\n\ntype PaymentDetailsTableEventHandler = (payment: PurchasePayment) => void;\n\nexport type PaymentDetailsTableProps = {\n currencyCode: string;\n payments?: PurchasePayment[] | null;\n disabled?: boolean;\n onSetAsPaid: PaymentDetailsTableEventHandler;\n onEditPayment: PaymentDetailsTableEventHandler;\n onRemovePayment: PaymentDetailsTableEventHandler;\n onConvertCurrency: PaymentDetailsTableEventHandler;\n};\n\nexport function PaymentDetailsTable({\n currencyCode,\n payments,\n disabled,\n onSetAsPaid,\n onEditPayment,\n onRemovePayment,\n onConvertCurrency,\n}: PaymentDetailsTableProps) {\n const canConvertPaymentLines = useUserHasFeature(Feature.ConvertPaymentLines);\n const convertedByUsersIds = useMemo(() => {\n return (payments\n ?.filter((payment) => !!payment.conversionUserId)\n .map((payment) => payment.conversionUserId) ?? []) as string[];\n }, [payments]);\n const userInfos = useGetUserInfos(convertedByUsersIds);\n\n return (\n \n {payments?.length ? (\n <>\n \n \n \n \n \n \n \n \n {canConvertPaymentLines && (\n <>\n \n \n \n \n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n {payments?.map((payment) => {\n /**\n * Payment is past due date if the current date is past PaymentDueDate.\n */\n const isPaymentPastDueDate =\n payment.paymentStatus !== PurchasePaymentStatus.Paid &&\n Date.now() > new Date(payment.paymentDueDate).getTime();\n /**\n * Payment is refunded if the PaymentAmount is negative.\n */\n const isPaymentRefunded =\n payment.paymentStatus === PurchasePaymentStatus.Paid &&\n payment.paymentAmount.amt < 0;\n const {\n paymentId,\n paymentStatus,\n paymentDueDate,\n paymentDate,\n paymentAmount,\n paymentMethod,\n convertedPaymentAmount,\n convertedCurrencyCode,\n conversionRate,\n conversionDate,\n conversionUserId,\n } = payment;\n\n const updatedByBanner =\n canConvertPaymentLines && userInfos.data && conversionUserId ? (\n \n \n \n {' '}\n {userInfos.data[conversionUserId]?.name}{' '}\n {' '}\n {format(new Date(conversionDate!), 'MMM d, yyyy')}\n \n \n \n ) : null;\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n -\n \n {(\n paymentAmount.disp ||\n formatCurrency(\n paymentAmount.amt,\n paymentAmount.currency ?? currencyCode,\n paymentAmount.dec\n )\n ).replace(/^-/, '')}\n \n \n {canConvertPaymentLines && (\n <>\n \n {convertedPaymentAmount?.disp != null ||\n convertedPaymentAmount?.currency != null ||\n convertedCurrencyCode != null\n ? convertedPaymentAmount?.disp ||\n formatCurrency(\n convertedPaymentAmount?.amt,\n convertedPaymentAmount?.currency ??\n convertedCurrencyCode,\n convertedPaymentAmount?.dec\n )\n : null}\n \n {conversionRate}\n \n )}\n \n \n {(paymentStatus === PurchasePaymentStatus.Paid ||\n paymentStatus ===\n PurchasePaymentStatus.RefundNeeded) &&\n paymentDate\n ? new Date(paymentDate).toISOString()\n : new Date(paymentDueDate).toISOString()}\n \n \n \n \n
    \n \n
    \n {paymentStatus === PurchasePaymentStatus.Paid ||\n paymentStatus === PurchasePaymentStatus.RefundNeeded ? (\n paymentMethod.display\n ) : (\n onSetAsPaid(payment)}\n >\n \n \n )}\n
    \n \n {!disabled && (\n \n \n {canConvertPaymentLines && (\n }\n onClick={() => onConvertCurrency(payment)}\n titleContentId={ContentId.ConvertCurrency}\n />\n )}\n \n }\n onClick={() => onEditPayment(payment)}\n titleContentId={ContentId.Edit}\n />\n \n }\n onClick={() => onRemovePayment(payment)}\n titleContentId={ContentId.Remove}\n />\n \n \n )}\n \n {updatedByBanner}\n \n );\n })}\n \n \n ) : (\n \n )}\n
    \n );\n}\n\nfunction PaymentStatusText({\n paymentStatus,\n isPaymentPastDueDate,\n isPaymentRefunded,\n}: Pick & {\n isPaymentPastDueDate: boolean;\n isPaymentRefunded: boolean;\n}) {\n switch (paymentStatus) {\n case PurchasePaymentStatus.Paid:\n return isPaymentRefunded ? (\n \n ) : (\n \n );\n case PurchasePaymentStatus.Unpaid:\n return isPaymentPastDueDate ? (\n \n ) : (\n \n );\n case PurchasePaymentStatus.Failed:\n return ;\n case PurchasePaymentStatus.RefundNeeded:\n return ;\n default:\n return null;\n }\n}\n\nfunction PurchaseMethodIcon({\n paymentMethod,\n}: {\n paymentMethod: PurchasePaymentMethodType;\n}) {\n const Icon = getPaymentMethodIcon(paymentMethod);\n return ;\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useCallback, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useNavigate } from 'react-router-dom';\nimport { TagsFormBodyV2 } from 'src/components/TagsFormBody';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { AddPurchasePaymentDialog } from 'src/dialogs/AddPurchasePaymentDialog';\nimport { ConvertCurrencyDialog } from 'src/dialogs/ConvertCurrency';\nimport { ConvertCurrencyForm } from 'src/dialogs/ConvertCurrency/ConvertCurrencyDialog';\nimport { EditPurchasePaymentDialog } from 'src/dialogs/EditPurchasePaymentDialog';\nimport { PurchaseCostDialog } from 'src/dialogs/PurchaseCostDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useGetDefaultAutoGeneratedPaymentMethod } from 'src/hooks/useGetDefaultAutoGeneratedPaymentMethod';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n useUserCanLockPurchaseCommission,\n useUserCanUpdatePurchaseCommission,\n useUserCanUpdatePurchaseTags,\n} from 'src/hooks/useUserHasPurchasePermissions';\nimport {\n BodySectionTitle,\n ListingNotesSection,\n PurchasePaymentStatusTextContainer,\n PurchaseVendorHeader,\n TicketDetailRowPaymentList,\n TicketsDetailRow,\n} from 'src/modals/common';\nimport {\n ModalBodyDataContainer,\n ModalBodyHeaderContainer,\n} from 'src/modals/Modal/Modal.styled';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { TicketGroupWithHandlers } from 'src/tables/PurchaseTicketTable/configs/TicketGroupTableColumnsConfig';\nimport { PurchaseTicketTable } from 'src/tables/PurchaseTicketTable/PurchaseTicketTable';\nimport { DEFAULT_AUTO_GENERATED_PAYMENT_METHOD } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PURCHASE_PAYMENT_STATUS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { newBigIntId, newIntId } from 'src/utils/idUtils';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseOrderDetailsInput } from 'src/utils/purchaseUtils';\nimport { getCosts } from 'src/utils/ticketUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n AutoPoClient,\n CostDetail,\n Feature,\n Permission,\n PurchaseClient,\n PurchaseOrderCostType,\n PurchaseOrderDetails,\n PurchasePayment,\n PurchasePaymentMethod,\n PurchasePaymentMethodType,\n PurchasePaymentStatus,\n TicketGroupEditReason,\n UiMoney,\n} from 'src/WebApiController';\n\nimport { CommissionSection } from './CommissionSection';\nimport { CostDetailsTable } from './CostDetailsTable';\nimport { DealSection } from './Deal/DealSection';\nimport { DeliverySection } from './DeliverySection/DeliverySection';\nimport { useGetListingAndSaleIds } from './hooks/useGetListingAndSaleIds';\nimport { PaymentDetailsTable } from './PaymentDetailsTable';\nimport * as styles from './PurchaseModal.css';\n\ntype PurchaseMainDetailsProps = {\n highlightTicketGroupIds?: number[];\n disabled?: boolean;\n allowPaymentEdits: boolean;\n onSecondaryAccountOpen: () => void;\n};\n\nexport function PurchaseMainDetails({\n disabled,\n allowPaymentEdits,\n highlightTicketGroupIds,\n onTicketGroupAction,\n onSecondaryAccountOpen,\n}: PurchaseMainDetailsProps &\n Pick) {\n const { posEntity: purchaseOrder } =\n useActivePosEntityContext();\n const { setValue, getValues, watch } =\n useFormContext();\n\n const poId = watch('id');\n const { saleIds, listingIds } = useGetListingAndSaleIds({\n ticketGroups: purchaseOrder?.ticketGroups,\n });\n\n const { posEntity: purchase } =\n useActivePosEntityContext();\n\n const { loginContext } = useAppContext();\n\n const ticketGroups = watch('ticketGroups');\n const currencyCode = watch('currencyCode');\n\n const currency =\n currencyCode?.value ??\n loginContext?.user?.activeAccount?.currencyCode ??\n 'USD';\n\n const payments = watch('payments');\n const additionalCosts = watch('additionalCosts');\n\n const [editMode, setEditMode] = useState(poId <= 0);\n\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const { getUiCurrency } = useLocalizationContext();\n const { totalTicketCost, totalShipping, totalCost } = getCosts(\n ticketGroups,\n additionalCosts?.value\n );\n\n const totalPaymentAmount = (payments?.value ?? []).reduce((acc, payment) => {\n if (payment.paymentStatus == PurchasePaymentStatus.Paid) {\n acc += payment.paymentAmount.amt;\n }\n return acc;\n }, 0);\n\n const { trackError } = useErrorBoundaryContext();\n const hasMarkPurchaseAsPaidFeature = useUserHasFeature(Feature.MarkPOAsPaid);\n\n const inboundEmailId = useQuery({\n queryKey: [\n 'AutoPoClient.getAutoPoClassifiedInboundEmailIdForEntity',\n activeAccountWebClientConfig,\n poId,\n ],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return new AutoPoClient(\n activeAccountWebClientConfig\n ).getAutoPoClassifiedInboundEmailIdForEntity(poId, null);\n },\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError(\n 'AutoPoClient.getAutoPoClassifiedInboundEmailIdForEntity',\n error,\n {\n purchaseOrderId: poId,\n }\n );\n },\n },\n });\n const navigate = useNavigate();\n\n const insertFallbackPurchasePaymentMethod = useCallback(\n async () =>\n await tryInvokeApi(\n async () => {\n return await new PurchaseClient(\n activeAccountWebClientConfig\n ).insertPurchasePaymentMethod({\n id: newIntId(), // will let backend auto generate a new one\n display: DEFAULT_AUTO_GENERATED_PAYMENT_METHOD,\n name: DEFAULT_AUTO_GENERATED_PAYMENT_METHOD,\n type: PurchasePaymentMethodType.Other,\n } as PurchasePaymentMethod);\n },\n (error) => {\n showErrorDialog('PurchaseClient.insertPurchasePaymentMethod', error, {\n trackErrorData: {\n paymentMethodName: DEFAULT_AUTO_GENERATED_PAYMENT_METHOD,\n },\n });\n }\n ),\n [activeAccountWebClientConfig, showErrorDialog]\n );\n\n const { defaultAutoGeneratedPaymentMethod } =\n useGetDefaultAutoGeneratedPaymentMethod();\n\n const onMarkPurchaseAsPaid = useCallback(async () => {\n let paymentMethodId = null;\n\n const vendorAccount = getValues('vendorAccount');\n if (vendorAccount?.value?.dftPayMethodId != null) {\n // if vendor account has default payment, use it\n paymentMethodId = vendorAccount.value?.dftPayMethodId;\n } else if (defaultAutoGeneratedPaymentMethod?.id != null) {\n // if fallback default payment already exist for that seller, use it\n paymentMethodId = defaultAutoGeneratedPaymentMethod?.id;\n } else {\n // if neither vendor account payment or fallback payment exists, create the fallback payment for seller account\n paymentMethodId = await insertFallbackPurchasePaymentMethod();\n }\n\n const existingPayments = getValues('payments');\n const newPayments = [];\n const uiCurrency = getUiCurrency(currency);\n\n newPayments.push({\n paymentId: newBigIntId(),\n paymentStatus: PurchasePaymentStatus.Paid,\n paymentDueDate: purchase?.poDate,\n paymentDate: purchase?.poDate,\n paymentAmount: {\n amt: totalCost - totalPaymentAmount,\n disp: null,\n currency: uiCurrency.code,\n dec: uiCurrency.dec,\n } as UiMoney,\n currencyCode: uiCurrency.code,\n paymentMethod: {\n id: paymentMethodId, // backend only need the id for inserting payment\n display: '',\n name: '',\n type: PurchasePaymentMethodType.Other,\n },\n convertedPaymentAmount: null,\n convertedCurrencyCode: null,\n conversionRate: null,\n conversionDate: null,\n conversionUserId: null,\n } as PurchasePayment);\n\n if (existingPayments == null) {\n setValue('payments', posChangedField(newPayments));\n } else {\n setValue(\n 'payments',\n posChangedField([...existingPayments!.value!, ...newPayments])\n );\n }\n }, [\n setValue,\n getValues,\n currency,\n defaultAutoGeneratedPaymentMethod,\n getUiCurrency,\n insertFallbackPurchasePaymentMethod,\n purchase,\n totalCost,\n totalPaymentAmount,\n ]);\n\n return (\n <>\n \n setEditMode(!editMode)}\n numOfSales={saleIds.size}\n numOfListings={listingIds.size}\n onGoToMessageThread={\n inboundEmailId.data\n ? () => {\n navigate(`/messages/${inboundEmailId.data}`);\n }\n : undefined\n }\n enableMarkAsPaid={\n hasMarkPurchaseAsPaidFeature && totalCost > totalPaymentAmount\n }\n onMarkPurchaseAsPaid={onMarkPurchaseAsPaid}\n />\n \n \n \n \n \n );\n}\n\nfunction PurchaseMainDetailsBody({\n disabled,\n allowPaymentEdits,\n highlightTicketGroupIds,\n onTicketGroupAction,\n onSecondaryAccountOpen,\n}: PurchaseMainDetailsProps &\n Pick & {\n numOfSales: number;\n }) {\n const { setValue, getValues, watch } =\n useFormContext();\n const { posEntity: purchase } =\n useActivePosEntityContext();\n\n const canConvertPaymentLines = useUserHasFeature(Feature.ConvertPaymentLines);\n\n const canCreateTagType = useUserHasAnyOfPermissions(\n Permission.Purchases_AddTagType\n );\n const canEditTags = useUserCanUpdatePurchaseTags(purchase);\n const canEditCommission = useUserCanUpdatePurchaseCommission(purchase);\n const canLockUnlockCommission = useUserCanLockPurchaseCommission(purchase);\n\n const { loginContext } = useAppContext();\n const currentUserId = loginContext?.user?.userId!;\n const costDialog = useBasicDialog();\n const addPaymentDialog = useBasicDialog();\n const editPaymentDialog = useBasicDialog();\n const convertCurrencyDialog = useBasicDialog();\n const [currentCostModel, setCurrentCostModel] = useState();\n const [currentPayment, setCurrentPayment] = useState();\n\n const ticketGroups = watch('ticketGroups');\n const currencyCode = watch('currencyCode');\n\n const currency =\n currencyCode?.value ??\n loginContext?.user?.activeAccount?.currencyCode ??\n 'USD';\n\n const payments = watch('payments');\n const secondaryVendor = watch('secondaryVendor');\n const secondaryVendorAccount = watch('secondaryVendorAccount');\n const additionalCosts = watch('additionalCosts');\n const tags = watch('tags');\n const internalNotes = watch('privateNotes');\n\n const onSetPaymentPaid = useCallback(\n ({ paymentId }: PurchasePayment) => {\n const index = payments?.value?.findIndex(\n (p) => p.paymentId === paymentId\n );\n if (index != null && index >= 0) {\n const newPaymentDate = new Date().toISOString();\n if (newPaymentDate > payments!.value![index].paymentDueDate) {\n setValue(\n `payments.value.${index}.paymentStatus`,\n PurchasePaymentStatus.RefundNeeded\n );\n } else {\n setValue(\n `payments.value.${index}.paymentStatus`,\n PurchasePaymentStatus.Paid\n );\n }\n\n setValue(`payments.value.${index}.paymentDate`, newPaymentDate);\n setValue(`payments.hasChanged`, true);\n }\n },\n [payments, setValue]\n );\n const onEditPayment = useCallback(\n (payment: PurchasePayment) => {\n setCurrentPayment(payment);\n\n editPaymentDialog.launchDialog();\n },\n [editPaymentDialog]\n );\n const onEditPaymentSave = useCallback(\n (payment: PurchasePayment) => {\n const existingPayment = payments?.value?.find(\n (p) => p.paymentId === payment.paymentId\n );\n if (existingPayment) {\n payment.paymentId = existingPayment.paymentId;\n Object.assign(existingPayment, payment);\n\n setValue('payments', posChangedField(payments!.value));\n }\n\n editPaymentDialog.closeDialog();\n },\n [payments, editPaymentDialog, setValue]\n );\n const onEditPaymentCancel = useCallback(() => {\n setCurrentPayment(undefined);\n editPaymentDialog.closeDialog();\n }, [editPaymentDialog]);\n\n const onRemovePayment = useCallback(\n ({ paymentId }: PurchasePayment) => {\n const newPayments = payments?.value?.filter(\n (p) => p.paymentId !== paymentId\n );\n if (newPayments && newPayments?.length !== payments?.value?.length) {\n setValue('payments', posChangedField(newPayments));\n }\n\n editPaymentDialog.closeDialog();\n },\n [payments?.value, editPaymentDialog, setValue]\n );\n\n const onAddNewCost = useCallback(() => {\n setCurrentCostModel({\n id: newBigIntId(),\n cost: null,\n costType: PurchaseOrderCostType.Tax,\n date: new Date().toISOString(),\n description: null,\n } as CostDetail);\n\n costDialog.launchDialog();\n }, [costDialog, setCurrentCostModel]);\n\n const onAddNewCostSave = useCallback(\n (cost: CostDetail) => {\n const existingCost = additionalCosts?.value?.find(\n (p) => p.id === cost.id\n );\n if (existingCost) {\n existingCost.cost = cost.cost;\n existingCost.costType = cost.costType;\n existingCost.date = cost.date;\n existingCost.description = cost.description;\n\n setValue('additionalCosts', posChangedField(additionalCosts!.value));\n } else {\n setValue(\n 'additionalCosts',\n posChangedField([...(additionalCosts?.value ?? []), cost])\n );\n }\n costDialog.closeDialog();\n },\n [additionalCosts, costDialog, setValue]\n );\n\n const onAddNewCostCancel = useCallback(() => {\n setCurrentCostModel(undefined);\n costDialog.closeDialog();\n }, [costDialog]);\n\n const onAddNewPayment = useCallback(() => {\n addPaymentDialog.launchDialog();\n }, [addPaymentDialog]);\n\n const onAddNewPaymentSave = useCallback(\n (payments: PurchasePayment[]) => {\n const existingPayments = getValues('payments');\n if (existingPayments == null) {\n setValue('payments', posChangedField(payments));\n } else {\n setValue(\n 'payments',\n posChangedField([...existingPayments!.value!, ...payments])\n );\n }\n addPaymentDialog.closeDialog();\n },\n [setValue, getValues, addPaymentDialog]\n );\n\n const onAddNewPaymentCancel = useCallback(() => {\n addPaymentDialog.closeDialog();\n }, [addPaymentDialog]);\n\n const onEditCost = useCallback(\n (cost: CostDetail) => {\n setCurrentCostModel(cost);\n\n costDialog.launchDialog();\n },\n [costDialog]\n );\n\n const onRemoveCost = useCallback(\n (costId: number) => {\n const newCosts = additionalCosts?.value?.filter((p) => p.id !== costId);\n if (newCosts && newCosts?.length !== additionalCosts?.value?.length) {\n setValue('additionalCosts', posChangedField(newCosts));\n }\n },\n [additionalCosts, setValue]\n );\n\n const onInternalNotesChanged = useCallback(\n (notes?: string | null) => {\n return setValue('privateNotes', posChangedField(notes ?? null));\n },\n [setValue]\n );\n\n const onConvertCurrency = useCallback(\n (payment: PurchasePayment) => {\n setCurrentPayment(payment);\n convertCurrencyDialog.launchDialog();\n },\n [convertCurrencyDialog]\n );\n\n const onCancelConvertCurrency = useCallback(() => {\n convertCurrencyDialog.closeDialog();\n setCurrentPayment(undefined);\n }, [convertCurrencyDialog]);\n\n const onSaveConvertCurrency = useCallback(\n (formValues: ConvertCurrencyForm) => {\n if (currentPayment && payments) {\n const updatedPayment = Object.assign({}, currentPayment, formValues);\n const filteredPayments = (payments.value ?? []).map((payment) =>\n payment.paymentId === currentPayment.paymentId\n ? updatedPayment\n : payment\n );\n setValue('payments', posChangedField(filteredPayments));\n }\n convertCurrencyDialog.closeDialog();\n },\n [convertCurrencyDialog, currentPayment, payments, setValue]\n );\n\n return (\n <>\n
    \n \n \n \n {purchase?.pmtStat && (\n \n \n \n )}\n \n\n \n {!disabled && onTicketGroupAction && (\n \n \n onTicketGroupAction({\n ticketGroupId: -1,\n action: TicketGroupEditReason.AddTickets,\n })\n }\n >\n \n \n \n \n )}\n
    \n {secondaryVendor && secondaryVendorAccount && (\n \n )}\n
    \n \n \n \n \n \n \n
    \n \n
    \n \n \n \n \n \n \n {allowPaymentEdits && (\n \n \n \n )}\n
    \n
    \n \n \n \n \n
    \n
    \n \n \n \n\n {\n setValue('tags', { value: tags, hasChanged: true });\n }}\n disabled={disabled}\n entityType={ActionOutboxEntityType.Purchase}\n canCreateTagType={canCreateTagType}\n canEditTags={canEditTags}\n />\n
    \n\n {costDialog.dialogProps.isOpen && (\n \n )}\n\n {addPaymentDialog.dialogProps.isOpen && (\n \n )}\n {editPaymentDialog.dialogProps.isOpen && currentPayment && (\n \n )}\n\n {canConvertPaymentLines &&\n convertCurrencyDialog.dialogProps.isOpen &&\n currentPayment && (\n \n )}\n \n );\n}\n","import { ComponentProps, ReactElement } from 'react';\nimport { Controller, useForm } from 'react-hook-form';\nimport { CancelButton } from 'src/components/Buttons';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { Button } from 'src/core/ui';\nimport {\n FieldError,\n FieldLabel,\n FieldWrapper,\n} from 'src/modals/common/Purchase';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PAYMENT_METHOD_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { PurchasePaymentMethod } from 'src/WebApiController';\n\nexport type AddPurchasePaymentMethodDialogProps = Omit<\n ComponentProps,\n 'header' | 'footer'\n> & {\n onSave?: (data: PurchasePaymentMethod) => void | Promise;\n onCancel?: () => void;\n};\n\nexport function AddPurchasePaymentMethodDialog({\n onSave,\n onCancel,\n ...genericDialogProps\n}: AddPurchasePaymentMethodDialogProps): ReactElement | null {\n const requiredText = useContent(ContentId.Required);\n\n const {\n control,\n register,\n reset,\n handleSubmit,\n formState: { isSubmitting, errors },\n } = useForm({\n defaultValues: {\n id: -1,\n },\n });\n\n return (\n }\n footer={\n <>\n \n \n \n \n \n }\n onClosed={() => {\n reset();\n }}\n {...genericDialogProps}\n onCancel={onCancel}\n >\n \n \n \n \n (\n \n )}\n />\n {errors.type && {errors.type?.message}}\n \n \n }\n >\n \n \n \n \n }\n >\n \n \n \n \n );\n}\n","import { useCallback, useMemo, useState } from 'react';\nimport { usePurchasePaymentMethodSelector } from 'src/components/Selectors/PurchasePaymentMethodSelector';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PosSelect, PosSelectProps } from 'src/core/POS/PosSelect';\nimport { AddPurchasePaymentMethodDialog } from 'src/dialogs/AddPurchasePaymentMethodDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { PurchaseClient, PurchasePaymentMethod } from 'src/WebApiController';\n\nexport type PurchasePaymentMethodSelectionInputProps = Omit<\n PosSelectProps,\n 'valueOptionsContent'\n> & {\n hideAdditionalOptions?: boolean;\n};\n\nexport function PurchasePaymentMethodSelectionInput({\n disabled,\n onChange,\n hideAdditionalOptions,\n ...posSelectProps\n}: PurchasePaymentMethodSelectionInputProps) {\n const addNewPaymentMethodContent = useContent(\n ContentId.AddPaymentMethodAction\n );\n const { activeAccountWebClientConfig } = useAppContext();\n const additionalOptions = useMemo(\n () => ({\n [ContentId.AddPaymentMethodAction]: addNewPaymentMethodContent + '...',\n }),\n [addNewPaymentMethodContent]\n );\n\n const { query, posSelectProps: hookPosSelectProps } =\n usePurchasePaymentMethodSelector({\n disabled,\n additionalOptions: hideAdditionalOptions ? undefined : additionalOptions,\n });\n\n const { showErrorDialog } = useErrorBoundaryContext();\n const insertPurchasePaymentMethod = useCallback(\n (paymentMethod: PurchasePaymentMethod) =>\n tryInvokeApi(\n () =>\n new PurchaseClient(\n activeAccountWebClientConfig\n ).insertPurchasePaymentMethod(paymentMethod),\n (error) => {\n showErrorDialog('PurchaseClient.insertPurchasePaymentMethod', error, {\n trackErrorData: paymentMethod,\n });\n }\n ),\n [activeAccountWebClientConfig, showErrorDialog]\n );\n\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n return (\n <>\n {\n if (option && option in additionalOptions) {\n setIsDialogOpen(true);\n return;\n }\n\n onChange(option);\n }}\n />\n {\n const newId = await insertPurchasePaymentMethod(paymentMethod);\n await query.refetch();\n if (newId !== undefined) {\n onChange(String(newId));\n }\n setIsDialogOpen(false);\n }}\n onCancel={() => {\n setIsDialogOpen(false);\n }}\n />\n \n );\n}\n","import { ComponentProps, useCallback, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Radio, RadioGroup, Stack } from 'src/core/ui';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { PurchaseClient } from 'src/WebApiController';\nimport styled from 'styled-components/macro';\n\nconst RadioLabelDescription = styled.div`\n font-size: ${() => vars.typography.fontSize['sm']};\n`;\n\nexport type PurchaseCancellationType = 'cancel' | 'void';\n\nexport type CancelPurchaseDialogProps = ComponentProps & {\n purchaseOrderId: number;\n numOfSales: number;\n onSave: () => void;\n onCancel: () => void;\n};\n\nexport function CancelPurchaseDialog({\n purchaseOrderId,\n numOfSales,\n onSave,\n onCancel,\n ...dialogProps\n}: CancelPurchaseDialogProps) {\n const [cancellationType, setCancellationType] =\n useState('cancel');\n const [isSecondScreen, setIsSecondScreen] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const onInternalSubmit = useCallback(async () => {\n await tryInvokeApi(\n async () => {\n setIsSubmitting(true);\n\n const results =\n cancellationType === 'cancel'\n ? await new PurchaseClient(\n activeAccountWebClientConfig\n ).cancelPurchaseOrder(purchaseOrderId, null, null)\n : await new PurchaseClient(\n activeAccountWebClientConfig\n ).voidPurchaseOrder(purchaseOrderId);\n\n if (results) {\n onSave();\n setIsSecondScreen(false);\n }\n },\n (error) => {\n showErrorDialog(\n cancellationType === 'cancel'\n ? 'PurchaseClient().cancelPurchaseOrder'\n : 'PurchaseClient().voidPurchaseOrder',\n error,\n {\n trackErrorData: { purchaseOrderId },\n }\n );\n },\n () => setIsSubmitting(false)\n );\n }, [\n activeAccountWebClientConfig,\n cancellationType,\n onSave,\n purchaseOrderId,\n showErrorDialog,\n ]);\n\n const cancelPurchase = () => {\n setIsSecondScreen(false);\n onCancel();\n };\n\n if (isSecondScreen) {\n return (\n }\n footer={\n <>\n \n onInternalSubmit()}\n >\n \n \n \n }\n {...dialogProps}\n onCancel={cancelPurchase}\n >\n {isSubmitting ? (\n \n ) : numOfSales === 1 ? (\n \n ) : (\n \n )}\n \n );\n }\n\n return (\n }\n footer={\n <>\n {onCancel && (\n \n )}\n {\n if (numOfSales > 0) {\n setIsSecondScreen(true);\n } else {\n onInternalSubmit();\n }\n }}\n >\n \n \n \n }\n {...dialogProps}\n onCancel={onCancel}\n >\n {isSubmitting ? (\n \n ) : (\n {\n if (value === 'cancel' || value === 'void') {\n setCancellationType(value);\n }\n }}\n value={cancellationType}\n />\n )}\n \n );\n}\n\nexport const CancelPurchaseDialogModeRadioGroup = ({\n onValueChange,\n value,\n disabled,\n}: {\n onValueChange?: ((value: string) => void) | undefined;\n value: PurchaseCancellationType;\n disabled?: boolean;\n}) => {\n return (\n \n \n \n \n \n \n \n \n }\n />\n \n \n \n \n \n \n }\n />\n \n \n );\n};\n","import { ComponentProps, useCallback, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { PurchaseClient } from 'src/WebApiController';\n\nexport type RestorePurchaseDialogProps = ComponentProps & {\n purchaseOrderId: number;\n onSave: () => void;\n onCancel: () => void;\n};\n\nexport function RestorePurchaseDialog({\n purchaseOrderId,\n onSave,\n onCancel,\n ...dialogProps\n}: RestorePurchaseDialogProps) {\n const [isSubmitting, setIsSubmitting] = useState(false);\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const onInternalSubmit = useCallback(async () => {\n await tryInvokeApi(\n async () => {\n setIsSubmitting(true);\n\n const results = await new PurchaseClient(\n activeAccountWebClientConfig\n ).restorePurchaseOrder(purchaseOrderId);\n\n if (results) {\n onSave();\n }\n },\n (error) => {\n showErrorDialog('PurchaseClient.restorePurchaseOrder', error, {\n trackErrorData: { purchaseOrderId },\n });\n },\n () => setIsSubmitting(false)\n );\n }, [activeAccountWebClientConfig, onSave, purchaseOrderId, showErrorDialog]);\n\n return (\n }\n footer={\n <>\n \n onInternalSubmit()}\n >\n \n \n \n }\n {...dialogProps}\n onCancel={onCancel}\n >\n {isSubmitting ? (\n \n ) : (\n \n )}\n \n );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { SellerAccountClient } from 'src/WebApiController';\n\nexport function useSyncCenterSettings() {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const query = useQuery({\n queryKey: [\n 'getSyncCenterSettings',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return new SellerAccountClient(\n activeAccountWebClientConfig\n ).getSyncCenterSettings();\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n staleTime: Infinity,\n meta: {\n persist: false,\n\n onError: (error: ErrorTypes) => {\n showErrorDialog('SellerAccountClient.getSyncCenterSettings', error);\n },\n },\n });\n\n return query;\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { PurchaseClient } from 'src/WebApiController';\n\nexport const useGetIsPurchaseIdsInUsedForVendorId = (\n orderId: string | null | undefined,\n vendorId: number | null | undefined\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const query = useQuery({\n queryKey: ['PurchaseClient.getIsPurchasingIdsInUse', orderId, vendorId],\n queryFn: async () => {\n if (activeAccountWebClientConfig == null || !orderId) {\n return null;\n }\n\n return await new PurchaseClient(\n activeAccountWebClientConfig\n ).getIsPurchasingIdsInUse(orderId, vendorId);\n },\n\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('PurchaseClient.getIsPurchasingIdsInUse', error, {\n trackErrorData: {\n orderId,\n vendorId,\n },\n });\n },\n },\n });\n\n return {\n purchasingIdInUseQuery: query,\n };\n};\n","import * as Tabs from '@radix-ui/react-tabs';\nimport clsx from 'clsx';\nimport { ComponentPropsWithoutRef, forwardRef } from 'react';\nimport { mergeProps } from 'src/core/utils';\n\nimport { ScrollableToolbar } from '../ScrollableToolbar';\nimport * as styles from './Tabs.css';\n\nexport const Root = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef\n>(function Root({ ...props }, ref) {\n return (\n \n );\n});\n\nexport const Trigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef & {\n hasErrors?: boolean;\n orientation?: 'horizontal' | 'vertical';\n }\n>(function Trigger({ hasErrors, orientation, ...props }, ref) {\n return (\n \n );\n});\n\nexport const List = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef & {\n orientation?: 'horizontal' | 'vertical';\n rootClassName?: string;\n }\n>(function List({ orientation, rootClassName, ...props }, ref) {\n return (\n \n \n \n );\n});\n\nexport const Content = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef & {\n orientation?: 'horizontal' | 'vertical';\n }\n>(function Content({ orientation, ...props }, ref) {\n return (\n \n );\n});\n","import { useEffect, useRef } from 'react';\nimport * as Tabs from 'src/core/ui/Tabs';\n\nimport * as styles from './TabPanel.css';\nimport type { TabPanelProps } from './TabPanel.types';\n\n/**\n * Component that renders tabs in a bar that allows users to swap between content\n */\nexport const TabPanel = ({\n tabs,\n activeTabIndex,\n onValueChange,\n orientation = 'horizontal',\n tabListProps,\n tabContentProps,\n ...props\n}: TabPanelProps) => {\n const activeTab = tabs[activeTabIndex];\n\n const ref = useRef(null);\n\n useEffect(() => {\n ref.current?.focus();\n }, [activeTab]);\n\n return (\n \n \n {tabs.map((tab) => (\n \n {tab.title}\n \n ))}\n \n {tabs.map((tab) => (\n \n {tab.content}\n \n ))}\n \n );\n};\n","import type { OnTabPanelKeyDown } from './TabPanel.types';\n\nexport const onTabPanelKeyDown: OnTabPanelKeyDown = (\n e,\n setActiveTab,\n optionsLength\n) => {\n const isLeftKey = e.key === 'ArrowLeft';\n const isRightKey = e.key === 'ArrowRight';\n if (!isLeftKey && !isRightKey) return;\n\n e.preventDefault();\n\n setActiveTab((current) => {\n if (isLeftKey) {\n const nextIndex = current - 1;\n return nextIndex < 0 ? optionsLength - 1 : nextIndex;\n }\n const nextIndex = current + 1;\n return nextIndex > optionsLength - 1 ? 0 : nextIndex;\n });\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const HeaderContent = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n width: 100%;\n padding: ${() =>\n `${vars.spacing.lg} ${vars.spacing['4xl']} ${vars.spacing.m} 0`};\n`;\n\nexport const EntityInfoDiv = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n align-items: flex-end;\n ${(props) => props.theme.typography.getStyles('body2')}\n ${({ theme: { media, spacing, typography } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n gap: ${vars.spacing.sm};\n ${typography.getStyles('body1')}\n }`\n )}`}\n`;\n\nexport const EntityIdNumberDiv = styled.div`\n ${(props) => props.theme.typography.getStyles('subtitle1')}\n color: ${(props) => props.theme.colors.textSecondary};\n`;\nexport const EntityTextDiv = styled.div`\n color: ${(props) => props.theme.colors.textPrimary};\n ${(props) => props.theme.typography.getStyles('body2')}\n`;\n","import * as styles from './EventEntityHeader.css';\nimport { HeaderContent } from './EventEntityHeader.styled';\n\nexport const EventEntityHeader = ({ title }: { title: React.ReactNode }) => {\n return (\n
    \n \n

    {title}

    \n
    \n
    \n );\n};\n","import { EventEntityHeader } from './EventEntityHeader';\n\nexport const ConnectedEventEntityHeader = ({\n title,\n}: {\n title: React.ReactNode;\n}) => {\n return title ? : null;\n};\n","import { useContext } from 'react';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { EventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalHeader } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { SomethingWentWrong } from 'src/views';\nimport styled from 'styled-components/macro';\n\nimport { PosSpinner } from '../core/POS/PosSpinner';\n\nexport const useEventItemLoadingDisplay = (\n loadingContentId: FormatContentId,\n searchingContentId: FormatContentId,\n errorContentId: FormatContentId,\n activeId?: string\n) => {\n const { posEntityId, posEntityDisplayId, isLoading, posEntity, errorInfo } =\n useActivePosEntityContext();\n\n const { closeModal } = useContext(ModalContext);\n\n if (isLoading) {\n return {\n isLoading,\n posEntity,\n loadingState: (\n <>\n \n } />\n \n \n \n \n \n \n ),\n };\n }\n // unknown error\n if (errorInfo) {\n return {\n isLoading,\n posEntity,\n loadingState: (\n <>\n {null}\n \n \n \n \n ),\n };\n }\n\n if (posEntity == null) {\n return {\n isLoading,\n posEntity,\n loadingState: (\n <>\n {null}\n \n \n \n \n ),\n };\n }\n\n return { isLoading, posEntity, loadingState: null };\n};\n\nconst SpinnerWrapper = styled.div`\n display: flex;\n flex-direction: column;\n height: 100%;\n justify-content: center;\n align-items: center;\n color: ${(props) => props.theme.colors.textPrimary};\n\n min-height: 300px;\n`;\n\nconst NotFoundWrapper = styled(SpinnerWrapper)`\n font-weight: bold;\n color: ${({ theme }) => theme.colors.textStrong};\n`;\n","import {\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { UnsavedChanges } from 'src/dialogs/UnsavedChanges';\nimport { ModalHeader, ModalProps } from 'src/modals/Modal';\n\nexport type CancellableFormHeaderProps = PropsWithChildren<{\n onClose?: () => void;\n onBeforeClose?: () => void;\n cancelTo?: ModalProps;\n showDialogOnCancel?: boolean;\n disabled?: boolean;\n}>;\n\nexport function CancellableFormHeader({\n onClose,\n onBeforeClose,\n cancelTo,\n children, // action button\n showDialogOnCancel,\n disabled,\n}: PropsWithChildren) {\n const [showDialog, setShowDialog] = useState(false);\n const { setModal, closeModal, updateModal } = useContext(ModalContext);\n\n /**\n * Allow a modal 'config' (`Modal` component props) to determine\n * Which modal to go back to in the workflow\n * If nothing is provided, treat as a close button\n */\n const goToCancelView = useCallback(() => {\n setShowDialog(false);\n\n onBeforeClose?.();\n\n if (cancelTo) {\n setModal(cancelTo);\n } else if (onClose) {\n onClose();\n } else {\n closeModal(true);\n }\n }, [onBeforeClose, onClose, cancelTo, setModal, closeModal]);\n\n const onCancel = useCallback(() => {\n if (showDialogOnCancel) {\n setShowDialog(true);\n } else {\n goToCancelView();\n }\n }, [showDialogOnCancel, goToCancelView]);\n\n const closeDialog = useCallback(() => {\n setShowDialog(false);\n }, [setShowDialog]);\n\n useEffect(() => {\n updateModal({ onCloseOverride: onCancel });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [showDialogOnCancel]);\n\n return (\n \n {children}\n \n \n );\n}\n","import { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionType,\n ActivityLogQuery,\n AuditActionType,\n} from 'src/WebApiController';\n\nexport const EMPTY_ACTIVITY_LOG_QUERY: ActivityLogQuery = {\n userId: null,\n includeUserOnly: null,\n impersonatedUserId: null,\n entityId: null,\n entityType: null,\n actionTypes: null,\n auditActionTypes: null,\n take: null,\n skip: null,\n tagName: null,\n};\n\nexport const TAB_ALL = 'all';\n\n/*\n * Listing Entity Activity Log Constants\n */\n\nexport const enum ListingActivityLogTab {\n All = TAB_ALL,\n Price = 'price',\n Broadcast = 'broadcast',\n Delivery = 'delivery',\n DeliveryDocuments = 'deliveryDocuments',\n PrivateNotes = 'privateNotes',\n Tickets = 'tickets',\n Event = 'event',\n Allocation = 'allocation',\n}\n\nexport const TAG_AUDIT_ACTION_TYPES: AuditActionType[] = [\n AuditActionType.TagCreate,\n AuditActionType.TagDelete,\n AuditActionType.TagUpdate,\n AuditActionType.TagTypeCreate,\n AuditActionType.TagTypeUpdate,\n];\n\nexport const LISTING_ACTIVITY_LOG_TAB_TO_ACTION_TYPES: Record<\n ListingActivityLogTab,\n ActionType[] | null\n> = {\n [ListingActivityLogTab.All]: null,\n [ListingActivityLogTab.Price]: [\n ActionType.ListingUpdateUnitNetProceeds,\n ActionType.ListingUpdateAllInPrice,\n ActionType.ListingBroadcastUpdateAllInPrice,\n ActionType.ListingBroadcastUpdateUnitNetProceeds,\n ],\n [ListingActivityLogTab.Broadcast]: [\n ActionType.ListingBroadcast,\n ActionType.ListingUnbroadcast,\n ActionType.ListingMarketplaceInsert,\n ActionType.ListingMarketplaceUpdate,\n ActionType.ListingMarketplaceDelete,\n ActionType.BroadcastMarketplaceListing,\n ActionType.UnbroadcastMarketplaceListing,\n ],\n [ListingActivityLogTab.Delivery]: [\n ActionType.ListingUpdateDeliveryType,\n ActionType.ListingUpdateInHandDate,\n ActionType.ListingBroadcastUpdateInHandDate,\n ActionType.ListingBroadcastUpdateDeliveryType,\n ],\n [ListingActivityLogTab.DeliveryDocuments]: [\n ActionType.ListingPreDeliverBarcodes,\n ActionType.ListingPreDeliverETickets,\n ActionType.ListingPreDeliverTicketExternalIds,\n ActionType.ListingPreDeliverTicketUrls,\n ActionType.ListingRemoveTicketBarcodes,\n ActionType.ListingRemoveTicketUserDocuments,\n ActionType.ListingUploadVerificationDocumentAction,\n ActionType.ListingDocumentUploadActivity,\n ActionType.ListingDocumentViewed,\n ActionType.ListingDocumentDownloaded,\n ],\n [ListingActivityLogTab.PrivateNotes]: [\n ActionType.ListingUpdateListingNotes,\n ActionType.ListingBroadcastUpdateListingNotes,\n ],\n [ListingActivityLogTab.Tickets]: [\n ActionType.ListingUpdateSplitType,\n ActionType.ListingUpdateHideSeats,\n ActionType.ListingBroadcastUpdateSplitType,\n ActionType.ListingUpdateQuantity,\n ActionType.ListingBroadcastUpdateQuantity,\n ActionType.ListingUpdateSeating,\n ActionType.ListingBroadcastUpdateSeating,\n ActionType.ListingMarketplaceSeatingOverrideUpdate,\n ],\n [ListingActivityLogTab.Event]: [],\n [ListingActivityLogTab.Allocation]: [\n ActionType.ListingSaleMarketplaceInsert,\n ActionType.ListingSaleConfirm,\n ActionType.ListingSaleDeallocate,\n ],\n};\n\nexport const LISTING_ACTIVITY_LOG_TAB_TO_AUDIT_ACTION_TYPES: Record<\n ListingActivityLogTab,\n AuditActionType[] | null\n> = {\n [ListingActivityLogTab.All]: null,\n [ListingActivityLogTab.Price]: [],\n [ListingActivityLogTab.Broadcast]: [],\n [ListingActivityLogTab.Delivery]: [],\n [ListingActivityLogTab.DeliveryDocuments]: [],\n [ListingActivityLogTab.PrivateNotes]: [],\n [ListingActivityLogTab.Tickets]: [],\n [ListingActivityLogTab.Event]: [AuditActionType.ListingSellerEventUpdate],\n [ListingActivityLogTab.Allocation]: [],\n};\n\nexport const LISTING_ACTIVITY_LOG_TAB_TO_CID: Record<\n ListingActivityLogTab,\n ContentId\n> = {\n [ListingActivityLogTab.All]: ContentId.All,\n [ListingActivityLogTab.Price]: ContentId.Price,\n [ListingActivityLogTab.Broadcast]: ContentId.Broadcast,\n [ListingActivityLogTab.Delivery]: ContentId.Delivery,\n [ListingActivityLogTab.DeliveryDocuments]: ContentId.DeliveryDocuments,\n [ListingActivityLogTab.PrivateNotes]: ContentId.Notes,\n [ListingActivityLogTab.Tickets]: ContentId.Tickets,\n [ListingActivityLogTab.Event]: ContentId.Event,\n [ListingActivityLogTab.Allocation]: ContentId.Allocation,\n};\n\n/*\n * Sale Entity Activity Log Constants\n */\n\nexport const enum SaleActivityLogTab {\n All = TAB_ALL,\n Delivery = 'delivery',\n Cost = 'cost',\n PrivateNotes = 'privateNotes',\n Commission = 'commission',\n Allocation = 'allocation',\n}\n\nexport const SALE_ACTIVITY_LOG_TAB_TO_ACTION_TYPES: Record<\n SaleActivityLogTab,\n ActionType[] | null\n> = {\n [SaleActivityLogTab.All]: null,\n [SaleActivityLogTab.Delivery]: [\n ActionType.SaleUploadBarcodes,\n ActionType.SaleUploadTicketUrls,\n ActionType.SaleUploadEtickets,\n ActionType.SaleUploadProofOfTransfer,\n ActionType.SaleDocumentUploadActivity,\n ActionType.SaleUploadTransferProofId,\n ActionType.SaleBroadcastUploadBarcodes,\n ActionType.SaleBroadcastUploadETickets,\n ActionType.SaleBroadcastUploadTransferUrls,\n ActionType.SaleBroadcastUploadTransferProof,\n ActionType.SaleBroadcastUploadTransferProofId,\n ],\n [SaleActivityLogTab.Cost]: [\n ActionType.SaleCostUpdate,\n ActionType.SaleCostInsert,\n ActionType.SaleCostDelete,\n ],\n [SaleActivityLogTab.PrivateNotes]: [],\n [SaleActivityLogTab.Commission]: [ActionType.SaleCommissionsUpdate],\n [SaleActivityLogTab.Allocation]: [\n ActionType.SaleMarketplaceInsert,\n ActionType.SaleConfirm,\n ActionType.SaleDeallocate,\n ],\n};\n\nexport const SALE_ACTIVITY_LOG_TAB_TO_AUDIT_ACTION_TYPES: Record<\n SaleActivityLogTab,\n AuditActionType[] | null\n> = {\n [SaleActivityLogTab.All]: null,\n [SaleActivityLogTab.Delivery]: [],\n [SaleActivityLogTab.Cost]: [],\n [SaleActivityLogTab.PrivateNotes]: [\n AuditActionType.SaleInternalNotesInsert,\n AuditActionType.SaleInternalNotesUpdate,\n ],\n [SaleActivityLogTab.Commission]: [],\n [SaleActivityLogTab.Allocation]: [],\n};\n\nexport const SALE_ACTIVITY_LOG_TAB_TO_CID: Record<\n SaleActivityLogTab,\n ContentId\n> = {\n [SaleActivityLogTab.All]: ContentId.All,\n [SaleActivityLogTab.Delivery]: ContentId.Delivery,\n [SaleActivityLogTab.Cost]: ContentId.Cost,\n [SaleActivityLogTab.PrivateNotes]: ContentId.PrivateNote,\n [SaleActivityLogTab.Commission]: ContentId.Commission,\n [SaleActivityLogTab.Allocation]: ContentId.Allocation,\n};\n\n/*\n * Purchase order entity activity log constants\n */\nexport const enum PurchaseOrderActivityLogTab {\n All = TAB_ALL,\n Cost = 'cost',\n Payment = 'payment',\n TicketGroups = 'ticket group',\n PurchaseDetails = 'purchase detail',\n Commission = 'commission',\n PrivateNotes = 'privateNotes',\n}\n\nexport const PURCHASE_ORDER_ACTIVITY_LOG_TAB_TO_ACTION_TYPES: Record<\n PurchaseOrderActivityLogTab,\n ActionType[] | null\n> = {\n [PurchaseOrderActivityLogTab.All]: null,\n [PurchaseOrderActivityLogTab.Cost]: [\n ActionType.PurchaseCostDelete,\n ActionType.PurchaseCostInsert,\n ActionType.PurchaseCostUpdate,\n ActionType.PurchaseCostsMerge,\n ],\n [PurchaseOrderActivityLogTab.Payment]: [\n ActionType.PurchasePaymentDelete,\n ActionType.PurchasePaymentInsert,\n ActionType.PurchasePaymentUpdate,\n ActionType.PurchasePaymentsMerge,\n ],\n [PurchaseOrderActivityLogTab.TicketGroups]: [\n ActionType.PurchaseTicketGroupDelete,\n ActionType.PurchaseTicketGroupInsert,\n ActionType.PurchaseTicketGroupUpdate,\n ActionType.PurchaseTicketGroupsMerge,\n ],\n [PurchaseOrderActivityLogTab.PurchaseDetails]: [\n ActionType.PurchaseUpdate,\n ActionType.PurchaseInsert,\n ActionType.PurchaseCancel,\n ],\n [PurchaseOrderActivityLogTab.Commission]: [],\n [PurchaseOrderActivityLogTab.PrivateNotes]: [],\n};\n\nexport const PURCHASE_ORDER_ACTIVITY_LOG_TAB_TO_AUDIT_ACTION_TYPES: Record<\n PurchaseOrderActivityLogTab,\n AuditActionType[] | null\n> = {\n [PurchaseOrderActivityLogTab.All]: null,\n [PurchaseOrderActivityLogTab.Cost]: [],\n [PurchaseOrderActivityLogTab.Payment]: [],\n [PurchaseOrderActivityLogTab.TicketGroups]: [],\n [PurchaseOrderActivityLogTab.PurchaseDetails]: [],\n [PurchaseOrderActivityLogTab.Commission]: [\n AuditActionType.PurchaseCommissionInsert,\n AuditActionType.PurchaseCommissionUpdate,\n ],\n [PurchaseOrderActivityLogTab.PrivateNotes]: [\n AuditActionType.PurchaseInternalNotesInsert,\n AuditActionType.PurchaseInternalNotesUpdate,\n ],\n};\n\nexport const PURCHASE_ORDER_ACTIVITY_LOG_TO_CID: Record<\n PurchaseOrderActivityLogTab,\n ContentId\n> = {\n [PurchaseOrderActivityLogTab.All]: ContentId.All,\n [PurchaseOrderActivityLogTab.Cost]: ContentId.Cost,\n [PurchaseOrderActivityLogTab.Payment]: ContentId.Payment,\n [PurchaseOrderActivityLogTab.TicketGroups]: ContentId.TicketGroups,\n [PurchaseOrderActivityLogTab.PurchaseDetails]: ContentId.PurchaseDetails,\n [PurchaseOrderActivityLogTab.Commission]: ContentId.Commission,\n [PurchaseOrderActivityLogTab.PrivateNotes]: ContentId.PrivateNote,\n};\n","import { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n ActionType,\n ActivityLogQuery,\n AuditActionType,\n} from 'src/WebApiController';\n\nimport {\n EMPTY_ACTIVITY_LOG_QUERY,\n LISTING_ACTIVITY_LOG_TAB_TO_ACTION_TYPES,\n LISTING_ACTIVITY_LOG_TAB_TO_AUDIT_ACTION_TYPES,\n LISTING_ACTIVITY_LOG_TAB_TO_CID,\n ListingActivityLogTab,\n PURCHASE_ORDER_ACTIVITY_LOG_TAB_TO_ACTION_TYPES,\n PURCHASE_ORDER_ACTIVITY_LOG_TAB_TO_AUDIT_ACTION_TYPES,\n PURCHASE_ORDER_ACTIVITY_LOG_TO_CID,\n PurchaseOrderActivityLogTab,\n SALE_ACTIVITY_LOG_TAB_TO_ACTION_TYPES,\n SALE_ACTIVITY_LOG_TAB_TO_AUDIT_ACTION_TYPES,\n SALE_ACTIVITY_LOG_TAB_TO_CID,\n SaleActivityLogTab,\n TAG_AUDIT_ACTION_TYPES,\n} from './ActivityLogModal.constants';\n\nexport const getActivityLogFilterByTab = (\n entityType: ActionOutboxEntityType | null,\n tab: string,\n isTagTab = false\n): ActivityLogQuery => {\n let actionTypes: ActionType[] | null = null;\n let auditActionTypes: AuditActionType[] | null = null;\n let tagName: string | null = null;\n if (isTagTab) {\n tagName = tab;\n actionTypes = [];\n auditActionTypes = TAG_AUDIT_ACTION_TYPES;\n } else {\n if (entityType === ActionOutboxEntityType.Listing) {\n actionTypes =\n LISTING_ACTIVITY_LOG_TAB_TO_ACTION_TYPES[tab as ListingActivityLogTab];\n auditActionTypes =\n LISTING_ACTIVITY_LOG_TAB_TO_AUDIT_ACTION_TYPES[\n tab as ListingActivityLogTab\n ];\n } else if (entityType === ActionOutboxEntityType.Sale) {\n actionTypes =\n SALE_ACTIVITY_LOG_TAB_TO_ACTION_TYPES[tab as SaleActivityLogTab];\n auditActionTypes =\n SALE_ACTIVITY_LOG_TAB_TO_AUDIT_ACTION_TYPES[tab as SaleActivityLogTab];\n } else if (entityType === ActionOutboxEntityType.Purchase) {\n actionTypes =\n PURCHASE_ORDER_ACTIVITY_LOG_TAB_TO_ACTION_TYPES[\n tab as PurchaseOrderActivityLogTab\n ];\n auditActionTypes =\n PURCHASE_ORDER_ACTIVITY_LOG_TAB_TO_AUDIT_ACTION_TYPES[\n tab as PurchaseOrderActivityLogTab\n ];\n }\n }\n\n return {\n ...EMPTY_ACTIVITY_LOG_QUERY,\n actionTypes,\n auditActionTypes,\n entityType,\n tagName,\n };\n};\n\nexport const getActivityLogTabValues = (\n entityType: ActionOutboxEntityType | null\n): {\n value: string;\n contentId: ContentId;\n}[] => {\n if (!entityType) {\n return [];\n }\n\n if (entityType === ActionOutboxEntityType.Listing) {\n return Object.entries(LISTING_ACTIVITY_LOG_TAB_TO_CID).map(\n ([tabKey, cid]) => {\n return {\n value: tabKey,\n contentId: cid,\n };\n }\n );\n } else if (entityType === ActionOutboxEntityType.Sale) {\n return Object.entries(SALE_ACTIVITY_LOG_TAB_TO_CID).map(([tabKey, cid]) => {\n return {\n value: tabKey,\n contentId: cid,\n };\n });\n } else if (entityType === ActionOutboxEntityType.Purchase) {\n return Object.entries(PURCHASE_ORDER_ACTIVITY_LOG_TO_CID).map(\n ([tabKey, cid]) => {\n return {\n value: tabKey,\n contentId: cid,\n };\n }\n );\n }\n\n return [];\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { ActivityLogClient, ActivityLogQuery } from 'src/WebApiController';\n\nexport const useGetActivityLogByFilter = (\n activityLogFilterQuery: ActivityLogQuery,\n getAuditData: boolean,\n disabled: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n !disabled && activeAccountWebClientConfig.activeAccountId != null;\n const activityLogQuery = useQuery({\n queryKey: [\n 'ActivityLogClient.getActivityLogByFilter',\n activeAccountWebClientConfig.activeAccountId,\n activityLogFilterQuery,\n getAuditData,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n if (getAuditData) {\n return await new ActivityLogClient(\n activeAccountWebClientConfig\n ).getActivityLogWithAuditByFilter(activityLogFilterQuery);\n }\n\n return await new ActivityLogClient(\n activeAccountWebClientConfig\n ).getActivityLogByFilter(activityLogFilterQuery);\n },\n\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('ActivityLogClient.getActivityLogByFilter', error, {\n itemId: activityLogFilterQuery.entityId,\n entityType: activityLogFilterQuery.entityType,\n activityLogFilterQuery,\n });\n },\n },\n enabled: shouldQuery,\n });\n\n return { activityLogQuery };\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useCallback, useMemo, useState } from 'react';\nimport { ActivityLog } from 'src/components/ActivityLog';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { TabPanel } from 'src/core/ui/TabPanel';\nimport { TabItem } from 'src/core/ui/TabPanel/TabPanel.types';\nimport { useEventItemLoadingDisplay } from 'src/hooks/useEventItemLoadingDisplay';\nimport { BackToModalButton } from 'src/modals/common';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalBody, ModalFooter, ModalProps } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { ActivityLogClient } from 'src/WebApiController';\n\nimport { CancellableFormHeader } from '../common/CancellableFormHeader';\nimport { ModalBodyDataContainer } from '../Modal/Modal.styled';\nimport { ListingActivityLogTab, TAB_ALL } from './ActivityLogModal.constants';\nimport {\n getActivityLogFilterByTab,\n getActivityLogTabValues,\n} from './ActivityLogModal.utils';\nimport { useGetActivityLogByFilter } from './useGetActivityLogByFilter';\n\nexport const ActivityLogModal = ({ cancelTo }: { cancelTo?: ModalProps }) => {\n const { loadingState } = useEventItemLoadingDisplay(\n FormatContentId.LoadingSaleId,\n FormatContentId.SearchingForSaleId,\n FormatContentId.CouldNotFindSaleId\n );\n\n return loadingState ? (\n loadingState\n ) : (\n \n );\n};\n\nconst ActivityLogModalContent = ({ cancelTo }: { cancelTo?: ModalProps }) => {\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const details = useActivePosEntityContext();\n\n const [activeTab, setActiveTab] = useState(TAB_ALL);\n\n const shouldQuery =\n details.posEntity?.id != null &&\n details.posEntity?.entityType != null &&\n activeAccountWebClientConfig.activeAccountId != null;\n\n const activityLogTagNameQuery = useQuery({\n queryKey: [\n 'ActivityLogClient.GetActivityLogTagNamesByEntityId',\n activeAccountWebClientConfig.activeAccountId,\n details.posEntity?.id,\n details.posEntity?.entityType,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n return await new ActivityLogClient(\n activeAccountWebClientConfig\n ).getActivityLogTagNamesByEntityId(\n details.posEntity!.id!,\n details.posEntity!.entityType\n );\n },\n\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError(\n 'ActivityLogClient.getActivityLogTagNamesByEntityId',\n error,\n {\n itemId: details.posEntity?.id,\n entityType: details.posEntity?.entityType,\n }\n );\n },\n },\n enabled: shouldQuery,\n });\n\n const tagNames = useMemo(\n () =>\n activityLogTagNameQuery.data?.toSorted((a, b) => a.localeCompare(b)) ??\n [],\n [activityLogTagNameQuery.data]\n );\n\n const activityLogTopLevelFilter = useMemo(() => {\n return {\n ...getActivityLogFilterByTab(\n details.posEntity?.entityType ?? null,\n activeTab,\n tagNames.includes(activeTab)\n ),\n entityId: details.posEntity?.id ?? null,\n };\n }, [\n activeTab,\n details.posEntity?.entityType,\n details.posEntity?.id,\n tagNames,\n ]);\n\n const { activityLogQuery } = useGetActivityLogByFilter(\n activityLogTopLevelFilter,\n true,\n // disabled\n details.posEntity?.id == null\n );\n\n const activityLogDisplay = useMemo(\n () => (\n <>\n {activityLogQuery.isLoading ? (\n \n ) : (\n \n )}\n \n ),\n [activityLogQuery.data, activityLogQuery.error, activityLogQuery.isLoading]\n );\n\n const tabs: TabItem[] = useMemo(\n () => [\n ...getActivityLogTabValues(details.posEntity?.entityType ?? null).map(\n ({ value, contentId }) => {\n return {\n value,\n title: ,\n content: activityLogDisplay,\n };\n }\n ),\n ...tagNames.map((tagName) => {\n return {\n value: tagName,\n title: {tagName},\n content: activityLogDisplay,\n };\n }),\n ],\n [activityLogDisplay, details.posEntity?.entityType, tagNames]\n );\n\n const activeTabIndex = useMemo(() => {\n return tabs.findIndex((item) => item.value === activeTab) ?? 0;\n }, [activeTab, tabs]);\n\n const onValueChange = useCallback(\n (v: string) => setActiveTab(v as ListingActivityLogTab),\n []\n );\n\n return (\n <>\n \n }\n />\n \n\n \n \n \n \n \n\n \n \n \n \n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const ActivityLogLaunchButtonIconSpan = styled.span`\n color: ${(props) => props.theme.colors.textBrand};\n ${(props) => props.theme.typography.getStyles('body2')}\n cursor: pointer;\n height: ${() => vars.iconSize.s};\n display: inline-block;\n`;\n","import { ComponentProps, useCallback, useContext } from 'react';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { HistoryIcon } from 'src/svgs/HistoryIcon';\nimport { IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { ActivityLogModal } from './ActivityLogModal';\nimport * as styles from './ActivityLogModal.css';\nimport { ActivityLogLaunchButtonIconSpan } from './ActivityLogModal.styled';\n\nexport const LaunchActivityLog = ({\n entityId,\n cancelTo,\n}: {\n entityId: number;\n} & ComponentProps) => {\n const { setModal } = useContext(ModalContext);\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const activityLogUi = useCallback(() => {\n setModal({\n children: ,\n clickOutsideToClose: false,\n size: 'slide-in',\n });\n }, [setModal, cancelTo]);\n\n const onLaunchDialog = useCallback(() => {\n setActivePosEntity(entityId, undefined, true);\n activityLogUi();\n }, [setActivePosEntity, entityId, activityLogUi]);\n\n return (\n
    \n \n \n \n \n
    \n );\n};\n","import React, { useCallback, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { CurrencyFilterSelector } from 'src/components/Selectors/CurrencyFilterSelector';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { FieldWrapper } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseOrderDetailsInput } from 'src/utils/purchaseUtils';\nimport { TicketGroupEditReason } from 'src/WebApiController';\n\ninterface PurchaseCurrencyProps {\n disabled?: boolean;\n}\n\nexport const PurchaseCurrency: React.FC = ({\n disabled,\n}) => {\n const currencyChangeWarningDialog = useBasicDialog();\n const [newCurrencyCode, setNewCurrencyCode] = useState('');\n\n const { getValues, setValue, formState } =\n useFormContext();\n\n const { id, currencyCode, ticketGroups } = getValues();\n const isNewPurchase = id <= 0;\n\n // Change Currency Dialog\n const onCurrencyChangeCancel = useCallback(() => {\n setNewCurrencyCode('');\n currencyChangeWarningDialog.closeDialog();\n }, [currencyChangeWarningDialog]);\n\n const onCurrencyChangeOk = useCallback(() => {\n setValue('currencyCode', posChangedField(newCurrencyCode));\n\n if (id > 0) {\n // If this is an existing purchase\n // We need to ensure all ticket-groups have an intention of edit\n const ticketGroupIntentions = getValues('ticketGroupIntentions');\n ticketGroups.forEach(({ ticketGroupId }) => {\n if (!ticketGroupIntentions[ticketGroupId]?.reason) {\n ticketGroupIntentions[ticketGroupId] = {\n ticketGroupId: ticketGroupId,\n reason: TicketGroupEditReason.AmendTickets,\n additionalInfo: '',\n };\n }\n });\n setValue('ticketGroupIntentions', { ...ticketGroupIntentions });\n }\n\n setValue(\n 'ticketGroups',\n ticketGroups?.map((tg) => ({\n ...tg,\n currencyCode: posChangedField(newCurrencyCode),\n }))\n );\n currencyChangeWarningDialog.closeDialog();\n setNewCurrencyCode('');\n }, [\n currencyChangeWarningDialog,\n getValues,\n newCurrencyCode,\n id,\n setValue,\n ticketGroups,\n ]);\n\n return (\n <>\n \n }>\n {\n if (newCurrencyCode && newCurrencyCode !== currencyCode?.value) {\n if (isNewPurchase) {\n setValue('currencyCode', posChangedField(newCurrencyCode), {\n shouldValidate: true,\n });\n } else {\n setNewCurrencyCode(newCurrencyCode);\n currencyChangeWarningDialog.launchDialog();\n }\n }\n }}\n />\n \n \n {currencyChangeWarningDialog.dialogProps.isOpen && (\n }\n bodyText={}\n onOkay={onCurrencyChangeOk}\n onCancel={onCurrencyChangeCancel}\n okText={ContentId.Yes}\n cancelText={ContentId.Cancel}\n />\n )}\n \n );\n};\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { SellerAccountEmployeeSelector } from 'src/components/Selectors/SellerAccountEmployeeSelector';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseOrderDetailsInput } from 'src/utils/purchaseUtils';\nimport { PurchaseVendorAccount } from 'src/WebApiController';\n\nexport const PurchaseSellerAccountSelector = () => {\n const confirmChangeVendorAccountDialog = useBasicDialog();\n const dialogRef = useRef(\n confirmChangeVendorAccountDialog\n );\n dialogRef.current = confirmChangeVendorAccountDialog;\n const { loginContext } = useAppContext();\n const currentUserId = loginContext?.user?.userId!;\n const { watch, setValue, getValues } =\n useFormContext();\n\n const buyerUserId = watch('buyerUserId');\n const isNewPurchase = watch('id') <= 0;\n const formPurchaseVendorAccount = watch('vendorAccount');\n\n const [localPurchaseVendorAccount, setLocalPurchaseVendorAccount] =\n useState(\n formPurchaseVendorAccount?.value ?? null\n );\n const [tempBuyerUserId, setTempBuyerUserId] = useState(null);\n\n /**\n * When the selected vendorAccount changes, set the defaultBuyerUserId\n * if exists or the current userId after confirmation\n */\n useEffect(() => {\n const vendorDefaultBuyerUserId =\n formPurchaseVendorAccount?.value?.dftBuyerId || currentUserId;\n const userBuyerId = getValues('buyerUserId');\n\n if (localPurchaseVendorAccount === formPurchaseVendorAccount) {\n return;\n }\n setLocalPurchaseVendorAccount(formPurchaseVendorAccount?.value ?? null);\n\n if (userBuyerId?.value === vendorDefaultBuyerUserId) {\n return;\n }\n\n if (isNewPurchase) {\n setValue('buyerUserId', posChangedField(vendorDefaultBuyerUserId));\n return;\n }\n\n setTempBuyerUserId(vendorDefaultBuyerUserId);\n\n // Don't use confirmChangeVendorAccountDialog in deps because\n // on re-renders, triggers the effect.\n dialogRef.current.launchDialog();\n }, [\n formPurchaseVendorAccount,\n localPurchaseVendorAccount,\n setValue,\n currentUserId,\n getValues,\n isNewPurchase,\n ]);\n\n const onConfirmChangeVendorAccount = useCallback(() => {\n setValue('buyerUserId', posChangedField(tempBuyerUserId));\n confirmChangeVendorAccountDialog.closeDialog();\n setTempBuyerUserId(null);\n }, [setValue, confirmChangeVendorAccountDialog, tempBuyerUserId]);\n\n const onCancelChangeVendorAccount = useCallback(() => {\n confirmChangeVendorAccountDialog.closeDialog();\n setTempBuyerUserId(null);\n }, [confirmChangeVendorAccountDialog]);\n\n return (\n <>\n {\n if (newId && newId !== buyerUserId?.value) {\n setValue('buyerUserId', posChangedField(newId));\n }\n }}\n style={{ width: '100%' }}\n sortBy=\"key\"\n />\n {confirmChangeVendorAccountDialog.dialogProps.isOpen && (\n }\n bodyText={}\n onOkay={onConfirmChangeVendorAccount}\n onCancel={onCancelChangeVendorAccount}\n okText={ContentId.AssignToDefaultPurchaser}\n cancelText={ContentId.KeepCurrentPurchaser}\n size={'m'}\n />\n )}\n \n );\n};\n","import { useCallback, useState } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport useCopyToClipboard from 'src/hooks/useCopyToClipboard';\nimport { CopyIcon } from 'src/svgs';\nimport { IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getUrlWithDeepLink } from 'src/utils/deepLinkUtils';\n\nimport { sharedButtonSpan } from './ShareButton.css';\n\nexport type ShareButtonProps = {\n deepLinkQueryParam: 'uniqueSaleId' | 'uniqueInventoryId' | 'uniquePurchaseId';\n isCopiedLocation?: 'left' | 'right';\n usePopup?: boolean;\n};\n\nexport const ShareButton = ({\n deepLinkQueryParam,\n isCopiedLocation = 'left',\n usePopup = false,\n}: ShareButtonProps) => {\n const referenceId = 'ShareButton';\n const linkCopiedDialog = useBasicDialog();\n const [isUrlCopied, setIsUrlCopied] = useState(false);\n const { copyToClipboard } = useCopyToClipboard();\n const onClick = () => {\n const url = getUrlWithDeepLink(deepLinkQueryParam);\n if (url) {\n copyToClipboard(url.toString(), referenceId);\n if (usePopup) {\n linkCopiedDialog.launchDialog();\n }\n setIsUrlCopied(true);\n setTimeout(() => {\n setIsUrlCopied(false);\n if (usePopup) {\n linkCopiedDialog.closeDialog();\n }\n }, 3000); //Message will be shown for 3 seconds\n }\n };\n\n const showCopiedLabel = useCallback(\n (copiedLocation: string) => {\n return (\n !usePopup &&\n isUrlCopied &&\n isCopiedLocation === copiedLocation && (\n \n )\n );\n },\n [usePopup, isCopiedLocation, isUrlCopied]\n );\n\n const onOkay = () => {\n linkCopiedDialog.closeDialog();\n };\n\n return (\n <>\n \n {showCopiedLabel('left')}\n \n {showCopiedLabel('right')}\n \n }\n bodyText={}\n onOkay={onOkay}\n onCancel={undefined}\n okText={ContentId.OK}\n />\n \n );\n};\n","import {\n InfiniteData,\n useInfiniteQuery,\n UseInfiniteQueryResult,\n useQuery,\n} from '@tanstack/react-query';\nimport { debounce } from 'lodash-es';\nimport {\n ComponentProps,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { PurchaseClient, PurchaseVendorAccount } from 'src/WebApiController';\n\nimport { usePurchaseVendorSelector } from '../PurchaseVendorSelector/usePurchaseVendorSelector';\n\nexport type UsePurchaseVendorAccountSelectorOptions = {\n vendorId?: number | number[] | null;\n disabled?: boolean;\n additionalOptions?: Record;\n additionalOptionsPosition?: 'top' | 'bottom';\n placeholderText?: string | ContentId;\n paginateCount?: number | null;\n searchText?: string;\n purchaseVendorAccountEmail?: string;\n vendorAccountIds?: string[];\n};\n\nexport const usePurchaseVendorAccountSelector = ({\n vendorId,\n disabled,\n additionalOptions,\n additionalOptionsPosition = 'bottom',\n placeholderText,\n paginateCount = 1000,\n searchText,\n purchaseVendorAccountEmail,\n vendorAccountIds,\n}: UsePurchaseVendorAccountSelectorOptions): {\n query: UseInfiniteQueryResult<\n InfiniteData<\n {\n results: PurchaseVendorAccount[];\n skip: number;\n },\n unknown\n >,\n Error\n >;\n sortedVendorAccounts: PurchaseVendorAccount[];\n availableVendorAccounts: Record;\n posSelectProps: Pick<\n ComponentProps,\n | 'searchable'\n | 'placeholderText'\n | 'sortMode'\n | 'valueOptionsContent'\n | 'sortFn'\n | 'loading'\n >;\n} => {\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { availableVendors } = usePurchaseVendorSelector({});\n const hasVendorId = Array.isArray(vendorId)\n ? vendorId.length > 0\n : !!vendorId;\n\n const shouldQuery =\n !disabled &&\n activeAccountWebClientConfig.activeAccountId != null &&\n hasVendorId;\n\n const [debouncedSearchText, setDebouncedSearchText] = useState<\n string | undefined\n >(searchText);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedSetSearchText = useCallback(\n debounce((value: string | undefined) => {\n setDebouncedSearchText(value);\n }, 500),\n []\n );\n\n useEffect(() => {\n if (searchText !== debouncedSearchText) {\n debouncedSetSearchText(searchText);\n }\n }, [searchText, debouncedSetSearchText, debouncedSearchText]);\n\n const query = useInfiniteQuery({\n queryKey: [\n 'getAccessibleVendorAccounts',\n activeAccountWebClientConfig.activeAccountId,\n vendorId,\n paginateCount,\n debouncedSearchText,\n ],\n queryFn: async ({ pageParam: skip = 0 }) => {\n if (!shouldQuery || !hasVendorId) {\n return {\n results: [],\n skip,\n };\n }\n\n const vendorIds = Array.isArray(vendorId) ? vendorId : [vendorId!];\n const result = await tryInvokeApi(\n () => {\n return new PurchaseClient(\n activeAccountWebClientConfig\n ).getAccessibleVendorAccounts(\n { item1: vendorIds, item2: [] },\n searchText,\n paginateCount ? paginateCount : null,\n skip ?? 0\n );\n },\n (error) => {\n trackError('PurchaseClient.getAccessibleVendorAccounts', error, {\n vendorIds,\n });\n }\n );\n\n return {\n results: result ?? [],\n skip,\n };\n },\n getNextPageParam: (lastPage) => {\n return lastPage?.results.length\n ? lastPage.skip + lastPage.results.length\n : undefined;\n },\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n staleTime: Infinity,\n networkMode: 'offlineFirst',\n initialPageParam: 0,\n placeholderData: (previousData) => previousData, // identity function with the same behaviour as `keepPreviousData`\n });\n\n const purchaseVendorAccountQuery = useQuery({\n queryKey: [\n 'getAccessibleVendorAccounts',\n activeAccountWebClientConfig.activeAccountId,\n vendorId,\n purchaseVendorAccountEmail,\n vendorAccountIds,\n ],\n queryFn: async ({ pageParam: skip = 0 }) => {\n if (!shouldQuery || !hasVendorId) {\n return null;\n }\n\n const vendorIds = Array.isArray(vendorId) ? vendorId : [vendorId!];\n\n return tryInvokeApi(\n () => {\n return new PurchaseClient(\n activeAccountWebClientConfig\n ).getAccessibleVendorAccounts(\n { item1: vendorIds, item2: vendorAccountIds || [] },\n purchaseVendorAccountEmail,\n null,\n null\n );\n },\n (error) => {\n trackError('PurchaseClient.getAccessibleVendorAccounts', error, {\n vendorIds,\n vendorAccountIds,\n });\n }\n );\n },\n enabled: shouldQuery && !!purchaseVendorAccountEmail,\n refetchOnWindowFocus: false,\n staleTime: Infinity,\n networkMode: 'offlineFirst',\n });\n\n const sortedVendorAccounts = useMemo(() => {\n if (!query.data) {\n return [];\n }\n\n // NOTE - it is purposely to use a Map and for loops here instead of\n // using the spread operator (...) because the spread operator will\n // cause a Stack-overflow when there are too many elements\n const resultMap = new Map();\n\n query.data.pages.forEach((p) => {\n p.results.forEach((i) => resultMap.set(i.id, i));\n });\n\n purchaseVendorAccountQuery.data?.forEach((p) => {\n resultMap.set(p.id, p);\n });\n\n const unionResult: PurchaseVendorAccount[] = [];\n for (const va of resultMap.values()) {\n unionResult.push(va);\n }\n\n return unionResult;\n }, [purchaseVendorAccountQuery.data, query.data]);\n\n const availableVendorAccounts = useMemo(() => {\n const results = sortedVendorAccounts\n ?.filter((d) => d.email || d.name) // Only show those with emails\n ?.reduce(\n (r, cur) => {\n r[cur.id] = cur;\n return r;\n },\n {} as Record\n );\n\n return results ?? {};\n }, [sortedVendorAccounts]);\n\n const availableVendorAccountsOptions = useMemo(() => {\n const results = sortedVendorAccounts\n ?.filter((d) => d.email || d.name) // Only show those with emails\n ?.reduce(\n (r, cur) => {\n const vendor = availableVendors[cur.vendorId];\n r[cur.id] = `${cur.email || cur.name} ${\n Array.isArray(vendorId) && vendorId.length > 1 && vendor\n ? '(' + vendor.name + ')'\n : ''\n }`;\n return r;\n },\n (additionalOptions && additionalOptionsPosition === 'top'\n ? additionalOptions\n : {}) as Record\n );\n\n return {\n ...(additionalOptionsPosition === 'top' ? additionalOptions : {}),\n ...(results ?? {}),\n ...(additionalOptionsPosition === 'bottom' ? additionalOptions : {}),\n };\n }, [\n additionalOptions,\n additionalOptionsPosition,\n availableVendors,\n sortedVendorAccounts,\n vendorId,\n ]);\n\n const addOptionTexts = useMemo(() => {\n return Object.keys(additionalOptions ?? {});\n }, [additionalOptions]);\n\n return {\n query,\n sortedVendorAccounts,\n availableVendorAccounts,\n posSelectProps: {\n searchable: true,\n loading: query.isLoading,\n placeholderText: placeholderText ?? ContentId.ChooseAccount,\n valueOptionsContent: availableVendorAccountsOptions,\n sortMode: 'ascending',\n sortFn: (a: string, b: string) => {\n if (addOptionTexts.includes(a)) {\n return additionalOptionsPosition === 'top' ? -1 : 1;\n }\n if (addOptionTexts.includes(b)) {\n return additionalOptionsPosition === 'top' ? 1 : -1;\n }\n return availableVendorAccountsOptions[a]?.localeCompare(\n availableVendorAccountsOptions[b]\n );\n },\n },\n };\n};\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { usePurchaseVendorAccountSelector } from 'src/components/Selectors/PurchaseVendorAccountSelector/usePurchaseVendorAccountSelector';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PosSelect, PosSelectProps } from 'src/core/POS/PosSelect';\nimport { PurchaseVendorAccountDialog } from 'src/dialogs/PurchaseVendorAccountDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { VendorAccountEditInfo } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/hooks/useAddVendorAccount';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField, posField } from 'src/utils/posFieldUtils';\nimport { PurchaseOrderDetailsInput } from 'src/utils/purchaseUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ApiException,\n Feature,\n PurchaseClient,\n PurchaseVendorAccount,\n PurchaseVendorAccountDetails,\n} from 'src/WebApiController';\n\nexport type PurchaseVendorAccountSelectionInputProps = Omit<\n PosSelectProps,\n 'onChange' | 'valueOptionsContent'\n> & {\n vendorFieldName: 'vendor' | 'secondaryVendor';\n fieldName: 'vendorAccount' | 'secondaryVendorAccount';\n};\n\nexport const PurchaseVendorAccountSelectionInput = ({\n disabled,\n vendorFieldName,\n fieldName,\n ...posSelectProps\n}: PurchaseVendorAccountSelectionInputProps) => {\n const hasVendorAccountDeliveryStrategyFeature = useUserHasFeature(\n Feature.VendorAccountDeliveryStrategy\n );\n\n const { setValue, clearErrors, watch, formState } =\n useFormContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { closeDialog, launchDialog, dialogProps } = useBasicDialog();\n const [currentVendorAccount, setCurrentVendorAccount] =\n useState();\n const { showErrorDialog } = useErrorBoundaryContext();\n const [searchText, setSearchText] = useState(undefined);\n\n const vendorId = watch(`${vendorFieldName}.value.id`);\n const vendorAccount = watch(fieldName);\n\n const addVendorAccountText = useContent(ContentId.AddAccountAction);\n const additionalOptions = useMemo(\n () => ({\n [ContentId.AddAccountAction]: addVendorAccountText + '...',\n }),\n [addVendorAccountText]\n );\n const optionsAlwaysShow = useMemo(\n () => ({\n [ContentId.AddAccountAction]: true,\n }),\n []\n );\n const {\n query,\n sortedVendorAccounts,\n posSelectProps: hookPosSelectProps,\n } = usePurchaseVendorAccountSelector({\n vendorId: vendorId,\n disabled,\n additionalOptions,\n searchText,\n purchaseVendorAccountEmail: vendorAccount?.value?.email,\n });\n\n const { fetchNextPage, hasNextPage, isFetchingNextPage } = query;\n\n useEffect(() => {\n // If we don't have a selected account, auto-select the first one in the list\n if (\n vendorId &&\n (!vendorAccount || vendorAccount?.value?.vendorId !== vendorId)\n ) {\n const accounts = sortedVendorAccounts;\n if (accounts?.length) {\n clearErrors(fieldName);\n setValue(fieldName, posChangedField(accounts[0]));\n } else {\n setValue(fieldName, posField(null));\n }\n }\n }, [\n clearErrors,\n setValue,\n vendorAccount,\n vendorId,\n query.data,\n fieldName,\n sortedVendorAccounts,\n ]);\n\n const onAddNewVendorAccount = useCallback(\n (searchText?: string) => {\n if (vendorId) {\n setCurrentVendorAccount({\n vendorId: vendorId,\n id: '',\n });\n }\n\n launchDialog();\n },\n [launchDialog, vendorId]\n );\n\n const onSaveVendorAccount = useCallback(\n async (vendorAccount: PurchaseVendorAccountDetails) => {\n await tryInvokeApi(\n async () => {\n const newId = await new PurchaseClient(\n activeAccountWebClientConfig\n ).mergeVendorAccount(vendorAccount);\n\n if (newId) {\n query.refetch();\n setValue(\n fieldName,\n posChangedField({\n ...vendorAccount,\n id: newId,\n })\n );\n clearErrors(fieldName);\n\n closeDialog();\n setCurrentVendorAccount(undefined);\n } else {\n // This should never happen\n // Normal errors would have fallen to the error catch\n showErrorDialog(\n 'PurchaseClient.mergeVendorAccount',\n {\n message:\n 'Unable to create or save vendor account ' + vendorAccount.id,\n status: 500,\n } as ApiException,\n {\n trackErrorData: vendorAccount,\n }\n );\n }\n },\n (error) => {\n showErrorDialog('PurchaseClient.mergeVendorAccount', error, {\n trackErrorData: vendorAccount,\n });\n }\n );\n },\n [\n activeAccountWebClientConfig,\n clearErrors,\n closeDialog,\n fieldName,\n query,\n setValue,\n showErrorDialog,\n ]\n );\n\n const onVendorAccountCancel = useCallback(() => {\n closeDialog();\n setCurrentVendorAccount(undefined);\n }, [closeDialog]);\n\n return (\n <>\n {\n clearErrors(fieldName);\n if (value) {\n if (value === ContentId.AddAccountAction) {\n onAddNewVendorAccount(searchText);\n } else if (value !== vendorAccount?.value?.id) {\n const newAccount = sortedVendorAccounts!.find(\n (v: PurchaseVendorAccount) => v.id === value\n );\n if (newAccount) {\n setValue(fieldName, posChangedField(newAccount));\n }\n }\n }\n }}\n onSearchInputChange={setSearchText}\n fetchNextPage={fetchNextPage}\n hasNextPage={hasNextPage}\n isFetchingNextPage={isFetchingNextPage}\n useVirtualWindow={true}\n />\n {vendorId && currentVendorAccount && (\n \n )}\n \n );\n};\n","import { vars } from 'src/core/themes';\n\nimport { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const ChevronAccordionIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n );\n};\n","import { Content, Trigger } from '@radix-ui/react-accordion';\nimport clsx from 'clsx';\nimport { ComponentPropsWithoutRef, forwardRef } from 'react';\nimport { Button } from 'src/core/ui';\nimport * as styles from 'src/core/ui/Accordion/Accordion.css';\nimport { ChevronAccordionIcon } from 'src/svgs/ChevronAccordionIcon';\n\nexport const PosAccordionTrigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef & { chevronPos?: 'front' | 'back' }\n>(({ children, className, chevronPos = 'back', ...props }, forwardedRef) => (\n \n {chevronPos === 'front' && (\n \n )}\n {children}\n {chevronPos === 'back' && (\n \n )}\n \n));\nPosAccordionTrigger.displayName = 'PosAccordionTrigger';\n\nexport const PosAccordionContent = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef\n>(({ children, className, ...props }, forwardedRef) => (\n \n
    {children}
    \n
    \n));\nPosAccordionContent.displayName = 'AccordionContent';\n","import { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { TicketTypePriorityInput } from 'src/components/common/TicketTypePriorityInput';\nimport { DeliveryTypeSelector } from 'src/components/Selectors/DeliveryTypeSelector';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { Stack, Switch } from 'src/core/ui';\nimport {\n PosAccordionContent,\n PosAccordionItem,\n PosAccordionRoot,\n PosAccordionTrigger,\n} from 'src/core/ui/Accordion';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { FieldWrapper } from 'src/modals/common/Purchase';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { DeliveryType, Feature, PurchaseVendor } from 'src/WebApiController';\n\nimport * as styles from './PurchaseVendorDialog.css';\n\nexport const PurchaseVendorDeliveryOverrideInput = ({\n collapsible,\n}: {\n collapsible?: boolean;\n}) => {\n const hasSellerAccountPurchaseVendorOverrideFeature = useUserHasFeature(\n Feature.SellerAccountPurchaseVendorOverride\n );\n\n if (!hasSellerAccountPurchaseVendorOverrideFeature) {\n return null;\n }\n\n if (collapsible) {\n return (\n \n \n \n
    \n \n
    \n
    \n \n \n \n
    \n
    \n );\n }\n\n return (\n \n
    \n \n
    \n\n \n
    \n );\n};\n\nconst PurchaseVendorDeliveryOverrideInputContent = () => {\n const { formState, watch, setValue } = useFormContext();\n\n const hasAutoFulfillSettingFeature = useUserHasFeature(\n Feature.AutoFulfillSetting\n );\n\n const deliveryType = watch('delivType');\n const isNoFulfill = watch('isNoFulfill');\n const ticketTypeRules = watch('tktTypeRules');\n\n const [skipAutoFulfill, setSkipAutoFulfill] = useState(isNoFulfill == null);\n const [skipDeliveryOverride, setSkipDeliveryOverride] = useState(\n deliveryType == null\n );\n\n return (\n \n
    \n \n
    \n {hasAutoFulfillSettingFeature && (\n <>\n }\n labelPosition=\"right\"\n onChange={(e) => {\n const skip = !e.target.checked;\n setSkipAutoFulfill(skip);\n if (skip) {\n setValue('isNoFulfill', null, {\n shouldDirty: true,\n });\n } else {\n // We want to default to false if the user enables the setting\n setValue('isNoFulfill', true, {\n shouldDirty: true,\n });\n }\n }}\n checked={!skipAutoFulfill}\n />\n {!skipAutoFulfill && (\n \n }>\n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n setValue('isNoFulfill', !isChecked, {\n shouldDirty: true,\n });\n }}\n />\n \n \n )}\n \n )}\n\n }\n labelPosition=\"right\"\n onChange={(e) => {\n const skip = !e.target.checked;\n setSkipDeliveryOverride(skip);\n if (skip) {\n setValue('delivType', null, {\n shouldDirty: true,\n });\n } else {\n setValue('delivType', DeliveryType.InApp, {\n shouldDirty: true,\n });\n }\n\n setValue('tktTypeRules', null, {\n shouldDirty: true,\n });\n }}\n checked={!skipDeliveryOverride}\n />\n {!skipDeliveryOverride && (\n <>\n \n }>\n {\n if (newD !== deliveryType) {\n setValue('delivType', newD, {\n shouldDirty: true,\n });\n if (!newD) {\n setValue('tktTypeRules', null, {\n shouldDirty: true,\n });\n }\n }\n }}\n />\n \n \n {deliveryType && (\n \n }>\n {\n setValue('tktTypeRules', newRules, {\n shouldDirty: true,\n });\n }}\n disabled={formState.isSubmitting}\n />\n \n \n )}\n \n )}\n
    \n );\n};\n","import { ComponentProps, useCallback } from 'react';\nimport { FormProvider, useForm, useFormContext } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { Button } from 'src/core/ui';\nimport { FieldWrapper } from 'src/modals/common/Purchase';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PurchaseVendor } from 'src/WebApiController';\n\nimport { PurchaseVendorDeliveryOverrideInput } from './PurchaseVendorDeliveryOverrideInput';\nimport * as styles from './PurchaseVendorDialog.css';\n\nexport type PurchaseVendorDialogProps = {\n vendor: PurchaseVendor;\n onSave: (data: PurchaseVendor) => void;\n useReducedEdit?: boolean;\n} & ComponentProps;\n\nexport function PurchaseVendorDialog({\n vendor,\n ...rest\n}: PurchaseVendorDialogProps) {\n const methods = useForm({\n defaultValues: vendor,\n values: vendor,\n });\n\n return (\n \n \n \n );\n}\n\ntype PurchaseVendorDialogBodyProps = Omit;\n\nexport const PurchaseVendorDialogBody = ({\n onSave,\n onClosed,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onOkay, // unused\n useReducedEdit,\n ...rest\n}: PurchaseVendorDialogBodyProps) => {\n const { register, setError, handleSubmit, formState, getValues, watch } =\n useFormContext();\n\n const requiredMsg = useContent(ContentId.Required);\n\n const { id } = getValues();\n\n const nameError = formState.errors.name?.message;\n\n const isGlobal = watch('isGlobal');\n const vendorName = watch('name');\n\n const onSubmit = useCallback(() => {\n let hasErrors = false;\n if (!vendorName) {\n setError('name', { message: requiredMsg }, { shouldFocus: true });\n hasErrors = true;\n }\n\n if (!hasErrors) {\n handleSubmit(onSave)();\n }\n }, [handleSubmit, onSave, requiredMsg, setError, vendorName]);\n\n return (\n \n }\n footer={\n <>\n {onClosed && (\n \n )}\n \n \n \n \n }\n onCancel={onClosed}\n >\n
    \n \n }\n >\n \n \n \n\n {!useReducedEdit && }\n
    \n \n );\n};\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { usePurchaseVendorSelector } from 'src/components/Selectors/PurchaseVendorSelector/usePurchaseVendorSelector';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PosSelect, PosSelectProps } from 'src/core/POS/PosSelect';\nimport { PurchaseVendorDialog } from 'src/dialogs/PurchaseVendorDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseOrderDetailsInput } from 'src/utils/purchaseUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ApiException,\n PurchaseClient,\n PurchaseVendor,\n} from 'src/WebApiController';\n\nexport type PurchaseVendorSelectionInputProps = Omit<\n PosSelectProps,\n 'value' | 'onChange' | 'valueOptionsContent'\n> & {\n fieldName: 'vendor' | 'secondaryVendor';\n};\n\nexport const PurchaseVendorSelectionInput = ({\n disabled,\n fieldName,\n ...posSelectProps\n}: PurchaseVendorSelectionInputProps) => {\n const addVendorText = useContent(ContentId.AddVendorAction);\n const additionalOptions = useMemo(\n () => ({\n [ContentId.AddVendorAction]: addVendorText + '...',\n }),\n [addVendorText]\n );\n\n const { query, posSelectProps: hookPosSelectProps } =\n usePurchaseVendorSelector({\n disabled,\n additionalOptions,\n });\n\n const { setValue, clearErrors, watch, formState } =\n useFormContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { closeDialog, launchDialog, dialogProps } = useBasicDialog();\n const [currentVendor, setCurrentVendor] = useState();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const vendor = watch(fieldName);\n\n useEffect(() => {\n // If we don't have a selected account, auto-select the first one in the list\n if (!vendor) {\n const vendors = query.data;\n if (vendors?.length) {\n clearErrors(fieldName);\n setValue(fieldName, posChangedField(vendors[0]));\n }\n }\n }, [clearErrors, fieldName, query.data, setValue, vendor]);\n\n const onAddNewVendor = useCallback(() => {\n setCurrentVendor({\n id: -1,\n name: '',\n isGlobal: false,\n isNoFulfill: null,\n delivType: null,\n tktTypeRules: null,\n vendAccCounts: 0,\n });\n\n launchDialog();\n }, [launchDialog]);\n\n const onSaveVendor = useCallback(\n async (vendor: PurchaseVendor) => {\n await tryInvokeApi(\n async () => {\n const newId = await new PurchaseClient(\n activeAccountWebClientConfig\n ).mergeVendor(vendor);\n\n if (newId) {\n query.refetch();\n setValue(\n fieldName,\n posChangedField({\n ...vendor,\n id: newId,\n })\n );\n clearErrors(fieldName);\n\n closeDialog();\n setCurrentVendor(undefined);\n } else {\n // This should never happen\n // Normal errors would have fallen to the error catch\n showErrorDialog(\n 'PurchaseClient.mergeVendor',\n {\n message: 'Unable to create or save vendor ' + vendor.id,\n status: 500,\n } as ApiException,\n {\n trackErrorData: vendor,\n }\n );\n }\n },\n (error) => {\n showErrorDialog('PurchaseClient.mergeVendor', error, {\n trackErrorData: vendor,\n });\n }\n );\n },\n [\n activeAccountWebClientConfig,\n clearErrors,\n closeDialog,\n fieldName,\n query,\n setValue,\n showErrorDialog,\n ]\n );\n\n const onVendorCancel = useCallback(() => {\n closeDialog();\n setCurrentVendor(undefined);\n }, [closeDialog]);\n\n return (\n <>\n {\n clearErrors(fieldName);\n if (value) {\n const vendorId = parseInt(value);\n if (value === ContentId.AddVendorAction) {\n onAddNewVendor();\n } else if (vendorId !== vendor?.value?.id) {\n const newVendor = query.data!.find(\n (v: PurchaseVendor) => v.id === vendorId\n );\n if (newVendor) {\n setValue(fieldName, posChangedField(newVendor));\n }\n }\n }\n }}\n />\n {currentVendor && (\n \n )}\n \n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const HeaderRightGroup = styled.div<{ editMode?: boolean }>`\n display: flex;\n flex-direction: column;\n width: 100%;\n\n ${({ editMode, theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n text-align: ${editMode ? 'left' : 'right'};\n max-width: calc(50% - ${vars.spacing.lg});\n align-items: ${editMode ? 'flex-start' : 'flex-end'};\n `\n )}`}\n`;\n\nexport const HeaderLeftGroup = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n max-width: calc(50% - ${vars.spacing.lg});\n `\n )}`}\n`;\n\nexport const HeaderVendorContainer = styled.div`\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('title4')};\n padding-block-end: ${() => vars.spacing.lg};\n\n width: 100%;\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\nexport const PurchaseOrderStateContainer = styled.div`\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('title4')};\n\n color: ${(props) => props.theme.colors.textNegative};\n padding-block-end: ${() => vars.spacing.lg};\n width: min-content;\n border: 1px solid ${(props) => props.theme.colors.textNegative};\n border-radius: ${() => vars.spacing.sm};\n display: flex;\n align-items: center;\n justify-content: center;\n padding: ${() => vars.spacing.sm};\n`;\n\nexport const DeliverAlternativeAccountCheckboxWrapper = styled.span``;\n","import { formatInTimeZone } from 'date-fns-tz';\nimport { isEqual } from 'lodash-es';\nimport React, {\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport { useNavigate } from 'react-router-dom';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport {\n Content,\n FormatContent,\n useContent,\n} from 'src/contexts/ContentContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { DatePickerInput } from 'src/core/POS/DateSelector';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, Stack } from 'src/core/ui';\nimport { CancelPurchaseDialog } from 'src/dialogs/CancelPurchaseDialog';\nimport { RestorePurchaseDialog } from 'src/dialogs/RestorePurchaseDialog';\nimport { UnsavedChanges } from 'src/dialogs/UnsavedChanges';\nimport { useSyncCenterSettings } from 'src/hooks/api/useSyncCenterSetting';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useGetIsPurchaseIdsInUsedForVendorId } from 'src/hooks/useGetIsPurchaseIdsInUsedForVendorId';\nimport { useGetUserInfos } from 'src/hooks/userGetUserInfo';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { LaunchActivityLog } from 'src/modals/ActivityLog';\nimport { FieldWrapper, HeaderFieldLabel } from 'src/modals/common';\nimport { PurchaseCurrency } from 'src/modals/common/Purchase/PurchaseCurrency';\nimport { PurchaseSellerAccountSelector } from 'src/modals/common/Purchase/PurchaseSellerAccountSelector/PurchaseSellerAccountSelector';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport { IconsFill, MoreIcon } from 'src/svgs/Viagogo';\nimport { PurchaseDeeplinkQueryParam } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n PURCHASE_ORDER_STATE_TO_CID,\n QUALITY_CONTROL_STATE_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { stringToUtcDate } from 'src/utils/dateTimeUtils';\nimport { getPathFromMainRoute } from 'src/utils/deepLinkUtils';\nimport {\n DefaultListingQuery,\n DefaultSaleQuery,\n getPurchaseOrderIdListingQuery,\n getPurchaseOrderIdSaleQuery,\n getUrlFilterQueryParam,\n} from 'src/utils/eventQueryUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport {\n getPurchaseOrderDetailsModalConfigWithDeepLink,\n isCancelledState,\n PurchaseOrderDetailsInput,\n} from 'src/utils/purchaseUtils';\nimport {\n Feature,\n Permission,\n PurchaseOrderDetails,\n PurchasingIdInUseResultType,\n QualityControlState,\n} from 'src/WebApiController';\n\nimport { ShareButton } from '../../ShareButton/ShareButton';\nimport { summaryWrapper } from '../../Summary/Summary.css';\nimport { fieldText } from '../Purchase.css';\nimport { PurchaseVendorAccountSelectionInput } from '../PurchaseVendorAccountSelectionInput';\nimport { PurchaseVendorSelectionInput } from '../PurchaseVendorSelectionInput';\nimport * as styles from './PurchaseVendorHeader.css';\nimport {\n DeliverAlternativeAccountCheckboxWrapper,\n HeaderLeftGroup,\n HeaderRightGroup,\n HeaderVendorContainer,\n PurchaseOrderStateContainer,\n} from './PurchaseVendorHeader.styled';\n\nexport const PurchaseVendorHeader = ({\n editMode,\n disabled,\n numOfSales,\n numOfListings,\n onToggleEditDetails,\n onGoToMessageThread,\n enableMarkAsPaid,\n onMarkPurchaseAsPaid,\n}: {\n editMode: boolean;\n disabled?: boolean;\n numOfSales: number;\n numOfListings: number;\n onToggleEditDetails?: () => void;\n onGoToMessageThread?: () => void;\n enableMarkAsPaid?: boolean;\n onMarkPurchaseAsPaid?: () => void;\n}) => {\n const { timeZone } = useSiteTimezoneContext();\n const {\n control,\n register,\n getValues,\n watch,\n setValue,\n formState,\n clearErrors,\n setError,\n } = useFormContext();\n\n const { posEntity: purchaseOrder, setActivePosEntity } =\n useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n refreshCatalog,\n } = useCatalogDataContext();\n const { refreshData } = usePurchaseDataContext();\n\n const hasCreatePermission = useUserHasAnyOfPermissions(\n Permission.Purchases_Create\n );\n const hasDisplayDeactivatedUser = useUserHasFeature(\n Feature.DisplayDeactivatedUser\n );\n\n const settings = useSyncCenterSettings();\n const { isAutoPoQualityControlled = false } = settings.data ?? {};\n\n const {\n id,\n vendor,\n vendorAccount,\n secondaryVendor,\n secondaryVendorAccount,\n vendorOrderId,\n purchaseDate,\n transferId,\n currencyCode,\n } = getValues();\n\n const purchaseOrderId = watch('id');\n const buyerUserId = watch('buyerUserId');\n\n const useGetUserInfosQuery = useGetUserInfos(\n buyerUserId?.value ? [buyerUserId.value] : []\n );\n\n const buyerUserInfo =\n buyerUserId?.value == null\n ? null\n : useGetUserInfosQuery.data?.[buyerUserId.value];\n\n const qcState = watch('qcState');\n\n const curLocale = getLocaleFromLanguageOrCurrent();\n\n const vendorOrderIdPlaceholder = useContent(\n ContentId.EnterPurchaseOrderIdFromVendor\n );\n\n const transferIdPlaceHolder = useContent(\n ContentId.EnterTransferIdForPurchase\n );\n\n const requiredMsg = useContent(ContentId.Required);\n\n const cancelVoidDialog = useBasicDialog();\n const restorePurchaseDialog = useBasicDialog();\n\n const isCancelled = isCancelledState(purchaseOrder?.poState);\n const isDisabled = disabled || isCancelled;\n\n const navigateUnsavedDialog = useBasicDialog();\n const navigate = useNavigate();\n const [navigateUrl, setNavigateUrl] = useState();\n\n const deactivatedText = useContent(ContentId.Deactivated);\n const youHaveNoSalesMsg = useContent(ContentId.PurchaseHaveNoSales);\n const youHaveNoListingsMsg = useContent(ContentId.PurchaseHaveNoListings);\n\n const [showSecondaryVendorInputs, setShowSecondaryVendorInputs] =\n useState(\n Boolean(secondaryVendor?.value || secondaryVendorAccount?.value)\n );\n\n const onViewUrlClick = useCallback(\n (e: React.MouseEvent, url: string) => {\n if (e.button === 0 || e.button === 1) {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.button === 1) {\n // Middle-clicked open a new browser-tab\n window.open(url, '_blank');\n } else if (isEqual(getValues(), formState.defaultValues)) {\n navigate(url);\n } else {\n // Need to confirm unsave changes\n setNavigateUrl(url);\n navigateUnsavedDialog.launchDialog();\n }\n }\n },\n [formState.defaultValues, getValues, navigate, navigateUnsavedDialog]\n );\n\n const viewSaleOnClick = useCallback(\n (e: React.MouseEvent) => {\n const navigateUrl = `${getPathFromMainRoute(\n MainRoute.Sales\n )}${getUrlFilterQueryParam(\n DefaultSaleQuery,\n getPurchaseOrderIdSaleQuery(id)\n )}`;\n onViewUrlClick(e, navigateUrl);\n },\n [id, onViewUrlClick]\n );\n\n const viewInventoryOnClick = useCallback(\n (e: React.MouseEvent) => {\n const navigateUrl = `${getPathFromMainRoute(\n MainRoute.Inventory\n )}${getUrlFilterQueryParam(\n DefaultListingQuery,\n getPurchaseOrderIdListingQuery(id)\n )}`;\n onViewUrlClick(e, navigateUrl);\n },\n [id, onViewUrlClick]\n );\n\n const actions = useMemo(() => {\n const actions: ReactNode[] = [\n \n \n ,\n ];\n if (id > 0) {\n actions.push(\n cancelVoidDialog.launchDialog()}\n >\n \n \n );\n\n if (!isDisabled && hasCreatePermission && onGoToMessageThread) {\n actions.push(\n \n \n \n );\n }\n\n if (isCancelled) {\n actions.push(\n {\n restorePurchaseDialog.launchDialog();\n }}\n >\n \n \n );\n }\n\n if (enableMarkAsPaid) {\n actions.push(\n \n \n \n );\n }\n\n if (editMode) {\n actions.push(\n \n \n ,\n \n \n \n );\n }\n }\n return actions;\n }, [\n onToggleEditDetails,\n id,\n isDisabled,\n hasCreatePermission,\n onGoToMessageThread,\n isCancelled,\n enableMarkAsPaid,\n editMode,\n cancelVoidDialog,\n restorePurchaseDialog,\n onMarkPurchaseAsPaid,\n numOfSales,\n viewSaleOnClick,\n youHaveNoSalesMsg,\n numOfListings,\n viewInventoryOnClick,\n youHaveNoListingsMsg,\n ]);\n\n const viewEntityButtons =\n id > 0 ? (\n <>\n \n \n \n \n \n \n \n ) : null;\n\n const goToNavigation = useCallback(() => {\n if (navigateUrl) {\n navigate(navigateUrl);\n }\n navigateUnsavedDialog.closeDialog();\n }, [navigate, navigateUnsavedDialog, navigateUrl]);\n\n const orderIdUsedWarningMessage = useContent(ContentId.OrderIdInUse);\n const orderIdUsedErrorMessage = useContent(ContentId.OrderIdInUseSameVendor);\n const [orderIdBlurred, setOrderIdBlurred] = useState();\n const { purchasingIdInUseQuery } = useGetIsPurchaseIdsInUsedForVendorId(\n orderIdBlurred,\n vendor?.value?.id\n );\n\n useEffect(() => {\n if (purchaseOrderId < 0) {\n if (\n purchasingIdInUseQuery.data ===\n PurchasingIdInUseResultType.SameOrderIdAndVendorId\n ) {\n setError('vendorOrderId', { message: orderIdUsedErrorMessage });\n } else {\n if (\n formState.errors.vendorOrderId?.message === orderIdUsedErrorMessage\n ) {\n clearErrors('vendorOrderId');\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [purchasingIdInUseQuery.data]);\n\n const orderIdOnBlur = (e: React.FocusEvent) => {\n setOrderIdBlurred(e.target.value);\n };\n\n return (\n <>\n {!editMode || isDisabled ? (\n
    \n
    \n
    \n \n \n {vendor?.value?.name}\n \n \n \n {isCancelled && (\n \n \n \n )}\n \n
    \n
    \n \n \n \n \n \n
    \n
    {vendorOrderId?.value}
    \n
    \n \n
    \n
    \n
    \n \n \n \n \n
    \n {purchaseDate?.value &&\n formatInTimeZone(\n stringToUtcDate(purchaseDate.value),\n timeZone,\n 'MMM d, yyyy h:mm a',\n {\n locale: curLocale,\n }\n )}\n
    \n
    \n \n \n \n \n
    {currencyCode?.value}
    \n
    \n {transferId?.value && (\n \n \n \n \n
    {transferId.value}
    \n
    \n )}\n {isAutoPoQualityControlled && qcState != null && (\n \n \n \n \n {qcState.hasChanged ||\n qcState?.value === QualityControlState.Pending ? (\n {\n return (\n }\n checked={\n value?.value === QualityControlState.Approved\n }\n onChange={(e) => {\n const isChecked = e.target.checked;\n onChange(\n posChangedField(\n isChecked\n ? QualityControlState.Approved\n : QualityControlState.Pending\n )\n );\n }}\n />\n );\n }}\n />\n ) : (\n
    \n {qcState.value && (\n \n )}\n
    \n )}\n
    \n )}\n
    \n \n \n \n \n \n
    \n {vendorAccount?.value?.email ?? vendorAccount?.value?.name}\n
    \n
    \n \n \n \n \n
    \n {`${buyerUserInfo?.name} ${\n buyerUserInfo?.isDeactivated && !hasDisplayDeactivatedUser\n ? ` (${deactivatedText})`\n : ''\n }`}\n
    \n
    {buyerUserInfo?.email}
    \n
    \n
    \n
    \n
    \n \n \n \n
    \n {purchaseOrderId > 0 ? (\n \n ) : undefined}\n {viewEntityButtons}\n {purchaseOrderId > 0 && actions.length > 0 && (\n // only show this when NOT creating new purchase\n \n }\n align=\"end\"\n >\n {actions}\n \n )}\n
    \n
    \n
    \n
    \n
    \n
    \n ) : (\n
    \n
    \n
    \n \n
    \n }\n >\n \n \n
    \n
    \n \n
    \n }\n >\n \n \n
    \n
    \n
    \n
    \n \n \n }\n >\n {\n return fieldVal?.length ? undefined : requiredMsg;\n },\n },\n\n onChange: (event) => {\n if (event.target.value) {\n clearErrors('vendorOrderId');\n }\n setValue('vendorOrderId.hasChanged', true);\n },\n })}\n onBlur={orderIdOnBlur}\n trimOnBlur={true}\n />\n \n \n \n }\n errors={formState.errors.vendor?.message}\n >\n {\n if (date) {\n clearErrors('purchaseDate');\n const dateStr = date.toISOString();\n if (dateStr !== purchaseDate?.value) {\n setValue('purchaseDate', posChangedField(dateStr));\n }\n }\n }}\n locale={getLocaleFromLanguageOrCurrent()}\n />\n \n \n \n \n \n }\n >\n \n \n \n \n \n \n \n
    \n
    \n \n \n {!isCancelled && purchaseOrderId > 0 && actions.length > 0 && (\n \n
    \n \n }\n align=\"end\"\n >\n {actions}\n \n
    \n
    \n )}\n
    \n
    \n \n {!isDisabled && !isCancelled && vendorAccount?.value && (\n \n {\n const value = e.target.checked;\n if (!value) {\n setShowSecondaryVendorInputs(true);\n } else {\n setShowSecondaryVendorInputs(false);\n setValue('secondaryVendor', null);\n setValue('secondaryVendorAccount', null);\n }\n }}\n labelPosition=\"right\"\n label={\n \n }\n />\n \n )}\n {showSecondaryVendorInputs && (\n <>\n
    \n \n }\n >\n \n \n \n \n }\n >\n \n \n \n
    \n
    \n \n }\n >\n {\n setValue('transferId.hasChanged', true);\n },\n })}\n />\n \n \n \n
    \n \n \n
    \n \n )}\n \n \n \n )}\n {\n setActivePosEntity(id, vendorOrderId?.value, true);\n if (refreshData) {\n await refreshData(true);\n }\n if (refreshExpandedListItems) {\n await refreshCatalog();\n await refreshExpandedListItems();\n }\n cancelVoidDialog.closeDialog();\n }}\n onCancel={() => cancelVoidDialog.closeDialog()}\n />\n {\n setActivePosEntity(id, vendorOrderId?.value, true);\n\n // We need to call refreshData here because setActivePosEntity only update the context data for CatalogContext (listing/sales)\n // but for purchase, it has it's own data context so we have to manually call it here\n // and since the setActivePosEntity doesn't actually update the table data, no need to await it\n if (refreshData) {\n await refreshData(true);\n }\n if (refreshExpandedListItems) {\n await refreshCatalog();\n await refreshExpandedListItems();\n }\n restorePurchaseDialog.closeDialog();\n }}\n onCancel={() => restorePurchaseDialog.closeDialog()}\n />\n navigateUnsavedDialog.closeDialog()}\n />\n \n );\n};\n","import { ReactNode, useCallback } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Button, Stack } from 'src/core/ui';\nimport { UnsavedChanges } from 'src/dialogs/UnsavedChanges';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PurchaseOrderDetails } from 'src/WebApiController';\n\nimport { CloseModalButton } from '../CloseModalButton';\nimport { WizardFooter } from './PurchaseModal.styled';\n\nexport type PurchaseWizardFooterProps = {\n className?: string;\n purchase?: PurchaseOrderDetails | null;\n hasChanges?: boolean;\n onPreviousLabel?: ContentId;\n onPrevious?: () => void;\n onNextLabel?: ContentId;\n onNext?: () => void;\n additionalActions?: ReactNode[];\n isSubmitting?: boolean;\n disabled?: boolean;\n};\n\nexport function PurchaseWizardFooter({\n className,\n hasChanges,\n onPreviousLabel,\n onPrevious,\n onNextLabel,\n onNext,\n additionalActions,\n isSubmitting,\n disabled,\n}: PurchaseWizardFooterProps) {\n const { launchDialog, closeDialog, dialogProps } = useBasicDialog();\n\n const onPreviousWrapper = () => {\n if (hasChanges && onPrevious) {\n launchDialog();\n } else {\n onPrevious?.();\n }\n };\n\n const goToCancelView = useCallback(() => {\n closeDialog();\n onPrevious?.();\n }, [closeDialog, onPrevious]);\n\n if (!onPrevious && !onNext) {\n return null;\n }\n\n if (disabled) {\n return (\n \n \n \n \n \n );\n }\n\n return (\n \n \n {additionalActions}\n {onNext && onNextLabel && (\n \n )}\n \n {onPrevious && onPreviousLabel && (\n \n \n \n )}\n\n \n \n );\n}\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useMemo, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Radio, RadioGroup, Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n Feature,\n PurchaseOrderQuery,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\n\nexport type BulkUpdateDeliveryOverrideDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n onBulkUpdate: (\n updateSalesOfListings: boolean,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.TicketGroup;\n skipTicketGroups?: boolean;\n purchaseOrderQuery?: PurchaseOrderQuery;\n disabled?: boolean;\n onSaveOverrideSettings?: () => Promise;\n onCancel: () => void;\n backfillDeliveryStrategyFeature:\n | Feature.BackfillDeliveryStrategyInventoryEvent\n | Feature.BackfillDeliveryStrategyPurchaseEvent\n | Feature.BackfillDeliveryStrategyVendorAccount;\n backfillDeliveryStrategyToSaleFeature:\n | Feature.BackfillDeliveryStrategyInventoryEventToSales\n | Feature.BackfillDeliveryStrategyPurchaseEventToSales\n | Feature.BackfillDeliveryStrategyVendorAccountToSales;\n};\n\nenum UpdateFulfillmentMode {\n UpdateExistingPurchasesAndListings = 'UpdateExistingPurchasesAndListings',\n UpdateExistingListings = 'UpdateExistingListings',\n UpdateNone = 'UpdateNone',\n}\n\nexport function BulkUpdateDeliveryOverrideDialog({\n updateKey,\n entityType,\n skipTicketGroups,\n purchaseOrderQuery,\n onBulkUpdate,\n onSaveOverrideSettings,\n onCancel,\n disabled,\n backfillDeliveryStrategyFeature,\n backfillDeliveryStrategyToSaleFeature,\n ...dialogProps\n}: BulkUpdateDeliveryOverrideDialogProps) {\n const [updateFulfillmentMode, setUpdateFulfillmentMode] =\n useState(UpdateFulfillmentMode.UpdateNone);\n const [updateSalesOfListings, setUpdateSalesOfListings] =\n useState(false);\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const hasBackfillDeliveryStrategyFeature = useUserHasFeature(\n backfillDeliveryStrategyFeature\n );\n const hasBackfillDeliveryStrategyToSaleFeature = useUserHasFeature(\n backfillDeliveryStrategyToSaleFeature\n );\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity?.(0);\n await refreshExpandedListItems();\n\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel?.();\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, preview, initJob, stage } = useBulkEditHub(\n entityType,\n BulkActionType.BackfillDeliverySettings,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature = useMemo(\n () => bulkEditHub?.state === HubConnectionState.Connected,\n [bulkEditHub?.state]\n );\n\n const onBeforeSubmit = useCallback(() => {\n if (updateFulfillmentMode === UpdateFulfillmentMode.UpdateNone) {\n onSaveOverrideSettings?.();\n onCancel?.();\n return false; // don't proceed to preview\n }\n\n return true; // proceed to preview\n }, [onCancel, onSaveOverrideSettings, updateFulfillmentMode]);\n\n const onBulkEditSubmitHandler = useCallback(\n async (\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onBulkUpdate(updateSalesOfListings, false, onPreviewReceived);\n } else {\n // If we're doing update, only save settings when confirmed\n await onSaveOverrideSettings?.();\n onBulkUpdate(\n updateSalesOfListings,\n hasBackgroundBulkEditFeature,\n undefined,\n preview\n );\n }\n setIsLoading(false);\n },\n [\n onBulkUpdate,\n updateSalesOfListings,\n onSaveOverrideSettings,\n hasBackgroundBulkEditFeature,\n preview,\n ]\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const submitButtonRef = useRef(null);\n\n return (\n }\n size={stage === BulkEditStage.Preview ? 'xl' : 'md'}\n {...dialogProps}\n onOpened={() => {\n setUpdateFulfillmentMode(UpdateFulfillmentMode.UpdateNone);\n setUpdateSalesOfListings(false);\n initJob();\n }}\n onKeyUp={(e) => {\n if (submitButtonRef.current && e.key === 'Enter') {\n submitButtonRef.current.click();\n }\n }}\n onClosed={() => {\n if (updateFulfillmentMode !== UpdateFulfillmentMode.UpdateNone) {\n setMainDialogOpened(false);\n }\n // Call the outside one if there is one\n dialogProps.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n {skipTicketGroups ? (\n \n ) : (\n \n )}\n \n {hasBackfillDeliveryStrategyFeature && (\n {\n setUpdateFulfillmentMode(mode);\n if (mode === UpdateFulfillmentMode.UpdateNone) {\n setUpdateSalesOfListings(false);\n }\n }}\n updateFulfillmentMode={updateFulfillmentMode}\n skipTicketGroups={skipTicketGroups}\n disabled={disabled}\n />\n )}\n {hasBackfillDeliveryStrategyFeature &&\n hasBackfillDeliveryStrategyToSaleFeature && (\n {\n setUpdateSalesOfListings((prev) => !prev);\n }}\n disabled={\n isLoading ||\n updateFulfillmentMode === UpdateFulfillmentMode.UpdateNone\n }\n label={}\n />\n )}\n \n \n );\n}\n\nexport const BulkUpdateDeliveryOverrideDialogModeRadioGroup = ({\n onValueChange,\n updateFulfillmentMode,\n skipTicketGroups,\n disabled,\n}: {\n onValueChange?: ((value: UpdateFulfillmentMode) => void) | undefined;\n updateFulfillmentMode: UpdateFulfillmentMode;\n skipTicketGroups?: boolean;\n disabled?: boolean;\n}) => {\n return (\n {\n onValueChange?.(value as UpdateFulfillmentMode);\n }}\n value={updateFulfillmentMode}\n >\n \n {skipTicketGroups ? (\n \n \n \n }\n />\n ) : (\n \n \n \n }\n />\n )}\n \n {skipTicketGroups ? (\n \n ) : (\n \n )}\n \n }\n />\n \n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport {\n ComponentProps,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { FormProvider, useForm, useFormContext } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { TicketTypePriorityInput } from 'src/components/common/TicketTypePriorityInput';\nimport { PURCHASE_BULK_BACKFILL_DELIVERY_SETTINGS_KEY } from 'src/components/Purchases/PurchaseActionDropdown';\nimport { DeliveryTypeSelector } from 'src/components/Selectors/DeliveryTypeSelector';\nimport { PurchasePaymentMethodSelector } from 'src/components/Selectors/PurchasePaymentMethodSelector';\nimport { SellerAccountEmployeeSelector } from 'src/components/Selectors/SellerAccountEmployeeSelector';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, Stack, Switch } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { FieldWrapper } from 'src/modals/common/Purchase';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EmptyPurchaseQuery } from 'src/utils/eventQueryUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditPreviewWithDetails,\n BulkEditPurchaseClient,\n DeliveryType,\n Feature,\n PurchaseClient,\n PurchaseOrderQuery,\n PurchaseOrderState,\n PurchaseVendorAccountDetails,\n} from 'src/WebApiController';\n\nimport { BulkUpdateDeliveryOverrideDialog } from '../BulkEdits/BulkUpdateDeliveryOverrideDialog';\nimport * as styles from './PurchaseVendorAccountDialog.css';\n\nexport const EmptyVendorAccountId = '00000000-0000-0000-0000-000000000000';\n\nconst EmptyVendorAccountDetails: PurchaseVendorAccountDetails = {\n vendorId: 0, // Need to fill in as a required field\n name: '',\n id: EmptyVendorAccountId,\n email: '',\n password: null,\n dftBuyerId: '',\n dftPayMethodId: null,\n isNoFulfill: null,\n delivType: null,\n tktTypeRules: null,\n};\n\nexport type PurchaseVendorAccountDialogProps = {\n vendorAccountId: string | null;\n vendorId: number;\n onSave: (data: PurchaseVendorAccountDetails) => void;\n} & ComponentProps;\n\nexport function PurchaseVendorAccountDialog({\n vendorAccountId,\n vendorId,\n ...rest\n}: PurchaseVendorAccountDialogProps) {\n const [isLoading, setIsLoading] = useState(false);\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const methods = useForm();\n\n const getVendorAccountDetails = useCallback(() => {\n if (vendorAccountId && vendorAccountId !== EmptyVendorAccountId) {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const details = await new PurchaseClient(\n activeAccountWebClientConfig\n ).getVendorAccountDetails(vendorAccountId);\n\n if (details?.id === vendorAccountId) {\n methods.reset(details);\n } else {\n methods.reset({\n ...EmptyVendorAccountDetails,\n vendorId,\n });\n }\n\n methods.reset(details);\n },\n (error) => {\n showErrorDialog('PurchaseClient.getVendorAccountDetails', error, {\n trackErrorData: { vendorAccountId },\n });\n }\n ).finally(() => {\n setIsLoading(false);\n });\n } else {\n methods.reset({\n ...EmptyVendorAccountDetails,\n vendorId,\n });\n }\n }, [\n activeAccountWebClientConfig,\n methods,\n showErrorDialog,\n vendorAccountId,\n vendorId,\n ]);\n\n useEffect(() => {\n if (rest.isOpen) {\n getVendorAccountDetails();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [vendorAccountId, rest.isOpen]);\n\n return (\n \n \n \n );\n}\n\nexport const PurchaseVendorAccountDialogBody = ({\n isLoading,\n onSave,\n onClosed,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onOkay, // unused\n ...rest\n}: Omit & {\n isLoading: boolean;\n}) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const updateKey = PURCHASE_BULK_BACKFILL_DELIVERY_SETTINGS_KEY;\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n register,\n setError,\n handleSubmit,\n formState,\n getValues,\n watch,\n setValue,\n } = useFormContext();\n const requiredMsg = useContent(ContentId.Required);\n\n const hasVendorAccountDeliveryStrategyFeature = useUserHasFeature(\n Feature.VendorAccountDeliveryStrategy\n );\n const hasAutoFulfillSettingFeature = useUserHasFeature(\n Feature.AutoFulfillSetting\n );\n\n const { id } = getValues();\n\n const nameError = formState.errors.name?.message;\n const emailError = formState.errors.email?.message;\n const paymentMethodError = formState.errors.dftPayMethodId?.message;\n const buyerUserIdError = formState.errors.dftBuyerId?.message;\n\n const vendorAccountName = watch('name');\n const encryptedEmailAddress = watch('email');\n const defaultPurchasePaymentMethodId = watch('dftPayMethodId');\n const defaultBuyerUserId = watch('dftBuyerId');\n const deliveryType = watch('delivType');\n const isNoFulfill = watch('isNoFulfill');\n const ticketTypeRules = watch('tktTypeRules');\n\n const [skipAutoFulfill, setSkipAutoFulfill] = useState(isNoFulfill == null);\n const [skipDeliveryOverride, setSkipDeliveryOverride] = useState(\n deliveryType == null\n );\n\n useEffect(() => {\n if (!isLoading) {\n setSkipAutoFulfill(isNoFulfill == null);\n setSkipDeliveryOverride(deliveryType == null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isLoading]);\n\n const updateDialog = useBasicDialog();\n\n const {\n openDialog: openBulkUpdateDialog,\n closeDialog: closeBulkUpdateDialog,\n } = useDialog(\n DialogId.BulkBackfillDeliverySettings,\n BulkUpdateDeliveryOverrideDialog\n );\n\n const purchaseQuery = useMemo(() => {\n return {\n ...EmptyPurchaseQuery,\n purchaseOrderState: PurchaseOrderState.Active,\n purchaseVendorAccountIds: [id],\n } as PurchaseOrderQuery;\n }, [id]);\n\n const onBulkUpdate = useCallback(\n async (\n updateSalesOfListings: boolean,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n ).bulkBackfillDeliverySettingsPreview(\n purchaseQuery,\n updateSalesOfListings,\n true\n );\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkBackfillDeliverySettingsPreview', error, {\n trackErrorData: { purchaseQuery },\n });\n }\n );\n } else {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n ).bulkBackfillDeliverySettings(\n preview!.preview,\n updateSalesOfListings,\n updateKey,\n supportBackgroundProcess\n );\n if (!supportBackgroundProcess) {\n closeBulkUpdateDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkBackfillDeliverySettings', error, {\n trackErrorData: {\n preview,\n },\n });\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeBulkUpdateDialog,\n purchaseQuery,\n showErrorDialog,\n updateKey,\n ]\n );\n\n const onSubmit = useCallback(() => {\n let hasErrors = false;\n if (!encryptedEmailAddress) {\n setError('email', { message: requiredMsg }, { shouldFocus: true });\n hasErrors = true;\n }\n if (!vendorAccountName) {\n setError('name', { message: requiredMsg }, { shouldFocus: true });\n hasErrors = true;\n }\n\n if (!hasErrors) {\n const autoFulfillRemovedOrNotChanged =\n skipAutoFulfill || isNoFulfill === formState.defaultValues?.isNoFulfill;\n const deliverySettingsRemovedOrNotChanged =\n skipDeliveryOverride ||\n (deliveryType === formState.defaultValues?.delivType &&\n isEqual(ticketTypeRules, formState.defaultValues?.tktTypeRules));\n\n if (\n id === EmptyVendorAccountId ||\n (autoFulfillRemovedOrNotChanged && deliverySettingsRemovedOrNotChanged)\n ) {\n handleSubmit(onSave)();\n } else {\n openBulkUpdateDialog({\n updateKey: updateKey,\n entityType: ActionOutboxEntityType.TicketGroup,\n ...updateDialog.dialogProps,\n onSaveOverrideSettings: handleSubmit(onSave),\n onBulkUpdate: onBulkUpdate,\n onCancel: () => {\n closeBulkUpdateDialog();\n },\n backfillDeliveryStrategyFeature:\n Feature.BackfillDeliveryStrategyVendorAccount,\n backfillDeliveryStrategyToSaleFeature:\n Feature.BackfillDeliveryStrategyVendorAccountToSales,\n });\n }\n }\n }, [\n closeBulkUpdateDialog,\n deliveryType,\n encryptedEmailAddress,\n formState.defaultValues?.delivType,\n formState.defaultValues?.isNoFulfill,\n formState.defaultValues?.tktTypeRules,\n handleSubmit,\n id,\n isNoFulfill,\n onBulkUpdate,\n onSave,\n openBulkUpdateDialog,\n requiredMsg,\n setError,\n skipAutoFulfill,\n skipDeliveryOverride,\n ticketTypeRules,\n updateDialog.dialogProps,\n updateKey,\n vendorAccountName,\n ]);\n\n return (\n \n }\n footer={\n <>\n {onClosed && (\n \n )}\n \n \n \n \n }\n onCancel={onClosed}\n >\n {isLoading ? (\n \n ) : (\n
    \n \n }\n >\n \n \n \n\n \n }\n >\n \n \n \n\n \n }\n >\n \n \n \n\n \n }\n >\n {\n if (userId) {\n setValue('dftBuyerId', userId);\n }\n }}\n />\n \n \n\n \n }\n >\n {\n if (paymentMethodId) {\n setValue('dftPayMethodId', Number(paymentMethodId));\n }\n }}\n />\n \n \n\n {hasVendorAccountDeliveryStrategyFeature && (\n \n
    \n \n
    \n

    \n \n

    \n\n {hasAutoFulfillSettingFeature && (\n <>\n }\n labelPosition=\"right\"\n onChange={(e) => {\n const skip = !e.target.checked;\n setSkipAutoFulfill(skip);\n if (skip) {\n setValue('isNoFulfill', null, {\n shouldDirty: true,\n });\n } else {\n // We want to default to false if the user enables the setting\n setValue('isNoFulfill', true, {\n shouldDirty: true,\n });\n }\n }}\n checked={!skipAutoFulfill}\n />\n {!skipAutoFulfill && (\n \n }\n >\n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n setValue('isNoFulfill', !isChecked);\n }}\n />\n \n \n )}\n \n )}\n\n }\n labelPosition=\"right\"\n onChange={(e) => {\n const skip = !e.target.checked;\n setSkipDeliveryOverride(skip);\n if (skip) {\n setValue('delivType', null, {\n shouldDirty: true,\n });\n } else {\n setValue('delivType', DeliveryType.InApp, {\n shouldDirty: true,\n });\n }\n\n setValue('tktTypeRules', null, {\n shouldDirty: true,\n });\n }}\n checked={!skipDeliveryOverride}\n />\n {!skipDeliveryOverride && (\n <>\n \n }\n >\n {\n if (newD !== deliveryType) {\n setValue('delivType', newD);\n if (!newD) {\n setValue('tktTypeRules', null);\n }\n }\n }}\n />\n \n \n {deliveryType && (\n \n }\n >\n {\n setValue('tktTypeRules', newRules);\n }}\n disabled={formState.isSubmitting}\n />\n \n \n )}\n \n )}\n
    \n )}\n
    \n )}\n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport {\n createContext,\n Dispatch,\n ReactNode,\n SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { usePurchaseVendorSelector } from 'src/components/Selectors/PurchaseVendorSelector/usePurchaseVendorSelector';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { EmptyVendorAccountId } from 'src/dialogs/PurchaseVendorAccountDialog';\nimport {\n AutoPoClient,\n AutoPoInboundEmail,\n AutoPoInboundEmailClassificationType,\n AutoPoPartialPurchaseOrder,\n PurchaseClient,\n PurchaseVendor,\n PurchaseVendorAccount,\n PurchaseVendorAccountDetails,\n} from 'src/WebApiController';\n\nexport type AutoPoVendorFields = {\n vendor: PurchaseVendor | null | undefined;\n vendorAccount: PurchaseVendorAccount | null | undefined;\n};\n\nexport type AutoPoPartialPurchaseOrderFields = AutoPoPartialPurchaseOrder &\n AutoPoVendorFields;\n\ntype PartialPurchaseOrderKey = {\n partialPurchaseOrderId?: number | null;\n toEmailAddress?: string | null;\n purchaseOrderVendorId?: number | null;\n};\n\ntype IEmailPurchaseOrderContext = {\n inboundEmailsClassified?: AutoPoInboundEmail[];\n isLoading?: boolean;\n isError?: boolean;\n\n inboundEmailId?: number;\n setInboundEmailId: (\n partialPurchaseOrderId: number | null | undefined\n ) => void;\n\n classificationType?: AutoPoInboundEmailClassificationType;\n setClassificationType: Dispatch<\n SetStateAction\n >;\n\n setOrderId: Dispatch>;\n\n partialPurchaseOrderKey?: PartialPurchaseOrderKey;\n setPartialPurchaseOrderKey: (\n key: PartialPurchaseOrderKey | undefined\n ) => void;\n\n partialPurchaseOrder?: AutoPoPartialPurchaseOrderFields;\n\n reset: () => void;\n};\n\nexport const EmailPurchaseOrderContext =\n createContext({\n setInboundEmailId: () => {},\n setClassificationType: () => {},\n setOrderId: () => {},\n setPartialPurchaseOrderKey: () => {},\n reset: () => {},\n });\n\nexport const EmailPurchaseOrderContextProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => {\n const { availableVendors } = usePurchaseVendorSelector({});\n\n const [partialPurchaseOrderKey, setPartialPurchaseOrderKey] =\n useState();\n\n const [orderId, setOrderId] = useState();\n const [inboundEmailId, setInboundEmailId] = useState();\n const [classificationType, setClassificationType] =\n useState();\n\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const [\n partialPurchaseOrderVendorFields,\n setPartialPurchaseOrderVendorFields,\n ] = useState();\n\n const getOrCreateVendorAccount = useCallback(\n async (\n toEmail: string | null | undefined,\n vendorId: number | null | undefined\n ): Promise => {\n if (vendorId == null || toEmail == null) {\n return;\n }\n\n const vendor = availableVendors[vendorId];\n if (vendor == null) {\n return;\n }\n\n let vendorAccountOverride: PurchaseVendorAccountDetails | undefined = (\n await new PurchaseClient(\n activeAccountWebClientConfig\n ).getAccessibleVendorAccounts(\n { item1: [vendorId], item2: [] },\n toEmail,\n 1,\n 0\n )\n )[0] as PurchaseVendorAccountDetails | undefined;\n\n if (vendorAccountOverride == null) {\n vendorAccountOverride = {\n id: EmptyVendorAccountId,\n name: 'autopo-' + toEmail,\n email: toEmail,\n password: null,\n vendorId: vendor.id,\n dftPayMethodId: null,\n dftBuyerId: null,\n isNoFulfill: null,\n delivType: null,\n tktTypeRules: null,\n };\n\n const newId = await new PurchaseClient(\n activeAccountWebClientConfig\n ).mergeVendorAccount(vendorAccountOverride);\n\n if (newId) {\n vendorAccountOverride.id = newId;\n } else {\n vendorAccountOverride = undefined;\n }\n }\n\n setPartialPurchaseOrderVendorFields(\n vendorAccountOverride\n ? {\n vendorAccount: vendorAccountOverride,\n vendor,\n }\n : undefined\n );\n },\n [activeAccountWebClientConfig, availableVendors]\n );\n\n const partialPurchaseOrderResult = useQuery({\n queryKey: [\n 'AutoPoClient.getPartialPurchaseOrder',\n activeAccountWebClientConfig.activeAccountId,\n partialPurchaseOrderKey,\n ],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n const partialPurchaseOrderId =\n partialPurchaseOrderKey?.partialPurchaseOrderId;\n const partialPurchaseOrderVendorFields = await getOrCreateVendorAccount(\n partialPurchaseOrderKey?.toEmailAddress,\n partialPurchaseOrderKey?.purchaseOrderVendorId\n );\n\n if (partialPurchaseOrderId == null) {\n if (partialPurchaseOrderVendorFields != null) {\n return {\n vendorAccount: partialPurchaseOrderVendorFields.vendorAccount,\n vendor: partialPurchaseOrderVendorFields.vendor,\n } as AutoPoPartialPurchaseOrderFields;\n }\n return null;\n }\n\n const partialPurchaseOrder = (await new AutoPoClient(\n activeAccountWebClientConfig\n ).getPartialPurchaseOrder(\n partialPurchaseOrderId\n )) as AutoPoPartialPurchaseOrderFields;\n\n if (partialPurchaseOrderVendorFields != null) {\n partialPurchaseOrder.vendorAccount =\n partialPurchaseOrderVendorFields.vendorAccount;\n partialPurchaseOrder.vendor = partialPurchaseOrderVendorFields.vendor;\n }\n return partialPurchaseOrder;\n },\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('AutoPoClient.getPartialPurchaseOrder', error, {\n partialPurchaseOrderKey,\n });\n },\n },\n });\n\n useEffect(() => {\n getOrCreateVendorAccount(\n partialPurchaseOrderKey?.toEmailAddress,\n partialPurchaseOrderKey?.purchaseOrderVendorId\n );\n }, [getOrCreateVendorAccount, partialPurchaseOrderKey]);\n\n const partialPurchaseOrder: AutoPoPartialPurchaseOrderFields = useMemo(() => {\n const result =\n partialPurchaseOrderResult.data ??\n ({} as unknown as AutoPoPartialPurchaseOrderFields);\n\n if (orderId) {\n result.orderId = orderId;\n }\n if (partialPurchaseOrderVendorFields) {\n result.vendorAccount = partialPurchaseOrderVendorFields?.vendorAccount;\n result.vendor = partialPurchaseOrderVendorFields?.vendor;\n }\n\n return result;\n }, [\n orderId,\n partialPurchaseOrderResult.data,\n partialPurchaseOrderVendorFields,\n ]);\n\n return (\n {\n setInboundEmailId(inboundEmailId ?? undefined);\n },\n classificationType,\n setClassificationType,\n\n setOrderId,\n partialPurchaseOrderKey,\n setPartialPurchaseOrderKey: (key) => {\n setPartialPurchaseOrderVendorFields(undefined);\n setPartialPurchaseOrderKey(key);\n },\n\n partialPurchaseOrder,\n\n reset() {\n setPartialPurchaseOrderVendorFields(undefined);\n setPartialPurchaseOrderKey(undefined);\n setInboundEmailId(undefined);\n setClassificationType(undefined);\n setOrderId(undefined);\n },\n }}\n >\n {children}\n \n );\n};\n","import { useMeasure } from 'react-use';\n\n/**\n * The width that we want to scale the html emails relative to.\n */\nexport const HTML_EMAIL_MAX_WIDTH = 700;\n\nexport type EmailRendererProps = {\n htmlBody: string | null | undefined;\n textBody?: string | null | undefined;\n};\n\nexport function EmailRenderer({ htmlBody, textBody }: EmailRendererProps) {\n const [wrapperRef, { width: wrapperWidth }] = useMeasure();\n return (\n
    \n \n {htmlBody ? (\n
    \n ) : (\n
    {textBody}
    \n )}\n
    \n
    \n );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SomethingWentWrong } from 'src/views';\nimport {\n ApiException,\n AutoPoClient,\n ValueTupleOfStringAndString,\n} from 'src/WebApiController';\n\nimport { EmailRenderer } from './EmailRenderer';\n\nexport const EmailBody = ({ inboundEmailId }: { inboundEmailId: number }) => {\n const { trackError } = useErrorBoundaryContext();\n\n const { activeAccountWebClientConfig } = useAppContext();\n const inboundEmailBodyResult = useQuery<\n ValueTupleOfStringAndString | null,\n ApiException\n >({\n queryKey: [\n 'AutoPoClient.getInboundEmailBody',\n activeAccountWebClientConfig.activeAccountId,\n inboundEmailId,\n ],\n queryFn: () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n\n return new AutoPoClient(activeAccountWebClientConfig).getInboundEmailBody(\n inboundEmailId\n );\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n networkMode: 'offlineFirst',\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('AutoPoClient.getInboundEmailBody', error, {\n inboundEmailId,\n });\n },\n },\n });\n\n if (inboundEmailBodyResult.isLoading) {\n if (inboundEmailBodyResult.isPaused) {\n return (\n }\n message={\n \n }\n />\n );\n } else {\n return ;\n }\n }\n\n if (!inboundEmailBodyResult.data) {\n return null;\n }\n return (\n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { useState } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport {\n ConfirmDialog,\n ConfirmDialogProps,\n} from 'src/core/interim/dialogs/ConfirmDialog';\nimport { Stack } from 'src/core/ui';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { UserSetting } from 'src/WebApiController';\n\nimport { contentWrapper } from './AlertWithSuppressionDialog.css';\n\nexport type AlertSuppressionSetting = {\n suspiciousPriceSuppressionTimestamp?: Date;\n manualPriceDisableAutoPricingTimestamp?: Date;\n manualPriceAdjustFloorOrCeilingTimestamp?: Date;\n deliveryInfoChangeSuppressionTimestamp?: Date;\n bulkUpdateTicketGroupSuppressionTimestamp?: Date;\n cancelTicketGroupSuppressionTimestamp?: Date;\n mergedGroupListingTimestamp?: Date;\n};\n\nexport type Alert = {\n bodyText: React.ReactNode;\n key: keyof AlertSuppressionSetting;\n onOkay?: () => void;\n onCancel?: () => void;\n};\n\nexport type AlertSuppressionSettingProps = Omit<\n ConfirmDialogProps,\n 'bodyText'\n> & {\n alerts?: Alert[];\n};\n\nexport type AlertDialogPropsWithTimestamp = {\n dialogProps: AlertSuppressionSettingProps;\n lastTimeStamp: Date | undefined;\n};\n\nexport const AlertWithSuppressionDialog = ({\n onOkay,\n onCancel,\n alerts,\n headerText,\n okText,\n cancelText,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n bodyText,\n ...props\n}: AlertSuppressionSettingProps) => {\n const { value, setUserSetting } =\n useServerUserSetting({\n id: UserSetting.SuspiciousPriceChange,\n });\n\n const [suppressWarning, setSuppressWarning] = useState<\n Record\n >({} as Record);\n return (\n \n {alerts?.map(({ key, bodyText }) => (\n \n {bodyText}\n {\n const s = e.target.checked;\n setSuppressWarning({ ...suppressWarning, [key]: s });\n }}\n labelPosition=\"right\"\n label={}\n />\n \n ))}\n \n }\n onOkay={() => {\n const newValue = { ...(value ?? {}) };\n alerts?.forEach((a) => {\n a.onOkay?.();\n newValue[a.key] = suppressWarning[a.key] ? new Date() : undefined;\n });\n\n if (!isEqual(newValue, value)) {\n setUserSetting(newValue);\n }\n\n onOkay?.();\n }}\n onCancel={() => {\n alerts?.forEach((a) => {\n a.onCancel?.();\n });\n onCancel?.();\n }}\n okText={okText ?? ContentId.OK}\n cancelText={cancelText ?? ContentId.Cancel}\n {...props}\n />\n );\n};\n","import { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { UserSetting } from 'src/WebApiController';\n\nimport { AlertSuppressionSetting } from './AlertWithSuppressionDialog';\n\nexport function useAlertWithSuppressionDialog(\n key: keyof AlertSuppressionSetting,\n onOkay?: () => void,\n onCancel?: () => void\n) {\n const { value } = useServerUserSetting({\n id: UserSetting.SuspiciousPriceChange,\n });\n return {\n value,\n key,\n onOkay,\n onCancel,\n };\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { useAlertWithSuppressionDialog } from './useAlertWithSuppressionDialog';\n\nexport function useCancelTicketGroupDialog(\n onOkay: () => void,\n onCancel: () => void\n) {\n const { value, ...rest } = useAlertWithSuppressionDialog(\n 'cancelTicketGroupSuppressionTimestamp',\n onOkay,\n onCancel\n );\n return {\n ...rest,\n lastTimeStamp: value?.cancelTicketGroupSuppressionTimestamp,\n bodyText: ,\n cancelText: ContentId.No,\n };\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { useAlertWithSuppressionDialog } from './useAlertWithSuppressionDialog';\n\nexport function useManualPriceDisableAutoPricingDialog(onOkay: () => void) {\n const { value, ...rest } = useAlertWithSuppressionDialog(\n 'manualPriceDisableAutoPricingTimestamp',\n onOkay,\n undefined\n );\n return {\n ...rest,\n lastTimeStamp: value?.manualPriceDisableAutoPricingTimestamp,\n bodyText: ,\n };\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { useAlertWithSuppressionDialog } from './useAlertWithSuppressionDialog';\n\nexport function useSuspiciousPriceChangeDialog(\n onOkay: () => void,\n onCancel: () => void\n) {\n const { value, ...rest } = useAlertWithSuppressionDialog(\n 'suspiciousPriceSuppressionTimestamp',\n onOkay,\n onCancel\n );\n return {\n ...rest,\n lastTimeStamp: value?.suspiciousPriceSuppressionTimestamp,\n bodyText: ,\n };\n}\n","import { ComponentProps, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Button, Radio, RadioGroup, Stack, TextArea } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './InternationalComplianceDialog.css';\n\ntype WorksFor = 'viagogo' | 'eventOrganizer';\n\n/**\n * Do NOT change this object without consulting with the backend. This type is stored in the db as\n * a user setting.\n */\nexport type InternationalComplianceSetting = {\n /**\n * Timestamp of when user last submitted with \"Use this answer for the next 24 hours\".\n */\n doNotAskAgainTimestamp: Date | null;\n ticketRestrictions: string | null;\n worksFor: WorksFor | null;\n isSpeculativeListing: boolean | null;\n};\n\ntype InternationalComplianceDialogProps = Omit<\n ComponentProps,\n 'onSubmit'\n> & {\n onSubmit: (result: InternationalComplianceSetting) => void;\n};\n\nexport function InternationalComplianceDialog({\n onSubmit,\n ...dialogProps\n}: InternationalComplianceDialogProps) {\n const [reuseAnswer, setSaveAnswer] = useState(false);\n const [restrictions, setRestrictions] = useState(null);\n const [worksFor, setWorksFor] = useState(null);\n const [isSpeculativeListing, setIsSpeculativeListing] = useState<\n boolean | null\n >(null);\n const [isSecondStep, setIsSecondStep] = useState(false);\n return (\n }\n footer={\n !isSecondStep ? (\n <>\n {\n setIsSecondStep(true);\n }}\n >\n \n \n {\n onSubmit({\n doNotAskAgainTimestamp: reuseAnswer ? new Date() : null,\n ticketRestrictions: null,\n worksFor: null,\n isSpeculativeListing: null,\n });\n }}\n >\n \n \n \n ) : (\n {\n onSubmit({\n doNotAskAgainTimestamp: reuseAnswer ? new Date() : null,\n ticketRestrictions: restrictions,\n worksFor,\n isSpeculativeListing,\n });\n }}\n >\n \n \n )\n }\n includeCloseButton={false}\n {...dialogProps}\n >\n \n
    \n
    \n \n
    \n {isSecondStep && (\n \n {\n setRestrictions(e.target.value);\n }}\n >\n \n )}\n
    \n\n
    \n
    \n \n
    \n {isSecondStep && (\n {\n setWorksFor(value as WorksFor);\n }}\n value={worksFor ?? undefined}\n >\n \n }\n />\n }\n />\n \n \n )}\n
    \n
    \n
    \n {' '}\n \n
    \n {isSecondStep && (\n {\n setIsSpeculativeListing(value === 'yes');\n }}\n value={\n isSpeculativeListing === true\n ? 'yes'\n : isSpeculativeListing === false\n ? 'no'\n : undefined\n }\n >\n \n } />\n } />\n \n \n )}\n
    \n }\n onChange={(e) => {\n setSaveAnswer(e.target.checked);\n }}\n />\n
    \n \n );\n}\n","import { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { UserSetting } from 'src/WebApiController';\n\nimport { InternationalComplianceSetting } from './InternationalComplianceDialog';\n\nexport function useInternationalComplianceDialog(\n onSubmit: (result: InternationalComplianceSetting) => void\n) {\n const { value, setUserSetting } =\n useServerUserSetting({\n id: UserSetting.InternationalCompliance,\n });\n return {\n value,\n onSubmit: (result: InternationalComplianceSetting) => {\n setUserSetting(result);\n onSubmit(result);\n },\n };\n}\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const FieldLabelWrapper = styled.div`\n font-weight: 600;\n ${({\n theme: {\n media,\n typography: { getStyles },\n },\n }) => `\n ${getStyles('body1')}\n padding-left: 0;\n ${media.makeMediaQuery(\n media.breakpoints.md,\n `padding-left: 0px;` // reset padding for tablets and above\n )}\n`}\n`;\n\nexport const FromToLabel = styled.div`\n color: ${(props) => props.theme.colors.textPrimary};\n padding-bottom: ${() => vars.spacing.sm};\n text-transform: uppercase;\n`;\n\nexport const DividerIcon = styled.div`\n display: grid;\n place-content: center;\n border-radius: 50%;\n width: ${() => vars.spacing.xl};\n height: ${() => vars.spacing.xl};\n color: ${(props) => props.theme.colors.textBrand};\n border: 1px solid ${(props) => props.theme.colors.borderPrimary};\n background: ${(props) => props.theme.colors.backgroundPrimary};\n`;\n\nexport const DividerContainer = styled.div`\n display: flex;\n align-items: center;\n place-content: center;\n position: relative;\n min-height: 53px;\n margin-top: ${() => `-${vars.spacing.xxs}`};\n margin-bottom: ${() => `-${vars.spacing.xxs}`};\n`;\n","import { ComponentProps, useEffect, useMemo, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { usePurchaseVendorAccountSelector } from 'src/components/Selectors/PurchaseVendorAccountSelector/usePurchaseVendorAccountSelector';\nimport { usePurchaseVendorSelector } from 'src/components/Selectors/PurchaseVendorSelector/usePurchaseVendorSelector';\nimport { Content } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { vars } from 'src/core/themes';\nimport { DividerLine } from 'src/core/ui';\nimport { FieldWrapper } from 'src/modals/common/Purchase';\nimport { ChevronDownIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PurchaseVendor, PurchaseVendorAccount } from 'src/WebApiController';\n\nimport * as styles from './SecondaryVendorAccountDialog.css';\nimport {\n DividerContainer,\n DividerIcon,\n FieldLabelWrapper,\n FromToLabel,\n} from './SecondaryVendorAccountDialog.styled';\n\nexport type SecondaryVendorAccountDialogProps = ComponentProps<\n typeof RSModal\n> & {\n vendorAccountFrom: PurchaseVendorAccount | null;\n vendorAccountTo: PurchaseVendorAccount | null;\n onSave: (\n alternativeVendor: PurchaseVendor | null | undefined,\n alternativeVendorAccount: PurchaseVendorAccount | null | undefined\n ) => void;\n onCancel: () => void;\n};\n\nexport function SecondaryVendorAccountDialog({\n ...rest\n}: SecondaryVendorAccountDialogProps) {\n return ;\n}\n\nconst SecondaryVendorAccountDialogBody = ({\n vendorAccountFrom,\n vendorAccountTo,\n onSave,\n onCancel,\n ...rest\n}: SecondaryVendorAccountDialogProps) => {\n const {\n query: queryVendor,\n availableVendors,\n posSelectProps: hookVendorPosSelectProps,\n } = usePurchaseVendorSelector({});\n const currentVendor = useMemo(() => {\n const vendorId = (vendorAccountTo ?? vendorAccountFrom)?.vendorId;\n return vendorId == null ? null : availableVendors[vendorId];\n }, [availableVendors, vendorAccountTo, vendorAccountFrom]);\n\n const [localVendorAccountTo, setLocalVendorAccountTo] = useState<\n PurchaseVendorAccount | null | undefined\n >(vendorAccountTo || vendorAccountFrom);\n const [localVendorTo, setLocalVendorTo] = useState<\n PurchaseVendor | null | undefined\n >(currentVendor);\n\n const { posSelectProps: hookVendorAccountFromFilterSelectorProps } =\n usePurchaseVendorAccountSelector({\n vendorId: vendorAccountFrom?.vendorId,\n });\n\n const {\n query: queryVendorAccount,\n sortedVendorAccounts,\n posSelectProps: hookVendorAccountToPosSelectProps,\n } = usePurchaseVendorAccountSelector({\n vendorId: localVendorTo?.id,\n });\n\n useEffect(() => {\n // If we don't have a selected account, auto-select the first one in the list\n if (localVendorTo) {\n return;\n }\n if (queryVendor.data) {\n const vendors = queryVendor.data;\n if (vendors?.length) {\n setLocalVendorTo(vendors[0]);\n return;\n }\n }\n setLocalVendorTo(null);\n }, [queryVendor, localVendorTo]);\n\n useEffect(() => {\n if (localVendorAccountTo) {\n return;\n }\n if (queryVendorAccount.data) {\n if (sortedVendorAccounts?.length) {\n setLocalVendorAccountTo(sortedVendorAccounts[0]);\n return;\n }\n }\n setLocalVendorAccountTo(null);\n }, [queryVendorAccount, localVendorAccountTo, sortedVendorAccounts]);\n\n return (\n }\n footer={\n <>\n {vendorAccountTo && (\n {\n onSave(null, null);\n }}\n />\n )}\n {}\n {\n onSave(localVendorTo, localVendorAccountTo);\n }}\n />\n \n }\n onCancel={onCancel}\n >\n
    \n \n \n \n \n \n \n \n {}}\n style={{ width: '100%' }}\n />\n \n \n \n \n \n {}}\n style={{ width: '100%' }}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n if (val) {\n const value = parseInt(val);\n const vendor = queryVendor.data!.find((v) => v.id === value);\n setLocalVendorTo(vendor);\n setLocalVendorAccountTo(null);\n }\n }}\n style={{ width: '100%' }}\n />\n \n \n \n \n \n {\n if (val && localVendorAccountTo) {\n const vendorAccount = sortedVendorAccounts!.find(\n (v) => v.id === val\n );\n setLocalVendorAccountTo(vendorAccount);\n }\n }}\n style={{ width: '100%' }}\n />\n \n
    \n \n );\n};\n","import React, {\n createContext,\n DragEvent,\n ReactNode,\n useContext,\n useState,\n} from 'react';\nimport { DnDFileUploaderExternalContext } from 'src/core/POS/DnDFileUploader/DnDFileUploader';\n\ntype DndFileUploaderContext = DnDFileUploaderExternalContext & {\n setDndFileUploaderContext: (state: DnDFileUploaderExternalContext) => void;\n};\n\nconst defaultDndFileUploaderContext: DndFileUploaderContext = {\n isDragging: false,\n handleDrag: (e: DragEvent) => undefined,\n handleDrop: (e: DragEvent) => undefined,\n selectFiles: () => undefined,\n setDndFileUploaderContext: (context: DnDFileUploaderExternalContext) =>\n undefined,\n};\n\nexport const DndFileUploaderContext = createContext(\n defaultDndFileUploaderContext\n);\n\nexport const useDndFilerUploaderContext = () =>\n useContext(DndFileUploaderContext);\n\nexport const DndFilerUploaderContextProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => {\n const [dnDFileUploaderContext, setDnDFileUploaderContext] =\n useState(defaultDndFileUploaderContext);\n\n return (\n \n {children}\n \n );\n};\n","import { clsx } from 'clsx';\nimport React, { ReactNode } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useDndFilerUploaderContext } from 'src/core/POS/DnDFileUploader/DndFileUploaderContext';\nimport { Stack } from 'src/core/ui';\nimport { IconsFill, UploadIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './DndGlobalFileDrop.css';\n\ninterface DndGlobalFileDropProps {\n children: ReactNode;\n className?: string;\n}\n\nexport const DndGlobalFileDrop = ({\n children,\n className,\n}: DndGlobalFileDropProps) => {\n const { isDragging, handleDrag, handleDrop } = useDndFilerUploaderContext();\n\n return (\n \n {isDragging && (\n
    \n
    \n \n \n \n \n \n \n
    \n
    \n )}\n {children}\n \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\ninterface PurchaseTicketFlowTitleProps {\n showSearch: boolean;\n isSingleInputModeForMultiEvent: boolean;\n currentGroupIndex: number;\n currentGroupTicketsCount: number;\n}\n\nexport const PurchaseTicketFlowTitle = ({\n currentGroupTicketsCount,\n currentGroupIndex,\n isSingleInputModeForMultiEvent,\n showSearch,\n}: PurchaseTicketFlowTitleProps) => {\n if (showSearch) {\n return ;\n }\n\n if (!showSearch && !isSingleInputModeForMultiEvent) {\n return (\n <>\n {`${currentGroupIndex + 1}`}\n \n );\n }\n\n if (!showSearch && isSingleInputModeForMultiEvent) {\n const eventStrId =\n currentGroupTicketsCount == 1 ? ContentId.Event : ContentId.Events;\n\n return (\n <>\n {currentGroupTicketsCount} \n \n );\n }\n\n return '';\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getEventDateDisplayStrings } from 'src/utils/dateTimeUtils';\nimport { getFormattedEventName } from 'src/utils/eventWithDataUtils';\nimport { TicketGroupInput } from 'src/WebApiController';\n\nimport * as styles from './PurchaseTicketGroupPage.css';\n\nexport const PurchaseTicketGroupHeader = ({\n ticketGroups,\n isSingleInputModeForMultiEvent,\n currentGroupIndex,\n currentGroupTicketsCount,\n}: {\n ticketGroups: TicketGroupInput[];\n isSingleInputModeForMultiEvent?: boolean;\n currentGroupIndex: number;\n currentGroupTicketsCount: number;\n}) => {\n const { event, performer, venue } = ticketGroups[0];\n\n const [eventName] = getFormattedEventName({\n event,\n performer,\n venue,\n slimMode: false,\n });\n\n const { name, descr } = venue || {};\n\n const { formattedEventDate, formattedEventSubDate } =\n getEventDateDisplayStrings(event?.dates.start || '', {\n dateFormat: 'MMM d, y',\n });\n\n return (\n
    \n {isSingleInputModeForMultiEvent ? (\n
    \n {`${currentGroupIndex + 1}`}\n
    \n ) : (\n
    {eventName}
    \n )}\n
    \n {formattedEventDate && (\n
    \n <>\n \n {formattedEventDate} \n \n \n {formattedEventSubDate}\n \n \n
    \n )}\n
    \n {venue && (\n <>\n \n {name}\n \n \n  {'-'} \n {descr}\n \n \n )}\n
    \n
    \n
    \n );\n};\n","import { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\n\nimport * as styles from './PurchaseTicketGroupPage.css';\nexport const PurchaseTicketGroupPageAdditionalInput = () => {\n const { setValue, getValues } = useFormContext();\n const ticketGroups = getValues('ticketGroups');\n const [isChecked, setIsChecked] = useState(\n ticketGroups?.every((tg) => !tg.taxPaid || tg.taxPaid?.value === 0)\n );\n\n return (\n
    \n }\n checked={isChecked}\n onChange={(e) => {\n const isChecked = e.target.checked;\n\n ticketGroups.forEach((_, rowIndex) =>\n setValue(\n `ticketGroups.${rowIndex}.taxPaid`,\n posChangedField(isChecked ? 0 : 1)\n )\n );\n setIsChecked(isChecked);\n }}\n />\n
    \n );\n};\n","import { first, isEqual, orderBy } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useKey, useList } from 'react-use';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Feature, SectionInfo } from 'src/WebApiController';\n\n// Mirror section is defined closest angle but opposite direction\nconst getMirrorSection = (selected: SectionInfo, candidates: SectionInfo[]) => {\n return first(\n orderBy(\n candidates,\n (s) =>\n Math.abs((selected.directionalAngle ?? 0) + (s.directionalAngle ?? 0)),\n 'asc'\n )\n );\n};\n\n// Control + M to add mirrors to selected sections\nexport const useCtrlPlusM = (\n markedSectionIds: number[],\n onToggleMirrors?: (sections: SectionInfo[], exclude?: boolean) => void\n) => {\n const { venueMapInfo } = useEventMapContext();\n const hasVenueMapCtrlPlusMFeature = useUserHasFeature(\n Feature.VenueMapCtrlPlusM\n );\n\n const [prevMarkedIds, setPrevMarkedIds] = useState>(new Set());\n const [mirrors, mirrorsMutation] = useList();\n\n useEffect(() => {\n // Reset mirrors if marked sections changed not because of the mirrors\n if (!isEqual(prevMarkedIds, new Set(markedSectionIds))) {\n mirrorsMutation.reset();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(markedSectionIds)]);\n\n const zonedSections = useMemo(() => {\n return (venueMapInfo?.sections || []).reduce(\n (map, section) => {\n const id = section.rows.find((row) => !!row.tktClass)?.tktClass?.id;\n if (id) {\n (map[id] = map[id] || []).push(section);\n }\n return map;\n },\n {} as Record\n );\n }, [venueMapInfo?.sections]);\n\n const selectedSections = useMemo(\n () =>\n (venueMapInfo?.sections ?? []).filter(({ id }) =>\n markedSectionIds.includes(id)\n ),\n [markedSectionIds, venueMapInfo?.sections]\n );\n\n const onCtrlMClicked = useCallback(() => {\n if (!hasVenueMapCtrlPlusMFeature || !onToggleMirrors) {\n return;\n }\n // Toggle mirrors when mirrors are already marked\n if (\n mirrors.length > 0 &&\n mirrors.every((id) => markedSectionIds.includes(id))\n ) {\n const mirrorSections = (venueMapInfo?.sections ?? []).filter((s) =>\n mirrors.includes(s.id)\n );\n onToggleMirrors(mirrorSections, true);\n mirrorsMutation.reset();\n return;\n }\n\n const sectionIdsToAdd: Record = {};\n for (const selected of selectedSections) {\n if (!selected.directionalAngle) {\n continue;\n }\n const classId = selected.rows.find((row) => !!row.tktClass)?.tktClass?.id;\n if (classId && classId in zonedSections) {\n const sectionCandidates = (zonedSections[classId] || []).filter(\n ({ directionalAngle }) => directionalAngle\n );\n const mirror = getMirrorSection(selected, sectionCandidates);\n if (\n mirror &&\n !markedSectionIds.includes(mirror.id) &&\n !sectionIdsToAdd[mirror.id]\n ) {\n mirrorsMutation.push(mirror.id);\n sectionIdsToAdd[mirror.id] = mirror;\n }\n }\n }\n if (Object.keys(sectionIdsToAdd).length) {\n const idsToAdd = Array.from(Object.keys(sectionIdsToAdd));\n setPrevMarkedIds(new Set([...markedSectionIds, ...idsToAdd.map(Number)]));\n onToggleMirrors(Object.values(sectionIdsToAdd));\n } else {\n console.log('No mirrors found');\n }\n }, [\n hasVenueMapCtrlPlusMFeature,\n markedSectionIds,\n mirrors,\n mirrorsMutation,\n onToggleMirrors,\n selectedSections,\n venueMapInfo?.sections,\n zonedSections,\n ]);\n\n useKey(\n (event: KeyboardEvent) => event.ctrlKey && event.key === 'm',\n onCtrlMClicked,\n { event: 'keydown' }\n );\n};\n","import { isEmpty } from 'lodash-es';\nimport { vars } from 'src/core/themes';\nimport { SectionInfo } from 'src/WebApiController';\n\nconst colors = {\n defaultBackground: vars.color.backgroundPrimary,\n defaultForeground: vars.color.textPrimary,\n defaultHoverBackground: vars.color.backgroundPrimaryHover,\n defaultHoverForeground: vars.color.textPrimaryHover,\n selectedBackground: vars.color.backgroundHighlight,\n selectedForeground: vars.color.textBrand,\n selectedHoverBackground: vars.color.backgroundHighlightHover,\n selectedHoverForeground: vars.color.textBrandHover,\n};\n\nexport type GetColor = (info: {\n sectionId: number;\n rowId?: number;\n sectionName?: string;\n ticketClassId: number;\n isSelected: boolean;\n useRowColor?: boolean;\n isMarked?: boolean;\n}) => {\n fill: string;\n stroke: string;\n textColor?: string;\n strokeWidth?: string;\n} | void;\n\n// We need both section and ticket class id to uniquely identify a section sprite in svg file\nconst toSectionKey = (sectionId: string | null, ticketClassId: string | null) =>\n `s${sectionId || ''}-t${ticketClassId || ''}`;\n\n// Get section id from the element, traverse up the parent elements if not found\nexport const getSectionId = (element: SVGElement): string | null => {\n if (!element?.tagName) {\n return null;\n }\n if (element.parentElement && element.tagName !== 'g') {\n return getSectionId(element.parentElement as unknown as SVGElement);\n }\n return (\n element.getAttribute('sectionId') ??\n element.getAttribute('sectionid') ??\n element.getAttribute('section-id')\n );\n};\n\n// Get ticket class id from the element, traverse up the parent elements if not found\nexport const getTicketClassId = (element: SVGElement): string | null => {\n if (!element?.tagName) {\n return null;\n }\n if (element.parentElement && element.tagName !== 'g') {\n return getTicketClassId(element.parentElement as unknown as SVGElement);\n }\n return (\n element.getAttribute('ticketClassId') ??\n element.getAttribute('ticketclassid') ??\n element.getAttribute('ticket-class-id')\n );\n};\n\nexport const resetSectionRowColors = (\n sectionGroups: SVGElement[],\n availableSections: SectionInfo[],\n selectedSections?: SectionInfo[],\n markedSectionIds?: number[],\n sectionIdsMissingRowOrder?: number[],\n getColor?: GetColor,\n isHeatMap?: boolean,\n showDefaultMapColors?: boolean\n) => {\n for (const sectionGroup of sectionGroups) {\n // Set row level score color\n const sectionRows = [\n ...sectionGroup.querySelectorAll('g[id=\"row\"] path'),\n ] as HTMLElement[];\n if (!isEmpty(sectionRows)) {\n sectionRows.forEach((path) => {\n const rowId = parseInt(path.getAttribute('eid') ?? '0');\n\n const { fill, stroke } = getColor?.({\n sectionId: -1,\n rowId,\n ticketClassId: -1,\n isSelected: false,\n useRowColor: true,\n }) ?? { fill: '', stroke: '' };\n\n path.setAttribute('fill', fill);\n path.setAttribute('stroke', stroke);\n });\n return;\n }\n\n // Set section level color if don't support row map\n const sectionId = parseInt(getSectionId(sectionGroup) ?? '0');\n const ticketClassId = parseInt(getTicketClassId(sectionGroup) ?? '0');\n\n const selectedSection = selectedSections?.find((x) => x.id === sectionId);\n const isMarked = markedSectionIds?.some((id) => id === sectionId);\n\n const knownSection = availableSections.find((x) => x.id === sectionId);\n const knownRow =\n knownSection?.rows?.find((r) => r.tktClass?.id === ticketClassId) ??\n knownSection?.specRow;\n\n const { fill, stroke, textColor, strokeWidth } = getColor?.({\n sectionId,\n rowId: knownRow?.id,\n sectionName: knownSection?.name,\n ticketClassId,\n isSelected: !!selectedSection,\n isMarked,\n }) ?? { fill: '', stroke: '' };\n\n const sectionLabel = sectionGroup.querySelector(\n 'text[t=\"s\"]'\n ) as SVGElement;\n if (selectedSection) {\n sectionLabel?.setAttribute('fill', vars.color.textBrand);\n } else if (textColor) {\n sectionLabel?.setAttribute('fill', textColor);\n } else {\n sectionLabel?.setAttribute('fill', 'black');\n }\n\n const sectionPath = sectionGroup.querySelector('path[t=\"s\"]') as SVGElement;\n if (sectionPath === null) {\n continue;\n }\n\n if (fill && stroke) {\n sectionPath.setAttribute('fill', fill);\n sectionPath.setAttribute('stroke', stroke);\n } else {\n if (selectedSection) {\n sectionPath.setAttribute('fill', colors.selectedBackground);\n sectionPath.setAttribute('fill-opacity', '1');\n sectionPath.setAttribute('stroke', colors.selectedForeground);\n } else {\n if (knownSection) {\n sectionPath.setAttribute(\n 'fill',\n showDefaultMapColors\n ? knownRow?.tktClass?.color ?? colors.defaultBackground\n : colors.defaultBackground\n );\n sectionPath.setAttribute('fill-opacity', '1');\n sectionPath.setAttribute('stroke', colors.defaultForeground);\n } else {\n sectionPath.setAttribute('fill', colors.defaultBackground);\n sectionPath.setAttribute('fill-opacity', '1');\n sectionPath.setAttribute('stroke', colors.defaultForeground);\n }\n }\n }\n\n if (selectedSection) {\n sectionPath.setAttribute('stroke', vars.color.textBrand);\n sectionPath.setAttribute('stroke-width', strokeWidth ?? '10px');\n } else if (isMarked) {\n sectionPath.setAttribute('stroke', vars.color.textBrand);\n sectionPath.setAttribute('stroke-width', strokeWidth ?? '6px');\n } else {\n sectionPath.setAttribute('stroke-width', strokeWidth ?? '2px');\n }\n\n const missingRowOrder = sectionIdsMissingRowOrder?.includes(sectionId);\n if (missingRowOrder && isHeatMap) {\n sectionPath?.setAttribute('stroke', vars.color.borderWarning);\n sectionPath?.setAttribute('stroke-width', '4px');\n }\n }\n};\n\n/**\n * Rework the SVG groups to limit the group number by grouping elements by section.\n * In each of the section group we want to ensure the row paths are at the bottom for\n * only displaying the row colors.\n *\n * We rebuild the group so that row paths comes first and then the section path and label.\n * This way section label will be on top of the section path, and row paths will be at the bottom.\n *\n * We will also only build the section level groups if the useRowMap is false.\n *\n * This will significantly reduce the number of groups in the SVG and improve the performance.\n *\n * @param svg the svg file\n * @returns reordered svg file\n */\nconst reworkGroups = (\n svg: SVGSVGElement,\n sectionIdsMissingRowOrder: number[],\n isHeatMap = false,\n useRowMap = false\n) => {\n const rowPaths = svg.getElementById('rowpaths') as SVGElement;\n const sectionPaths = svg.getElementById('sectionpaths') as SVGElement;\n const sectionLables = svg.getElementById('sectionlabels') as SVGElement;\n const ticketClassPaths = svg.getElementById('ticketclasspaths') as SVGElement;\n const ticketClassLables = svg.getElementById(\n 'ticketclasslabels'\n ) as SVGElement;\n const rowLablePaths = svg.getElementById('rowlabels') as SVGElement;\n\n // Required paths groups for V3 VenueMap SVG\n if ((useRowMap && !rowPaths) || !sectionPaths || !sectionLables) {\n return [];\n }\n\n // Map from section id to row paths\n const sectionToRows = (\n [...rowPaths.querySelectorAll('g')] as SVGElement[]\n ).reduce(\n (map, element) => {\n const sectionId = getSectionId(element);\n const ticketclassid = getTicketClassId(element);\n const sectionKey = toSectionKey(sectionId, ticketclassid);\n const rowPath = element.querySelector('path') as SVGElement;\n (map[sectionKey] = map[sectionKey] || ([] as HTMLElement[])).push(\n rowPath\n );\n return map;\n },\n {} as Record\n );\n\n // Map from section id to section label\n const sectionToLable = (\n [...sectionLables.querySelectorAll('g')] as SVGElement[]\n ).reduce(\n (map, element) => {\n const sectionId = getSectionId(element);\n const ticketclassid = getTicketClassId(element);\n const sectionKey = toSectionKey(sectionId, ticketclassid);\n const textElement = element.querySelector('text') as SVGElement;\n if (\n sectionIdsMissingRowOrder.includes(parseInt(sectionId ?? '0')) &&\n isHeatMap\n ) {\n if (\n textElement.textContent &&\n textElement.textContent.slice(-1) !== '!'\n ) {\n textElement.textContent = `${textElement.textContent}!`;\n }\n }\n map[sectionKey] = textElement;\n return map;\n },\n {} as Record\n );\n\n // Main logic to rework the section groups\n ([...sectionPaths.querySelectorAll('g')] as SVGElement[]).forEach(\n (section) => {\n const sectionId = getSectionId(section);\n const ticketClassId = getTicketClassId(section);\n const sectionKey = toSectionKey(sectionId, ticketClassId);\n // The original section path\n const sectionPath = section.querySelector('path') as SVGElement;\n if (!sectionPath || !sectionId) return;\n section.removeChild(sectionPath);\n\n const rowGroup = document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'g'\n );\n rowGroup.setAttribute('id', `row`);\n for (const row of sectionToRows[sectionKey] ?? []) {\n row.setAttribute('pointer-events', 'none');\n row.setAttribute('fill-opacity', '1');\n if (useRowMap) {\n rowGroup.appendChild(row);\n }\n }\n if (useRowMap) {\n section.appendChild(rowGroup);\n }\n section.appendChild(sectionPath);\n\n if (sectionToLable[sectionKey]) {\n section.appendChild(sectionToLable[sectionKey]);\n }\n }\n );\n\n // Clean up all other groups and leave only the section paths group\n const root = sectionPaths.parentElement as HTMLElement;\n rowPaths && root.removeChild(rowPaths);\n sectionLables && root.removeChild(sectionLables);\n ticketClassPaths && root.removeChild(ticketClassPaths);\n ticketClassLables && root.removeChild(ticketClassLables);\n rowLablePaths && root.removeChild(rowLablePaths);\n\n return [...sectionPaths.querySelectorAll('g')] as SVGElement[];\n};\n\nexport const initializeGroups = (\n svgElement: SVGSVGElement,\n availableSections: SectionInfo[],\n selectedSections?: SectionInfo[],\n markedSectionIds?: number[],\n getColor?: GetColor,\n showDefaultMapColors?: boolean,\n sectionIdsMissingRowOrder: number[] = [],\n isHeatMap = false,\n useRowMap = false\n) => {\n const sectionGroups = reworkGroups(\n svgElement,\n sectionIdsMissingRowOrder,\n isHeatMap,\n useRowMap\n );\n\n if (!sectionGroups) {\n return [] as SVGElement[];\n }\n if (useRowMap) {\n // Set row level score colors\n resetSectionRowColors(\n sectionGroups,\n availableSections,\n selectedSections,\n markedSectionIds,\n sectionIdsMissingRowOrder,\n getColor,\n isHeatMap,\n showDefaultMapColors\n );\n }\n return sectionGroups;\n};\n","import { debounce, isEmpty, uniqBy } from 'lodash-es';\nimport {\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { vars } from 'src/core/themes';\nimport { FocalPointInfo, SectionInfo } from 'src/WebApiController';\nimport svgPanZoom from 'svg-pan-zoom';\n\nimport { addFocalPoint } from '../shared/utils/addFocalPoint';\nimport {\n crossesPoints,\n DrawingPoint,\n isMissiongSectionData,\n registerDrawLine,\n registerPanningListners,\n} from '../VenueMapContent.hooks';\nimport { StandardColorSpec } from './VenueMapV3Content';\nimport {\n GetColor,\n getSectionId,\n initializeGroups,\n resetSectionRowColors,\n} from './VenueMapV3Content.utils';\n\nconst clickEvents = ['click'];\n\nconst ZOOM_SCALE_SENSITIVITY = 0.2;\n\ntype SvgMapInitializerProps = {\n availableSections: SectionInfo[];\n selectedSections?: SectionInfo[];\n markedSectionIds?: number[];\n onSectionClicked?: (\n e: MouseEvent,\n selectedSection: SectionInfo,\n surroundingSections?: SectionInfo[]\n ) => void;\n onSectionHovered?: (hoveredSection: SectionInfo) => ReactNode;\n setSelectedSections?: (sections: SectionInfo[]) => void;\n isZoomEnabled: boolean;\n isPanEnabled?: boolean;\n showDefaultMapColors?: boolean;\n focalPoint?: FocalPointInfo | null;\n colors?: StandardColorSpec;\n getColor?: GetColor;\n isHeatMap?: boolean;\n useRowMap?: boolean;\n disableHoverEffect?: boolean;\n};\n\nexport const useSvgMap = ({\n availableSections,\n selectedSections,\n markedSectionIds,\n onSectionClicked,\n onSectionHovered,\n setSelectedSections,\n isZoomEnabled,\n isPanEnabled,\n focalPoint,\n getColor,\n showDefaultMapColors,\n isHeatMap = false,\n useRowMap = false,\n disableHoverEffect = false,\n}: SvgMapInitializerProps) => {\n const localRef = useRef();\n const isPanning = useRef(false);\n const onRemoveEventListenersRef = useRef<() => void>(() => void 0);\n const onDoulbeClickDoneRef = useRef<(points: DrawingPoint[]) => void>(\n () => void 0\n );\n\n const [hoveredContent, setHoverContent] = useState();\n const [zoomFlag, setZoomFlag] = useState(false);\n const [venueMapSvg, setVenueMapSvg] = useState();\n const [sectionGroups, setSectionGroups] = useState([]);\n\n const sectionIdsMissingRowOrder = useMemo(\n () => availableSections.filter(isMissiongSectionData).map(({ id }) => id),\n [availableSections]\n );\n\n useEffect(() => {\n if (!venueMapSvg) return;\n\n const deregisterDrawLine = registerDrawLine(\n localRef,\n onRemoveEventListenersRef,\n onDoulbeClickDoneRef\n );\n return () => {\n deregisterDrawLine();\n };\n }, [venueMapSvg]);\n\n const setSelectedHandler = useCallback(\n (e: Event) => {\n if (isPanning.current) {\n return;\n }\n const mouseEvent = e as MouseEvent;\n const target = e.target as SVGElement;\n\n const selectedSectionId = parseInt(getSectionId(target) ?? '0');\n const selectedSection = availableSections.find(\n (x) => x.id === selectedSectionId\n );\n\n selectedSection && onSectionClicked?.(mouseEvent, selectedSection);\n },\n [availableSections, onSectionClicked]\n );\n\n const mouseEnter = useCallback(\n ({ target }: MouseEvent) => {\n if (disableHoverEffect) return;\n const section = target as SVGElement;\n const sectionId = parseInt(getSectionId(section) ?? '0');\n\n const hoveredSection = availableSections.find((s) => s.id === sectionId);\n if (!hoveredSection) return;\n\n const hoveredContent = onSectionHovered?.(hoveredSection);\n setHoverContent(hoveredContent);\n const sectionPath = section.querySelector('path[t=\"s\"]') as SVGElement;\n sectionPath?.setAttribute('fill-opacity', '0.75');\n },\n [availableSections, disableHoverEffect, onSectionHovered]\n );\n\n const mouseLeave = useCallback(\n ({ target }: MouseEvent) => {\n if (disableHoverEffect) return;\n const section = target as SVGElement;\n const sectionPath = section.querySelector('path[t=\"s\"]') as SVGElement;\n\n // If there are row paths, set the section path to be transparent\n // otherwise set the section path to be opaque\n const sectionRows = [\n ...section.querySelectorAll('g[id=\"row\"] path'),\n ] as HTMLElement[];\n if (!isEmpty(sectionRows)) {\n sectionPath?.setAttribute('fill-opacity', '0');\n } else {\n sectionPath?.setAttribute('fill-opacity', '1');\n }\n },\n [disableHoverEffect]\n );\n\n const initializeSvg = useCallback(\n (svgElement: SVGSVGElement) => {\n addFocalPoint(svgElement, focalPoint);\n return svgPanZoom(svgElement, {\n zoomScaleSensitivity: ZOOM_SCALE_SENSITIVITY,\n zoomEnabled: isZoomEnabled,\n panEnabled: isPanEnabled,\n dblClickZoomEnabled: false,\n onZoom: () => setZoomFlag(true),\n onPan: () => setZoomFlag(true),\n });\n },\n [focalPoint, isPanEnabled, isZoomEnabled]\n );\n\n const onResize = useCallback(() => {\n if (localRef.current && venueMapSvg) {\n venueMapSvg.resize(); // update SVG cached size and controls positions\n venueMapSvg.fit();\n venueMapSvg.center();\n }\n }, [venueMapSvg]);\n\n useEffect(() => {\n if (!venueMapSvg) return;\n\n const debounceOnResize = debounce(onResize, 200);\n\n // add eventListeners\n const onAddingEventListeners = () => {\n sectionGroups.forEach((element) => {\n const sectionId = parseInt(getSectionId(element) ?? '0');\n const isSelected =\n selectedSections?.some(({ id }) => id === sectionId) ?? false;\n const isMarked = markedSectionIds?.some((id) => id === sectionId);\n\n const sectionPath = element.querySelector('path[t=\"s\"]') as SVGElement;\n const sectionLabel = element.querySelector('text[t=\"s\"]') as SVGElement;\n\n element.style.cursor = 'pointer';\n\n const sectionRows = [\n ...element.querySelectorAll('g[id=\"row\"] path'),\n ] as HTMLElement[];\n // If there are row paths, set the section path to be transparent\n // otherwise set the section path to be opaque\n if (!isEmpty(sectionRows)) {\n sectionPath?.setAttribute(\n 'fill',\n vars.color.backgroundHighlightHover\n );\n sectionPath?.setAttribute('fill-opacity', '0');\n } else {\n sectionPath?.setAttribute('fill-opacity', '1');\n }\n sectionPath?.setAttribute('stroke-width', '2px');\n sectionPath?.setAttribute('stroke', 'black');\n sectionLabel?.removeAttribute('fill');\n\n if (isSelected) {\n sectionPath?.setAttribute('stroke', vars.color.textBrand);\n sectionPath?.setAttribute('stroke-width', '6px');\n sectionLabel?.setAttribute('fill', vars.color.textBrand);\n } else if (isMarked) {\n sectionPath?.setAttribute('stroke', vars.color.textBrand);\n sectionPath?.setAttribute('stroke-width', '6px');\n }\n\n element.addEventListener('mouseenter', mouseEnter);\n element.addEventListener('mouseleave', mouseLeave);\n clickEvents.forEach((e) =>\n element.addEventListener(e, setSelectedHandler)\n );\n });\n\n window.addEventListener('resize', debounceOnResize);\n };\n\n // remove eventListeners\n const onRemoveEventListeners = () => {\n window.removeEventListener('resize', debounceOnResize);\n\n sectionGroups.forEach((element) => {\n element.removeEventListener('mouseenter', mouseEnter);\n element.removeEventListener('mouseleave', mouseLeave);\n clickEvents.forEach((e) =>\n element.removeEventListener(e, setSelectedHandler)\n );\n });\n };\n\n onRemoveEventListenersRef.current = onRemoveEventListeners;\n onDoulbeClickDoneRef.current = (points: DrawingPoint[]) => {\n onAddingEventListeners();\n const selectedIds = new Set();\n sectionGroups.forEach((element) => {\n if (crossesPoints(points, element.getBoundingClientRect())) {\n selectedIds.add(parseInt(getSectionId(element) ?? '-1'));\n }\n });\n const updatedSections = availableSections\n .filter(\n ({ id }) => selectedIds.has(id) || markedSectionIds?.includes(id)\n )\n .toSorted((a, b) => a.name?.localeCompare(b.name));\n\n if (!isEmpty(updatedSections)) {\n setSelectedSections?.(uniqBy(updatedSections, 'id'));\n }\n };\n\n const deregisterPanEvents = registerPanningListners(\n localRef.current,\n isPanning\n );\n\n onAddingEventListeners();\n\n return () => {\n onRemoveEventListeners();\n deregisterPanEvents();\n };\n }, [\n availableSections,\n markedSectionIds,\n mouseEnter,\n mouseLeave,\n onResize,\n sectionGroups,\n selectedSections,\n setSelectedHandler,\n setSelectedSections,\n venueMapSvg,\n ]);\n\n const onInitializeContent = useCallback(\n (element: HTMLDivElement | null) => {\n if (!element || !!venueMapSvg) return false;\n localRef.current = element;\n const svgElement = element.getElementsByTagName('svg')[0];\n\n // The initialize part will clean up the unused groups and set the row level colors\n const sectionGroups = initializeGroups(\n svgElement,\n availableSections,\n selectedSections,\n markedSectionIds,\n getColor,\n showDefaultMapColors,\n sectionIdsMissingRowOrder,\n isHeatMap,\n useRowMap\n );\n setSectionGroups(sectionGroups);\n\n // Initialize the SVG pan zoom with the cleaned up svgElement\n const svg = initializeSvg(svgElement);\n setVenueMapSvg(svg);\n return true;\n },\n [\n venueMapSvg,\n availableSections,\n selectedSections,\n markedSectionIds,\n getColor,\n showDefaultMapColors,\n sectionIdsMissingRowOrder,\n isHeatMap,\n useRowMap,\n initializeSvg,\n ]\n );\n\n // this is to refresh the row colors in regards to to selected sections changes\n useEffect(() => {\n if (localRef.current && venueMapSvg && !isEmpty(sectionGroups)) {\n resetSectionRowColors(\n sectionGroups,\n availableSections,\n selectedSections,\n markedSectionIds,\n sectionIdsMissingRowOrder,\n getColor,\n isHeatMap,\n showDefaultMapColors\n );\n }\n }, [\n availableSections,\n getColor,\n isHeatMap,\n markedSectionIds,\n sectionGroups,\n sectionIdsMissingRowOrder,\n selectedSections,\n showDefaultMapColors,\n venueMapSvg,\n ]);\n\n const onZoom = useCallback(\n (zoomIn = true) => {\n if (!venueMapSvg) return;\n zoomIn ? venueMapSvg.zoomIn() : venueMapSvg.zoomOut();\n setZoomFlag(true);\n },\n [venueMapSvg]\n );\n\n const onReset = useCallback(() => {\n if (!venueMapSvg) return;\n venueMapSvg.resize(); // update SVG cached size and controls positions\n venueMapSvg.fit();\n venueMapSvg.center();\n setZoomFlag(false);\n }, [venueMapSvg]);\n\n return {\n onInitializeContent,\n onZoom,\n onReset,\n zoomFlag,\n hoveredContent,\n };\n};\n","import React, { ReactNode, Ref, useEffect, useState } from 'react';\nimport { vars } from 'src/core/themes';\nimport { TooltipPopover } from 'src/core/ui';\nimport { mergeRefs } from 'src/core/utils';\nimport {\n IconsFill,\n InfoSolidIcon,\n MinusIcon,\n PlusIcon,\n ResetIcon,\n} from 'src/svgs/Viagogo';\nimport { FocalPointInfo, SectionInfo } from 'src/WebApiController';\n\nimport { ColorBand, ColorBandProps } from '../shared/components/ColorBand';\nimport {\n IconParent,\n StyledBorderDiv,\n StyledDiv,\n StyledHoverDiv,\n StyledIconParentVariant,\n StyledResetVariant,\n VenueMapContentContainer,\n} from '../VenueMap.styled';\nimport { VenueMapContentCondensed } from '../VenueMapContentCondensed';\nimport * as styles from './VenueMapV3.css';\nimport { useSvgMap } from './VenueMapV3Content.hook';\n\nenum SvgInitializationState {\n UNSET,\n INITIALIZING,\n INITIALIZED,\n}\n\nexport type StandardColorSpec = {\n defaultBackground: string;\n defaultForeground: string;\n defaultHoverBackground: string;\n defaultHoverForeground: string;\n selectedBackground: string;\n selectedForeground: string;\n selectedHoverBackground: string;\n selectedHoverForeground: string;\n};\n\nexport type VenueMapV3ContentProps = {\n selectedSections?: SectionInfo[];\n markedSectionIds?: number[];\n onSectionClicked?: (\n e: MouseEvent,\n selectedSection: SectionInfo,\n surroundingSections?: SectionInfo[]\n ) => void;\n onSectionHovered?: (hoveredSection: SectionInfo) => ReactNode;\n setSelectedSections?: (sections: SectionInfo[]) => void;\n staticInfoContent?: React.ReactNode;\n infoIconContent?: React.ReactNode;\n availableSections: SectionInfo[];\n svg: string | TrustedHTML;\n useRowMap?: boolean;\n isZoomEnabled: boolean;\n isPanEnabled?: boolean;\n isWhiteBackground?: boolean;\n isRelocatedStaticInfo?: boolean;\n svgMapUrl: string; // what to use this for?\n venueConfigId: number; // what to use this for?\n showDefaultMapColors?: boolean;\n colors?: StandardColorSpec;\n colorBandProps?: ColorBandProps;\n /* Callback to get color for a section/ticketClass pair to provide dynamic\n * colorization of sections in the map\n */\n focalPoint?: FocalPointInfo | null;\n getColor?: (info: {\n sectionId: number;\n rowId?: number;\n sectionName?: string;\n ticketClassId: number;\n isSelected: boolean;\n useRowColor?: boolean;\n }) => { fill: string; stroke: string; textColor?: string } | void;\n isHeatMap?: boolean;\n statsContent?: React.ReactNode;\n disableHoverEffect?: boolean;\n isCondensedView?: boolean;\n shouldRepaint?: boolean;\n mapActionContainerClassname?: string;\n};\n\nconst VenueMapV3Content = React.forwardRef(\n (\n {\n selectedSections,\n markedSectionIds,\n onSectionClicked,\n onSectionHovered,\n setSelectedSections,\n staticInfoContent,\n infoIconContent,\n statsContent,\n availableSections,\n svg,\n focalPoint,\n isZoomEnabled = true,\n isPanEnabled = true,\n isWhiteBackground = false,\n isRelocatedStaticInfo = false,\n showDefaultMapColors,\n colorBandProps,\n getColor,\n isHeatMap = false,\n useRowMap = false,\n disableHoverEffect = false,\n isCondensedView = false,\n shouldRepaint = false,\n mapActionContainerClassname,\n }: VenueMapV3ContentProps,\n ref: Ref\n ) => {\n const [blurMap, setBlurMap] = useState(true);\n const [svgState, setSvgState] = useState(\n SvgInitializationState.UNSET\n );\n const [svgNode, setSvgNode] = useState(null);\n\n const { onInitializeContent, hoveredContent, zoomFlag, onReset, onZoom } =\n useSvgMap({\n availableSections,\n selectedSections,\n markedSectionIds,\n onSectionClicked,\n onSectionHovered,\n setSelectedSections,\n focalPoint,\n isZoomEnabled,\n isPanEnabled,\n getColor,\n isHeatMap,\n showDefaultMapColors,\n useRowMap,\n disableHoverEffect,\n });\n\n useEffect(() => {\n if (availableSections.length) setBlurMap(false);\n }, [availableSections.length]);\n\n useEffect(() => {\n if (svgState === SvgInitializationState.UNSET && svgNode && svg) {\n svgNode.innerHTML = svg as string;\n setSvgState(SvgInitializationState.INITIALIZING);\n if (onInitializeContent(svgNode)) {\n setSvgState(SvgInitializationState.INITIALIZED);\n } else {\n setSvgState(SvgInitializationState.UNSET);\n }\n }\n }, [onInitializeContent, svg, svgNode, svgState]);\n\n useEffect(() => {\n if (!shouldRepaint) return;\n\n const timer = setTimeout(onReset, 50);\n return () => {\n clearTimeout(timer);\n };\n }, [onReset, shouldRepaint]);\n\n if (isCondensedView) {\n return (\n \n );\n }\n\n return (\n \n
    \n \n\n \n {isZoomEnabled && (\n <>\n {(Boolean(selectedSections?.length) || zoomFlag) && (\n
    \n \n \n \n
    \n )}\n \n \n onZoom(true)}>\n \n \n \n \n onZoom(false)}>\n \n \n \n \n \n )}\n {infoIconContent && (\n \n }\n >\n {infoIconContent}\n \n )}\n
    \n\n {!statsContent && staticInfoContent && (\n \n {staticInfoContent}\n
    \n )}\n {!statsContent && hoveredContent && (\n
    {hoveredContent}
    \n )}\n {statsContent}\n \n {colorBandProps && (\n
    \n \n
    \n )}\n
    \n );\n }\n);\n\nVenueMapV3Content.displayName = 'VenueMapV3Content';\nexport default VenueMapV3Content;\n","import { useQuery } from '@tanstack/react-query';\nimport { useRef } from 'react';\nimport { useEffectOnce } from 'react-use';\n\nimport { GeneralAdmissionMessage } from '../GeneralAdmissionMessage';\nimport { rawFetch } from '../shared/utils/rawFetch';\nimport VenueMapV3Content, { VenueMapV3ContentProps } from './VenueMapV3Content';\n\nconst domParser = new DOMParser();\n\nexport const VenueMapV3 = ({\n isGeneralAdmissionOnly,\n svgMapUrl,\n ...rest\n}: Omit & {\n isGeneralAdmissionOnly?: boolean;\n}) => {\n if (!svgMapUrl) {\n throw new Error('svgMapUrl not available');\n }\n\n const mapQuery = useQuery({\n queryKey: [svgMapUrl],\n queryFn: () =>\n rawFetch(svgMapUrl, {}).then((text: string) => {\n if (!text) {\n throw Error('Failed to get venue map : ' + svgMapUrl);\n }\n const s = domParser.parseFromString(text, 'image/svg+xml');\n\n const svgElement = s.children[0];\n svgElement.setAttribute(\n 'width',\n ref?.current?.clientWidth?.toString() ?? '0'\n );\n svgElement.setAttribute(\n 'height',\n ref?.current?.clientHeight?.toString() ?? '0'\n );\n const serializer = new XMLSerializer();\n return {\n svg: serializer.serializeToString(svgElement),\n };\n }),\n\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n });\n\n const ref = useRef(null);\n\n // TODO: Remove this after SVGVenueMapV3 feature is GA'ed\n // This is just a debug log to tell the user that we are using the V3 map\n useEffectOnce(() => {\n console.log('Yes, you are using SVG V3 Map!');\n });\n\n const { svg } = mapQuery.data ?? {};\n\n if (isGeneralAdmissionOnly) {\n return ;\n }\n\n if (!svg) {\n return
    ;\n }\n\n return (\n \n );\n};\n","import { ComponentProps, ReactNode, useMemo } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n VenueMapConfigPlaceholder,\n VenueMapUrl,\n VenueMapV3Url,\n VenueMapVersionPlaceholder,\n} from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature, SectionInfo } from 'src/WebApiController';\n\nimport { useCtrlPlusM } from './EventVenueMap.hooks';\nimport { ColorBandProps } from './shared/components/ColorBand';\nimport { VenueMapV3 } from './v3/VenueMapV3';\nimport { VenueMap } from './VenueMap';\nimport * as styles from './VenueMap.css';\n\nexport const EventVenueMap = ({\n selectedSectionIds,\n markedSectionIds,\n onSectionClicked,\n onSectionHovered,\n setSelectedSections,\n onToggleMirrors,\n staticInfoContent,\n infoIconContent,\n isZoomEnabled = true,\n isPanEnabled = true,\n showDefaultMapColors,\n colorBandProps,\n getColor,\n useRowMap = false,\n isHeatMap = false,\n isWhiteBackground = false,\n isRelocatedStaticInfo = false,\n allowDrawLine = true,\n isCondensedView = false,\n shouldRepaint = false,\n statsContent,\n disableHoverEffect = false,\n mapActionContainerClassname,\n}: {\n selectedSectionIds?: number[];\n markedSectionIds?: number[];\n onSectionClicked?: (\n e: MouseEvent,\n selectedSection: SectionInfo,\n surroundingSections?: SectionInfo[]\n ) => void;\n onSectionHovered?: (hoveredSection: SectionInfo) => ReactNode;\n setSelectedSections?: (sections: SectionInfo[]) => void;\n onToggleMirrors?: (sections: SectionInfo[], exclude?: boolean) => void;\n staticInfoContent?: React.ReactNode;\n infoIconContent?: React.ReactNode;\n isZoomEnabled?: boolean;\n isPanEnabled?: boolean;\n showDefaultMapColors?: boolean;\n colorBandProps?: ColorBandProps;\n /* Callback to get color for a section/ticketClass pair to provide dynamic\n * colorization of sections in the map\n */\n getColor?: ComponentProps['getColor'];\n useRowMap?: boolean;\n isHeatMap?: boolean;\n isWhiteBackground?: boolean;\n isRelocatedStaticInfo?: boolean;\n allowDrawLine?: boolean;\n isCondensedView?: boolean;\n shouldRepaint?: boolean;\n statsContent?: React.ReactNode;\n disableHoverEffect?: boolean;\n mapActionContainerClassname?: string;\n}) => {\n const { venueMapInfo, isMapLoading, isGeneralAdmissionOnly } =\n useEventMapContext();\n\n const hasSVGVenueMapV3Feature = useUserHasFeature(Feature.SVGVenueMapV3);\n\n useCtrlPlusM(markedSectionIds ?? selectedSectionIds ?? [], onToggleMirrors);\n\n const selectedSectionData = useMemo(() => {\n if (!venueMapInfo || !selectedSectionIds?.length) {\n return undefined;\n }\n\n return venueMapInfo.sections?.filter((s: SectionInfo) =>\n selectedSectionIds.includes(s.id)\n );\n }, [selectedSectionIds, venueMapInfo]);\n\n const shouldUseV3 = useMemo(() => {\n return hasSVGVenueMapV3Feature && venueMapInfo?.hasRow;\n }, [hasSVGVenueMapV3Feature, venueMapInfo?.hasRow]);\n\n if (isMapLoading) {\n return (\n
    \n \n
    \n );\n }\n if (!venueMapInfo) {\n return (\n
    \n \n
    \n );\n }\n\n return shouldUseV3 ? (\n \n ) : (\n \n );\n};\n","import { useMemo } from 'react';\nimport { Control, useWatch } from 'react-hook-form';\nimport { EventVenueMap } from 'src/components/Events/VenueMap/EventVenueMap';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { SectionInfo } from 'src/WebApiController';\n\nexport const PurchaseTicketGroupVenueMap = ({\n control,\n onSectionClicked,\n}: {\n control: Control;\n onSectionClicked: (e: MouseEvent, sectionInfo: SectionInfo) => void;\n}) => {\n const { venueMapInfo } = useEventMapContext();\n\n const ticketGroups = useWatch({\n control: control,\n name: 'ticketGroups',\n });\n\n const sectionIds = useMemo(() => {\n if (!ticketGroups) return [];\n return ticketGroups.reduce((acc, data) => {\n // If sectionId is not provided, try to derive it from venueMapInfo.\n if (!data.sectionId?.value) {\n if (!venueMapInfo) return acc;\n const sectionId = venueMapInfo.sections.find(\n (section) => section.name === data.section?.value\n )?.id;\n if (sectionId) {\n acc.push(sectionId);\n }\n return acc;\n }\n if (data.sectionId.value) {\n acc.push(data.sectionId.value);\n }\n return acc;\n }, [] as number[]);\n }, [ticketGroups, venueMapInfo]);\n\n return (\n \n );\n};\n","import { useMemo } from 'react';\nimport { useListingNotesSelector } from 'src/components/Selectors/ListingNotesSelector/useListingNotesSelector';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EventListingConstraints, ListingNote } from 'src/WebApiController';\n\nexport const useTicketGroupListingNotes = ({\n listingConstraints,\n}: {\n listingConstraints?: EventListingConstraints | null;\n}) => {\n const {\n query,\n multiSelectorProps: { valueOptionsContent },\n } = useListingNotesSelector({\n disabled: false,\n validListingNoteIds: listingConstraints?.validListingNoteIds,\n placeholderText: ContentId.ChooseSeatingNotes,\n });\n\n const listingNotesMap = useMemo(\n () =>\n query.data\n ?.filter((l) => (l.listingNoteText || l.listingNoteUntranslated).trim())\n .reduce(\n (r, l) => {\n r[l.listingNoteId.toString()] = l;\n return r;\n },\n {} as Record\n ),\n [query.data]\n );\n\n return {\n listingNotesMap,\n valueOptionsContent,\n };\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { PurchaseClient } from 'src/WebApiController';\n\nexport const useDeliveryOverrideForNewTicketGroup = (\n eventId?: number | null,\n vendorId?: number | null,\n vendorAccountId?: string | null,\n isManual?: boolean,\n disabled?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError } = useErrorBoundaryContext();\n\n const getQueryKey = [\n 'PurchaseClient.getDeliveryOverrideForNewTicketGroup',\n eventId,\n ];\n\n const shouldQuery =\n !disabled && Boolean(activeAccountWebClientConfig.activeAccountId);\n\n const getQuery = useQuery({\n queryKey: getQueryKey,\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n return await new PurchaseClient(\n activeAccountWebClientConfig\n ).getDeliveryOverrideForNewTicketGroup({\n item1: eventId ?? null,\n item2: vendorId ?? null,\n item3: vendorAccountId ?? null,\n item4: isManual ?? false,\n });\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError(\n 'PurchaseClient.getDeliveryOverrideForNewTicketGroup',\n error,\n {\n eventId,\n vendorId,\n }\n );\n },\n },\n });\n\n return {\n deliveryTypeDefault: getQuery.data?.delivType,\n ticketTypeRulesDefault: getQuery.data?.tktTypeRules,\n inHandAtDefault: getQuery.data?.inHandAt,\n isLoading: getQuery.isLoading,\n hasDefaultValues: !!getQuery.data,\n };\n};\n","import { Virtualizer } from '@tanstack/react-virtual';\nimport { RefObject, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { CellsSelection } from './useSpreadsheetSelection';\n\n/**\n * Represents the position and dimensions of a selection box.\n *\n * @typedef {Object} SelectionPos\n * @property {number} top - The top position in pixels.\n * @property {number} left - The left position in pixels.\n * @property {number} width - The width of the selection box in pixels.\n * @property {number} height - The height of the selection box in pixels.\n */\nexport type SelectionPos = {\n top: number;\n left: number;\n width: number;\n height: number;\n};\n\nexport const useSelectionPos = (\n scrollContainerRef: RefObject,\n selection: CellsSelection | null,\n virtualizer: Virtualizer,\n rowHeight: number\n): SelectionPos | null => {\n const [selectionPos, setSelectionPos] = useState(null);\n const prevFirstRect = useRef(null);\n const prevLastRect = useRef(null);\n\n const updatePosition = useCallback(() => {\n const container = scrollContainerRef.current;\n if (!selection || !container) {\n setSelectionPos(null);\n return;\n }\n const minRow = Math.min(selection.start.rowIndex, selection.end.rowIndex);\n const maxRow = Math.max(selection.start.rowIndex, selection.end.rowIndex);\n const minCol = Math.min(selection.start.colIndex, selection.end.colIndex);\n const maxCol = Math.max(selection.start.colIndex, selection.end.colIndex);\n\n const renderedRange = virtualizer.calculateRange();\n\n let firstCell = container.querySelector(\n `[data-row=\"${minRow}\"][data-col=\"${minCol}\"]`\n ) as HTMLElement | null;\n let lastCell = container.querySelector(\n `[data-row=\"${maxRow}\"][data-col=\"${maxCol}\"]`\n ) as HTMLElement | null;\n\n if (\n firstCell &&\n renderedRange?.startIndex &&\n (minRow < renderedRange?.startIndex || minRow > renderedRange?.endIndex)\n ) {\n firstCell = null;\n }\n const containerRect = container.getBoundingClientRect();\n\n if (\n lastCell &&\n renderedRange?.endIndex &&\n (maxRow < renderedRange?.startIndex || maxRow > renderedRange?.endIndex)\n ) {\n lastCell = null;\n }\n\n const scrollTop = container.scrollTop;\n const scrollLeft = container.scrollLeft;\n\n if (!firstCell && !lastCell) {\n setSelectionPos(null);\n return;\n }\n\n // If the first cell is not rendered, use the previous rect to calculate the position\n let firstRect: DOMRect;\n if (firstCell) {\n firstRect = firstCell.getBoundingClientRect();\n prevFirstRect.current = firstRect;\n } else if (prevFirstRect.current) {\n firstRect = {\n ...prevFirstRect.current,\n left: prevFirstRect.current.left,\n right: prevFirstRect.current.right,\n bottom: prevFirstRect.current.bottom,\n top: containerRect.top + minRow * rowHeight - scrollTop,\n };\n } else {\n firstRect = containerRect;\n }\n\n let lastRect: DOMRect;\n if (lastCell) {\n lastRect = lastCell.getBoundingClientRect();\n prevLastRect.current = lastRect;\n } else if (prevLastRect.current) {\n lastRect = {\n ...prevLastRect.current,\n left: prevLastRect.current.left,\n right: prevLastRect.current.right,\n bottom: containerRect.bottom + maxRow * rowHeight - scrollTop,\n top: prevLastRect.current.top,\n };\n } else {\n lastRect = containerRect;\n }\n\n const top = firstRect.top - containerRect.top + scrollTop;\n const left = firstRect.left - containerRect.left + scrollLeft;\n const width = lastRect.right - firstRect.left;\n const height = lastRect.bottom - firstRect.top;\n setSelectionPos({ top, left, width, height });\n }, [scrollContainerRef, selection, virtualizer, rowHeight]);\n\n useEffect(() => {\n updatePosition();\n }, [updatePosition]);\n\n useEffect(() => {\n const container = scrollContainerRef.current;\n if (!container) return;\n const handleScroll = () => {\n requestAnimationFrame(() => {\n updatePosition();\n });\n };\n\n container.addEventListener('scroll', handleScroll, { passive: true });\n return () => container.removeEventListener('scroll', handleScroll);\n }, [scrollContainerRef, updatePosition]);\n\n return selectionPos;\n};\n","import { UseFormSetValue } from 'react-hook-form';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { TicketGroupInput } from 'src/WebApiController';\n\nimport { CellsSelection } from './hooks/useSpreadsheetSelection';\n\nexport function isCellInRange(\n cells: CellsSelection | null,\n rowIndex: number,\n colIndex: number\n) {\n if (!cells) return false;\n\n const minRow = Math.min(cells?.start.rowIndex, cells?.end.rowIndex);\n const maxRow = Math.max(cells?.start.rowIndex, cells?.end.rowIndex);\n const minCol = Math.min(cells?.start.colIndex, cells?.end.colIndex);\n const maxCol = Math.max(cells?.start.colIndex, cells?.end.colIndex);\n\n return (\n rowIndex >= minRow &&\n rowIndex <= maxRow &&\n colIndex >= minCol &&\n colIndex <= maxCol\n );\n}\n\nexport function isPosField(\n value: unknown\n): value is { value: T; hasChanged: boolean } {\n return (\n value != null &&\n typeof value === 'object' &&\n 'value' in value &&\n 'hasChanged' in value\n );\n}\n\nexport function calculateTicketCostUnitCost(\n currentData: TicketGroupInput[],\n setValue: UseFormSetValue,\n rowIndex: number,\n colIds: (keyof TicketGroupInput)[],\n columnId: keyof TicketGroupInput\n) {\n const quantity = currentData[rowIndex]['numberOfTickets']?.value;\n const unitCost = currentData[rowIndex]['unitCost']?.value;\n const totalCost = currentData[rowIndex]['totalCost']?.value;\n\n // If the column is numberOfTickets, we need to calculate the totalCost or unitCosts\n if (columnId === 'numberOfTickets' && quantity != null) {\n if (colIds.includes('unitCost') && unitCost != null) {\n if (unitCost != null) {\n setValue(\n `ticketGroups.${rowIndex}.totalCost`,\n posChangedField(parseFloat((quantity * unitCost).toFixed(2)))\n );\n }\n } else if (colIds.includes('totalCost') && totalCost != null) {\n setValue(\n `ticketGroups.${rowIndex}.unitCost`,\n posChangedField(parseFloat((totalCost / quantity).toFixed(2)))\n );\n }\n } else {\n if (columnId === 'unitCost' && quantity != null && unitCost != null) {\n setValue(\n `ticketGroups.${rowIndex}.totalCost`,\n posChangedField(parseFloat((quantity * unitCost).toFixed(2)))\n );\n }\n\n if (columnId === 'totalCost' && quantity != null && totalCost != null) {\n setValue(\n `ticketGroups.${rowIndex}.unitCost`,\n posChangedField(parseFloat((totalCost / quantity).toFixed(2)))\n );\n }\n }\n}\n","import { ColumnDef } from '@tanstack/react-table';\nimport { useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useHotkeys } from 'react-hotkeys-hook';\nimport { PosTableData } from 'src/tables/Table';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { TicketGroupInput } from 'src/WebApiController';\n\nimport { calculateTicketCostUnitCost, isPosField } from '../utils';\nimport { CellsSelection } from './useSpreadsheetSelection';\n\ntype ClipboardEntry = {\n rowOffset: number;\n colOffset: number;\n value: T;\n};\n\nexport const useSpreadsheetCopyPaste = ({\n selectedCells,\n setSelectedCells,\n columns,\n}: {\n selectedCells: CellsSelection | null;\n setSelectedCells: React.Dispatch>;\n columns: (ColumnDef & { id: keyof T })[];\n}) => {\n const [clipboardData, setClipboardData] = useState<\n ClipboardEntry[]\n >([]);\n const [isCopyActive, setIsCopyActive] = useState(false);\n const [copiedCells, setCopiedCells] = useState(null);\n const { getValues, setValue } = useFormContext();\n\n useHotkeys(['mod+c'], () => handleCopy(), { enableOnFormTags: true });\n useHotkeys(['mod+v'], () => handlePaste());\n\n const handleCopy = () => {\n if (!selectedCells) return;\n\n setCopiedCells(selectedCells);\n setSelectedCells(null);\n setIsCopyActive(true);\n setClipboardData(clipboardData);\n };\n\n const handlePaste = () => {\n if (!clipboardData || !selectedCells || !copiedCells) return;\n const currentData = getValues('ticketGroups');\n\n const numColumns = columns.length;\n\n const targetRow = Math.min(\n selectedCells?.start.rowIndex,\n selectedCells?.end.rowIndex\n );\n const targetCol = Math.min(\n selectedCells?.start.colIndex,\n selectedCells?.end.colIndex\n );\n\n const minCopiedRow = Math.min(\n copiedCells.start.rowIndex,\n copiedCells.end.rowIndex\n );\n\n const maxCopiedRow = Math.max(\n copiedCells.start.rowIndex,\n copiedCells.end.rowIndex\n );\n\n const minCopiedCol = Math.min(\n copiedCells.start.colIndex,\n copiedCells.end.colIndex\n );\n\n const maxCopiedCol = Math.max(\n copiedCells.start.colIndex,\n copiedCells.end.colIndex\n );\n\n let maxUpdatedRow = targetRow;\n let maxUpdatedCol = targetCol;\n\n const colIds = columns.map((col) => col.id as keyof TicketGroupInput);\n\n for (let r = minCopiedRow; r <= maxCopiedRow; r++) {\n for (let c = minCopiedCol; c <= maxCopiedCol; c++) {\n const rowOffset = r - minCopiedRow;\n const colOffset = c - minCopiedCol;\n const columnId = columns[c].id as keyof TicketGroupInput;\n\n const value = currentData[r][columnId];\n const pasteRow = targetRow + rowOffset;\n const pasteCol = targetCol + colOffset;\n\n if (value && pasteRow < currentData.length && pasteCol < numColumns) {\n const columnId = columns[pasteCol].id as keyof TicketGroupInput;\n const pasteVerificationHandler =\n columns[pasteCol].meta?.pasteVerificationHandler;\n\n const valueIsPosField = isPosField(value);\n if (!valueIsPosField) {\n continue;\n }\n if (pasteVerificationHandler) {\n const isValidType = pasteVerificationHandler(value.value);\n if (!isValidType) {\n continue;\n }\n }\n\n // TODO: Move this logic out of this hook\n setValue(\n `ticketGroups.${pasteRow}.${columnId}`,\n posChangedField(value.value) as TicketGroupInput[typeof columnId]\n );\n\n calculateTicketCostUnitCost(\n currentData,\n setValue,\n pasteRow,\n colIds,\n columnId\n );\n\n maxUpdatedRow = Math.max(maxUpdatedRow, pasteRow);\n maxUpdatedCol = Math.max(maxUpdatedCol, pasteCol);\n }\n }\n }\n setSelectedCells({\n start: {\n rowIndex: targetRow,\n colIndex: targetCol,\n },\n end: {\n rowIndex: maxUpdatedRow,\n colIndex: maxUpdatedCol,\n },\n });\n\n setIsCopyActive(false);\n\n setCopiedCells(null);\n };\n\n return useMemo(\n () => ({\n isCopyActive,\n copiedCells,\n }),\n [isCopyActive, copiedCells]\n );\n};\n","import { ColumnDef } from '@tanstack/react-table';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { PosTableData } from 'src/dialogs/SectionRowTableDialog/components/SectionRowTable';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { TicketGroupInput } from 'src/WebApiController';\n\nimport { calculateTicketCostUnitCost, isPosField } from '../utils';\n\nexport type CellPosition = {\n rowIndex: number;\n colIndex: number;\n};\n\nexport type CellsSelection = {\n start: CellPosition;\n end: CellPosition;\n};\n\nexport const useSpreadsheetSelection = ({\n columns,\n nonInteractiveColumns,\n}: {\n columns: (ColumnDef & { id: keyof T })[];\n nonInteractiveColumns?: string[];\n}) => {\n const [selectedCells, setSelectedCells] = useState(\n null\n );\n const [isAnchorSelected, setIsAnchorSelected] = useState(false);\n const [anchorDragged, setAnchorDragged] = useState(false);\n const lastEnteredCell = useRef(null);\n const { getValues, setValue } = useFormContext();\n\n const isShiftPressedRef = useRef(false);\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Shift') {\n isShiftPressedRef.current = true;\n }\n };\n const handleKeyUp = (event: KeyboardEvent) => {\n if (event.key === 'Shift') {\n isShiftPressedRef.current = false;\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('keyup', handleKeyUp);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, []);\n\n useEffect(() => {\n const handleMouseUp = () => {\n if (!isAnchorSelected || !selectedCells) {\n return;\n }\n const { rowIndex: startRow, colIndex: startCol } = selectedCells.start;\n const { rowIndex: endRow, colIndex: endCol } = selectedCells.end;\n\n if (endRow > startRow) {\n const currentData = getValues('ticketGroups');\n const colIds = columns.map((col) => col.id as keyof TicketGroupInput);\n\n for (let row = startRow + 1; row <= endRow; row++) {\n for (let col = Math.min(startCol, endCol); col <= endCol; col++) {\n const columnId = columns[col].id as keyof TicketGroupInput;\n if (nonInteractiveColumns?.includes(columnId as string)) {\n continue;\n }\n\n const value = currentData[startRow][columnId];\n const pasteVerificationHandler =\n columns[col].meta?.pasteVerificationHandler;\n const valueIsPosField = isPosField(value);\n if (!valueIsPosField) {\n continue;\n }\n if (pasteVerificationHandler) {\n const isValidType = pasteVerificationHandler(value.value);\n if (!isValidType) {\n continue;\n }\n }\n\n // TODO: Move this logic out of this hook\n setValue(\n `ticketGroups.${row}.${columnId}`,\n posChangedField(value.value) as TicketGroupInput[typeof columnId]\n );\n\n calculateTicketCostUnitCost(\n currentData,\n setValue,\n row,\n colIds,\n columnId\n );\n }\n }\n }\n setIsAnchorSelected(false);\n };\n\n document.addEventListener('mouseup', handleMouseUp);\n return () => document.removeEventListener('mouseup', handleMouseUp);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [anchorDragged, isAnchorSelected, nonInteractiveColumns, selectedCells]);\n\n const handleMouseDown = useCallback(\n (rowIndex: number, colIndex: number) => {\n const colId = columns[colIndex].id;\n if (isAnchorSelected || nonInteractiveColumns?.includes(colId)) {\n return;\n }\n setAnchorDragged(false);\n setSelectedCells({\n start: { rowIndex, colIndex },\n end: { rowIndex, colIndex },\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n const handleMouseEnter = useCallback(\n (rowIndex: number, colIndex: number) => {\n if (\n (!isShiftPressedRef.current && !isAnchorSelected) ||\n (lastEnteredCell?.current?.rowIndex == rowIndex &&\n lastEnteredCell?.current?.colIndex == colIndex)\n ) {\n return;\n }\n const colId = columns[colIndex].id;\n lastEnteredCell.current = { rowIndex, colIndex };\n if (isAnchorSelected && selectedCells) {\n const minCol = Math.min(\n selectedCells?.start.colIndex,\n selectedCells?.end.colIndex\n );\n const maxCol = Math.max(\n selectedCells?.start.colIndex,\n selectedCells?.end.colIndex\n );\n\n if (colIndex < minCol || colIndex > maxCol) {\n return;\n }\n\n setSelectedCells((prev) => {\n if (!prev) return null;\n return {\n start: prev.start,\n end: { rowIndex, colIndex: maxCol },\n };\n });\n } else {\n if (nonInteractiveColumns?.includes(colId)) {\n return;\n }\n setSelectedCells((prev) => {\n if (!prev) return null;\n return {\n start: prev.start,\n end: { rowIndex, colIndex },\n };\n });\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [selectedCells, isAnchorSelected]\n );\n\n const lastCellPosition: CellPosition | null = useMemo(() => {\n if (!selectedCells) return null;\n return {\n rowIndex: Math.max(\n selectedCells.start.rowIndex,\n selectedCells.end.rowIndex\n ),\n colIndex: Math.max(\n selectedCells.start.colIndex,\n selectedCells.end.colIndex\n ),\n };\n }, [selectedCells]);\n\n return {\n selectedCells,\n setSelectedCells,\n handleMouseEnter,\n handleMouseDown,\n isAnchorSelected,\n setIsAnchorSelected,\n anchorDragged,\n setAnchorDragged,\n lastCellPosition,\n };\n};\n","import clsx from 'clsx';\nimport ReactDOM from 'react-dom';\n\nimport { SelectionPos } from './hooks/useSelectionPos';\nimport * as styles from './SpreadsheetTable.css';\n\nexport const SpreadsheetSelectionBox = ({\n classNames,\n scrollerRef,\n selectionBoxPos,\n}: {\n classNames: string;\n scrollerRef: React.RefObject;\n selectionBoxPos: SelectionPos;\n}) => {\n if (!scrollerRef.current) return null;\n\n return ReactDOM.createPortal(\n ,\n scrollerRef.current\n );\n};\n","export enum SortStatus {\n 'UNSORTED',\n 'ASC',\n 'DESC',\n}\n\nexport enum ArrowType {\n 'UP',\n 'DOWN',\n}\n\nexport function getNextSortStatus(\n status: SortStatus,\n allowUnsorted: boolean\n): SortStatus {\n switch (status) {\n case SortStatus.UNSORTED:\n return SortStatus.ASC;\n case SortStatus.ASC:\n return SortStatus.DESC;\n case SortStatus.DESC:\n default: {\n if (allowUnsorted) {\n return SortStatus.UNSORTED;\n }\n\n return SortStatus.ASC;\n }\n }\n}\n\nexport type SortButtonProps = {\n sortStatus: SortStatus;\n disabled?: boolean;\n onClick?: (status: SortStatus) => void;\n allowUnsorted?: boolean;\n};\n","import { flexRender, Header } from '@tanstack/react-table';\nimport { vars } from 'src/core/themes';\nimport { SortStatus } from 'src/core/ui/SortButton/SortButton.utils';\nimport { ArrowDownIcon, ArrowUpIcon } from 'src/svgs/Viagogo';\n\nimport { PosTableData } from '../Table';\nimport * as styles from './SpreadsheetTable.css';\n\nexport const SpreadsheetTableHeader = ({\n header,\n}: {\n header: Header;\n}) => {\n const canSort = header.column.getCanSort();\n const sortOrder = header.column.getIsSorted();\n\n let sortStatus = SortStatus.UNSORTED;\n\n sortStatus =\n canSort && sortOrder === 'asc' ? SortStatus.ASC : SortStatus.DESC;\n\n return (\n \n
    \n {flexRender(header.column.columnDef.header, header.getContext())}\n {canSort && (\n {\n header.column.toggleSorting();\n }}\n >\n
    \n \n \n
    \n
    \n )}\n \n \n );\n};\n","import { ComponentPropsWithoutRef, forwardRef, ReactElement } from 'react';\nimport React from 'react';\nimport { vars } from 'src/core/themes';\nimport { Colors } from 'src/core/themes/constants/colors';\nimport { Tooltip } from 'src/core/ui';\n\nimport * as styles from './PosFormField.css';\n\nexport type PosFormFieldProps = React.PropsWithChildren<{\n errors?: string | string[];\n warnings?: string | string[];\n}>;\n\nexport const PosFormFieldCell = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<'div'> & PosFormFieldProps\n>(function PosFormField({ errors, warnings, children }, ref): ReactElement {\n const isArray = Array.isArray(errors);\n const errorsDiv = errors && (\n
    \n {isArray ? (\n (errors as string[]).map((er, i) => (\n
    \n {er}\n
    \n ))\n ) : (\n
    {errors}
    \n )}\n
    \n );\n\n return (\n
    \n {errors ? (\n \n {React.cloneElement(children as React.ReactElement, {\n style: {\n backgroundColor: errors ? Colors.negative500 : 'transparent',\n border: errors\n ? `1px solid ${vars.color.borderError}`\n : 'none',\n },\n })}\n \n }\n >\n {errorsDiv}\n \n ) : (\n children\n )}\n
    \n );\n});\n","import { Cell, flexRender } from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport React from 'react';\nimport { PosFormFieldCell } from 'src/core/POS/PosFormField/PosFormFieldCell';\n\nimport { PosTableData } from '../Table';\nimport * as styles from './SpreadsheetTable.css';\n\nfunction SpreadsheetTdComponent({\n cell,\n rowIndex,\n handleMouseDown,\n handleMouseEnter,\n isInitialSelected,\n isCellSelected,\n isCellCopied,\n isSingleCellSelected,\n showAnchor,\n setAnchorDragged,\n setIsAnchorSelected,\n fieldError,\n}: {\n cell: Cell;\n rowIndex: number;\n handleMouseDown: (rowIndex: number, colIndex: number) => void;\n handleMouseEnter: (rowIndex: number, colIndex: number) => void;\n isInitialSelected: boolean;\n isCellSelected: boolean;\n isCellCopied: boolean;\n isSingleCellSelected: boolean;\n showAnchor: boolean;\n setAnchorDragged: React.Dispatch>;\n setIsAnchorSelected: React.Dispatch>;\n fieldError: any;\n}) {\n const columnIndex = cell.column.getIndex();\n const backgroundClass = clsx(\n !isInitialSelected && isCellSelected ? styles.backgroundSelected : '',\n isCellSelected && !isSingleCellSelected ? styles.backgroundSelected : '',\n !isCellSelected && !isCellCopied ? styles.backgroundDefault : ''\n );\n\n return (\n \n handleMouseDown(cell.row.index, cell.column.getIndex())\n }\n onMouseEnter={(e) =>\n e.buttons === 1 &&\n handleMouseEnter(cell.row.index, cell.column.getIndex())\n }\n >\n \n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n \n\n {showAnchor && (\n {\n e.stopPropagation();\n setAnchorDragged(true);\n setIsAnchorSelected(true);\n }}\n >\n
    \n \n )}\n \n );\n}\n\nexport const SpreadsheetTd = React.memo(SpreadsheetTdComponent) as (\n props: Parameters>[0]\n) => JSX.Element;\n","import {\n ColumnDef,\n flexRender,\n getCoreRowModel,\n getSortedRowModel,\n RowData,\n Table,\n TableOptions,\n useReactTable,\n} from '@tanstack/react-table';\nimport { notUndefined, useVirtualizer } from '@tanstack/react-virtual';\nimport clsx from 'clsx';\nimport { useMemo, useRef } from 'react';\nimport React from 'react';\nimport { FieldPath, FieldValues, Path } from 'react-hook-form';\n\nimport { PosTableData } from '../Table';\nimport { useSelectionPos } from './hooks/useSelectionPos';\nimport { useSpreadsheetCopyPaste } from './hooks/useSpreadsheetCopyPaste';\nimport { useSpreadsheetSelection } from './hooks/useSpreadsheetSelection';\nimport { SpreadsheetSelectionBox } from './SpreadsheetSelectionBox';\nimport * as styles from './SpreadsheetTable.css';\nimport { SpreadsheetTableHeader } from './SpreadsheetTableHeader';\nimport { SpreadsheetTd } from './SpreadsheetTd';\nimport { isCellInRange } from './utils';\n\ndeclare module '@tanstack/table-core' {\n interface ColumnMeta {\n pasteVerificationHandler?: (pastedValue: unknown) => boolean;\n }\n interface TableMeta {\n updateData?: (rowIndex: number, columnId: string, value: unknown) => void;\n addRow?: (rowIndex: number, row: TData) => void;\n deleteRow?: (rowIndex: number) => void;\n }\n}\n\nexport const SpreadsheetTable = ({\n options,\n nonInteractiveColumns,\n rowHeight = 40,\n fieldName,\n getFieldState,\n formState,\n}: {\n options: Partial>;\n nonInteractiveColumns?: string[];\n rowHeight?: number; // Columns that should not be interactible\n fieldName: Path;\n getFieldState: any;\n formState: any;\n}) => {\n const tableRef = useRef(null);\n const parentRef = React.useRef(null);\n\n const table: Table = useReactTable({\n ...options,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n sortingFns: {},\n } as TableOptions);\n\n const rows = table.getRowModel().rows;\n\n const virtualizer = useVirtualizer({\n count: rows.length,\n getScrollElement: () => parentRef.current,\n estimateSize: () => rowHeight,\n overscan: 10,\n });\n\n const items = virtualizer.getVirtualItems();\n\n // Padding for scroll to respect the height of the missing rows\n const [prePadding, afterPadding] =\n items.length > 0\n ? [\n notUndefined(items[0]).start - virtualizer.options.scrollMargin,\n virtualizer.getTotalSize() -\n notUndefined(items[items.length - 1]).end,\n ]\n : [0, 0];\n\n const typedColumns = table.getAllColumns().map((col) => ({\n ...col.columnDef,\n id: col.id as keyof T,\n })) as (ColumnDef & { id: keyof T })[];\n\n const {\n selectedCells,\n setSelectedCells,\n isAnchorSelected,\n setIsAnchorSelected,\n setAnchorDragged,\n handleMouseEnter,\n handleMouseDown,\n lastCellPosition,\n } = useSpreadsheetSelection({\n columns: typedColumns,\n nonInteractiveColumns,\n });\n const { isCopyActive, copiedCells } = useSpreadsheetCopyPaste({\n selectedCells,\n setSelectedCells,\n\n columns: typedColumns,\n });\n\n const selectionBoxPos = useSelectionPos(\n parentRef,\n selectedCells,\n virtualizer,\n rowHeight\n );\n const copiedBoxPos = useSelectionPos(\n parentRef,\n copiedCells,\n virtualizer,\n rowHeight\n );\n\n const isSingleCellSelected = useMemo(() => {\n return (\n selectedCells != null &&\n selectedCells.start.rowIndex === selectedCells.end.rowIndex &&\n selectedCells.start.colIndex === selectedCells.end.colIndex\n );\n }, [selectedCells]);\n\n const footerRow = table.getFooterGroups();\n const numCols = table.getAllColumns().length;\n return (\n \n \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => (\n \n ))}\n \n ))}\n \n \n {prePadding > 0 && (\n \n \n )}\n {items.map((virtualRow, rowIndex) => {\n const row = rows[virtualRow.index];\n return (\n \n {row.getVisibleCells().map((cell) => {\n const columnIndex = cell.column.getIndex();\n const isInitialSelected =\n selectedCells?.start?.colIndex === columnIndex &&\n selectedCells?.start?.rowIndex === cell.row.index;\n const isCellSelected = isCellInRange(\n selectedCells,\n cell.row.index,\n columnIndex\n );\n const isCellCopied = isCellInRange(\n copiedCells,\n cell.row.index,\n columnIndex\n );\n const showAnchor =\n lastCellPosition?.colIndex == columnIndex &&\n lastCellPosition?.rowIndex === cell.row.index &&\n !(isCopyActive && isCellCopied);\n\n const fieldError = getFieldState(\n `ticketGroups.${cell.row.index}.${cell.column.id}`,\n formState\n );\n\n return (\n \n );\n })}\n \n );\n })}\n {afterPadding > 0 && (\n \n \n )}\n \n \n {footerRow.map((row) => {\n const tableRow = () => (\n {\n e.stopPropagation();\n }}\n >\n {row.headers.map((cell) => (\n \n ))}\n \n );\n\n return tableRow();\n })}\n \n
    \n
    \n
    \n {flexRender(\n cell.column.columnDef.footer,\n cell.getContext()\n )}\n
    \n {selectionBoxPos && (\n \n )}\n {copiedBoxPos && (\n \n )}\n \n );\n};\n","import { Updater } from '@tanstack/react-table';\n\nexport type CustomColumnWidthsType = Record;\n\nexport type ColumnResizingContextType = {\n isResizeEnabled: boolean;\n customColumnWidths: CustomColumnWidthsType;\n onColumnSizingChange?: (x: Updater) => void;\n};\n\nexport const COLUMN_DEFAULT_SIZE_XS = 12;\nexport const COLUMN_DEFAULT_SIZE_ICON = 40;\nexport const COLUMN_DEFAULT_SIZE_SM = 50;\nexport const COLUMN_DEFAULT_SIZE_BASE = 70;\nexport const COLUMN_DEFAULT_SIZE_LG = 130;\nexport const COLUMN_DEFAULT_SIZE_L = 180;\nexport const COLUMN_DEFAULT_SIZE_XL = 220;\nexport const COLUMN_DEFAULT_SIZE_XXL = 300;\nexport const COLUMN_MIN_SIZE = 45;\nexport const COLUMN_MAX_SIZE = 750;\n","import clsx from 'clsx';\nimport React, { memo } from 'react';\nimport {\n Control,\n Controller,\n FieldPath,\n FieldValues,\n useWatch,\n} from 'react-hook-form';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosTextFieldProps } from 'src/core/POS/PosTextField';\nimport * as styles from 'src/tables/SpreadsheetTable/SpreadsheetTable.css';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { UiCurrency } from 'src/WebApiController';\n\ntype CurrencyCellProps = PosTextFieldProps & {\n control: Control;\n fieldName: FieldPath;\n uiCurrency: UiCurrency;\n style?: React.CSSProperties;\n};\n\nconst CurrencyCellComponent = function CurrencyCell<\n T,\n TFormValues extends FieldValues,\n>({\n control,\n fieldName,\n uiCurrency,\n onChange,\n style,\n}: CurrencyCellProps) {\n const currencyField = useWatch({\n control,\n name: fieldName as FieldPath,\n });\n\n const value = currencyField?.value as number;\n return (\n {\n return (\n {\n field.onChange(posChangedField(parseFloat(e.target.value)));\n onChange?.(e);\n }}\n rootProps={{\n className: clsx(\n styles.tableCell[value != null ? 'active' : 'disabled']\n ),\n style: style,\n }}\n style={{\n textAlign: 'right',\n }}\n />\n );\n }}\n />\n );\n};\n\nexport const CurrencyCell = memo(CurrencyCellComponent) as <\n T extends FieldValues,\n>(\n props: CurrencyCellProps\n) => JSX.Element;\n","import { CellContext } from '@tanstack/react-table';\nimport { memo } from 'react';\nimport {\n FieldPath,\n FieldValues,\n Path,\n PathValue,\n useFormContext,\n UseFormRegister,\n UseFormSetValue,\n} from 'react-hook-form';\nimport { PosTextField, PosTextFieldProps } from 'src/core/POS/PosTextField';\nimport { posChangedField } from 'src/utils/posFieldUtils';\n\ninterface InputCellProps\n extends CellContext,\n PosTextFieldProps {\n fieldName: FieldPath;\n setValue: UseFormSetValue;\n register: UseFormRegister;\n}\n\nconst InputCellComponent = function InputCell<\n T,\n V,\n TFormValues extends FieldValues,\n>({\n table,\n fieldName,\n register,\n setValue,\n ...inputProps\n}: InputCellProps) {\n const { clearErrors, getFieldState, formState } =\n useFormContext();\n const inputType = inputProps.type ?? 'text';\n const hasError = getFieldState(fieldName, formState)?.error;\n\n return (\n , {\n valueAsNumber: inputProps.type === 'number',\n onChange: (e) => {\n setValue(\n fieldName,\n posChangedField(e.target.value) as PathValue<\n TFormValues,\n FieldPath\n >\n );\n inputProps.onChange?.(e);\n },\n onBlur: (e) => {\n if (hasError && e.target.value !== '') {\n clearErrors(fieldName as Path);\n }\n },\n })}\n rootProps={{\n style: {\n backgroundColor: 'transparent',\n border: 'none',\n borderRadius: '0px',\n width: '100%',\n height: '100%',\n padding: '0 4px',\n ...inputProps.style,\n },\n }}\n style={{\n textAlign: inputType === 'text' ? 'left' : 'right',\n padding: '0 4px',\n }}\n />\n );\n};\n\nexport const InputCell = memo(InputCellComponent) as <\n T,\n V,\n TFormValues extends FieldValues,\n>(\n props: InputCellProps\n) => JSX.Element;\n","import { HeaderContext } from '@tanstack/react-table';\nimport { ReactNode } from 'react';\nimport {\n Control,\n useWatch,\n} from 'react-hook-form';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { TicketGroupInput } from 'src/WebApiController';\n\nimport * as styles from '../SpreadsheetTable.css';\nimport { isPosField } from '../utils';\nimport { CurrencyCell } from './CurrencyCell';\nimport { InputCell } from './InputCell';\n\nexport const SpreadsheetCell = {\n InputCell: InputCell,\n CurrencyCell: CurrencyCell,\n FooterAggregateCell: function FooterAggregateCell({\n prefixDisplay,\n control,\n fieldName,\n type = 'number',\n }: HeaderContext & {\n prefixDisplay?: ReactNode;\n control: Control;\n fieldName: string;\n type?: 'number' | 'currency';\n }) {\n const values = useWatch({\n control,\n name: `ticketGroups`,\n });\n\n const total = values.reduce((sum, row) => {\n const value = row[fieldName as keyof TicketGroupInput];\n const isValuePosField = isPosField(value);\n if (!isValuePosField) {\n return sum;\n }\n\n if (typeof value.value === 'number') {\n return sum + (value.value || 0);\n } else if (typeof value.value === 'string') {\n return sum + parseFloat(value.value);\n }\n return sum;\n }, 0);\n\n return (\n
    \n {prefixDisplay &&
    {prefixDisplay}
    }\n
    \n {type === 'currency' ? total.toFixed(2) : total}\n
    \n
    \n );\n },\n};\n","import { CellContext } from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport React from 'react';\nimport { Control, useFormContext } from 'react-hook-form';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport * as styles from 'src/tables/SpreadsheetTable/SpreadsheetTable.css';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { TicketGroupInput } from 'src/WebApiController';\n\nfunction TicketGroupInputQuantityComponent({\n cell,\n ...inputProps\n}: CellContext & {\n control: Control;\n style?: React.CSSProperties;\n}) {\n const {\n register,\n setValue,\n getValues,\n getFieldState,\n formState,\n clearErrors,\n } = useFormContext();\n\n const hasError = getFieldState(\n `ticketGroups.${cell.row.index}.numberOfTickets`,\n formState\n )?.error;\n\n return (\n {\n const quantity = e.target.value;\n if (hasError && quantity !== '') {\n clearErrors(`ticketGroups.${cell.row.index}.numberOfTickets`);\n }\n },\n onChange: (e) => {\n const quantity = e.target.value;\n if (quantity === '') {\n return;\n }\n\n const unitCost = getValues(\n `ticketGroups.${cell.row.index}.unitCost.value`\n );\n\n const totalCost = getValues(\n `ticketGroups.${cell.row.index}.totalCost.value`\n );\n\n if (!unitCost && totalCost) {\n const calculatedUnitCost = parseFloat(\n (totalCost / quantity).toFixed(2)\n );\n\n setValue(\n `ticketGroups.${cell.row.index}.unitCost`,\n posChangedField(calculatedUnitCost)\n );\n return;\n }\n\n if (!unitCost) {\n return;\n }\n\n const calculatedTotalCost = parseFloat(\n (unitCost * quantity).toFixed(2)\n );\n\n setValue(\n `ticketGroups.${cell.row.index}.totalCost`,\n posChangedField(calculatedTotalCost)\n );\n },\n })}\n rootProps={{\n className: clsx(styles.tableCell['active']),\n style: {\n ...inputProps.style,\n },\n }}\n style={{\n textAlign: 'right',\n }}\n />\n );\n}\n\nexport const TicketGroupInputQuantity = React.memo(\n TicketGroupInputQuantityComponent\n) as (\n props: CellContext & {\n control: Control;\n style?: React.CSSProperties;\n }\n) => JSX.Element;\n","import { CellContext } from '@tanstack/react-table';\nimport React, { ReactNode, useCallback } from 'react';\nimport { Control, Controller, useFormContext, useWatch } from 'react-hook-form';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { DeliveryType, TicketGroupInput } from 'src/WebApiController';\n\nimport * as styles from './TicketGroupInputTable.css';\n\nfunction TicketGroupInputDeliveryTypeComponent({\n row: { index: rowIndex },\n deliveryTypeMapping,\n deliveryTypeMappingOverride,\n deliverTypeOptionsAlwaysShow,\n cell,\n control,\n}: CellContext & {\n deliveryTypeMapping: Record;\n deliveryTypeMappingOverride: Record;\n deliverTypeOptionsAlwaysShow: Record;\n control: Control;\n}) {\n const { setValue } = useFormContext();\n\n const displayComponent = useCallback(\n (value: string) => {\n return <>{deliveryTypeMapping[value as DeliveryType]};\n },\n [deliveryTypeMapping]\n );\n\n const deliveryTypeValue = useWatch({\n name: `ticketGroups.${rowIndex}.deliveryType.value`,\n });\n\n return (\n {\n return (\n }\n value={deliveryTypeValue as DeliveryType}\n valueOptionsContentOverride={deliveryTypeMappingOverride}\n valueOptionsAlwaysShow={deliverTypeOptionsAlwaysShow}\n onChange={(value) =>\n setValue(\n `ticketGroups.${rowIndex}.deliveryType`,\n posChangedField(value as DeliveryType)\n )\n }\n />\n );\n }}\n />\n );\n}\n\nexport const TicketGroupInputDeliveryType = React.memo(\n TicketGroupInputDeliveryTypeComponent\n) as (\n props: CellContext & {\n deliveryTypeMapping: Record;\n deliveryTypeMappingOverride: Record;\n deliverTypeOptionsAlwaysShow: Record;\n control: Control;\n }\n) => JSX.Element;\n","import { useMemo } from 'react';\nimport { PosSelect, PosSelectProps } from 'src/core/POS/PosSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionInfo } from 'src/WebApiController';\n\nexport type RowSelectorProps = Omit & {\n selectedSection?: SectionInfo | null;\n};\n\nexport function RowSelector({\n disabled,\n placeholderText,\n selectedSection,\n searchable,\n ...props\n}: RowSelectorProps) {\n const filteredRows = useMemo(\n () => selectedSection?.rows.filter((r) => r.name && !r.isSpeculative) ?? [],\n [selectedSection?.rows]\n );\n const valueOptionsContent = useMemo(\n () =>\n filteredRows.reduce(\n (re, r) => {\n re[r.id.toString()] = r.name!;\n return re;\n },\n {} as Record\n ),\n [filteredRows]\n );\n\n const nameToOrdinal = useMemo(\n () =>\n filteredRows.reduce(\n (res, row) => {\n res[row.name!] = row.ordinal!;\n return res;\n },\n {} as Record\n ),\n [filteredRows]\n );\n\n return (\n (nameToOrdinal[a] ?? 0) - (nameToOrdinal[b] ?? 0)}\n sortBy=\"value\"\n />\n );\n}\n","import { useMemo } from 'react';\nimport { PosSelect, PosSelectProps } from 'src/core/POS/PosSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionInfo } from 'src/WebApiController';\n\nexport type SectionSelectorProps = Omit<\n PosSelectProps,\n 'valueOptionsContent'\n> & { sections?: SectionInfo[] | null };\n\nexport function SectionSelector({\n disabled,\n placeholderText,\n sections,\n ...props\n}: SectionSelectorProps) {\n const valueOptionsContent = useMemo(() => {\n const sectionOptions = sections\n ?.toSorted((s1, s2) => s1.name.localeCompare(s2.name))\n .reduce(\n (r, s) => {\n r[s.id.toString()] = s.name;\n return r;\n },\n {} as Record\n );\n\n return sectionOptions ?? {};\n }, [sections]);\n\n return (\n \n );\n}\n","import { CellContext } from '@tanstack/react-table';\nimport { debounce } from 'lodash-es';\nimport React, { useCallback } from 'react';\nimport { Control, Controller, useFormContext, useWatch } from 'react-hook-form';\nimport { RowSelector } from 'src/components/Selectors/SectionRowSelector';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { vars } from 'src/core/themes';\nimport { SpreadsheetCell } from 'src/tables/SpreadsheetTable/SpreadsheetCell/SpreadsheetCell';\nimport * as styles from 'src/tables/SpreadsheetTable/SpreadsheetTable.css';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\n\nfunction TicketGroupInputRowSelectorComponent(\n props: CellContext & {\n control: Control;\n style?: React.CSSProperties;\n }\n) {\n const {\n register,\n setValue,\n getValues,\n getFieldState,\n formState,\n clearErrors,\n } = useFormContext();\n const { cell, control, getValue, style = {} } = props;\n const { venueMapInfo } = useEventMapContext();\n\n const [sectionId, section] = useWatch({\n name: [\n `ticketGroups.${cell.row.index}.sectionId.value`,\n `ticketGroups.${cell.row.index}.section.value`,\n ],\n });\n\n const rowValue = getValues(`ticketGroups.${cell.row.index}.row.value`);\n const hasError = getFieldState(\n `ticketGroups.${cell.row.index}.row`,\n formState\n )?.error;\n\n const selectedSection = venueMapInfo?.sections?.find((s) =>\n sectionId ? s.id === sectionId : s.name === section\n );\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const setRowForTickets = useCallback(\n debounce((row: string) => {\n const tickets = getValues(`ticketGroups.${cell.row.index}.tickets.value`);\n if (tickets) {\n setValue(\n `ticketGroups.${cell.row.index}.tickets`,\n posChangedField(tickets.map((t) => ({ ...t, row: row })) ?? null)\n );\n }\n }, 600),\n [setValue]\n );\n\n return selectedSection?.rows?.filter((r) => !r.isSpeculative)?.length ? (\n {\n const selectedRow = selectedSection?.rows?.find(\n (r) => r.name === rowValue\n );\n return (\n {\n const id = parseInt(rowId);\n\n if (hasError && id) {\n clearErrors(`ticketGroups.${cell.row.index}.row`);\n }\n const row = selectedSection?.rows?.find((r) => r.id === id);\n // If the row is not found, it means the user selected the placeholder option\n if (row == undefined) {\n field.onChange(posChangedField(rowId));\n setValue(`ticketGroups.${cell.row.index}.rowId`, null);\n return;\n }\n\n field.onChange(posChangedField(row.name));\n setValue(\n `ticketGroups.${cell.row.index}.rowId`,\n posChangedField(id)\n );\n setRowForTickets(row.name || '');\n }}\n placeholderText=\"\"\n />\n );\n }}\n />\n ) : (\n \n register={register}\n fieldName={`ticketGroups.${cell.row.index}.row`}\n {...props}\n setValue={setValue}\n />\n );\n}\n\nexport const TicketGroupInputRowSelector = React.memo(\n TicketGroupInputRowSelectorComponent\n) as (\n props: CellContext & {\n control: Control;\n style?: React.CSSProperties;\n }\n) => JSX.Element;\n","import { set } from 'date-fns';\nimport { range } from 'lodash-es';\nimport {\n ControllerFieldState,\n UseFormClearErrors,\n UseFormSetError,\n UseFormSetValue,\n} from 'react-hook-form';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { Ticket } from 'src/WebApiController';\n\nconst getIncrement = (\n from: number,\n to: number,\n quantity: number\n): number | null => {\n if (quantity <= 1) return null;\n return (to - from) / (quantity - 1);\n};\n\nconst generateSeats = (\n from: number,\n to: number | null,\n quantity: number,\n isNumeric: boolean\n): (string | number)[] => {\n if (!to) {\n // If only `from` is defined\n return Array.from({ length: quantity }, (_, i) =>\n i === 0 ? (isNumeric ? from : String.fromCharCode(from)) : ''\n );\n }\n\n const increment = getIncrement(from, to, quantity);\n if (increment === null) {\n return [isNumeric ? from : String.fromCharCode(from)];\n }\n\n return Array.from({ length: quantity }, (_, i) =>\n isNumeric\n ? Math.round(from + i * increment)\n : String.fromCharCode(Math.round(from + i * increment))\n );\n};\n\nexport function assignTicketGroupSeats(\n seatFrom: string | number | null,\n seatTo: string | number | null,\n quantity: number | null,\n tickets: Ticket[] | null,\n setValue: UseFormSetValue,\n setError: UseFormSetError,\n clearErrors: UseFormClearErrors,\n fieldState: ControllerFieldState,\n rowIndex: number,\n skipError?: string\n) {\n if (!quantity) return;\n\n let seats: (string | number)[] = [];\n // No seats case: No seatFrom and no seatTo\n if (!seatFrom && !seatTo) {\n clearErrors(`ticketGroups.${rowIndex}.tickets`);\n seats = Array.from({ length: quantity }, () => '');\n }\n // Numeric Case: Both seatFrom and seatTo are numbers (or numeric strings)\n else if (!isNaN(Number(seatFrom)) && !isNaN(Number(seatTo))) {\n const seatFromNum = Number(seatFrom);\n const seatToNum = Number(seatTo);\n\n if (\n !validateSeatRange(\n seatFromNum,\n seatToNum,\n tickets,\n quantity,\n rowIndex,\n setError,\n clearErrors,\n fieldState,\n skipError\n )\n ) {\n // If validation fails, adjust existing tickets if available.\n if (tickets) {\n if (quantity < tickets.length) {\n setValue(\n `ticketGroups.${rowIndex}.tickets`,\n posChangedField(tickets.slice(0, quantity))\n );\n return;\n }\n if (quantity > tickets.length && tickets[0]) {\n const startOrdinal = tickets[0].ord || 0;\n const initialTickets = tickets[0];\n const newTickets = range(tickets.length, quantity).map((i) => ({\n ...initialTickets,\n id: startOrdinal + i,\n ord: startOrdinal + i,\n lstOrd: startOrdinal + i,\n seat: '',\n }));\n setValue(\n `ticketGroups.${rowIndex}.tickets`,\n posChangedField([...tickets, ...newTickets])\n );\n return;\n }\n }\n }\n seats = generateSeats(seatFromNum, seatToNum, quantity, true);\n }\n // Character Case: Both seatFrom and seatTo are single letters\n else if (\n typeof seatFrom === 'string' &&\n typeof seatTo === 'string' &&\n seatFrom.length === 1 &&\n seatTo.length === 1\n ) {\n const fromCharCode = seatFrom.toUpperCase().charCodeAt(0);\n const toCharCode = seatTo.toUpperCase().charCodeAt(0);\n\n if (\n !validateSeatRange(\n fromCharCode,\n toCharCode,\n tickets,\n quantity,\n rowIndex,\n setError,\n clearErrors,\n fieldState,\n skipError\n )\n ) {\n return;\n }\n seats = generateSeats(fromCharCode, toCharCode, quantity, false);\n }\n // Only seatFrom provided (Numeric or Char)\n else if (seatFrom) {\n if (typeof seatFrom === 'string') {\n const fromCharCode = seatFrom.toUpperCase().charCodeAt(0);\n seats = generateSeats(fromCharCode, null, quantity, false);\n } else if (typeof seatFrom === 'number') {\n seats = generateSeats(seatFrom, null, quantity, true);\n }\n }\n // Only seatTo provided (Numeric or Char)\n else if (seatTo) {\n if (typeof seatTo === 'string') {\n const toCharCode = seatTo.toUpperCase().charCodeAt(0);\n seats = generateSeats(toCharCode, null, quantity, false);\n } else if (typeof seatTo === 'number') {\n seats = generateSeats(seatTo, null, quantity, true);\n }\n }\n\n // Assign seats to tickets. If tickets do not exist, create new ones.\n if (!tickets) {\n tickets = seats.map((seat, i) => ({\n id: i,\n ord: i,\n lstOrd: i,\n seat: seat.toString(),\n })) as Ticket[];\n }\n\n if (tickets) {\n if (tickets.length > quantity) {\n // If there are too many tickets, slice the array down.\n tickets = tickets.slice(0, quantity);\n } else if (tickets.length < quantity) {\n // If there are fewer tickets than the new quantity,\n // use the first ticket to create additional tickets.\n const origTicket = tickets[0];\n const startOrdinal = origTicket?.ord ?? 0;\n const additionalTickets = range(tickets.length, quantity).map((i) => ({\n ...origTicket, // clone the template (if available) or create a new ticket if needed\n id: startOrdinal + i,\n ord: startOrdinal + i,\n lstOrd: startOrdinal + i,\n seat: '', // initialize seat as blank\n }));\n tickets = [...tickets, ...additionalTickets];\n }\n\n seats.forEach((seat, i) => {\n if (tickets![i]) {\n tickets![i].seat = seat.toString();\n }\n });\n }\n\n setValue(`ticketGroups.${rowIndex}.tickets`, posChangedField(tickets));\n}\n\n// Validate the seat range and quantity. Set errors if necessary.\nexport function validateSeatRange(\n seatFrom: number,\n seatTo: number,\n tickets: Ticket[] | null,\n quantity: number,\n rowIndex: number,\n setError: UseFormSetError,\n clearErrors: UseFormClearErrors,\n fieldState: ControllerFieldState,\n skipError?: string\n): boolean {\n if (quantity !== tickets?.length) {\n setError(`ticketGroups.${rowIndex}.tickets`, {\n message:\n 'Quantity does not match existing tickets. Please re-enter seat range or change quantity',\n });\n return false;\n }\n\n if (quantity === 1 && seatFrom !== seatTo) {\n const hasDuplicates = false;\n if (tickets) {\n const seatSet = new Set();\n for (const t of tickets) {\n if (!t.seat) {\n setError(`ticketGroups.${rowIndex}.tickets`, {\n message: 'Seats cannot be empty',\n });\n return false;\n }\n if (seatSet.has(t.seat)) {\n setError(`ticketGroups.${rowIndex}.tickets`, {\n message: 'Duplicate seats are not allowed',\n });\n return false;\n }\n seatSet.add(t.seat);\n }\n }\n\n setError(`ticketGroups.${rowIndex}.tickets`, {\n message: 'Unable to calculate seating. Please manually allocate seats',\n });\n return false;\n }\n if (seatFrom > seatTo) {\n setError(`ticketGroups.${rowIndex}.tickets`, {\n message: 'End seat must be greater than start seat',\n });\n return false;\n }\n\n const totalRange = seatTo - seatFrom + 1;\n if (quantity > totalRange) {\n setError(`ticketGroups.${rowIndex}.tickets`, {\n message: 'Quantity not within range',\n });\n return false;\n }\n\n if (\n fieldState.error?.message &&\n // Prevent clearing the error if the error is set at the TicketGroup level\n (!skipError || !fieldState.error?.message.includes(skipError))\n ) {\n clearErrors(`ticketGroups.${rowIndex}.tickets`);\n }\n\n return true;\n}\n","import { CellContext } from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport {\n Control,\n useController,\n useFormContext,\n useWatch,\n} from 'react-hook-form';\nimport { IconButton } from 'src/components/Buttons';\nimport { useContent } from 'src/contexts/ContentContext/Content';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { SeatIcon } from 'src/svgs/Viagogo';\nimport * as styles from 'src/tables/SpreadsheetTable/SpreadsheetTable.css';\nimport { SEAT_RANGE_REGEX } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { Ticket, TicketGroupInput } from 'src/WebApiController';\n\nimport {\n assignTicketGroupSeats,\n validateSeatRange,\n} from './utils/seatRangeUtils';\n\nconst extractSeatRange = (\n localValue: string,\n tickets: Ticket[]\n): { seatFrom: string | number | null; seatTo: string | number | null } => {\n if (localValue) {\n const seatRangeInput = localValue.match(SEAT_RANGE_REGEX);\n return {\n seatFrom: seatRangeInput?.[1] || null,\n seatTo: seatRangeInput?.[2] || null,\n };\n }\n // Fallback: derive from existing tickets\n return {\n seatFrom: tickets?.[0]?.seat || null,\n seatTo: tickets?.[tickets.length - 1]?.seat || null,\n };\n};\n\nconst convertSeatRange = (\n seatFrom: string | number | null,\n seatTo: string | number | null\n): { seatFrom: number; seatTo: number } => {\n if (seatFrom == null || seatTo == null) {\n return { seatFrom: 0, seatTo: 0 };\n }\n if (!isNaN(Number(seatFrom)) && !isNaN(Number(seatTo))) {\n return { seatFrom: Number(seatFrom), seatTo: Number(seatTo) };\n } else if (typeof seatFrom === 'string' && typeof seatTo === 'string') {\n return {\n seatFrom: seatFrom.toUpperCase().charCodeAt(0),\n seatTo: seatTo.toUpperCase().charCodeAt(0),\n };\n }\n return { seatFrom: 0, seatTo: 0 };\n};\n\nfunction TicketGroupInputSeatRangeComponent({\n row: { index: rowIndex },\n cell,\n control,\n launchSeatRangeDialog,\n style,\n}: CellContext & {\n control: Control;\n launchSeatRangeDialog: (rowIndex: number) => void;\n style?: React.CSSProperties;\n}) {\n const { setValue, getValues, setError, clearErrors, watch } =\n useFormContext();\n const { fieldState } = useController({\n name: `ticketGroups.${rowIndex}.tickets`,\n control,\n rules: { required: true },\n });\n\n const qty = useWatch({\n control,\n name: `ticketGroups.${rowIndex}.numberOfTickets.value`,\n });\n\n const ticketsValue = watch(`ticketGroups.${rowIndex}.tickets.value`);\n\n const tickets = ticketsValue || [];\n const ticketsHasSeats = tickets?.some((t) => t.seat != '');\n\n const formattedValue = tickets\n ? ticketsHasSeats && tickets.length >= 1\n ? `${tickets[0].seat || ''} - ${tickets[tickets.length - 1].seat || ''}`\n : ''\n : '';\n\n const [localValue, setLocalValue] = useState(formattedValue || '');\n const duplicateSeatErrorMsg = useContent(ContentId.DuplicateSeat);\n\n useEffect(() => {\n if (!qty) return;\n const { seatFrom, seatTo } = extractSeatRange(localValue, tickets);\n assignTicketGroupSeats(\n seatFrom,\n seatTo,\n qty,\n tickets,\n setValue,\n setError,\n clearErrors,\n fieldState,\n rowIndex,\n duplicateSeatErrorMsg\n );\n }, [qty]);\n\n useEffect(() => {\n if (localValue === formattedValue) return;\n setLocalValue(formattedValue || '');\n }, [formattedValue]);\n\n useEffect(() => {\n // Only run updateSeatRange when tickets are updated externally\n if (ticketsHasSeats) {\n const { seatFrom: rawSeatFrom, seatTo: rawSeatTo } = extractSeatRange(\n localValue,\n tickets\n );\n const { seatFrom, seatTo } = convertSeatRange(rawSeatFrom, rawSeatTo);\n validateSeatRange(\n seatFrom,\n seatTo,\n tickets,\n qty || 0,\n rowIndex,\n setError,\n clearErrors,\n fieldState,\n duplicateSeatErrorMsg\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tickets, ticketsHasSeats]);\n\n const SeatRangeModalButton = useMemo(() => {\n return (\n }\n onClick={() => {\n launchSeatRangeDialog(rowIndex);\n }}\n />\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [rowIndex]);\n\n return (\n {\n setLocalValue(e.target.value); // Only update local state\n }}\n onBlur={(e) => {\n const quantity = getValues(\n `ticketGroups.${cell.row.index}.numberOfTickets.value`\n );\n const tickets = getValues(\n `ticketGroups.${cell.row.index}.tickets.value`\n );\n\n const seatRangeInput = e.target.value.match(SEAT_RANGE_REGEX);\n const seatFrom = seatRangeInput?.[1] || null;\n const seatTo = seatRangeInput?.[2] || null;\n\n assignTicketGroupSeats(\n seatFrom,\n seatTo,\n quantity,\n tickets,\n setValue,\n setError,\n clearErrors,\n fieldState,\n rowIndex,\n duplicateSeatErrorMsg\n );\n }}\n rootProps={{\n className: clsx(\n styles.tableCell[localValue != null ? 'active' : 'disabled']\n ),\n style: style,\n }}\n postfixDisplay={SeatRangeModalButton}\n />\n );\n}\n\nexport const TicketGroupInputSeatRange = React.memo(\n TicketGroupInputSeatRangeComponent\n) as (\n props: CellContext & {\n control: Control;\n launchSeatRangeDialog: (rowIndex: number) => void;\n style?: React.CSSProperties;\n }\n) => JSX.Element;\n","import { CellContext } from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport React from 'react';\nimport { Control, Controller, useFormContext, useWatch } from 'react-hook-form';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { vars } from 'src/core/themes';\nimport * as styles from 'src/tables/SpreadsheetTable/SpreadsheetTable.css';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { ListingNote, TicketGroupInput } from 'src/WebApiController';\n\nfunction TicketGroupInputSeatTraitComponent({\n cell,\n valueOptionsContent,\n listingNotesMap,\n control,\n}: CellContext & {\n valueOptionsContent: Record;\n listingNotesMap?: Record | null;\n control: Control;\n}) {\n const { setValue, watch } = useFormContext();\n const listingNotes = watch(`ticketGroups.${cell.row.index}.listingNotes`);\n\n return (\n ln.listingNoteId.toString()) ?? []\n }\n triggerProps={{\n className: clsx(\n styles.tableCell[\n !listingNotes?.value || listingNotes?.value?.length === 0\n ? 'disabled'\n : 'active'\n ]\n ),\n }}\n style={{\n fontSize: vars.typography.fontSize.sm,\n }}\n searchable\n onChange={(lnIds: string[]) => {\n if (!listingNotesMap) return;\n\n const listingNotes = lnIds.map((lnId) => {\n const listingNoteId = parseInt(lnId);\n return listingNotesMap[listingNoteId];\n });\n setValue(\n `ticketGroups.${cell.row.index}.listingNotes`,\n posChangedField(listingNotes)\n );\n }}\n valueOptionsContent={valueOptionsContent}\n />\n );\n}\n\nexport const TicketGroupInputSeatTrait = React.memo(\n TicketGroupInputSeatTraitComponent\n) as (\n props: CellContext & {\n valueOptionsContent?: Record;\n listingNotesMap?: Record | null;\n control: Control;\n }\n) => JSX.Element;\n","import { CellContext } from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport React from 'react';\nimport { Control, Controller, useFormContext } from 'react-hook-form';\nimport { SectionSelector } from 'src/components/Selectors/SectionRowSelector';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport * as styles from 'src/tables/SpreadsheetTable/SpreadsheetTable.css';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nfunction TicketGroupInputVenueInputComponent({\n cell,\n control,\n style,\n}: CellContext & {\n control: Control;\n style?: React.CSSProperties;\n}) {\n const { setValue, watch, getFieldState, clearErrors } =\n useFormContext();\n const { venueMapInfo } = useEventMapContext();\n const chooseSection = useContent(ContentId.ChooseSection);\n const section = watch(`ticketGroups.${cell.row.index}.section`);\n const hasErrors = getFieldState(\n `ticketGroups.${cell.row.index}.section`\n )?.error;\n\n return venueMapInfo?.sections?.length ? (\n {\n const value = section?.value;\n return (\n {\n if (hasErrors && selectedSectionId !== '') {\n clearErrors(`ticketGroups.${cell.row.index}.section`);\n }\n const id = parseInt(selectedSectionId);\n const section = venueMapInfo?.sections?.find((s) => s.id === id);\n const sectionName = section?.name ?? selectedSectionId;\n setValue(\n `ticketGroups.${cell.row.index}.section`,\n posChangedField(sectionName)\n );\n setValue(\n `ticketGroups.${cell.row.index}.sectionId`,\n posChangedField(id)\n );\n }}\n />\n );\n }}\n />\n ) : (\n {\n setValue(\n `ticketGroups.${cell.row.index}.section`,\n posChangedField(e.target.value)\n );\n }}\n onBlur={(e) => {\n if (hasErrors && e.target.value !== '') {\n clearErrors(`ticketGroups.${cell.row.index}.section`);\n }\n }}\n />\n );\n}\n\nexport const TicketGroupInputVenueInput = React.memo(\n TicketGroupInputVenueInputComponent\n) as (\n props: CellContext & {\n control: Control;\n style?: React.CSSProperties;\n }\n) => JSX.Element;\n","import { IconsFill } from 'src/svgs/Viagogo';\nimport { getDeliveryTypeIcon } from 'src/utils/ticketTypeUtils';\nimport { DeliveryType } from 'src/WebApiController';\n\nconst createDeliveryTypeMapping = (\n transform: (value: DeliveryType) => T\n): Record =>\n Object.entries(DeliveryType).reduce(\n (result, [_, value]) => {\n if (value === DeliveryType.Wallet) {\n return result;\n }\n result[value] = transform(value);\n return result;\n },\n {} as Record\n );\n\nexport const useTicketGroupDeliveryTypes = () => {\n const deliveryTypeMapping = createDeliveryTypeMapping((value) =>\n getDeliveryTypeIcon(value, null, IconsFill.currentColor)\n );\n\n const deliveryTypeMappingOverride = createDeliveryTypeMapping((value) => (\n
    {value}
    \n ));\n\n const deliverTypeOptionsAlwaysShow = createDeliveryTypeMapping(() => true);\n\n return {\n deliveryTypeMapping,\n deliveryTypeMappingOverride,\n deliverTypeOptionsAlwaysShow,\n };\n};\n","import { ColumnDef, createColumnHelper } from '@tanstack/react-table';\nimport { ChangeEvent, useMemo } from 'react';\nimport { UseFieldArrayReturn, useFormContext } from 'react-hook-form';\nimport { IconButton } from 'src/components/Buttons';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n COLUMN_DEFAULT_SIZE_LG,\n COLUMN_DEFAULT_SIZE_SM,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport { Content } from 'src/contexts/ContentContext/Content';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui/Button';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { DeleteIcon, DollarIcon, PlusIcon } from 'src/svgs/Viagogo';\nimport { SpreadsheetCell } from 'src/tables/SpreadsheetTable/SpreadsheetCell/SpreadsheetCell';\nimport { isPosField } from 'src/tables/SpreadsheetTable/utils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { newBigIntId } from 'src/utils/idUtils';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport {\n DeliveryType,\n ListingNote,\n TicketGroupInput,\n} from 'src/WebApiController';\n\nimport { TicketGroupInputQuantity } from '../TableGroupInputQuantity';\nimport { TicketGroupInputDeliveryType } from '../TicketGroupInputDeliveryType';\nimport { TicketGroupInputRowSelector } from '../TicketGroupInputRowSelector';\nimport { TicketGroupInputSeatRange } from '../TicketGroupInputSeatRange';\nimport { TicketGroupInputSeatTrait } from '../TicketGroupInputSeatTrait';\nimport { TicketGroupInputVenueInput } from '../TicketGroupInputVenueInput';\nimport { useTicketGroupDeliveryTypes } from './useTicketGroupDeliveryTypes';\n\nexport const useTicketGroupInputTableColumns = ({\n isTotalCostChecked,\n purchaseTicketGroupInputField,\n valueOptionsContent,\n listingNotesMap,\n launchSeatRangeDialog,\n}: {\n isTotalCostChecked: boolean;\n purchaseTicketGroupInputField: UseFieldArrayReturn<\n PurchaseTicketsInput,\n 'ticketGroups',\n 'id'\n >;\n valueOptionsContent: Record;\n listingNotesMap?: Record | null;\n launchSeatRangeDialog: (rowIndex: number) => void;\n}) => {\n const { control, register, getValues, setValue } =\n useFormContext();\n\n const { loginContext } = useAppContext();\n\n const { getUiCurrency } = useLocalizationContext();\n const uiCurrency = getUiCurrency(\n loginContext?.user?.activeAccount?.currencyCode\n );\n const {\n deliveryTypeMapping,\n deliveryTypeMappingOverride,\n deliverTypeOptionsAlwaysShow,\n } = useTicketGroupDeliveryTypes();\n\n const { insert, remove } = purchaseTicketGroupInputField;\n\n const columnHelper = createColumnHelper();\n\n const costColumn = useMemo>(() => {\n if (isTotalCostChecked) {\n return {\n id: 'totalCost',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data?.totalCost?.value,\n size: 104,\n minSize: 104,\n maxSize: 104,\n cell: (context) => {\n const onChange = (e: ChangeEvent) => {\n const totalCost = parseFloat(e.target.value);\n const qty = getValues(\n `ticketGroups.${context.row.index}.numberOfTickets.value`\n );\n\n if (!qty || !totalCost) {\n return;\n }\n\n const calculatedUnitCost = parseFloat((totalCost / qty).toFixed(2));\n\n setValue(\n `ticketGroups.${context.row.index}.unitCost`,\n posChangedField(calculatedUnitCost)\n );\n };\n\n return (\n \n );\n },\n meta: {\n pasteVerificationHandler: (value: unknown) =>\n typeof value === 'number',\n },\n footer: (context) => (\n \n ),\n };\n } else {\n return {\n id: 'unitCost',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data?.unitCost?.value,\n size: 104,\n minSize: 104,\n maxSize: 104,\n cell: (context) => {\n const onChange = (e: ChangeEvent) => {\n const unitCost = parseFloat(e.target.value);\n\n const qty = getValues(\n `ticketGroups.${context.row.index}.numberOfTickets.value`\n );\n\n if (!qty || !unitCost) {\n return;\n }\n\n const calculatedTotalCost = parseFloat((unitCost * qty).toFixed(2));\n setValue(\n `ticketGroups.${context.row.index}.totalCost`,\n posChangedField(calculatedTotalCost)\n );\n };\n return (\n \n );\n },\n meta: {\n pasteVerificationHandler: (value: unknown) =>\n typeof value === 'number',\n },\n footer: (context) => (\n \n ),\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isTotalCostChecked, register, control, uiCurrency.sym]);\n\n const columnConfigs = useMemo[]>(\n () => [\n columnHelper.accessor((data) => data?.section, {\n id: 'section',\n header: () => (\n \n \n \n ),\n size: 200,\n cell: (context) => (\n \n ),\n meta: {\n pasteVerificationHandler: (value: unknown) =>\n typeof value === 'string',\n },\n }) as ColumnDef,\n {\n id: 'row',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data?.row?.value,\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_DEFAULT_SIZE_SM,\n maxSize: COLUMN_DEFAULT_SIZE_SM,\n cell: (context) => (\n \n ),\n },\n {\n id: 'numberOfTickets',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data?.numberOfTickets?.value,\n size: 40,\n minSize: 40,\n maxSize: 40,\n cell: (context) => (\n \n ),\n meta: {\n pasteVerificationHandler: (value: unknown) =>\n typeof value === 'number',\n },\n footer: (context) => (\n \n ),\n },\n {\n id: 'tickets',\n header: () => (\n \n \n \n ),\n size: 100,\n cell: (context) => (\n \n ),\n meta: {\n pasteVerificationHandler: (value: unknown) => {\n return (\n Array.isArray(value) &&\n value.every((item) => typeof item === 'object')\n );\n },\n },\n },\n costColumn,\n {\n id: 'faceValueCost',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data?.faceValueCost?.value,\n size: 104,\n minSize: 104,\n maxSize: 104,\n cell: (context) => (\n \n ),\n meta: {\n pasteVerificationHandler: (value: unknown) =>\n typeof value === 'number',\n },\n footer: (context) => (\n \n ),\n },\n {\n id: 'expectedValue',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data?.expectedValue?.value,\n size: 104,\n minSize: 104,\n maxSize: 104,\n cell: (context) => (\n \n ),\n meta: {\n pasteVerificationHandler: (value: unknown) =>\n typeof value === 'number',\n },\n footer: (context) => (\n \n ),\n },\n {\n id: 'deliveryType',\n header: () => {},\n enableSorting: false,\n accessorFn: (data) => data?.deliveryType?.value,\n size: 48,\n cell: (context) => (\n \n ),\n meta: {\n pasteVerificationHandler: (value: unknown) => {\n return (\n typeof value === 'string' &&\n Object.values(DeliveryType).includes(value as DeliveryType)\n );\n },\n },\n },\n {\n id: 'listingNotes',\n enableSorting: false,\n header: () => (\n \n \n \n ),\n accessorFn: (data): ListingNote[] | null =>\n data?.listingNotes?.value ?? [],\n size: COLUMN_DEFAULT_SIZE_LG,\n cell: (context) => {\n return (\n \n );\n },\n meta: {\n pasteVerificationHandler: (value: unknown) => {\n return (\n Array.isArray(value) &&\n value.every((item) => typeof item === 'object')\n );\n },\n },\n },\n columnHelper.display({\n id: 'actions',\n enableSorting: false,\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_DEFAULT_SIZE_SM,\n maxSize: COLUMN_DEFAULT_SIZE_SM,\n cell: ({ row, column: { id: columnId }, table, cell }) => {\n const numRows = table.getRowModel().rows.length;\n return (\n \n {\n const curRowValues = getValues(\n `ticketGroups.${cell.row.index}`\n );\n const newRow: TicketGroupInput = { ...curRowValues };\n\n for (const key in curRowValues) {\n const curRowKey = key as keyof TicketGroupInput;\n\n const curRowValue = curRowValues[curRowKey];\n const newRowValue = newRow[curRowKey];\n if (\n curRowValue &&\n isPosField(curRowValue) &&\n curRowValue.value\n ) {\n // Need to mark populated fields as changed so validation can work\n if (newRowValue && isPosField(newRowValue)) {\n newRowValue.hasChanged = true;\n }\n }\n }\n\n const newTicketGroupId = newBigIntId();\n const newTickets = curRowValues.tickets?.value\n ? curRowValues.tickets.value.map((ticket) => ({\n ...ticket,\n tgId: newTicketGroupId,\n saleId: null,\n listingId: null,\n holdId: null,\n barcode: null,\n ticketUrl: null,\n eTicket: null,\n qrCode: null,\n isWasted: null,\n externalTicketId: null,\n }))\n : null;\n \n insert(cell.row.index + 1, { \n ...newRow,\n tickets: posChangedField(newTickets),\n ticketGroupId: newTicketGroupId,\n });\n }}\n >\n \n \n {numRows > 1 && (\n {\n remove(row.index);\n }}\n >\n \n \n )}\n \n );\n },\n }),\n ],\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [uiCurrency.sym, control, setValue, register, costColumn, listingNotesMap]\n );\n\n return columnConfigs;\n};\n","import styled from 'styled-components';\n\nexport const VerticalDivider = styled.div`\n border-right: 2px solid ${(props) => props.theme.colors.borderPrimary};\n width: 1px;\n height: 34px;\n`;\n","import { ComponentProps, useEffect, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { VerticalDivider } from 'src/components/Listings/ListingsCarousel/ListingsCarousel.styled';\nimport { Content } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { Ticket } from 'src/WebApiController';\n\nimport * as styles from '../TicketGroupInputTable/TicketGroupInputTable.css';\ntype SeatRangeInputModalProps = ComponentProps & {\n onOkay: () => void;\n onCancel: () => void;\n rowIndex: number | null;\n};\n\nexport const SeatRangeInputModal = ({\n rowIndex,\n onCancel,\n onClosed,\n ...rest\n}: SeatRangeInputModalProps) => {\n const { setValue, getValues, clearErrors } =\n useFormContext();\n const ticketRow = getValues(`ticketGroups.${rowIndex || 0}`);\n const qty = ticketRow?.numberOfTickets?.value;\n\n const [localTickets, setLocalTickets] = useState(\n ticketRow.tickets?.value || []\n );\n\n useEffect(() => {\n return () => {\n setLocalTickets(null);\n };\n }, []);\n\n useEffect(() => {\n if (rowIndex !== null) {\n if (ticketRow) {\n setLocalTickets(ticketRow.tickets?.value || []);\n }\n } else {\n setLocalTickets(null);\n }\n }, [rowIndex, qty, ticketRow]);\n\n const errorMessage = useMemo(() => {\n const seatSet = new Set();\n let hasFilledSeat = false;\n let hasMissingSeat = false;\n for (const t of localTickets || []) {\n if (t.seat) {\n hasFilledSeat = true;\n if (seatSet.has(t.seat)) {\n return 'Duplicate seats are not allowed';\n }\n seatSet.add(t.seat);\n } else {\n hasMissingSeat = true;\n }\n }\n\n if (hasFilledSeat && hasMissingSeat) {\n return 'Please fill in all the seats';\n }\n return null;\n }, [localTickets]);\n\n const isDisabled = Boolean(errorMessage);\n\n const handleSeatChange = (index: number, value: string) => {\n if (localTickets) {\n const updatedTickets = [...localTickets];\n updatedTickets[index].seat = value;\n setLocalTickets(updatedTickets);\n }\n };\n\n if (!localTickets || !qty) {\n return null;\n }\n\n const formattedValue = localTickets\n ? localTickets.length >= 1\n ? `${localTickets[0].seat || ''} - ${\n localTickets[localTickets.length - 1].seat || ''\n }`\n : ''\n : '';\n\n const SeatRangeInfo = (\n \n \n \n \n {ticketRow?.section?.value}\n \n
    \n \n
    \n
    \n \n \n \n {ticketRow?.row?.value}\n \n
    \n \n
    \n
    \n \n\n \n \n {ticketRow?.numberOfTickets?.value}\n \n
    \n \n
    \n
    \n \n\n \n \n {formattedValue}\n \n
    \n \n
    \n
    \n \n \n );\n\n const footer = (\n \n {\n const tempTickets = [...localTickets];\n tempTickets?.forEach((t) => {\n t.seat = '';\n });\n setLocalTickets(tempTickets);\n }}\n >\n \n \n {\n if (rowIndex == null) {\n return;\n }\n setValue(\n `ticketGroups.${rowIndex}.tickets`,\n posChangedField(localTickets)\n );\n setLocalTickets(null);\n clearErrors(`ticketGroups.${rowIndex}.tickets`);\n onCancel();\n }}\n disabled={isDisabled}\n >\n \n \n \n );\n\n return (\n }\n footer={footer}\n onCancel={() => {\n onClosed?.();\n }}\n onClosed={onClosed}\n >\n {SeatRangeInfo}\n {errorMessage && (\n
    \n {errorMessage}\n
    \n )}\n \n \n \n \n
    \n \n
    \n \n {localTickets?.map((t, i) => {\n return (\n \n
    {i + 1}
    \n handleSeatChange(i, e.target.value.trim())}\n />\n \n );\n })}\n \n );\n};\n","import { useState } from 'react';\nimport { UseFieldArrayAppend, useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext/Content';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { newBigIntId } from 'src/utils/idUtils';\nimport { posChangedField, posField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { DeliveryType } from 'src/WebApiController';\n\nimport * as styles from './TicketGroupInputTable.css';\n\nexport const TicketGroupInputTableFooter = ({\n append,\n}: {\n append: UseFieldArrayAppend;\n}) => {\n const { getValues } = useFormContext();\n\n const [numOfAddRows, setNumOfAddRows] = useState(3);\n\n return (\n
    \n setNumOfAddRows(Number(e.target.value))}\n />\n {\n const { ticketGroups } = getValues();\n const newRows = Array.from({ length: numOfAddRows }, (_, index) => {\n const id = newBigIntId() + index;\n return {\n ...ticketGroups[0],\n ticketGroupId: id,\n section: posChangedField(''),\n sectionId: posChangedField(null),\n row: posChangedField(null),\n listingNotes: posChangedField(null),\n numberOfTickets: posChangedField(null),\n tickets: posChangedField(null),\n unitCost: posChangedField(null),\n totalCost: posChangedField(null),\n faceValueCost: posField(null),\n expectedValue: posChangedField(null),\n deliveryType: posChangedField(DeliveryType.InApp),\n };\n });\n\n append(newRows);\n }}\n style={{ fontSize: vars.typography.fontSize.base }}\n >\n \n \n
    \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox/Checkbox';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './TicketGroupInputTable.css';\n\nexport const TicketGroupInputTableHeader = ({\n isTotalCostChecked,\n setIsTotalCostChecked,\n}: {\n isTotalCostChecked: boolean;\n setIsTotalCostChecked: (value: React.SetStateAction) => void;\n}) => {\n return (\n
    \n \n
    \n {\n setIsTotalCostChecked((prev) => !prev);\n }}\n className={styles.headerCheckbox}\n />\n Add Total Costs\n
    \n
    \n );\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { UseFieldArrayReturn, useForm, useFormContext } from 'react-hook-form';\nimport { useDeliveryOverrideForNewTicketGroup } from 'src/hooks/api/useDeliveryOverrideForNewTicketGroup';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { SpreadsheetTable } from 'src/tables/SpreadsheetTable/SpreadsheetTable';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getInHandDateBasedOnEvent } from 'src/utils/eventWithDataUtils';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { ListingNote } from 'src/WebApiController';\n\nimport { PurchaseOrderInfoForTicketGroupInput } from '../../PurchaseTicketsFlow/TicketGroupInput.types';\nimport { useTicketGroupInputTableColumns } from './hooks/useTicketGroupInputTableColumns';\nimport { SeatRangeInputModal } from './SeatRangeInputModal';\nimport * as styles from './TicketGroupInputTable.css';\nimport { TicketGroupInputTableFooter } from './TicketGroupInputTableFooter';\nimport { TicketGroupInputTableHeader } from './TicketGroupInputTableHeader';\n\nexport const TicketGroupInputTable = ({\n purchaseTicketGroupInputField,\n valueOptionsContent,\n listingNotesMap,\n purchaseOrderInfo,\n}: {\n purchaseTicketGroupInputField: UseFieldArrayReturn<\n PurchaseTicketsInput,\n 'ticketGroups',\n 'id'\n >;\n valueOptionsContent: Record;\n listingNotesMap?: Record | null;\n purchaseOrderInfo: PurchaseOrderInfoForTicketGroupInput | null | undefined;\n}) => {\n const [isTotalCostChecked, setIsTotalCostChecked] = useState(false);\n const [selectedSeatRangeRowIndex, setSelectedSeatRangeRowIndex] = useState<\n number | null\n >(null);\n\n const { fields, append } = purchaseTicketGroupInputField;\n const { setValue, getValues, getFieldState, formState } =\n useFormContext();\n const seatRangeDialog = useBasicDialog();\n\n const launchSeatRangeDialog = useCallback((rowIndex: number) => {\n setSelectedSeatRangeRowIndex(rowIndex);\n seatRangeDialog.launchDialog();\n }, []);\n\n const ticketGroupColumnConfigs = useTicketGroupInputTableColumns({\n isTotalCostChecked,\n purchaseTicketGroupInputField,\n valueOptionsContent,\n listingNotesMap,\n launchSeatRangeDialog: launchSeatRangeDialog,\n });\n\n const options = {\n data: fields,\n columns: ticketGroupColumnConfigs,\n };\n\n const {\n isLoading: deliveryOverrideDefaultIsLoading,\n hasDefaultValues: hasDeliveryOverrideValues,\n deliveryTypeDefault,\n ticketTypeRulesDefault,\n inHandAtDefault,\n } = useDeliveryOverrideForNewTicketGroup(\n fields[0].event?.viagId,\n purchaseOrderInfo?.vendor?.id,\n purchaseOrderInfo?.vendAcc?.id,\n true, // isManual\n fields[0].ticketGroupId > 0 /* disabled if not new ticket group */\n );\n\n // Used for setting value when the default value is loaded\n useEffect(() => {\n if (!deliveryOverrideDefaultIsLoading) {\n fields.forEach((_, number) => {\n const inHandAt = getValues(`ticketGroups.${number}.inHandDate.value`);\n const delivType = getValues(\n `ticketGroups.${number}.deliveryType.value`\n );\n const desiredDelivType = deliveryTypeDefault ?? delivType;\n const ticketTypeOverrideField = getValues(\n `ticketGroups.${number}.ticketTypeRules`\n );\n if (deliveryTypeDefault && delivType !== deliveryTypeDefault) {\n setValue(\n `ticketGroups.${number}.deliveryType`,\n posChangedField(deliveryTypeDefault)\n );\n }\n\n if (inHandAtDefault && inHandAt !== inHandAtDefault) {\n setValue(\n `ticketGroups.${number}.inHandDate`,\n posChangedField(inHandAtDefault)\n );\n }\n\n if (ticketTypeRulesDefault) {\n setValue(`ticketGroups.${number}.ticketTypeRules`, {\n overrides: ticketTypeRulesDefault.overrides.filter(\n (o) => o.deliveryType === desiredDelivType\n ),\n });\n }\n });\n }\n }, [\n fields,\n deliveryOverrideDefaultIsLoading,\n deliveryTypeDefault,\n getValues,\n inHandAtDefault,\n setValue,\n ticketTypeRulesDefault,\n ]);\n\n useEffect(() => {\n const daysBeforeEvent = getValues('daysBeforeEvent');\n fields.forEach((tg, number) => {\n const inHandAt = getValues(`ticketGroups.${number}.inHandDate.value`);\n\n if (!inHandAt && tg.event?.dates?.start) {\n const inHandDate = getInHandDateBasedOnEvent(tg.event, daysBeforeEvent);\n setValue(\n `ticketGroups.${number}.inHandDate`,\n posChangedField(inHandDate)\n );\n }\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fields]);\n\n return (\n
    \n \n \n {seatRangeDialog.dialogProps.isOpen && (\n \n )}\n \n
    \n );\n};\n","import { isEqual } from 'lodash-es';\nimport React, { useCallback, useEffect } from 'react';\nimport {\n FormProvider,\n useFieldArray,\n UseFieldArrayReturn,\n useForm,\n useFormContext,\n} from 'react-hook-form';\nimport { useContent } from 'src/contexts/ContentContext';\nimport {\n EventMapContextProvider,\n useEventMapContext,\n} from 'src/contexts/EventMapContext';\nimport { vars } from 'src/core/themes';\nimport { PurchaseWizardFooter, WizardFooter } from 'src/modals/common/Purchase';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getInHandDateBasedOnEvent } from 'src/utils/eventWithDataUtils';\nimport { newBigIntId } from 'src/utils/idUtils';\nimport { posChangedField, posField } from 'src/utils/posFieldUtils';\nimport {\n PurchaseTicketsInput,\n validateTicketGroups,\n} from 'src/utils/purchaseUtils';\nimport {\n DeliveryType,\n EventListingConstraints,\n ListingNote,\n SectionInfo,\n TicketGroupInput,\n} from 'src/WebApiController';\n\nimport { PurchaseOrderInfoForTicketGroupInput } from '../PurchaseTicketsFlow/TicketGroupInput.types';\nimport { PurchaseTicketGroupHeader } from './PurchaseTicketGroupHeader';\nimport * as styles from './PurchaseTicketGroupPage.css';\nimport { PurchaseTicketGroupPageAdditionalInput } from './PurchaseTicketGroupPageAdditionalInput';\nimport { PurchaseTicketGroupVenueMap } from './PurchaseTicketGroupVenueMap';\nimport { useTicketGroupListingNotes } from './TicketGroupInputTable/hooks/useTicketGroupListingNotes';\nimport { TicketGroupInputTable } from './TicketGroupInputTable/TicketGroupInputTable';\n\nconst PurchaseTicketGroupPage = ({\n ticketGroups,\n listingConstraints,\n purchaseOrderInfo,\n onSubmitWrapper,\n startIndex,\n onNextFromTicketGroupInputStep,\n isSingleInputModeForMultiEvent,\n currentGroupIndex,\n currentGroupTicketsCount,\n onPrevFromTicketGroupInputStep,\n showPredeliverySection,\n}: {\n ticketGroups: TicketGroupInput[];\n listingConstraints?: EventListingConstraints | null;\n onSubmitWrapper: () => void;\n purchaseOrderInfo: PurchaseOrderInfoForTicketGroupInput | null | undefined;\n startIndex: number;\n onNextFromTicketGroupInputStep: (tgs: TicketGroupInput[]) => void;\n isSingleInputModeForMultiEvent?: boolean;\n currentGroupIndex: number;\n currentGroupTicketsCount: number;\n onPrevFromTicketGroupInputStep: () => void;\n showPredeliverySection: boolean;\n}) => {\n const { valueOptionsContent, listingNotesMap } = useTicketGroupListingNotes({\n listingConstraints,\n });\n\n const methods = useForm({\n defaultValues: {\n ticketGroups,\n },\n });\n\n const purchaseTicketGroupInputField = useFieldArray({\n control: methods.control,\n name: 'ticketGroups',\n });\n\n useEffect(() => {\n methods.reset({ ticketGroups });\n }, [methods, ticketGroups]);\n\n return (\n \n \n
    \n \n
    \n
    \n \n );\n};\n\nconst PurchaseTicketGroupPageInternal = ({\n ticketGroups,\n listingNotesMap,\n valueOptionsContent,\n purchaseTicketGroupInputField,\n purchaseOrderInfo,\n onSubmitWrapper,\n startIndex,\n onNextFromTicketGroupInputStep,\n isSingleInputModeForMultiEvent,\n currentGroupIndex,\n currentGroupTicketsCount,\n onPrevFromTicketGroupInputStep,\n showPredeliverySection,\n}: {\n ticketGroups: TicketGroupInput[];\n valueOptionsContent: Record;\n listingNotesMap?: Record;\n purchaseTicketGroupInputField: UseFieldArrayReturn<\n PurchaseTicketsInput,\n 'ticketGroups',\n 'id'\n >;\n purchaseOrderInfo: PurchaseOrderInfoForTicketGroupInput | null | undefined;\n onSubmitWrapper: () => void;\n startIndex: number;\n onNextFromTicketGroupInputStep: (tgs: TicketGroupInput[]) => void;\n isSingleInputModeForMultiEvent?: boolean;\n currentGroupIndex: number;\n currentGroupTicketsCount: number;\n onPrevFromTicketGroupInputStep: () => void;\n showPredeliverySection: boolean;\n}) => {\n const { venueMapInfo } = useEventMapContext();\n const methods = useFormContext();\n const requiredMsg = useContent(ContentId.Required);\n const duplicateSeatMsg = useContent(ContentId.DuplicateSeat);\n const eventRequiredMsg = useContent(ContentId.SearchAndSelectAnEvent);\n const inHandDateMustBeforeEventDateMsg = useContent(\n ContentId.InHandDateMustBeBeforeEventDate\n );\n const autoBroadcastRequireFaceValueMsg = useContent(\n ContentId.AutoBroadcastRequiredFaceValue\n );\n\n const onNext = useCallback(() => {\n const formTicketGroups = methods.getValues().ticketGroups;\n formTicketGroups.forEach((tg, number) => {\n const inHandAt = methods.getValues(\n `ticketGroups.${number}.inHandDate.value`\n );\n const daysBeforeEvent = methods.getValues('daysBeforeEvent');\n\n if (!inHandAt && tg.event?.dates?.start) {\n const inHandDate = getInHandDateBasedOnEvent(tg.event, daysBeforeEvent);\n\n methods.setValue(\n `ticketGroups.${number}.inHandDate`,\n posChangedField(inHandDate)\n );\n }\n });\n const isValidTgs = validateTicketGroups(\n true,\n methods.clearErrors,\n methods.setError,\n formTicketGroups,\n requiredMsg,\n duplicateSeatMsg,\n inHandDateMustBeforeEventDateMsg,\n autoBroadcastRequireFaceValueMsg,\n true\n );\n if (!isValidTgs) {\n return;\n }\n onNextFromTicketGroupInputStep(formTicketGroups);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [methods, onNextFromTicketGroupInputStep]);\n\n const onSectionClicked = useCallback(\n (e: MouseEvent, sectionInfo: SectionInfo) => {\n const sectionId = sectionInfo.id;\n if (!venueMapInfo) {\n return;\n }\n const section = venueMapInfo.sections.find(\n (section) => section.id === sectionId\n );\n\n purchaseTicketGroupInputField.append({\n ...ticketGroups[0],\n tickets: posField(null),\n ticketGroupId: newBigIntId(),\n section: posField(section?.name || ''),\n sectionId: posField(sectionId),\n row: posField(null),\n listingNotes: posField(null),\n numberOfTickets: posField(null),\n unitCost: posField(null),\n totalCost: posField(null),\n faceValueCost: posField(null),\n expectedValue: posField(null),\n deliveryType: posField(DeliveryType.InApp),\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [venueMapInfo, purchaseTicketGroupInputField]\n );\n\n return (\n <>\n \n
    \n \n
    \n \n \n \n \n );\n};\n\nexport default React.memo(PurchaseTicketGroupPage);\n","import {\n DocumentPage,\n DocumentUploadInfo,\n Ticket,\n UserDocument,\n UserDocumentLinks,\n} from 'src/WebApiController';\n\nexport type ETicketsForm = {\n ticketAssignments: UserDocumentLinks[];\n};\n\nexport type DocumentFileUploadInfo = {\n file?: File;\n uploadInfo?: DocumentUploadInfo;\n pages?: DocumentPage[];\n};\n\nexport const getDocumentPageUniqueId = (ep: DocumentPage) =>\n `${ep.id}-${ep.documentId}`;\nexport const getETicketDocumentPageUniqueId = (ep: UserDocument) =>\n `${ep.pageId}-${ep.documentId}`;\n\nexport const getDocumentPagesMap = (docUploadInfos: DocumentFileUploadInfo[]) =>\n docUploadInfos\n .flatMap((x) => x.pages || [])\n .filter((ep) => ep)\n .reduce(\n (prev, cur) => {\n prev[getDocumentPageUniqueId(cur)] = cur;\n return prev;\n },\n {} as { [docPageUniqueId: string]: DocumentPage }\n );\n\nexport const getDocumentPageIdToTicketMap = (\n ticketAssignments: UserDocument[],\n tickets: Ticket[]\n) =>\n ticketAssignments.reduce(\n (prev, cur) => {\n const index = tickets.findIndex((t) => t.id === cur.entityId);\n prev[getETicketDocumentPageUniqueId(cur)] = {\n ticketIndex: index,\n ticket: tickets[index],\n };\n return prev;\n },\n {} as {\n [docPageUniqueId: string]: { ticketIndex: number; ticket: Ticket };\n }\n );\n","import { useQuery } from '@tanstack/react-query';\nimport { ComponentProps, ReactNode, useCallback, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ApiException,\n DocumentProcessorClient,\n DocumentType,\n DocumentUploadInfo,\n FileParameter,\n PosClientConfig,\n PosUiActionResult,\n TicketType,\n UserDocument,\n UserDocumentLinks,\n} from 'src/WebApiController';\n\nimport { DocumentFileUploadInfo, ETicketsForm } from './UploadETickets.utils';\n\nexport type UploadETicketFormProps = {\n entityWithTickets: Pick<\n EntityWithRealTickets,\n 'viagVirtualId' | 'id' | 'ticketCnt' | 'tickets' | 'seating' | 'entityType'\n >;\n renderContent: (\n eTicketUploadInfos: DocumentFileUploadInfo[],\n setETicketUploadInfos: (infos: DocumentFileUploadInfo[]) => void,\n onNext: () => void,\n onCancel: () => void,\n onBack: () => void,\n isFinalPreview: boolean,\n disabled?: boolean\n ) => ReactNode;\n onComplete: (isCancelled: boolean) => void;\n onUploadDocuments: (\n client: DocumentProcessorClient,\n docUploadInfo: DocumentUploadInfo,\n file: FileParameter\n ) => Promise;\n onUploadETickets: (\n posClientConfig: PosClientConfig,\n entityId: number,\n ticketAssignments: UserDocumentLinks[]\n ) => Promise;\n ticketType: TicketType.ETicket | TicketType.QRCode;\n};\n\nexport const UploadETicketForm = (props: UploadETicketFormProps) => {\n const methods = useForm({\n defaultValues: {\n ticketAssignments: props.entityWithTickets.tickets.map(\n (t) =>\n ({\n entityId: t.id,\n pageId:\n (props.ticketType === TicketType.ETicket\n ? t.eTicket?.pageId\n : t.qrCode?.pageId) ?? '',\n documentId:\n (props.ticketType === TicketType.ETicket\n ? t.eTicket?.documentId\n : t.qrCode?.documentId) ?? '',\n pageNumber:\n (props.ticketType === TicketType.ETicket\n ? t.eTicket?.pageNumber\n : t.qrCode?.pageNumber) ?? '',\n pageUri:\n (props.ticketType === TicketType.ETicket\n ? t.eTicket?.pageUri\n : t.qrCode?.pageUri) ?? '',\n documentUri:\n (props.ticketType === TicketType.ETicket\n ? t.eTicket?.documentUri\n : t.qrCode?.documentUri) ?? '',\n documentType:\n props.ticketType === TicketType.ETicket\n ? (t.eTicket?.documentType ?? DocumentType.ETicket)\n : (t.qrCode?.documentType ?? DocumentType.QRCode),\n }) as UserDocument\n ),\n },\n });\n return (\n \n \n \n );\n};\n\nconst UploadETicketsContent = ({\n entityWithTickets,\n ticketType,\n renderContent,\n onComplete,\n onUploadDocuments,\n onUploadETickets,\n setError,\n clearErrors,\n watch,\n handleSubmit,\n}: UploadETicketFormProps &\n Omit<\n ComponentProps>,\n 'children'\n >) => {\n const [eTicketUploadInfos, setETicketUploadInfos] = useState<\n DocumentFileUploadInfo[]\n >([]);\n const [isLoading, setIsLoading] = useState(false);\n const [isFinalPreview, setIsFinalPreview] = useState(false);\n const { showErrorDialog, genericError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const watchTickets = watch('ticketAssignments'); // you can supply default value as second argument\n\n const getIncompleteUploadInfos = (infos?: DocumentFileUploadInfo[]) =>\n infos?.filter(\n (f) => f.file && f.uploadInfo && (!f.pages || f.pages.length === 0)\n ) || [];\n\n const requiredMsg = useContent(ContentId.Required);\n\n const query = useQuery({\n queryKey: [\n 'pollingForETicketUploadFiles',\n eTicketUploadInfos.map((ui) => ui.file?.name || '').toSorted(),\n ],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n setIsLoading(true);\n\n const client = new DocumentProcessorClient(activeAccountWebClientConfig);\n let infoChanged = false;\n\n const results = eTicketUploadInfos.map(async (f) => {\n if (f.pages && f.pages.length > 0) {\n return f; // We already gotten data for this or doesn't have upload info yet, just return\n }\n\n if (f.file) {\n // If we don't have upload info yet, get it, and upload the file\n if (!f.uploadInfo) {\n // The upload has been deleted and needing to be re-upload\n const uploadInfo = await client.getDocumentUploadInfo(\n entityWithTickets.id,\n ticketType === TicketType.ETicket\n ? DocumentType.ETicket\n : DocumentType.QRCode,\n f.file.type\n );\n\n await onUploadDocuments(client, uploadInfo, {\n data: f.file,\n fileName: f.file.name,\n });\n\n f.uploadInfo = uploadInfo;\n infoChanged = true;\n } else {\n // if we do have upload info, we want to query for the pages\n // but we do not want to do this immediately after the upload, hence, this is an else\n // meaning another refresh cycle has ran in useQuery\n const eTicketPages = await client.getDocumentPages(\n f.uploadInfo.entityId,\n f.uploadInfo.entityType,\n f.uploadInfo.documentType,\n f.uploadInfo.blobName,\n f.uploadInfo.documentId,\n f.uploadInfo.contentType\n );\n\n infoChanged = true;\n return { ...f, pages: eTicketPages } as DocumentFileUploadInfo;\n }\n }\n\n return f;\n });\n\n let allResults = await Promise.all(results);\n\n const fileWithNoPages = getIncompleteUploadInfos(allResults);\n const isAllLoaded = fileWithNoPages.length === 0;\n if (isAllLoaded) {\n setIsLoading(false);\n }\n\n const emptyEntries = allResults.filter(\n (u) =>\n u.file === undefined &&\n u.uploadInfo === undefined &&\n u.pages === undefined\n );\n if (emptyEntries.length !== 1) {\n const nonEmptyEntries = allResults.filter(\n (u) =>\n !(\n u.file === undefined &&\n u.uploadInfo === undefined &&\n u.pages === undefined\n )\n );\n // Always ensure there's an extra empty-upload-info\n // This allow the seat-assignment to add additional files\n nonEmptyEntries.push({\n file: undefined,\n uploadInfo: undefined,\n pages: undefined,\n } as DocumentFileUploadInfo);\n\n allResults = nonEmptyEntries;\n infoChanged = true;\n }\n\n if (infoChanged) {\n setETicketUploadInfos(allResults);\n }\n return allResults;\n },\n\n staleTime: Infinity, // We don't want useQuery to auto-refresh base on stale, we control our own refetch\n gcTime: 0, // we don't want to cache this data\n refetchOnWindowFocus: false,\n networkMode: 'offlineFirst',\n refetchInterval: () => {\n if (!eTicketUploadInfos) {\n return 1000;\n }\n const fileWithNoPages = getIncompleteUploadInfos(eTicketUploadInfos);\n return fileWithNoPages.length > 0 ? 1000 : false; // keep on refreshing until all files in prev (uploadInfos) has pages\n },\n meta: {\n persist: false, // we do not want this thing persisted between sessions\n },\n });\n\n if (query.failureReason) {\n showErrorDialog(\n 'DocumentProcessorClient.pollingForETicketUploadFiles',\n { message: query.failureReason.message },\n {\n trackErrorData: {\n eTicketUploadInfos,\n },\n }\n );\n }\n\n const validateTicketAssignment = useCallback(\n (t: UserDocument, index: number) => {\n if (!t.documentId || !t.pageId) {\n setError(\n `ticketAssignments.${index}`,\n {\n message: requiredMsg,\n },\n { shouldFocus: true }\n );\n\n return false;\n } else {\n clearErrors(`ticketAssignments.${index}`);\n\n return true;\n }\n },\n [clearErrors, requiredMsg, setError]\n );\n\n const onNext = useCallback(async () => {\n if (!isLoading) {\n if (!isFinalPreview) {\n // Validate first\n watchTickets.forEach((t, i) => {\n validateTicketAssignment(t, i);\n });\n\n if (watchTickets.filter((t) => t.pageId === '').length === 0) {\n // If we get to here, we're ready to preview the assigned tickets to the seats\n setIsFinalPreview(true);\n }\n }\n }\n }, [isFinalPreview, isLoading, validateTicketAssignment, watchTickets]);\n\n const onSubmit = useCallback(\n async ({ ticketAssignments }: ETicketsForm) => {\n // Validate first\n let isValid = true;\n ticketAssignments.forEach((t, i) => {\n isValid = isValid && validateTicketAssignment(t, i);\n });\n\n if (!isValid) {\n return;\n }\n\n tryInvokeApi(\n async () => {\n setIsLoading(true);\n\n const result = await onUploadETickets?.(\n activeAccountWebClientConfig,\n entityWithTickets.id,\n ticketAssignments\n );\n if (!isSuccess(result)) {\n showErrorDialog(\n 'SaleClient.saveETicketAssignments',\n {\n message: result!.message ?? genericError,\n status: result!.status!,\n } as ApiException,\n {\n onDismissError: () => onComplete(true),\n trackErrorData: {\n entityId: entityWithTickets.id,\n ticketAssignments,\n },\n }\n );\n } else {\n onComplete(false);\n }\n },\n (error) => {\n showErrorDialog('SaleClient.saveETicketAssignments', error, {\n trackErrorData: {\n entityId: entityWithTickets.id,\n ticketAssignments,\n },\n });\n },\n () => setIsLoading(false)\n );\n },\n [\n validateTicketAssignment,\n onUploadETickets,\n activeAccountWebClientConfig,\n entityWithTickets.id,\n showErrorDialog,\n genericError,\n onComplete,\n ]\n );\n\n const onUploadClick = useCallback(async () => {\n handleSubmit(onSubmit)();\n }, [handleSubmit, onSubmit]);\n\n const onCancel = () => {\n setETicketUploadInfos([]);\n setIsLoading(false);\n setIsFinalPreview(false);\n\n onComplete(true);\n };\n\n return renderContent(\n query.data || eTicketUploadInfos,\n setETicketUploadInfos,\n isFinalPreview ? onUploadClick : onNext,\n onCancel,\n () => (isFinalPreview ? setIsFinalPreview(false) : onCancel()),\n isFinalPreview,\n isLoading\n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const UploadETicketsInstructions = styled.p`\n color: ${(props) => props.theme.colors.textPrimary};\n`;\n\nexport const UploadETicketsSubInstructions = styled.p`\n color: ${(props) => props.theme.colors.textPrimary};\n font-size: ${() => vars.typography.fontSize['sm']};\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nexport const UploadETicketsThumbnailContainer = styled.div`\n min-width: 200px;\n margin-inline-end: ${() => vars.spacing.sm};\n height: calc(100% - ${() => vars.spacing.xl});\n overflow-y: auto;\n\n .draggable-page {\n padding: ${() => vars.spacing.xl};\n &:hover {\n background-color: ${(props) => props.theme.colors.backgroundSecondary};\n }\n }\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n margin-inline-end: ${vars.spacing.lg};\n `\n )}`}\n`;\n\nexport const UploadETicketsThumbnailLoader = styled.div`\n border: 1px solid ${(props) => props.theme.colors.borderPrimary};\n padding: ${() => vars.spacing.lg};\n &:not(:last-child) {\n margin-bottom: ${() => vars.spacing.lg};\n }\n`;\n\nexport const UploadETicketsThumbnailAssigned = styled.div`\n padding: ${() => vars.spacing.xl};\n &:hover {\n background-color: ${(props) => props.theme.colors.backgroundSecondary};\n }\n`;\n\nexport const UploadETicketsThumbnailAssignedMappedTo = styled.div`\n display: flex;\n div {\n margin-left: ${() => vars.spacing.sm};\n }\n`;\n\nexport const UploadETicketsSeatingContainer = styled.div`\n height: calc(100% - ${() => vars.spacing.xl});\n overflow-y: auto;\n overflow-x: hidden;\n\n .draggable-seat {\n &:hover {\n background-color: ${(props) => props.theme.colors.backgroundSecondary};\n }\n }\n`;\n\nexport const UploadETicketsSeatingPlaceholder = styled.div`\n color: ${(props) => props.theme.colors.textPrimaryHover};\n padding: ${() => vars.spacing.lg};\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n padding: ${vars.spacing['3xl']};\n `\n )}`}\n`;\n\nexport const UploadETicketsSeat = styled.div`\n height: fit-content;\n overflow: hidden;\n &:not(:last-child) {\n margin-bottom: ${() => vars.spacing.lg};\n }\n`;\n\nexport const PreviewTicket = styled.div`\n width: 100%;\n margin-bottom: ${() => `${vars.spacing.lg}`};\n`;\n\nexport const Divider = styled.hr`\n border: none;\n border-bottom: 4px dotted ${(props) => props.theme.colors.borderPrimary};\n margin: ${() => `${vars.spacing.sm} 0`};\n`;\n\nexport const SeatLabel = styled.div`\n margin-bottom: ${() => `${vars.spacing.sm}`};\n`;\n","import styled from 'styled-components/macro';\n\nexport const ErrorMessage = styled.div`\n color: ${(props) => props.theme.colors.textNegative};\n`;\n","import '@react-pdf-viewer/core/lib/styles/index.css';\nimport '@react-pdf-viewer/toolbar/lib/styles/index.css';\n\nimport { Viewer } from '@react-pdf-viewer/core';\nimport { getFilePlugin, RenderDownloadProps } from '@react-pdf-viewer/get-file';\nimport { SelectionMode } from '@react-pdf-viewer/selection-mode';\nimport type {\n ToolbarSlot,\n TransformToolbarSlot,\n} from '@react-pdf-viewer/toolbar';\nimport { toolbarPlugin } from '@react-pdf-viewer/toolbar';\nimport clsx from 'clsx';\nimport {\n ComponentProps,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { GlassMagnifier } from 'react-image-magnifiers';\nimport { IconButton } from 'src/components/Buttons';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { DownloadIcon } from 'src/svgs/Viagogo';\nimport {\n ActionOutboxEntityType,\n ActivityLogClient,\n DocumentType,\n Feature,\n} from 'src/WebApiController';\nimport { ThemeContext } from 'styled-components';\n\nimport * as styles from './ImageMagnifier.css';\nimport { viewerWrapper } from './ImageMagnifier.css';\n\nexport type ImageMagnifierProps = {\n trackingEntityType?: ActionOutboxEntityType;\n trackingEntityId?: number | null;\n trackingDocumentId?: string;\n trackingDocumentType?: DocumentType;\n pdfViewerClassnames?: string;\n toolbarSlot?: Partial;\n} & ComponentProps;\n\n/**\n * Documentation of all props: https://github.com/AdamRisberg/react-image-magnifiers\n * Simple wrapper to provide some defaults for PoS usage.\n * `imageSrc` is most likely the only prop that will need to be provided.\n *\n * Future:\n * - Handle mobile detection\n * - set different values (X and Y offset, mag size, etc)\n * - or diff experience leveraging `Magnifier` or to open in a new window\n */\nexport const ImageMagnifier = ({\n magnifierSize = '20%',\n magnifierBorderColor,\n allowOverflow = true,\n imageSrc,\n trackingEntityType,\n trackingEntityId,\n trackingDocumentId,\n trackingDocumentType,\n pdfViewerClassnames,\n toolbarSlot,\n ...rest\n}: ImageMagnifierProps) => {\n const isMobile = useMatchMedia('mobile');\n const theme = useContext(ThemeContext);\n const { isDarkMode } = useSiteTheme();\n const [displayAsEmbed, setDisplayAsEmbed] = useState(false);\n const { activeAccountWebClientConfig } = useAppContext();\n\n const hasPdfViewerToolbarFeature = useUserHasFeature(\n Feature.PdfViewerToolbar\n );\n\n const getFilePluginInstance = getFilePlugin();\n const { Download } = getFilePluginInstance;\n\n const toolbarPluginInstance = toolbarPlugin({\n selectionModePlugin: {\n selectionMode: SelectionMode.Hand,\n },\n });\n const { renderDefaultToolbar, Toolbar } = toolbarPluginInstance;\n\n const shouldTrackDocumentEntityAction = useMemo(() => {\n return (\n trackingEntityType === ActionOutboxEntityType.Listing &&\n trackingEntityId &&\n trackingDocumentId &&\n trackingDocumentType\n );\n }, [\n trackingDocumentId,\n trackingDocumentType,\n trackingEntityId,\n trackingEntityType,\n ]);\n\n useEffect(() => {\n if (shouldTrackDocumentEntityAction && trackingEntityId) {\n new ActivityLogClient(\n activeAccountWebClientConfig\n ).trackListingDocumentView(\n trackingEntityId,\n trackingDocumentId,\n trackingDocumentType\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [shouldTrackDocumentEntityAction]);\n\n const trackDownload = useCallback(() => {\n if (shouldTrackDocumentEntityAction && trackingEntityId) {\n new ActivityLogClient(\n activeAccountWebClientConfig\n ).trackListingDocumentDownload(\n trackingEntityId,\n trackingDocumentId,\n trackingDocumentType\n );\n }\n }, [\n activeAccountWebClientConfig,\n shouldTrackDocumentEntityAction,\n trackingDocumentId,\n trackingDocumentType,\n trackingEntityId,\n ]);\n\n const transform: TransformToolbarSlot = (slot: ToolbarSlot) => ({\n ...slot,\n // These slots will be empty\n Download: () => (\n \n {(props: RenderDownloadProps) => (\n }\n onClick={() => {\n trackDownload();\n props.onClick();\n }}\n />\n )}\n \n ),\n Open: () => <>,\n Print: () => <>,\n SwitchTheme: () => <>,\n EnterFullScreen: () => <>,\n ShowPropertiesMenuItem: () => <>, // Important to hide this as it will show the file name\n ShowProperties: () => <>, // Important to hide this as it will show the file name\n ...toolbarSlot,\n });\n\n return (\n <>\n {/* due to some ticket URL is pure PDF (not images extracted from pdf) - the ImageMagnifier won't work but we have no way of knowing\n therefore we use an img to test the waters, but actually not displaying it, if we get an error, then use embed istead */}\n {\n setDisplayAsEmbed(true);\n }}\n />\n {!displayAsEmbed ? (\n \n ) : (\n \n \n {hasPdfViewerToolbarFeature ? (\n {renderDefaultToolbar(transform)}\n ) : (\n \n {(props: RenderDownloadProps) => (\n }\n onClick={() => {\n trackDownload();\n props.onClick();\n }}\n />\n )}\n \n )}\n \n
    \n \n
    \n \n )}\n \n );\n};\n","import { HTMLProps, useEffect, useRef } from 'react';\nimport { useDrag } from 'react-dnd';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\n\nimport { PosCustomDragData } from './PosCustomDragLayer';\nimport * as styles from './PosDragNDrop.css';\n\nexport const DraggableSource = 'DnDDraggable';\n\nexport function PosDraggable({\n draggableData,\n previewDragData,\n children,\n hideElementWhileDragging,\n draggableSource,\n ...rest\n}: {\n draggableData: T;\n previewDragData?: PosCustomDragData;\n hideElementWhileDragging?: boolean;\n draggableSource?: string;\n} & Omit, 'ref' | 'as'>) {\n const dragContainerRef = useRef(null);\n\n const [{ isDragging }, dragRef, dragPreview] = useDrag(\n () => ({\n type: draggableSource || DraggableSource,\n item: () => {\n document.body.classList.add('dragging');\n return {\n data: { ...draggableData, pageRef: dragContainerRef },\n dragData: previewDragData,\n };\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n handlerId: monitor.getHandlerId(),\n }),\n end: () => document.body.classList.remove('dragging'),\n }),\n [draggableSource, previewDragData, draggableData, dragContainerRef]\n );\n\n useEffect(() => {\n dragPreview(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreview]);\n\n dragRef(dragContainerRef);\n\n return (\n \n {children}\n \n );\n}\n","export default \"__VITE_ASSET__5595ea01__\"","export default \"__VITE_ASSET__2764187a__\"","import { PosDraggableIndicatorHandles } from 'src/core/POS/PosDragNDrop/PosDraggableIndicator';\nimport { vars } from 'src/core/themes';\nimport HorizontalDraghandles from 'src/images/Horizontal.png';\nimport VerticalDraghandles from 'src/images/Vertical.png';\nimport styled from 'styled-components/macro';\n\nexport const DroppableContainer = styled.div<{\n isOver: boolean;\n hideBorder?: boolean;\n}>`\n background-color: ${(props) =>\n props.isOver\n ? props.theme.colors.backgroundInteraction\n : props.theme.colors.backgroundPrimary};\n\n ${(props) =>\n !props.hideBorder\n ? `border: 1px solid ${\n props.isOver\n ? props.theme.colors.borderActive\n : props.theme.colors.borderPrimary\n }`\n : 'border: none'};\n\n height: 100%;\n`;\n\nexport const PosCustomDragLayerContainer = styled.div.attrs(\n (props: { currentOffsetX: number; currentOffsetY: number }) => ({\n style: {\n transform: `translate(${props.currentOffsetX}px, ${props.currentOffsetY}px)`,\n },\n })\n)<{ currentOffsetX: number; currentOffsetY: number }>`\n position: fixed;\n top: 0;\n left: 0;\n z-index: 100;\n pointer-events: none; // This is the key to be able to grab anywhere inside the draggable area to drag\n\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: white;\n border: 1px solid ${(props) => props.theme.colors.borderPrimary};\n`;\n\nexport const DragHandles = styled.div<\n PosDraggableIndicatorHandles & { removeHoverEffect?: boolean }\n>`\n width: 100%;\n height: 100%;\n padding: ${vars.spacing.sm} ${vars.spacing.xl} ${vars.spacing.xl};\n background-image: ${({\n rightHandle,\n bottomHandle,\n leftHandle,\n topHandle,\n }) => `\n ${topHandle ? `url(${HorizontalDraghandles})` : 'none'}, \n ${rightHandle ? `url(${VerticalDraghandles})` : 'none'},\n ${bottomHandle ? `url(${HorizontalDraghandles})` : 'none'},\n ${leftHandle ? `url(${VerticalDraghandles})` : 'none'}\n `};\n background-size:\n 20px 10px,\n 10px 20px,\n 20px 10px,\n 10px 20px;\n\n background-position:\n 50% ${vars.spacing.sm},\n calc(100% - ${vars.spacing.sm}) 50%,\n 50% calc(100% - ${vars.spacing.sm}),\n ${vars.spacing.sm} 50%;\n background-repeat: no-repeat;\n &:hover {\n background-color: ${(props) => {\n return props.removeHoverEffect\n ? 'unset'\n : `${props.theme.colors.backgroundSecondary}`;\n }};\n }\n`;\n","import { ReactNode } from 'react';\n\nimport { DragHandles } from './PosDragNDrop.styled';\n\nexport interface PosDraggableIndicatorHandles {\n topHandle?: boolean;\n rightHandle?: boolean;\n bottomHandle?: boolean;\n leftHandle?: boolean;\n}\n\ninterface PosDraggableIndicatorProps extends PosDraggableIndicatorHandles {\n children: ReactNode;\n classNames?: string;\n removeHoverEffect?: boolean;\n}\n\nexport function PosDraggableIndicator({\n children,\n topHandle = true,\n rightHandle = true,\n bottomHandle = true,\n leftHandle = true,\n classNames,\n removeHoverEffect = false,\n}: PosDraggableIndicatorProps) {\n return (\n \n {children}\n \n );\n}\n","import { clsx } from 'clsx';\nimport { HTMLProps } from 'react';\nimport { useDrop } from 'react-dnd';\n\nimport { DraggableSource } from './PosDraggable';\nimport { DroppableContainer } from './PosDragNDrop.styled';\n\nexport function PosDroppable({\n children,\n onDrop,\n hideBorder,\n className,\n onOverClassnames,\n draggableSource,\n ...rest\n}: {\n onDrop?: (item: { data: T }) => void;\n hideBorder?: boolean;\n onOverClassnames?: string;\n draggableSource?: string;\n} & Omit, 'ref' | 'as' | 'onDrop'>) {\n const [{ isOver }, dropRef] = useDrop(\n {\n accept: draggableSource || DraggableSource,\n drop: onDrop,\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n }),\n },\n [draggableSource, onDrop]\n );\n\n return (\n \n {children}\n \n );\n}\n","import { DragLayerMonitor, useDragLayer } from 'react-dnd';\n\nimport { PosCustomDragLayerContainer } from './PosDragNDrop.styled';\n\nexport type PosCustomDragData = {\n name: string | JSX.Element;\n source: string;\n width?: number;\n height?: number;\n};\n\nexport const PosCustomDragLayer = () => {\n const { item, currentOffset } = useDragLayer((monitor: DragLayerMonitor) => {\n return {\n isDragging: monitor.isDragging(),\n item: monitor.getItem() as { dragData: PosCustomDragData },\n currentOffset: monitor.getSourceClientOffset(),\n };\n });\n\n const dragData = item?.dragData;\n\n return dragData ? (\n \n
    {dragData.name}
    \n \n \n ) : null;\n};\n","import { useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { CloseButton } from 'reactstrap';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { ErrorMessage } from 'src/core/POS/ErrorMessage';\nimport { ImageMagnifier } from 'src/core/POS/ImageMagnifier';\nimport {\n PosDraggable,\n PosDraggableIndicator,\n PosDroppable,\n} from 'src/core/POS/PosDragNDrop';\nimport { PosCustomDragLayer } from 'src/core/POS/PosDragNDrop/PosCustomDragLayer';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport {\n DocumentPage,\n DocumentType,\n Ticket,\n TicketType,\n} from 'src/WebApiController';\n\nimport * as styles from '../UploadETickets.css';\nimport {\n SeatLabel,\n UploadETicketsSeat,\n UploadETicketsSeatingContainer,\n UploadETicketsSeatingPlaceholder,\n} from '../UploadETickets.styled';\nimport {\n DocumentFileUploadInfo,\n ETicketsForm,\n getDocumentPagesMap,\n getETicketDocumentPageUniqueId,\n} from '../UploadETickets.utils';\n\nexport function UploadETicketsSeatingSection({\n entityWithTickets,\n eTicketUploadInfos,\n ticketType,\n isFinalPreview,\n}: {\n entityWithTickets: Pick<\n EntityWithRealTickets,\n 'viagVirtualId' | 'id' | 'ticketCnt' | 'tickets' | 'seating' | 'entityType'\n >;\n ticketType: TicketType.ETicket | TicketType.QRCode;\n eTicketUploadInfos: DocumentFileUploadInfo[];\n isFinalPreview?: boolean;\n}) {\n const eTicketPages = getDocumentPagesMap(eTicketUploadInfos);\n const { watch, setValue, clearErrors, formState } =\n useFormContext();\n const watchTickets = watch('ticketAssignments'); // you can supply default value as second argument\n\n const onDroppingToSeat = useCallback(\n (eTicket: DocumentPage, ticket: Ticket, ticketIndex: number) => {\n setValue(`ticketAssignments.${ticketIndex}`, {\n entityId: ticket.id,\n documentId: eTicket.documentId,\n pageNumber: eTicket.pageNumber,\n pageId: eTicket.id,\n pageUri: eTicket.thumbUrl,\n documentUri: eTicket.documentUrl,\n documentType:\n ticketType === TicketType.ETicket\n ? DocumentType.ETicket\n : DocumentType.QRCode,\n });\n clearErrors(`ticketAssignments.${ticketIndex}`);\n },\n [clearErrors, setValue, ticketType]\n );\n\n const onUnmappingFromSeat = useCallback(\n (ticket: Ticket, ticketIndex: number) => {\n setValue(`ticketAssignments.${ticketIndex}`, {\n entityId: ticket.id,\n documentId: '',\n pageNumber: 0,\n pageId: '',\n pageUri: '',\n documentUri: '',\n documentType: null,\n });\n },\n [setValue]\n );\n\n return (\n
    \n
    \n \n
    \n \n {entityWithTickets.tickets.map((t, i) => {\n const assignment = watchTickets.find((wt) => wt.entityId === t.id);\n const eTicketPage =\n assignment &&\n eTicketPages[getETicketDocumentPageUniqueId(assignment)];\n\n const error = formState?.errors?.ticketAssignments?.[i]?.message;\n return (\n \n \n onDrop={(args: { data: DocumentPage }) => {\n if (eTicketPage) {\n if (\n eTicketPage.id === args.data.id &&\n eTicketPage.documentId === args.data.documentId\n ) {\n // same stuff, dont' do anything\n return;\n } else {\n // Unmap the seat first prior to setting a new one, so that the rendering can happen properly\n onUnmappingFromSeat(t, i);\n }\n }\n onDroppingToSeat(args.data, t, i);\n }}\n >\n {eTicketPage ? (\n \n ),\n source: eTicketPage.thumbUrl,\n }}\n >\n \n
    \n \n {!isFinalPreview && (\n onUnmappingFromSeat(t, i)}\n />\n )}\n
    \n \n
    \n \n ) : assignment?.pageUri ? (\n \n
    \n \n \n \n {!isFinalPreview && (\n onUnmappingFromSeat(t, i)}\n />\n )}\n
    \n \n
    \n ) : (\n <>\n \n \n \n \n \n )}\n \n {error && {error}}\n \n
    \n );\n })}\n
    \n
    \n );\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { mergeProps } from 'src/core/utils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport { TicketType } from 'src/WebApiController';\n\nimport * as styles from '../UploadETickets.css';\nimport { UploadETicketsInstructions } from '../UploadETickets.styled';\nimport { DocumentFileUploadInfo } from '../UploadETickets.utils';\nimport { UploadETicketsSeatingSection } from './UploadETicketsSeatingSection';\n\nexport const UploadETicketsFinalPreviewBody = ({\n ticketType,\n entityWithTickets,\n eTicketUploadInfos,\n className,\n}: {\n ticketType: TicketType.ETicket | TicketType.QRCode;\n entityWithTickets: Pick<\n EntityWithRealTickets,\n 'viagVirtualId' | 'id' | 'ticketCnt' | 'tickets' | 'seating' | 'entityType'\n >;\n eTicketUploadInfos: DocumentFileUploadInfo[];\n className?: string;\n}) => {\n return (\n \n \n \n \n\n
    \n \n
    \n \n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const SingleFileUploadWithPreviewContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n padding: ${() => `${vars.spacing.lg}`};\n &:not(:last-child) {\n margin-bottom: ${() => vars.spacing.lg};\n }\n\n border: 1px solid ${(props) => props.theme.colors.borderPrimary};\n`;\n\nexport const PageContainer = styled.div`\n display: flex;\n flex-direction: column;\n &:not(:last-child) {\n margin-bottom: ${() => vars.spacing.lg};\n }\n`;\n\nexport const PageImageContainer = styled.div`\n display: flex;\n flex-direction: column;\n border: 1px solid ${(props) => props.theme.colors.borderPrimary};\n padding: ${() => vars.spacing.lg};\n\n &:not(:last-child) {\n margin-bottom: ${() => vars.spacing.lg};\n }\n`;\n\nexport const UploadFailure = styled.div`\n color: ${(props) => props.theme.colors.textNegative};\n`;\n","import { CloseButton } from 'reactstrap';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { DnDFileUploader } from 'src/core/POS/DnDFileUploader';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\n\nimport { ImageMagnifier } from '../ImageMagnifier';\nimport * as styles from './SingleFileUploadWithPreview.css';\nimport {\n PageContainer,\n PageImageContainer,\n SingleFileUploadWithPreviewContainer,\n UploadFailure,\n} from './SingleFileUploadWithPreview.styled';\n\nexport const SingleFileUploadWithPreview = <\n TPage extends { pageNumber: number; thumbUrl: string },\n>({\n fileName,\n filePages = [],\n previewWidth = 'auto',\n previewHeight = 'auto',\n onFileDeleted,\n isDeletable,\n onNewFileSelected,\n acceptedFileTypes,\n renderPreview,\n multiple = false,\n hasError,\n maxFileSize,\n}: {\n fileName?: string;\n filePages: TPage[];\n previewWidth?: string | number;\n previewHeight?: string | number;\n onFileDeleted: () => void;\n isDeletable?: boolean;\n onNewFileSelected: (files: File[]) => void;\n acceptedFileTypes?: string[];\n renderPreview?: (page: TPage) => JSX.Element;\n multiple?: boolean;\n hasError?: boolean;\n maxFileSize?: number;\n}) => {\n return (\n \n {fileName && (\n
    \n
    {fileName}
    \n {((filePages?.length > 0 && isDeletable) || hasError) && (\n onFileDeleted()} />\n )}\n
    \n )}\n {hasError ? (\n \n \n \n ) : filePages.length > 0 ? (\n filePages\n .toSorted((a, b) => a.pageNumber - b.pageNumber)\n .map((fp) =>\n renderPreview ? (\n \n {renderPreview(fp)}\n \n ) : (\n \n {filePages.length > 1 && (\n
    \n \n
    \n )}\n \n
    \n )\n )\n ) : (\n
    \n \n files[0] && onNewFileSelected(multiple ? files : [files[0]])\n }\n multiple={multiple}\n acceptedFileTypes={acceptedFileTypes}\n maxFileSize={maxFileSize}\n />\n
    \n )}\n
    \n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { CancelButton } from 'src/components/Buttons';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { ImageMagnifier } from 'src/core/POS/ImageMagnifier';\nimport {\n PosDraggable,\n PosDraggableIndicator,\n PosDroppable,\n} from 'src/core/POS/PosDragNDrop';\nimport { PosCustomDragLayer } from 'src/core/POS/PosDragNDrop/PosCustomDragLayer';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { SingleFileUploadWithPreview } from 'src/core/POS/SingleFileUploadWithPreview';\nimport { MAX_ALLOWED_UPLOAD_FILE_SIZE } from 'src/core/utils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport { DocumentPage, Ticket } from 'src/WebApiController';\n\nimport * as styles from '../UploadETickets.css';\nimport {\n UploadETicketsSubInstructions,\n UploadETicketsThumbnailAssigned,\n UploadETicketsThumbnailAssignedMappedTo,\n UploadETicketsThumbnailContainer,\n UploadETicketsThumbnailLoader,\n} from '../UploadETickets.styled';\nimport {\n DocumentFileUploadInfo,\n ETicketsForm,\n getDocumentPageIdToTicketMap,\n getDocumentPageUniqueId,\n} from '../UploadETickets.utils';\n\nexport function UploadETicketsThumbnailSection({\n eTicketUploadInfos,\n setETicketUploadInfos,\n entitWithTickets,\n}: {\n entitWithTickets: Pick<\n EntityWithRealTickets,\n 'viagVirtualId' | 'id' | 'ticketCnt' | 'tickets' | 'seating'\n >;\n eTicketUploadInfos: DocumentFileUploadInfo[];\n setETicketUploadInfos: (infos: DocumentFileUploadInfo[]) => void;\n}) {\n const { watch, setValue } = useFormContext();\n const watchTickets = watch('ticketAssignments'); // you can supply default value as second argument\n\n const mappedETicketIds = useMemo(\n () => getDocumentPageIdToTicketMap(watchTickets, entitWithTickets!.tickets),\n [entitWithTickets, watchTickets]\n );\n\n const onDroppingRemovingTicketFromSeat = useCallback(\n (ticket: Ticket, ticketIndex: number) => {\n setValue(`ticketAssignments.${ticketIndex}`, {\n entityId: ticket.id,\n documentId: '',\n pageNumber: 0,\n pageId: '',\n pageUri: '',\n documentUri: '',\n documentType: null,\n });\n },\n [setValue]\n );\n\n const onDroppingToThumbnails = useCallback(\n (\n sourcePage: DocumentPage,\n destinationPage: DocumentPage,\n destinationTicket: { ticket: Ticket; ticketIndex: number }\n ) => {\n if (\n sourcePage.documentId === destinationPage.documentId &&\n sourcePage.id === destinationPage.id &&\n destinationTicket\n ) {\n onDroppingRemovingTicketFromSeat(\n destinationTicket.ticket,\n destinationTicket.ticketIndex\n );\n } else {\n // Different page was dropped into this bucket - doesn't matter, we should just find\n // the ticket to remove\n const matchingPages = eTicketUploadInfos.flatMap(\n (ui) =>\n ui.pages?.filter(\n (p) =>\n p.documentId === sourcePage.documentId && p.id === sourcePage.id\n )\n );\n const matchingPage = matchingPages.filter((p) => p != null)[0];\n if (matchingPage) {\n const mappedToTicket =\n mappedETicketIds[getDocumentPageUniqueId(matchingPage)];\n if (mappedToTicket) {\n onDroppingRemovingTicketFromSeat(\n mappedToTicket.ticket,\n mappedToTicket.ticketIndex\n );\n }\n }\n }\n },\n [eTicketUploadInfos, mappedETicketIds, onDroppingRemovingTicketFromSeat]\n );\n\n const onFileDeleted = useCallback(\n (ui: DocumentFileUploadInfo) => {\n if (ui.pages) {\n // If any of the page is mapped, unmap it\n ui.pages.forEach((ep) => {\n const mappedToTicket = mappedETicketIds[getDocumentPageUniqueId(ep)];\n if (mappedToTicket) {\n onDroppingRemovingTicketFromSeat(\n mappedToTicket.ticket,\n mappedToTicket.ticketIndex\n );\n }\n });\n }\n ui.file = undefined;\n ui.uploadInfo = undefined;\n ui.pages = undefined;\n\n setETicketUploadInfos([...eTicketUploadInfos]);\n },\n [\n eTicketUploadInfos,\n mappedETicketIds,\n onDroppingRemovingTicketFromSeat,\n setETicketUploadInfos,\n ]\n );\n\n const onNewFileSelected = useCallback(\n (f: File[], ui: DocumentFileUploadInfo) => {\n // File already uploaded, do nothing/\n if (ui.pages || ui.uploadInfo) {\n return;\n }\n const newUploadUIs = f.map((file) => ({\n file,\n pages: [],\n uploadInfo: undefined,\n }));\n\n setETicketUploadInfos([...newUploadUIs, ...eTicketUploadInfos]);\n },\n [eTicketUploadInfos, setETicketUploadInfos]\n );\n\n return (\n
    \n
    \n \n
    \n \n {eTicketUploadInfos.map((ui, i) => {\n const key = `e-ticket-file-${i}`;\n // If ui has uploadInfo but no pages, it's being uploaded/processed, so just display a spinner for the file\n return ui.file?.name && !ui.pages ? (\n \n \n {ui.file?.name ? (\n \n ) : (\n ' '\n )}\n {ui.uploadInfo && (\n // Only allow cancel once the file is uploaded and is only pollling for pages\n onFileDeleted(ui)} />\n )}\n \n \n \n ) : (\n // Has no uploadInfo or has pages, display component to display thumbnail or single-file uploader\n \n \n key={key}\n fileName={ui.file?.name}\n filePages={ui.pages || []}\n isDeletable={true}\n onFileDeleted={() => onFileDeleted(ui)}\n multiple={true}\n onNewFileSelected={(f) => onNewFileSelected(f, ui)}\n maxFileSize={MAX_ALLOWED_UPLOAD_FILE_SIZE}\n renderPreview={(ep: DocumentPage) => {\n const mappedToTicket =\n mappedETicketIds[getDocumentPageUniqueId(ep)];\n return (\n \n onDroppingToThumbnails(data, ep, mappedToTicket)\n }\n >\n {mappedToTicket ? (\n \n \n \n \n \n \n \n ) : (\n \n \n
    \n ),\n source: ep.thumbUrl,\n }}\n >\n \n
    \n \n
    \n \n
    \n \n )}\n \n \n );\n }}\n />\n \n );\n })}\n \n \n );\n}\n","import { useEffect, useRef } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { mergeProps } from 'src/core/utils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport { TicketType } from 'src/WebApiController';\n\nimport * as styles from '../UploadETickets.css';\nimport {\n UploadETicketsInstructions,\n UploadETicketsSubInstructions,\n} from '../UploadETickets.styled';\nimport {\n DocumentFileUploadInfo,\n ETicketsForm,\n getDocumentPagesMap,\n} from '../UploadETickets.utils';\nimport { UploadETicketsSeatingSection } from './UploadETicketsSeatingSection';\nimport { UploadETicketsThumbnailSection } from './UploadETicketsThumbnailSection';\n\nexport const UploadETicketsSeatAssignmentBody = ({\n entitWithTickets,\n ticketType,\n eTicketUploadInfos,\n setETicketUploadInfos,\n className,\n}: {\n entitWithTickets: Pick<\n EntityWithRealTickets,\n 'viagVirtualId' | 'id' | 'ticketCnt' | 'tickets' | 'seating' | 'entityType'\n >;\n ticketType: TicketType.ETicket | TicketType.QRCode;\n eTicketUploadInfos: DocumentFileUploadInfo[];\n setETicketUploadInfos: (infos: DocumentFileUploadInfo[]) => void;\n className?: string;\n}) => {\n const allPagesAvailable =\n eTicketUploadInfos.find(\n (ui) => ui.file && ui.uploadInfo && (ui.pages?.length || 0) === 0\n ) == null; // returns false where any uploadInfo (that has file and uploadInfo) has no pages\n const eTicketPages = getDocumentPagesMap(eTicketUploadInfos);\n const { watch, setValue } = useFormContext();\n const watchTickets = watch('ticketAssignments'); // you can supply default value as second argument\n\n const autoAssignment = useRef(true);\n useEffect(() => {\n if (autoAssignment.current && allPagesAvailable) {\n // Only perform once, and perform only when all pages are available\n const allPages = eTicketUploadInfos\n .flatMap((ui) => ui.pages)\n .filter((p) => p);\n if (\n allPages.length > 0 && // if we have pages to assigne\n watchTickets.filter((t) => t.pageId !== '').length === 0 // and we have not assign any ticket to any seat\n ) {\n // Try to auto-assign seat based on order of the pages\n // Users can re-adjust if they see fit\n // TODO - we can probably use some smart-scanning features to figure out which page is for which seat\n watchTickets.forEach((t, index) => {\n if (index < allPages.length) {\n const page = allPages[index];\n t.documentId = page!.documentId;\n t.pageId = page!.id;\n t.pageNumber = page!.pageNumber;\n t.pageUri = page!.thumbUrl;\n t.documentUri = page!.documentUrl;\n }\n });\n\n setValue('ticketAssignments', [...watchTickets]);\n autoAssignment.current = false;\n }\n }\n }, [\n allPagesAvailable,\n eTicketPages,\n eTicketUploadInfos,\n setValue,\n watchTickets,\n ]);\n\n return (\n \n \n \n \n \n \n \n\n
    \n \n \n
    \n \n );\n};\n","import { useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport {\n DocumentFileUploadInfo,\n UploadETicketForm,\n UploadETicketsFinalPreviewBody,\n UploadETicketsSeatAssignmentBody,\n} from 'src/components/UploadArtifacts/UploadETickets';\nimport { Stack } from 'src/core/ui';\nimport { PurchaseWizardFooter } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { toEntityWithTicket } from 'src/utils/ticketUtils';\nimport {\n ActionOutboxEntityType,\n DocumentProcessorClient,\n DocumentUploadInfo,\n FileParameter,\n PosClientConfig,\n PosUiActionResult,\n TicketType,\n UserDocumentLinks,\n} from 'src/WebApiController';\n\nimport {\n ticketGroupInputFooter,\n ticketGroupPredeliveryBody,\n} from '../PurchaseTicketFlow.css';\n\nexport interface UploadETicketsSectionProps {\n ticketGroupIndex: number;\n ticketType: TicketType.ETicket | TicketType.QRCode;\n onCancel: () => void;\n}\n\nexport const UploadETicketsSection = ({\n ticketGroupIndex,\n ticketType,\n onCancel,\n}: UploadETicketsSectionProps) => {\n const { setValue, watch, formState } = useFormContext();\n const ticketGroup = watch(`ticketGroups.${ticketGroupIndex}`);\n\n const onUploadETickets = (\n _: PosClientConfig,\n entityId: number,\n etickets: UserDocumentLinks[]\n ) => {\n const newTickets = ticketGroup.tickets?.value?.map((t) => {\n const tb = etickets.find((b) => b.entityId === t.id);\n if (tb) {\n if (ticketType === TicketType.ETicket) {\n t.eTicket = tb;\n } else {\n t.qrCode = tb;\n }\n return { ...t };\n }\n return t;\n });\n\n setValue(\n `ticketGroups.${ticketGroupIndex}.tickets`,\n posChangedField(newTickets ?? null)\n );\n\n setValue('updatePredeliveryETicketArtifacts', true);\n\n return Promise.resolve({\n status: 200,\n entityId,\n entityType: ActionOutboxEntityType.Purchase,\n } as PosUiActionResult);\n };\n\n const onUploadDocuments = (\n client: DocumentProcessorClient,\n docUploadInfo: DocumentUploadInfo,\n file: FileParameter\n ) =>\n client.uploadDocumentForListing(\n docUploadInfo.entityId,\n ActionOutboxEntityType.Listing,\n docUploadInfo.documentType,\n docUploadInfo.blobName,\n docUploadInfo.documentId,\n docUploadInfo.contentType,\n file\n );\n\n const entityWithTickets = useMemo(\n () => toEntityWithTicket(ticketGroup),\n [ticketGroup]\n );\n\n return (\n void,\n onNext: () => void,\n onCancel: () => void,\n onBack: () => void,\n isFinalPreview: boolean,\n disabled?: boolean\n ) => (\n \n {!isFinalPreview ? (\n \n ) : (\n \n )}\n\n \n \n )}\n />\n );\n};\n","import {\n DocumentPage,\n DocumentUploadInfo,\n Ticket,\n UserDocument,\n UserDocumentLinks,\n} from 'src/WebApiController';\n\nexport type ETicketsForm = {\n ticketAssignments: UserDocumentLinks[];\n};\n\nexport type DocumentFileUploadInfo = {\n file?: File;\n uploadInfo?: DocumentUploadInfo;\n pages?: DocumentPage[];\n};\n\nexport const getDocumentPageUniqueId = (ep: DocumentPage) =>\n `${ep.id}-${ep.documentId}`;\n\nexport const getETicketDocumentPageUniqueId = (ep: UserDocument) =>\n `${ep.pageId}-${ep.documentId}`;\n\nexport type UniquePageIdToDocumentFileUploadInfoMap = Record<\n string,\n { documentFileUploadInfo: DocumentFileUploadInfo; page: DocumentPage }\n>;\n\nexport const getPageToDocumentFileUploadInfoMap = (\n docUploadInfos: DocumentFileUploadInfo[]\n): UniquePageIdToDocumentFileUploadInfoMap => {\n const documentFileUploadInfosMap: UniquePageIdToDocumentFileUploadInfoMap =\n {};\n\n docUploadInfos.forEach((doc) => {\n doc.pages\n ?.filter((page) => !!page)\n .forEach((page) => {\n documentFileUploadInfosMap[getDocumentPageUniqueId(page)] = {\n documentFileUploadInfo: doc,\n page,\n };\n });\n });\n\n return documentFileUploadInfosMap;\n};\n\nexport type MappedTicketInfo = { ticketIndex: number; ticket: Ticket };\nexport type PageUniqueIdToTicketMap = Record;\n\nexport const getDocumentPageIdToTicketMap = (\n ticketAssignments: UserDocument[],\n tickets: Ticket[]\n): PageUniqueIdToTicketMap =>\n ticketAssignments.reduce(\n (prev, cur) => {\n const index = tickets.findIndex((t) => t.id === cur.entityId);\n prev[getETicketDocumentPageUniqueId(cur)] = {\n ticketIndex: index,\n ticket: tickets[index],\n };\n return prev;\n },\n {} as {\n [docPageUniqueId: string]: { ticketIndex: number; ticket: Ticket };\n }\n );\n","import { useQuery } from '@tanstack/react-query';\nimport { ComponentProps, ReactNode, useCallback, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { EntityWithRealTicketsPartial } from 'src/components/UploadArtifacts/UploadETicketsV2/views/UploadETicketsSeatAssignmentBody';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ApiException,\n DocumentProcessorClient,\n DocumentType,\n DocumentUploadInfo,\n FileParameter,\n PosClientConfig,\n PosUiActionResult,\n TicketType,\n UserDocument,\n UserDocumentLinks,\n} from 'src/WebApiController';\n\nimport { DocumentFileUploadInfo, ETicketsForm } from './UploadETickets.utils';\n\nexport type UploadETicketFormProps = {\n entityWithTickets: EntityWithRealTicketsPartial;\n renderContent: (\n eTicketUploadInfos: DocumentFileUploadInfo[],\n setETicketUploadInfos: (infos: DocumentFileUploadInfo[]) => void,\n onNext: () => void,\n onCancel: () => void,\n disabled?: boolean\n ) => ReactNode;\n onComplete: (isCancelled: boolean) => void;\n onUploadDocuments: (\n client: DocumentProcessorClient,\n docUploadInfo: DocumentUploadInfo,\n file: FileParameter\n ) => Promise;\n onUploadETickets: (\n posClientConfig: PosClientConfig,\n entityId: number,\n ticketAssignments: UserDocumentLinks[]\n ) => Promise;\n ticketType: TicketType.ETicket | TicketType.QRCode;\n};\n\nexport const UploadETicketForm = (props: UploadETicketFormProps) => {\n const methods = useForm({\n defaultValues: {\n ticketAssignments: props.entityWithTickets.tickets.map((t) => ({\n entityId: t.id,\n pageId:\n (props.ticketType === TicketType.ETicket\n ? t.eTicket?.pageId\n : t.qrCode?.pageId) ?? '',\n documentId:\n (props.ticketType === TicketType.ETicket\n ? t.eTicket?.documentId\n : t.qrCode?.documentId) ?? '',\n pageNumber:\n (props.ticketType === TicketType.ETicket\n ? t.eTicket?.pageNumber\n : t.qrCode?.pageNumber) ?? 0,\n pageUri:\n (props.ticketType === TicketType.ETicket\n ? t.eTicket?.pageUri\n : t.qrCode?.pageUri) ?? '',\n documentUri:\n (props.ticketType === TicketType.ETicket\n ? t.eTicket?.documentUri\n : t.qrCode?.documentUri) ?? '',\n documentType:\n props.ticketType === TicketType.ETicket\n ? (t.eTicket?.documentType ?? DocumentType.ETicket)\n : (t.qrCode?.documentType ?? DocumentType.QRCode),\n })),\n },\n });\n return (\n \n \n \n );\n};\n\nconst UploadETicketsContent = ({\n entityWithTickets,\n ticketType,\n renderContent,\n onComplete,\n onUploadDocuments,\n onUploadETickets,\n setError,\n clearErrors,\n watch,\n handleSubmit,\n}: UploadETicketFormProps &\n Omit<\n ComponentProps>,\n 'children'\n >) => {\n // Source of truth\n const [eTicketUploadInfos, setETicketUploadInfos] = useState<\n DocumentFileUploadInfo[]\n >([]);\n\n const [isLoading, setIsLoading] = useState(false);\n const { showErrorDialog, genericError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const getIncompleteUploadInfos = (infos?: DocumentFileUploadInfo[]) =>\n infos?.filter(\n (f) => f.file && f.uploadInfo && (!f.pages || f.pages.length === 0)\n ) || [];\n\n const requiredMsg = useContent(ContentId.Required);\n\n const query = useQuery({\n queryKey: [\n 'pollingForETicketUploadFiles',\n eTicketUploadInfos.map((ui) => ui.file?.name || '').toSorted(),\n ],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n setIsLoading(true);\n\n const client = new DocumentProcessorClient(activeAccountWebClientConfig);\n let infoChanged = false;\n\n const results = eTicketUploadInfos.map(async (f) => {\n if (f.pages && f.pages.length > 0) {\n return f; // We already gotten data for this or doesn't have upload info yet, just return\n }\n\n if (f.file) {\n // If we don't have upload info yet, get it, and upload the file\n if (!f.uploadInfo) {\n // The upload has been deleted and needing to be re-upload\n const uploadInfo = await client.getDocumentUploadInfo(\n entityWithTickets.id,\n ticketType === TicketType.ETicket\n ? DocumentType.ETicket\n : DocumentType.QRCode,\n f.file.type\n );\n\n await onUploadDocuments(client, uploadInfo, {\n data: f.file,\n fileName: f.file.name,\n });\n\n f.uploadInfo = uploadInfo;\n infoChanged = true;\n } else {\n try {\n // if we do have upload info, we want to query for the pages\n // but we do not want to do this immediately after the upload, hence, this is an else\n // meaning another refresh cycle has ran in useQuery\n const eTicketPages = await client.getDocumentPages(\n f.uploadInfo.entityId,\n f.uploadInfo.entityType,\n f.uploadInfo.documentType,\n f.uploadInfo.blobName,\n f.uploadInfo.documentId,\n f.uploadInfo.contentType\n );\n\n infoChanged = true;\n return { ...f, pages: eTicketPages } as DocumentFileUploadInfo;\n } catch (e) {\n // Remove the file with errors\n setETicketUploadInfos(\n eTicketUploadInfos.filter(\n (documentFileUpload) => documentFileUpload !== f\n )\n );\n showErrorDialog(\n 'DocumentProcessorClient.getDocumentPages',\n { message: (e as Error)?.message ?? '' },\n {\n trackErrorData: {\n eTicketUploadInfos,\n },\n }\n );\n }\n }\n }\n\n return f;\n });\n\n let allResults = await Promise.all(results);\n\n const fileWithNoPages = getIncompleteUploadInfos(allResults);\n const isAllLoaded = fileWithNoPages.length === 0;\n if (isAllLoaded) {\n setIsLoading(false);\n }\n\n const emptyEntries = allResults.filter(\n (u) =>\n u.file === undefined &&\n u.uploadInfo === undefined &&\n u.pages === undefined\n );\n if (emptyEntries.length !== 1) {\n const nonEmptyEntries = allResults.filter(\n (u) =>\n !(\n u.file === undefined &&\n u.uploadInfo === undefined &&\n u.pages === undefined\n )\n );\n // Always ensure there's an extra empty-upload-info\n // This allow the seat-assignment to add additional files\n nonEmptyEntries.push({\n file: undefined,\n uploadInfo: undefined,\n pages: undefined,\n } as DocumentFileUploadInfo);\n\n allResults = nonEmptyEntries;\n infoChanged = true;\n }\n\n if (infoChanged) {\n setETicketUploadInfos(allResults);\n }\n return allResults;\n },\n\n staleTime: Infinity, // We don't want useQuery to auto-refresh base on stale, we control our own refetch\n gcTime: 0, // we don't want to cache this data\n refetchOnWindowFocus: false,\n networkMode: 'always',\n refetchInterval: () => {\n if (!eTicketUploadInfos) {\n return 1000;\n }\n const fileWithNoPages = getIncompleteUploadInfos(eTicketUploadInfos);\n return fileWithNoPages.length > 0 ? 1000 : false; // keep on refreshing until all files in prev (uploadInfos) has pages\n },\n meta: {\n persist: false, // we do not want this thing persisted between sessions\n },\n });\n\n if (query.failureReason) {\n showErrorDialog(\n 'DocumentProcessorClient.pollingForETicketUploadFiles',\n { message: query.failureReason.message },\n {\n trackErrorData: {\n eTicketUploadInfos,\n },\n }\n );\n }\n\n const validateTicketAssignment = useCallback(\n (t: UserDocument, index: number) => {\n if (!t.documentId || !t.pageId) {\n setError(\n `ticketAssignments.${index}`,\n {\n message: requiredMsg,\n },\n { shouldFocus: true }\n );\n\n return false;\n } else {\n clearErrors(`ticketAssignments.${index}`);\n\n return true;\n }\n },\n [clearErrors, requiredMsg, setError]\n );\n\n const onSubmit = useCallback(\n async ({ ticketAssignments }: ETicketsForm) => {\n // Validate first\n let isValid = true;\n ticketAssignments.forEach((t, i) => {\n isValid = isValid && validateTicketAssignment(t, i);\n });\n\n if (!isValid) {\n return;\n }\n\n tryInvokeApi(\n async () => {\n setIsLoading(true);\n const result = await onUploadETickets?.(\n activeAccountWebClientConfig,\n entityWithTickets.id,\n ticketAssignments\n );\n if (!isSuccess(result)) {\n showErrorDialog(\n 'SaleClient.saveETicketAssignments',\n {\n message: result!.message ?? genericError,\n status: result!.status!,\n } as ApiException,\n {\n onDismissError: () => onComplete(true),\n trackErrorData: {\n entityId: entityWithTickets.id,\n ticketAssignments,\n },\n }\n );\n } else {\n onComplete(false);\n }\n },\n (error) => {\n showErrorDialog('SaleClient.saveETicketAssignments', error, {\n trackErrorData: {\n entityId: entityWithTickets.id,\n ticketAssignments,\n },\n });\n },\n () => setIsLoading(false)\n );\n },\n [\n validateTicketAssignment,\n onUploadETickets,\n activeAccountWebClientConfig,\n entityWithTickets.id,\n showErrorDialog,\n genericError,\n onComplete,\n ]\n );\n\n const onCancel = () => {\n setETicketUploadInfos([]);\n setIsLoading(false);\n onComplete(true);\n };\n\n const onNext = useCallback(async () => {\n if (!isLoading) {\n handleSubmit(onSubmit)();\n }\n }, [handleSubmit, isLoading, onSubmit]);\n\n return renderContent(\n eTicketUploadInfos,\n setETicketUploadInfos,\n onNext,\n onCancel,\n isLoading\n );\n};\n","// POS modal zIndex is 1501\nexport const previewModalZIndex = 1500;\nexport const ticketsAndSeatsZIndex = previewModalZIndex + 1;\nexport const draggingWrapperZIndex = previewModalZIndex + 2;\n","import React, {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport {\n PageUniqueIdToTicketMap,\n UniquePageIdToDocumentFileUploadInfoMap,\n} from 'src/components/UploadArtifacts/UploadETicketsV2/UploadETickets.utils';\nimport { EntityWithRealTicketsPartial } from 'src/components/UploadArtifacts/UploadETicketsV2/views/UploadETicketsSeatAssignmentBody';\n\nexport type IUploadETicketsContext = {\n pageUniqueIdToTicketMap: PageUniqueIdToTicketMap; // Handles relationship between ticket and seat\n setPageUniqueIdToTicketMap: (\n pageUniqueIdToTicketMap: PageUniqueIdToTicketMap\n ) => void;\n\n uniquePageIdToDocumentFileUploadInfoMap: UniquePageIdToDocumentFileUploadInfoMap;\n setUniquePageIdToDocumentFileUploadInfoMap: (\n uniquePageIdToDocumentFileUploadInfoMap: UniquePageIdToDocumentFileUploadInfoMap\n ) => void;\n\n entityWithTickets: EntityWithRealTicketsPartial | undefined;\n\n selectedUniquePageId: string | undefined;\n setSelectedUniquePageId: (uniquePageId: string | undefined) => void;\n\n hoverUniquePageId: string | undefined;\n setHoverUniquePageId: (uniquePageId: string | undefined) => void;\n\n selectPrevUnmappedTicket: () => void;\n selectNextUnmappedTicket: (fromUniquePageId?: string) => void;\n};\n\nconst defaultUploadETicketsContext: IUploadETicketsContext = {\n entityWithTickets: undefined,\n pageUniqueIdToTicketMap: {},\n setPageUniqueIdToTicketMap: (\n pageUniqueIdToTicketMap: PageUniqueIdToTicketMap\n ) => undefined,\n selectedUniquePageId: undefined,\n setSelectedUniquePageId: (uniquePageId: string | undefined) => undefined,\n\n hoverUniquePageId: undefined,\n setHoverUniquePageId: (uniquePageId: string | undefined) => undefined,\n\n uniquePageIdToDocumentFileUploadInfoMap: {},\n setUniquePageIdToDocumentFileUploadInfoMap: (\n uniquePageIdToDocumentFileUploadInfoMap: UniquePageIdToDocumentFileUploadInfoMap\n ) => undefined,\n selectPrevUnmappedTicket: () => undefined,\n selectNextUnmappedTicket: (fromUniquePageId: string | undefined) => undefined,\n};\n\nexport const UploadETicketsContext = createContext(\n defaultUploadETicketsContext\n);\n\nexport const useUploadETicketsContext = () => useContext(UploadETicketsContext);\n\nexport const UploadETicketsContextProvider = ({\n children,\n entityWithTickets,\n}: {\n children: ReactNode;\n entityWithTickets: EntityWithRealTicketsPartial;\n}) => {\n const [pageUniqueIdToTicketMap, setPageUniqueIdToTicketMap] =\n useState(\n defaultUploadETicketsContext.pageUniqueIdToTicketMap\n );\n\n const [\n uniquePageIdToDocumentFileUploadInfoMap,\n setUniquePageIdToDocumentFileUploadInfoMap,\n ] = useState({});\n\n const [selectedUniquePageId, setSelectedUniquePageId] = useState<\n string | undefined\n >();\n\n const [hoverUniquePageId, setHoverUniquePageId] = useState<\n string | undefined\n >();\n\n useEffect(() => {\n if (selectedUniquePageId) {\n const existsPageId =\n uniquePageIdToDocumentFileUploadInfoMap[selectedUniquePageId];\n if (!existsPageId) {\n setSelectedUniquePageId(undefined);\n }\n }\n }, [\n pageUniqueIdToTicketMap,\n selectedUniquePageId,\n uniquePageIdToDocumentFileUploadInfoMap,\n ]);\n\n const selectNextTicket = useCallback(\n (direction: 'prev' | 'next') => {\n const uniquePageIds = Object.keys(\n uniquePageIdToDocumentFileUploadInfoMap\n );\n const currentIndex = selectedUniquePageId\n ? uniquePageIds.indexOf(selectedUniquePageId)\n : 0;\n\n let nextIndex = 0;\n if (direction === 'prev') {\n nextIndex =\n currentIndex - 1 < 0 ? uniquePageIds.length - 1 : currentIndex - 1;\n } else {\n // next\n nextIndex =\n currentIndex + 1 === uniquePageIds.length ? 0 : currentIndex + 1;\n }\n\n setSelectedUniquePageId(uniquePageIds[nextIndex]);\n },\n [selectedUniquePageId, uniquePageIdToDocumentFileUploadInfoMap]\n );\n\n /**\n * Select previous unmapped ticket from the current selected ticket.\n */\n const selectPrevUnmappedTicket = useCallback(() => {\n const uniquePageIds = Object.keys(uniquePageIdToDocumentFileUploadInfoMap);\n\n const selectedUniquePageIdIndex = selectedUniquePageId\n ? uniquePageIds.indexOf(selectedUniquePageId)\n : 0;\n\n const nextKeysFromBeggingToCurrentIndex = uniquePageIds\n .slice(0, selectedUniquePageIdIndex)\n .reverse();\n\n // Array of keys to search next unmapped ticket from currentIndex to the end\n const nextKeysFromCurrentIndexToEnd = uniquePageIds\n .slice(\n selectedUniquePageIdIndex + 1 // +1 to not include current uniquePageId\n )\n .reverse();\n\n const notMappedUniquePageId = [\n ...nextKeysFromBeggingToCurrentIndex, // 0 to current index\n ...nextKeysFromCurrentIndexToEnd, // current index to end\n ].find((pageIdToDocument) => !pageUniqueIdToTicketMap[pageIdToDocument]);\n\n if (notMappedUniquePageId) {\n setSelectedUniquePageId(notMappedUniquePageId);\n } else {\n // Set prev\n selectNextTicket('prev');\n }\n }, [\n pageUniqueIdToTicketMap,\n selectNextTicket,\n selectedUniquePageId,\n uniquePageIdToDocumentFileUploadInfoMap,\n ]);\n\n /**\n * Select next unmapped ticket from the current selected ticket.\n */\n const selectNextUnmappedTicket = useCallback(\n (fromUniquePageId: string | undefined) => {\n const uniquePageIds = Object.keys(\n uniquePageIdToDocumentFileUploadInfoMap\n );\n\n let selectedUniquePageIdIndex = 0;\n if (fromUniquePageId) {\n selectedUniquePageIdIndex = uniquePageIds.indexOf(fromUniquePageId);\n } else if (selectedUniquePageId) {\n selectedUniquePageIdIndex = uniquePageIds.indexOf(selectedUniquePageId);\n }\n\n // Array of keys to search next unmapped ticket from currentIndex to the end\n const nextKeysFromCurrentIndexToEnd = uniquePageIds.slice(\n selectedUniquePageIdIndex + 1 // +1 to not include current uniquePageId\n );\n\n const nextKeysFromBeggingToCurrentIndex = uniquePageIds.slice(\n 0,\n selectedUniquePageIdIndex\n );\n\n const notMappedUniquePageId = [\n ...nextKeysFromCurrentIndexToEnd, // current index to end\n ...nextKeysFromBeggingToCurrentIndex, // 0 to current index\n ].find((pageIdToDocument) => !pageUniqueIdToTicketMap[pageIdToDocument]);\n\n if (notMappedUniquePageId) {\n setSelectedUniquePageId(notMappedUniquePageId);\n } else {\n // Set first\n selectNextTicket('next');\n }\n },\n [\n pageUniqueIdToTicketMap,\n selectNextTicket,\n selectedUniquePageId,\n uniquePageIdToDocumentFileUploadInfoMap,\n ]\n );\n\n return (\n \n {children}\n \n );\n};\n","export const UploadETicketsDraggableSource = 'UploadETicketsDraggableSource';\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const SeatIcon = (props: PosIconProps) => {\n return (\n \n \n \n );\n};\n","import { clsx } from 'clsx';\nimport { ReactNode } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { SeatIcon } from 'src/svgs/SeatIcon';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './SeatInfo.css';\n\nexport interface SeatInfoProps {\n section: string;\n row: string | null;\n seatFr: string | undefined;\n ticketIndex: number;\n size?: 'small' | 'big';\n icon?: ReactNode;\n}\n\nexport const SeatInfo = ({\n seatFr,\n section,\n ticketIndex,\n row,\n size = 'small',\n icon,\n}: SeatInfoProps) => {\n const isSmallSize = size === 'small';\n return (\n \n {icon || }\n {section}\n {row && (\n <>\n \n \n \n {row}\n \n )}\n \n \n \n \n {seatFr || (ticketIndex + 1).toString()}\n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const PageIcon = (props: PosIconProps) => {\n return (\n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const PaperTicketsIcon = (props: PosIconProps) => {\n return (\n \n \n \n );\n};\n","import { clsx } from 'clsx';\nimport { MappedTicketInfo } from 'src/components/UploadArtifacts/UploadETicketsV2';\nimport { SeatInfo } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Seats/SeatInfo/SeatInfo';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { vars } from 'src/core/themes';\nimport { Colors } from 'src/core/themes/constants/colors';\nimport { Stack } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { PageIcon } from 'src/svgs/PageIcon';\nimport { PaperTicketsIcon } from 'src/svgs/PaperTicketsIcon';\nimport { CheckIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './PreviewInfo.css';\n\ninterface PreviewInfoProps {\n fileName: string;\n mappedTicketInfo: MappedTicketInfo | undefined;\n section: string | undefined;\n}\n\nexport const PreviewInfo = ({\n mappedTicketInfo,\n fileName,\n section,\n}: PreviewInfoProps) => {\n const isMobile = useMatchMedia('mobile');\n const { isDarkMode } = useSiteTheme();\n const isLargeDesktop = useMatchMedia('largeDesktop');\n const useMobileStyle = isMobile || isLargeDesktop;\n const { ticket, ticketIndex } = mappedTicketInfo || {};\n\n return (\n \n \n \n
    {fileName}
    \n \n {ticket ? (\n
    \n \n \n ) : (\n \n )\n }\n seatFr={ticket.seat}\n ticketIndex={ticketIndex!}\n row={ticket.row}\n section={section ?? ''}\n />\n \n
    \n ) : (\n \n \n \n \n )}\n \n );\n};\n","import * as styles from './PosKey.css';\n\ninterface KeyProps {\n char: string;\n}\n\nexport const PosKey = ({ char }: KeyProps) => {\n if (!char || !char.length) {\n return null;\n }\n const singleChar = char.charAt(0);\n\n return
    {singleChar}
    ;\n};\n","import { useEffect, useRef } from 'react';\nimport {\n IUploadETicketsContext,\n useUploadETicketsContext,\n} from 'src/components/UploadArtifacts/UploadETicketsV2/UploadETicketsContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Colors } from 'src/core/themes/constants/colors';\nimport { Button, Stack } from 'src/core/ui';\nimport { PosKey } from 'src/core/ui/Key';\nimport { useKeyPress } from 'src/hooks/useKeyPress';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { ChevronLeftIcon, ChevronRightIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './PreviewModalNavigationFooter.css';\n\ntype KeyboardRefActions = Pick<\n IUploadETicketsContext,\n 'selectPrevUnmappedTicket' | 'selectNextUnmappedTicket'\n>;\n\nexport const PreviewModalNavigationFooter = () => {\n const isLargeDesktop = useMatchMedia('largeDesktop');\n const isMobile = useMatchMedia('mobile');\n const { selectPrevUnmappedTicket, selectNextUnmappedTicket } =\n useUploadETicketsContext();\n\n const isArrowLeftKeyPressed = useKeyPress('ArrowLeft');\n const isArrowRightKeyPressed = useKeyPress('ArrowRight');\n\n const ref = useRef({\n selectPrevUnmappedTicket,\n selectNextUnmappedTicket,\n });\n ref.current = {\n selectPrevUnmappedTicket,\n selectNextUnmappedTicket,\n };\n\n useEffect(() => {\n if (isArrowLeftKeyPressed) {\n ref.current?.selectPrevUnmappedTicket();\n }\n }, [isArrowLeftKeyPressed]);\n\n useEffect(() => {\n if (isArrowRightKeyPressed) {\n ref.current?.selectNextUnmappedTicket();\n }\n }, [isArrowRightKeyPressed]);\n\n if (isMobile) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n \n {isLargeDesktop && (\n <>\n \n \n )}\n {!isLargeDesktop && !isMobile && }\n \n\n \n {isLargeDesktop && (\n <>\n \n \n \n )}\n {!isLargeDesktop && !isMobile && }\n selectNextUnmappedTicket()}\n className={styles.arrowButton}\n >\n \n \n \n \n \n \n );\n};\n","import { BasePageDocumentProps } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/BasePageDocumentProps';\n\nexport enum UploadETicketsDraggableOrigin {\n PreviewModal = 'previewModal',\n TicketCard = 'TicketCard',\n}\n\nexport interface UploadETicketsDraggableData {\n isSinglePageDocument: boolean;\n componentProps: BasePageDocumentProps;\n origin: UploadETicketsDraggableOrigin;\n}\n","import type { ToolbarSlot } from '@react-pdf-viewer/toolbar';\nimport { clsx } from 'clsx';\nimport {\n DocumentFileUploadInfo,\n MappedTicketInfo,\n} from 'src/components/UploadArtifacts/UploadETicketsV2';\nimport { useUploadETicketsContext } from 'src/components/UploadArtifacts/UploadETicketsV2/UploadETicketsContext';\nimport { UploadETicketsDraggableSource } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Draggable/constants';\nimport { PreviewInfo } from 'src/components/UploadArtifacts/UploadETicketsV2/views/PreviewModal/PreviewInfo/PreviewInfo';\nimport { PreviewModalNavigationFooter } from 'src/components/UploadArtifacts/UploadETicketsV2/views/PreviewModal/PreviewModalNavigationFooter/PreviewModalNavigationFooter';\nimport {\n UploadETicketsDraggableData,\n UploadETicketsDraggableOrigin,\n} from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/UploadETicketsDraggableData';\nimport { ImageMagnifier } from 'src/core/POS/ImageMagnifier';\nimport { PosDraggable, PosDraggableIndicator } from 'src/core/POS/PosDragNDrop';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { DocumentPage } from 'src/WebApiController';\n\nimport * as styles from './UploadETicketsPreviewTicketModalBody.css';\n\nconst toolbarSlot: Partial = {\n ShowSearchPopover: () => <>,\n NumberOfPages: () => <>,\n GoToPreviousPage: () => <>,\n GoToNextPage: () => <>,\n CurrentPageInput: () => <>,\n};\n\nconst noop = () => {};\n\nexport const UploadETicketsPreviewTicketModalBody = () => {\n const isLargeDesktop = useMatchMedia('largeDesktop');\n const isMobile = useMatchMedia('mobile');\n const {\n selectedUniquePageId,\n hoverUniquePageId,\n uniquePageIdToDocumentFileUploadInfoMap,\n pageUniqueIdToTicketMap,\n entityWithTickets,\n } = useUploadETicketsContext();\n\n let page: DocumentPage | undefined;\n let file: File | undefined;\n let mappedTicketInfo: MappedTicketInfo | undefined;\n let pageInfo:\n | {\n documentFileUploadInfo: DocumentFileUploadInfo;\n page: DocumentPage;\n }\n | undefined;\n\n const activeUniquePageId = hoverUniquePageId || selectedUniquePageId;\n\n if (activeUniquePageId) {\n pageInfo = uniquePageIdToDocumentFileUploadInfoMap[activeUniquePageId];\n if (pageInfo) {\n pageInfo = uniquePageIdToDocumentFileUploadInfoMap[activeUniquePageId];\n page = pageInfo.page;\n file = pageInfo.documentFileUploadInfo.file;\n mappedTicketInfo = pageUniqueIdToTicketMap[activeUniquePageId];\n }\n }\n\n if (!page || !file || !pageInfo) {\n return null;\n }\n const pages = pageInfo.documentFileUploadInfo.pages;\n if (!pages || pages.length === 0) {\n return null;\n }\n\n const pdfClassName = isLargeDesktop\n ? styles.pdfViewerLargeDesktop\n : !isMobile\n ? styles.pdfViewerDesktop\n : undefined;\n\n return (\n \n \n className={styles.draggable}\n draggableSource={UploadETicketsDraggableSource}\n draggableData={{\n isSinglePageDocument: pages.length === 1,\n origin: UploadETicketsDraggableOrigin.PreviewModal,\n componentProps: {\n page,\n pageIndex: pages.indexOf(page) ?? 0,\n entityWithTickets: entityWithTickets!,\n documentFileUploadInfo: pageInfo.documentFileUploadInfo,\n pageUniqueIdToTicketMap,\n selectedUniquePageId,\n onMouseEntersPage: noop,\n onMouseLeavesPage: noop,\n },\n }}\n >\n \n
    \n
    \n \n
    \n
    \n \n
    \n \n
    \n \n \n \n );\n};\n","import { clsx } from 'clsx';\nimport { createPortal } from 'react-dom';\nimport { useUploadETicketsContext } from 'src/components/UploadArtifacts/UploadETicketsV2/UploadETicketsContext';\nimport { UploadETicketsPreviewTicketModalBody } from 'src/components/UploadArtifacts/UploadETicketsV2/views/PreviewModal/UploadETicketsPreviewTicketModalBody/UploadETicketsPreviewTicketModalBody';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\n\nimport * as uploadETicketsStyles from '../../UploadETickets.css';\nimport * as styles from './UploadETicketsPreviewTicketModal.css';\n\nexport const UploadETicketsPreviewTicketModal = () => {\n const isMobile = useMatchMedia('mobile');\n const isLargeDesktop = useMatchMedia('largeDesktop');\n const { selectedUniquePageId } = useUploadETicketsContext();\n\n if (!selectedUniquePageId) {\n return null;\n }\n\n const previewModal = (\n \n \n \n );\n\n if (isLargeDesktop) {\n return <>{createPortal(previewModal, document.body)};\n }\n\n return previewModal;\n};\n","import * as styles from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/ClearButton/ClearButton.css';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { CrossIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\ninterface ClearButtonProps {\n onClick: (e: React.MouseEvent) => void;\n}\n\nexport const ClearButton = ({ onClick }: ClearButtonProps) => {\n return (\n \n );\n};\n","import {\n EntityWithRealTicketsPartial,\n MappedTicketInfo,\n} from 'src/components/UploadArtifacts/UploadETicketsV2';\nimport { SeatInfo } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Seats/SeatInfo/SeatInfo';\nimport { vars } from 'src/core/themes';\nimport { PageIcon } from 'src/svgs/PageIcon';\n\ninterface MappedPageLabelProps {\n ticketInfo: MappedTicketInfo;\n entityWithTickets: EntityWithRealTicketsPartial;\n}\n\nexport const MappedPageLabel = ({\n ticketInfo,\n entityWithTickets,\n}: MappedPageLabelProps) => {\n return (\n }\n />\n );\n};\n","import { clsx } from 'clsx';\nimport { getDocumentPageUniqueId } from 'src/components/UploadArtifacts/UploadETicketsV2';\nimport { MultiplePageDocumentProps } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents';\nimport { BasePageDocumentProps } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/BasePageDocumentProps';\nimport { ClearButton } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/ClearButton/ClearButton';\nimport { MappedPageLabel } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/MappedLabel/MappedPageLabel';\nimport * as styles from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/MultiplePageDocument/MultiplePageDocument.css';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDraggableIndicator } from 'src/core/POS/PosDragNDrop';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport type MultiplePageDocumentPageProps = MultiplePageDocumentProps &\n BasePageDocumentProps;\n\nexport const MultiplePageDocumentPage = ({\n page,\n pageIndex,\n onRemoveMappedTicket,\n pageUniqueIdToTicketMap,\n entityWithTickets,\n onPageClick,\n selectedUniquePageId,\n isDragElement,\n isDragging,\n onMouseEntersPage,\n onMouseLeavesPage,\n}: MultiplePageDocumentPageProps) => {\n const uniquePageId = getDocumentPageUniqueId(page);\n const isSelected = selectedUniquePageId === uniquePageId;\n const ticketInfo = pageUniqueIdToTicketMap[uniquePageId];\n\n return (\n ) => {\n e.stopPropagation();\n e.preventDefault();\n onPageClick(uniquePageId);\n }}\n onMouseEnter={() => {\n if (isDragging) {\n return;\n }\n onMouseEntersPage(uniquePageId);\n }}\n onMouseLeave={() => {\n if (isDragging) {\n return;\n }\n onMouseLeavesPage();\n }}\n >\n \n \n \n {pageIndex + 1}\n \n {!isDragElement && ticketInfo && entityWithTickets && (\n \n \n ) => {\n e.stopPropagation();\n e.preventDefault();\n onRemoveMappedTicket(ticketInfo);\n }}\n />\n \n )}\n \n \n \n );\n};\n","import { clsx } from 'clsx';\nimport { useMemo } from 'react';\nimport { CloseButton } from 'reactstrap';\nimport {\n getDocumentPageUniqueId,\n MappedTicketInfo,\n} from 'src/components/UploadArtifacts/UploadETicketsV2';\nimport { BasePageDocumentProps } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/BasePageDocumentProps';\nimport { ClearButton } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/ClearButton/ClearButton';\nimport { MappedPageLabel } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/MappedLabel/MappedPageLabel';\nimport * as styles from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/SinglePageDocument/SinglePageDocument.css';\nimport { PosDraggableIndicator } from 'src/core/POS/PosDragNDrop';\nimport { Stack } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { PaperTicketsIcon } from 'src/svgs/PaperTicketsIcon';\n\nexport type SinglePageDocumentPageProps = Omit<\n BasePageDocumentProps,\n 'page' | 'pageIndex'\n> & {\n onRemoveMappedTicket: (ticketInfo: MappedTicketInfo) => void;\n onPageClick: (uniquePageId: string) => void;\n onFileDeleted: () => void;\n};\n\nexport const SinglePageDocumentPage = ({\n documentFileUploadInfo,\n onFileDeleted,\n entityWithTickets,\n pageUniqueIdToTicketMap,\n isDragging,\n isDragElement,\n onRemoveMappedTicket,\n onPageClick,\n selectedUniquePageId,\n onMouseEntersPage,\n onMouseLeavesPage,\n}: SinglePageDocumentPageProps) => {\n const useMobileStyle = !useMatchMedia('largeDesktop');\n const { pages, file } = documentFileUploadInfo;\n const fileName = file!.name;\n\n const uniquePageId: string = useMemo(() => {\n const page = pages?.[0];\n if (!page) {\n return '';\n }\n return getDocumentPageUniqueId(page);\n }, [pages]);\n\n const ticketInfo = useMemo(() => {\n if (!pages?.length) {\n return undefined;\n }\n return pageUniqueIdToTicketMap[uniquePageId];\n }, [uniquePageId, pageUniqueIdToTicketMap, pages?.length]);\n\n const isSelected = selectedUniquePageId === uniquePageId;\n\n return (\n ) => {\n e.stopPropagation();\n e.preventDefault();\n onPageClick(uniquePageId);\n }}\n onMouseEnter={() => {\n if (isDragging) {\n return;\n }\n onMouseEntersPage(uniquePageId);\n }}\n onMouseLeave={() => {\n if (isDragging) {\n return;\n }\n onMouseLeavesPage();\n }}\n >\n \n
    \n \n {!useMobileStyle && }\n \n {fileName}\n
    \n \n {!isDragElement && (\n ) => {\n e.stopPropagation();\n e.preventDefault();\n onFileDeleted();\n }}\n />\n )}\n \n {!isDragElement && ticketInfo && (\n
    \n \n ) => {\n e.stopPropagation();\n e.preventDefault();\n onRemoveMappedTicket(ticketInfo);\n }}\n />\n
    \n )}\n \n \n );\n};\n","import { useDragLayer } from 'react-dnd';\nimport { draggingWrapperZIndex } from 'src/components/UploadArtifacts/UploadETicketsV2/constants';\nimport { MultiplePageDocumentPage } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/MultiplePageDocument/MultiplePageDocumentPage';\nimport { SinglePageDocumentPage } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/SinglePageDocument/SinglePageDocumentPage';\nimport {\n UploadETicketsDraggableData,\n UploadETicketsDraggableOrigin,\n} from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/UploadETicketsDraggableData';\n\nexport const PageDragPreview = () => {\n const { isDragging, item, currentOffset } = useDragLayer<\n any,\n UploadETicketsDraggableData\n >((monitor) => {\n const item = monitor.getItem() as { data: UploadETicketsDraggableData };\n const dragOrigin = item?.data?.origin;\n return {\n item,\n itemType: monitor.getItemType(),\n currentOffset:\n dragOrigin === UploadETicketsDraggableOrigin.PreviewModal\n ? monitor.getClientOffset()\n : monitor.getSourceClientOffset(),\n isDragging: monitor.isDragging(),\n };\n });\n\n if (!item || !item.data?.pageRef?.current || !isDragging || !currentOffset) {\n return null;\n }\n\n const { x: left, y: top } = currentOffset;\n const width = item.data.pageRef.current.clientWidth;\n\n const isSingleDocumentPage = item.data.isSinglePageDocument;\n return (\n \n {isSingleDocumentPage ? (\n \n ) : (\n \n )}\n \n );\n};\n","import { UploadETicketsDraggableSource } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Draggable/constants';\nimport * as styles from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/basePageDocument.css';\nimport {\n MultiplePageDocumentPage,\n MultiplePageDocumentPageProps,\n} from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/MultiplePageDocument/MultiplePageDocumentPage';\nimport {\n UploadETicketsDraggableData,\n UploadETicketsDraggableOrigin,\n} from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/UploadETicketsDraggableData';\nimport { PosDraggable } from 'src/core/POS/PosDragNDrop';\n\nexport const MultipleDraggableDocumentPage = (\n props: MultiplePageDocumentPageProps\n) => {\n return (\n \n className={styles.dragContainer}\n draggableSource={UploadETicketsDraggableSource}\n draggableData={{\n isSinglePageDocument: false,\n origin: UploadETicketsDraggableOrigin.TicketCard,\n componentProps: props,\n }}\n >\n \n \n );\n};\n","import { clsx } from 'clsx';\nimport { CloseButton } from 'reactstrap';\nimport { MappedTicketInfo } from 'src/components/UploadArtifacts/UploadETicketsV2';\nimport { BasePageDocumentProps } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/BasePageDocumentProps';\nimport { MultipleDraggableDocumentPage } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/MultiplePageDocument/MultipleDraggableDocumentPage';\nimport * as styles from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/MultiplePageDocument/MultiplePageDocument.css';\nimport { MultiplePageDocumentPageProps } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/MultiplePageDocument/MultiplePageDocumentPage';\nimport { Stack } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { PaperTicketsIcon } from 'src/svgs/PaperTicketsIcon';\n\nexport type MultiplePageDocumentProps = Omit<\n BasePageDocumentProps,\n 'page' | 'pageIndex'\n> & {\n onRemoveMappedTicket: (ticketInfo: MappedTicketInfo) => void;\n onPageClick: (uniquePageId: string) => void;\n onFileDeleted: () => void;\n};\n\nexport const MultiplePageDocument = (props: MultiplePageDocumentProps) => {\n const { documentFileUploadInfo, onFileDeleted } = props;\n const { pages, file } = documentFileUploadInfo;\n const fileName = file?.name || '';\n const isMobile = useMatchMedia('mobile');\n\n return (\n \n \n \n \n {!isMobile && }\n
    {fileName}
    \n
    \n ) => {\n e.stopPropagation();\n e.preventDefault();\n onFileDeleted();\n }}\n />\n \n {(pages ?? []).map((page, pageIndex) => {\n const draggableMultiplePageDocumentProps: MultiplePageDocumentPageProps =\n {\n ...props,\n page,\n pageIndex,\n };\n return (\n \n );\n })}\n \n \n );\n};\n","import { UploadETicketsDraggableSource } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Draggable/constants';\nimport * as styles from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/SinglePageDocument/SinglePageDocument.css';\nimport {\n SinglePageDocumentPage,\n SinglePageDocumentPageProps,\n} from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/SinglePageDocument/SinglePageDocumentPage';\nimport {\n UploadETicketsDraggableData,\n UploadETicketsDraggableOrigin,\n} from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/UploadETicketsDraggableData';\nimport { PosDraggable } from 'src/core/POS/PosDragNDrop';\n\nexport const SingleDraggablePageDocument = (\n props: SinglePageDocumentPageProps\n) => {\n const { pages } = props.documentFileUploadInfo;\n const page = pages?.[0]!;\n return (\n \n className={styles.dragContainer}\n draggableSource={UploadETicketsDraggableSource}\n draggableData={{\n isSinglePageDocument: true,\n origin: UploadETicketsDraggableOrigin.TicketCard,\n componentProps: {\n ...props,\n page,\n pageIndex: 0, // zero because is a file with a single page\n },\n }}\n >\n \n \n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const UploadETicketsInstructions = styled.p`\n color: ${(props) => props.theme.colors.textPrimary};\n`;\n\nexport const UploadETicketsSubInstructions = styled.p`\n color: ${(props) => props.theme.colors.textPrimary};\n font-size: ${vars.typography.fontSize['sm']};\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nexport const UploadETicketsThumbnailContainer = styled.div`\n min-width: 200px;\n padding-right: ${vars.spacing.sm};\n height: calc(100% - ${vars.spacing.xl});\n overflow-y: auto;\n\n .draggable-page {\n padding: ${vars.spacing.xl};\n &:hover {\n background-color: ${(props) => props.theme.colors.backgroundSecondary};\n }\n }\n`;\n\nexport const UploadETicketsThumbnailLoader = styled.div`\n border: 1px solid ${(props) => props.theme.colors.borderPrimary};\n padding: ${() => vars.spacing.lg};\n &:not(:last-child) {\n margin-bottom: ${() => vars.spacing.lg};\n }\n`;\n\nexport const UploadETicketsThumbnailAssigned = styled.div`\n padding: ${vars.spacing.lg} ${vars.spacing.lg} ${vars.spacing.lg}\n ${vars.spacing.xxl};\n &:hover {\n background-color: ${(props) => props.theme.colors.backgroundSecondary};\n }\n`;\n\nexport const UploadETicketsThumbnailAssignedMappedTo = styled.div`\n display: flex;\n div {\n margin-left: ${vars.spacing.sm};\n }\n`;\n\nexport const UploadETicketsSeatingContainer = styled.div`\n height: calc(100% - ${vars.spacing.xl});\n overflow-y: auto;\n overflow-x: hidden;\n\n .draggable-seat {\n &:hover {\n background-color: ${(props) => props.theme.colors.backgroundSecondary};\n }\n }\n`;\n\nexport const UploadETicketsSeatingPlaceholder = styled.div`\n color: ${(props) => props.theme.colors.textPrimaryHover};\n padding: ${vars.spacing.lg};\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n padding: ${vars.spacing['3xl']};\n `\n )}`}\n`;\n\nexport const UploadETicketsSeat = styled.div`\n height: fit-content;\n overflow: hidden;\n &:not(:last-child) {\n margin-bottom: ${vars.spacing.lg};\n }\n`;\n\nexport const PreviewTicket = styled.div`\n width: 100%;\n margin-bottom: ${vars.spacing.lg};\n`;\n\nexport const Divider = styled.hr`\n border: none;\n border-bottom: 4px dotted ${(props) => props.theme.colors.borderPrimary};\n margin: ${vars.spacing.sm} 0;\n`;\n\nexport const SeatLabel = styled.div`\n margin-bottom: ${vars.spacing.sm};\n`;\n","import { CancelButton } from 'src/components/Buttons';\nimport { DocumentFileUploadInfo } from 'src/components/UploadArtifacts/UploadETicketsV2';\nimport {\n UploadETicketsSubInstructions,\n UploadETicketsThumbnailLoader,\n} from 'src/components/UploadArtifacts/UploadETicketsV2/UploadETickets.styled';\nimport { FormatContent } from 'src/contexts/ContentContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\n\ninterface UploadETicketsUploadingFileProps {\n onCancel: (documentFileUploadInfo: DocumentFileUploadInfo) => void;\n documentFileUploadInfo: DocumentFileUploadInfo;\n}\n\nexport const UploadETicketsUploadingFile = ({\n onCancel,\n documentFileUploadInfo,\n}: UploadETicketsUploadingFileProps) => {\n return (\n \n \n {documentFileUploadInfo.file?.name ? (\n \n ) : (\n ' '\n )}\n {documentFileUploadInfo.uploadInfo && (\n // Only allow cancel once the file is uploaded and is only pollling for pages\n onCancel(documentFileUploadInfo)} />\n )}\n \n \n \n );\n};\n","import { useCallback, useEffect, useMemo } from 'react';\nimport { useDragLayer } from 'react-dnd';\nimport { useFormContext, useWatch } from 'react-hook-form';\nimport { EntityWithRealTicketsPartial } from 'src/components/UploadArtifacts/UploadETicketsV2';\nimport { useUploadETicketsContext } from 'src/components/UploadArtifacts/UploadETicketsV2/UploadETicketsContext';\nimport { PageDragPreview } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Draggable/PageDragPreview/PageDragPreview';\nimport {\n MultiplePageDocument,\n SingleDraggablePageDocument,\n} from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents';\nimport { UploadETicketsUploadingFile } from 'src/components/UploadArtifacts/UploadETicketsV2/views/UploadETicketsUploadingFile';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DnDFileUploader } from 'src/core/POS/DnDFileUploader';\nimport { useDndFilerUploaderContext } from 'src/core/POS/DnDFileUploader/DndFileUploaderContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { MAX_ALLOWED_UPLOAD_FILE_SIZE } from 'src/core/utils';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { IconsFill, UploadIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getFileHash } from 'src/utils/fileUtils';\n\nimport * as styles from '../UploadETickets.css';\nimport { UploadETicketsThumbnailContainer } from '../UploadETickets.styled';\nimport {\n DocumentFileUploadInfo,\n ETicketsForm,\n getDocumentPageIdToTicketMap,\n getDocumentPageUniqueId,\n MappedTicketInfo,\n PageUniqueIdToTicketMap,\n} from '../UploadETickets.utils';\n\nexport function UploadETicketsTicketsSection({\n eTicketUploadInfos,\n setETicketUploadInfos,\n entityWithTickets,\n}: {\n entityWithTickets: EntityWithRealTicketsPartial;\n eTicketUploadInfos: DocumentFileUploadInfo[];\n setETicketUploadInfos: (infos: DocumentFileUploadInfo[]) => void;\n}) {\n const isMobile = useMatchMedia('mobile');\n const { setValue } = useFormContext();\n const watchTickets = useWatch({ name: 'ticketAssignments' });\n const { setDndFileUploaderContext, selectFiles } =\n useDndFilerUploaderContext();\n\n const {\n setPageUniqueIdToTicketMap,\n setSelectedUniquePageId,\n selectedUniquePageId,\n setHoverUniquePageId,\n } = useUploadETicketsContext();\n\n const pageUniqueIdToTicketMap = useMemo(\n () =>\n getDocumentPageIdToTicketMap(watchTickets, entityWithTickets!.tickets),\n [entityWithTickets, watchTickets]\n );\n\n useEffect(() => {\n setPageUniqueIdToTicketMap(pageUniqueIdToTicketMap);\n }, [pageUniqueIdToTicketMap, setPageUniqueIdToTicketMap]);\n\n const { isDragging } = useDragLayer((monitor) => {\n return {\n isDragging: monitor.isDragging(),\n };\n });\n\n const removeTicketFromSeat = useCallback(\n ({ ticket, ticketIndex }: MappedTicketInfo) => {\n setValue(\n `ticketAssignments.${ticketIndex}`,\n {\n entityId: ticket.id,\n documentId: '',\n pageNumber: 0,\n pageId: '',\n pageUri: '',\n documentUri: '',\n documentType: null,\n },\n { shouldValidate: true }\n );\n },\n [setValue]\n );\n\n const onFileDeleted = useCallback(\n (ui: DocumentFileUploadInfo) => {\n if (ui.pages) {\n // If any of the page is mapped, unmap it\n ui.pages.forEach((ep) => {\n const mappedToTicket =\n pageUniqueIdToTicketMap[getDocumentPageUniqueId(ep)];\n if (mappedToTicket) {\n removeTicketFromSeat(mappedToTicket);\n }\n });\n }\n ui.file = undefined;\n ui.uploadInfo = undefined;\n ui.pages = undefined;\n\n setETicketUploadInfos([...eTicketUploadInfos]);\n },\n [\n eTicketUploadInfos,\n pageUniqueIdToTicketMap,\n removeTicketFromSeat,\n setETicketUploadInfos,\n ]\n );\n\n const onNewFileSelected = useCallback(\n async (files: File[]) => {\n const currentUploadedFileHashes: string[] = await Promise.all(\n eTicketUploadInfos\n .map((documentFileUploadInfo) => documentFileUploadInfo.file)\n .filter((f) => !!f)\n .map((file) => getFileHash(file!))\n );\n\n const filesToUpload: File[] = [];\n\n for await (const file of files) {\n const hash = await getFileHash(file!);\n if (!currentUploadedFileHashes.includes(hash)) {\n filesToUpload.push(file);\n\n // This function may recibe all selected files while the modal is open,\n // so, it may contain duplicated files.\n currentUploadedFileHashes.push(hash);\n }\n }\n\n if (filesToUpload.length === 0) {\n return;\n }\n\n const newUploadUIs = filesToUpload.map((file) => ({\n file,\n pages: [],\n uploadInfo: undefined,\n }));\n\n setETicketUploadInfos([...newUploadUIs, ...eTicketUploadInfos]);\n },\n [eTicketUploadInfos, setETicketUploadInfos]\n );\n\n const dropFiles = (\n
    \n \n
    \n );\n\n const onPageClick = useCallback(\n (pageId: string) => {\n if (isMobile) {\n if (selectedUniquePageId === pageId) {\n setSelectedUniquePageId(undefined);\n return;\n }\n }\n setSelectedUniquePageId(pageId);\n },\n [isMobile, selectedUniquePageId, setSelectedUniquePageId]\n );\n\n const onMouseEntersPage = useCallback(\n (uniquePageId: string) => {\n if (isMobile) {\n return;\n }\n setHoverUniquePageId(uniquePageId);\n },\n [isMobile, setHoverUniquePageId]\n );\n\n const onMouseLeavesPage = useCallback(() => {\n if (isMobile) {\n return;\n }\n setHoverUniquePageId(undefined);\n }, [isMobile, setHoverUniquePageId]);\n\n return (\n
    \n
    \n \n {!isMobile && (\n \n \n \n \n )}\n
    \n
    \n \n {isMobile && dropFiles}\n {eTicketUploadInfos\n .filter((ui) => !!ui.file)\n .map((ui, ticketDocumentIndex) => {\n const key = `e-ticket-file-${ticketDocumentIndex}`;\n const isBeingProcessed = ui.file?.name && !ui.pages?.length;\n\n // If the ui has uploadInfo but no pages, it's being uploaded/processed, so just display a spinner for the file\n if (isBeingProcessed) {\n return (\n \n );\n }\n\n // Has no uploadInfo or has pages, display component to display thumbnail or single-file uploader\n return (\n \n {ui.pages?.length === 1 ? (\n onFileDeleted(ui)}\n pageUniqueIdToTicketMap={pageUniqueIdToTicketMap}\n entityWithTickets={entityWithTickets}\n onRemoveMappedTicket={removeTicketFromSeat}\n onPageClick={onPageClick}\n selectedUniquePageId={selectedUniquePageId}\n isDragging={isDragging}\n onMouseEntersPage={onMouseEntersPage}\n onMouseLeavesPage={onMouseLeavesPage}\n />\n ) : (\n onFileDeleted(ui)}\n pageUniqueIdToTicketMap={pageUniqueIdToTicketMap}\n entityWithTickets={entityWithTickets}\n onRemoveMappedTicket={removeTicketFromSeat}\n onPageClick={onPageClick}\n selectedUniquePageId={selectedUniquePageId}\n isDragging={isDragging}\n onMouseEntersPage={onMouseEntersPage}\n onMouseLeavesPage={onMouseLeavesPage}\n />\n )}\n
    \n );\n })}\n {!isMobile && dropFiles}\n \n \n
    \n );\n}\n","import { useLayoutEffect, useState } from 'react';\n\ninterface UseOnElementResizeProps {\n element?: HTMLDivElement | null | undefined;\n callback: (entries: ResizeObserverEntry[]) => void;\n}\n\nexport const useOnElementResize = ({\n element,\n callback,\n}: UseOnElementResizeProps) => {\n const [resizeObserverEntries, setResizeObserverEntries] = useState<\n ResizeObserverEntry[]\n >([]);\n\n useLayoutEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n callback?.(entries);\n setResizeObserverEntries(entries);\n });\n\n if (element) {\n resizeObserver.observe(element || document.body);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [callback, element]);\n\n return resizeObserverEntries;\n};\n","import { useEffect, useState } from 'react';\n\ninterface UseTimeoutFlagProps {\n msTimeout?: number;\n}\n\n/**\n * Returns true after the specified timeout time.\n */\nexport const useTimeoutFlag = ({ msTimeout }: UseTimeoutFlagProps) => {\n const [hasTimedOut, setHasTimedOut] = useState(false);\n\n useEffect(() => {\n setTimeout(() => {\n setHasTimedOut(true);\n }, msTimeout);\n }, [msTimeout]);\n\n return hasTimedOut;\n};\n","import { clsx } from 'clsx';\nimport {\n SeatInfo,\n SeatInfoProps,\n} from 'src/components/UploadArtifacts/UploadETicketsV2/views/Seats/SeatInfo/SeatInfo';\nimport { ClearButton } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/ClearButton/ClearButton';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { PageIcon } from 'src/svgs/PageIcon';\n\nimport * as styles from './MappedSeat.css';\n\ninterface MappedSeatProps {\n seatInfo: SeatInfoProps;\n fileName: string;\n onUnMapSeat: () => void;\n isSelected: boolean;\n onClick: () => void;\n}\n\nexport const MappedSeat = ({\n seatInfo,\n fileName,\n onUnMapSeat,\n isSelected,\n onClick,\n}: MappedSeatProps) => {\n const useMobileStyle = !useMatchMedia('largeDesktop');\n return (\n ) => {\n e.stopPropagation();\n e.preventDefault();\n onClick();\n }}\n >\n \n \n \n \n {fileName}\n \n ) => {\n e.stopPropagation();\n e.preventDefault();\n onUnMapSeat();\n }}\n />\n \n \n );\n};\n","import { clsx } from 'clsx';\nimport {\n SeatInfo,\n SeatInfoProps,\n} from 'src/components/UploadArtifacts/UploadETicketsV2/views/Seats/SeatInfo/SeatInfo';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './UnMappedSeat.css';\n\ninterface UnmappedSeatProps {\n seatInfo: SeatInfoProps;\n highlightDrop: boolean;\n}\n\nexport const UnMappedSeat = ({\n seatInfo,\n highlightDrop,\n}: UnmappedSeatProps) => {\n return (\n \n \n \n \n \n \n );\n};\n","import { useCallback, useEffect, useMemo } from 'react';\nimport { useDragLayer } from 'react-dnd';\nimport { useFormContext, useWatch } from 'react-hook-form';\nimport { EntityWithRealTicketsPartial } from 'src/components/UploadArtifacts/UploadETicketsV2';\nimport { useUploadETicketsContext } from 'src/components/UploadArtifacts/UploadETicketsV2/UploadETicketsContext';\nimport { UploadETicketsDraggableSource } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Draggable/constants';\nimport { droppable } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Seats/droppable.css';\nimport { MappedSeat } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Seats/MappedSeat/MappedSeat';\nimport { SeatInfoProps } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Seats/SeatInfo/SeatInfo';\nimport { UnMappedSeat } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Seats/UnmappedSeat/UnmappedSeat';\nimport { UploadETicketsDraggableData } from 'src/components/UploadArtifacts/UploadETicketsV2/views/Tickets/Documents/UploadETicketsDraggableData';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ErrorMessage } from 'src/core/POS/ErrorMessage';\nimport { PosDroppable } from 'src/core/POS/PosDragNDrop';\nimport { PosCustomDragLayer } from 'src/core/POS/PosDragNDrop/PosCustomDragLayer';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n DocumentPage,\n DocumentType,\n Ticket,\n TicketType,\n UserDocumentLinks,\n} from 'src/WebApiController';\n\nimport * as styles from '../UploadETickets.css';\nimport {\n UploadETicketsSeat,\n UploadETicketsSeatingContainer,\n} from '../UploadETickets.styled';\nimport {\n DocumentFileUploadInfo,\n ETicketsForm,\n getDocumentPageUniqueId,\n getETicketDocumentPageUniqueId,\n getPageToDocumentFileUploadInfoMap,\n UniquePageIdToDocumentFileUploadInfoMap,\n} from '../UploadETickets.utils';\n\nexport function UploadETicketsSeatingSection({\n entityWithTickets,\n eTicketUploadInfos,\n ticketType,\n}: {\n entityWithTickets: EntityWithRealTicketsPartial;\n ticketType: TicketType.ETicket | TicketType.QRCode;\n eTicketUploadInfos: DocumentFileUploadInfo[];\n}) {\n const uniquePageIdToDocumentFileUploadInfoMap: UniquePageIdToDocumentFileUploadInfoMap =\n useMemo(\n () => getPageToDocumentFileUploadInfoMap(eTicketUploadInfos),\n [eTicketUploadInfos]\n );\n const { setValue, clearErrors, formState } = useFormContext();\n const watchTickets: UserDocumentLinks[] = useWatch({\n name: 'ticketAssignments',\n });\n\n const hasMappings = useMemo(() => {\n return watchTickets.some((ticket) => ticket.documentId.length > 0);\n }, [watchTickets]);\n\n const {\n setUniquePageIdToDocumentFileUploadInfoMap,\n selectedUniquePageId,\n setSelectedUniquePageId,\n selectNextUnmappedTicket,\n } = useUploadETicketsContext();\n\n useEffect(() => {\n setUniquePageIdToDocumentFileUploadInfoMap(\n uniquePageIdToDocumentFileUploadInfoMap\n );\n }, [\n setUniquePageIdToDocumentFileUploadInfoMap,\n uniquePageIdToDocumentFileUploadInfoMap,\n ]);\n\n const onDroppingToSeat = useCallback(\n (eTicket: DocumentPage, ticket: Ticket, ticketIndex: number) => {\n setValue(`ticketAssignments.${ticketIndex}`, {\n entityId: ticket.id,\n documentId: eTicket.documentId,\n pageNumber: eTicket.pageNumber,\n pageId: eTicket.id,\n pageUri: eTicket.thumbUrl,\n documentUri: eTicket.documentUrl,\n documentType:\n ticketType === TicketType.ETicket\n ? DocumentType.ETicket\n : DocumentType.QRCode,\n });\n clearErrors(`ticketAssignments.${ticketIndex}`);\n setSelectedUniquePageId(getDocumentPageUniqueId(eTicket));\n },\n [clearErrors, setSelectedUniquePageId, setValue, ticketType]\n );\n\n const onUnmappingFromSeat = useCallback(\n (ticket: Ticket, ticketIndex: number) => {\n setValue(`ticketAssignments.${ticketIndex}`, {\n entityId: ticket.id,\n documentId: '',\n pageNumber: 0,\n pageId: '',\n pageUri: '',\n documentUri: '',\n documentType: null,\n });\n },\n [setValue]\n );\n\n const onClearAll = useCallback(() => {\n entityWithTickets.tickets.forEach((ticket, ticketIndex) => {\n onUnmappingFromSeat(ticket, ticketIndex);\n });\n }, [entityWithTickets.tickets, onUnmappingFromSeat]);\n\n const { isDragging } = useDragLayer((monitor) => {\n return {\n isDragging: monitor.isDragging(),\n };\n });\n\n return (\n
    \n
    \n \n \n \n \n
    \n
    \n \n {entityWithTickets.tickets.map((ticket, ticketIndex) => {\n const assignment = watchTickets.find(\n (wt) => wt.entityId === ticket.id\n );\n const uniquePageId =\n (assignment && getETicketDocumentPageUniqueId(assignment)) ?? '';\n const docUploadInfos =\n assignment && uniquePageIdToDocumentFileUploadInfoMap[uniquePageId];\n\n const error =\n formState?.errors?.ticketAssignments?.[ticketIndex]?.message;\n\n const eTicketPage = docUploadInfos?.page;\n const seatInfo: SeatInfoProps = {\n section: entityWithTickets.seating.section,\n row: ticket.row,\n seatFr: ticket.seat,\n ticketIndex: ticketIndex,\n };\n return (\n \n \n hideBorder={true}\n onOverClassnames={droppable}\n draggableSource={UploadETicketsDraggableSource}\n onDrop={(args: { data: UploadETicketsDraggableData }) => {\n const page = args.data.componentProps.page;\n if (eTicketPage) {\n if (\n eTicketPage.id === page.id &&\n eTicketPage.documentId === page.documentId\n ) {\n // same stuff, dont' do anything\n return;\n } else {\n // Unmap the seat first prior to setting a new one, so that the rendering can happen properly\n onUnmappingFromSeat(ticket, ticketIndex);\n }\n }\n\n // If the dropped page was already assigned before\n const assignedTicket = watchTickets.find(\n (wt) =>\n wt.documentId === page.documentId && wt.pageId === page.id\n );\n if (assignedTicket) {\n const ticketToUnassign = entityWithTickets.tickets.find(\n (wt) => wt.id === assignedTicket.entityId\n );\n if (ticketToUnassign) {\n const ticketIndexToUnassign =\n entityWithTickets.tickets.indexOf(ticketToUnassign);\n onUnmappingFromSeat(\n ticketToUnassign,\n ticketIndexToUnassign\n );\n }\n }\n onDroppingToSeat(page, ticket, ticketIndex);\n selectNextUnmappedTicket(getDocumentPageUniqueId(page));\n }}\n >\n {eTicketPage && !isDragging ? (\n onUnmappingFromSeat(ticket, ticketIndex)}\n isSelected={\n !!selectedUniquePageId &&\n uniquePageId === selectedUniquePageId\n }\n onClick={() => setSelectedUniquePageId(uniquePageId)}\n />\n ) : (\n \n )}\n \n {error && {error}}\n \n \n );\n })}\n \n
    \n );\n}\n","import { useEffect, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useFormContext, useWatch } from 'react-hook-form';\nimport { ticketsAndSeatsZIndex } from 'src/components/UploadArtifacts/UploadETicketsV2/constants';\nimport { useUploadETicketsContext } from 'src/components/UploadArtifacts/UploadETicketsV2/UploadETicketsContext';\nimport { UploadETicketsPreviewTicketModal } from 'src/components/UploadArtifacts/UploadETicketsV2/views/PreviewModal/UploadETicketsPreviewTicketModal';\nimport { UploadETicketsTicketsSection } from 'src/components/UploadArtifacts/UploadETicketsV2/views/UploadETicketsTicketsSection';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useDndFilerUploaderContext } from 'src/core/POS/DnDFileUploader/DndFileUploaderContext';\nimport { vars } from 'src/core/themes';\nimport { mergeProps } from 'src/core/utils';\nimport { useOnElementResize } from 'src/hooks/useOnElementResize';\nimport { useTimeoutFlag } from 'src/hooks/useTimeoutFlag';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport { TicketType, UserDocumentLinks } from 'src/WebApiController';\n\nimport * as styles from '../UploadETickets.css';\nimport {\n UploadETicketsInstructions,\n UploadETicketsSubInstructions,\n} from '../UploadETickets.styled';\nimport {\n DocumentFileUploadInfo,\n ETicketsForm,\n getDocumentPageUniqueId,\n} from '../UploadETickets.utils';\nimport { UploadETicketsSeatingSection } from './UploadETicketsSeatingSection';\n\nexport type EntityWithRealTicketsPartial = Pick<\n EntityWithRealTickets,\n 'viagVirtualId' | 'id' | 'ticketCnt' | 'tickets' | 'seating' | 'entityType'\n>;\nconst onWindowResize = (entries: ResizeObserverEntry[]) => {};\n\nexport const UploadETicketsSeatAssignmentBody = ({\n entityWithTickets,\n ticketType,\n eTicketUploadInfos,\n setETicketUploadInfos,\n className,\n}: {\n entityWithTickets: EntityWithRealTicketsPartial;\n ticketType: TicketType.ETicket | TicketType.QRCode;\n eTicketUploadInfos: DocumentFileUploadInfo[];\n setETicketUploadInfos: (infos: DocumentFileUploadInfo[]) => void;\n className?: string;\n}) => {\n const { setValue } = useFormContext();\n const watchedTickets: UserDocumentLinks[] = useWatch({\n name: 'ticketAssignments',\n });\n const autoAssignment = useRef(true);\n const { isDragging } = useDndFilerUploaderContext();\n const { setSelectedUniquePageId } = useUploadETicketsContext();\n const ticketsSectionPortalRef = useRef(null);\n const hasRenderModalAnimation = useTimeoutFlag({ msTimeout: 500 });\n\n /*\n * Use to trigger window repaint on browser window change size because\n * the portal positioning element needs to know about it to recalculate\n * the width.\n */\n useOnElementResize({\n element: ticketsSectionPortalRef.current,\n callback: onWindowResize,\n });\n\n useEffect(() => {\n const allPagesAvailable =\n eTicketUploadInfos.find(\n (ui) => ui.file && ui.uploadInfo && (ui.pages?.length || 0) === 0\n ) == null; // returns false where any uploadInfo (that has file and uploadInfo) has no pages\n if (autoAssignment.current && allPagesAvailable) {\n // Only perform once, and perform only when all pages are available\n const allPages = eTicketUploadInfos\n .flatMap((ui) => ui.pages)\n .filter((p) => p);\n if (\n allPages.length > 0 && // if we have pages to assigne\n watchedTickets.filter((t) => t.pageId !== '').length === 0 // and we have not assign any ticket to any seat\n ) {\n // Try to auto-assign seat based on order of the pages\n // Users can re-adjust if they see fit\n // TODO - we can probably use some smart-scanning features to figure out which page is for which seat\n watchedTickets.forEach((t, index) => {\n if (index < allPages.length) {\n const page = allPages[index];\n t.documentId = page!.documentId;\n t.pageId = page!.id;\n t.pageNumber = page!.pageNumber;\n t.pageUri = page!.thumbUrl;\n t.documentUri = page!.documentUrl;\n }\n });\n\n setValue('ticketAssignments', [...watchedTickets]);\n autoAssignment.current = false;\n const firstPage = allPages[0];\n if (firstPage) {\n setSelectedUniquePageId(getDocumentPageUniqueId(firstPage));\n }\n }\n }\n }, [setSelectedUniquePageId, eTicketUploadInfos, setValue, watchedTickets]);\n\n return (\n \n
    \n {ticketsSectionPortalRef?.current &&\n hasRenderModalAnimation &&\n createPortal(\n \n \n \n \n \n \n \n
    \n \n \n \n
    \n
    ,\n document.body\n )}\n
    \n );\n};\n","import { useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport {\n DocumentFileUploadInfo,\n UploadETicketForm,\n UploadETicketsSeatAssignmentBody,\n} from 'src/components/UploadArtifacts/UploadETicketsV2';\nimport { UploadETicketsContextProvider } from 'src/components/UploadArtifacts/UploadETicketsV2/UploadETicketsContext';\nimport { Stack } from 'src/core/ui';\nimport { PurchaseWizardFooter } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { toEntityWithTicket } from 'src/utils/ticketUtils';\nimport {\n ActionOutboxEntityType,\n DocumentProcessorClient,\n DocumentUploadInfo,\n FileParameter,\n PosClientConfig,\n PosUiActionResult,\n TicketType,\n UserDocumentLinks,\n} from 'src/WebApiController';\n\nimport {\n ticketGroupInputFooter,\n ticketGroupPredeliveryBody,\n} from '../PurchaseTicketFlow.css';\n\nexport interface UploadETicketsSectionV2Props {\n ticketGroupIndex: number;\n ticketType: TicketType.ETicket | TicketType.QRCode;\n onCancel: () => void;\n}\n\nexport const UploadETicketsSectionV2 = ({\n ticketGroupIndex,\n ticketType,\n onCancel,\n}: UploadETicketsSectionV2Props) => {\n const { setValue, watch } = useFormContext();\n const ticketGroup = watch(`ticketGroups.${ticketGroupIndex}`);\n\n const onUploadETickets = (\n _: PosClientConfig,\n entityId: number,\n etickets: UserDocumentLinks[]\n ) => {\n const newTickets = ticketGroup.tickets?.value?.map((t) => {\n const tb = etickets.find((b) => b.entityId === t.id);\n if (tb) {\n if (ticketType === TicketType.ETicket) {\n t.eTicket = tb;\n } else {\n t.qrCode = tb;\n }\n return { ...t };\n }\n return t;\n });\n\n setValue(\n `ticketGroups.${ticketGroupIndex}.tickets`,\n posChangedField(newTickets ?? null)\n );\n\n setValue('updatePredeliveryETicketArtifacts', true);\n\n return Promise.resolve({\n status: 200,\n entityId,\n entityType: ActionOutboxEntityType.Purchase,\n } as PosUiActionResult);\n };\n\n const onUploadDocuments = (\n client: DocumentProcessorClient,\n docUploadInfo: DocumentUploadInfo,\n file: FileParameter\n ) =>\n client.uploadDocumentForListing(\n docUploadInfo.entityId,\n ActionOutboxEntityType.Listing,\n docUploadInfo.documentType,\n docUploadInfo.blobName,\n docUploadInfo.documentId,\n docUploadInfo.contentType,\n file\n );\n\n const entityWithTickets = useMemo(\n () => toEntityWithTicket(ticketGroup),\n [ticketGroup]\n );\n\n return (\n \n void,\n onNext: () => void,\n onCancel: () => void,\n disabled?: boolean\n ) => (\n \n \n\n \n \n )}\n />\n \n );\n};\n","import { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n UploadETicketsSection,\n UploadETicketsSectionProps,\n} from 'src/modals/PurchaseWizard/PurchaseTicketsFlow/components/UploadETicketsSection';\nimport { UploadETicketsSectionV2 } from 'src/modals/PurchaseWizard/PurchaseTicketsFlowV2/components/UploadETicketsSectionV2';\nimport { Feature } from 'src/WebApiController';\n\ntype UploadETicketsVersionSelectorProps = UploadETicketsSectionProps;\n\nexport const UploadETicketsSectionSelector = ({\n ticketType,\n ticketGroupIndex,\n onCancel,\n}: UploadETicketsVersionSelectorProps) => {\n const hasUploadTicketFilesFlowV2 = useUserHasFeature(\n Feature.UploadTicketFilesFlowV2\n );\n\n if (hasUploadTicketFilesFlowV2) {\n return (\n \n );\n }\n\n return (\n \n );\n};\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const withoutEmptyValues = (arr: any[]) => {\n return arr.filter(\n (val) =>\n val !== '' &&\n val !== null &&\n val !== undefined &&\n (Array.isArray(val)\n ? val.length !== undefined\n ? val.length > 0\n : true\n : true)\n );\n};\n","import { withoutEmptyValues } from './helpers';\n\n// Determine if all values in a collection are unique\nexport function uniqueValues(\n values: unknown[],\n accessorFn?: (val: unknown) => unknown\n) {\n // apply accessorFn if passed\n let valuesToCheck = accessorFn ? values.map(accessorFn) : values;\n\n // ignore empty type values as duplicates\n valuesToCheck = withoutEmptyValues(valuesToCheck);\n\n // sets remove dupe values since all must be unique\n const set = new Set(valuesToCheck);\n\n // if same size, nothing was removed thus all unique\n return valuesToCheck.length === set.size;\n}\n\n// Determine difference between values size and desired count\nexport function requiredCount(\n values: unknown[],\n required: number,\n accessorFn?: (val: unknown) => unknown\n) {\n // apply accessorFn if passed\n const allValues = accessorFn ? values.map(accessorFn) : values;\n\n // empty values are missing values\n const nonEmptyValues = withoutEmptyValues(allValues);\n\n if (allValues.length > required) {\n // Extra values, return positive difference\n return allValues.length - required;\n } else if (nonEmptyValues.length < required) {\n // Missing values, return negative difference\n return nonEmptyValues.length - required;\n }\n\n return 0;\n}\n\n/**\n * Determine if a value is unique within the array of values.\n * @param value: target value to look for in the array\n * @param allValues: values to search for value in\n * @param inclusive?: whether allValues should already include a single occurrence of the value\n * ie. we are asserting the value is already in the array allValues only once\n */\nexport function isUniqueWithin(value: T, allValues: T[], inclusive = true) {\n const expectedLength = inclusive ? 1 : 0;\n const filteredOutEmptyValues = withoutEmptyValues(allValues);\n return (\n !value ||\n filteredOutEmptyValues.filter((x) => x === value).length === expectedLength\n );\n}\n","import { UseFormSetError } from 'react-hook-form';\nimport { IErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { isUniqueWithin } from 'src/utils/validation';\nimport {\n PosClientConfig,\n SaleClient,\n TicketBarcode,\n} from 'src/WebApiController';\n\nexport type BarcodeForm = {\n isBulkUpload: boolean;\n barcodes: TicketBarcode[];\n};\nexport const checkDuplicateBarcodes = async (\n entityId: number,\n barcodes: TicketBarcode[],\n activeAccountWebClientConfig: PosClientConfig,\n alreadyReportedUsedBarcodes: string[],\n setAlreadyReportedUsedBarcodes: (barcodes: string[]) => void,\n onDuplicateBarcode: (index: number) => void,\n onBeforeCheck?: () => void,\n onAfterCheck?: () => void,\n showErrorDialog?: IErrorBoundaryContext['showErrorDialog'],\n viagVirtualId?: string\n): Promise => {\n return tryInvokeApi(\n async () => {\n onBeforeCheck?.();\n\n if (!barcodes) {\n return false;\n }\n\n const existingBarcodes = await new SaleClient(\n activeAccountWebClientConfig\n ).getBarcodesAlreadyInUse(viagVirtualId, barcodes);\n\n if (existingBarcodes) {\n // Get all the used barcodes that have not yet been reported\n const unreportedBarCodes = existingBarcodes.filter(\n (b) => !alreadyReportedUsedBarcodes.includes(b.barcode)\n );\n if (unreportedBarCodes.length > 0) {\n // We're reporting the dup warnings, so save it so we don't report on it again\n // We want to set all of it (not just the latest unreported barcodes)\n setAlreadyReportedUsedBarcodes(\n existingBarcodes.map((tb) => tb.barcode)\n );\n\n let hasErrors = false;\n existingBarcodes.forEach((tb) => {\n const index = barcodes.findIndex((b) => b.ticketId === tb.ticketId);\n\n if (index >= 0) {\n hasErrors = true;\n onDuplicateBarcode(index);\n }\n });\n\n return hasErrors;\n }\n }\n\n return false;\n },\n (error) => {\n showErrorDialog?.('SaleClient.getBarcodesAlreadyInUse', error, {\n trackErrorData: {\n saleId: entityId,\n barcodes,\n },\n });\n },\n () => onAfterCheck?.()\n );\n};\n\nexport const checkBarcodeErrors = (\n isBulkUpload: boolean,\n barcodes: TicketBarcode[],\n ticketCnt: number,\n setError: UseFormSetError,\n requiredMsg: string,\n missingMsg: string,\n extraMsg: string,\n duplicateMsg: string\n) => {\n let hasErrors = false;\n const barcodesProvided =\n barcodes?.map((b) => b.barcode).filter((b) => b?.length) ?? [];\n if (isBulkUpload) {\n const barcodesProvided =\n barcodes?.map((b) => b.barcode).filter((b) => b?.length) ?? [];\n if (barcodesProvided.length < ticketCnt) {\n hasErrors = true;\n setError(`barcodes`, { message: missingMsg as string }); // for the bulk-edit inputs\n } else if (barcodesProvided.length > ticketCnt) {\n hasErrors = true;\n setError(`barcodes`, { message: extraMsg as string }); // for the bulk-edit inputs\n }\n }\n\n barcodes?.forEach((b, i) => {\n if (!b.barcode) {\n hasErrors = true;\n setError(`barcodes.${i}.barcode`, { message: requiredMsg });\n } else if (!isUniqueWithin(b.barcode, barcodesProvided, true)) {\n hasErrors = true;\n if (isBulkUpload) {\n setError(`barcodes`, { message: duplicateMsg }); // for the bulk-edit inputs\n }\n setError(`barcodes.${i}.barcode`, { message: duplicateMsg });\n }\n });\n return hasErrors;\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const BulkUploadWrapper = styled.div`\n padding: ${() => `${vars.spacing.lg} 0`};\n\n textarea {\n min-height: 200px;\n\n :disabled {\n color: ${({ theme }) => theme.colors.textDisabled};\n border-color: ${({ theme }) => theme.colors.borderDisabled};\n background-color: ${(props) =>\n props.theme.colors.backgroundActiveDisabled};\n cursor: not-allowed;\n }\n }\n`;\n\nexport const InstructionsWrapper = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-top: ${() => vars.spacing.sm};\n\n > *:first-child {\n flex: 1;\n margin-top: 0;\n }\n`;\n","import { debounce } from 'lodash-es';\nimport React, { useCallback, useEffect, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { FormText } from 'reactstrap';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextArea } from 'src/core/POS/PosTextArea';\nimport { getTextFieldState } from 'src/core/POS/PosTextField';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { TicketBarcode } from 'src/WebApiController';\n\nimport { BarcodeForm } from '../UploadBarcodes.utils';\nimport {\n BulkUploadWrapper,\n InstructionsWrapper,\n} from './BulkBarcodeInput.styled';\n\nexport const BulkBarcodeInput = ({\n quantity,\n readOnly = false,\n onPreview,\n}: {\n quantity: number;\n onPreview?: () => void;\n readOnly?: boolean;\n}) => {\n const {\n register,\n trigger,\n setValue,\n watch,\n formState: { errors, touchedFields },\n } = useFormContext();\n const barcodes = watch('barcodes');\n\n const initialValue = useMemo(() => {\n const barcodesArray = barcodes.map(({ barcode }: TicketBarcode) => barcode);\n return barcodesArray.join('\\n').trimEnd();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n /**\n * Registering this was since the dispay value differs from how it is stored\n * ie. string for text area vs TicketBarcode[]\n */\n register('barcodes');\n\n // loaded from a toggle, show errors\n if (touchedFields?.barcodes?.length) {\n trigger('barcodes');\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleChange = useCallback(\n (e: React.SyntheticEvent) => {\n debounce((e: React.SyntheticEvent) => {\n const newBarcodes = (e.target as HTMLInputElement).value\n .trimEnd()\n .split('\\n');\n\n if (newBarcodes.length < quantity) {\n newBarcodes.push(\n ...new Array(quantity - newBarcodes.length).fill('')\n );\n }\n\n setValue(\n 'barcodes',\n // create array of barcodes in original insert order\n newBarcodes.map((barcode, idx) => ({\n // in order to display \"Too many\" error, set null\n ...barcodes[idx],\n barcode,\n })),\n { shouldValidate: true, shouldTouch: true, shouldDirty: true }\n );\n }, 100)(e);\n },\n [setValue, barcodes, quantity]\n );\n\n const barcodesError = errors?.barcodes?.message;\n\n return (\n \n \n \n \n {!readOnly && (\n \n \n \n \n {onPreview && (\n \n )}\n \n )}\n \n );\n};\n","import React from 'react';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport {\n getTextFieldState,\n PosTextField,\n PosTextFieldProps,\n} from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { BarcodeIcon } from 'src/svgs/Viagogo';\nimport { TicketBarcode } from 'src/WebApiController';\n\ninterface SeatBarcodeInputProps extends PosTextFieldProps {\n ticketBarcode: TicketBarcode;\n errors?: string[];\n disabled?: boolean;\n index: number;\n}\nexport const SeatBarcodeInput = React.forwardRef(\n (\n { ticketBarcode, errors, index, ...props }: SeatBarcodeInputProps,\n ref: React.Ref\n ) => {\n const { row, section, seat } = ticketBarcode;\n return (\n \n }\n >\n }\n {...props}\n />\n \n );\n }\n);\n\nSeatBarcodeInput.displayName = 'VenueMapContent';\n","import { useFormContext } from 'react-hook-form';\nimport { SeatBarcodeInput } from 'src/components/UploadArtifacts/UploadBarcodes/SeatBarcodeInput';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { TicketBarcode } from 'src/WebApiController';\n\nimport { BarcodeForm } from '../UploadBarcodes.utils';\n\nexport const BarcodeInput = ({\n ticketBarcode,\n disabled,\n index,\n}: {\n ticketBarcode: TicketBarcode;\n disabled: boolean;\n index: number;\n forceShowErrors?: boolean;\n}) => {\n const { register, formState } = useFormContext();\n\n const field: `barcodes.${number}.barcode` = `barcodes.${index}.barcode`;\n\n const error = formState.errors.barcodes?.[index]?.barcode;\n const warning = error?.type === 'warning' ? error?.message : '';\n const errorMessage = error?.type !== 'warning' ? error?.message ?? '' : '';\n\n const requiredMsg = useContent(ContentId.Required);\n\n return (\n <>\n \n {warning && }\n \n );\n};\n","import { useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { TicketBarcode } from 'src/WebApiController';\n\nimport { BarcodeForm } from '../UploadBarcodes.utils';\nimport { BarcodeInput } from './BarcodeInput';\n\nexport const ManualBarcodeEntry = ({\n quantity,\n readOnly = false,\n}: {\n quantity: number;\n readOnly?: boolean;\n}) => {\n const {\n setValue,\n watch,\n trigger,\n formState: { isDirty },\n } = useFormContext();\n const [showErrors, setShowErrors] = useState(isDirty);\n const barcodes = watch('barcodes');\n\n useEffect(() => {\n // Handle toggle between bulk and manual where extra barcodes were entered\n if (barcodes.length > quantity) {\n setValue('barcodes', barcodes.slice(0, quantity));\n trigger();\n } else if (isDirty) {\n // loaded from a toggle, show errors\n setShowErrors(true);\n trigger();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <>\n {barcodes.map((ticketBarcode: TicketBarcode, i: number) => {\n return (\n \n );\n })}\n \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { Stack } from 'src/core/ui';\nimport { mergeProps } from 'src/core/utils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Seating } from 'src/WebApiController';\n\nimport { BulkBarcodeInput } from './BulkBarcodeInput';\nimport { ManualBarcodeEntry } from './ManualBarcodeEntry';\nimport * as styles from './UploadBarcodes.css';\nimport { BarcodeForm } from './UploadBarcodes.utils';\n\nexport type UploadBarcodesBodyProps = {\n isReadOnly?: boolean;\n ticketCnt: number;\n seating: Seating;\n instructionContentId?: ContentId;\n className?: string;\n};\nexport const UploadBarcodesBody = ({\n isReadOnly,\n seating,\n ticketCnt,\n instructionContentId,\n className,\n}: UploadBarcodesBodyProps) => {\n const { watch, setValue } = useFormContext();\n\n const bulkUpload = watch('isBulkUpload');\n\n const inputProps = {\n readOnly: isReadOnly,\n seating,\n quantity: ticketCnt,\n };\n\n return (\n \n {!isReadOnly && (\n \n )}\n \n \n setValue('isBulkUpload', !bulkUpload)}\n disabled={isReadOnly}\n />\n \n {!bulkUpload ? (\n \n ) : (\n setValue('isBulkUpload', !bulkUpload)}\n />\n )}\n \n );\n};\n","import { ComponentProps, ReactNode, useCallback, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useContent, useFormattedContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ApiException,\n PosClientConfig,\n PosUiActionResult,\n TicketBarcode,\n} from 'src/WebApiController';\n\nimport {\n BarcodeForm,\n checkBarcodeErrors,\n checkDuplicateBarcodes,\n} from './UploadBarcodes.utils';\n\nexport type UploadBarcodesFormProps = {\n entityWithTickets: Pick<\n EntityWithRealTickets,\n 'viagVirtualId' | 'id' | 'ticketCnt' | 'tickets' | 'seating'\n >;\n renderContent: (onUploadClick: () => void, disabled?: boolean) => ReactNode;\n onComplete: (isCancelled: boolean) => void;\n onUpload?: (\n posClientConfig: PosClientConfig,\n entityId: number,\n barcodes: TicketBarcode[]\n ) => Promise;\n defaultToBulk?: boolean;\n isReadOnly?: boolean;\n};\n\nexport const UploadBarcodesForm = (props: UploadBarcodesFormProps) => {\n const methods = useForm({\n defaultValues: {\n barcodes: props.entityWithTickets.tickets?.map(\n ({ id, barcode, row, seat }) => {\n return {\n ticketId: id,\n barcode: barcode || '',\n section: props.entityWithTickets.seating.section,\n row: row,\n seat: seat,\n };\n }\n ),\n },\n });\n return (\n \n \n \n );\n};\n\nconst UploadBarcodesContent = ({\n entityWithTickets,\n renderContent,\n onComplete,\n onUpload,\n handleSubmit,\n setError,\n watch,\n isReadOnly = false,\n}: UploadBarcodesFormProps &\n Omit<\n ComponentProps>,\n 'children'\n >) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { ticketCnt } = entityWithTickets;\n const barcodes = watch('barcodes');\n const bulkUpload = watch('isBulkUpload');\n\n const [readOnly, setReadOnly] = useState(isReadOnly);\n\n const [alreadyReportedUsedBarcodes, setAlreadyReportedUsedBarcodes] =\n useState([]);\n const barcodeAlreadyUsedWarning = useContent(ContentId.BarcodeAlreadyInUsed);\n\n const { showErrorDialog, genericError } = useErrorBoundaryContext();\n\n const requiredMsg = useContent(ContentId.Required);\n const duplicateMsg = useContent(ContentId.DuplicateBarcode);\n const barcodesProvided =\n barcodes?.map((b) => b.barcode).filter((b) => b?.length) ?? [];\n const missingMsg = useFormattedContent(\n FormatContentId.MissingBarcodes,\n `${ticketCnt - barcodesProvided.length}`\n );\n\n const extraMsg = useFormattedContent(\n FormatContentId.ExtraBarcodes,\n `${barcodesProvided.length - ticketCnt}`\n );\n\n const onSubmit = useCallback(\n async ({ barcodes }: BarcodeForm) => {\n if (!onUpload) {\n console.log(\n 'Internal Error - no onUploadBarcodes provided for non-readonly mode.'\n );\n return;\n }\n\n if (!entityWithTickets) {\n console.log('Internal Error - entity (listing or sale) is null.');\n return;\n }\n\n tryInvokeApi(\n async () => {\n setReadOnly(true);\n\n const result = await onUpload(\n activeAccountWebClientConfig,\n entityWithTickets.id,\n barcodes!\n );\n if (!isSuccess(result)) {\n showErrorDialog(\n 'onUploadBarcodes',\n {\n message: result.message ?? genericError,\n status: result.status!,\n } as ApiException,\n {\n onDismissError: () => onComplete(true),\n trackErrorData: {\n saleId: entityWithTickets?.id,\n barcodes,\n },\n }\n );\n } else {\n onComplete(false);\n }\n },\n (error) => {\n showErrorDialog('onUploadBarcodes', error, {\n trackErrorData: {\n saleId: entityWithTickets?.id,\n barcodes,\n },\n });\n },\n () => setReadOnly(false)\n );\n },\n [\n onUpload,\n entityWithTickets,\n activeAccountWebClientConfig,\n showErrorDialog,\n genericError,\n onComplete,\n ]\n );\n\n const onUploadClick = useCallback(async () => {\n let hasErrors = checkBarcodeErrors(\n bulkUpload,\n barcodes,\n ticketCnt,\n setError,\n requiredMsg,\n missingMsg as string,\n extraMsg as string,\n duplicateMsg\n );\n\n if (hasErrors) {\n return;\n }\n\n hasErrors = Boolean(\n await checkDuplicateBarcodes(\n entityWithTickets!.id,\n barcodes,\n activeAccountWebClientConfig,\n alreadyReportedUsedBarcodes,\n setAlreadyReportedUsedBarcodes,\n (index: number) =>\n setError(`barcodes.${index}.barcode`, {\n type: 'warning',\n message: barcodeAlreadyUsedWarning,\n }),\n () => setReadOnly(true),\n () => setReadOnly(false),\n showErrorDialog,\n entityWithTickets!.viagVirtualId\n )\n );\n\n if (!hasErrors) {\n handleSubmit(onSubmit)();\n }\n }, [\n bulkUpload,\n barcodes,\n ticketCnt,\n setError,\n requiredMsg,\n missingMsg,\n extraMsg,\n duplicateMsg,\n entityWithTickets,\n activeAccountWebClientConfig,\n alreadyReportedUsedBarcodes,\n showErrorDialog,\n barcodeAlreadyUsedWarning,\n handleSubmit,\n onSubmit,\n ]);\n\n const reallyReadOnly = isReadOnly || readOnly;\n\n return renderContent(onUploadClick, reallyReadOnly);\n};\n","import { useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport {\n UploadBarcodesBody,\n UploadBarcodesForm,\n} from 'src/components/UploadArtifacts/UploadBarcodes';\nimport { Stack } from 'src/core/ui';\nimport { PurchaseWizardFooter } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { toEntityWithTicket } from 'src/utils/ticketUtils';\nimport {\n ActionOutboxEntityType,\n PosClientConfig,\n PosUiActionResult,\n TicketBarcode,\n} from 'src/WebApiController';\n\nimport {\n ticketGroupInputFooter,\n ticketGroupPredeliveryBody,\n} from '../PurchaseTicketFlow.css';\n\nexport const UploadBarcodesSection = ({\n ticketGroupIndex,\n onCancel,\n}: {\n ticketGroupIndex: number;\n onCancel: () => void;\n}) => {\n const { setValue, watch } = useFormContext();\n\n const ticketGroup = watch(`ticketGroups.${ticketGroupIndex}`);\n\n const onSubmit = (\n _: PosClientConfig,\n entityId: number,\n barcodes: TicketBarcode[]\n ) => {\n const newTickets = ticketGroup.tickets?.value?.map((t) => {\n const tb = barcodes.find((b) => b.ticketId === t.id);\n t.barcode = tb?.barcode ?? null;\n return { ...t };\n });\n\n setValue(\n `ticketGroups.${ticketGroupIndex}.tickets`,\n posChangedField(newTickets ?? null)\n );\n\n return Promise.resolve({\n status: 200,\n entityId,\n entityType: ActionOutboxEntityType.Purchase,\n } as PosUiActionResult);\n };\n const entityWithTickets = useMemo(\n () => toEntityWithTicket(ticketGroup),\n [ticketGroup]\n );\n\n return (\n void, disabled?: boolean) => (\n \n \n \n \n )}\n />\n );\n};\n","import { UseFormSetError } from 'react-hook-form';\nimport { IErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { isUniqueWithin } from 'src/utils/validation';\nimport {\n PosClientConfig,\n SaleClient,\n TicketExternalId,\n} from 'src/WebApiController';\n\nexport type ExternalIdForm = {\n isBulkUpload: boolean;\n externalIds: TicketExternalId[];\n};\n\nexport const checkDuplicateExternalIds = async (\n entityId: number,\n externalIds: TicketExternalId[],\n activeAccountWebClientConfig: PosClientConfig,\n alreadyReportedUsedExternalIds: string[],\n setAlreadyReportedUsedExternalIds: (externalIds: string[]) => void,\n onDuplicateExternalId: (index: number) => void,\n onBeforeCheck?: () => void,\n onAfterCheck?: () => void,\n showErrorDialog?: IErrorBoundaryContext['showErrorDialog'],\n viagVirtualId?: string\n): Promise => {\n return tryInvokeApi(\n async () => {\n onBeforeCheck?.();\n\n if (!externalIds) {\n return false;\n }\n\n const existingExternalIds = await new SaleClient(\n activeAccountWebClientConfig\n ).getTicketExternalIdsAlreadyInUse(viagVirtualId, externalIds);\n\n if (existingExternalIds) {\n // Get all the used externalIds that have not yet been reported\n const unreportedBarCodes = existingExternalIds.filter(\n (b) => !alreadyReportedUsedExternalIds.includes(b.externalId)\n );\n if (unreportedBarCodes.length > 0) {\n // We're reporting the dup warnings, so save it so we don't report on it again\n // We want to set all of it (not just the latest unreported externalIds)\n setAlreadyReportedUsedExternalIds(\n existingExternalIds.map((tb) => tb.externalId)\n );\n\n let hasErrors = false;\n existingExternalIds.forEach((tb) => {\n const index = externalIds.findIndex(\n (b) => b.ticketId === tb.ticketId\n );\n\n if (index >= 0) {\n hasErrors = true;\n onDuplicateExternalId(index);\n }\n });\n\n return hasErrors;\n }\n }\n\n return false;\n },\n (error) => {\n showErrorDialog?.('SaleClient.getExternalIdsAlreadyInUse', error, {\n trackErrorData: {\n saleId: entityId,\n externalIds,\n },\n });\n },\n () => onAfterCheck?.()\n );\n};\n\nexport const checkExternalIdErrors = (\n isBulkUpload: boolean,\n externalIds: TicketExternalId[],\n ticketCnt: number,\n setError: UseFormSetError,\n requiredMsg: string,\n missingMsg: string,\n extraMsg: string,\n duplicateMsg: string\n) => {\n let hasErrors = false;\n const externalIdsProvided =\n externalIds?.map((b) => b.externalId).filter((b) => b?.length) ?? [];\n if (isBulkUpload) {\n const externalIdsProvided =\n externalIds?.map((b) => b.externalId).filter((b) => b?.length) ?? [];\n if (externalIdsProvided.length < ticketCnt) {\n hasErrors = true;\n setError(`externalIds`, { message: missingMsg as string }); // for the bulk-edit inputs\n } else if (externalIdsProvided.length > ticketCnt) {\n hasErrors = true;\n setError(`externalIds`, { message: extraMsg as string }); // for the bulk-edit inputs\n }\n }\n\n externalIds?.forEach((b, i) => {\n if (!b.externalId) {\n hasErrors = true;\n setError(`externalIds.${i}.externalId`, { message: requiredMsg });\n } else if (!isUniqueWithin(b.externalId, externalIdsProvided, true)) {\n hasErrors = true;\n if (isBulkUpload) {\n setError(`externalIds`, { message: duplicateMsg }); // for the bulk-edit inputs\n }\n setError(`externalIds.${i}.externalId`, { message: duplicateMsg });\n }\n });\n return hasErrors;\n};\n","import { debounce } from 'lodash-es';\nimport React, { useCallback, useEffect, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { FormText } from 'reactstrap';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextArea } from 'src/core/POS/PosTextArea';\nimport { getTextFieldState } from 'src/core/POS/PosTextField';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { TicketExternalId } from 'src/WebApiController';\n\nimport { ExternalIdForm } from '../../UploadExternalIds';\nimport * as styles from './BulkStringArtifactInput.css';\n\nexport const BulkExternalIdInput = ({\n quantity,\n readOnly = false,\n onPreview,\n}: {\n quantity: number;\n onPreview?: () => void;\n readOnly?: boolean;\n}) => {\n const {\n register,\n trigger,\n setValue,\n watch,\n formState: { errors, touchedFields },\n } = useFormContext();\n const externalIds = watch('externalIds');\n\n const initialValue = useMemo(() => {\n const externalIdsArray = externalIds.map(\n ({ externalId }: TicketExternalId) => externalId\n );\n return externalIdsArray.join('\\n').trimEnd();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n /**\n * Registering this was since the dispay value differs from how it is stored\n * ie. string for text area vs TicketExternalId[]\n */\n register('externalIds');\n\n // loaded from a toggle, show errors\n if (touchedFields?.externalIds?.length) {\n trigger('externalIds');\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleChange = useCallback(\n (e: React.SyntheticEvent) => {\n debounce((e: React.SyntheticEvent) => {\n const newExternalIds = (e.target as HTMLInputElement).value\n .trimEnd()\n .split('\\n');\n\n if (newExternalIds.length < quantity) {\n newExternalIds.push(\n ...new Array(quantity - newExternalIds.length).fill('')\n );\n }\n\n setValue(\n 'externalIds',\n // create array of externalIds in original insert order\n newExternalIds.map((externalId, idx) => ({\n // in order to display \"Too many\" error, set null\n ...externalIds[idx],\n externalId,\n })),\n { shouldValidate: true, shouldTouch: true, shouldDirty: true }\n );\n }, 100)(e);\n },\n [setValue, externalIds, quantity]\n );\n\n const externalIdsError = errors?.externalIds?.message;\n\n return (\n
    \n \n \n \n {!readOnly && (\n
    \n \n \n \n {onPreview && (\n \n \n \n )}\n
    \n )}\n
    \n );\n};\n","import { debounce } from 'lodash-es';\nimport React, { useCallback, useEffect, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { FormText } from 'reactstrap';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextArea } from 'src/core/POS/PosTextArea';\nimport { getTextFieldState } from 'src/core/POS/PosTextField';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { TicketUrl } from 'src/WebApiController';\n\nimport { TicketUrlForm } from '../../UploadTicketUrls';\nimport * as styles from './BulkStringArtifactInput.css';\n\nexport const BulkTicketUrlInput = ({\n quantity,\n readOnly = false,\n onPreview,\n}: {\n quantity: number;\n onPreview?: () => void;\n readOnly?: boolean;\n}) => {\n const {\n register,\n trigger,\n setValue,\n watch,\n formState: { errors, touchedFields },\n } = useFormContext();\n const ticketUrls = watch('ticketUrls');\n\n const initialValue = useMemo(() => {\n const ticketUrlsArray = ticketUrls.map(({ url }: TicketUrl) => url);\n return ticketUrlsArray.join('\\n').trimEnd();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n /**\n * Registering this was since the dispay value differs from how it is stored\n * ie. string for text area vs TicketUrl[]\n */\n register('ticketUrls');\n\n // loaded from a toggle, show errors\n if (touchedFields?.ticketUrls?.length) {\n trigger('ticketUrls');\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleChange = useCallback(\n (e: React.SyntheticEvent) => {\n debounce((e: React.SyntheticEvent) => {\n const newTicketUrls = (e.target as HTMLInputElement).value\n .trimEnd()\n .split('\\n');\n\n if (newTicketUrls.length < quantity) {\n newTicketUrls.push(\n ...new Array(quantity - newTicketUrls.length).fill('')\n );\n }\n\n setValue(\n 'ticketUrls',\n // create array of ticketUrls in original insert order\n newTicketUrls.map((url, idx) => ({\n // in order to display \"Too many\" error, set null\n ...ticketUrls[idx],\n url,\n })),\n { shouldValidate: true, shouldTouch: true, shouldDirty: true }\n );\n }, 100)(e);\n },\n [setValue, ticketUrls, quantity]\n );\n\n const ticketUrlsError = errors?.ticketUrls?.message;\n\n return (\n
    \n \n \n \n {!readOnly && (\n
    \n \n \n \n {onPreview && (\n \n \n \n )}\n
    \n )}\n
    \n );\n};\n","import { useEffect, useState } from 'react';\nimport React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport {\n getTextFieldState,\n PosTextField,\n PosTextFieldProps,\n} from 'src/core/POS/PosTextField';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Seating, TicketExternalId } from 'src/WebApiController';\n\nimport { ExternalIdForm } from '../../UploadExternalIds';\n\nexport const ManualExternalIdEntry = ({\n seating: { section, sectionId, rowId },\n quantity,\n readOnly = false,\n}: {\n seating: Seating;\n quantity: number;\n readOnly?: boolean;\n}) => {\n const {\n setValue,\n watch,\n trigger,\n formState: { isDirty },\n } = useFormContext();\n const [showErrors, setShowErrors] = useState(isDirty);\n const externalIds = watch('externalIds');\n\n useEffect(() => {\n // Handle toggle between bulk and manual where extra externalIds were entered\n if (externalIds.length > quantity) {\n setValue('externalIds', externalIds.slice(0, quantity));\n trigger();\n } else if (isDirty) {\n // loaded from a toggle, show errors\n setShowErrors(true);\n trigger();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <>\n {externalIds.map((ticketExternalId: TicketExternalId, i: number) => {\n const { row, seat } = ticketExternalId;\n const id = `${section}-${row}-${seat}-${i}`;\n\n return (\n \n );\n })}\n \n );\n};\n\nexport const ExternalIdInput = ({\n seating,\n disabled,\n index,\n}: {\n seating: Seating;\n disabled: boolean;\n index: number;\n forceShowErrors?: boolean;\n}) => {\n const { register, formState } = useFormContext();\n\n const field: `externalIds.${number}.externalId` = `externalIds.${index}.externalId`;\n\n const error = formState.errors.externalIds?.[index]?.externalId;\n const warning = error?.type === 'warning' ? error?.message : '';\n const errorMessage = error?.type !== 'warning' ? error?.message ?? '' : '';\n\n const requiredMsg = useContent(ContentId.Required);\n\n return (\n <>\n \n {warning && }\n \n );\n};\n\ninterface SeatExternalIdInputProps extends PosTextFieldProps {\n seating: Seating;\n errors?: string[];\n disabled?: boolean;\n}\nexport const SeatExternalIdInput = React.forwardRef(\n (\n { seating, errors, ...props }: SeatExternalIdInputProps,\n ref: React.Ref\n ) => {\n return (\n }\n >\n \n \n );\n }\n);\n\nSeatExternalIdInput.displayName = 'SeatExternalIdInput';\n","import { useEffect, useState } from 'react';\nimport React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport {\n getTextFieldState,\n PosTextField,\n PosTextFieldProps,\n} from 'src/core/POS/PosTextField';\nimport { URL_REGEX } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Seating, TicketUrl } from 'src/WebApiController';\n\nimport { TicketUrlForm } from '../../UploadTicketUrls';\n\nexport const ManualTicketUrlEntry = ({\n seating: { section, sectionId, rowId },\n quantity,\n readOnly = false,\n}: {\n seating: Seating;\n quantity: number;\n readOnly?: boolean;\n}) => {\n const {\n setValue,\n watch,\n trigger,\n formState: { isDirty },\n } = useFormContext();\n const [showErrors, setShowErrors] = useState(isDirty);\n const ticketUrls = watch('ticketUrls');\n\n useEffect(() => {\n // Handle toggle between bulk and manual where extra ticketUrls were entered\n if (ticketUrls.length > quantity) {\n setValue('ticketUrls', ticketUrls.slice(0, quantity));\n trigger();\n } else if (isDirty) {\n // loaded from a toggle, show errors\n setShowErrors(true);\n trigger();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <>\n {ticketUrls.map((ticketTicketUrl: TicketUrl, i: number) => {\n const { row, seat } = ticketTicketUrl;\n const id = `${section}-${row}-${seat}-${i}`;\n\n return (\n \n );\n })}\n \n );\n};\n\nconst TicketUrlInput = ({\n seating,\n disabled,\n index,\n}: {\n seating: Seating;\n disabled: boolean;\n index: number;\n forceShowErrors?: boolean;\n}) => {\n const { register, formState } = useFormContext();\n\n const field: `ticketUrls.${number}.url` = `ticketUrls.${index}.url`;\n\n const error = formState.errors.ticketUrls?.[index]?.url;\n const warning = error?.type === 'warning' ? error?.message : '';\n const errorMessage = error?.type !== 'warning' ? error?.message ?? '' : '';\n\n const requiredMsg = useContent(ContentId.Required);\n const invalidUrlMsg = useContent(ContentId.InvalidUrl);\n\n return (\n <>\n \n {warning && }\n \n );\n};\n\ninterface SeatTicketUrlInputProps extends PosTextFieldProps {\n seating: Seating;\n errors?: string[];\n disabled?: boolean;\n}\nexport const SeatTicketUrlInput = React.forwardRef(\n (\n { seating, errors, ...props }: SeatTicketUrlInputProps,\n ref: React.Ref\n ) => {\n return (\n }\n >\n \n \n );\n }\n);\n\nSeatTicketUrlInput.displayName = 'SeatTicketUrlInput';\n","import { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { Stack } from 'src/core/ui';\nimport { mergeProps } from 'src/core/utils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Seating } from 'src/WebApiController';\n\nimport { BulkExternalIdInput } from '../UploadStringArtifacts/BulkStringArtifactInput';\nimport { ManualExternalIdEntry } from '../UploadStringArtifacts/ManualStringArtifactEntry';\nimport * as styles from './UploadExternalIds.css';\nimport { ExternalIdForm } from './UploadExternalIds.utils';\n\nexport type UploadExternalIdsBodyProps = {\n isReadOnly?: boolean;\n ticketCnt: number;\n seating: Seating;\n instructionContentId?: ContentId;\n className?: string;\n};\nexport const UploadExternalIdsBody = ({\n className,\n isReadOnly,\n seating,\n ticketCnt,\n instructionContentId,\n}: UploadExternalIdsBodyProps) => {\n const { watch, setValue } = useFormContext();\n\n const bulkUpload = watch('isBulkUpload');\n\n const inputProps = {\n readOnly: isReadOnly,\n seating,\n quantity: ticketCnt,\n };\n\n return (\n \n {!isReadOnly && (\n \n )}\n \n \n setValue('isBulkUpload', !bulkUpload)}\n disabled={isReadOnly}\n />\n \n {!bulkUpload ? (\n \n ) : (\n setValue('isBulkUpload', !bulkUpload)}\n />\n )}\n \n );\n};\n","import { ComponentProps, ReactNode, useCallback, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useContent, useFormattedContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ApiException,\n PosClientConfig,\n PosUiActionResult,\n TicketExternalId,\n} from 'src/WebApiController';\n\nimport {\n checkDuplicateExternalIds,\n checkExternalIdErrors,\n ExternalIdForm,\n} from './UploadExternalIds.utils';\n\nexport type UploadExternalIdsFormProps = {\n entityWithTickets: Pick<\n EntityWithRealTickets,\n 'viagVirtualId' | 'id' | 'ticketCnt' | 'tickets' | 'seating'\n >;\n renderContent: (onUploadClick: () => void, disabled?: boolean) => ReactNode;\n onComplete: (isCancelled: boolean) => void;\n onUpload?: (\n posClientConfig: PosClientConfig,\n entityId: number,\n externalIds: TicketExternalId[]\n ) => Promise;\n defaultToBulk?: boolean;\n isReadOnly?: boolean;\n};\n\nexport const UploadExternalIdsForm = (props: UploadExternalIdsFormProps) => {\n const methods = useForm({\n mode: 'all',\n criteriaMode: 'all',\n defaultValues: {\n externalIds: props.entityWithTickets.tickets?.map(\n ({ id, externalTicketId, row, seat }) => {\n return {\n ticketId: id,\n externalId: externalTicketId || '',\n section: props.entityWithTickets.seating.section,\n row: row,\n seat: seat,\n };\n }\n ),\n },\n });\n\n return (\n \n \n \n );\n};\n\nconst UploadExternalIdsContent = ({\n entityWithTickets,\n renderContent,\n onComplete,\n onUpload,\n handleSubmit,\n setError,\n watch,\n isReadOnly = false,\n}: UploadExternalIdsFormProps &\n Omit<\n ComponentProps>,\n 'children'\n >) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { ticketCnt } = entityWithTickets;\n const externalIds = watch('externalIds');\n const bulkUpload = watch('isBulkUpload');\n\n const [readOnly, setReadOnly] = useState(isReadOnly);\n const { showErrorDialog, genericError } = useErrorBoundaryContext();\n\n const [alreadyReportedUsedExternalIds, setAlreadyReportedUsedExternalIds] =\n useState([]);\n const externalIdAlreadyUsedWarning = useContent(\n ContentId.TicketIdAlreadyInUsed\n );\n\n const requiredMsg = useContent(ContentId.Required);\n const duplicateMsg = useContent(ContentId.DuplicateTicketId);\n const externalIdsProvided =\n externalIds?.map((b) => b.externalId).filter((b) => b?.length) ?? [];\n const missingMsg = useFormattedContent(\n FormatContentId.MissingTicketIds,\n `${ticketCnt - externalIdsProvided.length}`\n );\n\n const extraMsg = useFormattedContent(\n FormatContentId.ExtraTicketIds,\n `${externalIdsProvided.length - ticketCnt}`\n );\n\n const onSubmit = useCallback(\n async ({ externalIds }: ExternalIdForm) => {\n if (!onUpload) {\n console.log(\n 'Internal Error - no onUploadExternalIds provided for non-readonly mode.'\n );\n return;\n }\n\n if (!entityWithTickets) {\n console.log('Internal Error - entity (listing or sale) is null.');\n return;\n }\n\n tryInvokeApi(\n async () => {\n setReadOnly(true);\n\n const result = await onUpload(\n activeAccountWebClientConfig,\n entityWithTickets.id,\n externalIds!\n );\n if (!isSuccess(result)) {\n showErrorDialog(\n 'SaleClient.updateExternalIdsForSale',\n {\n message: result.message ?? genericError,\n status: result.status!,\n } as ApiException,\n {\n onDismissError: () => onComplete(true),\n trackErrorData: {\n saleId: entityWithTickets?.id,\n externalIds,\n },\n }\n );\n } else {\n onComplete(false);\n }\n },\n (error) => {\n showErrorDialog('SaleClient.updateExternalIdsForSale', error, {\n trackErrorData: {\n saleId: entityWithTickets?.id,\n externalIds,\n },\n });\n },\n () => setReadOnly(false)\n );\n },\n [\n onUpload,\n entityWithTickets,\n activeAccountWebClientConfig,\n showErrorDialog,\n genericError,\n onComplete,\n ]\n );\n\n const onUploadClick = useCallback(async () => {\n let hasErrors = checkExternalIdErrors(\n bulkUpload,\n externalIds,\n ticketCnt,\n setError,\n requiredMsg,\n missingMsg as string,\n extraMsg as string,\n duplicateMsg\n );\n\n if (hasErrors) {\n return;\n }\n\n hasErrors = Boolean(\n await checkDuplicateExternalIds(\n entityWithTickets!.id,\n externalIds,\n activeAccountWebClientConfig,\n alreadyReportedUsedExternalIds,\n setAlreadyReportedUsedExternalIds,\n (index: number) =>\n setError(`externalIds.${index}.externalId`, {\n type: 'warning',\n message: externalIdAlreadyUsedWarning,\n }),\n () => setReadOnly(true),\n () => setReadOnly(false),\n showErrorDialog,\n entityWithTickets!.viagVirtualId\n )\n );\n\n if (!hasErrors) {\n handleSubmit(onSubmit)();\n }\n }, [\n bulkUpload,\n externalIds,\n ticketCnt,\n setError,\n requiredMsg,\n missingMsg,\n extraMsg,\n duplicateMsg,\n entityWithTickets,\n activeAccountWebClientConfig,\n alreadyReportedUsedExternalIds,\n showErrorDialog,\n externalIdAlreadyUsedWarning,\n handleSubmit,\n onSubmit,\n ]);\n\n const reallyReadOnly = isReadOnly || readOnly;\n\n return renderContent(onUploadClick, reallyReadOnly);\n};\n","import { useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport {\n UploadExternalIdsBody,\n UploadExternalIdsForm,\n} from 'src/components/UploadArtifacts/UploadExternalIds';\nimport { Stack } from 'src/core/ui';\nimport { PurchaseWizardFooter } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { toEntityWithTicket } from 'src/utils/ticketUtils';\nimport {\n ActionOutboxEntityType,\n PosClientConfig,\n PosUiActionResult,\n TicketExternalId,\n} from 'src/WebApiController';\n\nimport {\n ticketGroupInputFooter,\n ticketGroupPredeliveryBody,\n} from '../PurchaseTicketFlow.css';\n\nexport const UploadExternalIdsSection = ({\n ticketGroupIndex,\n onCancel,\n}: {\n ticketGroupIndex: number;\n onCancel: () => void;\n}) => {\n const { setValue, watch } = useFormContext();\n\n const ticketGroup = watch(`ticketGroups.${ticketGroupIndex}`);\n\n const onSubmit = (\n _: PosClientConfig,\n entityId: number,\n externalIds: TicketExternalId[]\n ) => {\n const newTickets = ticketGroup.tickets?.value?.map((t) => {\n const tb = externalIds.find((b) => b.ticketId === t.id);\n t.externalTicketId = tb?.externalId ?? null;\n return { ...t };\n });\n\n setValue(\n `ticketGroups.${ticketGroupIndex}.tickets`,\n posChangedField(newTickets ?? null)\n );\n\n return Promise.resolve({\n status: 200,\n entityId,\n entityType: ActionOutboxEntityType.Purchase,\n } as PosUiActionResult);\n };\n\n const entityWithTickets = useMemo(\n () => toEntityWithTicket(ticketGroup),\n [ticketGroup]\n );\n\n return (\n void, disabled?: boolean) => (\n \n \n \n \n )}\n />\n );\n};\n","import { UseFormSetError } from 'react-hook-form';\nimport { IErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { URL_REGEX } from 'src/utils/constants/constants';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { isUniqueWithin } from 'src/utils/validation';\nimport { PosClientConfig, SaleClient, TicketUrl } from 'src/WebApiController';\n\nexport type TicketUrlForm = {\n isBulkUpload: boolean;\n ticketUrls: TicketUrl[];\n};\n\nexport const checkDuplicateTicketUrls = async (\n entityId: number,\n ticketUrls: TicketUrl[],\n activeAccountWebClientConfig: PosClientConfig,\n alreadyReportedUsedTicketUrls: string[],\n setAlreadyReportedUsedTicketUrls: (ticketUrls: string[]) => void,\n onDuplicateTicketUrl: (index: number) => void,\n onBeforeCheck?: () => void,\n onAfterCheck?: () => void,\n showErrorDialog?: IErrorBoundaryContext['showErrorDialog'],\n viagVirtualId?: string\n): Promise => {\n return tryInvokeApi(\n async () => {\n onBeforeCheck?.();\n\n if (!ticketUrls) {\n return false;\n }\n\n const existingTicketUrls = await new SaleClient(\n activeAccountWebClientConfig\n ).getTicketUrlsAlreadyInUse(viagVirtualId, ticketUrls);\n\n if (existingTicketUrls) {\n // Get all the used ticketUrls that have not yet been reported\n const unreportedBarCodes = existingTicketUrls.filter(\n (b) => !alreadyReportedUsedTicketUrls.includes(b.url)\n );\n if (unreportedBarCodes.length > 0) {\n // We're reporting the dup warnings, so save it so we don't report on it again\n // We want to set all of it (not just the latest unreported ticketUrls)\n setAlreadyReportedUsedTicketUrls(\n existingTicketUrls.map((tb) => tb.url)\n );\n\n let hasErrors = false;\n existingTicketUrls.forEach((tb) => {\n const index = ticketUrls.findIndex(\n (b) => b.ticketId === tb.ticketId\n );\n\n if (index >= 0) {\n hasErrors = true;\n onDuplicateTicketUrl(index);\n }\n });\n\n return hasErrors;\n }\n }\n\n return false;\n },\n (error) => {\n showErrorDialog?.('SaleClient.getTicketUrlsAlreadyInUse', error, {\n trackErrorData: {\n saleId: entityId,\n ticketUrls,\n },\n });\n },\n () => onAfterCheck?.()\n );\n};\n\nexport const checkTicketUrlErrors = (\n isBulkUpload: boolean,\n ticketUrls: TicketUrl[],\n ticketCnt: number,\n setError: UseFormSetError,\n requiredMsg: string,\n missingMsg: string,\n extraMsg: string,\n duplicateMsg: string,\n invalidUrlMsg: string\n) => {\n let hasErrors = false;\n const ticketUrlsProvided =\n ticketUrls?.map((b) => b.url).filter((b) => b?.length) ?? [];\n if (isBulkUpload) {\n const ticketUrlsProvided =\n ticketUrls?.map((b) => b.url).filter((b) => b?.length) ?? [];\n if (ticketUrlsProvided.length < ticketCnt) {\n hasErrors = true;\n setError(`ticketUrls`, { message: missingMsg as string }); // for the bulk-edit inputs\n } else if (ticketUrlsProvided.length > ticketCnt) {\n hasErrors = true;\n setError(`ticketUrls`, { message: extraMsg as string }); // for the bulk-edit inputs\n } else if (ticketUrlsProvided.some((b) => !b.match(URL_REGEX))) {\n hasErrors = true;\n setError(`ticketUrls`, { message: invalidUrlMsg }); // for the bulk-edit inputs\n }\n }\n\n ticketUrls?.forEach((b, i) => {\n if (!b.url) {\n hasErrors = true;\n setError(`ticketUrls.${i}.url`, { message: requiredMsg });\n } else if (!b.url.match(URL_REGEX)) {\n setError(`ticketUrls.${i}.url`, { message: invalidUrlMsg });\n } else if (!isUniqueWithin(b.url, ticketUrlsProvided, true)) {\n hasErrors = true;\n if (isBulkUpload) {\n setError(`ticketUrls`, { message: duplicateMsg }); // for the bulk-edit inputs\n }\n setError(`ticketUrls.${i}.url`, { message: duplicateMsg });\n }\n });\n return hasErrors;\n};\n","import { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { Stack } from 'src/core/ui';\nimport { mergeProps } from 'src/core/utils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Seating } from 'src/WebApiController';\n\nimport * as styles from '../../../modals/UploadTicketUrls/UploadTicketUrls.css';\nimport { BulkTicketUrlInput } from '../UploadStringArtifacts/BulkStringArtifactInput';\nimport { ManualTicketUrlEntry } from '../UploadStringArtifacts/ManualStringArtifactEntry';\nimport { TicketUrlForm } from './UploadTicketUrls.utils';\n\nexport type UploadTicketUrlsBodyProps = {\n isReadOnly?: boolean;\n ticketCnt: number;\n seating: Seating;\n instructionContentId?: ContentId;\n className?: string;\n};\nexport const UploadTicketUrlsBody = ({\n className,\n isReadOnly,\n seating,\n ticketCnt,\n instructionContentId,\n}: UploadTicketUrlsBodyProps) => {\n const { watch, setValue } = useFormContext();\n\n const bulkUpload = watch('isBulkUpload');\n\n const inputProps = {\n readOnly: isReadOnly,\n seating,\n quantity: ticketCnt,\n };\n\n return (\n \n {!isReadOnly && (\n \n )}\n \n \n setValue('isBulkUpload', !bulkUpload)}\n disabled={isReadOnly}\n />\n \n\n {!bulkUpload ? (\n \n ) : (\n setValue('isBulkUpload', !bulkUpload)}\n />\n )}\n \n );\n};\n","import { ComponentProps, ReactNode, useCallback, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useContent, useFormattedContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ApiException,\n PosClientConfig,\n PosUiActionResult,\n TicketUrl,\n} from 'src/WebApiController';\n\nimport {\n checkDuplicateTicketUrls,\n checkTicketUrlErrors,\n TicketUrlForm,\n} from './UploadTicketUrls.utils';\n\nexport type UploadTicketUrlsFormProps = {\n entityWithTickets: Pick<\n EntityWithRealTickets,\n 'viagVirtualId' | 'id' | 'ticketCnt' | 'tickets' | 'seating'\n >;\n renderContent: (onUploadClick: () => void, disabled?: boolean) => ReactNode;\n onComplete: (isCancelled: boolean) => void;\n onUpload?: (\n posClientConfig: PosClientConfig,\n entityId: number,\n ticketUrls: TicketUrl[]\n ) => Promise;\n defaultToBulk?: boolean;\n isReadOnly?: boolean;\n};\n\nexport const UploadTicketUrlsForm = (props: UploadTicketUrlsFormProps) => {\n const methods = useForm({\n mode: 'all',\n criteriaMode: 'all',\n defaultValues: {\n ticketUrls: props.entityWithTickets.tickets?.map(\n ({ id, ticketUrl, row, seat }) => {\n return {\n ticketId: id,\n url: ticketUrl || '',\n section: props.entityWithTickets.seating.section,\n row: row,\n seat: seat,\n };\n }\n ),\n },\n });\n\n return (\n \n \n \n );\n};\n\nconst UploadTicketUrlsContent = ({\n entityWithTickets,\n renderContent,\n onComplete,\n onUpload,\n handleSubmit,\n setError,\n watch,\n isReadOnly = false,\n}: UploadTicketUrlsFormProps &\n Omit<\n ComponentProps>,\n 'children'\n >) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { ticketCnt } = entityWithTickets;\n const ticketUrls = watch('ticketUrls');\n const bulkUpload = watch('isBulkUpload');\n\n const [readOnly, setReadOnly] = useState(isReadOnly);\n const { showErrorDialog, genericError } = useErrorBoundaryContext();\n\n const [alreadyReportedUsedTicketUrls, setAlreadyReportedUsedTicketUrls] =\n useState([]);\n const ticketUrlAlreadyUsedWarning = useContent(\n ContentId.TicketUrlAlreadyInUsed\n );\n\n const requiredMsg = useContent(ContentId.Required);\n const duplicateMsg = useContent(ContentId.DuplicateUrl);\n const ticketUrlsProvided =\n ticketUrls?.map((b) => b.url).filter((b) => b?.length) ?? [];\n const missingMsg = useFormattedContent(\n FormatContentId.MissingTicketUrls,\n `${ticketCnt - ticketUrlsProvided.length}`\n );\n const invalidUrlMsg = useContent(ContentId.InvalidUrl);\n\n const extraMsg = useFormattedContent(\n FormatContentId.ExtraTicketUrls,\n `${ticketUrlsProvided.length - ticketCnt}`\n );\n\n const onSubmit = useCallback(\n async ({ ticketUrls }: TicketUrlForm) => {\n if (!onUpload) {\n console.log(\n 'Internal Error - no onUploadTicketUrls provided for non-readonly mode.'\n );\n return;\n }\n\n if (!entityWithTickets) {\n console.log('Internal Error - entity (listing or sale) is null.');\n return;\n }\n\n tryInvokeApi(\n async () => {\n setReadOnly(true);\n\n const result = await onUpload(\n activeAccountWebClientConfig,\n entityWithTickets.id,\n ticketUrls!\n );\n if (!isSuccess(result)) {\n showErrorDialog(\n 'uploadTicketUrls',\n {\n message: result.message ?? genericError,\n status: result.status!,\n } as ApiException,\n {\n onDismissError: () => onComplete(true),\n trackErrorData: {\n saleId: entityWithTickets?.id,\n ticketUrls,\n },\n }\n );\n } else {\n onComplete(false);\n }\n },\n (error) => {\n showErrorDialog('uploadTicketUrls', error, {\n trackErrorData: {\n saleId: entityWithTickets?.id,\n ticketUrls,\n },\n });\n },\n () => setReadOnly(false)\n );\n },\n [\n onUpload,\n entityWithTickets,\n activeAccountWebClientConfig,\n showErrorDialog,\n genericError,\n onComplete,\n ]\n );\n\n const onUploadClick = useCallback(async () => {\n let hasErrors = checkTicketUrlErrors(\n bulkUpload,\n ticketUrls,\n ticketCnt,\n setError,\n requiredMsg,\n missingMsg as string,\n extraMsg as string,\n duplicateMsg,\n invalidUrlMsg\n );\n\n if (hasErrors) {\n return;\n }\n\n hasErrors = Boolean(\n await checkDuplicateTicketUrls(\n entityWithTickets!.id,\n ticketUrls,\n activeAccountWebClientConfig,\n alreadyReportedUsedTicketUrls,\n setAlreadyReportedUsedTicketUrls,\n (index: number) =>\n setError(`ticketUrls.${index}.url`, {\n type: 'warning',\n message: ticketUrlAlreadyUsedWarning,\n }),\n () => setReadOnly(true),\n () => setReadOnly(false),\n showErrorDialog,\n entityWithTickets!.viagVirtualId\n )\n );\n\n if (!hasErrors) {\n handleSubmit(onSubmit)();\n }\n }, [\n bulkUpload,\n ticketUrls,\n ticketCnt,\n setError,\n requiredMsg,\n missingMsg,\n extraMsg,\n duplicateMsg,\n invalidUrlMsg,\n entityWithTickets,\n activeAccountWebClientConfig,\n alreadyReportedUsedTicketUrls,\n showErrorDialog,\n ticketUrlAlreadyUsedWarning,\n handleSubmit,\n onSubmit,\n ]);\n\n const reallyReadOnly = isReadOnly || readOnly;\n\n return renderContent(onUploadClick, reallyReadOnly);\n};\n","import { useFormContext } from 'react-hook-form';\nimport { UploadTicketUrlsForm } from 'src/components/UploadArtifacts/UploadTicketUrls';\nimport { UploadTicketUrlsBody } from 'src/components/UploadArtifacts/UploadTicketUrls/UploadTicketUrlsBody';\nimport { Stack } from 'src/core/ui';\nimport { PurchaseWizardFooter } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport {\n ActionOutboxEntityType,\n PosClientConfig,\n PosUiActionResult,\n Ticket,\n TicketGroupInput,\n TicketUrl,\n} from 'src/WebApiController';\n\nimport {\n EntityWithRealTickets,\n toSeating,\n} from '../../../../utils/ticketUtils';\nimport {\n ticketGroupInputFooter,\n ticketGroupPredeliveryBody,\n} from '../PurchaseTicketFlow.css';\n\nexport const UploadTicketUrlsSection = ({\n ticketGroupIndex,\n onCancel,\n}: {\n ticketGroupIndex: number;\n onCancel: () => void;\n}) => {\n const { setValue, watch } = useFormContext();\n\n const ticketGroupInput = watch(`ticketGroups.${ticketGroupIndex}`);\n\n const onSubmit = (\n _: PosClientConfig,\n entityId: number,\n ticketUrls: TicketUrl[]\n ) => {\n const newTickets = posChangedField(\n ticketGroupInput.tickets!.value!.map((t) => {\n const tb = ticketUrls.find((b) => b.ticketId === t!.id);\n t!.ticketUrl = tb?.url ?? null;\n return { ...t } as Ticket;\n })\n );\n\n setValue(`ticketGroups.${ticketGroupIndex}.tickets`, newTickets);\n\n return Promise.resolve({\n status: 200,\n entityId,\n entityType: ActionOutboxEntityType.Purchase,\n } as PosUiActionResult);\n };\n\n const toEntityWithTicket = (\n ticketGroup: TicketGroupInput\n ): Pick<\n EntityWithRealTickets,\n 'tickets' | 'id' | 'viagVirtualId' | 'seating' | 'ticketCnt'\n > => {\n return {\n id: ticketGroup.ticketGroupId,\n viagVirtualId: ticketGroup.viagogoVirtualId,\n seating: toSeating(ticketGroup),\n ticketCnt: ticketGroup.numberOfTickets?.value ?? 0,\n tickets: ticketGroup.tickets?.value ?? [],\n };\n };\n\n const ticketGroup = toEntityWithTicket(ticketGroupInput);\n return (\n void, disabled?: boolean) => (\n \n \n \n \n )}\n />\n );\n};\n","import { UploadETicketsSectionSelector } from 'src/modals/PurchaseWizard/UploadETicketsSectionSelector';\nimport { ListingActionType, TicketType } from 'src/WebApiController';\n\nimport { UploadPredeliveryAction } from '../purchaseTicketsFlow.utils';\nimport { UploadBarcodesSection } from './UploadBarcodesSection';\nimport { UploadExternalIdsSection } from './UploadExternalIdsSection';\nimport { UploadTicketUrlsSection } from './UploadTicketUrlsSection';\n\nexport const PredeliverySection = ({\n ticketGroupIndex,\n action,\n onCancel,\n}: {\n ticketGroupIndex: number;\n onCancel: () => void;\n action: UploadPredeliveryAction;\n}) => {\n switch (action) {\n case ListingActionType.PredeliverBarcodes:\n return (\n \n );\n case ListingActionType.PredeliverETickets:\n return (\n \n );\n case ListingActionType.PredeliverExternalIds:\n return (\n \n );\n case ListingActionType.PredeliverQRCode:\n return (\n \n );\n case ListingActionType.PredeliverTicketUrls:\n return (\n \n );\n }\n};\n","import { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport {\n EventSearch,\n OnEventsSelectCallback,\n} from 'src/components/Events/EventSearch';\nimport { FieldError } from 'src/modals/common/Purchase';\nimport { ModalBodyDataContainer } from 'src/modals/Modal/Modal.styled';\nimport { newBigIntId } from 'src/utils/idUtils';\nimport { posChangedField, posField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { DeliveryType, TicketGroupInput } from 'src/WebApiController';\n\nexport function SearchPurchasedEvents({\n currencyCode,\n}: {\n currencyCode: string;\n}) {\n const { setValue, watch, formState, clearErrors } =\n useFormContext();\n const ticketGroups = watch('ticketGroups');\n\n const ticketGroupFromPartialPurchase = watch(\n 'ticketGroupFromPartialPurchaseOrder'\n );\n const searchTextPrefillForPartialPurchase = watch(\n 'eventSearchTextFromPartialPurchaseOrder'\n );\n const selectedEventIds = useMemo(\n () =>\n ticketGroups\n ?.filter((tg) => tg.event?.viagVirtualId)\n .map((tg) => tg.event!.viagVirtualId),\n [ticketGroups]\n );\n\n const onEventsSelect = useCallback(\n (data) => {\n clearErrors('ticketGroups');\n\n const selectedViagogoVirtualIds = new Set(\n ticketGroups\n .map((tg) => tg.event?.viagVirtualId)\n .filter((id): id is string => id != null)\n );\n\n const unselectedViagogoVirtualIds = new Set();\n let newTicketGroups = [...(ticketGroups || [])];\n const startId = newBigIntId();\n\n data.forEach(({ event, isSelected, performer, venue }, i) => {\n if (isSelected) {\n // skip events that are already selected\n if (!selectedViagogoVirtualIds.has(event.viagVirtualId)) {\n if (ticketGroupFromPartialPurchase == null) {\n newTicketGroups.push({\n ticketGroupId: startId - i,\n deliveryType: posChangedField(DeliveryType.InApp),\n currencyCode: posChangedField(currencyCode),\n viagogoVirtualId: event.viagVirtualId,\n eventMappingId: event.mappingId,\n viagogoEventId: event.viagId,\n posEventId: event.posIds[0],\n event: event,\n expectedValue: posChangedField(null),\n faceValueCost: posField(null),\n row: posChangedField(null),\n section: posChangedField(null),\n listingNotes: posChangedField(null),\n numberOfTickets: posChangedField(null),\n unitCost: posChangedField(null),\n totalCost: posChangedField(null),\n performer: performer,\n venue: venue,\n taxPaid: posChangedField(1), // This is to turn off taxExempt by default\n } as TicketGroupInput);\n } else {\n newTicketGroups.push({\n ...ticketGroupFromPartialPurchase,\n ticketGroupId: startId - i,\n deliveryType: posChangedField(DeliveryType.InApp),\n currencyCode: posChangedField(currencyCode),\n viagogoVirtualId: event.viagVirtualId,\n eventMappingId: event.mappingId,\n viagogoEventId: event.viagId,\n posEventId: event.posIds[0],\n event: event,\n performer: performer,\n venue: venue,\n taxPaid: posChangedField(1), // This is to turn off taxExempt by default\n } as TicketGroupInput);\n }\n }\n } else {\n unselectedViagogoVirtualIds.add(event.viagVirtualId);\n }\n });\n\n if (unselectedViagogoVirtualIds.size > 0) {\n // If we unselect an event, that just mean we don't want to add this new event\n // this time, so only remove new ticket groups with this event (eventId is null)\n newTicketGroups = newTicketGroups?.filter(\n (tg) =>\n tg.numberOfTickets?.value ||\n (tg.event?.viagVirtualId &&\n !unselectedViagogoVirtualIds.has(tg.event.viagVirtualId))\n );\n }\n\n setValue('ticketGroups', newTicketGroups);\n },\n [\n clearErrors,\n currencyCode,\n setValue,\n ticketGroups,\n ticketGroupFromPartialPurchase,\n ]\n );\n\n const onEventsSelectForEdit = useCallback(\n (data) => {\n clearErrors('ticketGroups');\n\n const newTicketGroups: TicketGroupInput[] = [];\n const startId = newBigIntId();\n\n data.forEach(({ event, performer, venue }, i) => {\n newTicketGroups.push({\n // doing this guarantee uniqueness for all these ticket-groups in this batch\n // because the loop runs so fast, newBigIntId (which returns the current time in ms) would be the same for all these\n ticketGroupId: startId - i,\n deliveryType: posChangedField(DeliveryType.InApp),\n currencyCode: posChangedField(currencyCode),\n viagogoVirtualId: event.viagVirtualId,\n eventMappingId: event.mappingId,\n viagogoEventId: event.viagId,\n posEventId: event.posIds[0],\n event: event,\n performer: performer,\n venue: venue,\n taxPaid: posChangedField(1), // This is to turn off taxExempt by default\n } as TicketGroupInput);\n });\n\n setValue('ticketGroups', newTicketGroups);\n },\n [clearErrors, currencyCode, setValue]\n );\n\n const onDeleteNumEventsSelected = useCallback(() => {\n setValue('ticketGroups', []);\n }, [setValue]);\n\n return (\n <>\n \n {formState.errors.ticketGroups && (\n {formState.errors.ticketGroups.message}\n )}\n \n \n \n );\n}\n","import { isEqual } from 'lodash-es';\nimport { ComponentProps, useCallback, useMemo, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { DndGlobalFileDrop } from 'src/core/POS/DnDFileUploader/components/DndGlobalFileDrop';\nimport { DndFilerUploaderContextProvider } from 'src/core/POS/DnDFileUploader/DndFileUploaderContext';\nimport { Stack } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useGetEventListingConstraints } from 'src/hooks/useGetEventListingConstraints';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { EventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalBodyDataContainer } from 'src/modals/Modal/Modal.styled';\nimport { PurchaseTicketFlowTitle } from 'src/modals/PurchaseWizard/PurchaseTicketsFlow/components/PurchaseTicketFlowTitle';\nimport { predeliverETicketsDnd } from 'src/modals/PurchaseWizard/PurchaseTicketsFlow/PurchaseTicketFlow.css';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getInHandDateBasedOnEvent } from 'src/utils/eventWithDataUtils';\nimport { posChangedField, posField } from 'src/utils/posFieldUtils';\nimport {\n PurchaseTicketsInput,\n validateEventSelection,\n validateTicketGroups,\n} from 'src/utils/purchaseUtils';\nimport { selectEventInfoFromTicketGroups } from 'src/utils/ticketUtils';\nimport {\n Feature,\n ListingActionType,\n TicketGroupEditReason,\n TicketGroupInput,\n} from 'src/WebApiController';\n\nimport {\n PurchaseWizardFooter,\n PurchaseWizardFooterProps,\n} from '../../common/Purchase/PurchaseWizardFooter';\nimport { ModalBody } from '../../Modal';\nimport PurchaseTicketGroupPage from '../PurchaseTicketsFlowV2/PurchaseTicketGroupPage';\nimport { TicketGroupEditContext } from '../PurchaseWizard.types';\nimport { PredeliverySection } from './components/PredeliverySection';\nimport { UploadPredeliveryAction } from './purchaseTicketsFlow.utils';\nimport { SearchPurchasedEvents } from './SearchPurchasedEvents';\nimport { PurchaseOrderInfoForTicketGroupInput } from './TicketGroupInput.types';\n\nexport type PurchaseTicketsFlowProps = {\n currencyCode: string;\n purchaseOrderInfo?: PurchaseOrderInfoForTicketGroupInput | null;\n ticketGroups: TicketGroupInput[];\n ticketGroupFromPartialPurchaseOrder?: TicketGroupInput | null;\n eventSearchTextFromPartialPurchaseOrder?: string | null;\n updateSalesOfListings?: boolean | null;\n startIndex: number;\n avoidPrefill?: boolean;\n disabled?: boolean;\n onCancel: () => void;\n onSubmit: (formData: PurchaseTicketsInput) => void;\n emailPreview?: JSX.Element | null;\n uploadPredeliveryAction?: UploadPredeliveryAction | undefined;\n ticketGroupEditContext: TicketGroupEditContext;\n};\n\n/**\n * Checks if there are multiple unique event IDs in the ticket groups array.\n * @param ticketGroups - Array of ticket group objects.\n * @returns True if more than one unique eventId is found, otherwise false.\n */\nexport function hasMultipleEventIds(ticketGroups: TicketGroupInput[]): boolean {\n let firstEventId: number | string | undefined;\n\n for (const tg of ticketGroups) {\n const eventId = tg.event?.viagId;\n if (eventId) {\n if (firstEventId === undefined) {\n firstEventId = eventId;\n } else if (firstEventId !== eventId) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport const PurchaseMultiTicketsFlow = ({\n ticketGroups,\n avoidPrefill,\n ticketGroupFromPartialPurchaseOrder,\n eventSearchTextFromPartialPurchaseOrder,\n updateSalesOfListings,\n ...rest\n}: PurchaseTicketsFlowProps) => {\n const methods = useForm({\n defaultValues: {\n ticketGroups: avoidPrefill\n ? selectEventInfoFromTicketGroups(ticketGroups)\n : ticketGroups.map((tg) => ({\n ...tg,\n tickets: posField(\n tg.tickets?.value?.toSorted((a, b) => a.ord - b.ord)\n ),\n })),\n updateSalesOfListings,\n updatePredeliveryETicketArtifacts: false,\n ticketGroupFromPartialPurchaseOrder,\n eventSearchTextFromPartialPurchaseOrder,\n },\n });\n\n return (\n \n \n \n );\n};\n\nconst EMPTY_EVENT_IDS: number[] = [];\n\nfunction PurchaseMultiTicketsFlowBody({\n disabled,\n currencyCode,\n purchaseOrderInfo,\n startIndex,\n onCancel,\n onSubmit,\n formState,\n handleSubmit,\n setError,\n getValues,\n setValue,\n clearErrors,\n watch,\n emailPreview,\n uploadPredeliveryAction,\n ticketGroupEditContext,\n}: Omit &\n Omit<\n ComponentProps>,\n 'children'\n >) {\n const formTicketGroups = getValues('ticketGroups');\n\n const daysBeforeEvent = watch('daysBeforeEvent');\n\n const requiredMsg = useContent(ContentId.Required);\n const duplicateSeatMsg = useContent(ContentId.DuplicateSeat);\n const eventRequiredMsg = useContent(ContentId.SearchAndSelectAnEvent);\n const inHandDateMustBeforeEventDateMsg = useContent(\n ContentId.InHandDateMustBeBeforeEventDate\n );\n const autoBroadcastRequireFaceValueMsg = useContent(\n ContentId.AutoBroadcastRequiredFaceValue\n );\n\n const hasUploadTicketFilesFlowV2 = useUserHasFeature(\n Feature.UploadTicketFilesFlowV2\n );\n\n const multiEventInputsDialog = useBasicDialog();\n const [singleInputModeForMultiEvent, setSingleInputModeForMultiEvent] =\n useState(true);\n\n const isMultiEvent = hasMultipleEventIds(formTicketGroups);\n\n const isSingleInputModeForMultiEvent =\n singleInputModeForMultiEvent && isMultiEvent;\n\n // Index of a Group of TicketGroupInput\n const [curGroupIndex, setCurGroupIndex] = useState(startIndex);\n\n const groupsOfTicketGroup = useMemo(() => {\n const noVenueCfgIdGroup = 'no_venue_cfg_id';\n\n if (isSingleInputModeForMultiEvent) {\n const ticketGroupsMap = new Map();\n formTicketGroups.forEach((ticketGroup) => {\n const venueCfgId = ticketGroup?.event?.venueCfgId || noVenueCfgIdGroup;\n const group = ticketGroupsMap.get(venueCfgId) || [];\n group.push(ticketGroup);\n ticketGroupsMap.set(venueCfgId, group);\n });\n\n const noCfgId = ticketGroupsMap.get(noVenueCfgIdGroup);\n ticketGroupsMap.delete(noVenueCfgIdGroup);\n\n const groupOfTicketGroups = Array.from(ticketGroupsMap.values());\n if (noCfgId && noCfgId.length > 0) {\n noCfgId.forEach((ticketGroup) => {\n groupOfTicketGroups.push([ticketGroup]);\n });\n }\n\n return groupOfTicketGroups;\n }\n\n if (isMultiEvent) {\n const noViagIdGroup = 'no_viag_id';\n const ticketGroupsMap = new Map();\n formTicketGroups.forEach((ticketGroup) => {\n const viagId = ticketGroup?.event?.viagId || noViagIdGroup;\n const group = ticketGroupsMap.get(viagId) || [];\n group.push(ticketGroup);\n ticketGroupsMap.set(viagId, group);\n });\n\n const noViagId = ticketGroupsMap.get(noViagIdGroup);\n ticketGroupsMap.delete(noViagIdGroup);\n\n const groupOfTicketGroups = Array.from(ticketGroupsMap.values());\n if (noViagId && noViagId.length > 0) {\n noViagId.forEach((ticketGroup) => {\n groupOfTicketGroups.push([ticketGroup]);\n });\n }\n return groupOfTicketGroups;\n }\n\n if (\n (ticketGroupEditContext.editIntention ===\n TicketGroupEditReason.AddTickets &&\n !ticketGroupEditContext.startWithEventSearch) ||\n ticketGroupEditContext.editIntention ===\n TicketGroupEditReason.AmendTickets\n ) {\n return [formTicketGroups];\n }\n\n return formTicketGroups.map((ticketGroup) => [ticketGroup]);\n }, [\n formTicketGroups,\n isMultiEvent,\n isSingleInputModeForMultiEvent,\n ticketGroupEditContext,\n ]);\n\n const [showPredeliverySection, setShowPredeliverySection] = useState<\n UploadPredeliveryAction | undefined\n >(uploadPredeliveryAction);\n\n const curTicketGroups = useMemo(() => {\n return curGroupIndex >= 0\n ? // Pick first ticketGroup because:\n // If inputMode is grouping: all the items in the group will have the same config\n // If input mode is one by one: Each ticketGroup is a group of one item.\n groupsOfTicketGroup[curGroupIndex]\n : groupsOfTicketGroup.flatMap((group) => group);\n }, [groupsOfTicketGroup, curGroupIndex]);\n\n const showSearch = curGroupIndex < 0 || !curTicketGroups;\n\n const ticketGroupsEventIds = useMemo(\n () =>\n formTicketGroups\n .filter((tg) => tg.event?.viagId != null)\n .map((tg) => tg.event?.viagId!),\n [formTicketGroups]\n );\n const { eventListingConstraintsQuery } = useGetEventListingConstraints(\n showSearch ? EMPTY_EVENT_IDS : ticketGroupsEventIds\n );\n\n const currentFormTicketGroupIndex = useMemo(() => {\n return formTicketGroups.findIndex(\n (tg) => tg.ticketGroupId === formTicketGroups[0]?.ticketGroupId\n );\n }, [formTicketGroups, curTicketGroups]);\n\n const onSubmitWrapper = useCallback(() => {\n const newTgs = getValues('ticketGroups');\n if (\n validateEventSelection(clearErrors, setError, newTgs, eventRequiredMsg) &&\n validateTicketGroups(\n true,\n clearErrors,\n setError,\n newTgs,\n requiredMsg,\n duplicateSeatMsg,\n inHandDateMustBeforeEventDateMsg,\n autoBroadcastRequireFaceValueMsg\n )\n ) {\n handleSubmit(onSubmit)();\n }\n }, [\n getValues,\n clearErrors,\n setError,\n eventRequiredMsg,\n requiredMsg,\n duplicateSeatMsg,\n inHandDateMustBeforeEventDateMsg,\n autoBroadcastRequireFaceValueMsg,\n handleSubmit,\n onSubmit,\n ]);\n\n const onPrevFromSearchEventsStep = useCallback(() => {\n onCancel();\n }, [onCancel]);\n\n const onNextFromSearchEventsStep = useCallback(() => {\n if (\n validateEventSelection(\n clearErrors,\n setError,\n formTicketGroups,\n eventRequiredMsg\n )\n ) {\n const hasGroupedEvents = groupsOfTicketGroup.some(\n (group) => group.length > 1\n );\n if (hasGroupedEvents) {\n // If we have more than one event selected, we need to ask whether the user\n // wants to input tickets for each of them separately for together\n multiEventInputsDialog.launchDialog();\n } else {\n setSingleInputModeForMultiEvent(false);\n setCurGroupIndex(0);\n }\n }\n }, [\n clearErrors,\n setError,\n formTicketGroups,\n eventRequiredMsg,\n groupsOfTicketGroup,\n multiEventInputsDialog,\n ]);\n\n const onPrevFromTicketGroupInputStep = useCallback(() => {\n if (showPredeliverySection) {\n setShowPredeliverySection(undefined);\n } else if (curGroupIndex === startIndex) {\n onCancel();\n } else {\n setCurGroupIndex(curGroupIndex - 1);\n\n // Generate groups again to ask for confirmation for single input\n setSingleInputModeForMultiEvent(true);\n }\n }, [curGroupIndex, onCancel, showPredeliverySection, startIndex]);\n\n const onNextFromTicketGroupInputStep = useCallback(\n (tgs: TicketGroupInput[]) => {\n const formTicketGroups = getValues('ticketGroups');\n const isLastGroup = curGroupIndex === groupsOfTicketGroup.length - 1;\n\n // Input mode: One input of ticket groups for each venue config\n if (isSingleInputModeForMultiEvent) {\n const updatedTicketGroups: TicketGroupInput[] = [];\n\n // Copy the content of the previous ticket-Group to all the ticketGroups and submit\n for (let i = 0; i < curTicketGroups.length; i++) {\n const currTg = curTicketGroups[i];\n if (!currTg.inHandDate?.value && currTg.event?.dates?.start) {\n currTg.inHandDate = posChangedField(\n getInHandDateBasedOnEvent(currTg.event, daysBeforeEvent)\n );\n }\n\n const newTgsForEvent = tgs.map((tg, newTgIndex) => {\n const newTg: TicketGroupInput = {\n ...tg,\n ticketGroupId: currTg.ticketGroupId - newTgIndex,\n viagogoEventId: currTg.event?.viagId || null,\n viagogoVirtualId: currTg.event?.viagVirtualId || '',\n eventMappingId: currTg.event?.mappingId || null,\n posEventId: currTg.event?.posIds?.[0] || null,\n event: currTg.event,\n performer: currTg.performer,\n venue: currTg.venue,\n inHandDate: currTg.inHandDate,\n };\n\n return newTg;\n });\n\n updatedTicketGroups.push(...newTgsForEvent);\n }\n\n const finalTgs = [\n ...new Map(\n [...formTicketGroups, ...updatedTicketGroups].map((tg) => [\n tg.ticketGroupId,\n tg,\n ])\n ).values(),\n ];\n\n setValue('ticketGroups', [...finalTgs]);\n\n // Input mode: One input for each event for multi event\n } else if (isMultiEvent) {\n const formTicketGroups = getValues('ticketGroups');\n const notUpdatedTgs = formTicketGroups.filter(\n (tg) => tg.viagogoVirtualId !== curTicketGroups[0].viagogoVirtualId\n );\n const updatedTicketGroups = [\n ...new Map(\n [...tgs, ...notUpdatedTgs].map((tg) => [tg.ticketGroupId, tg])\n ).values(),\n ];\n\n setValue('ticketGroups', updatedTicketGroups);\n // Input mode: Single event\n } else {\n const updatedTicketGroups = tgs;\n setValue('ticketGroups', updatedTicketGroups);\n }\n if (isLastGroup) {\n onSubmitWrapper();\n } else {\n // Just increment the group, since each ticketGroup\n // represents a ticketGroup[] of one element.\n setCurGroupIndex(curGroupIndex + 1);\n }\n },\n [\n autoBroadcastRequireFaceValueMsg,\n clearErrors,\n curGroupIndex,\n curTicketGroups,\n daysBeforeEvent,\n duplicateSeatMsg,\n getValues,\n groupsOfTicketGroup.length,\n inHandDateMustBeforeEventDateMsg,\n isSingleInputModeForMultiEvent,\n onSubmitWrapper,\n requiredMsg,\n setError,\n setValue,\n ]\n );\n\n const getFooterActions = useCallback((): PurchaseWizardFooterProps => {\n return {\n hasChanges:\n !showPredeliverySection &&\n !isEqual(formState.defaultValues?.ticketGroups, formTicketGroups),\n onPreviousLabel: ContentId.Cancel,\n onPrevious: onPrevFromSearchEventsStep,\n onNextLabel: ContentId.Next,\n onNext: onNextFromSearchEventsStep,\n };\n }, [\n formState.defaultValues?.ticketGroups,\n onNextFromSearchEventsStep,\n onPrevFromSearchEventsStep,\n showPredeliverySection,\n formTicketGroups,\n ]);\n\n const finalTicketGroups = useMemo(\n () =>\n isSingleInputModeForMultiEvent ? [curTicketGroups[0]] : curTicketGroups,\n [curTicketGroups, isSingleInputModeForMultiEvent]\n );\n\n const footerActions = getFooterActions();\n const isPredeliverETicketsAction =\n showPredeliverySection === ListingActionType.PredeliverETickets;\n\n return (\n <>\n setShowPredeliverySection(undefined)\n : onCancel\n }\n >\n \n }\n />\n \n \n \n \n {emailPreview}\n\n \n {showSearch ? (\n \n ) : showPredeliverySection ? (\n \n setShowPredeliverySection(undefined)}\n />\n \n ) : (\n \n )}\n \n \n {!showPredeliverySection && showSearch && (\n \n )}\n \n \n \n }\n bodyText={\n \n \n \n \n \n \n \n \n \n \n \n }\n onCancel={() => {\n setCurGroupIndex(0);\n setSingleInputModeForMultiEvent(false);\n multiEventInputsDialog.closeDialog();\n }}\n onOkay={() => {\n setCurGroupIndex(0);\n setSingleInputModeForMultiEvent(true);\n multiEventInputsDialog.closeDialog();\n }}\n />\n \n );\n}\n","import { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { getPerformerAndVenueForEvent } from 'src/utils/eventWithDataUtils';\nimport { Event, Performer, Venue } from 'src/WebApiController';\n\nexport const useGetEventFullInfo = (\n event?: Event | null,\n performer?: Performer | null,\n venue?: Venue | null\n) => {\n const { event: activeEvent } = useActivePosEntityContext();\n const { data } = useCatalogDataContext();\n\n const { performer: cachedPerfomer, venue: cachedVenue } =\n getPerformerAndVenueForEvent(event ?? activeEvent, data);\n\n return {\n event: event ?? activeEvent,\n performer: performer ?? cachedPerfomer,\n venue: venue ?? cachedVenue,\n };\n};\n","import { ReactNode } from 'react';\nimport * as styles from 'src/modals/common/Summary/Summary.css';\n\ninterface SummaryWrapperProps {\n children: ReactNode;\n}\nexport const SummaryWrapper = ({ children }: SummaryWrapperProps) => {\n return
    {children}
    ;\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { LaunchActivityLog } from 'src/modals/ActivityLog';\nimport { InventoryDeeplinkQueryParam } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getListingDetailsModalConfigWithDeepLink } from 'src/utils/inventoryUtils';\n\nimport { ShareButton } from '../ShareButton/ShareButton';\nimport {\n entityInfoShareButtonIdNumberWrapper,\n entityText,\n} from './EventEntityHeader.css';\nimport { EntityIdNumberDiv, EntityInfoDiv } from './EventEntityHeader.styled';\n\nexport const ListingInfoDisplay = ({\n entityId,\n ticketCnt,\n}: {\n entityId: number;\n ticketCnt: number;\n}) => {\n return (\n \n
    \n \n #{entityId}\n
    \n
    \n {ticketCnt} \n
    \n \n
    \n );\n};\n","import { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Feature } from 'src/WebApiController';\n\nexport const useHasSaleDetailsMarketplaceTermsFeature = () => {\n return useUserHasFeature(Feature.SaleDetailsMarketplaceTerms);\n};\n","import { useAppContext } from 'src/contexts/AppContext';\nimport { hasPermissionForSale } from 'src/utils/userPermissionUtils';\nimport { Permission, Sale } from 'src/WebApiController';\n\nexport const useUserHasSalePermission = (\n sale: Sale | null | undefined,\n root: Permission,\n isFulfillerOf?: Permission,\n isPricerOf?: Permission,\n isPurchasedBy?: Permission\n) => {\n const { loginContext } = useAppContext();\n\n const canUpdate = hasPermissionForSale(\n loginContext?.user,\n sale,\n root,\n isFulfillerOf,\n isPricerOf,\n isPurchasedBy\n );\n\n return canUpdate;\n};\n\nexport const useUserCanUpdateSale = (sale: Sale | null | undefined) => {\n return useUserHasSalePermission(\n sale,\n Permission.Sales_UpdateSalesInfo,\n Permission.Sales_UpdateSalesInfoOnIsFulfillerOf,\n Permission.Sales_UpdateSalesInfoOnIsPricerOf,\n Permission.Sales_UpdateSaleOnPurchasedBy\n );\n};\n\nexport const useUserCanUpdateSaleTags = (sale: Sale | null | undefined) => {\n const canSetPrice = useUserHasSalePermission(\n sale,\n Permission.Sales_UpdateTags,\n Permission.Sales_UpdateTagsOnIsFulfillerOf,\n Permission.Sales_UpdateTagsOnIsPricerOf,\n Permission.Sales_UpdateTagsOnPurchasedBy\n );\n return canSetPrice;\n};\n\nexport const useUserCanFulfillSale = (sale: Sale | null | undefined) => {\n return useUserHasSalePermission(\n sale,\n Permission.Sales_Fulfill,\n Permission.Sales_FulfillOnIsFulfillerOf,\n Permission.Sales_FulfillOnPricerOf,\n Permission.Sales_FulfillOnPurchasedBy\n );\n};\n\nexport const useUserCanViewFulfillmentArtifacts = (\n sale: Sale | null | undefined\n) => {\n // It is assumed if you can fulfill - then you can view fulfillment artifacts\n const canFulfill = useUserCanFulfillSale(sale);\n\n const canView = useUserHasSalePermission(\n sale,\n Permission.Sales_ViewFulfillmentArtifacts,\n Permission.Sales_ViewFulfillmentArtifactsOnIsFulfillerOf,\n Permission.Sales_ViewFulfillmentArtifactsOnIsPricerOf,\n Permission.Sales_ViewFulfillmentArtifactsOnPurchasedBy\n );\n\n return canView || canFulfill;\n};\n","import { format } from 'date-fns';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SaleCommentNote } from 'src/WebApiController';\n\nimport * as styles from './CommentSection.css';\n\nexport const CommentSection = ({\n commentNotes,\n}: {\n commentNotes?: SaleCommentNote[] | null;\n}) => {\n return (\n \n \n \n \n \n \n \n \n \n \n {commentNotes\n ?.toSorted((a, b) => {\n return a.date && b.date\n ? new Date(b.date).getTime() - new Date(a.date).getTime()\n : 0;\n })\n .map((cmt, i) => (\n \n \n \n \n \n ))}\n \n
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n {cmt.date\n ? format(new Date(cmt.date), 'MMMM dd, yyyy hh:mmaa')\n : ''}\n \n \n {cmt.email}\n \n {cmt.text}\n
    \n
    \n );\n};\n","import clsx from 'clsx';\nimport { ReactNode } from 'react';\nimport * as styles from './PosPill.css';\n\nexport enum PosPillVariant {\n Brand = 'Brand',\n LightGreen = 'LightGreen',\n Success = 'Success',\n Warning = 'Warning',\n Error = 'Error',\n Info = 'Info',\n Neutral = 'Neutral',\n}\n\nconst getVariantClassName = (variant?: PosPillVariant): string => {\n switch (variant) {\n case PosPillVariant.Success:\n return styles.successVariant;\n case PosPillVariant.Warning:\n return styles.warningVariant;\n case PosPillVariant.Info:\n return styles.infoVariant;\n case PosPillVariant.Neutral:\n return styles.neutralVariant;\n case PosPillVariant.Error:\n return styles.errorVariant;\n case PosPillVariant.LightGreen:\n return styles.lightGreenVariant;\n case PosPillVariant.Brand:\n default:\n return styles.brandVariant;\n }\n};\n\ninterface PosPillProps {\n className?: string;\n children?: ReactNode;\n variant?: PosPillVariant;\n}\n\nexport const PosPill = ({ children, variant }: PosPillProps) => {\n return (\n
    \n {children}\n
    \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosPill } from 'src/core/POS/PosPill';\nimport { PosPillVariant } from 'src/core/POS/PosPill/PosPill';\nimport { MARKETPLACE_SALE_PAYMENT_STATE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n MarketplacePaymentState,\n PointOfSalePaymentState,\n} from 'src/WebApiController';\n\nconst getStateVariant = (\n state: MarketplacePaymentState | PointOfSalePaymentState\n): PosPillVariant => {\n switch (state) {\n case MarketplacePaymentState.Paid:\n return PosPillVariant.Success;\n case MarketplacePaymentState.Queued:\n return PosPillVariant.Warning;\n case MarketplacePaymentState.PartiallyPaid:\n return PosPillVariant.Info;\n case MarketplacePaymentState.Unpaid:\n case MarketplacePaymentState.Ineligible:\n default:\n return PosPillVariant.Neutral;\n }\n};\n\ninterface MarketplacePaymentStatePillProps {\n state: MarketplacePaymentState | PointOfSalePaymentState;\n}\n\nexport const MarketplacePaymentStatePill = ({\n state,\n}: MarketplacePaymentStatePillProps) => {\n return (\n \n \n \n );\n};\n","import {\n MarketplacePaymentLineType,\n MarketplacePaymentState,\n SiteMarketplacePaymentLineInput,\n} from 'src/WebApiController';\n\nexport const EMPTY_MARKETPLACE_PAYMENT_LINE: SiteMarketplacePaymentLineInput = {\n marketplacePaymentLineId: null,\n marketplacePaymentId: null,\n externalPaymentId: '',\n externalPaymentLineId: '',\n externalSaleId: '',\n saleId: null,\n currency: '',\n amount: 0,\n isCredit: false,\n paymentLineType: MarketplacePaymentLineType.Proceeds,\n paymentDate: null,\n receivedDate: null,\n paymentState: MarketplacePaymentState.Paid,\n};\n","import {\n ComponentProps,\n FocusEvent,\n useCallback,\n useEffect,\n useMemo,\n} from 'react';\nimport { Controller, useForm } from 'react-hook-form';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { DatePickerInput } from 'src/core/POS/DateSelector';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, Radio, RadioGroup, Stack } from 'src/core/ui';\nimport { FieldWrapper } from 'src/modals/common';\nimport { setValueAsNumber } from 'src/navigations/Routes/Settings/Views/SyncCenter/SyncCenter.utils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { MARKETPLACE_PAYMENT_LINE_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n MarketplacePaymentLineType,\n SaleDetails,\n SiteMarketplacePaymentLineInput,\n} from 'src/WebApiController';\n\nimport { EMPTY_MARKETPLACE_PAYMENT_LINE } from './MarketplacePaymentLineDialog.utils';\n\nexport type AddMarketplaceChargeDialogProps = Omit<\n ComponentProps,\n 'header' | 'footer'\n> & {\n onSave: (\n siteMarketplacePaymentLineInput: SiteMarketplacePaymentLineInput\n ) => void;\n onCancel: () => void;\n siteMarketplacePaymentLineInput?: SiteMarketplacePaymentLineInput;\n canSelectProceeds: boolean;\n sale: SaleDetails;\n disabledPaymentTypeInput?: boolean;\n disabledAmountInput?: boolean;\n};\n\nexport const MarketplacePaymentLineDialog = ({\n onCancel,\n onSave,\n sale,\n siteMarketplacePaymentLineInput,\n canSelectProceeds,\n disabledPaymentTypeInput,\n disabledAmountInput,\n ...dialogProps\n}: AddMarketplaceChargeDialogProps) => {\n const isEditingPaymentLine =\n !!siteMarketplacePaymentLineInput?.marketplacePaymentId;\n const requiredText = useContent(ContentId.Required);\n const { getUiCurrency } = useLocalizationContext();\n const { register, formState, watch, setValue, handleSubmit, control } =\n useForm({\n defaultValues: siteMarketplacePaymentLineInput\n ? siteMarketplacePaymentLineInput\n : {\n ...EMPTY_MARKETPLACE_PAYMENT_LINE,\n externalPaymentLineId: `paymentline-${new Date().getTime()}`,\n externalSaleId: sale.idOnMkp ?? undefined,\n saleId: sale.id,\n currency: sale.currency,\n },\n });\n\n const paymentDateStr = watch('paymentDate');\n const isCredit = watch('isCredit');\n const paymentLineType = watch('paymentLineType');\n const currency = watch('currency');\n const isPrimaryPaymentLineType =\n paymentLineType === MarketplacePaymentLineType.Proceeds ||\n paymentLineType === MarketplacePaymentLineType.Charge ||\n paymentLineType === MarketplacePaymentLineType.Credit;\n\n const uiCurrency = getUiCurrency(currency);\n\n useEffect(() => {\n if (\n paymentLineType === MarketplacePaymentLineType.Proceeds ||\n paymentLineType === MarketplacePaymentLineType.Credit\n ) {\n setValue('isCredit', true);\n }\n if (paymentLineType === MarketplacePaymentLineType.Charge) {\n setValue('isCredit', false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [paymentLineType]);\n\n const paymentDate = useMemo(\n () => (paymentDateStr ? new Date(paymentDateStr) : undefined),\n [paymentDateStr]\n );\n\n const onSubmit = useCallback(\n (formValues: SiteMarketplacePaymentLineInput) => {\n onSave(formValues);\n },\n [onSave]\n );\n\n const valueOptionsContent = useMemo(() => {\n return Object.entries(MARKETPLACE_PAYMENT_LINE_TYPE_TO_CID).reduce(\n (acc, [key, value]) => {\n if (canSelectProceeds || key !== MarketplacePaymentLineType.Proceeds) {\n acc[key] = value;\n }\n return acc;\n },\n {} as Record\n );\n }, [canSelectProceeds]);\n\n return (\n }\n footer={\n <>\n \n \n \n }\n onCancel={onCancel}\n >\n
    \n
    \n \n }\n >\n (\n {\n setValue(\n 'paymentLineType',\n paymentLineType as MarketplacePaymentLineType,\n { shouldValidate: true }\n );\n }}\n sortBy=\"key\"\n disabled={disabledPaymentTypeInput}\n />\n )}\n />\n \n \n\n {!isPrimaryPaymentLineType && (\n \n }\n >\n (\n {\n setValue('isCredit', value === 'true', {\n shouldValidate: true,\n });\n }}\n value={String(value)}\n >\n \n }\n />\n }\n />\n \n \n )}\n />\n \n \n )}\n \n }\n >\n {\n return amount == null ? requiredText : undefined;\n },\n },\n\n setValueAs: setValueAsNumber,\n })}\n prefixDisplay={uiCurrency.sym}\n disabled={disabledAmountInput}\n />\n \n \n\n \n }\n >\n {\n return !externalPaymentId?.length\n ? requiredText\n : undefined;\n },\n },\n })}\n onBlur={(params: FocusEvent) => {\n params.target.value = params.target.value\n .trim()\n .toLocaleLowerCase();\n }}\n disabled={isEditingPaymentLine}\n />\n \n \n\n \n }\n >\n {\n return !externalPaymentLineId?.length\n ? requiredText\n : undefined;\n },\n },\n })}\n trimOnBlur={true}\n disabled={isEditingPaymentLine}\n />\n \n \n\n \n \n }\n >\n (\n {\n setValue('paymentDate', date.toISOString(), {\n shouldValidate: true,\n });\n }}\n textFieldStyles={{ width: '100px' }}\n disabled={isEditingPaymentLine}\n />\n )}\n />\n \n \n \n
    \n
    \n \n );\n};\n","import {\n MutableRefObject,\n useCallback,\n useImperativeHandle,\n useState,\n} from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport {\n MarketplacePaymentLineType,\n SaleDetails,\n SaleInput,\n SiteMarketplacePaymentLineInput,\n} from 'src/WebApiController';\n\nimport { MarketplacePaymentLineDialog } from './MarketplacePaymentLineDialog';\n\nexport interface SetMarketplaceChargeActions {\n addNewMarketplacePaymentLine: () => void;\n editNewMarketplacePaymentLine: (\n marketplacePaymentLine: SiteMarketplacePaymentLineInput\n ) => void;\n removeNewMarketplacePaymentLine: (externalPaymentId: string) => void;\n}\n\ninterface SetMarketplaceChargeProps {\n setMarketplaceActionsRef: MutableRefObject;\n sale: SaleDetails;\n}\n\nexport const SetMarketplaceCharge = ({\n setMarketplaceActionsRef,\n sale,\n}: SetMarketplaceChargeProps) => {\n const setMarketplaceChargeDialog = useBasicDialog();\n const [currentMarketplacePaymentLine, setCurrentMarketplacePaymentLine] =\n useState();\n const [canSelectProceeds, setCanSelectProceeds] = useState(false);\n\n const { setValue, watch } = useFormContext();\n\n const marketplacePaymentLines = watch('marketplacePaymentLines')?.value;\n const onSave = useCallback(\n (formMarketplacePaymentLineInput: SiteMarketplacePaymentLineInput) => {\n let updatedMktPaymentLines: SiteMarketplacePaymentLineInput[] = [];\n const isUpdating = !!currentMarketplacePaymentLine;\n if (isUpdating) {\n // Update mktPaymentLine in place\n updatedMktPaymentLines = (marketplacePaymentLines ?? []).map(\n (mktPaymentLine) =>\n mktPaymentLine.externalPaymentLineId ===\n formMarketplacePaymentLineInput.externalPaymentLineId\n ? formMarketplacePaymentLineInput\n : mktPaymentLine\n );\n } else {\n // If is new mktPaymentLine\n updatedMktPaymentLines = [\n ...(marketplacePaymentLines ?? []),\n formMarketplacePaymentLineInput,\n ];\n }\n\n setValue(\n 'marketplacePaymentLines',\n posChangedField(updatedMktPaymentLines),\n {\n shouldDirty: true,\n }\n );\n setMarketplaceChargeDialog.closeDialog();\n },\n [\n currentMarketplacePaymentLine,\n marketplacePaymentLines,\n setMarketplaceChargeDialog,\n setValue,\n ]\n );\n\n const onCancel = useCallback(() => {\n setMarketplaceChargeDialog.closeDialog();\n }, [setMarketplaceChargeDialog]);\n\n const removeNewMarketplacePaymentLine = useCallback(\n (externalPaymentId: string) => {\n const filteredMarketplacePaymentLines = marketplacePaymentLines?.filter(\n (mktPaymentLine) =>\n mktPaymentLine.externalPaymentLineId !== externalPaymentId\n );\n setValue(\n 'marketplacePaymentLines',\n posChangedField(filteredMarketplacePaymentLines ?? []),\n {\n shouldDirty: true,\n }\n );\n },\n [marketplacePaymentLines, setValue]\n );\n\n useImperativeHandle(\n setMarketplaceActionsRef,\n () => {\n return {\n addNewMarketplacePaymentLine: () => {\n setCanSelectProceeds(\n !marketplacePaymentLines?.some(\n (mktPaymentLine) =>\n mktPaymentLine.paymentLineType ===\n MarketplacePaymentLineType.Proceeds\n )\n );\n setCurrentMarketplacePaymentLine(undefined);\n setMarketplaceChargeDialog.launchDialog();\n },\n editNewMarketplacePaymentLine: (\n marketplacePaymentLine: SiteMarketplacePaymentLineInput\n ) => {\n setCanSelectProceeds(\n !marketplacePaymentLines?.some(\n (mktPaymentLine) =>\n mktPaymentLine.paymentLineType ===\n MarketplacePaymentLineType.Proceeds &&\n mktPaymentLine.marketplacePaymentLineId !==\n marketplacePaymentLine.marketplacePaymentLineId\n )\n );\n setCurrentMarketplacePaymentLine(marketplacePaymentLine);\n setMarketplaceChargeDialog.launchDialog();\n },\n removeNewMarketplacePaymentLine,\n };\n },\n [\n marketplacePaymentLines,\n removeNewMarketplacePaymentLine,\n setMarketplaceChargeDialog,\n ]\n );\n\n if (!setMarketplaceChargeDialog.dialogProps.isOpen) {\n return null;\n }\n\n return (\n \n );\n};\n","import { useMemo } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { MarketplacePaymentIdDeeplinkQueryParam } from 'src/utils/constants/constants';\n\nexport const useGetMarketplacePaymentIdQueryParam = (): number | undefined => {\n const [searchParams] = useSearchParams();\n\n return useMemo(() => {\n const activeMarketplacePaymentId = searchParams.get(\n MarketplacePaymentIdDeeplinkQueryParam\n );\n\n if (activeMarketplacePaymentId) {\n return Number(activeMarketplacePaymentId);\n }\n }, [searchParams]);\n};\n","import { ReactNode } from 'react';\n\nimport * as styles from './EmptySectionContent.css';\n\ntype RootProps = {\n icon?: ReactNode;\n children?: ReactNode;\n};\n\nexport function Root({ icon, children }: RootProps) {\n return (\n
    \n {icon &&
    {icon}
    }\n {children}\n
    \n );\n}\n\ntype ErrorProps = {\n children?: ReactNode;\n};\n\nexport function Error({ children }: ErrorProps) {\n return
    {children}
    ;\n}\n\nexport function Label({ children }: ErrorProps) {\n return
    {children}
    ;\n}\n\nexport function DetailMessage({ children }: ErrorProps) {\n return
    {children}
    ;\n}\n\nexport function SolidIconContainer({ children }: ErrorProps) {\n return
    {children}
    ;\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { MarketplacePaymentClient } from 'src/WebApiController';\n\nexport function useGetMarketplacePaymentById(\n marketplacePaymentId?: number | null\n) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n return useQuery({\n queryKey: ['getMarketplacePaymentById', marketplacePaymentId],\n async queryFn() {\n if (\n marketplacePaymentId == null ||\n !activeAccountWebClientConfig?.activeAccountId\n )\n return null;\n\n try {\n return await new MarketplacePaymentClient(\n activeAccountWebClientConfig\n ).getMarketplacePaymentById(marketplacePaymentId);\n } catch (err: unknown) {\n trackError(\n 'MarketplacePaymentClient.getMarketplacePaymentById',\n err as ErrorTypes,\n {\n marketplacePaymentId,\n }\n );\n throw err;\n }\n },\n enabled:\n !!activeAccountWebClientConfig?.activeAccountId && !!marketplacePaymentId,\n refetchOnWindowFocus: false,\n });\n}\n","export const PAYMENT_MONTHLY_CONTAINER_QUERY_KEY =\n 'MarketplacePaymentClient.getMonthsContainerMarketplacePayments';\nexport const PAYMENT_SINGLE_MONTH_QUERY_KEY =\n 'MarketplacePaymentClient.getMarketplacePayments';\n","import { useQuery } from '@tanstack/react-query';\nimport { differenceInCalendarDays } from 'date-fns';\nimport { useMemo } from 'react';\nimport { DATA_REFRESH_RATE_IN_MILLIS_LONG } from 'src/utils/constants/constants';\nimport { getErrorInfoFromStatusCode } from 'src/utils/errorUtils';\nimport {\n MarketplacePaymentClient,\n MarketplacePaymentQuery,\n MonthContainingMarketplacePaymentsResult,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { ErrorTypes, useErrorBoundaryContext } from '../ErrorBoundaryContext';\nimport { useFilterQueryContext } from '../FilterQueryContext';\nimport { PAYMENT_MONTHLY_CONTAINER_QUERY_KEY } from './MarketplacePaymentDataContext.constants';\n\nfunction getDateValue(item: MonthContainingMarketplacePaymentsResult): string {\n return item.firstOfMonth;\n}\n\nexport const useGetMonthMarketplacePaymentsQuery = (\n selectedIds: string[],\n setSelectedIds: (value: React.SetStateAction) => void,\n setErrorInfo: (\n value: React.SetStateAction<\n | {\n errorHeader: React.ReactNode;\n errorMessage: React.ReactNode;\n }\n | undefined\n >\n ) => void,\n disabled?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { filterQuery, isQueryInitialized } =\n useFilterQueryContext();\n const { trackError } = useErrorBoundaryContext();\n\n const queryKey = useMemo(\n () => [\n PAYMENT_MONTHLY_CONTAINER_QUERY_KEY,\n activeAccountWebClientConfig?.activeAccountId,\n filterQuery,\n ],\n [activeAccountWebClientConfig?.activeAccountId, filterQuery]\n );\n\n const shouldQuery = Boolean(\n filterQuery &&\n activeAccountWebClientConfig?.activeAccountId &&\n isQueryInitialized &&\n !disabled\n );\n\n const paymentsQuery = useQuery({\n queryKey,\n queryFn: async () => {\n setErrorInfo(undefined);\n\n if (!shouldQuery) {\n return null;\n }\n\n const data = await new MarketplacePaymentClient(\n activeAccountWebClientConfig\n ).getMonthsContainerMarketplacePayments(filterQuery);\n\n const sortedData = data.toSorted((a, b) => {\n const dateA = new Date(getDateValue(a));\n const dateB = new Date(getDateValue(b));\n return filterQuery.isSortDescending\n ? differenceInCalendarDays(dateB, dateA)\n : differenceInCalendarDays(dateA, dateB);\n });\n\n let newSelectedIds = selectedIds;\n // Always expanding the first item if none selected and we just got data\n if (!selectedIds.length && sortedData.length) {\n const firstItem = sortedData[0];\n const dateValue = getDateValue(firstItem);\n newSelectedIds = [dateValue];\n setSelectedIds(newSelectedIds);\n }\n\n return sortedData;\n },\n\n enabled: shouldQuery,\n staleTime: Infinity, // Since we're always refetching on an interval, we don't want query to calculate whether the data is stale\n refetchOnWindowFocus: false,\n networkMode: 'offlineFirst',\n meta: {\n onError: (error: ErrorTypes) => {\n const { headerDisplay, messageDisplay } = getErrorInfoFromStatusCode(\n error?.status,\n error?.message\n );\n setErrorInfo({\n errorHeader: headerDisplay,\n errorMessage: messageDisplay,\n });\n trackError(PAYMENT_MONTHLY_CONTAINER_QUERY_KEY, error, filterQuery);\n },\n },\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_LONG,\n });\n\n return paymentsQuery;\n};\n","import {\n QueryObserverResult,\n useQueryClient,\n UseQueryResult,\n} from '@tanstack/react-query';\nimport { createContext, useCallback, useContext, useState } from 'react';\nimport { getErrorInfoFromStatusCode } from 'src/utils/errorUtils';\nimport { MonthContainingMarketplacePaymentsResult } from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { ErrorTypes } from '../ErrorBoundaryContext';\nimport {\n PAYMENT_MONTHLY_CONTAINER_QUERY_KEY,\n PAYMENT_SINGLE_MONTH_QUERY_KEY,\n} from './MarketplacePaymentDataContext.constants';\nimport { useGetMonthMarketplacePaymentsQuery } from './useGetMonthMarketplacePaymentsQuery';\n\nexport type IMarketplacePaymentDataContext = {\n monthPaymentsQuery: UseQueryResult<\n MonthContainingMarketplacePaymentsResult[] | null,\n ErrorTypes\n >;\n refreshData: (\n refetchAll?: boolean\n ) => Promise>;\n errorInfo?: { errorHeader: React.ReactNode; errorMessage: React.ReactNode };\n onSelect: (targetId: string, forceSelect?: boolean) => void;\n selectedIds: string[];\n scrollToId?: string;\n setScrollToId: (id?: string) => void;\n};\n\nexport const MarketplacePaymentDataContext =\n createContext({\n monthPaymentsQuery: {} as UseQueryResult<\n MonthContainingMarketplacePaymentsResult[] | null\n >,\n refreshData: () =>\n Promise.resolve({} as QueryObserverResult),\n selectedIds: [],\n onSelect: () => {},\n setScrollToId: () => {},\n });\n\nexport const useMarketplacePaymentDataContext = () =>\n useContext(MarketplacePaymentDataContext);\n\nexport const MarketplacePaymentDataContextProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const queryClient = useQueryClient();\n\n const { activeAccountWebClientConfig } = useAppContext();\n const [errorInfo, setErrorInfo] = useState<{\n errorHeader: React.ReactNode;\n errorMessage: React.ReactNode;\n }>();\n const [selectedIds, setSelectedIds] = useState([]);\n\n const [scrollToId, setScrollToId] = useState();\n\n const onSelect = useCallback(\n (targetId: string, forceSelect?: boolean) => {\n const indexOf = selectedIds.indexOf(targetId);\n\n if (indexOf >= 0) {\n // if force-select, we won't de-select if it's already selected\n if (forceSelect) {\n setScrollToId(targetId);\n } else {\n setSelectedIds(selectedIds.filter((id) => id !== targetId));\n }\n } else {\n setSelectedIds([...selectedIds, targetId]);\n setScrollToId(targetId);\n }\n },\n [selectedIds]\n );\n\n const monthPaymentsQuery = useGetMonthMarketplacePaymentsQuery(\n selectedIds,\n setSelectedIds,\n setErrorInfo\n );\n\n const refreshData = useCallback(\n async (refetchAll?: boolean) => {\n if (refetchAll) {\n queryClient.invalidateQueries({\n queryKey: [\n PAYMENT_MONTHLY_CONTAINER_QUERY_KEY,\n activeAccountWebClientConfig.activeAccountId,\n ],\n });\n // For the months one we want to just query all - since this is each month ()\n queryClient.invalidateQueries({\n queryKey: [PAYMENT_SINGLE_MONTH_QUERY_KEY, true],\n type: 'all',\n });\n }\n\n return monthPaymentsQuery.refetch();\n },\n [\n activeAccountWebClientConfig.activeAccountId,\n monthPaymentsQuery,\n queryClient,\n ]\n );\n\n if (monthPaymentsQuery.failureReason) {\n const { headerDisplay, messageDisplay } = getErrorInfoFromStatusCode(\n null,\n monthPaymentsQuery.failureReason.message\n );\n setErrorInfo({\n errorHeader: headerDisplay,\n errorMessage: messageDisplay,\n });\n }\n\n return (\n \n {children}\n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { MarketplacePaymentClient } from 'src/WebApiController';\n\nexport const GET_PAYMENT_LINES_WITH_SALES_QUERY_KEY =\n 'MarketplacePaymentClient.getPaymentLinesWithSales';\n\nexport const useGetMarketplacePaymentLinesWithSales = (\n marketplacePaymentId: number,\n disabled: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n !disabled &&\n activeAccountWebClientConfig.activeAccountId != null &&\n !!marketplacePaymentId;\n\n const paymentLineQuery = useQuery({\n queryKey: [\n GET_PAYMENT_LINES_WITH_SALES_QUERY_KEY,\n activeAccountWebClientConfig.activeAccountId,\n marketplacePaymentId,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n return await new MarketplacePaymentClient(\n activeAccountWebClientConfig\n ).getPaymentLinesWithSales(marketplacePaymentId);\n },\n\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('MarketplacePaymentClient.getPaymentLinesWithSales', error, {\n marketplacePaymentId,\n });\n },\n },\n enabled: shouldQuery,\n });\n\n return { paymentLineQuery };\n};\n","import { Temporal } from '@js-temporal/polyfill';\nimport { useQuery } from '@tanstack/react-query';\nimport { max, min } from 'lodash-es';\nimport { useMemo } from 'react';\nimport { DATA_REFRESH_RATE_IN_MILLIS_LONG } from 'src/utils/constants/constants';\nimport {\n roundRelativeDateDown,\n roundRelativeDateUp,\n} from 'src/utils/dateTimeUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n DateTimeRangeWithRelative,\n MarketplacePaymentClient,\n MarketplacePaymentQuery,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useErrorBoundaryContext } from '../ErrorBoundaryContext';\nimport { useFilterQueryContext } from '../FilterQueryContext';\nimport { PAYMENT_SINGLE_MONTH_QUERY_KEY } from './MarketplacePaymentDataContext.constants';\n\nexport const useSingleMonthMarketplacePaymentsQuery = (\n firstOfMonth: string,\n isExpanded: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { filterQuery } = useFilterQueryContext();\n const { trackError } = useErrorBoundaryContext();\n\n const firstOfMonthPlainDateTime = Temporal.PlainDateTime.from(firstOfMonth);\n const lastOfMonthPlainDateTime = firstOfMonthPlainDateTime\n .with({\n day: firstOfMonthPlainDateTime.daysInMonth,\n hour: 23,\n minute: 59,\n second: 59,\n millisecond: 999,\n })\n .toString();\n\n const monthDateRange: DateTimeRangeWithRelative = useMemo(() => {\n let filterDateStart = '';\n let filterDateEnd = '';\n if (filterQuery.paymentDates) {\n if (filterQuery.paymentDates.start) {\n filterDateStart = filterQuery.paymentDates.start;\n }\n if (filterQuery.paymentDates.relativeStartSecs != null) {\n const relativeDateStart = new Date(\n new Date().getTime() +\n filterQuery.paymentDates.relativeStartSecs * 1000\n );\n\n filterDateStart = roundRelativeDateUp(\n relativeDateStart,\n filterQuery.paymentDates.roundingMode\n ).toISOString();\n }\n\n if (filterQuery.paymentDates.end) {\n filterDateEnd = filterQuery.paymentDates.end;\n }\n if (filterQuery.paymentDates.relativeEndSecs != null) {\n const relativeDateEnd = new Date(\n new Date().getTime() + filterQuery.paymentDates.relativeEndSecs * 1000\n );\n\n filterDateEnd = roundRelativeDateDown(\n relativeDateEnd,\n filterQuery.paymentDates.roundingMode\n ).toISOString();\n }\n }\n\n return {\n start:\n max([firstOfMonthPlainDateTime.toString(), filterDateStart]) ?? null,\n end: min([lastOfMonthPlainDateTime.toString(), filterDateEnd]) ?? null,\n } as DateTimeRangeWithRelative;\n }, [\n filterQuery.paymentDates,\n firstOfMonthPlainDateTime,\n lastOfMonthPlainDateTime,\n ]);\n\n const moddedFilterQuery = {\n ...filterQuery,\n paymentDates: monthDateRange,\n };\n\n const singleMonthPaymentQuery = useQuery({\n queryKey: [PAYMENT_SINGLE_MONTH_QUERY_KEY, isExpanded, moddedFilterQuery],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n\n return tryInvokeApi(\n async () => {\n return await new MarketplacePaymentClient(\n activeAccountWebClientConfig\n ).getMarketplacePayments(moddedFilterQuery);\n },\n (error) => {\n trackError(PAYMENT_SINGLE_MONTH_QUERY_KEY, error, moddedFilterQuery);\n }\n );\n },\n enabled: isExpanded && activeAccountWebClientConfig.activeAccountId != null,\n staleTime: Infinity, // Since we're always refetching on an interval, we don't want query to calculate whether the data is stale\n refetchOnWindowFocus: false,\n networkMode: 'offlineFirst',\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_LONG,\n });\n\n return {\n singleMonthPaymentQuery,\n filterQuery: moddedFilterQuery as MarketplacePaymentQuery,\n };\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { CatalogClient, CatalogResults } from 'src/WebApiController';\n\nexport function useGetCatalogBySaleIds(saleIds?: number[] | null) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n return useQuery({\n queryKey: ['getCatalogBySaleIds', saleIds],\n async queryFn() {\n if (!saleIds) return null;\n\n if (saleIds.length === 0)\n return {\n events: {},\n performers: {},\n venues: {},\n venueCfgs: {},\n } as CatalogResults;\n\n try {\n return await new CatalogClient(\n activeAccountWebClientConfig\n ).getCatalogBySaleIds(saleIds);\n } catch (err: unknown) {\n trackError('CatalogClient.getCatalogBySaleIds', err as ErrorTypes, {\n saleIds,\n });\n throw err;\n }\n },\n refetchOnWindowFocus: false,\n });\n}\n","import { useMemo } from 'react';\nimport { useGetMarketplacePaymentLinesWithSales } from 'src/contexts/MarketplacePaymentDataContext';\nimport { useGetCatalogBySaleIds } from 'src/hooks/api/useGetCatalogBySaleIds';\nimport {\n Event,\n MarketplacePaymentLineWithSaleInfo,\n Venue,\n} from 'src/WebApiController';\n\nexport interface MarketplacePaymentLineWithSaleAndEventInfo\n extends MarketplacePaymentLineWithSaleInfo {\n event: Event | undefined;\n venue: Venue | undefined;\n}\n\ninterface MarketplacePaymentLineTableDataResponse {\n data: MarketplacePaymentLineWithSaleAndEventInfo[];\n isLoading: boolean;\n error: Error | null;\n}\n\nexport const useGetMarketplacePaymentLineTableData = (\n marketplacePaymentLineId: number | undefined\n): MarketplacePaymentLineTableDataResponse => {\n const { paymentLineQuery } = useGetMarketplacePaymentLinesWithSales(\n marketplacePaymentLineId ?? 0,\n false\n );\n\n const {\n isLoading: isLoadingMktPaymentLines,\n error: mktPaymentLinesError,\n data: marketplacePaymentData,\n } = paymentLineQuery;\n\n const saleIds = useMemo(() => {\n return (marketplacePaymentData ?? [])\n .map((mktPaymentLine) => mktPaymentLine.saleId)\n .filter((s) => s != null) as number[];\n }, [marketplacePaymentData]);\n\n const {\n isLoading: isLoadingEventCatalog,\n error: eventCatalogError,\n data: catalog,\n } = useGetCatalogBySaleIds(saleIds);\n\n const isLoading = isLoadingEventCatalog || isLoadingMktPaymentLines;\n\n const data = useMemo(() => {\n if (isLoading || !catalog) {\n return [];\n }\n\n return (marketplacePaymentData ?? []).map(\n (mktPaymentLine): MarketplacePaymentLineWithSaleAndEventInfo => {\n const event = catalog.events[mktPaymentLine.viagEvId ?? '']?.event;\n return {\n ...mktPaymentLine,\n event,\n venue: catalog.venues[event?.venueId],\n };\n }\n );\n }, [catalog, isLoading, marketplacePaymentData]);\n\n return {\n isLoading,\n error: eventCatalogError || mktPaymentLinesError,\n data,\n };\n};\n","import { vars } from 'src/core/themes';\n\nexport const AutomatiqLogo = ({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) => {\n const color = vars.color.marketplaceBackgroundAutomatiq;\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","export const GoTicketsLogo = ({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","export function TicketEvolutionLogo({\n width,\n height,\n fillColor,\n}: {\n width?: string | number;\n height?: string | number;\n fillColor?: string;\n}) {\n const fill = fillColor || '#010101';\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","export const TicketNetworkLogo = ({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import clsx from 'clsx';\nimport { useCallback } from 'react';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { Colors } from 'src/core/themes/constants/colors';\nimport { useGetEventFullInfo } from 'src/hooks/useGetEventFullInfo';\nimport { GametimeLogo, StubHubLogo, TickPickLogo, ViagogoLogo } from 'src/svgs';\nimport { AutomatiqLogo } from 'src/svgs/AutomatiqLogo';\nimport { AxsLogo } from 'src/svgs/AxsLogo';\nimport { GoTicketsLogo } from 'src/svgs/GoTicketsLogo';\nimport { SeatGeekLogo } from 'src/svgs/SeatGeekLogo';\nimport { TicketEvolutionLogo } from 'src/svgs/TicketEvolutionLogo';\nimport { TicketmasterLogo } from 'src/svgs/TicketmasterLogo';\nimport { TicketNetworkLogo } from 'src/svgs/TicketNetworkLogo';\nimport { VividSeatsLogo } from 'src/svgs/VividSeatsLogo';\nimport {\n MarketplaceEventIdPlaceholder,\n MarketplaceEventUrlTemplate,\n} from 'src/utils/constants/constants';\nimport { getIsInternationalEvent } from 'src/utils/eventWithDataUtils';\nimport { getStubhubEventWithPricingUrl } from 'src/utils/inventoryUtils';\nimport {\n Event,\n Marketplace,\n SellerEventMarketplaceEventInfo,\n} from 'src/WebApiController';\n\nimport * as styles from './MarketplaceLogo.css';\n\nexport interface LogoDimensions {\n width: number | string;\n height: number | string;\n}\n\nexport const logoAreaDimensions = { height: '30px', width: 'auto' };\nexport const logoDimensions = {\n [Marketplace.Ticketmaster]: { height: 30, width: 80 },\n [Marketplace.VividSeats]: { height: 30, width: 80 },\n [Marketplace.SeatGeek]: { height: 30, width: 47 },\n [Marketplace.Gametime]: { height: 30, width: 80 },\n [Marketplace.TickPick]: { height: 30, width: 80 },\n [Marketplace.AXS]: { height: 30, width: 80 },\n [Marketplace.Automatiq]: { height: 30, width: 80 },\n [Marketplace.GoTickets]: { height: 30, width: 80 },\n [Marketplace.TicketNetwork]: { height: 30, width: 80 },\n [Marketplace.TicketEvolution]: { height: 30, width: 80 },\n};\n\nexport const MarketplaceLogo = ({\n marketplace,\n isViagogo,\n event,\n grayScaleColor,\n marketplaceEventInfo,\n onClick,\n logoDimensions: dimensions,\n}: {\n marketplace?: Marketplace | null;\n isViagogo?: boolean;\n event?: Event;\n grayScaleColor?: boolean;\n marketplaceEventInfo?: SellerEventMarketplaceEventInfo | null;\n /**\n * Override of the onClick event for the logo. By default, the logo will open the event in the marketplace.\n */\n onClick?: (e: React.MouseEvent) => void;\n logoDimensions?: LogoDimensions;\n}) => {\n const { isDarkMode } = useSiteTheme();\n const { venue } = useGetEventFullInfo(event);\n\n const isInternationalEvent = getIsInternationalEvent(venue?.country?.code);\n\n const onOpenInStubHubClicked = useCallback(() => {\n if (marketplace === Marketplace.StubHub) {\n window.open(\n getStubhubEventWithPricingUrl(event?.viagId, isInternationalEvent),\n '_blank'\n );\n } else if (marketplaceEventInfo?.marketplace) {\n let urlTemplate =\n MarketplaceEventUrlTemplate[marketplaceEventInfo.marketplace];\n\n let urlEventId =\n marketplaceEventInfo.eventIdOverride ??\n marketplaceEventInfo.mappedEventId ??\n '';\n if (marketplace === Marketplace.Ticketmaster) {\n urlEventId = marketplaceEventInfo.websiteEventId ?? urlEventId;\n }\n if (urlEventId) {\n urlTemplate = urlTemplate.replace(\n MarketplaceEventIdPlaceholder,\n urlEventId\n );\n window.open(urlTemplate, '_blank', 'noopener noreferrer');\n }\n }\n }, [event?.viagId, isInternationalEvent, marketplace, marketplaceEventInfo]);\n\n return (\n {\n e.preventDefault();\n e.stopPropagation();\n if (event != null) {\n onOpenInStubHubClicked();\n }\n })\n }\n >\n {marketplace === Marketplace.StubHub ? (\n isViagogo ? (\n \n ) : (\n \n )\n ) : marketplace === Marketplace.Ticketmaster ? (\n \n ) : marketplace === Marketplace.VividSeats ? (\n \n ) : marketplace === Marketplace.SeatGeek ? (\n \n ) : marketplace === Marketplace.Gametime ? (\n \n ) : marketplace === Marketplace.TickPick ? (\n \n ) : marketplace === Marketplace.AXS ? (\n \n ) : marketplace === Marketplace.GoTickets ? (\n \n ) : marketplace === Marketplace.TicketNetwork ? (\n \n ) : marketplace === Marketplace.Automatiq ? (\n \n ) : marketplace === Marketplace.TicketEvolution ? (\n \n ) : (\n
    {marketplace ?? 'Unknown Marketplace'}
    \n )}\n \n );\n};\n","import { formatInTimeZone } from 'date-fns-tz';\nimport { MarketplaceLogo } from 'src/components/common/MarketplaceLogo';\nimport { MarketplacePaymentStatePill } from 'src/components/common/MarketplacePaymentStatePill/MarketplacePaymentStatePill';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { DEFAULT_TIMEZONE_LOCAL } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext.constants';\nimport { Stack } from 'src/core/ui';\nimport { useHasSaleDetailsMarketplaceTermsFeature } from 'src/hooks/features/useHasSaleDetailsMarketplaceTermsFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { MARKETPLACE_PAYMENT_TERM_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { MarketplaceSalePayment } from 'src/WebApiController';\n\nimport * as styles from './MarketplacePaymentHeaderDetails.css';\n\ninterface MarketplacePaymentHeaderDetailsProps {\n marketplaceSalePayment: MarketplaceSalePayment;\n}\n\nexport const MarketplacePaymentHeaderDetails = ({\n marketplaceSalePayment,\n}: MarketplacePaymentHeaderDetailsProps) => {\n const { timeZone } = useSiteTimezoneContext();\n const hasSaleDetailsMarketplaceTermsFeature =\n useHasSaleDetailsMarketplaceTermsFeature();\n\n return (\n \n \n
    \n \n :\n \n {marketplaceSalePayment.extPmtId}\n
    \n {marketplaceSalePayment.pmtDate && (\n
    \n \n :\n \n \n {formatInTimeZone(\n new Date(marketplaceSalePayment.pmtDate),\n timeZone ?? DEFAULT_TIMEZONE_LOCAL,\n 'do LLL yyyy'\n )}\n \n
    \n )}\n {hasSaleDetailsMarketplaceTermsFeature &&\n marketplaceSalePayment.mkpPmtTerm && (\n
    \n \n :\n \n \n \n \n
    \n )}\n
    \n \n \n \n \n \n );\n};\n","export const MinRowsForUsingVirtuoso = 20;\n","import {\n MutableRefObject,\n useCallback,\n useLayoutEffect,\n useState,\n} from 'react';\nimport useResizeObserver from 'use-resize-observer';\n\nexport const PosEventsAccordionBodyHeight =\n '--pos-events-accordion-body-height';\nconst DefaultBottomMargin = 20;\n\nconst getVirtuosoTopListItemBounding = (): DOMRect | undefined =>\n document\n .querySelector('[data-test-id=\"virtuoso-top-item-list\"]')\n ?.getBoundingClientRect();\n\ninterface UseVirtuosoAccordionSizeProps {\n accordionHeaderRef: MutableRefObject;\n accordionBodyRef: MutableRefObject;\n isExpanded: boolean;\n enabled: boolean;\n}\n\nconst MIN_HEIGHT_FOR_VIRTUOSO_ACCORDION = 500;\n\nexport const useSetEventsAccordionMaxHeight = ({\n enabled,\n accordionHeaderRef,\n accordionBodyRef,\n isExpanded,\n}: UseVirtuosoAccordionSizeProps): void => {\n const [eventsAccordionHeaderBounding, setEventsAccordionHeaderBounding] =\n useState(undefined);\n\n const setStyle = useCallback(\n (\n eventAccordionHeaderBounding: DOMRect | undefined,\n enabled: boolean,\n expanded: boolean\n ) => {\n if (!accordionBodyRef.current || !enabled || !expanded) {\n return;\n }\n const virtuosoTopListItemBottom =\n getVirtuosoTopListItemBounding()?.bottom ?? 0;\n\n const eventsAccordionHeaderHeight =\n eventAccordionHeaderBounding?.height ?? 0;\n\n const bodyMaxExpandedHeight = Math.max(\n MIN_HEIGHT_FOR_VIRTUOSO_ACCORDION,\n window.innerHeight -\n virtuosoTopListItemBottom -\n eventsAccordionHeaderHeight -\n DefaultBottomMargin\n );\n\n accordionBodyRef.current.style.setProperty(\n PosEventsAccordionBodyHeight,\n `${bodyMaxExpandedHeight}px`\n );\n },\n [accordionBodyRef]\n );\n\n // Listens for header changes, for example, screen resizing or showing bulk actions\n useResizeObserver({\n ref: accordionHeaderRef,\n onResize: () => {\n const bounding = accordionHeaderRef.current?.getBoundingClientRect();\n setStyle(bounding, enabled, isExpanded);\n setEventsAccordionHeaderBounding(bounding);\n },\n });\n\n useLayoutEffect(() => {\n setStyle(eventsAccordionHeaderBounding, enabled, isExpanded);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isExpanded, accordionBodyRef, eventsAccordionHeaderBounding, enabled]);\n};\n","import clsx from 'clsx';\nimport { ComponentProps, ReactNode } from 'react';\nimport { Stack } from 'src/core/ui';\nimport { mergeProps } from 'src/core/utils';\n\nimport * as styles from './PageSection.css';\n\ntype RootProps = {\n children: ReactNode;\n};\n\nexport function Root({ children }: RootProps) {\n return
    {children}
    ;\n}\n\ntype HeaderProps = Pick, 'className' | 'onClick'> & {\n action?: ReactNode;\n /**\n * Title of the section.\n */\n children?: ReactNode;\n headerClassName?: string;\n};\n\n/**\n * This can be used separately in places where the `PageSection` component doesn't support the\n * features required.\n * @param props\n */\nexport function Header({\n action,\n children,\n headerClassName,\n ...props\n}: HeaderProps) {\n return (\n \n {children != null && (\n

    \n {children}\n

    \n )}\n
    \n {action != null &&
    {action}
    }\n \n );\n}\n","import { Header, Root } from './PageSection';\n\nexport const PageSection = Object.assign(Root, {\n Header,\n});\n","import { MutableRefObject, useCallback, useEffect } from 'react';\nimport useResizeObserver from 'use-resize-observer';\n\ninterface UseSetTopListItemPositionProps {\n topItemListRef: MutableRefObject;\n virtuosoId: string;\n isScrollAtTop: boolean;\n virtuosoScrollY: number;\n}\n\n/**\n * Virtuoso's list wrapper (virtuoso-item-list) has paddingTop to separate\n * from sticky header. When Virtuoso component TopListItem changes its height,\n * virtuoso-item-list doesn't update it's padding.\n * This hook, maintains that paddingTop update to date.\n */\nexport const useSetTopListItemPosition = ({\n topItemListRef,\n virtuosoId,\n isScrollAtTop,\n virtuosoScrollY,\n}: UseSetTopListItemPositionProps) => {\n const virtuosoItemListSelector = `[id=\"${virtuosoId}\"] [data-test-id=\"virtuoso-item-list\"]`;\n\n const updateVirtuosoListPaddingTop = useCallback(() => {\n requestAnimationFrame(() => {\n const topItemListEl = topItemListRef.current;\n const virtuosoItemListEl = document.querySelector(\n virtuosoItemListSelector\n ) as HTMLDivElement;\n\n if (virtuosoItemListEl && topItemListEl) {\n virtuosoItemListEl.style.paddingTop = `${topItemListEl.offsetHeight}px`;\n }\n });\n }, [topItemListRef, virtuosoItemListSelector]);\n\n // Apply paddingTop to virtuoso-item-list getting it from TopItemList height.\n useResizeObserver({\n ref: topItemListRef,\n onResize: () => {\n const topItemListEl = topItemListRef.current;\n if (!topItemListEl) {\n return;\n }\n\n if (virtuosoScrollY < topItemListEl.offsetTop || isScrollAtTop) {\n updateVirtuosoListPaddingTop();\n }\n },\n });\n\n useEffect(() => {\n if (isScrollAtTop) {\n updateVirtuosoListPaddingTop();\n }\n }, [isScrollAtTop, updateVirtuosoListPaddingTop]);\n};\n","import { ComponentPropsWithRef, useRef } from 'react';\nimport { Components } from 'react-virtuoso';\nimport { useSetTopListItemPosition } from 'src/components/Events/EventListing/EventVirtualizedList/useSetTopListItemPosition';\nimport { VirtuosoContext } from 'src/core/ui/Virtuoso/VirtuosoContext';\n\nexport const VirtuosoTopListItemWrapper: Components<\n unknown,\n VirtuosoContext\n>['TopItemList'] = ({\n children,\n style,\n context,\n}: ComponentPropsWithRef<'div'> & {\n context?: VirtuosoContext;\n}) => {\n const topItemListRef = useRef(null);\n const isScrollAtTop = context?.scrollY === 0;\n\n useSetTopListItemPosition({\n topItemListRef,\n virtuosoId: context?.virtuosoId ?? '',\n isScrollAtTop,\n virtuosoScrollY: context?.scrollY ?? 0,\n });\n\n return (\n \n {context?.topListItemBefore}\n {children}\n \n );\n};\n","import { ReactNode, useEffect, useMemo, useRef } from 'react';\nimport { useScroll } from 'react-use';\nimport {\n Components,\n GroupedVirtuoso,\n GroupedVirtuosoHandle,\n} from 'react-virtuoso';\nimport { ReactElementType } from 'react-window';\nimport { PageSection } from 'src/components/common/PageSection';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport {\n VirtuosoContext,\n VirtuosoTopListItemWrapper,\n} from 'src/core/ui/Virtuoso';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EVENT_SORT_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n EventUiSort,\n getEventSort,\n getEventUiSort,\n QueryWithViewMode,\n} from 'src/utils/eventQueryUtils';\nimport { EntityWithTicketsQuery, EventSort } from 'src/WebApiController';\n\nimport * as styles from './EventVirtualizedList.css';\n\nconst EventListVirtuosoID = 'virtuoso-event-list';\n\nconst Header: Components['Header'] = ({\n context,\n}: {\n context?: VirtuosoContext;\n}) => {\n return <>{context?.before};\n};\n\ntype EventVirtualizedListProps = {\n before?: ReactNode;\n topListItemBefore?: ReactNode;\n items: T[];\n highlightedId?: string;\n scrollToItemIndex?: number;\n ItemComponent: ReactElementType;\n getDividerText: (item: T) => string;\n onSelect?: (id: string) => void;\n selectedIds?: string[];\n eventSortOptions?: Record;\n tableActions?: React.ReactElement;\n onItemsRendered?: (items: T[]) => void;\n disablePagination: boolean;\n};\n\nexport const EventVirtualizedList = ({\n before,\n topListItemBefore,\n items,\n highlightedId,\n scrollToItemIndex,\n onItemsRendered,\n selectedIds = [],\n onSelect,\n ItemComponent,\n getDividerText,\n eventSortOptions,\n tableActions,\n disablePagination,\n}: EventVirtualizedListProps) => {\n const { filterQuery, setFilterQuery } = useFilterQueryContext<\n EntityWithTicketsQuery & QueryWithViewMode\n >();\n const virtuosoRef = useRef(null);\n const scrollRef = useRef(null);\n const { y: scrollY } = useScroll(scrollRef);\n\n const { groups, groupCounts } = useMemo(() => {\n const groups: string[] = [];\n const groupCounts: number[] = [];\n for (const item of items) {\n const dividerText = getDividerText(item);\n if (groups.length === 0 || groups[groups.length - 1] !== dividerText) {\n groups.push(dividerText);\n groupCounts.push(1);\n } else {\n groupCounts[groupCounts.length - 1] += 1;\n }\n }\n return { groups, groupCounts };\n }, [items, getDividerText]);\n\n useEffect(() => {\n if (scrollToItemIndex !== undefined) {\n virtuosoRef.current?.scrollToIndex(scrollToItemIndex);\n }\n }, [scrollToItemIndex]);\n\n return (\n {\n if (el instanceof HTMLElement) scrollRef.current = el;\n }}\n className={styles.root}\n context={\n {\n before,\n scrollY,\n topListItemBefore,\n virtuosoId: EventListVirtuosoID,\n } satisfies VirtuosoContext\n }\n components={{\n Header,\n TopItemList: VirtuosoTopListItemWrapper,\n }}\n overscan={window.innerHeight}\n increaseViewportBy={window.innerHeight}\n itemsRendered={(listItems) => {\n if (onItemsRendered) {\n onItemsRendered(listItems.map((i) => items[i.index]));\n }\n }}\n groupCounts={groupCounts}\n groupContent={(index) => {\n return (\n {\n virtuosoRef.current?.scrollToIndex({ groupIndex: index });\n }}\n action={\n
    \n {\n const [sortBy, isSortDescending] = getEventSort(sort);\n if (\n sortBy !== filterQuery.sortBy ||\n isSortDescending !== filterQuery.isSortDescending\n ) {\n setFilterQuery({\n ...filterQuery,\n sortBy,\n isSortDescending,\n });\n }\n }}\n valueOptionsContent={eventSortOptions ?? EVENT_SORT_TO_CID}\n />\n {tableActions}\n
    \n }\n >\n
    \n {(() => {\n if (filterQuery.sortBy === EventSort.Date) {\n const [month, year] = groups[index].split(' ');\n return (\n <>\n {month}\n  \n {year}\n \n );\n }\n return <>{groups[index]};\n })()}\n
    \n \n );\n }}\n itemContent={(index) => {\n const item = items[index];\n return (\n
    \n
    \n \n
    \n
    \n );\n }}\n />\n );\n};\n","import { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\n\nexport const EventCheckbox = ({ eventId }: { eventId: string }) => {\n const { toggleGroup, getGroupToggleState } = useMultiSelectionContext();\n const isChecked = getGroupToggleState(eventId).isGroupSelected;\n return toggleGroup(eventId)} />;\n};\n","import { clsx } from 'clsx';\nimport {\n eventColors,\n eventStateLabel,\n eventStatusContent,\n eventStatusWrapper,\n} from 'src/components/Events/EventStatus/EventStatus.css';\nimport { Content } from 'src/contexts/ContentContext';\nimport { EVENT_STATUS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { ApiEventStatus } from 'src/WebApiController';\n\nenum StatusColor {\n Red = 'red',\n Yellow = 'yellow',\n Gray = 'gray',\n}\n\nconst EventStatusToColor: Readonly> = {\n [ApiEventStatus.Cancelled]: StatusColor.Red,\n [ApiEventStatus.Deleted]: StatusColor.Red,\n [ApiEventStatus.Draft]: StatusColor.Gray,\n [ApiEventStatus.Normal]: StatusColor.Gray,\n [ApiEventStatus.Contingent]: StatusColor.Yellow,\n [ApiEventStatus.Postponed]: StatusColor.Yellow,\n [ApiEventStatus.Relocated]: StatusColor.Yellow,\n [ApiEventStatus.Rescheduled]: StatusColor.Yellow,\n [ApiEventStatus.RelocatedAndRescheduled]: StatusColor.Yellow,\n};\n\nexport interface EventStatusProps {\n status: ApiEventStatus | null | undefined;\n}\n\nexport const EventStatus = ({ status }: EventStatusProps) => {\n // Don't show normal state\n if (!status || status === ApiEventStatus.Normal) {\n return null;\n }\n\n return (\n
    \n \n \n \n \n
    \n \n );\n};\n","import React, { useCallback } from 'react';\n\nimport { useActiveFocusContext } from '../ActiveFocusContext/ActiveFocusContext';\nimport { FocusContext, IInputPriceFocusContext } from './FocusContext.types';\n\nexport const createInputPriceFocusContext =\n React.createContext({} as IInputPriceFocusContext);\n\nexport const useInputPriceFocusContext = () =>\n React.useContext(createInputPriceFocusContext);\n\nexport const InputPriceFocusProvider = ({\n pageSize,\n disablePagination,\n children,\n}: {\n pageSize: number;\n disablePagination: boolean;\n children: React.ReactNode;\n}) => {\n const [disabledFocusContexts, setDisabledFocusContexts] =\n React.useState();\n\n const [inputPriceFocusContext, setInputPriceFocusContext] =\n React.useState();\n\n const { setActiveItem } = useActiveFocusContext();\n\n const onSetInputPriceFocusContext = useCallback(\n (input?: FocusContext) => {\n if (input) {\n setActiveItem(undefined); // Clear active focus context or else we have conflicts\n }\n setInputPriceFocusContext(input);\n },\n [setActiveItem]\n );\n\n return (\n \n {children}\n \n );\n};\n","import { format } from 'date-fns';\nimport { useCallback } from 'react';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\nimport {\n getFormattedEventName,\n getPerformerAndVenueForEvent,\n} from 'src/utils/eventWithDataUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { EntityWithTicketsQuery, Event, EventSort } from 'src/WebApiController';\n\nexport const useGetGroupingTitle = () => {\n const { filterQuery } = useFilterQueryContext<\n EntityWithTicketsQuery & QueryWithViewMode\n >();\n const { data } = useCatalogDataContext();\n const groupBy = filterQuery.sortBy;\n\n const getMainDisplayFirstChar = useCallback(\n (event: Event) => {\n const { performer } = getPerformerAndVenueForEvent(event, data);\n const [boldText] = getFormattedEventName({ event, performer });\n\n return boldText.charAt(0);\n },\n [data]\n );\n\n const getEventGroupingText = useCallback(\n (event: Event) => {\n if (!groupBy || groupBy === EventSort.Date) {\n return format(new Date(event.dates.start!), 'MMMM yyyy', {\n locale: getLocaleFromLanguageOrCurrent(),\n });\n }\n if (!filterQuery || filterQuery.sortBy === EventSort.Date) {\n return '';\n }\n return getMainDisplayFirstChar(event);\n },\n [groupBy, filterQuery, getMainDisplayFirstChar]\n );\n\n return {\n getDividerTextForSorting: getMainDisplayFirstChar,\n getEventGroupingText,\n };\n};\n","import { ReactNode, useCallback, useMemo, useRef } from 'react';\nimport {\n PosEventsAccordionBodyHeight,\n useSetEventsAccordionMaxHeight,\n} from 'src/components/Accordions/useSetEventsAccordionMaxHeight';\nimport { EventVirtualizedList } from 'src/components/Events/EventListing/EventVirtualizedList';\nimport { EventCheckbox } from 'src/components/Events/EventListing/EventVirtualizedList/EventCheckbox';\nimport { EventStatus } from 'src/components/Events/EventStatus';\nimport { InputPriceFocusProvider } from 'src/contexts/InputPriceFocusContext/InputPriceFocusContext';\nimport {\n MultiSelectScope,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport * as PosCollapsible from 'src/core/POS/PosCollapsible';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Feature } from 'src/WebApiController';\n\nimport { EventAccordionItemProps } from './EventAccordionItem';\nimport * as styles from './EventsAccordion.css';\nimport { eventStatus } from './EventsAccordion.css';\nimport { useGetGroupingTitle } from './useGetGroupingTitle';\n\ntype EventItemProps = {\n onSelect: (ids: string) => void;\n selectedIds?: string[];\n item: EventAccordionItemProps;\n disablePagination: boolean;\n};\n\nexport const EventItemCollapsible = ({\n item,\n disablePagination,\n selectedIds = [],\n onSelect,\n}: EventItemProps) => {\n const {\n HeaderComponent,\n BodyComponent,\n AfterHeaderComponent,\n usingVirtuoso,\n ...rest\n } = item ?? {};\n const accordionBodyRef = useRef(null);\n const accordionHeaderRef = useRef(null);\n const { selectionMode, setSelectionMode } = useMultiSelectionContext();\n const hasEventStatusDisplay = useUserHasFeature(Feature.EventStatusDisplay);\n\n const isAccordionOpen = useMemo(\n () => selectedIds.includes(item.event.viagVirtualId),\n [item.event.viagVirtualId, selectedIds]\n );\n\n const isMobile = useMatchMedia('mobile');\n\n useSetEventsAccordionMaxHeight({\n enabled: usingVirtuoso,\n isExpanded: isAccordionOpen,\n accordionBodyRef,\n accordionHeaderRef,\n });\n\n const hideBulkActions = useCallback(() => {\n if (\n selectionMode &&\n selectionMode.groupId === item.itemId &&\n selectionMode.mode === MultiSelectScope.SingleGroup\n ) {\n setSelectionMode();\n }\n }, [item.itemId, selectionMode, setSelectionMode]);\n\n return (\n
    \n {selectionMode?.mode === MultiSelectScope.AllGroups && (\n
    \n \n
    \n )}\n {\n if (!isOpen) {\n hideBulkActions();\n }\n onSelect(item?.event.viagVirtualId);\n }}\n >\n \n \n
    \n {hasEventStatusDisplay && item?.event.eventStatus && (\n
    \n \n
    \n )}\n \n
    \n
    \n {AfterHeaderComponent && }\n
    \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport type VirtualizedEventAccordionProps = {\n before?: ReactNode;\n topListItemBefore?: ReactNode;\n onSelect: (id: string) => void;\n selectedIds?: string[];\n items: EventAccordionItemProps[];\n scrollToItemIndex?: number;\n tableActions?: React.ReactElement;\n onItemsRendered?: (items: EventAccordionItemProps[]) => void;\n disablePagination: boolean;\n};\n\nexport const EventsAccordion = (\n props: VirtualizedEventAccordionProps\n) => {\n const { getEventGroupingText } = useGetGroupingTitle();\n\n const getTableDividerText = useCallback(\n (item: EventAccordionItemProps) => getEventGroupingText(item.event),\n [getEventGroupingText]\n );\n\n return (\n >\n {...props}\n getDividerText={getTableDividerText}\n ItemComponent={EventItemCollapsible}\n />\n );\n};\n","import { debounce } from 'lodash-es';\nimport {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useRef,\n useState,\n} from 'react';\nimport { State } from 'react-use/lib/useScroll';\nimport { VirtuosoScrollEvent } from 'src/tables/Table';\n\nconst MinScrollHeightToCollapse = 30;\n\ninterface ICollapsableViewContext {\n isCollapsedView: boolean;\n setIsCollapsedView: (isCollapsedView: boolean) => void;\n\n isEnabled: boolean;\n onScroll: (virtuosoScrollEvent: VirtuosoScrollEvent) => void;\n}\n\ninterface CollapsableRefProps {\n isCollapsedView: boolean;\n isEnabled: boolean;\n lastScrollState: State;\n}\n\nconst collapsableRefProps: CollapsableRefProps = {\n isCollapsedView: false,\n isEnabled: false,\n lastScrollState: {\n x: 0,\n y: 0,\n },\n};\n\nexport const CollapsableViewContext = createContext({\n isCollapsedView: false,\n setIsCollapsedView: () => void 0,\n isEnabled: false,\n onScroll: () => void 0,\n});\n\nexport const useCollapsableViewContext = () =>\n useContext(CollapsableViewContext);\n\nexport const CollapsableViewProvider = ({\n children,\n isEnabled,\n}: {\n isEnabled: boolean;\n children: ReactNode;\n}) => {\n const [isCollapsedView, setIsCollapsedView] = useState(false);\n\n const refProps = useRef(collapsableRefProps);\n refProps.current.isCollapsedView = isCollapsedView;\n refProps.current.isEnabled = isEnabled;\n\n /**\n * Only collapse when scrollY changes.\n * Don't add deps in this useCallback to avoid renders\n */\n const onScroll = useCallback(\n debounce((virtuosoScrollEvent: VirtuosoScrollEvent) => {\n const { element, scrollState } = virtuosoScrollEvent;\n const { scrollHeight, clientHeight } = element;\n const { isCollapsedView, lastScrollState, isEnabled } = refProps.current;\n\n if (!isEnabled) {\n return;\n }\n\n const lastScrollY = lastScrollState.y;\n refProps.current.lastScrollState = scrollState;\n\n // If scrollY hasn't changed, then don't do anything.\n if (lastScrollY === scrollState.y) {\n return;\n }\n\n const hasScrollDiff =\n scrollHeight - clientHeight > MinScrollHeightToCollapse;\n const isAtTop = virtuosoScrollEvent.scrollState.y === 0;\n\n if (isCollapsedView) {\n if (isAtTop && hasScrollDiff) {\n setIsCollapsedView(false);\n }\n return;\n }\n\n // NOT collapsed\n if (!hasScrollDiff) {\n return;\n }\n\n setIsCollapsedView(true);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, 200),\n []\n );\n\n return (\n \n {children}\n \n );\n};\n","import { Row } from '@tanstack/react-table';\nimport { useRef } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useKeyPress } from 'src/hooks/useKeyPress';\nimport { isInFullPageEventView } from 'src/utils/deepLinkUtils';\n\nexport const useSingleTableShortcutSelection = ({\n isSideTable,\n}: {\n isSideTable?: boolean;\n}) => {\n const { mainRoute } = useAppContext();\n const inFullPageEventView = isInFullPageEventView(mainRoute);\n\n const lastSelectedRowRefIndex = useRef(null);\n const isShiftKeyPressed = useKeyPress('Shift');\n const isCtrlKeyPressed = useKeyPress('Control');\n const isCmdKeyPressed = useKeyPress('Meta');\n\n const isCtrlOrCmdKeyPressed = isCtrlKeyPressed || isCmdKeyPressed;\n\n function updateSelectionForRowAndSubRows({\n row,\n rowId,\n newIsSelected,\n newRowSelection,\n }: {\n row: Row;\n rowId: string;\n newIsSelected: boolean;\n newRowSelection: Record;\n }) {\n newRowSelection[rowId] = newIsSelected;\n\n if (row.subRows && row.subRows.length > 0) {\n row.subRows.forEach((subRow) => {\n updateSelectionForRowAndSubRows({\n row: subRow,\n rowId: subRow.id,\n newIsSelected,\n newRowSelection,\n });\n });\n }\n }\n\n return {\n allowShiftClickSelection: inFullPageEventView && !isSideTable,\n isShiftKeyPressed,\n isCtrlOrCmdKeyPressed,\n lastSelectedRowRefIndex,\n updateSelectionForRowAndSubRows,\n };\n};\n","import { useContentContext } from 'src/contexts/ContentContext';\nimport { HorizontalTextList } from 'src/core/POS/HorizontalTextList';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { getListingNoteIcon } from 'src/utils/listingNotesUtils';\nimport { Feature, ListingNote } from 'src/WebApiController';\n\nimport * as styles from './ListingDisplay.css';\n\nexport const ListingNotesDisplay = ({\n seatTraits,\n className,\n}: {\n seatTraits: ListingNote[] | null | undefined;\n className?: string;\n}) => {\n const contentContext = useContentContext();\n const hasListingNotesAdditionalInfoFeature = useUserHasFeature(\n Feature.ListingNotesAdditionalInfo\n );\n\n if (!seatTraits?.length) {\n return null;\n }\n\n return (\n n.listingNoteText)}\n maxTextsToShowOnHover={seatTraits.length}\n />\n );\n};\n","import {\n SeatingInfo,\n SeatingInfoProps,\n} from 'src/components/common/SeatingInfo';\nimport { Content } from 'src/contexts/ContentContext';\nimport { CountBadge, Stack, StackProps } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getListingGroupItemCount } from 'src/utils/inventoryUtils';\nimport {\n Feature,\n GroupType,\n Listing,\n ListingGroup,\n} from 'src/WebApiController';\n\nimport { ListingNotesDisplay } from './ListingNotesDisplay';\n\nexport const ListingDisplay = ({\n listing,\n hideListingNotes,\n showOrgSeat,\n width,\n justifySeatingIconContent,\n}: {\n listing: Listing;\n hideListingNotes?: boolean;\n width?: 'fit' | 'full';\n justifySeatingIconContent?: StackProps['justifyContent'];\n} & Pick) => {\n const listingGroup = listing as ListingGroup;\n\n const hasIgnoreDupFeature = useUserHasFeature(Feature.IgnoreDuplicate);\n const isDuplicate =\n !!listing?.dupListingId && (!hasIgnoreDupFeature || !listing?.ignoreDup);\n\n const { seating, seatTraits } = listing;\n\n return listingGroup.isLtGrp ? (\n \n {listingGroup.groupType === GroupType.Active ? (\n \n ) : listingGroup.groupType === GroupType.Inactive ? (\n \n ) : listingGroup.groupType === GroupType.FullySold ? (\n \n ) : listingGroup.groupType === GroupType.Invisible ? (\n \n ) : (\n {listingGroup.groupName}\n )}\n {listingGroup.groupType !== GroupType.Leader && (\n \n )}\n \n ) : (\n \n \n {!hideListingNotes && seatTraits?.length ? (\n \n ) : null}\n \n );\n};\n","export const FAKE_SOLD_GROUP_ID = 'fakeSoldGroupId';\n","import { FAKE_SOLD_GROUP_ID } from 'src/components/Listings/constants';\nimport { ListingWithEvent } from 'src/tables/ListingTable/ListingTable.types';\nimport { sortSeating } from 'src/utils/tableUtils';\nimport { addMoneySameCurrency } from 'src/utils/ticketMetricUtils';\nimport {\n ActionOutboxEntityType,\n Listing,\n ListingGroup,\n ListingStatus,\n Marketplace,\n} from 'src/WebApiController';\n\nexport const createFakeListingGroup = (\n listings: ListingWithEvent[] | undefined,\n groupName: string\n): ListingWithEvent | null => {\n const firstListingWithEvent = listings?.[0];\n const listing = firstListingWithEvent?.listing;\n\n if (!listings || !firstListingWithEvent || !listing) {\n return null;\n }\n\n const allListings: Listing[] = listings\n .map((l) => l.listing)\n .flat()\n .filter((l): l is Listing => !!l)\n .toSorted((a, b) => sortSeating(a.seating, b.seating));\n\n // @ts-ignore some fields not needed\n const listingGroup: ListingGroup = {\n id: Math.abs(listing.id) * -1,\n insertBy: '',\n rowVer: 0,\n ltGrpId: FAKE_SOLD_GROUP_ID,\n ltGrpParentId: null,\n ltGrpPrior: -1,\n ltGrpActive: false,\n poBys: [],\n isLtGrp: true,\n isFull: false,\n entityType: ActionOutboxEntityType.Listing,\n isDeleted: false,\n isUndeliv: false,\n mkp: Marketplace.StubHub,\n idOnMkp: listing.idOnMkp,\n posEvId: listing.posEvId,\n viagVirtualId: listing.viagVirtualId,\n viagEvId: listing.viagEvId,\n viagEvMapId: listing.viagEvMapId,\n availQty: 0,\n maxDispQty: 0,\n mkpListings: [],\n isSeatSaver: false,\n isNoFulfill: false,\n seating: listing.seating,\n splitType: listing.splitType,\n hideSeats: false,\n tags: [],\n seatTraits: [],\n ticketCnt: 0,\n delivType: listing.delivType,\n preDelivState: listing.preDelivState,\n unitCst: null,\n listPrice: listing.listPrice,\n allInPrice: listing.allInPrice,\n actions: [],\n status: ListingStatus.FullySold,\n currency: listing.currency,\n pricerId: '',\n isCurUserPo: listing.isCurUserPo,\n privNotes: '',\n poId: listing.poId,\n poCreatedBys: [],\n groupItems: allListings,\n groupName,\n };\n\n allListings.forEach((listing) => {\n listingGroup.ticketCnt += listing.ticketCnt;\n listingGroup.availQty += listing.availQty;\n listingGroup.maxDispQty += listing.maxDispQty;\n });\n\n const currency = allListings[0].unitCst?.currency;\n const allListingsHaveSameCurrency = allListings.every(\n (l) => l.unitCst?.currency === currency\n );\n\n if (allListingsHaveSameCurrency) {\n listingGroup.unitCst = allListings[0].unitCst;\n listingGroup.faceValue = allListings[0].faceValue;\n for (let i = 1; i < allListings.length; i++) {\n listingGroup.unitCst = addMoneySameCurrency(\n listing.unitCst,\n allListings[i].unitCst\n );\n\n listingGroup.faceValue = addMoneySameCurrency(\n listing.faceValue,\n allListings[i].faceValue\n );\n }\n }\n\n return {\n isLtGrp: true,\n event: firstListingWithEvent.event,\n listing: listingGroup,\n };\n};\n","import { SortingState } from '@tanstack/react-table';\nimport { createContext, useContext, useState } from 'react';\n\nexport type IActiveSortTableColumnContext = {\n activeSortTableColumn?: SortingState;\n setActiveSortTableColumn: (val: SortingState) => void;\n};\n\nexport const CreateActiveSortTableColumnContext =\n createContext({\n setActiveSortTableColumn: () => {},\n });\n\nexport const useActiveSortTableColumnContext = () =>\n useContext(CreateActiveSortTableColumnContext);\n\nexport const ActiveSortTableColumnProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const [activeSortTableColumn, setActiveSortTableColumn] =\n useState();\n\n return (\n \n {children}\n \n );\n};\n","export enum PurchasesTableColumnId {\n Checkbox = 'checkbox',\n AccordianToggle = 'accordianToggle',\n Id = 'id',\n BuyerUserId = 'buyerUserId',\n VendorOrderId = 'vendorOrderId',\n PurchaseDate = 'purchaseDate',\n Cost = 'cost',\n Payment = 'payment',\n PaymentStatus = 'paymentStatus',\n QualityControlState = 'qualityControlState',\n Orders = 'orders',\n VendorAccountEmail = 'vendorAccountEmail',\n CreatedBy = 'createdBy',\n // Columns usable by single ticket group\n Event = 'event',\n Venue = 'venue',\n EventDate = 'eventDate',\n Seating = 'seating',\n Row = 'row',\n Seats = 'seats',\n SeatTraits = 'seatTraits',\n Tickets = 'tickets',\n Shipment = 'shipment',\n TotalCost = 'totalCost',\n UnitCost = 'unitCost',\n Actions = 'actions',\n TotalPayment = 'totalPayment',\n TotalConvertedPayment = 'totalConvertedPayment',\n PaymentConversionRate = 'paymentConversionRate',\n Commissions = 'commissions',\n}\n\nexport enum PurchaseTableColumnGroupId {\n TicketGroup = 'ticketGroup',\n}\n","export enum SalesTableColumnId {\n // Not Configurable\n Checkbox = 'checkbox',\n // Configurable\n Seating = 'seating',\n Row = 'row',\n Seats = 'seats',\n QuantitySold = 'quantitySold',\n OrderDate = 'orderDate',\n InHandDate = 'inHandDate',\n Status = 'status',\n TicketType = 'ticketType',\n Proceeds = 'proceeds',\n Sale = 'sale',\n Actions = 'actions',\n // Default Visibility Off (optional columns)\n SoldTicketCost = 'soldTicketCost',\n Charges = 'charges',\n Credits = 'credits',\n PandL = 'PandL',\n Margin = 'margin',\n PurchaseCreatedBy = 'purchaseCreatedBy',\n PurchasedBy = 'purchasedBy',\n PaymentState = 'paymentState',\n PaymentReceived = 'paymentReceived',\n PaymentReferenceId = 'paymentReferenceId',\n FulfillmentDate = 'fulfillmentDate',\n AutoFulfill = 'autoFulfill',\n PurchaseDate = 'purchaseDate',\n VendorOrderId = 'vendorOrderId',\n VendorAccountEmail = 'vendorAccountEmail',\n OriginatedBy = 'originatedBy',\n TotalPaymentsAmount = 'totalPaymentsAmount',\n TotalConvertedPaymentsAmount = 'totalConvertedPaymentsAmount',\n WastedQuantity = 'wastedQuantity',\n}\n\nexport enum SalesTableFlattenedColumnId {\n Event = 'Event',\n Venue = 'Venue',\n Location = 'Location',\n EventDate = 'Date',\n}\n\nexport enum SalesReportTableColumnId {\n // Group by types\n Performer = 'performer',\n Venue = 'venue',\n Event = 'event',\n EventGenre = 'eventGenre',\n EventCountry = 'eventCountry',\n EventCity = 'eventCity',\n SeatingSection = 'seatingSection',\n SeatingRow = 'seatingRow',\n SaleMarketplace = 'saleMarketplace',\n SaleMonth = 'saleMonth',\n SaleWeek = 'saleWeek',\n SaleDay = 'saleDay',\n // Configurable - shared precision with ListingTableColumnId\n QuantitySold = SalesTableColumnId.QuantitySold,\n Proceeds = SalesTableColumnId.Proceeds,\n SoldTicketCost = SalesTableColumnId.SoldTicketCost,\n Charges = SalesTableColumnId.Charges,\n Credits = SalesTableColumnId.Credits,\n // Auxiliary columns - neither metrics nor primary dimensions\n EventId = 'eventId',\n Category = 'category',\n EventDate = 'eventDate',\n EventStateProvince = 'eventStateProvince',\n SaleId = 'saleId',\n MarketplaceSaleId = 'marketplaceSaleId',\n Status = SalesTableColumnId.Status,\n TicketType = SalesTableColumnId.TicketType,\n InHandDate = SalesTableColumnId.InHandDate,\n Fulfiller = 'fulfiller',\n PurchaseId = 'purchaseId',\n PurchasedBy = 'purchasedBy',\n PurchaseDate = SalesTableColumnId.PurchaseDate,\n Vendor = 'vendor',\n SeatingSeats = 'seatingSeats',\n OrderDate = SalesTableColumnId.OrderDate,\n PricedBy = 'pricedBy',\n CurrencyCode = 'currencyCode',\n PaymentDate = 'paymentDate',\n FulfillmentDate = SalesTableColumnId.FulfillmentDate,\n PurchaseCreatedBy = SalesTableColumnId.PurchaseCreatedBy,\n PaymentState = SalesTableColumnId.PaymentState,\n PaymentReceived = SalesTableColumnId.PaymentReceived,\n PaymentReferenceId = SalesTableColumnId.PaymentReferenceId,\n VendorAccountEmail = SalesTableColumnId.VendorAccountEmail,\n InternalNotes = 'internalNotes',\n CancellationDate = 'cancellationDate',\n OutstandingBalance = 'outstandingBalance',\n PandL = SalesTableColumnId.PandL,\n Margin = SalesTableColumnId.Margin,\n TicketId = 'ticketId',\n TicketGroupId = 'ticketGroupId',\n CommissionUser = 'commissionUser',\n CommissionPercent = 'commissionPercent',\n CommissionShare = 'commissionShare',\n MarketplacePaymentTerms = 'marketplacePaymentTerms',\n}\n\n// Subset of ReportSalesColumnName from ReportingService\nexport enum SalesReportTableGroupingColumnId {\n PerformerName = 'performerName',\n VenueName = 'venueName',\n EventName = 'eventName',\n TopLevelCategoryName = 'topLevelCategoryName',\n CountryName = 'countryName',\n CityName = 'cityName',\n Section = 'section',\n SeatingRow = 'seatingRow',\n SeatFrom = 'seatFrom',\n SeatTo = 'seatTo',\n EventId = 'eventId',\n LocalEventDateTime = 'localEventDateTime',\n StateProvince = 'stateProvince',\n SaleId = 'saleId',\n InternalNotes = 'internalNotes',\n SaleDate = 'saleDate',\n SaleStatusName = 'saleStatusName',\n PaymentReferenceId = 'paymentReferenceId',\n TicketTypeName = 'ticketTypeName',\n InHandDate = 'inHandDate',\n LastPaymentDate = 'lastPaymentDate',\n CancellationDate = 'cancellationDate',\n FulfillerSellerUserId = 'fulfillerSellerUserId',\n FulfillmentDate = 'fulfillmentDate',\n MarketplacePaymentStateName = 'marketplacePaymentStateName',\n MarketplaceName = 'marketplaceName',\n MarketplaceSaleId = 'marketplaceSaleId',\n IsSeatSaver = 'isSeatSaver',\n IsNoFulfill = 'isNoFulfill',\n SaleWeek = 'saleWeek',\n SaleMonth = 'saleMonth',\n SaleDay = 'saleDay',\n}\n\nexport enum SalesReportTableValueColumnId {\n QuantitySold = 'quantitySold',\n TotalNetProceeds = 'totalNetProceeds',\n Charges = 'charges',\n Credits = 'credits',\n OutstandingBalance = 'outstandingBalance',\n PandL = 'PandL',\n TotalCost = 'totalCost',\n Margin = 'margin',\n}\n","import {\n ListingReportTableColumnId,\n ListingTableColumnId,\n ListingTableFlattenedColumnId,\n} from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { PurchasesTableColumnId } from 'src/utils/columns/purchases/purchasesColumnUtils.types';\nimport {\n SalesTableColumnId,\n SalesTableFlattenedColumnId,\n} from 'src/utils/columns/sales/salesColumnUtils.types';\n\nimport {\n FormatOption,\n FormatOption_DateTime,\n FormatOption_EnumDisplay,\n FormatOption_Event,\n FormatOption_HiddenCustomFormat,\n FormatOption_Percent,\n FormatOption_Seating,\n FormatOption_Standard,\n FormatOptionType,\n} from './EditTableColumns.constants';\nimport {\n GenerateFormatOptionDisplayString,\n GetDefaultFormatOption,\n} from './EditTableColumns.types';\n\nexport const getFormatOptionType = (option: FormatOption): FormatOptionType => {\n if (Object.values(FormatOption_Standard).includes(option)) {\n return FormatOptionType.Standard;\n }\n if (Object.values(FormatOption_Seating).includes(option)) {\n return FormatOptionType.Seating;\n }\n if (Object.values(FormatOption_Event).includes(option)) {\n return FormatOptionType.Event;\n }\n if (Object.values(FormatOption_DateTime).includes(option)) {\n return FormatOptionType.DateTime;\n }\n if (Object.values(FormatOption_EnumDisplay).includes(option)) {\n return FormatOptionType.EnumDisplay;\n }\n if (Object.values(FormatOption_Percent).includes(option)) {\n return FormatOptionType.Percentage;\n }\n // Default case\n return FormatOptionType.Standard;\n};\n\n/**\n * EnumDisplay and Seating are localized text, thus can't be defined here\n */\nexport const FORMAT_OPTION_TO_DISPLAY_MAP: Omit<\n Record,\n | FormatOption_EnumDisplay\n | FormatOption_Seating\n | FormatOption_Event\n | FormatOption_HiddenCustomFormat\n> = {\n [FormatOption.Millions]: '0.1M',\n [FormatOption.Thousands]: '100K',\n [FormatOption.Whole]: '100,000',\n [FormatOption.Precise]: '100,000.43',\n [FormatOption.DateTime_MMDD]: 'MM/DD',\n [FormatOption.DateTime_MMDD_Time]: 'MM/DD Time',\n [FormatOption.DateTime_MMDD_Time_Day]: 'MM/DD Time, Day',\n [FormatOption.DateTime_MonthDD]: 'Month DD',\n [FormatOption.DateTime_MonthDD_Time]: 'Month DD, Time',\n [FormatOption.DateTime_MonthDD_Time_Day]: 'Month DD, Time, Day',\n [FormatOption.DateTime_MMDDYY]: 'MM/DD/YY',\n [FormatOption.DateTime_Month_DD_YY]: 'Month DD YY',\n [FormatOption.DateTime_Month_DD_YY_Time]: 'Month DD YY, Time',\n [FormatOption.DateTime_Month_DD_YY_Time_Day]: 'Month DD YY, Time, Day',\n [FormatOption.Percent_RoundToTwo]: '43.42',\n [FormatOption.Percent_RoundToOne]: '43.2',\n [FormatOption.Percent_RoundToWhole]: '43',\n [FormatOption.Percent_AsDecimal_RoundToOne]: '0.4',\n [FormatOption.Percent_AsDecimal_RoundToTwo]: '0.43',\n [FormatOption.Percent_AsDecimal_RoundToThree]: '0.434',\n};\n\n/**\n * Takes the flags and parameters to generate the content that should be rendered on\n * a FormatOptionPill (usually)\n */\nexport const generateFormatOptionDisplayString: GenerateFormatOptionDisplayString =\n ({ localizedText, option, isPercent, isCurrency, uiCurrency }) => {\n const {\n originalSeating,\n fullSeating,\n sectionOnly,\n fullEventInfo,\n eventName,\n icon,\n text,\n } = localizedText;\n const shouldShowPercent =\n isPercent &&\n !isCurrency &&\n !(\n [\n FormatOption.Percent_AsDecimal_RoundToOne,\n FormatOption.Percent_AsDecimal_RoundToTwo,\n FormatOption.Percent_AsDecimal_RoundToThree,\n ] as string[]\n ).includes(option);\n\n const contentDisplayMap: Record = {\n ...FORMAT_OPTION_TO_DISPLAY_MAP,\n [FormatOption.Seating_OriginalSeating]: originalSeating,\n [FormatOption.Seating_FullSeating]: fullSeating,\n [FormatOption.Seating_SectionOnly]: sectionOnly,\n [FormatOption.Event_FullInfo]: fullEventInfo,\n [FormatOption.Event_EventName]: eventName,\n [FormatOption.EnumDisplay_Icon]: icon,\n [FormatOption.EnumDisplay_Text]: text,\n [FormatOption.Actions_LinkOnly]: '', // We do not expose this\n [FormatOption.Id_RawIdOnly]: '', // We do not expose this\n };\n\n // Currency will win if both isCurrency and isPercent being set\n const currencyContent = isCurrency ? uiCurrency.sym : '';\n // We add fallback in case we no longer support an enum or change its value\n const displayContent =\n contentDisplayMap[option] ?? contentDisplayMap[FormatOption.Precise];\n // Percent will only display if isCurrency is not set\n const percentContent = shouldShowPercent ? '%' : '';\n\n const textContent = `${currencyContent}${displayContent}${percentContent}`;\n\n return textContent;\n };\n\nexport const LISTING_TABLE_COLUMN_DEFAULT_PRECISION: Record<\n string,\n FormatOption\n> = {\n [ListingTableColumnId.Seating]: FormatOption.Seating_FullSeating,\n [ListingTableColumnId.SeatingSeats]: FormatOption.Seating_FullSeating,\n [ListingTableFlattenedColumnId.Event]: FormatOption.Event_FullInfo,\n [ListingTableColumnId.DeliveryType]: FormatOption.EnumDisplay_Icon,\n [ListingTableColumnId.UndercutMode]: FormatOption.EnumDisplay_Text,\n [ListingTableColumnId.CompListingMode]: FormatOption.EnumDisplay_Text,\n [ListingReportTableColumnId.PaymentMethodType]: FormatOption.EnumDisplay_Icon,\n};\n\nexport const LISTING_FLATTENED_TABLE_COLUMN_DEFAULT_PRECISION: Record<\n string,\n FormatOption\n> = {\n [ListingTableColumnId.DeliveryType]: FormatOption.EnumDisplay_Text,\n};\n\nexport const SALE_TABLE_COLUMN_DEFAULT_PRECISION: Record =\n {\n [SalesTableColumnId.Seating]: FormatOption.Seating_FullSeating,\n [SalesTableFlattenedColumnId.Event]: FormatOption.Event_FullInfo,\n [SalesTableColumnId.Status]: FormatOption.EnumDisplay_Text,\n [SalesTableColumnId.TicketType]: FormatOption.EnumDisplay_Icon,\n [SalesTableColumnId.OrderDate]: FormatOption.DateTime_MonthDD_Time,\n };\n\nexport const SALE_FLATTENED_TABLE_COLUMN_DEFAULT_PRECISION: Record<\n string,\n FormatOption\n> = {\n [SalesTableColumnId.Status]: FormatOption.EnumDisplay_Text,\n [SalesTableColumnId.TicketType]: FormatOption.EnumDisplay_Text,\n};\n\nexport const getDefaultFormatOption: GetDefaultFormatOption = ({\n isSeating,\n isEvent,\n isEnumWithIcon,\n isInteger,\n isDateTime,\n isPercent,\n}) => {\n return isSeating\n ? FormatOption.Seating_FullSeating\n : isEvent\n ? FormatOption.Event_FullInfo\n : isEnumWithIcon\n ? FormatOption.EnumDisplay_Icon\n : isDateTime\n ? FormatOption.DateTime_MonthDD_Time\n : isPercent\n ? FormatOption.Percent_AsDecimal_RoundToTwo\n : isInteger\n ? FormatOption.Whole\n : FormatOption.Precise;\n};\n\nexport const PURCHASES_EVENT_TABLE_COLUMN_DEFAULT_PRECISION: Record<\n string,\n FormatOption\n> = {\n [PurchasesTableColumnId.PurchaseDate]: FormatOption.DateTime_MonthDD_Time_Day,\n};\n","import { ActionOutboxEntityType, UserSetting } from 'src/WebApiController';\n\nexport const enum SectionType {\n Sales = 'sales',\n Listings = 'listings',\n SalesReport = 'salesReport',\n ListingsReport = 'listingsReport',\n Events = 'events',\n ListingsFlattened = 'ListingsFlattened',\n SalesFlattened = 'SalesFlattened',\n Purchases = 'purchases',\n PurchaseEvent = 'purchaseEvent',\n SalesSideTable = 'salesSideTable',\n InventorySideTable = 'inventorySideTable',\n PurchaseSideTable = 'purchaseSideTable',\n MarketplacePaymentsTable = 'marketplacePaymentsTable',\n OnSaleEvents = 'discoveryTable',\n}\n\nexport const SECTION_TYPE_TO_CUSTOM_COLUMN_SETTING: Record<\n SectionType,\n UserSetting\n> = {\n [SectionType.Listings]: UserSetting.InventoryCustomColumns,\n [SectionType.ListingsFlattened]: UserSetting.InventoryCustomColumns,\n [SectionType.ListingsReport]: UserSetting.InventoryCustomColumns,\n [SectionType.Sales]: UserSetting.SaleCustomColumns,\n [SectionType.SalesFlattened]: UserSetting.SaleCustomColumns,\n [SectionType.SalesReport]: UserSetting.SaleCustomColumns,\n [SectionType.Events]: UserSetting.EventsCustomColumns,\n [SectionType.Purchases]: UserSetting.PurchaseCustomColumns,\n [SectionType.PurchaseEvent]: UserSetting.PurchaseCustomColumns,\n [SectionType.SalesSideTable]: UserSetting.SaleCustomColumns,\n [SectionType.InventorySideTable]: UserSetting.InventoryCustomColumns,\n [SectionType.PurchaseSideTable]: UserSetting.PurchaseCustomColumns,\n [SectionType.MarketplacePaymentsTable]:\n UserSetting.MarketplacePaymentsCustomColumns,\n [SectionType.OnSaleEvents]: UserSetting.OnSaleEventCustomColumns,\n} as const;\n\nexport const SECTION_TYPE_TO_PRECISION_SETTING: Record<\n SectionType,\n UserSetting\n> = {\n [SectionType.Listings]: UserSetting.InventoryColumnNumberPrecision,\n [SectionType.ListingsFlattened]:\n UserSetting.InventoryFlattenedColumnNumberPrecision,\n [SectionType.Events]: UserSetting.EventsColumnNumberPrecision,\n [SectionType.Sales]: UserSetting.SaleColumnNumberPrecision,\n [SectionType.SalesFlattened]: UserSetting.SaleFlattenedColumnNumberPrecision,\n [SectionType.ListingsReport]: UserSetting.InventoryColumnNumberPrecision,\n [SectionType.SalesReport]: UserSetting.SaleColumnNumberPrecision,\n [SectionType.Purchases]: UserSetting.PurchaseColumnNumberPrecision,\n [SectionType.PurchaseEvent]: UserSetting.PurchaseEventColumnNumberPrecision,\n [SectionType.SalesSideTable]: UserSetting.SalesSideTableColumnNumberPrecision,\n [SectionType.InventorySideTable]:\n UserSetting.InventorySideTableColumnNumberPrecision,\n [SectionType.PurchaseSideTable]:\n UserSetting.PurchaseSideTableColumnNumberPrecision,\n [SectionType.MarketplacePaymentsTable]:\n UserSetting.MarketplacePaymentsColumnNumberPrecision,\n [SectionType.OnSaleEvents]: UserSetting.OnSaleEventColumnNumberPrecision,\n};\n\nexport const SECTION_TYPE_TO_COLUMN_EDITABILITY_SETTING: Record<\n SectionType,\n UserSetting\n> = {\n [SectionType.Listings]: UserSetting.InventoryColumnEditability,\n [SectionType.ListingsFlattened]:\n UserSetting.InventoryFlattenedColumnEditability,\n [SectionType.Events]: UserSetting.EventsColumnEditability,\n [SectionType.Sales]: UserSetting.SaleColumnEditability,\n [SectionType.SalesFlattened]: UserSetting.SaleFlattenedColumnEditability,\n [SectionType.ListingsReport]: UserSetting.InventoryFlattenedColumnEditability,\n [SectionType.SalesReport]: UserSetting.SaleColumnEditability,\n [SectionType.Purchases]: UserSetting.PurchaseColumnEditability,\n [SectionType.PurchaseEvent]: UserSetting.PurchaseEventColumnEditability,\n [SectionType.SalesSideTable]: UserSetting.SalesSideTableColumnEditability,\n [SectionType.InventorySideTable]:\n UserSetting.InventorySideTableColumnEditability,\n [SectionType.PurchaseSideTable]:\n UserSetting.PurchaseSideTableColumnEditability,\n [SectionType.MarketplacePaymentsTable]:\n UserSetting.MarketplacePaymentsColumnEditability,\n [SectionType.OnSaleEvents]: UserSetting.OnSaleEventColumnEditability,\n};\n\nexport const SECTION_TYPE_TO_ACTION_OUTBOX_ENTITY_TYPE = {\n [SectionType.Listings]: ActionOutboxEntityType.Listing,\n [SectionType.ListingsFlattened]: ActionOutboxEntityType.Listing,\n [SectionType.ListingsReport]: ActionOutboxEntityType.Listing,\n [SectionType.Events]: ActionOutboxEntityType.SellerEvent,\n [SectionType.Purchases]: ActionOutboxEntityType.Purchase,\n [SectionType.PurchaseEvent]: ActionOutboxEntityType.Purchase,\n [SectionType.Sales]: ActionOutboxEntityType.Sale,\n [SectionType.SalesFlattened]: ActionOutboxEntityType.Sale,\n [SectionType.SalesReport]: ActionOutboxEntityType.Sale,\n [SectionType.SalesSideTable]: ActionOutboxEntityType.Sale,\n [SectionType.InventorySideTable]: ActionOutboxEntityType.Listing,\n [SectionType.PurchaseSideTable]: ActionOutboxEntityType.Purchase,\n [SectionType.MarketplacePaymentsTable]: undefined,\n [SectionType.OnSaleEvents]: undefined,\n} as const;\n","import clsx from 'clsx';\nimport { Button } from 'src/core/ui';\n\nimport * as styles from './FormatOptionPill.css';\nimport { FormatOptionPillBaseProps } from './FormatOptionPill.types';\n\n/**\n * FormatOptionPill Presentational Layer\n */\nexport const FormatOptionPillBase = ({\n onClick,\n isDisabled,\n onPointerDown,\n content,\n isSelected,\n}: FormatOptionPillBaseProps) => {\n return (\n \n {content}\n \n );\n};\n","import { useCallback, useMemo, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { CheckIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { getColumnConfigById } from 'src/utils/columns/columnUtils';\nimport {\n ListingTableColumnId,\n ListingTableFlattenedColumnId,\n} from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { PurchasesTableColumnId } from 'src/utils/columns/purchases/purchasesColumnUtils.types';\nimport {\n SalesTableColumnId,\n SalesTableFlattenedColumnId,\n} from 'src/utils/columns/sales/salesColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n SECTION_TYPE_TO_CUSTOM_COLUMN_SETTING,\n SectionType,\n} from 'src/utils/types/sectionType';\nimport { Feature } from 'src/WebApiController';\n\nimport {\n FormatOption,\n FormatOption_DateTime,\n FormatOption_EnumDisplay,\n FormatOption_Event,\n FormatOption_Percent,\n FormatOption_Seating,\n FormatOption_Standard,\n} from '../EditTableColumns.constants';\nimport {\n generateFormatOptionDisplayString,\n getDefaultFormatOption,\n} from '../EditTableColumns.util';\nimport {\n CustomColumn,\n FormatDisplayOption,\n FormatOptionPillSelectProps,\n} from './FormatOptionPill.types';\n\nexport const FormatOptionPillSelect = ({\n id,\n initialValue,\n onSave,\n sectionType,\n trigger,\n}: FormatOptionPillSelectProps) => {\n const hasViewListingOriginalSeatingFeature = useUserHasFeature(\n Feature.ViewListingOriginalSeating\n );\n const originalSeating = useContent(ContentId.OriginalSeating);\n const fullSeating = useContent(\n (sectionType === SectionType.Listings ||\n sectionType === SectionType.ListingsFlattened) &&\n hasViewListingOriginalSeatingFeature\n ? ContentId.RemainingSeatingOnly\n : ContentId.FullSeating\n );\n const sectionOnly = useContent(ContentId.SectionOnly);\n const fullEventInfo = useContent(ContentId.FullEventInfo);\n const eventName = useContent(ContentId.EventName);\n const icon = useContent(ContentId.Icon);\n const text = useContent(ContentId.Text);\n const { loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n\n const uiCurrency = getUiCurrency(\n loginContext?.user?.activeAccount.currencyCode\n );\n\n const { value: customColumns = [] } = useServerUserSetting({\n id: SECTION_TYPE_TO_CUSTOM_COLUMN_SETTING[sectionType],\n });\n\n const columnConfig = getColumnConfigById({ id, customColumns, sectionType });\n const { isCurrency, isPercent, isEnumWithIcon, isDateTime, isInteger } =\n columnConfig.personalization;\n const defaultFormatOption = getDefaultFormatOption({\n isEnumWithIcon,\n isInteger,\n isSeating:\n id === ListingTableColumnId.Seating ||\n id === SalesTableColumnId.Seating ||\n id === PurchasesTableColumnId.Seating,\n isEvent:\n id === ListingTableFlattenedColumnId.Event ||\n id === SalesTableFlattenedColumnId.Event,\n isDateTime,\n isPercent,\n });\n\n const [selectedPrecision, setSelectedPrecision] = useState(\n initialValue ?? defaultFormatOption\n );\n\n const addToOptions = useCallback(\n (formatOptions: FormatOption[]) =>\n formatOptions.map((option) => ({\n option,\n isCurrency,\n isPercent,\n onClick: () => setSelectedPrecision(option),\n })),\n [isCurrency, isPercent]\n );\n\n const options: FormatDisplayOption[] = useMemo(() => {\n if (\n id === ListingTableColumnId.Seating ||\n id === SalesTableColumnId.Seating ||\n id === PurchasesTableColumnId.Seating\n ) {\n // Handle Seating\n return addToOptions(\n Object.values(FormatOption_Seating).filter(\n (v) =>\n !(\n v === FormatOption_Seating.Seating_OriginalSeating &&\n ((sectionType !== SectionType.Listings &&\n sectionType !== SectionType.ListingsFlattened) ||\n !hasViewListingOriginalSeatingFeature)\n )\n )\n );\n } else if (id === ListingTableColumnId.SeatingSeats) {\n // Handle SeatingSeats\n return addToOptions(\n Object.values(FormatOption_Seating).filter(\n (v) => !(v === FormatOption_Seating.Seating_SectionOnly)\n )\n );\n } else if (\n id === ListingTableFlattenedColumnId.Event ||\n id === SalesTableFlattenedColumnId.Event\n ) {\n // Handle Event\n return addToOptions(Object.values(FormatOption_Event));\n } else if (isDateTime) {\n // Handle DateTime\n return addToOptions(Object.values(FormatOption_DateTime));\n } else if (isEnumWithIcon) {\n // Handle EnumDisplay\n return addToOptions(Object.values(FormatOption_EnumDisplay));\n } else if (isPercent) {\n // Handle Percentage\n return addToOptions(Object.values(FormatOption_Percent));\n } else {\n // Handle Numeric\n const standardOptions = Object.values(FormatOption_Standard);\n return addToOptions(\n isInteger\n ? standardOptions.filter(\n (option) => option !== FormatOption_Standard.Precise\n )\n : standardOptions\n );\n }\n }, [\n addToOptions,\n hasViewListingOriginalSeatingFeature,\n id,\n isDateTime,\n isEnumWithIcon,\n isInteger,\n isPercent,\n sectionType,\n ]);\n\n return (\n \n {options.map((item) => {\n const { isCurrency, isPercent, option, onClick } = item;\n const isSelected = selectedPrecision === option;\n const textContent = generateFormatOptionDisplayString({\n localizedText: {\n originalSeating,\n fullSeating,\n sectionOnly,\n fullEventInfo,\n eventName,\n icon,\n text,\n },\n uiCurrency,\n isCurrency,\n isPercent,\n option,\n });\n return (\n {\n e.preventDefault();\n e.stopPropagation();\n onSave(id, option);\n if (onClick) {\n onClick();\n }\n }}\n >\n {textContent}\n {isSelected && (\n \n )}\n \n );\n })}\n \n );\n};\n","import { MouseEvent } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { vars } from 'src/core/themes';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ExpandIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { Feature } from 'src/WebApiController';\n\nimport { FormatOption } from '../EditTableColumns.constants';\nimport { generateFormatOptionDisplayString } from '../EditTableColumns.util';\nimport { FormatOptionPillBase } from './FormatOptionPill.base';\nimport { FormatOptionPillSelect } from './FormatOptionPill.select';\nimport type {\n FormatOptionPillContainerProps,\n SelectableFormatOptionPillContainerProps,\n} from './FormatOptionPill.types';\n\nexport const FormatOptionPillContainer = (\n props:\n | FormatOptionPillContainerProps\n | SelectableFormatOptionPillContainerProps\n) => {\n const hasViewListingOriginalSeatingFeature = useUserHasFeature(\n Feature.ViewListingOriginalSeating\n );\n const {\n flags = {},\n isSelectable,\n option = flags.isDateTime\n ? FormatOption.DateTime_MonthDD_Time\n : FormatOption.Precise,\n ...rest\n } = props;\n\n let id: string | undefined;\n let onSave: ((id: string, precision: FormatOption) => void) | undefined;\n let sectionType: SectionType | undefined;\n const { isCurrency, isPercent } = flags;\n\n const originalSeating = useContent(ContentId.OriginalSeating);\n const fullSeating = useContent(\n (props.sectionType === SectionType.Listings ||\n props.sectionType === SectionType.ListingsFlattened) &&\n hasViewListingOriginalSeatingFeature\n ? ContentId.RemainingSeatingOnly\n : ContentId.FullSeating\n );\n const sectionOnly = useContent(ContentId.SectionOnly);\n const fullEventInfo = useContent(ContentId.FullEventInfo);\n const eventName = useContent(ContentId.EventName);\n const icon = useContent(ContentId.Icon);\n const text = useContent(ContentId.Text);\n const { loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n\n const uiCurrency = getUiCurrency(\n loginContext?.user?.activeAccount.currencyCode\n );\n\n const textContent = generateFormatOptionDisplayString({\n localizedText: {\n originalSeating,\n fullSeating,\n sectionOnly,\n fullEventInfo,\n eventName,\n icon,\n text,\n },\n uiCurrency,\n isCurrency,\n isPercent,\n option,\n });\n\n const onPointerDownHandler = (e: MouseEvent) => e.stopPropagation();\n\n const formatOptionPillBase = (\n \n {textContent}\n \n \n ) : (\n textContent\n )\n }\n {...rest}\n />\n );\n\n if (isSelectable) {\n id = props.id;\n onSave = props.onSave;\n sectionType = props.sectionType;\n }\n\n if (!isSelectable || !id || !onSave || !sectionType)\n return formatOptionPillBase;\n\n return (\n \n );\n};\n","import {\n Event,\n OnSaleEventMetrics,\n Performer,\n Venue,\n} from 'src/WebApiController';\n\nexport type OnSaleEventWithMetrics = {\n event: Event;\n performer?: Performer;\n venue?: Venue;\n metrics?: OnSaleEventMetrics;\n};\n\nexport enum OnSaleEventsTableColumnId {\n Checkbox = 'checkbox',\n Event = 'event',\n Venue = 'venue',\n Location = 'location',\n OnSaleDate = 'onSaleDate',\n Date = 'date',\n RawPreSaleDate = 'rawPreSaleDate',\n ListingCount = 'listingCount',\n TicketCount = 'ticketCount',\n UnitNetProceedsMin = 'unitNetProceedsMin',\n UnitNetProceedsP25 = 'unitNetProceedsP25',\n UnitNetProceedsP50 = 'unitNetProceedsP50',\n VisitsLastHour = 'visitsLastHour',\n VisitsLastDay = 'visitsLastDay',\n VisitsLast3Days = 'visitsLast3Days',\n VisitsLast7Days = 'visitsLast7Days',\n TransactionsLastHour = 'transactionsLastHour',\n TransactionsLastDay = 'transactionsLastDay',\n TransactionsLast3Days = 'transactionsLast3Days',\n TransactionsLast7Days = 'transactionsLast7Days',\n Action = 'action',\n}\n","export enum EventsTableColumnId {\n Checkbox = 'checkbox',\n Event = 'event',\n Venue = 'venue',\n Location = 'location',\n Date = 'date',\n TotalQty = 'totalQty',\n SoldQty = 'soldQty',\n ActualSTR = 'actualSTR',\n Revenue = 'revenue',\n SoldCost = 'soldCost',\n Profit = 'profit',\n LiftPercentage = 'liftpercentage',\n ATP = 'atp',\n ListedQty = 'listedQty',\n ListedAtp = 'listedAtp',\n UnsoldQty = 'unsoldQty',\n Action = 'action',\n UnsoldProceeds = 'unsoldProceeds',\n UnsoldCost = 'unsoldCost',\n TotalCost = 'totalCost',\n LastPriceUpdatedDate = 'lastPriceUpdatedDate',\n}\n","import { OnSaleEventsTableColumnId } from 'src/navigations/Routes/OnSaleEvent/OnSaleEventView.types';\n\nimport { ColumnPersonalizationFlags } from '../columnUtils.types';\nimport { EventsTableColumnId } from './eventsColumnUtils.types';\n\nexport const EVENTS_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES: Record<\n EventsTableColumnId,\n Partial\n> = {\n [EventsTableColumnId.Checkbox]: { isConfigurable: false },\n [EventsTableColumnId.ATP]: { isNumeric: true, isCurrency: true },\n [EventsTableColumnId.Action]: { isConfigurable: false, isRequired: true },\n [EventsTableColumnId.ActualSTR]: { isNumeric: true, isPercent: true },\n [EventsTableColumnId.Date]: { isDateTime: true },\n [EventsTableColumnId.Event]: { isHiddenByDefault: false },\n [EventsTableColumnId.Venue]: { isHiddenByDefault: false },\n [EventsTableColumnId.Location]: {},\n [EventsTableColumnId.LiftPercentage]: { isNumeric: true, isPercent: true },\n [EventsTableColumnId.ListedAtp]: { isNumeric: true, isCurrency: true },\n [EventsTableColumnId.ListedQty]: { isNumeric: true, isInteger: true },\n [EventsTableColumnId.Profit]: { isNumeric: true, isCurrency: true },\n [EventsTableColumnId.Revenue]: { isNumeric: true, isCurrency: true },\n [EventsTableColumnId.SoldCost]: { isNumeric: true, isCurrency: true },\n [EventsTableColumnId.SoldQty]: { isNumeric: true, isInteger: true },\n [EventsTableColumnId.TotalQty]: { isNumeric: true, isInteger: true },\n [EventsTableColumnId.UnsoldQty]: { isNumeric: true, isInteger: true },\n [EventsTableColumnId.UnsoldProceeds]: { isNumeric: true, isCurrency: true },\n [EventsTableColumnId.UnsoldCost]: { isNumeric: true, isCurrency: true },\n [EventsTableColumnId.TotalCost]: { isNumeric: true, isCurrency: true },\n [EventsTableColumnId.LastPriceUpdatedDate]: {\n isHiddenByDefault: true,\n isDateTime: true,\n },\n};\n\nexport const ON_SALE_EVENTS_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES: Record<\n OnSaleEventsTableColumnId,\n Partial\n> = {\n [OnSaleEventsTableColumnId.Checkbox]: { isConfigurable: false },\n [OnSaleEventsTableColumnId.Event]: {\n isHiddenByDefault: false,\n isConfigurable: false,\n isRequired: true,\n },\n [OnSaleEventsTableColumnId.Venue]: {\n isHiddenByDefault: false,\n isConfigurable: false,\n isRequired: true,\n },\n [OnSaleEventsTableColumnId.Location]: {\n isConfigurable: false,\n isRequired: true,\n },\n [OnSaleEventsTableColumnId.OnSaleDate]: {\n isDateTime: true,\n isConfigurable: true,\n isRequired: true,\n },\n [OnSaleEventsTableColumnId.RawPreSaleDate]: {\n isDateTime: true,\n isConfigurable: true,\n isHiddenByDefault: true,\n },\n [OnSaleEventsTableColumnId.Date]: {\n isDateTime: true,\n isConfigurable: true,\n isRequired: true,\n },\n [OnSaleEventsTableColumnId.ListingCount]: {\n isNumeric: true,\n isInteger: true,\n isConfigurable: true,\n },\n [OnSaleEventsTableColumnId.TicketCount]: {\n isNumeric: true,\n isInteger: true,\n isConfigurable: true,\n },\n [OnSaleEventsTableColumnId.VisitsLastHour]: {\n isNumeric: true,\n isInteger: true,\n isConfigurable: true,\n },\n [OnSaleEventsTableColumnId.VisitsLastDay]: {\n isNumeric: true,\n isInteger: true,\n isConfigurable: true,\n },\n [OnSaleEventsTableColumnId.VisitsLast7Days]: {\n isNumeric: true,\n isInteger: true,\n isConfigurable: true,\n },\n [OnSaleEventsTableColumnId.VisitsLast3Days]: {\n isNumeric: true,\n isInteger: true,\n isConfigurable: true,\n },\n [OnSaleEventsTableColumnId.TransactionsLastHour]: {\n isNumeric: true,\n isInteger: true,\n isConfigurable: true,\n },\n [OnSaleEventsTableColumnId.TransactionsLastDay]: {\n isNumeric: true,\n isInteger: true,\n isConfigurable: true,\n },\n [OnSaleEventsTableColumnId.TransactionsLast7Days]: {\n isNumeric: true,\n isInteger: true,\n isConfigurable: true,\n },\n [OnSaleEventsTableColumnId.TransactionsLast3Days]: {\n isNumeric: true,\n isInteger: true,\n isConfigurable: true,\n },\n [OnSaleEventsTableColumnId.UnitNetProceedsMin]: {\n isNumeric: true,\n isCurrency: true,\n isConfigurable: true,\n },\n [OnSaleEventsTableColumnId.UnitNetProceedsP25]: {\n isNumeric: true,\n isCurrency: true,\n isConfigurable: true,\n },\n [OnSaleEventsTableColumnId.UnitNetProceedsP50]: {\n isNumeric: true,\n isCurrency: true,\n isConfigurable: true,\n },\n [OnSaleEventsTableColumnId.Action]: {\n isConfigurable: false,\n isRequired: true,\n },\n};\n","import { Feature, ReportGroupBy } from 'src/WebApiController';\n\nimport { ColumnPersonalizationFlags } from '../columnUtils.types';\nimport {\n ListingReportTableColumnId,\n ListingTableFlattenedColumnId,\n} from './inventoryColumnUtils.types';\nimport { ListingTableColumnId } from './inventoryColumnUtils.types';\n\n/**\n * List of main columns to identify a listing\n * Used for grouping listing\n */\nexport const LISTING_MAIN_COLUMNS: ListingTableColumnId[] = [\n ListingTableColumnId.Checkbox,\n ListingTableColumnId.Seating,\n ListingTableColumnId.SeatingRow,\n ListingTableColumnId.SeatingSeats,\n ListingTableColumnId.DeliveryType,\n ListingTableColumnId.ShownQuantity,\n ListingTableColumnId.UnsoldQuantity,\n ListingTableColumnId.TicketCount,\n ListingTableColumnId.UnitCost,\n];\n\nexport const LISTING_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES: Record<\n ListingTableColumnId | ListingTableFlattenedColumnId,\n Partial\n> = {\n [ListingTableColumnId.Checkbox]: { isConfigurable: false },\n\n [ListingTableFlattenedColumnId.Event]: {\n isHiddenByDefault: false,\n // Not actually numeric, but hack for numeric pills\n isNumeric: true,\n },\n [ListingTableFlattenedColumnId.Venue]: { isHiddenByDefault: true },\n [ListingTableFlattenedColumnId.Location]: { isHiddenByDefault: true },\n [ListingTableFlattenedColumnId.EventDate]: {\n isHiddenByDefault: true,\n },\n [ListingTableColumnId.Seating]: {\n isRequired: true,\n // Not actually numeric, but hack for numeric pills\n isNumeric: true,\n },\n [ListingTableColumnId.DeliveryType]: {\n // Not actually numeric, but hack for numeric pills\n isNumeric: true,\n isEnumWithIcon: true,\n },\n [ListingTableColumnId.ShownQuantity]: {\n isNumeric: true,\n isInteger: true,\n },\n [ListingTableColumnId.SplitType]: {\n isHiddenByDefault: true,\n isRequired: false,\n requiredFeatures: [Feature.ListingTableSplitTypeColumn],\n },\n [ListingTableColumnId.UnsoldQuantity]: {\n isNumeric: true,\n isInteger: true,\n },\n [ListingTableColumnId.TicketCount]: { isNumeric: true, isInteger: true },\n // InhandDate has its own custom cell. Not supported for custom date time format options\n [ListingTableColumnId.InHandDate]: {},\n [ListingTableColumnId.UnitCost]: { isNumeric: true, isCurrency: true },\n // Numeric but may affect how custom input cells render\n // We could later have abbreviated values show, and precise when clicked\n [ListingTableColumnId.ListPrice]: { isRequired: false },\n // Numeric but may affect how custom input cells render\n // We could later have abbreviated values show, and precise when clicked\n [ListingTableColumnId.AllInPrice]: { isRequired: false },\n [ListingTableColumnId.Actions]: { isConfigurable: false, isRequired: true },\n [ListingTableColumnId.ListingId]: { isHiddenByDefault: true },\n [ListingTableColumnId.AutoPricing]: {\n isHiddenByDefault: true,\n isEditabilityConfigurable: true,\n requiredFeatures: [Feature.AutoPricing],\n },\n [ListingTableColumnId.ProceedsFloor]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isCurrency: true,\n requiredFeatures: [Feature.AutoPricing],\n },\n [ListingTableColumnId.ProceedsCeiling]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isCurrency: true,\n requiredFeatures: [Feature.AutoPricing],\n },\n [ListingTableColumnId.WebsiteFloor]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isCurrency: true,\n requiredFeatures: [Feature.AutoPricing],\n },\n [ListingTableColumnId.WebsiteCeiling]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isCurrency: true,\n requiredFeatures: [Feature.AutoPricing],\n },\n [ListingTableColumnId.UndercutMode]: {\n // Not actually numeric, but hack for numeric pills\n isNumeric: true,\n isEnumWithIcon: true,\n isHiddenByDefault: true,\n isEditabilityConfigurable: true,\n requiredFeatures: [\n Feature.AutoPricing,\n Feature.AllowSeatScoreCompListingMode,\n ],\n },\n [ListingTableColumnId.UndercutAbsoluteAmount]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isCurrency: true,\n isEditabilityConfigurable: true,\n requiredFeatures: [Feature.AutoPricing],\n },\n [ListingTableColumnId.UndercutRelativeAmount]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isPercent: true,\n isEditabilityConfigurable: true,\n requiredFeatures: [Feature.AutoPricing],\n },\n [ListingTableColumnId.UndercutNewPrice]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isCurrency: true,\n requiredFeatures: [Feature.AutoPricing],\n },\n [ListingTableColumnId.CompListingMode]: {\n // Not actually numeric, but hack for numeric pills\n isNumeric: true,\n isEnumWithIcon: true,\n isHiddenByDefault: true,\n isEditabilityConfigurable: true,\n requiredFeatures: [Feature.AutoPricing],\n },\n [ListingTableColumnId.CompListingFloor]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isEditabilityConfigurable: true,\n requiredFeatures: [\n Feature.AutoPricing,\n Feature.AllowSeatScoreCompListingMode,\n ],\n },\n [ListingTableColumnId.CompListingCeiling]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isEditabilityConfigurable: true,\n requiredFeatures: [\n Feature.AutoPricing,\n Feature.AllowSeatScoreCompListingMode,\n ],\n },\n [ListingTableColumnId.CompListingMinimumQuantity]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isEditabilityConfigurable: true,\n requiredFeatures: [Feature.AutoPricing, Feature.PricingSettingsInTable],\n },\n [ListingTableColumnId.CompListingExcludeFanInventory]: {\n isHiddenByDefault: true,\n isEditabilityConfigurable: true,\n requiredFeatures: [\n Feature.AutoPricing,\n Feature.ExcludeFanInventory,\n Feature.PricingSettingsInTable,\n ],\n },\n [ListingTableColumnId.OutlierMode]: {\n isHiddenByDefault: true,\n isEditabilityConfigurable: true,\n requiredFeatures: [Feature.AutoPricing, Feature.PricingSettingsInTable],\n },\n [ListingTableColumnId.OutlierFiltering]: {\n isHiddenByDefault: true,\n isEditabilityConfigurable: true,\n requiredFeatures: [Feature.AutoPricing, Feature.PricingSettingsInTable],\n },\n [ListingTableColumnId.OutlierLimit]: {\n isHiddenByDefault: true,\n isEditabilityConfigurable: true,\n requiredFeatures: [Feature.AutoPricing, Feature.PricingSettingsInTable],\n },\n [ListingTableColumnId.OutlierSpacing]: {\n isHiddenByDefault: true,\n isEditabilityConfigurable: true,\n requiredFeatures: [Feature.AutoPricing, Feature.PricingSettingsInTable],\n },\n [ListingTableColumnId.CircuitBreakerMinCompListingCount]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isEditabilityConfigurable: true,\n requiredFeatures: [\n Feature.AutoPricing,\n Feature.PricingSettingsInTable,\n Feature.AllowSeatScoreCompListingMode,\n ],\n },\n [ListingTableColumnId.CircuitBreakerVelocity]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isEditabilityConfigurable: true,\n requiredFeatures: [\n Feature.AutoPricing,\n Feature.PricingSettingsInTable,\n Feature.AllowSeatScoreCompListingMode,\n ],\n },\n [ListingTableColumnId.CircuitBreakerVelocityHours]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isEditabilityConfigurable: true,\n requiredFeatures: [\n Feature.AutoPricing,\n Feature.PricingSettingsInTable,\n Feature.AllowSeatScoreCompListingMode,\n ],\n },\n [ListingTableColumnId.SeatingRow]: { isHiddenByDefault: true },\n [ListingTableColumnId.SeatingSeats]: {\n isHiddenByDefault: true,\n // Not actually numeric, but hack for numeric pills\n isNumeric: true,\n },\n [ListingTableColumnId.AutoPricingResultType]: {\n isHiddenByDefault: true,\n requiredFeatures: [Feature.AutoPricing],\n },\n [ListingTableColumnId.LastPriceUpdatedDate]: {\n isHiddenByDefault: true,\n isDateTime: true,\n },\n [ListingTableColumnId.WastedCost]: {\n isNumeric: true,\n isCurrency: true,\n isHiddenByDefault: true,\n },\n [ListingTableColumnId.WastedTickets]: {\n isNumeric: true,\n isInteger: true,\n isHiddenByDefault: true,\n },\n [ListingTableColumnId.PurchaseId]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isInteger: true,\n },\n [ListingTableColumnId.VendorAccount]: {\n isHiddenByDefault: true,\n },\n [ListingTableColumnId.AutoFulfill]: {\n isHiddenByDefault: true,\n requiredFeatures: [Feature.AutoFulfillSetting],\n },\n [ListingTableColumnId.MarketplaceVisibility]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isPercent: true,\n },\n [ListingTableColumnId.PurchaseCreatedBy]: {\n isHiddenByDefault: true,\n },\n [ListingTableColumnId.PurchasedBy]: {\n isHiddenByDefault: true,\n },\n [ListingTableColumnId.PurchaseDate]: {\n isHiddenByDefault: true,\n isDateTime: true,\n },\n [ListingTableColumnId.RelativeRankPremium]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isPercent: true,\n requiredFeatures: [Feature.UndercutByRankListingGroup],\n },\n [ListingTableColumnId.AbsoluteRankPremium]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isCurrency: true,\n requiredFeatures: [Feature.UndercutByRankListingGroup],\n },\n [ListingTableColumnId.TicketClassColor]: {\n isHiddenByDefault: false,\n },\n [ListingTableColumnId.UnsoldProceeds]: {\n isNumeric: true,\n isCurrency: true,\n isHiddenByDefault: true,\n },\n [ListingTableColumnId.UnsoldCost]: {\n isNumeric: true,\n isCurrency: true,\n isHiddenByDefault: true,\n },\n [ListingTableColumnId.SoldQty]: {\n isNumeric: true,\n isInteger: true,\n isHiddenByDefault: true,\n },\n [ListingTableColumnId.SoldCost]: {\n isNumeric: true,\n isCurrency: true,\n isHiddenByDefault: true,\n },\n [ListingTableColumnId.TotalCost]: {\n isNumeric: true,\n isCurrency: true,\n isHiddenByDefault: true,\n },\n [ListingTableColumnId.SeatTraits]: {\n isHiddenByDefault: true,\n requiredFeatures: [Feature.SeatTraitsColumn],\n },\n} as const;\n\nexport const LISTING_REPORT_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES: Record<\n ListingReportTableColumnId,\n Partial\n> = {\n // These can be primary columns for grouping. The flag 'isRequired' will be determined at run time\n [ListingReportTableColumnId.ListingId]: { isHiddenByDefault: true },\n [ListingReportTableColumnId.Performer]: { isHiddenByDefault: true },\n [ListingReportTableColumnId.Venue]: { isHiddenByDefault: true },\n [ListingReportTableColumnId.EventGenre]: { isHiddenByDefault: true },\n [ListingReportTableColumnId.EventCity]: { isHiddenByDefault: true },\n [ListingReportTableColumnId.Event]: { isHiddenByDefault: true },\n [ListingReportTableColumnId.EventCountry]: { isHiddenByDefault: true },\n [ListingReportTableColumnId.SeatingSection]: { isHiddenByDefault: true },\n [ListingReportTableColumnId.SeatingRow]: { isHiddenByDefault: true },\n\n [ListingReportTableColumnId.UnsoldQuantity]: {\n ...LISTING_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n ListingTableColumnId.UnsoldQuantity\n ],\n isHiddenByDefault: true,\n isRequired: false,\n },\n [ListingReportTableColumnId.TicketCount]: {\n ...LISTING_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n ListingTableColumnId.TicketCount\n ],\n isHiddenByDefault: true,\n isRequired: false,\n },\n [ListingReportTableColumnId.SoldQuantity]: {\n isNumeric: true,\n isInteger: true,\n isHiddenByDefault: true,\n isRequired: false,\n },\n [ListingReportTableColumnId.UnitCost]: {\n ...LISTING_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n ListingTableColumnId.UnitCost\n ],\n isHiddenByDefault: true,\n isRequired: false,\n },\n [ListingReportTableColumnId.SoldCost]: {\n isNumeric: true,\n isCurrency: true,\n isHiddenByDefault: true,\n isRequired: false,\n },\n [ListingReportTableColumnId.UnsoldCost]: {\n isNumeric: true,\n isCurrency: true,\n isHiddenByDefault: true,\n isRequired: false,\n },\n [ListingReportTableColumnId.SoldProceeds]: {\n isNumeric: true,\n isCurrency: true,\n isHiddenByDefault: true,\n isRequired: false,\n },\n [ListingReportTableColumnId.ListPrice]: {\n isNumeric: true,\n isCurrency: true,\n isHiddenByDefault: true,\n isRequired: false,\n },\n [ListingReportTableColumnId.AllInPrice]: {\n isNumeric: true,\n isCurrency: true,\n isHiddenByDefault: true,\n isRequired: false,\n },\n [ListingReportTableColumnId.EventId]: {\n // This can be a number but shoudln't be treated as a number (precision etc.)\n isNumeric: false,\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.Category]: {\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.EventDate]: {\n isDateTime: true,\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.EventStateProvince]: {\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.SaleId]: {\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.HoldId]: {\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.SeatingSeats]: {\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.DeliveryType]: {\n ...LISTING_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n ListingTableColumnId.DeliveryType\n ],\n isHiddenByDefault: true,\n isRequired: false,\n },\n [ListingReportTableColumnId.InHandDate]: {\n ...LISTING_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n ListingTableColumnId.InHandDate\n ],\n isHiddenByDefault: true,\n isRequired: false,\n },\n [ListingReportTableColumnId.PurchaseId]: {\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.PurchasedBy]: {\n ...LISTING_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n ListingTableColumnId.PurchasedBy\n ],\n requiredFeatures: [],\n },\n [ListingReportTableColumnId.PurchaseDate]: {\n isHiddenByDefault: true,\n isDateTime: true,\n },\n [ListingReportTableColumnId.PurchaseCreatedBy]: {\n ...LISTING_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n ListingTableColumnId.PurchaseCreatedBy\n ],\n },\n [ListingReportTableColumnId.Vendor]: {\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.SalePaymentState]: {\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.PurchasePaymentStatus]: {\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.Charges]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isCurrency: true,\n },\n [ListingReportTableColumnId.Credits]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isCurrency: true,\n },\n [ListingReportTableColumnId.Fulfiller]: {\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.PaymentMethodType]: {\n // Not actually numeric, but hack for numeric pills\n isNumeric: true,\n isEnumWithIcon: true,\n isHiddenByDefault: true,\n isRequired: false,\n },\n [ListingReportTableColumnId.Zone]: {\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.PricedBy]: {\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.InternalNotes]: {\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.InternalNotesPurchase]: {\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.VendorOrderId]: {\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.VendorAccountEmail]: {\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.CancellationDatePurchase]: {\n isDateTime: true,\n isHiddenByDefault: true,\n },\n [ListingReportTableColumnId.PandL]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isCurrency: true,\n },\n [ListingReportTableColumnId.Margin]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isPercent: true,\n },\n} as const;\n\n/**\n * These columns must show up when a group by is applied\n */\nexport const GROUP_BY_TO_PRIMARY_COLUMN_ID: Record<\n string,\n ListingReportTableColumnId\n> = {\n [ReportGroupBy.Performer]: ListingReportTableColumnId.Performer,\n [ReportGroupBy.Venue]: ListingReportTableColumnId.Venue,\n [ReportGroupBy.Event]: ListingReportTableColumnId.Event,\n [ReportGroupBy.EventGenre]: ListingReportTableColumnId.EventGenre,\n [ReportGroupBy.EventCountry]: ListingReportTableColumnId.EventCountry,\n [ReportGroupBy.EventCity]: ListingReportTableColumnId.EventCity,\n [ReportGroupBy.SeatingSection]: ListingReportTableColumnId.SeatingSection,\n [ReportGroupBy.SeatingRow]: ListingReportTableColumnId.SeatingRow,\n [ReportGroupBy.ListingId]: ListingReportTableColumnId.ListingId,\n [ReportGroupBy.PurchaseId]: ListingReportTableColumnId.PurchaseId,\n [ReportGroupBy.PricedBy]: ListingReportTableColumnId.PricedBy,\n [ReportGroupBy.Vendor]: ListingReportTableColumnId.Vendor,\n [ReportGroupBy.PurchasedBy]: ListingReportTableColumnId.PurchasedBy,\n [ReportGroupBy.FulfilledBy]: ListingReportTableColumnId.Fulfiller,\n};\n\nexport const NON_METRIC_LISTING_REPORT_TABLE_COLUMN_IDS: ListingReportTableColumnId[] =\n [\n ListingReportTableColumnId.Event,\n ListingReportTableColumnId.EventGenre,\n ListingReportTableColumnId.EventCountry,\n ListingReportTableColumnId.EventCity,\n ListingReportTableColumnId.SeatingSection,\n ListingReportTableColumnId.SeatingRow,\n ListingReportTableColumnId.Performer,\n ListingReportTableColumnId.Venue,\n ListingReportTableColumnId.EventId,\n ListingReportTableColumnId.Category,\n ListingReportTableColumnId.EventDate,\n ListingReportTableColumnId.EventStateProvince,\n ListingReportTableColumnId.ListingId,\n ListingReportTableColumnId.SaleId,\n ListingReportTableColumnId.HoldId,\n ListingReportTableColumnId.SeatingSeats,\n ListingReportTableColumnId.DeliveryType,\n ListingReportTableColumnId.InHandDate,\n ListingReportTableColumnId.PurchaseId,\n ListingReportTableColumnId.PurchasedBy,\n ListingReportTableColumnId.PurchaseDate,\n ListingReportTableColumnId.PurchaseCreatedBy,\n ListingReportTableColumnId.PricedBy,\n ListingReportTableColumnId.Vendor,\n ListingReportTableColumnId.SalePaymentState,\n ListingReportTableColumnId.Charges,\n ListingReportTableColumnId.Credits,\n ListingReportTableColumnId.Fulfiller,\n ListingReportTableColumnId.PaymentMethodType,\n ListingReportTableColumnId.PurchasePaymentStatus,\n ListingReportTableColumnId.Zone,\n ListingReportTableColumnId.InternalNotes,\n ListingReportTableColumnId.InternalNotesPurchase,\n ListingReportTableColumnId.VendorOrderId,\n ListingReportTableColumnId.VendorAccountEmail,\n ListingReportTableColumnId.CancellationDatePurchase,\n ];\n\n/**\n * These columns from NON_METRIC_LISTING_REPORT_TABLE_COLUMN_IDS\n * can only show up when a group by is applied (but GROUP_BY_TO_PRIMARY_COLUMN_ID takes precedence)\n */\nexport const GROUP_BY_TO_VISIBLE_COLUMN_IDS: Record<\n string,\n ListingReportTableColumnId[]\n> = {\n [ReportGroupBy.Event]: [\n ListingReportTableColumnId.Performer,\n ListingReportTableColumnId.Venue,\n ListingReportTableColumnId.EventGenre,\n ListingReportTableColumnId.EventCity,\n ListingReportTableColumnId.EventId,\n ListingReportTableColumnId.Category,\n ListingReportTableColumnId.EventDate,\n ListingReportTableColumnId.EventStateProvince,\n ],\n [ReportGroupBy.Performer]: [ListingReportTableColumnId.Category],\n [ReportGroupBy.SeatingRow]: [\n // Don't make this available until we get the data right - see notes on https://thestubhub.atlassian.net/browse/POS-3430\n // ListingReportTableColumnId.Zone\n ],\n [ReportGroupBy.ListingId]: [\n ListingReportTableColumnId.Event,\n ListingReportTableColumnId.EventCountry,\n ListingReportTableColumnId.EventCity,\n ListingReportTableColumnId.SeatingSection,\n ListingReportTableColumnId.SeatingRow,\n ListingReportTableColumnId.Performer,\n ListingReportTableColumnId.Venue,\n ListingReportTableColumnId.EventId,\n ListingReportTableColumnId.Category,\n ListingReportTableColumnId.EventDate,\n ListingReportTableColumnId.EventStateProvince,\n ListingReportTableColumnId.SaleId,\n ListingReportTableColumnId.HoldId,\n ListingReportTableColumnId.SeatingSeats,\n ListingReportTableColumnId.SeatingSeats,\n ListingReportTableColumnId.DeliveryType,\n ListingReportTableColumnId.PurchaseId,\n ListingReportTableColumnId.PurchasedBy,\n ListingReportTableColumnId.PurchaseDate,\n ListingReportTableColumnId.Vendor,\n ListingReportTableColumnId.SalePaymentState,\n ListingReportTableColumnId.Charges,\n ListingReportTableColumnId.Credits,\n ListingReportTableColumnId.EventStateProvince,\n ListingReportTableColumnId.Fulfiller,\n ListingReportTableColumnId.InHandDate,\n ListingReportTableColumnId.InternalNotes,\n ListingReportTableColumnId.VendorOrderId,\n ListingReportTableColumnId.VendorAccountEmail,\n ListingReportTableColumnId.CancellationDatePurchase,\n ListingReportTableColumnId.PurchaseCreatedBy,\n // Don't make this available until we get the data right - see notes on https://thestubhub.atlassian.net/browse/POS-3430\n // ListingReportTableColumnId.Zone,\n ],\n [ReportGroupBy.PurchaseId]: [\n ListingReportTableColumnId.DeliveryType,\n ListingReportTableColumnId.PurchasedBy,\n ListingReportTableColumnId.PurchaseDate,\n ListingReportTableColumnId.Vendor,\n ListingReportTableColumnId.PurchasePaymentStatus,\n ListingReportTableColumnId.Charges,\n ListingReportTableColumnId.Credits,\n ListingReportTableColumnId.PaymentMethodType,\n ListingReportTableColumnId.InternalNotesPurchase,\n ListingReportTableColumnId.VendorOrderId,\n ListingReportTableColumnId.VendorAccountEmail,\n ListingReportTableColumnId.CancellationDatePurchase,\n ListingReportTableColumnId.PurchaseCreatedBy,\n ],\n};\n\nexport const LISTING_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG: Partial =\n {\n isHiddenByDefault: true,\n isNumeric: true,\n };\n","export enum MarketplacePaymentsTableColumnId {\n PaymentDate = 'paymentDate',\n PaymentReferenceID = 'paymentReferenceID',\n State = 'state',\n PaymentAmount = 'paymentAmount',\n CreditAmount = 'creditAmount',\n ChargeAmount = 'chargeAmount',\n ProceedsAmount = 'proceedsAmount',\n Marketplace = 'marketplace',\n ConvertedPaymentsAmount = 'convertedPaymentAmount',\n Actions = 'actions',\n}\n","import { MarketplacePaymentsTableColumnId } from 'src/utils/columns/marketplacePayments/marketplacePaymentsColumnsUtils.types';\nimport { Feature } from 'src/WebApiController';\n\nimport { ColumnPersonalizationFlags } from '../columnUtils.types';\n\nexport const PAYMENTS_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES: Record<\n MarketplacePaymentsTableColumnId,\n Partial\n> = {\n [MarketplacePaymentsTableColumnId.PaymentReferenceID]: {},\n [MarketplacePaymentsTableColumnId.PaymentAmount]: {},\n [MarketplacePaymentsTableColumnId.PaymentDate]: {},\n [MarketplacePaymentsTableColumnId.State]: {},\n [MarketplacePaymentsTableColumnId.CreditAmount]: {},\n [MarketplacePaymentsTableColumnId.ProceedsAmount]: {},\n [MarketplacePaymentsTableColumnId.ChargeAmount]: {},\n [MarketplacePaymentsTableColumnId.Marketplace]: {},\n [MarketplacePaymentsTableColumnId.ConvertedPaymentsAmount]: {\n requiredFeatures: [Feature.MarketplacePaymentConversion],\n },\n [MarketplacePaymentsTableColumnId.Actions]: {\n isConfigurable: false,\n isRequired: true,\n },\n};\n\nexport const PAYMENTS_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG: Partial =\n {\n isHiddenByDefault: true,\n isNumeric: true,\n };\n","import { PurchasesTableColumnId } from 'src/utils/columns/purchases/purchasesColumnUtils.types';\nimport { Feature, PurchaseViewMode } from 'src/WebApiController';\n\nimport { ColumnPersonalizationFlags } from '../columnUtils.types';\n\nexport const PURCHASES_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES: Record<\n PurchasesTableColumnId,\n Partial\n> = {\n [PurchasesTableColumnId.BuyerUserId]: {},\n [PurchasesTableColumnId.Checkbox]: {\n isHiddenByDefault: true,\n isConfigurable: false,\n },\n [PurchasesTableColumnId.AccordianToggle]: {\n visibleViewModes: [PurchaseViewMode.TileView],\n isConfigurable: false,\n },\n [PurchasesTableColumnId.PurchaseDate]: { isDateTime: true },\n [PurchasesTableColumnId.VendorOrderId]: { isRequired: true },\n [PurchasesTableColumnId.Id]: { isHiddenByDefault: true },\n [PurchasesTableColumnId.Payment]: {},\n [PurchasesTableColumnId.PaymentStatus]: {},\n [PurchasesTableColumnId.QualityControlState]: {},\n [PurchasesTableColumnId.TotalCost]: {},\n [PurchasesTableColumnId.UnitCost]: {},\n [PurchasesTableColumnId.Tickets]: {},\n [PurchasesTableColumnId.Orders]: {},\n [PurchasesTableColumnId.Shipment]: {},\n [PurchasesTableColumnId.Cost]: {},\n [PurchasesTableColumnId.Actions]: { isConfigurable: false, isRequired: true },\n [PurchasesTableColumnId.VendorAccountEmail]: { isHiddenByDefault: true },\n [PurchasesTableColumnId.CreatedBy]: { isHiddenByDefault: true },\n [PurchasesTableColumnId.Event]: {\n isHiddenByDefault: true,\n visibleViewModes: [PurchaseViewMode.TileView],\n },\n [PurchasesTableColumnId.Venue]: {\n isHiddenByDefault: true,\n visibleViewModes: [PurchaseViewMode.TileView],\n },\n [PurchasesTableColumnId.EventDate]: {\n isHiddenByDefault: true,\n visibleViewModes: [PurchaseViewMode.TileView],\n },\n [PurchasesTableColumnId.Seating]: {\n isHiddenByDefault: true,\n isNumeric: true, // Not actually numeric, but hack for numeric pills\n visibleViewModes: [\n PurchaseViewMode.TileView,\n PurchaseViewMode.EventTileView,\n ],\n },\n [PurchasesTableColumnId.Row]: {\n isHiddenByDefault: true,\n visibleViewModes: [\n PurchaseViewMode.TileView,\n PurchaseViewMode.EventTileView,\n ],\n requiredFeatures: [Feature.RowSeatColumnSalePurchase],\n },\n [PurchasesTableColumnId.Seats]: {\n isHiddenByDefault: true,\n visibleViewModes: [\n PurchaseViewMode.TileView,\n PurchaseViewMode.EventTileView,\n ],\n requiredFeatures: [Feature.RowSeatColumnSalePurchase],\n },\n [PurchasesTableColumnId.SeatTraits]: {\n isHiddenByDefault: true,\n visibleViewModes: [\n PurchaseViewMode.TileView,\n PurchaseViewMode.EventTileView,\n ],\n requiredFeatures: [Feature.SeatTraitsColumn],\n },\n [PurchasesTableColumnId.TotalPayment]: {\n isHiddenByDefault: true,\n visibleViewModes: [\n PurchaseViewMode.TileView,\n PurchaseViewMode.FlattenedView,\n ],\n requiredFeatures: [Feature.PurchasePaymentColumns],\n },\n [PurchasesTableColumnId.TotalConvertedPayment]: {\n isHiddenByDefault: true,\n visibleViewModes: [\n PurchaseViewMode.TileView,\n PurchaseViewMode.FlattenedView,\n ],\n requiredFeatures: [Feature.PurchasePaymentColumns],\n },\n [PurchasesTableColumnId.PaymentConversionRate]: {\n isHiddenByDefault: true,\n visibleViewModes: [\n PurchaseViewMode.TileView,\n PurchaseViewMode.FlattenedView,\n ],\n requiredFeatures: [Feature.PurchasePaymentColumns],\n },\n [PurchasesTableColumnId.Commissions]: {\n isHiddenByDefault: true,\n visibleViewModes: [\n PurchaseViewMode.TileView,\n PurchaseViewMode.FlattenedView,\n ],\n },\n};\n\nexport const PURCHASES_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG: Partial =\n {\n isHiddenByDefault: true,\n isNumeric: true,\n };\n","import { Feature } from 'src/WebApiController';\n\nimport { ColumnPersonalizationFlags } from '../columnUtils.types';\nimport {\n SalesTableColumnId,\n SalesTableFlattenedColumnId,\n} from './salesColumnUtils.types';\n\nexport const SALE_MAIN_COLUMNS: SalesTableColumnId[] = [\n SalesTableColumnId.Checkbox,\n SalesTableColumnId.Seating,\n SalesTableColumnId.QuantitySold,\n SalesTableColumnId.OrderDate,\n SalesTableColumnId.InHandDate,\n SalesTableColumnId.Status,\n SalesTableColumnId.TicketType,\n SalesTableColumnId.Proceeds,\n SalesTableColumnId.Sale,\n];\n\nexport const SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES: Record<\n SalesTableColumnId | SalesTableFlattenedColumnId,\n Partial\n> = {\n [SalesTableColumnId.Checkbox]: { isConfigurable: false },\n\n [SalesTableFlattenedColumnId.Event]: {\n isHiddenByDefault: false,\n // Not actually numeric, but hack for numeric pills\n isNumeric: true,\n },\n [SalesTableFlattenedColumnId.EventDate]: { isHiddenByDefault: true },\n [SalesTableFlattenedColumnId.Venue]: { isHiddenByDefault: true },\n [SalesTableFlattenedColumnId.Location]: { isHiddenByDefault: true },\n\n [SalesTableColumnId.Actions]: { isConfigurable: false, isRequired: true },\n [SalesTableColumnId.InHandDate]: {},\n [SalesTableColumnId.OrderDate]: { isDateTime: true },\n [SalesTableColumnId.Proceeds]: { isNumeric: true, isCurrency: true },\n [SalesTableColumnId.QuantitySold]: { isNumeric: true, isInteger: true },\n [SalesTableColumnId.Sale]: {},\n [SalesTableColumnId.Seating]: { isNumeric: true, isRequired: true },\n [SalesTableColumnId.Row]: {\n requiredFeatures: [Feature.RowSeatColumnSalePurchase],\n },\n [SalesTableColumnId.Seats]: {\n requiredFeatures: [Feature.RowSeatColumnSalePurchase],\n },\n [SalesTableColumnId.Status]: {\n // Not actually numeric, but hack for numeric pills\n isNumeric: true,\n isEnumWithIcon: true,\n },\n [SalesTableColumnId.TicketType]: {\n // Not actually numeric, but hack for numeric pills\n isNumeric: true,\n isEnumWithIcon: true,\n },\n [SalesTableColumnId.SoldTicketCost]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isCurrency: true,\n },\n [SalesTableColumnId.Charges]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isCurrency: true,\n },\n [SalesTableColumnId.Credits]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isCurrency: true,\n },\n [SalesTableColumnId.PandL]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isCurrency: true,\n },\n [SalesTableColumnId.Margin]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isPercent: true,\n },\n [SalesTableColumnId.AutoFulfill]: {\n isHiddenByDefault: true,\n requiredFeatures: [Feature.AutoFulfillSetting],\n },\n [SalesTableColumnId.PaymentState]: {\n isHiddenByDefault: true,\n },\n [SalesTableColumnId.PaymentReceived]: {\n isHiddenByDefault: true,\n },\n [SalesTableColumnId.PaymentReferenceId]: {\n isHiddenByDefault: true,\n },\n [SalesTableColumnId.FulfillmentDate]: {\n isDateTime: true,\n isHiddenByDefault: true,\n },\n [SalesTableColumnId.PurchaseCreatedBy]: {\n isHiddenByDefault: true,\n },\n [SalesTableColumnId.PurchasedBy]: {\n isHiddenByDefault: true,\n },\n [SalesTableColumnId.PurchaseDate]: {\n isHiddenByDefault: true,\n isDateTime: true,\n },\n [SalesTableColumnId.VendorOrderId]: {\n isHiddenByDefault: true,\n },\n [SalesTableColumnId.VendorAccountEmail]: {\n isHiddenByDefault: true,\n },\n [SalesTableColumnId.OriginatedBy]: {\n isHiddenByDefault: true,\n },\n [SalesTableColumnId.TotalPaymentsAmount]: {\n isHiddenByDefault: true,\n requiredFeatures: [Feature.MarketplacePaymentConversion],\n },\n [SalesTableColumnId.TotalConvertedPaymentsAmount]: {\n isHiddenByDefault: true,\n requiredFeatures: [Feature.MarketplacePaymentConversion],\n },\n [SalesTableColumnId.WastedQuantity]: {\n isHiddenByDefault: true,\n requiredFeatures: [Feature.WasteSale],\n },\n} as const;\n","import { ReportGroupBy } from 'src/WebApiController';\n\nimport { ColumnPersonalizationFlags } from '../columnUtils.types';\nimport { SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES } from './salesColumnUtils.constants';\nimport {\n SalesReportTableColumnId,\n SalesTableColumnId,\n} from './salesColumnUtils.types';\n\nexport const SALE_REPORT_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES: Record<\n SalesReportTableColumnId,\n Partial\n> = {\n // These can be primary columns for grouping. The flag 'isRequired' will be determined at run time\n\n [SalesReportTableColumnId.SaleMonth]: { isHiddenByDefault: true },\n [SalesReportTableColumnId.SaleWeek]: { isHiddenByDefault: true },\n [SalesReportTableColumnId.SaleDay]: { isHiddenByDefault: true },\n [SalesReportTableColumnId.Performer]: { isHiddenByDefault: true },\n [SalesReportTableColumnId.Venue]: { isHiddenByDefault: true },\n [SalesReportTableColumnId.EventGenre]: { isHiddenByDefault: true },\n [SalesReportTableColumnId.EventCity]: { isHiddenByDefault: true },\n [SalesReportTableColumnId.Event]: { isHiddenByDefault: true },\n [SalesReportTableColumnId.EventCountry]: { isHiddenByDefault: true },\n [SalesReportTableColumnId.SeatingSection]: { isHiddenByDefault: true },\n [SalesReportTableColumnId.SeatingRow]: { isHiddenByDefault: true },\n [SalesReportTableColumnId.SaleMarketplace]: { isHiddenByDefault: true },\n [SalesReportTableColumnId.MarketplacePaymentTerms]: {\n isHiddenByDefault: true,\n },\n\n [SalesReportTableColumnId.QuantitySold]: {\n ...SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n SalesTableColumnId.QuantitySold\n ],\n isHiddenByDefault: true,\n isRequired: false,\n },\n [SalesReportTableColumnId.Proceeds]: {\n ...SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n SalesTableColumnId.Proceeds\n ],\n isHiddenByDefault: true,\n isRequired: false,\n },\n [SalesReportTableColumnId.SoldTicketCost]: {\n ...SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n SalesTableColumnId.SoldTicketCost\n ],\n },\n [SalesReportTableColumnId.Charges]: {\n ...SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n SalesTableColumnId.Charges\n ],\n },\n [SalesReportTableColumnId.Credits]: {\n ...SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n SalesTableColumnId.Credits\n ],\n },\n\n [SalesReportTableColumnId.EventId]: {\n // This can be a number but shoudln't be treated as a number (precision etc.)\n isNumeric: false,\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.Category]: {\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.EventDate]: {\n isDateTime: true,\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.EventStateProvince]: {\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.SaleId]: {\n // This can be a number but shoudln't be treated as a number (precision etc.)\n isNumeric: false,\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.MarketplaceSaleId]: {\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.Status]: {\n ...SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n SalesTableColumnId.Status\n ],\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.TicketType]: {\n ...SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n SalesTableColumnId.TicketType\n ],\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.InHandDate]: {\n ...SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n SalesTableColumnId.InHandDate\n ],\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.Fulfiller]: {\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.PurchaseId]: {\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.PurchasedBy]: {\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.PurchaseDate]: {\n isHiddenByDefault: true,\n isDateTime: true,\n },\n [SalesReportTableColumnId.Vendor]: {\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.SeatingSeats]: {\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.PricedBy]: {\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.OrderDate]: {\n ...SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n SalesTableColumnId.OrderDate\n ],\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.CurrencyCode]: {\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.PaymentDate]: {\n isDateTime: true,\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.VendorAccountEmail]: {\n ...SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n SalesTableColumnId.VendorAccountEmail\n ],\n },\n [SalesReportTableColumnId.InternalNotes]: {\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.CancellationDate]: {\n isDateTime: true,\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.OutstandingBalance]: {\n isHiddenByDefault: true,\n isNumeric: true,\n isCurrency: true,\n },\n [SalesReportTableColumnId.PandL]: {\n ...SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n SalesTableColumnId.PandL\n ],\n },\n [SalesReportTableColumnId.Margin]: {\n ...SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n SalesTableColumnId.Margin\n ],\n },\n [SalesReportTableColumnId.PaymentState]: {\n ...SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n SalesTableColumnId.PaymentState\n ],\n requiredFeatures: [],\n },\n [SalesReportTableColumnId.PaymentReceived]: {\n ...SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n SalesTableColumnId.PaymentReceived\n ],\n },\n [SalesReportTableColumnId.PaymentReferenceId]: {\n ...SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n SalesTableColumnId.PaymentReferenceId\n ],\n },\n [SalesReportTableColumnId.FulfillmentDate]: {\n ...SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n SalesTableColumnId.FulfillmentDate\n ],\n requiredFeatures: [],\n },\n [SalesReportTableColumnId.PurchaseCreatedBy]: {\n ...SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n SalesTableColumnId.PurchaseCreatedBy\n ],\n },\n [SalesReportTableColumnId.TicketId]: {\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.TicketGroupId]: {\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.CommissionUser]: {\n isHiddenByDefault: true,\n },\n [SalesReportTableColumnId.CommissionPercent]: {\n isHiddenByDefault: true,\n isPercent: true,\n },\n [SalesReportTableColumnId.CommissionShare]: {\n isHiddenByDefault: true,\n isCurrency: true,\n },\n} as const;\n\n/**\n * These columns must show up when a group by is applied\n */\nexport const GROUP_BY_TO_PRIMARY_COLUMN_ID: Record<\n string,\n SalesReportTableColumnId\n> = {\n [ReportGroupBy.Performer]: SalesReportTableColumnId.Performer,\n [ReportGroupBy.Venue]: SalesReportTableColumnId.Venue,\n [ReportGroupBy.Event]: SalesReportTableColumnId.Event,\n [ReportGroupBy.EventGenre]: SalesReportTableColumnId.EventGenre,\n [ReportGroupBy.EventCountry]: SalesReportTableColumnId.EventCountry,\n [ReportGroupBy.EventCity]: SalesReportTableColumnId.EventCity,\n [ReportGroupBy.SeatingSection]: SalesReportTableColumnId.SeatingSection,\n [ReportGroupBy.SeatingRow]: SalesReportTableColumnId.SeatingRow,\n [ReportGroupBy.SaleMarketplace]: SalesReportTableColumnId.SaleMarketplace,\n [ReportGroupBy.SaleMonth]: SalesReportTableColumnId.SaleMonth,\n [ReportGroupBy.SaleWeek]: SalesReportTableColumnId.SaleWeek,\n [ReportGroupBy.SaleDay]: SalesReportTableColumnId.SaleDay,\n [ReportGroupBy.SaleId]: SalesReportTableColumnId.SaleId,\n [ReportGroupBy.PricedBy]: SalesReportTableColumnId.PricedBy,\n [ReportGroupBy.Vendor]: SalesReportTableColumnId.Vendor,\n [ReportGroupBy.PurchasedBy]: SalesReportTableColumnId.PurchasedBy,\n [ReportGroupBy.FulfilledBy]: SalesReportTableColumnId.Fulfiller,\n [ReportGroupBy.SaleIdTicketIdCommissionUser]: SalesReportTableColumnId.SaleId,\n};\n\nexport const NON_METRIC_SALES_REPORT_TABLE_COLUMN_IDS: SalesReportTableColumnId[] =\n [\n SalesReportTableColumnId.Event,\n SalesReportTableColumnId.EventGenre,\n SalesReportTableColumnId.EventCountry,\n SalesReportTableColumnId.EventCity,\n SalesReportTableColumnId.SeatingSection,\n SalesReportTableColumnId.SeatingRow,\n SalesReportTableColumnId.Performer,\n SalesReportTableColumnId.Venue,\n SalesReportTableColumnId.EventId,\n SalesReportTableColumnId.Category,\n SalesReportTableColumnId.EventDate,\n SalesReportTableColumnId.EventStateProvince,\n SalesReportTableColumnId.SaleMarketplace,\n SalesReportTableColumnId.SaleMonth,\n SalesReportTableColumnId.SaleWeek,\n SalesReportTableColumnId.SaleDay,\n SalesReportTableColumnId.SaleId,\n SalesReportTableColumnId.MarketplaceSaleId,\n SalesReportTableColumnId.Status,\n SalesReportTableColumnId.TicketType,\n SalesReportTableColumnId.InHandDate,\n SalesReportTableColumnId.PaymentState,\n SalesReportTableColumnId.PricedBy,\n SalesReportTableColumnId.Fulfiller,\n SalesReportTableColumnId.PurchaseId,\n SalesReportTableColumnId.PurchasedBy,\n SalesReportTableColumnId.PurchaseDate,\n SalesReportTableColumnId.Vendor,\n SalesReportTableColumnId.SeatingSeats,\n SalesReportTableColumnId.OrderDate,\n SalesReportTableColumnId.CurrencyCode,\n SalesReportTableColumnId.PaymentDate,\n SalesReportTableColumnId.FulfillmentDate,\n SalesReportTableColumnId.VendorAccountEmail,\n SalesReportTableColumnId.InternalNotes,\n SalesReportTableColumnId.CancellationDate,\n SalesReportTableColumnId.PurchaseCreatedBy,\n SalesReportTableColumnId.TicketId,\n SalesReportTableColumnId.TicketGroupId,\n SalesReportTableColumnId.CommissionUser,\n SalesReportTableColumnId.CommissionPercent,\n SalesReportTableColumnId.CommissionShare,\n SalesReportTableColumnId.MarketplacePaymentTerms,\n ];\n\n/**\n * These columns from NON_METRIC_SALES_REPORT_TABLE_COLUMN_IDS\n * can only show up when a group by is applied (but GROUP_BY_TO_PRIMARY_COLUMN_ID takes precedence)\n */\nexport const GROUP_BY_TO_VISIBLE_COLUMN_IDS: Record<\n string,\n SalesReportTableColumnId[]\n> = {\n [ReportGroupBy.Event]: [\n SalesReportTableColumnId.Performer,\n SalesReportTableColumnId.Venue,\n SalesReportTableColumnId.EventGenre,\n SalesReportTableColumnId.EventCity,\n SalesReportTableColumnId.EventId,\n SalesReportTableColumnId.Category,\n SalesReportTableColumnId.EventDate,\n SalesReportTableColumnId.EventStateProvince,\n ],\n [ReportGroupBy.Performer]: [SalesReportTableColumnId.Category],\n [ReportGroupBy.ArAgingMarketplace]: [\n SalesReportTableColumnId.SaleMarketplace,\n SalesReportTableColumnId.MarketplacePaymentTerms,\n ],\n [ReportGroupBy.SeatingRow]: [SalesReportTableColumnId.SeatingSection],\n [ReportGroupBy.SaleId]: [\n SalesReportTableColumnId.Event,\n SalesReportTableColumnId.EventGenre,\n SalesReportTableColumnId.EventCountry,\n SalesReportTableColumnId.EventCity,\n SalesReportTableColumnId.SeatingSection,\n SalesReportTableColumnId.SeatingRow,\n SalesReportTableColumnId.Performer,\n SalesReportTableColumnId.Venue,\n SalesReportTableColumnId.EventId,\n SalesReportTableColumnId.Category,\n SalesReportTableColumnId.EventDate,\n SalesReportTableColumnId.EventStateProvince,\n SalesReportTableColumnId.SaleMarketplace,\n SalesReportTableColumnId.OrderDate,\n SalesReportTableColumnId.SaleId,\n SalesReportTableColumnId.MarketplaceSaleId,\n SalesReportTableColumnId.Status,\n SalesReportTableColumnId.TicketType,\n SalesReportTableColumnId.InHandDate,\n SalesReportTableColumnId.PaymentState,\n SalesReportTableColumnId.Fulfiller,\n SalesReportTableColumnId.PurchaseId,\n SalesReportTableColumnId.PurchasedBy,\n SalesReportTableColumnId.Vendor,\n SalesReportTableColumnId.SeatingSeats,\n SalesReportTableColumnId.CurrencyCode,\n SalesReportTableColumnId.PurchaseDate,\n SalesReportTableColumnId.PaymentDate,\n SalesReportTableColumnId.FulfillmentDate,\n SalesReportTableColumnId.VendorAccountEmail,\n SalesReportTableColumnId.InternalNotes,\n SalesReportTableColumnId.CancellationDate,\n SalesReportTableColumnId.PurchaseCreatedBy,\n ],\n [ReportGroupBy.SaleIdTicketIdCommissionUser]: [\n SalesReportTableColumnId.Event,\n SalesReportTableColumnId.EventGenre,\n SalesReportTableColumnId.EventCountry,\n SalesReportTableColumnId.EventCity,\n SalesReportTableColumnId.SeatingSection,\n SalesReportTableColumnId.SeatingRow,\n SalesReportTableColumnId.Performer,\n SalesReportTableColumnId.Venue,\n SalesReportTableColumnId.EventId,\n SalesReportTableColumnId.Category,\n SalesReportTableColumnId.EventDate,\n SalesReportTableColumnId.EventStateProvince,\n SalesReportTableColumnId.SaleMarketplace,\n SalesReportTableColumnId.OrderDate,\n SalesReportTableColumnId.SaleId,\n SalesReportTableColumnId.MarketplaceSaleId,\n SalesReportTableColumnId.Status,\n SalesReportTableColumnId.TicketType,\n SalesReportTableColumnId.InHandDate,\n SalesReportTableColumnId.PaymentState,\n SalesReportTableColumnId.Fulfiller,\n SalesReportTableColumnId.PurchaseId,\n SalesReportTableColumnId.PurchasedBy,\n SalesReportTableColumnId.PurchaseDate,\n SalesReportTableColumnId.Vendor,\n SalesReportTableColumnId.SeatingSeats,\n SalesReportTableColumnId.CurrencyCode,\n SalesReportTableColumnId.PaymentDate,\n SalesReportTableColumnId.FulfillmentDate,\n SalesReportTableColumnId.VendorAccountEmail,\n SalesReportTableColumnId.InternalNotes,\n SalesReportTableColumnId.CancellationDate,\n SalesReportTableColumnId.PurchaseCreatedBy,\n SalesReportTableColumnId.TicketId,\n SalesReportTableColumnId.TicketGroupId,\n SalesReportTableColumnId.CommissionUser,\n SalesReportTableColumnId.CommissionPercent,\n SalesReportTableColumnId.CommissionShare,\n ],\n};\n","import {\n FormatOption,\n FormatOptionEntries,\n LISTING_TABLE_COLUMN_DEFAULT_PRECISION,\n} from 'src/modals/EditTableColumns';\nimport {\n LISTING_FLATTENED_TABLE_COLUMN_DEFAULT_PRECISION,\n PURCHASES_EVENT_TABLE_COLUMN_DEFAULT_PRECISION,\n SALE_FLATTENED_TABLE_COLUMN_DEFAULT_PRECISION,\n SALE_TABLE_COLUMN_DEFAULT_PRECISION,\n} from 'src/modals/EditTableColumns/EditTableColumns.util';\nimport { OnSaleEventsTableColumnId } from 'src/navigations/Routes/OnSaleEvent/OnSaleEventView.types';\nimport {\n EVENTS_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES,\n ON_SALE_EVENTS_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES,\n} from 'src/utils/columns/events/eventsColumnUtils.constants';\nimport { EventsTableColumnId } from 'src/utils/columns/events/eventsColumnUtils.types';\nimport {\n LISTING_REPORT_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES,\n LISTING_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES,\n} from 'src/utils/columns/inventory/inventoryColumnUtils.constants';\nimport {\n ListingReportTableColumnId,\n ListingTableColumnId,\n} from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { MarketplacePaymentsTableColumnId } from 'src/utils/columns/marketplacePayments/marketplacePaymentsColumnsUtils.types';\nimport { PAYMENTS_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES } from 'src/utils/columns/payments/paymentsColumnUtils.constants';\nimport { PURCHASES_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES } from 'src/utils/columns/purchases/purchasesColumnUtils.constants';\nimport { PurchasesTableColumnId } from 'src/utils/columns/purchases/purchasesColumnUtils.types';\nimport { SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES } from 'src/utils/columns/sales/salesColumnUtils.constants';\nimport {\n SalesReportTableColumnId,\n SalesTableColumnId,\n} from 'src/utils/columns/sales/salesColumnUtils.types';\nimport { SALE_REPORT_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES } from 'src/utils/columns/sales/salesReportColumnUtils.constants';\nimport {\n SECTION_TYPE_TO_COLUMN_EDITABILITY_SETTING,\n SECTION_TYPE_TO_PRECISION_SETTING,\n SectionType,\n} from 'src/utils/types/sectionType';\n\nimport { useServerUserSetting } from './useUserSetting';\n\nconst getPersonalizationConfigOverrides = (\n columnId: string,\n sectionType: SectionType\n) => {\n return {\n [SectionType.Events]:\n EVENTS_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n columnId as EventsTableColumnId\n ],\n [SectionType.Listings]:\n LISTING_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n columnId as ListingTableColumnId\n ],\n [SectionType.ListingsFlattened]:\n LISTING_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n columnId as ListingTableColumnId\n ],\n [SectionType.InventorySideTable]:\n LISTING_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n columnId as ListingTableColumnId\n ],\n [SectionType.Sales]:\n SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n columnId as SalesTableColumnId\n ],\n [SectionType.SalesFlattened]:\n SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n columnId as SalesTableColumnId\n ],\n [SectionType.SalesReport]:\n SALE_REPORT_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n columnId as SalesReportTableColumnId\n ],\n [SectionType.SalesSideTable]:\n SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n columnId as SalesTableColumnId\n ],\n [SectionType.ListingsReport]:\n LISTING_REPORT_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n columnId as ListingReportTableColumnId\n ],\n [SectionType.Purchases]:\n PURCHASES_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n columnId as PurchasesTableColumnId\n ],\n [SectionType.PurchaseEvent]:\n PURCHASES_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n columnId as PurchasesTableColumnId\n ],\n [SectionType.PurchaseSideTable]:\n PURCHASES_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n columnId as PurchasesTableColumnId\n ],\n [SectionType.MarketplacePaymentsTable]:\n PAYMENTS_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n columnId as MarketplacePaymentsTableColumnId\n ],\n [SectionType.OnSaleEvents]:\n ON_SALE_EVENTS_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n columnId as OnSaleEventsTableColumnId\n ],\n }[sectionType];\n};\n\nexport const useColumnUserSetting = (\n columnId: string,\n sectionType: SectionType\n) => {\n const { value: storedColumnNumberPrecisions = {} } =\n useServerUserSetting({\n id: SECTION_TYPE_TO_PRECISION_SETTING[sectionType],\n });\n\n const { isInteger, isNumeric, isCurrency, isPercent } =\n getPersonalizationConfigOverrides(columnId, sectionType) ?? {};\n\n const sectionSpecificDefaultPrecision: FormatOption | undefined = {\n [SectionType.Listings]: LISTING_TABLE_COLUMN_DEFAULT_PRECISION[columnId],\n [SectionType.ListingsReport]:\n LISTING_TABLE_COLUMN_DEFAULT_PRECISION[columnId],\n [SectionType.ListingsFlattened]:\n LISTING_FLATTENED_TABLE_COLUMN_DEFAULT_PRECISION[columnId] ??\n LISTING_TABLE_COLUMN_DEFAULT_PRECISION[columnId],\n [SectionType.InventorySideTable]:\n LISTING_TABLE_COLUMN_DEFAULT_PRECISION[columnId],\n [SectionType.Sales]: SALE_TABLE_COLUMN_DEFAULT_PRECISION[columnId],\n [SectionType.SalesReport]: SALE_TABLE_COLUMN_DEFAULT_PRECISION[columnId],\n [SectionType.SalesFlattened]:\n SALE_FLATTENED_TABLE_COLUMN_DEFAULT_PRECISION[columnId],\n [SectionType.SalesSideTable]: SALE_TABLE_COLUMN_DEFAULT_PRECISION[columnId],\n [SectionType.Events]: undefined,\n [SectionType.Purchases]: undefined,\n [SectionType.PurchaseEvent]:\n PURCHASES_EVENT_TABLE_COLUMN_DEFAULT_PRECISION[columnId],\n [SectionType.PurchaseSideTable]: undefined,\n [SectionType.MarketplacePaymentsTable]: undefined,\n [SectionType.OnSaleEvents]: undefined,\n }[sectionType];\n\n const userDefinedPrecision =\n storedColumnNumberPrecisions[columnId] ??\n sectionSpecificDefaultPrecision ??\n (isPercent && !isCurrency\n ? FormatOption.Percent_RoundToTwo\n : isInteger\n ? FormatOption.Whole\n : isNumeric\n ? FormatOption.Precise\n : undefined);\n\n const { value: editableColumns = [] } = useServerUserSetting({\n id: SECTION_TYPE_TO_COLUMN_EDITABILITY_SETTING[sectionType],\n });\n const editable = editableColumns.includes(columnId);\n\n return {\n isServerSetting: storedColumnNumberPrecisions[columnId] != null,\n userDefinedPrecision,\n editable,\n };\n};\n","import { Row, SortingFns } from '@tanstack/react-table';\nimport { useMemo } from 'react';\nimport { useColumnUserSetting } from 'src/hooks/useColumnUserSetting';\nimport { FormatOption } from 'src/modals/EditTableColumns';\nimport { ListingWithEvent } from 'src/tables/ListingTable/ListingTable.types';\nimport { SaleWithEvent } from 'src/tables/SalesTable/SalesTable.type';\nimport {\n sortListingSeating,\n sortListingSeatingSection,\n sortPurchaseOrderSeatingSection,\n sortPurchaseOrderTicketGroupSeating,\n sortSalesSeating,\n sortSalesSeatingSection,\n} from 'src/utils/tableUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { PurchaseOrderTicketGroup } from 'src/WebApiController';\n\nexport const SEATING_SORTING_FN_NAME = 'seatingSortingFn';\n\nconst listingSectionTypes: Readonly = [\n SectionType.Listings,\n SectionType.ListingsFlattened,\n SectionType.ListingsReport,\n];\n\nconst purchaseSectionTypes: Readonly = [\n SectionType.Purchases,\n SectionType.PurchaseEvent,\n SectionType.PurchaseSideTable,\n];\n\nconst salesSectionTypes: Readonly = [\n SectionType.Sales,\n SectionType.SalesFlattened,\n SectionType.SalesReport,\n SectionType.SalesSideTable,\n];\n\ntype SortingEntity =\n | ListingWithEvent\n | SaleWithEvent\n | PurchaseOrderTicketGroup;\n\nexport type SeatingSortingFn = (\n rowA: Row,\n rowB: Row,\n colId: string\n) => number;\n\nexport type SortinWrapper = (\n rowA: Row,\n rowB: Row,\n columnId: string,\n sortingFn: SeatingSortingFn\n) => number;\n\nexport const useSeatingColumnSorting = (\n columnId: string,\n sectionType: SectionType,\n sortingWrapper?: SortinWrapper\n): SortingFns => {\n const { userDefinedPrecision } = useColumnUserSetting(columnId, sectionType);\n\n return useMemo(() => {\n let sortingFn: SeatingSortingFn = (\n rowA: Row,\n rowB: Row,\n colId: string\n ) => 0;\n\n const isSectionOnlyPrecision =\n userDefinedPrecision === FormatOption.Seating_SectionOnly;\n\n if (listingSectionTypes.includes(sectionType)) {\n sortingFn = (\n isSectionOnlyPrecision ? sortListingSeatingSection : sortListingSeating\n ) as SeatingSortingFn;\n } else if (purchaseSectionTypes.includes(sectionType)) {\n sortingFn = (\n isSectionOnlyPrecision\n ? sortPurchaseOrderSeatingSection\n : sortPurchaseOrderTicketGroupSeating\n ) as SeatingSortingFn;\n } else if (salesSectionTypes.includes(sectionType)) {\n sortingFn = (\n isSectionOnlyPrecision ? sortSalesSeatingSection : sortSalesSeating\n ) as SeatingSortingFn;\n }\n\n const seatingSortingFn = (rowA: Row, rowB: Row) => {\n if (sortingWrapper) {\n return sortingWrapper(rowA, rowB, columnId, sortingFn);\n }\n return sortingFn(rowA, rowB, columnId);\n };\n\n return {\n [SEATING_SORTING_FN_NAME]: seatingSortingFn,\n };\n }, [columnId, sectionType, sortingWrapper, userDefinedPrecision]);\n};\n","import { Row } from '@tanstack/react-table';\nimport { useCallback } from 'react';\nimport {\n SeatingSortingFn,\n useSeatingColumnSorting,\n} from 'src/tables/common/hooks/useSeatingColumnSorting';\nimport { ListingWithEvent } from 'src/tables/ListingTable/ListingTable.types';\nimport { ListingTableColumnId } from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { Feature } from 'src/WebApiController';\n\nimport { useUserHasFeature } from './useUserHasFeature';\n\nexport const useSortListingTableSeatingColumn = (sectionType: SectionType) => {\n const hasSortListingsInGroupFeature = useUserHasFeature(\n Feature.SortListingsInGroup\n );\n\n const sortingWrapper = useCallback(\n (\n rowA: Row,\n rowB: Row,\n columnId: string,\n sortingFn: SeatingSortingFn\n ) => {\n if (rowA.depth + rowB.depth > 0 && !hasSortListingsInGroupFeature) {\n return 0;\n }\n return sortingFn(rowA, rowB, columnId);\n },\n [hasSortListingsInGroupFeature]\n );\n\n return useSeatingColumnSorting(\n ListingTableColumnId.Seating,\n sectionType,\n sortingWrapper\n );\n};\n","import * as ts from 'typescript';\n\nexport const EDITABLE_FORMULA_EXAMPLE =\n '2 * (${ticketCount} - ${availableQuantity})';\n\n/**\n * Formula string in a format directly editable and readable.\n * Consists of: Number literals, operators +-*()/, and identifiers in the form of \"${FIELD_NAME}\",\n * where FIELD_NAME can be any string\n *\n * Example: `${undercutAbsoluteAmount} * (${ticketCount} + 20 + ${random tag name}) + 0.04`\n */\nexport type FormulaEditable = string;\n\n/**\n * Formula in an editable tokenized format.\n * Consists of: Number literals, operators +-*()/, and identifiers in the form of FIELD_NAME,\n * where FIELD_NAME can be any string\n *\n * Example: `['undercutAbsoluteAmount', '*', '(', 'ticketCount', '+', '20', '+', 'random tag name', ')', '+', '0.04']`\n */\nexport type FormulaTokenized = string[];\n\n/**\n * Formula in executable format that is ready to evaluate.\n * Consists of: Number literals, operators +-*()/, and identifiers in the form of FORMULA_DATA_ACCESSOR_PREFIX['{FIELD_NAME}'],\n *\n * Example: `data?.undercutAbsoluteAmount * (data?.['ticketCount'] + 20) + 0.04 + data?.['random Tag']`\n */\nexport type FormulaExecutable = string;\n// Changing this prefix will break the evaluation of existing formula stored in DB\nconst FORMULA_DATA_ACCESSOR_PREFIX = 'data?.';\n\n/**\n * Converts executable formula string (from user settings) to editable formula\n * string (more readable and easy to parse/edit format)\n *\n * Example: `data?.['ticketCount'] + 20` ==> `${ticketCount} + 20`\n * Or (v1 for backward compatability): `data?.ticketCount + 20` ==> `${ticketCount} + 20`\n * @param executableFormula formula from user settings\n * @returns\n */\nexport const fromExecutableFormula = (\n executableFormula: FormulaExecutable | undefined\n): FormulaEditable | undefined => {\n let editableFormula = '';\n const tokens = parseExecutableFormula(executableFormula);\n if (tokens == null) {\n return;\n }\n\n tokens.forEach((t) => {\n if (t.startsWith(FORMULA_DATA_ACCESSOR_PREFIX)) {\n const isTokenV1 = !t.includes('[') && !t.includes(']');\n const identifier = isTokenV1\n ? // data?.ticketCount => ${ticketCount}\n `$\\{${t.replace(FORMULA_DATA_ACCESSOR_PREFIX, '')}}`\n : // data?.['ticketCount'] => ${ticketCount}\n `$\\{${t.replace(FORMULA_DATA_ACCESSOR_PREFIX, '').slice(2, -2)}}`;\n editableFormula += identifier;\n } else {\n editableFormula += t;\n }\n });\n\n return editableFormula;\n};\n\n/**\n * Converts tokenized formula string (more readable and easy to parse/edit format)\n * to executable formula string that is ready for evaluation\n *\n * Example: `['ticketCount', '+', '20']` ==> `data?.['ticketCount'] + 20`\n * @param editableFormula formula being edited\n * @returns\n */\nexport const toExecutableFormula = (\n tokenizedFormula: FormulaTokenized\n): FormulaExecutable => {\n return tokenizedFormula\n .map((token) =>\n FORMULA_OPERATORS_AND_NUMBERS_REGEXP_START.test(token)\n ? token\n : `${FORMULA_DATA_ACCESSOR_PREFIX}['${token}']`\n )\n .join(' ');\n};\n\nexport const EDITABLE_FORMULA_ALLOWED_CHARSET_REGEXP = new RegExp(\n /^[0-9a-z_{}$+\\-*/(). ]+$/i\n);\n\nexport const FORMULA_DISPLAY_ALLOWED_INSERT_CHARS = [\n '@',\n '(',\n ')',\n '+',\n '-',\n '*',\n '/',\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '.',\n];\n\nexport const FORMULA_OPERATORS_AND_NUMBERS_REGEXP_START = /^[+\\-*/()]|[0-9.]+/;\nexport const FORMULA_OPERATORS_AND_NUMBERS_REGEXP_ALL = /[+\\-*/()]|[0-9.]+/g;\n\nexport const toTokenEditable = (fieldName: string) => {\n return `$\\{${fieldName}}`;\n};\n\nconst PLAIN_LITERAL_CHARSET_REGEXP = new RegExp(/^[0-9+\\-*/(). ]+$/i);\n/**\n * Parse executableFormula (in the form of FORMULA_DATA_ACCESSOR_PREFIX{FIELD_NAME}), transforming\n * formula into plain literals and identifier\n * Used to access identifiers and validation.\n *\n * E.g. `data?.ticketCount * (data?.AllInPrice + 3)` =>\n *\n * [\n * 'data?.ticketCount',\n * ' * (',\n * 'data?.AllInPrice',\n * ' + 3)'\n * ]\n *\n * @param executableFormula\n * @returns parsed list of tokens, or undefined if failed to parse\n */\nconst parseExecutableFormulaV1 = (\n executableFormula: FormulaExecutable | undefined\n): string[] | undefined => {\n const tokens: string[] = [];\n if (!executableFormula) {\n return;\n }\n\n let executableFormulaSliced = executableFormula;\n while (executableFormulaSliced.includes(FORMULA_DATA_ACCESSOR_PREFIX)) {\n const pos = executableFormulaSliced.indexOf(FORMULA_DATA_ACCESSOR_PREFIX);\n\n // Plain token\n if (pos > 0) {\n tokens.push(executableFormulaSliced.slice(0, pos));\n if (!tokens[tokens.length - 1].match(PLAIN_LITERAL_CHARSET_REGEXP)) {\n return;\n }\n }\n\n let posEnd = pos + FORMULA_DATA_ACCESSOR_PREFIX.length;\n for (; posEnd < executableFormulaSliced.length; posEnd++) {\n if (\n !executableFormulaSliced\n .slice(pos + FORMULA_DATA_ACCESSOR_PREFIX.length, posEnd + 1)\n .match(/^[0-9a-z_.?]+$/i)\n ) {\n break;\n }\n }\n\n tokens.push(executableFormulaSliced.slice(pos, posEnd));\n\n executableFormulaSliced = executableFormulaSliced.slice(posEnd);\n }\n\n if (executableFormulaSliced.length > 0) {\n // Plain token\n tokens.push(executableFormulaSliced);\n if (!tokens[tokens.length - 1].match(PLAIN_LITERAL_CHARSET_REGEXP)) {\n return;\n }\n }\n\n return tokens;\n};\n\n/**\n * Parse executableFormula, transforming formula into plain literals and identifier\n * Used to access identifiers and validation.\n *\n * E.g. `data?.['ticketCount'] * (data?.['AllInPrice'] + 3)` =>\n *\n * [\n * 'data?.['ticketCount']',\n * ' * (',\n * 'data?.['AllInPrice']',\n * ' + 3)'\n * ]\n *\n * @param executableFormula\n * @returns parsed list of tokens, or undefined if failed to parse\n */\nexport const parseExecutableFormula = (\n executableFormula: FormulaExecutable | undefined\n): string[] | undefined => {\n const tokens: string[] = [];\n if (!executableFormula) {\n return;\n }\n\n const isExecutableFormulaV1 =\n !executableFormula.includes('[') && !executableFormula.includes(']');\n if (isExecutableFormulaV1) {\n return parseExecutableFormulaV1(executableFormula);\n }\n\n let executableFormulaSliced = executableFormula;\n while (executableFormulaSliced.includes(FORMULA_DATA_ACCESSOR_PREFIX)) {\n const pos = executableFormulaSliced.indexOf(FORMULA_DATA_ACCESSOR_PREFIX);\n\n // Plain token\n if (pos > 0) {\n tokens.push(executableFormulaSliced.slice(0, pos));\n if (!tokens[tokens.length - 1].match(PLAIN_LITERAL_CHARSET_REGEXP)) {\n return;\n }\n }\n\n let posEnd = pos + FORMULA_DATA_ACCESSOR_PREFIX.length;\n for (; posEnd < executableFormulaSliced.length; posEnd++) {\n if (executableFormulaSliced.charAt(posEnd) === ']') {\n posEnd++;\n break;\n }\n }\n\n tokens.push(executableFormulaSliced.slice(pos, posEnd));\n\n executableFormulaSliced = executableFormulaSliced.slice(posEnd);\n }\n\n if (executableFormulaSliced.length > 0) {\n // Plain token\n tokens.push(executableFormulaSliced);\n if (!tokens[tokens.length - 1].match(PLAIN_LITERAL_CHARSET_REGEXP)) {\n return;\n }\n }\n\n return tokens;\n};\n\nconst NULL_RETURN_STATEMENT_PLACEHOLDER = 'IDENTIFIER';\nconst NULL_RETURN_STATEMENT_TEMPLATE = `if (${NULL_RETURN_STATEMENT_PLACEHOLDER} == null) return null; `;\n/**\n * Get early return statements from parsing formula, in order to return null if any\n * of identifiers is null.\n * This statement is needed otherwise the transpiled code from formula simply treats null values as 0\n *\n * E.g. `data?.['ticketCount'] * (data?.['AllInPrice'] + 3)` =>\n * \"if (data?.['ticketCount'] == null) return null; if (data?.['AllInPrice'] == null) return null; \"\n *\n * @param formula\n * @returns\n */\nexport const toNullReturnStatements = (formula: FormulaExecutable): string => {\n const tokens = parseExecutableFormula(formula);\n if (tokens == null) return '';\n\n let statements = '';\n tokens.forEach((t) => {\n if (t.startsWith(FORMULA_DATA_ACCESSOR_PREFIX)) {\n statements += NULL_RETURN_STATEMENT_TEMPLATE.replace(\n NULL_RETURN_STATEMENT_PLACEHOLDER,\n t\n );\n }\n });\n return statements;\n};\n\nexport const filterExecutableFormulaCharacters = (\n formula: FormulaExecutable\n) => {\n let filteredFormula = '';\n let isInsideString = false;\n for (let i = 0; i < formula.length; i++) {\n if (formula.charAt(i) === '[') {\n isInsideString = true;\n } else if (formula.charAt(i) === ']') {\n isInsideString = false;\n filteredFormula += formula.charAt(i);\n }\n if (isInsideString || formula.charAt(i).match(/^[0-9a-z_+\\-*/().? ]+$/i)) {\n filteredFormula += formula.charAt(i);\n }\n }\n return filteredFormula;\n};\n\n/**\n * This is to prevent the case that input formula in some cases \"6 data?.ticketCount + 20\" will be\n * transpiled to multiple statements without any error:\n * \"6 data?.ticketCount + 20\" will become \"return 6; data?.ticketCount + 20;\"\n *\n * @param formula\n * @returns\n */\nexport const validateFormulaSingleStatement = (formula: string) => {\n const code = `({\n evaluate: (data: any): number | null => {\n return (${formula});\n }});`;\n\n const transpiledCode = ts.transpile(code).trim();\n return transpiledCode.split(';').filter((t) => t.length).length === 2;\n};\n\n/**\n * Result type for parseEditableFormulaBase\n */\ntype EditableFormulaParseToken = {\n /**\n * If `isPlainToken` is true, `token` will be plain formula literals\n * If `isPlainToken` is false, `token` will be field name that is type agnostic.\n * Depends on the caller to convert it to suitable type\n */\n token: string;\n isPlainToken: boolean;\n};\n\n/**\n * Parse editableFormula, transforming formula into plain literals and fieldnames\n * E.g. `${ticketCount} + 20` ==> [{token: 'ticketCount', isPlainToken: false}, {token: ' + 20', isPlainToken: true}]\n * @param editableFormula\n * @returns parsed list of tokens, or undefined if failed to parse\n */\nexport const parseEditableFormulaBase = (\n editableFormula: FormulaEditable | undefined,\n returnFieldNameOnly?: boolean\n): EditableFormulaParseToken[] | undefined => {\n const parsedTokenResult: EditableFormulaParseToken[] = [];\n if (!editableFormula) {\n return;\n }\n\n let editableFormulaSliced = editableFormula;\n\n while (editableFormulaSliced.includes('${')) {\n const leftPos = editableFormulaSliced.indexOf('${');\n\n // Plain token\n if (leftPos > 0) {\n if (editableFormulaSliced.slice(0, leftPos).includes('}')) {\n return;\n }\n if (!returnFieldNameOnly) {\n parsedTokenResult.push({\n token: editableFormulaSliced.slice(0, leftPos),\n isPlainToken: true,\n });\n }\n }\n\n let rightPos = leftPos;\n for (; rightPos < editableFormulaSliced.length; rightPos++) {\n if (editableFormulaSliced.charAt(rightPos) === '}') {\n break;\n }\n }\n\n // Field name\n const fieldName = editableFormulaSliced.slice(leftPos + 2, rightPos);\n\n parsedTokenResult.push({\n token: fieldName,\n isPlainToken: false,\n });\n\n editableFormulaSliced = editableFormulaSliced.slice(rightPos + 1);\n }\n\n // Plain token\n if (editableFormulaSliced.length) {\n if (!returnFieldNameOnly) {\n parsedTokenResult.push({\n token: editableFormulaSliced,\n isPlainToken: true,\n });\n }\n }\n\n return parsedTokenResult;\n};\n\ntype CustomColumnFormulaEvaluator = {\n evaluate: (data: {\n [key: string]: number | null | undefined;\n }) => number | null;\n};\n\n/**\n * Evaluate formula defined in custom listing column.\n *\n * Example formula: \"data?.['ticketCount'] + 20\"\n * @param formula\n * @param listingReportMetrics\n * @returns evaluated value, undefined on syntax error\n */\nexport function evaluateFormulaBase(\n formula: FormulaExecutable,\n data?: { [key: string]: number | null | undefined }\n) {\n // Transpile and eval interpolated code can be dangerous if the code is uncontrolled\n // Filter out unwanted characters to make it more secure\n const filteredFormula = filterExecutableFormulaCharacters(formula);\n // If there's anything wrong just don't evaluate it\n if (filteredFormula !== formula) {\n return;\n }\n if (data == null) {\n return;\n }\n\n const nullReturnStatements = toNullReturnStatements(formula);\n const code = `({\n evaluate: (data: any): number | null => {\n ${nullReturnStatements}\n return (${formula});\n }})`;\n\n const transpiledCode = ts.transpile(code);\n\n let result: number | null | undefined = undefined;\n try {\n const evaluator: CustomColumnFormulaEvaluator = eval(transpiledCode);\n result = evaluator.evaluate(data);\n } catch (error) {\n // Empty - result would be undefined\n }\n return result;\n}\n\nexport const tagKeyToFieldName = (tagKey: string) => {\n return `tags.${tagKey}`;\n};\n\nexport const tagFieldNameToKey = (tagFieldName: string) => {\n return tagFieldName.replace('tags.', '');\n};\n\nexport const editableFormulaToTokens = (\n formula: string | undefined,\n fieldOptionsReverse: Record\n) => {\n if (!formula) {\n return [];\n }\n\n const tokens = [];\n const metrics = Object.values(fieldOptionsReverse);\n\n while (formula.length > 0) {\n formula = formula.trim();\n let matchingToken = null;\n for (const metric of metrics) {\n // if (formula.startsWith(token)) {\n if (new RegExp('^\\\\$\\\\{' + metric + '\\\\}').test(formula)) {\n matchingToken = metric;\n break;\n }\n }\n\n if (matchingToken) {\n tokens.push(matchingToken);\n formula = formula.slice(matchingToken.length + 3);\n } else {\n const matches = formula.match(FORMULA_OPERATORS_AND_NUMBERS_REGEXP_START);\n if (matches) {\n tokens.push(matches[0]);\n formula = formula?.slice(matches[0].length);\n }\n }\n }\n return tokens;\n};\n\n/**\n * Find the added single character in the newValue that is not present in oldValue\n * @param oldValue\n * @param newValue\n * @returns\n */\nexport const findAddedSingleChar = (oldValue: string, newValue: string) => {\n if (newValue.length !== oldValue.length + 1) {\n return undefined;\n }\n\n for (let i = 0; i < newValue.length; i++) {\n if (oldValue[i] !== newValue[i]) {\n return newValue[i];\n }\n }\n return undefined;\n};\n","import { ColumnPersonalizationFlags } from './columnUtils.types';\nimport { FormulaEditable, parseEditableFormulaBase } from './customColumnUtils';\n\nexport type MathematicalToken = {\n // This is for debug purpose\n token: string;\n isPlainToken: boolean;\n isCurrency?: boolean;\n isPercent?: boolean;\n};\n\nconst LEFT_PARENTHESIS = '(';\nconst RIGHT_PARENTHESIS = ')';\nconst PLUS = '+';\nconst MINUS = '-';\nconst MULTIPLICATION = '*';\nconst DIVISION = '/';\n\nconst isOperator = (token: string) => {\n return (\n token === PLUS ||\n token === MINUS ||\n token === MULTIPLICATION ||\n token === DIVISION\n );\n};\n\nconst isParenthesis = (token: string) => {\n return token === LEFT_PARENTHESIS || token === RIGHT_PARENTHESIS;\n};\n\n/**\n * Parse plain token into single mathematical tokens\n * E.g. ' + 20' => ['+', '20']\n * E.g. ' - 0.04))' => ['-', '0.04', ')', ')']\n * @param token\n * @returns\n */\nexport const parseMathematicalTokenFromPlainToken = (token: string) => {\n const tokens: string[] = [];\n let currentToken = '';\n for (let i = 0; i < token.length; i++) {\n const char = token[i];\n if (char === ' ') {\n if (currentToken) {\n tokens.push(currentToken);\n currentToken = '';\n }\n continue;\n }\n if (isOperator(char) || isParenthesis(char)) {\n if (currentToken) {\n tokens.push(currentToken);\n currentToken = '';\n }\n tokens.push(char);\n continue;\n }\n currentToken += char;\n }\n if (currentToken) {\n tokens.push(currentToken);\n }\n return tokens.map((t) => t.trim());\n};\n\n/**\n * Take in a list of tokens with only literals and {addition, subtraction}\n * Return the result of the evaluation (e.g. is currency or not)\n * @param tokens\n * @returns\n */\nconst evaluateMathematicalTokensAdditionSubtraction = (\n tokens: MathematicalToken[]\n): MathematicalToken => {\n const tokenStack: MathematicalToken[] = [];\n let i = 0;\n while (i < tokens.length) {\n const token = tokens[i];\n\n if (token.token === PLUS || token.token === MINUS) {\n const previousToken = tokenStack.pop();\n const nextToken = tokens[i + 1];\n\n if (previousToken && nextToken) {\n // If either previousToken or nextToken is currency, the result is currency\n const isCurrency = previousToken.isCurrency || nextToken.isCurrency;\n // If either previousToken and nextToken is percent, the result is percent\n const isPercent = previousToken.isPercent || nextToken.isPercent;\n tokenStack.push({\n token: `(${previousToken.token}) ${token.token} (${nextToken.token})`,\n isPlainToken: false,\n isCurrency,\n isPercent,\n });\n }\n i += 2;\n } else {\n tokenStack.push(token);\n i++;\n }\n }\n return tokenStack[0];\n};\n\n/**\n * Take in a list of tokens with only literals and {addition, subtraction, multiplication, division}\n * Return the result of the evaluation (e.g. is currency or not)\n * @param tokens\n * @returns\n */\nconst evaluateMathematicalTokensMultiplicationDivision = (\n tokens: MathematicalToken[]\n): MathematicalToken => {\n if (tokens.length === 1) {\n return tokens[0];\n }\n\n const tokenStack: MathematicalToken[] = [];\n let i = 0;\n // Handle multiplication and division first\n // throw them into evaluateMathematicalTokensAdditionSubtraction for addition and subtraction\n while (i < tokens.length) {\n const token = tokens[i];\n if (token.token === MULTIPLICATION || token.token === DIVISION) {\n const previousToken = tokenStack.pop();\n const nextToken = tokens[i + 1];\n\n if (!previousToken || !nextToken) {\n break;\n }\n\n if (token.token === MULTIPLICATION) {\n // If either previousToken or nextToken is currency, the result is currency\n const isCurrency = previousToken.isCurrency || nextToken.isCurrency;\n // If either previousToken and nextToken is percent, the result is percent\n const isPercent = Boolean(\n previousToken.isPercent || nextToken.isPercent\n );\n tokenStack.push({\n token: `(${previousToken.token}) * (${nextToken.token})`,\n isPlainToken: false,\n isCurrency,\n isPercent,\n });\n } else {\n // If previousToken is currency and nextToken is not currency, the result is currency\n const isCurrency = Boolean(\n previousToken.isCurrency && !nextToken.isCurrency\n );\n const isPercent = Boolean(\n previousToken.isPercent && !nextToken.isPercent\n );\n tokenStack.push({\n token: `(${previousToken.token}) / (${nextToken.token})`,\n isPlainToken: false,\n isCurrency,\n isPercent,\n });\n }\n i += 2;\n } else {\n tokenStack.push(token);\n i++;\n }\n }\n return evaluateMathematicalTokensAdditionSubtraction(tokenStack);\n};\n\n/**\n * Takes in a list of tokens with only literals and {addition, subtraction, multiplication, division, parentheses}\n * Return the result of the evaluation (e.g. is currency or not)\n *\n * Assumptions: '-' is a binary operator, not a unary operator\n * @param tokens\n * @returns\n */\nexport const evaluateMathematicalTokens = (\n tokens: MathematicalToken[]\n): MathematicalToken => {\n // Handle parentheses - get rid of them and evaluate the expression inside\n // throw them into evaluateMathematicalTokensMultiplicationDivision\n const tokenStack: MathematicalToken[] = [];\n let i = 0;\n while (i < tokens.length) {\n const token = tokens[i];\n\n if (token.token === RIGHT_PARENTHESIS) {\n const tokensWithoutParentheses: MathematicalToken[] = [];\n let poppedToken = tokenStack.pop();\n\n while (poppedToken && poppedToken.token !== LEFT_PARENTHESIS) {\n tokensWithoutParentheses.push(poppedToken);\n poppedToken = tokenStack.pop();\n }\n // tokensWithoutParentheses is in reverse order, so we need to reverse it back\n const tokensWithoutParenthesesTrimmed =\n tokensWithoutParentheses.reverse();\n\n const result = evaluateMathematicalTokensMultiplicationDivision(\n tokensWithoutParenthesesTrimmed\n );\n tokenStack.push(result);\n } else {\n tokenStack.push(token);\n }\n i++;\n }\n\n return evaluateMathematicalTokensMultiplicationDivision(tokenStack);\n};\n\nexport const getPersonalizationFlagsFromFormulaBase = (\n mathTokens: MathematicalToken[] | undefined\n): Partial => {\n if (!mathTokens?.length) {\n return {\n isCurrency: false,\n isPercent: false,\n };\n }\n\n const mergedToken = evaluateMathematicalTokens(mathTokens);\n\n return {\n isCurrency: mergedToken?.isCurrency ?? false,\n isPercent: mergedToken?.isPercent ?? false,\n };\n};\n\n/**\n * Parse editableFormula, transforming formula into plain literals and contentId tied with ColumnId and field name\n * Used for preview and validation.\n * E.g. `${ticketCount} + 20` ==> [ContentId.Original, ' + 20']\n * @param editableFormula\n * @returns parsed list of tokens, or undefined if failed to parse\n */\nexport const parseMathematicalTokensFromFormulaBase = (\n editableFormula: FormulaEditable | undefined,\n getTokenFromFieldName: (fieldName: string) => MathematicalToken\n): MathematicalToken[] | undefined => {\n const parsedTokenResult = parseEditableFormulaBase(editableFormula);\n if (!parsedTokenResult) {\n return;\n }\n\n const tokens: MathematicalToken[] = [];\n parsedTokenResult.forEach((tokenResult) => {\n if (tokenResult.isPlainToken) {\n const parsedPlainTokens = parseMathematicalTokenFromPlainToken(\n tokenResult.token\n );\n tokens.push(\n ...parsedPlainTokens.map((t) => ({ token: t, isPlainToken: true }))\n );\n } else {\n const fieldName = tokenResult.token;\n\n tokens.push(getTokenFromFieldName(fieldName));\n }\n });\n\n return tokens;\n};\n","import { FormulaExecutable } from 'src/utils/columns/customColumnUtils';\nimport { Listing, Tag, UiMoney } from 'src/WebApiController';\n\nimport {\n LISTING_FORMULA_FIELDS_TO_CID,\n ListingFormulaFieldsListing,\n} from '../../constants/contentIdMaps';\nimport { getAllInPriceFromListPrice } from '../../inventoryUtils';\nimport { ColumnPersonalizationFlags } from '../columnUtils.types';\nimport {\n getPersonalizationFlagsFromFormulaBase,\n MathematicalToken,\n parseMathematicalTokensFromFormulaBase,\n} from '../customColumnMathUtils';\nimport {\n evaluateFormulaBase,\n FormulaEditable,\n fromExecutableFormula,\n parseEditableFormulaBase,\n parseExecutableFormula,\n tagFieldNameToKey,\n tagKeyToFieldName,\n validateFormulaSingleStatement,\n} from '../customColumnUtils';\nimport { LISTING_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES } from './inventoryColumnUtils.constants';\nimport { ListingTableColumnId } from './inventoryColumnUtils.types';\nimport { CustomListingColumn } from './inventoryCustomColumnUtils.types';\n\n/**\n * Type dedicated for format evaluation to decouple dependency with `Listing` type\n * Consists of numeric fields from `Listing` supported to add into formula\n *\n * Read before changing:\n * ONLY SAFE WHEN adding fields to this type,\n * changing/removing any field may break the evaluation of existing formula stored in DB\n */\nexport enum ListingFormulaFields {\n availableQuantity = 'availableQuantity',\n soldQuantity = 'soldQuantity',\n ticketCount = 'ticketCount',\n unitCost = 'unitCost',\n soldCost = 'soldCost',\n unsoldCost = 'unsoldCost',\n soldProceeds = 'soldProceeds',\n listPrice = 'listPrice',\n allInPrice = 'allInPrice',\n netProceedsFloor = 'netProceedsFloor',\n netProceedsCeiling = 'netProceedsCeiling',\n websiteFloor = 'websiteFloor',\n websiteCeiling = 'websiteCeiling',\n undercutAbsoluteAmount = 'undercutAbsoluteAmount',\n undercutRelativeAmount = 'undercutRelativeAmount',\n compListingFloor = 'compListingFloor',\n compListingCeiling = 'compListingCeiling',\n}\n\nconst listingToFormulaFields = (listing?: Listing | null) => {\n const tagFields = listing?.tags?.reduce((acc, tag) => {\n const numericValue = parseFloat(tag.value);\n if (isNaN(numericValue)) return acc;\n\n return {\n ...acc,\n [tagKeyToFieldName(tag.key)]: numericValue,\n };\n }, {});\n\n return {\n [ListingFormulaFields.availableQuantity]: listing?.availQty,\n [ListingFormulaFields.ticketCount]: listing?.ticketCnt,\n [ListingFormulaFields.unitCost]:\n listing?.unitCst?.amt || listing?.faceValue?.amt,\n [ListingFormulaFields.listPrice]: listing?.listPrice,\n [ListingFormulaFields.allInPrice]: listing?.allInPrice,\n [ListingFormulaFields.netProceedsFloor]: listing?.procsFloor,\n [ListingFormulaFields.netProceedsCeiling]: listing?.procsCeil,\n [ListingFormulaFields.websiteFloor]: getAllInPriceFromListPrice(\n listing?.procsFloor,\n listing\n ),\n [ListingFormulaFields.websiteCeiling]: getAllInPriceFromListPrice(\n listing?.procsCeil,\n listing\n ),\n [ListingFormulaFields.undercutAbsoluteAmount]: listing?.undAbsAmt,\n [ListingFormulaFields.undercutRelativeAmount]: listing?.undRelAmt,\n [ListingFormulaFields.compListingFloor]: listing?.compFloor,\n [ListingFormulaFields.compListingCeiling]: listing?.compCeil,\n ...tagFields,\n };\n};\n\nexport const FORMULA_FIELD_TO_COLUMN_ID: Record<\n ListingFormulaFieldsListing,\n ListingTableColumnId\n> = {\n [ListingFormulaFields.availableQuantity]: ListingTableColumnId.UnsoldQuantity,\n [ListingFormulaFields.ticketCount]: ListingTableColumnId.TicketCount,\n [ListingFormulaFields.unitCost]: ListingTableColumnId.UnitCost,\n [ListingFormulaFields.listPrice]: ListingTableColumnId.ListPrice,\n [ListingFormulaFields.allInPrice]: ListingTableColumnId.AllInPrice,\n [ListingFormulaFields.netProceedsFloor]: ListingTableColumnId.ProceedsFloor,\n [ListingFormulaFields.netProceedsCeiling]:\n ListingTableColumnId.ProceedsCeiling,\n [ListingFormulaFields.websiteFloor]: ListingTableColumnId.WebsiteFloor,\n [ListingFormulaFields.websiteCeiling]: ListingTableColumnId.WebsiteCeiling,\n [ListingFormulaFields.undercutAbsoluteAmount]:\n ListingTableColumnId.UndercutAbsoluteAmount,\n [ListingFormulaFields.undercutRelativeAmount]:\n ListingTableColumnId.UndercutRelativeAmount,\n [ListingFormulaFields.compListingFloor]:\n ListingTableColumnId.CompListingFloor,\n [ListingFormulaFields.compListingCeiling]:\n ListingTableColumnId.CompListingCeiling,\n};\n\nexport const filterCustomColumnsForListing = (\n customColumns: CustomListingColumn[],\n tagsForEntityType: Tag[] | undefined\n): CustomListingColumn[] => {\n const listingFormulaFields = Object.keys(LISTING_FORMULA_FIELDS_TO_CID);\n const tagKeys = tagsForEntityType?.map((t) => tagKeyToFieldName(t.key)) ?? [];\n return customColumns.filter((column) => {\n const editableFormula = fromExecutableFormula(column.formula);\n if (!editableFormula) return false;\n\n const fieldNamesUsed =\n parseEditableFormulaBase(editableFormula, true)?.map((t) => t.token) ??\n [];\n\n return fieldNamesUsed.every(\n (f) => listingFormulaFields.includes(f) || tagKeys.includes(f)\n );\n });\n};\n\n/**\n * Mock listing data explicitly used to test-evaluate formula\n * not putting under src/mock to reduce coupling\n */\nexport const LISTING_FORMULA_TEST_DATA: Listing = {\n availQty: 1,\n ticketCnt: 1,\n unitCst: { amt: 1 } as UiMoney,\n faceValue: { amt: 2 } as UiMoney,\n listPrice: 1,\n allInPrice: 1,\n procsFloor: 1,\n procsCeil: 1,\n undAbsAmt: 1,\n undRelAmt: 1,\n compFloor: 1,\n} as Listing;\n\n/**\n * Parse editableFormula, transforming formula into plain literals and contentId tied with ColumnId and field name\n * Used for preview and validation.\n * E.g. `${ticketCount} + 20` ==> [ContentId.Original, ' + 20']\n * @param editableFormula\n * @returns parsed list of tokens, or undefined if failed to parse\n */\nexport const parseEditableFormula = (\n editableFormula: FormulaEditable | undefined\n): string[] | undefined => {\n const parsedTokenResult = parseEditableFormulaBase(editableFormula);\n if (!parsedTokenResult) {\n return;\n }\n\n const tokens: string[] = [];\n parsedTokenResult.forEach((tokenResult) => {\n if (tokenResult.isPlainToken) {\n tokens.push(tokenResult.token);\n } else {\n const fieldName = tokenResult.token;\n if (\n LISTING_FORMULA_FIELDS_TO_CID[\n fieldName as ListingFormulaFieldsListing\n ] == null\n ) {\n // Tag field\n tokens.push(tagFieldNameToKey(fieldName));\n return;\n }\n tokens.push(\n LISTING_FORMULA_FIELDS_TO_CID[fieldName as ListingFormulaFieldsListing]\n );\n }\n });\n\n return tokens;\n};\n\nexport const findDependentListingTableColumnIds = (\n editableFormula: FormulaEditable\n): ListingTableColumnId[] => {\n const fieldNames =\n parseEditableFormulaBase(editableFormula, true)?.map((t) => t.token) ?? [];\n\n return (\n Object.entries(FORMULA_FIELD_TO_COLUMN_ID)\n .filter(([key]) => fieldNames.includes(key))\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .map(([_, value]) => value)\n );\n};\n\n/**\n * Evaluate formula defined in custom listing column.\n *\n * Example formula: \"data?.ticketCount + 20\"\n * @param formula\n * @param listing\n * @returns evaluated value, undefined on syntax error\n */\nexport const evaluateFormula = (\n formula: FormulaExecutable,\n listing?: Listing | null\n) => {\n const data = listingToFormulaFields(listing);\n\n return evaluateFormulaBase(formula, data);\n};\n\nconst createListingTestData = (\n tagsForEntityType: Tag[] | undefined\n): Listing => {\n const tagData = tagsForEntityType?.map((t) => {\n t.value = '1';\n return t;\n });\n\n return {\n ...LISTING_FORMULA_TEST_DATA,\n tags: tagData ?? [],\n };\n};\n\nexport const validateFormula = (\n formula: string,\n tagsForEntityType: Tag[] | undefined\n) => {\n return (\n parseExecutableFormula(formula) != null &&\n evaluateFormula(formula, createListingTestData(tagsForEntityType)) !=\n null &&\n validateFormulaSingleStatement(formula)\n );\n};\n\nconst getTokenFromFieldName = (fieldName: string): MathematicalToken => {\n const columnId =\n FORMULA_FIELD_TO_COLUMN_ID[fieldName as ListingFormulaFieldsListing];\n\n if (columnId == null) {\n // Tag field - here we assume it's not currency - might need to change\n return {\n token: `tag-${fieldName}`,\n isPlainToken: false,\n isCurrency: false,\n };\n }\n\n const { isCurrency, isPercent } =\n LISTING_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[columnId];\n\n return {\n token: columnId,\n isPlainToken: false,\n isCurrency,\n isPercent,\n };\n};\n\n/**\n * Parse editableFormula, transforming formula into mathematical tokens\n * to infer personalization flags\n *\n * E.g. `${ticketCount} + 20` ==> [\n * { token: 'ticketCount', isCurrency: false, isPercent: false, isPlainToken: false },\n * { token: '+', isCurrency: false, isPercent: false, isPlainToken: true },\n * { token: '20', isCurrency: false, isPercent: false, isPlainToken: true }\n * ]\n * @param editableFormula\n * @returns parsed list of tokens, or undefined if failed to parse\n */\nexport const parseMathematicalTokensFromFormula = (\n editableFormula: FormulaEditable | undefined\n): MathematicalToken[] | undefined => {\n return parseMathematicalTokensFromFormulaBase(\n editableFormula,\n getTokenFromFieldName\n );\n};\n\nexport const getPersonalizationFlagsFromFormula = (\n executableFormula: FormulaExecutable\n): Partial => {\n const editableFormula = fromExecutableFormula(executableFormula);\n const mathTokens = parseMathematicalTokensFromFormula(editableFormula);\n\n return getPersonalizationFlagsFromFormulaBase(mathTokens);\n};\n","export const ACTIVE_EVENT_IDS_QUERY_PARAM = 'activeEventIds';\nexport const ACTIVE_EVENT_IDS_2_QUERY_PARAM = 'activeEventIds2';\nexport const TAB_EVENT_IDS_QUERY_PARAM = 'tabEventIds';\nexport const TAB_EVENT_IDS_2_QUERY_PARAM = 'tabEventIds2';\nexport const TAB_EVENT_IDS_SEPARATOR = ',';\nexport const POS_EVENT_IDS_SEPARATOR = '|';\n","import { useCallback, useMemo } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n POS_EVENT_IDS_SEPARATOR,\n TAB_EVENT_IDS_2_QUERY_PARAM,\n TAB_EVENT_IDS_QUERY_PARAM,\n TAB_EVENT_IDS_SEPARATOR,\n} from 'src/navigations/Routes/InventoryEvent/InventoryEvent.constants';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\n\nexport const useCatchUpParams = () => {\n const [searchParams, setSearchParams] = useSearchParams();\n const { mainRoute } = useAppContext();\n\n const posEventIds = searchParams\n .get(TAB_EVENT_IDS_QUERY_PARAM)\n ?.toLowerCase();\n const activeEventIds = searchParams\n .get(ACTIVE_EVENT_IDS_QUERY_PARAM)\n ?.toLowerCase();\n\n const viagVirtualIds = searchParams\n .get(TAB_EVENT_IDS_2_QUERY_PARAM)\n ?.toLowerCase();\n const activeViagVirtualId = searchParams\n .get(ACTIVE_EVENT_IDS_2_QUERY_PARAM)\n ?.toLowerCase();\n\n // [['event1', 'event2'], ['event3', 'event4'], ['event5']]\n const posEventIdsList = useMemo(\n () =>\n posEventIds\n ?.split(TAB_EVENT_IDS_SEPARATOR)\n ?.map((eid) => eid.split(POS_EVENT_IDS_SEPARATOR)),\n [posEventIds]\n );\n\n const viagVirtualIdsList = useMemo(\n () => viagVirtualIds?.split(TAB_EVENT_IDS_SEPARATOR),\n [viagVirtualIds]\n );\n\n const numberOfEvents = useMemo(\n () => viagVirtualIdsList?.length ?? posEventIdsList?.length,\n [posEventIdsList?.length, viagVirtualIdsList?.length]\n );\n\n const selectedIndex = useMemo(() => {\n if (activeEventIds && posEventIdsList) {\n const activePosEventIds = activeEventIds.split(POS_EVENT_IDS_SEPARATOR);\n return posEventIdsList.findIndex((posEventIds) =>\n activePosEventIds.some((posEventId) => posEventIds.includes(posEventId))\n );\n } else if (activeViagVirtualId && viagVirtualIdsList) {\n return viagVirtualIdsList.findIndex(\n (viagId) => activeViagVirtualId === viagId\n );\n }\n }, [\n activeEventIds,\n activeViagVirtualId,\n posEventIdsList,\n viagVirtualIdsList,\n ]);\n\n const isCatchupMode = useMemo(\n () =>\n mainRoute === MainRoute.InventoryEvent &&\n ((activeEventIds && posEventIds) ||\n (activeViagVirtualId && viagVirtualIds)),\n [\n mainRoute,\n activeEventIds,\n posEventIds,\n activeViagVirtualId,\n viagVirtualIds,\n ]\n );\n\n const onPrevClick = useCallback(() => {\n if (\n (posEventIdsList == null && viagVirtualIdsList == null) ||\n selectedIndex == null\n ) {\n return;\n }\n const index = selectedIndex - 1;\n if (index >= 0) {\n if (posEventIdsList) {\n setSearchParams((prev) => {\n prev.set(\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n posEventIdsList[index].join(POS_EVENT_IDS_SEPARATOR)\n );\n return prev;\n });\n } else if (viagVirtualIdsList) {\n setSearchParams((prev) => {\n prev.set(ACTIVE_EVENT_IDS_2_QUERY_PARAM, viagVirtualIdsList[index]);\n return prev;\n });\n }\n }\n }, [posEventIdsList, selectedIndex, setSearchParams, viagVirtualIdsList]);\n\n const onNextClick = useCallback(() => {\n if (\n (posEventIdsList == null && viagVirtualIdsList == null) ||\n selectedIndex == null\n ) {\n return;\n }\n const index = selectedIndex + 1;\n if (posEventIdsList) {\n if (index < posEventIdsList.length) {\n setSearchParams((prev) => {\n prev.set(\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n posEventIdsList[index].join(POS_EVENT_IDS_SEPARATOR)\n );\n return prev;\n });\n }\n } else if (viagVirtualIdsList) {\n if (index < viagVirtualIdsList.length) {\n setSearchParams((prev) => {\n prev.set(ACTIVE_EVENT_IDS_2_QUERY_PARAM, viagVirtualIdsList[index]);\n return prev;\n });\n }\n }\n }, [posEventIdsList, selectedIndex, setSearchParams, viagVirtualIdsList]);\n\n return {\n posEventIdsList,\n viagVirtualIdsList,\n activeEventIds,\n activeViagVirtualId,\n numberOfEvents,\n selectedIndex,\n onPrevClick,\n onNextClick,\n setSearchParams,\n isCatchupMode,\n };\n};\n","import signalR, {\n HubConnection,\n HubConnectionBuilder,\n HubConnectionState,\n} from '@microsoft/signalr';\nimport {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\nimport { InventoryEventTabs } from 'src/components/Listings/InventoryEventPage';\nimport { useCatchUpParams } from 'src/components/Listings/InventoryEventPage/InventoryEventPage.hooks';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n EventSessionIdQueryParam,\n EventSessionRoleQueryParam,\n} from 'src/utils/constants/constants';\nimport { newGuidId } from 'src/utils/idUtils';\nimport {\n ActionOutboxEntityType,\n Feature,\n ListingClient,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useCatalogDataContext } from '../CatalogDataContext';\nimport { SignalRLogger } from '../NotificationsContext';\n\nexport enum EventSessionRole {\n Main = 'main',\n SidePanel = 'sidePanel',\n}\n\nexport type IEventHubContext = {\n hubConnection?: HubConnection;\n onStartSession: () => void;\n onCancelSession: () => void;\n onSelectListing: (listingId: number) => void;\n onSectionsSelected: (sectionIds: number[]) => void;\n onUpdateListing: (listingId: number) => void;\n onUpdateInventoryTab: (tab: InventoryEventTabs) => void;\n sessionRole: EventSessionRole | undefined;\n selectedListingId: number | undefined;\n selectedVenueMapSections: number[];\n inventoryTab: InventoryEventTabs | undefined;\n enabled: boolean;\n};\n\nexport const EventHubContext = createContext({\n hubConnection: undefined,\n onStartSession: () => void 0,\n onCancelSession: () => void 0,\n onSelectListing: (_) => void 0,\n onSectionsSelected: (_: number[]) => void 0,\n onUpdateListing: (_) => void 0,\n onUpdateInventoryTab: (_) => void 0,\n sessionRole: undefined,\n selectedListingId: undefined,\n selectedVenueMapSections: [],\n inventoryTab: undefined,\n enabled: false,\n});\n\nexport const useEventHubContext = () => useContext(EventHubContext);\n\nexport function EventHubContextProvider({ children }: { children: ReactNode }) {\n const { activeAccountWebClientConfig } = useAppContext();\n const hasEventMultiScreenFeature = useUserHasFeature(\n Feature.EventMultiScreen\n );\n const { updateItemInEvent } = useCatalogDataContext();\n const [hubConnection, setHubConnection] = useState();\n\n const navigate = useNavigate();\n\n const [searchParams] = useSearchParams();\n const { isCatchupMode } = useCatchUpParams();\n\n const sessionId = searchParams.get(EventSessionIdQueryParam) ?? undefined;\n const sessionRole = searchParams.get(EventSessionRoleQueryParam) ?? undefined;\n\n const [selectedListingId, setSelectedListingId] = useState();\n const [inventoryTab, setInventoryTab] = useState();\n const [selectedVenueMapSections, setSelectedVenueMapSections] = useState<\n number[]\n >([]);\n\n const reset = useCallback(() => {\n setSelectedListingId(undefined);\n setInventoryTab(undefined);\n setSelectedVenueMapSections([]);\n }, []);\n\n useEffect(() => {\n // Only attempt to connect to signal R when there is a login\n if (\n hasEventMultiScreenFeature &&\n activeAccountWebClientConfig.activeAccountId\n ) {\n if (\n !hubConnection ||\n hubConnection.state === HubConnectionState.Disconnected ||\n hubConnection.state === HubConnectionState.Disconnecting\n ) {\n const newHubConnection = new HubConnectionBuilder()\n .withUrl('/hubs/event')\n .withAutomaticReconnect()\n .configureLogging(new SignalRLogger())\n .build();\n\n setHubConnection(newHubConnection);\n\n newHubConnection\n .start()\n .then(() => {\n console.debug(\n `Event connection ready with id: ${newHubConnection.connectionId}`\n );\n })\n .catch((err) => {\n console.warn('Event could not be started at this time: ' + err);\n });\n\n newHubConnection.onclose((err) => {\n console.debug('Event connection closed', err);\n });\n }\n }\n\n return () => {\n if (\n hubConnection &&\n !(\n hubConnection.state === HubConnectionState.Disconnected ||\n hubConnection.state === HubConnectionState.Disconnecting\n )\n ) {\n console.debug(\n `Stopping ListingNotification connection (state: ${hubConnection.state}) with id: ${hubConnection.connectionId}`\n );\n hubConnection.stop();\n setHubConnection(undefined);\n reset();\n }\n };\n }, [\n activeAccountWebClientConfig.activeAccountId,\n hasEventMultiScreenFeature,\n hubConnection,\n reset,\n ]);\n\n const onStartSession = useCallback(() => {\n if (sessionRole || !hasEventMultiScreenFeature) {\n return;\n }\n const sessionId = newGuidId();\n\n searchParams.set(EventSessionIdQueryParam, sessionId);\n searchParams.set(EventSessionRoleQueryParam, EventSessionRole.Main);\n\n navigate(`/inventory/event?${searchParams.toString()}`, {\n replace: true,\n });\n\n searchParams.set(EventSessionRoleQueryParam, EventSessionRole.SidePanel);\n\n window.open(`/inventory/event?${searchParams.toString()}`, '_blank');\n }, [hasEventMultiScreenFeature, navigate, searchParams, sessionRole]);\n\n const onCancelSession = useCallback(() => {\n if (hasEventMultiScreenFeature && sessionId) {\n hubConnection?.invoke('StopSession', sessionId);\n }\n }, [hasEventMultiScreenFeature, hubConnection, sessionId]);\n\n const onSelectListing = useCallback(\n (listingId: number) => {\n if (hasEventMultiScreenFeature && sessionId) {\n hubConnection?.invoke('SelectListing', sessionId, listingId);\n }\n },\n [hasEventMultiScreenFeature, sessionId, hubConnection]\n );\n\n const onUpdateListing = useCallback(\n (listingId: number) => {\n if (hasEventMultiScreenFeature && sessionId && sessionRole && listingId) {\n hubConnection?.invoke(\n 'UpdateListing',\n sessionId,\n listingId,\n sessionRole\n );\n }\n },\n [hasEventMultiScreenFeature, hubConnection, sessionId, sessionRole]\n );\n\n // This is to broadcast the venue map section selection from side panel to main\n const onSectionsSelected = useCallback(\n (selectedSections: number[]) => {\n if (\n hasEventMultiScreenFeature &&\n sessionId &&\n sessionRole === EventSessionRole.SidePanel\n ) {\n hubConnection?.invoke(\n 'UpdateSelectedSections',\n sessionId,\n JSON.stringify(selectedSections),\n sessionRole\n );\n }\n },\n [hasEventMultiScreenFeature, hubConnection, sessionId, sessionRole]\n );\n\n // This is to broadcast the event inventory tab update from main to side panel\n const onUpdateInventoryTab = useCallback(\n (inventoryTab: InventoryEventTabs) => {\n if (\n hasEventMultiScreenFeature &&\n sessionId &&\n sessionRole === EventSessionRole.Main &&\n inventoryTab\n ) {\n hubConnection?.invoke(\n 'UpdateInventoryTab',\n sessionId,\n inventoryTab,\n sessionRole\n );\n }\n },\n [hasEventMultiScreenFeature, hubConnection, sessionId, sessionRole]\n );\n\n useEffect(() => {\n const onListingSelected = (serverSessionId: string, listingId: number) => {\n if (\n sessionId === serverSessionId &&\n sessionRole === EventSessionRole.SidePanel\n ) {\n setSelectedListingId(listingId);\n }\n };\n const onStopSession = (serverSessionId: string) => {\n if (sessionId === serverSessionId) {\n searchParams.delete(EventSessionIdQueryParam);\n searchParams.delete(EventSessionRoleQueryParam);\n\n navigate(`/inventory/event?${searchParams.toString()}`, {\n replace: true,\n });\n reset();\n }\n };\n const onListingUpdated = async (\n serverSessionId: string,\n listingId: number,\n fromRole: EventSessionRole\n ) => {\n if (\n hasEventMultiScreenFeature &&\n sessionId === serverSessionId &&\n fromRole !== sessionRole\n ) {\n // Refersh listing (whole - since we don't know which part of the listing was updated)\n const updated = await new ListingClient({\n activeAccountId: activeAccountWebClientConfig.activeAccountId,\n }).getListingByListingId(listingId, undefined, undefined);\n if (updated) {\n updateItemInEvent(updated, ActionOutboxEntityType.Listing);\n }\n }\n };\n const onInventoryTabUpdated = (\n serverSessionId: string,\n tab: InventoryEventTabs,\n _: EventSessionRole\n ) => {\n if (\n sessionId === serverSessionId &&\n sessionRole === EventSessionRole.SidePanel\n ) {\n setInventoryTab(tab);\n }\n };\n const onVenueMapSectionsUpdated = (\n serverSessionId: string,\n selectedSectionsJson: string,\n _: EventSessionRole\n ) => {\n if (\n sessionId === serverSessionId &&\n sessionRole === EventSessionRole.Main\n ) {\n setSelectedVenueMapSections(\n JSON.parse(selectedSectionsJson) as number[]\n );\n }\n };\n hubConnection?.on('OnListingSelected', onListingSelected);\n hubConnection?.on('OnListingUpdated', onListingUpdated);\n hubConnection?.on('OnInventoryTabUpdated', onInventoryTabUpdated);\n hubConnection?.on('OnVenueMapSectionsUpdated', onVenueMapSectionsUpdated);\n hubConnection?.on('OnStopSession', onStopSession);\n\n return () => {\n hubConnection?.off('OnListingSelected', onListingSelected);\n hubConnection?.off('OnListingUpdated', onListingUpdated);\n hubConnection?.off('OnInventoryTabUpdated', onInventoryTabUpdated);\n hubConnection?.off(\n 'OnVenueMapSectionsUpdated',\n onVenueMapSectionsUpdated\n );\n hubConnection?.off('OnStopSession', onStopSession);\n };\n }, [\n sessionId,\n hubConnection,\n sessionRole,\n onStartSession,\n onCancelSession,\n searchParams,\n navigate,\n reset,\n hasEventMultiScreenFeature,\n activeAccountWebClientConfig.activeAccountId,\n updateItemInEvent,\n setInventoryTab,\n ]);\n\n const enabled = useMemo(() => {\n // Disable when feature is off\n if (!hasEventMultiScreenFeature) {\n return false;\n }\n\n if (hubConnection?.state !== HubConnectionState.Connected) {\n return false;\n }\n\n // disable for catchup mode\n if (isCatchupMode) {\n return false;\n }\n\n return true;\n }, [hasEventMultiScreenFeature, hubConnection?.state, isCatchupMode]);\n\n return (\n \n {children}\n \n );\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { useAlertWithSuppressionDialog } from './useAlertWithSuppressionDialog';\n\nexport function useManualPriceAdjustFloorOrCeilingDialog(\n listPrice: number | null,\n netProceedsFloor: number | null | undefined,\n netProceedsCeiling: number | null,\n onOkay: () => void,\n onCancel: () => void\n) {\n const { value, ...rest } = useAlertWithSuppressionDialog(\n 'manualPriceAdjustFloorOrCeilingTimestamp',\n onOkay,\n onCancel\n );\n return {\n ...rest,\n lastTimeStamp: value?.manualPriceAdjustFloorOrCeilingTimestamp,\n bodyText: (\n (netProceedsCeiling ?? Number.MAX_VALUE)\n ? ContentId.ManualPriceAdjustCeilingWarning\n : ContentId.EmptyContent\n }\n />\n ),\n };\n}\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { FormProvider, useForm, UseFormSetValue } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useEventHubContext } from 'src/contexts/EventHubContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport {\n Alert,\n AlertWithSuppressionDialog,\n useManualPriceDisableAutoPricingDialog,\n useSuspiciousPriceChangeDialog,\n} from 'src/dialogs/AlertWithSuppressionDialog';\nimport { useManualPriceAdjustFloorOrCeilingDialog } from 'src/dialogs/AlertWithSuppressionDialog/useManualPriceAdjustFloorOrCeilingDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n validateAutoPricingSettings,\n validateCompListingSettings,\n validateUndercutSettings,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isDatePassedHours } from 'src/utils/dateTimeUtils';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport {\n getListingDetailsUpdateInput,\n isSuspiciousPriceChange,\n} from 'src/utils/inventoryUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n Feature,\n Listing,\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingDetailsAutoPricingSectionUpdates,\n ListingDetailsPricingSectionUpdates,\n ListingDetailsUpdateInput,\n} from 'src/WebApiController';\n\nimport { ListingWithEvent } from '../ListingTable.types';\nimport { ListingPricingInput } from './ListingPriceForm.types';\n\nexport function ListingPricingForm({\n rowData,\n tableRow,\n}: {\n rowData: ListingWithEvent | null;\n tableRow: React.ReactNode;\n}) {\n const { getUiCurrency } = useLocalizationContext();\n const uiCurrency = useMemo(\n () => getUiCurrency(rowData?.listing?.currency),\n [getUiCurrency, rowData?.listing?.currency]\n );\n const hasSectionalLoadDataFeature = useUserHasFeature(\n Feature.ListingLoadBySection\n );\n const hasAllowSeatScoreCompListingMode = useUserHasFeature(\n Feature.AllowSeatScoreCompListingMode\n );\n\n const createListingPricingInput = useCallback(\n (listing?: Listing | null) => ({\n ...getListingDetailsUpdateInput(\n listing as ListingDetails,\n uiCurrency,\n undefined,\n null,\n null,\n false,\n null,\n hasAllowSeatScoreCompListingMode\n ),\n isSubmitting: false,\n rowIndex: rowData?.rowIndex || 0,\n currentPageIndex: rowData?.currentPageIndex || 0,\n }),\n [\n hasAllowSeatScoreCompListingMode,\n rowData?.currentPageIndex,\n rowData?.rowIndex,\n uiCurrency,\n ]\n );\n\n const methods = useForm({\n defaultValues: createListingPricingInput(rowData?.listing),\n });\n const { activeAccountWebClientConfig } = useAppContext();\n const {\n reset,\n formState,\n watch,\n setValue,\n setError,\n clearErrors,\n getValues,\n } = methods;\n const { showErrorDialog } = useErrorBoundaryContext();\n const setPriceSettingValues =\n setValue as unknown as UseFormSetValue;\n const { updateItemInEvent } = useCatalogDataContext();\n const { onUpdateListing } = useEventHubContext();\n\n // Nuance - this is necessary so the form picks up whenever the listing changed outside the table\n // like when ListingModal made edits to the data of this listing\n useEffect(() => {\n if (\n formState.defaultValues == null ||\n (rowData?.listing &&\n (rowData.listing.rowVer === 0 || // zero means reset\n rowData.listing.rowVer > (formState.defaultValues.rowVersion ?? 0)))\n ) {\n const newForm = createListingPricingInput(rowData?.listing);\n if (!isEqual(newForm, formState.defaultValues)) {\n reset(createListingPricingInput(rowData?.listing));\n }\n }\n }, [\n methods,\n reset,\n rowData?.listing,\n rowData?.rowIndex,\n rowData?.currentPageIndex,\n uiCurrency,\n createListingPricingInput,\n formState.defaultValues,\n ]);\n\n const listPrice = watch('listPrice') ?? -1;\n const allInPrice = watch('allInPrice') ?? -1;\n const isSubmitting = watch('isSubmitting');\n const autoPricingEnabled = watch('autoPricingEnabled');\n const netProceedsFloor = watch('netProceedsFloor') ?? 0;\n const netProceedsCeiling = watch('netProceedsCeiling');\n const isSubmittingPricingSettings = watch('isSubmittingPricingSettings');\n const compListingFloor = watch('compListingFloor');\n const compListingCeiling = watch('compListingCeiling');\n const undercutAbsoluteAmount = watch('undercutAbsoluteAmount');\n const undercutRelativeAmount = watch('undercutRelativeAmount');\n const undercutMode = watch('undercutMode');\n const compListingMode = watch('compListingMode');\n const compListingQuantityScoreAdjustmentEnabled = watch(\n 'compListingQuantityScoreAdjustmentEnabled'\n );\n const compListingQuantityScoreAdjustmentOverrideJson = watch(\n 'compListingQuantityScoreAdjustmentOverrideJson'\n );\n const compListingOnlyForSameZoneEnabled = watch(\n 'compListingOnlyForSameZoneEnabled'\n );\n const compListingOnlyForSelectedSectionsEnabled = watch(\n 'compListingOnlyForSelectedSectionsEnabled'\n );\n const compListingExcludeFanInventory = watch(\n 'compListingExcludeFanInventory'\n );\n const outlierMode = watch('outlierMode');\n const outlierStandardDeviations = watch('outlierStandardDeviations');\n const outlierKthLowestLimit = watch('outlierKthLowestLimit');\n const outlierKthLowestLimitAbsoluteSpacing = watch(\n 'outlierKthLowestLimitAbsoluteSpacing'\n );\n const outlierKthLowestLimitRelativeSpacing = watch(\n 'outlierKthLowestLimitRelativeSpacing'\n );\n const circuitBreakerMinCompListingCount = watch(\n 'circuitBreakerMinCompListingCount'\n );\n const circuitBreakerMaxDiscountVelocityPercent = watch(\n 'circuitBreakerMaxDiscountVelocityPercent'\n );\n const circuitBreakerMaxDiscountVelocityTicksInHours = watch(\n 'circuitBreakerMaxDiscountVelocityTicksInHours'\n );\n\n const submitPriceChange = useCallback(() => {\n if (!rowData?.listing) return;\n\n const values = getValues();\n\n tryInvokeApi(\n async () => {\n const client = new ListingClient(activeAccountWebClientConfig);\n const listing = rowData!.listing!;\n const input: ListingDetailsPricingSectionUpdates = {\n id: listing.id,\n rowVersion: null,\n listPrice: values.listPrice ?? listPrice,\n allInPrice: null, // will be inferred from list price\n buyerUserId: null,\n marketplacePriceUpdates: [],\n netProceedsFloor: values.netProceedsFloor ?? netProceedsFloor,\n netProceedsCeiling: values.netProceedsCeiling ?? netProceedsCeiling,\n autoPricingEnabled: values.autoPricingEnabled ?? autoPricingEnabled,\n pricerSellerUserId: listing.pricerId,\n currencyCode: listing.currency,\n };\n const result = await client.updateListingPricingSection(input);\n if (isSuccess(result)) {\n // Refersh listing\n const updated = await client.getListingByListingId(\n listing.id,\n hasSectionalLoadDataFeature\n ? (listing as ListingDetails)\n : undefined,\n hasSectionalLoadDataFeature\n ? [ListingDetailDataField.Pricing]\n : null\n );\n if (updated) {\n updateItemInEvent(updated, ActionOutboxEntityType.Listing);\n onUpdateListing(updated.id);\n }\n }\n return;\n },\n (error) => {\n showErrorDialog('ListingClient.updateListing(prices)', error, {\n trackErrorData: { listingId: rowData?.listing!.id, listPrice },\n });\n }\n );\n }, [\n rowData,\n activeAccountWebClientConfig,\n listPrice,\n netProceedsFloor,\n netProceedsCeiling,\n autoPricingEnabled,\n hasSectionalLoadDataFeature,\n updateItemInEvent,\n onUpdateListing,\n showErrorDialog,\n getValues,\n ]);\n\n const warningDialog = useBasicDialog();\n\n const submitPricingSettingsChange = useCallback(\n (listForm: ListingPricingInput) => {\n if (!rowData?.listing) return;\n\n tryInvokeApi(\n async () => {\n const client = new ListingClient(activeAccountWebClientConfig);\n const listing = rowData!.listing!;\n const input: ListingDetailsAutoPricingSectionUpdates = {\n ...listForm,\n id: listing.id,\n rowVersion: null,\n autoPriceFrequency: null,\n compListingQuantityFilters: null,\n compListingQuantityScoreAdjustmentOverrides: null,\n scoreModel: null,\n autoPricingDefaultQuantityFiltersJson: null,\n venueZoneOverrideId: null,\n venueZoneConfigType: null,\n };\n await client.updateListingAutoPricingSection(input);\n\n // Refersh listing\n const updatedListing = await client.getListingByListingId(\n listing.id,\n hasSectionalLoadDataFeature\n ? (listing as ListingDetails)\n : undefined,\n hasSectionalLoadDataFeature\n ? [\n ListingDetailDataField.Pricing, // To refresh pricing related listing fields, i.e. auto pricing enabled\n ListingDetailDataField.AutoPricing,\n ]\n : null\n );\n if (updatedListing) {\n updateItemInEvent(updatedListing, ActionOutboxEntityType.Listing);\n reset(createListingPricingInput(updatedListing));\n onUpdateListing(updatedListing.id);\n }\n },\n (error) => {\n showErrorDialog(\n 'ListingClient.updateListing(pricingSettings)',\n error,\n { trackErrorData: listForm }\n );\n }\n );\n },\n [\n rowData,\n activeAccountWebClientConfig,\n hasSectionalLoadDataFeature,\n updateItemInEvent,\n reset,\n createListingPricingInput,\n onUpdateListing,\n showErrorDialog,\n ]\n );\n\n const suspiciousPriceChangeHookProps = useSuspiciousPriceChangeDialog(\n () => {\n submitPriceChange();\n },\n () => {\n // revert back\n setValue('listPrice', formState.defaultValues?.listPrice ?? null);\n setValue('allInPrice', formState.defaultValues?.allInPrice ?? null);\n setValue('isSubmitting', false);\n }\n );\n\n const manualPriceDisableAutoPricingProps =\n useManualPriceDisableAutoPricingDialog(() =>\n setValue('autoPricingEnabled', false)\n );\n\n const manualPriceAdjustFloorCeilingProps =\n useManualPriceAdjustFloorOrCeilingDialog(\n listPrice,\n netProceedsFloor,\n netProceedsCeiling,\n () => {\n if ((listPrice ?? 0) < (netProceedsFloor ?? Number.MIN_VALUE)) {\n setValue('netProceedsFloor', listPrice);\n } else if (\n (listPrice ?? 0) > (netProceedsCeiling ?? Number.MAX_VALUE)\n ) {\n setValue('netProceedsCeiling', listPrice);\n }\n },\n () => {\n if ((listPrice ?? 0) < (netProceedsFloor ?? Number.MIN_VALUE)) {\n setValue('listPrice', netProceedsFloor);\n } else if (\n (listPrice ?? 0) > (netProceedsCeiling ?? Number.MAX_VALUE)\n ) {\n setValue('listPrice', netProceedsCeiling);\n }\n }\n );\n\n const requiredMsg = useContent(ContentId.Required);\n const [alerts, setAlerts] = useState([]);\n\n const floorMustBeLessThanCeilingError = useContent(\n ContentId.FloorMustBeLessThanCeiling\n );\n const compListingFloorCeilingError = useContent(\n ContentId.CompListingFloorMustLessThanCeiling\n );\n\n useEffect(() => {\n // Input validity?\n if (isSubmittingPricingSettings) {\n if (\n autoPricingEnabled === formState.defaultValues?.autoPricingEnabled &&\n undercutAbsoluteAmount ===\n formState.defaultValues?.undercutAbsoluteAmount &&\n undercutRelativeAmount ===\n formState.defaultValues?.undercutRelativeAmount &&\n undercutMode === formState.defaultValues?.undercutMode &&\n compListingMode === formState.defaultValues?.compListingMode &&\n compListingCeiling === formState.defaultValues?.compListingCeiling &&\n compListingFloor === formState.defaultValues?.compListingFloor &&\n compListingQuantityScoreAdjustmentEnabled ===\n formState.defaultValues?.compListingQuantityScoreAdjustmentEnabled &&\n compListingOnlyForSelectedSectionsEnabled ===\n formState.defaultValues?.compListingOnlyForSelectedSectionsEnabled &&\n compListingQuantityScoreAdjustmentOverrideJson ===\n formState.defaultValues\n ?.compListingQuantityScoreAdjustmentOverrideJson &&\n compListingOnlyForSameZoneEnabled ===\n formState.defaultValues?.compListingOnlyForSameZoneEnabled &&\n compListingExcludeFanInventory ===\n formState.defaultValues?.compListingExcludeFanInventory &&\n outlierMode === formState.defaultValues?.outlierMode &&\n outlierStandardDeviations ===\n formState.defaultValues?.outlierStandardDeviations &&\n outlierKthLowestLimit ===\n formState.defaultValues?.outlierKthLowestLimit &&\n outlierKthLowestLimitAbsoluteSpacing ===\n formState.defaultValues?.outlierKthLowestLimitAbsoluteSpacing &&\n outlierKthLowestLimitRelativeSpacing ===\n formState.defaultValues?.outlierKthLowestLimitRelativeSpacing &&\n circuitBreakerMinCompListingCount ===\n formState.defaultValues?.circuitBreakerMinCompListingCount &&\n circuitBreakerMaxDiscountVelocityPercent ===\n formState.defaultValues?.circuitBreakerMaxDiscountVelocityPercent &&\n circuitBreakerMaxDiscountVelocityTicksInHours ===\n formState.defaultValues?.circuitBreakerMaxDiscountVelocityTicksInHours\n ) {\n // No change, just quit\n setValue('isSubmittingPricingSettings', false);\n return;\n }\n\n let hasErrors = false;\n const listForm = getValues();\n\n if (autoPricingEnabled !== formState.defaultValues?.autoPricingEnabled) {\n // Switching on autopricing might set all other values to default, so handle here first\n if (\n !validateAutoPricingSettings(\n clearErrors,\n setError,\n setPriceSettingValues,\n listForm,\n floorMustBeLessThanCeilingError,\n compListingFloorCeilingError,\n requiredMsg\n )\n ) {\n // Reset the field to the original values\n setValue('autoPricingEnabled', rowData?.listing?.isAutoPrc ?? false);\n }\n } else {\n // Only one of the fields should be changed within this branch\n if (\n compListingMode !== formState.defaultValues?.compListingMode ||\n compListingCeiling !== formState.defaultValues?.compListingCeiling ||\n compListingFloor !== formState.defaultValues?.compListingFloor\n ) {\n const fieldEdited =\n compListingCeiling !== formState.defaultValues?.compListingCeiling\n ? 'compListingCeiling'\n : compListingFloor !== formState.defaultValues?.compListingFloor\n ? 'compListingFloor'\n : 'compListingMode';\n if (\n !validateCompListingSettings(\n clearErrors,\n setError,\n setPriceSettingValues,\n listForm,\n compListingFloorCeilingError,\n requiredMsg,\n fieldEdited\n )\n ) {\n hasErrors = true;\n }\n }\n\n if (\n undercutAbsoluteAmount !==\n formState.defaultValues?.undercutAbsoluteAmount ||\n undercutRelativeAmount !==\n formState.defaultValues?.undercutRelativeAmount ||\n undercutMode !== formState.defaultValues?.undercutMode\n ) {\n const fieldEdited =\n undercutAbsoluteAmount !==\n formState.defaultValues?.undercutAbsoluteAmount\n ? 'undercutAbsoluteAmount'\n : undercutRelativeAmount !==\n formState.defaultValues?.undercutRelativeAmount\n ? 'undercutRelativeAmount'\n : 'undercutMode';\n if (\n !validateUndercutSettings(\n clearErrors,\n setPriceSettingValues,\n listForm,\n fieldEdited\n )\n ) {\n hasErrors = true;\n }\n }\n }\n\n if (hasErrors) {\n setValue('isSubmittingPricingSettings', false);\n return;\n }\n\n submitPricingSettingsChange(listForm);\n } else {\n setValue('isSubmittingPricingSettings', false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isSubmittingPricingSettings]);\n\n useEffect(() => {\n if (\n isSubmitting &&\n (listPrice >= 0 || allInPrice >= 0 || netProceedsFloor)\n ) {\n if (\n listPrice === formState.defaultValues?.listPrice &&\n allInPrice === formState.defaultValues?.allInPrice &&\n netProceedsFloor === formState.defaultValues?.netProceedsFloor\n ) {\n // No change, just quit\n setValue('isSubmitting', false);\n return;\n }\n\n clearErrors('listPrice');\n clearErrors('netProceedsFloor');\n\n let hasErrors = false;\n\n if (listPrice < 0) {\n setError('listPrice', { message: requiredMsg });\n hasErrors = true;\n }\n if (netProceedsFloor < 0) {\n setError('netProceedsFloor', { message: requiredMsg });\n hasErrors = true;\n }\n\n if (hasErrors) {\n setValue('isSubmitting', false);\n return;\n }\n\n const newAlerts = [];\n // Check only for updating list price\n if (listPrice > 0 && listPrice !== formState.defaultValues?.listPrice) {\n // Only validate for suspicious price change if listPrice > 0\n if (\n listPrice < (netProceedsFloor ?? Number.MIN_VALUE) ||\n listPrice > (netProceedsCeiling ?? Number.MAX_VALUE)\n ) {\n if (\n isDatePassedHours(\n manualPriceAdjustFloorCeilingProps.lastTimeStamp,\n 1\n )\n ) {\n newAlerts.push(manualPriceAdjustFloorCeilingProps);\n }\n }\n\n if (\n autoPricingEnabled &&\n isDatePassedHours(manualPriceDisableAutoPricingProps.lastTimeStamp, 1)\n ) {\n newAlerts.push(manualPriceDisableAutoPricingProps);\n }\n\n const showWarning = isSuspiciousPriceChange(\n listPrice,\n formState.defaultValues?.listPrice\n );\n if (\n showWarning &&\n isDatePassedHours(suspiciousPriceChangeHookProps.lastTimeStamp, 1)\n ) {\n newAlerts.push(suspiciousPriceChangeHookProps);\n }\n }\n\n if (newAlerts.length) {\n setAlerts(newAlerts);\n warningDialog.launchDialog();\n } else {\n submitPriceChange();\n }\n } else {\n setValue('isSubmitting', false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isSubmitting]);\n\n return (\n \n {tableRow}\n }\n size=\"md\"\n {...warningDialog.dialogProps}\n alerts={alerts}\n onOkay={() => {\n submitPriceChange();\n warningDialog.closeDialog();\n }}\n onCancel={() => {\n setValue('isSubmitting', false);\n warningDialog.closeDialog();\n }}\n />\n \n );\n}\n","import { ReactNode } from 'react';\nimport Hotkeys from 'react-hot-keys';\n\ninterface PosHotkeysProps {\n children: ReactNode;\n keyNames: string; // comma-separated hotkeys\n preventDefaultBrowserActions?: boolean;\n onHotkeyActivated: (keyName: string, event: KeyboardEvent) => void;\n disabled?: boolean;\n}\n\nexport const PosHotkeys = ({\n children,\n keyNames,\n onHotkeyActivated,\n preventDefaultBrowserActions = true,\n disabled = false,\n}: PosHotkeysProps) => {\n return (\n {\n if (preventDefaultBrowserActions) {\n // Don't call event.stopPropagation(); because sometimes,\n // events are not caught when repeating events\n event.preventDefault();\n }\n }}\n onKeyUp={(keyName, event) => {\n if (preventDefaultBrowserActions) {\n // Don't call event.stopPropagation(); because sometimes,\n // events are not caught when repeating events\n event.preventDefault();\n }\n onHotkeyActivated(keyName, event);\n }}\n >\n {children}\n \n );\n};\n","import { useCallback, useMemo } from 'react';\nimport {\n bulKActionsHighlightLetter,\n checkboxStyles,\n} from 'src/components/common/MultiSelect/MultiSelectAll.css';\nimport { useCatalogMultiSelectionContext } from 'src/contexts/CatalogMultiSelectionContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport {\n MultiSelectScope,\n NO_GROUP_ID,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { PosHotkeys } from 'src/core/POS/PosHotkeys';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getCurrentLanguage } from 'src/utils/localeUtils';\n\nexport interface MultiSelectAllProps {\n displayMode?: 'full' | 'count-only' | 'checkbox-only';\n flattenedIdsOverride?: (number | string)[];\n}\n\nexport const MultiSelectAll = ({\n flattenedIdsOverride,\n displayMode = 'full',\n}: MultiSelectAllProps) => {\n const { flattenedIds: flattenedIdsFromContext } =\n useCatalogMultiSelectionContext();\n\n const flattenedIds = flattenedIdsOverride ?? flattenedIdsFromContext;\n\n const {\n isAllSelected,\n toggleSelectAll,\n toggleGroup,\n totalItemsSelected,\n getGroupToggleState,\n setGroupItems,\n selectionMode,\n selectedCountLabel,\n usingCustomSelectedCountLabel,\n } = useMultiSelectionContext();\n\n const isEnglishLanguage = getCurrentLanguage().startsWith('en-');\n const selectedText = useContent(ContentId.Selected);\n const selectAllText = useContent(ContentId.SelectAll);\n\n const toggleGroupWithOverride = useCallback(\n (groupId: string) => {\n if (flattenedIdsOverride) {\n if (totalItemsSelected >= flattenedIdsOverride.length) {\n setGroupItems(\n groupId,\n flattenedIdsOverride.reduce(\n (acc, id) => {\n acc[id] = false;\n return acc;\n },\n {} as Record\n )\n );\n } else {\n setGroupItems(\n groupId,\n flattenedIdsOverride.reduce(\n (acc, id) => {\n acc[id] = true;\n return acc;\n },\n {} as Record\n )\n );\n }\n }\n },\n [flattenedIdsOverride, setGroupItems, totalItemsSelected]\n );\n\n const onChange = useCallback(() => {\n if (\n selectionMode?.mode === MultiSelectScope.SingleGroup &&\n selectionMode?.groupId\n ) {\n if (flattenedIdsOverride != null) {\n toggleGroupWithOverride(selectionMode?.groupId);\n } else {\n toggleGroup(selectionMode?.groupId);\n }\n } else if (selectionMode?.mode === MultiSelectScope.AllGroups) {\n toggleSelectAll();\n }\n }, [\n flattenedIdsOverride,\n selectionMode,\n toggleGroup,\n toggleGroupWithOverride,\n toggleSelectAll,\n ]);\n\n const { isChecked, totalItemsSelectedCount } = useMemo(() => {\n let isChecked = isAllSelected;\n let totalItemsSelectedCount = totalItemsSelected;\n\n if (selectionMode?.groupId) {\n const groupToggleState = getGroupToggleState(selectionMode?.groupId);\n isChecked = groupToggleState.isGroupSelected;\n if (!groupToggleState.isGroupSelected) {\n totalItemsSelectedCount =\n Array.isArray(flattenedIds) && flattenedIds.length > 0\n ? groupToggleState.items.filter(\n (item) =>\n flattenedIds.includes(parseInt(item)) ||\n flattenedIds.includes(item)\n ).length\n : groupToggleState.items.length;\n if (flattenedIdsOverride) {\n if (\n totalItemsSelectedCount >= flattenedIdsOverride.length &&\n totalItemsSelectedCount > 0\n ) {\n isChecked = true;\n }\n }\n } else if (selectionMode?.groupId === NO_GROUP_ID) {\n totalItemsSelectedCount = flattenedIds?.length ?? 0;\n }\n }\n return { isChecked, totalItemsSelectedCount };\n }, [\n isAllSelected,\n totalItemsSelected,\n selectionMode?.groupId,\n getGroupToggleState,\n flattenedIds,\n flattenedIdsOverride,\n ]);\n\n const selectAllTextHighlighted = useMemo(() => {\n if (!isEnglishLanguage) {\n return selectAllText;\n }\n const parts = selectAllText.split(new RegExp('A', 'g'));\n return (\n \n {parts[0]}\n A\n {parts[1]}\n \n );\n }, [isEnglishLanguage, selectAllText]);\n\n if (displayMode === 'count-only') {\n return (\n \n {usingCustomSelectedCountLabel\n ? `${selectedCountLabel}`\n : `${totalItemsSelectedCount} ${selectedText}`}\n \n );\n }\n\n return (\n \n \n {selectAllTextHighlighted}\n {usingCustomSelectedCountLabel\n ? ` (${selectedCountLabel})`\n : ` (${totalItemsSelectedCount} ${selectedText})`}\n \n )\n }\n />\n \n );\n};\n","import { useContent } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { TooltipPopover } from 'src/core/ui';\nimport { WarningOutlineIcon } from 'src/svgs/Viagogo';\nimport {\n AUTO_PRICING_RESULT_TYPES_OPTIONS_TO_CID,\n AUTO_PRICING_RESULT_TYPES_OPTIONS_TO_COLOR,\n} from 'src/utils/constants/contentIdMaps';\nimport { AutoPricingResultType } from 'src/WebApiController';\n\nimport * as styles from './AutoPriceResultDisplay.css';\n\nexport const AutoPriceResultDisplay = ({\n resultType = AutoPricingResultType.None,\n useWarningIcon,\n}: {\n resultType?: AutoPricingResultType | null;\n useWarningIcon?: boolean;\n}) => {\n const autoPricingResultStateContent =\n AUTO_PRICING_RESULT_TYPES_OPTIONS_TO_CID[\n resultType ?? AutoPricingResultType.None\n ];\n\n const contentText = useContent(autoPricingResultStateContent);\n\n const autoPricingResultColor =\n AUTO_PRICING_RESULT_TYPES_OPTIONS_TO_COLOR[\n resultType ?? AutoPricingResultType.None\n ];\n\n return (\n \n ) : (\n \n )\n }\n contentVariant=\"dark\"\n title={contentText}\n >\n {contentText}\n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const CheckCircleIcon = ({ ...props }: PosIconProps) => {\n return (\n \n \n \n \n );\n};\n","import { ReactNode } from 'react';\nimport { Stack } from 'src/core/ui';\nimport { useMapDeliveryTypesToString } from 'src/hooks/useMapDeliveryTypesToString';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { FormatOption } from 'src/modals/EditTableColumns';\nimport { CheckCircleIcon } from 'src/svgs/CheckCircleIcon';\nimport { getDeliveryTypeIcon } from 'src/utils/ticketTypeUtils';\nimport {\n DeliveryType,\n Feature,\n Listing,\n ListingGroup,\n PreDeliveryState,\n TicketType,\n} from 'src/WebApiController';\n\nimport * as styles from './ListingDeliveryTypeDisplay.css';\n\ninterface DeliveryTypeIconWrapperProps {\n addCheckIcon: boolean;\n children: ReactNode;\n}\nconst DeliveryTypeIconWrapper = ({\n addCheckIcon,\n children,\n}: DeliveryTypeIconWrapperProps) => {\n return addCheckIcon ? (\n
    \n {children}\n \n
    \n ) : (\n <>{children}\n );\n};\n\nconst DeliveryTypeTextWrapper = ({\n addCheckIcon,\n children,\n}: DeliveryTypeIconWrapperProps) => {\n return addCheckIcon ? (\n \n {children}\n \n \n ) : (\n <>{children}\n );\n};\n\nexport const ListingDeliveryTypeDisplay = ({\n listing,\n userDefinedPrecision,\n showIconTitle,\n}: {\n listing:\n | Listing\n | {\n delivType: DeliveryType;\n topPriTktType?: TicketType;\n preDelivState?: PreDeliveryState;\n };\n userDefinedPrecision: FormatOption;\n showIconTitle?: boolean;\n}) => {\n const listingGroup = listing as ListingGroup;\n const hasTicketTypeIconOverlay = useUserHasFeature(\n Feature.TicketTypeIconOverlay\n );\n\n const strDeliveryTypes = useMapDeliveryTypesToString({\n deliveryTypesObj: listing,\n });\n\n const shouldAddCheckIcon =\n hasTicketTypeIconOverlay &&\n listing.preDelivState === PreDeliveryState.PreDelivered;\n\n return (\n \n {listingGroup.deliveryTypes ? (\n
    \n \n {listingGroup.deliveryTypes.map((dt) => {\n const key = `${dt.item1}-${dt.item2}`;\n if (userDefinedPrecision === FormatOption.EnumDisplay_Icon) {\n return (\n \n {getDeliveryTypeIcon(\n dt.item1,\n dt.item2,\n undefined,\n showIconTitle\n )}\n \n );\n } else {\n return (\n \n {strDeliveryTypes}\n \n );\n }\n })}\n \n
    \n ) : (\n <>\n {userDefinedPrecision === FormatOption.EnumDisplay_Icon ? (\n \n {getDeliveryTypeIcon(\n listing.delivType,\n listing.topPriTktType,\n undefined,\n showIconTitle\n )}\n \n ) : (\n \n {strDeliveryTypes}\n \n )}\n \n )}\n
    \n );\n};\n","import { vars } from 'src/core/themes';\n\nimport { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const CopyIcon2 = ({ size, stroke, ...props }: PosIconProps) => {\n const s = size ?? vars.iconSize.l;\n\n return (\n \n \n \n \n );\n};\n","import { clsx } from 'clsx';\nimport { ReactNode, useCallback, useState } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { vars } from 'src/core/themes';\nimport { Colors } from 'src/core/themes/constants/colors';\nimport {\n copyContentWrapper,\n copyIcon,\n copyIconHover,\n copyToClipboardDisplay,\n hidden,\n showCopyIcon,\n successText,\n} from 'src/core/ui/CopyToClipboard/CopyToClipboardV2.css';\nimport useCopyToClipboard from 'src/hooks/useCopyToClipboard';\nimport { CopyIcon2 } from 'src/svgs/CopyIcon2';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nconst SHOW_COPIED_ICON_TIME = 1000;\n\ninterface CopyToClipboardPops {\n textToCopy?: string | number;\n children: ReactNode;\n}\n\nexport const CopyToClipboardV2 = ({\n textToCopy,\n children,\n}: CopyToClipboardPops) => {\n const { isDarkMode } = useSiteTheme();\n const [showingCopiedElement, setShowingCopiedElement] =\n useState(false);\n const { copyToClipboard } = useCopyToClipboard();\n\n const copy = useCallback(async () => {\n if (\n showingCopiedElement ||\n textToCopy == null ||\n String(textToCopy).length === 0\n ) {\n return;\n }\n await copyToClipboard(String(textToCopy));\n setShowingCopiedElement(true);\n const timeoutId = setTimeout(\n () => setShowingCopiedElement(false),\n SHOW_COPIED_ICON_TIME\n );\n return () => {\n clearTimeout(timeoutId);\n };\n }, [copyToClipboard, showingCopiedElement, textToCopy]);\n\n return (\n
    \n
    \n \n {showingCopiedElement && (\n \n \n \n )}\n
    \n \n
    \n );\n};\n","import { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n getAllInPriceFromListPrice,\n getListPriceFromAllinPrice,\n} from 'src/utils/inventoryUtils';\nimport { Listing, Marketplace } from 'src/WebApiController';\n\nexport const useAllInPriceFromListPrice = (\n listPrice: number | null | undefined,\n listing?: Listing | null\n) => {\n const { loginContext } = useAppContext();\n\n return useMemo(() => {\n const stubHubMkpSettings =\n loginContext?.user?.activeAccount?.marketplaceSettings?.find(\n (m) => m.mkp === Marketplace.StubHub\n );\n if (!listPrice) {\n return null;\n }\n return getAllInPriceFromListPrice(\n listPrice,\n listing,\n stubHubMkpSettings?.sellerFee\n );\n }, [\n listPrice,\n listing,\n loginContext?.user?.activeAccount?.marketplaceSettings,\n ]);\n};\n\nexport const useListPriceFromAllInPrice = (\n allInPrice: number | null | undefined,\n listing?: Listing\n) => {\n const { loginContext } = useAppContext();\n\n return useMemo(() => {\n const stubHubMkpSettings =\n loginContext?.user?.activeAccount?.marketplaceSettings?.find(\n (m) => m.mkp === Marketplace.StubHub\n );\n if (!allInPrice) {\n return null;\n }\n return getListPriceFromAllinPrice(\n allInPrice,\n listing,\n stubHubMkpSettings?.sellerFee\n );\n }, [\n allInPrice,\n listing,\n loginContext?.user?.activeAccount?.marketplaceSettings,\n ]);\n};\n","import { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport {\n SECTION_TYPE_TO_CUSTOM_COLUMN_SETTING,\n SectionType,\n} from 'src/utils/types/sectionType';\n\nexport const CustomColumnName = ({\n id,\n sectionType,\n}: {\n id: string;\n sectionType: SectionType;\n}) => {\n const { value: customColumns = [] } = useServerUserSetting<\n CustomListingColumn[]\n >({\n id: SECTION_TYPE_TO_CUSTOM_COLUMN_SETTING[sectionType],\n });\n\n const customColumnName = customColumns.find((c) => c.id === id)?.name ?? '';\n\n return (\n \n {customColumnName}\n \n );\n};\n","/* IMPORTANT - whenever you add a new one here\n You need to add a handling for it in the BulkEditStatusListingPopover.tsx\n */\nexport const INVENTORY_BULK_UPDATE_LISTING_PRICES_UPDATE_KEY =\n 'listingPrices-event-inventory';\nexport const INVENTORY_BULK_UPDATE_MARKETPLACE_PRICES_UPDATE_KEY =\n 'marketplacePrices-event-inventory';\nexport const INVENTORY_BULK_UPDATE_PRICE_FLOOR_CEILING_UPDATE_KEY =\n 'floorCeiling-event-inventory';\nexport const INVENTORY_BULK_UPDATE_AUTOPRICING_SETTINGS_UPDATE_KEY = `auto-pricing-settings-event-inventory`;\nexport const INVENTORY_BULK_UPDATE_LISTING_GROUP_SETTINGS_UPDATE_KEY = `listing-group-settings-event-inventory`;\nexport const INVENTORY_BULK_UPDATE_GENERAL_SETTINGS_UPDATE_KEY =\n 'general-settings-event-inventory';\nexport const INVENTORY_BULK_UPDATE_ADMIN_HOLD_UPDATE_KEY =\n 'admin-hold-event-inventory';\nexport const INVENTORY_BULK_BROADCAST_LISTINGS_KEY = `broadcast-event-inventory`;\nexport const INVENTORY_BULK_UPDATE_MARKETPLACE_SEATING_UPDATE_KEY =\n 'marketplace-seating-event-inventory';\nexport const INVENTORY_BULK_UPDATE_COMMISSION_UPDATE_KEY =\n 'commission-event-inventory';\nexport const INVENTORY_BULK_UPDATE_TAGS_UPDATE_KEY = 'tags-event-inventory';\nexport const INVENTORY_BULK_UPDATE_INTERNAL_NOTES_UPDATE_KEY =\n 'update-internal-notes-inventory';\nexport const INVENTORY_BULK_UPDATE_AUTOFULFILL_UPDATE_KEY =\n 'update-autofulfill-inventory';\nexport const INVENTORY_BULK_CREATE_LISTING_GROUPS_KEY = `create-listing-groups`;\nexport const INVENTORY_BULK_UPDATE_TICKET_TYPE_RULE_UPDATE_KEY =\n 'ticket-type-rule-event-inventory';\nexport const INVENTORY_BULK_UPDATE_DELIVERY_TYPE_UPDATE_KEY =\n 'update-delivery-type-inventory';\nexport const INVENTORY_BULK_UPDATE_SEAT_TRAITS_UPDATE_KEY =\n 'update-seat-traits-inventory';\nexport const INVENTORY_BULK_DELETE_SEAT_SAVERS_UPDATE_KEY =\n 'delete-seat-savers-inventory';\nexport const INVENTORY_BULK_REMOVE_PREDELIVERY_UPDATE_KEY =\n 'delete-predelivery-inventory';\nexport const INVENTORY_BULK_UNGROUP_LISTINGS_UPDATE_KEY =\n 'ungroup-listings-inventory';\nexport const INVENTORY_BULK_WASTE_TICKETS_KEY = 'waste-tickets';\n","import { useCallback } from 'react';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { useGetEventFullInfo } from 'src/hooks/useGetEventFullInfo';\nimport { US_COUNTRY_CODES } from 'src/utils/constants/constants';\nimport { getStubhubEventWithPricingUrl } from 'src/utils/inventoryUtils';\nimport { Event } from 'src/WebApiController';\n\ninterface OpenStubhubDropdownActionProps {\n event: Event;\n}\n\nexport const OpenStubhubDropdownAction = ({\n event,\n}: OpenStubhubDropdownActionProps) => {\n const { venue } = useGetEventFullInfo(event);\n\n const onOpenInStubHubClicked = useCallback(\n (event: Event) => {\n const eventId = event?.viagId;\n\n // null item return means it was not found (204 status)\n window.open(\n getStubhubEventWithPricingUrl(\n eventId,\n !US_COUNTRY_CODES.includes(venue?.country?.code?.toUpperCase() ?? '')\n ),\n '_blank'\n );\n },\n [venue?.country?.code]\n );\n\n return (\n {\n e.preventDefault();\n e.stopPropagation();\n onOpenInStubHubClicked(event);\n }}\n >\n {'StubHub 🡵'}\n \n );\n};\n","import clsx from 'clsx';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { FieldError } from 'src/modals/common';\nimport { CheckIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { DELIVERY_OPTIONS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { getDeliveryTypeIcon } from 'src/utils/ticketTypeUtils';\nimport { DeliveryType, Feature } from 'src/WebApiController';\n\nimport * as styles from './DeliveryTypeRadioInput.css';\n\nexport const DeliveryTypeRadioInput = ({\n value,\n onChange,\n error,\n disabled,\n hideCustomType,\n}: {\n value?: DeliveryType | null;\n onChange: (val: DeliveryType) => void;\n error?: string;\n disabled?: boolean;\n hideCustomType?: boolean;\n}) => {\n const hasCustomDeliveryTypeFeature = useUserHasFeature(\n Feature.CustomDeliveryType\n );\n\n return (\n \n
    \n {Object.entries(DeliveryType)\n .filter(([_, val]) => {\n if (val === DeliveryType.Custom) {\n return hasCustomDeliveryTypeFeature && !hideCustomType;\n }\n else if (val === DeliveryType.Wallet)\n {\n return false;\n }\n return true;\n })\n .map(([key, val]) => {\n const icon = getDeliveryTypeIcon(val);\n\n return (\n !disabled && onChange(val)}\n >\n
    \n {val === value && }\n
    \n \n {icon}\n \n \n \n \n \n );\n })}\n
    \n\n {error && {error}}\n
    \n );\n};\n","import clsx from 'clsx';\nimport { useMemo } from 'react';\nimport { Content, useFormattedContent } from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport * as styles from 'src/core/POS/DateRangeSelector/DateRangePresets/DateRangePresets.css';\nimport {\n Suggestion,\n SuggestionContainer,\n SuggestionsContainer,\n SuggestionsHeading,\n} from 'src/core/POS/DateRangeSelector/DateRangePresets/DateRangePresets.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport {\n DatePreset,\n DatePresetName,\n formatDate,\n getDatePresets,\n getPresetFromDate,\n} from 'src/utils/dateTimeUtils';\n\nexport type DatePickerPresetsProp = {\n presetNames: DatePresetName[];\n inHandDaysBeforeEvent?: number;\n selectedDate?: Date | null;\n targetDate: Date;\n onClick: (date: Date, presetName?: string) => void;\n disabled?: boolean;\n /**\n * If true, the site's timezone will be applied to the date being displayed.\n * the underlying date value (value, data, onDateChange) will not be changed.\n */\n useSiteTimeZone?: boolean;\n};\n\nexport function DatePickerPresets({\n selectedDate = new Date(),\n presetNames,\n targetDate,\n disabled,\n onClick,\n inHandDaysBeforeEvent,\n useSiteTimeZone,\n}: DatePickerPresetsProp) {\n const { toZonedTime, fromZonedTime } = useSiteTimezoneContext();\n\n const handleClick = (preset: DatePreset) => {\n onClick(\n useSiteTimeZone ? fromZonedTime(preset.value) : preset.value,\n preset.name\n );\n };\n\n const presets = useMemo(() => {\n const presets = getDatePresets(\n presetNames,\n targetDate,\n inHandDaysBeforeEvent\n );\n\n if (useSiteTimeZone) {\n return presets.map((preset) => ({\n ...preset,\n value: toZonedTime(preset.value),\n }));\n }\n\n return presets;\n }, [\n useSiteTimeZone,\n inHandDaysBeforeEvent,\n presetNames,\n targetDate,\n toZonedTime,\n ]);\n\n const presetName = getPresetFromDate(\n selectedDate,\n targetDate,\n inHandDaysBeforeEvent\n )?.name;\n\n const daysBeforeEventLabel = useFormattedContent(\n FormatContentId.DaysBeforeEvent,\n `${inHandDaysBeforeEvent}`\n );\n\n return (\n \n \n \n \n {presets.map((preset, index) => (\n \n handleClick(preset)}\n >\n \n {preset.name === DatePresetName.DaysBeforeEvent\n ? daysBeforeEventLabel\n : preset.label}\n {' '}\n {formatDate(preset.value.toISOString())}\n \n \n ))}\n \n );\n}\n","import clsx from 'clsx';\nimport { useCallback, useState } from 'react';\nimport { CalendarProps } from 'react-date-range';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport * as selectorStyles from 'src/core/POS/DateRangeSelector/DateRangeSelector.css';\nimport {\n CustomDateRangeButton,\n DateRangePickerContainer,\n DateRangeTrigger,\n DateRangeTriggerContent,\n IconContainer,\n} from 'src/core/POS/DateRangeSelector/DateRangeSelector.styled';\nimport { vars } from 'src/core/themes';\nimport { Popover, Stack } from 'src/core/ui';\nimport { CalendarIcon, CrossIcon, ExpandIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n formatDate,\n tryGetDatePresetSuggestionText,\n} from 'src/utils/dateTimeUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\n\nimport * as styles from './DatePicker.css';\nimport { DatePickerInput } from './DatePickerInput';\nimport {\n DatePickerPresets,\n DatePickerPresetsProp,\n} from './DatePickerPresets/DatePickerPresets';\n\nexport type DateSelectorProps = Omit &\n Omit & {\n disabled?: boolean;\n defaultDate?: Date;\n placeholderText?: string;\n onChange: (date?: Date, presetName?: string) => void;\n /**\n * If true, the site's timezone will be applied to the date being displayed.\n * the underlying date value (value, data, onDateChange) will not be changed.\n */\n useSiteTimeZone?: boolean;\n } & Omit;\n\nexport function DateSelector({\n date,\n defaultDate,\n onChange,\n placeholderText,\n disabled,\n className,\n dateDisplayFormat = 'MM/dd/yyyy',\n color = vars.color.backgroundHighlight,\n locale = getLocaleFromLanguageOrCurrent(),\n useSiteTimeZone = true,\n ...presetProps\n}: DateSelectorProps) {\n const { toZonedTime, timeZone } = useSiteTimezoneContext();\n const [isOpen, setIsOpen] = useState(false);\n const [showDatePicker, setShowDatePicker] = useState(false);\n\n const placeholderTextContent = useContent(placeholderText);\n\n const defaultDateDisplayText = useContent(ContentId.DateRangeDisplayText);\n\n const onDatePickerChange = useCallback(\n (date?: Date, presetName?: string) => {\n if (!date) {\n onChange(undefined);\n return;\n }\n onChange(date, presetName);\n },\n [onChange]\n );\n\n const onClear = useCallback(() => {\n onDatePickerChange(defaultDate ? new Date(defaultDate) : undefined);\n }, [defaultDate, onDatePickerChange]);\n\n const onSuggestionClick = (date: Date, presetName?: string) => {\n onDatePickerChange(date, presetName);\n setIsOpen(false);\n };\n\n const getDisplayText = useCallback(() => {\n const suggestionText = tryGetDatePresetSuggestionText(\n date,\n presetProps.targetDate,\n presetProps.inHandDaysBeforeEvent,\n useSiteTimeZone ? toZonedTime : undefined\n );\n\n if (suggestionText) {\n return suggestionText;\n }\n\n if (date) {\n return `${formatDate(\n (useSiteTimeZone ? toZonedTime(date) : date).toISOString(),\n undefined,\n timeZone\n )}`;\n }\n\n return placeholderText ? placeholderTextContent : defaultDateDisplayText;\n }, [\n date,\n presetProps.targetDate,\n presetProps.inHandDaysBeforeEvent,\n placeholderText,\n placeholderTextContent,\n defaultDateDisplayText,\n useSiteTimeZone,\n toZonedTime,\n timeZone,\n ]);\n\n const highlightDropBox = !(\n (date ?? undefined) === (defaultDate ?? undefined)\n );\n\n return (\n {\n setIsOpen(isOpen);\n if (!isOpen) {\n setShowDatePicker(false);\n }\n }}\n >\n \n \n \n \n {getDisplayText()}\n \n
    \n {!disabled && date && highlightDropBox && (\n \n \n \n )}\n \n
    \n
    \n
    \n
    \n \n \n \n \n setShowDatePicker((val) => !val)}\n >\n
    \n \n
    \n \n \n {showDatePicker && (\n \n )}\n
    \n
    \n
    \n \n );\n}\n","import { useAppContext } from 'src/contexts/AppContext';\nimport { DateSelector } from 'src/core/POS/DateSelector/DateSelector';\nimport {\n DatePresetName,\n StandardDatePresetNames,\n} from 'src/utils/dateTimeUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\n\nexport type InHandDateInputProps = {\n value: Date | string | null;\n allowEmptySelection?: boolean;\n targetDate: Date;\n disabled?: boolean;\n onChange: (date?: Date, daysBeforeEvent?: number) => void;\n placeholderText?: string;\n daysBeforeEvent?: number;\n};\n\nexport const InHandDateInput = ({\n value,\n targetDate,\n onChange,\n disabled,\n allowEmptySelection,\n placeholderText,\n daysBeforeEvent,\n}: InHandDateInputProps) => {\n const { loginContext } = useAppContext();\n\n const inHandDate = value\n ? new Date(value)\n : allowEmptySelection\n ? null\n : new Date();\n\n const customPresetNames = [...StandardDatePresetNames];\n\n const inHandDaysBeforeEvent =\n daysBeforeEvent ??\n loginContext?.user?.activeAccount?.sellerAccountSettings\n ?.inHandDaysBeforeEvent;\n\n if (inHandDaysBeforeEvent) {\n customPresetNames.push(DatePresetName.DaysBeforeEvent);\n }\n\n const getDaysBeforeEvent = (presetName?: string): number | undefined => {\n if (presetName === undefined) {\n return undefined;\n }\n\n switch (presetName) {\n case DatePresetName.DaysBeforeEvent:\n return inHandDaysBeforeEvent ?? undefined;\n case DatePresetName.OneDayBeforeEvent:\n return 1;\n case DatePresetName.OneWeekBeforeEvent:\n return 7;\n case DatePresetName.Now:\n return 0;\n default:\n return undefined;\n }\n };\n\n return (\n {\n onChange(date, getDaysBeforeEvent(presetName));\n }}\n locale={getLocaleFromLanguageOrCurrent()}\n presetNames={customPresetNames}\n inHandDaysBeforeEvent={inHandDaysBeforeEvent ?? undefined}\n targetDate={targetDate}\n // In hand date is relative to event date\n useSiteTimeZone={false}\n />\n );\n};\n","import { PropsWithChildren, ReactNode } from 'react';\nimport { Stack } from 'src/core/ui';\n\nimport * as styles from './FormPage.css';\n\nexport const Section = ({\n children,\n icon,\n title,\n}: PropsWithChildren<{ icon: ReactNode; title: ReactNode }>) => {\n return (\n \n \n {icon}\n {title}\n \n {children}\n \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { TicketTypePriorityInput } from 'src/components/common/TicketTypePriorityInput';\nimport { DeliveryTypeRadioInput } from 'src/components/Input/DeliveryTypeRadioInput';\nimport { InHandDateInput } from 'src/components/Input/InHandDateInput';\nimport { Content } from 'src/contexts/ContentContext';\nimport { FormPage } from 'src/core/POS/FormPage';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { vars } from 'src/core/themes';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { FieldWrapper, FormRow } from 'src/modals/common';\nimport { IconsFill, SeatMapIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n DeliveryType,\n Feature,\n Permission,\n TicketTypeOverride,\n} from 'src/WebApiController';\n\nimport { SeatSaverListingDetailsInputForm } from '../SeatSaverListingWizard.types';\n\nexport const DeliverySection = ({\n inputIndeces,\n disabled,\n}: {\n inputIndeces: number[];\n disabled?: boolean;\n}) => {\n const { watch, getValues, setValue, clearErrors, getFieldState } =\n useFormContext();\n\n const isMobile = useMatchMedia('mobile');\n const hasSelectDeliveryStrategyInSeatSaverFeature = useUserHasFeature(\n Feature.SelectDeliveryStrategyInSeatSaver\n );\n\n const event = getValues(`inputs.${inputIndeces[0]}.event`);\n\n // Of these will have same value, so we just need one\n const deliveryTypeField: `inputs.${number}.deliveryType` = `inputs.${inputIndeces[0]}.deliveryType`;\n const deliveryType = watch(deliveryTypeField);\n const deliveryTypeError = getFieldState(deliveryTypeField).error?.message;\n\n const inHandDateField: `inputs.${number}.inHandDate` = `inputs.${inputIndeces[0]}.inHandDate`;\n const inHandDate = watch(inHandDateField);\n const inHandDateError = getFieldState(inHandDateField).error?.message;\n const daysBeforeEvent = watch(`inputs.${inputIndeces[0]}.daysBeforeEvent`);\n\n const tktTypeRulesField: `inputs.${number}.ticketTypeRules` = `inputs.${inputIndeces[0]}.ticketTypeRules`;\n const ticketTypeRules = watch(tktTypeRulesField);\n\n const canSetCustomDeliveryType = useUserHasAnyOfPermissions(\n Permission.Purchases_UpdateCustomDeliveryType,\n Permission.Purchases_UpdateCustomDeliveryTypeOwned\n );\n\n const onDeliveryTypeChange = (newDelType: DeliveryType) => {\n if (!disabled && newDelType && newDelType !== deliveryType) {\n clearErrors(deliveryTypeField);\n\n inputIndeces.forEach((i) => {\n setValue(`inputs.${i}.deliveryType`, newDelType);\n });\n }\n };\n\n const onticketTypeRulesChange = (\n newTicketTypeRules: TicketTypeOverride | null\n ) => {\n if (\n hasSelectDeliveryStrategyInSeatSaverFeature &&\n !disabled &&\n newTicketTypeRules &&\n newTicketTypeRules !== ticketTypeRules\n ) {\n clearErrors(tktTypeRulesField);\n\n inputIndeces.forEach((i) => {\n setValue(`inputs.${i}.ticketTypeRules`, newTicketTypeRules);\n });\n }\n };\n\n const onInHandDateChange = (date?: Date, daysBeforeEvent?: number) => {\n if (date) {\n clearErrors(inHandDateField);\n const dateStr = date.toISOString();\n if (dateStr !== inHandDate) {\n inputIndeces.forEach((i) => {\n setValue(`inputs.${i}.inHandDate`, dateStr);\n setValue(`inputs.${i}.daysBeforeEvent`, daysBeforeEvent ?? null);\n });\n }\n }\n };\n\n return (\n \n }\n title={}\n >\n \n \n \n {hasSelectDeliveryStrategyInSeatSaverFeature && (\n \n }>\n \n \n \n )}\n \n \n }\n errors={inHandDateError}\n >\n \n \n \n \n \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { FormPage } from 'src/core/POS/FormPage';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { vars } from 'src/core/themes';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { CheckboxContainer, FormRow } from 'src/modals/common';\nimport { SeatSaverIcon } from 'src/svgs';\nimport { IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { SeatSaverListingDetailsInputForm } from '../SeatSaverListingWizard.types';\n\nexport const ListingSection = ({\n inputIndeces,\n disabled,\n}: {\n inputIndeces: number[];\n disabled?: boolean;\n}) => {\n const { watch, setValue } =\n useFormContext();\n\n const isMobile = useMatchMedia('mobile');\n\n // Of these will have same value, so we just need one\n const autoBroadcastCreatedListing = watch(\n `inputs.${inputIndeces[0]}.autoBroadcastCreatedListing`\n );\n\n const sellerOwnTickets = watch(`inputs.${inputIndeces[0]}.sellerOwnTickets`);\n\n return (\n \n }\n title={}\n >\n \n \n \n }\n disabled={disabled}\n checked={autoBroadcastCreatedListing ?? false}\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (isChecked !== autoBroadcastCreatedListing) {\n inputIndeces.forEach((i) => {\n setValue(\n `inputs.${i}.autoBroadcastCreatedListing`,\n isChecked\n );\n });\n }\n }}\n />\n \n \n \n \n }\n disabled={disabled}\n checked={sellerOwnTickets ?? false}\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (isChecked !== sellerOwnTickets) {\n inputIndeces.forEach((i) => {\n setValue(`inputs.${i}.sellerOwnTickets`, isChecked);\n });\n }\n }}\n />\n \n \n \n \n );\n};\n","import { FieldError } from 'react-hook-form';\nimport { RowSelector } from 'src/components/Selectors/SectionRowSelector';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { RowInfo, SectionInfo } from 'src/WebApiController';\n\nexport const VenueRowInput = ({\n row,\n selectedRow,\n selectedSection,\n disabled,\n fieldError,\n onChange,\n}: {\n row?: string | null;\n selectedRow?: RowInfo | null;\n selectedSection?: SectionInfo | null;\n disabled?: boolean;\n fieldError?: string | string[] | FieldError | FieldError[];\n onChange: (rowName?: string | null, row?: RowInfo | null) => void;\n}) => {\n selectedRow =\n selectedRow ?? selectedSection?.rows?.find((r) => r.name === row);\n\n const chooseRow = useContent(ContentId.ChooseRow);\n\n return selectedSection?.rows?.filter((r) => !r.isSpeculative)?.length ? (\n {\n const id = parseInt(rowId);\n const row = selectedSection?.rows?.find((r) => r.id === id);\n onChange(row?.name ?? rowId, row);\n }}\n />\n ) : (\n {\n onChange(e.target.value);\n }}\n />\n );\n};\n","import { FieldError } from 'react-hook-form';\nimport { SectionSelector } from 'src/components/Selectors/SectionRowSelector';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionInfo } from 'src/WebApiController';\n\nexport const VenueSectionInput = ({\n section,\n selectedSection,\n disabled,\n fieldError,\n onChange,\n selectionSelectorStyle,\n}: {\n section?: string | null;\n selectedSection?: SectionInfo | null;\n disabled?: boolean;\n fieldError?: string | string[] | FieldError | FieldError[];\n onChange: (sectionName?: string | null, section?: SectionInfo | null) => void;\n selectionSelectorStyle?: React.CSSProperties;\n}) => {\n const { venueMapInfo } = useEventMapContext();\n selectedSection =\n selectedSection ?? venueMapInfo?.sections?.find((s) => s.name === section);\n\n const chooseSection = useContent(ContentId.ChooseSection);\n\n return venueMapInfo?.sections?.length ? (\n {\n const id = parseInt(selectedSectionId);\n const section = venueMapInfo?.sections?.find((s) => s.id === id);\n onChange(section?.name ?? selectedSectionId, section);\n }}\n />\n ) : (\n {\n const v = e.target.value;\n onChange(v);\n }}\n />\n );\n};\n","import { uniqBy } from 'lodash-es';\nimport { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { EventVenueMap } from 'src/components/Events/VenueMap/EventVenueMap';\nimport { ListingNoteSelectionInput } from 'src/components/Input/ListingNoteSelectionInput';\nimport { VenueRowInput } from 'src/components/Input/VenueRowInput';\nimport { VenueSectionInput } from 'src/components/Input/VenueSectionInput';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { FormPage } from 'src/core/POS/FormPage';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { FieldWrapper } from 'src/modals/common';\nimport {\n addSectionButton,\n column0,\n gridHeader,\n removeButton,\n seatingSection,\n} from 'src/modals/SeatSaverListingWizard/components/SeatingSection.css';\nimport { CrossIcon, IconsFill, SeatIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getAllInPriceFromListPrice,\n getListPriceFromAllinPrice,\n} from 'src/utils/inventoryUtils';\nimport { INT_MAX_VALUE } from 'src/utils/numberFormatter';\nimport {\n EventListingConstraints,\n ListingNote,\n Marketplace,\n RowInfo,\n SeatSaverSeating,\n SectionInfo,\n} from 'src/WebApiController';\n\nimport { SeatSaverListingDetailsInputForm } from '../SeatSaverListingWizard.types';\n\nconst tableHeaderContent: (ContentId | null)[] = [\n ContentId.Section,\n ContentId.Row,\n ContentId.TotalQty,\n ContentId.ShownQty,\n ContentId.Proceeds,\n ContentId.Price,\n ContentId.FaceValue,\n ContentId.SeatTraits,\n null,\n];\n\nexport const SeatingSection = ({\n inputIndeces,\n disabled,\n eventListingConstraints,\n}: {\n inputIndeces: number[];\n disabled?: boolean;\n eventListingConstraints?: EventListingConstraints | null;\n}) => {\n const { ticketClasses, venueMapInfo } = useEventMapContext();\n const { watch, setValue, clearErrors, getFieldState } =\n useFormContext();\n\n const { loginContext } = useAppContext();\n const stubHubMarketplace =\n loginContext?.user?.activeAccount.marketplaceSettings.find(\n (mps) => mps.mkp === Marketplace.StubHub\n );\n\n const { getUiCurrency } = useLocalizationContext();\n const uiCurrency = useMemo(\n () =>\n getUiCurrency(loginContext?.user?.activeAccount?.currencyCode ?? 'USD'),\n [getUiCurrency, loginContext?.user?.activeAccount?.currencyCode]\n );\n\n const inputs = watch('inputs');\n\n const removeSection = useCallback(\n (index: number) => {\n inputIndeces.forEach((i) => {\n const input = inputs[i];\n const curSections = [...input.seatings];\n\n if (curSections.length) {\n // Existing - remove\n curSections.splice(index, 1);\n setValue(`inputs.${i}.seatings`, curSections);\n }\n });\n },\n [inputIndeces, inputs, setValue]\n );\n\n const onSectionClicked = useCallback(\n (e: MouseEvent, selectedSection: SectionInfo) => {\n inputIndeces.forEach((index) => {\n const input = inputs[index];\n const curSections = input.seatings.filter(\n (s) => s.section === selectedSection.name\n );\n clearErrors(`inputs.${index}.seatings`);\n if (curSections.length) {\n // Existing - remove\n const newSections = input.seatings.filter(\n (s) => s.section !== selectedSection.name\n );\n setValue(`inputs.${index}.seatings`, newSections);\n } else {\n // New - add\n const selectedRow = selectWorstRow(selectedSection);\n\n const newSections = [\n ...input.seatings,\n {\n section: selectedSection.name,\n sectionId: selectedSection.id,\n row: selectedRow?.isSpeculative ? '' : selectedRow?.name,\n rowId: selectedRow?.id ?? selectedSection.specRow?.id,\n } as SeatSaverSeating,\n ];\n setValue(`inputs.${index}.seatings`, newSections);\n }\n });\n },\n [clearErrors, inputIndeces, inputs, setValue]\n );\n\n const onToggleMirrors = useCallback(\n (mirrors: SectionInfo[], exclude?: boolean) => {\n if (exclude) {\n const idsToExclude = mirrors.map(({ id }) => id);\n inputIndeces.forEach((index) => {\n const input = inputs[index];\n const newSections = uniqBy(\n input.seatings.filter(\n ({ sectionId }) => sectionId && !idsToExclude.includes(sectionId)\n ),\n 'sectionId'\n );\n setValue(`inputs.${index}.seatings`, newSections);\n });\n return;\n }\n\n const seatSaverSections = mirrors.map((section) => {\n const selectedRow = selectWorstRow(section);\n return {\n section: section.name,\n sectionId: section.id,\n row: selectedRow?.isSpeculative ? '' : selectedRow?.name,\n rowId: selectedRow?.id ?? section.specRow?.id,\n } as SeatSaverSeating;\n });\n inputIndeces.forEach((index) => {\n const input = inputs[index];\n const newSections = uniqBy(\n input.seatings.concat(seatSaverSections),\n 'sectionId'\n );\n setValue(`inputs.${index}.seatings`, newSections);\n });\n },\n [inputIndeces, inputs, setValue]\n );\n\n const selectedSectionIds = useCallback(() => {\n const ids = inputIndeces\n .flatMap((index) => {\n const input = inputs[index];\n return input.seatings.map((s) => s.sectionId);\n })\n .filter((id) => id)\n .map((id) => id!);\n\n return ids;\n }, [inputIndeces, inputs]);\n\n const onAddSection = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n clearErrors();\n inputIndeces.forEach((index) => {\n const input = inputs[index];\n // New - add\n const newSections = [\n ...input.seatings,\n {\n section: '',\n sectionId: null,\n row: '',\n rowId: null,\n } as SeatSaverSeating,\n ];\n clearErrors(`inputs.${index}.seatings`);\n setValue(`inputs.${index}.seatings`, newSections);\n });\n },\n [clearErrors, inputIndeces, inputs, setValue]\n );\n const inputToDisplay = inputs[inputIndeces[0]];\n const seatingsError = getFieldState(`inputs.${inputIndeces[0]}.seatings`)\n .error?.message;\n\n const selectWorstRow = (section: SectionInfo) => {\n let selectedRow: {\n id: number;\n name: string | null;\n isSpeculative: boolean;\n } | null = section.specRow;\n const rowSorted = section?.rows\n .filter((r) => !r.isSpeculative)\n .toSorted(\n (r1, r2) => (r1.seatQualityScore ?? 0) - (r2.seatQualityScore ?? 0)\n );\n if (rowSorted?.length) {\n selectedRow = rowSorted?.[0];\n }\n\n return selectedRow;\n };\n\n const onTicketClassChange = useCallback(\n (selectedTicketClassIds: string[]) => {\n console.log('ticketclass change', selectedTicketClassIds);\n // TODO: https://thestubhub.atlassian.net/browse/POS-3548\n },\n []\n );\n\n const onSectionChange = useCallback(\n (\n seatIndex: number,\n sectionName?: string | null,\n section?: SectionInfo | null\n ) => {\n inputIndeces.forEach((i) => {\n clearErrors(`inputs.${i}.seatings.${seatIndex}.section`);\n if (section) {\n setValue(`inputs.${i}.seatings.${seatIndex}.section`, section.name);\n setValue(`inputs.${i}.seatings.${seatIndex}.sectionId`, section.id);\n\n const selectedRow = selectWorstRow(section);\n\n if (selectedRow?.id) {\n // Setting the section automatically set the speculative row id\n setValue(`inputs.${i}.seatings.${seatIndex}.rowId`, selectedRow.id);\n setValue(\n `inputs.${i}.seatings.${seatIndex}.row`,\n selectedRow?.isSpeculative ? '' : selectedRow?.name\n );\n }\n } else {\n setValue(\n `inputs.${i}.seatings.${seatIndex}.section`,\n sectionName ?? ''\n );\n\n // Free-text section do not have speculative row info\n setValue(`inputs.${i}.seatings.${seatIndex}.rowId`, null);\n setValue(`inputs.${i}.seatings.${seatIndex}.row`, '');\n }\n });\n },\n [clearErrors, inputIndeces, setValue]\n );\n\n const onRowChange = useCallback(\n (seatIndex: number, rowName?: string | null, row?: RowInfo | null) => {\n inputIndeces.forEach((i) => {\n clearErrors(`inputs.${i}.seatings.${seatIndex}.row`);\n if (row) {\n setValue(\n `inputs.${i}.seatings.${seatIndex}.row`,\n row.isSpeculative ? '' : row.name\n );\n setValue(`inputs.${i}.seatings.${seatIndex}.rowId`, row.id);\n } else {\n // If we can't find the row - that mean they typed it in\n // so just keep with they type as the row\n setValue(`inputs.${i}.seatings.${seatIndex}.row`, rowName ?? '');\n setValue(`inputs.${i}.seatings.${seatIndex}.rowId`, null);\n }\n });\n },\n [clearErrors, inputIndeces, setValue]\n );\n\n const onQuantityChange = useCallback(\n (\n e: React.ChangeEvent,\n seatIndex: number,\n maxDisplayQuantity: number | null\n ) => {\n inputIndeces.forEach((i) => {\n const v = parseInt(e.target.value) || 0;\n if (v >= 0 && v <= INT_MAX_VALUE) {\n clearErrors(`inputs.${i}.seatings.${seatIndex}.quantity`);\n setValue(`inputs.${i}.seatings.${seatIndex}.quantity`, v);\n\n if (maxDisplayQuantity != null && maxDisplayQuantity > v) {\n clearErrors(`inputs.${i}.seatings.${seatIndex}.maxDisplayQuantity`);\n setValue(`inputs.${i}.seatings.${seatIndex}.maxDisplayQuantity`, v);\n }\n } else {\n setValue(`inputs.${i}.seatings.${seatIndex}.quantity`, null);\n }\n });\n },\n [clearErrors, inputIndeces, setValue]\n );\n\n const onMaxQuantityChange = useCallback(\n (\n e: React.ChangeEvent,\n seatIndex: number,\n quantity: number | null\n ) => {\n inputIndeces.forEach((i) => {\n let v = parseInt(e.target.value) || 0;\n if (v >= 0) {\n v = Math.min(v, quantity || INT_MAX_VALUE);\n\n clearErrors(`inputs.${i}.seatings.${seatIndex}.maxDisplayQuantity`);\n setValue(`inputs.${i}.seatings.${seatIndex}.maxDisplayQuantity`, v);\n if (!quantity) {\n clearErrors(`inputs.${i}.seatings.${seatIndex}.quantity`);\n setValue(`inputs.${i}.seatings.${seatIndex}.quantity`, v);\n }\n } else {\n setValue(\n `inputs.${i}.seatings.${seatIndex}.maxDisplayQuantity`,\n null\n );\n }\n });\n },\n [clearErrors, inputIndeces, setValue]\n );\n\n const onListingNotesChange = useCallback(\n (seatIndex: number, listingNotes: ListingNote[]) => {\n inputIndeces.forEach((i) => {\n setValue(\n `inputs.${i}.seatings.${seatIndex}.listingNotes`,\n listingNotes\n );\n });\n },\n [inputIndeces, setValue]\n );\n\n const onUnitNetProceedsChange = useCallback(\n (index: number) => (e: React.ChangeEvent) => {\n e.stopPropagation();\n e.preventDefault();\n\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n inputIndeces.forEach((i) => {\n clearErrors(`inputs.${i}.seatings.${index}.unitNetProceeds`);\n setValue(`inputs.${i}.seatings.${index}.unitNetProceeds`, v);\n setValue(\n `inputs.${i}.seatings.${index}.websitePrice`,\n getAllInPriceFromListPrice(\n v,\n null,\n stubHubMarketplace?.sellerFee\n ) ?? null\n );\n });\n } else {\n inputIndeces.forEach((i) => {\n setValue(`inputs.${i}.seatings.${index}.unitNetProceeds`, null);\n setValue(`inputs.${i}.seatings.${index}.websitePrice`, null);\n });\n }\n },\n [clearErrors, inputIndeces, setValue, stubHubMarketplace?.sellerFee]\n );\n\n const onWebsitePriceChange = useCallback(\n (index: number) => (e: React.ChangeEvent) => {\n e.stopPropagation();\n e.preventDefault();\n\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n inputIndeces.forEach((i) => {\n clearErrors(`inputs.${i}.seatings.${index}.unitNetProceeds`);\n setValue(`inputs.${i}.seatings.${index}.websitePrice`, v);\n setValue(\n `inputs.${i}.seatings.${index}.unitNetProceeds`,\n getListPriceFromAllinPrice(\n v,\n null,\n stubHubMarketplace?.sellerFee\n ) ?? null\n );\n });\n } else {\n inputIndeces.forEach((i) => {\n setValue(`inputs.${i}.seatings.${index}.unitNetProceeds`, null);\n setValue(`inputs.${i}.seatings.${index}.websitePrice`, null);\n });\n }\n },\n [clearErrors, inputIndeces, setValue, stubHubMarketplace?.sellerFee]\n );\n\n const onFaceValueChange = useCallback(\n (index: number) => (e: React.ChangeEvent) => {\n e.stopPropagation();\n e.preventDefault();\n\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n inputIndeces.forEach((i) => {\n setValue(`inputs.${i}.seatings.${index}.faceValue`, v);\n });\n } else {\n inputIndeces.forEach((i) => {\n setValue(`inputs.${i}.seatings.${index}.faceValue`, null);\n });\n }\n },\n [inputIndeces, setValue]\n );\n\n const selectedTicketClassIds = useMemo(() => {\n const result = inputToDisplay.seatings.map((s) => {\n const selectedSection = venueMapInfo?.sections.find(\n (vs) =>\n (s.sectionId != null && s.sectionId === vs.id) ||\n (s.sectionId == null && s.section === vs.name)\n );\n const selectedRow = selectedSection?.rows?.find(\n (r) =>\n (s.rowId != null && s.rowId === r.id) ||\n (s.rowId == null && s.row === r.name)\n );\n\n return (\n selectedRow?.tktClass?.id ??\n selectedSection?.specRow?.tktClass?.ticketClassId ??\n null\n );\n });\n\n return result.filter((id) => !id).map((id) => id!);\n }, [inputToDisplay.seatings, venueMapInfo?.sections]);\n\n return (\n }\n title={}\n >\n \n {Boolean(venueMapInfo?.sections?.length) && (\n \n ({\n fill: inf.isSelected\n ? vars.color.textBrandActive\n : vars.color.backgroundHighlight,\n stroke: inf.isSelected\n ? vars.color.textBrand\n : vars.color.aqua100,\n textColor: inf.isSelected\n ? vars.color.textInverted\n : vars.color.textBrand,\n })}\n />\n \n )}\n \n\n }\n errors={seatingsError}\n >\n
    \n {inputToDisplay.seatings.length > 0 && (\n <>\n {tableHeaderContent.map((headerCellContentId) => (\n
    \n {headerCellContentId && }\n
    \n ))}\n {inputToDisplay.seatings.map((s, j) => {\n const sectionError = getFieldState(\n `inputs.${inputIndeces[0]}.seatings.${j}.section`\n ).error?.message;\n const rowError = getFieldState(\n `inputs.${inputIndeces[0]}.seatings.${j}.row`\n ).error?.message;\n const quantityError = getFieldState(\n `inputs.${inputIndeces[0]}.seatings.${j}.quantity`\n ).error?.message;\n const proceedsError = getFieldState(\n `inputs.${inputIndeces[0]}.seatings.${j}.unitNetProceeds`\n ).error?.message;\n const websiteError = getFieldState(\n `inputs.${inputIndeces[0]}.seatings.${j}.websitePrice`\n ).error?.message;\n\n const selectedSection = venueMapInfo?.sections.find(\n (vs) =>\n (s.sectionId != null && s.sectionId === vs.id) ||\n (s.sectionId == null && s.section === vs.name)\n );\n const selectedRow = selectedSection?.rows?.find(\n (r) =>\n (s.rowId != null && s.rowId === r.id) ||\n (s.rowId == null && s.row === r.name)\n );\n\n return (\n <>\n
    \n \n {\n onSectionChange(j, sectionName, section);\n }}\n />\n \n
    \n \n {\n onRowChange(j, rowName, row);\n }}\n />\n \n \n \n onQuantityChange(e, j, s.maxDisplayQuantity)\n }\n />\n \n \n onMaxQuantityChange(e, j, s.quantity)}\n />\n \n\n \n \n \n \n \n \n \n \n \n\n \n \n onListingNotesChange(j, listingNotes)\n }\n />\n \n
    \n {\n removeSection(j);\n }}\n />\n
    \n \n );\n })}\n \n )}\n \n + \n \n
    \n \n \n );\n};\n","import { useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { EventMapContextProvider } from 'src/contexts/EventMapContext';\nimport { Stack } from 'src/core/ui';\nimport { useGetEventListingConstraints } from 'src/hooks/useGetEventListingConstraints';\nimport { Event } from 'src/WebApiController';\n\nimport { SeatSaverListingDetailsInputForm } from '../SeatSaverListingWizard.types';\nimport { DeliverySection } from './DeliverySection';\nimport { ListingSection } from './ListingSection';\nimport { SeatingSection } from './SeatingSection';\n\nexport const SeatSaverInput = ({\n events,\n disabled,\n}: {\n events: Event[]; // This is at least 1, but if more than one, must be of same venueConfigId\n disabled?: boolean;\n}) => {\n const { watch } = useFormContext();\n\n const viagogoEventIds = Array.from(\n new Set(events.filter((ev) => ev.viagId).map((ev) => ev.viagId!))\n );\n const inputs = watch('inputs');\n const inputIndeces = useMemo(() => {\n const eventIds = events.map((ev) => ev.viagVirtualId);\n return inputs\n .map((input, i) => {\n if (eventIds.includes(input.event.viagVirtualId)) {\n return i;\n }\n return -1;\n })\n .filter((i) => i >= 0);\n }, [events, inputs]);\n\n const { eventListingConstraintsQuery } =\n useGetEventListingConstraints(viagogoEventIds);\n\n return (\n \n \n \n \n \n \n \n );\n};\n","import {\n ComponentProps,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react';\nimport { FormProvider } from 'react-hook-form';\nimport { CancelButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport {\n EventSearch,\n EventSearchResult,\n} from 'src/components/Events/EventSearch';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { getInHandDateBasedOnEvent } from 'src/utils/eventWithDataUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ApiException,\n DeliveryType,\n Event,\n EventTimeFrameFilter,\n ListingClient,\n Performer,\n Venue,\n} from 'src/WebApiController';\n\nimport { CancellableFormFooter } from '../common';\nimport { CancellableFormHeader } from '../common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from '../common/EventEntityHeader';\nimport { Summary, VenueConfigSummary } from '../common/Summary';\nimport {\n ModalBody,\n ModalBodyDataContainer,\n ModalBodyHeaderContainer,\n ModalFooter,\n} from '../Modal/Modal.styled';\nimport { SeatSaverInput } from './components/SeatSaverInput';\nimport * as styles from './SeatSaverListingWizard.css';\nimport {\n SeatSaverListingDetailsInputForm,\n SeatSaverListingWizardProps,\n} from './SeatSaverListingWizard.types';\n\nexport const SeatSaverListingWizardBody = ({\n disabled,\n events,\n cancelTo,\n formState,\n handleSubmit,\n watch,\n setValue,\n getValues,\n setError,\n}: Omit<\n ComponentProps<\n typeof FormProvider\n >,\n 'children'\n> & { disabled?: boolean } & SeatSaverListingWizardProps) => {\n const multiEventInputsDialog = useBasicDialog();\n const { showErrorDialog, genericError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { closeModal, setModal } = useContext(ModalContext);\n const [isLoading, setIsLoading] = useState(false);\n const { isSubmitting } = formState;\n const [curEventGroupIndex, setCurEventGroupIndex] = useState(0);\n const [shouldGroupEventsByVenueId, setShouldGroupEventsByVenueId] =\n useState(true);\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const [showEventSearch, setShowEventSearch] = useState(!events?.length);\n const [selectedEvents, setSelectedEvents] = useState(\n events\n );\n const [selectedVenues, setSelectedVenues] = useState>(\n {}\n );\n const [selectedPerformers, setSelectedPerformer] = useState<\n Record\n >({});\n\n const eventsGroups = useMemo(() => {\n // Group the events for display\n const eventsWithNoVenueConfig = selectedEvents?.filter(\n (ev) => !ev.venueCfgId\n );\n\n const eventsWithVenueConfig = (selectedEvents ?? []).filter(\n (ev) => ev.venueCfgId\n );\n\n let eventsGroups = [];\n\n if (shouldGroupEventsByVenueId) {\n const eventsGroupByVenueConfigs = eventsWithVenueConfig.reduce(\n (r, ev) => {\n const curList = r[ev.venueCfgId!];\n if (curList) {\n curList.push(ev);\n } else {\n r[ev.venueCfgId!] = [ev];\n }\n return r;\n },\n {} as Record\n );\n\n // now combine them\n eventsGroups = Object.values(eventsGroupByVenueConfigs).map(\n (events) => events\n );\n } else {\n eventsGroups = eventsWithVenueConfig.map((e) => [e]);\n }\n\n eventsWithNoVenueConfig?.forEach((ev) => {\n eventsGroups.push([ev]);\n });\n\n return eventsGroups;\n }, [shouldGroupEventsByVenueId, selectedEvents]);\n\n const onSubmit = useCallback(\n async (formValues: SeatSaverListingDetailsInputForm) => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const client = new ListingClient(activeAccountWebClientConfig);\n\n const result = await client.createSeatSaver(formValues.inputs);\n\n if (isSuccess(result)) {\n await refreshExpandedListItems();\n closeModal(true);\n } else {\n showErrorDialog(\n 'ListingClient.createSeatSaver',\n {\n message: result.message ?? genericError,\n status: result.status!,\n } as ApiException,\n {\n onDismissError: () => cancelTo && setModal(cancelTo),\n trackErrorData: formValues,\n }\n );\n }\n },\n (error) => {\n showErrorDialog('ListingClient.createSeatSaver', error, {\n trackErrorData: formValues,\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n cancelTo,\n closeModal,\n genericError,\n refreshExpandedListItems,\n setModal,\n showErrorDialog,\n ]\n );\n\n const hasChanges = useCallback(\n (formValues: SeatSaverListingDetailsInputForm) => {\n return formState.defaultValues !== formValues;\n },\n [formState.defaultValues]\n );\n\n const requiredMsg = useContent(ContentId.Required);\n\n const onSubmitHandler = useCallback(() => {\n const formValues = getValues();\n\n const changed = hasChanges(formValues);\n if (!changed) return;\n\n let hasErrors = false;\n\n // Validate the current group to see whether they are good to proceed\n const curGroupEvents = eventsGroups[curEventGroupIndex];\n const eventIds = curGroupEvents.map((ev) => ev.viagVirtualId);\n formValues.inputs.map((input, i) => {\n if (eventIds.includes(input.event.viagVirtualId)) {\n if (!input.seatings?.length) {\n hasErrors = true;\n setError(\n `inputs.${i}.seatings`,\n { message: requiredMsg },\n { shouldFocus: true }\n );\n } else {\n input.seatings.forEach((s, j) => {\n if (!s.section) {\n hasErrors = true;\n setError(\n `inputs.${i}.seatings.${j}.section`,\n {\n message: requiredMsg,\n },\n { shouldFocus: true }\n );\n }\n if (!s.quantity) {\n hasErrors = true;\n setError(\n `inputs.${i}.seatings.${j}.quantity`,\n {\n message: requiredMsg,\n },\n { shouldFocus: true }\n );\n }\n });\n }\n }\n });\n\n if (!hasErrors && curEventGroupIndex < eventsGroups.length - 1) {\n setCurEventGroupIndex(curEventGroupIndex + 1);\n } else {\n handleSubmit(onSubmit)();\n }\n }, [\n getValues,\n hasChanges,\n eventsGroups,\n curEventGroupIndex,\n setError,\n requiredMsg,\n handleSubmit,\n onSubmit,\n ]);\n\n const formHasChanges = hasChanges(watch());\n\n const onEventSummaryClose = useCallback(() => {\n setSelectedEvents(undefined);\n }, []);\n\n const onEventsSelect = useCallback(\n (data: EventSearchResult[]) => {\n const changedEvents = data.map((e) => e.event);\n const newEvents = data.filter((d) => d.isSelected).map((e) => e.event);\n const unchangedEvents = (selectedEvents ?? []).filter((selectedEvent) =>\n changedEvents.every(\n (changedEvent) =>\n changedEvent.viagVirtualId !== selectedEvent.viagVirtualId\n )\n );\n\n setSelectedEvents([...unchangedEvents, ...newEvents]);\n\n let venChanged = false;\n let perfChanged = false;\n data.forEach((d) => {\n if (d.venue) {\n selectedVenues[d.event.viagVirtualId] = d.venue;\n venChanged = true;\n }\n if (d.performer) {\n selectedPerformers[d.event.viagVirtualId] = d.performer;\n perfChanged = true;\n }\n });\n\n if (venChanged) {\n setSelectedVenues({ ...selectedVenues });\n }\n if (perfChanged) {\n setSelectedPerformer({ ...selectedPerformers });\n }\n },\n [selectedEvents, selectedPerformers, selectedVenues]\n );\n\n const onNextFromEventSearch = useCallback(() => {\n const curInputs = getValues().inputs;\n const newInputs = selectedEvents?.filter((ev) =>\n curInputs.every((ci) => ci.event.viagVirtualId !== ev.viagVirtualId)\n );\n\n // Modify the forms\n if (newInputs) {\n setValue('inputs', [\n ...curInputs,\n ...newInputs.map((ev) => ({\n event: ev,\n seatings: [],\n quantity: 0,\n unitNetProceeds: 0,\n websitePrice: 0,\n faceValue: null,\n deliveryType: DeliveryType.InApp,\n ticketTypeRules: null,\n inHandDate: getInHandDateBasedOnEvent(ev, 2),\n autoBroadcastCreatedListing: false,\n daysBeforeEvent: 2,\n sellerOwnTickets: true,\n })),\n ]);\n }\n\n setShowEventSearch(false);\n setCurEventGroupIndex(0);\n }, [getValues, selectedEvents, setValue]);\n\n return (\n <>\n \n \n \n \n }\n />\n \n\n \n {showEventSearch ? (\n \n ev.viagVirtualId)}\n numEventsSelected={0}\n timeFrame={EventTimeFrameFilter.Future}\n />\n \n ) : (\n <>\n \n {eventsGroups[curEventGroupIndex].length === 1 ? (\n \n \n \n )\n }\n />\n ) : (\n \n \n \n )\n }\n />\n )}\n \n \n {isLoading ? (\n \n ) : (\n \n )}\n \n \n )}\n \n\n \n \n {showEventSearch ? (\n {\n const existGroupedEvents = eventsGroups.some(\n (group) => group.length > 1\n );\n if (existGroupedEvents) {\n // Ask the user if he wants to use grouped events\n multiEventInputsDialog.launchDialog();\n } else {\n // No grouped events, then proceed to the next page\n onNextFromEventSearch();\n multiEventInputsDialog.closeDialog();\n }\n }}\n disabled={disabled || isLoading || !selectedEvents?.length}\n textContentId={ContentId.Next}\n />\n ) : (\n <>\n {!events?.length && (\n {\n if (curEventGroupIndex === 0) {\n setShowEventSearch(true);\n } else {\n setCurEventGroupIndex(curEventGroupIndex - 1);\n }\n }}\n textContentId={ContentId.Back}\n />\n )}\n \n \n )}\n \n \n \n }\n bodyText={\n \n \n \n \n \n \n \n \n \n \n \n }\n onCancel={() => {\n setShouldGroupEventsByVenueId(false);\n onNextFromEventSearch();\n multiEventInputsDialog.closeDialog();\n }}\n onOkay={() => {\n setShouldGroupEventsByVenueId(true);\n onNextFromEventSearch();\n multiEventInputsDialog.closeDialog();\n }}\n />\n \n );\n};\n","import { FormProvider, useForm } from 'react-hook-form';\nimport { getInHandDateBasedOnEvent } from 'src/utils/eventWithDataUtils';\nimport { DeliveryType } from 'src/WebApiController';\n\nimport {\n SeatSaverListingDetailsInputForm,\n SeatSaverListingWizardProps,\n} from './SeatSaverListingWizard.types';\nimport { SeatSaverListingWizardBody } from './SeatSaverListingWizardBody';\n\nexport const SeatSaverListingWizard = ({\n cancelTo,\n events,\n ...rest\n}: SeatSaverListingWizardProps) => {\n const methods = useForm({\n defaultValues: {\n inputs:\n events?.map((ev) => ({\n event: ev,\n autoBroadcastCreatedListing: false,\n seatings: [],\n quantity: 0,\n unitNetProceeds: 0,\n websitePrice: 0,\n faceValue: null,\n deliveryType: DeliveryType.InApp,\n inHandDate: getInHandDateBasedOnEvent(ev, 2),\n daysBeforeEvent: 2,\n sellerOwnTickets: true,\n })) ?? [],\n },\n });\n\n return (\n \n \n \n );\n};\n","import { ComponentProps, useCallback, useContext } from 'react';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { GroupListingsModal } from 'src/modals/GroupListings';\nimport { SeatSaverListingWizard } from 'src/modals/SeatSaverListingWizard/SeatSaverListingWizard';\nimport { SeatSaverIcon } from 'src/svgs';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Event, Feature, Permission } from 'src/WebApiController';\n\nexport const LaunchAddSeatSaver = ({\n events,\n disabled,\n}: ComponentProps & {\n event?: Event;\n disabled?: boolean;\n}) => {\n const hasPermission = useUserHasAnyOfPermissions(\n Permission.Inventory_AddSeatSaver\n );\n const hasSeatSaverFeature = useUserHasFeature(Feature.SeatSaver);\n\n const { setModal } = useContext(ModalContext);\n const {\n eventsExpansion: { setListItemExpansion },\n } = useCatalogDataContext();\n\n const addSeatSaver = useCallback(() => {\n setModal({\n children: ,\n clickOutsideToClose: true,\n size: 'slide-in',\n });\n }, [setModal, events]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (events?.length) {\n setListItemExpansion(\n true,\n events.map((ev) => ev.viagVirtualId)\n );\n }\n\n addSeatSaver();\n },\n [events, addSeatSaver, setListItemExpansion]\n );\n\n if (!hasPermission || !hasSeatSaverFeature) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n );\n};\n","import { ComponentProps, useCallback } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventHubContext } from 'src/contexts/EventHubContext/EventHubContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { GroupListingsModal } from 'src/modals/GroupListings';\nimport { SplitIcon } from 'src/svgs';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Event } from 'src/WebApiController';\n\nexport const EnterCompanionMode = ({\n event,\n disabled,\n}: ComponentProps & {\n event?: Event;\n disabled?: boolean;\n}) => {\n const { onStartSession, onCancelSession, sessionRole, enabled } =\n useEventHubContext();\n\n const onToggleComapnionMode = useCallback(() => {\n if (sessionRole) {\n onCancelSession();\n } else {\n onStartSession();\n }\n }, [onStartSession, onCancelSession, sessionRole]);\n\n if (!event?.viagId || !enabled) {\n return null;\n }\n return (\n \n \n \n \n \n \n );\n};\n","import { ListingMergeSuggestion } from 'src/WebApiController';\n\n/**\n * Clusted array of listing ids when they have overlap\n * E.g. [[1, 2], [3, 4], [2, 3], [5, 6]] => [[1, 2, 3], [5, 6]]\n * @param listingIds\n * @returns\n */\nconst clusterListingIds = (listingIds: number[][]) => {\n const clusters: number[][] = [];\n // This step is necessary - check the case of [[1, 2], [3, 4], [2, 3]]\n const sortedListingIds = listingIds.toSorted((a, b) => a[0] - b[0]);\n sortedListingIds.forEach((ids) => {\n const cluster = clusters.find((c) => ids.some((id) => c.includes(id)));\n if (cluster) {\n ids.forEach((id) => {\n if (!cluster.includes(id)) {\n cluster.push(id);\n }\n });\n } else {\n clusters.push(ids);\n }\n });\n return clusters\n .map((c) => c.toSorted((a, b) => a - b))\n .filter((c) => c.length > 1);\n};\n\nexport const clusterListingMergeSuggestionsByListingIdOverlap = (\n mergeSuggestions: ListingMergeSuggestion[] | null | undefined\n): ListingMergeSuggestion[] | null | undefined => {\n if (!mergeSuggestions) {\n return mergeSuggestions;\n }\n\n const mergeSuggestionsByEventId: Record =\n {};\n mergeSuggestions.forEach((s) => {\n const key = s.eventId ? s.eventId.toString() : (s.eventMappingId ?? '');\n if (!key) return;\n\n if (!mergeSuggestionsByEventId[key]) {\n mergeSuggestionsByEventId[key] = [];\n }\n mergeSuggestionsByEventId[key].push(s);\n });\n\n const mergedSuggestions: ListingMergeSuggestion[] = [];\n\n Object.values(mergeSuggestionsByEventId).forEach((suggestions) => {\n const listingIds = suggestions.map((s) => s.listingIds);\n const clusteredListingIds = clusterListingIds(listingIds);\n\n clusteredListingIds.forEach((ids) => {\n const mergedSuggestion: ListingMergeSuggestion = {\n eventId: suggestions[0].eventId,\n eventMappingId: suggestions[0].eventMappingId,\n listingIds: ids,\n seatFrom: null,\n seatTo: null,\n };\n mergedSuggestions.push(mergedSuggestion);\n });\n });\n\n return mergedSuggestions;\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { Event, ListingClient } from 'src/WebApiController';\n\nimport { UseGetListingMergeSuggestions } from './UseGetListingMergeSuggestions.types';\nimport { clusterListingMergeSuggestionsByListingIdOverlap } from './useGetListingMergeSuggestions.utils';\n\nexport const useGetListingMergeSuggestionsByEvent = (\n event?: Event | null,\n excludeHeldListings = false\n): UseGetListingMergeSuggestions => {\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const shouldQuery =\n activeAccountWebClientConfig.activeAccountId != null &&\n event?.viagId != null;\n\n const mergeSuggestionsQuery = useQuery({\n queryKey: [\n 'ListingClient.getListingMergeSuggestionsByEvent',\n activeAccountWebClientConfig,\n event?.viagId,\n excludeHeldListings,\n ],\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n return new ListingClient(\n activeAccountWebClientConfig\n ).getListingMergeSuggestionsByEvent(event!.viagId!, excludeHeldListings);\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n persist: false,\n onError: (error: ErrorTypes) => {\n trackError('ListingClient.getListingMergeSuggestionsByEvent', error, {\n trackErrorData: {\n viagogoEventId: event?.viagId,\n excludeHeldListings,\n },\n });\n },\n },\n });\n\n const mergeSuggestions = useMemo(() => {\n return clusterListingMergeSuggestionsByListingIdOverlap(\n mergeSuggestionsQuery.data\n );\n }, [mergeSuggestionsQuery.data]);\n\n return {\n mergeSuggestions,\n isLoading: mergeSuggestionsQuery.isLoading,\n };\n};\n","import styled from 'styled-components/macro';\n\nexport const MainLabel = styled.div`\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('title5')};\n display: flex;\n justify-content: space-between;\n`;\n","import { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { useAlertWithSuppressionDialog } from './useAlertWithSuppressionDialog';\n\nexport function useMergeGroupedListingDialog(\n onOkay: () => void,\n onCancel: () => void\n) {\n const { value, ...rest } = useAlertWithSuppressionDialog(\n 'mergedGroupListingTimestamp',\n onOkay,\n onCancel\n );\n return {\n ...rest,\n lastTimeStamp: value?.mergedGroupListingTimestamp,\n bodyText: ,\n cancelText: ,\n };\n}\n","import { useCallback, useMemo, useState } from 'react';\nimport { ConfirmButton } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n Alert,\n AlertWithSuppressionDialog,\n} from 'src/dialogs/AlertWithSuppressionDialog';\nimport { useMergeGroupedListingDialog } from 'src/dialogs/AlertWithSuppressionDialog/useMergeGroupedListingDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ListingTable } from 'src/tables/ListingTable';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isDatePassedHours } from 'src/utils/dateTimeUtils';\nimport { Event, Listing } from 'src/WebApiController';\n\nimport * as styles from './MergeListings.css';\nimport { GroupIdNameMap } from './utils';\n\nexport type MergeListingsSuggestionsDisplayProps = {\n event: Event;\n listings: Listing[];\n listingIds: number[];\n disabled?: boolean;\n onMergeSuggestions: (listingIds: number[]) => void;\n groupIdNameMap?: GroupIdNameMap;\n};\n\nexport const MergeListingsSuggestionsDisplay = ({\n listingIds,\n listings,\n disabled,\n onMergeSuggestions: onMerge,\n groupIdNameMap,\n ...rest\n}: MergeListingsSuggestionsDisplayProps) => {\n const listingsSelected = useMemo(() => {\n return listings.filter((l) => listingIds.includes(l.id)) ?? [];\n }, [listingIds, listings]);\n\n const warningDialog = useBasicDialog();\n const mergeSuggestionsGroupListingHookProps = useMergeGroupedListingDialog(\n () => {},\n () => {}\n );\n\n const [alerts, setAlerts] = useState([]);\n\n const onMergeHandler = useCallback(() => {\n const hasListingFromGroup = listingIds.some((listingId) => {\n return listings.find((l) => l.id === listingId)?.ltGrpId;\n });\n\n if (\n hasListingFromGroup &&\n isDatePassedHours(mergeSuggestionsGroupListingHookProps.lastTimeStamp, 1)\n ) {\n setAlerts([mergeSuggestionsGroupListingHookProps]);\n warningDialog.launchDialog();\n } else {\n onMerge(listingIds);\n }\n }, [\n listingIds,\n listings,\n mergeSuggestionsGroupListingHookProps,\n onMerge,\n warningDialog,\n ]);\n\n return (\n <>\n
    \n
    \n \n
    \n \n
    \n }\n size=\"md\"\n {...warningDialog.dialogProps}\n alerts={alerts}\n onOkay={() => {\n onMerge(listingIds);\n warningDialog.closeDialog();\n }}\n okText={ContentId.Yes}\n cancelText={ContentId.No}\n onCancel={() => warningDialog.closeDialog()}\n />\n \n );\n};\n","import { isEmpty } from 'lodash-es';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { CatalogMultiSelectionContextProvider } from 'src/contexts/CatalogMultiSelectionContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { shared, vars } from 'src/core/themes';\nimport { Stack, Switch } from 'src/core/ui';\nimport { useGetListingMergeSuggestionsByEvent } from 'src/hooks/api/useGetListingMergeSuggestionsByEvent';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { FieldError } from 'src/modals/common/Purchase';\nimport { ListingTable } from 'src/tables/ListingTable';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EventWithData, ListingGroup } from 'src/WebApiController';\nimport { Feature, Listing, MergeListingsInput } from 'src/WebApiController';\n\nimport {\n MultiSelectionContextProvider,\n MultiSelectScope,\n} from '../../contexts/MultiSelectionContext/MultiSelectionContext';\nimport * as styles from './MergeListings.css';\nimport { MainLabel } from './MergeListings.styled';\nimport { MergeListingsSuggestionsDisplay } from './MergeListingsSuggestionsDisplay';\nimport { getFlattenedListings } from './utils';\n\nexport type MergeListingsBodyProps = EventWithData & {\n disabled?: boolean;\n onMergeSuggestions: (listingIds: number[]) => void;\n footer?: React.ReactElement;\n};\n\nexport const MergeListingsBody = ({\n event,\n entities,\n footer,\n ...rest\n}: MergeListingsBodyProps) => {\n const listings = entities.listings;\n\n const { watch, setValue, clearErrors, formState } =\n useFormContext();\n\n const hasDefaultNotToMergeHoldListingsFeature = useUserHasFeature(\n Feature.DefaultNotToMergeHoldListings\n );\n\n const [excludeHeldListings, setExcludeHeldListings] = useState(\n hasDefaultNotToMergeHoldListingsFeature\n );\n\n const hasAdminHoldListings = useMemo(\n () => !isEmpty(listings?.filter((l) => l.isAdminHold)),\n [listings]\n );\n\n const eligibleListings = useMemo(\n (): (Listing | ListingGroup)[] =>\n (listings?.filter((l) => {\n let eligible = !l.isSeatSaver;\n if (excludeHeldListings) {\n eligible = eligible && !l.isAdminHold;\n }\n\n return eligible;\n }) || []) as (Listing | ListingGroup)[],\n [excludeHeldListings, listings]\n );\n\n const listingIds = watch('listingIds');\n\n const [ineligibilityCount, setIneligibilityCount] = useState(0);\n\n const onListingIdsSelected = (selectedIds: number[]) => {\n clearErrors('listingIds');\n setValue('listingIds', selectedIds);\n };\n\n const { mergeSuggestions } = useGetListingMergeSuggestionsByEvent(\n event,\n excludeHeldListings\n );\n\n const sectionDifMsg = useContent(ContentId.MergeListings_SectionDifference);\n const rowDifMsg = useContent(ContentId.MergeListings_RowDifference);\n const deliveryDifMsg = useContent(ContentId.MergeListings_DeliveryDifference);\n const groupedListingMsg = useContent(ContentId.MergeListings_GroupedListings);\n const mismatchListingMsg = useContent(\n ContentId.MergeListings_ListingMismatchWarning\n );\n\n const getListingIneiligibleReason = useCallback(\n (firstListing: Listing, l: Listing) => {\n return l.seating.section !== firstListing.seating.section\n ? sectionDifMsg\n : (l.seating.row || null) !== (firstListing.seating.row || null)\n ? rowDifMsg\n : l.delivType !== firstListing.delivType\n ? deliveryDifMsg\n : l.isLtGrp\n ? groupedListingMsg\n : undefined;\n },\n [deliveryDifMsg, groupedListingMsg, rowDifMsg, sectionDifMsg]\n );\n\n const getListingNotEligibleForSelection = useCallback(\n (listings?: Listing[] | null) => {\n const selectedListings = (listings ?? []).filter(\n (l) => listingIds?.includes(l.id)\n );\n\n if (selectedListings?.length) {\n const firstListing = selectedListings[0];\n const listingsWithIneligibleReasons = (listings ?? [])!.map((l) => ({\n listing: l,\n ineligibleReason: undefined,\n }));\n\n const newIneligibilityCount = listingsWithIneligibleReasons.filter(\n (l) => l.ineligibleReason\n ).length;\n\n if (newIneligibilityCount !== ineligibilityCount) {\n setIneligibilityCount(newIneligibilityCount);\n }\n return listingsWithIneligibleReasons;\n }\n },\n [ineligibilityCount, listingIds]\n );\n\n const mergeMismatchListingWarning = useMemo(() => {\n const selectedListings = (eligibleListings ?? []).filter(\n (l) => listingIds?.includes(l.id)\n );\n\n if (selectedListings.length) {\n const firstListing = selectedListings[0];\n const hasMismatch = selectedListings.some((l, index) => {\n return (\n index > 0 && getListingIneiligibleReason(firstListing, l) != null\n );\n });\n\n if (hasMismatch) {\n return mismatchListingMsg;\n }\n }\n\n return undefined;\n }, [\n getListingIneiligibleReason,\n\n listingIds,\n mismatchListingMsg,\n eligibleListings,\n ]);\n\n const mergeSuggestionsListingIds = useMemo(() => {\n if (!mergeSuggestions) {\n return [];\n }\n\n return mergeSuggestions.map((s) => s.listingIds);\n }, [mergeSuggestions]);\n\n const [flattenedEligibleListings, groupIdNameMap] =\n getFlattenedListings(eligibleListings);\n\n return (\n \n \n \n {hasAdminHoldListings && hasDefaultNotToMergeHoldListingsFeature && (\n \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n if (isChecked === excludeHeldListings) {\n setExcludeHeldListings(!isChecked);\n }\n }}\n />\n \n \n )}\n \n \n \n \n \n\n {mergeMismatchListingWarning && (\n \n )}\n\n {formState.errors.listingIds?.message}\n \n \n \n {footer}\n {ineligibilityCount > 0 ? (\n \n
    \n \n
    \n
    \n \n
    \n
    \n ) : null}\n {mergeSuggestionsListingIds.length > 0 && (\n \n \n \n \n {mergeSuggestionsListingIds.map((s, i) => (\n \n ))}\n \n )}\n \n );\n};\n","import { useCallback, useState } from 'react';\nimport { FieldValues, UseFormHandleSubmit } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n Alert,\n AlertWithSuppressionDialog,\n} from 'src/dialogs/AlertWithSuppressionDialog';\nimport { useMergeGroupedListingDialog } from 'src/dialogs/AlertWithSuppressionDialog/useMergeGroupedListingDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport function useMergeGroupedListingAlertDialog(\n handleSubmit: UseFormHandleSubmit,\n mergeListings: (\n formData: TInput,\n closeModalAfterMerge?: boolean\n ) => Promise\n) {\n const [alerts, setAlerts] = useState([]);\n const warningDialog = useBasicDialog();\n\n const mergeGroupedListingHookProps = useMergeGroupedListingDialog(\n () => {\n handleSubmit(onSubmit)();\n },\n () => {}\n );\n\n const onSubmit = useCallback(\n async (formData: TInput) => {\n return await mergeListings(formData, true);\n },\n [mergeListings]\n );\n\n return {\n setAlerts,\n warningDialog,\n mergeGroupedListingHookProps,\n onSubmit,\n AlertDialog: (\n }\n size=\"md\"\n {...warningDialog.dialogProps}\n alerts={alerts}\n onOkay={() => {\n warningDialog.closeDialog();\n }}\n okText={ContentId.Yes}\n cancelText={ContentId.No}\n onCancel={() => warningDialog.closeDialog()}\n />\n ),\n };\n}\n","import {\n ComponentProps,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { ConfirmButton } from 'src/components/Buttons';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { CancellableFormFooter } from 'src/modals/common';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalBody, ModalFooter } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isDatePassedHours } from 'src/utils/dateTimeUtils';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n Event,\n ListingClient,\n ListingMetrics,\n MergeListingsInput,\n} from 'src/WebApiController';\n\nimport { Summary } from '../common/Summary';\nimport {\n ModalBodyDataContainer,\n ModalBodyHeaderContainer,\n} from '../Modal/Modal.styled';\nimport * as styles from './MergeListings.css';\nimport { MergeListingsBody } from './MergeListingsBody';\nimport { useMergeGroupedListingAlertDialog } from './useMergeGroupedListingsDialog';\n\nexport const MergeListingsModal = ({ event }: { event: Event }) => {\n const methods = useForm({\n defaultValues: {\n listingIds: [],\n },\n });\n\n return (\n \n \n \n );\n};\n\nconst MergeListingsModalContent = ({\n event,\n formState,\n handleSubmit,\n setError,\n watch,\n getValues,\n}: { event: Event } & Omit<\n ComponentProps>,\n 'children'\n>) => {\n const { closeModal } = useContext(ModalContext);\n const { activeAccountWebClientConfig } = useAppContext();\n const [isLoading, setIsLoading] = useState(false);\n const { isSubmitting } = formState;\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n eventsTransformed,\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { refreshMetrics } = useCatalogMetricsContext();\n\n const listingIds = watch('listingIds');\n const eventData = useMemo(\n () =>\n eventsTransformed?.find(\n (ev) => ev.event.viagVirtualId === event.viagVirtualId\n ),\n [eventsTransformed, event.viagVirtualId]\n );\n\n const needToMergeTwoOrMoreListingsError = useContent(\n ContentId.NeedToMergeToTwoOrMoreListings\n );\n\n const mergeListings = useCallback(\n async (formData: MergeListingsInput, closeModalAfterMerge?: boolean) => {\n if (formData.listingIds.length < 2) {\n setError('listingIds', {\n message: needToMergeTwoOrMoreListingsError,\n });\n return;\n }\n\n // If this is called, there are no form errors (else onSubmit is never called)\n setIsLoading(true);\n\n return await tryInvokeApi(\n async () => {\n const result = await new ListingClient(\n activeAccountWebClientConfig\n ).mergeListings(formData);\n\n if (isSuccess(result)) {\n await refreshExpandedListItems();\n refreshMetrics?.();\n if (closeModalAfterMerge) {\n closeModal(true);\n }\n } else {\n showErrorDialog('ListingClient.mergeListings', result, {\n trackErrorData: formData,\n });\n }\n },\n (error) => {\n showErrorDialog('ListingClient.mergeListings', error, {\n trackErrorData: formData,\n });\n },\n () => setIsLoading(false)\n );\n },\n [\n activeAccountWebClientConfig,\n closeModal,\n needToMergeTwoOrMoreListingsError,\n refreshExpandedListItems,\n refreshMetrics,\n setError,\n showErrorDialog,\n ]\n );\n\n const {\n setAlerts,\n warningDialog,\n mergeGroupedListingHookProps,\n onSubmit,\n AlertDialog,\n } = useMergeGroupedListingAlertDialog(handleSubmit, mergeListings);\n\n const onSubmitHandler = useCallback(() => {\n const formData = getValues();\n const hasListingFromGroup = formData.listingIds.some(\n (formDataListingId) => {\n const listing = eventData?.entities?.listings?.find(\n (listing) => listing.id === formDataListingId\n );\n\n // If no listing is found in eventData.listings then that means it's in a group\n if (!listing) {\n return true;\n }\n\n return false;\n }\n );\n\n if (\n hasListingFromGroup &&\n isDatePassedHours(mergeGroupedListingHookProps.lastTimeStamp, 1)\n ) {\n setAlerts([mergeGroupedListingHookProps]);\n warningDialog.launchDialog();\n } else {\n handleSubmit(onSubmit)();\n }\n }, [\n getValues,\n mergeGroupedListingHookProps,\n eventData?.entities?.listings,\n setAlerts,\n warningDialog,\n handleSubmit,\n onSubmit,\n ]);\n\n const onMergeSuggestions = useCallback(\n (listingIds: number[]) => {\n mergeListings({ listingIds });\n },\n [mergeListings]\n );\n\n return (\n <>\n \n }\n />\n \n \n {isLoading || eventData?.entities?.listings == null ? (\n \n ) : (\n eventData && (\n <>\n \n \n \n \n \n \n \n ) : undefined\n }\n />\n {AlertDialog}\n \n \n )\n )}\n \n \n \n \n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { ListingClient } from 'src/WebApiController';\n\nimport { UseGetListingMergeSuggestions } from './UseGetListingMergeSuggestions.types';\nimport { clusterListingMergeSuggestionsByListingIdOverlap } from './useGetListingMergeSuggestions.utils';\n\nexport const useGetListingMergeSuggestions = (\n excludeHeldListings = false\n): UseGetListingMergeSuggestions => {\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const shouldQuery = activeAccountWebClientConfig.activeAccountId != null;\n const mergeSuggestionsQuery = useQuery({\n queryKey: [\n 'ListingClient.getListingMergeSuggestions',\n activeAccountWebClientConfig,\n excludeHeldListings,\n ],\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n return new ListingClient(\n activeAccountWebClientConfig\n ).getListingMergeSuggestions(excludeHeldListings);\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('ListingClient.getListingMergeSuggestions', error);\n },\n },\n });\n\n const mergeSuggestions = useMemo(() => {\n return clusterListingMergeSuggestionsByListingIdOverlap(\n mergeSuggestionsQuery.data\n );\n }, [mergeSuggestionsQuery.data]);\n\n return {\n mergeSuggestions,\n isLoading: mergeSuggestionsQuery.isLoading,\n };\n};\n","import { isEqual } from 'lodash-es';\n\n/**\n * Check if two arrays are equal ignoring order\n * @param a array of numbers\n * @param b array of numbers\n * @returns boolean\n */\nexport const isEqualIgnoringOrder = (a: number[], b: number[]) => {\n return isEqual(a.toSorted(), b.toSorted());\n};\n","import { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { Content, useContentContext } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { HorizontalTextList } from 'src/core/POS/HorizontalTextList';\nimport { vars } from 'src/core/themes';\nimport { Stack, TooltipPopover } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ListingGroupIcon } from 'src/svgs';\nimport { TableShimmeringDiv } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getListingNoteIcon } from 'src/utils/listingNotesUtils';\nimport { Feature, Listing } from 'src/WebApiController';\n\nimport * as styles from '../MergeListings.css';\nimport { GroupIdNameMap } from '../utils';\n\nexport const MergeSuggestionsDisplay = ({\n listings,\n listingCount,\n disabled,\n selected,\n onSelectedChange,\n listingGroupMap,\n}: {\n listings: Listing[] | undefined;\n listingCount: number;\n disabled?: boolean;\n selected?: boolean;\n onSelectedChange?: (selected: boolean) => void;\n listingGroupMap: GroupIdNameMap;\n}) => {\n return (\n
    \n {listings?.length ? (\n <>\n onSelectedChange?.(!selected)}\n />\n
    \n {listings.map((l) => (\n \n ))}\n
    \n \n ) : (\n
    \n {Array.from({ length: listingCount }).map((_, i) => (\n
    \n \n
    \n ))}\n
    \n )}\n
    \n );\n};\n\nconst MergeSuggestionListingItem = ({\n listing,\n listingGroupMap,\n}: {\n listing: Listing;\n listingGroupMap: GroupIdNameMap;\n}) => {\n const contentContext = useContentContext();\n const hasListingNotesAdditionalInfoFeature = useUserHasFeature(\n Feature.ListingNotesAdditionalInfo\n );\n const hasShowSeatTraitOnMergeFeature = useUserHasFeature(\n Feature.ShowSeatTraitOnMerge\n );\n\n return (\n \n \n \n
    \n {listing.ltGrpId && listingGroupMap[listing.ltGrpId] && (\n \n }\n >\n
    \n {' '}\n {listingGroupMap[listing.ltGrpId]}\n
    \n \n )}\n
    \n
    \n {listing.seatTraits?.length && hasShowSeatTraitOnMergeFeature && (\n n.listingNoteText)}\n maxTextsToShowOnHover={listing.seatTraits.length}\n />\n )}\n \n );\n};\n","import { useMemo } from 'react';\nimport { EventItemHeader } from 'src/components/Events/EventItemHeader';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport * as PosCollapsible from 'src/core/POS/PosCollapsible';\nimport { vars } from 'src/core/themes';\nimport { useGetEventFullInfo } from 'src/hooks/useGetEventFullInfo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Listing } from 'src/WebApiController';\n\nimport * as styles from '../MergeListings.css';\nimport { getFlattenedListings } from '../utils';\nimport { EventMergeSuggestionsAccordionProps } from './BulkMergeListings.types';\nimport { isEqualIgnoringOrder } from './BulkMergeListings.utils';\nimport { MergeSuggestionsDisplay } from './MergeSuggestionsDisplay';\n\nexport const EventMergeSuggestionsAccordion = ({\n eventWithMergeSuggestion,\n onSuggestionsSelectedChange,\n selectedListingIds,\n disabled,\n selected,\n partialSelected,\n onSelectedChange,\n}: EventMergeSuggestionsAccordionProps) => {\n const { event, mergeSuggestions } = eventWithMergeSuggestion;\n\n const mergeText = useContent(ContentId.Merge).toLowerCase();\n const mergesText = useContent(ContentId.Merges);\n\n const {\n eventsExpansion: { setListItemExpansion },\n eventsTransformed,\n } = useCatalogDataContext();\n const { venue, performer } = useGetEventFullInfo(event);\n\n const eventData = useMemo(\n () => eventsTransformed?.find((ev) => ev.event.viagId === event.viagId),\n [event, eventsTransformed]\n );\n\n const [flattenedListings, groupIdNameMap] = getFlattenedListings(\n eventData?.entities?.listings\n );\n\n const isSelected = (listingIds: number[]) => {\n return selectedListingIds.some((l) => isEqualIgnoringOrder(l, listingIds));\n };\n\n const listings = flattenedListings;\n\n return (\n {\n if (open) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n }}\n style={{ marginBottom: vars.spacing['lg'] }}\n >\n
    \n \n
    \n \n // If partially selected, we want to select all\n onSelectedChange?.(!selected || !!partialSelected)\n }\n onClick={(e) => e.stopPropagation()}\n />\n
    \n {`${\n mergeSuggestions.length\n } ${\n mergeSuggestions.length > 1 ? mergesText : mergeText\n }`}\n }\n />\n
    \n
    \n
    \n
    \n \n
    \n {mergeSuggestions.map((ms, i) => (\n listings?.find((l) => l.id === lid))\n .filter((l) => l) as Listing[])\n : undefined\n }\n listingGroupMap={groupIdNameMap}\n listingCount={ms.listingIds.length}\n selected={isSelected(ms.listingIds)}\n onSelectedChange={(selected) =>\n onSuggestionsSelectedChange(selected, ms.listingIds)\n }\n />\n ))}\n
    \n
    \n \n );\n};\n","import {\n ComponentProps,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Virtuoso } from 'react-virtuoso';\nimport { ConfirmButton } from 'src/components/Buttons';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack, Switch } from 'src/core/ui';\nimport { useGetListingMergeSuggestions } from 'src/hooks/api/useGetListingMergeSuggestions';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { CancellableFormFooter } from 'src/modals/common';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalBody, ModalFooter } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EVENT_SORT_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { isDatePassedHours } from 'src/utils/dateTimeUtils';\nimport { getEventSort, getEventUiSort } from 'src/utils/eventQueryUtils';\nimport {\n sortEventsByDate,\n sortEventsByName,\n} from 'src/utils/eventWithDataUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkMergeListingsInput,\n EventSort,\n Feature,\n ListingClient,\n ListingMetrics,\n} from 'src/WebApiController';\n\nimport { ModalBodyDataContainer } from '../Modal/Modal.styled';\nimport {\n EventMergeSuggestionsAccordionProps,\n UIEventWithDataAndMergeSuggestions,\n} from './BulkMergeListings/BulkMergeListings.types';\nimport { isEqualIgnoringOrder } from './BulkMergeListings/BulkMergeListings.utils';\nimport { EventMergeSuggestionsAccordion } from './BulkMergeListings/EventMergeSuggestionsAccordion';\nimport * as styles from './MergeListings.css';\nimport { MainLabel } from './MergeListings.styled';\nimport { useMergeGroupedListingAlertDialog } from './useMergeGroupedListingsDialog';\n\nexport const BulkMergeListingsModal = () => {\n const methods = useForm({\n defaultValues: {\n listingIdLists: [],\n },\n });\n\n return (\n \n \n \n );\n};\n\nconst BulkMergeListingsModalContent = ({\n formState,\n handleSubmit,\n watch,\n setValue,\n getValues,\n}: Omit<\n ComponentProps>,\n 'children'\n>) => {\n const { closeModal } = useContext(ModalContext);\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const {\n eventsTransformed,\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { refreshMetrics } = useCatalogMetricsContext();\n const isMobile = useMatchMedia('mobile');\n\n const hasDefaultNotToMergeHoldListingsFeature = useUserHasFeature(\n Feature.DefaultNotToMergeHoldListings\n );\n\n const [excludeHeldListings, setExcludeHeldListings] = useState(\n hasDefaultNotToMergeHoldListingsFeature\n );\n const { mergeSuggestions, isLoading: mergeSuggestionsIsLoading } =\n useGetListingMergeSuggestions(excludeHeldListings);\n\n const selectedText = useContent(ContentId.Selected);\n const selectAllText = useContent(ContentId.SelectAll);\n const deselectAllText = useContent(ContentId.DeselectAll);\n\n const [isLoading, setIsLoading] = useState(false);\n const { isDirty, isSubmitting } = formState;\n const [eventSortQuery, setEventSortQuery] = useState<{\n sortBy: EventSort | null;\n isSortDescending: boolean | null;\n }>({ sortBy: null, isSortDescending: false });\n\n const listingIdLists = watch('listingIdLists');\n\n const eventsWithMergeSuggestions: UIEventWithDataAndMergeSuggestions[] =\n useMemo(() => {\n if (!mergeSuggestions || !eventsTransformed) return [];\n\n const viagogoEventIdsWithMergeSuggestions = mergeSuggestions.map(\n (m) => m.eventId\n );\n\n return eventsTransformed\n .filter((ev) =>\n viagogoEventIdsWithMergeSuggestions.includes(ev.event.viagId)\n )\n .map((ev) => ({\n ...ev,\n mergeSuggestions: mergeSuggestions!.filter(\n (m) => ev.event.viagId === m.eventId\n ),\n }));\n }, [eventsTransformed, mergeSuggestions]);\n\n const mergeListings = useCallback(\n async (\n formData: BulkMergeListingsInput,\n closeModalAfterMerge?: boolean\n ) => {\n // If this is called, there are no form errors (else onSubmit is never called)\n setIsLoading(true);\n\n return await tryInvokeApi(\n async () => {\n const result = await new ListingClient(\n activeAccountWebClientConfig\n ).bulkMergeListings(formData);\n\n if (result) {\n await refreshExpandedListItems();\n refreshMetrics?.();\n }\n\n if (closeModalAfterMerge) {\n closeModal(true);\n }\n },\n (error) => {\n showErrorDialog('ListingClient.bulkMergeListings', error, {\n trackErrorData: formData,\n });\n },\n () => setIsLoading(false)\n );\n },\n [\n activeAccountWebClientConfig,\n closeModal,\n refreshExpandedListItems,\n refreshMetrics,\n showErrorDialog,\n ]\n );\n\n const {\n setAlerts,\n warningDialog,\n mergeGroupedListingHookProps,\n onSubmit,\n AlertDialog,\n } = useMergeGroupedListingAlertDialog(handleSubmit, mergeListings);\n\n const onSubmitHandler = useCallback(() => {\n const formData = getValues();\n const selectedListingIds = formData.listingIdLists.flatMap((l) => l);\n\n const listingIdsSet = new Set();\n eventsTransformed?.forEach((event) => {\n event.entities.listings?.forEach((listing) => {\n listingIdsSet.add(listing.id);\n });\n });\n\n const hasListingFromGroup = selectedListingIds.some(\n (formDataListingId) => !listingIdsSet.has(formDataListingId)\n );\n\n if (\n hasListingFromGroup &&\n isDatePassedHours(mergeGroupedListingHookProps.lastTimeStamp, 1)\n ) {\n setAlerts([mergeGroupedListingHookProps]);\n warningDialog.launchDialog();\n } else {\n handleSubmit(onSubmit)();\n }\n }, [\n getValues,\n eventsTransformed,\n mergeGroupedListingHookProps,\n setAlerts,\n warningDialog,\n handleSubmit,\n onSubmit,\n ]);\n\n const allListingIds = useMemo(() => {\n return eventsWithMergeSuggestions.reduce(\n (acc, e) => acc.concat(e.mergeSuggestions.map((m) => m.listingIds)),\n []\n );\n }, [eventsWithMergeSuggestions]);\n\n const isAllSelected = useMemo(() => {\n const mergeSuggestionCount = eventsWithMergeSuggestions.reduce(\n (acc, e) => acc + e.mergeSuggestions.length,\n 0\n );\n\n return listingIdLists.length === mergeSuggestionCount;\n }, [eventsWithMergeSuggestions, listingIdLists.length]);\n\n const toggleSelectAll = useCallback(() => {\n if (isAllSelected) {\n setValue('listingIdLists', []);\n } else {\n setValue('listingIdLists', allListingIds);\n }\n }, [allListingIds, isAllSelected, setValue]);\n\n const onSingleSuggestionSelectedChange = useCallback(\n (selected: boolean, listingIds: number[]) => {\n const isSelected = listingIdLists.some((l) =>\n isEqualIgnoringOrder(l, listingIds)\n );\n if (selected) {\n if (!isSelected) {\n setValue('listingIdLists', [...listingIdLists, listingIds]);\n }\n } else {\n if (isSelected) {\n setValue(\n 'listingIdLists',\n listingIdLists.filter((l) => !isEqualIgnoringOrder(l, listingIds))\n );\n }\n }\n },\n [listingIdLists, setValue]\n );\n\n const onEventSuggestionsSelectedChange = useCallback(\n (\n selected: boolean,\n eventWithMergeSuggestion: UIEventWithDataAndMergeSuggestions\n ) => {\n const listingIds = eventWithMergeSuggestion.mergeSuggestions.map(\n (m) => m.listingIds\n );\n if (selected) {\n setValue(\n 'listingIdLists',\n listingIdLists.concat(\n listingIds.filter(\n (l) => !listingIdLists.some((s) => isEqualIgnoringOrder(l, s))\n )\n )\n );\n } else {\n setValue(\n 'listingIdLists',\n listingIdLists.filter(\n (s) => !listingIds.some((l) => isEqualIgnoringOrder(l, s))\n )\n );\n }\n },\n [listingIdLists, setValue]\n );\n\n const isEventPartialSelected = useCallback(\n (eventWithMergeSuggestion: UIEventWithDataAndMergeSuggestions) => {\n const listingIds = eventWithMergeSuggestion.mergeSuggestions.map(\n (m) => m.listingIds\n );\n return (\n listingIds.some((l) =>\n listingIdLists.some((s) => isEqualIgnoringOrder(l, s))\n ) &&\n !listingIds.every((l) =>\n listingIdLists.some((s) => isEqualIgnoringOrder(l, s))\n )\n );\n },\n [listingIdLists]\n );\n\n const isEventSelected = useCallback(\n (eventWithMergeSuggestion: UIEventWithDataAndMergeSuggestions) => {\n const listingIds = eventWithMergeSuggestion.mergeSuggestions.map(\n (m) => m.listingIds\n );\n return listingIds.some((l) =>\n listingIdLists.some((s) => isEqualIgnoringOrder(l, s))\n );\n },\n [listingIdLists]\n );\n\n const eventAccordionProps: EventMergeSuggestionsAccordionProps[] =\n useMemo(() => {\n if (\n !eventsWithMergeSuggestions ||\n eventsWithMergeSuggestions.length === 0\n )\n return [];\n\n const result = [] as EventMergeSuggestionsAccordionProps[];\n let interimResult = eventsWithMergeSuggestions;\n if (eventSortQuery.sortBy === EventSort.MainDisplay) {\n interimResult = sortEventsByName(\n interimResult,\n eventSortQuery.isSortDescending\n ) as UIEventWithDataAndMergeSuggestions[];\n } else {\n interimResult = sortEventsByDate(\n interimResult,\n eventSortQuery.isSortDescending\n ) as UIEventWithDataAndMergeSuggestions[];\n }\n\n eventsWithMergeSuggestions.forEach((eventWithMergeSuggestion) => {\n result.push({\n eventWithMergeSuggestion,\n onSuggestionsSelectedChange: onSingleSuggestionSelectedChange,\n selectedListingIds: listingIdLists,\n selected: isEventSelected(eventWithMergeSuggestion),\n partialSelected: isEventPartialSelected(eventWithMergeSuggestion),\n onSelectedChange: (selected: boolean) =>\n onEventSuggestionsSelectedChange(\n selected,\n eventWithMergeSuggestion\n ),\n });\n });\n return result;\n }, [\n eventsWithMergeSuggestions,\n eventSortQuery.sortBy,\n eventSortQuery.isSortDescending,\n onSingleSuggestionSelectedChange,\n listingIdLists,\n isEventSelected,\n isEventPartialSelected,\n onEventSuggestionsSelectedChange,\n ]);\n\n const hasSuggestions = eventAccordionProps.length > 0;\n\n return (\n <>\n \n }\n />\n \n \n \n {isLoading || mergeSuggestionsIsLoading ? (\n \n ) : hasSuggestions ? (\n \n \n \n {hasDefaultNotToMergeHoldListingsFeature && (\n \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n if (isChecked === excludeHeldListings) {\n setExcludeHeldListings(!isChecked);\n }\n setValue('listingIdLists', []);\n }}\n />\n \n \n )}\n \n
    \n \n {`${isAllSelected ? deselectAllText : selectAllText} (${\n listingIdLists.length\n } ${selectedText})`}\n \n {\n const [sortBy, isSortDescending] = getEventSort(sort);\n if (\n sortBy !== eventSortQuery.sortBy ||\n isSortDescending !== eventSortQuery.isSortDescending\n ) {\n setEventSortQuery({\n ...eventSortQuery,\n sortBy,\n isSortDescending,\n });\n }\n }}\n valueOptionsContent={EVENT_SORT_TO_CID}\n />\n
    \n (\n \n )}\n />\n \n ) : (\n \n )}\n
    \n
    \n \n \n \n \n \n {AlertDialog}\n \n );\n};\n","import { useCallback, useContext } from 'react';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { MergeListingsModal } from 'src/modals/MergeListings';\nimport { BulkMergeListingsModal } from 'src/modals/MergeListings/BulkMergeListings';\nimport { MergeIcon } from 'src/svgs';\nimport { IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Event } from 'src/WebApiController';\n\nexport const LaunchMergeListings = ({\n event,\n disabled,\n}: {\n event?: Event | undefined;\n disabled?: boolean;\n}) => {\n const { setModal } = useContext(ModalContext);\n const {\n eventsExpansion: { setListItemExpansion },\n } = useCatalogDataContext();\n\n const mergeListings = useCallback(() => {\n setModal({\n children:\n event != null ? (\n \n ) : (\n \n ),\n clickOutsideToClose: true,\n ...{ size: 'slide-in' },\n });\n }, [setModal, event]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (event) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n\n mergeListings();\n },\n [event, mergeListings, setListItemExpansion]\n );\n\n return (\n \n \n \n \n \n \n );\n};\n","import { ReactNode } from 'react';\nimport { OpenStubhubDropdownAction } from 'src/components/common/OpenSubhubDropdownAction';\nimport { EventItemHeaderType } from 'src/components/Events/EventItemHeader/EventItemHeader';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { IconsFill, MoreIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Permission } from 'src/WebApiController';\n\nimport { LaunchAddSeatSaver } from './components/AddSeatSaverAction';\nimport { EnterCompanionMode } from './components/EnterCompanionModeAction';\nimport { LaunchMergeListings } from './components/MergeListingsAction/LaunchMergeListings';\n\nexport const InventoryEventActionDropdown = ({\n isEventPage,\n extraDropdownItems,\n ...props\n}: EventItemHeaderType & {\n isEventPage?: boolean;\n extraDropdownItems?: ReactNode;\n}) => {\n const actionsMsg = useContent(ContentId.Actions);\n const { event } = props;\n\n const hasUpdateListingInfoPermission = useUserHasAnyOfPermissions(\n Permission.Inventory_UpdateListingInfo\n );\n\n return (\n <>\n \n \n \n }\n align=\"end\"\n >\n \n \n {props.entityCount >= 2 ? (\n <>\n {hasUpdateListingInfoPermission && (\n \n )}\n \n ) : null}\n\n \n {extraDropdownItems}\n \n \n );\n};\n","import { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { Permission } from 'src/WebApiController';\n\ninterface BulkBroadcastActionsPermission {\n hasBroadcastPermission: boolean;\n hasSellerAccountAdminPermission: boolean;\n}\n\nexport const useBulkBroadcastActionsPermission =\n (): BulkBroadcastActionsPermission => {\n const hasBroadcastPermission = useUserHasAnyOfPermissions(\n Permission.Inventory_BroadcastUnbroadcast,\n Permission.Inventory_BroadcastUnbroadcastOnIsPricerOf,\n Permission.Inventory_BroadcastUnbroadcastOnPurchasedBy\n );\n\n const hasSellerAccountAdminPermission = useUserHasAnyOfPermissions(\n Permission.SellerAccount_Admin\n );\n\n return {\n hasBroadcastPermission,\n hasSellerAccountAdminPermission,\n };\n };\n","import { ComponentProps, useCallback, useContext } from 'react';\nimport { useBulkBroadcastActionsPermission } from 'src/components/common/BulkActions/BulkBroadcastActions/useBulkBroadcastActionsPermission';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { GroupListingsModal } from 'src/modals/GroupListings';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Event } from 'src/WebApiController';\n\nexport const LaunchGroupListings = ({\n slideLeft,\n events,\n disabled,\n}: ComponentProps & {\n slideLeft?: boolean;\n events?: Event[];\n disabled?: boolean;\n}) => {\n const { hasBroadcastPermission } = useBulkBroadcastActionsPermission();\n\n const { setModal } = useContext(ModalContext);\n const {\n eventsExpansion: { setListItemExpansion },\n } = useCatalogDataContext();\n\n const groupListings = useCallback(() => {\n setModal({\n children: ,\n clickOutsideToClose: true,\n ...{ size: slideLeft ? 'slide-left' : 'slide-in' },\n });\n }, [setModal, events, slideLeft]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (events?.length) {\n setListItemExpansion(\n true,\n events.map((ev) => ev.viagVirtualId)\n );\n }\n\n groupListings();\n },\n [events, groupListings, setListItemExpansion]\n );\n\n if (!hasBroadcastPermission) {\n return null;\n }\n\n return (\n \n \n \n \n \n );\n};\n","import { useContent } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { IconsFill, MoreIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Permission } from 'src/WebApiController';\n\nimport { LaunchAddSeatSaver } from './components/AddSeatSaverAction';\nimport { LaunchGroupListings } from './components/GroupListingsAction/LaunchGroupListings';\nimport { LaunchMergeListings } from './components/MergeListingsAction/LaunchMergeListings';\n\nexport const InventoryGlobalActionDropdown = () => {\n const actionsMsg = useContent(ContentId.Actions);\n const hasUpdateListingInfoPermission = useUserHasAnyOfPermissions(\n Permission.Inventory_UpdateListingInfo\n );\n\n return (\n <>\n \n \n \n }\n align=\"end\"\n >\n \n\n {hasUpdateListingInfoPermission && (\n \n )}\n\n \n \n \n );\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { AutoPricingInputs, Event, PricingClient } from 'src/WebApiController';\n\nexport const useListingGroupPricingSettings = (\n listingGroupId: string | null | undefined,\n event: Event | null | undefined\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n\n const queryClient = useQueryClient();\n const queryKey = [\n 'PricingClient.getListingGroupAutoPricingSettings',\n listingGroupId,\n event?.viagId,\n ];\n\n const shouldQuery = Boolean(\n activeAccountWebClientConfig.activeAccountId &&\n listingGroupId &&\n event?.viagId\n );\n const listingGroupPricingSettings = useQuery({\n queryKey,\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n return await new PricingClient(\n activeAccountWebClientConfig\n ).getListingGroupAutoPricingSettings(listingGroupId!, event!.viagId!);\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n retry: 3,\n retryDelay: (attemptIndex) => Math.min(500 ** attemptIndex, 3000),\n meta: {\n // TODO: temporally hide the error for now, enable this after https://stubhub.enterprise.slack.com/archives/C08D76X6M0S is fixed.\n // onError: (error: ErrorTypes) => {\n // trackError('PricingClient.getListingGroupAutoPricingSettings', error, {\n // listingGroupId,\n // });\n // },\n },\n });\n\n const resetListingPricingSettingsMutation = useMutation({\n mutationFn: async () => {\n return await new PricingClient(\n activeAccountWebClientConfig\n ).resetListingAutoPricingSettingsInGroup(listingGroupId!);\n },\n onError: (err: ErrorTypes) => {\n showErrorDialog(\n 'PricingClient.resetListingAutoPricingSettingsInGroup',\n err,\n {\n trackErrorData: { listingGroupId },\n }\n );\n },\n });\n\n const mergeListingGroupPricingSettingsMutation = useMutation({\n mutationFn: async ({\n inputs,\n listingGroupId,\n }: {\n inputs: AutoPricingInputs;\n listingGroupId: string | null;\n }) => {\n return await new PricingClient(\n activeAccountWebClientConfig\n ).mergeListingGroupPricingSettings(listingGroupId ?? undefined, inputs);\n },\n onMutate: ({ inputs }) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue = queryClient.getQueryData(queryKey);\n queryClient.setQueryData(queryKey, inputs);\n return { prevValue };\n },\n onError: (err: ErrorTypes, { inputs }, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('PricingClient.mergeListingGroupPricingSettings', err, {\n trackErrorData: { inputs },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n },\n });\n\n const onMergeListingGroupPricingSettings = useCallback(\n async (inputs?: AutoPricingInputs) => {\n if (!listingGroupId || !inputs) {\n return;\n }\n await mergeListingGroupPricingSettingsMutation.mutateAsync({\n listingGroupId,\n inputs,\n });\n },\n [listingGroupId, mergeListingGroupPricingSettingsMutation]\n );\n\n const onResetListingPricingSettings = useCallback(async () => {\n if (!listingGroupId) {\n return;\n }\n return await resetListingPricingSettingsMutation.mutateAsync();\n }, [listingGroupId, resetListingPricingSettingsMutation]);\n\n return {\n pricingSettings: listingGroupPricingSettings.data,\n onMergeListingGroupPricingSettings,\n onResetListingPricingSettings,\n isLoading:\n listingGroupPricingSettings.isPending ||\n resetListingPricingSettingsMutation.isPending ||\n mergeListingGroupPricingSettingsMutation.isPending,\n loaded: listingGroupPricingSettings.isFetched,\n };\n};\n","import { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { UK_COUNTRY_CODES } from 'src/utils/constants/constants';\nimport { getIsInternationalEvent } from 'src/utils/eventWithDataUtils';\nimport { isMarketplaceActive } from 'src/utils/userUtils';\nimport {\n Event,\n ListingMarketplaceSetting,\n Marketplace,\n} from 'src/WebApiController';\n\nimport { useGetEventFullInfo } from './useGetEventFullInfo';\n\n/**\n * Quick hook to provide grouping marketplace settings base off an event\n */\nexport const useEventMarketplaceSettings = (event?: Event) => {\n const { loginContext } = useAppContext();\n\n const { venue } = useGetEventFullInfo(event);\n const isUKEvent = Boolean(\n event != null &&\n venue?.country?.code &&\n UK_COUNTRY_CODES.includes(venue.country.code.toUpperCase())\n );\n const isInternationalEvent = getIsInternationalEvent(venue?.country?.code);\n\n const marketplaceSettings = useMemo(\n () => loginContext?.user?.activeAccount?.marketplaceSettings,\n [loginContext?.user?.activeAccount?.marketplaceSettings]\n );\n\n const eventMarketplaceSettings = useMemo(\n () =>\n marketplaceSettings\n ?.filter((mk) => isMarketplaceActive(mk))\n .filter(\n (mk) => !isInternationalEvent || mk.mkp === Marketplace.StubHub\n ) ?? [],\n [isInternationalEvent, marketplaceSettings]\n );\n\n const defaultListingMarketplaceSettings = useMemo(() => {\n return eventMarketplaceSettings.reduce(\n (arr, { mkp }) => {\n const marketplaceId = Object.keys(Marketplace).indexOf(mkp) ?? -1;\n if (marketplaceId >= 0) {\n arr[marketplaceId + 1 + ''] = { listingBroadcastStateId: 2 };\n }\n return arr;\n },\n {} as Record\n );\n }, [eventMarketplaceSettings]);\n\n return {\n eventMarketplaceSettings,\n defaultListingMarketplaceSettings,\n isUKEvent,\n isInternationalEvent,\n };\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const SummaryRow = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n width: 100%;\n padding: ${() => vars.spacing.lg};\n border-bottom: 1px solid ${(props) => props.theme.colors.borderPrimary};\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n border: none;\n padding: 0px;\n `\n )}`}\n`;\n\nexport const SummaryColumn = styled.div<{ gap?: number }>`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: ${(props) => (props.gap ? `${props.gap}px` : vars.spacing.sm)};\n`;\n\nexport const SummaryDateSection = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: ${() => vars.spacing.sm};\n min-width: max-content;\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n flex-direction: column;\n gap: 2px;\n padding: ${vars.spacing.lg};\n `\n )}`}\n`;\n\nexport const Divider = styled.div<{ height?: number }>`\n width: 1px;\n height: ${(props) => (props.height ? `${props.height}%` : '80%')};\n border-left: 1px solid ${(props) => props.theme.colors.borderDark};\n display: block;\n`;\n\nexport const SummaryDetailsSection = styled.div`\n display: flex;\n flex-direction: column;\n padding: ${() => vars.spacing.lg};\n gap: ${() => vars.spacing.m};\n width: 100%;\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n padding: ${vars.spacing.xl};\n `\n )}`}\n`;\n\nexport const SummaryEventTitle = styled.span`\n font-weight: 700;\n font-size: ${() => vars.typography.fontSize['lg']};\n line-height: 24px;\n color: ${(props) => props.theme.colors.textStrong};\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n font-size: ${vars.typography.fontSize['2xl']}\n `\n )}`}\n`;\n\nexport const MarketPlaceDetailsWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 2px;\n align-items: flex-end;\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n gap: ${vars.spacing.sm};\n `\n )}`}\n`;\n\nexport const SummaryMainText = styled.span<{ fontWeight?: number }>`\n font-size: ${() => vars.typography.fontSize['sm']};\n line-height: 20px;\n font-weight: ${({ fontWeight }) => (fontWeight ? fontWeight : 500)};\n color: ${(props) => props.theme.colors.textStrong};\n`;\n\nexport const SummarySecondaryText = styled(SummaryMainText)`\n font-weight: 400;\n color: ${(props) => props.theme.colors.textPrimary};\n`;\n\nexport const SummaryMainTextTealAccent = styled(SummaryMainText)`\n color: ${(props) => props.theme.colors.accent075};\n padding-right: ${() => vars.spacing.xxs};\n`;\n\nexport const SummaryMainTextPinkAccent = styled(SummaryMainText)`\n font-weight: 700;\n color: #db2c7b;\n /* ${(props) => props.theme.colors.secondary100}; */\n`;\n","import { ReactNode } from 'react';\nimport { EventInfo } from 'src/components/Events/EventInfo';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { useGetEventFullInfo } from 'src/hooks/useGetEventFullInfo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getFormattedEventName } from 'src/utils/eventWithDataUtils';\nimport { getFormattedLocation } from 'src/utils/format';\nimport { Event, Performer, Venue } from 'src/WebApiController';\n\nimport { summaryWrapper } from './Summary.css';\nimport {\n SummaryColumn,\n SummaryDetailsSection,\n SummaryRow,\n} from './Summary.styled';\n\nexport const VenueConfigSummary = ({\n events,\n venues,\n performers,\n eventSelected,\n actions,\n}: {\n events: Event[];\n venues?: Record;\n performers?: Record;\n eventSelected?: Event | null;\n actions?: ReactNode;\n}) => {\n const atText = useContent(ContentId.at);\n const eventsText = useContent(ContentId.Events);\n const event = eventSelected ?? events[0];\n\n const { performer: cachedPerformer, venue: cachedVenue } =\n useGetEventFullInfo(event);\n\n let venue = cachedVenue;\n if (venues?.[event.viagVirtualId]) {\n venue = venues[event.viagVirtualId];\n }\n let performer = cachedPerformer;\n if (performers?.[event.viagVirtualId]) {\n performer = performers[event.viagVirtualId];\n }\n\n const [eventName, eventNameConnector, eventSubName] = getFormattedEventName({\n event,\n performer,\n venue,\n slimMode: false,\n });\n\n const venueLocation = venue && getFormattedLocation(venue);\n\n return (\n \n \n \n \n \n \n {` (${events.length} ${eventsText})`}\n \n \n {actions}\n \n {eventSelected && (\n \n \n \n )}\n \n \n );\n};\n","import * as RadixSlider from '@radix-ui/react-slider';\nimport clsx from 'clsx';\nimport { ComponentPropsWithoutRef, forwardRef, ReactNode } from 'react';\nimport { mergeProps } from 'src/core/utils';\n\nimport * as styles from './Slider.css';\n\nexport const Handle = ({ children }: ComponentPropsWithoutRef<'div'>) => {\n return
    {children}
    ;\n};\n\nexport const Root = forwardRef<\n HTMLSpanElement,\n ComponentPropsWithoutRef & {\n renderHandle?: (value: number) => ReactNode;\n }\n>(function Slider({ renderHandle, value, disabled, ...props }, ref) {\n return (\n \n \n \n \n {value?.map((v, i) => (\n \n {renderHandle ? renderHandle(v) : {v}}\n \n ))}\n \n );\n});\n","import * as ToggleGroupRadix from '@radix-ui/react-toggle-group';\nimport clsx from 'clsx';\nimport React, { ComponentPropsWithoutRef } from 'react';\nimport { mergeProps } from 'src/core/utils';\n\nimport * as styles from './ToggleGroup.css';\n\nexport type ToggleItem = {\n value: string;\n children: React.ReactNode;\n};\n\nexport type ToggleGroupProps = Omit<\n ToggleGroupRadix.ToggleGroupSingleProps,\n 'type'\n> & {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n options: ToggleItem[];\n disabled?: boolean;\n itemStyle?: ComponentPropsWithoutRef['style'];\n itemClassName?: string;\n rovingFocus?: boolean;\n itemTransparent?: boolean;\n};\n\nexport const ToggleGroup = ({\n value,\n defaultValue,\n onValueChange,\n options,\n disabled,\n itemStyle,\n itemClassName,\n itemTransparent,\n rovingFocus = true,\n ...props\n}: ToggleGroupProps) => {\n return (\n \n {options.map((item, i) => {\n return (\n \n {item.children}\n \n );\n })}\n \n );\n};\n","export enum RestrictSelectionType {\n SameZone = 'SameZone',\n SpecificSections = 'SpecificSections',\n SameSection = 'SameSection',\n}\n","import { RestrictSelectionType } from 'src/modals/ListingDetails/components/PricingSection/AutoPricingSection.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n COMP_LISTING_MODE_TO_CID,\n COMP_LISTING_MODE_TO_FLUENT_CID,\n OUTLIER_MODE_TO_CID,\n RESTRICT_SELECTION_TYPE_TO_CID,\n UNDERCUT_MODE_TO_CID,\n UNDERCUT_MODE_TO_FLUENT_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport {\n AutoPricingCompListingMode,\n AutoPricingOutlierMode,\n AutoPricingUndercutMode,\n Feature,\n} from 'src/WebApiController';\n\nimport { useUserHasFeature } from './useUserHasFeature';\n\nexport const useAvailableAutopricingModes = (\n fluent: boolean,\n undercutMode: AutoPricingUndercutMode | null | undefined,\n compListingMode: AutoPricingCompListingMode | null | undefined,\n hasSeatScores: boolean,\n hasParentListing?: boolean,\n isGlobalEdit?: boolean,\n compListingOnlyForSelectedSectionsEnabled?: boolean | null,\n deriveCompsFromVenueZoneConfig?: boolean | null\n) => {\n // Feature checks\n const hasAdvanceAutopricingModes = useUserHasFeature(\n Feature.AdvanceAutopricingModes\n );\n const hasParentListingModeFeature = useUserHasFeature(\n Feature.CompListingMode_ParentListing\n );\n\n const restrictSelectionTypes = {\n ...RESTRICT_SELECTION_TYPE_TO_CID,\n } as Record;\n\n if (isGlobalEdit) {\n if (!compListingOnlyForSelectedSectionsEnabled) {\n delete restrictSelectionTypes[RestrictSelectionType.SpecificSections];\n }\n }\n\n if (compListingMode !== AutoPricingCompListingMode.QualityScore) {\n delete restrictSelectionTypes[RestrictSelectionType.SameZone];\n }\n\n const defaultRestrictSelectionType = Object.keys(restrictSelectionTypes)[0];\n\n const compListingModes = {\n ...(fluent ? COMP_LISTING_MODE_TO_FLUENT_CID : COMP_LISTING_MODE_TO_CID),\n } as Record;\n\n const undercutModes = {\n ...(fluent ? UNDERCUT_MODE_TO_FLUENT_CID : UNDERCUT_MODE_TO_CID),\n } as Record;\n\n const outlierModes = {\n ...OUTLIER_MODE_TO_CID,\n } as Record;\n\n if (!hasAdvanceAutopricingModes) {\n if (undercutMode !== AutoPricingUndercutMode.RowExtrapolation) {\n delete undercutModes[AutoPricingUndercutMode.RowExtrapolation];\n }\n if (compListingMode !== AutoPricingCompListingMode.SameSection) {\n delete compListingModes[AutoPricingCompListingMode.SameSection];\n }\n }\n\n if (!hasParentListingModeFeature || !hasParentListing) {\n delete compListingModes[AutoPricingCompListingMode.ParentListing];\n }\n\n // Determine which modes are disabled based on permissions and data availability\n // For each mode group, start them all off as enabled (i.e. all comp listing modes\n // enabled, all undercut modes enabled, etc.) and then disable them as needed\n const compListingModesDisabled: Record = {\n ...compListingModes,\n };\n Object.keys(compListingModesDisabled).forEach(\n (k) => (compListingModesDisabled[k] = undefined)\n );\n\n const undercutModesDisabled: Record = {\n ...undercutModes,\n };\n Object.keys(undercutModesDisabled).forEach(\n (k) => (undercutModesDisabled[k] = undefined)\n );\n\n const outlierModesDisabled: Record = {\n ...outlierModes,\n };\n Object.keys(outlierModesDisabled).forEach(\n (k) => (outlierModesDisabled[k] = undefined)\n );\n\n if (!hasSeatScores && !isGlobalEdit) {\n compListingModesDisabled[AutoPricingCompListingMode.QualityScore] =\n ContentId.AutopricingNotAvailableNoScores;\n compListingModesDisabled[AutoPricingCompListingMode.SameSection] =\n ContentId.AutopricingNotAvailableNoScores;\n\n undercutModesDisabled[AutoPricingUndercutMode.Deal] =\n ContentId.AutopricingNotAvailableNoScores;\n\n outlierModesDisabled[AutoPricingOutlierMode.StandardDeviations] =\n ContentId.AutopricingNotAvailableNoScores;\n }\n\n if (deriveCompsFromVenueZoneConfig) {\n compListingModesDisabled[AutoPricingCompListingMode.QualityScore] =\n ContentId.IncompatiblePricingMode;\n }\n\n return {\n undercutModes,\n undercutModesDisabled,\n compListingModes,\n compListingModesDisabled,\n outlierModes,\n outlierModesDisabled,\n defaultRestrictSelectionType,\n restrictSelectionTypes,\n };\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PricingClient } from 'src/WebApiController';\n\nexport const useGetAccountAutoPricingSettings = () => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const shouldQuery = activeAccountWebClientConfig.activeAccountId != null;\n const pricingSettingsQuery = useQuery({\n queryKey: [\n 'PricingClient.getAccountAutoPricingSettings',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n const pricingSettings = await new PricingClient(\n activeAccountWebClientConfig\n ).getAccountAutoPricingSettings();\n\n return pricingSettings;\n },\n\n enabled: shouldQuery,\n retry: 3,\n retryDelay: (attemptIndex) => Math.min(500 ** attemptIndex, 3000),\n refetchOnWindowFocus: false,\n meta: {\n // TODO: temporally hide the error for now, enable this after https://stubhub.enterprise.slack.com/archives/C08D76X6M0S is fixed.\n // onError: (error: ErrorTypes) => {\n // showErrorDialog('PricingClient.getAccountAutoPricingSettings', error, {\n // trackErrorData: {\n // activeAccountId: activeAccountWebClientConfig.activeAccountId,\n // },\n // });\n // },\n },\n });\n\n return {\n pricingSettings: pricingSettingsQuery.data,\n pricingSettingsQuery,\n loaded: pricingSettingsQuery.isFetched,\n };\n};\n","import { SelectedSectionSettings } from 'src/WebApiController';\n\nexport type SelectedSectionSettingsWithOptionals = Omit<\n SelectedSectionSettings,\n 'sectionIdFilterFromZoneMap' | 'includeBetterZones' | 'rowOffset'\n> & {\n sectionIdFilterFromZoneMap?: boolean;\n includeBetterZones?: boolean;\n rowOffset?: number | null;\n};\n\nexport const mapToSelectedSectionSettings = (\n settings: SelectedSectionSettingsWithOptionals | null | undefined\n) => {\n if (!settings) {\n return settings;\n }\n\n return {\n ...settings,\n sectionIdFilterFromZoneMap: settings?.sectionIdFilterFromZoneMap ?? false,\n includeBetterZones: settings?.includeBetterZones ?? false,\n rowOffset: settings?.rowOffset ?? null,\n } as SelectedSectionSettings;\n};\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useMemo } from 'react';\nimport { FieldValues, Path, useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useGetAccountAutoPricingSettings } from 'src/hooks/useGetAccountAutoPricingSettings';\nimport { useGetEventAutoPricingSettings } from 'src/hooks/useGetEventAutoPricingSettings';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n DEFAULT_COMP_LISTING_FLOOR,\n DEFAULT_UNDERCUT_ABSOLUTE_AMT,\n DEFAULT_UNDERCUT_RELATIVE_AMT,\n} from 'src/utils/autoPricingUtils';\nimport { getCurrentLanguage } from 'src/utils/localeUtils';\nimport { coalesceUndefinedOnly } from 'src/utils/miscUtils';\nimport {\n mapToSelectedSectionSettings,\n SelectedSectionSettingsWithOptionals,\n} from 'src/utils/types/selectedSectionSettingsWithOptionals';\nimport {\n AutoPricingCompListingMode,\n AutoPricingInputs,\n AutoPricingOutlierMode,\n AutoPricingUndercutMode,\n Feature,\n ListingDetailsUpdateInput,\n ListingGroup,\n SectionInfo,\n} from 'src/WebApiController';\n\ntype UpdatingKeys = keyof AutoPricingInputs;\n\nexport const useListingGroupAutoPricingSettings = (\n listingGroup?: ListingGroup\n) => {\n const { setValue: setFormValue, watch, formState } = useFormContext();\n\n const { loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n\n const hasAllowSeatScoreCompListingModeFeature = useUserHasFeature(\n Feature.AllowSeatScoreCompListingMode\n );\n\n const defaultCompListingMode = useMemo(() => {\n if (hasAllowSeatScoreCompListingModeFeature) {\n return AutoPricingCompListingMode.QualityScore;\n }\n return AutoPricingCompListingMode.SameEvent;\n }, [hasAllowSeatScoreCompListingModeFeature]);\n\n const updateInput = watch('pricingSettingsInputs' as Path) as\n | AutoPricingInputs\n | undefined;\n\n const resetListingAutoPricingSettings = watch(\n 'resetListingAutoPricingSettings' as Path\n );\n\n const compListingFloorError = watch(\n 'pricingSettingsInputs.compListingFloor.message' as Path\n );\n const compListingSelectedSectionError = watch(\n 'pricingSettingsInputs.compListingSelectedSectionSettings.message' as Path\n );\n const undercutAbsoluteAmountError = watch(\n 'pricingSettingsInputs.undercutAbsoluteAmount.message' as Path\n );\n const undercutRelativeAmountError = watch(\n 'pricingSettingsInputs.undercutRelativeAmount.message' as Path\n );\n\n const {\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n compListingMode,\n compListingCeiling,\n compListingFloor,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingQuantityScoreAdjustmentEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingQuantityScoreAdjustmentOverrideJson,\n compListingSelectedSectionSettings,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacing,\n\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n } = updateInput || {};\n\n const setValue = useCallback(\n (key: UpdatingKeys, value: any) => {\n setFormValue(`pricingSettingsInputs.${key}` as Path, value);\n },\n [setFormValue]\n );\n\n const uiCurrency = useMemo(\n () =>\n getUiCurrency(\n listingGroup?.currency ??\n loginContext?.user?.activeAccount?.currencyCode\n ),\n [\n getUiCurrency,\n listingGroup?.currency,\n loginContext?.user?.activeAccount?.currencyCode,\n ]\n );\n const currencyNumberFormat = useMemo(\n () =>\n new Intl.NumberFormat(getCurrentLanguage(), {\n style: 'currency',\n currency: uiCurrency.code,\n }),\n [uiCurrency.code]\n );\n\n const { event } = useEventMapContext();\n const { pricingSettings: eventPricingSettings } =\n useGetEventAutoPricingSettings(event!, false);\n const { pricingSettings: accountPricingSettings } =\n useGetAccountAutoPricingSettings();\n\n const onResetSettings = useCallback(() => {\n setValue('undercutMode', null);\n setValue('undercutAbsoluteAmount', null);\n setValue('undercutRelativeAmount', null);\n\n setValue('compListingMode', null);\n setValue('compListingFloor', null);\n setValue('compListingCeiling', null);\n setValue('compListingSelectedSectionSettings', null);\n setValue('compListingQuantityScoreAdjustmentOverrideJson', null);\n setValue('compListingOnlyForSameZoneEnabled', null);\n setValue('compListingOnlyForSelectedSectionsEnabled', null);\n }, [setValue]);\n\n const onResetAdvanceSettings = useCallback(() => {\n setValue('compListingQuantityScoreAdjustmentEnabled', null);\n setValue('compListingExcludeFanInventory', null);\n setValue('compListingExcludeDefects', null);\n\n setValue('circuitBreakerRelativeCeiling', null);\n setValue('circuitBreakerRelativeFloor', null);\n setValue('circuitBreakerMaxDiscountVelocityPercent', null);\n setValue('circuitBreakerMaxDiscountVelocityTicksInHours', null);\n setValue('circuitBreakerMinCompListingCount', null);\n\n setValue('outlierMode', null);\n setValue('outlierStandardDeviations', null);\n setValue('outlierKthLowestLimit', null);\n setValue('outlierKthLowestLimitRelativeSpacing', null);\n setValue('outlierKthLowestLimitAbsoluteSpacing', null);\n }, [setValue]);\n\n const circuitBreakerSettings = useMemo(() => {\n if (\n circuitBreakerMaxDiscountVelocityPercent != null ||\n circuitBreakerMaxDiscountVelocityTicksInHours != null ||\n circuitBreakerMinCompListingCount != null ||\n circuitBreakerRelativeCeiling != null ||\n circuitBreakerRelativeFloor != null\n ) {\n // if it has any of these set - use the entire area\n return {\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n };\n }\n\n if (\n eventPricingSettings?.circuitBreakerMaxDiscountVelocityPercent != null ||\n eventPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours !=\n null ||\n eventPricingSettings?.circuitBreakerMinCompListingCount != null ||\n eventPricingSettings?.circuitBreakerRelativeCeiling != null ||\n eventPricingSettings?.circuitBreakerRelativeFloor != null\n ) {\n // if it has any of these set - use the entire area\n return {\n circuitBreakerMaxDiscountVelocityPercent:\n eventPricingSettings?.circuitBreakerMaxDiscountVelocityPercent ??\n null,\n circuitBreakerMaxDiscountVelocityTicksInHours:\n eventPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours ??\n null,\n circuitBreakerMinCompListingCount:\n eventPricingSettings?.circuitBreakerMinCompListingCount ?? null,\n circuitBreakerRelativeCeiling:\n eventPricingSettings?.circuitBreakerRelativeCeiling ?? null,\n circuitBreakerRelativeFloor:\n eventPricingSettings?.circuitBreakerRelativeFloor ?? null,\n };\n }\n\n // if it has any of these set - use the entire area\n return {\n circuitBreakerMaxDiscountVelocityPercent:\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityPercent ??\n null,\n circuitBreakerMaxDiscountVelocityTicksInHours:\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours ??\n null,\n circuitBreakerMinCompListingCount:\n accountPricingSettings?.circuitBreakerMinCompListingCount ?? null,\n circuitBreakerRelativeCeiling:\n accountPricingSettings?.circuitBreakerRelativeCeiling ?? null,\n circuitBreakerRelativeFloor:\n accountPricingSettings?.circuitBreakerRelativeFloor ?? null,\n };\n }, [\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityPercent,\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours,\n accountPricingSettings?.circuitBreakerMinCompListingCount,\n accountPricingSettings?.circuitBreakerRelativeCeiling,\n accountPricingSettings?.circuitBreakerRelativeFloor,\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n eventPricingSettings?.circuitBreakerMaxDiscountVelocityPercent,\n eventPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours,\n eventPricingSettings?.circuitBreakerMinCompListingCount,\n eventPricingSettings?.circuitBreakerRelativeCeiling,\n eventPricingSettings?.circuitBreakerRelativeFloor,\n ]);\n\n const undercutSettings = useMemo(() => {\n if (\n undercutMode != null ||\n undercutAbsoluteAmount != null ||\n undercutRelativeAmount != null\n ) {\n // if it has any of these set - use the entire area\n return {\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n };\n }\n\n if (\n eventPricingSettings?.undercutMode != null ||\n eventPricingSettings?.undercutAbsoluteAmount != null ||\n eventPricingSettings?.undercutRelativeAmount != null\n ) {\n // if it has any of these set - use the entire area\n return {\n undercutMode: eventPricingSettings?.undercutMode ?? null,\n undercutAbsoluteAmount:\n eventPricingSettings?.undercutAbsoluteAmount ?? null,\n undercutRelativeAmount:\n eventPricingSettings?.undercutRelativeAmount ?? null,\n };\n }\n\n // if it has any of these set - use the entire area\n return {\n undercutMode:\n accountPricingSettings?.undercutMode ?? AutoPricingUndercutMode.Simple,\n undercutAbsoluteAmount:\n accountPricingSettings?.undercutAbsoluteAmount ??\n DEFAULT_UNDERCUT_ABSOLUTE_AMT,\n undercutRelativeAmount:\n accountPricingSettings?.undercutRelativeAmount ??\n DEFAULT_UNDERCUT_RELATIVE_AMT,\n };\n }, [\n accountPricingSettings?.undercutAbsoluteAmount,\n accountPricingSettings?.undercutMode,\n accountPricingSettings?.undercutRelativeAmount,\n eventPricingSettings?.undercutAbsoluteAmount,\n eventPricingSettings?.undercutMode,\n eventPricingSettings?.undercutRelativeAmount,\n undercutAbsoluteAmount,\n undercutMode,\n undercutRelativeAmount,\n ]);\n\n const compListingSettings = useMemo(() => {\n if (\n compListingMode != null ||\n compListingFloor != null ||\n compListingCeiling != null ||\n compListingOnlyForSameZoneEnabled != null ||\n compListingOnlyForSelectedSectionsEnabled != null ||\n compListingExcludeFanInventory != null ||\n compListingExcludeDefects != null ||\n compListingSelectedSectionSettings != null ||\n compListingQuantityScoreAdjustmentEnabled != null ||\n compListingQuantityScoreAdjustmentOverrideJson != null\n ) {\n // if it has any of these set - use the entire area\n return {\n compListingMode,\n compListingFloor: compListingFloor ?? DEFAULT_COMP_LISTING_FLOOR,\n compListingCeiling:\n compListingCeiling ??\n (compListingFloor ?? DEFAULT_COMP_LISTING_FLOOR) +\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingSelectedSectionSettings,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n };\n }\n\n if (\n eventPricingSettings?.compListingMode != null ||\n eventPricingSettings?.compListingFloor != null ||\n eventPricingSettings?.compListingCeiling != null ||\n eventPricingSettings?.compListingOnlyForSameZoneEnabled != null ||\n eventPricingSettings?.compListingOnlyForSelectedSectionsEnabled != null ||\n eventPricingSettings?.compListingExcludeFanInventory != null ||\n eventPricingSettings?.compListingExcludeDefects != null ||\n eventPricingSettings?.compListingQuantityScoreAdjustmentEnabled != null ||\n eventPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson !=\n null ||\n eventPricingSettings?.compListingSelectedSectionSettings != null\n ) {\n // if it has any of these set - use the entire area\n return {\n compListingMode: eventPricingSettings?.compListingMode ?? null,\n compListingFloor:\n eventPricingSettings?.compListingFloor ?? DEFAULT_COMP_LISTING_FLOOR,\n compListingCeiling:\n eventPricingSettings?.compListingCeiling ??\n (eventPricingSettings?.compListingFloor ??\n DEFAULT_COMP_LISTING_FLOOR) +\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n compListingOnlyForSameZoneEnabled:\n eventPricingSettings?.compListingOnlyForSameZoneEnabled ?? null,\n compListingOnlyForSelectedSectionsEnabled:\n eventPricingSettings?.compListingOnlyForSelectedSectionsEnabled ??\n null,\n compListingQuantityScoreAdjustmentEnabled:\n eventPricingSettings?.compListingQuantityScoreAdjustmentEnabled ??\n null,\n compListingExcludeFanInventory:\n eventPricingSettings?.compListingExcludeFanInventory ?? null,\n compListingExcludeDefects:\n eventPricingSettings?.compListingExcludeDefects ?? null,\n compListingQuantityScoreAdjustmentOverrideJson:\n eventPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson ??\n null,\n compListingSelectedSectionSettings:\n eventPricingSettings?.compListingSelectedSectionSettings ?? null,\n };\n }\n\n // if it has any of these set - use the entire area\n return {\n compListingMode:\n accountPricingSettings?.compListingMode ?? defaultCompListingMode,\n compListingFloor:\n accountPricingSettings?.compListingFloor ?? DEFAULT_COMP_LISTING_FLOOR,\n compListingCeiling:\n accountPricingSettings?.compListingCeiling ??\n (accountPricingSettings?.compListingFloor ??\n DEFAULT_COMP_LISTING_FLOOR) +\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n compListingOnlyForSameZoneEnabled:\n accountPricingSettings?.compListingOnlyForSameZoneEnabled ?? null,\n compListingOnlyForSelectedSectionsEnabled:\n accountPricingSettings?.compListingOnlyForSelectedSectionsEnabled ??\n null,\n compListingQuantityScoreAdjustmentEnabled:\n accountPricingSettings?.compListingQuantityScoreAdjustmentEnabled ??\n null,\n compListingExcludeFanInventory:\n accountPricingSettings?.compListingExcludeFanInventory ?? null,\n compListingExcludeDefects:\n accountPricingSettings?.compListingExcludeDefects ?? null,\n compListingQuantityScoreAdjustmentOverrideJson:\n accountPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson ??\n null,\n compListingSelectedSectionSettings:\n accountPricingSettings?.compListingSelectedSectionSettings ?? null,\n };\n }, [\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingSelectedSectionSettings,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n eventPricingSettings?.compListingMode,\n eventPricingSettings?.compListingFloor,\n eventPricingSettings?.compListingCeiling,\n eventPricingSettings?.compListingOnlyForSameZoneEnabled,\n eventPricingSettings?.compListingOnlyForSelectedSectionsEnabled,\n eventPricingSettings?.compListingExcludeFanInventory,\n eventPricingSettings?.compListingExcludeDefects,\n eventPricingSettings?.compListingQuantityScoreAdjustmentEnabled,\n eventPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson,\n eventPricingSettings?.compListingSelectedSectionSettings,\n accountPricingSettings?.compListingMode,\n accountPricingSettings?.compListingFloor,\n accountPricingSettings?.compListingCeiling,\n accountPricingSettings?.compListingOnlyForSameZoneEnabled,\n accountPricingSettings?.compListingOnlyForSelectedSectionsEnabled,\n accountPricingSettings?.compListingQuantityScoreAdjustmentEnabled,\n accountPricingSettings?.compListingExcludeFanInventory,\n accountPricingSettings?.compListingExcludeDefects,\n accountPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson,\n accountPricingSettings?.compListingSelectedSectionSettings,\n defaultCompListingMode,\n ]);\n\n const outlierSettings = useMemo(() => {\n if (\n outlierMode != null ||\n outlierStandardDeviations != null ||\n outlierKthLowestLimit != null\n ) {\n // if it has any of these set - use the entire area\n return {\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n };\n }\n if (\n eventPricingSettings?.outlierMode != null ||\n eventPricingSettings?.outlierStandardDeviations != null\n // TODO - add rest of settings here\n ) {\n // if it has any of these set - use the entire area\n return {\n outlierMode: eventPricingSettings?.outlierMode ?? null,\n outlierStandardDeviations:\n eventPricingSettings?.outlierStandardDeviations ?? null,\n };\n }\n\n // if it has any of these set - use the entire area\n return {\n outlierMode: accountPricingSettings?.outlierMode ?? null,\n outlierStandardDeviations:\n accountPricingSettings?.outlierStandardDeviations ?? null,\n // TODO - add rest of settings here\n };\n }, [\n accountPricingSettings?.outlierMode,\n accountPricingSettings?.outlierStandardDeviations,\n eventPricingSettings?.outlierMode,\n eventPricingSettings?.outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacing,\n outlierMode,\n outlierStandardDeviations,\n ]);\n\n const onUndercutChange = useCallback(\n (\n undercutModeNew?: AutoPricingUndercutMode | null,\n undercutAbsoluteAmountNew?: number | null,\n undercutRelativeAmountNew?: number | null\n ) => {\n if (\n undercutModeNew !== undefined ||\n undercutAbsoluteAmountNew !== undefined ||\n undercutRelativeAmountNew !== undefined\n ) {\n setValue(\n 'undercutMode',\n coalesceUndefinedOnly(undercutModeNew, undercutSettings.undercutMode)!\n );\n setValue(\n 'undercutAbsoluteAmount',\n coalesceUndefinedOnly(\n undercutAbsoluteAmountNew,\n undercutSettings.undercutAbsoluteAmount\n )!\n );\n setValue(\n 'undercutRelativeAmount',\n coalesceUndefinedOnly(\n undercutRelativeAmountNew,\n undercutSettings.undercutRelativeAmount\n )!\n );\n }\n },\n [\n setValue,\n undercutSettings.undercutAbsoluteAmount,\n undercutSettings.undercutMode,\n undercutSettings.undercutRelativeAmount,\n ]\n );\n\n const onCompListingChange = useCallback(\n (input: {\n compListingModeNew?: AutoPricingCompListingMode | null;\n compListingFloorNew?: number | null;\n compListingCeilingNew?: number | null;\n compListingOnlyForSameZoneEnabledNew?: boolean | null;\n compListingOnlyForSelectedSectionsEnabledNew?: boolean | null;\n compListingQuantityScoreAdjustmentEnabledNew?: boolean | null;\n compListingExcludeFanInventoryNew?: boolean | null;\n compListingExcludeDefectsNew?: boolean | null;\n compListingQuantityScoreAdjustmentOverrideJsonNew?: string | null;\n compListingSelectedSectionSettingsNew?: SelectedSectionSettingsWithOptionals | null;\n }) => {\n const {\n compListingModeNew,\n compListingFloorNew,\n compListingCeilingNew,\n compListingOnlyForSameZoneEnabledNew,\n compListingOnlyForSelectedSectionsEnabledNew,\n compListingQuantityScoreAdjustmentEnabledNew,\n compListingExcludeFanInventoryNew,\n compListingExcludeDefectsNew,\n compListingQuantityScoreAdjustmentOverrideJsonNew,\n compListingSelectedSectionSettingsNew,\n } = input;\n\n if (\n compListingModeNew !== undefined ||\n compListingFloorNew !== undefined ||\n compListingCeilingNew !== undefined ||\n compListingOnlyForSameZoneEnabledNew !== undefined ||\n compListingOnlyForSelectedSectionsEnabledNew !== undefined ||\n compListingQuantityScoreAdjustmentEnabledNew !== undefined ||\n compListingExcludeFanInventoryNew !== undefined ||\n compListingExcludeDefectsNew !== undefined ||\n compListingQuantityScoreAdjustmentOverrideJsonNew !== undefined ||\n compListingSelectedSectionSettingsNew !== undefined\n ) {\n const sanitizedCompListingOnlyForSameZoneEnabledNew =\n compListingOnlyForSelectedSectionsEnabledNew\n ? false\n : compListingOnlyForSameZoneEnabledNew;\n const sanitizedCompListingOnlyForSelectedSectionsEnabledNew =\n compListingOnlyForSameZoneEnabledNew\n ? false\n : compListingOnlyForSelectedSectionsEnabledNew;\n\n setValue(\n 'compListingMode',\n coalesceUndefinedOnly(\n compListingModeNew,\n compListingSettings.compListingMode\n )!\n );\n setValue(\n 'compListingFloor',\n coalesceUndefinedOnly(\n compListingFloorNew,\n compListingSettings.compListingFloor\n )!\n );\n setValue(\n 'compListingCeiling',\n coalesceUndefinedOnly(\n compListingCeilingNew,\n compListingSettings.compListingCeiling\n )!\n );\n setValue(\n 'compListingOnlyForSameZoneEnabled',\n coalesceUndefinedOnly(\n sanitizedCompListingOnlyForSameZoneEnabledNew,\n compListingSettings.compListingOnlyForSameZoneEnabled\n )!\n );\n setValue(\n 'compListingOnlyForSelectedSectionsEnabled',\n coalesceUndefinedOnly(\n compListingOnlyForSelectedSectionsEnabledNew,\n compListingSettings.compListingOnlyForSelectedSectionsEnabled\n )!\n );\n setValue(\n 'compListingQuantityScoreAdjustmentEnabled',\n coalesceUndefinedOnly(\n sanitizedCompListingOnlyForSelectedSectionsEnabledNew,\n compListingSettings.compListingQuantityScoreAdjustmentEnabled\n )!\n );\n setValue(\n 'compListingExcludeFanInventory',\n coalesceUndefinedOnly(\n compListingExcludeFanInventoryNew,\n compListingSettings.compListingExcludeFanInventory\n )!\n );\n setValue(\n 'compListingExcludeDefects',\n coalesceUndefinedOnly(\n compListingExcludeDefectsNew,\n compListingSettings.compListingExcludeDefects\n )!\n );\n setValue(\n 'compListingQuantityScoreAdjustmentOverrideJson',\n coalesceUndefinedOnly(\n compListingQuantityScoreAdjustmentOverrideJsonNew,\n compListingSettings.compListingQuantityScoreAdjustmentOverrideJson\n )!\n );\n setValue(\n 'compListingSelectedSectionSettings',\n coalesceUndefinedOnly(\n mapToSelectedSectionSettings(compListingSelectedSectionSettingsNew),\n compListingSettings.compListingSelectedSectionSettings\n )!\n );\n }\n },\n [\n setValue,\n compListingSettings.compListingMode,\n compListingSettings.compListingFloor,\n compListingSettings.compListingCeiling,\n compListingSettings.compListingOnlyForSameZoneEnabled,\n compListingSettings.compListingOnlyForSelectedSectionsEnabled,\n compListingSettings.compListingQuantityScoreAdjustmentEnabled,\n compListingSettings.compListingExcludeFanInventory,\n compListingSettings.compListingExcludeDefects,\n compListingSettings.compListingQuantityScoreAdjustmentOverrideJson,\n compListingSettings.compListingSelectedSectionSettings,\n ]\n );\n\n const onCircuitBreakerChange = useCallback(\n (\n circuitBreakerRelativeCeilingNew?: number | null,\n circuitBreakerRelativeFloorNew?: number | null,\n circuitBreakerMaxDiscountVelocityPercentNew?: number | null,\n circuitBreakerMaxDiscountVelocityTicksInHoursNew?: number | null,\n circuitBreakerMinCompListingCountNew?: number | null\n ) => {\n if (\n circuitBreakerRelativeCeilingNew !== undefined ||\n circuitBreakerRelativeFloorNew !== undefined ||\n circuitBreakerMaxDiscountVelocityPercentNew !== undefined ||\n circuitBreakerMaxDiscountVelocityTicksInHoursNew !== undefined ||\n circuitBreakerMinCompListingCountNew !== undefined\n ) {\n setValue(\n 'circuitBreakerRelativeCeiling',\n coalesceUndefinedOnly(\n circuitBreakerRelativeCeilingNew,\n circuitBreakerSettings.circuitBreakerRelativeCeiling\n ) ?? null\n );\n setValue(\n 'circuitBreakerRelativeFloor',\n coalesceUndefinedOnly(\n circuitBreakerRelativeFloorNew,\n circuitBreakerSettings.circuitBreakerRelativeFloor\n ) ?? null\n );\n setValue(\n 'circuitBreakerMaxDiscountVelocityPercent',\n coalesceUndefinedOnly(\n circuitBreakerMaxDiscountVelocityPercentNew,\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityPercent\n ) ?? null\n );\n setValue(\n 'circuitBreakerMaxDiscountVelocityTicksInHours',\n coalesceUndefinedOnly(\n circuitBreakerMaxDiscountVelocityTicksInHoursNew,\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityTicksInHours\n ) ?? null\n );\n setValue(\n 'circuitBreakerMinCompListingCount',\n coalesceUndefinedOnly(\n circuitBreakerMinCompListingCountNew,\n circuitBreakerSettings.circuitBreakerMinCompListingCount\n ) ?? null\n );\n }\n },\n [\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerSettings.circuitBreakerMinCompListingCount,\n circuitBreakerSettings.circuitBreakerRelativeCeiling,\n circuitBreakerSettings.circuitBreakerRelativeFloor,\n setValue,\n ]\n );\n\n const onOutlierChange = useCallback(\n (input: {\n outlierModeNew?: AutoPricingOutlierMode | null;\n outlierStandardDeviationsNew?: number | null;\n outlierKthLowestLimitNew?: number | null;\n outlierKthLowestLimitRelativeSpacingNew?: number | null;\n outlierKthLowestLimitAbsoluteSpacingNew?: number | null;\n }) => {\n const {\n outlierModeNew,\n outlierStandardDeviationsNew,\n outlierKthLowestLimitNew,\n outlierKthLowestLimitRelativeSpacingNew,\n outlierKthLowestLimitAbsoluteSpacingNew,\n } = input;\n\n // Covers both null and undefined cases\n if (outlierModeNew !== undefined) {\n setValue(\n 'outlierMode',\n coalesceUndefinedOnly(outlierModeNew, outlierSettings.outlierMode) ??\n null\n );\n\n switch (outlierModeNew) {\n case AutoPricingOutlierMode.StandardDeviations:\n setValue(\n 'outlierStandardDeviations',\n coalesceUndefinedOnly(\n outlierStandardDeviationsNew,\n outlierSettings.outlierStandardDeviations\n ) ?? null\n );\n setValue('outlierKthLowestLimit', null);\n setValue('outlierKthLowestLimitRelativeSpacing', null);\n setValue('outlierKthLowestLimitAbsoluteSpacing', null);\n break;\n case AutoPricingOutlierMode.KthLowest:\n setValue('outlierStandardDeviations', null);\n setValue(\n 'outlierKthLowestLimit',\n coalesceUndefinedOnly(\n outlierKthLowestLimitNew,\n outlierSettings.outlierKthLowestLimit\n ) ?? null\n );\n\n setValue(\n 'outlierKthLowestLimitRelativeSpacing',\n coalesceUndefinedOnly(\n outlierKthLowestLimitRelativeSpacingNew,\n outlierSettings.outlierKthLowestLimitRelativeSpacing\n ) ?? null\n );\n\n setValue(\n 'outlierKthLowestLimitAbsoluteSpacing',\n coalesceUndefinedOnly(\n outlierKthLowestLimitAbsoluteSpacingNew,\n outlierSettings.outlierKthLowestLimitAbsoluteSpacing\n ) ?? null\n );\n break;\n case AutoPricingOutlierMode.SkipLogic:\n setValue('outlierStandardDeviations', null);\n setValue('outlierKthLowestLimit', null);\n setValue('outlierKthLowestLimitRelativeSpacing', null);\n setValue('outlierKthLowestLimitAbsoluteSpacing', null);\n }\n } else {\n setValue('outlierMode', null);\n setValue('outlierStandardDeviations', null);\n setValue('outlierKthLowestLimit', null);\n setValue('outlierKthLowestLimitRelativeSpacing', null);\n setValue('outlierKthLowestLimitAbsoluteSpacing', null);\n }\n },\n [\n outlierSettings.outlierKthLowestLimit,\n outlierSettings.outlierKthLowestLimitAbsoluteSpacing,\n outlierSettings.outlierKthLowestLimitRelativeSpacing,\n outlierSettings.outlierMode,\n outlierSettings.outlierStandardDeviations,\n setValue,\n ]\n );\n\n const setAutoPricingDefaults = useCallback(() => {\n // If this or any higher level don't have, set the default\n if (\n !undercutMode &&\n !eventPricingSettings?.undercutMode &&\n !accountPricingSettings?.undercutMode\n ) {\n setValue('undercutMode', undercutMode);\n setValue('undercutAbsoluteAmount', undercutAbsoluteAmount);\n setValue('undercutRelativeAmount', undercutRelativeAmount);\n }\n\n // If this or any higher level don't have, set the default\n if (\n !compListingMode &&\n !eventPricingSettings?.compListingMode &&\n !accountPricingSettings?.compListingMode\n ) {\n setValue('compListingMode', compListingMode);\n setValue('compListingFloor', compListingFloor);\n setValue('compListingCeiling', compListingCeiling);\n }\n }, [\n accountPricingSettings?.compListingMode,\n accountPricingSettings?.undercutMode,\n compListingCeiling,\n compListingFloor,\n compListingMode,\n eventPricingSettings?.compListingMode,\n eventPricingSettings?.undercutMode,\n setValue,\n undercutAbsoluteAmount,\n undercutMode,\n undercutRelativeAmount,\n ]);\n\n const applySectionRowFilterCompListingChanges = useCallback(\n (\n newSectionIdFilter: number[],\n sections: SectionInfo[],\n compListingSelectedSectionSettingsNew?:\n | SelectedSectionSettingsWithOptionals\n | null\n | undefined\n ) => {\n // If sectionIdFilter is empty, we should disable the compListingOnlyForSelectedSectionsEnabled\n // and revert back to QualitScore mode. When users add section filters, we should enable\n // compListingOnlyForSelectedSectionsEnabled and put the mode to SameEvent only on when the first\n // section is added. If the user swaps the comp mode after the first section we don't want to keep\n // forcing them back into SameEvent mode.\n if (newSectionIdFilter.length === 0 && sections.length > 0) {\n onCompListingChange({\n compListingSelectedSectionSettingsNew,\n compListingModeNew: AutoPricingCompListingMode.QualityScore,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n } else {\n if (newSectionIdFilter.length === 1 && sections.length === 0) {\n onCompListingChange({\n compListingSelectedSectionSettingsNew,\n compListingModeNew: AutoPricingCompListingMode.SameEvent,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n });\n\n return;\n }\n\n // Otherwise, just update the section filters and ensure the selectedSections flag is true\n onCompListingChange({\n compListingSelectedSectionSettingsNew,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n });\n }\n },\n [onCompListingChange]\n );\n\n const onCompListingSectionIdFilterChange = useCallback(\n (\n sectionId: number,\n selectedSections: SectionInfo[],\n section?: SectionInfo\n ) => {\n let newSectionIdFilter =\n compListingSelectedSectionSettings?.sectionIdFilter ?? [];\n\n let newRowIdFilter =\n compListingSelectedSectionSettings?.rowIdFilter ?? [];\n\n let newSectionRowIdFilter =\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {};\n\n if (newSectionIdFilter.includes(sectionId)) {\n newSectionIdFilter = newSectionIdFilter.filter(\n (id) => id !== sectionId\n );\n\n // Remove all the associated row ids for this section\n const section = selectedSections.find((s) => s.id === sectionId);\n if (section) {\n const rowIds = section.rows.map((r) => r.id);\n newRowIdFilter = newRowIdFilter.filter((id) => !rowIds.includes(id));\n }\n\n // Remove the sectionRow mapping so we don't display it in pills\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [sectionId]: omitted, ...updatedSectionRowIdFilter } =\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {};\n\n newSectionRowIdFilter = updatedSectionRowIdFilter;\n } else {\n newSectionIdFilter.push(sectionId);\n\n // If a section is present, add all the rows associated with the newly selected section\n if (section) {\n const newRowIds = section.rows.map((r) => r.id);\n newRowIds.forEach((newRowId) => {\n if (!newRowIdFilter.includes(newRowId)) {\n newRowIdFilter.push(newRowId);\n }\n });\n }\n }\n\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter: newSectionIdFilter,\n rowIdFilter: newRowIdFilter,\n sectionRowIdFilter: newSectionRowIdFilter,\n };\n\n applySectionRowFilterCompListingChanges(\n newSectionIdFilter,\n selectedSections,\n compListingSelectedSectionSettingsNew\n );\n },\n [\n applySectionRowFilterCompListingChanges,\n compListingSelectedSectionSettings,\n ]\n );\n\n const onCompListingSectionZoneChange = useCallback(\n (sections: SectionInfo[]) => {\n let newSectionIdFilter =\n compListingSelectedSectionSettings?.sectionIdFilter ?? [];\n\n let newRowIdFilter =\n compListingSelectedSectionSettings?.rowIdFilter ?? [];\n\n const newSectionRowIdFilter =\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {};\n\n // If every section passed in already exists in prevSections then we should remove them entirely\n const completelyOverlap = sections.every((section) =>\n newSectionIdFilter.includes(section.id)\n );\n\n if (completelyOverlap) {\n const sectionIdsToRemove = new Set(\n sections.map((section) => section.id)\n );\n\n newSectionIdFilter = newSectionIdFilter.filter(\n (id) => !sectionIdsToRemove.has(id)\n );\n\n // Remove all associated rows as well\n const rowIdsToRemove = sections\n .map((section) => section.rows.map((r) => r.id))\n .flat();\n\n const rowIdsToRemoveSet = new Set(rowIdsToRemove);\n\n newRowIdFilter = newRowIdFilter.filter(\n (rowId) => !rowIdsToRemoveSet.has(rowId)\n );\n\n // Update sectionRowIdFilters to remove the sections that have been removed\n sections.forEach((section) => {\n if (section.id in newSectionRowIdFilter) {\n delete newSectionRowIdFilter[section.id];\n }\n });\n } else {\n // Upsert of the new sections\n sections.forEach((section) => {\n if (!(section.id in newSectionRowIdFilter)) {\n newSectionIdFilter.push(section.id);\n\n const newRowIds = section.rows.map((r) => r.id);\n newRowIds.forEach((newRowId) => {\n if (!newRowIdFilter.includes(newRowId)) {\n newRowIdFilter.push(newRowId);\n }\n });\n }\n });\n }\n\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter: newSectionIdFilter,\n rowIdFilter: newRowIdFilter,\n sectionRowIdFilter: newSectionRowIdFilter,\n };\n\n applySectionRowFilterCompListingChanges(\n newSectionIdFilter,\n sections,\n compListingSelectedSectionSettingsNew\n );\n },\n [\n applySectionRowFilterCompListingChanges,\n compListingSelectedSectionSettings,\n ]\n );\n\n const hasChanges = useCallback(\n (listingForm: ListingDetailsUpdateInput) => {\n // Make sure we only send back the settable props\n if (\n formState.defaultValues?.pricingSettingsInputs?.compListingMode !==\n listingForm.compListingMode ||\n formState.defaultValues?.pricingSettingsInputs?.compListingFloor !==\n listingForm.compListingFloor ||\n formState.defaultValues?.pricingSettingsInputs?.compListingCeiling !==\n listingForm.compListingCeiling ||\n formState.defaultValues?.pricingSettingsInputs\n ?.compListingQuantityScoreAdjustmentEnabled !==\n listingForm.compListingQuantityScoreAdjustmentEnabled ||\n formState.defaultValues?.pricingSettingsInputs\n ?.compListingQuantityScoreAdjustmentOverrideJson !==\n listingForm.compListingQuantityScoreAdjustmentOverrideJson ||\n formState.defaultValues?.pricingSettingsInputs\n ?.compListingOnlyForSameZoneEnabled !==\n listingForm.compListingOnlyForSameZoneEnabled ||\n formState.defaultValues?.pricingSettingsInputs\n ?.compListingOnlyForSelectedSectionsEnabled !==\n listingForm.compListingOnlyForSelectedSectionsEnabled ||\n formState.defaultValues?.pricingSettingsInputs\n ?.compListingExcludeFanInventory !==\n listingForm.compListingExcludeFanInventory ||\n formState.defaultValues?.pricingSettingsInputs\n ?.compListingExcludeDefects !==\n listingForm.compListingExcludeDefects ||\n !isEqual(\n formState.defaultValues?.pricingSettingsInputs\n ?.compListingSelectedSectionSettings,\n listingForm?.compListingSelectedSectionSettings\n ) ||\n formState.defaultValues?.pricingSettingsInputs?.undercutMode !==\n listingForm.undercutMode ||\n formState.defaultValues?.pricingSettingsInputs\n ?.undercutAbsoluteAmount !== listingForm.undercutAbsoluteAmount ||\n formState.defaultValues?.pricingSettingsInputs\n ?.undercutRelativeAmount !== listingForm.undercutRelativeAmount ||\n formState.defaultValues?.pricingSettingsInputs\n ?.circuitBreakerMaxDiscountVelocityPercent !==\n listingForm.circuitBreakerMaxDiscountVelocityPercent ||\n formState.defaultValues?.pricingSettingsInputs\n ?.circuitBreakerMaxDiscountVelocityTicksInHours !==\n listingForm.circuitBreakerMaxDiscountVelocityTicksInHours ||\n formState.defaultValues?.pricingSettingsInputs\n ?.circuitBreakerMinCompListingCount !==\n listingForm.circuitBreakerMinCompListingCount ||\n formState.defaultValues?.pricingSettingsInputs\n ?.circuitBreakerRelativeCeiling !==\n listingForm.circuitBreakerRelativeCeiling ||\n formState.defaultValues?.pricingSettingsInputs\n ?.circuitBreakerRelativeFloor !==\n listingForm.circuitBreakerRelativeFloor ||\n formState.defaultValues?.pricingSettingsInputs?.outlierMode !==\n listingForm.outlierMode ||\n formState.defaultValues?.pricingSettingsInputs\n ?.outlierStandardDeviations !== listingForm.outlierStandardDeviations\n ) {\n return true;\n }\n },\n [\n formState.defaultValues?.pricingSettingsInputs?.compListingMode,\n formState.defaultValues?.pricingSettingsInputs?.compListingFloor,\n formState.defaultValues?.pricingSettingsInputs?.compListingCeiling,\n formState.defaultValues?.pricingSettingsInputs\n ?.compListingQuantityScoreAdjustmentEnabled,\n formState.defaultValues?.pricingSettingsInputs\n ?.compListingQuantityScoreAdjustmentOverrideJson,\n formState.defaultValues?.pricingSettingsInputs\n ?.compListingOnlyForSameZoneEnabled,\n formState.defaultValues?.pricingSettingsInputs\n ?.compListingOnlyForSelectedSectionsEnabled,\n formState.defaultValues?.pricingSettingsInputs\n ?.compListingExcludeFanInventory,\n formState.defaultValues?.pricingSettingsInputs?.compListingExcludeDefects,\n formState.defaultValues?.pricingSettingsInputs\n ?.compListingSelectedSectionSettings,\n formState.defaultValues?.pricingSettingsInputs?.undercutMode,\n formState.defaultValues?.pricingSettingsInputs?.undercutAbsoluteAmount,\n formState.defaultValues?.pricingSettingsInputs?.undercutRelativeAmount,\n formState.defaultValues?.pricingSettingsInputs\n ?.circuitBreakerMaxDiscountVelocityPercent,\n formState.defaultValues?.pricingSettingsInputs\n ?.circuitBreakerMaxDiscountVelocityTicksInHours,\n formState.defaultValues?.pricingSettingsInputs\n ?.circuitBreakerMinCompListingCount,\n formState.defaultValues?.pricingSettingsInputs\n ?.circuitBreakerRelativeCeiling,\n formState.defaultValues?.pricingSettingsInputs\n ?.circuitBreakerRelativeFloor,\n formState.defaultValues?.pricingSettingsInputs?.outlierMode,\n formState.defaultValues?.pricingSettingsInputs?.outlierStandardDeviations,\n ]\n );\n\n const setResetListingAutoPricingSettings = useCallback(\n (reset: any) => {\n setFormValue('resetListingAutoPricingSettings' as Path, reset);\n },\n [setFormValue]\n );\n\n const onCompListingModeChange = useCallback(\n (mode: AutoPricingCompListingMode | null) => {\n if (!mode) {\n onCompListingChange({\n compListingModeNew: null,\n compListingFloorNew: null,\n compListingCeilingNew: null,\n });\n return;\n }\n\n onCompListingChange({\n compListingModeNew: mode,\n // Reset flag on mode change\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n\n if (mode === AutoPricingCompListingMode.ParentListing) {\n onUndercutChange(AutoPricingUndercutMode.Simple);\n }\n },\n [onCompListingChange, onUndercutChange]\n );\n\n const canAutoPrice = useUserHasFeature(Feature.AutoPricing);\n\n return {\n canAutoPrice,\n uiCurrency,\n currencyNumberFormat,\n\n onResetSettings,\n onResetAdvanceSettings,\n setAutoPricingDefaults,\n eventPricingSettings,\n accountPricingSettings,\n event,\n\n ...circuitBreakerSettings,\n ...compListingSettings,\n ...undercutSettings,\n ...outlierSettings,\n\n onUndercutChange,\n onCompListingChange,\n onCircuitBreakerChange,\n onOutlierChange,\n onCompListingSectionIdFilterChange,\n onCompListingSectionZoneChange,\n onCompListingModeChange,\n\n compListingFloorError,\n compListingSelectedSectionError,\n undercutAbsoluteAmountError,\n undercutRelativeAmountError,\n\n resetListingAutoPricingSettings,\n setResetListingAutoPricingSettings,\n\n hasChanges,\n };\n};\n","import { ChangeEvent } from 'react';\nimport { useState } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { Slider } from 'src/core/ui/Slider';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { useAvailableAutopricingModes } from 'src/hooks/useAvailableAutopricingModes';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { DetailGroup, DetailSection, SectionContent } from 'src/modals/common';\nimport { ResetIcon } from 'src/svgs/Viagogo';\nimport {\n OUTLIER_MODE_KTH_LOWEST_STRATEGY,\n OutlierModeKthLowestStrategy,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { STANDARD_DEVIATIONS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { getCompleteEventConfigScoreOverrides } from 'src/utils/seatScoreUtils';\nimport {\n AutoPricingCompListingMode,\n AutoPricingOutlierMode,\n Feature,\n ListingGroup,\n} from 'src/WebApiController';\n\nimport * as styles from './SectionRowIdFilter.css';\nimport { useListingGroupAutoPricingSettings } from './useListingGroupAutoPricingSettings';\n\nexport const AdvancePricingSettings = ({\n listingGroup,\n}: {\n listingGroup?: ListingGroup;\n}) => {\n const [outlierKthLowestStrategy, setKthLowestOutlierStrategy] = useState<\n OutlierModeKthLowestStrategy | undefined\n >(OutlierModeKthLowestStrategy.Relative);\n\n const {\n onResetAdvanceSettings,\n\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n\n compListingMode,\n compListingQuantityScoreAdjustmentEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacing,\n\n onCompListingChange,\n onCircuitBreakerChange,\n onOutlierChange,\n } = useListingGroupAutoPricingSettings(listingGroup);\n\n const { activeConfigOverride, venueMapInfo } = useEventMapContext();\n const hasExcludeFanInventoryFeature = useUserHasFeature(\n Feature.ExcludeFanInventory\n );\n const hasExcludeDefectsFeature = useUserHasFeature(Feature.ExcludeDefects);\n\n const scores = getCompleteEventConfigScoreOverrides(\n venueMapInfo?.sectionScores,\n activeConfigOverride?.scoreOverrides,\n false\n );\n\n const { outlierModes, outlierModesDisabled } = useAvailableAutopricingModes(\n true,\n null,\n null,\n Boolean(scores?.some((s) => s.score))\n );\n\n return (\n }\n >\n \n <>\n {compListingMode === AutoPricingCompListingMode.QualityScore && (\n \n \n }\n >\n ) => e.stopPropagation()}\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (\n isChecked !== compListingQuantityScoreAdjustmentEnabled\n ) {\n onCompListingChange({\n compListingQuantityScoreAdjustmentEnabledNew: isChecked,\n });\n }\n }}\n />\n \n \n )}\n {hasExcludeFanInventoryFeature && (\n \n }\n >\n ) => e.stopPropagation()}\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (isChecked !== compListingExcludeFanInventory) {\n onCompListingChange({\n compListingExcludeFanInventoryNew: isChecked,\n });\n }\n }}\n />\n \n \n )}\n {/*\n * [NOTE]\n * Exclude defects feature was built first before product changed their mind for the\n * UI to instead show the opposite, \"Include Defects\" with a default value of false.\n * Originally, the requirement was \"Exclude Defects\" with a default value of true.\n * The DB columns and pricer backend has already been finished with logic revolving\n * around the \"Exclude Defect\" verbiage, with the logic gates predicating busisness logic\n * off of \"exclude\". The UI will now show the copy \"Include Defects\" and invert the value\n * being read/written from the database, but the rest of the backend (pricer + site) will remain\n * unchanged.\n */}\n {hasExcludeDefectsFeature && (\n \n }>\n ) => e.stopPropagation()}\n onChange={(e) => {\n const compListingExcludeDefectsNew = !e.target.checked;\n if (\n compListingExcludeDefectsNew !== compListingExcludeDefects\n ) {\n onCompListingChange({\n compListingExcludeDefectsNew:\n compListingExcludeDefectsNew,\n });\n }\n }}\n />\n \n \n )}\n \n }\n >\n {\n onCircuitBreakerChange(\n undefined,\n undefined,\n undefined,\n undefined,\n Math.round(count)\n );\n }}\n />\n \n \n \n }>\n e.stopPropagation()}\n onChange={(v) => {\n onOutlierChange({\n outlierModeNew: v as AutoPricingOutlierMode,\n });\n }}\n />\n \n \n {outlierMode == AutoPricingOutlierMode.StandardDeviations ? (\n \n }>\n e.stopPropagation()}\n onChange={(v) => {\n const value = parseInt(v ?? '');\n if (value != null && !isNaN(value)) {\n onOutlierChange({\n outlierModeNew:\n AutoPricingOutlierMode.StandardDeviations,\n outlierStandardDeviationsNew: value,\n });\n } else {\n onOutlierChange({\n outlierModeNew:\n AutoPricingOutlierMode.StandardDeviations,\n outlierStandardDeviationsNew: null,\n });\n }\n }}\n />\n \n \n ) : outlierMode == AutoPricingOutlierMode.KthLowest ? (\n \n \n \n {\n const v = parseInt(e.target.value);\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: v,\n });\n }}\n />\n \n {outlierKthLowestStrategy ==\n OutlierModeKthLowestStrategy.Relative ? (\n {\n let v = parseInt(e.target.value);\n if (v < 0) {\n v = 0;\n } else if (v > 100) {\n v = 100;\n }\n\n if (!isNaN(v)) {\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: undefined,\n outlierKthLowestLimitAbsoluteSpacingNew: null,\n outlierKthLowestLimitRelativeSpacingNew: v,\n });\n }\n }}\n />\n ) : (\n {\n const v = parseInt(e.target.value);\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: undefined,\n outlierKthLowestLimitAbsoluteSpacingNew: v,\n outlierKthLowestLimitRelativeSpacingNew: null,\n });\n }}\n />\n )}\n {\n if (!value) {\n return;\n }\n\n const strat = value as OutlierModeKthLowestStrategy;\n setKthLowestOutlierStrategy(strat);\n }}\n />\n \n \n \n ) : null}\n \n \n \n {\n const v = parseFloat(e.target.value) / 100;\n onCircuitBreakerChange(\n undefined,\n undefined,\n v,\n undefined,\n undefined\n );\n }}\n />\n \n {\n const v = parseInt(e.target.value);\n onCircuitBreakerChange(\n undefined,\n undefined,\n undefined,\n v,\n undefined\n );\n }}\n />\n \n \n \n \n }\n textContentId={ContentId.ResetSettings}\n onClick={onResetAdvanceSettings}\n />\n \n \n \n \n );\n};\n","export const ROW_FILTER_MISSING = 'MISSING';\n","import { useCallback } from 'react';\nimport { RowSelector } from 'src/components/Selectors/SectionRowSelector';\nimport { RowInfo, SectionInfo } from 'src/WebApiController';\n\nimport * as styles from './FilterPillList.css';\n\nconst PENCIL_CHAR = '\\u270E';\n\nexport const RowIdFilterDropdown = ({\n rowName,\n row,\n section,\n focusedSectionIds,\n onChange,\n disabled,\n}: {\n rowName?: string | null;\n row?: RowInfo;\n section?: SectionInfo;\n focusedSectionIds: number[];\n onChange: (row: RowInfo) => void;\n disabled: boolean;\n}) => {\n const onRowChange = useCallback(\n (rowId: string) => {\n const rowIdNum = parseInt(rowId);\n const row = section?.rows?.find((r) => r.id === rowIdNum);\n if (row) {\n onChange(row);\n }\n },\n [onChange, section?.rows]\n );\n\n if (!section?.rows?.filter((r) => !r.isSpeculative)?.length) {\n return null;\n }\n\n return (\n {\n // When clicking on the row selector, if the section is already focused\n // do not unfocus it\n if (focusedSectionIds.includes(section.id)) {\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n />\n );\n};\n","import clsx from 'clsx';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { PillList } from 'src/core/ui/PillList';\nimport { RowInfo, SectionInfo } from 'src/WebApiController';\n\nimport { ROW_FILTER_MISSING } from './FilterPillList.constants';\nimport * as styles from './FilterPillList.css';\nimport { RowIdFilterDropdown } from './RowIdFilterDropdown';\n\ntype FilterPillListProps = {\n disabled?: boolean;\n selectedSections: SectionInfo[];\n rowIdFilters?: number[] | undefined;\n sectionRowIdFilters?: { [key: string]: string } | undefined;\n useCondensedBorders?: boolean;\n scrollButtonClassName?: Record<'up' | 'down' | 'left' | 'right', string>;\n applyRowFilterChanges: (\n rowIdFiltersNew: number[],\n sectionRowIdFiltersNew: {\n [key: string]: string;\n }\n ) => void;\n\n applySelectedSectionChanges: (\n sectionId: number,\n selectedSections: SectionInfo[]\n ) => void;\n};\n\ntype RowOverride = RowInfo & {\n isManualOverride: boolean;\n};\n\nexport const FilterPillList = ({\n disabled,\n selectedSections,\n rowIdFilters,\n sectionRowIdFilters,\n useCondensedBorders,\n scrollButtonClassName,\n applyRowFilterChanges,\n applySelectedSectionChanges,\n}: FilterPillListProps) => {\n const [focusedSections, setFocusedSections] = useState([]);\n\n const [keysPressed, setKeysPressed] = useState([]);\n\n const { activeConfigOverride } = useEventMapContext();\n\n // Backfill the sections with newly added rows from score override\n const backfilledSections = useMemo(() => {\n if (!activeConfigOverride?.scoreOverrides) {\n return selectedSections;\n }\n const sectionToScoredRows =\n activeConfigOverride?.scoreOverrides?.reduce(\n (acc, score) => {\n acc[score.sectionId] = acc[score.sectionId] || [];\n if (score.rowOrdinal != null && score.rowName != null) {\n acc[score.sectionId].push({\n id: score.rowId,\n name: score.rowName,\n ordinal: score.rowOrdinal,\n tktClass: score.tkClsId,\n isManualOverride: score.isManualOverride,\n } as RowOverride);\n }\n return acc;\n },\n {} as Record\n ) ?? {};\n\n const sanitized: SectionInfo[] = [];\n for (const section of selectedSections) {\n const venueRows = section.rows;\n if (sectionToScoredRows[section.id]) {\n for (const { isManualOverride, ...scoredRow } of sectionToScoredRows[\n section.id\n ]) {\n const index = venueRows.findIndex((row) => row.id === scoredRow.id);\n if (index < 0) {\n // New row from score override\n venueRows.push(scoredRow);\n } else {\n // override section rows from override\n if (isManualOverride) {\n venueRows[index] = scoredRow;\n }\n }\n }\n }\n sanitized.push({ ...section, rows: venueRows });\n }\n return sanitized;\n }, [activeConfigOverride?.scoreOverrides, selectedSections]);\n\n const updateRowFilters = useCallback(\n (rowFilter: string, row?: RowInfo) => {\n let newRowIdFilters = rowIdFilters ?? [];\n\n const newSectionRowIdFilters = {\n ...sectionRowIdFilters,\n };\n\n focusedSections.forEach((section) => {\n const matchingRow = section.rows.find(\n ({ id, name }) =>\n id === row?.id || name?.toLowerCase() === rowFilter.toLowerCase()\n );\n if (matchingRow !== undefined) {\n // Remove all the row filters associated with the section id\n const sectionRowIds = section.rows.map((r) => r.id);\n newRowIdFilters = [\n ...newRowIdFilters.filter(\n (rowId) => !sectionRowIds.includes(rowId)\n ),\n ];\n\n // Exclude all rows from section if the matching row has no ordinal\n if (matchingRow.ordinal == null) {\n newSectionRowIdFilters[section.id] = matchingRow.id.toString();\n return;\n }\n\n // Push all the row ids with an ordinal less than or equal to the matching row\n section.rows.forEach((row) => {\n if (row.ordinal == null || matchingRow.ordinal == null) return;\n if (row.ordinal <= matchingRow.ordinal) {\n newRowIdFilters.push(row.id);\n }\n });\n\n // Only store the highest ordinal row id to display in the pill\n newSectionRowIdFilters[section.id] = matchingRow.id.toString();\n } else {\n delete newSectionRowIdFilters[section.id];\n const sectionRowIds = section.rows.map(({ id }) => id);\n newRowIdFilters = newRowIdFilters.filter(\n (id) => !sectionRowIds.includes(id)\n );\n }\n });\n\n applyRowFilterChanges(newRowIdFilters, newSectionRowIdFilters);\n setKeysPressed([]);\n setFocusedSections((prev) => {\n return prev.filter((s) => !(s.id in newSectionRowIdFilters));\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [rowIdFilters, sectionRowIdFilters, backfilledSections, focusedSections]\n );\n\n useEffect(() => {\n const sectionsMissingRowFilter = backfilledSections.filter(\n (s) => sectionRowIdFilters && !(s.id in sectionRowIdFilters)\n );\n\n setFocusedSections(sectionsMissingRowFilter);\n }, [backfilledSections, sectionRowIdFilters]);\n\n useEffect(() => {\n let keyPressTimeout: NodeJS.Timeout;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const ignoreElements = ['INPUT', 'TEXTAREA', 'SELECT'];\n if (\n document.activeElement &&\n ignoreElements.includes(document.activeElement.tagName)\n ) {\n return;\n }\n\n if (!backfilledSections) return;\n\n if (!event.ctrlKey && /^[a-zA-Z0-9]$/.test(event.key)) {\n setKeysPressed((prevKeys) => {\n const updatedKeys = [...prevKeys, event.key];\n\n clearTimeout(keyPressTimeout);\n\n keyPressTimeout = setTimeout(() => {\n const rowFilter = updatedKeys.join('').toLowerCase();\n updateRowFilters(rowFilter);\n }, 600);\n\n return updatedKeys;\n });\n } else if (!event.ctrlKey && event.key === 'Enter') {\n setKeysPressed((prevKeys) => {\n const rowFilter = prevKeys.join('').toLowerCase();\n updateRowFilters(rowFilter);\n clearTimeout(keyPressTimeout);\n return [];\n });\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n clearTimeout(keyPressTimeout);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [backfilledSections, focusedSections]);\n\n const onPillHover = useCallback(\n (e: React.MouseEvent) => {\n if (e.currentTarget == null) {\n return;\n }\n\n e.currentTarget.classList.add(\n clsx(styles.boldPillHover, {\n [styles.condensedBorderRadius]: useCondensedBorders,\n })\n );\n },\n [useCondensedBorders]\n );\n\n const onPillLeave = useCallback((e: React.MouseEvent) => {\n if (e.currentTarget == null) {\n return;\n }\n\n e.currentTarget.classList.remove(styles.boldPillHover);\n }, []);\n\n const onPillClick = useCallback(\n (pillId: number, e: React.MouseEvent) => {\n // If shift key is pressed, select all pills or unselect all of them if they are all selected\n if (e.shiftKey) {\n if (backfilledSections.length == focusedSections.length) {\n setFocusedSections([]);\n } else {\n setFocusedSections(backfilledSections);\n }\n } else {\n setFocusedSections((prevFocusedSections) => {\n const isActive = prevFocusedSections.some(\n (pill) => pill.id === pillId\n );\n if (isActive) {\n return prevFocusedSections.filter((pill) => pill.id !== pillId);\n } else {\n const newPill = backfilledSections.find(\n (section) => section.id === pillId\n );\n\n return newPill\n ? [...prevFocusedSections, newPill]\n : prevFocusedSections;\n }\n });\n }\n },\n [focusedSections.length, backfilledSections]\n );\n\n const filterSectionsPills = useMemo(() => {\n const rowLookup = sectionRowIdFilters ?? {};\n\n return backfilledSections\n .map((section) => {\n const rowFilter = rowLookup?.[section.id];\n const rowInfo =\n rowFilter != null && rowFilter !== ROW_FILTER_MISSING\n ? section.rows.find((r) => r.id.toString() == rowFilter)\n : undefined;\n\n const isFocusedPill = focusedSections.find((s) => s.id == section.id);\n return {\n value: section.id.toString(),\n rowFilter: rowFilter,\n display: section.name,\n customPillContainer: isFocusedPill\n ? clsx(styles.boldPill, {\n [styles.condensedBorderRadius]: useCondensedBorders,\n })\n : undefined,\n useCondensedBorders: useCondensedBorders,\n postfixItem: (\n f.id)}\n onChange={(row) => {\n updateRowFilters(row.name ?? '', row);\n }}\n disabled={false}\n />\n ),\n };\n })\n .toSorted((a, b) => {\n // Pills without a row name (rowInfo) come first\n if (!a.rowFilter && b.rowFilter) {\n return -1;\n } else if (a.rowFilter && !b.rowFilter) {\n return 1;\n }\n\n // Otherwise just sort by the section name\n return a.display.localeCompare(b.display, undefined, {\n numeric: true,\n sensitivity: 'base',\n });\n })\n .map(\n ({\n value,\n display,\n postfixItem,\n customPillContainer,\n useCondensedBorders,\n }) => ({\n value,\n display,\n postfixItem,\n customPillContainer,\n useCondensedBorders,\n })\n );\n }, [\n sectionRowIdFilters,\n backfilledSections,\n focusedSections,\n useCondensedBorders,\n keysPressed,\n updateRowFilters,\n ]);\n\n if (!filterSectionsPills.length) return null;\n\n return (\n
    \n {\n const sectionId = Number(key);\n if (!isNaN(sectionId)) {\n applySelectedSectionChanges(sectionId, backfilledSections);\n }\n }}\n />\n
    \n );\n};\n","import { useAppContext } from 'src/contexts/AppContext';\nimport { hasPermissionForListing } from 'src/utils/userPermissionUtils';\nimport { Listing, Permission } from 'src/WebApiController';\n\nexport const useUserHasListingPermission = (\n listing: Listing | null | undefined,\n forBulkEdit: boolean | undefined,\n root: Permission,\n isPricerOf?: Permission,\n isPurchasedBy?: Permission\n) => {\n const { loginContext } = useAppContext();\n\n const canUpdate = hasPermissionForListing(\n loginContext?.user,\n listing,\n forBulkEdit,\n root,\n isPricerOf,\n isPurchasedBy\n );\n\n return canUpdate;\n};\n\nexport const useUserCanUpdateListing = (\n listing: Listing | null | undefined,\n forBulkEdit: boolean | undefined\n) => {\n const canUpdate = useUserHasListingPermission(\n listing,\n forBulkEdit,\n Permission.Inventory_UpdateListingInfo,\n Permission.Inventory_UpdateListingInfoOnIsPricerOf,\n Permission.Inventory_UpdateListingInfoOnPurchasedBy\n );\n return canUpdate;\n};\n\nexport const useUserCanSetPrice = (\n listing: Listing | null | undefined,\n forBulkEdit: boolean | undefined\n) => {\n const canSetPrice = useUserHasListingPermission(\n listing,\n forBulkEdit,\n Permission.Inventory_SetPrice,\n Permission.Inventory_SetPriceOnIsPricerOf,\n Permission.Inventory_SetPriceOnPurchasedBy\n );\n return canSetPrice;\n};\n\nexport const useUserCanUpdateListingTags = (\n listing: Listing | null | undefined,\n forBulkEdit: boolean | undefined\n) => {\n const canSetPrice = useUserHasListingPermission(\n listing,\n forBulkEdit,\n Permission.Inventory_UpdateTags,\n Permission.Inventory_UpdateTagsOnIsPricerOf,\n Permission.Inventory_UpdateTagsOnPurchasedBy\n );\n return canSetPrice;\n};\n\nexport const useUserCanBroadcast = (\n listing: Listing | null | undefined,\n forBulkEdit: boolean | undefined\n) => {\n const canSetPrice = useUserHasListingPermission(\n listing,\n forBulkEdit,\n Permission.Inventory_BroadcastUnbroadcast,\n Permission.Inventory_BroadcastUnbroadcastOnIsPricerOf,\n Permission.Inventory_BroadcastUnbroadcastOnPurchasedBy\n );\n return canSetPrice;\n};\n\nexport const useUserCanPredeliver = (\n listing: Listing | null | undefined,\n forBulkEdit: boolean | undefined\n) => {\n const canUpdate = useUserHasListingPermission(\n listing,\n forBulkEdit,\n Permission.Inventory_Predelivery,\n Permission.Inventory_PredeliveryOnIsPricerOf,\n Permission.Inventory_PredeliveryOnPurchasedBy\n );\n return canUpdate;\n};\n\nexport const useUserCanViewPredelivery = (\n listing: Listing | null | undefined,\n forBulkEdit: boolean | undefined\n) => {\n // It is assumed if you can fulfill - then you can view fulfillment artifacts\n const canPredeliver = useUserCanPredeliver(listing, forBulkEdit);\n\n const canView = useUserHasListingPermission(\n listing,\n forBulkEdit,\n Permission.Inventory_ViewFulfillmentArtifacts,\n Permission.Inventory_ViewFulfillmentArtifactsOnIsPricerOf,\n Permission.Inventory_ViewFulfillmentArtifactsOnPurchasedBy\n );\n\n return canView || canPredeliver;\n};\n\nexport const useUserCanSetDeliveryStrategy = (\n listing: Listing | null | undefined,\n forBulkEdit: boolean | undefined\n) => {\n const canSetPrice = useUserHasListingPermission(\n listing,\n forBulkEdit,\n Permission.Inventory_UpdateDeliveryStrategy,\n Permission.Inventory_UpdateDeliveryStrategyOnIsPricerOf,\n Permission.Inventory_UpdateDeliveryStrategyOnPurchasedBy\n );\n return canSetPrice;\n};\n","import { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useUserCanSetPrice } from 'src/hooks/useUserHasListingPermissions';\nimport { Feature, Listing } from 'src/WebApiController';\n\nexport const useHasListingPricePermissions = (\n listing?: Listing | null,\n isBulkEdit?: boolean\n) => {\n const canSetPrice = useUserCanSetPrice(listing, isBulkEdit);\n\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n const canAutoPrice = hasAutoPricingFeature && canSetPrice;\n\n return {\n canSetPrice,\n canAutoPrice,\n hasAutoPricingFeature,\n };\n};\n","import { isEmpty, isEqual, pickBy } from 'lodash-es';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useListingGroupPricingSettings } from 'src/hooks/api/useListingGroupPricingSettings';\nimport { useGetAccountAutoPricingSettings } from 'src/hooks/useGetAccountAutoPricingSettings';\nimport { useGetEventAutoPricingSettings } from 'src/hooks/useGetEventAutoPricingSettings';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n DEFAULT_COMP_LISTING_FLOOR,\n DEFAULT_UNDERCUT_ABSOLUTE_AMT,\n DEFAULT_UNDERCUT_RELATIVE_AMT,\n} from 'src/utils/autoPricingUtils';\nimport { getCurrentLanguage } from 'src/utils/localeUtils';\nimport { coalesceUndefinedOnly } from 'src/utils/miscUtils';\nimport {\n mapToSelectedSectionSettings,\n SelectedSectionSettingsWithOptionals,\n} from 'src/utils/types/selectedSectionSettingsWithOptionals';\nimport {\n AutoPricingCompListingMode,\n AutoPricingOutlierMode,\n AutoPricingUndercutMode,\n Feature,\n Listing,\n ListingDetailsUpdateInput,\n SectionInfo,\n} from 'src/WebApiController';\n\nimport { useHasListingPricePermissions } from './useHasListingPricePermissions';\n\n/**\n * @deprecated Use the `src/modals/ListingDetails/ListingForms/AutoPricingForm/useAutoPricingSettings.tsuseAutoPricingSettings`\n * instead.\n */\nexport const useListingAutoPricingSettings = (\n listing?: Listing | null,\n isBulkEdit?: boolean\n) => {\n const { setValue, watch, formState, clearErrors } =\n useFormContext();\n const { canSetPrice, canAutoPrice } = useHasListingPricePermissions(\n listing,\n isBulkEdit\n );\n\n const hasDefaultFilterRowsFeature = useUserHasFeature(\n Feature.DefaultFilterRows\n );\n const hasAllowSeatScoreCompListingModeFeature = useUserHasFeature(\n Feature.AllowSeatScoreCompListingMode\n );\n\n const defaultCompListingMode = useMemo(() => {\n if (hasAllowSeatScoreCompListingModeFeature) {\n return AutoPricingCompListingMode.QualityScore;\n }\n return AutoPricingCompListingMode.SameEvent;\n }, [hasAllowSeatScoreCompListingModeFeature]);\n\n const updateInput = watch();\n const {\n autoPricingEnabled,\n currencyCode,\n\n skipAutoPricing,\n skipAdvancePricing,\n skipCompListing,\n skipPriceProtection,\n skipUndercut,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n compListingMode,\n compListingCeiling,\n compListingFloor,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingQuantityScoreAdjustmentEnabled,\n compListingExcludeFanInventory,\n compListingQuantityScoreAdjustmentOverrideJson,\n compListingSelectedSectionSettings,\n compListingExcludeDefects,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacing,\n\n netProceedsFloor,\n\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n\n listPrice: unitNetProceeds,\n } = updateInput;\n\n const { loginContext } = useAppContext();\n\n const { getUiCurrency } = useLocalizationContext();\n\n const uiCurrency = useMemo(\n () =>\n getUiCurrency(\n listing?.currency ?? loginContext?.user?.activeAccount?.currencyCode\n ),\n [\n getUiCurrency,\n listing?.currency,\n loginContext?.user?.activeAccount?.currencyCode,\n ]\n );\n const currencyNumberFormat = useMemo(\n () =>\n new Intl.NumberFormat(getCurrentLanguage(), {\n style: 'currency',\n currency: uiCurrency.code,\n }),\n [uiCurrency.code]\n );\n\n useEffect(() => {\n // Setting this null so it will use the originalListing.Currency (for bulk-edit)\n if (isBulkEdit && currencyCode != null) {\n setValue('currencyCode', null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isBulkEdit]);\n\n const { event } = useEventMapContext();\n const { pricingSettings: groupPricingSettings } =\n useListingGroupPricingSettings(listing?.ltGrpId, event);\n const { pricingSettings: eventPricingSettings } =\n useGetEventAutoPricingSettings(event!, false);\n const { pricingSettings: accountPricingSettings } =\n useGetAccountAutoPricingSettings();\n\n const onResetSettings = useCallback(() => {\n setValue('undercutMode', null);\n setValue('undercutAbsoluteAmount', null);\n setValue('undercutRelativeAmount', null);\n\n setValue('compListingMode', null);\n setValue('compListingFloor', null);\n setValue('compListingCeiling', null);\n setValue('compListingSelectedSectionSettings', null);\n setValue('compListingQuantityScoreAdjustmentOverrideJson', null);\n setValue('compListingOnlyForSameZoneEnabled', null);\n setValue('compListingOnlyForSelectedSectionsEnabled', null);\n }, [setValue]);\n\n const onResetAdvanceSettings = useCallback(() => {\n setValue('compListingQuantityScoreAdjustmentEnabled', null);\n setValue('compListingExcludeFanInventory', null);\n setValue('compListingExcludeDefects', null);\n\n setValue('circuitBreakerRelativeCeiling', null);\n setValue('circuitBreakerRelativeFloor', null);\n setValue('circuitBreakerMaxDiscountVelocityPercent', null);\n setValue('circuitBreakerMaxDiscountVelocityTicksInHours', null);\n setValue('circuitBreakerMinCompListingCount', null);\n\n setValue('outlierMode', null);\n setValue('outlierStandardDeviations', null);\n setValue('outlierKthLowestLimit', null);\n setValue('outlierKthLowestLimitRelativeSpacing', null);\n setValue('outlierKthLowestLimitAbsoluteSpacing', null);\n }, [setValue]);\n\n const circuitBreakerSettings = useMemo(() => {\n if (\n circuitBreakerMaxDiscountVelocityPercent != null ||\n circuitBreakerMaxDiscountVelocityTicksInHours != null ||\n circuitBreakerMinCompListingCount != null ||\n circuitBreakerRelativeCeiling != null ||\n circuitBreakerRelativeFloor != null\n ) {\n // if it has any of these set - use the entire area\n return {\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n };\n }\n\n if (\n groupPricingSettings?.circuitBreakerMaxDiscountVelocityPercent != null ||\n groupPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours !=\n null ||\n groupPricingSettings?.circuitBreakerMinCompListingCount != null ||\n groupPricingSettings?.circuitBreakerRelativeCeiling != null ||\n groupPricingSettings?.circuitBreakerRelativeFloor != null\n ) {\n // if it has any of these set - use the entire area\n return {\n circuitBreakerMaxDiscountVelocityPercent:\n groupPricingSettings?.circuitBreakerMaxDiscountVelocityPercent ??\n null,\n circuitBreakerMaxDiscountVelocityTicksInHours:\n groupPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours ??\n null,\n circuitBreakerMinCompListingCount:\n groupPricingSettings?.circuitBreakerMinCompListingCount ?? null,\n circuitBreakerRelativeCeiling:\n groupPricingSettings?.circuitBreakerRelativeCeiling ?? null,\n circuitBreakerRelativeFloor:\n groupPricingSettings?.circuitBreakerRelativeFloor ?? null,\n };\n }\n\n if (\n eventPricingSettings?.circuitBreakerMaxDiscountVelocityPercent != null ||\n eventPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours !=\n null ||\n eventPricingSettings?.circuitBreakerMinCompListingCount != null ||\n eventPricingSettings?.circuitBreakerRelativeCeiling != null ||\n eventPricingSettings?.circuitBreakerRelativeFloor != null\n ) {\n // if it has any of these set - use the entire area\n return {\n circuitBreakerMaxDiscountVelocityPercent:\n eventPricingSettings?.circuitBreakerMaxDiscountVelocityPercent ??\n null,\n circuitBreakerMaxDiscountVelocityTicksInHours:\n eventPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours ??\n null,\n circuitBreakerMinCompListingCount:\n eventPricingSettings?.circuitBreakerMinCompListingCount ?? null,\n circuitBreakerRelativeCeiling:\n eventPricingSettings?.circuitBreakerRelativeCeiling ?? null,\n circuitBreakerRelativeFloor:\n eventPricingSettings?.circuitBreakerRelativeFloor ?? null,\n };\n }\n\n // if it has any of these set - use the entire area\n return {\n circuitBreakerMaxDiscountVelocityPercent:\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityPercent ??\n null,\n circuitBreakerMaxDiscountVelocityTicksInHours:\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours ??\n null,\n circuitBreakerMinCompListingCount:\n accountPricingSettings?.circuitBreakerMinCompListingCount ?? null,\n circuitBreakerRelativeCeiling:\n accountPricingSettings?.circuitBreakerRelativeCeiling ?? null,\n circuitBreakerRelativeFloor:\n accountPricingSettings?.circuitBreakerRelativeFloor ?? null,\n };\n }, [\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityPercent,\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours,\n accountPricingSettings?.circuitBreakerMinCompListingCount,\n accountPricingSettings?.circuitBreakerRelativeCeiling,\n accountPricingSettings?.circuitBreakerRelativeFloor,\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n eventPricingSettings?.circuitBreakerMaxDiscountVelocityPercent,\n eventPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours,\n eventPricingSettings?.circuitBreakerMinCompListingCount,\n eventPricingSettings?.circuitBreakerRelativeCeiling,\n eventPricingSettings?.circuitBreakerRelativeFloor,\n groupPricingSettings?.circuitBreakerMaxDiscountVelocityPercent,\n groupPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours,\n groupPricingSettings?.circuitBreakerMinCompListingCount,\n groupPricingSettings?.circuitBreakerRelativeCeiling,\n groupPricingSettings?.circuitBreakerRelativeFloor,\n ]);\n\n const undercutSettings = useMemo(() => {\n if (\n undercutMode != null ||\n undercutAbsoluteAmount != null ||\n undercutRelativeAmount != null\n ) {\n // if it has any of these set - use the entire area\n return {\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n };\n }\n\n if (\n groupPricingSettings?.undercutMode != null ||\n groupPricingSettings?.undercutAbsoluteAmount != null ||\n groupPricingSettings?.undercutRelativeAmount != null\n ) {\n // if it has any of these set - use the entire area\n return {\n undercutMode: groupPricingSettings?.undercutMode ?? null,\n undercutAbsoluteAmount:\n groupPricingSettings?.undercutAbsoluteAmount ?? null,\n undercutRelativeAmount:\n groupPricingSettings?.undercutRelativeAmount ?? null,\n };\n }\n\n if (\n eventPricingSettings?.undercutMode != null ||\n eventPricingSettings?.undercutAbsoluteAmount != null ||\n eventPricingSettings?.undercutRelativeAmount != null\n ) {\n // if it has any of these set - use the entire area\n return {\n undercutMode: eventPricingSettings?.undercutMode ?? null,\n undercutAbsoluteAmount:\n eventPricingSettings?.undercutAbsoluteAmount ?? null,\n undercutRelativeAmount:\n eventPricingSettings?.undercutRelativeAmount ?? null,\n };\n }\n\n // if it has any of these set - use the entire area\n return {\n undercutMode:\n accountPricingSettings?.undercutMode ?? AutoPricingUndercutMode.Simple,\n undercutAbsoluteAmount:\n accountPricingSettings?.undercutAbsoluteAmount ??\n DEFAULT_UNDERCUT_ABSOLUTE_AMT,\n undercutRelativeAmount:\n accountPricingSettings?.undercutRelativeAmount ??\n DEFAULT_UNDERCUT_RELATIVE_AMT,\n };\n }, [\n accountPricingSettings?.undercutAbsoluteAmount,\n accountPricingSettings?.undercutMode,\n accountPricingSettings?.undercutRelativeAmount,\n eventPricingSettings?.undercutAbsoluteAmount,\n eventPricingSettings?.undercutMode,\n eventPricingSettings?.undercutRelativeAmount,\n groupPricingSettings?.undercutAbsoluteAmount,\n groupPricingSettings?.undercutMode,\n groupPricingSettings?.undercutRelativeAmount,\n undercutAbsoluteAmount,\n undercutMode,\n undercutRelativeAmount,\n ]);\n\n const compListingSettings = useMemo(() => {\n if (\n compListingMode != null ||\n compListingFloor != null ||\n compListingCeiling != null ||\n compListingOnlyForSameZoneEnabled != null ||\n compListingOnlyForSelectedSectionsEnabled != null ||\n compListingExcludeFanInventory != null ||\n compListingExcludeDefects != null ||\n compListingSelectedSectionSettings != null ||\n compListingQuantityScoreAdjustmentEnabled != null ||\n compListingQuantityScoreAdjustmentOverrideJson != null\n ) {\n // if it has any of these set - use the entire area\n return {\n compListingMode,\n compListingFloor: compListingFloor ?? DEFAULT_COMP_LISTING_FLOOR,\n compListingCeiling:\n compListingCeiling ??\n (compListingFloor ?? DEFAULT_COMP_LISTING_FLOOR) +\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingSelectedSectionSettings,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n };\n }\n\n if (\n groupPricingSettings?.compListingMode != null ||\n groupPricingSettings?.compListingFloor != null ||\n groupPricingSettings?.compListingCeiling != null ||\n groupPricingSettings?.compListingOnlyForSameZoneEnabled != null ||\n groupPricingSettings?.compListingOnlyForSelectedSectionsEnabled != null ||\n groupPricingSettings?.compListingExcludeFanInventory != null ||\n groupPricingSettings?.compListingExcludeDefects != null ||\n groupPricingSettings?.compListingQuantityScoreAdjustmentEnabled != null ||\n groupPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson !=\n null ||\n groupPricingSettings?.compListingSelectedSectionSettings != null\n ) {\n // if it has any of these set - use the entire area\n return {\n compListingMode: groupPricingSettings?.compListingMode ?? null,\n compListingFloor:\n groupPricingSettings?.compListingFloor ?? DEFAULT_COMP_LISTING_FLOOR,\n compListingCeiling:\n groupPricingSettings?.compListingCeiling ??\n (groupPricingSettings?.compListingFloor ??\n DEFAULT_COMP_LISTING_FLOOR) +\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n compListingOnlyForSameZoneEnabled:\n groupPricingSettings?.compListingOnlyForSameZoneEnabled ?? null,\n compListingOnlyForSelectedSectionsEnabled:\n groupPricingSettings?.compListingOnlyForSelectedSectionsEnabled ??\n null,\n compListingQuantityScoreAdjustmentEnabled:\n groupPricingSettings?.compListingQuantityScoreAdjustmentEnabled ??\n null,\n compListingExcludeFanInventory:\n groupPricingSettings?.compListingExcludeFanInventory ?? null,\n compListingExcludeDefects:\n groupPricingSettings?.compListingExcludeDefects ?? null,\n compListingQuantityScoreAdjustmentOverrideJson:\n groupPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson ??\n null,\n compListingSelectedSectionSettings:\n groupPricingSettings?.compListingSelectedSectionSettings ?? null,\n };\n }\n\n if (\n eventPricingSettings?.compListingMode != null ||\n eventPricingSettings?.compListingFloor != null ||\n eventPricingSettings?.compListingCeiling != null ||\n eventPricingSettings?.compListingOnlyForSameZoneEnabled != null ||\n eventPricingSettings?.compListingOnlyForSelectedSectionsEnabled != null ||\n eventPricingSettings?.compListingExcludeFanInventory != null ||\n eventPricingSettings?.compListingExcludeDefects != null ||\n eventPricingSettings?.compListingQuantityScoreAdjustmentEnabled != null ||\n eventPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson !=\n null ||\n eventPricingSettings?.compListingSelectedSectionSettings != null\n ) {\n // if it has any of these set - use the entire area\n return {\n compListingMode: eventPricingSettings?.compListingMode ?? null,\n compListingFloor:\n eventPricingSettings?.compListingFloor ?? DEFAULT_COMP_LISTING_FLOOR,\n compListingCeiling:\n eventPricingSettings?.compListingCeiling ??\n (eventPricingSettings?.compListingFloor ??\n DEFAULT_COMP_LISTING_FLOOR) +\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n compListingOnlyForSameZoneEnabled:\n eventPricingSettings?.compListingOnlyForSameZoneEnabled ?? null,\n compListingOnlyForSelectedSectionsEnabled:\n eventPricingSettings?.compListingOnlyForSelectedSectionsEnabled ??\n null,\n compListingQuantityScoreAdjustmentEnabled:\n eventPricingSettings?.compListingQuantityScoreAdjustmentEnabled ??\n null,\n compListingExcludeFanInventory:\n eventPricingSettings?.compListingExcludeFanInventory ?? null,\n compListingExcludeDefects:\n eventPricingSettings?.compListingExcludeDefects ?? null,\n compListingQuantityScoreAdjustmentOverrideJson:\n eventPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson ??\n null,\n compListingSelectedSectionSettings:\n eventPricingSettings?.compListingSelectedSectionSettings ?? null,\n };\n }\n\n // if it has any of these set - use the entire area\n return {\n compListingMode:\n accountPricingSettings?.compListingMode ?? defaultCompListingMode,\n compListingFloor:\n accountPricingSettings?.compListingFloor ?? DEFAULT_COMP_LISTING_FLOOR,\n compListingCeiling:\n accountPricingSettings?.compListingCeiling ??\n (accountPricingSettings?.compListingFloor ??\n DEFAULT_COMP_LISTING_FLOOR) +\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n compListingOnlyForSameZoneEnabled:\n accountPricingSettings?.compListingOnlyForSameZoneEnabled ?? null,\n compListingOnlyForSelectedSectionsEnabled:\n accountPricingSettings?.compListingOnlyForSelectedSectionsEnabled ??\n null,\n compListingQuantityScoreAdjustmentEnabled:\n accountPricingSettings?.compListingQuantityScoreAdjustmentEnabled ??\n null,\n compListingExcludeFanInventory:\n accountPricingSettings?.compListingExcludeFanInventory ?? null,\n compListingExcludeDefects:\n accountPricingSettings?.compListingExcludeDefects ?? null,\n compListingQuantityScoreAdjustmentOverrideJson:\n accountPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson ??\n null,\n compListingSelectedSectionSettings:\n accountPricingSettings?.compListingSelectedSectionSettings ?? null,\n };\n }, [\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingSelectedSectionSettings,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n groupPricingSettings?.compListingMode,\n groupPricingSettings?.compListingFloor,\n groupPricingSettings?.compListingCeiling,\n groupPricingSettings?.compListingOnlyForSameZoneEnabled,\n groupPricingSettings?.compListingOnlyForSelectedSectionsEnabled,\n groupPricingSettings?.compListingExcludeFanInventory,\n groupPricingSettings?.compListingExcludeDefects,\n groupPricingSettings?.compListingQuantityScoreAdjustmentEnabled,\n groupPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson,\n groupPricingSettings?.compListingSelectedSectionSettings,\n eventPricingSettings?.compListingMode,\n eventPricingSettings?.compListingFloor,\n eventPricingSettings?.compListingCeiling,\n eventPricingSettings?.compListingOnlyForSameZoneEnabled,\n eventPricingSettings?.compListingOnlyForSelectedSectionsEnabled,\n eventPricingSettings?.compListingExcludeFanInventory,\n eventPricingSettings?.compListingExcludeDefects,\n eventPricingSettings?.compListingQuantityScoreAdjustmentEnabled,\n eventPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson,\n eventPricingSettings?.compListingSelectedSectionSettings,\n accountPricingSettings?.compListingMode,\n accountPricingSettings?.compListingFloor,\n accountPricingSettings?.compListingCeiling,\n accountPricingSettings?.compListingOnlyForSameZoneEnabled,\n accountPricingSettings?.compListingOnlyForSelectedSectionsEnabled,\n accountPricingSettings?.compListingQuantityScoreAdjustmentEnabled,\n accountPricingSettings?.compListingExcludeFanInventory,\n accountPricingSettings?.compListingExcludeDefects,\n accountPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson,\n accountPricingSettings?.compListingSelectedSectionSettings,\n defaultCompListingMode,\n ]);\n\n const outlierSettings = useMemo(() => {\n if (\n outlierMode != null ||\n outlierStandardDeviations != null ||\n outlierKthLowestLimit != null\n ) {\n // if it has any of these set - use the entire area\n return {\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n };\n }\n\n if (\n groupPricingSettings?.outlierMode != null ||\n groupPricingSettings?.outlierStandardDeviations != null\n // TODO - add rest of settings here\n ) {\n // if it has any of these set - use the entire area\n return {\n outlierMode: groupPricingSettings?.outlierMode ?? null,\n outlierStandardDeviations:\n groupPricingSettings?.outlierStandardDeviations ?? null,\n };\n }\n\n if (\n eventPricingSettings?.outlierMode != null ||\n eventPricingSettings?.outlierStandardDeviations != null\n // TODO - add rest of settings here\n ) {\n // if it has any of these set - use the entire area\n return {\n outlierMode: eventPricingSettings?.outlierMode ?? null,\n outlierStandardDeviations:\n eventPricingSettings?.outlierStandardDeviations ?? null,\n };\n }\n\n // if it has any of these set - use the entire area\n return {\n outlierMode: accountPricingSettings?.outlierMode ?? null,\n outlierStandardDeviations:\n accountPricingSettings?.outlierStandardDeviations ?? null,\n // TODO - add rest of settings here\n };\n }, [\n accountPricingSettings?.outlierMode,\n accountPricingSettings?.outlierStandardDeviations,\n eventPricingSettings?.outlierMode,\n eventPricingSettings?.outlierStandardDeviations,\n groupPricingSettings?.outlierMode,\n groupPricingSettings?.outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacing,\n outlierMode,\n outlierStandardDeviations,\n ]);\n\n const onUndercutChange = useCallback(\n (\n undercutModeNew?: AutoPricingUndercutMode | null,\n undercutAbsoluteAmountNew?: number | null,\n undercutRelativeAmountNew?: number | null\n ) => {\n if (\n undercutModeNew !== undefined ||\n undercutAbsoluteAmountNew !== undefined ||\n undercutRelativeAmountNew !== undefined\n ) {\n setValue(\n 'undercutMode',\n coalesceUndefinedOnly(undercutModeNew, undercutSettings.undercutMode)!\n );\n setValue(\n 'undercutAbsoluteAmount',\n coalesceUndefinedOnly(\n undercutAbsoluteAmountNew,\n undercutSettings.undercutAbsoluteAmount\n )!\n );\n setValue(\n 'undercutRelativeAmount',\n coalesceUndefinedOnly(\n undercutRelativeAmountNew,\n undercutSettings.undercutRelativeAmount\n )!\n );\n }\n },\n [\n setValue,\n undercutSettings.undercutAbsoluteAmount,\n undercutSettings.undercutMode,\n undercutSettings.undercutRelativeAmount,\n ]\n );\n\n const onCompListingChange = useCallback(\n (input: {\n compListingModeNew?: AutoPricingCompListingMode | null;\n compListingFloorNew?: number | null;\n compListingCeilingNew?: number | null;\n compListingOnlyForSameZoneEnabledNew?: boolean | null;\n compListingOnlyForSelectedSectionsEnabledNew?: boolean | null;\n compListingQuantityScoreAdjustmentEnabledNew?: boolean | null;\n compListingExcludeFanInventoryNew?: boolean | null;\n compListingExcludeDefectsNew?: boolean | null;\n compListingQuantityScoreAdjustmentOverrideJsonNew?: string | null;\n compListingSelectedSectionSettingsNew?: SelectedSectionSettingsWithOptionals | null;\n }) => {\n const {\n compListingModeNew,\n compListingFloorNew,\n compListingCeilingNew,\n compListingOnlyForSameZoneEnabledNew,\n compListingOnlyForSelectedSectionsEnabledNew,\n compListingQuantityScoreAdjustmentEnabledNew,\n compListingExcludeFanInventoryNew,\n compListingExcludeDefectsNew,\n compListingQuantityScoreAdjustmentOverrideJsonNew,\n compListingSelectedSectionSettingsNew,\n } = input;\n\n if (\n compListingModeNew !== undefined ||\n compListingFloorNew !== undefined ||\n compListingCeilingNew !== undefined ||\n compListingOnlyForSameZoneEnabledNew !== undefined ||\n compListingOnlyForSelectedSectionsEnabledNew !== undefined ||\n compListingQuantityScoreAdjustmentEnabledNew !== undefined ||\n compListingExcludeFanInventoryNew !== undefined ||\n compListingExcludeDefectsNew !== undefined ||\n compListingQuantityScoreAdjustmentOverrideJsonNew !== undefined ||\n compListingSelectedSectionSettingsNew !== undefined\n ) {\n const sanitizedCompListingOnlyForSameZoneEnabledNew =\n compListingOnlyForSelectedSectionsEnabledNew\n ? false\n : compListingOnlyForSameZoneEnabledNew;\n const sanitizedCompListingOnlyForSelectedSectionsEnabledNew =\n compListingOnlyForSameZoneEnabledNew\n ? false\n : compListingOnlyForSelectedSectionsEnabledNew;\n\n setValue(\n 'compListingMode',\n coalesceUndefinedOnly(\n compListingModeNew,\n compListingSettings.compListingMode\n )!\n );\n setValue(\n 'compListingFloor',\n coalesceUndefinedOnly(\n compListingFloorNew,\n compListingSettings.compListingFloor\n )!\n );\n setValue(\n 'compListingCeiling',\n coalesceUndefinedOnly(\n compListingCeilingNew,\n compListingSettings.compListingCeiling\n )!\n );\n setValue(\n 'compListingOnlyForSameZoneEnabled',\n coalesceUndefinedOnly(\n sanitizedCompListingOnlyForSameZoneEnabledNew,\n compListingSettings.compListingOnlyForSameZoneEnabled\n )!\n );\n setValue(\n 'compListingOnlyForSelectedSectionsEnabled',\n coalesceUndefinedOnly(\n sanitizedCompListingOnlyForSelectedSectionsEnabledNew,\n compListingSettings.compListingOnlyForSelectedSectionsEnabled\n )!\n );\n setValue(\n 'compListingQuantityScoreAdjustmentEnabled',\n coalesceUndefinedOnly(\n compListingQuantityScoreAdjustmentEnabledNew,\n compListingSettings.compListingQuantityScoreAdjustmentEnabled\n )!\n );\n setValue(\n 'compListingExcludeFanInventory',\n coalesceUndefinedOnly(\n compListingExcludeFanInventoryNew,\n compListingSettings.compListingExcludeFanInventory\n )!\n );\n setValue(\n 'compListingExcludeDefects',\n coalesceUndefinedOnly(\n compListingExcludeDefectsNew,\n compListingSettings.compListingExcludeDefects\n )!\n );\n setValue(\n 'compListingQuantityScoreAdjustmentOverrideJson',\n coalesceUndefinedOnly(\n compListingQuantityScoreAdjustmentOverrideJsonNew,\n compListingSettings.compListingQuantityScoreAdjustmentOverrideJson\n )!\n );\n setValue(\n 'compListingSelectedSectionSettings',\n coalesceUndefinedOnly(\n mapToSelectedSectionSettings(compListingSelectedSectionSettingsNew),\n compListingSettings.compListingSelectedSectionSettings\n )!\n );\n }\n },\n [\n compListingSettings.compListingCeiling,\n compListingSettings.compListingFloor,\n compListingSettings.compListingMode,\n compListingSettings.compListingOnlyForSameZoneEnabled,\n compListingSettings.compListingOnlyForSelectedSectionsEnabled,\n compListingSettings.compListingQuantityScoreAdjustmentEnabled,\n compListingSettings.compListingExcludeFanInventory,\n compListingSettings.compListingExcludeDefects,\n compListingSettings.compListingQuantityScoreAdjustmentOverrideJson,\n compListingSettings.compListingSelectedSectionSettings,\n setValue,\n ]\n );\n\n const onCircuitBreakerChange = useCallback(\n (\n circuitBreakerRelativeCeilingNew?: number | null,\n circuitBreakerRelativeFloorNew?: number | null,\n circuitBreakerMaxDiscountVelocityPercentNew?: number | null,\n circuitBreakerMaxDiscountVelocityTicksInHoursNew?: number | null,\n circuitBreakerMinCompListingCountNew?: number | null\n ) => {\n if (\n circuitBreakerRelativeCeilingNew !== undefined ||\n circuitBreakerRelativeFloorNew !== undefined ||\n circuitBreakerMaxDiscountVelocityPercentNew !== undefined ||\n circuitBreakerMaxDiscountVelocityTicksInHoursNew !== undefined ||\n circuitBreakerMinCompListingCountNew !== undefined\n ) {\n setValue(\n 'circuitBreakerRelativeCeiling',\n coalesceUndefinedOnly(\n circuitBreakerRelativeCeilingNew,\n circuitBreakerSettings.circuitBreakerRelativeCeiling\n ) ?? null\n );\n setValue(\n 'circuitBreakerRelativeFloor',\n coalesceUndefinedOnly(\n circuitBreakerRelativeFloorNew,\n circuitBreakerSettings.circuitBreakerRelativeFloor\n ) ?? null\n );\n setValue(\n 'circuitBreakerMaxDiscountVelocityPercent',\n coalesceUndefinedOnly(\n circuitBreakerMaxDiscountVelocityPercentNew,\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityPercent\n ) ?? null\n );\n setValue(\n 'circuitBreakerMaxDiscountVelocityTicksInHours',\n coalesceUndefinedOnly(\n circuitBreakerMaxDiscountVelocityTicksInHoursNew,\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityTicksInHours\n ) ?? null\n );\n setValue(\n 'circuitBreakerMinCompListingCount',\n coalesceUndefinedOnly(\n circuitBreakerMinCompListingCountNew,\n circuitBreakerSettings.circuitBreakerMinCompListingCount\n ) ?? null\n );\n }\n },\n [\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerSettings.circuitBreakerMinCompListingCount,\n circuitBreakerSettings.circuitBreakerRelativeCeiling,\n circuitBreakerSettings.circuitBreakerRelativeFloor,\n setValue,\n ]\n );\n\n const onOutlierChange = useCallback(\n (input: {\n outlierModeNew?: AutoPricingOutlierMode | null;\n outlierStandardDeviationsNew?: number | null;\n outlierKthLowestLimitNew?: number | null;\n outlierKthLowestLimitRelativeSpacingNew?: number | null;\n outlierKthLowestLimitAbsoluteSpacingNew?: number | null;\n }) => {\n const {\n outlierModeNew,\n outlierStandardDeviationsNew,\n outlierKthLowestLimitNew,\n outlierKthLowestLimitRelativeSpacingNew,\n outlierKthLowestLimitAbsoluteSpacingNew,\n } = input;\n\n // Covers both null and undefined cases\n if (outlierModeNew !== undefined) {\n setValue(\n 'outlierMode',\n coalesceUndefinedOnly(outlierModeNew, outlierSettings.outlierMode) ??\n null\n );\n\n switch (outlierModeNew) {\n case AutoPricingOutlierMode.StandardDeviations:\n setValue(\n 'outlierStandardDeviations',\n coalesceUndefinedOnly(\n outlierStandardDeviationsNew,\n outlierSettings.outlierStandardDeviations\n ) ?? null\n );\n setValue('outlierKthLowestLimit', null);\n setValue('outlierKthLowestLimitRelativeSpacing', null);\n setValue('outlierKthLowestLimitAbsoluteSpacing', null);\n break;\n case AutoPricingOutlierMode.KthLowest:\n setValue('outlierStandardDeviations', null);\n setValue(\n 'outlierKthLowestLimit',\n coalesceUndefinedOnly(\n outlierKthLowestLimitNew,\n outlierSettings.outlierKthLowestLimit\n ) ?? null\n );\n\n setValue(\n 'outlierKthLowestLimitRelativeSpacing',\n coalesceUndefinedOnly(\n outlierKthLowestLimitRelativeSpacingNew,\n outlierSettings.outlierKthLowestLimitRelativeSpacing\n ) ?? null\n );\n\n setValue(\n 'outlierKthLowestLimitAbsoluteSpacing',\n coalesceUndefinedOnly(\n outlierKthLowestLimitAbsoluteSpacingNew,\n outlierSettings.outlierKthLowestLimitAbsoluteSpacing\n ) ?? null\n );\n break;\n case AutoPricingOutlierMode.SkipLogic:\n setValue('outlierStandardDeviations', null);\n setValue('outlierKthLowestLimit', null);\n setValue('outlierKthLowestLimitRelativeSpacing', null);\n setValue('outlierKthLowestLimitAbsoluteSpacing', null);\n }\n } else {\n setValue('outlierMode', null);\n setValue('outlierStandardDeviations', null);\n setValue('outlierKthLowestLimit', null);\n setValue('outlierKthLowestLimitRelativeSpacing', null);\n setValue('outlierKthLowestLimitAbsoluteSpacing', null);\n }\n },\n [\n outlierSettings.outlierKthLowestLimit,\n outlierSettings.outlierKthLowestLimitAbsoluteSpacing,\n outlierSettings.outlierKthLowestLimitRelativeSpacing,\n outlierSettings.outlierMode,\n outlierSettings.outlierStandardDeviations,\n setValue,\n ]\n );\n\n const setAutoPricingDefaults = useCallback(() => {\n if (!netProceedsFloor) {\n const proposedFloor = unitNetProceeds\n ? // If we have a non-zero list-price, we want the min of listprice or unitCost\n Math.min(\n unitNetProceeds,\n listing?.unitCst?.amt ??\n listing?.faceValue?.amt ??\n Number.MAX_SAFE_INTEGER\n )\n : // Else just use the unitCost\n (listing?.unitCst?.amt ?? listing?.faceValue?.amt ?? null);\n\n setValue('netProceedsFloor', proposedFloor);\n }\n\n // If this or any higher level don't have, set the default\n if (\n !undercutMode &&\n !eventPricingSettings?.undercutMode &&\n !accountPricingSettings?.undercutMode\n ) {\n setValue('undercutMode', undercutMode);\n setValue('undercutAbsoluteAmount', undercutAbsoluteAmount);\n setValue('undercutRelativeAmount', undercutRelativeAmount);\n }\n\n // If this or any higher level don't have, set the default\n if (\n !compListingMode &&\n !eventPricingSettings?.compListingMode &&\n !accountPricingSettings?.compListingMode\n ) {\n setValue('compListingMode', compListingMode);\n setValue('compListingFloor', compListingFloor);\n setValue('compListingCeiling', compListingCeiling);\n }\n }, [\n accountPricingSettings?.compListingMode,\n accountPricingSettings?.undercutMode,\n compListingCeiling,\n compListingFloor,\n compListingMode,\n eventPricingSettings?.compListingMode,\n eventPricingSettings?.undercutMode,\n listing?.faceValue?.amt,\n listing?.unitCst?.amt,\n netProceedsFloor,\n setValue,\n undercutAbsoluteAmount,\n undercutMode,\n undercutRelativeAmount,\n unitNetProceeds,\n ]);\n\n const applySectionRowFilterCompListingChanges = useCallback(\n (\n newSectionIdFilter: number[],\n sections: SectionInfo[],\n compListingSelectedSectionSettingsNew?:\n | SelectedSectionSettingsWithOptionals\n | null\n | undefined\n ) => {\n // If sectionIdFilter is empty, we should disable the compListingOnlyForSelectedSectionsEnabled\n // and revert back to QualitScore mode. When users add section filters, we should enable\n // compListingOnlyForSelectedSectionsEnabled and put the mode to SameEvent only on when the first\n // section is added. If the user swaps the comp mode after the first section we don't want to keep\n // forcing them back into SameEvent mode.\n if (newSectionIdFilter.length === 0 && sections.length > 0) {\n onCompListingChange({\n compListingSelectedSectionSettingsNew,\n compListingModeNew: defaultCompListingMode,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n } else {\n if (newSectionIdFilter.length === 1 && sections.length === 0) {\n onCompListingChange({\n compListingSelectedSectionSettingsNew,\n compListingModeNew: AutoPricingCompListingMode.SameEvent,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n });\n\n return;\n }\n\n // Otherwise, just update the section filters and ensure the selectedSections flag is true\n onCompListingChange({\n compListingSelectedSectionSettingsNew,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n });\n }\n },\n [defaultCompListingMode, onCompListingChange]\n );\n\n const onCompListingSectionIdFilterChange = useCallback(\n (\n sectionId: number,\n selectedSections: SectionInfo[],\n section?: SectionInfo,\n listing?: Listing\n ) => {\n let newSectionIdFilter =\n compListingSelectedSectionSettings?.sectionIdFilter ?? [];\n\n let newRowIdFilter =\n compListingSelectedSectionSettings?.rowIdFilter ?? [];\n\n let newSectionRowIdFilter =\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {};\n\n if (newSectionIdFilter.includes(sectionId)) {\n newSectionIdFilter = newSectionIdFilter.filter(\n (id) => id !== sectionId\n );\n\n // Remove all the associated row ids for this section\n const section = selectedSections.find((s) => s.id === sectionId);\n if (section) {\n const rowIds = section.rows.map((r) => r.id);\n newRowIdFilter = newRowIdFilter.filter((id) => !rowIds.includes(id));\n }\n\n // Remove the sectionRow mapping so we don't display it in pills\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [sectionId]: omitted, ...updatedSectionRowIdFilter } =\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {};\n\n newSectionRowIdFilter = updatedSectionRowIdFilter;\n } else {\n newSectionIdFilter.push(sectionId);\n\n // If a section is present, add all the rows associated with the newly selected section\n if (\n hasDefaultFilterRowsFeature &&\n listing &&\n section &&\n listing.seating?.row\n ) {\n const { seating: listingSeating } = listing;\n const listingRow = listingSeating.row!;\n\n const matchingRow = section.rows.find(\n ({ id, name }) =>\n id === listingSeating.rowId ||\n name?.toLowerCase() === listingRow.toLowerCase()\n );\n\n if (matchingRow) {\n // Remove all the row filters associated with the section id\n const sectionRowIds = section.rows.map((r) => r.id);\n newRowIdFilter = [\n ...newRowIdFilter.filter(\n (rowId) => !sectionRowIds.includes(rowId)\n ),\n ];\n\n // Exclude all rows from section if the matching row has no ordinal\n if (matchingRow.ordinal == null) {\n newSectionRowIdFilter[section.id] = matchingRow.id.toString();\n return;\n }\n\n // Push all the row ids with an ordinal less than or equal to the matching row\n section.rows.forEach((row) => {\n if (row.ordinal == null || matchingRow.ordinal == null) return;\n if (row.ordinal <= matchingRow.ordinal) {\n newRowIdFilter.push(row.id);\n }\n });\n\n // Only store the highest ordinal row id to display in the pill\n newSectionRowIdFilter[section.id] = matchingRow.id.toString();\n }\n } else if (section) {\n // If listing or seating info is not present, add all the section rows as a filter\n const newRowIds = section.rows.map((r) => r.id);\n newRowIds.forEach((newRowId) => {\n if (!newRowIdFilter.includes(newRowId)) {\n newRowIdFilter.push(newRowId);\n }\n });\n }\n }\n\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter: newSectionIdFilter,\n rowIdFilter: newRowIdFilter,\n sectionRowIdFilter: newSectionRowIdFilter,\n };\n\n applySectionRowFilterCompListingChanges(\n newSectionIdFilter,\n selectedSections,\n compListingSelectedSectionSettingsNew\n );\n },\n [\n applySectionRowFilterCompListingChanges,\n compListingSelectedSectionSettings,\n hasDefaultFilterRowsFeature,\n ]\n );\n\n const onCompListingSectionZoneChange = useCallback(\n (sections: SectionInfo[], flipOnSameSections = true) => {\n let newSectionIdFilter =\n compListingSelectedSectionSettings?.sectionIdFilter ?? [];\n\n let newRowIdFilter =\n compListingSelectedSectionSettings?.rowIdFilter ?? [];\n\n const newSectionRowIdFilter =\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {};\n\n // If every section passed in already exists in prevSections then we should remove them entirely\n const completelyOverlap = sections.every((section) =>\n newSectionIdFilter.includes(section.id)\n );\n\n if (completelyOverlap && flipOnSameSections) {\n const sectionIdsToRemove = new Set(\n sections.map((section) => section.id)\n );\n\n newSectionIdFilter = newSectionIdFilter.filter(\n (id) => !sectionIdsToRemove.has(id)\n );\n\n // Remove all associated rows as well\n const rowIdsToRemove = sections\n .map((section) => section.rows.map((r) => r.id))\n .flat();\n\n const rowIdsToRemoveSet = new Set(rowIdsToRemove);\n\n newRowIdFilter = newRowIdFilter.filter(\n (rowId) => !rowIdsToRemoveSet.has(rowId)\n );\n\n // Update sectionRowIdFilters to remove the sections that have been removed\n sections.forEach((section) => {\n if (section.id in newSectionRowIdFilter) {\n delete newSectionRowIdFilter[section.id];\n }\n });\n } else {\n // Upsert of the new sections\n sections.forEach((section) => {\n if (section.id in newSectionRowIdFilter) {\n return;\n }\n\n newSectionIdFilter.push(section.id);\n if (hasDefaultFilterRowsFeature && listing && listing.seating?.row) {\n const { seating: listingSeating } = listing;\n const listingRow = listingSeating.row!;\n\n const matchingRow = section.rows.find(\n ({ id, name }) =>\n id === listingSeating.rowId ||\n name?.toLowerCase() === listingRow.toLowerCase()\n );\n\n if (matchingRow) {\n // Remove all the row filters associated with the section id\n const sectionRowIds = section.rows.map((r) => r.id);\n newRowIdFilter = [\n ...newRowIdFilter.filter(\n (rowId) => !sectionRowIds.includes(rowId)\n ),\n ];\n\n // Exclude all rows from section if the matching row has no ordinal\n if (matchingRow.ordinal == null) {\n newSectionRowIdFilter[section.id] = matchingRow.id.toString();\n return;\n }\n\n // Push all the row ids with an ordinal less than or equal to the matching row\n section.rows.forEach((row) => {\n if (row.ordinal == null || matchingRow.ordinal == null) return;\n if (row.ordinal <= matchingRow.ordinal) {\n newRowIdFilter.push(row.id);\n }\n });\n\n // Only store the highest ordinal row id to display in the pill\n newSectionRowIdFilter[section.id] = matchingRow.id.toString();\n }\n } else {\n // If listing or seating info is not present, add all the section rows as a filter\n const newRowIds = section.rows.map((r) => r.id);\n newRowIds.forEach((newRowId) => {\n if (!newRowIdFilter.includes(newRowId)) {\n newRowIdFilter.push(newRowId);\n }\n });\n }\n });\n }\n\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter: newSectionIdFilter,\n rowIdFilter: newRowIdFilter,\n sectionRowIdFilter: newSectionRowIdFilter,\n };\n\n applySectionRowFilterCompListingChanges(\n newSectionIdFilter,\n sections,\n compListingSelectedSectionSettingsNew\n );\n },\n [\n applySectionRowFilterCompListingChanges,\n compListingSelectedSectionSettings,\n hasDefaultFilterRowsFeature,\n listing,\n ]\n );\n\n const hasChanges = useCallback(\n (listingForm: ListingDetailsUpdateInput) => {\n // Make sure we only send back the settable props\n if (\n formState.defaultValues?.autoPricingEnabled !==\n listingForm.autoPricingEnabled ||\n formState.defaultValues?.netProceedsFloor !==\n listingForm.netProceedsFloor ||\n formState.defaultValues?.compListingMode !==\n listingForm.compListingMode ||\n formState.defaultValues?.compListingFloor !==\n listingForm.compListingFloor ||\n formState.defaultValues?.compListingCeiling !==\n listingForm.compListingCeiling ||\n formState.defaultValues?.compListingQuantityScoreAdjustmentEnabled !==\n listingForm.compListingQuantityScoreAdjustmentEnabled ||\n formState.defaultValues\n ?.compListingQuantityScoreAdjustmentOverrideJson !==\n listingForm.compListingQuantityScoreAdjustmentOverrideJson ||\n formState.defaultValues?.compListingOnlyForSameZoneEnabled !==\n listingForm.compListingOnlyForSameZoneEnabled ||\n formState.defaultValues?.compListingOnlyForSelectedSectionsEnabled !==\n listingForm.compListingOnlyForSelectedSectionsEnabled ||\n formState.defaultValues?.compListingExcludeFanInventory !==\n listingForm.compListingExcludeFanInventory ||\n formState.defaultValues?.compListingExcludeDefects !==\n listingForm.compListingExcludeDefects ||\n !isEqual(\n formState.defaultValues?.compListingSelectedSectionSettings,\n listingForm?.compListingSelectedSectionSettings\n ) ||\n formState.defaultValues?.undercutMode !== listingForm.undercutMode ||\n formState.defaultValues?.undercutAbsoluteAmount !==\n listingForm.undercutAbsoluteAmount ||\n formState.defaultValues?.undercutRelativeAmount !==\n listingForm.undercutRelativeAmount ||\n formState.defaultValues?.circuitBreakerMaxDiscountVelocityPercent !==\n listingForm.circuitBreakerMaxDiscountVelocityPercent ||\n formState.defaultValues\n ?.circuitBreakerMaxDiscountVelocityTicksInHours !==\n listingForm.circuitBreakerMaxDiscountVelocityTicksInHours ||\n formState.defaultValues?.circuitBreakerMinCompListingCount !==\n listingForm.circuitBreakerMinCompListingCount ||\n formState.defaultValues?.circuitBreakerRelativeCeiling !==\n listingForm.circuitBreakerRelativeCeiling ||\n formState.defaultValues?.circuitBreakerRelativeFloor !==\n listingForm.circuitBreakerRelativeFloor ||\n formState.defaultValues?.outlierMode !== listingForm.outlierMode ||\n formState.defaultValues?.outlierStandardDeviations !==\n listingForm.outlierStandardDeviations ||\n formState.defaultValues?.outlierKthLowestLimit !==\n listingForm.outlierKthLowestLimit ||\n formState.defaultValues?.outlierKthLowestLimitRelativeSpacing !==\n listingForm.outlierKthLowestLimitRelativeSpacing ||\n formState.defaultValues?.outlierKthLowestLimitAbsoluteSpacing !==\n listingForm.outlierKthLowestLimitAbsoluteSpacing\n ) {\n return true;\n }\n },\n [\n formState.defaultValues?.autoPricingEnabled,\n formState.defaultValues?.netProceedsFloor,\n formState.defaultValues?.compListingMode,\n formState.defaultValues?.compListingFloor,\n formState.defaultValues?.compListingCeiling,\n formState.defaultValues?.compListingQuantityScoreAdjustmentEnabled,\n formState.defaultValues?.compListingQuantityScoreAdjustmentOverrideJson,\n formState.defaultValues?.compListingOnlyForSameZoneEnabled,\n formState.defaultValues?.compListingOnlyForSelectedSectionsEnabled,\n formState.defaultValues?.compListingExcludeFanInventory,\n formState.defaultValues?.compListingExcludeDefects,\n formState.defaultValues?.compListingSelectedSectionSettings,\n formState.defaultValues?.undercutMode,\n formState.defaultValues?.undercutAbsoluteAmount,\n formState.defaultValues?.undercutRelativeAmount,\n formState.defaultValues?.circuitBreakerMaxDiscountVelocityPercent,\n formState.defaultValues?.circuitBreakerMaxDiscountVelocityTicksInHours,\n formState.defaultValues?.circuitBreakerMinCompListingCount,\n formState.defaultValues?.circuitBreakerRelativeCeiling,\n formState.defaultValues?.circuitBreakerRelativeFloor,\n formState.defaultValues?.outlierMode,\n formState.defaultValues?.outlierStandardDeviations,\n formState.defaultValues?.outlierKthLowestLimit,\n formState.defaultValues?.outlierKthLowestLimitRelativeSpacing,\n formState.defaultValues?.outlierKthLowestLimitAbsoluteSpacing,\n ]\n );\n\n const onCompListingModeChange = useCallback(\n (mode: AutoPricingCompListingMode | null) => {\n clearErrors('compListingFloor');\n\n if (!mode) {\n onCompListingChange({\n compListingModeNew: null,\n compListingFloorNew: null,\n compListingCeilingNew: null,\n });\n return;\n }\n\n onCompListingChange({\n compListingModeNew: mode,\n // Reset flag on mode change\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n\n if (mode === AutoPricingCompListingMode.ParentListing) {\n onUndercutChange(AutoPricingUndercutMode.Simple);\n }\n },\n [clearErrors, onCompListingChange, onUndercutChange]\n );\n\n const onSelectedSectionsChange = useCallback(\n (selectedSections: SectionInfo[]) => {\n // Restructure the id filters.\n const sectionIdFilter = selectedSections.map((s) => s.id);\n const selectedRowIds = selectedSections\n .flatMap(({ rows }) => rows)\n .map(({ id }) => id);\n const rowIdFilter = [];\n if (isEmpty(compListingSelectedSectionSettings?.rowIdFilter)) {\n rowIdFilter.push(...selectedRowIds);\n } else {\n rowIdFilter.push(\n ...(compListingSelectedSectionSettings?.rowIdFilter?.filter((rowId) =>\n selectedRowIds.includes(rowId)\n ) ?? [])\n );\n }\n const sectionRowIdFilter = pickBy(\n Object.assign(\n {},\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {}\n ),\n (_, key) => sectionIdFilter.includes(parseInt(key))\n );\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter,\n rowIdFilter,\n sectionRowIdFilter,\n };\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n compListingSelectedSectionSettingsNew,\n });\n },\n [compListingSelectedSectionSettings, onCompListingChange]\n );\n\n return {\n canSetPrice,\n canAutoPrice,\n uiCurrency,\n currencyNumberFormat,\n showAutoPricingSettings: !(listing?.isDeleted || !canSetPrice),\n\n autoPricingEnabled,\n onResetSettings,\n onResetAdvanceSettings,\n setAutoPricingDefaults,\n eventPricingSettings,\n accountPricingSettings,\n event,\n\n ...circuitBreakerSettings,\n ...compListingSettings,\n ...undercutSettings,\n ...outlierSettings,\n\n onUndercutChange,\n onCompListingChange,\n onCircuitBreakerChange,\n onOutlierChange,\n onCompListingSectionIdFilterChange,\n onCompListingSectionZoneChange,\n onCompListingModeChange,\n onSelectedSectionsChange,\n\n skipAdvancePricing,\n skipAutoPricing,\n skipCompListing,\n skipPriceProtection,\n skipUndercut,\n hasChanges,\n };\n};\n","import { FormEvent, useCallback } from 'react';\nimport { UpDownComboButton } from 'src/core/ui';\nimport { SectionInfo } from 'src/WebApiController';\n\nexport type SectionFilterRowNudgerProps = {\n disabled?: boolean;\n selectedSections: SectionInfo[];\n rowIdFilters?: number[];\n sectionRowIdFilters?: { [key: string]: string };\n isCondensedView?: boolean;\n applyRowFilterChanges: (\n rowIdFiltersNew: number[],\n sectionRowIdFiltersNew: {\n [key: string]: string;\n }\n ) => void;\n};\nexport const SectionFilterRowNudger = ({\n disabled,\n selectedSections,\n rowIdFilters,\n sectionRowIdFilters,\n isCondensedView,\n applyRowFilterChanges,\n}: SectionFilterRowNudgerProps) => {\n const handleNudgeRow = useCallback(\n (isUp: boolean) => {\n let newRowIdFilters = [...(rowIdFilters ?? [])];\n const newSectionRowIdFilters = { ...(sectionRowIdFilters ?? {}) };\n\n let hasChanged = false;\n\n // for each section row id filters...\n Object.entries(newSectionRowIdFilters).map(([sectionId, rowId]) => {\n const sid = Number(sectionId);\n const rid = Number(rowId);\n\n const section = selectedSections.find((s) => s.id === sid);\n\n if (section) {\n const row = section.rows.find((r) => r.id === rid);\n if (row && row.ordinal != null) {\n const nextOrdinal = isUp ? row.ordinal + 1 : row.ordinal - 1;\n\n if (nextOrdinal >= 0) {\n // We purposely not checking for nextOrdinal < section.rows.length in case the ordinal is not 0 or 1 base\n // it's more robust to just find the row matching the next ordinal at this point\n\n // try to find the next row\n const nextRow = section.rows.find(\n (r) => r.ordinal === nextOrdinal\n );\n\n if (nextRow) {\n // Great, we found it, updating the rowIdFilters and sectionRowIdFilters\n\n if (isUp) {\n // we only need to add nextrow id if we're going up\n newRowIdFilters.push(nextRow.id);\n } else {\n // we only need to remove row ids if we're going down\n newRowIdFilters = newRowIdFilters.filter(\n (rid) => rid != row.id\n );\n }\n\n newSectionRowIdFilters[sectionId] = nextRow.id.toString();\n\n hasChanged = true;\n }\n }\n }\n }\n });\n\n if (hasChanged) {\n applyRowFilterChanges(newRowIdFilters, newSectionRowIdFilters);\n }\n },\n [applyRowFilterChanges, rowIdFilters, sectionRowIdFilters, selectedSections]\n );\n\n const handleNudgeUp = useCallback(\n (e: FormEvent) => {\n e.preventDefault();\n e.stopPropagation();\n handleNudgeRow(true);\n },\n [handleNudgeRow]\n );\n\n const handleNudgeDown = useCallback(\n (e: FormEvent) => {\n e.preventDefault();\n e.stopPropagation();\n handleNudgeRow(false);\n },\n [handleNudgeRow]\n );\n\n return (\n \n );\n};\n","import { useMemo } from 'react';\nimport { FilterPillList } from 'src/components/common/FilterPill/FilterPillList';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useListingAutoPricingSettings } from 'src/modals/ListingDetails/components/useListingAutoPricingSettings';\nimport { Feature, Listing } from 'src/WebApiController';\n\nimport { SectionFilterRowNudger } from './SectionFilterRowNudger';\n\nexport const AutoPricingSectionRowIdFilter = ({\n listing,\n disabled,\n}: {\n listing?: Listing | null;\n disabled?: boolean;\n}) => {\n const { venueMapInfo } = useEventMapContext();\n const hasSimplifiedPricingV2Feature = useUserHasFeature(\n Feature.SimplifiedAutoPricingUiV2\n );\n\n const {\n onCompListingChange,\n onCompListingSectionIdFilterChange,\n compListingSelectedSectionSettings,\n } = useListingAutoPricingSettings(listing);\n\n const selectedSections = useMemo(() => {\n const formSectionFilterIds =\n compListingSelectedSectionSettings?.sectionIdFilter ?? [];\n return (\n venueMapInfo?.sections.filter((section) => {\n return formSectionFilterIds.includes(section.id);\n }) ?? []\n );\n }, [\n compListingSelectedSectionSettings?.sectionIdFilter,\n venueMapInfo?.sections,\n ]);\n\n const rowIdFilters = useMemo(() => {\n return compListingSelectedSectionSettings?.rowIdFilter ?? [];\n }, [compListingSelectedSectionSettings]);\n\n const sectionRowIdFilters = useMemo(() => {\n return compListingSelectedSectionSettings?.sectionRowIdFilter ?? {};\n }, [compListingSelectedSectionSettings]);\n\n const applyCompListingChanges = (\n rowIdFilters: number[],\n sectionRowIdFilters: { [x: string]: string }\n ) => {\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter:\n compListingSelectedSectionSettings?.sectionIdFilter ?? [],\n rowIdFilter: Array.from(new Set(rowIdFilters)),\n sectionRowIdFilter: sectionRowIdFilters,\n };\n\n onCompListingChange({\n compListingSelectedSectionSettingsNew,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n });\n };\n\n return (\n \n \n {hasSimplifiedPricingV2Feature &&\n !!Object.entries(sectionRowIdFilters).length && (\n \n )}\n \n );\n};\n","import { head, uniqBy } from 'lodash-es';\nimport { useCallback, useMemo } from 'react';\nimport { AutoPricingSectionRowIdFilter } from 'src/components/AutoPricing/components/AutoPricingSectionRowIdFilter';\nimport { EventVenueMap } from 'src/components/Events/VenueMap/EventVenueMap';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { shared, vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { getSectionInfoDisplay } from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { filterSectionByZone } from 'src/utils/venueConfigUtils';\nimport { ListingDetails, SectionInfo } from 'src/WebApiController';\n\nexport type SectionSelectorProps = {\n sectionIds: number[];\n disabledSectionIds?: number[];\n onSelectedSectionsChange: (selectedSections: SectionInfo[]) => void;\n};\n\nexport const SectionSelector = ({\n sectionIds,\n disabledSectionIds,\n onSelectedSectionsChange,\n}: SectionSelectorProps) => {\n const { venueMapInfo } = useEventMapContext();\n const { posEntity: listing } = useActivePosEntityContext();\n\n const selectedSections = useMemo(() => {\n if (venueMapInfo) {\n return venueMapInfo.sections\n .filter((section) => sectionIds.includes(section.id))\n .toSorted((a, b) => a.name.localeCompare(b.name));\n }\n return [];\n }, [sectionIds, venueMapInfo]);\n\n const selectedSectionIds = useMemo(() => {\n return selectedSections.map((s) => s.id);\n }, [selectedSections]);\n\n const getColor = useCallback(\n (info: {\n sectionId: number;\n rowId?: number;\n sectionName?: string;\n ticketClassId: number;\n isSelected: boolean;\n }) => {\n const isSectionDisabled = disabledSectionIds?.includes(info.sectionId);\n return {\n stroke: isSectionDisabled\n ? vars.color.backgroundDisabled\n : vars.color.textBrand,\n fill: isSectionDisabled\n ? vars.color.backgroundDisabled\n : info.isSelected\n ? vars.color.backgroundBrandSeatmap\n : vars.color.backgroundPrimary,\n textColor: isSectionDisabled\n ? vars.color.textDisabled\n : vars.color.textStrong,\n };\n },\n [disabledSectionIds]\n );\n\n const onSectionHovered = useCallback(\n (hoveredSection: SectionInfo) => {\n if (disabledSectionIds?.includes(hoveredSection.id)) {\n return null;\n }\n\n return getSectionInfoDisplay(\n hoveredSection,\n [],\n venueMapInfo?.sectionScores\n );\n },\n [disabledSectionIds, venueMapInfo?.sectionScores]\n );\n\n const onShiftSelect = useCallback(\n (section: SectionInfo) => {\n // We are using the ticketClassId to group the sections\n const selectedClassId = head(\n section?.rows\n ?.map(({ tktClass: ticketClass }) => ticketClass?.id)\n .filter((id) => !!id)\n );\n const classSections =\n venueMapInfo?.sections?.filter(filterSectionByZone(selectedClassId)) ||\n [];\n\n const classSectionIds = classSections.map(({ id }) => id);\n if (selectedSections.findIndex(({ id }) => id === section.id) > -1) {\n const updated = selectedSections.filter(\n ({ id }) => !classSectionIds.includes(id)\n );\n onSelectedSectionsChange(updated);\n } else {\n const updated = uniqBy(\n selectedSections.concat(classSections),\n 'id'\n ).toSorted((a, b) => a.name.localeCompare(b.name));\n onSelectedSectionsChange(updated);\n }\n },\n [onSelectedSectionsChange, selectedSections, venueMapInfo?.sections]\n );\n\n const onSingleSelect = useCallback(\n (section: SectionInfo) => {\n if (disabledSectionIds?.includes(section.id)) {\n return;\n }\n\n const idx = selectedSections.findIndex(({ id }) => id === section.id);\n\n const selectedSectionsNew =\n idx === -1\n ? [...selectedSections, section]\n : selectedSections.filter(({ id }) => id !== section.id);\n onSelectedSectionsChange(\n selectedSectionsNew.toSorted((a, b) => a.name.localeCompare(b.name))\n );\n },\n [disabledSectionIds, onSelectedSectionsChange, selectedSections]\n );\n\n const onSectionSelected = useCallback(\n (e: MouseEvent, section: SectionInfo) => {\n e.preventDefault();\n e.stopPropagation();\n if (e.shiftKey) {\n onShiftSelect(section);\n return;\n }\n onSingleSelect(section);\n },\n [onSingleSelect, onShiftSelect]\n );\n\n const onToggleMirrors = useCallback(\n (mirrors: SectionInfo[], exclude?: boolean) => {\n if (exclude) {\n const idsToExclude = mirrors.map(({ id }) => id);\n const updated = uniqBy(\n selectedSections.filter(({ id }) => !idsToExclude.includes(id)),\n 'id'\n ).toSorted((a, b) => a.name.localeCompare(b.name));\n onSelectedSectionsChange(updated);\n } else {\n const updated = uniqBy(selectedSections.concat(mirrors), 'id').toSorted(\n (a, b) => a.name.localeCompare(b.name)\n );\n onSelectedSectionsChange(updated);\n }\n },\n [onSelectedSectionsChange, selectedSections]\n );\n\n return (\n <>\n \n \n \n
    \n \n
    \n\n \n \n \n \n \n \n \n );\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { ComponentProps, useEffect, useMemo } from 'react';\nimport { useList } from 'react-use';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Button, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionInfo } from 'src/WebApiController';\n\nimport * as styles from './SectionSelectDialog.css';\nimport { SectionSelector } from './SectionSelector';\n\nexport type SectionSelectDialogProps = ComponentProps & {\n initialSectionIds: number[];\n disabledSectionIds?: number[];\n onSave: (selectedSections: SectionInfo[]) => void;\n};\n\nexport const SectionSelectDialog = ({\n initialSectionIds,\n disabledSectionIds,\n onSave,\n onClosed,\n ...rest\n}: SectionSelectDialogProps) => {\n const [selectedSections, selectedSectionsMutations] = useList();\n const { venueMapInfo } = useEventMapContext();\n\n useEffect(() => {\n if (venueMapInfo?.sections) {\n const initialSections = venueMapInfo.sections.filter((section) =>\n initialSectionIds.includes(section.id)\n );\n selectedSectionsMutations.set(initialSections);\n }\n }, [\n JSON.stringify(initialSectionIds),\n JSON.stringify(venueMapInfo?.sections),\n ]);\n\n const selectedSectionIds = useMemo(() => {\n return selectedSections.map((s) => s.id);\n }, [selectedSections]);\n\n return (\n }\n footer={\n \n {selectedSections.length > 0 ? (\n selectedSectionsMutations.clear()}\n >\n \n \n ) : (\n \n )}\n \n {onClosed && }\n onSave(selectedSections)}\n >\n \n \n \n \n }\n onCancel={onClosed}\n >\n
    \n \n
    \n \n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { getCompQuantitiesOptions } from 'src/utils/inventoryUtils';\nimport {\n AutoPricingCompListingMode,\n SelectedSectionSettings,\n} from 'src/WebApiController';\n\nexport const useCompQuantitiesFilter = (\n compQuantityScoreOverrideJson: string | null | undefined,\n onCompListingChange: (input: {\n compListingModeNew?: AutoPricingCompListingMode | null;\n compListingFloorNew?: number | null;\n compListingCeilingNew?: number | null;\n compListingOnlyForSameZoneEnabledNew?: boolean | null;\n compListingOnlyForSelectedSectionsEnabledNew?: boolean | null;\n compListingQuantityScoreAdjustmentEnabledNew?: boolean | null;\n compListingExcludeFanInventoryNew?: boolean | null;\n compListingQuantityScoreAdjustmentOverrideJsonNew?: string | null;\n compListingSelectedSectionSettingsNew?: SelectedSectionSettings | null;\n }) => void\n) => {\n const parsedQuantityOverridesJson = JSON.parse(\n compQuantityScoreOverrideJson || 'null'\n );\n const quantitiesFilterOptions = useMemo(() => getCompQuantitiesOptions(), []);\n const quantitiesFilterValue = useMemo(() => {\n const quantitiesFilter = parsedQuantityOverridesJson?.quantitiesFilter;\n if (!quantitiesFilter) {\n return [];\n }\n // exactMatches and greaterThanOrEqualTo\n const { exact, gte } = quantitiesFilter;\n\n const eligibleQuantities = Object.values(quantitiesFilterOptions)\n .filter((value) => !isNaN(parseInt(value)))\n .map((value) => parseInt(value));\n const selectedQuantities = eligibleQuantities.filter((quantity) => {\n if (((exact as number[]) ?? []).includes(quantity)) {\n return true;\n }\n if (gte != null && (gte as number) <= quantity) {\n return true;\n }\n return false;\n });\n return Object.values(quantitiesFilterOptions).filter((value) =>\n selectedQuantities.includes(parseInt(value))\n );\n }, [parsedQuantityOverridesJson?.quantitiesFilter, quantitiesFilterOptions]);\n\n const onUpdateQuantitiesFilter = useCallback(\n (values: string[]) => {\n const exact = [];\n let gte = null;\n for (const value of values) {\n const quantity = parseInt(value);\n if (value.indexOf('+') > -1) {\n gte = quantity;\n } else {\n if (!isNaN(quantity)) {\n exact.push(quantity);\n }\n }\n }\n\n const quantityOverrideJsonNew = {\n ...parsedQuantityOverridesJson,\n quantitiesFilter: { exact, gte },\n };\n\n onCompListingChange({\n compListingQuantityScoreAdjustmentOverrideJsonNew: JSON.stringify(\n quantityOverrideJsonNew\n ),\n });\n },\n [onCompListingChange, parsedQuantityOverridesJson]\n );\n\n return {\n quantitiesFilterValue,\n quantitiesFilterOptions,\n onUpdateQuantitiesFilter,\n };\n};\n","import { useEffect, useState } from 'react';\nimport { UndercutPriceSettingsMode } from 'src/utils/autoPricingUtils';\n\nexport const useUndercutAmountSettings = (\n undercutAbsoluteAmount?: number | null,\n undercutRelativeAmount?: number | null\n) => {\n const [undercutAbsoluteAmountMode, setUndercutAbsoluteAmountMode] = useState<\n UndercutPriceSettingsMode | undefined\n >(undefined);\n const [undercutRelativeAmountMode, setUndercutRelativeAmountMode] = useState<\n UndercutPriceSettingsMode | undefined\n >(undefined);\n\n useEffect(() => {\n const newUAMode =\n (undercutAbsoluteAmount ?? 0) >= 0\n ? UndercutPriceSettingsMode.Discount\n : UndercutPriceSettingsMode.Premium;\n if (newUAMode !== undercutAbsoluteAmountMode) {\n setUndercutAbsoluteAmountMode(newUAMode);\n }\n\n const newRAMode =\n (undercutRelativeAmount ?? 0) >= 0\n ? UndercutPriceSettingsMode.Discount\n : UndercutPriceSettingsMode.Premium;\n if (newRAMode !== undercutRelativeAmountMode) {\n setUndercutRelativeAmountMode(newRAMode);\n }\n }, [\n undercutAbsoluteAmount,\n undercutAbsoluteAmountMode,\n undercutRelativeAmount,\n undercutRelativeAmountMode,\n ]);\n\n return {\n undercutAbsoluteAmountMode,\n setUndercutAbsoluteAmountMode,\n undercutRelativeAmountMode,\n setUndercutRelativeAmountMode,\n };\n};\n","import { ChangeEvent, useMemo } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { PillList } from 'src/core/ui/PillList';\nimport { Slider } from 'src/core/ui/Slider';\nimport { Switch as CoreSwitch } from 'src/core/ui/Switch';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { SectionSelectDialog } from 'src/dialogs/SectionSelectDialog';\nimport { useAvailableAutopricingModes } from 'src/hooks/useAvailableAutopricingModes';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useCompQuantitiesFilter } from 'src/hooks/useCompQuantitiesFilter';\nimport { useUndercutAmountSettings } from 'src/hooks/useUndercutAmountSettings';\nimport { DetailGroup } from 'src/modals/common';\nimport { RestrictSelectionType } from 'src/modals/ListingDetails/components/PricingSection/AutoPricingSection.types';\nimport { EditIcon, IconsFill, PlusIcon, ResetIcon } from 'src/svgs/Viagogo';\nimport {\n convertSliderValueFromServer,\n convertSliderValueToServer,\n getUndercutPriceRepresentingMode,\n SLIDER_MAX,\n SLIDER_MIN,\n UNDERCUT_PRICE_MODE_OPTIONS,\n UndercutPriceSettingsMode,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { getCompleteEventConfigScoreOverrides } from 'src/utils/seatScoreUtils';\nimport {\n AutoPricingCompListingMode,\n AutoPricingUndercutMode,\n ListingGroup,\n} from 'src/WebApiController';\n\nimport * as styles from './SectionRowIdFilter.css';\nimport { useListingGroupAutoPricingSettings } from './useListingGroupAutoPricingSettings';\n\nexport const AutoPricingSettingsSection = ({\n listingGroup,\n disabled,\n}: {\n listingGroup?: ListingGroup;\n disabled?: boolean;\n}) => {\n const sectionSelectDialog = useBasicDialog();\n const {\n uiCurrency,\n\n onResetSettings,\n eventPricingSettings,\n accountPricingSettings,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingSelectedSectionSettings,\n compListingOnlyForSelectedSectionsEnabled,\n compListingOnlyForSameZoneEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n\n compListingFloorError,\n compListingSelectedSectionError,\n undercutAbsoluteAmountError,\n undercutRelativeAmountError,\n\n onUndercutChange,\n onCompListingChange,\n\n resetListingAutoPricingSettings,\n setResetListingAutoPricingSettings,\n } = useListingGroupAutoPricingSettings(listingGroup);\n\n const {\n undercutAbsoluteAmountMode,\n setUndercutAbsoluteAmountMode,\n undercutRelativeAmountMode,\n setUndercutRelativeAmountMode,\n } = useUndercutAmountSettings(undercutAbsoluteAmount, undercutRelativeAmount);\n\n const parsedQuantityOverridesJson = JSON.parse(\n compListingQuantityScoreAdjustmentOverrideJson || 'null'\n );\n const quantityFilterValue = parsedQuantityOverridesJson?.quantityFilter;\n\n const { activeConfigOverride, venueMapInfo, venueMapsByScoreModelQuery } =\n useEventMapContext();\n\n const defaultScoreOverrides = useMemo(() => {\n // In the backend, if AVG scores are missing, then we always fallback to MVG, even if AVG is explicitly selected\n return (\n venueMapsByScoreModelQuery?.data?.AdvancedVenueGeometry?.sectionScores ??\n venueMapsByScoreModelQuery?.data?.MergedVenueGeometry?.sectionScores ??\n venueMapsByScoreModelQuery?.data?.VenueGeometry?.sectionScores\n );\n }, [\n venueMapsByScoreModelQuery?.data?.AdvancedVenueGeometry?.sectionScores,\n venueMapsByScoreModelQuery?.data?.MergedVenueGeometry?.sectionScores,\n venueMapsByScoreModelQuery?.data?.VenueGeometry?.sectionScores,\n ]);\n\n const scores = getCompleteEventConfigScoreOverrides(\n defaultScoreOverrides,\n activeConfigOverride?.scoreOverrides,\n false\n );\n\n const {\n quantitiesFilterOptions,\n quantitiesFilterValue,\n onUpdateQuantitiesFilter,\n } = useCompQuantitiesFilter(\n compListingQuantityScoreAdjustmentOverrideJson,\n onCompListingChange\n );\n\n const restrictSelection = Boolean(\n compListingOnlyForSameZoneEnabled ||\n compListingOnlyForSelectedSectionsEnabled\n );\n\n const showCompListingSettingsDetails = !(\n !compListingMode ||\n compListingMode === AutoPricingCompListingMode.SameZone ||\n compListingMode === AutoPricingCompListingMode.SameEvent ||\n compListingMode === AutoPricingCompListingMode.ParentListing\n );\n const showCompListingRestictSelectionDetails =\n compListingMode != null &&\n (compListingMode === AutoPricingCompListingMode.QualityScore ||\n compListingMode === AutoPricingCompListingMode.SameEvent ||\n compListingMode === AutoPricingCompListingMode.SameZone);\n\n const {\n compListingModes,\n compListingModesDisabled,\n undercutModes,\n undercutModesDisabled,\n restrictSelectionTypes,\n } = useAvailableAutopricingModes(\n true,\n undercutMode,\n compListingMode,\n Boolean(scores?.some((s) => s.score)),\n false,\n false,\n compListingOnlyForSelectedSectionsEnabled\n );\n\n const selectedSectionsPills = useMemo(\n () =>\n compListingSelectedSectionSettings?.sectionIdFilter\n ?.map((sectionId) => {\n const section = venueMapInfo?.sections.find(\n (section) => sectionId === section.id\n );\n return {\n value: section?.id.toString() ?? '',\n display: section?.name ?? '',\n };\n })\n .filter((info) => info.value && info.display) ?? [],\n [\n compListingSelectedSectionSettings?.sectionIdFilter,\n venueMapInfo?.sections,\n ]\n );\n\n const isDealScoreMode =\n (undercutMode ??\n eventPricingSettings?.undercutMode ??\n accountPricingSettings?.undercutMode) === AutoPricingUndercutMode.Deal;\n\n return (\n <>\n \n \n
    \n \n
    \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n if (isChecked !== resetListingAutoPricingSettings) {\n setResetListingAutoPricingSettings(isChecked);\n }\n }}\n />\n
    \n
    \n \n \n \n \n \n
    \n \n
    \n e.stopPropagation()}\n onChange={(v) => {\n if (v) {\n onCompListingChange({\n compListingModeNew: v as AutoPricingCompListingMode,\n });\n } else {\n onCompListingChange({\n compListingModeNew: null,\n compListingFloorNew: null,\n compListingCeilingNew: null,\n });\n }\n\n if (v === AutoPricingCompListingMode.ParentListing) {\n onUndercutChange(AutoPricingUndercutMode.Simple);\n }\n }}\n />\n
    \n
    \n\n {showCompListingSettingsDetails && (\n <>\n \n \n
    \n \n
    \n \n {\n const v = parseFloat(e.target.value);\n if (!isNaN(v)) {\n if (\n v >= SLIDER_MIN * 100 &&\n v <= SLIDER_MAX * 100 &&\n convertSliderValueToServer(v) < compListingCeiling\n ) {\n onCompListingChange({\n compListingFloorNew: convertSliderValueToServer(v),\n });\n }\n }\n }}\n postfixDisplay=\"%\"\n placeholder={\n compListingMode == null\n ? eventPricingSettings?.compListingFloor?.toString() ??\n accountPricingSettings?.compListingFloor?.toString() ??\n undefined\n : undefined\n }\n />\n \n
    \n \n
    \n \n {\n const v = parseFloat(e.target.value);\n if (!isNaN(v)) {\n if (\n v >= SLIDER_MIN * 100 &&\n v <= SLIDER_MAX * 100 &&\n convertSliderValueToServer(v) > compListingFloor\n ) {\n onCompListingChange({\n compListingCeilingNew: convertSliderValueToServer(v),\n });\n }\n }\n }}\n postfixDisplay=\"%\"\n placeholder={\n compListingMode == null\n ? eventPricingSettings?.compListingCeiling?.toString() ??\n accountPricingSettings?.compListingCeiling?.toString() ??\n undefined\n : undefined\n }\n />\n \n
    \n \n
    \n
    \n
    \n \n \n (\n {roundToPrecision(val, 0)}%\n )}\n onValueChange={([floor, ceil]) => {\n onCompListingChange({\n compListingFloorNew: convertSliderValueToServer(floor),\n compListingCeilingNew: convertSliderValueToServer(ceil),\n });\n }}\n />\n
    \n \n
    \n
    \n \n \n \n )}\n \n }\n style={{ width: '100%' }}\n >\n \n \n \n\n {showCompListingRestictSelectionDetails && (\n \n }>\n ) => e.stopPropagation()}\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (isChecked) {\n if (\n !compListingOnlyForSameZoneEnabled &&\n !compListingOnlyForSelectedSectionsEnabled\n ) {\n // set zone by default\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: true,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n }\n } else {\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n }\n }}\n />\n \n {restrictSelection && (\n \n
    \n \n
    \n e.stopPropagation()}\n onChange={(v) => {\n if (v === RestrictSelectionType.SameZone) {\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: true,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n } else {\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n });\n }\n }}\n />\n
    \n )}\n {compListingOnlyForSelectedSectionsEnabled && (\n \n \n {compListingSelectedSectionSettings?.sectionIdFilter?.length ? (\n <>\n \n \n \n }\n textContentId={ContentId.EditSections}\n onClick={sectionSelectDialog.launchDialog}\n disabled={disabled}\n style={{ paddingLeft: 0, paddingRight: 0 }}\n />\n \n ) : (\n \n }\n textContentId={ContentId.SelectSections}\n onClick={sectionSelectDialog.launchDialog}\n disabled={disabled}\n style={{ padding: 0 }}\n />\n )}\n \n \n )}\n
    \n )}\n \n \n \n \n \n
    \n \n
    \n e.stopPropagation()}\n onChange={(v) => {\n if (v) {\n onUndercutChange(v as AutoPricingUndercutMode);\n } else {\n onUndercutChange(null, null, null);\n }\n }}\n />\n
    \n \n
    \n
    \n
    \n {isDealScoreMode && (\n
    \n \n
    \n )}\n \n \n {\n if (!value) return;\n\n const mode = value as UndercutPriceSettingsMode;\n setUndercutRelativeAmountMode(mode);\n\n if (undercutRelativeAmount) {\n const curAmountAbs = Math.abs(undercutRelativeAmount);\n onUndercutChange(\n undefined,\n undefined,\n getUndercutPriceRepresentingMode(curAmountAbs, mode)\n );\n }\n }}\n />\n\n
    \n \n
    \n\n \n {\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n const relativeValue = Math.min(v, 100) / 100;\n if (\n undercutRelativeAmountMode ===\n UndercutPriceSettingsMode.Premium\n ) {\n onUndercutChange(undefined, undefined, -relativeValue);\n } else {\n onUndercutChange(undefined, undefined, relativeValue);\n }\n } else {\n onUndercutChange(undefined, undefined, null);\n }\n }}\n />\n \n
    \n \n
    \n {\n if (!value) return;\n\n const mode = value as UndercutPriceSettingsMode;\n setUndercutAbsoluteAmountMode(mode);\n\n if (undercutAbsoluteAmount) {\n const curAmountAbs = Math.abs(undercutAbsoluteAmount);\n onUndercutChange(\n undefined,\n getUndercutPriceRepresentingMode(curAmountAbs, mode)\n );\n }\n }}\n />\n
    \n \n
    \n \n {\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n if (\n undercutAbsoluteAmountMode ===\n UndercutPriceSettingsMode.Premium\n ) {\n onUndercutChange(undefined, -v);\n } else {\n onUndercutChange(undefined, v);\n }\n } else {\n onUndercutChange(undefined, null);\n }\n }}\n />\n \n
    \n
    \n \n }\n textContentId={ContentId.ResetSettings}\n onClick={onResetSettings}\n />\n \n\n {\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter: selectedSections.map((s) => s.id),\n rowIdFilter: compListingSelectedSectionSettings?.rowIdFilter ?? [],\n sectionRowIdFilter:\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {},\n };\n onCompListingChange({ compListingSelectedSectionSettingsNew });\n sectionSelectDialog.closeDialog();\n }}\n onClosed={sectionSelectDialog.closeDialog}\n />\n \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { DetailGroup, DetailSection, SectionContent } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ListingGroup } from 'src/WebApiController';\n\nimport { AdvancePricingSettings } from './AdvancePricingSettings';\nimport { AutoPricingSettingsSection } from './AutoPricingSettingsSection';\nimport { useListingGroupAutoPricingSettings } from './useListingGroupAutoPricingSettings';\n\nexport const AutoPricingSettings = ({\n listingGroup,\n}: {\n listingGroup?: ListingGroup;\n}) => {\n const { canAutoPrice } = useListingGroupAutoPricingSettings(listingGroup);\n\n if (!canAutoPrice) {\n return null;\n }\n\n return (\n <>\n }>\n \n {canAutoPrice ? (\n \n ) : (\n \n \n {!canAutoPrice ? (\n \n ) : (\n \n )}\n \n \n )}\n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { coalesceUndefinedOnly } from 'src/utils/miscUtils';\nimport {\n AutoPricingInputs,\n AutoPricingOutlierMode,\n} from 'src/WebApiController';\n\nexport interface OnOutlierSettingsChangeArgs {\n outlierModeNew: AutoPricingOutlierMode | null;\n outlierKthLowestLimitNew?: number | null;\n outlierKthLowestLimitRelativeSpacingNew?: number | null;\n outlierKthLowestLimitAbsoluteSpacingNew?: number | null;\n outlierStandardDeviationsNew?: number | null;\n}\n\nexport const useAutoPricingSettingsFormContext = () => {\n const methods = useFormContext();\n const { setValue, watch } = methods;\n\n const {\n outlierMode,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierStandardDeviations,\n } = watch();\n\n const onOutlierSettingsChange = useCallback(\n (input: OnOutlierSettingsChangeArgs) => {\n const {\n outlierModeNew,\n outlierKthLowestLimitNew,\n outlierKthLowestLimitRelativeSpacingNew,\n outlierKthLowestLimitAbsoluteSpacingNew,\n outlierStandardDeviationsNew,\n } = input;\n\n // Covers both null and undefined cases\n if (outlierModeNew !== undefined) {\n setValue(\n 'outlierMode',\n coalesceUndefinedOnly(outlierModeNew, outlierMode) ?? null\n );\n\n switch (outlierModeNew) {\n case AutoPricingOutlierMode.StandardDeviations:\n setValue(\n 'outlierStandardDeviations',\n coalesceUndefinedOnly(\n outlierStandardDeviationsNew,\n outlierStandardDeviations\n ) ?? null\n );\n setValue('outlierKthLowestLimit', null);\n setValue('outlierKthLowestLimitRelativeSpacing', null);\n setValue('outlierKthLowestLimitAbsoluteSpacing', null);\n break;\n case AutoPricingOutlierMode.KthLowest:\n setValue('outlierStandardDeviations', null);\n setValue(\n 'outlierKthLowestLimit',\n coalesceUndefinedOnly(\n outlierKthLowestLimitNew,\n outlierKthLowestLimit\n ) ?? null\n );\n\n setValue(\n 'outlierKthLowestLimitRelativeSpacing',\n coalesceUndefinedOnly(\n outlierKthLowestLimitRelativeSpacingNew,\n outlierKthLowestLimitRelativeSpacing\n ) ?? null\n );\n\n setValue(\n 'outlierKthLowestLimitAbsoluteSpacing',\n coalesceUndefinedOnly(\n outlierKthLowestLimitAbsoluteSpacingNew,\n outlierKthLowestLimitAbsoluteSpacing\n ) ?? null\n );\n break;\n case AutoPricingOutlierMode.SkipLogic:\n setValue('outlierStandardDeviations', null);\n setValue('outlierKthLowestLimit', null);\n setValue('outlierKthLowestLimitRelativeSpacing', null);\n setValue('outlierKthLowestLimitAbsoluteSpacing', null);\n }\n } else {\n setValue('outlierMode', null);\n setValue('outlierStandardDeviations', null);\n setValue('outlierKthLowestLimit', null);\n setValue('outlierKthLowestLimitRelativeSpacing', null);\n setValue('outlierKthLowestLimitAbsoluteSpacing', null);\n }\n },\n [\n setValue,\n outlierMode,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierStandardDeviations,\n ]\n );\n\n return {\n ...methods,\n onOutlierSettingsChange,\n };\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { Slider } from 'src/core/ui/Slider';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\n\nimport * as styles from '../AutoPricing.css';\nimport { useAutoPricingSettingsFormContext } from '../useAutoPricingSettingsFormContext';\n\nconst DEFAULT_COMP_LISTING_FLOOR = 1;\nconst DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR = 5;\n\nconst SLIDER_MIN = -1;\nconst SLIDER_MAX = 5;\n\nconst convertSliderValueToServer = (val: number) =>\n roundToPrecision(val / 100 + 1, 2);\nconst convertSliderValueFromServer = (val: number) => (val - 1) * 100;\n\nexport const AutoPricingCompFloorAndCeilingInput = ({\n disabled,\n}: {\n disabled: boolean;\n}) => {\n const { setValue, watch, formState } = useAutoPricingSettingsFormContext();\n\n const {\n compListingMode,\n compListingFloor: nullableCompListingFloor,\n compListingCeiling: nullableLCompListingCeiling,\n } = watch();\n\n const compListingFloor =\n nullableCompListingFloor ?? DEFAULT_COMP_LISTING_FLOOR;\n const compListingCeiling =\n nullableLCompListingCeiling ??\n DEFAULT_COMP_LISTING_FLOOR + DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR;\n\n const compListingFloorError = formState.errors.compListingFloor?.message;\n\n return (\n <>\n \n
    \n \n
    \n \n {\n const v = parseFloat(e.target.value);\n if (!isNaN(v)) {\n if (\n v >= SLIDER_MIN * 100 &&\n v <= SLIDER_MAX * 100 &&\n convertSliderValueToServer(v) < compListingCeiling\n ) {\n setValue('compListingFloor', convertSliderValueToServer(v));\n }\n }\n }}\n postfixDisplay=\"%\"\n />\n \n
    \n \n
    \n \n {\n const v = parseFloat(e.target.value);\n if (!isNaN(v)) {\n if (\n v >= SLIDER_MIN * 100 &&\n v <= SLIDER_MAX * 100 &&\n convertSliderValueToServer(v) > compListingFloor\n ) {\n setValue('compListingCeiling', convertSliderValueToServer(v));\n }\n }\n }}\n postfixDisplay=\"%\"\n />\n \n
    \n \n
    \n
    \n \n (\n {roundToPrecision(val, 0)}%\n )}\n onValueChange={([floor, ceil]) => {\n setValue('compListingFloor', convertSliderValueToServer(floor));\n setValue('compListingCeiling', convertSliderValueToServer(ceil));\n }}\n />\n
    \n \n
    \n
    \n \n \n );\n};\n","import { useCallback, useEffect, useMemo } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { COMP_LISTING_MODE_TO_FLUENT_CID } from 'src/utils/constants/contentIdMaps';\nimport { AutoPricingCompListingMode } from 'src/WebApiController';\n\nimport { useAutoPricingSettingsFormContext } from '../useAutoPricingSettingsFormContext';\n\nexport const AutoPricingCompListingModeSelector = ({\n allowSeatScoreCompListingMode,\n disabled,\n hideWhenOnlyComparableZonesModeIsAvailable,\n setIsOnlyComparableZonesModeAvailable,\n}: {\n allowSeatScoreCompListingMode: boolean;\n disabled: boolean;\n hideWhenOnlyComparableZonesModeIsAvailable?: boolean;\n setIsOnlyComparableZonesModeAvailable?: (valueNew: boolean) => void;\n}) => {\n const { formState, setValue, watch } = useAutoPricingSettingsFormContext();\n\n const initialCompListingMode = formState.defaultValues?.compListingMode;\n\n const { compListingMode } = watch();\n\n const { valueOptionsContent, valueOptionsDisabled } = useMemo(() => {\n const compListingModes: Record = {\n [AutoPricingCompListingMode.SameEvent]: ContentId.InComparableZones,\n };\n if (allowSeatScoreCompListingMode) {\n compListingModes[AutoPricingCompListingMode.QualityScore] =\n COMP_LISTING_MODE_TO_FLUENT_CID[\n AutoPricingCompListingMode.QualityScore\n ];\n }\n\n let compListingModesDisabled: Record | undefined =\n undefined;\n if (initialCompListingMode && !compListingModes[initialCompListingMode]) {\n const initialModeContentId =\n COMP_LISTING_MODE_TO_FLUENT_CID[initialCompListingMode];\n compListingModesDisabled = {\n [initialCompListingMode]: initialModeContentId,\n };\n compListingModes[initialCompListingMode] = initialModeContentId;\n }\n\n return {\n valueOptionsContent: compListingModes,\n valueOptionsDisabled: compListingModesDisabled,\n };\n }, [allowSeatScoreCompListingMode, initialCompListingMode]);\n\n const onCompListingModeChange = useCallback(\n (compListingModeNew: AutoPricingCompListingMode) => {\n setValue('compListingMode', compListingModeNew);\n\n if (compListingModeNew == AutoPricingCompListingMode.SameEvent) {\n setValue('compListingOnlyForSameZoneEnabled', false);\n setValue('compListingOnlyForSelectedSectionsEnabled', true);\n }\n },\n [setValue]\n );\n\n useEffect(() => {\n if (!compListingMode) {\n onCompListingModeChange(AutoPricingCompListingMode.SameEvent);\n }\n }, [compListingMode, onCompListingModeChange]);\n\n const useSelector =\n Object.keys(valueOptionsContent).length > 1 || valueOptionsDisabled;\n\n useEffect(() => {\n setIsOnlyComparableZonesModeAvailable?.(!useSelector);\n }, [setIsOnlyComparableZonesModeAvailable, useSelector]);\n\n return useSelector ? (\n e.stopPropagation()}\n onChange={(v) => onCompListingModeChange(v as AutoPricingCompListingMode)}\n />\n ) : (\n !hideWhenOnlyComparableZonesModeIsAvailable && (\n \n )\n );\n};\n","import { CSSProperties, useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { AutoPricingInputs, CompListingQuantity } from 'src/WebApiController';\n\nconst quantitiesOptions = [\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '10+',\n].reduce(\n (r, c) => {\n r[c] = c;\n return r;\n },\n {} as Record\n);\n\nexport const AutoPricingCompQuantitiesSelector = ({\n disabled,\n rootStyle,\n}: {\n disabled: boolean;\n rootStyle?: CSSProperties;\n}) => {\n const { setValue, watch } = useFormContext();\n\n const {\n compListingQuantityFilters,\n compListingQuantityScoreAdjustmentOverrideJson,\n } = watch();\n\n const parsedQuantityOverridesJson = useMemo(() => {\n return compListingQuantityScoreAdjustmentOverrideJson != null\n ? JSON.parse(compListingQuantityScoreAdjustmentOverrideJson)\n : null;\n }, [compListingQuantityScoreAdjustmentOverrideJson]);\n\n const derivedCompListingQuantityFilters =\n useMemo((): CompListingQuantity | null => {\n if (compListingQuantityFilters != null) {\n return compListingQuantityFilters;\n }\n\n if (parsedQuantityOverridesJson == null) {\n return null;\n }\n\n const { exact, gte } =\n parsedQuantityOverridesJson?.quantitiesFilter ?? {};\n return {\n exactQuantities: exact ?? [],\n greaterThanOrEqualToQuantity: gte,\n };\n }, [compListingQuantityFilters, parsedQuantityOverridesJson]);\n\n const selectedQuantitiesValues = useMemo(() => {\n if (!derivedCompListingQuantityFilters) {\n return [];\n }\n\n const { exactQuantities: exact, greaterThanOrEqualToQuantity: gte } =\n derivedCompListingQuantityFilters;\n\n const eligibleQuantities = Object.values(quantitiesOptions)\n .filter((value) => !isNaN(parseInt(value)))\n .map((value) => parseInt(value));\n const selectedQuantitiesInts = eligibleQuantities.filter((quantity) => {\n if (((exact as number[]) ?? []).includes(quantity)) {\n return true;\n }\n if (gte != null && (gte as number) <= quantity) {\n return true;\n }\n return false;\n });\n return Object.values(quantitiesOptions).filter((value) =>\n selectedQuantitiesInts.includes(parseInt(value))\n );\n }, [derivedCompListingQuantityFilters]);\n\n const handleOnChange = useCallback(\n (values: string[]) => {\n const exact = [];\n let gte: number | null = null;\n for (const value of values) {\n const quantity = parseInt(value);\n if (value.indexOf('+') > -1) {\n gte = quantity;\n } else {\n if (!isNaN(quantity)) {\n exact.push(quantity);\n }\n }\n }\n\n const compListingQuantityFiltersNew = {\n exactQuantities: exact,\n greaterThanOrEqualToQuantity: gte,\n };\n const compListingQuantityScoreAdjustmentOverrideJsonNew = JSON.stringify({\n ...parsedQuantityOverridesJson,\n quantitiesFilter: { exact, gte },\n });\n\n setValue('compListingQuantityFilters', compListingQuantityFiltersNew);\n setValue(\n 'compListingQuantityScoreAdjustmentOverrideJson',\n compListingQuantityScoreAdjustmentOverrideJsonNew\n );\n },\n [parsedQuantityOverridesJson, setValue]\n );\n\n return (\n \n );\n};\n","import { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { AutoPricingOutlierMode } from 'src/WebApiController';\n\nimport { useAutoPricingSettingsFormContext } from '../useAutoPricingSettingsFormContext';\n\nexport const AutoPricingOutlierDetectionModeSelector = ({\n outlierModes,\n outlierModesDisabled,\n disabled,\n}: {\n outlierModes: Record;\n outlierModesDisabled?: Record;\n disabled: boolean;\n}) => {\n const { onOutlierSettingsChange, watch } =\n useAutoPricingSettingsFormContext();\n\n const { outlierMode } = watch();\n\n return (\n e.stopPropagation()}\n onChange={(v) => {\n onOutlierSettingsChange({\n outlierModeNew: v as AutoPricingOutlierMode,\n });\n }}\n />\n );\n};\n","import { useState } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport {\n OUTLIER_MODE_KTH_LOWEST_STRATEGY,\n OutlierModeKthLowestStrategy,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { STANDARD_DEVIATIONS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { AutoPricingOutlierMode } from 'src/WebApiController';\n\nimport * as styles from '../AutoPricing.css';\nimport {\n OnOutlierSettingsChangeArgs,\n useAutoPricingSettingsFormContext,\n} from '../useAutoPricingSettingsFormContext';\n\nexport const AutoPricingOutlierDetectionSettingsInput = ({\n disabled,\n}: {\n disabled: boolean;\n}) => {\n const { onOutlierSettingsChange, watch } =\n useAutoPricingSettingsFormContext();\n\n const {\n outlierMode,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierStandardDeviations,\n } = watch();\n\n return outlierMode === AutoPricingOutlierMode.KthLowest ? (\n \n ) : outlierMode === AutoPricingOutlierMode.StandardDeviations ? (\n \n ) : null;\n};\n\nconst KthLowestOutlierDetectionSettingsInput = ({\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n disabled,\n onOutlierSettingsChange,\n}: {\n outlierKthLowestLimit: number | null;\n outlierKthLowestLimitRelativeSpacing: number | null;\n outlierKthLowestLimitAbsoluteSpacing: number | null;\n disabled: boolean;\n onOutlierSettingsChange: (input: OnOutlierSettingsChangeArgs) => void;\n}) => {\n const [outlierKthLowestStrategy, setKthLowestOutlierStrategy] = useState(\n OutlierModeKthLowestStrategy.Relative\n );\n\n return (\n \n
    \n \n
    \n\n {\n const v = parseInt(e.target.value);\n onOutlierSettingsChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: v,\n });\n }}\n />\n\n
    \n \n
    \n\n {outlierKthLowestStrategy == OutlierModeKthLowestStrategy.Relative ? (\n {\n let v = parseInt(e.target.value);\n if (v < 0) {\n v = 0;\n } else if (v > 100) {\n v = 100;\n }\n\n if (!isNaN(v)) {\n onOutlierSettingsChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: undefined,\n outlierKthLowestLimitAbsoluteSpacingNew: null,\n outlierKthLowestLimitRelativeSpacingNew: v,\n });\n }\n }}\n />\n ) : (\n {\n const v = parseInt(e.target.value);\n onOutlierSettingsChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: undefined,\n outlierKthLowestLimitAbsoluteSpacingNew: v,\n outlierKthLowestLimitRelativeSpacingNew: null,\n });\n }}\n />\n )}\n\n {\n if (!value) {\n return;\n }\n\n const strat = value as OutlierModeKthLowestStrategy;\n setKthLowestOutlierStrategy(strat);\n\n onOutlierSettingsChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitAbsoluteSpacingNew: null,\n outlierKthLowestLimitRelativeSpacingNew: null,\n });\n }}\n />\n\n
    \n \n
    \n
    \n );\n};\n\nconst StandardDeviationOutlierDetectionSettingsInput = ({\n outlierStandardDeviations,\n disabled,\n onOutlierSettingsChange,\n}: {\n outlierStandardDeviations: number | null;\n disabled: boolean;\n onOutlierSettingsChange: (input: OnOutlierSettingsChangeArgs) => void;\n}) => {\n return (\n \n e.stopPropagation()}\n onChange={(v) => {\n const value = parseInt(v ?? '');\n if (value != null && !isNaN(value)) {\n onOutlierSettingsChange({\n outlierModeNew: AutoPricingOutlierMode.StandardDeviations,\n outlierStandardDeviationsNew: value,\n });\n } else {\n onOutlierSettingsChange({\n outlierModeNew: AutoPricingOutlierMode.StandardDeviations,\n outlierStandardDeviationsNew: null,\n });\n }\n }}\n />\n \n );\n};\n","import { useCallback, useMemo } from 'react';\nimport {\n mapToSelectedSectionSettings,\n SelectedSectionSettingsWithOptionals,\n} from 'src/utils/types/selectedSectionSettingsWithOptionals';\nimport { SectionInfo, SelectedSectionSettings } from 'src/WebApiController';\n\nimport { useAutoPricingSettingsFormContext } from '../useAutoPricingSettingsFormContext';\n\nexport const useAutoPricingSettingsSelectedSections = (\n venueMapSections: SectionInfo[] | null | undefined\n) => {\n const { setValue, watch } = useAutoPricingSettingsFormContext();\n\n const { compListingSelectedSectionSettings } = watch();\n\n const selectedSections = useMemo(() => {\n const formSectionFilterIds =\n compListingSelectedSectionSettings?.sectionIdFilter ?? [];\n return (\n venueMapSections?.filter((section) => {\n return formSectionFilterIds.includes(section.id);\n }) ?? []\n );\n }, [compListingSelectedSectionSettings?.sectionIdFilter, venueMapSections]);\n\n const rowIdFilters = useMemo(() => {\n return compListingSelectedSectionSettings?.rowIdFilter ?? [];\n }, [compListingSelectedSectionSettings]);\n\n const sectionRowIdFilters = useMemo(() => {\n return compListingSelectedSectionSettings?.sectionRowIdFilter ?? {};\n }, [compListingSelectedSectionSettings]);\n\n const onRowIdFiltersChange = useCallback(\n (rowIdFilters: number[], sectionRowIdFilters: { [x: string]: string }) => {\n const compListingSelectedSectionSettingsNew = {\n sectionIdFilter:\n compListingSelectedSectionSettings?.sectionIdFilter ?? [],\n rowIdFilter: Array.from(new Set(rowIdFilters)),\n sectionRowIdFilter: sectionRowIdFilters,\n };\n\n setValue(\n 'compListingSelectedSectionSettings',\n mapToSelectedSectionSettings(compListingSelectedSectionSettingsNew) ??\n null\n );\n setValue('compListingOnlyForSelectedSectionsEnabled', true);\n },\n [compListingSelectedSectionSettings?.sectionIdFilter, setValue]\n );\n\n const onSectionIdFiltersChange = useCallback(\n (\n sectionId: number,\n selectedSections: SectionInfo[],\n section?: SectionInfo\n ) => {\n let newSectionIdFilter =\n compListingSelectedSectionSettings?.sectionIdFilter ?? [];\n\n let newRowIdFilter =\n compListingSelectedSectionSettings?.rowIdFilter ?? [];\n\n let newSectionRowIdFilter =\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {};\n\n if (newSectionIdFilter.includes(sectionId)) {\n newSectionIdFilter = newSectionIdFilter.filter(\n (id) => id !== sectionId\n );\n\n // Remove all the associated row ids for this section\n const section = selectedSections.find((s) => s.id === sectionId);\n if (section) {\n const rowIds = section.rows.map((r) => r.id);\n newRowIdFilter = newRowIdFilter.filter((id) => !rowIds.includes(id));\n }\n\n // Remove the sectionRow mapping so we don't display it in pills\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [sectionId]: omitted, ...updatedSectionRowIdFilter } =\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {};\n\n newSectionRowIdFilter = updatedSectionRowIdFilter;\n } else {\n newSectionIdFilter.push(sectionId);\n\n // If a section is present, add all the rows associated with the newly selected section\n if (section) {\n const newRowIds = section.rows.map((r) => r.id);\n newRowIds.forEach((newRowId) => {\n if (!newRowIdFilter.includes(newRowId)) {\n newRowIdFilter.push(newRowId);\n }\n });\n }\n }\n\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter: newSectionIdFilter,\n rowIdFilter: newRowIdFilter,\n sectionRowIdFilter: newSectionRowIdFilter,\n };\n\n setValue(\n 'compListingSelectedSectionSettings',\n mapToSelectedSectionSettings(compListingSelectedSectionSettingsNew) ??\n null\n );\n },\n [compListingSelectedSectionSettings, setValue]\n );\n\n const setCompListingSelectedSectionSettings = useCallback(\n (\n compListingSelectedSectionSettingsNew: SelectedSectionSettingsWithOptionals | null\n ) => {\n setValue(\n 'compListingSelectedSectionSettings',\n mapToSelectedSectionSettings(compListingSelectedSectionSettingsNew) ??\n null\n );\n },\n [setValue]\n );\n\n return {\n selectedSections,\n rowIdFilters,\n sectionRowIdFilters,\n onRowIdFiltersChange,\n onSectionIdFiltersChange,\n compListingSelectedSectionSettings,\n setCompListingSelectedSectionSettings,\n };\n};\n","import { ButtonWithIcon } from 'src/components/Buttons';\nimport { FilterPillList } from 'src/components/common/FilterPill';\nimport { vars } from 'src/core/themes';\nimport { SectionSelectDialog } from 'src/dialogs/SectionSelectDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionInfo } from 'src/WebApiController';\n\nimport { useAutoPricingSettingsSelectedSections } from './AutoPricingSelectedSectionSettingsInput.hooks';\n\nexport const AutoPricingSelectedSectionSettingsInput = ({\n venueMapSections,\n disabled,\n}: {\n venueMapSections: SectionInfo[] | null | undefined;\n disabled: boolean;\n}) => {\n const sectionSelectDialog = useBasicDialog();\n\n const {\n compListingSelectedSectionSettings,\n setCompListingSelectedSectionSettings,\n selectedSections,\n rowIdFilters,\n sectionRowIdFilters,\n onRowIdFiltersChange,\n onSectionIdFiltersChange,\n } = useAutoPricingSettingsSelectedSections(venueMapSections);\n\n return (\n <>\n {compListingSelectedSectionSettings?.sectionIdFilter?.length ? (\n <>\n
    \n \n
    \n\n \n }\n textContentId={ContentId.EditSections}\n onClick={sectionSelectDialog.launchDialog}\n disabled={disabled}\n style={{ padding: 0 }}\n />\n \n ) : (\n venueMapSections && (\n \n }\n textContentId={ContentId.SelectSections}\n onClick={sectionSelectDialog.launchDialog}\n disabled={disabled}\n style={{ padding: 0 }}\n />\n )\n )}\n\n {\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter: selectedSections.map((s) => s.id),\n rowIdFilter: compListingSelectedSectionSettings?.rowIdFilter ?? [],\n sectionRowIdFilter:\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {},\n };\n setCompListingSelectedSectionSettings(\n compListingSelectedSectionSettingsNew\n );\n sectionSelectDialog.closeDialog();\n }}\n onClosed={sectionSelectDialog.closeDialog}\n />\n \n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport {\n getUndercutPriceRepresentingMode,\n getUndercutPriceSettingMode,\n UNDERCUT_PRICE_MODE_OPTIONS,\n UndercutPriceSettingsMode,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { UiCurrency } from 'src/WebApiController';\n\nimport * as styles from '../AutoPricing.css';\nimport { useAutoPricingSettingsFormContext } from '../useAutoPricingSettingsFormContext';\n\ninterface OnUnderCutChangeRelativeAmountProps {\n absUnderCutRelativeAmountNew: number | null;\n currentUnderCutRelativeAmountMode: UndercutPriceSettingsMode;\n absUnderCutAbsoluteAmountNew?: never;\n currentUnderCutAbsoluteAmountMode?: never;\n}\ninterface OnUnderCutChangeAbsoluteAmountProps {\n absUnderCutRelativeAmountNew?: never;\n currentUnderCutRelativeAmountMode?: never;\n absUnderCutAbsoluteAmountNew: number | null;\n currentUnderCutAbsoluteAmountMode: UndercutPriceSettingsMode;\n}\n\nexport const AutoPricingUnderCutRelativeAndAbsoluteAmountsInput = ({\n uiCurrency,\n disabled,\n}: {\n uiCurrency: UiCurrency;\n disabled: boolean;\n}) => {\n const { setValue, clearErrors, formState, watch } =\n useAutoPricingSettingsFormContext();\n\n const { undercutMode, undercutRelativeAmount, undercutAbsoluteAmount } =\n watch();\n\n const undercutRelativeAmountError =\n formState.errors.undercutRelativeAmount?.message;\n const undercutAbsoluteAmountError =\n formState.errors.undercutAbsoluteAmount?.message;\n\n // AmountMode is an inferred field from the amount\n const undercutRelativeAmountMode = useMemo(\n () => getUndercutPriceSettingMode(undercutRelativeAmount),\n [undercutRelativeAmount]\n );\n // AmountMode is an inferred field from the amount\n const undercutAbsoluteAmountMode = useMemo(\n () => getUndercutPriceSettingMode(undercutAbsoluteAmount),\n [undercutAbsoluteAmount]\n );\n\n const onUnderCutChange = useCallback(\n ({\n absUnderCutRelativeAmountNew,\n currentUnderCutRelativeAmountMode,\n absUnderCutAbsoluteAmountNew,\n currentUnderCutAbsoluteAmountMode,\n }:\n | OnUnderCutChangeRelativeAmountProps\n | OnUnderCutChangeAbsoluteAmountProps) => {\n if (absUnderCutRelativeAmountNew !== undefined) {\n const underCutRelativeAmountNew = absUnderCutRelativeAmountNew\n ? getUndercutPriceRepresentingMode(\n absUnderCutRelativeAmountNew,\n currentUnderCutRelativeAmountMode\n )\n : null;\n setValue('undercutRelativeAmount', underCutRelativeAmountNew);\n }\n\n if (absUnderCutAbsoluteAmountNew !== undefined) {\n const underCutAbsoluteAmountNew = absUnderCutAbsoluteAmountNew\n ? getUndercutPriceRepresentingMode(\n absUnderCutAbsoluteAmountNew,\n currentUnderCutAbsoluteAmountMode\n )\n : null;\n setValue('undercutAbsoluteAmount', underCutAbsoluteAmountNew);\n }\n\n clearErrors('undercutAbsoluteAmount');\n clearErrors('undercutRelativeAmount');\n },\n [setValue, clearErrors]\n );\n\n const isDisabled = disabled || !undercutMode;\n\n return (\n \n \n\n
    \n \n
    \n\n \n
    \n );\n};\n\nconst AutoPricingUnderCutRelativeAmountInput = ({\n undercutRelativeAmount,\n undercutRelativeAmountMode,\n undercutRelativeAmountError,\n onUnderCutChange,\n disabled,\n}: {\n undercutRelativeAmount: number | null;\n undercutRelativeAmountMode: UndercutPriceSettingsMode;\n undercutRelativeAmountError?: string;\n onUnderCutChange: (arg: OnUnderCutChangeRelativeAmountProps) => void;\n disabled: boolean;\n}) => {\n return (\n \n {\n if (!value) {\n return;\n }\n\n const undercutRelativeAmountModeNew =\n value as UndercutPriceSettingsMode;\n\n if (undercutRelativeAmount) {\n const absUndercutRelativeAmountNew = Math.abs(\n undercutRelativeAmount\n );\n onUnderCutChange({\n absUnderCutRelativeAmountNew: absUndercutRelativeAmountNew,\n currentUnderCutRelativeAmountMode: undercutRelativeAmountModeNew,\n });\n }\n }}\n />\n\n
    \n \n
    \n \n {\n const v = parseFloat(e.target.value);\n const undercutRelativeAmountNew =\n v >= 0 && v <= Number.MAX_VALUE ? Math.min(v, 100) / 100 : null;\n onUnderCutChange({\n absUnderCutRelativeAmountNew: undercutRelativeAmountNew,\n currentUnderCutRelativeAmountMode: undercutRelativeAmountMode,\n });\n }}\n />\n \n
    \n );\n};\n\nconst AutoPricingUnderCutAbsoluteAmountInput = ({\n uiCurrency,\n undercutAbsoluteAmount,\n undercutAbsoluteAmountMode,\n undercutAbsoluteAmountError,\n onUnderCutChange,\n disabled,\n}: {\n uiCurrency: UiCurrency;\n undercutAbsoluteAmount: number | null;\n undercutAbsoluteAmountMode: UndercutPriceSettingsMode;\n undercutAbsoluteAmountError?: string;\n onUnderCutChange: (arg: OnUnderCutChangeAbsoluteAmountProps) => void;\n disabled: boolean;\n}) => {\n return (\n \n {\n if (!value) {\n return;\n }\n\n const undercutAbsoluteAmountModeNew =\n value as UndercutPriceSettingsMode;\n\n if (undercutAbsoluteAmount) {\n const absUndercutAbsoluteAmountNew = Math.abs(\n undercutAbsoluteAmount\n );\n onUnderCutChange({\n absUnderCutAbsoluteAmountNew: absUndercutAbsoluteAmountNew,\n currentUnderCutAbsoluteAmountMode: undercutAbsoluteAmountModeNew,\n });\n }\n }}\n />\n
    \n \n
    \n \n {\n const v = parseFloat(e.target.value);\n const absUndercutAbsoluteAmountNew =\n v >= 0 && v <= Number.MAX_VALUE ? v : null;\n onUnderCutChange({\n absUnderCutAbsoluteAmountNew: absUndercutAbsoluteAmountNew,\n currentUnderCutAbsoluteAmountMode: undercutAbsoluteAmountMode,\n });\n }}\n />\n \n
    \n );\n};\n","import React, { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { Stack, Switch } from 'src/core/ui';\nimport { useAvailableAutopricingModes } from 'src/hooks/useAvailableAutopricingModes';\nimport { RestrictSelectionType } from 'src/modals/ListingDetails/components/PricingSection/AutoPricingSection.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n AutoPricingCompListingMode,\n AutoPricingInputs,\n AutoPricingOutlierMode,\n SectionInfo,\n UiCurrency,\n} from 'src/WebApiController';\n\nimport { AutoPricingCompFloorAndCeilingInput } from '../AutoPricingCompFloorAndCeilingInput/AutoPricingCompFloorAndCeilingInput';\nimport { AutoPricingCompListingModeSelector } from '../AutoPricingCompListingModeSelector/AutoPricingCompListingModeSelector';\nimport { AutoPricingCompQuantitiesSelector } from '../AutoPricingCompQuantitiesSelector/AutoPricingCompQuantitiesSelector';\nimport { AutoPricingOutlierDetectionModeSelector } from '../AutoPricingOutlierDetectionModeSelector/AutoPricingOutlierDetectionModeSelector';\nimport { AutoPricingOutlierDetectionSettingsInput } from '../AutoPricingOutlierDetectionSettingsInput/AutoPricingOutlierDetectionSettingsInput';\nimport { AutoPricingSelectedSectionSettingsInput } from '../AutoPricingSelectedSectionSettingsInput/AutoPricingSelectedSectionSettingsInput';\nimport { AutoPricingUnderCutRelativeAndAbsoluteAmountsInput } from '../AutoPricingUnderCutRelativeAndAbsoluteAmountsInput/AutoPricingUnderCutRelativeAndAbsoluteAmountsInput';\nimport * as styles from './AutoPricingSettingsFormContent.css';\n\nexport type AutoPricingSettingsFormContentCoreProps = {\n venueMapSections: SectionInfo[] | null | undefined;\n hasSeatScores: boolean;\n uiCurrency: UiCurrency;\n allowSeatScoreCompListingMode: boolean;\n disabled: boolean;\n};\n\ntype AutoPricingSettingsFormContentCoreAndOptionalProps =\n AutoPricingSettingsFormContentCoreProps & {\n isGlobalEdit?: boolean;\n hideCompListingQuantityFilters?: boolean;\n hideUnderCutAmountInput?: boolean;\n hideBaseAdvancedSettingElements?: boolean;\n autoPricingSectionChildren?: React.ReactNode;\n priceAgainstSectionChildren?: React.ReactNode;\n pricingProtectionSectionChildren?: React.ReactNode;\n advancedSettingsSectionChildren?: React.ReactNode;\n };\n\nexport const AutoPricingSettingsFormContent = ({\n venueMapSections,\n hasSeatScores,\n isGlobalEdit,\n uiCurrency,\n allowSeatScoreCompListingMode,\n hideCompListingQuantityFilters,\n hideUnderCutAmountInput,\n hideBaseAdvancedSettingElements,\n autoPricingSectionChildren,\n priceAgainstSectionChildren,\n pricingProtectionSectionChildren,\n advancedSettingsSectionChildren,\n disabled,\n}: AutoPricingSettingsFormContentCoreAndOptionalProps) => {\n const { watch } = useFormContext();\n\n const { undercutMode, compListingMode } = watch();\n\n const { outlierModes, outlierModesDisabled, restrictSelectionTypes } =\n useAvailableAutopricingModes(\n true,\n undercutMode,\n compListingMode,\n hasSeatScores,\n false,\n isGlobalEdit,\n true\n );\n\n return (\n
    \n {autoPricingSectionChildren && (\n \n {autoPricingSectionChildren}\n \n )}\n\n \n {priceAgainstSectionChildren}\n \n\n {pricingProtectionSectionChildren && (\n \n {pricingProtectionSectionChildren}\n \n )}\n\n \n {advancedSettingsSectionChildren}\n \n
    \n );\n};\n\nconst PriceAgainstSection = ({\n venueMapSections,\n allowSeatScoreCompListingMode,\n restrictSelectionTypes,\n uiCurrency,\n hideCompListingQuantityFilters,\n hideUnderCutAmountInput,\n disabled,\n children,\n}: React.PropsWithChildren & {\n venueMapSections: SectionInfo[] | null | undefined;\n allowSeatScoreCompListingMode: boolean;\n restrictSelectionTypes: Record;\n uiCurrency: UiCurrency;\n hideCompListingQuantityFilters: boolean | undefined;\n hideUnderCutAmountInput: boolean | undefined;\n disabled: boolean;\n}) => {\n const { watch, setValue } = useFormContext();\n\n const {\n compListingMode,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n } = watch();\n\n const showCompListingSettingsDetails =\n compListingMode === AutoPricingCompListingMode.QualityScore;\n\n const showCompListingRestictSelectionDetails =\n compListingMode != null &&\n (compListingMode === AutoPricingCompListingMode.QualityScore ||\n compListingMode === AutoPricingCompListingMode.SameZone);\n\n const restrictSelection = Boolean(\n compListingOnlyForSameZoneEnabled ||\n compListingOnlyForSelectedSectionsEnabled\n );\n\n const [\n isOnlyComparableZonesModeAvailable,\n setIsOnlyComparableZonesModeAvailable,\n ] = useState(false);\n\n return (\n \n {!isOnlyComparableZonesModeAvailable && (\n <>\n }\n detail={\n \n }\n />\n\n {showCompListingSettingsDetails && (\n \n }\n />\n )}\n\n {showCompListingRestictSelectionDetails && (\n <>\n }\n detail={\n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n let compListingOnlyForSameZoneEnabledNew: boolean | null =\n null;\n let compListingOnlyForSelectedSectionsEnabledNew:\n | boolean\n | null = null;\n if (isChecked) {\n if (\n !compListingOnlyForSameZoneEnabled &&\n !compListingOnlyForSelectedSectionsEnabled\n ) {\n // set zone by default\n compListingOnlyForSameZoneEnabledNew = true;\n compListingOnlyForSelectedSectionsEnabledNew = false;\n }\n } else {\n compListingOnlyForSameZoneEnabledNew = false;\n compListingOnlyForSelectedSectionsEnabledNew = false;\n }\n\n if (\n compListingOnlyForSameZoneEnabledNew != null ||\n compListingOnlyForSelectedSectionsEnabledNew != null\n ) {\n setValue(\n 'compListingOnlyForSameZoneEnabled',\n compListingOnlyForSameZoneEnabledNew\n );\n setValue(\n 'compListingOnlyForSelectedSectionsEnabled',\n compListingOnlyForSelectedSectionsEnabledNew\n );\n }\n }}\n />\n }\n />\n \n )}\n {restrictSelection && (\n }\n detail={\n e.stopPropagation()}\n onChange={(v) => {\n let compListingOnlyForSameZoneEnabledNew = false;\n let compListingOnlyForSelectedSectionsEnabledNew = true;\n if (v === RestrictSelectionType.SameZone) {\n compListingOnlyForSameZoneEnabledNew = true;\n compListingOnlyForSelectedSectionsEnabledNew = false;\n }\n\n setValue(\n 'compListingOnlyForSameZoneEnabled',\n compListingOnlyForSameZoneEnabledNew\n );\n setValue(\n 'compListingOnlyForSelectedSectionsEnabled',\n compListingOnlyForSelectedSectionsEnabledNew\n );\n }}\n />\n }\n />\n )}\n \n )}\n\n {compListingOnlyForSelectedSectionsEnabled && venueMapSections && (\n }\n detail={\n \n }\n />\n )}\n\n {!hideCompListingQuantityFilters && (\n }\n detail={}\n />\n )}\n\n {!hideUnderCutAmountInput && (\n }\n detail={\n \n }\n />\n )}\n\n {children}\n \n );\n};\n\nconst AdvancedSettingsSection = ({\n outlierModes,\n outlierModesDisabled,\n disabled,\n hideBaseAdvancedSettingElements,\n children,\n}: React.PropsWithChildren & {\n outlierModes: Record;\n outlierModesDisabled: Record;\n disabled: boolean;\n hideBaseAdvancedSettingElements?: boolean;\n}) => {\n const { watch, setValue } = useFormContext();\n\n const {\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n outlierMode,\n } = watch();\n\n const shouldShowAdvancedSettings =\n !hideBaseAdvancedSettingElements || !!children;\n return (\n shouldShowAdvancedSettings && (\n \n {!hideBaseAdvancedSettingElements && (\n <>\n }\n detail={\n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n const compListingExcludeFanInventoryNew = isChecked;\n if (\n compListingExcludeFanInventoryNew !==\n compListingExcludeFanInventory\n ) {\n setValue(\n 'compListingExcludeFanInventory',\n compListingExcludeFanInventoryNew\n );\n }\n }}\n />\n }\n />\n\n }\n detail={\n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n const compListingExcludeDefectsNew = !isChecked;\n if (\n compListingExcludeDefectsNew !== compListingExcludeDefects\n ) {\n setValue(\n 'compListingExcludeDefects',\n compListingExcludeDefectsNew\n );\n }\n }}\n />\n }\n />\n\n }\n detail={\n \n }\n />\n\n {outlierMode != AutoPricingOutlierMode.SkipLogic && (\n }\n detail={\n \n }\n />\n )}\n \n )}\n\n {children}\n \n )\n );\n};\n\nconst AutoPricingSettingsSection = ({\n title,\n children,\n}: React.PropsWithChildren & { title: ContentId }) => {\n return (\n \n
    \n \n
    \n\n {children}\n
    \n );\n};\n\nexport const PricingSetting = ({\n header,\n detail,\n headerStyle,\n}: {\n header: React.ReactNode;\n detail: React.ReactNode;\n headerStyle?: React.CSSProperties;\n}) => {\n return (\n \n
    \n {header}\n
    \n
    {detail}
    \n
    \n );\n};\n","import { FormProvider, useForm, useFormContext } from 'react-hook-form';\nimport {\n AutoPricingSettingsFormContent,\n AutoPricingSettingsFormContentCoreProps,\n PricingSetting,\n} from 'src/components/AutoPricing/AutoPricingSettingsFormContent/AutoPricingSettingsFormContent';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Switch } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { AutoPricingInputs } from 'src/WebApiController';\n\nimport { MergeListingGroupInputListFields } from '../groupingTypes';\n\nexport type ListingGroupAutoPricingSettingsFormContentProps =\n AutoPricingSettingsFormContentCoreProps;\n\nexport const ListingGroupAutoPricingSettingsFormContent = ({\n disabled,\n ...rest\n}: ListingGroupAutoPricingSettingsFormContentProps) => {\n const { watch: outerWatch, setValue: outerSetValue } =\n useFormContext();\n\n const { pricingSettingsInputs, resetListingAutoPricingSettings } =\n outerWatch();\n\n const innerMethods = useForm({\n defaultValues: pricingSettingsInputs,\n });\n\n const { watch: innerWatch } = innerMethods;\n\n innerWatch((pricingSettingsInputsNew) => {\n outerSetValue(\n 'pricingSettingsInputs',\n pricingSettingsInputsNew as AutoPricingInputs\n );\n });\n\n return (\n \n <>\n \n }\n detail={\n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n if (isChecked !== resetListingAutoPricingSettings) {\n outerSetValue(\n 'resetListingAutoPricingSettings',\n isChecked\n );\n }\n }}\n />\n }\n />\n }\n isGlobalEdit={false}\n disabled={disabled}\n {...rest}\n />\n \n \n );\n};\n","import { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { getCompleteEventConfigScoreOverrides } from 'src/utils/seatScoreUtils';\nimport { Feature, ListingGroup } from 'src/WebApiController';\n\nimport { ListingGroupAutoPricingSettingsFormContent } from '../ListingGroupAutoPricingSettingsFormContent/ListingGroupAutoPricingSettingsFormContent';\n\nexport const ListingGroupAutoPricingSettingsFormContentWrapper = ({\n listingGroup,\n disabled,\n}: {\n listingGroup: ListingGroup | null | undefined;\n disabled: boolean;\n}) => {\n const { loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n\n const uiCurrency = useMemo(\n () =>\n getUiCurrency(\n listingGroup?.currency ??\n loginContext?.user?.activeAccount?.currencyCode\n ),\n [\n getUiCurrency,\n listingGroup?.currency,\n loginContext?.user?.activeAccount?.currencyCode,\n ]\n );\n\n const { activeConfigOverride, venueMapInfo, venueMapsByScoreModelQuery } =\n useEventMapContext();\n\n const defaultScoreOverrides = useMemo(() => {\n // In the backend, if AVG scores are missing, then we always fallback to MVG, even if AVG is explicitly selected\n return (\n venueMapsByScoreModelQuery?.data?.AdvancedVenueGeometry?.sectionScores ??\n venueMapsByScoreModelQuery?.data?.MergedVenueGeometry?.sectionScores ??\n venueMapsByScoreModelQuery?.data?.VenueGeometry?.sectionScores\n );\n }, [\n venueMapsByScoreModelQuery?.data?.AdvancedVenueGeometry?.sectionScores,\n venueMapsByScoreModelQuery?.data?.MergedVenueGeometry?.sectionScores,\n venueMapsByScoreModelQuery?.data?.VenueGeometry?.sectionScores,\n ]);\n\n const scores = getCompleteEventConfigScoreOverrides(\n defaultScoreOverrides,\n activeConfigOverride?.scoreOverrides,\n false\n );\n\n const hasAllowSeatScoreCompListingModeFeature = useUserHasFeature(\n Feature.AllowSeatScoreCompListingMode\n );\n\n return (\n s.score))}\n uiCurrency={uiCurrency}\n allowSeatScoreCompListingMode={hasAllowSeatScoreCompListingModeFeature}\n disabled={disabled}\n />\n );\n};\n","import { MarketplaceLogo } from 'src/components/common/MarketplaceLogo';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { Switch } from 'src/core/interim/Switch';\nimport { vars } from 'src/core/themes';\nimport { SimpleTable } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getListingBroadcastIcon } from 'src/utils/inventoryUtils';\nimport { Event, ListingStatus, Marketplace } from 'src/WebApiController';\n\nimport * as styles from './MarketplaceDisplay.css';\n\nexport const MarketplaceDisplay = ({\n marketplace,\n marketplaceActive,\n isSelected,\n isActive,\n isLoading,\n event,\n isUKEvent,\n isViagogo,\n disabled,\n onListingBroadcastToggle,\n}: {\n marketplace: Marketplace;\n marketplaceActive: boolean;\n isSelected: boolean;\n isActive: boolean;\n isLoading: boolean;\n event?: Event;\n isUKEvent?: boolean;\n isViagogo?: boolean;\n disabled?: boolean;\n onListingBroadcastToggle: (\n isSelected: boolean,\n isBroadcasting: boolean,\n marketplace: Marketplace\n ) => void;\n}) => {\n const alwaysShowAsDelisted =\n isUKEvent && marketplace === Marketplace.StubHub && !isViagogo;\n\n const isChecked = !alwaysShowAsDelisted && isActive && isSelected;\n\n const { iconComponent: ListingBroadcastIcon } = getListingBroadcastIcon(\n alwaysShowAsDelisted || !marketplaceActive\n ? ListingStatus.Delisted // We always show Delisted for StubHub when event is in UK\n : isActive\n ? isLoading\n ? ListingStatus.ListingPending\n : ListingStatus.Listed\n : isLoading\n ? ListingStatus.DelistingPending\n : ListingStatus.Delisted\n );\n\n const listingStatusCell = (\n <>\n {isSelected && }\n \n \n \n \n );\n\n return (\n \n \n \n onListingBroadcastToggle(!isSelected, isChecked, marketplace)\n }\n />\n \n \n \n \n \n {\n onListingBroadcastToggle(isSelected, !isChecked, marketplace);\n }}\n containerClassName={styles.broadcastStatus}\n />\n \n \n
    {listingStatusCell}
    \n
    \n \n );\n};\n","import { isEqual, mergeWith } from 'lodash-es';\nimport React, { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { SimpleTable } from 'src/core/ui';\nimport { useEventMarketplaceSettings } from 'src/hooks/useEventMarketplaceSettings';\nimport { MultiDetailSection } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { compareMarketplace } from 'src/utils/eventWithDataUtils';\nimport { isMarketplaceActive } from 'src/utils/userUtils';\nimport {\n Event,\n ListingMarketplaceSetting,\n Marketplace,\n MergeListingGroupInput,\n} from 'src/WebApiController';\n\nimport { MergeListingGroupInputListFields } from '../groupingTypes';\nimport { MarketplaceDisplay } from './MarketplaceDisplay';\nimport * as styles from './MarketplaceDisplay.css';\n\n/**\n * Get maerketplace id from marketplace enum.\n * This assumes the enum order is aligned with the Marketplace.Marketplace table\n */\nconst getMarketplaceIdFromMarketplace = (marketplace: Marketplace) => {\n let marketplaceId = 0;\n Object.values(Marketplace).forEach((mp, index) => {\n if (mp === marketplace) {\n marketplaceId = index + 1;\n }\n });\n return marketplaceId;\n};\n\n/**\n * Merge listing marketplace settings from two groups\n */\nconst mergeListingMarketplaceSettings = (\n marketplace1: { [key: string]: ListingMarketplaceSetting },\n marketplace2: { [key: string]: ListingMarketplaceSetting }\n) => {\n return mergeWith(\n { ...marketplace1 },\n marketplace2,\n (\n setting1: ListingMarketplaceSetting,\n setting2: ListingMarketplaceSetting\n ) => {\n if (\n !isEqual(\n setting1?.listingBroadcastStateId,\n setting2?.listingBroadcastStateId\n )\n ) {\n return {\n listingBroadcastStateId: Math.max(\n setting1?.listingBroadcastStateId ?? 1,\n setting2?.listingBroadcastStateId ?? 1\n ),\n };\n }\n return setting1 ?? setting2;\n }\n );\n};\n\ntype MarketplaceBroadcastProps = {\n event?: Event;\n};\n\nexport const ListingGroupMarketplaceBroadcast: React.FC<\n MarketplaceBroadcastProps\n> = ({ event }) => {\n const { watch, setValue } =\n useFormContext();\n const mergeListingGroupInputs = watch('mergeListingGroupInputs');\n const { eventMarketplaceSettings, isUKEvent, isInternationalEvent } =\n useEventMarketplaceSettings(event);\n\n const onListingBroadcastToggle = useCallback(\n (isSelected: boolean, isBroadcasting: boolean, mp: Marketplace) => {\n const updated = (mergeListingGroupInputs ?? []).map((input) => {\n const { listingMarketplaceSettings } = input?.marketplaceSettings || {\n listingMarketplaceSettings: {},\n };\n const marketplaceId = getMarketplaceIdFromMarketplace(mp);\n const copied = { ...listingMarketplaceSettings };\n if (isSelected) {\n Object.assign(copied, {\n [marketplaceId + '']: {\n listingBroadcastStateId: isBroadcasting ? 2 : 1,\n },\n });\n } else {\n delete copied[marketplaceId];\n }\n Object.assign(input, {\n marketplaceSettings: { listingMarketplaceSettings: copied },\n });\n return input;\n });\n setValue(`mergeListingGroupInputs`, updated);\n },\n [mergeListingGroupInputs, setValue]\n );\n\n const mergedSettings = useMemo(() => {\n return (mergeListingGroupInputs ?? []).reduce(\n (arr, input: MergeListingGroupInput) => {\n return mergeListingMarketplaceSettings(\n arr,\n input?.marketplaceSettings?.listingMarketplaceSettings ?? {}\n );\n },\n {} as { [key: string]: ListingMarketplaceSetting }\n );\n }, [mergeListingGroupInputs]);\n\n const marketplacesSelected = useMemo(() => {\n const selected: Marketplace[] = [];\n const includedIds = Object.keys(mergedSettings);\n Object.values(Marketplace).forEach((mp, index) => {\n if (includedIds.includes(index + 1 + '')) {\n selected.push(mp);\n }\n });\n return selected;\n }, [mergedSettings]);\n\n const marketplaceToStateId = useMemo(() => {\n const marketplaceToId = {} as Record;\n const includedIds = Object.keys(mergedSettings);\n Object.values(Marketplace).forEach((mp, index) => {\n const key = index + 1 + '';\n if (includedIds.includes(key)) {\n marketplaceToId[mp] = mergedSettings[key].listingBroadcastStateId;\n }\n });\n return marketplaceToId;\n }, [mergedSettings]);\n\n return (\n }\n extraContent={[]}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {eventMarketplaceSettings\n .toSorted((a, b) => compareMarketplace(a.mkp, b.mkp))\n .flatMap((mk) => {\n const isSelected = marketplacesSelected.includes(mk.mkp);\n const isActive = marketplaceToStateId[mk.mkp] === 2;\n\n if (mk.mkp === Marketplace.StubHub) {\n return [\n ,\n ,\n ];\n }\n\n if (!event || !isInternationalEvent) {\n return [\n ,\n ];\n }\n\n // Only support Stubhub/Viagogo for international events\n return [];\n })}\n \n \n \n );\n};\n","import { range } from 'lodash-es';\nimport { ChangeEvent, useCallback, useMemo } from 'react';\nimport { TableVirtuoso } from 'react-virtuoso';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { SimpleTable, Stack } from 'src/core/ui';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { GroupingType } from 'src/WebApiController';\n\nimport * as styles from '../../GroupListings.css';\nimport {\n GroupingTemplate,\n GroupingTemplateSeating,\n ListingGroupBy,\n} from '../groupingTypes';\n\nexport const GroupTemplateTable = ({\n groupBy,\n template,\n onTemplateChange,\n allowDelete,\n style,\n}: {\n groupBy: ListingGroupBy;\n template: GroupingTemplate;\n allowDelete: boolean;\n onTemplateChange: (\n groupTemplate: GroupingTemplate,\n removed?: boolean\n ) => void;\n style?: React.CSSProperties;\n}) => {\n const assignNewPriority = useCallback(\n (newPriority: number, key: string) => {\n // First find the element that already has this priority\n const indexOfExisting = template.seatings.findIndex(\n (l) => l.priority === newPriority\n );\n // Now find the index of item\n const indexOfItem = template.seatings.findIndex((l) => l.id === key);\n\n if (indexOfExisting < indexOfItem) {\n // Priority changed to higher (lower index), so we need to start at indexOfListing and go to up to indexOfItem\n for (let i = indexOfExisting; i < indexOfItem; i++) {\n const l = template.seatings[i];\n l.priority = l.priority! + 1; // shift 1 forward\n }\n template.seatings[indexOfItem].priority = newPriority; // set new priority on target listing\n\n // Save the new listing (ordered by priority)\n onTemplateChange({ ...template });\n } else if (indexOfExisting > indexOfItem) {\n // Priority changed to lower (higher index), so we need to start at indexOfExisting and go down to indexOfItem\n for (let i = indexOfExisting; i > indexOfItem; i--) {\n const l = template.seatings[i];\n l.priority = l.priority! - 1; // shift 1 back\n }\n\n template.seatings[indexOfItem].priority = newPriority; // set new priority on target listing\n\n // Save the new listing (ordered by priority)\n onTemplateChange({ ...template });\n } else {\n // There is no change, just return\n return;\n }\n },\n [onTemplateChange, template]\n );\n\n const priorityOptions = useMemo(\n () =>\n range(template.seatings.length).reduce(\n (r, i) => {\n r[(i + 1).toString()] = (i + 1).toString();\n return r;\n },\n {} as Record\n ),\n [template.seatings.length]\n );\n\n const requiredMsg = useContent(ContentId.Required);\n const error = template.groupName ? undefined : requiredMsg;\n\n const renderHeaderContent = useCallback(() => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n }, [groupBy.groupingType]);\n\n const renderRowContent = useCallback(\n (seat: GroupingTemplateSeating) => {\n return (\n <>\n \n {\n if (newPriorityString) {\n const newPriority = parseInt(newPriorityString);\n assignNewPriority(newPriority, seat.id.toString());\n }\n }}\n valueOptionsContent={priorityOptions}\n />\n \n \n {groupBy.groupingType === GroupingType.Quantity ? (\n seat.availQty\n ) : groupBy.groupingType === GroupingType.UnitCost ? (\n (seat.unitCst?.disp ??\n seat.unitCst?.amt ??\n seat.faceValue?.disp ??\n seat.faceValue?.amt)\n ) : (\n \n )}\n \n \n {\n template.seatings = template.seatings.filter(\n (s) => s.id !== seat.id\n );\n onTemplateChange({ ...template });\n }}\n />\n \n \n );\n },\n [\n assignNewPriority,\n groupBy.groupingType,\n onTemplateChange,\n priorityOptions,\n template,\n ]\n );\n\n const templateSeatingsData = useMemo(\n () => template.seatings.toSorted((s1, s2) => s1.priority! - s2.priority!),\n [template.seatings]\n );\n\n return (\n \n \n }\n errors={error}\n style={{ flex: '1' }}\n >\n {\n if (e.target.value !== template.groupName) {\n template.groupName = e.target.value;\n onTemplateChange({ ...template });\n }\n }}\n />\n \n }\n style={{ flex: '0.5' }}\n >\n ) => {\n const v = parseInt(e.target.value);\n if (v >= 0 && v !== template.desiredActiveListings) {\n template.desiredActiveListings = v;\n onTemplateChange({ ...template });\n }\n }}\n />\n \n {allowDelete && (\n onTemplateChange(template, true)}\n withHoverEffect\n />\n )}\n \n
    \n {\n return renderRowContent(seat);\n }}\n />\n
    \n
    \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { ChangeEvent, useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { TableVirtuoso } from 'react-virtuoso';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport {\n Content,\n useContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect, PosSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { SimpleTable, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { newGuidId } from 'src/utils/idUtils';\nimport { getCompleteEventConfigScoreOverrides } from 'src/utils/seatScoreUtils';\nimport { GroupingType } from 'src/WebApiController';\n\nimport * as styles from '../../GroupListings.css';\nimport {\n GroupingTemplateSeating,\n ListingGroupBy,\n ListingGroupingTypesWithClusteringOptions,\n MergeListingGroupInputListFields,\n} from '../groupingTypes';\nimport {\n getAvailableGroupingTypes,\n getListingGroupsMap,\n} from '../groupingUtils';\n\nexport const SeatingSelectionTable = ({\n uniqueSeatings,\n}: {\n uniqueSeatings: GroupingTemplateSeating[];\n}) => {\n const { watch, setValue } =\n useFormContext();\n\n const contentContext = useContentContext();\n const groupTemplates = watch('templateSettings.groupTemplates');\n const groupBy = watch('templateSettings.groupBy');\n const desiredActiveListings = watch('templateSettings.desiredActiveListings');\n const deprioritizedQuantities = watch(\n 'templateSettings.deprioritizedQuantities'\n );\n const randomizePriority = watch('templateSettings.randomizePriority');\n\n const noneStr = useContent(ContentId.None);\n const newGroupName = useContent(ContentId.NewGroup);\n\n const availableGroups = useMemo(\n () =>\n groupTemplates.reduce(\n (r, g) => {\n r[g.groupId] = g.groupName;\n return r;\n },\n { None: noneStr } as Record\n ),\n [groupTemplates, noneStr]\n );\n\n const { venueMapInfo, activeConfigOverride } = useEventMapContext();\n const scoreOverrides = useMemo(\n () =>\n getCompleteEventConfigScoreOverrides(\n venueMapInfo?.sectionScores,\n activeConfigOverride?.scoreOverrides,\n false\n ),\n [activeConfigOverride?.scoreOverrides, venueMapInfo?.sectionScores]\n );\n\n const getGroupedListings = useCallback(\n (groupBy: ListingGroupBy) => {\n const listingGroupsMap = getListingGroupsMap(\n [groupBy],\n contentContext,\n uniqueSeatings,\n scoreOverrides,\n venueMapInfo?.sections\n );\n return !listingGroupsMap\n ? []\n : Object.values(listingGroupsMap)\n .filter((group) => group.data.length)\n .toSorted((a, b) => a.name.localeCompare(b.name))\n .map((group) => {\n return {\n groupId: newGuidId(),\n groupName: group.name,\n desiredActiveListings,\n deprioritizedQuantities,\n marketplaceSettings: null,\n seatings: group.data.map((s, i) => ({\n ...(s as GroupingTemplateSeating),\n priority: i + 1,\n })),\n };\n });\n },\n [\n contentContext,\n uniqueSeatings,\n scoreOverrides,\n venueMapInfo?.sections,\n desiredActiveListings,\n deprioritizedQuantities,\n ]\n );\n\n const updateGroupedListings = useCallback(\n (localGroupBy: ListingGroupBy) => {\n if (isEqual(localGroupBy, groupBy)) {\n return;\n }\n\n setValue(`templateSettings.groupBy`, localGroupBy);\n\n if (localGroupBy.groupingType !== GroupingType.Custom) {\n const newTemplates = getGroupedListings(localGroupBy);\n setValue('templateSettings.groupTemplates', newTemplates);\n } else {\n if (groupTemplates.length === 0) {\n setValue('templateSettings.groupTemplates', [\n {\n groupId: newGuidId(),\n groupName: `${newGroupName} 1`,\n desiredActiveListings,\n deprioritizedQuantities,\n seatings: [],\n },\n ]);\n }\n }\n },\n [\n deprioritizedQuantities,\n desiredActiveListings,\n getGroupedListings,\n groupBy,\n groupTemplates.length,\n newGroupName,\n setValue,\n ]\n );\n\n const onGroupingTypeChange = useCallback(\n (newGroupType: GroupingType, newNumOfClusters?: number) => {\n updateGroupedListings({\n groupingType: newGroupType,\n numOfClusters: newNumOfClusters,\n });\n },\n [updateGroupedListings]\n );\n\n const renderHeaderContent = useCallback(() => {\n return (\n \n \n \n \n \n \n \n \n );\n }, [groupBy.groupingType]);\n\n const renderRowContent = useCallback(\n (gts: GroupingTemplateSeating, groupId: string | undefined) => {\n const { id, seating, availQty, unitCst, faceValue } = gts;\n\n return (\n <>\n \n {\n if (newGroupId) {\n const oldGroup = groupTemplates.find(\n (g) => g.groupId.toString() === groupId\n );\n if (oldGroup) {\n oldGroup.seatings = oldGroup.seatings\n .filter((s) => s.id !== id)\n .map((s, i) => ({ ...s, priority: i + 1 })); // normalize priority\n }\n\n const group = groupTemplates.find(\n (g) => g.groupId.toString() === newGroupId\n );\n\n if (group) {\n // Always push to the end\n group.seatings.push({\n id,\n seating,\n availQty,\n unitCst,\n faceValue,\n priority: group.seatings.length + 1,\n });\n\n setValue('templateSettings.groupTemplates', [\n ...groupTemplates,\n ]);\n } else {\n setValue('templateSettings.groupTemplates', [\n ...groupTemplates,\n ]);\n }\n }\n }}\n valueOptionsContent={availableGroups}\n />\n \n \n {groupBy.groupingType === GroupingType.Quantity ? (\n availQty\n ) : groupBy.groupingType === GroupingType.UnitCost ? (\n (unitCst?.disp ?? unitCst?.amt)\n ) : (\n \n )}\n \n \n );\n },\n [availableGroups, groupBy.groupingType, groupTemplates, setValue]\n );\n\n return (\n <>\n \n }\n style={{ width: 'max-content' }}\n >\n \n v && onGroupingTypeChange(v, groupBy.numOfClusters)\n }\n valueOptionsContent={getAvailableGroupingTypes([])}\n />\n \n {ListingGroupingTypesWithClusteringOptions.includes(\n groupBy.groupingType\n ) && (\n }\n style={{ width: 'max-content' }}\n >\n ) => {\n const v = parseInt(e.target.value);\n if (v >= 1) {\n if (v !== groupBy.numOfClusters) {\n onGroupingTypeChange(groupBy.groupingType, v);\n }\n }\n }}\n />\n \n )}\n }\n style={{ width: 'max-content' }}\n >\n ) => {\n const value = e.target.value;\n const v = parseInt(value);\n if (v >= 0) {\n if (v !== desiredActiveListings) {\n setValue(`templateSettings.desiredActiveListings`, v);\n }\n\n let hasChanged = false;\n groupTemplates.forEach((t) => {\n if (t.desiredActiveListings !== v) {\n t.desiredActiveListings = v;\n hasChanged = true;\n }\n });\n\n if (hasChanged) {\n setValue('templateSettings.groupTemplates', [\n ...groupTemplates,\n ]);\n }\n }\n }}\n />\n \n \n \n }\n checked={randomizePriority}\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (isChecked !== randomizePriority) {\n setValue('templateSettings.randomizePriority', isChecked);\n }\n }}\n />\n \n
    \n {\n const { id } = gts;\n const groupId = groupTemplates.find((gt) =>\n gt.seatings.some((s) => s.id === gts.id)\n )?.groupId;\n return renderRowContent(gts, groupId);\n }}\n />\n
    \n \n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Virtuoso } from 'react-virtuoso';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { newGuidId } from 'src/utils/idUtils';\nimport { EventWithData, GroupingType } from 'src/WebApiController';\n\nimport IconBulletList from '~icons/pos/bulletList';\n\nimport {\n GroupingTemplate,\n GroupingTemplateSeating,\n MergeListingGroupInputListFields,\n} from '../groupingTypes';\nimport { flattenListingGroup } from '../groupingUtils';\nimport * as styles from './GroupingTemplates.css';\nimport { GroupTemplateTable } from './GroupTemplateTable';\nimport { SeatingSelectionTable } from './SeatingSelectionTable';\n\nexport const GroupingTemplates = ({ events }: { events: EventWithData[] }) => {\n const { watch, setValue } =\n useFormContext();\n\n const groupBy = watch('templateSettings.groupBy');\n const groupTemplates = watch('templateSettings.groupTemplates');\n const desiredActiveListings = watch('templateSettings.desiredActiveListings');\n const deprioritizedQuantities = watch(\n 'templateSettings.deprioritizedQuantities'\n );\n\n const uniqueSeatings = useMemo(\n () =>\n Object.values(\n events.reduce(\n (result, ev) => {\n ev.entities.listings?.flatMap(flattenListingGroup).forEach((l) => {\n const section = l.seating.section;\n const row = l.seating.row;\n let availQty = null;\n let unitCst = null;\n let faceValue = null;\n let key = `${section}__${row}`;\n\n if (groupBy.groupingType === GroupingType.Quantity) {\n key = `${l.availQty}`;\n availQty = l.availQty;\n } else if (groupBy.groupingType === GroupingType.UnitCost) {\n key = `${l.unitCst?.amt || l.faceValue?.amt || 0}`;\n unitCst = l.unitCst;\n faceValue = l.faceValue;\n }\n\n if (!result[key] || !result[key].seating.rowId) {\n result[key] = {\n id: key,\n seating: l.seating,\n availQty,\n unitCst,\n faceValue,\n };\n }\n });\n\n return result;\n },\n {} as Record\n )\n ),\n [events, groupBy.groupingType]\n );\n\n const onGroupTemplateChange = useCallback(\n (template: GroupingTemplate, remove?: boolean) => {\n if (remove) {\n setValue('templateSettings.groupTemplates', [\n ...groupTemplates.filter((t) => t.groupId !== template.groupId),\n ]);\n } else {\n setValue('templateSettings.groupTemplates', [\n ...groupTemplates.filter((t) => t.groupId !== template.groupId),\n template,\n ]);\n }\n },\n [setValue, groupTemplates]\n );\n\n const newGroupName = useContent(ContentId.NewGroup);\n\n const onAddNewGroupTemplate = useCallback(() => {\n groupTemplates.push({\n groupId: newGuidId(),\n groupName: `${newGroupName} ${groupTemplates.length + 1}`,\n desiredActiveListings,\n deprioritizedQuantities,\n seatings: [],\n });\n\n setValue('templateSettings.groupTemplates', [...groupTemplates]);\n }, [\n deprioritizedQuantities,\n desiredActiveListings,\n groupTemplates,\n newGroupName,\n setValue,\n ]);\n\n const groupTemplateData = useMemo(\n () =>\n groupTemplates.toSorted((g1, g2) => g1.groupId.localeCompare(g2.groupId)),\n [groupTemplates]\n );\n\n return (\n \n (\n \n \n \n ),\n Footer: () => (\n <>\n {!groupTemplateData.length && (\n }>\n \n \n )}\n
    \n \n
    \n \n ),\n }}\n itemContent={(index, grt) => (\n 1}\n style={{ marginTop: vars.spacing['xl'] }}\n />\n )}\n />\n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const ShuffleIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n );\n};\n","import { SortingState, Updater } from '@tanstack/react-table';\nimport { isEmpty } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { RegisterOptions, useFormContext } from 'react-hook-form';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { moveElements, randomizeInPlace } from 'src/utils/arrayUtils';\nimport {\n IListingGroupItem,\n Listing,\n ListingGroupItemInput,\n} from 'src/WebApiController';\n\nimport {\n GroupListingSortingCriteria,\n MergeListingGroupInputListFields,\n} from './groupingTypes';\nimport { flattenListingGroup, quantityMatches } from './groupingUtils';\n\ntype FormEditableFields =\n | 'listingGroupItems'\n | 'desiredActiveListings'\n | 'minActiveListings'\n | 'maxActiveListings'\n | 'targetPercentage'\n | 'deprioritizedQuantities'\n | 'undRelAmt'\n | 'undAbsAmt';\ntype FormRegistableFields = 'name' | 'undAbsAmt';\n\nconst AllowedSortingColumns = ['Section', 'Row', 'Remaining'];\n\nexport const groupPrioritySort =\n (\n idToSortingCriteria: Record,\n deprioritizedQuantities: string[] | null\n ) =>\n (a: T, b: T): number => {\n if (isEmpty(deprioritizedQuantities)) {\n return a.priority - b.priority;\n }\n const { availableQuantity: quantityA } = idToSortingCriteria[a.listingId];\n const { availableQuantity: quantityB } = idToSortingCriteria[b.listingId];\n const deprioritizedA = quantityMatches(quantityA, deprioritizedQuantities);\n const deprioritizedB = quantityMatches(quantityB, deprioritizedQuantities);\n if (deprioritizedA === deprioritizedB) {\n return a.priority - b.priority;\n }\n return deprioritizedA ? 1 : -1;\n };\n\nconst groupColumnSort =\n (\n items: IListingGroupItem[],\n rowIdToRowOrdinalMap: Record | undefined,\n newSorting: SortingState\n ) =>\n (a: ListingGroupItemInput, b: ListingGroupItemInput): number => {\n const sortBySection = newSorting[0]?.id === 'Section';\n const sortByRow = newSorting[0]?.id === 'Row';\n const sortByUnsoldQty = newSorting[0]?.id === 'Remaining';\n\n // If we are sorting by the unsold qty (remaining) just use the number comparison\n const unsoldA = items.find((l) => l.id === a.listingId)?.availQty ?? 0;\n const unsoldB = items.find((l) => l.id === b.listingId)?.availQty ?? 0;\n if (sortByUnsoldQty) {\n if (newSorting[0].desc) {\n return unsoldB - unsoldA;\n }\n\n return unsoldA - unsoldB;\n }\n\n const seatingA = items.find((l) => l.id === a.listingId)?.seating;\n const seatingB = items.find((l) => l.id === b.listingId)?.seating;\n\n // If we are sorting by row, try to see if we can sort by the row ordinal. If that data is\n // not available, then we will fallback to the original behavior of sorting by row name\n if (sortByRow) {\n const rowOrdinalA =\n !!rowIdToRowOrdinalMap && seatingA?.rowId != null\n ? (rowIdToRowOrdinalMap[seatingA?.rowId] ?? undefined)\n : undefined;\n\n const rowOrdinalB =\n !!rowIdToRowOrdinalMap && seatingB?.rowId != null\n ? (rowIdToRowOrdinalMap[seatingB?.rowId] ?? undefined)\n : undefined;\n\n // Before we sort by row ordinal we need to ensure ordinals exist for both listings.\n // If either are missing, we cannot compare a valid row ordinal to an undefined row ordinal.\n //\n // Additionally, we cannot a default value when the ordinal is missing, as that could\n // lead to incorrect sorting. We want to avoid a scenario where all listings without\n // a valid row ordinal mapping are clustered together in the final sort. In these\n // cases, we prefer to fallback to just sorting on the string value of the row name.\n const canSortByOrdinals =\n rowOrdinalA !== undefined && rowOrdinalB !== undefined;\n\n if (canSortByOrdinals) {\n if (newSorting[0].desc) {\n return rowOrdinalB - rowOrdinalA;\n } else {\n return rowOrdinalA - rowOrdinalB;\n }\n }\n }\n\n const valueA = sortBySection ? seatingA?.section : (seatingA?.row ?? '');\n const valueB = sortBySection ? seatingB?.section : (seatingB?.row ?? '');\n\n if (valueA != null && valueB != null) {\n if (newSorting[0].desc) {\n return valueB.localeCompare(valueA, undefined, {\n numeric: true,\n });\n } else {\n return valueA.localeCompare(valueB, undefined, {\n numeric: true,\n });\n }\n }\n return 0;\n };\n\nexport const useGroupSortingCriteria = (listings: Listing[]) => {\n // This is used only for ordering of the grouped listings\n return useMemo(\n () =>\n (listings.flatMap(flattenListingGroup) as Listing[]).reduce(\n (acc, { id, isAdminHold, availQty }) => {\n acc[id] = {\n isAdminHold,\n availableQuantity: availQty,\n };\n return acc;\n },\n {} as Record\n ) ?? {},\n [listings]\n );\n};\n\n// Hook to group the group input form operations\nexport const useMergeListingGroupInputForm = (index: number) => {\n const { watch, setValue, formState, register } =\n useFormContext();\n const mergeListingGroupInputs = watch('mergeListingGroupInputs');\n const eventSettings = watch('eventSettings');\n const listingsInGroupInput = watch(`mergeListingGroupInputs.${index}`);\n\n const deprioritizedQuantities = useMemo(() => {\n if (!isEmpty(listingsInGroupInput?.deprioritizedQuantities)) {\n return listingsInGroupInput.deprioritizedQuantities;\n }\n return eventSettings?.[index]?.deprioritizedQuantities ?? [];\n }, [listingsInGroupInput?.deprioritizedQuantities, eventSettings, index]);\n\n const listingGroupNameError = useMemo(\n () => formState.errors.mergeListingGroupInputs?.[index]?.name?.message,\n [formState.errors.mergeListingGroupInputs, index]\n );\n\n const onDeleteGroup = useCallback(() => {\n mergeListingGroupInputs.splice(index, 1);\n setValue('mergeListingGroupInputs', [...mergeListingGroupInputs]);\n }, [index, mergeListingGroupInputs, setValue]);\n\n const onSetValues = useCallback(\n (\n name: FormEditableFields,\n value: ListingGroupItemInput[] | string[] | number | null\n ) => {\n switch (name) {\n case 'desiredActiveListings':\n case 'minActiveListings':\n case 'maxActiveListings':\n case 'targetPercentage':\n setValue(\n `mergeListingGroupInputs.${index}.${name}`,\n value as number | null\n );\n break;\n case 'deprioritizedQuantities':\n setValue(\n `mergeListingGroupInputs.${index}.${name}`,\n value as string[] | null\n );\n break;\n case 'listingGroupItems':\n setValue(\n `mergeListingGroupInputs.${index}.listingGroupItems`,\n value as ListingGroupItemInput[]\n );\n break;\n case 'undAbsAmt':\n case 'undRelAmt':\n setValue(\n `mergeListingGroupInputs.${index}.groupUndercutSetting.${name}`,\n value as number | null\n );\n break;\n default:\n break;\n }\n },\n [index, setValue]\n );\n\n const onRegister = useCallback(\n (name: FormRegistableFields, options: RegisterOptions) => {\n switch (name) {\n case 'name':\n return register(`mergeListingGroupInputs.${index}.name`, options);\n case 'undAbsAmt':\n return register(\n `mergeListingGroupInputs.${index}.groupUndercutSetting.undAbsAmt`,\n options\n );\n default:\n break;\n }\n },\n [index, register]\n );\n\n return {\n listingsInGroupInput,\n listingGroupNameError,\n deprioritizedQuantities,\n onDeleteGroup,\n onSetValues,\n onRegister,\n };\n};\n\n// Hook to group the group item table operations\nexport const useGroupItemTableOperations = (\n listings: Listing[],\n listingGroupItems: ListingGroupItemInput[] | null,\n deprioritizedQuantities: string[] | null,\n onSetValues: (\n name: FormEditableFields,\n value: ListingGroupItemInput[] | string[] | number | null\n ) => void\n) => {\n const [sorting, setSorting] = useState([]);\n const idToSortingCriteria = useGroupSortingCriteria(listings);\n\n useEffect(() => {\n // Reset sorting when listings change\n setSorting([]);\n }, [listingGroupItems?.length]);\n\n const { venueMapInfo } = useEventMapContext();\n const rowIdToRowOrdinalMap = useMemo(() => {\n return venueMapInfo?.sections.reduce(\n (acc, section) => {\n section.rows.forEach((row) => {\n if (row.id != null && row.ordinal != null) {\n acc[row.id] = row.ordinal;\n }\n });\n return acc;\n },\n {} as Record\n );\n }, [venueMapInfo]);\n\n const assignNewPriority = useCallback(\n (newPriority: number, listingId: number) => {\n if (listingGroupItems == null) return;\n\n // Remove sorting because we are going to change the order of listings\n // should override the existing sorting\n setSorting([]);\n const sorted = listingGroupItems\n .filter((l) => l.listingId > 0)\n .toSorted((a, b) => a.priority - b.priority);\n\n const toIndex = sorted.findIndex((l) => l.priority === newPriority);\n const fromIndex = sorted.findIndex((l) => l.listingId === listingId);\n if (fromIndex === toIndex) {\n return;\n }\n\n // Enfored order by the bottom ticket quantity\n const enforedListings = moveElements(sorted, fromIndex, toIndex)\n .map((l, i) => ({ ...l, priority: i + 1 }))\n .toSorted(\n groupPrioritySort(idToSortingCriteria, deprioritizedQuantities)\n )\n .map((l, i) => ({ ...l, priority: i + 1 }));\n\n // Save the new listing (ordered by priority)\n onSetValues(`listingGroupItems`, enforedListings);\n },\n [\n deprioritizedQuantities,\n idToSortingCriteria,\n listingGroupItems,\n onSetValues,\n ]\n );\n\n const onSortingChange = useCallback(\n (updater: Updater) => {\n if (listingGroupItems == null) return;\n\n const newSorting =\n typeof updater === 'function' ? updater(sorting) : updater;\n setSorting(newSorting);\n\n // Only allow sorting by Section, Row, and Unsold Qty (i.e. remaining)\n if (!AllowedSortingColumns.includes(newSorting[0]?.id)) {\n return;\n }\n\n const flattened = listings.flatMap(flattenListingGroup);\n\n // Sort and assign new priority to all listings based on sorting\n const listingsInGroupNew = listingGroupItems\n .filter((l) => l.listingId > 0)\n .toSorted(groupColumnSort(flattened, rowIdToRowOrdinalMap, newSorting))\n .map((l, i) => ({ ...l, priority: i + 1 }));\n\n // Enfored order by the bottom ticket quantity\n const enforedListings = listingsInGroupNew\n .toSorted(\n groupPrioritySort(idToSortingCriteria, deprioritizedQuantities)\n )\n .map((l, i) => ({ ...l, priority: i + 1 }));\n\n onSetValues(`listingGroupItems`, enforedListings);\n },\n [\n sorting,\n listings,\n listingGroupItems,\n idToSortingCriteria,\n deprioritizedQuantities,\n onSetValues,\n rowIdToRowOrdinalMap,\n ]\n );\n\n const onRandomizeRanks = useCallback(() => {\n if (listingGroupItems == null) return;\n\n setSorting([]);\n randomizeInPlace(listingGroupItems); // randomize the order and set the new order as the new priority\n\n const sortedListings = listingGroupItems\n .filter((l) => l.listingId > 0)\n .map((l, i) => ({ ...l, priority: i + 1 }))\n .toSorted(groupPrioritySort(idToSortingCriteria, deprioritizedQuantities))\n .map((l, i) => ({ ...l, priority: i + 1 }));\n\n onSetValues(`listingGroupItems`, sortedListings);\n }, [\n deprioritizedQuantities,\n idToSortingCriteria,\n listingGroupItems,\n onSetValues,\n ]);\n\n const removeListingFromInput = useCallback(\n (listingId: number) => {\n if (listingGroupItems == null) return;\n\n onSetValues(`listingGroupItems`, [\n ...listingGroupItems\n .filter((lx) => lx.listingId !== listingId)\n .map((lx, i) => ({ ...lx, priority: i + 1 })),\n ]);\n },\n [listingGroupItems, onSetValues]\n );\n\n const onUpdateDeprioritizedQuantities = useCallback(\n (value: string[]) => {\n if (listingGroupItems == null) return;\n\n const filteredItems = listingGroupItems.filter((l) => l.listingId > 0);\n if (filteredItems?.length > 0) {\n const sortedListings = listingGroupItems\n .filter((l) => l.listingId > 0)\n .map((l, i) => ({ ...l, priority: i + 1 }))\n .toSorted(groupPrioritySort(idToSortingCriteria, value))\n .map((l, i) => ({ ...l, priority: i + 1 }));\n onSetValues(`listingGroupItems`, sortedListings);\n }\n onSetValues(`deprioritizedQuantities`, value);\n },\n [idToSortingCriteria, listingGroupItems, onSetValues]\n );\n\n return {\n sorting,\n assignNewPriority,\n onSortingChange,\n onRandomizeRanks,\n onUpdateDeprioritizedQuantities,\n removeListingFromInput,\n };\n};\n","import { ColumnDef, SortingFn } from '@tanstack/react-table';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { vars } from 'src/core/themes';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { CrossIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getDeliveryTypeIcon } from 'src/utils/ticketTypeUtils';\nimport { DeliveryType, IListingGroupItem } from 'src/WebApiController';\n\nimport * as styles from '../GroupListings.css';\n\nexport type IListingGroupItemWithMeta = IListingGroupItem & {\n rank: number;\n assignNewPriority: (newPriority: number, listingId: number) => void;\n setUndercutAmount: (\n listingId: number,\n undercutAbsoluteAmount?: number | null,\n undercutRelativeAmount?: number | null\n ) => void;\n priorityOptions: Record;\n removeListingFromInput: (listingId: number) => void;\n};\n\nconst DeliveryTypeCell = ({ deliveryType }: { deliveryType: DeliveryType }) => {\n const icon = getDeliveryTypeIcon(deliveryType, null, IconsFill.textStrong);\n return icon;\n};\n\n// We don't sort the table using the built-in sorting mechanism,\n// rather we sort the data in the onSortingChange callback\nconst dummySortingFn: SortingFn = (_, b) => 0;\n\nexport const getListingGroupTableConfig =\n (): ColumnDef[] => [\n {\n id: 'Rank',\n header: () => (\n \n \n \n ),\n minSize: 80,\n maxSize: 100,\n cell: ({ row: { original, depth } }) => {\n if (!original) {\n return ;\n }\n\n const { rank, assignNewPriority, priorityOptions, id } = original;\n\n if (depth > 0) return null;\n\n return (\n \n {\n if (newPriorityString) {\n const newPriority = parseInt(newPriorityString);\n assignNewPriority(newPriority, id);\n }\n }}\n valueOptionsContent={priorityOptions}\n />\n \n );\n },\n enableSorting: false,\n },\n {\n id: 'Section',\n header: () => (\n \n \n \n ),\n minSize: 50,\n maxSize: 100,\n accessorFn: (data) => data?.seating.section,\n cell: ({ row: { original } }) => {\n if (!original) {\n return ;\n }\n\n return (\n {original.seating.section}\n );\n },\n sortingFn: dummySortingFn,\n },\n {\n id: 'Row',\n header: () => (\n \n \n \n ),\n minSize: 50,\n maxSize: 70,\n accessorFn: (data) => data?.seating.row ?? '',\n cell: ({ row: { original, depth } }) => {\n if (!original) {\n return ;\n }\n\n return (\n \n {depth === 0 ? (\n original.seating.row\n ) : (\n
    \n \n
    \n )}\n
    \n );\n },\n sortingFn: dummySortingFn,\n },\n {\n id: 'Seats',\n header: () => (\n \n \n \n ),\n minSize: 50,\n maxSize: 100,\n cell: ({ row: { original } }) => {\n if (!original) {\n return ;\n }\n\n let text = original.seating.seatFr;\n if (\n original.seating.seatTo &&\n original.seating.seatTo !== original.seating.seatFr\n ) {\n text += ` - ${original.seating.seatTo}`;\n }\n\n return {text};\n },\n enableSorting: false,\n },\n {\n id: 'TicketType',\n header: () => (\n \n \n \n ),\n minSize: 50,\n maxSize: 50,\n cell: ({ row: { original } }) => {\n if (!original) {\n return ;\n }\n\n return (\n \n {}\n \n );\n },\n enableSorting: false,\n },\n {\n id: 'Remaining',\n header: () => (\n \n \n \n ),\n minSize: 70,\n maxSize: 70,\n accessorFn: (data) => data?.availQty,\n cell: function Cell({ row: { original } }) {\n if (!original) {\n return ;\n }\n\n return (\n \n {original.availQty ?? }\n \n );\n },\n sortingFn: dummySortingFn,\n },\n {\n id: 'Original',\n header: () => (\n \n \n \n ),\n minSize: 70,\n maxSize: 70,\n cell: ({ row: { original } }) => {\n if (!original) {\n return ;\n }\n\n return {original.ticketCnt};\n },\n enableSorting: false,\n },\n {\n id: 'UnitCost',\n header: () => (\n \n \n \n ),\n minSize: 70,\n maxSize: 100,\n cell: function Cell({ row: { original } }) {\n if (!original) {\n return ;\n }\n\n return (\n \n {original.unitCst?.disp ?? original?.faceValue?.disp ?? (\n \n )}\n \n );\n },\n enableSorting: false,\n },\n {\n id: 'Action',\n header: () => (\n \n \n \n ),\n minSize: 60,\n maxSize: 60,\n cell: function Cell({ row: { original } }) {\n const deleteText = useContent(ContentId.Delete);\n\n if (!original) {\n return ;\n }\n\n return (\n \n original.removeListingFromInput(original.id)}\n size={vars.iconSize.m}\n />\n \n );\n },\n enableSorting: false,\n },\n ];\n","import {\n getExpandedRowModel,\n InitialTableState,\n PaginationState,\n SortingState,\n TableOptions,\n Updater,\n} from '@tanstack/react-table';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Table } from 'src/tables/Table';\nimport { Feature } from 'src/WebApiController';\n\nimport {\n getListingGroupTableConfig,\n IListingGroupItemWithMeta,\n} from './ListingGroupTableColumnsConfig';\n\nexport type ListingGroupInputTableDataProps = {\n data: IListingGroupItemWithMeta[];\n};\n\nexport type ListingGroupInputTableProps = ListingGroupInputTableDataProps & {\n onMount?: () => void;\n onUnmount?: (state: object) => void;\n initState?: InitialTableState;\n sorting?: SortingState;\n onSortingChange?: (sorting: Updater) => void;\n useVirtuoso?: boolean;\n};\n\nconst PAGE_SIZE = 10;\n\nexport function ListingGroupInputTable({\n data,\n onMount,\n onUnmount,\n initState,\n sorting,\n onSortingChange,\n useVirtuoso,\n}: ListingGroupInputTableProps) {\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n const hasUndercutByRankListingGroupFeature = useUserHasFeature(\n Feature.UndercutByRankListingGroup\n );\n const [{ pageIndex, pageSize }, setPagination] = useState({\n pageIndex: initState?.pagination?.pageIndex || 0,\n pageSize: PAGE_SIZE,\n });\n const pagination = useMemo(\n () => ({\n pageIndex,\n pageSize: Math.max(pageSize, data.length),\n }),\n [data.length, pageIndex, pageSize]\n );\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n const options: Partial> =\n useMemo(\n () => ({\n data,\n columns: getListingGroupTableConfig().map((c) => ({\n ...c,\n enableSorting:\n c.id === 'Section' ||\n c.id === 'Row' ||\n c.id === 'Remaining' ||\n c.enableSorting,\n })),\n state: {\n pagination,\n sorting,\n },\n onPaginationChange: setPagination,\n onSortingChange: onSortingChange,\n getRowCanExpand: () =>\n hasAutoPricingFeature && hasUndercutByRankListingGroupFeature,\n getSubRows: (originalRow) =>\n (originalRow?.id ?? 0) > 0\n ? [{ ...originalRow!, id: -originalRow!.id }]\n : [], // we just want the same row - but we'll be display separate content\n getExpandedRowModel: (table) => getExpandedRowModel()(table),\n paginateExpandedRows: false,\n }),\n [\n data,\n hasAutoPricingFeature,\n hasUndercutByRankListingGroupFeature,\n onSortingChange,\n pagination,\n sorting,\n ]\n );\n\n return ;\n}\n","import clsx from 'clsx';\nimport { isEqual, range } from 'lodash-es';\nimport { ChangeEvent, useCallback, useMemo } from 'react';\nimport { MinRowsForUsingVirtuoso } from 'src/components/Accordions';\nimport {\n Content,\n getContent,\n useContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ShuffleIcon } from 'src/svgs/ShuffleIcon';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport {\n Listing,\n ListingGroupItemInput,\n ListingGroupUndercutSetting,\n} from 'src/WebApiController';\nimport { Feature } from 'src/WebApiController';\n\nimport * as styles from '../GroupListings.css';\nimport { flattenListingGroup, getQuantitiesOptions } from './groupingUtils';\nimport {\n useGroupItemTableOperations,\n useMergeListingGroupInputForm,\n} from './ListingGroupInput.hook';\nimport { ListingGroupInputTable } from './ListingGroupInputTable';\nimport { IListingGroupItemWithMeta } from './ListingGroupTableColumnsConfig';\n\nexport const ListingGroupInput = ({\n mergeListingGroupInputIndex,\n listings,\n style,\n}: {\n listings: Listing[];\n mergeListingGroupInputIndex: number;\n style?: React.CSSProperties;\n}) => {\n const { getUiCurrency } = useLocalizationContext();\n const firstListing = useMemo(() => {\n if (listings.length === 0) {\n return undefined;\n }\n return listings[0];\n }, [listings]);\n const currency = getUiCurrency(firstListing?.currency);\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n const hasGroupingDripFeature = useUserHasFeature(Feature.GroupingDrip);\n\n const contentContext = useContentContext();\n const requiredMsg = useContent(ContentId.Required);\n\n const {\n listingsInGroupInput,\n listingGroupNameError,\n deprioritizedQuantities: inferredDeprioritizedQuantities, // default to event settings value\n onDeleteGroup,\n onSetValues,\n onRegister,\n } = useMergeListingGroupInputForm(mergeListingGroupInputIndex);\n const {\n groupUndercutSetting,\n listingGroupItems,\n desiredActiveListings,\n minActiveListings,\n maxActiveListings,\n targetPercentage,\n deprioritizedQuantities,\n } = listingsInGroupInput ?? {};\n const { undAbsAmt = null, undRelAmt = null } =\n groupUndercutSetting ?? ({} as ListingGroupUndercutSetting);\n\n const {\n sorting,\n assignNewPriority,\n onSortingChange,\n onRandomizeRanks,\n onUpdateDeprioritizedQuantities,\n removeListingFromInput,\n } = useGroupItemTableOperations(\n listings,\n listingGroupItems,\n inferredDeprioritizedQuantities,\n onSetValues\n );\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const setUndercutAmount = useCallback(\n (\n listingId: number,\n undercutAbsoluteAmount?: number | null,\n undercutRelativeAmount?: number | null\n ) => {\n const item = listingGroupItems.findLast((l) => l.listingId === listingId);\n if (\n !!item &&\n (undercutAbsoluteAmount != null || undercutRelativeAmount != null)\n ) {\n item.undercutSetting = {\n undAbsAmt: undercutAbsoluteAmount ?? null,\n undRelAmt: undercutRelativeAmount ?? null,\n actRankUndAbsAmt: null,\n actRankUndRelAmt: null,\n };\n\n onSetValues(`listingGroupItems`, [...listingGroupItems]);\n }\n },\n [listingGroupItems, onSetValues]\n );\n\n const data = useMemo(() => {\n if (listingGroupItems == null) return;\n\n const itemsSize = listingGroupItems.filter((l) => l.listingId > 0).length;\n const priorityOptions = range(itemsSize).reduce(\n (r, i) => {\n r[(i + 1).toString()] = (i + 1).toString();\n return r;\n },\n {} as Record\n );\n\n const listingsInGroupMap = listingGroupItems.reduce(\n (r, l) => {\n r[l.listingId] = l;\n return r;\n },\n {} as Record\n );\n\n return listings\n ?.flatMap(flattenListingGroup)\n ?.filter((l) => listingsInGroupMap[l.id])\n ?.toSorted(\n (a, b) =>\n listingsInGroupMap[a.id].priority - listingsInGroupMap[b.id].priority\n )\n ?.map((l, i) => {\n return {\n ...l,\n rank: i,\n assignNewPriority,\n setUndercutAmount,\n priorityOptions,\n removeListingFromInput,\n ltGrpUndercut: {\n undAbsAmt: null,\n undRelAmt: null,\n actRankUndAbsAmt: null,\n actRankUndRelAmt: null,\n },\n };\n });\n }, [\n assignNewPriority,\n listings,\n listingGroupItems,\n removeListingFromInput,\n setUndercutAmount,\n ]);\n\n const useVirtuoso = data && data.length > MinRowsForUsingVirtuoso;\n\n // This only happens when the container is virtuoso and the data is not ready\n if (!listingsInGroupInput || !data) {\n return null;\n }\n\n return (\n \n \n }\n errors={listingGroupNameError}\n style={{ flex: '1' }}\n >\n \n \n\n {hasAutoPricingFeature ? (\n }\n style={{ flex: '0.5' }}\n >\n (v ? parseFloat(v) : null),\n })}\n value={undAbsAmt ?? undefined}\n />\n\n {\n const v = parseFloat(e.target.value);\n let relativeValue = null;\n if (v >= 0 && v <= Number.MAX_VALUE) {\n relativeValue = Math.min(v, 100) / 100;\n }\n onSetValues(`undRelAmt`, relativeValue);\n }}\n value={\n undRelAmt != null\n ? roundToPrecision(Math.abs(undRelAmt) * 100, 8)\n : ''\n }\n />\n \n ) : null}\n {hasGroupingDripFeature == false && (\n }\n style={{ width: '155px' }}\n >\n ) => {\n const v = parseInt(e.target.value);\n let desiredActiveListings = null;\n if (v >= 0) {\n desiredActiveListings = Math.min(v, listingGroupItems.length);\n }\n onSetValues(`desiredActiveListings`, desiredActiveListings);\n }}\n />\n \n )}\n\n }\n style={{ width: '190px' }}\n >\n {\n if (!isEqual(newValues, deprioritizedQuantities)) {\n onUpdateDeprioritizedQuantities(newValues);\n }\n }}\n valueOptionsContent={getQuantitiesOptions()}\n />\n \n\n \n \n \n \n \n \n \n {hasGroupingDripFeature && (\n \n }\n style={{ width: '155px' }}\n >\n ) => {\n const v = parseInt(e.target.value);\n if (!isNaN(v)) {\n if (v > (maxActiveListings ?? 0)) {\n onSetValues(`maxActiveListings`, v);\n }\n\n onSetValues(`minActiveListings`, v);\n }\n }}\n />\n \n }\n style={{ width: '155px' }}\n >\n ) => {\n const v = parseInt(e.target.value);\n if (!isNaN(v)) {\n if (v < (minActiveListings ?? 0)) {\n onSetValues(`minActiveListings`, v);\n }\n onSetValues(`maxActiveListings`, v);\n }\n }}\n />\n \n }\n style={{ flex: '0.5' }}\n >\n {\n const v = parseFloat(e.target.value);\n let target = null;\n if (v >= 0 && v <= Number.MAX_VALUE) {\n target = Math.min(v, 100) / 100;\n }\n onSetValues(`targetPercentage`, target);\n }}\n value={\n targetPercentage != null\n ? roundToPrecision(Math.abs(targetPercentage) * 100, 8)\n : ''\n }\n />\n \n \n )}\n \n \n \n \n );\n};\n","import { ChangeEvent, useCallback, useState } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { BUCKET_OPTIONS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { BucketType, GroupingType } from 'src/WebApiController';\n\nimport {\n ListingGroupBy,\n ListingGroupingTypesWithClusteringOptions,\n} from './groupingTypes';\n\nexport const GroupingBucketOptions = ({\n index,\n groupBy,\n canClusterByRows,\n onGroupingTypeChange,\n}: {\n index: number;\n groupBy: ListingGroupBy;\n canClusterByRows: boolean;\n onGroupingTypeChange: (\n groupByIndex: number,\n newGroupType: GroupingType,\n newNumOfClusters?: number,\n newBucketOption?: BucketType\n ) => void;\n}) => {\n const [bucketOption, setBucketOption] = useState(\n BucketType.Clusters\n );\n\n const shouldShowBucketsOption = useCallback(\n (groupBy: ListingGroupBy) => {\n if (groupBy.groupingType === GroupingType.Row) {\n return canClusterByRows;\n }\n\n return ListingGroupingTypesWithClusteringOptions.includes(\n groupBy.groupingType\n );\n },\n [canClusterByRows]\n );\n\n const onBucketOptionChange = useCallback((option: BucketType) => {\n setBucketOption(option);\n }, []);\n\n if (!shouldShowBucketsOption(groupBy)) {\n return null;\n }\n\n return (\n \n }\n style={{ width: 'max-content' }}\n >\n ) => {\n const v = parseInt(e.target.value);\n if (v >= 1) {\n if (v !== groupBy.numOfClusters) {\n onGroupingTypeChange(\n index,\n groupBy.groupingType,\n v,\n bucketOption\n );\n }\n }\n }}\n />\n \n }\n style={{ width: 'max-content' }}\n >\n {\n if (v != null) {\n onBucketOptionChange(v);\n onGroupingTypeChange(\n index,\n groupBy.groupingType,\n groupBy.numOfClusters ?? 1,\n v\n );\n }\n }}\n />\n \n \n );\n};\n","import { isEmpty, isEqual } from 'lodash-es';\nimport { ChangeEvent, useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { TableVirtuoso } from 'react-virtuoso';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { useInventoryEventBulkActionsState } from 'src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/useInventoryEventBulkActionsState';\nimport { ListingDeliveryTypeDisplay } from 'src/components/Listings/ListingDeliveryTypeDisplay';\nimport {\n Content,\n getContent,\n useContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { PosEnumSelect, PosSelect } from 'src/core/POS/PosSelect';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { SimpleTable, Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { FormatOption } from 'src/modals/EditTableColumns';\nimport { ListingGroupIcon } from 'src/svgs';\nimport { ShuffleIcon } from 'src/svgs/ShuffleIcon';\nimport { ResetIcon } from 'src/svgs/Viagogo';\nimport { randomizeInPlace } from 'src/utils/arrayUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { newGuidId } from 'src/utils/idUtils';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { getCompleteEventConfigScoreOverrides } from 'src/utils/seatScoreUtils';\nimport { sortSeating } from 'src/utils/tableUtils';\nimport { BucketType, EventWithData, GroupingType } from 'src/WebApiController';\nimport {\n Feature,\n IListingGroupItem,\n Listing,\n ListingGroupItemInput,\n MergeListingGroupInput,\n} from 'src/WebApiController';\n\nimport * as styles from '../GroupListings.css';\nimport { GroupingBucketOptions } from './GroupingBucketOptions';\nimport {\n GroupListingSortingCriteria,\n ListingGroupBy,\n ListingGroupingTypesNotSupportingAdditionalGroupBys,\n MergeListingGroupInputListFields,\n} from './groupingTypes';\nimport {\n flattenListingGroup,\n getAvailableGroupingTypes,\n getListingGroupsMap,\n getQuantitiesOptions,\n quantityMatches,\n} from './groupingUtils';\nimport {\n groupPrioritySort,\n useGroupSortingCriteria,\n} from './ListingGroupInput.hook';\n\n/**\n * The comparator function for sorting the grouped listings.\n *\n * We first sort by the admin hold status, then by the priority.\n * And always lock the remaining ticket quantity same to bottom ticket quantity at the bottom.\n *\n * @param idToSortingCriteria\n * @param deprioritizedQuantities\n * @returns the sorting function\n */\nconst prioritySort =\n (\n idToSortingCriteria: Record,\n deprioritizedQuantities: string[] | null\n ) =>\n (a: T, b: T) => {\n const criteriaA = idToSortingCriteria[a.listingId];\n const criteriaB = idToSortingCriteria[b.listingId];\n if (!isEmpty(deprioritizedQuantities)) {\n const matchesA = quantityMatches(\n criteriaA.availableQuantity,\n deprioritizedQuantities\n );\n const matchesB = quantityMatches(\n criteriaB.availableQuantity,\n deprioritizedQuantities\n );\n if (matchesA || matchesB) {\n if (matchesA) {\n return 1;\n }\n if (matchesB) {\n return -1;\n }\n }\n }\n if (criteriaA.isAdminHold !== criteriaB.isAdminHold) {\n return criteriaA.isAdminHold ? 1 : -1;\n }\n return a.priority - b.priority;\n };\n\nexport const ListingTableForGroups = ({\n event,\n eventIndex,\n}: {\n event: EventWithData;\n eventIndex: number;\n}) => {\n const { watch, setValue, getValues } =\n useFormContext();\n\n const { filterQueryWithEventIds } = useInventoryEventBulkActionsState(\n event.event\n );\n\n const hasBulkActionGroupListingsFeature = useUserHasFeature(\n Feature.BulkActionGroupListings\n );\n\n const eventListings = useMemo(() => {\n const selectedListingIds = filterQueryWithEventIds.entityIds ?? [];\n if (\n selectedListingIds.length == 0 ||\n event.entities.listings == null ||\n !hasBulkActionGroupListingsFeature\n ) {\n return event.entities.listings;\n }\n\n return event.entities.listings.filter((l) =>\n selectedListingIds.includes(l.id)\n );\n }, [\n filterQueryWithEventIds.entityIds,\n event.entities.listings,\n hasBulkActionGroupListingsFeature,\n ]);\n\n const mergeListingGroupInputs = watch('mergeListingGroupInputs');\n const noneStr = useContent(ContentId.None);\n\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n const hasGroupingDripFeature = useUserHasFeature(Feature.GroupingDrip);\n const hasListingGroupingMethodsFeature = useUserHasFeature(\n Feature.ListingGroupingMethods\n );\n\n const { getUiCurrency } = useLocalizationContext();\n const firstListing = useMemo(() => {\n if (eventListings != null && eventListings.length > 0) {\n return eventListings[0] ?? undefined;\n }\n }, [eventListings]);\n const currency = getUiCurrency(firstListing?.currency ?? 'USD');\n\n // Purposely not using useMemo for these eventMergeListingGroupInputs and availableGroups\n // because the useMemo will not detect a change to mergeListingGroupInputs\n const eventMergeListingGroupInputs = mergeListingGroupInputs.filter(\n (m) =>\n event.event.viagVirtualId ===\n (m.viagogoEventId?.toString() ?? m.viagogoMappingId)\n );\n const availableGroups = eventMergeListingGroupInputs.reduce(\n (r, g) => {\n r[g.listingGroupId] = g.name;\n return r;\n },\n { None: noneStr } as Record\n );\n\n // Following the pattern above, we still want to memoize the options to\n // avoid unnecessary re-renders\n const availableGroupsSerialized = useMemo(\n () => JSON.stringify(availableGroups),\n [availableGroups]\n );\n\n const availableGroupsMemo = useMemo(\n () => availableGroups,\n // useMemo uses referential equality to determine if the value has changed\n // so we need to serialize the object to a string to ensure that it is\n // the same object\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [availableGroupsSerialized]\n );\n\n const groupBys = watch(`eventSettings.${eventIndex}.groupBys`);\n const desiredActiveListings = watch(\n `eventSettings.${eventIndex}.desiredActiveListings`\n );\n const deprioritizedQuantities = watch(\n `eventSettings.${eventIndex}.deprioritizedQuantities`\n );\n const templateUndercutAbsoluteAmount = watch(\n 'templateSettings.templateRankPremiums.undercutAbsoluteAmount'\n );\n const templateUndercutRelativeAmount = watch(\n 'templateSettings.templateRankPremiums.undercutRelativeAmount'\n );\n const templateMinActiveListings = watch('templateSettings.minActiveListings');\n const templateMaxActiveListings = watch('templateSettings.maxActiveListings');\n const templateTargetPercentage = watch('templateSettings.targetPercentage');\n\n const contentContext = useContentContext();\n\n const newGroupName = useContent(ContentId.NewGroup);\n\n // This is used only for ordering of the grouped listings\n const idToSortingCriteria = useGroupSortingCriteria(eventListings ?? []);\n\n const onSortingListing = useCallback(\n (\n groupIndex: number,\n overrideQuantities: string[] | null,\n additionalInput?: ListingGroupItemInput,\n listingIdsToRemove?: Set | null\n ) => {\n if (groupIndex >= mergeListingGroupInputs.length) {\n return;\n }\n const group = mergeListingGroupInputs[groupIndex];\n\n // Sort based on the group level deprioritizedQuantities default to event level value\n const quantities = overrideQuantities ?? deprioritizedQuantities;\n const updatedListingGroupItems = group.listingGroupItems\n .filter((gl) => !listingIdsToRemove?.has(gl.listingId))\n .concat(additionalInput || [])\n .map((gl, i) => ({ ...gl, priority: i + 1 }))\n .toSorted(prioritySort(idToSortingCriteria, quantities))\n .map((gl, i) => ({ ...gl, priority: i + 1 }));\n\n setValue(\n `mergeListingGroupInputs.${groupIndex}.listingGroupItems`,\n updatedListingGroupItems\n );\n },\n [\n mergeListingGroupInputs,\n deprioritizedQuantities,\n idToSortingCriteria,\n setValue,\n ]\n );\n\n // Sort the group listings on add the new listing to the group\n const onListingIdsSelected = useCallback(\n (listing: Listing, newGroupId: string | null) => {\n const allSelectedListings = flattenListingGroup(listing);\n\n allSelectedListings.forEach((l) => {\n const oldGroupIndex = mergeListingGroupInputs.findIndex((g) =>\n g.listingGroupItems.some((gl) => gl.listingId === l.id)\n );\n\n if (oldGroupIndex >= 0) {\n const overrideQuantities = getValues(\n `mergeListingGroupInputs.${oldGroupIndex}.deprioritizedQuantities`\n );\n\n const listingIdsToRemove = new Set(\n allSelectedListings.map((l) => l.id)\n );\n\n onSortingListing(\n oldGroupIndex,\n overrideQuantities,\n undefined,\n listingIdsToRemove\n );\n }\n\n const groupIndex = mergeListingGroupInputs.findIndex(\n (g) => g.listingGroupId === newGroupId\n );\n if (groupIndex >= 0) {\n const overrideQuantities = getValues(\n `mergeListingGroupInputs.${groupIndex}.deprioritizedQuantities`\n );\n onSortingListing(groupIndex, overrideQuantities, {\n listingId: l.id,\n priority: -1,\n groupId: l.ltGrpId,\n undercutSetting: null,\n });\n }\n });\n },\n [getValues, mergeListingGroupInputs, onSortingListing]\n );\n\n const { venueMapInfo, activeConfigOverride } = useEventMapContext();\n\n const rowIdToRowOrdinalMap = useMemo(() => {\n return venueMapInfo?.sections.reduce(\n (acc, section) => {\n section.rows.forEach((row) => {\n if (row.id != null && row.ordinal != null) {\n acc[row.id] = row.ordinal;\n }\n });\n return acc;\n },\n {} as Record\n );\n }, [venueMapInfo]);\n\n // In order to be able to cluster by rows, we need to have the row ordinals available for all listings\n const canClusterByRows = useMemo(() => {\n if (!eventListings?.length || rowIdToRowOrdinalMap == null) {\n return false;\n }\n\n const listingsForGrouping = eventListings.flatMap(flattenListingGroup);\n return listingsForGrouping.every((l) => {\n const rowOrdinal =\n rowIdToRowOrdinalMap !== undefined && l.seating?.rowId != null\n ? (rowIdToRowOrdinalMap[l.seating?.rowId] ?? undefined)\n : undefined;\n\n return rowOrdinal !== undefined;\n });\n }, [eventListings, rowIdToRowOrdinalMap]);\n\n const scoreOverrides = useMemo(\n () =>\n getCompleteEventConfigScoreOverrides(\n venueMapInfo?.sectionScores,\n activeConfigOverride?.scoreOverrides,\n false\n ),\n [activeConfigOverride?.scoreOverrides, venueMapInfo?.sectionScores]\n );\n\n const getGroupedListings = useCallback(\n (groupBys: ListingGroupBy[]) => {\n if (!eventListings?.length) {\n return [];\n }\n\n const listingsForGrouping = eventListings.flatMap(flattenListingGroup);\n\n const listingGroupsMap = getListingGroupsMap(\n groupBys,\n contentContext,\n listingsForGrouping,\n scoreOverrides,\n venueMapInfo?.sections,\n rowIdToRowOrdinalMap,\n canClusterByRows\n );\n\n return !listingGroupsMap\n ? []\n : Object.values(listingGroupsMap)\n .filter((group) => group.data.length)\n .toSorted((a, b) => a.name.localeCompare(b.name))\n .map((group) => {\n const mappedListings = group.data\n .map((l, i) => ({\n // listingId: number\n listingId: l.id,\n // priority: number\n priority: i + 1,\n groupId: (l as IListingGroupItem).ltGrpId,\n }))\n .toSorted(\n prioritySort(idToSortingCriteria, deprioritizedQuantities)\n )\n .map((l, i) => ({\n listingId: l.listingId,\n priority: i + 1,\n groupId: l.groupId,\n }));\n\n const groupingMethods = groupBys.map((groupBy, index) => {\n return {\n groupingOrder: index,\n groupingType: groupBy.groupingType,\n groupingValue: group.values?.[index] ?? null,\n numberOfBucket: groupBy.numOfClusters ?? null,\n bucketType: groupBy.bucketOption ?? null,\n };\n });\n\n return {\n groupingName: group.name,\n mappedListings,\n viagogoEventId: event.event.viagId,\n viagogoMappingId: event.event.mappingId,\n groupingMethods: hasListingGroupingMethodsFeature\n ? {\n groupingMethods,\n }\n : null,\n };\n });\n },\n [\n eventListings,\n event.event.viagId,\n event.event.mappingId,\n contentContext,\n scoreOverrides,\n venueMapInfo?.sections,\n rowIdToRowOrdinalMap,\n canClusterByRows,\n idToSortingCriteria,\n deprioritizedQuantities,\n hasListingGroupingMethodsFeature,\n ]\n );\n\n const updateGroupedListings = useCallback(\n (localGroupBys: ListingGroupBy[]) => {\n if (!localGroupBys?.length || isEqual(localGroupBys, groupBys)) {\n return;\n }\n\n setValue(`eventSettings.${eventIndex}.groupBys`, [...localGroupBys]);\n const deprioritizedQuantities = getValues(\n `eventSettings.${eventIndex}.deprioritizedQuantities`\n );\n\n switch (localGroupBys[0].groupingType) {\n case GroupingType.Custom:\n if (eventMergeListingGroupInputs.length === 0) {\n setValue('mergeListingGroupInputs', [\n ...mergeListingGroupInputs,\n {\n listingGroupId: newGuidId(),\n name: `${newGroupName} 1`,\n listingGroupItems: [],\n desiredActiveListings: 0,\n minActiveListings: 0,\n maxActiveListings: 0,\n targetPercentage: 0,\n deprioritizedQuantities,\n viagogoEventId: event.event.viagId,\n viagogoMappingId: event.event.mappingId,\n marketplaceSettings: null,\n groupUndercutSetting: {\n undAbsAmt: null,\n undRelAmt: null,\n actRankUndAbsAmt: null,\n actRankUndRelAmt: null,\n },\n groupingMethods: null,\n } as MergeListingGroupInput,\n ]);\n }\n\n break;\n default:\n {\n const nonEventGroupInputs = mergeListingGroupInputs.filter(\n (m) =>\n event.event.viagVirtualId !==\n (m.viagogoEventId?.toString() ?? m.viagogoMappingId)\n );\n const groups = getGroupedListings(localGroupBys);\n setValue('mergeListingGroupInputs', [\n ...nonEventGroupInputs,\n ...groups.map(\n ({\n groupingName,\n mappedListings,\n viagogoEventId,\n viagogoMappingId,\n groupingMethods,\n }) =>\n ({\n listingGroupId: newGuidId(),\n name: groupingName,\n listingGroupItems: mappedListings,\n desiredActiveListings: 0,\n deprioritizedQuantities,\n marketplaceSettings: null,\n viagogoEventId,\n viagogoMappingId,\n groupUndercutSetting: {\n undAbsAmt: null,\n undRelAmt: null,\n actRankUndAbsAmt: null,\n actRankUndRelAmt: null,\n },\n groupingMethods,\n }) as MergeListingGroupInput\n ),\n ]);\n }\n break;\n }\n },\n [\n event.event.mappingId,\n event.event.viagId,\n event.event.viagVirtualId,\n eventIndex,\n eventMergeListingGroupInputs.length,\n getGroupedListings,\n getValues,\n groupBys,\n mergeListingGroupInputs,\n newGroupName,\n setValue,\n ]\n );\n\n const onGroupingTypeChange = useCallback(\n (\n groupByIndex: number,\n newGroupType: GroupingType,\n newNumOfClusters?: number,\n newBucketOption?: BucketType\n ) => {\n const newGroupBys = groupBys.map((gb) => ({ ...gb }));\n if (groupByIndex >= groupBys.length) {\n newGroupBys.push({\n groupingType: newGroupType,\n numOfClusters: newNumOfClusters,\n bucketOption: newBucketOption,\n } as ListingGroupBy);\n } else {\n newGroupBys[groupByIndex].groupingType = newGroupType;\n newGroupBys[groupByIndex].numOfClusters = newNumOfClusters;\n newGroupBys[groupByIndex].bucketOption = newBucketOption;\n }\n\n updateGroupedListings(newGroupBys);\n },\n [groupBys, updateGroupedListings]\n );\n\n const onRandomizeRanks = useCallback(() => {\n const newMlgis = mergeListingGroupInputs.map((lg) => {\n randomizeInPlace(lg.listingGroupItems); // randomize the order and set the new order as the new priority\n\n const sortedListings = lg.listingGroupItems\n .toSorted(prioritySort(idToSortingCriteria, deprioritizedQuantities))\n .map((l, i) => ({ ...l, priority: i + 1 }));\n\n return { ...lg, listingGroupItems: sortedListings };\n });\n setValue('mergeListingGroupInputs', newMlgis);\n }, [\n deprioritizedQuantities,\n idToSortingCriteria,\n mergeListingGroupInputs,\n setValue,\n ]);\n\n const onResetAllGroups = useCallback(() => {\n const otherGroups = mergeListingGroupInputs.filter(\n (m) =>\n event.event.viagVirtualId !==\n (m.viagogoEventId?.toString() ?? m.viagogoMappingId)\n );\n setValue('mergeListingGroupInputs', otherGroups);\n setValue(`eventSettings.${eventIndex}`, {\n groupBys: [\n {\n groupingType: GroupingType.Custom,\n },\n {\n groupingType: GroupingType.None,\n },\n ],\n desiredActiveListings: 0,\n minActiveListings: 0,\n maxActiveListings: 0,\n targetPercentage: 0,\n deprioritizedQuantities: [],\n });\n }, [\n event.event.viagVirtualId,\n eventIndex,\n mergeListingGroupInputs,\n setValue,\n ]);\n\n const renderHeaderContent = useCallback(() => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }, []);\n\n const renderGroupDripTemplate = useCallback(() => {\n if (!hasGroupingDripFeature) {\n return null;\n }\n\n return (\n \n }\n style={{ width: '155px' }}\n >\n ) => {\n const v = parseInt(e.target.value);\n if (!isNaN(v)) {\n setValue('templateSettings.minActiveListings', v);\n\n if (v > (templateMaxActiveListings ?? 0)) {\n setValue('templateSettings.maxActiveListings', v);\n }\n\n let hasChanged = false;\n mergeListingGroupInputs.forEach((t) => {\n if (t.minActiveListings !== v) {\n t.minActiveListings = v;\n hasChanged = true;\n }\n\n if (\n v > (templateMaxActiveListings ?? 0) &&\n t.maxActiveListings !== v\n ) {\n t.maxActiveListings = v;\n hasChanged = true;\n }\n });\n if (hasChanged) {\n setValue('mergeListingGroupInputs', [\n ...mergeListingGroupInputs,\n ]);\n }\n }\n }}\n />\n \n }\n style={{ width: '155px' }}\n >\n ) => {\n const v = parseInt(e.target.value);\n if (!isNaN(v)) {\n setValue('templateSettings.maxActiveListings', v);\n\n if (v < (templateMinActiveListings ?? 0)) {\n setValue('templateSettings.minActiveListings', v);\n }\n\n let hasChanged = false;\n mergeListingGroupInputs.forEach((t) => {\n if (\n v < (templateMinActiveListings ?? 0) &&\n t.minActiveListings !== v\n ) {\n t.minActiveListings = v;\n hasChanged = true;\n }\n\n if (t.maxActiveListings !== v) {\n t.maxActiveListings = v;\n hasChanged = true;\n }\n });\n\n if (hasChanged) {\n setValue('mergeListingGroupInputs', [\n ...mergeListingGroupInputs,\n ]);\n }\n }\n }}\n />\n \n }\n style={{ flex: '0.5' }}\n >\n {\n const v = parseFloat(e.target.value);\n let target = v;\n if (v >= 0 && v <= Number.MAX_VALUE) {\n target = Math.min(v, 100) / 100;\n }\n\n setValue('templateSettings.targetPercentage', target);\n\n let hasChanged = false;\n mergeListingGroupInputs.forEach((t) => {\n if (t.targetPercentage !== target) {\n t.targetPercentage = target;\n hasChanged = true;\n }\n });\n\n if (hasChanged) {\n setValue('mergeListingGroupInputs', [\n ...mergeListingGroupInputs,\n ]);\n }\n }}\n />\n \n \n );\n }, [\n hasGroupingDripFeature,\n mergeListingGroupInputs,\n setValue,\n templateMaxActiveListings,\n templateMinActiveListings,\n templateTargetPercentage,\n ]);\n\n const renderRowContent = useCallback(\n (l: Listing, ltGrpId: string | undefined) => {\n return (\n <>\n \n {\n onListingIdsSelected(l, newGroupId);\n }}\n valueOptionsContent={availableGroupsMemo}\n />\n \n \n \n {l.isLtGrp && (\n \n )}\n \n \n \n \n \n \n \n {l.availQty}\n \n \n {l.ticketCnt}\n \n \n {l.unitCst?.disp ?? l.faceValue?.disp}\n \n \n );\n },\n [availableGroupsMemo, onListingIdsSelected]\n );\n\n const eventListingsData = useMemo(\n () =>\n eventListings?.toSorted((l1, l2) => sortSeating(l1.seating, l2.seating)),\n [eventListings]\n );\n\n return (\n <>\n \n \n {groupBys\n .filter((_, i) =>\n i == 0\n ? true // If index 0, any is ok\n : !ListingGroupingTypesNotSupportingAdditionalGroupBys.includes(\n // else require first one to be Custom or None\n groupBys[0].groupingType\n )\n )\n .map((gb, i) => (\n \n \n }\n style={{ width: 'max-content' }}\n >\n \n v && onGroupingTypeChange(i, v, gb.numOfClusters)\n }\n valueOptionsContent={getAvailableGroupingTypes(\n i === 0\n ? []\n : groupBys\n .map((gb) => gb.groupingType)\n .filter((_, prevI) => prevI < i)\n )}\n />\n \n \n \n ))}\n \n {hasAutoPricingFeature ? (\n \n }\n style={{ flex: '0.5' }}\n >\n {\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n setValue(\n `templateSettings.templateRankPremiums.undercutAbsoluteAmount`,\n v\n );\n\n let hasChanged = false;\n mergeListingGroupInputs.forEach((t) => {\n if (\n t.groupUndercutSetting != null &&\n t.groupUndercutSetting.undAbsAmt !== v\n ) {\n t.groupUndercutSetting.undAbsAmt = v;\n hasChanged = true;\n }\n });\n\n if (hasChanged) {\n setValue('mergeListingGroupInputs', [\n ...mergeListingGroupInputs,\n ]);\n }\n }\n }}\n />\n\n {\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n const relativeValue = Math.min(v, 100) / 100;\n setValue(\n `templateSettings.templateRankPremiums.undercutRelativeAmount`,\n relativeValue\n );\n\n let hasChanged = false;\n mergeListingGroupInputs.forEach((t) => {\n if (\n t.groupUndercutSetting != null &&\n t.groupUndercutSetting.undRelAmt !== relativeValue\n ) {\n t.groupUndercutSetting.undRelAmt = relativeValue;\n hasChanged = true;\n }\n });\n\n if (hasChanged) {\n setValue('mergeListingGroupInputs', [\n ...mergeListingGroupInputs,\n ]);\n }\n }\n }}\n value={\n templateUndercutRelativeAmount != null\n ? roundToPrecision(\n Math.abs(templateUndercutRelativeAmount) * 100,\n 8\n )\n : ''\n }\n />\n \n {hasGroupingDripFeature == false && (\n }\n style={{ width: 'fit-content' }}\n >\n ) => {\n const value = e.target.value;\n const v = parseInt(value);\n if (v >= 0) {\n if (v !== desiredActiveListings) {\n setValue(\n `eventSettings.${eventIndex}.desiredActiveListings`,\n v\n );\n }\n\n let hasChanged = false;\n mergeListingGroupInputs.forEach((t) => {\n if (t.desiredActiveListings !== v) {\n t.desiredActiveListings = v;\n hasChanged = true;\n }\n });\n\n if (hasChanged) {\n setValue('mergeListingGroupInputs', [\n ...mergeListingGroupInputs,\n ]);\n }\n }\n }}\n />\n \n )}\n }\n style={{ width: 'fit-content' }}\n >\n {\n if (!isEqual(newValues, deprioritizedQuantities)) {\n setValue(\n `eventSettings.${eventIndex}.deprioritizedQuantities`,\n newValues\n );\n }\n mergeListingGroupInputs.forEach((t, index) => {\n if (!isEqual(t.deprioritizedQuantities, newValues)) {\n t.deprioritizedQuantities = newValues;\n const sortedListings = (t.listingGroupItems || [])\n .filter((l) => l.listingId > 0)\n .map((l, i) => ({ ...l, priority: i + 1 }))\n .toSorted(\n groupPrioritySort(idToSortingCriteria, newValues)\n )\n .map((l, i) => ({ ...l, priority: i + 1 }));\n t.listingGroupItems = [...sortedListings];\n\n setValue(`mergeListingGroupInputs.${index}`, {\n ...t,\n deprioritizedQuantities: newValues,\n listingGroupItems: sortedListings,\n });\n }\n });\n }}\n valueOptionsContent={getQuantitiesOptions()}\n />\n \n }\n style={{ width: 'fit-content' }}\n >\n \n \n \n \n \n \n ) : null}\n \n {renderGroupDripTemplate()}\n
    \n {!eventListingsData ? (\n \n ) : (\n {\n const flattendListings = flattenListingGroup(l).map(\n (fl) => fl.id\n );\n const ltGrpId = mergeListingGroupInputs.find((m) =>\n Boolean(\n m.listingGroupItems.some((ml) =>\n flattendListings.includes(ml.listingId)\n )\n )\n )?.listingGroupId;\n\n return renderRowContent(l, ltGrpId);\n }}\n />\n )}\n
    \n \n );\n};\n","import { useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Virtuoso } from 'react-virtuoso';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport * as Tabs from 'src/core/ui/Tabs';\nimport { useEventMarketplaceSettings } from 'src/hooks/useEventMarketplaceSettings';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { newGuidId } from 'src/utils/idUtils';\nimport { EventWithData } from 'src/WebApiController';\nimport { Event, MergeListingGroupInput } from 'src/WebApiController';\n\nimport IconBulletList from '~icons/pos/bulletList';\n\nimport * as styles from '../GroupListings.css';\nimport { GroupingTemplates } from './GroupingTemplates';\nimport { MergeListingGroupInputListFields } from './groupingTypes';\nimport { getListingsForMergeListingGroupInput } from './groupingUtils';\nimport { ListingGroupInput } from './ListingGroupInput';\nimport { ListingTableForGroups } from './ListingTableForGroups';\n\nconst TemplateTabKey = 'Template_Tab';\n\nexport const EventGroupings = ({\n events,\n onEventSelected,\n containerHeight,\n}: {\n events: EventWithData[];\n onEventSelected: (event?: EventWithData) => void;\n containerHeight?: number;\n}) => {\n const { watch, formState, setValue, getValues } =\n useFormContext();\n\n const mergeListingGroupInputs = watch('mergeListingGroupInputs');\n const newGroupName = useContent(ContentId.NewGroup);\n\n const { defaultListingMarketplaceSettings } = useEventMarketplaceSettings(\n events?.[0]?.event\n );\n\n const onAddNewGroup = useCallback(\n (event: Event, eventIndex: number) => {\n mergeListingGroupInputs.push({\n listingGroupId: newGuidId(),\n name: `${newGroupName} ${mergeListingGroupInputs.length + 1}`,\n desiredActiveListings: getValues(\n `eventSettings.${eventIndex}.desiredActiveListings`\n ),\n minActiveListings: getValues(\n `eventSettings.${eventIndex}.minActiveListings`\n ),\n maxActiveListings: getValues(\n `eventSettings.${eventIndex}.maxActiveListings`\n ),\n targetPercentage: getValues(\n `eventSettings.${eventIndex}.targetPercentage`\n ),\n deprioritizedQuantities: getValues(\n `eventSettings.${eventIndex}.deprioritizedQuantities`\n ),\n marketplaceSettings: {\n listingMarketplaceSettings: defaultListingMarketplaceSettings,\n },\n viagogoEventId: event.viagId,\n viagogoMappingId: event.mappingId,\n listingGroupItems: [],\n groupUndercutSetting: {\n undAbsAmt: null,\n undRelAmt: null,\n actRankUndAbsAmt: null,\n actRankUndRelAmt: null,\n },\n groupingMethods: {\n groupingMethods: [],\n },\n } as MergeListingGroupInput);\n\n setValue('mergeListingGroupInputs', [...mergeListingGroupInputs]);\n },\n [\n defaultListingMarketplaceSettings,\n getValues,\n mergeListingGroupInputs,\n newGroupName,\n setValue,\n ]\n );\n\n if (!events.length) {\n return (\n }>\n \n \n );\n }\n\n return (\n 1 ? TemplateTabKey : events[0].event.viagVirtualId\n }\n >\n {events.length > 1 && (\n <>\n \n onEventSelected(undefined)}\n >\n \n \n {events.map((ev, i) => {\n let hasErrors = false;\n mergeListingGroupInputs.forEach((m, i) => {\n const isForThisEvent =\n ev.event.viagVirtualId ===\n (m.viagogoEventId?.toString() ?? m.viagogoMappingId);\n\n if (isForThisEvent) {\n hasErrors =\n hasErrors ||\n Boolean(\n formState.errors.mergeListingGroupInputs?.[i]?.name\n ?.message\n );\n }\n });\n\n return (\n onEventSelected(ev)}\n >\n {i + 1}\n \n );\n })}\n \n \n \n \n \n )}\n\n {events.map((ev, i) => {\n const groupingInputs = mergeListingGroupInputs.filter(\n (m) =>\n ev.event.viagVirtualId ===\n (m.viagogoEventId?.toString() ?? m.viagogoMappingId)\n );\n\n return (\n \n \n 1\n ? `calc(${containerHeight}px - ${vars.spacing['3xl']} - ${vars.spacing['5xl']})`\n : `calc(${containerHeight}px - ${vars.spacing['m']})`,\n }\n : undefined\n }\n >\n (\n \n ),\n Footer: () => (\n <>\n {' '}\n {!groupingInputs.length && (\n }>\n \n \n )}\n
    \n onAddNewGroup(ev.event, i)}\n variant=\"text\"\n >\n + \n \n
    \n \n ),\n }}\n itemContent={(index, group) => (\n \n )}\n />\n \n
    \n \n );\n })}\n \n );\n};\n","import { isEmpty } from 'lodash-es';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { EventWithData } from 'src/WebApiController';\nimport {\n Feature,\n ListingGroup,\n ListingGroupItemInput,\n MergeListingGroupInput,\n} from 'src/WebApiController';\n\nimport { MergeListingGroupInputListFields } from './components/groupingTypes';\nimport { flattenListingGroup } from './components/groupingUtils';\n\nexport const useFullySoldFilter = (\n events: EventWithData[],\n listingGroup?: ListingGroup\n) => {\n const [excludeFullySold, setExcludeFullySold] = useState(false);\n const hasExcludeFullySoldInGroupFeature = useUserHasFeature(\n Feature.ExcludeFullySoldInGroup\n );\n\n const { watch, setValue, formState } =\n useFormContext();\n\n const mergeListingGroupInputs = watch('mergeListingGroupInputs');\n\n const fullySoldListingIds = useMemo(\n () =>\n events\n .flatMap((ev) =>\n (ev.entities.listings ?? []).flatMap(flattenListingGroup)\n )\n .filter((l) => l.id > 0 && l.availQty <= 0)\n .map((l) => l.id),\n [events]\n );\n\n const hasFullySoldListings = useMemo(() => {\n if (listingGroup) {\n return (\n (formState?.defaultValues?.mergeListingGroupInputs?.[0]\n ?.listingGroupItems || []) as ListingGroupItemInput[]\n ).some((item) => fullySoldListingIds.includes(item!.listingId!));\n }\n return !isEmpty(fullySoldListingIds);\n }, [\n formState?.defaultValues?.mergeListingGroupInputs,\n fullySoldListingIds,\n listingGroup,\n ]);\n\n const sanitizedEvents = useMemo(() => {\n if (\n hasExcludeFullySoldInGroupFeature &&\n excludeFullySold &&\n hasFullySoldListings\n ) {\n return events.map((event) => ({\n ...event,\n listings: (event.entities.listings ?? []).filter(\n ({ id }) => !fullySoldListingIds.includes(id)\n ),\n }));\n }\n return events;\n }, [\n hasExcludeFullySoldInGroupFeature,\n excludeFullySold,\n hasFullySoldListings,\n events,\n fullySoldListingIds,\n ]);\n\n const onToggleExcludeFullySold = useCallback(\n (e: React.ChangeEvent) => {\n const isChecked = e.target.checked;\n if (isChecked) {\n const clonedInputs = [...mergeListingGroupInputs];\n for (const [index, input] of clonedInputs.entries()) {\n clonedInputs[index] = {\n ...input,\n listingGroupItems: (input.listingGroupItems || [])\n .filter(\n ({ listingId }) => !fullySoldListingIds.includes(listingId)\n )\n .map((item, idx) => ({\n ...item,\n priority: idx + 1,\n })),\n };\n }\n setValue('mergeListingGroupInputs', clonedInputs);\n } else {\n // Reset to default values\n if (listingGroup && formState?.defaultValues?.mergeListingGroupInputs) {\n setValue(\n 'mergeListingGroupInputs',\n (formState.defaultValues.mergeListingGroupInputs ||\n []) as MergeListingGroupInput[]\n );\n }\n }\n setExcludeFullySold(isChecked);\n },\n [\n formState.defaultValues?.mergeListingGroupInputs,\n fullySoldListingIds,\n listingGroup,\n mergeListingGroupInputs,\n setValue,\n ]\n );\n\n const showExcludeFullySold = useMemo(\n () => hasExcludeFullySoldInGroupFeature && hasFullySoldListings,\n [hasFullySoldListings, hasExcludeFullySoldInGroupFeature]\n );\n\n return {\n excludeFullySold,\n showExcludeFullySold,\n mergeListingGroupInputs,\n sanitizedEvents,\n onToggleExcludeFullySold,\n };\n};\n","import { useMeasure } from 'react-use';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { EventGroupings } from './components/EventGroupings';\nimport { GroupListingsBodyProps } from './components/groupingTypes';\nimport { getListingsForMergeListingGroupInput } from './components/groupingUtils';\nimport { ListingGroupInput } from './components/ListingGroupInput';\nimport { useFullySoldFilter } from './GroupListingsBody.hook';\n\nexport const GroupListingsBody = ({\n events,\n listingGroup,\n onEventSelected,\n}: GroupListingsBodyProps) => {\n const {\n excludeFullySold,\n showExcludeFullySold,\n sanitizedEvents,\n mergeListingGroupInputs,\n onToggleExcludeFullySold,\n } = useFullySoldFilter(events, listingGroup);\n\n const [containerRef, { height: containerHeight }] =\n useMeasure();\n\n return (\n \n {showExcludeFullySold && (\n }\n >\n \n \n )}\n \n {listingGroup ? (\n \n ) : (\n \n )}\n \n \n );\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport {\n ComponentProps,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { ConfirmButton } from 'src/components/Buttons';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { EventSearch } from 'src/components/Events/EventSearch';\nimport { INVENTORY_BULK_CREATE_LISTING_GROUPS_KEY } from 'src/components/Listings/InventoryActionDropdown';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { EventMapContextProvider } from 'src/contexts/EventMapContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport * as Tabs from 'src/core/ui/Tabs';\nimport { useListingGroupPricingSettings } from 'src/hooks/api/useListingGroupPricingSettings';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { useEventMarketplaceSettings } from 'src/hooks/useEventMarketplaceSettings';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { CancellableFormFooter } from 'src/modals/common';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalBody, ModalFooter } from 'src/modals/Modal';\nimport { CrossIcon, ProcessingIcon } from 'src/svgs/Viagogo';\nimport { randomizeInPlace } from 'src/utils/arrayUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { newGuidId } from 'src/utils/idUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkActionType,\n EventConfigClient,\n EventWithData,\n GroupingType,\n Listing,\n} from 'src/WebApiController';\nimport {\n ActionOutboxEntityType,\n BulkEditListingClient,\n Event,\n Feature,\n ListingGroup,\n ListingGroupClient,\n ListingGroupItemInput,\n MergeListingGroupInput,\n} from 'src/WebApiController';\n\nimport { Summary } from '../common/Summary';\nimport { VenueConfigSummary } from '../common/Summary/VenueConfigSummary';\nimport {\n ModalBodyDataContainer,\n ModalBodyHeaderContainer,\n} from '../Modal/Modal.styled';\nimport { AutoPricingSettings } from './components/AutoPricingSettings/AutoPricingSettings';\nimport {\n GroupingTemplateSeating,\n MergeListingGroupInputListFields,\n} from './components/groupingTypes';\nimport {\n flattenListingGroup,\n generateMergeListingGroupInputsForEvents,\n} from './components/groupingUtils';\nimport { ListingGroupAutoPricingSettingsFormContentWrapper } from './components/ListingGroupAutoPricingSettingsFormContentWrapper/ListingGroupAutoPricingSettingsFormContentWrapper';\nimport { ListingGroupMarketplaceBroadcast } from './components/MarketplaceBroadcast/ListingGroupMarketplaceBroadcast';\nimport * as styles from './GroupListings.css';\nimport { GroupListingsBody } from './GroupListingsBody';\n\nenum GroupListingsTab {\n Groupings = 'groupings',\n Broadcast = 'broadcast',\n AutoPricing = 'autopricing',\n}\n\nexport const GroupListingsModal = ({\n events,\n listingGroup,\n}: {\n // Events is undefined means that we need user to search for events\n events?: Event[];\n listingGroup?: ListingGroup;\n}) => {\n const listings = [\n ...(listingGroup?.groupItems ?? []),\n ...(listingGroup?.groupItems?.flatMap((gi) =>\n gi.isLtGrp ? (gi as ListingGroup).groupItems : []\n ) ?? []),\n ];\n const { defaultListingMarketplaceSettings } = useEventMarketplaceSettings(\n events?.[0]\n );\n\n const newGroupName = useContent(ContentId.NewGroup);\n const methods = useForm({\n defaultValues: {\n mergeListingGroupInputs: listingGroup\n ? [\n {\n name: listingGroup.groupName ?? `${newGroupName} 1`,\n listingGroupItems: listings.map(\n (l) =>\n ({\n listingId: l.id,\n priority: l.ltGrpPrior!,\n groupId: l.ltGrpId,\n undercutSetting: l.ltGrpUndercut,\n }) as ListingGroupItemInput\n ),\n viagogoEventId: events![0].viagId,\n viagogoMappingId: events![0].mappingId,\n desiredActiveListings: listingGroup.desiredActiveListings ?? 1,\n minActiveListings: listingGroup.minActiveListings,\n maxActiveListings: listingGroup.maxActiveListings,\n targetPercentage: listingGroup.targetPercentage,\n deprioritizedQuantities:\n listingGroup.deprioritizedQuantities ?? [],\n marketplaceSettings: listingGroup.marketplaceSettings,\n groupUndercutSetting: {\n undAbsAmt: listingGroup.absoluteRankPremium,\n undRelAmt: listingGroup.relativeRankPremium,\n actRankUndAbsAmt: null,\n actRankUndRelAmt: null,\n },\n },\n ]\n : generateMergeListingGroupInputsForEvents(\n events,\n newGroupName,\n defaultListingMarketplaceSettings\n ),\n templateSettings: {\n groupBy: {\n groupingType: GroupingType.Custom,\n },\n desiredActiveListings: 0,\n deprioritizedQuantities: [],\n },\n eventSettings:\n events?.map(() => ({\n groupBys: [\n {\n groupingType: GroupingType.Custom,\n },\n {\n groupingType: GroupingType.None,\n },\n ],\n desiredActiveListings: 0,\n deprioritizedQuantities: [],\n })) ?? [],\n },\n });\n\n return (\n \n \n \n );\n};\n\nexport const GroupListingsModalContent = ({\n listingGroup,\n events,\n formState,\n handleSubmit,\n watch,\n reset,\n getValues,\n setValue,\n setError,\n clearErrors,\n}: { events?: Event[] } & Omit<\n ComponentProps<\n typeof FormProvider\n > & {\n listingGroup?: ListingGroup;\n },\n 'children'\n>) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const hasListingGroupingMethodsFeature = useUserHasFeature(\n Feature.ListingGroupingMethods\n );\n\n const hasIntelligibleAutoPricingSettingsFeature = useUserHasFeature(\n Feature.IntelligibleAutoPricingSettings\n );\n\n const [isLoading, setIsLoading] = useState(false);\n const { isSubmitting } = formState;\n const { setActivePosEntity } = useActivePosEntityContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { closeModal } = useContext(ModalContext);\n\n const templateSettings = watch('templateSettings');\n const mergeListingGroupInputs = watch('mergeListingGroupInputs');\n\n const {\n eventsTransformed,\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n updateExpandedListItems,\n } = useCatalogDataContext();\n\n const hasAutoPricingGroupSettingsFeature = useUserHasFeature(\n Feature.AutoPricingGroupSettings\n );\n\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n\n const { defaultListingMarketplaceSettings } = useEventMarketplaceSettings(\n events?.[0]\n );\n\n const [selectedEvents, setSelectedEvents] = useState(\n events\n );\n const [eventTabSelected, setEventTabSelected] = useState<\n EventWithData | undefined\n >();\n const [activeTab, setActiveTab] = useState(\n GroupListingsTab.Groupings\n );\n\n const newGroupName = useContent(ContentId.NewGroup);\n\n const onEventsSelect = useCallback(\n (\n data: {\n event: Event;\n }[]\n ) => {\n setListItemExpansion(\n true,\n data.map((ev) => ev.event.viagVirtualId)\n );\n\n const events = data.map((e) => e.event);\n setSelectedEvents(events);\n reset({\n mergeListingGroupInputs: generateMergeListingGroupInputsForEvents(\n events,\n newGroupName,\n defaultListingMarketplaceSettings\n ),\n templateSettings: {\n groupBy: {\n groupingType: GroupingType.Custom,\n },\n desiredActiveListings: 0,\n deprioritizedQuantities: [],\n groupTemplates: [],\n },\n eventSettings:\n events?.map(() => ({\n groupBys: [\n {\n groupingType: GroupingType.Custom,\n },\n {\n groupingType: GroupingType.None,\n },\n ],\n desiredActiveListings: 0,\n deprioritizedQuantities: [],\n })) ?? [],\n });\n },\n [\n defaultListingMarketplaceSettings,\n newGroupName,\n reset,\n setListItemExpansion,\n ]\n );\n\n const onEventSummaryClose = useCallback(() => {\n setSelectedEvents(undefined);\n }, []);\n\n const eventData = useMemo(\n () =>\n selectedEvents\n ? (eventsTransformed?.filter((ev) =>\n selectedEvents.some(\n (sev) => ev.event.viagVirtualId === sev.viagVirtualId\n )\n ) ?? [])\n : [],\n [eventsTransformed, selectedEvents]\n );\n\n const requiredMsg = useContent(ContentId.Required);\n useEffect(() => {\n mergeListingGroupInputs.forEach((m, i) => {\n if (m.listingGroupItems.length) {\n if (\n formState.errors.mergeListingGroupInputs?.[i]?.listingGroupItems\n ?.message\n ) {\n clearErrors(`mergeListingGroupInputs.${i}.listingGroupItems`);\n }\n }\n if (m.name) {\n if (formState.errors.mergeListingGroupInputs?.[i]?.name?.message) {\n clearErrors(`mergeListingGroupInputs.${i}.name`);\n }\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(mergeListingGroupInputs)]);\n\n const [formIsDone, setFormIsDone] = useState(false);\n\n const { setProgress, setPreview, setStage, setMainDialogOpened } =\n useBulkEditHubContext();\n const { bulkEditHub, initJob } = useBulkEditHub(\n ActionOutboxEntityType.Listing,\n BulkActionType.GroupListings,\n INVENTORY_BULK_CREATE_LISTING_GROUPS_KEY,\n () => {\n setActivePosEntity(0);\n setFormIsDone(true);\n return refreshExpandedListItems();\n }\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const {\n pricingSettings,\n onResetListingPricingSettings,\n onMergeListingGroupPricingSettings,\n } = useListingGroupPricingSettings(listingGroup?.ltGrpId, events?.[0]);\n\n useEffect(() => {\n if (pricingSettings)\n setValue('pricingSettingsInputs', { ...pricingSettings });\n }, [pricingSettings, setValue]);\n\n const onSubmit = useCallback(\n (inputFormData: MergeListingGroupInputListFields) => {\n setIsLoading(true);\n\n tryInvokeApi(\n async () => {\n if (listingGroup) {\n const listingsInGroups =\n inputFormData.mergeListingGroupInputs[0].listingGroupItems.filter(\n (x) => x.listingId > 0\n );\n if (listingsInGroups.length) {\n let updatedListings: {\n [key: string]: Listing[];\n };\n if (listingGroup.ltGrpId) {\n updatedListings = await new ListingGroupClient(\n activeAccountWebClientConfig\n ).updateListingGroup(listingGroup.ltGrpId!, {\n ...inputFormData.mergeListingGroupInputs[0],\n listingGroupItems:\n inputFormData.mergeListingGroupInputs[0].listingGroupItems\n .filter((x) => x.listingId > 0)\n .map((item, index) => ({ ...item, priority: index + 1 })),\n });\n } else {\n updatedListings = await new ListingGroupClient(\n activeAccountWebClientConfig\n ).createListingGroup({\n ...inputFormData.mergeListingGroupInputs[0],\n listingGroupId: newGuidId(),\n listingGroupItems:\n inputFormData.mergeListingGroupInputs[0].listingGroupItems\n .filter((x) => x.listingId > 0)\n .map((item, index) => ({ ...item, priority: index + 1 })),\n });\n }\n await onMergeListingGroupPricingSettings(\n inputFormData.pricingSettingsInputs\n );\n\n reset(inputFormData);\n\n // Reset listing auto pricing setting per request\n if (inputFormData.resetListingAutoPricingSettings) {\n await onResetListingPricingSettings();\n }\n updateExpandedListItems(updatedListings);\n setActivePosEntity(0);\n\n // kick off a background refresh, but not wait since we already force updateExpandedListItems\n refreshExpandedListItems();\n\n closeModal();\n setSelectionMode();\n } else {\n return false;\n }\n } else {\n initJob();\n\n const filteredListingGroupInputs =\n inputFormData.mergeListingGroupInputs\n .map((groupInput) => ({\n ...groupInput,\n listingGroupItems: groupInput.listingGroupItems.filter(\n (x) => x.listingId > 0\n ),\n }))\n .filter((m) => m.listingGroupItems.length);\n\n const succeeded = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkCreateListingGroups(\n {\n mergeListingGroupInputs: filteredListingGroupInputs,\n },\n INVENTORY_BULK_CREATE_LISTING_GROUPS_KEY,\n hasBackgroundBulkEditFeature\n );\n\n reset(inputFormData);\n\n // Update event grouping methods if applied\n const eventGroupingMethodsList =\n inputFormData.mergeListingGroupInputs\n .map(({ groupingMethods }) => groupingMethods)\n .filter((value) => value != null);\n if (\n hasListingGroupingMethodsFeature &&\n eventGroupingMethodsList &&\n eventGroupingMethodsList.length > 0\n ) {\n const eventGroupingMethods = eventGroupingMethodsList[0];\n for (const method of eventGroupingMethods!.groupingMethods) {\n // event level grouping methods shouldn't care about the grouping value\n method.groupingValue = null;\n }\n try {\n for (const event of eventData) {\n if (event.event.viagVirtualId) {\n await new EventConfigClient(\n activeAccountWebClientConfig\n ).updateSellerEventGroupingMethods(\n event.event.viagVirtualId,\n eventGroupingMethods!\n );\n }\n }\n } catch (error) {\n // relax the error for updating the event group methods.\n }\n }\n\n if (!hasBackgroundBulkEditFeature) {\n if (succeeded) {\n setActivePosEntity(0);\n await refreshExpandedListItems();\n\n closeModal();\n setSelectionMode();\n }\n }\n }\n },\n (error) => {\n showErrorDialog(\n 'BulkEditListingClient.bulkCreateListingGroups',\n error,\n {\n trackErrorData: inputFormData,\n }\n );\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [\n listingGroup,\n onMergeListingGroupPricingSettings,\n reset,\n updateExpandedListItems,\n setActivePosEntity,\n refreshExpandedListItems,\n closeModal,\n setSelectionMode,\n activeAccountWebClientConfig,\n onResetListingPricingSettings,\n initJob,\n hasBackgroundBulkEditFeature,\n hasListingGroupingMethodsFeature,\n eventData,\n showErrorDialog,\n ]\n );\n\n const validateForErrors = useCallback(() => {\n let hasErrors = false;\n mergeListingGroupInputs.forEach((m, i) => {\n if (!m.name) {\n setError(`mergeListingGroupInputs.${i}.name`, {\n message: requiredMsg,\n });\n hasErrors = true;\n }\n });\n\n return !hasErrors;\n }, [mergeListingGroupInputs, requiredMsg, setError]);\n\n const applyTemplateConfirmDialog = useBasicDialog();\n const [applyThenSubmit, setApplyThenSubmit] = useState(false);\n const [isApplyingTemplate, setIsApplyingTemplate] = useState(false);\n\n const onApplyTemplateToGroupings = useCallback(\n (prompt: boolean) => {\n setIsApplyingTemplate(true);\n\n if (\n prompt &&\n mergeListingGroupInputs.some((m) => m.listingGroupItems?.length)\n ) {\n applyTemplateConfirmDialog.launchDialog();\n return false;\n }\n\n try {\n templateSettings.groupTemplates.forEach((t) => {\n // Normalize the seatings into a map for faster lookup\n t.seatingsMap = t.seatings.reduce(\n (r, s) => {\n r.sectionRowKeys[s.id] = s;\n if (s.seating.rowId) {\n r.rowIdKeys[s.seating.rowId] = s;\n }\n\n return r;\n },\n { sectionRowKeys: {}, rowIdKeys: {} } as {\n sectionRowKeys: Record;\n rowIdKeys: Record;\n }\n );\n });\n\n // For each event\n // For each template\n // Get all listings matching the template and create a new group\n const newGroups = eventData.flatMap((ev) =>\n templateSettings.groupTemplates\n .map((t) => {\n const listingsInGroup =\n ev.entities.listings\n ?.flatMap(flattenListingGroup)\n ?.map((l) => {\n if (\n l.seating.rowId &&\n t.seatingsMap?.rowIdKeys[l.seating.rowId]\n ) {\n return {\n listing: l,\n seating: t.seatingsMap?.rowIdKeys[l.seating.rowId],\n };\n }\n\n const key = `${l.seating.section}-${l.seating.row}`;\n if (t.seatingsMap?.sectionRowKeys[key]) {\n return {\n listing: l,\n seating: t.seatingsMap?.sectionRowKeys[key],\n };\n }\n\n return null;\n })\n ?.filter((x) => x != null)\n ?.map((x) => x!) ?? [];\n\n // If there are any listings - create group\n if (listingsInGroup.length) {\n let listingInputs = listingsInGroup.map((l) => ({\n listingId: l.listing.id,\n priority: l.seating.priority,\n groupId: l.listing.ltGrpId,\n // TODO - SUP-149 - template undercut settings?\n }));\n\n if (templateSettings.randomizePriority) {\n randomizeInPlace(listingInputs);\n listingInputs = listingInputs.map((x, i) => ({\n ...x,\n item2: i + 1,\n }));\n }\n return {\n listingGroupId: newGuidId(),\n name: t.groupName,\n viagogoEventId: ev.event.viagId,\n viagogoMappingId: ev.event.mappingId,\n desiredActiveListings: t.desiredActiveListings,\n deprioritizedQuantities: t.deprioritizedQuantities,\n marketplaceSettings: {\n listingMarketplaceSettings:\n defaultListingMarketplaceSettings,\n },\n listingGroupItems: listingInputs,\n } as MergeListingGroupInput;\n }\n\n return null;\n })\n .filter((x) => x != null)\n .map((x) => x!)\n );\n\n setValue('mergeListingGroupInputs', newGroups);\n } finally {\n setIsApplyingTemplate(false);\n }\n\n return true;\n },\n [\n applyTemplateConfirmDialog,\n defaultListingMarketplaceSettings,\n eventData,\n mergeListingGroupInputs,\n setValue,\n templateSettings.groupTemplates,\n templateSettings.randomizePriority,\n ]\n );\n\n return (\n <>\n {\n setProgress(undefined);\n setPreview(undefined);\n setStage(BulkEditStage.Idle);\n setMainDialogOpened(false);\n }}\n >\n }\n />\n \n\n \n {!eventData.length ? (\n \n (ev.counts.listCnt ?? 0) > 1\n )}\n isSingleSelect\n allowSearchByVenueConfig\n searchPlaceHolder={ContentId.SearchVenueConfigOrEvent}\n />\n \n ) : (\n <>\n \n {eventData.length === 1 ? (\n \n \n \n )\n }\n />\n ) : (\n ev.event)}\n eventSelected={eventTabSelected?.event}\n actions={\n events == null && (\n \n \n \n )\n }\n />\n )}\n \n \n {isLoading ||\n !eventData.some((ev) => ev.entities.listings?.length) ? (\n \n ) : (\n \n {\n // Even that we have only 1 event-map context, this is ok because it is expected // that eventData is a list of events with the same venue config\n }\n \n \n setActiveTab(value as GroupListingsTab)\n }\n style={{ height: '100%' }}\n >\n \n \n \n \n \n \n \n {listingGroup &&\n hasAutoPricingGroupSettingsFeature &&\n hasAutoPricingFeature && (\n \n \n \n )}\n \n \n 1 && !eventTabSelected?.event\n }\n />\n \n \n \n \n {listingGroup &&\n hasAutoPricingGroupSettingsFeature &&\n hasAutoPricingFeature && (\n \n {hasIntelligibleAutoPricingSettingsFeature ? (\n \n ) : (\n \n )}\n \n )}\n \n \n \n )}\n \n \n )}\n \n\n \n {\n setProgress(undefined);\n setPreview(undefined);\n setStage(BulkEditStage.Idle);\n setMainDialogOpened(false);\n }}\n >\n {eventData.length > 1 && !eventTabSelected?.event && (\n {\n setApplyThenSubmit(false);\n onApplyTemplateToGroupings(true);\n }}\n variant=\"outline\"\n disabled={\n isLoading ||\n isSubmitting ||\n templateSettings.groupTemplates\n .map((m) => m.seatings.length)\n .reduce((sum, cur) => sum + cur, 0) === 0\n }\n >\n {isApplyingTemplate && (\n \n \n \n )}\n \n \n )}\n {!formIsDone && (\n {\n setMainDialogOpened(true);\n if (eventData.length > 1 && !eventTabSelected?.event) {\n setApplyThenSubmit(true);\n\n // If on the template tab\n if (onApplyTemplateToGroupings(true)) {\n if (validateForErrors()) {\n handleSubmit(onSubmit)();\n }\n }\n } else {\n setApplyThenSubmit(false);\n if (validateForErrors()) {\n handleSubmit(onSubmit)();\n }\n }\n }}\n icon={\n isApplyingTemplate ? (\n \n \n \n ) : undefined\n }\n disabled={\n isLoading ||\n isSubmitting ||\n mergeListingGroupInputs\n .map((m) => m.listingGroupItems.length)\n .reduce((sum, cur) => sum + cur, 0) === 0\n }\n textContentId={ContentId.Save}\n />\n )}\n \n\n }\n bodyText={\n \n }\n onOkay={() => {\n onApplyTemplateToGroupings(false);\n if (applyThenSubmit) {\n if (validateForErrors()) {\n handleSubmit(onSubmit)();\n }\n }\n applyTemplateConfirmDialog.closeDialog();\n }}\n onCancel={() => applyTemplateConfirmDialog.closeDialog()}\n />\n \n \n );\n};\n","import { isEmpty } from 'lodash-es';\nimport { useEffect, useMemo } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { GroupingType } from 'src/WebApiController';\nimport { ListingGroup, ListingGroupItemInput } from 'src/WebApiController';\n\nimport { MergeListingGroupInputListFields } from './components/groupingTypes';\nimport { flattenListingGroup } from './components/groupingUtils';\nimport { GroupListingsModalContent } from './GroupListings';\n\nexport const AddToGroupListingsModal = ({\n selectedListingIds,\n listingGroupId,\n viagVirtualId,\n newListingGroupName,\n}: {\n selectedListingIds: number[];\n listingGroupId?: string | undefined;\n viagVirtualId: string;\n newListingGroupName?: string;\n}) => {\n const { eventsTransformed } = useCatalogDataContext();\n\n const eventData = useMemo(() => {\n return eventsTransformed?.find(\n (e) => e.event.viagVirtualId === viagVirtualId\n );\n }, [eventsTransformed, viagVirtualId]);\n\n const listingsToAdd = useMemo(() => {\n return eventData?.entities?.listings\n ?.flatMap(flattenListingGroup)\n .filter((l) => selectedListingIds.includes(l.id));\n }, [eventData, selectedListingIds]);\n\n const listingGroup = useMemo(() => {\n if (!isEmpty(newListingGroupName)) {\n return {\n groupName: newListingGroupName,\n desiredActiveListings: null,\n minActiveListings: null,\n maxActiveListings: null,\n targetPercentage: null,\n deprioritizedQuantities: null,\n marketplaceSettings: null,\n absoluteRankPremium: null,\n relativeRankPremium: null,\n } as ListingGroup;\n }\n return eventData?.entities?.listings?.find(\n (l) => l.isLtGrp && l.ltGrpId === listingGroupId\n ) as ListingGroup;\n }, [eventData?.entities?.listings, listingGroupId, newListingGroupName]);\n\n const event = eventData?.event;\n\n const listings = useMemo(() => {\n return [\n ...(listingGroup?.groupItems ?? []),\n ...(listingGroup?.groupItems?.flatMap((gi) =>\n gi.isLtGrp ? (gi as ListingGroup).groupItems : []\n ) ?? []),\n ...(listingsToAdd ?? []),\n ];\n }, [listingsToAdd, listingGroup?.groupItems]);\n\n const newGroupName = useContent(ContentId.NewGroup);\n const methods = useForm({\n defaultValues: {\n mergeListingGroupInputs: [\n {\n name: listingGroup?.groupName ?? `${newGroupName} 1`,\n listingGroupItems: listings.map(\n (l, idx) =>\n ({\n listingId: l.id,\n priority: l.ltGrpPrior ?? idx + 1,\n groupId: l.ltGrpId,\n undercutSetting: l.ltGrpUndercut,\n }) as ListingGroupItemInput\n ),\n viagogoEventId: event?.viagId,\n viagogoMappingId: event?.mappingId,\n desiredActiveListings: listingGroup?.desiredActiveListings ?? 1,\n minActiveListings: listingGroup?.minActiveListings,\n maxActiveListings: listingGroup?.maxActiveListings,\n targetPercentage: listingGroup?.targetPercentage,\n deprioritizedQuantities: listingGroup?.deprioritizedQuantities ?? [],\n marketplaceSettings: listingGroup?.marketplaceSettings,\n groupUndercutSetting: {\n undAbsAmt: listingGroup?.absoluteRankPremium,\n undRelAmt: listingGroup?.relativeRankPremium,\n actRankUndAbsAmt: null,\n actRankUndRelAmt: null,\n },\n },\n ],\n templateSettings: {\n groupBy: {\n groupingType: GroupingType.Custom,\n },\n desiredActiveListings: 0,\n deprioritizedQuantities: [],\n },\n eventSettings: [],\n },\n });\n\n const { reset } = methods;\n\n useEffect(() => {\n reset({\n mergeListingGroupInputs: [\n {\n name: listingGroup?.groupName ?? `${newGroupName} 1`,\n listingGroupItems: listings.map(\n (l, idx) =>\n ({\n listingId: l.id,\n priority: l.ltGrpPrior ?? idx + 1,\n groupId: l.ltGrpId,\n undercutSetting: l.ltGrpUndercut,\n }) as ListingGroupItemInput\n ),\n viagogoEventId: event?.viagId,\n viagogoMappingId: event?.mappingId,\n desiredActiveListings: listingGroup?.desiredActiveListings ?? 1,\n minActiveListings: listingGroup?.minActiveListings,\n maxActiveListings: listingGroup?.maxActiveListings,\n targetPercentage: listingGroup?.targetPercentage,\n deprioritizedQuantities: listingGroup?.deprioritizedQuantities ?? [],\n marketplaceSettings: listingGroup?.marketplaceSettings,\n groupUndercutSetting: {\n undAbsAmt: listingGroup?.absoluteRankPremium,\n undRelAmt: listingGroup?.relativeRankPremium,\n actRankUndAbsAmt: null,\n actRankUndRelAmt: null,\n },\n },\n ],\n templateSettings: {\n groupBy: {\n groupingType: GroupingType.Custom,\n },\n desiredActiveListings: 0,\n deprioritizedQuantities: [],\n },\n eventSettings: [],\n });\n }, [listings, listingGroup, event, newGroupName, reset]);\n return (\n \n \n \n );\n};\n","import { useCallback, useContext, useState } from 'react';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { GroupListingsModal } from 'src/modals/GroupListings';\nimport { IconsFill, MoreIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { Event, ListingGroup, ListingGroupClient } from 'src/WebApiController';\n\nexport const ListingGroupActions = ({\n event,\n listingGroup,\n disabled,\n setIsLoading,\n slideLeft,\n}: {\n event: Event;\n listingGroup: ListingGroup;\n disabled?: boolean;\n slideLeft?: boolean;\n setIsLoading?: (value: boolean) => void;\n}) => {\n const { setActivePosEntity } = useActivePosEntityContext();\n const { setModal } = useContext(ModalContext);\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const {\n updateExpandedListItems,\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const [isUngrouping, setIsUngrouping] = useState(false);\n\n const ungroupConfirmDialog = useBasicDialog();\n\n const onUngroupListings = useCallback(() => {\n tryInvokeApi(\n async () => {\n setIsLoading?.(true);\n setIsUngrouping(true);\n\n if (listingGroup.ltGrpId) {\n const ungroupedListings = await new ListingGroupClient(\n activeAccountWebClientConfig\n ).ungroupListings(listingGroup.ltGrpId);\n\n updateExpandedListItems(ungroupedListings);\n\n setActivePosEntity(0);\n\n // kick off a background refresh, but not wait since we already force updateExpandedListItems\n refreshExpandedListItems();\n }\n },\n (error) => {\n showErrorDialog('ListingGroupClient.ungroupListings', error, {\n trackErrorData: listingGroup,\n });\n },\n () => {\n setIsLoading?.(false);\n setIsUngrouping(false);\n ungroupConfirmDialog.closeDialog();\n }\n );\n }, [\n activeAccountWebClientConfig,\n listingGroup,\n refreshExpandedListItems,\n setActivePosEntity,\n setIsLoading,\n showErrorDialog,\n ungroupConfirmDialog,\n updateExpandedListItems,\n ]);\n\n return (\n <>\n \n \n \n }\n align=\"end\"\n triggerProps={{ disabled: disabled }}\n >\n {\n e.stopPropagation();\n e.preventDefault();\n setModal({\n children: (\n \n ),\n clickOutsideToClose: true,\n ...{ size: slideLeft ? 'slide-left' : 'slide-in' },\n });\n }}\n disabled={disabled}\n >\n \n \n {\n e.stopPropagation();\n e.preventDefault();\n ungroupConfirmDialog.launchDialog();\n }}\n disabled={disabled}\n >\n \n \n \n\n }\n bodyText={}\n onOkay={onUngroupListings}\n disabled={isUngrouping}\n isLoading={isUngrouping}\n onCancel={() => ungroupConfirmDialog.closeDialog()}\n />\n \n );\n};\n","import { sum } from 'lodash-es';\nimport { IconButton } from 'src/components/Buttons';\nimport { vars } from 'src/core/themes';\nimport { BroadcastIconInverted } from 'src/svgs';\nimport { ClockIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Listing, ListingGroup, ListingStatus } from 'src/WebApiController';\n\nimport * as styles from './ListingGroupStatusSummary.css';\n\nexport const ListingGroupStatusSummary = ({\n listingGroup,\n}: {\n listingGroup: ListingGroup;\n}) => {\n return (\n
    \n \n \n {sum(\n listingGroup.groupItems\n .flatMap((l) =>\n l.isLtGrp ? (l as ListingGroup).groupItems : []\n )\n .filter(\n (l) =>\n !l.isLtGrp &&\n ((l as Listing).status === ListingStatus.Listed ||\n (l as Listing).status === ListingStatus.ListingPending)\n )\n .map((l) => l.availQty)\n )}\n
    \n }\n style={{ padding: '2px 1px' }}\n titleContentId={ContentId.ListingGroupSummaryActiveAndActive}\n />\n\n \n \n {sum(\n listingGroup.groupItems\n .flatMap((l) =>\n l.isLtGrp ? (l as ListingGroup).groupItems : []\n )\n .filter(\n (l) =>\n !l.isLtGrp &&\n !(\n (l as Listing).status === ListingStatus.Listed ||\n (l as Listing).status === ListingStatus.ListingPending\n )\n )\n .map((l) => l.availQty)\n )}\n \n }\n style={{ padding: '2px' }}\n titleContentId={ContentId.ListingGroupSummaryQueued}\n />\n \n );\n};\n","import { isEmpty } from 'lodash-es';\nimport { useCallback, useContext, useMemo, useState } from 'react';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { IconButton } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext/ModalContext';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { vars } from 'src/core/themes';\nimport { Colors } from 'src/core/themes/constants/colors';\nimport { Stack } from 'src/core/ui';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport { OpenLinkIcon } from 'src/svgs/OpenLinkIcon';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isInFullPageEventView } from 'src/utils/deepLinkUtils';\nimport { compareMarketplace } from 'src/utils/eventWithDataUtils';\nimport {\n getListingActionButtons,\n getListingDetailsDeepLinkUrl,\n getListingDetailsModalConfigWithDeepLink,\n getListingDetailsRelativeUrl,\n getListingGroupForListing,\n} from 'src/utils/inventoryUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n Event,\n Listing,\n ListingActionType,\n ListingDetailDataField,\n ListingGroup,\n ListingGroupClient,\n ListingStatus,\n Marketplace,\n} from 'src/WebApiController';\nimport styled from 'styled-components';\n\nimport { ListingGroupActions } from './ListingGroupActions';\nimport { ListingGroupStatusSummary } from './ListingGroupStatusSummary';\n\n// Due to limited table width - certain actions are not being shown in the listing table\n// but will only show in listing-detail modal view\n// These are the actions we do not want to show in the listing table\nconst NotTableActionTypes = [\n ListingActionType.Split,\n ListingActionType.SplitToOriginal,\n ListingActionType.AddOfflineSale,\n ListingActionType.AddMarketplaceSale,\n ListingActionType.AddAdminHold,\n ListingActionType.RemoveAdminHold,\n];\n\nconst BroadcastActionTypes = [\n ListingActionType.Broadcast,\n ListingActionType.Unbroadcast,\n];\n\nexport const ListingActionsCell = ({\n event,\n listing,\n isSubRow,\n disabled,\n linkOnly,\n}: {\n event: Event;\n listing: Listing;\n isSubRow?: boolean;\n disabled?: boolean;\n linkOnly?: boolean;\n}) => {\n const [actionIsLoading, setActionIsLoading] = useState(false);\n\n const { isLoading } = useActivePosEntityContext();\n\n const allDisabled = actionIsLoading || isLoading || disabled;\n\n return (\n <>\n {listing.isLtGrp ? (\n \n \n \n ) : listing.isFull ? (\n \n \n \n ) : null}\n \n );\n};\n\nconst ActionCellForListing = ({\n listing,\n event,\n disabled,\n setIsLoading,\n linkOnly,\n}: {\n listing: Listing;\n event: Event;\n disabled?: boolean;\n setIsLoading: (state: boolean) => void;\n linkOnly?: boolean;\n}) => {\n const { mainRoute, activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n updateItemInEvent,\n eventsExpansion: { refreshExpandedListItems },\n eventsTransformed,\n } = useCatalogDataContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const { setModal } = useContext(ModalContext);\n const navigate = useNavigate();\n\n const onViewClick = useCallback(\n async (newTab: boolean) => {\n const inFullPageEventView = isInFullPageEventView(mainRoute);\n if (newTab) {\n window.open(getListingDetailsDeepLinkUrl(listing.id), '_blank');\n } else if (\n mainRoute === MainRoute.Inventory ||\n mainRoute === MainRoute.InventorySearch ||\n inFullPageEventView\n ) {\n setActivePosEntity(listing.id, listing.idOnMkp, true, [\n ListingDetailDataField.Basic,\n ]);\n setModal(getListingDetailsModalConfigWithDeepLink(listing.id, true));\n } else {\n navigate(getListingDetailsRelativeUrl(listing.id));\n }\n },\n [\n mainRoute,\n setActivePosEntity,\n listing.id,\n listing.idOnMkp,\n setModal,\n navigate,\n ]\n );\n\n const lockListingGroupFromEdits = useCallback(\n (lock: boolean) => {\n const listingGroup = getListingGroupForListing(\n event.viagId,\n listing.ltGrpId,\n eventsTransformed\n );\n\n if (listingGroup) {\n listingGroup.isLockedFromEdits = lock;\n\n updateItemInEvent(listingGroup, ActionOutboxEntityType.Listing);\n }\n },\n [event.viagId, eventsTransformed, listing.ltGrpId, updateItemInEvent]\n );\n\n const onSetListingActiveInGroup = useCallback(() => {\n tryInvokeApi(\n async () => {\n setIsLoading(true);\n\n if (listing.ltGrpId) {\n lockListingGroupFromEdits(true);\n updateItemInEvent(\n {\n ...listing,\n status: ListingStatus.ListingPending,\n ltGrpActive: true,\n },\n ActionOutboxEntityType.Listing\n );\n if (\n await new ListingGroupClient(\n activeAccountWebClientConfig\n ).setListingActiveInGroup(listing.ltGrpId, listing.id, true)\n ) {\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n }\n },\n (error) => {\n showErrorDialog('ListingGroupClient.setListingActiveInGroup', error, {\n trackErrorData: listing,\n });\n },\n () => {\n lockListingGroupFromEdits(false);\n setIsLoading(false);\n }\n );\n }, [\n activeAccountWebClientConfig,\n listing,\n lockListingGroupFromEdits,\n refreshExpandedListItems,\n setActivePosEntity,\n setIsLoading,\n showErrorDialog,\n updateItemInEvent,\n ]);\n\n return (\n \n {!linkOnly &&\n getListingActionButtons(\n true /* for table */,\n listing,\n listing.actions.filter(\n (a) =>\n // Action is not in the not-action-table\n !NotTableActionTypes.includes(a) &&\n // And either not a group, or not-a-subrow-and-is-active, or not a broadcast-action\n (listing.ltGrpId == null ||\n listing.ltGrpActive ||\n !BroadcastActionTypes.includes(a))\n ),\n event,\n undefined,\n true,\n undefined,\n disabled,\n lockListingGroupFromEdits,\n onSetListingActiveInGroup\n )}\n {\n if (e.button === 0 && e.getModifierState('Control') === false) {\n // Perform like a button click when it's a left-click (and no Ctrl)\n // Else the click will be whatever does\n e.preventDefault();\n e.stopPropagation();\n\n onViewClick(!!linkOnly);\n }\n }}\n >\n \n }\n disabled={disabled}\n titleContentId={ContentId.ViewDetails}\n />\n \n \n );\n};\n\nconst AllowedMarkeplaces: Marketplace[] = [\n Marketplace.StubHub,\n Marketplace.VividSeats,\n Marketplace.SeatGeek,\n Marketplace.Ticketmaster,\n];\nconst ActionCellForListingGroup = ({\n event,\n listingGroup,\n disabled,\n setIsLoading,\n isSubRow,\n linkOnly,\n}: {\n event: Event;\n listingGroup: ListingGroup;\n disabled?: boolean;\n setIsLoading: (state: boolean) => void;\n isSubRow?: boolean;\n linkOnly?: boolean;\n}) => {\n const { marketplaceSettings } = listingGroup;\n\n const broadcastStatuses = useMemo(() => {\n const status: { marketplace: Marketplace; disabled: boolean }[] = [];\n if (isEmpty(marketplaceSettings?.listingMarketplaceSettings)) {\n return status;\n }\n Object.values(Marketplace).forEach((marketplace, index) => {\n if (AllowedMarkeplaces.includes(marketplace)) {\n const settings =\n marketplaceSettings?.listingMarketplaceSettings?.[index + 1 + ''];\n if (settings?.listingBroadcastStateId) {\n status.push({\n marketplace,\n disabled: settings.listingBroadcastStateId === 1,\n });\n }\n }\n });\n return status;\n }, [marketplaceSettings?.listingMarketplaceSettings]);\n\n return (\n \n \n {!isSubRow && }\n {!isSubRow && (\n \n )}\n \n {!isSubRow && !isEmpty(broadcastStatuses) && (\n \n )}\n \n );\n};\n\nconst MarketplaceStyleMap: Record<\n Marketplace,\n { color: string; reverseColor?: string }\n> = {\n [Marketplace.StubHub]: { color: Colors.indigo100 },\n [Marketplace.VividSeats]: { color: Colors.brandVivid },\n [Marketplace.SeatGeek]: { color: Colors.brandSeatgeek },\n [Marketplace.TickPick]: { color: Colors.brandTickPick },\n [Marketplace.Ticketmaster]: { color: Colors.brandTicketmaster },\n [Marketplace.Offline]: { color: '#2a9ba3' },\n [Marketplace.AXS]: { color: Colors.brandAxs },\n [Marketplace.FanXchange]: { color: Colors.brandFanXchange },\n [Marketplace.Gametime]: { color: '#21cc8a' },\n [Marketplace.TicketEvolution]: { color: Colors.brandTicketEvolution },\n [Marketplace.TicketNetwork]: { color: Colors.brandTicketNetwork },\n [Marketplace.Automatiq]: { color: '#000000', reverseColor: '#ffffff' },\n [Marketplace.Lyte]: { color: Colors.brandLyte },\n [Marketplace.GoTickets]: { color: Colors.brandGoTickets },\n [Marketplace.B2BSales]: { color: Colors.brandB2BSales },\n [Marketplace.TicketNetworkMercury]: { color: Colors.brandTicketNetwork },\n};\n\ntype MarketplaceActionCellForListingGroup = {\n broadcastStatuses: { marketplace: Marketplace; disabled: boolean }[];\n};\nconst MarketplaceActionCellForListingGroup: React.FC<\n MarketplaceActionCellForListingGroup\n> = ({ broadcastStatuses }) => {\n const contentDelisted = useContent(ContentId.BroadcastDisabled);\n const contentListed = useContent(ContentId.Broadcast);\n const { isDarkMode } = useSiteTheme();\n\n return (\n \n {broadcastStatuses\n .toSorted((a, b) => compareMarketplace(a.marketplace, b.marketplace))\n .map(({ marketplace, disabled }) => {\n const style = MarketplaceStyleMap[marketplace];\n if (!style) {\n return null;\n }\n return (\n \n );\n })}\n \n );\n};\n\nconst MarketplaceDot = styled.div<{ color: string; disabled: boolean }>`\n height: 12px;\n width: 12px;\n background-color: ${({ color, disabled }) => (disabled ? '#bbb' : color)};\n border-radius: 50%;\n display: inline-block;\n\n &:hover {\n transform: scale(1.2);\n }\n`;\n","import { Content, useContent } from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { FormatOption } from 'src/modals/EditTableColumns';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\n\nexport type DateCellProps = {\n /**\n * Date as string, should be parseable by Date constructor\n */\n date: string | string[] | null;\n // TODO: handle date ranges\n dateEnd?: string | null;\n precision?: FormatOption;\n align?: 'left' | 'center' | 'right';\n enableUtcFallback?: boolean;\n /**\n * Hide \"Ago\"/\"In\" text\n */\n hideRelativeTerms?: boolean;\n /**\n * Try to use site timezone first, then fall back to local timezone\n */\n useSiteTimeZone?: boolean;\n style?: React.CSSProperties;\n};\n\nexport const DateCell = ({\n precision = FormatOption.DateTime_MonthDD_Time,\n date,\n align = 'right',\n enableUtcFallback = false,\n hideRelativeTerms = false,\n style,\n useSiteTimeZone = true,\n}: DateCellProps) => {\n const inText = useContent(ContentId.In);\n const agoText = useContent(ContentId.Ago);\n const nowText = useContent(ContentId.JustNow);\n const { timeZone } = useSiteTimezoneContext();\n if (!date)\n return (\n \n \n \n );\n\n let formattedDate: string | null | undefined;\n if (!Array.isArray(date)) {\n formattedDate = applyNumberFormatting({\n precision,\n inputNumber: date,\n isDateTime: true,\n enableUtcFallback,\n\n timeZone: useSiteTimeZone ? timeZone : undefined,\n });\n } else {\n const dates = date as string[];\n formattedDate = dates\n .map((date) =>\n applyNumberFormatting({\n precision,\n inputNumber: date,\n isDateTime: true,\n enableUtcFallback,\n localeText: {\n in: inText,\n ago: agoText,\n now: nowText,\n },\n timeZone: useSiteTimeZone ? timeZone : undefined,\n })\n )\n .join(', ');\n }\n\n return (\n \n {formattedDate}\n \n );\n};\n","import { useContent } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getInHandDisplayData } from 'src/utils/saleUtils';\n\nimport { inhandDateContainer } from './InHandDateDisplay.css';\n\nexport function InHandDateDisplay({\n date,\n needsToFulfill,\n handleFulfillmentState,\n showAbsoluteDate = false,\n}: {\n date?: Date | null;\n needsToFulfill?: boolean;\n handleFulfillmentState?: boolean;\n showAbsoluteDate?: boolean;\n}) {\n const inhand = useContent(ContentId.InHand);\n const dateLocal =\n date &&\n new Date(\n Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds()\n )\n );\n\n const { displayText, displayTooltip, alertIcon } = getInHandDisplayData(\n inhand,\n dateLocal,\n new Date(),\n needsToFulfill,\n showAbsoluteDate,\n );\n\n if (!needsToFulfill && handleFulfillmentState) {\n return null;\n }\n\n return (\n
    \n {handleFulfillmentState && alertIcon}\n {displayText}\n
    \n );\n}\n","import { InHandDateDisplay } from 'src/components/common/InHandDateDisplay';\n\nexport type InHandCellProps = {\n date: Date | null;\n needsToFulfill?: boolean;\n handleFulfillmentState?: boolean;\n};\n\nexport const InHandCell = ({\n date,\n needsToFulfill,\n handleFulfillmentState,\n}: InHandCellProps) => {\n return (\n \n );\n};\n","import { vars } from 'src/core/themes';\nimport { Event, Listing, Performer, Venue } from 'src/WebApiController';\n\nexport type ListingWithEvent = {\n listing?: Listing | null;\n isLtGrp?: boolean;\n ltGroupName?: string;\n isCompListing?: boolean;\n event: Event;\n performer?: Performer | null;\n venue?: Venue | null;\n selectionDisabledReason?: string;\n rowIndex?: number;\n currentPageIndex?: number;\n ticketClassColor?: string | null;\n};\n\nexport const SHIMMERING_DIV_HEIGHT_SINGLE_LISTING = vars.spacing.xxl;\nexport const SHIMMERING_DIV_HEIGHT_LISTING_GROUP = '110px';\n","import { useMemo } from 'react';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { Listing, Marketplace } from 'src/WebApiController';\n\nexport const useListingHasVenueMapInfo = (\n listing?: Listing | null,\n hasAutoPricingUiGateFeature?: boolean\n) => {\n const { venueMapInfo } = useEventMapContext();\n\n const hasVenueMapInfo = useMemo(() => {\n // If the listing has rowId - we assume it's seating came from a venue map\n if (listing?.seating?.rowId) {\n return true;\n }\n\n // Otherwise, try to find the section name in the venue map\n const foundSection = venueMapInfo?.sections.find(\n (s) => s.name === listing?.seating.section\n );\n\n if (foundSection) {\n return true;\n }\n\n // Otherwise, try to find the overridden section in the venue map\n const overrideSection = listing?.mkpListings?.find(\n (m) => m.mkp === Marketplace.StubHub && m.overrideSection\n )?.overrideSection;\n\n const foundOverrideSection = venueMapInfo?.sections.find(\n (s) => s.name === overrideSection\n );\n\n if (foundOverrideSection) {\n return true;\n }\n\n // If no section mapping is found, just make sure the listing at least has a section value\n if (hasAutoPricingUiGateFeature) {\n return listing?.seating?.section?.trim() ?? false;\n }\n\n return false;\n }, [\n hasAutoPricingUiGateFeature,\n listing?.mkpListings,\n listing?.seating?.rowId,\n listing?.seating.section,\n venueMapInfo?.sections,\n ]);\n\n return {\n mapExists: Boolean(venueMapInfo?.sections?.length),\n hasVenueMapInfo,\n };\n};\n","import { ChangeEvent, useCallback, useEffect } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { EventMapContextProvider } from 'src/contexts/EventMapContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TooltipPopover } from 'src/core/ui/TooltipPopover';\nimport { useListingHasVenueMapInfo } from 'src/hooks/useListingHasVenueMapInfo';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useListingAutoPricingSettings } from 'src/modals/ListingDetails/components/useListingAutoPricingSettings';\nimport { WarningOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Event, Feature, Listing } from 'src/WebApiController';\n\nimport { ListingPricingInput } from './ListingPriceForm.types';\n\ntype AutoPricingToggleCellProps = {\n listing: Listing;\n editable?: boolean;\n disabled?: boolean;\n event: Event;\n};\n\nexport const AutoPricingToggleCell = (props: AutoPricingToggleCellProps) => {\n return (\n \n \n \n );\n};\n\nconst AutoPricingToggleCellContent = ({\n listing,\n editable,\n disabled,\n event,\n}: AutoPricingToggleCellProps) => {\n const field = 'autoPricingEnabled';\n const { setValue, watch, getFieldState, formState } =\n useFormContext();\n\n const { getSelection } = useMultiSelectionContext();\n const listingSelection = getSelection(event.viagVirtualId);\n\n const { canSetPrice, autoPricingEnabled, setAutoPricingDefaults } =\n useListingAutoPricingSettings(listing);\n\n const isSubmittingPricingSettings = watch('isSubmittingPricingSettings');\n const isSubmittingRowIndex = watch('isSubmittingRowIndex');\n const isSubmittingPrice = watch('isSubmitting');\n const rowIndex = watch('rowIndex');\n\n const fieldValue = watch(field);\n const canAutoPrice = useUserHasFeature(Feature.AutoPricing) && canSetPrice;\n const { mapExists, hasVenueMapInfo } = useListingHasVenueMapInfo(listing);\n\n const fieldIsSubmitting =\n (isSubmittingPricingSettings || isSubmittingPrice) &&\n (isSubmittingRowIndex === undefined || isSubmittingRowIndex === rowIndex);\n\n const isDisabled =\n disabled ||\n listing.isDeleted ||\n !canSetPrice ||\n listingSelection.isSingleGroupMultiSelect ||\n fieldIsSubmitting;\n\n const fieldError = getFieldState(field, formState)?.error?.message;\n\n const fieldHasChanged =\n formState.defaultValues?.[field] !== fieldValue &&\n !isSubmittingPricingSettings;\n\n const submit = useCallback(() => {\n if (fieldError) {\n return;\n }\n if (fieldHasChanged) {\n // Only submit if Enter is hit in the box that has changes\n setValue('isSubmittingPricingSettings', true);\n setValue('isSubmittingRowIndex', rowIndex);\n }\n }, [fieldError, fieldHasChanged, setValue, rowIndex]);\n\n useEffect(() => {\n submit();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [autoPricingEnabled]);\n\n return (\n \n {editable &&\n (!canAutoPrice || !hasVenueMapInfo ? (\n \n \n }\n >\n {!canAutoPrice ? (\n \n ) : mapExists && !hasVenueMapInfo ? (\n \n ) : (\n \n )}\n \n \n \n ) : (\n \n ) => e.stopPropagation()}\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (isChecked !== autoPricingEnabled) {\n if (isChecked) {\n // If enabled, set defaults where necessary\n setAutoPricingDefaults();\n }\n\n setValue('autoPricingEnabled', isChecked);\n }\n }}\n />\n \n \n ))}\n \n );\n};\n","import { ChangeEvent, useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Popover } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TooltipPopover } from 'src/core/ui/TooltipPopover';\nimport { useListingHasVenueMapInfo } from 'src/hooks/useListingHasVenueMapInfo';\nimport { useUserCanSetPrice } from 'src/hooks/useUserHasListingPermissions';\nimport {\n CheckIcon,\n CrossIcon,\n IconsFill,\n ProcessingIcon,\n} from 'src/svgs/Viagogo';\nimport { PricingSettingsFieldNumeric } from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { AutoPricingCompListingMode, Listing } from 'src/WebApiController';\n\nimport { ListingPricingInput } from './ListingPriceForm.types';\n\ntype CompListingBoundsCellProps = {\n formattedNumber?: string | null;\n listing: Listing;\n editable?: boolean;\n field: PricingSettingsFieldNumeric;\n disabled?: boolean;\n viagVirtualId?: string;\n};\n\nexport const CompListingBoundsCell = ({\n formattedNumber,\n listing,\n editable,\n field,\n disabled,\n viagVirtualId,\n}: CompListingBoundsCellProps) => {\n const { setValue, watch, clearErrors, getFieldState, formState } =\n useFormContext();\n const { getSelection } = useMultiSelectionContext();\n const listingSelection = getSelection(viagVirtualId);\n const isSelectionMode = listingSelection.isSingleGroupMultiSelect;\n\n const saveMsg = useContent(ContentId.Save);\n\n const isSubmittingPricingSettings = watch('isSubmittingPricingSettings');\n const isSubmittingPrice = watch('isSubmitting');\n const isSubmittingRowIndex = watch('isSubmittingRowIndex');\n const rowIndex = watch('rowIndex');\n const autoPricingEnabled = watch('autoPricingEnabled');\n const compListingMode = watch('compListingMode');\n const fieldValue = watch(field);\n\n const canSetPrice = useUserCanSetPrice(listing, false);\n const { hasVenueMapInfo } = useListingHasVenueMapInfo(listing);\n\n const isAutoPricingDisabled = !(hasVenueMapInfo && canSetPrice);\n\n const isCompListingAmountDisabled =\n disabled ||\n listing.isDeleted ||\n !canSetPrice ||\n !autoPricingEnabled ||\n !compListingMode ||\n compListingMode === AutoPricingCompListingMode.SameZone ||\n compListingMode === AutoPricingCompListingMode.SameEvent ||\n compListingMode === AutoPricingCompListingMode.ParentListing ||\n isAutoPricingDisabled;\n\n const fieldIsSubmitting =\n (isSubmittingPricingSettings || isSubmittingPrice) &&\n (isSubmittingRowIndex === undefined || isSubmittingRowIndex === rowIndex);\n\n const fieldError = getFieldState(field, formState)?.error?.message;\n\n const fieldHasChanged =\n formState.defaultValues?.[field] !== fieldValue &&\n fieldValue &&\n fieldValue > 0 &&\n !isSubmittingPricingSettings;\n\n const submit = useCallback(() => {\n if (fieldError) {\n return;\n }\n if (fieldHasChanged) {\n // Only submit if Enter is hit in the box that has changes\n setValue('isSubmittingPricingSettings', true);\n setValue('isSubmittingRowIndex', rowIndex);\n }\n }, [fieldError, fieldHasChanged, setValue, rowIndex]);\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n submit();\n }\n };\n\n const onChangeHandler = useCallback(\n (e: ChangeEvent) => {\n let newValue: number | null = parseFloat(e.target.value) ?? null;\n\n clearErrors(field);\n\n if (Number.isNaN(newValue) || newValue > Infinity) {\n newValue = null;\n }\n setValue(field, newValue);\n },\n [clearErrors, field, setValue]\n );\n\n return (\n \n \n {formattedNumber != null ? (\n formattedNumber\n ) : isCompListingAmountDisabled ? (\n ''\n ) : (\n \n )}\n \n }\n style={\n !editable || isCompListingAmountDisabled\n ? { color: vars.color.textPrimary }\n : {}\n }\n disabled={\n isCompListingAmountDisabled ||\n isSelectionMode ||\n disabled ||\n fieldIsSubmitting ||\n !editable\n }\n onClosed={() => {\n if (formState.defaultValues?.[field]) {\n setValue(field, formState.defaultValues?.[field] ?? null);\n }\n }}\n >\n \n \n {fieldIsSubmitting ? (\n \n \n \n ) : fieldHasChanged && !fieldError ? (\n {\n e.stopPropagation();\n submit();\n }}\n />\n ) : null}\n\n \n \n \n \n }\n type=\"number\"\n value={\n compListingMode == null || fieldValue == null ? '' : fieldValue\n }\n disabled={disabled || isSelectionMode || fieldIsSubmitting}\n onChange={onChangeHandler}\n onKeyDown={handleKeyDown}\n />\n \n \n \n );\n};\n","import { ColumnDef } from '@tanstack/react-table';\nimport { ListingWithEvent } from 'src/tables/ListingTable/ListingTable.types';\nimport { Feature } from 'src/WebApiController';\n\nexport type ColumnPersonalizationFlags = {\n /**\n * Determines whether user should be able to toggle visibility of a column. Still\n * allows for user to adjust ordering of column when true.\n * DEFAULT: false\n */\n isRequired: boolean;\n /**\n * Whether the setting should appear in the configuration setting\n * If false, ensure column is always enabled\n * DEFAULT: true\n */\n isConfigurable: boolean;\n /**\n * Whether the field can be toggled between editable and read-only\n * DEFAULT: false\n */\n isEditabilityConfigurable: boolean;\n /**\n * Identifies a column as numeric AND whether numeric precision should be applied to the data.\n * DEFAULT: false\n */\n isNumeric: boolean;\n /**\n * Identifies a column that can be displayed as icon or enum value\n * DEFAULT: false\n */\n isEnumWithIcon: boolean;\n /**\n * Whether a column should be hidden in lieu of a user preference set (will be used for autopricing)\n * DEFAULT: false\n */\n isHiddenByDefault: boolean;\n /* Whether the number is a currency\n * DEFAULT: false\n */\n isCurrency: boolean;\n /* Whether the number is a percent\n * DEFAULT: false\n */\n isPercent: boolean;\n /**\n * Whether should not expect decimals\n *\n * Default: `false`\n */\n isInteger: boolean;\n /**\n * Timestamp/DateTime\n */\n isDateTime: boolean;\n /**\n * Requires these Features to show and configure\n * DEFAULT: empty\n */\n requiredFeatures: Readonly;\n /**\n * List of view modes that the column is visible in, defaults to all view modes if empty\n * currently only used for PurchaseTable columns\n * DEFAULT: empty\n */\n visibleViewModes: Readonly;\n};\n\nexport const PERSONALIZATION_DEFAULTS: ColumnPersonalizationFlags = {\n isRequired: false,\n isConfigurable: true,\n isEditabilityConfigurable: false,\n isNumeric: false,\n isEnumWithIcon: false,\n isInteger: false,\n isHiddenByDefault: false,\n isCurrency: false,\n isDateTime: false,\n isPercent: false,\n requiredFeatures: [],\n visibleViewModes: [],\n};\n\nexport type GetColumnConfigById = {\n personalization: ColumnPersonalizationFlags;\n definition: ColumnDef | undefined;\n};\n\nexport type GetListingColumnConfigById = {\n personalization: ColumnPersonalizationFlags;\n definition: ColumnDef | undefined;\n};\n","import { EventsFormulaFields } from 'src/tables/EventsTable/configs/EventsTableColumnsConfig';\nimport { ListingDetailedMetrics, UiMoney } from 'src/WebApiController';\n\nimport { ColumnPersonalizationFlags } from '../columnUtils.types';\nimport { EventsTableColumnId } from './eventsColumnUtils.types';\n\nexport const EVENTS_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG: Partial =\n {\n isHiddenByDefault: true,\n isNumeric: true,\n };\n\nexport const FORMULA_FIELD_TO_COLUMN_ID: Record<\n keyof EventsFormulaFields,\n EventsTableColumnId | undefined\n> = {\n ['actualStr']: EventsTableColumnId.ActualSTR,\n ['expectedStr']: undefined,\n ['liftPercentage']: EventsTableColumnId.LiftPercentage,\n ['listedAtp']: EventsTableColumnId.ListedAtp,\n ['revenue']: EventsTableColumnId.Revenue,\n ['totalAtp']: EventsTableColumnId.ATP,\n ['totalCost']: undefined,\n ['totalGrossProfit']: EventsTableColumnId.Profit,\n ['totalListPrice']: undefined,\n ['totalListedQuantity']: EventsTableColumnId.ListedQty,\n ['totalListedValue']: undefined,\n ['totalNetProceeds']: undefined,\n ['totalSoldCost']: EventsTableColumnId.SoldCost,\n ['totalSoldQuantity']: EventsTableColumnId.SoldQty,\n ['totalTicketQuantity']: EventsTableColumnId.TotalQty,\n ['totalUnsoldListPrice']: undefined,\n ['totalUnsoldQuantity']: EventsTableColumnId.UnsoldQty,\n};\n\nexport const LISTING_METRIC_TEST_DATA: ListingDetailedMetrics = {\n str: 1,\n liftPerc: 1,\n listedATP: { amt: 1 } as UiMoney,\n rvn: { amt: 1 } as UiMoney,\n atp: { amt: 1 } as UiMoney,\n ttlCst: { amt: 1 } as UiMoney,\n pandL: { amt: 1 } as UiMoney,\n ttlListPrc: { amt: 1 } as UiMoney,\n listQty: 1,\n netProcs: { amt: 1 } as UiMoney,\n soldCst: { amt: 1 } as UiMoney,\n soldQty: 1,\n tktQty: 1,\n ttlUnsoldListPrc: { amt: 1 } as UiMoney,\n unsoldQty: 1,\n} as ListingDetailedMetrics;\n","import {\n evaluateFormulaBase,\n FormulaEditable,\n FormulaExecutable,\n fromExecutableFormula,\n parseEditableFormulaBase,\n parseExecutableFormula,\n validateFormulaSingleStatement,\n} from 'src/utils/columns/customColumnUtils';\nimport { EVENTS_FORMULA_FIELDS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { ListingDetailedMetrics } from 'src/WebApiController';\n\nimport { EventsFormulaFields } from '../../../tables/EventsTable/configs/EventsTableColumnsConfig';\nimport { ColumnPersonalizationFlags } from '../columnUtils.types';\nimport {\n getPersonalizationFlagsFromFormulaBase,\n MathematicalToken,\n parseMathematicalTokensFromFormulaBase,\n} from '../customColumnMathUtils';\nimport { EVENTS_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES } from './eventsColumnUtils.constants';\nimport { EventsTableColumnId } from './eventsColumnUtils.types';\nimport {\n FORMULA_FIELD_TO_COLUMN_ID,\n LISTING_METRIC_TEST_DATA,\n} from './eventsCustomColumnUtils.constants';\n\nexport const parseEditableFormula = (\n editableFormula: FormulaEditable | undefined\n): string[] | undefined => {\n const parsedTokenResult = parseEditableFormulaBase(editableFormula);\n if (!parsedTokenResult) {\n return;\n }\n\n let parseFailed = false;\n const tokens: string[] = [];\n parsedTokenResult.forEach((tokenResult) => {\n if (tokenResult.isPlainToken) {\n tokens.push(tokenResult.token);\n } else {\n const fieldName = tokenResult.token;\n if (\n EVENTS_FORMULA_FIELDS_TO_CID[fieldName as keyof EventsFormulaFields] ==\n null\n ) {\n parseFailed = true;\n return;\n }\n tokens.push(\n EVENTS_FORMULA_FIELDS_TO_CID[fieldName as keyof EventsFormulaFields]\n );\n }\n });\n\n if (parseFailed) return;\n\n return tokens;\n};\n\nconst mapFormulaFields = (\n metrics?: ListingDetailedMetrics\n): EventsFormulaFields => {\n return {\n actualStr: metrics?.str,\n expectedStr: undefined,\n liftPercentage: metrics?.liftPerc,\n listedAtp: metrics?.listedATP?.amt,\n revenue: metrics?.rvn?.amt,\n totalAtp: metrics?.atp?.amt,\n totalCost: metrics?.ttlCst?.amt,\n totalGrossProfit: metrics?.pandL?.amt,\n totalListPrice: metrics?.ttlListPrc?.amt,\n totalListedQuantity: metrics?.listQty,\n totalListedValue: undefined,\n totalNetProceeds: metrics?.netProcs?.amt,\n totalSoldCost: metrics?.soldCst?.amt,\n totalSoldQuantity: metrics?.soldQty,\n totalTicketQuantity: metrics?.tktQty,\n totalUnsoldListPrice: metrics?.ttlUnsoldListPrc?.amt,\n totalUnsoldQuantity: metrics?.unsoldQty,\n };\n};\n\nexport const evaluateFormula = (\n formula: FormulaExecutable,\n metrics?: ListingDetailedMetrics\n) => {\n const data = mapFormulaFields(metrics);\n\n return evaluateFormulaBase(formula, data);\n};\n\nexport const validateFormula = (formula: string) => {\n return (\n parseExecutableFormula(formula) != null &&\n evaluateFormula(formula, LISTING_METRIC_TEST_DATA) != null &&\n validateFormulaSingleStatement(formula)\n );\n};\n\nexport const findDependentEventsTableColumnIds = (\n editableFormula: FormulaEditable\n): EventsTableColumnId[] => {\n const fieldNames =\n parseEditableFormulaBase(editableFormula, true)?.map((t) => t.token) ?? [];\n\n return (\n Object.entries(FORMULA_FIELD_TO_COLUMN_ID)\n .filter(([key, value]) => fieldNames.includes(key) && value != null)\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .map(([_, value]) => value!)\n );\n};\n\nexport function isCustomEventsColumn(columnId: string) {\n return !Object.values(EventsTableColumnId).some(\n (l) => l.toString() === columnId\n );\n}\n\nconst getTokenFromFieldName = (fieldName: string): MathematicalToken => {\n const columnId =\n FORMULA_FIELD_TO_COLUMN_ID[fieldName as keyof EventsFormulaFields];\n\n if (columnId == null) {\n // Tag field - here we assume it's not currency - might need to change\n return {\n token: `tag-${fieldName}`,\n isPlainToken: false,\n isCurrency: false,\n };\n }\n\n const { isCurrency, isPercent } =\n EVENTS_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[columnId];\n\n return {\n token: columnId,\n isPlainToken: false,\n isCurrency,\n isPercent,\n };\n};\n\n/**\n * Parse editableFormula, transforming formula into mathematical tokens\n * to infer personalization flags\n *\n * E.g. `${ticketCount} + 20` ==> [\n * { token: 'ticketCount', isCurrency: false, isPercent: false, isPlainToken: false },\n * { token: '+', isCurrency: false, isPercent: false, isPlainToken: true },\n * { token: '20', isCurrency: false, isPercent: false, isPlainToken: true }\n * ]\n * @param editableFormula\n * @returns parsed list of tokens, or undefined if failed to parse\n */\nconst parseMathematicalTokensFromFormula = (\n editableFormula: FormulaEditable | undefined\n): MathematicalToken[] | undefined => {\n return parseMathematicalTokensFromFormulaBase(\n editableFormula,\n getTokenFromFieldName\n );\n};\n\nexport const getPersonalizationFlagsFromFormula = (\n executableFormula: FormulaExecutable\n): Partial => {\n const editableFormula = fromExecutableFormula(executableFormula);\n const mathTokens = parseMathematicalTokensFromFormula(editableFormula);\n\n return getPersonalizationFlagsFromFormulaBase(mathTokens);\n};\n","import { ListingReportMetrics, Tag, UiMoney } from 'src/WebApiController';\n\nimport {\n LISTING_REPORT_FORMULA_FIELDS_TO_CID,\n ListingFormulaFieldsListingReportMetrics,\n} from '../../constants/contentIdMaps';\nimport { ColumnPersonalizationFlags } from '../columnUtils.types';\nimport {\n getPersonalizationFlagsFromFormulaBase,\n MathematicalToken,\n parseMathematicalTokensFromFormulaBase,\n} from '../customColumnMathUtils';\nimport {\n evaluateFormulaBase,\n FormulaEditable,\n FormulaExecutable,\n fromExecutableFormula,\n parseEditableFormulaBase,\n parseExecutableFormula,\n tagFieldNameToKey,\n tagKeyToFieldName,\n validateFormulaSingleStatement,\n} from '../customColumnUtils';\nimport { LISTING_REPORT_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES } from './inventoryColumnUtils.constants';\nimport { ListingReportTableColumnId } from './inventoryColumnUtils.types';\nimport { ListingFormulaFields } from './inventoryCustomColumnUtils';\nimport { CustomListingColumn } from './inventoryCustomColumnUtils.types';\n\n/**\n * Select custom columns that only refers to fields that are displayable in the listing report (e.g. ticket quantity)\n * @param customColumns\n * @returns\n */\nexport const filterCustomColumnsForListingReport = (\n customColumns: CustomListingColumn[],\n tagsForEntityType: Tag[] | undefined\n): CustomListingColumn[] => {\n const listingFormulaFields = Object.keys(\n LISTING_REPORT_FORMULA_FIELDS_TO_CID\n );\n const tagKeys = tagsForEntityType?.map((t) => tagKeyToFieldName(t.key)) ?? [];\n\n return customColumns.filter((column) => {\n const editableFormula = fromExecutableFormula(column.formula);\n if (!editableFormula) return false;\n\n const fieldNamesUsed =\n parseEditableFormulaBase(editableFormula, true)?.map((t) => t.token) ??\n [];\n\n return fieldNamesUsed.every(\n (f) => listingFormulaFields.includes(f) || tagKeys.includes(f)\n );\n });\n};\n\nconst listingReportMetricsToFormulaFields = (\n listingMetrics?: ListingReportMetrics\n) => {\n const tagFields = listingMetrics?.tags?.reduce((acc, tag) => {\n const numericValue = parseFloat(tag.value);\n if (isNaN(numericValue)) return acc;\n\n return {\n ...acc,\n [tagKeyToFieldName(tag.key)]: numericValue,\n };\n }, {});\n\n return {\n [ListingFormulaFields.availableQuantity]: listingMetrics?.availQty,\n [ListingFormulaFields.ticketCount]: listingMetrics?.tktQty,\n [ListingFormulaFields.unitCost]: listingMetrics?.ttlCst?.amt,\n [ListingFormulaFields.listPrice]: listingMetrics?.ttlListPrc?.amt,\n [ListingFormulaFields.allInPrice]: listingMetrics?.ttlWebPrc?.amt,\n [ListingFormulaFields.soldQuantity]: listingMetrics?.soldQty,\n [ListingFormulaFields.soldCost]: listingMetrics?.soldCst?.amt,\n [ListingFormulaFields.unsoldCost]: listingMetrics?.unsoldCst?.amt,\n [ListingFormulaFields.soldProceeds]: listingMetrics?.soldProcs?.amt,\n ...tagFields,\n };\n};\n\nexport const FORMULA_FIELD_TO_COLUMN_ID: Record<\n ListingFormulaFieldsListingReportMetrics,\n ListingReportTableColumnId\n> = {\n ['availableQuantity']: ListingReportTableColumnId.UnsoldQuantity,\n ['ticketCount']: ListingReportTableColumnId.TicketCount,\n ['unitCost']: ListingReportTableColumnId.UnitCost,\n ['listPrice']: ListingReportTableColumnId.ListPrice,\n ['allInPrice']: ListingReportTableColumnId.AllInPrice,\n ['soldQuantity']: ListingReportTableColumnId.SoldQuantity,\n ['soldCost']: ListingReportTableColumnId.SoldCost,\n ['unsoldCost']: ListingReportTableColumnId.UnitCost,\n ['soldProceeds']: ListingReportTableColumnId.SoldProceeds,\n};\n\nexport const parseEditableFormula = (\n editableFormula: FormulaEditable | undefined\n): string[] | undefined => {\n const parsedTokenResult = parseEditableFormulaBase(editableFormula);\n if (!parsedTokenResult) {\n return;\n }\n\n const tokens: string[] = [];\n parsedTokenResult.forEach((tokenResult) => {\n if (tokenResult.isPlainToken) {\n tokens.push(tokenResult.token);\n } else {\n const fieldName = tokenResult.token;\n if (\n LISTING_REPORT_FORMULA_FIELDS_TO_CID[\n fieldName as ListingFormulaFieldsListingReportMetrics\n ] == null\n ) {\n // Tag field\n tokens.push(tagFieldNameToKey(fieldName));\n return;\n }\n tokens.push(\n LISTING_REPORT_FORMULA_FIELDS_TO_CID[\n fieldName as ListingFormulaFieldsListingReportMetrics\n ]\n );\n }\n });\n\n return tokens;\n};\n\n/**\n * Mock listing data explicitly used to test-evaluate formula\n * not putting under src/mock to reduce coupling\n */\nexport const LISTING_FORMULA_TEST_DATA: ListingReportMetrics = {\n availQty: 1,\n tktQty: 1,\n ttlCst: { amt: 1 } as UiMoney,\n ttlListPrc: { amt: 1 } as UiMoney,\n ttlWebPrc: { amt: 1 } as UiMoney,\n soldQty: 1,\n soldCst: { amt: 1 } as UiMoney,\n unsoldCst: { amt: 1 } as UiMoney,\n soldProcs: { amt: 1 } as UiMoney,\n} as ListingReportMetrics;\n\nexport const findDependentListingTableColumnIds = (\n editableFormula: FormulaEditable\n): ListingReportTableColumnId[] => {\n const fieldNames =\n parseEditableFormulaBase(editableFormula, true)?.map((t) => t.token) ?? [];\n\n return (\n Object.entries(FORMULA_FIELD_TO_COLUMN_ID)\n .filter(([key]) => fieldNames.includes(key))\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .map(([_, value]) => value)\n );\n};\n\n/**\n * Evaluate formula defined in custom listing column.\n *\n * Example formula: \"data?.ticketCount + 20\"\n * @param formula\n * @param listingReportMetrics\n * @returns evaluated value, undefined on syntax error\n */\nexport const evaluateFormula = (\n formula: FormulaExecutable,\n listingReportMetrics?: ListingReportMetrics\n) => {\n const data = listingReportMetricsToFormulaFields(listingReportMetrics);\n\n return evaluateFormulaBase(formula, data);\n};\n\nconst createListingTestData = (\n tagsForEntityType: Tag[] | undefined\n): ListingReportMetrics => {\n const tagData = tagsForEntityType?.map((t) => {\n t.value = '1';\n return t;\n });\n\n return {\n ...LISTING_FORMULA_TEST_DATA,\n tags: tagData ?? [],\n };\n};\n\nexport const validateFormula = (\n formula: string,\n tagsForEntityType: Tag[] | undefined\n) => {\n return (\n parseExecutableFormula(formula) != null &&\n evaluateFormula(formula, createListingTestData(tagsForEntityType)) !=\n null &&\n validateFormulaSingleStatement(formula)\n );\n};\n\nconst getTokenFromFieldName = (fieldName: string): MathematicalToken => {\n const columnId =\n FORMULA_FIELD_TO_COLUMN_ID[\n fieldName as ListingFormulaFieldsListingReportMetrics\n ];\n\n if (columnId == null) {\n // Tag field - here we assume it's not currency - might need to change\n return {\n token: `tag-${fieldName}`,\n isPlainToken: false,\n isCurrency: false,\n };\n }\n\n const { isCurrency, isPercent } =\n LISTING_REPORT_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[columnId];\n\n return {\n token: columnId,\n isPlainToken: false,\n isCurrency,\n isPercent,\n };\n};\n\n/**\n * Parse editableFormula, transforming formula into mathematical tokens\n * to infer personalization flags\n *\n * E.g. `${ticketCount} + 20` ==> [\n * { token: 'ticketCount', isCurrency: false, isPercent: false, isPlainToken: false },\n * { token: '+', isCurrency: false, isPercent: false, isPlainToken: true },\n * { token: '20', isCurrency: false, isPercent: false, isPlainToken: true }\n * ]\n * @param editableFormula\n * @returns parsed list of tokens, or undefined if failed to parse\n */\nconst parseMathematicalTokensFromFormula = (\n editableFormula: FormulaEditable | undefined\n): MathematicalToken[] | undefined => {\n return parseMathematicalTokensFromFormulaBase(\n editableFormula,\n getTokenFromFieldName\n );\n};\n\nexport const getPersonalizationFlagsFromFormula = (\n executableFormula: FormulaExecutable\n): Partial => {\n const editableFormula = fromExecutableFormula(executableFormula);\n const mathTokens = parseMathematicalTokensFromFormula(editableFormula);\n\n return getPersonalizationFlagsFromFormulaBase(mathTokens);\n};\n","import { SaleFormulaFields } from 'src/tables/SalesTable/SalesTable.type';\nimport {\n evaluateFormulaBase,\n FormulaEditable,\n FormulaExecutable,\n fromExecutableFormula,\n parseEditableFormulaBase,\n parseExecutableFormula,\n tagFieldNameToKey,\n tagKeyToFieldName,\n validateFormulaSingleStatement,\n} from 'src/utils/columns/customColumnUtils';\nimport { Sale, Tag, UiMoney } from 'src/WebApiController';\n\nimport { SALE_FORMULA_FIELDS_TO_CID } from '../../constants/contentIdMaps';\nimport { SaleReportMetricsWithGroupBy } from '../../reportsUtils';\nimport { ColumnPersonalizationFlags } from '../columnUtils.types';\nimport {\n getPersonalizationFlagsFromFormulaBase,\n MathematicalToken,\n parseMathematicalTokensFromFormulaBase,\n} from '../customColumnMathUtils';\nimport { SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES } from './salesColumnUtils.constants';\nimport { SalesTableColumnId } from './salesColumnUtils.types';\nimport { CustomSalesColumn } from './salesCustomColumnUtils.types';\n\nexport const SALE_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG: Partial =\n {\n isHiddenByDefault: true,\n isNumeric: true,\n };\n\nexport const FORMULA_FIELD_TO_COLUMN_ID: Record<\n keyof SaleFormulaFields,\n SalesTableColumnId\n> = {\n ['totalNetProceeds']: SalesTableColumnId.Proceeds,\n ['quantitySold']: SalesTableColumnId.QuantitySold,\n ['charges']: SalesTableColumnId.Charges,\n ['credits']: SalesTableColumnId.Credits,\n ['soldTicketCost']: SalesTableColumnId.SoldTicketCost,\n ['pandL']: SalesTableColumnId.PandL,\n ['margin']: SalesTableColumnId.Margin,\n};\n\nexport const parseEditableFormula = (\n editableFormula: FormulaEditable | undefined\n): string[] | undefined => {\n const parsedTokenResult = parseEditableFormulaBase(editableFormula);\n if (!parsedTokenResult) {\n return;\n }\n\n const tokens: string[] = [];\n parsedTokenResult.forEach((tokenResult) => {\n if (tokenResult.isPlainToken) {\n tokens.push(tokenResult.token);\n } else {\n const fieldName = tokenResult.token;\n if (\n SALE_FORMULA_FIELDS_TO_CID[fieldName as keyof SaleFormulaFields] == null\n ) {\n // Tag field\n tokens.push(tagFieldNameToKey(fieldName));\n return;\n }\n tokens.push(\n SALE_FORMULA_FIELDS_TO_CID[fieldName as keyof SaleFormulaFields]\n );\n }\n });\n\n return tokens;\n};\n\nexport const filterCustomColumnsForSale = (\n customColumns: CustomSalesColumn[],\n tagsForEntityType: Tag[] | undefined\n): CustomSalesColumn[] => {\n const saleFormulaFields = Object.keys(SALE_FORMULA_FIELDS_TO_CID);\n const tagKeys = tagsForEntityType?.map((t) => tagKeyToFieldName(t.key)) ?? [];\n return customColumns.filter((column) => {\n const editableFormula = fromExecutableFormula(column.formula);\n if (!editableFormula) return false;\n\n const fieldNamesUsed =\n parseEditableFormulaBase(editableFormula, true)?.map((t) => t.token) ??\n [];\n\n return fieldNamesUsed.every(\n (f) => saleFormulaFields.includes(f) || tagKeys.includes(f)\n );\n });\n};\n\nconst mapListingFormulaFields = (sale?: Sale): SaleFormulaFields => {\n const tagFields = sale?.tags?.reduce((acc, tag) => {\n const numericValue = parseFloat(tag.value);\n if (isNaN(numericValue)) return acc;\n\n return {\n ...acc,\n [tagKeyToFieldName(tag.key)]: numericValue,\n };\n }, {});\n\n return {\n totalNetProceeds: sale?.ttlNetProcs?.amt,\n quantitySold: sale?.qtySold,\n charges: sale?.charges?.amt,\n credits: sale?.credits?.amt,\n soldTicketCost: sale?.soldTktCost?.amt,\n pandL: sale?.pandL?.amt,\n margin: sale?.margin,\n ...tagFields,\n };\n};\n\nexport const evaluateFormula = (formula: FormulaExecutable, sale?: Sale) => {\n const data = mapListingFormulaFields(sale);\n\n return evaluateFormulaBase(formula, data);\n};\n\nexport const evaluateFormulaSaleMetrics = (\n formula: FormulaExecutable,\n sale?: SaleReportMetricsWithGroupBy\n) => {\n const tagFields = sale?.tags?.reduce((acc, tag) => {\n const numericValue = parseFloat(tag.value);\n if (isNaN(numericValue)) return acc;\n\n return {\n ...acc,\n [tagKeyToFieldName(tag.key)]: numericValue,\n };\n }, {});\n\n const data = {\n totalNetProceeds: sale?.netProcs?.amt,\n quantitySold: sale?.qtySold,\n charges: sale?.chargs?.amt,\n credits: sale?.creds?.amt,\n soldTicketCost: sale?.soldCst?.amt,\n pandL: sale?.pandL?.amt,\n margin: sale?.marg,\n ...tagFields,\n };\n\n return evaluateFormulaBase(formula, data);\n};\n\nexport const SALE_FORMULA_TEST_DATA: Sale = {\n qtySold: 1,\n ttlNetProcs: { amt: 1 } as UiMoney,\n charges: { amt: 1 } as UiMoney,\n credits: { amt: 1 } as UiMoney,\n soldTktCost: { amt: 1 } as UiMoney,\n pandL: { amt: 1 } as UiMoney,\n margin: 1,\n} as Sale;\n\nconst createSaleTestData = (tagsForEntityType: Tag[] | undefined): Sale => {\n const tagData = tagsForEntityType?.map((t) => {\n t.value = '1';\n return t;\n });\n\n return {\n ...SALE_FORMULA_TEST_DATA,\n tags: tagData ?? [],\n };\n};\n\nexport const validateFormula = (\n formula: string,\n tagsForEntityType: Tag[] | undefined\n) => {\n return (\n parseExecutableFormula(formula) != null &&\n evaluateFormula(formula, createSaleTestData(tagsForEntityType)) != null &&\n validateFormulaSingleStatement(formula)\n );\n};\n\nexport const findDependentSaleTableColumnIds = (\n editableFormula: FormulaEditable\n): SalesTableColumnId[] => {\n const fieldNames =\n parseEditableFormulaBase(editableFormula, true)?.map((t) => t.token) ?? [];\n\n return (\n Object.entries(FORMULA_FIELD_TO_COLUMN_ID)\n .filter(([key]) => fieldNames.includes(key))\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .map(([_, value]) => value)\n );\n};\n\nconst getTokenFromFieldName = (fieldName: string): MathematicalToken => {\n const columnId =\n FORMULA_FIELD_TO_COLUMN_ID[fieldName as keyof SaleFormulaFields];\n\n if (columnId == null) {\n // Tag field - here we assume it's not currency - might need to change\n return {\n token: `tag-${fieldName}`,\n isPlainToken: false,\n isCurrency: false,\n };\n }\n\n const { isCurrency, isPercent } =\n SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[columnId];\n\n return {\n token: columnId,\n isPlainToken: false,\n isCurrency,\n isPercent,\n };\n};\n\n/**\n * Parse editableFormula, transforming formula into mathematical tokens\n * to infer personalization flags\n *\n * E.g. `${ticketCount} + 20` ==> [\n * { token: 'ticketCount', isCurrency: false, isPercent: false, isPlainToken: false },\n * { token: '+', isCurrency: false, isPercent: false, isPlainToken: true },\n * { token: '20', isCurrency: false, isPercent: false, isPlainToken: true }\n * ]\n * @param editableFormula\n * @returns parsed list of tokens, or undefined if failed to parse\n */\nconst parseMathematicalTokensFromFormula = (\n editableFormula: FormulaEditable | undefined\n): MathematicalToken[] | undefined => {\n return parseMathematicalTokensFromFormulaBase(\n editableFormula,\n getTokenFromFieldName\n );\n};\n\nexport const getPersonalizationFlagsFromFormula = (\n executableFormula: FormulaExecutable\n): Partial => {\n const editableFormula = fromExecutableFormula(executableFormula);\n const mathTokens = parseMathematicalTokensFromFormula(editableFormula);\n\n return getPersonalizationFlagsFromFormulaBase(mathTokens);\n};\n","import { ON_SALE_EVENTS_TABLE_COLUMNS_CONFIG } from 'src/navigations/Routes/OnSaleEvent/OnSaleEventView.constants';\nimport { OnSaleEventsTableColumnId } from 'src/navigations/Routes/OnSaleEvent/OnSaleEventView.types';\nimport { MarketplacePaymentsTableColumnId } from 'src/utils/columns/marketplacePayments/marketplacePaymentsColumnsUtils.types';\nimport {\n PAYMENTS_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES,\n PAYMENTS_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG,\n} from 'src/utils/columns/payments/paymentsColumnUtils.constants';\nimport { CustomMarketplacePaymentsColumn } from 'src/utils/columns/payments/paymentsCustomColumnUtils.types';\nimport {\n PURCHASES_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES,\n PURCHASES_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG,\n} from 'src/utils/columns/purchases/purchasesColumnUtils.constants';\nimport { PurchasesTableColumnId } from 'src/utils/columns/purchases/purchasesColumnUtils.types';\nimport { CustomPurchasesColumn } from 'src/utils/columns/purchases/purchasesCustomColumnUtils.types';\nimport { ReportTag, Tag, TagsValueType } from 'src/WebApiController';\n\nimport { SectionType } from '../types/sectionType';\nimport { AdCampaignsListingsColumn } from './adCampaigns/adCampaignsCustomColumnUtils.types';\nimport { AdGroupsListingsColumn } from './adGroups/adGroupsCustomColumnUtils.types';\nimport { PERSONALIZATION_DEFAULTS } from './columnUtils.types';\nimport {\n EVENTS_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES,\n ON_SALE_EVENTS_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES,\n} from './events/eventsColumnUtils.constants';\nimport { EventsTableColumnId } from './events/eventsColumnUtils.types';\nimport { getPersonalizationFlagsFromFormula as getPersonalizationFlagsFromFormulaEvents } from './events/eventsCustomColumnUtils';\nimport { EVENTS_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG } from './events/eventsCustomColumnUtils.constants';\nimport {\n CustomEventsColumn,\n CustomOnSaleEventsColumn,\n} from './events/eventsCustomColumnUtils.types';\nimport {\n LISTING_REPORT_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES,\n LISTING_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES,\n LISTING_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG,\n} from './inventory/inventoryColumnUtils.constants';\nimport {\n ListingReportTableColumnId,\n ListingTableColumnId,\n ListingTableFlattenedColumnId,\n} from './inventory/inventoryColumnUtils.types';\nimport { getPersonalizationFlagsFromFormula as getPersonalizationFlagsFromFormulaListings } from './inventory/inventoryCustomColumnUtils';\nimport { CustomListingColumn } from './inventory/inventoryCustomColumnUtils.types';\nimport { getPersonalizationFlagsFromFormula as getPersonalizationFlagsFromFormulaListingsReport } from './inventory/inventoryReportCustomColumnUtils';\nimport { SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES } from './sales/salesColumnUtils.constants';\nimport {\n SalesReportTableColumnId,\n SalesTableColumnId,\n SalesTableFlattenedColumnId,\n} from './sales/salesColumnUtils.types';\nimport {\n getPersonalizationFlagsFromFormula as getPersonalizationFlagsFromFormulaSales,\n SALE_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG,\n} from './sales/salesCustomColumnUtils';\nimport { CustomSalesColumn } from './sales/salesCustomColumnUtils.types';\nimport { SALE_REPORT_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES } from './sales/salesReportColumnUtils.constants';\n\nexport const getColumnPersonalization = ({\n id,\n sectionType,\n matchingCustomColumn,\n matchingTag,\n}: {\n id: string;\n sectionType: SectionType;\n matchingCustomColumn?:\n | CustomListingColumn\n | CustomSalesColumn\n | CustomEventsColumn\n | CustomPurchasesColumn\n | AdCampaignsListingsColumn\n | AdGroupsListingsColumn\n | CustomMarketplacePaymentsColumn\n | CustomOnSaleEventsColumn;\n matchingTag?: Tag | ReportTag;\n}) => {\n const personalizationDefaults = { ...PERSONALIZATION_DEFAULTS };\n\n if (matchingTag) {\n personalizationDefaults.isNumeric =\n matchingTag.valueType === TagsValueType.Int ||\n matchingTag.valueType === TagsValueType.Decimal;\n personalizationDefaults.isInteger =\n matchingTag.valueType === TagsValueType.Int;\n\n return { ...personalizationDefaults };\n } else {\n const {\n customColumnPersonalizationConfig,\n personalizationOverride,\n getPersonalizationFlagsFromFormula,\n } =\n sectionType === SectionType.Listings ||\n sectionType === SectionType.ListingsFlattened\n ? {\n customColumnPersonalizationConfig:\n LISTING_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG,\n personalizationOverride:\n LISTING_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n id as ListingTableColumnId | ListingTableFlattenedColumnId\n ],\n getPersonalizationFlagsFromFormula:\n getPersonalizationFlagsFromFormulaListings,\n }\n : sectionType === SectionType.InventorySideTable\n ? {\n customColumnPersonalizationConfig:\n LISTING_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG,\n personalizationOverride:\n LISTING_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n id as ListingTableColumnId | ListingTableFlattenedColumnId\n ],\n getPersonalizationFlagsFromFormula:\n getPersonalizationFlagsFromFormulaListingsReport,\n }\n : sectionType === SectionType.ListingsReport\n ? {\n customColumnPersonalizationConfig:\n LISTING_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG,\n personalizationOverride:\n LISTING_REPORT_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n id as ListingReportTableColumnId\n ],\n getPersonalizationFlagsFromFormula:\n getPersonalizationFlagsFromFormulaListingsReport,\n }\n : sectionType === SectionType.Sales ||\n sectionType === SectionType.SalesFlattened ||\n sectionType === SectionType.SalesSideTable\n ? {\n customColumnPersonalizationConfig:\n SALE_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG,\n personalizationOverride:\n SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n id as SalesTableColumnId | SalesTableFlattenedColumnId\n ],\n getPersonalizationFlagsFromFormula:\n getPersonalizationFlagsFromFormulaSales,\n }\n : sectionType === SectionType.SalesReport\n ? {\n customColumnPersonalizationConfig:\n SALE_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG,\n personalizationOverride:\n SALE_REPORT_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n id as SalesReportTableColumnId\n ],\n getPersonalizationFlagsFromFormula:\n getPersonalizationFlagsFromFormulaSales,\n }\n : sectionType === SectionType.Purchases ||\n sectionType === SectionType.PurchaseEvent ||\n sectionType === SectionType.PurchaseSideTable\n ? {\n customColumnPersonalizationConfig:\n PURCHASES_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG,\n personalizationOverride:\n PURCHASES_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n id as PurchasesTableColumnId\n ],\n getPersonalizationFlagsFromFormula: () => ({\n isCurrency: false,\n isPercent: false,\n }),\n }\n : sectionType === SectionType.MarketplacePaymentsTable\n ? {\n customColumnPersonalizationConfig:\n PAYMENTS_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG,\n personalizationOverride:\n PAYMENTS_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n id as MarketplacePaymentsTableColumnId\n ],\n getPersonalizationFlagsFromFormula: () => ({\n isCurrency: false,\n isPercent: false,\n }),\n }\n : sectionType === SectionType.OnSaleEvents\n ? {\n customColumnPersonalizationConfig:\n ON_SALE_EVENTS_TABLE_COLUMNS_CONFIG,\n personalizationOverride:\n ON_SALE_EVENTS_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n id as OnSaleEventsTableColumnId\n ],\n getPersonalizationFlagsFromFormula:\n getPersonalizationFlagsFromFormulaEvents,\n }\n : // SectionType.Event\n {\n customColumnPersonalizationConfig:\n EVENTS_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG,\n personalizationOverride:\n EVENTS_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES[\n id as EventsTableColumnId\n ],\n getPersonalizationFlagsFromFormula:\n getPersonalizationFlagsFromFormulaEvents,\n };\n\n const personalization = matchingCustomColumn\n ? customColumnPersonalizationConfig\n : personalizationOverride;\n\n if (matchingCustomColumn?.formula) {\n const personalizationFromMathToken = getPersonalizationFlagsFromFormula(\n matchingCustomColumn.formula\n );\n personalizationDefaults.isCurrency =\n personalizationFromMathToken.isCurrency ??\n personalizationDefaults.isCurrency;\n personalizationDefaults.isPercent =\n personalizationFromMathToken.isPercent ??\n personalizationDefaults.isPercent;\n }\n\n return { ...personalizationDefaults, ...personalization };\n }\n};\n","import { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { DivWithTitle } from 'src/core/ui/DivWithTitle';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { FormatOption } from 'src/modals/EditTableColumns';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\nimport { getColumnPersonalization } from 'src/utils/columns/columnPersonalizationUtils';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { CustomSalesColumn } from 'src/utils/columns/sales/salesCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { ReportTag, Tag } from 'src/WebApiController';\n\nexport const CustomNumericCell = ({\n columnId,\n userDefinedPrecision,\n value,\n isLoading,\n hide,\n shimmeringDivHeight,\n sectionType,\n matchingCustomColumn,\n matchingTag,\n currencyCode,\n}: {\n columnId: string;\n userDefinedPrecision: FormatOption | undefined;\n value: number | null;\n isLoading: boolean;\n hide?: boolean;\n shimmeringDivHeight: string;\n sectionType: SectionType;\n matchingCustomColumn?: CustomListingColumn | CustomSalesColumn;\n matchingTag?: Tag | ReportTag;\n currencyCode?: string;\n}) => {\n const { loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n const uiCurrency = getUiCurrency(\n currencyCode ?? loginContext?.user?.activeAccount.currencyCode\n );\n\n const { isCurrency, isPercent } = getColumnPersonalization({\n id: columnId,\n sectionType,\n matchingCustomColumn,\n matchingTag,\n });\n\n if (isLoading) {\n return ;\n }\n\n if (hide) {\n return null;\n }\n\n return (\n \n \n {value == null ? (\n ''\n ) : isNaN(value) || !isFinite(value) ? (\n \n ) : (\n <>\n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n currencyCode: isCurrency ? uiCurrency.code : undefined,\n currencyDecimalDigits: isCurrency ? uiCurrency.dec : undefined,\n isPercent: isPercent && !isCurrency,\n })}\n \n )}\n \n \n );\n};\n","import { TableCellDiv as TableCellDivV1 } from 'src/core/ui/TableCellDiv';\nimport styled from 'styled-components/macro';\n\nexport const TableCellDiv = styled((props) => )`\n .styled-input {\n border-bottom: 0;\n display: flex;\n\n &:hover,\n &:focus,\n &:focus-within,\n &:active {\n border-bottom: 0;\n }\n }\n`;\n","import { ChangeEvent, useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { useInputPriceFocusContext } from 'src/contexts/InputPriceFocusContext/InputPriceFocusContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { useUserCanSetPrice } from 'src/hooks/useUserHasListingPermissions';\nimport { CheckIcon, IconsFill, ProcessingIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { onPriceFieldChange } from 'src/utils/inventoryUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n InventoryViewMode,\n Listing,\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingMetrics,\n ListingQuery,\n ListingStatus,\n} from 'src/WebApiController';\n\nimport { TableCellDiv } from './ListingPriceCell.styled';\nimport { ListingPricingInput, PriceField } from './ListingPriceForm.types';\n\ntype ListingPriceCellProps = {\n listing: Listing;\n currencyCode: string;\n nextEditableListingId?: number | undefined;\n sellerFee?: number | null;\n field: PriceField;\n otherField: PriceField;\n disabled?: boolean;\n onFocus?: React.FocusEventHandler | undefined;\n viagVirtualId?: string;\n};\n\nexport const ListingPriceCell = ({\n listing,\n currencyCode,\n sellerFee,\n field,\n otherField,\n onFocus,\n disabled,\n viagVirtualId,\n nextEditableListingId,\n}: ListingPriceCellProps) => {\n const { id: listingId, idOnMkp, status } = listing;\n const { getUiCurrency } = useLocalizationContext();\n const { setValue, watch, clearErrors, getFieldState, formState } =\n useFormContext();\n const { getSelection } = useMultiSelectionContext();\n const listingSelection = getSelection(viagVirtualId);\n const isSelectionMode = listingSelection.isSingleGroupMultiSelect;\n\n const price = watch(field) ?? 0;\n const otherPrice = watch(otherField) ?? 0;\n\n const isSubmitting = watch('isSubmitting');\n const isSubmittingPricingSettings = watch('isSubmittingPricingSettings');\n const isSubmittingRowIndex = watch('isSubmittingRowIndex');\n const rowIndex = watch('rowIndex');\n const currentPageIndex = watch('currentPageIndex');\n\n const priceIsSubmitting =\n isSubmitting &&\n (isSubmittingRowIndex === undefined || isSubmittingRowIndex === rowIndex);\n\n const uiCurrency = useMemo(\n () => getUiCurrency(currencyCode),\n [currencyCode, getUiCurrency]\n );\n const {\n pageSize,\n disablePagination,\n inputPriceFocusContext,\n setInputPriceFocusContext,\n disabledFocusContexts,\n } = useInputPriceFocusContext();\n\n const { filterQuery } = useFilterQueryContext();\n\n const fieldError = getFieldState(field, formState)?.error?.message;\n\n const priceHasChanged =\n formState.defaultValues?.[field] !== price &&\n price != null &&\n price >= 0 &&\n !isSubmitting;\n\n // ListingTable don't always have these context wrappers - remember not to assume these are NOT NULL\n const findNextFocusIndex = useCallback(() => {\n // need to skip the disabled rows from disabledFocusContexts\n let newRowIndex = rowIndex + 1;\n let nextRowIndex =\n !disablePagination && pageSize && newRowIndex >= pageSize\n ? 0\n : newRowIndex;\n let nextPageIndex = disablePagination\n ? 0\n : nextRowIndex === 0\n ? currentPageIndex + 1\n : currentPageIndex;\n\n while (\n disabledFocusContexts?.some(\n (x) =>\n x?.currentPageIndex === nextPageIndex &&\n x?.rowIndex === nextRowIndex &&\n (x?.viagVirtualId === viagVirtualId ||\n filterQuery.viewMode === InventoryViewMode.FlattenedView)\n )\n ) {\n newRowIndex = nextRowIndex + 1;\n nextRowIndex =\n !disablePagination && pageSize && newRowIndex >= pageSize\n ? 0\n : newRowIndex;\n nextPageIndex = disablePagination\n ? 0\n : nextRowIndex === 0\n ? nextPageIndex + 1\n : nextPageIndex;\n }\n\n return { nextRowIndex, nextPageIndex };\n }, [\n currentPageIndex,\n disablePagination,\n disabledFocusContexts,\n filterQuery.viewMode,\n pageSize,\n rowIndex,\n viagVirtualId,\n ]);\n\n const inputIsFocus = useMemo(() => {\n if (!inputPriceFocusContext) {\n return false;\n }\n const {\n viagVirtualId: ctxEventId,\n rowIndex: ctxRowIndex,\n listingId,\n priceField,\n } = inputPriceFocusContext;\n\n if (priceField !== field) {\n return false;\n }\n\n if (\n ctxEventId !== viagVirtualId &&\n filterQuery.viewMode === InventoryViewMode.FlattenedView\n ) {\n return false;\n }\n\n // Listing id over rowIndex\n if (listingId) {\n return listingId === listing.id;\n }\n return ctxRowIndex === rowIndex;\n }, [\n viagVirtualId,\n field,\n filterQuery.viewMode,\n inputPriceFocusContext,\n listing.id,\n rowIndex,\n ]);\n\n const saveMsg = useContent(ContentId.Save);\n\n const { showErrorDialog } = useErrorBoundaryContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { refreshMetrics } = useCatalogMetricsContext();\n\n const isListed =\n status === ListingStatus.Listed || status === ListingStatus.ListingPending;\n\n const onBroadcastClick = useCallback(() => {\n tryInvokeApi(\n async () => {\n const client = new ListingClient(activeAccountWebClientConfig);\n\n const result = await client.deleteMarketplaceListings(listingId, []);\n if (result) {\n refreshMetrics?.();\n\n // Refresh the active data so the SaleDetail dialog and table will have the new content\n setActivePosEntity(listingId, idOnMkp, true, [\n ListingDetailDataField.Basic,\n ]);\n }\n },\n (error) => {\n showErrorDialog('ListingClient.deleteMarketplaceListings', error, {\n trackErrorData: { listingId, idOnMkp },\n });\n }\n );\n }, [\n activeAccountWebClientConfig,\n listingId,\n idOnMkp,\n refreshMetrics,\n setActivePosEntity,\n showErrorDialog,\n ]);\n\n const onChangeHandler = useCallback(\n (e: ChangeEvent) => {\n const newValue = parseFloat(e.target.value) ?? 0;\n onPriceFieldChange(\n newValue,\n field,\n price,\n otherField,\n otherPrice,\n // This is the otherToFieldRatio, so if field is allInPrice, the ratio os All-In-to-List\n field === 'allInPrice'\n ? 1 - (sellerFee ?? 0) // all-in-to-list\n : 1 / (1 - (sellerFee ?? 0)), // list-to-all-in\n clearErrors,\n setValue\n );\n },\n [clearErrors, field, otherField, otherPrice, price, setValue, sellerFee]\n );\n\n const onBlurHandler = useCallback(() => {\n if (\n rowIndex !== undefined &&\n inputPriceFocusContext?.rowIndex === rowIndex\n ) {\n setInputPriceFocusContext(undefined);\n }\n }, [rowIndex, inputPriceFocusContext?.rowIndex, setInputPriceFocusContext]);\n\n const inputRef = useRef(null);\n\n const handlePriceSubmit = useCallback(() => {\n setValue('isSubmitting', true);\n\n if (price === 0 && otherPrice === 0 && isListed) {\n // If both price is zero and the listing is listed - ask\n // user if they want to unbroadcast\n onBroadcastClick();\n }\n }, [isListed, onBroadcastClick, otherPrice, price, setValue]);\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n if (fieldError) {\n return;\n }\n if (rowIndex !== undefined) {\n if (priceHasChanged) {\n e.stopPropagation();\n // Only submit if Enter is hit in the box that has changes\n handlePriceSubmit();\n } else {\n e.stopPropagation();\n }\n\n const { nextRowIndex, nextPageIndex } = findNextFocusIndex();\n setInputPriceFocusContext({\n viagVirtualId: viagVirtualId!,\n rowIndex: nextRowIndex,\n priceField: field,\n currentPageIndex: nextPageIndex,\n listingId: nextEditableListingId,\n });\n }\n }\n };\n\n useEffect(() => {\n if (inputIsFocus && inputRef.current) {\n inputRef.current.focus();\n inputRef.current.select();\n inputRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }, [inputIsFocus]);\n\n const canSetPrice = useUserCanSetPrice(listing, false);\n\n return (\n \n \n {\n e.stopPropagation();\n e.preventDefault();\n }}\n rootProps={{\n variant: 'small',\n state: getTextFieldState(fieldError),\n disabled:\n disabled ||\n priceIsSubmitting ||\n isSelectionMode ||\n isSubmittingPricingSettings,\n }}\n uiCurrency={uiCurrency}\n alignment=\"right\"\n ref={inputRef}\n disabled={\n disabled ||\n priceIsSubmitting ||\n isSubmittingPricingSettings ||\n isSelectionMode ||\n !canSetPrice\n }\n postfixDisplay={\n !disabled && !fieldError && priceHasChanged ? (\n {\n e.stopPropagation();\n handlePriceSubmit();\n }}\n />\n ) : priceIsSubmitting ? (\n
    \n \n \n \n
    \n ) : undefined\n }\n value={price}\n onBlur={onBlurHandler}\n onChange={onChangeHandler}\n onKeyDown={handleKeyDown}\n onFocus={onFocus}\n onClick={() => inputRef?.current?.select()}\n />\n \n
    \n );\n};\n","import { ChangeEvent, useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { useInputPriceFocusContext } from 'src/contexts/InputPriceFocusContext/InputPriceFocusContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { useUserCanSetPrice } from 'src/hooks/useUserHasListingPermissions';\nimport {\n CheckIcon,\n CrossIcon,\n IconsFill,\n ProcessingIcon,\n} from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { InventoryViewMode, Listing, ListingQuery } from 'src/WebApiController';\n\nimport { TableCellDiv } from './ListingPriceCell.styled';\nimport {\n ListingPricingInput,\n ProceedsPriceField,\n} from './ListingPriceForm.types';\n\ntype ListingProceedsFloorCellProps = {\n listing: Listing;\n currencyCode: string;\n field: ProceedsPriceField;\n isAllInPrice?: boolean;\n sellerFee?: number | null;\n disabled?: boolean;\n onFocus?: React.FocusEventHandler | undefined;\n viagVirtualId?: string;\n};\n\nexport const ListingProceedsFloorCell: React.FC<\n ListingProceedsFloorCellProps\n> = ({\n listing,\n currencyCode,\n sellerFee,\n field,\n isAllInPrice,\n onFocus,\n disabled,\n viagVirtualId,\n}) => {\n const { getUiCurrency } = useLocalizationContext();\n const { setValue, watch, clearErrors, getFieldState, formState } =\n useFormContext();\n const { getSelection } = useMultiSelectionContext();\n const listingSelection = getSelection(viagVirtualId);\n const isSelectionMode = listingSelection.isSingleGroupMultiSelect;\n\n const price = watch(field) ?? 0;\n\n const isSubmitting = watch('isSubmitting');\n const isSubmittingPricingSettings = watch('isSubmittingPricingSettings');\n const isSubmittingRowIndex = watch('isSubmittingRowIndex');\n const rowIndex = watch('rowIndex');\n const currentPageIndex = watch('currentPageIndex');\n\n const priceIsSubmitting =\n isSubmitting &&\n (isSubmittingRowIndex === undefined || isSubmittingRowIndex === rowIndex);\n\n const uiCurrency = useMemo(\n () => getUiCurrency(currencyCode),\n [currencyCode, getUiCurrency]\n );\n const {\n pageSize,\n disablePagination,\n inputPriceFocusContext,\n setInputPriceFocusContext,\n disabledFocusContexts,\n } = useInputPriceFocusContext();\n\n const { filterQuery } = useFilterQueryContext();\n\n const fieldError = getFieldState(field, formState)?.error?.message;\n\n const priceHasChanged =\n formState.defaultValues?.[field] !== price &&\n price != null &&\n price > 0 &&\n !isSubmitting;\n\n // ListingTable don't always have these context wrappers - remember not to assume these are NOT NULL\n const findNextFocusIndex = useCallback(() => {\n // need to skip the disabled rows from disabledFocusContexts\n let newRowIndex = rowIndex + 1;\n let nextRowIndex =\n !disablePagination && pageSize && newRowIndex >= pageSize\n ? 0\n : newRowIndex;\n let nextPageIndex = disablePagination\n ? 0\n : nextRowIndex === 0\n ? currentPageIndex + 1\n : currentPageIndex;\n\n while (\n disabledFocusContexts?.some(\n (x) =>\n x?.currentPageIndex === nextPageIndex &&\n x?.rowIndex === nextRowIndex &&\n (x?.viagVirtualId === viagVirtualId ||\n filterQuery.viewMode === InventoryViewMode.FlattenedView)\n )\n ) {\n newRowIndex = nextRowIndex + 1;\n nextRowIndex =\n !disablePagination && pageSize && newRowIndex >= pageSize\n ? 0\n : newRowIndex;\n nextPageIndex = disablePagination\n ? 0\n : nextRowIndex === 0\n ? nextPageIndex + 1\n : nextPageIndex;\n }\n\n return { nextRowIndex, nextPageIndex };\n }, [\n currentPageIndex,\n disablePagination,\n disabledFocusContexts,\n filterQuery.viewMode,\n pageSize,\n rowIndex,\n viagVirtualId,\n ]);\n\n const inputIsFocus = useMemo(\n () =>\n (inputPriceFocusContext?.viagVirtualId === viagVirtualId ||\n filterQuery.viewMode === InventoryViewMode.FlattenedView) &&\n inputPriceFocusContext?.rowIndex === rowIndex &&\n inputPriceFocusContext?.priceField === field,\n [\n field,\n filterQuery.viewMode,\n inputPriceFocusContext?.viagVirtualId,\n inputPriceFocusContext?.priceField,\n inputPriceFocusContext?.rowIndex,\n rowIndex,\n viagVirtualId,\n ]\n );\n\n const saveMsg = useContent(ContentId.Save);\n const cancelMsg = useContent(ContentId.Cancel);\n\n const onChangeHandler = useCallback(\n (e: ChangeEvent) => {\n let newValue = parseFloat(e.target.value) ?? 0;\n\n if (Number.isNaN(newValue)) {\n newValue = 0;\n } else if (newValue > Infinity) {\n newValue = Number.MAX_VALUE;\n }\n\n if (newValue >= 0 && newValue <= Number.MAX_VALUE) {\n const sanitizedValue = isAllInPrice\n ? newValue * (1 - (sellerFee ?? 0))\n : newValue;\n setValue(field, Math.round(sanitizedValue * 100) / 100);\n clearErrors(field);\n }\n },\n [isAllInPrice, sellerFee, setValue, field, clearErrors]\n );\n\n const onBlurHandler = useCallback(() => {\n if (\n rowIndex !== undefined &&\n inputPriceFocusContext?.rowIndex === rowIndex\n ) {\n setInputPriceFocusContext(undefined);\n }\n }, [rowIndex, inputPriceFocusContext?.rowIndex, setInputPriceFocusContext]);\n\n const inputRef = useRef(null);\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n if (fieldError) {\n return;\n }\n if (rowIndex !== undefined) {\n if (priceHasChanged) {\n e.stopPropagation();\n // Only submit if Enter is hit in the box that has changes\n setValue('isSubmitting', true);\n\n const { nextRowIndex, nextPageIndex } = findNextFocusIndex();\n setInputPriceFocusContext({\n viagVirtualId: viagVirtualId!,\n rowIndex: nextRowIndex,\n priceField: field,\n currentPageIndex: nextPageIndex,\n });\n } else {\n e.stopPropagation();\n\n const { nextRowIndex, nextPageIndex } = findNextFocusIndex();\n setInputPriceFocusContext({\n viagVirtualId: viagVirtualId!,\n rowIndex: nextRowIndex,\n priceField: field,\n currentPageIndex: nextPageIndex,\n });\n }\n }\n }\n };\n\n useEffect(() => {\n if (inputIsFocus && inputRef.current) {\n inputRef.current.focus();\n inputRef.current.select();\n inputRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }, [inputIsFocus]);\n\n const canSetPrice = useUserCanSetPrice(listing, false);\n\n const sanitizedPrice = useMemo(() => {\n if (isAllInPrice) {\n const allInPrice = price / (1 - (sellerFee ?? 0));\n return Math.round(allInPrice * 100) / 100;\n }\n return price;\n }, [isAllInPrice, price, sellerFee]);\n\n return (\n \n \n \n {\n e.stopPropagation();\n setValue('isSubmitting', true);\n }}\n />\n {\n e.stopPropagation();\n setValue(field, formState.defaultValues?.[field] ?? null);\n }}\n />\n \n ) : priceIsSubmitting ? (\n
    \n \n \n \n
    \n ) : undefined\n }\n value={sanitizedPrice}\n onBlur={onBlurHandler}\n onChange={onChangeHandler}\n onKeyDown={handleKeyDown}\n onFocus={onFocus}\n onClick={() => inputRef?.current?.select()}\n />\n \n
    \n );\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport {\n EventMapContextProvider,\n useEventMapContext,\n} from 'src/contexts/EventMapContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { vars } from 'src/core/themes';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { useAvailableAutopricingModes } from 'src/hooks/useAvailableAutopricingModes';\nimport { useGetAccountAutoPricingSettings } from 'src/hooks/useGetAccountAutoPricingSettings';\nimport { useGetEventAutoPricingSettings } from 'src/hooks/useGetEventAutoPricingSettings';\nimport { useUserCanSetPrice } from 'src/hooks/useUserHasListingPermissions';\nimport { PosIconProps } from 'src/svgs/SvgWrapper';\nimport { PricingSettingsField } from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n COMP_LISTING_MODE_TO_CID,\n UNDERCUT_MODE_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { getCompleteEventConfigScoreOverrides } from 'src/utils/seatScoreUtils';\nimport {\n AutoPricingCompListingMode,\n AutoPricingUndercutMode,\n Event,\n Listing,\n} from 'src/WebApiController';\n\nimport * as styles from '../ListingTable.css';\nimport { ListingPricingInput } from './ListingPriceForm.types';\n\ntype PricingModeCellProps = {\n pricingMode?:\n | AutoPricingCompListingMode\n | AutoPricingUndercutMode\n | undefined;\n DisplayIcon?: ((props: PosIconProps) => JSX.Element) | null;\n listing: Listing;\n editable?: boolean;\n field: PricingSettingsField;\n disabled?: boolean;\n event: Event;\n};\n\nexport const PricingModeCell = ({\n pricingMode,\n DisplayIcon,\n listing,\n editable,\n field,\n disabled,\n event,\n}: PricingModeCellProps) => {\n const modeContentId =\n field === 'compListingMode'\n ? COMP_LISTING_MODE_TO_CID[pricingMode as AutoPricingCompListingMode]\n : UNDERCUT_MODE_TO_CID[pricingMode as AutoPricingUndercutMode];\n const modeContent = useContent(modeContentId ?? '');\n const { watch } = useFormContext();\n\n const { getSelection } = useMultiSelectionContext();\n const listingSelection = getSelection(event.viagVirtualId);\n const isSelectionMode = listingSelection.isSingleGroupMultiSelect;\n\n const [isExpanded, setIsExpanded] = useState(false);\n\n const isSubmittingPricingSettings = watch('isSubmittingPricingSettings');\n const isSubmittingPrice = watch('isSubmitting');\n const isSubmittingRowIndex = watch('isSubmittingRowIndex');\n const rowIndex = watch('rowIndex');\n const autoPricingEnabled = watch('autoPricingEnabled');\n\n const canSetPrice = useUserCanSetPrice(listing, false);\n\n const fieldIsSubmitting =\n (isSubmittingPricingSettings || isSubmittingPrice) &&\n (isSubmittingRowIndex === undefined || isSubmittingRowIndex === rowIndex);\n\n const isPricingModeDisabled =\n fieldIsSubmitting ||\n disabled ||\n !autoPricingEnabled ||\n !canSetPrice ||\n listing.isDeleted ||\n isSelectionMode;\n\n const canEdit = editable && !isPricingModeDisabled;\n\n return (\n \n \n \n {DisplayIcon ? (\n \n ) : (\n \n )}\n \n }\n rootProps={{\n onOpenChange: (isOpen: boolean) => {\n if (!canEdit) {\n setIsExpanded(false);\n return;\n }\n setIsExpanded(isOpen);\n },\n open: isExpanded,\n }}\n >\n \n \n \n \n );\n};\n\nconst PricingModeCellContent = ({\n listing,\n field,\n disabled,\n event,\n}: PricingModeCellProps) => {\n const { setValue, watch, getFieldState, formState } =\n useFormContext();\n const { getSelection } = useMultiSelectionContext();\n const listingSelection = getSelection(event.viagVirtualId);\n const isSelectionMode = listingSelection.isSingleGroupMultiSelect;\n\n const isSubmittingPricingSettings = watch('isSubmittingPricingSettings');\n const isSubmittingRowIndex = watch('isSubmittingRowIndex');\n const rowIndex = watch('rowIndex');\n const autoPricingEnabled = watch('autoPricingEnabled');\n const undercutMode = watch('undercutMode');\n const compListingMode = watch('compListingMode');\n const fieldValue = watch(field);\n\n const canSetPrice = useUserCanSetPrice(listing, false);\n\n const fieldIsSubmitting =\n isSubmittingPricingSettings &&\n (isSubmittingRowIndex === undefined || isSubmittingRowIndex === rowIndex);\n\n const isPricingModeDisabled =\n fieldIsSubmitting ||\n disabled ||\n !autoPricingEnabled ||\n !canSetPrice ||\n listing.isDeleted ||\n isSelectionMode;\n\n const fieldError = getFieldState(field, formState)?.error?.message;\n\n const fieldHasChanged =\n formState.defaultValues?.[field] !== fieldValue &&\n fieldValue &&\n !isSubmittingPricingSettings;\n\n const submit = useCallback(() => {\n if (fieldError) {\n return;\n }\n if (fieldHasChanged) {\n // Only submit if Enter is hit in the box that has changes\n setValue('isSubmittingPricingSettings', true);\n setValue('isSubmittingRowIndex', rowIndex);\n }\n }, [fieldError, fieldHasChanged, setValue, rowIndex]);\n\n useEffect(() => {\n submit();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fieldValue]);\n\n const { activeConfigOverride, venueMapInfo } = useEventMapContext();\n const scores = getCompleteEventConfigScoreOverrides(\n venueMapInfo?.sectionScores,\n activeConfigOverride?.scoreOverrides,\n false\n );\n\n const {\n compListingModes,\n compListingModesDisabled,\n undercutModes,\n undercutModesDisabled,\n } = useAvailableAutopricingModes(\n false,\n undercutMode,\n compListingMode,\n Boolean(scores?.some((s) => s.score)),\n Boolean(listing?.ltGrpParentId)\n );\n\n const { pricingSettings: eventPricingSettings } =\n useGetEventAutoPricingSettings(event, false);\n const { pricingSettings: accountPricingSettings } =\n useGetAccountAutoPricingSettings();\n\n const inheritText = useContent(ContentId.Inherit);\n const inheritCompListingMode = useContent(\n compListingModes[\n eventPricingSettings?.compListingMode ??\n accountPricingSettings?.compListingMode ??\n ''\n ] ?? ''\n );\n const inheritUndercutMode = useContent(\n undercutModes[\n eventPricingSettings?.undercutMode ??\n accountPricingSettings?.undercutMode ??\n ''\n ] ?? ''\n );\n\n const compListingOptions = Object.entries(compListingModes).map(\n ([value, children]) => (\n {\n e.stopPropagation();\n setValue(field, value as AutoPricingCompListingMode);\n }}\n disabled={\n isPricingModeDisabled || compListingModesDisabled[value] != null\n }\n >\n \n \n )\n );\n if (inheritCompListingMode) {\n compListingOptions.unshift(\n {\n e.stopPropagation();\n setValue(field, null);\n }}\n disabled={isPricingModeDisabled}\n >\n {`${inheritText} (${inheritCompListingMode})`}\n \n );\n }\n\n const undercutOptions = Object.entries(undercutModes).map(\n ([value, children]) => (\n {\n e.stopPropagation();\n setValue(field, value as AutoPricingUndercutMode);\n }}\n disabled={isPricingModeDisabled || undercutModesDisabled[value] != null}\n >\n \n \n )\n );\n if (inheritUndercutMode) {\n undercutOptions.unshift(\n {\n e.stopPropagation();\n setValue(field, null);\n }}\n disabled={isPricingModeDisabled}\n >\n {`${inheritText} (${inheritUndercutMode})`}\n \n );\n }\n\n return (\n \n
    \n {field === 'compListingMode' ? compListingOptions : undercutOptions}\n
    \n \n );\n};\n","import { ChangeEvent, useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { useListingAutoPricingSettings } from 'src/modals/ListingDetails/components/useListingAutoPricingSettings';\nimport {\n CheckIcon,\n CrossIcon,\n IconsFill,\n ProcessingIcon,\n} from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport {\n ListingPricingInput,\n ListingPricingSettingsCellProps,\n} from '../ListingPriceForm.types';\nimport * as styles from './Cell.css';\n\nexport const CircuitBreakerMinCompListingCountCell: React.FC<\n ListingPricingSettingsCellProps\n> = ({ listing, editable, event }) => {\n const { watch, formState, getFieldState, setValue } =\n useFormContext();\n\n const saveMsg = useContent(ContentId.Save);\n const cancelMsg = useContent(ContentId.Cancel);\n\n const { getSelection } = useMultiSelectionContext();\n const listingSelection = getSelection(event.viagVirtualId);\n\n const {\n circuitBreakerMinCompListingCount,\n canAutoPrice,\n onCircuitBreakerChange,\n } = useListingAutoPricingSettings(listing);\n\n const isSubmittingPricingSettings = watch('isSubmittingPricingSettings');\n const isSubmittingPrice = watch('isSubmitting');\n const isSubmittingRowIndex = watch('isSubmittingRowIndex');\n const rowIndex = watch('rowIndex');\n\n const fieldIsSubmitting =\n (isSubmittingPricingSettings || isSubmittingPrice) &&\n (isSubmittingRowIndex === undefined || isSubmittingRowIndex === rowIndex);\n\n const isDisabled =\n listing.isDeleted ||\n !canAutoPrice ||\n listingSelection.isSingleGroupMultiSelect ||\n fieldIsSubmitting ||\n !editable;\n\n const submittingField = watch('submittingField');\n const isSubmittingField =\n fieldIsSubmitting &&\n submittingField === 'circuitBreakerMinCompListingCount';\n\n const onUpdateMinCoumpListingCount = useCallback(\n (e: ChangeEvent) => {\n const value = parseInt(e.target.value);\n if (value < 0 || isNaN(value)) {\n return;\n }\n onCircuitBreakerChange(\n undefined,\n undefined,\n undefined,\n undefined,\n Math.round(value)\n );\n },\n [onCircuitBreakerChange]\n );\n\n return (\n \n \n \n {\n e.stopPropagation();\n setValue('isSubmittingPricingSettings', true);\n setValue('isSubmittingRowIndex', rowIndex);\n setValue(\n 'submittingField',\n 'circuitBreakerMinCompListingCount'\n );\n }}\n />\n {\n e.stopPropagation();\n setValue(\n 'circuitBreakerMinCompListingCount',\n formState.defaultValues\n ?.circuitBreakerMinCompListingCount ?? null\n );\n }}\n />\n \n ) : isSubmittingField ? (\n
    \n \n \n \n
    \n ) : undefined\n }\n />\n \n
    \n );\n};\n","import { ChangeEvent, useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { useListingAutoPricingSettings } from 'src/modals/ListingDetails/components/useListingAutoPricingSettings';\nimport {\n CheckIcon,\n CrossIcon,\n IconsFill,\n ProcessingIcon,\n} from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\n\nimport {\n ListingPricingInput,\n ListingPricingSettingsCellProps,\n} from '../ListingPriceForm.types';\nimport * as styles from './Cell.css';\n\nexport const CircuitBreakerVelocityCell: React.FC<\n ListingPricingSettingsCellProps\n> = ({ listing, editable, event }) => {\n const { watch, formState, getFieldState, setValue } =\n useFormContext();\n\n const saveMsg = useContent(ContentId.Save);\n const cancelMsg = useContent(ContentId.Cancel);\n\n const { getSelection } = useMultiSelectionContext();\n const listingSelection = getSelection(event.viagVirtualId);\n\n const {\n circuitBreakerMaxDiscountVelocityPercent,\n canAutoPrice,\n onCircuitBreakerChange,\n } = useListingAutoPricingSettings(listing);\n\n const isSubmittingPricingSettings = watch('isSubmittingPricingSettings');\n const isSubmittingPrice = watch('isSubmitting');\n const isSubmittingRowIndex = watch('isSubmittingRowIndex');\n const rowIndex = watch('rowIndex');\n\n const fieldIsSubmitting =\n (isSubmittingPricingSettings || isSubmittingPrice) &&\n (isSubmittingRowIndex === undefined || isSubmittingRowIndex === rowIndex);\n\n const isDisabled =\n listing.isDeleted ||\n !canAutoPrice ||\n listingSelection.isSingleGroupMultiSelect ||\n fieldIsSubmitting ||\n !editable;\n\n const submittingField = watch('submittingField');\n const isSubmittingField =\n fieldIsSubmitting &&\n submittingField === 'circuitBreakerMaxDiscountVelocityPercent';\n\n const onUpdateVelocity = useCallback(\n (e: ChangeEvent) => {\n const value = parseInt(e.target.value);\n if (value <= 0 || value > 100 || isNaN(value)) {\n return;\n }\n onCircuitBreakerChange(undefined, undefined, value / 100);\n },\n [onCircuitBreakerChange]\n );\n\n return (\n \n \n \n
    %
    \n {!isDisabled &&\n circuitBreakerMaxDiscountVelocityPercent !==\n formState.defaultValues\n ?.circuitBreakerMaxDiscountVelocityPercent ? (\n \n {\n e.stopPropagation();\n setValue('isSubmittingPricingSettings', true);\n setValue('isSubmittingRowIndex', rowIndex);\n setValue(\n 'submittingField',\n 'circuitBreakerMaxDiscountVelocityPercent'\n );\n }}\n />\n {\n e.stopPropagation();\n setValue(\n 'circuitBreakerMaxDiscountVelocityPercent',\n formState.defaultValues\n ?.circuitBreakerMaxDiscountVelocityPercent ?? null\n );\n }}\n />\n \n ) : isSubmittingField ? (\n
    \n \n \n \n
    \n ) : undefined}\n \n }\n />\n \n
    \n );\n};\n","import { ChangeEvent, useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { useListingAutoPricingSettings } from 'src/modals/ListingDetails/components/useListingAutoPricingSettings';\nimport {\n CheckIcon,\n CrossIcon,\n IconsFill,\n ProcessingIcon,\n} from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport {\n ListingPricingInput,\n ListingPricingSettingsCellProps,\n} from '../ListingPriceForm.types';\nimport * as styles from './Cell.css';\n\nexport const CircuitBreakerVelocityHoursCell: React.FC<\n ListingPricingSettingsCellProps\n> = ({ listing, editable, event }) => {\n const { watch, formState, getFieldState, setValue } =\n useFormContext();\n\n const saveMsg = useContent(ContentId.Save);\n const cancelMsg = useContent(ContentId.Cancel);\n\n const { getSelection } = useMultiSelectionContext();\n const listingSelection = getSelection(event.viagVirtualId);\n\n const {\n circuitBreakerMaxDiscountVelocityTicksInHours,\n canAutoPrice,\n onCircuitBreakerChange,\n } = useListingAutoPricingSettings(listing);\n\n const isSubmittingPricingSettings = watch('isSubmittingPricingSettings');\n const isSubmittingPrice = watch('isSubmitting');\n const isSubmittingRowIndex = watch('isSubmittingRowIndex');\n const rowIndex = watch('rowIndex');\n\n const fieldIsSubmitting =\n (isSubmittingPricingSettings || isSubmittingPrice) &&\n (isSubmittingRowIndex === undefined || isSubmittingRowIndex === rowIndex);\n\n const isDisabled =\n listing.isDeleted ||\n !canAutoPrice ||\n listingSelection.isSingleGroupMultiSelect ||\n fieldIsSubmitting ||\n !editable;\n\n const submittingField = watch('submittingField');\n const isSubmittingField =\n fieldIsSubmitting &&\n submittingField === 'circuitBreakerMaxDiscountVelocityTicksInHours';\n\n const onUpdateVelocity = useCallback(\n (e: ChangeEvent) => {\n const value = parseInt(e.target.value);\n if (isNaN(value)) {\n return;\n }\n onCircuitBreakerChange(undefined, undefined, undefined, value);\n },\n [onCircuitBreakerChange]\n );\n\n return (\n \n \n \n
    h
    \n {!isDisabled &&\n circuitBreakerMaxDiscountVelocityTicksInHours !==\n formState.defaultValues\n ?.circuitBreakerMaxDiscountVelocityTicksInHours ? (\n \n {\n e.stopPropagation();\n setValue('isSubmittingPricingSettings', true);\n setValue('isSubmittingRowIndex', rowIndex);\n setValue(\n 'submittingField',\n 'circuitBreakerMaxDiscountVelocityTicksInHours'\n );\n }}\n />\n {\n e.stopPropagation();\n setValue(\n 'circuitBreakerMaxDiscountVelocityTicksInHours',\n formState.defaultValues\n ?.circuitBreakerMaxDiscountVelocityTicksInHours ??\n null\n );\n }}\n />\n \n ) : isSubmittingField ? (\n
    \n \n \n \n
    \n ) : undefined}\n \n }\n />\n \n
    \n );\n};\n","import { ChangeEvent, useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { useListingAutoPricingSettings } from 'src/modals/ListingDetails/components/useListingAutoPricingSettings';\nimport { ProcessingIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport {\n ListingPricingInput,\n ListingPricingSettingsCellProps,\n} from '../ListingPriceForm.types';\n\nexport const CompListingExcludeFanInventoryCell: React.FC<\n ListingPricingSettingsCellProps\n> = ({ listing, editable, event }) => {\n const { watch, setValue } = useFormContext();\n\n const { getSelection } = useMultiSelectionContext();\n const listingSelection = getSelection(event.viagVirtualId);\n\n const { compListingExcludeFanInventory, canAutoPrice, onCompListingChange } =\n useListingAutoPricingSettings(listing);\n\n const isSubmittingPricingSettings = watch('isSubmittingPricingSettings');\n const isSubmittingPrice = watch('isSubmitting');\n const isSubmittingRowIndex = watch('isSubmittingRowIndex');\n const rowIndex = watch('rowIndex');\n\n const fieldIsSubmitting =\n (isSubmittingPricingSettings || isSubmittingPrice) &&\n (isSubmittingRowIndex === undefined || isSubmittingRowIndex === rowIndex);\n\n const isDisabled =\n listing.isDeleted ||\n !canAutoPrice ||\n listingSelection.isSingleGroupMultiSelect ||\n fieldIsSubmitting ||\n !editable;\n\n const submittingField = watch('submittingField');\n const isSubmittingField =\n fieldIsSubmitting && submittingField === 'compListingExcludeFanInventory';\n\n const onToggleExcludeFanInventory = useCallback(\n (e: ChangeEvent) => {\n const isChecked = e.target.checked;\n if (isChecked === compListingExcludeFanInventory) {\n return;\n }\n onCompListingChange({\n compListingExcludeFanInventoryNew: isChecked,\n });\n // Only submit if Enter is hit in the box that has changes\n setValue('isSubmittingPricingSettings', true);\n setValue('isSubmittingRowIndex', rowIndex);\n setValue('submittingField', 'compListingExcludeFanInventory');\n },\n [compListingExcludeFanInventory, onCompListingChange, rowIndex, setValue]\n );\n\n return (\n \n \n {isSubmittingField ? (\n
    \n \n \n \n
    \n ) : (\n <>\n ) => e.stopPropagation()}\n onChange={onToggleExcludeFanInventory}\n />\n\n \n \n )}\n
    \n
    \n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { vars } from 'src/core/themes';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { useListingAutoPricingSettings } from 'src/modals/ListingDetails/components/useListingAutoPricingSettings';\nimport { ProcessingIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n DefaultQuantityFilterOption,\n getMinQuantityOptions,\n safeParseJson,\n} from 'src/utils/inventoryUtils';\n\nimport {\n ListingPricingInput,\n ListingPricingSettingsCellProps,\n} from '../ListingPriceForm.types';\nimport * as styles from './Cell.css';\n\nexport const CompListingMinQuantityCell: React.FC<\n ListingPricingSettingsCellProps\n> = ({ listing, editable, event }) => {\n const { watch, formState, getFieldState, setValue } =\n useFormContext();\n\n const { getSelection } = useMultiSelectionContext();\n const listingSelection = getSelection(event.viagVirtualId);\n\n const {\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n canAutoPrice,\n onCompListingChange,\n } = useListingAutoPricingSettings(listing);\n\n const isSubmittingPricingSettings = watch('isSubmittingPricingSettings');\n const isSubmittingPrice = watch('isSubmitting');\n const isSubmittingRowIndex = watch('isSubmittingRowIndex');\n const rowIndex = watch('rowIndex');\n\n const fieldIsSubmitting =\n (isSubmittingPricingSettings || isSubmittingPrice) &&\n (isSubmittingRowIndex === undefined || isSubmittingRowIndex === rowIndex);\n\n const isDisabled =\n listing.isDeleted ||\n !canAutoPrice ||\n listingSelection.isSingleGroupMultiSelect ||\n fieldIsSubmitting ||\n !compListingQuantityScoreAdjustmentEnabled ||\n !editable;\n\n const submittingField = watch('submittingField');\n const isSubmittingField =\n fieldIsSubmitting &&\n submittingField === 'compListingQuantityScoreAdjustmentOverrideJson';\n\n const quantityFilterValue = useMemo(() => {\n const parsedQuantityOverridesJson = safeParseJson(\n compListingQuantityScoreAdjustmentOverrideJson ?? 'null'\n );\n return parsedQuantityOverridesJson?.quantityFilter;\n }, [compListingQuantityScoreAdjustmentOverrideJson]);\n\n const onMinQuantityUpdate = useCallback(\n (newValue: string) => {\n const val = parseInt(newValue);\n const defaultQuantityOverridesJson = safeParseJson(\n formState.defaultValues\n ?.compListingQuantityScoreAdjustmentOverrideJson ?? 'null'\n );\n if (val === defaultQuantityOverridesJson?.quantityFilter) {\n return;\n }\n const sanitizedValue = !isNaN(val) ? val : null;\n\n const quantityOverrideJsonNew = {\n ...defaultQuantityOverridesJson,\n quantityFilter: sanitizedValue,\n };\n\n onCompListingChange({\n compListingQuantityScoreAdjustmentOverrideJsonNew: JSON.stringify(\n quantityOverrideJsonNew\n ),\n });\n\n // Only submit if Enter is hit in the box that has changes\n setValue('isSubmittingPricingSettings', true);\n setValue('isSubmittingRowIndex', rowIndex);\n setValue(\n 'submittingField',\n 'compListingQuantityScoreAdjustmentOverrideJson'\n );\n },\n [\n formState.defaultValues?.compListingQuantityScoreAdjustmentOverrideJson,\n onCompListingChange,\n rowIndex,\n setValue,\n ]\n );\n\n return (\n \n \n {isSubmittingField ? (\n
    \n \n \n \n
    \n ) : (\n \n )}\n \n
    \n );\n};\n","import { useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport {\n EventMapContextProvider,\n useEventMapContext,\n} from 'src/contexts/EventMapContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { vars } from 'src/core/themes';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { useAvailableAutopricingModes } from 'src/hooks/useAvailableAutopricingModes';\nimport { useListingAutoPricingSettings } from 'src/modals/ListingDetails/components/useListingAutoPricingSettings';\nimport { ProcessingIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getCompleteEventConfigScoreOverrides } from 'src/utils/seatScoreUtils';\nimport { AutoPricingOutlierMode } from 'src/WebApiController';\n\nimport {\n ListingPricingInput,\n ListingPricingSettingsCellProps,\n} from '../ListingPriceForm.types';\nimport * as styles from './Cell.css';\n\nexport const OutlierModeCell: React.FC = (\n props\n) => {\n return (\n \n \n \n );\n};\n\nconst OutlierModeCellContent: React.FC = ({\n listing,\n editable,\n event,\n}) => {\n const { watch, formState, getFieldState, setValue } =\n useFormContext();\n\n const { getSelection } = useMultiSelectionContext();\n const listingSelection = getSelection(event.viagVirtualId);\n\n const { outlierMode, canAutoPrice, onOutlierChange } =\n useListingAutoPricingSettings(listing);\n\n const isSubmittingPricingSettings = watch('isSubmittingPricingSettings');\n const isSubmittingPrice = watch('isSubmitting');\n const isSubmittingRowIndex = watch('isSubmittingRowIndex');\n const rowIndex = watch('rowIndex');\n\n const fieldIsSubmitting =\n (isSubmittingPricingSettings || isSubmittingPrice) &&\n (isSubmittingRowIndex === undefined || isSubmittingRowIndex === rowIndex);\n\n const isDisabled =\n listing.isDeleted ||\n !canAutoPrice ||\n listingSelection.isSingleGroupMultiSelect ||\n fieldIsSubmitting ||\n !editable;\n\n const submittingField = watch('submittingField');\n const isSubmittingField =\n fieldIsSubmitting && submittingField === 'outlierMode';\n\n const { activeConfigOverride, venueMapInfo } = useEventMapContext();\n\n const scores = getCompleteEventConfigScoreOverrides(\n venueMapInfo?.sectionScores,\n activeConfigOverride?.scoreOverrides,\n false\n );\n const { outlierModes, outlierModesDisabled } = useAvailableAutopricingModes(\n true,\n null,\n null,\n Boolean(scores?.some((s) => s.score))\n );\n\n const onUpdateOutlierMode = useCallback(\n (value: AutoPricingOutlierMode | null) => {\n if (!value || value === outlierMode) {\n return;\n }\n if (value === formState.defaultValues?.outlierMode) {\n // reset too preview settings\n onOutlierChange({\n outlierModeNew: value,\n outlierKthLowestLimitNew:\n formState.defaultValues?.outlierKthLowestLimit,\n outlierKthLowestLimitAbsoluteSpacingNew:\n formState.defaultValues?.outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacingNew:\n formState.defaultValues?.outlierKthLowestLimitRelativeSpacing,\n outlierStandardDeviationsNew:\n formState.defaultValues?.outlierStandardDeviations,\n });\n } else {\n onOutlierChange({\n outlierModeNew: value,\n });\n }\n // Only submit if Enter is hit in the box that has changes\n setValue('isSubmittingPricingSettings', true);\n setValue('isSubmittingRowIndex', rowIndex);\n setValue('submittingField', 'outlierMode');\n },\n [\n formState.defaultValues?.outlierKthLowestLimit,\n formState.defaultValues?.outlierKthLowestLimitAbsoluteSpacing,\n formState.defaultValues?.outlierKthLowestLimitRelativeSpacing,\n formState.defaultValues?.outlierMode,\n formState.defaultValues?.outlierStandardDeviations,\n onOutlierChange,\n outlierMode,\n rowIndex,\n setValue,\n ]\n );\n\n return (\n \n \n {isSubmittingField ? (\n
    \n \n \n \n
    \n ) : (\n e.stopPropagation()}\n onChange={onUpdateOutlierMode}\n />\n )}\n \n
    \n );\n};\n","import { useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { vars } from 'src/core/themes';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { useListingAutoPricingSettings } from 'src/modals/ListingDetails/components/useListingAutoPricingSettings';\nimport { ProcessingIcon } from 'src/svgs/Viagogo';\nimport { STANDARD_DEVIATIONS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { AutoPricingOutlierMode } from 'src/WebApiController';\n\nimport {\n ListingPricingInput,\n ListingPricingSettingsCellProps,\n} from '../ListingPriceForm.types';\nimport * as styles from './Cell.css';\n\nexport const OutlierFilteringCell: React.FC<\n ListingPricingSettingsCellProps\n> = ({ listing, editable, event }) => {\n const { watch, formState, getFieldState, setValue } =\n useFormContext();\n\n const { getSelection } = useMultiSelectionContext();\n const listingSelection = getSelection(event.viagVirtualId);\n\n const {\n outlierMode,\n outlierStandardDeviations,\n canAutoPrice,\n onOutlierChange,\n } = useListingAutoPricingSettings(listing);\n\n const isSubmittingPricingSettings = watch('isSubmittingPricingSettings');\n const isSubmittingPrice = watch('isSubmitting');\n const isSubmittingRowIndex = watch('isSubmittingRowIndex');\n const rowIndex = watch('rowIndex');\n\n const fieldIsSubmitting =\n (isSubmittingPricingSettings || isSubmittingPrice) &&\n (isSubmittingRowIndex === undefined || isSubmittingRowIndex === rowIndex);\n\n const isDisabled =\n listing.isDeleted ||\n !canAutoPrice ||\n listingSelection.isSingleGroupMultiSelect ||\n fieldIsSubmitting ||\n !editable ||\n outlierMode !== AutoPricingOutlierMode.StandardDeviations;\n\n const submittingField = watch('submittingField');\n const isSubmittingField =\n fieldIsSubmitting && submittingField === 'outlierStandardDeviations';\n\n const onUpdateOutlierFilter = useCallback(\n (value: string | null) => {\n const sanitized = parseInt(value ?? '');\n if (value != null && !isNaN(sanitized)) {\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.StandardDeviations,\n outlierStandardDeviationsNew: sanitized,\n });\n } else {\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.StandardDeviations,\n outlierStandardDeviationsNew: null,\n });\n }\n // Only submit if Enter is hit in the box that has changes\n setValue('isSubmittingPricingSettings', true);\n setValue('isSubmittingRowIndex', rowIndex);\n setValue('submittingField', 'outlierStandardDeviations');\n },\n [onOutlierChange, rowIndex, setValue]\n );\n\n return (\n \n \n {isSubmittingField ? (\n
    \n \n \n \n
    \n ) : (\n e.stopPropagation()}\n onChange={onUpdateOutlierFilter}\n />\n )}\n \n
    \n );\n};\n","import { ChangeEvent, useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { useListingAutoPricingSettings } from 'src/modals/ListingDetails/components/useListingAutoPricingSettings';\nimport {\n CheckIcon,\n CrossIcon,\n IconsFill,\n ProcessingIcon,\n} from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { AutoPricingOutlierMode } from 'src/WebApiController';\n\nimport {\n ListingPricingInput,\n ListingPricingSettingsCellProps,\n} from '../ListingPriceForm.types';\nimport * as styles from './Cell.css';\n\nexport const OutlierLimitCell: React.FC = ({\n listing,\n editable,\n event,\n}) => {\n const { watch, formState, getFieldState, setValue } =\n useFormContext();\n\n const saveMsg = useContent(ContentId.Save);\n const cancelMsg = useContent(ContentId.Cancel);\n\n const { getSelection } = useMultiSelectionContext();\n const listingSelection = getSelection(event.viagVirtualId);\n\n const { outlierMode, outlierKthLowestLimit, canAutoPrice, onOutlierChange } =\n useListingAutoPricingSettings(listing);\n\n const isSubmittingPricingSettings = watch('isSubmittingPricingSettings');\n const isSubmittingPrice = watch('isSubmitting');\n const isSubmittingRowIndex = watch('isSubmittingRowIndex');\n const rowIndex = watch('rowIndex');\n\n const fieldIsSubmitting =\n (isSubmittingPricingSettings || isSubmittingPrice) &&\n (isSubmittingRowIndex === undefined || isSubmittingRowIndex === rowIndex);\n\n const isDisabled =\n listing.isDeleted ||\n !canAutoPrice ||\n listingSelection.isSingleGroupMultiSelect ||\n fieldIsSubmitting ||\n !editable ||\n outlierMode !== AutoPricingOutlierMode.KthLowest;\n\n const submittingField = watch('submittingField');\n const isSubmittingField =\n fieldIsSubmitting && submittingField === 'outlierKthLowestLimit';\n\n const onUpdateOutlierLimit = useCallback(\n (e: ChangeEvent) => {\n const value = parseInt(e.target.value);\n onOutlierChange({\n outlierModeNew: outlierMode,\n outlierKthLowestLimitNew: value,\n });\n },\n [onOutlierChange, outlierMode]\n );\n\n return (\n \n \n \n {\n e.stopPropagation();\n setValue('isSubmittingPricingSettings', true);\n setValue('isSubmittingRowIndex', rowIndex);\n setValue('submittingField', 'outlierKthLowestLimit');\n }}\n />\n {\n e.stopPropagation();\n setValue(\n 'outlierKthLowestLimit',\n formState.defaultValues?.outlierKthLowestLimit ?? null\n );\n }}\n />\n \n ) : isSubmittingField ? (\n
    \n \n \n \n
    \n ) : undefined\n }\n />\n \n
    \n );\n};\n","import { ChangeEvent, useCallback, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { useListingAutoPricingSettings } from 'src/modals/ListingDetails/components/useListingAutoPricingSettings';\nimport {\n CheckIcon,\n CrossIcon,\n IconsFill,\n ProcessingIcon,\n} from 'src/svgs/Viagogo';\nimport {\n OUTLIER_MODE_KTH_LOWEST_STRATEGY,\n OutlierModeKthLowestStrategy,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { AutoPricingOutlierMode } from 'src/WebApiController';\n\nimport {\n ListingPricingInput,\n ListingPricingSettingsCellProps,\n} from '../ListingPriceForm.types';\nimport * as styles from './Cell.css';\n\nexport const OutlierSpacingCell: React.FC = ({\n listing,\n editable,\n event,\n}) => {\n const { watch, formState, getFieldState, setValue } =\n useFormContext();\n\n const saveMsg = useContent(ContentId.Save);\n const cancelMsg = useContent(ContentId.Cancel);\n\n const { getSelection } = useMultiSelectionContext();\n const listingSelection = getSelection(event.viagVirtualId);\n\n const {\n outlierMode,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacing,\n canAutoPrice,\n onOutlierChange,\n } = useListingAutoPricingSettings(listing);\n const [outlierKthLowestStrategy, setOutlierKthLowestStrategy] =\n useState(\n OutlierModeKthLowestStrategy.Relative\n );\n\n const isSubmittingPricingSettings = watch('isSubmittingPricingSettings');\n const isSubmittingPrice = watch('isSubmitting');\n const isSubmittingRowIndex = watch('isSubmittingRowIndex');\n const rowIndex = watch('rowIndex');\n\n const fieldIsSubmitting =\n (isSubmittingPricingSettings || isSubmittingPrice) &&\n (isSubmittingRowIndex === undefined || isSubmittingRowIndex === rowIndex);\n\n const isDisabled =\n listing.isDeleted ||\n !canAutoPrice ||\n listingSelection.isSingleGroupMultiSelect ||\n fieldIsSubmitting ||\n !editable ||\n outlierMode !== AutoPricingOutlierMode.KthLowest;\n\n const submittingField = watch('submittingField');\n const isSubmittingField =\n fieldIsSubmitting &&\n submittingField === 'outlierKthLowestLimitAbsoluteSpacing';\n\n const value = useMemo(() => {\n if (outlierKthLowestStrategy === OutlierModeKthLowestStrategy.Relative) {\n return outlierKthLowestLimitRelativeSpacing;\n }\n return outlierKthLowestLimitAbsoluteSpacing;\n }, [\n outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestStrategy,\n ]);\n\n const hasChange = useMemo(() => {\n if (outlierKthLowestStrategy === OutlierModeKthLowestStrategy.Relative) {\n return (\n outlierKthLowestLimitRelativeSpacing !==\n formState.defaultValues?.outlierKthLowestLimitRelativeSpacing\n );\n }\n return (\n outlierKthLowestLimitAbsoluteSpacing !==\n formState.defaultValues?.outlierKthLowestLimitAbsoluteSpacing\n );\n }, [\n formState.defaultValues?.outlierKthLowestLimitAbsoluteSpacing,\n formState.defaultValues?.outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestStrategy,\n ]);\n\n const onUpdateOutlierSpacing = useCallback(\n (e: ChangeEvent) => {\n let value = parseInt(e.target.value);\n if (value < 0) {\n value = 0;\n } else if (value > 100) {\n value = 100;\n }\n\n if (!isNaN(value)) {\n if (\n outlierKthLowestStrategy === OutlierModeKthLowestStrategy.Relative\n ) {\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitAbsoluteSpacingNew:\n formState.defaultValues?.outlierKthLowestLimitAbsoluteSpacing ??\n null,\n outlierKthLowestLimitRelativeSpacingNew: value,\n });\n } else {\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitAbsoluteSpacingNew: value,\n outlierKthLowestLimitRelativeSpacingNew:\n formState.defaultValues?.outlierKthLowestLimitRelativeSpacing ??\n null,\n });\n }\n }\n },\n [\n formState.defaultValues?.outlierKthLowestLimitAbsoluteSpacing,\n formState.defaultValues?.outlierKthLowestLimitRelativeSpacing,\n onOutlierChange,\n outlierKthLowestStrategy,\n ]\n );\n\n return (\n \n \n \n {\n if (!value) {\n return;\n }\n setOutlierKthLowestStrategy(\n value as OutlierModeKthLowestStrategy\n );\n }}\n />\n {!isDisabled && hasChange ? (\n \n {\n e.stopPropagation();\n setValue('isSubmittingPricingSettings', true);\n setValue('isSubmittingRowIndex', rowIndex);\n setValue(\n 'submittingField',\n 'outlierKthLowestLimitAbsoluteSpacing'\n );\n }}\n />\n {\n e.stopPropagation();\n setValue(\n 'outlierKthLowestLimitAbsoluteSpacing',\n formState.defaultValues\n ?.outlierKthLowestLimitAbsoluteSpacing ?? null\n );\n setValue(\n 'outlierKthLowestLimitRelativeSpacing',\n formState.defaultValues\n ?.outlierKthLowestLimitRelativeSpacing ?? null\n );\n }}\n />\n \n ) : isSubmittingField ? (\n
    \n \n \n \n
    \n ) : undefined}\n \n }\n />\n \n
    \n );\n};\n","import { ChangeEvent, useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Popover } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { TooltipPopover } from 'src/core/ui/TooltipPopover';\nimport { useListingHasVenueMapInfo } from 'src/hooks/useListingHasVenueMapInfo';\nimport { useUndercutAmountSettings } from 'src/hooks/useUndercutAmountSettings';\nimport { useUserCanSetPrice } from 'src/hooks/useUserHasListingPermissions';\nimport {\n CheckIcon,\n CrossIcon,\n IconsFill,\n ProcessingIcon,\n} from 'src/svgs/Viagogo';\nimport {\n getUndercutPriceRepresentingMode,\n PricingSettingsFieldNumeric,\n UNDERCUT_PRICE_MODE_OPTIONS,\n UndercutPriceSettingsMode,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { Listing } from 'src/WebApiController';\n\nimport { ListingPricingInput } from './ListingPriceForm.types';\n\ntype UndercutAmountCellProps = {\n formattedNumber?: string | null;\n isPremium: boolean;\n listing: Listing;\n editable?: boolean;\n field: PricingSettingsFieldNumeric;\n disabled?: boolean;\n viagVirtualId?: string;\n};\n\nexport const UndercutAmountCell = ({\n formattedNumber,\n isPremium,\n listing,\n editable,\n field,\n disabled,\n viagVirtualId,\n}: UndercutAmountCellProps) => {\n const { setValue, watch, clearErrors, getFieldState, formState } =\n useFormContext();\n const { getSelection } = useMultiSelectionContext();\n const listingSelection = getSelection(viagVirtualId);\n const isSelectionMode = listingSelection.isSingleGroupMultiSelect;\n\n const saveMsg = useContent(ContentId.Save);\n\n const isSubmittingPricingSettings = watch('isSubmittingPricingSettings');\n const isSubmittingPrice = watch('isSubmitting');\n const isSubmittingRowIndex = watch('isSubmittingRowIndex');\n const rowIndex = watch('rowIndex');\n const autoPricingEnabled = watch('autoPricingEnabled');\n const undercutMode = watch('undercutMode');\n const undercutAbsoluteAmount = watch('undercutAbsoluteAmount');\n const undercutRelativeAmount = watch('undercutRelativeAmount');\n const fieldValue = watch(field);\n\n const {\n undercutAbsoluteAmountMode,\n setUndercutAbsoluteAmountMode,\n undercutRelativeAmountMode,\n setUndercutRelativeAmountMode,\n } = useUndercutAmountSettings(undercutAbsoluteAmount, undercutRelativeAmount);\n\n const undercutAmountMode = useMemo(\n () =>\n field === 'undercutAbsoluteAmount'\n ? undercutAbsoluteAmountMode\n : undercutRelativeAmountMode,\n [field, undercutAbsoluteAmountMode, undercutRelativeAmountMode]\n );\n const setUndercutAmountMode = useMemo(\n () =>\n field === 'undercutAbsoluteAmount'\n ? setUndercutAbsoluteAmountMode\n : setUndercutRelativeAmountMode,\n [field, setUndercutAbsoluteAmountMode, setUndercutRelativeAmountMode]\n );\n\n const { loginContext } = useAppContext();\n\n const { getUiCurrency } = useLocalizationContext();\n const uiCurrency = useMemo(\n () =>\n getUiCurrency(\n listing?.currency ?? loginContext?.user?.activeAccount?.currencyCode\n ),\n [\n getUiCurrency,\n listing?.currency,\n loginContext?.user?.activeAccount?.currencyCode,\n ]\n );\n\n const canSetPrice = useUserCanSetPrice(listing, false);\n const { hasVenueMapInfo } = useListingHasVenueMapInfo(listing);\n const isAutoPricingDisabled = !(hasVenueMapInfo && canSetPrice);\n const isUnderCutAmountDisabled =\n disabled ||\n listing?.isDeleted ||\n !canSetPrice ||\n !autoPricingEnabled ||\n undercutMode == null ||\n isAutoPricingDisabled;\n\n const fieldIsSubmitting =\n (isSubmittingPricingSettings || isSubmittingPrice) &&\n (isSubmittingRowIndex === undefined || isSubmittingRowIndex === rowIndex);\n\n const fieldError = getFieldState(field, formState)?.error?.message;\n\n const fieldHasChanged =\n formState.defaultValues?.[field] !== fieldValue &&\n !isSubmittingPricingSettings;\n\n const submit = useCallback(() => {\n if (fieldError) {\n return;\n }\n if (fieldHasChanged) {\n // Only submit if Enter is hit in the box that has changes\n setValue('isSubmittingPricingSettings', true);\n setValue('isSubmittingRowIndex', rowIndex);\n }\n }, [fieldError, fieldHasChanged, setValue, rowIndex]);\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n submit();\n }\n };\n\n const onChangeHandler = useCallback(\n (e: ChangeEvent) => {\n clearErrors(field);\n\n let v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n if (field === 'undercutRelativeAmount') {\n v = Math.min(v, 100) / 100;\n }\n v = getUndercutPriceRepresentingMode(\n v,\n undercutAmountMode ?? UndercutPriceSettingsMode.Discount\n );\n setValue(field, v);\n } else {\n setValue(field, null);\n }\n },\n [clearErrors, field, setValue, undercutAmountMode]\n );\n\n const postfixDisplay = (\n <>\n {field === 'undercutRelativeAmount' && '%'}{' '}\n {\n if (!value) return;\n\n const mode = value as UndercutPriceSettingsMode;\n setUndercutAmountMode(mode);\n\n if (fieldValue) {\n const curAmountAbs = Math.abs(fieldValue);\n setValue(\n field,\n mode == UndercutPriceSettingsMode.Premium\n ? -curAmountAbs\n : curAmountAbs\n );\n }\n }}\n />\n {fieldIsSubmitting ? (\n \n \n \n ) : fieldHasChanged && !fieldError ? (\n {\n e.stopPropagation();\n submit();\n }}\n />\n ) : null}\n \n \n \n \n );\n\n return (\n \n \n \n {formattedNumber != null ? (\n formattedNumber\n ) : isUnderCutAmountDisabled ? (\n ''\n ) : (\n \n )}\n \n {formattedNumber && (\n <>\n {' '}\n \n \n )}\n \n }\n style={\n !editable\n ? { color: vars.color.textPrimary }\n : isUnderCutAmountDisabled\n ? { color: vars.color.textPrimary }\n : {}\n }\n disabled={\n isUnderCutAmountDisabled ||\n isSelectionMode ||\n fieldIsSubmitting ||\n disabled ||\n !editable\n }\n onClosed={() => {\n if (formState.defaultValues?.[field]) {\n setValue(field, formState.defaultValues?.[field] ?? null);\n }\n }}\n >\n \n {field === 'undercutRelativeAmount' ? (\n \n ) : (\n \n )}\n \n \n \n );\n};\n","import { useDraggable, useDroppable } from '@dnd-kit/core';\nimport {\n ColumnDef,\n createColumnHelper,\n FilterFnOption,\n Row,\n SortingFn,\n sortingFns,\n} from '@tanstack/react-table';\nimport { range } from 'lodash-es';\nimport { useCallback, useContext, useEffect, useMemo } from 'react';\nimport { Link } from 'react-router-dom';\nimport { MultiSelectAll } from 'src/components/common/MultiSelect/MultiSelectAll';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { AutoPriceResultDisplay } from 'src/components/Listings/AutoPriceResultDisplay';\nimport { FAKE_SOLD_GROUP_ID } from 'src/components/Listings/constants';\nimport { ListingDeliveryTypeDisplay } from 'src/components/Listings/ListingDeliveryTypeDisplay';\nimport { ListingDisplay } from 'src/components/Listings/ListingDisplay';\nimport { ListingNotesDisplay } from 'src/components/Listings/ListingDisplay/ListingNotesDisplay';\nimport { TagValueDisplay } from 'src/components/TagsFormBody/TagValueCell';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n COLUMN_DEFAULT_SIZE_BASE,\n COLUMN_DEFAULT_SIZE_ICON,\n COLUMN_DEFAULT_SIZE_LG,\n COLUMN_DEFAULT_SIZE_SM,\n COLUMN_DEFAULT_SIZE_XL,\n COLUMN_DEFAULT_SIZE_XXL,\n COLUMN_MAX_SIZE,\n COLUMN_MIN_SIZE,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport {\n NO_GROUP_ID,\n TableRow,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack, TooltipPopover } from 'src/core/ui';\nimport { CopyToClipboardV2 } from 'src/core/ui/CopyToClipboard/CopyToClipboardV2';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { useColumnUserSetting } from 'src/hooks/useColumnUserSetting';\nimport { useAllInPriceFromListPrice } from 'src/hooks/useListAndAllInPrice';\nimport { useMapDeliveryTypesToString } from 'src/hooks/useMapDeliveryTypesToString';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { FormatOption, FormatOptionEntries } from 'src/modals/EditTableColumns';\nimport { CustomColumnName } from 'src/modals/InventoryTableColumns/CustomColumnName';\nimport { ListingGroupIcon } from 'src/svgs/ListingGroupIcon';\nimport { ExpandIcon, ForwardIcon } from 'src/svgs/Viagogo';\nimport { SEATING_SORTING_FN_NAME } from 'src/tables/common/hooks/useSeatingColumnSorting';\nimport { ListingActionsCell } from 'src/tables/ListingTable/configs/ListingActionsCell';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\nimport { DateCell, InHandCell } from 'src/tables/Table/TableCells';\nimport {\n getCompListingModeIcon,\n getUndercutModeIcon,\n} from 'src/utils/autoPricingUtils';\nimport { ListingTableColumnId } from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { evaluateFormula } from 'src/utils/columns/inventory/inventoryCustomColumnUtils';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { LISTING_TABLE_COLUMN_ID_TO_CONTENT_ID } from 'src/utils/constants/contentIdMaps';\nimport {\n getAllInPriceFromListPriceForListing,\n getListingDetailsModalConfigWithDeepLink,\n getListingDetailsRelativeUrl,\n isListingGroupLeader,\n} from 'src/utils/inventoryUtils';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\nimport { getPurchaseOrderRelativeUrl } from 'src/utils/purchaseUtils';\nimport {\n filterSeatingSectionFn,\n filterSeatRangeFn,\n filterSeatTraitsFn,\n filterStringMultiSelect,\n getNextEditableListingRow,\n sortGeneric,\n sortMoney,\n sortSeatingSeatsForTable,\n} from 'src/utils/tableUtils';\nimport {\n SECTION_TYPE_TO_PRECISION_SETTING,\n SectionType,\n} from 'src/utils/types/sectionType';\nimport {\n AutoPricingCompListingMode,\n AutoPricingResultType,\n AutoPricingUndercutMode,\n Feature,\n Listing,\n ListingDetailDataField,\n ListingGroup,\n ListingGroupUndercutSetting,\n ListingNote,\n Marketplace,\n TagsValueType,\n UiMoney,\n UserSetting,\n} from 'src/WebApiController';\n\nimport * as styles from '../ListingTable.css';\nimport {\n ListingWithEvent,\n SHIMMERING_DIV_HEIGHT_LISTING_GROUP,\n SHIMMERING_DIV_HEIGHT_SINGLE_LISTING,\n} from '../ListingTable.types';\nimport { AutoPricingToggleCell } from './AutoPricingToggleCell';\nimport { CompListingBoundsCell } from './CompListingBoundsCell';\nimport { CustomNumericCell } from './CustomNumericCell';\nimport { ListingPriceCell } from './ListingPriceCell';\nimport { ListingProceedsFloorCell } from './ListingProceedsFloorCell';\nimport { PricingModeCell } from './PricingModeCell';\nimport { CircuitBreakerMinCompListingCountCell } from './PricingSettings/CircuitBreakerMinCompListingCount';\nimport { CircuitBreakerVelocityCell } from './PricingSettings/CircuitBreakerVelocity';\nimport { CircuitBreakerVelocityHoursCell } from './PricingSettings/CircuitBreakerVelocityPeriod';\nimport { CompListingExcludeFanInventoryCell } from './PricingSettings/CompListingExcludeFanInventory';\nimport { CompListingMinQuantityCell } from './PricingSettings/CompListingMinQuantity';\nimport { OutlierModeCell } from './PricingSettings/OutlierDetectionMode';\nimport { OutlierFilteringCell } from './PricingSettings/OutlierFiltering';\nimport { OutlierLimitCell } from './PricingSettings/OutlierLimit';\nimport { OutlierSpacingCell } from './PricingSettings/OutlierSpacing';\nimport { UndercutAmountCell } from './UndercutAmountCell';\n\nconst SECTION_TYPE = SectionType.Listings;\n\nconst GroupListingsSortableFields: ListingTableColumnId[] = [\n ListingTableColumnId.ListPrice,\n ListingTableColumnId.AllInPrice,\n ListingTableColumnId.ProceedsCeiling,\n ListingTableColumnId.ProceedsFloor,\n ListingTableColumnId.WebsiteCeiling,\n ListingTableColumnId.WebsiteFloor,\n ListingTableColumnId.UnsoldQuantity,\n ListingTableColumnId.ShownQuantity,\n];\n\nconst findParentRow = (element: HTMLElement | null): HTMLElement | null => {\n if (!element) {\n return null;\n }\n if (element.tagName.toLowerCase() === 'tr') {\n return element;\n }\n return findParentRow(element.parentElement);\n};\n\n/**\n * Sorting wrapper to make sure sorting will not be applied to grouped items.\n * @param desiredSortingFn\n * @returns shadowed sorting fn\n */\nconst groupSortingWrapper = (\n desiredSortingFn: SortingFn,\n columnId: ListingTableColumnId | undefined = undefined,\n hasGroupListingsSortingFeature = false\n): SortingFn => {\n return (\n rowA: Row,\n rowB: Row,\n colId: string\n ) => {\n const canSort =\n hasGroupListingsSortingFeature &&\n columnId &&\n GroupListingsSortableFields.includes(columnId);\n if (rowA.depth + rowB.depth > 0 && !canSort) return 0;\n return desiredSortingFn(rowA, rowB, colId);\n };\n};\n\nexport const tagColumnDef = (\n tagName: string,\n columnId: ListingTableColumnId | undefined = undefined,\n canSortGroup = false,\n loadedBySection = false\n): ColumnDef => ({\n id: tagName,\n header: () => (\n \n \n {tagName}\n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => {\n if (data?.isCompListing) return undefined;\n\n const tag = data?.listing?.tags?.find((t) => t.key === tagName);\n if (\n tag?.valueType === TagsValueType.Int ||\n tag?.valueType === TagsValueType.Decimal\n ) {\n return tag ? parseFloat(tag.value) : null;\n }\n return tag?.value;\n },\n cell: function Cell({ getValue, row: { original }, table }) {\n const { value: storedColumnNumberPrecisions = {} } =\n useServerUserSetting({\n id: SECTION_TYPE_TO_PRECISION_SETTING[\n table.options.meta?.sectionType ?? SECTION_TYPE\n ],\n });\n const tag = original?.listing?.tags?.find((t) => t.key === tagName);\n\n if (\n tag?.valueType === TagsValueType.Int ||\n tag?.valueType === TagsValueType.Decimal\n ) {\n const userDefinedPrecision = storedColumnNumberPrecisions[tagName];\n\n return (\n ()}\n isLoading={Boolean(!original || !original.listing)}\n // We do not display custom fields for listing group or comp listing\n hide={Boolean(\n original?.listing?.isLtGrp || !original?.listing?.isFull\n )}\n shimmeringDivHeight={\n original?.isLtGrp\n ? SHIMMERING_DIV_HEIGHT_LISTING_GROUP\n : SHIMMERING_DIV_HEIGHT_SINGLE_LISTING\n }\n sectionType={table.options.meta?.sectionType ?? SECTION_TYPE}\n matchingTag={tag}\n currencyCode={original?.listing?.currency}\n />\n );\n }\n\n if (\n !original ||\n !original.listing ||\n (loadedBySection &&\n !original?.isLtGrp &&\n !original?.isCompListing &&\n !original.listing?.dataIsLoaded?.[ListingDetailDataField.Tags])\n ) {\n return (\n \n );\n }\n\n if (original?.listing?.isLtGrp || !original?.listing?.isFull || !tag) {\n return null;\n }\n\n return (\n \n \n \n );\n },\n sortingFn: groupSortingWrapper(sortingFns.basic, columnId, canSortGroup),\n});\n\nexport const customColumnDef = (\n columnId: string,\n formula?: string | null,\n canSortGroup = false\n): ColumnDef => ({\n id: columnId,\n header: ({ table }) => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => {\n return formula && data && !data.isCompListing\n ? evaluateFormula(formula, data.listing) ?? null\n : null;\n },\n cell: function Cell({ getValue, row: { original }, table }) {\n const { value: storedInventoryColumnNumberPrecisions = {} } =\n useServerUserSetting({\n id: SECTION_TYPE_TO_PRECISION_SETTING[\n table.options.meta?.sectionType ?? SECTION_TYPE\n ],\n });\n const { value: customColumns = [] } = useServerUserSetting<\n CustomListingColumn[]\n >({\n id: UserSetting.InventoryCustomColumns,\n });\n\n const userDefinedPrecision =\n storedInventoryColumnNumberPrecisions[columnId];\n\n return (\n ()}\n isLoading={Boolean(!original || !original.listing)}\n // We do not display custom fields for listing group or comp listing\n hide={Boolean(original?.listing?.isLtGrp || !original?.listing?.isFull)}\n shimmeringDivHeight={\n original?.isLtGrp\n ? SHIMMERING_DIV_HEIGHT_LISTING_GROUP\n : SHIMMERING_DIV_HEIGHT_SINGLE_LISTING\n }\n sectionType={table.options.meta?.sectionType ?? SECTION_TYPE}\n matchingCustomColumn={customColumns.find((c) => c.id === columnId)}\n currencyCode={original?.listing?.currency}\n />\n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n columnId as ListingTableColumnId,\n canSortGroup\n ),\n});\n\nconst columnHelper = createColumnHelper();\n\nexport const getListingTableColumnConfigs = (\n canSortGroup = false,\n hasGroup = false,\n loadedBySection = false,\n hasCleanupWhiteSpaceFeature = false\n) => {\n return {\n [ListingTableColumnId.Checkbox]: columnHelper.display({\n id: ListingTableColumnId.Checkbox,\n header: (props) => {\n return props.table.options.meta?.showSelectAllCheckbox ? (\n \n \n \n ) : (\n ''\n );\n },\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_DEFAULT_SIZE_BASE,\n maxSize: COLUMN_DEFAULT_SIZE_BASE,\n enableSorting: false,\n enableResizing: false,\n\n cell: function Cell({\n row: {\n id,\n original,\n getIsSelected,\n depth,\n getCanSelectSubRows,\n getCanSelect,\n getIsAllSubRowsSelected,\n },\n table,\n }) {\n const { setShiftKeyRowSelectionState, isNoGroupIdSet } =\n useMultiSelectionContext();\n\n const isLtGrp = original?.isLtGrp;\n\n if (!original || !original.listing) {\n return (\n \n );\n }\n\n const isListingGroupSelected = getIsAllSubRowsSelected();\n const isSelected = isListingGroupSelected || getIsSelected();\n const canSelect =\n getCanSelectSubRows() || (getCanSelect() && depth === 0);\n\n const groupId = isNoGroupIdSet()\n ? NO_GROUP_ID\n : original.event.viagVirtualId;\n\n return canSelect ? (\n \n {\n setShiftKeyRowSelectionState(\n id,\n table.getRowModel().rows as unknown as TableRow[],\n groupId\n );\n }}\n />\n \n ) : null;\n },\n }),\n [ListingTableColumnId.TicketClassColor]: columnHelper.accessor(\n (data: ListingWithEvent | null) => data?.ticketClassColor ?? '',\n {\n id: ListingTableColumnId.TicketClassColor,\n header: () => (\n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n\n cell: function Cell({ getValue, row: { original } }) {\n if (!original || !original.listing) {\n return (\n \n );\n }\n\n const ticketClassColor = getValue();\n\n return (\n \n \n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.TicketClassColor,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.ListingId]: columnHelper.accessor(\n (data) => data?.listing?.id,\n {\n id: ListingTableColumnId.ListingId,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const { setActivePosEntity } = useActivePosEntityContext();\n const { setModal } = useContext(ModalContext);\n const onViewClick = useCallback(async () => {\n if (!original || !original.listing?.id) {\n return;\n }\n setActivePosEntity(\n original.listing.id,\n original.listing.idOnMkp,\n true\n );\n setModal(\n getListingDetailsModalConfigWithDeepLink(\n original.listing.id,\n true\n )\n );\n }, [original, setActivePosEntity, setModal]);\n\n if (!original || !original.listing) {\n return (\n \n );\n }\n\n // We do not display ID for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n return (\n \n \n \n {getValue() as number}\n \n \n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.ListingId,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.Seating]: columnHelper.accessor(\n (data) =>\n data?.listing\n ? {\n seating: data.listing.seating,\n listingNotes: data.listing.seatTraits,\n }\n : null,\n {\n id: ListingTableColumnId.Seating,\n header: function Header({ table }) {\n const seatingText = useContent(\n LISTING_TABLE_COLUMN_ID_TO_CONTENT_ID[ListingTableColumnId.Seating]\n );\n const sectionText = useContent(ContentId.Section);\n const { value: storedInventoryColumnNumberPrecisions = {} } =\n useServerUserSetting({\n id: SECTION_TYPE_TO_PRECISION_SETTING[\n table.options.meta?.sectionType ?? SECTION_TYPE\n ],\n });\n\n const isSectionOnly =\n storedInventoryColumnNumberPrecisions[\n ListingTableColumnId.Seating\n ] === FormatOption.Seating_SectionOnly;\n\n return (\n \n \n \n {isSectionOnly\n ? `${seatingText} (${sectionText})`\n : seatingText}\n \n \n \n );\n },\n enableColumnFilter: true,\n filterFn:\n filterSeatingSectionFn as FilterFnOption,\n meta: {\n uniqueValueVariant: 'seatingSection',\n },\n size: hasCleanupWhiteSpaceFeature\n ? COLUMN_DEFAULT_SIZE_XL\n : COLUMN_DEFAULT_SIZE_XXL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n row: { original, getCanExpand, getIsExpanded, toggleExpanded, depth },\n cell: { id: cellId },\n column: { id: columnId },\n table,\n }) {\n const hasSeatTraitsColumnFeature = useUserHasFeature(\n Feature.SeatTraitsColumn\n );\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n const droppable = useDroppable({\n id: cellId,\n data: {\n ltGrpId: original?.listing?.ltGrpId,\n listingId: original?.listing?.id,\n listingGroupPriority: original?.listing?.ltGrpPrior,\n },\n });\n const draggable = useDraggable({\n id: cellId,\n data: {\n listingId: original?.listing?.id,\n currentListingGroupId: original?.listing?.ltGrpId,\n listingGroupPriority: original?.listing?.ltGrpPrior,\n },\n });\n\n const dndProps = useMemo(() => {\n // Disable drag-n-drop when there is no group\n if (!hasGroup) {\n return {};\n }\n const isListing = !original?.isLtGrp && !original?.listing?.isLtGrp;\n if (isListing && !original?.ltGroupName) {\n return {\n ref: (node: HTMLDivElement): void => {\n draggable.setNodeRef(node);\n droppable.setNodeRef(node);\n },\n ...draggable.listeners,\n ...draggable.attributes,\n };\n }\n if (isListingGroupLeader(original?.listing)) {\n return {\n ref: (node: HTMLDivElement): void => {\n droppable.setNodeRef(node);\n },\n };\n }\n return {};\n }, [\n draggable,\n droppable,\n original?.isLtGrp,\n original?.listing,\n original?.ltGroupName,\n ]);\n\n useEffect(() => {\n if (droppable.isOver) {\n findParentRow(droppable.node.current)?.setAttribute(\n 'style',\n `background-color: ${vars.color.backgroundHighlight}`\n );\n } else {\n findParentRow(droppable.node.current)?.setAttribute(\n 'style',\n `background-color: none`\n );\n }\n }, [droppable.isOver, droppable.node]);\n\n if (!original || !original.listing) {\n return (\n \n );\n }\n\n const adjustedListing =\n userDefinedPrecision === FormatOption.Seating_SectionOnly\n ? {\n ...original.listing,\n seating: {\n ...original.listing.seating,\n row: null,\n seatFr: null,\n seatTo: null,\n },\n }\n : original.listing;\n\n const canExpand = getCanExpand();\n const isExpanded = getIsExpanded();\n const Icon = isExpanded ? ExpandIcon : ForwardIcon;\n\n return (\n \n \n \n {range(depth).map((i) => {\n return
    ;\n })}\n \n {canExpand && (\n <>\n
    \n {\n e.stopPropagation();\n e.preventDefault();\n toggleExpanded(!isExpanded);\n }}\n />\n
    \n {isListingGroupLeader(original.listing) && (\n {\n e.stopPropagation();\n e.preventDefault();\n toggleExpanded(!isExpanded);\n }}\n >\n \n
    \n )}\n \n )}\n \n \n \n
    \n
    \n {original.ltGroupName && (\n \n }\n >\n
    \n {' '}\n {original.ltGroupName}\n
    \n \n )}\n
    \n \n \n
    \n );\n },\n sortingFn: SEATING_SORTING_FN_NAME,\n }\n ),\n [ListingTableColumnId.SeatTraits]: columnHelper.accessor(\n (data) => data?.listing?.seatTraits,\n {\n id: ListingTableColumnId.SeatTraits,\n header: () => (\n \n \n \n ),\n enableColumnFilter: true,\n filterFn: filterSeatTraitsFn as FilterFnOption,\n meta: {\n uniqueValueVariant: 'seatTraits',\n },\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n enableSorting: false,\n cell: ({ row: { original }, getValue }) => {\n const seatTraits = getValue();\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n // We do not display for listing group or comp listing\n if (original.listing.isLtGrp || original.isCompListing) return null;\n if (!seatTraits?.length) return null;\n\n return (\n \n \n \n );\n },\n }\n ),\n [ListingTableColumnId.DeliveryType]: columnHelper.accessor(\n (data) => data?.listing?.delivType,\n {\n id: ListingTableColumnId.DeliveryType,\n header: function Cell() {\n const titleText = useContent(\n LISTING_TABLE_COLUMN_ID_TO_CONTENT_ID[\n ListingTableColumnId.DeliveryType\n ]\n );\n\n return hasCleanupWhiteSpaceFeature ? (\n \n
     
    \n
    \n ) : (\n \n \n \n );\n },\n enableColumnFilter: false,\n size: hasCleanupWhiteSpaceFeature\n ? COLUMN_DEFAULT_SIZE_ICON\n : COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_DEFAULT_SIZE_ICON,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n row: { original, getCanExpand },\n column: { id: columnId },\n table,\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n const strDeliveryTypes = useMapDeliveryTypesToString({\n deliveryTypesObj: original?.listing,\n });\n\n if (!original || !original.listing) {\n return (\n \n );\n }\n\n // We do not display for comp listing\n if (original.isCompListing) return null;\n\n // Don't show delivery type when row can be expanded\n if (getCanExpand()) {\n return null;\n }\n\n return (\n \n \n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.DeliveryType,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.ShownQuantity]: columnHelper.accessor(\n (data) => data?.listing?.manMaxDispQty ?? data?.listing?.maxDispQty ?? 0,\n {\n id: ListingTableColumnId.ShownQuantity,\n header: ({ column }) => (\n COLUMN_DEFAULT_SIZE_SM &&\n hasCleanupWhiteSpaceFeature\n ? 'right'\n : 'left'\n }`}\n >\n \n \n ),\n enableColumnFilter: false,\n size: hasCleanupWhiteSpaceFeature\n ? COLUMN_DEFAULT_SIZE_SM\n : COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || !original.listing) {\n return (\n \n );\n }\n\n // We do not display for comp listing\n if (original.isCompListing) return null;\n\n return (\n \n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: getValue(),\n })}\n \n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.ShownQuantity,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.SplitType]: columnHelper.accessor(\n (data) => data?.listing?.splitType,\n {\n id: ListingTableColumnId.SplitType,\n header: ({ column }) => (\n COLUMN_DEFAULT_SIZE_SM &&\n hasCleanupWhiteSpaceFeature\n ? 'right'\n : 'left'\n }`}\n >\n \n \n ),\n enableColumnFilter: false,\n size: hasCleanupWhiteSpaceFeature\n ? COLUMN_DEFAULT_SIZE_SM\n : COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n table,\n }) {\n if (!original || !original.listing) {\n return (\n \n );\n }\n\n // We do not display for comp listing\n if (original.isCompListing) return null;\n\n return (\n \n \n {getValue()}\n \n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.SplitType,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.UnsoldQuantity]: columnHelper.accessor(\n (data) => data?.listing?.unsoldQty,\n {\n id: ListingTableColumnId.UnsoldQuantity,\n header: ({ column }) => (\n COLUMN_DEFAULT_SIZE_SM &&\n hasCleanupWhiteSpaceFeature\n ? 'right'\n : 'left'\n }`}\n >\n \n \n ),\n enableColumnFilter: false,\n size: hasCleanupWhiteSpaceFeature\n ? COLUMN_DEFAULT_SIZE_SM\n : COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || !original.listing) {\n return (\n \n );\n }\n\n return (\n \n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: getValue(),\n })}\n \n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.UnsoldQuantity,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.TicketCount]: columnHelper.accessor(\n (data) => data?.listing?.ticketCnt ?? 0,\n {\n id: ListingTableColumnId.TicketCount,\n header: ({ column }) => (\n COLUMN_DEFAULT_SIZE_SM &&\n hasCleanupWhiteSpaceFeature\n ? 'right'\n : 'left'\n }`}\n >\n \n \n ),\n enableColumnFilter: false,\n size: hasCleanupWhiteSpaceFeature\n ? COLUMN_DEFAULT_SIZE_SM\n : COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || !original.listing) {\n return (\n \n );\n }\n\n // We do not display for comp listing\n if (original.isCompListing) return null;\n\n return (\n \n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: getValue(),\n })}\n \n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.TicketCount,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.SoldQty]: columnHelper.accessor(\n (data) => data?.listing?.soldQty ?? 0,\n {\n id: ListingTableColumnId.SoldQty,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || !original.listing) {\n return (\n \n );\n }\n\n // We do not display for comp listing\n if (original.isCompListing) return null;\n\n return (\n \n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: getValue(),\n })}\n \n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.SoldQty,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.InHandDate]: columnHelper.accessor(\n (data) => data?.listing?.inHandAt || '',\n {\n id: ListingTableColumnId.InHandDate,\n header: ({ column }) => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_ICON,\n minSize: COLUMN_DEFAULT_SIZE_ICON,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue();\n if (!original || !original.listing) {\n return (\n \n );\n }\n\n // We do not display inhand for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n return (\n \n \n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.datetime,\n ListingTableColumnId.InHandDate,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.UnitCost]: columnHelper.accessor(\n (data) => data?.listing?.unitCst ?? data?.listing?.faceValue,\n {\n id: ListingTableColumnId.UnitCost,\n header: ({ column }) => (\n \n \n \n ),\n enableColumnFilter: false,\n size: hasCleanupWhiteSpaceFeature\n ? COLUMN_DEFAULT_SIZE_BASE\n : COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const value = getValue();\n const { getUiCurrency } = useLocalizationContext();\n const currency = getUiCurrency(original?.listing?.currency);\n\n const { userDefinedPrecision, isServerSetting } =\n useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original.isLtGrp)) {\n return (\n \n );\n }\n\n if (!original.listing || original.isCompListing) return null;\n if (!value?.disp) return ;\n\n // Hide decimals if >999 and this is a default precision\n const shouldRoundToWhole =\n hasCleanupWhiteSpaceFeature && !isServerSetting && value.amt > 999;\n\n const displayPrecision = shouldRoundToWhole\n ? FormatOption.Whole\n : userDefinedPrecision;\n\n return (\n \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: displayPrecision,\n inputNumber: value.amt,\n currencyCode: currency.code,\n currencyDecimalDigits: currency.dec,\n })\n : value.disp}\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortMoney,\n ListingTableColumnId.UnitCost,\n canSortGroup\n ),\n }\n ),\n\n [ListingTableColumnId.UnsoldProceeds]: columnHelper.accessor(\n (data) =>\n data?.listing ? data.listing.listPrice * data.listing.availQty : null,\n {\n id: ListingTableColumnId.UnsoldProceeds,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const value = getValue();\n const { getUiCurrency } = useLocalizationContext();\n const currency = getUiCurrency(original?.listing?.currency);\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n\n if (!original.listing || original?.listing?.isLtGrp) return null;\n\n // We do not display for comp listing\n if (original.isCompListing) return null;\n\n if (value == null) return ;\n\n return (\n \n
    \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n currencyCode: currency.code,\n currencyDecimalDigits: currency.dec,\n })}\n
    \n
    \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.UnsoldProceeds,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.UnsoldCost]: columnHelper.accessor(\n (data) =>\n data?.listing && (data.listing.unitCst || data.listing.faceValue)\n ? (data.listing.unitCst?.amt ?? data.listing.faceValue?.amt ?? 0) *\n data.listing.availQty\n : null,\n {\n id: ListingTableColumnId.UnsoldCost,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const value = getValue();\n const { getUiCurrency } = useLocalizationContext();\n const currency = getUiCurrency(original?.listing?.currency);\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n\n if (!original.listing) return null;\n\n // We do not display for comp listing\n if (original.isCompListing) return null;\n\n if (value == null) return ;\n\n return (\n \n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n currencyCode: currency.code,\n currencyDecimalDigits: currency.dec,\n })}\n \n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.UnsoldCost,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.SoldCost]: columnHelper.accessor(\n (data) =>\n data?.listing && (data.listing.unitCst || data.listing.faceValue)\n ? (data.listing.unitCst?.amt ?? data.listing.faceValue?.amt ?? 0) *\n (data.listing.ticketCnt - data.listing.availQty)\n : null,\n {\n id: ListingTableColumnId.SoldCost,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const value = getValue();\n const { getUiCurrency } = useLocalizationContext();\n const currency = getUiCurrency(original?.listing?.currency);\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n\n if (!original.listing) return null;\n\n // We do not display for comp listing\n if (original.isCompListing) return null;\n\n if (value == null) {\n return (\n \n \n \n );\n }\n\n return (\n \n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n currencyCode: currency.code,\n currencyDecimalDigits: currency.dec,\n })}\n \n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.SoldCost,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.TotalCost]: columnHelper.accessor(\n (data) =>\n data?.listing && (data.listing.unitCst || data.listing.faceValue)\n ? (data.listing.unitCst?.amt ?? data.listing.faceValue?.amt ?? 0) *\n data.listing.ticketCnt\n : null,\n {\n id: ListingTableColumnId.TotalCost,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const value = getValue();\n const { getUiCurrency } = useLocalizationContext();\n const currency = getUiCurrency(original?.listing?.currency);\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n\n if (!original.listing) return null;\n\n // We do not display for comp listing\n if (original.isCompListing) return null;\n\n if (value == null) return ;\n\n return (\n \n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n currencyCode: currency.code,\n currencyDecimalDigits: currency.dec,\n })}\n \n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.TotalCost,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.ListPrice]: columnHelper.accessor(\n (data) => data?.listing?.listPrice,\n {\n id: ListingTableColumnId.ListPrice,\n header: ({ column }) => (\n COLUMN_DEFAULT_SIZE_SM &&\n hasCleanupWhiteSpaceFeature\n ? 'right'\n : 'left'\n }`}\n >\n \n \n ),\n enableColumnFilter: false,\n size: hasCleanupWhiteSpaceFeature\n ? COLUMN_DEFAULT_SIZE_LG\n : COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ row: { original }, table }) => {\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n\n if (!original.listing) return null;\n\n // We do not display pricing input for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n const sellerFee = original.listing.mkpListings?.find(\n (m) => m.mkp === Marketplace.StubHub\n )?.sellerFee;\n\n const listings: ListingWithEvent[] = table\n .getSortedRowModel()\n .rows.filter((row) => row?.original != null)\n .map((row) => row.original!);\n\n const nextEditableListing = getNextEditableListingRow(\n listings,\n original\n );\n\n return (\n \n \n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.ListPrice,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.AllInPrice]: columnHelper.accessor(\n (data) =>\n data?.isCompListing\n ? data.listing?.allInPrice\n : // listing all-in-price may not always have a value, so calling this function will properly handle calculating it from list-price if it's null\n getAllInPriceFromListPriceForListing(data?.listing),\n {\n id: ListingTableColumnId.AllInPrice,\n header: ({ column }) => (\n COLUMN_DEFAULT_SIZE_SM &&\n hasCleanupWhiteSpaceFeature\n ? 'right'\n : 'left'\n }`}\n >\n \n \n ),\n enableColumnFilter: false,\n size: hasCleanupWhiteSpaceFeature\n ? COLUMN_DEFAULT_SIZE_LG\n : COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ row: { original }, table }) => {\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n\n if (!original.listing) return null;\n\n if (original.isCompListing) {\n const value = original.listing.allInPrice;\n const currencyCode = original.listing.currency;\n\n return (\n \n
    \n {value != null &&\n currencyCode != null &&\n applyNumberFormatting({\n inputNumber: value,\n currencyCode: currencyCode,\n })}\n
    \n
    \n );\n }\n\n // We do not display pricing input for listing group or comp listing\n if (original.listing.isLtGrp || !original.listing.isFull) return null;\n\n const sellerFee = original.listing.mkpListings?.find(\n (m) => m.mkp === Marketplace.StubHub\n )?.sellerFee;\n\n const listings: ListingWithEvent[] = table\n .getSortedRowModel()\n .rows.filter((row) => row?.original != null)\n .map((row) => row.original!);\n\n const nextEditableListing = getNextEditableListingRow(\n listings,\n original\n );\n\n return (\n \n \n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.AllInPrice,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.AutoPricing]: columnHelper.accessor(\n (data) => data?.listing?.isAutoPrc,\n {\n id: ListingTableColumnId.AutoPricing,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { editable } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n\n if (!original.listing) return null;\n\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n return (\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.AutoPricing,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.ProceedsFloor]: columnHelper.accessor(\n (data) => data?.listing?.procsFloor,\n {\n id: ListingTableColumnId.ProceedsFloor,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ row: { original }, getValue }) {\n const value = getValue();\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n const sellerFee = original.listing.mkpListings?.find(\n (m) => m.mkp === Marketplace.StubHub\n )?.sellerFee;\n\n return (\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.ProceedsFloor,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.ProceedsCeiling]: columnHelper.accessor(\n (data) => data?.listing?.procsCeil,\n {\n id: ListingTableColumnId.ProceedsCeiling,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n row: { original },\n getValue,\n column: { id: columnId },\n table,\n }) {\n const value = getValue();\n const { getUiCurrency } = useLocalizationContext();\n const currency = getUiCurrency(original?.listing?.currency);\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing || value == null) return null;\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n currencyCode: currency.code,\n currencyDecimalDigits: currency.dec,\n })}\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.ProceedsCeiling,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.WebsiteFloor]: columnHelper.accessor(\n (data) => data?.listing?.procsFloor,\n {\n id: ListingTableColumnId.WebsiteFloor,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ row: { original }, getValue }) {\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n const sellerFee = original.listing.mkpListings?.find(\n (m) => m.mkp === Marketplace.StubHub\n )?.sellerFee;\n\n return (\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.WebsiteFloor,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.WebsiteCeiling]: columnHelper.accessor(\n (data) => data?.listing?.procsCeil,\n {\n id: ListingTableColumnId.WebsiteCeiling,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n row: { original },\n getValue,\n column: { id: columnId },\n table,\n }) {\n const allInCeilingPrice = useAllInPriceFromListPrice(\n getValue(),\n original?.listing\n );\n const { getUiCurrency } = useLocalizationContext();\n const currency = getUiCurrency(original?.listing?.currency);\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing || allInCeilingPrice == null) return null;\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: allInCeilingPrice,\n currencyCode: currency.code,\n currencyDecimalDigits: currency.dec,\n })}\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.WebsiteCeiling,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.UndercutMode]: columnHelper.accessor(\n (data) => data?.listing?.undMode,\n {\n id: ListingTableColumnId.UndercutMode,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n getValue,\n table,\n }) {\n const { editable, userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n const undercutMode = getValue();\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n\n if (!original.listing) return null;\n\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n const UndercutModeIcon = undercutMode\n ? getUndercutModeIcon(undercutMode)\n : null;\n return (\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.UndercutMode,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.UndercutAbsoluteAmount]: columnHelper.accessor(\n (data) => data?.listing?.undAbsAmt,\n {\n id: ListingTableColumnId.UndercutAbsoluteAmount,\n header: function Cell() {\n const { getUiCurrency } = useLocalizationContext();\n const { loginContext } = useAppContext();\n const titleText = useContent(ContentId.UndercutAbsoluteAmount);\n\n const currencyCode = loginContext?.user?.activeAccount.currencyCode;\n const { sym } = getUiCurrency(currencyCode);\n\n return (\n \n \n {` (${sym})`}\n \n );\n },\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n getValue,\n table,\n }) {\n const value = getValue();\n const { getUiCurrency } = useLocalizationContext();\n const currency = getUiCurrency(original?.listing?.currency);\n\n const { editable, userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (\n !original.listing ||\n !original.listing?.isAutoPrc ||\n original.listing?.undMode == null\n )\n return null;\n\n const isPremium = value != null && value < 0;\n const formattedNumber =\n value != null\n ? applyNumberFormatting({\n inputNumber: Math.abs(value),\n precision: userDefinedPrecision,\n currencyCode: currency.code,\n currencyDecimalDigits: currency.dec,\n })\n : null;\n\n return (\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.UndercutAbsoluteAmount,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.UndercutRelativeAmount]: columnHelper.accessor(\n (data) => data?.listing?.undRelAmt,\n {\n id: ListingTableColumnId.UndercutRelativeAmount,\n header: function Cell() {\n const titleText = useContent(ContentId.UndercutRelativeAmount);\n\n return (\n \n \n {` (%)`}\n \n );\n },\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n getValue,\n table,\n }) {\n const value = getValue();\n\n const { editable, userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n\n if (\n !original.listing ||\n !original.listing?.isAutoPrc ||\n original.listing?.undMode == null\n )\n return null;\n\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n const isPremium = value != null && value < 0;\n const formattedNumber =\n value != null\n ? applyNumberFormatting({\n inputNumber: Math.abs(value),\n precision: userDefinedPrecision,\n isPercent: true,\n })\n : null;\n\n return (\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.UndercutRelativeAmount,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.UndercutNewPrice]: columnHelper.accessor(\n (data) => data?.listing?.undNewPrice,\n {\n id: ListingTableColumnId.UndercutNewPrice,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n row: { original },\n getValue,\n column: { id: columnId },\n table,\n }) {\n const allInMarketPrice = useAllInPriceFromListPrice(\n getValue(),\n original?.listing\n );\n const { getUiCurrency } = useLocalizationContext();\n const currency = getUiCurrency(original?.listing?.currency);\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing || allInMarketPrice == null) return null;\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: allInMarketPrice,\n currencyCode: currency.code,\n currencyDecimalDigits: currency.dec,\n })}\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.UndercutNewPrice,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.CompListingMode]: columnHelper.accessor(\n (data) => data?.listing?.compMode,\n {\n id: ListingTableColumnId.CompListingMode,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n getValue,\n table,\n }) {\n const { editable, userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n const compListingMode = getValue<\n AutoPricingCompListingMode | undefined\n >();\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n\n if (!original.listing) return null;\n\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n const CompListingModeIcon = compListingMode\n ? getCompListingModeIcon(compListingMode)\n : null;\n\n return (\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.CompListingMode,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.CompListingFloor]: columnHelper.accessor(\n (data) => data?.listing?.compFloor,\n {\n id: ListingTableColumnId.CompListingFloor,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n getValue,\n table,\n }) {\n const value = getValue();\n\n const { editable, userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n\n // We do not display comp listing floor if is listing group or comp listing modes not supporting it\n if (\n original.listing.isLtGrp ||\n original.isCompListing ||\n !original.listing.isFull ||\n (original.listing.compMode !==\n AutoPricingCompListingMode.QualityScore &&\n original.listing.compMode !==\n AutoPricingCompListingMode.SameSection)\n )\n return null;\n\n const formattedNumber = applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n });\n\n return (\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.CompListingFloor,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.CompListingCeiling]: columnHelper.accessor(\n (data) => data?.listing?.compCeil,\n {\n id: ListingTableColumnId.CompListingCeiling,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n getValue,\n table,\n }) {\n const value = getValue();\n\n const { editable, userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n original.isCompListing ||\n !original.listing.isFull ||\n (original.listing.compMode !==\n AutoPricingCompListingMode.QualityScore &&\n original.listing.compMode !==\n AutoPricingCompListingMode.SameSection)\n )\n return null;\n\n const formattedNumber = applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n });\n\n return (\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.CompListingCeiling,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.CompListingMinimumQuantity]: columnHelper.accessor(\n (data) => data?.listing?.compQtyScrAdjJson ?? '',\n {\n id: ListingTableColumnId.CompListingMinimumQuantity,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { editable } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n return (\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortGeneric,\n ListingTableColumnId.CompListingMinimumQuantity,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.CompListingExcludeFanInventory]:\n columnHelper.accessor((data) => data?.listing?.compExclFanInv ?? false, {\n id: ListingTableColumnId.CompListingExcludeFanInventory,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { editable } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n return (\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortGeneric,\n ListingTableColumnId.CompListingExcludeFanInventory,\n canSortGroup\n ),\n }),\n [ListingTableColumnId.OutlierMode]: columnHelper.accessor(\n (data) => data?.listing?.outMode ?? '',\n {\n id: ListingTableColumnId.OutlierMode,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { editable } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n return (\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortGeneric,\n ListingTableColumnId.OutlierMode,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.OutlierFiltering]: columnHelper.accessor(\n (data) => data?.listing?.outlStdDev ?? '',\n {\n id: ListingTableColumnId.OutlierFiltering,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n sortingFn: groupSortingWrapper(\n sortGeneric,\n ListingTableColumnId.OutlierFiltering,\n canSortGroup\n ),\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { editable } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n return (\n \n );\n },\n }\n ),\n [ListingTableColumnId.OutlierLimit]: columnHelper.accessor(\n (data) => data?.listing?.outKthLowestLim ?? '',\n {\n id: ListingTableColumnId.OutlierLimit,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n sortingFn: groupSortingWrapper(\n sortGeneric,\n ListingTableColumnId.OutlierLimit,\n canSortGroup\n ),\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { editable } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n return (\n \n );\n },\n }\n ),\n [ListingTableColumnId.OutlierSpacing]: columnHelper.accessor(\n (data) => data?.listing?.outKthLowestLimAbsSpc ?? '',\n {\n id: ListingTableColumnId.OutlierSpacing,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n sortingFn: groupSortingWrapper(\n sortGeneric,\n ListingTableColumnId.OutlierSpacing,\n canSortGroup\n ),\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { editable } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n return (\n \n );\n },\n }\n ),\n [ListingTableColumnId.CircuitBreakerMinCompListingCount]:\n columnHelper.accessor((data) => data?.listing?.cirBrMinCompCount ?? '', {\n id: ListingTableColumnId.CircuitBreakerMinCompListingCount,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n sortingFn: groupSortingWrapper(\n sortGeneric,\n ListingTableColumnId.CircuitBreakerMinCompListingCount,\n canSortGroup\n ),\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { editable } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n return (\n \n );\n },\n }),\n [ListingTableColumnId.CircuitBreakerVelocity]: columnHelper.accessor(\n (data) => data?.listing?.cirBrMinCompCount ?? '',\n {\n id: ListingTableColumnId.CircuitBreakerVelocity,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n sortingFn: groupSortingWrapper(\n sortGeneric,\n ListingTableColumnId.CircuitBreakerVelocity,\n canSortGroup\n ),\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { editable } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n return (\n \n );\n },\n }\n ),\n [ListingTableColumnId.CircuitBreakerVelocityHours]: columnHelper.accessor(\n (data) => data?.listing?.cirBrMinCompCount ?? '',\n {\n id: ListingTableColumnId.CircuitBreakerVelocityHours,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n sortingFn: groupSortingWrapper(\n sortGeneric,\n ListingTableColumnId.CircuitBreakerVelocityHours,\n canSortGroup\n ),\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { editable } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n // We do not display pricing for listing group or comp listing\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n original.isCompListing\n )\n return null;\n\n return (\n \n );\n },\n }\n ),\n [ListingTableColumnId.SeatingRow]: columnHelper.accessor(\n (data) => data?.listing?.seating?.row ?? '',\n {\n id: ListingTableColumnId.SeatingRow,\n header: () => (\n \n \n \n ),\n enableColumnFilter: true,\n filterFn:\n filterStringMultiSelect as FilterFnOption,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n sortingFn: groupSortingWrapper(\n sortGeneric,\n ListingTableColumnId.SeatingRow,\n canSortGroup\n ),\n cell: ({ row: { original }, getValue }) => {\n const value = getValue();\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n // We do not display seating info for listing group\n if (original.listing.isLtGrp) return null;\n\n return {value};\n },\n }\n ),\n [ListingTableColumnId.SeatingSeats]: columnHelper.accessor(\n (data) => data?.listing?.seating,\n {\n id: ListingTableColumnId.SeatingSeats,\n header: () => (\n \n \n \n ),\n enableColumnFilter: true,\n filterFn: filterSeatRangeFn as FilterFnOption,\n meta: {\n columnFilterVariant: 'seatRange',\n },\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n sortingFn: groupSortingWrapper(\n sortSeatingSeatsForTable,\n ListingTableColumnId.SeatingSeats,\n canSortGroup\n ),\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n // We do not display seating info for listing group\n if (original.listing.isLtGrp) return null;\n\n const { orgSeatFr, orgSeatTo, seating, availQty } =\n original?.listing ?? {};\n const { seatFr, seatTo } = seating ?? {};\n\n return (\n \n \n \n );\n },\n }\n ),\n [ListingTableColumnId.AutoPricingResultType]: columnHelper.accessor(\n (data) => data?.listing?.autoPrcResult,\n {\n id: ListingTableColumnId.AutoPricingResultType,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n sortingFn: groupSortingWrapper(\n sortGeneric,\n ListingTableColumnId.AutoPricingResultType,\n canSortGroup\n ),\n cell: ({ row: { original }, getValue }) => {\n const value = getValue();\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n // We do not display pricing result type info for listing group or comp listing\n if (original.listing.isLtGrp || original.isCompListing) return null;\n\n return (\n \n \n \n );\n },\n }\n ),\n [ListingTableColumnId.LastPriceUpdatedDate]: columnHelper.accessor(\n (data) => data?.listing?.lastPrcUpdOn ?? null,\n {\n id: ListingTableColumnId.LastPriceUpdatedDate,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n sortingFn: groupSortingWrapper(\n sortGeneric,\n ListingTableColumnId.LastPriceUpdatedDate,\n canSortGroup\n ),\n cell: function Cell({\n row: { original },\n getValue,\n column: { id: columnId },\n table,\n }) {\n const value = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_MonthDD_Time } =\n useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n // We do not display last price update date info for listing group or comp listing\n if (original.listing.isLtGrp || original.isCompListing) return null;\n\n return (\n \n \n \n );\n },\n }\n ),\n [ListingTableColumnId.PurchaseCreatedBy]: columnHelper.accessor(\n (data) => [data?.listing?.insertBy],\n {\n id: ListingTableColumnId.PurchaseCreatedBy,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const { allActiveUserInfos } = useSellerAccountContext();\n\n const sellerUserIds = getValue();\n\n const displayNamesFormatted = useMemo(\n () =>\n sellerUserIds\n ? [...new Set(sellerUserIds)]\n .map(\n (sellerUserId) =>\n allActiveUserInfos?.[sellerUserId]?.displayName\n )\n .filter((name) => name != null)\n .join(', ')\n : null,\n [allActiveUserInfos, sellerUserIds]\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n if (original.listing.isLtGrp || original.isCompListing) return null;\n\n return (\n {displayNamesFormatted}\n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.PurchaseCreatedBy,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.PurchasedBy]: columnHelper.accessor(\n (data) => data?.listing?.poBys,\n {\n id: ListingTableColumnId.PurchasedBy,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const { allActiveUserInfos } = useSellerAccountContext();\n\n const sellerUserIds = getValue();\n\n const displayNamesFormatted = useMemo(\n () =>\n sellerUserIds\n ? [...new Set(sellerUserIds)]\n .map(\n (sellerUserId) =>\n allActiveUserInfos?.[sellerUserId]?.displayName\n )\n .filter((name) => name != null)\n .join(', ')\n : null,\n [allActiveUserInfos, sellerUserIds]\n );\n\n if (\n !original ||\n (!original.listing && original?.isLtGrp) ||\n (loadedBySection &&\n !original?.isLtGrp &&\n !original?.isCompListing &&\n !original.listing?.dataIsLoaded?.[\n ListingDetailDataField.Purchase\n ])\n ) {\n return (\n \n );\n }\n if (!original.listing) return null;\n if (original.listing.isLtGrp || original.isCompListing) return null;\n\n return (\n {displayNamesFormatted}\n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.PurchasedBy,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.PurchaseDate]: columnHelper.accessor(\n (data) => {\n return data?.listing?.poDate ?? null;\n },\n {\n id: ListingTableColumnId.PurchaseDate,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n column: { id: columnId },\n row: { original },\n table,\n }) {\n const purchaseDates = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_MonthDD_Time } =\n useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (\n !original ||\n (!original.listing && original?.isLtGrp) ||\n (loadedBySection &&\n !original?.isLtGrp &&\n !original?.isCompListing &&\n !original.listing?.dataIsLoaded?.[\n ListingDetailDataField.Purchase\n ])\n ) {\n return (\n \n );\n }\n if (!original.listing) return null;\n if (original.listing.isLtGrp) return null;\n\n return (\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.PurchaseDate,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.WastedCost]: columnHelper.accessor(\n (data) => {\n if (!data || !data.listing) return null;\n return (\n (data.listing.wastedQty ?? 0) *\n (data.listing.unitCst?.amt || data.listing.faceValue?.amt || 0)\n );\n },\n {\n id: ListingTableColumnId.WastedCost,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n getValue,\n table,\n }) {\n const { getUiCurrency } = useLocalizationContext();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n // We do not display pricing result type info for listing group or comp listing\n if (original.listing.isLtGrp || original.isCompListing) return null;\n\n const value = getValue();\n const currency = getUiCurrency(original.listing.currency);\n\n return (\n \n {typeof value === 'number' ? (\n applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n currencyCode: currency.code,\n currencyDecimalDigits: currency.dec,\n })\n ) : (\n \n )}\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.WastedCost,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.WastedTickets]: columnHelper.accessor(\n (data) => {\n return data?.listing?.wastedQty ?? 0;\n },\n {\n id: ListingTableColumnId.WastedTickets,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n getValue,\n table,\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n if (!original.listing) return null;\n\n // We do not display for comp listing\n if (original.isCompListing) return null;\n\n const value = getValue();\n\n return (\n \n {typeof value === 'number' ? (\n applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n })\n ) : (\n \n )}\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.WastedTickets,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.Actions]: columnHelper.accessor(\n // We don't actually use this, but this column is to be sorted by broad-casting state and quantity\n // And we need accessorFn to get the sorting activated\n (data) => data?.listing?.availQty,\n {\n id: ListingTableColumnId.Actions,\n enableSorting: false,\n enableResizing: true,\n header: function Cell() {\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n\n if (hasTablePinActionColumnFeature) {\n return null;\n }\n\n return (\n \n \n \n );\n },\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n sortingFn: groupSortingWrapper((r1, r2) => {\n if (r1.original?.listing?.isLtGrp) {\n if (!r2.original?.listing?.isLtGrp) {\n // listing groups sort first (sort r1 before r2)\n // unless this is a sub-level which then listing-group sort last\n return r2.original?.listing?.ltGrpId ===\n r1.original?.listing?.ltGrpId\n ? 1\n : -1;\n }\n }\n\n if (r2.original?.listing?.isLtGrp) {\n // listing groups sort first (sort r1 after r2)\n // unless this is a sub-level which then listing-group sort last\n return r2.original?.listing?.ltGrpId ===\n r1.original?.listing?.ltGrpId\n ? -1\n : 1;\n }\n\n const a = r1.original?.listing;\n const b = r2.original?.listing;\n const aQuantity = a?.availQty ?? 0;\n const bQuantity = b?.availQty ?? 0;\n if (aQuantity <= 0 && bQuantity >= 0) {\n return 1;\n } else if (aQuantity >= 0 && bQuantity <= 0) {\n return -1;\n }\n return (a?.ltGrpPrior ?? -1) - (b?.ltGrpPrior ?? -1);\n }),\n cell: ({\n row: { parentId, original, depth, getParentRows },\n table,\n }) => {\n if (!original || (!original.listing && original?.isLtGrp)) {\n return (\n \n );\n }\n\n if (!original.listing || original.isCompListing) return null;\n\n const parentRows =\n depth > 0 && parentId && table.getRowModel().rowsById[parentId]\n ? getParentRows()\n : undefined;\n\n if (depth === 0 && original.listing.ltGrpId === FAKE_SOLD_GROUP_ID) {\n return null;\n }\n\n const linkOnly =\n table.options.meta?.formatOptionOverrides?.[\n ListingTableColumnId.Actions\n ] === FormatOption.Actions_LinkOnly;\n\n return (\n 0}\n disabled={parentRows?.some(\n (pr) =>\n (pr.original?.listing as ListingGroup)?.isLockedFromEdits\n )}\n />\n );\n },\n }\n ),\n [ListingTableColumnId.PurchaseId]: columnHelper.accessor(\n (data) => data?.listing?.poId,\n {\n id: ListingTableColumnId.PurchaseId,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const onViewClick = useCallback(async () => {\n if (!original || !original.listing?.poId) {\n return;\n }\n }, [original]);\n\n if (\n !original ||\n !original.listing ||\n (loadedBySection &&\n !original?.isLtGrp &&\n !original?.isCompListing &&\n !original.listing?.dataIsLoaded?.[\n ListingDetailDataField.Purchase\n ])\n ) {\n return (\n \n );\n }\n\n // We do not display for comp listing\n if (original.isCompListing || !original.listing.poOrderId)\n return null;\n\n return (\n \n \n \n \n \n {original.listing.poOrderId}\n \n \n \n \n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.PurchaseId,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.VendorAccount]: columnHelper.accessor(\n (data) => data?.listing?.poVendAccEmail ?? '',\n {\n id: ListingTableColumnId.VendorAccount,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n\n cell: function Cell({ getValue, row: { original } }) {\n if (\n !original ||\n !original.listing ||\n (loadedBySection &&\n !original?.isLtGrp &&\n !original.listing?.dataIsLoaded?.[\n ListingDetailDataField.Purchase\n ])\n ) {\n return (\n \n );\n }\n\n // We do not display for comp listing\n if (original.isCompListing) return null;\n\n return (\n {getValue() as string}\n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.VendorAccount,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.AutoFulfill]: columnHelper.accessor(\n (data) => data?.listing?.isNoFulfill ?? '',\n {\n id: ListingTableColumnId.AutoFulfill,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n\n cell: function Cell({ getValue, row: { original } }) {\n if (!original || !original.listing) {\n return (\n \n );\n }\n\n // We do not display for comp listing or listing-group\n if (original.isLtGrp || original.isCompListing) return null;\n\n return (\n \n {/* AutoFulfill is negative of IsNoFulfill */}\n \n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.AutoFulfill,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.MarketplaceVisibility]: columnHelper.accessor(\n (data) => data?.listing?.mkpVis ?? '0',\n {\n id: ListingTableColumnId.MarketplaceVisibility,\n header: function Cell() {\n const titleText = useContent(ContentId.MarketplaceVisibility);\n\n return (\n \n \n {` (%)`}\n \n );\n },\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n\n cell: function Cell({\n row: { original },\n column: { id: columnId },\n getValue,\n table,\n }) {\n const value = getValue();\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (!original || !original.listing) {\n return (\n \n );\n }\n\n // We do not display for comp listing\n if (original.isCompListing) return null;\n\n const formattedNumber =\n value != null\n ? applyNumberFormatting({\n inputNumber: Math.abs(value / 100),\n precision: userDefinedPrecision,\n isPercent: true,\n })\n : null;\n\n return {formattedNumber};\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.MarketplaceVisibility,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.AbsoluteRankPremium]: columnHelper.accessor(\n (data) => data?.listing?.ltGrpUndercut,\n {\n id: ListingTableColumnId.AbsoluteRankPremium,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n\n cell: function Cell({\n row: { original },\n getValue,\n column: { id: columnId },\n table,\n }) {\n const value = getValue<\n ListingGroupUndercutSetting | null | undefined\n >();\n\n const { getUiCurrency } = useLocalizationContext();\n const currency = getUiCurrency(original?.listing?.currency);\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n const absoluteRankPremium = value?.actRankUndAbsAmt ?? undefined;\n\n if (!original || !original.listing) {\n return (\n \n );\n }\n\n if (\n !original.listing ||\n absoluteRankPremium === undefined ||\n original.listing.isLtGrp ||\n !original.listing.isFull\n )\n return null;\n\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: absoluteRankPremium,\n currencyCode: currency.code,\n currencyDecimalDigits: currency.dec,\n })}\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.AbsoluteRankPremium,\n canSortGroup\n ),\n }\n ),\n [ListingTableColumnId.RelativeRankPremium]: columnHelper.accessor(\n (data) => data?.listing?.ltGrpUndercut,\n {\n id: ListingTableColumnId.RelativeRankPremium,\n header: function Cell() {\n const titleText = useContent(ContentId.UndercutRelativeAmount);\n\n return (\n \n \n {` (%)`}\n \n );\n },\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n\n cell: function Cell({\n row: { original },\n getValue,\n column: { id: columnId },\n table,\n }) {\n const value = getValue<\n ListingGroupUndercutSetting | null | undefined\n >();\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n const relativeRankPremium = value?.actRankUndRelAmt ?? undefined;\n\n if (!original || !original.listing) {\n return (\n \n );\n }\n\n if (\n original.listing.isLtGrp ||\n !original.listing.isFull ||\n relativeRankPremium === undefined ||\n !original.listing\n ) {\n return null;\n }\n\n return (\n \n {applyNumberFormatting({\n inputNumber: relativeRankPremium,\n precision: userDefinedPrecision,\n isPercent: true,\n })}\n \n );\n },\n sortingFn: groupSortingWrapper(\n sortingFns.basic,\n ListingTableColumnId.RelativeRankPremium,\n canSortGroup\n ),\n }\n ),\n } as const;\n};\n","import {\n DndContext,\n DragEndEvent,\n DragOverlay,\n DragStartEvent,\n PointerSensor,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport {\n ColumnDef,\n ExpandedState,\n functionalUpdate,\n getExpandedRowModel,\n Row,\n RowSelectionState,\n SortingState,\n TableOptions,\n Updater,\n} from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport { isEmpty } from 'lodash-es';\nimport { useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { EventAccordionItemBodyComponentType } from 'src/components/Accordions';\nimport { shiftSelect } from 'src/components/Events/EventPage/EventPage.css';\nimport { useSingleTableShortcutSelection } from 'src/components/Events/EventPage/hooks/useSingleTableShortcutSelection';\nimport { ListingDisplay } from 'src/components/Listings/ListingDisplay';\nimport { createFakeListingGroup } from 'src/components/Listings/listingUtils';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useActiveSortTableColumnContext } from 'src/contexts/ActiveSortTableColumnContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCollapsableViewContext } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { ColumnResizingContextProvider } from 'src/contexts/ColumnResizingContext/ColumnResizingContext';\nimport {\n Content,\n FormatContent,\n useContent,\n} from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { FocusContext } from 'src/contexts/InputPriceFocusContext/FocusContext.types';\nimport { useInputPriceFocusContext } from 'src/contexts/InputPriceFocusContext/InputPriceFocusContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport {\n MultiSelectScope,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { useClearShiftSelectionOnSortingChange } from 'src/contexts/MultiSelectionContext/useClearShiftSelectionOnSortingChange';\nimport { Stack } from 'src/core/ui';\nimport { useSortListingTableSeatingColumn } from 'src/hooks/useSortListingTableSeatingColumn';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { FormatOption, FormatOptionEntries } from 'src/modals/EditTableColumns';\nimport {\n flattenListingGroup,\n sortGroupType,\n} from 'src/modals/GroupListings/components/groupingUtils';\nimport { GroupIdNameMap } from 'src/modals/MergeListings/utils';\nimport {\n inventoryEventDetailsTableCollapsed,\n listingTableNoVirtuosoWrapper,\n} from 'src/tables/ListingTable/ListingTable.css';\nimport { NoData, Table } from 'src/tables/Table';\nimport {\n defaultListingColumnsConfig,\n filterColumnsByFeatures,\n getListingColumnConfigById,\n} from 'src/utils/columns/columnUtils';\nimport { LISTING_MAIN_COLUMNS } from 'src/utils/columns/inventory/inventoryColumnUtils.constants';\nimport { ListingTableColumnId } from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { filterCustomColumnsForListing } from 'src/utils/columns/inventory/inventoryCustomColumnUtils';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { generateShimmeringRows } from 'src/utils/dataTableUtils';\nimport { getListingDetailsModalConfigWithDeepLink } from 'src/utils/inventoryUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { hasFeatures } from 'src/utils/userUtils';\nimport { SomethingWentWrong } from 'src/views';\nimport {\n ActionOutboxEntityType,\n Feature,\n GroupType,\n Listing,\n ListingClient,\n ListingDetailDataField,\n ListingGroup,\n ListingStatus,\n SwapListingGroupInput,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { usePaginationSettings } from '../Table/hooks/usePaginationSettings';\nimport { RowWrapper } from '../Table/Table.types';\nimport { ListingPricingForm } from './configs/ListingPriceForm';\nimport {\n customColumnDef,\n getListingTableColumnConfigs,\n tagColumnDef,\n} from './configs/ListingTableColumnsConfig';\nimport * as styles from './ListingTable.css';\nimport { ListingWithEvent } from './ListingTable.types';\n\nexport type ListingTableProps = EventAccordionItemBodyComponentType & {\n getListingNotEligibleForSelection?: (\n listings: Listing[] | null\n ) => { listing: Listing; ineligibleReason: string | undefined }[] | undefined;\n showMainColumnsOnly?: boolean;\n hideUnselectableListings?: boolean;\n showUnselectableListingsOnly?: boolean;\n disablePagination?: boolean;\n compListings?: Listing[];\n getListingTicketClassColor?: (listing: Listing) => string | undefined;\n listingGroupMap?: GroupIdNameMap;\n isSideTable?: boolean;\n alwaysShowCheckbox?: boolean;\n showSelectAllOnHeader?: boolean;\n};\n\nexport const PAGE_SIZE = 10;\n\nexport const ListingTable = ({\n event,\n entities: listings,\n compListings,\n entityCount: listingCount,\n ungroupedListingCount,\n listingGroupCount,\n getDataFail,\n selectedIds,\n selectionMode: defaultSelectionMode,\n onItemSelectionsChanged,\n getListingNotEligibleForSelection,\n hideUnselectableListings,\n showUnselectableListingsOnly,\n showMainColumnsOnly,\n disablePagination,\n onMount,\n onUnmount,\n initState,\n useVirtuoso,\n onVirtuosoTableScroll,\n getListingTicketClassColor,\n tableWithOuterPadding,\n useTableNavKeys = false,\n listingGroupMap,\n isSideTable,\n alwaysShowCheckbox,\n showSelectAllOnHeader,\n enableColumnFilters,\n}: ListingTableProps) => {\n const groupId = event.viagVirtualId;\n const { appContext, loginContext, activeAccountWebClientConfig } =\n useAppContext();\n const listingText = useContent(ContentId.Listings);\n const isItemsLoading =\n listingCount > 0 && (listings == null || listings.length == 0);\n const hasSortListingsInGroupFeature = useUserHasFeature(\n Feature.SortListingsInGroup\n );\n const hasSectionalLoadInListingTableFeature = useUserHasFeature(\n Feature.SectionalLoadInListingTable\n );\n\n const hasCleanupWhiteSpaceFeature = useUserHasFeature(\n Feature.CleanupWhiteSpace\n );\n\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const { activeSortTableColumn, setActiveSortTableColumn } =\n useActiveSortTableColumnContext();\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n const hasReorderListingInGroupFeature = useUserHasFeature(\n Feature.ReorderListingInGroup\n );\n\n const { setActivePosEntity } = useActivePosEntityContext();\n const { setModal } = useContext(ModalContext);\n const {\n selectionMode: selectionModeOverride,\n setGroupItems,\n getSelection,\n getGroupToggleState,\n updateGroupFilteredIds,\n } = useMultiSelectionContext();\n\n const selectionMode = selectionModeOverride ?? defaultSelectionMode;\n\n const listingSelection = getSelection(event.viagVirtualId);\n const soldGroupName = useContent(ContentId.Sold);\n const isGroupSoldListingsEnabled = useUserHasFeature(\n Feature.GroupSoldListings\n );\n\n const [sorting, setSorting] = useState(\n activeSortTableColumn ||\n initState?.sorting || [\n { id: 'actions', desc: false },\n { id: 'seating', desc: false },\n ]\n );\n useClearShiftSelectionOnSortingChange({ sortingState: sorting });\n const { showErrorDialog } = useErrorBoundaryContext();\n const { updateExpandedListItems } = useCatalogDataContext();\n const [expandedState, setExpandedState] = useState(\n initState?.expanded ?? {}\n );\n\n const { isEnabled, isCollapsedView } = useCollapsableViewContext();\n\n // This is to pre-expand all the groups on first-load\n useEffect(() => {\n if (\n Object.keys(expandedState).length === 0 &&\n listings?.some((l) => l.isLtGrp)\n ) {\n setExpandedState(\n listings?.reduce(\n (r, l) => {\n if (l.isLtGrp) {\n r[l.id.toString()] = true;\n (l as ListingGroup).groupItems.forEach((i) => {\n if ((i as ListingGroup).groupType === GroupType.Active) {\n r[i.id.toString()] = true;\n }\n });\n }\n\n return r;\n },\n {} as Record\n ) ?? {}\n );\n }\n }, [expandedState, listings]);\n\n // ListingTable don't always have these context wrappers - remember not to assume these are NOT NULL\n const {\n setDisabledFocusContexts,\n disabledFocusContexts,\n inputPriceFocusContext,\n } = useInputPriceFocusContext();\n\n const currentPage = useMemo(() => {\n return inputPriceFocusContext &&\n inputPriceFocusContext.viagVirtualId === event.viagVirtualId &&\n inputPriceFocusContext.rowIndex < listingCount\n ? inputPriceFocusContext.currentPageIndex\n : -1;\n }, [inputPriceFocusContext, event.viagVirtualId, listingCount]);\n\n const data = useMemo<(ListingWithEvent | null)[]>(() => {\n const listingsWithIneligibleReasons =\n getListingNotEligibleForSelection?.(listings) ??\n listings?.map((l) => ({\n listing: l,\n ineligibleReason: undefined,\n }));\n\n const listingsMapped: ListingWithEvent[] | undefined =\n listingsWithIneligibleReasons?.map((l) => ({\n event,\n listing: l.listing,\n selectionDisabledReason: l.ineligibleReason,\n ticketClassColor: getListingTicketClassColor?.(l.listing),\n isLtGrp: l.listing.isLtGrp,\n ltGroupName:\n listingGroupMap && l.listing.ltGrpId\n ? listingGroupMap[l.listing.ltGrpId]\n : undefined,\n }));\n\n // Add comp listings to the list\n if (compListings != null) {\n // Only add when own listings are done loading\n listingsMapped?.push(\n ...compListings.map((l) => ({\n event,\n listing: l,\n selectionDisabledReason: undefined,\n isCompListing: true,\n ticketClassColor: getListingTicketClassColor?.(l),\n }))\n );\n }\n let result = listingsMapped?.filter((l) =>\n showUnselectableListingsOnly\n ? Boolean(l.selectionDisabledReason)\n : hideUnselectableListings\n ? !l.selectionDisabledReason\n : true\n );\n\n if (isGroupSoldListingsEnabled) {\n const ungroupedSoldListings = result?.filter(\n (listing) =>\n !!listing &&\n !listing.isLtGrp &&\n !listing.listing?.ltGrpId &&\n listing?.listing?.status === ListingStatus.FullySold\n );\n\n if (ungroupedSoldListings?.length) {\n const fakeListingGroup = createFakeListingGroup(\n ungroupedSoldListings,\n soldGroupName\n );\n if (fakeListingGroup) {\n result = result ?? [];\n result = [\n ...result.filter((d) => !ungroupedSoldListings.includes(d)),\n fakeListingGroup,\n ];\n }\n }\n }\n\n return result?.length\n ? result\n : result == null || isItemsLoading\n ? (generateShimmeringRows(\n ungroupedListingCount ?? 1,\n listingGroupCount ?? 0\n ) as (ListingWithEvent | null)[])\n : result;\n }, [\n getListingNotEligibleForSelection,\n listings,\n compListings,\n isGroupSoldListingsEnabled,\n isItemsLoading,\n ungroupedListingCount,\n listingGroupCount,\n event,\n getListingTicketClassColor,\n listingGroupMap,\n showUnselectableListingsOnly,\n hideUnselectableListings,\n soldGroupName,\n ]);\n\n const { pagination, setPagination } = usePaginationSettings(\n data.length,\n currentPage,\n PAGE_SIZE,\n disablePagination,\n initState\n );\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n // Clear selections when selection mode changes\n useEffect(() => {\n onItemSelectionsChanged?.([]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectionMode?.mode]);\n\n const rowSelection = useMemo(() => {\n return selectionMode == null\n ? {}\n : data\n ?.filter((d) => !d?.isCompListing)\n .flatMap((d) => [\n d?.listing,\n ...((d?.listing as ListingGroup)?.groupItems ?? []),\n ...((d?.listing as ListingGroup)?.groupItems ?? []).flatMap(\n (lg) => (lg as ListingGroup).groupItems ?? []\n ),\n ])\n ?.reduce>((result, listing) => {\n if (listing?.id) {\n result[listing.id] =\n getGroupToggleState(event.viagVirtualId).isGroupSelected &&\n !listingSelection.items.itemIds.length\n ? true\n : ((listingSelection?.items.itemIds ?? selectedIds)?.includes(\n String(listing?.id)\n ) ?? false);\n }\n return result;\n }, {});\n }, [\n data,\n event.viagVirtualId,\n getGroupToggleState,\n listingSelection.items.itemIds,\n selectedIds,\n selectionMode,\n ]);\n\n const {\n lastSelectedRowRefIndex,\n allowShiftClickSelection,\n isShiftKeyPressed,\n isCtrlOrCmdKeyPressed,\n updateSelectionForRowAndSubRows,\n } = useSingleTableShortcutSelection({ isSideTable });\n\n const onRowSelectionChange = useCallback(\n (updater: Updater) => {\n const newSelections =\n typeof updater === 'function' ? updater(rowSelection) : updater;\n const newSelectedIds = Object.keys(newSelections).filter(\n (r) => newSelections[r] === true\n );\n if (selectionMode?.mode === 'singleItem' && !allowShiftClickSelection) {\n newSelectedIds.forEach((id) => {\n if (rowSelection[id] && newSelections[id]) {\n // if both of these are the same value and is true, we need to set it to false\n newSelections[id] = false;\n }\n });\n }\n setGroupItems(groupId, newSelections);\n onItemSelectionsChanged?.(\n newSelectedIds\n .filter((id) => newSelections[id])\n .map((id) => parseInt(id))\n );\n },\n [\n rowSelection,\n selectionMode?.mode,\n allowShiftClickSelection,\n setGroupItems,\n groupId,\n onItemSelectionsChanged,\n ]\n );\n\n const {\n value: storedInventoryColumnOrderSetting = defaultListingColumnsConfig,\n } = useServerUserSetting({\n id: isSideTable\n ? UserSetting.InventorySideTableColumnOrder\n : UserSetting.InventoryColumnOrder,\n });\n const { value: storedInventoryColumnNumberPrecisions = {} } =\n useServerUserSetting({\n id: isSideTable\n ? UserSetting.InventorySideTableColumnNumberPrecision\n : UserSetting.InventoryColumnNumberPrecision,\n });\n\n const { value: storedInventoryColumnsEnabledSetting } = useServerUserSetting<\n string[]\n >({\n id: isSideTable\n ? UserSetting.InventorySideTableColumnsEnabled\n : UserSetting.InventoryColumnsEnabled,\n });\n\n const { value: customListingColumns = [] } = useServerUserSetting<\n CustomListingColumn[]\n >({\n id: UserSetting.InventoryCustomColumns,\n });\n const { tagsMetadata, tagsMetadataNumeric } = useTagsForEntityType(\n ActionOutboxEntityType.Listing,\n true\n );\n\n const customListingColumnsFiltered = filterCustomColumnsForListing(\n customListingColumns,\n tagsMetadataNumeric\n );\n\n const hasGroup = useMemo(\n () => listings?.find((l) => l.isLtGrp) != null,\n [listings]\n );\n\n const allColumnConfigs = useMemo(\n () =>\n getListingTableColumnConfigs(\n hasSortListingsInGroupFeature,\n hasGroup,\n hasSectionalLoadInListingTableFeature,\n hasCleanupWhiteSpaceFeature\n ),\n [\n hasGroup,\n hasSectionalLoadInListingTableFeature,\n hasSortListingsInGroupFeature,\n hasCleanupWhiteSpaceFeature,\n ]\n );\n\n const showCheckbox = useMemo(\n () =>\n alwaysShowCheckbox ||\n selectionMode?.mode === MultiSelectScope.AllGroups ||\n listingSelection.isSingleGroupMultiSelect,\n [\n alwaysShowCheckbox,\n listingSelection.isSingleGroupMultiSelect,\n selectionMode?.mode,\n ]\n );\n\n const displayedColumnsConfig = useMemo(() => {\n if (showMainColumnsOnly) {\n return LISTING_MAIN_COLUMNS.filter((c) => {\n if (c === ListingTableColumnId.Checkbox) {\n return showCheckbox;\n }\n // Only show Seating Row and Seats if Seating is set to Section Only\n if (\n c === ListingTableColumnId.SeatingRow ||\n c === ListingTableColumnId.SeatingSeats\n ) {\n return (\n storedInventoryColumnNumberPrecisions[\n ListingTableColumnId.Seating\n ] === FormatOption.Seating_SectionOnly\n );\n }\n return true;\n }).reduce[]>((acc, columnId) => {\n const columnConfig = Object.values(allColumnConfigs).find(\n (column) => column.id === columnId\n );\n if (columnConfig) {\n acc.push(columnConfig as ColumnDef);\n }\n return acc;\n }, []);\n }\n\n const inventoryColumnOrder = storedInventoryColumnOrderSetting.filter(\n // If storedInventoryColumnsEnabledSetting has never been set, default to true\n (c) => storedInventoryColumnsEnabledSetting?.includes(c) ?? true\n );\n\n const columns = new Set([\n // Add unconfigurable columns first\n ...Object.values(allColumnConfigs)\n .filter((column) => {\n const columnDef = getListingColumnConfigById(\n column.id as ListingTableColumnId\n ).personalization;\n\n const hasFeatureForColumn =\n columnDef.requiredFeatures.length === 0 ||\n hasFeatures(\n loginContext?.user,\n appContext?.features,\n columnDef.requiredFeatures\n );\n\n let isConfigurable = columnDef.isConfigurable;\n if (\n !hasTablePinActionColumnFeature &&\n column.id === ListingTableColumnId.Actions\n ) {\n isConfigurable = true;\n }\n\n return !isConfigurable && hasFeatureForColumn;\n })\n .map((item) => item.id as ListingTableColumnId),\n // Add user defined columns next\n ...filterColumnsByFeatures(\n inventoryColumnOrder,\n SectionType.Listings,\n customListingColumnsFiltered,\n loginContext?.user,\n appContext?.features,\n tagsMetadata ?? []\n ),\n ]);\n\n if (showCheckbox) {\n if (!alwaysShowCheckbox) {\n columns.delete(ListingTableColumnId.Actions);\n }\n } else {\n columns.delete(ListingTableColumnId.Checkbox);\n }\n\n return Array.from(columns).reduce[]>(\n (acc, columnId) => {\n if (tagsMetadata?.find((t) => t.key === columnId)) {\n acc.push(tagColumnDef(columnId));\n } else if (\n customListingColumnsFiltered.find((c) => c.id === columnId)\n ) {\n acc.push(\n customColumnDef(\n columnId,\n customListingColumnsFiltered.find((c) => c.id === columnId)\n ?.formula\n )\n );\n } else {\n const columnConfig = Object.values(allColumnConfigs).find(\n (column) => column.id === columnId\n );\n if (columnConfig) {\n acc.push(columnConfig as ColumnDef);\n }\n }\n\n return acc;\n },\n []\n );\n }, [\n showMainColumnsOnly,\n storedInventoryColumnOrderSetting,\n allColumnConfigs,\n customListingColumnsFiltered,\n loginContext?.user,\n appContext?.features,\n tagsMetadata,\n showCheckbox,\n storedInventoryColumnNumberPrecisions,\n storedInventoryColumnsEnabledSetting,\n hasTablePinActionColumnFeature,\n alwaysShowCheckbox,\n ]);\n\n const onRowShiftSelect = useCallback(\n (\n tableRows: Row[] | undefined,\n row: Row,\n index: number\n ) => {\n if (!tableRows || !allowShiftClickSelection || showCheckbox) {\n return;\n }\n\n const rowId = row.id.toString();\n const newIsSelected = !rowSelection[rowId];\n\n if (isShiftKeyPressed && lastSelectedRowRefIndex.current !== null) {\n const start = Math.min(lastSelectedRowRefIndex.current, index);\n const end = Math.max(lastSelectedRowRefIndex.current, index);\n\n const newRowSelection = { ...rowSelection };\n\n for (let i = start; i <= end; i++) {\n const row = tableRows[i];\n if (row) {\n updateSelectionForRowAndSubRows({\n row,\n rowId: row.id.toString(),\n newIsSelected,\n newRowSelection,\n });\n }\n }\n\n lastSelectedRowRefIndex.current = index;\n onRowSelectionChange(newRowSelection);\n } else if (isCtrlOrCmdKeyPressed) {\n const newRowSelection = { ...rowSelection };\n newRowSelection[rowId] = newIsSelected;\n updateSelectionForRowAndSubRows({\n row,\n rowId,\n newIsSelected,\n newRowSelection,\n });\n lastSelectedRowRefIndex.current = index;\n onRowSelectionChange(newRowSelection);\n } else {\n // No modifier key pressed, reset selection\n const newRowSelection = {};\n\n updateSelectionForRowAndSubRows({\n row,\n rowId,\n newIsSelected,\n newRowSelection,\n });\n\n lastSelectedRowRefIndex.current = index;\n onRowSelectionChange(newRowSelection);\n }\n },\n [\n allowShiftClickSelection,\n isCtrlOrCmdKeyPressed,\n isShiftKeyPressed,\n lastSelectedRowRefIndex,\n onRowSelectionChange,\n rowSelection,\n showCheckbox,\n updateSelectionForRowAndSubRows,\n ]\n );\n\n const sectionType = isSideTable\n ? SectionType.InventorySideTable\n : SectionType.Listings;\n\n const seatingColumnSorting = useSortListingTableSeatingColumn(sectionType);\n\n const options: Partial> = useMemo(\n () => ({\n data,\n columns: displayedColumnsConfig,\n state: {\n pagination,\n sorting,\n rowSelection,\n expanded: expandedState,\n columnVisibility: {\n [ListingTableColumnId.TicketClassColor]:\n getListingTicketClassColor != null,\n },\n columnPinning: {\n right: hasTablePinActionColumnFeature\n ? [ListingTableColumnId.Actions]\n : undefined,\n },\n },\n meta: {\n sectionType,\n showSelectAllCheckbox: showSelectAllOnHeader,\n },\n\n getRowId: (originalRow: ListingWithEvent | null, index: number) => {\n return (originalRow?.listing?.id ?? index).toString();\n },\n onPaginationChange: setPagination,\n onSortingChange: (sortingUpdaterFn) => {\n const newSortVal = functionalUpdate(sortingUpdaterFn, sorting);\n setSorting(newSortVal);\n setActiveSortTableColumn(newSortVal);\n },\n onExpandedChange: (newState) => {\n setExpandedState(newState);\n },\n getSubRows: (originalRow) => {\n if (!originalRow?.listing || !originalRow.listing.isLtGrp) {\n return [];\n }\n const listingGroup = originalRow.listing as ListingGroup;\n return (\n [...(listingGroup.groupItems ?? [])]\n .toSorted((a, b) => {\n if (a.isLtGrp && b.isLtGrp) {\n return sortGroupType(\n (a as ListingGroup).groupType,\n (b as ListingGroup).groupType\n );\n } else if (a.isLtGrp || b.isLtGrp) {\n return a.isLtGrp ? -1 : 1; // listing group sort first\n }\n\n return (a.ltGrpPrior ?? -1) - (b.ltGrpPrior ?? -1);\n })\n ?.map(\n (l, i) =>\n ({\n ...originalRow,\n rowIndex: i,\n listing: l,\n isLtGrp: l.isLtGrp,\n }) as ListingWithEvent\n ) ?? []\n );\n },\n getRowCanExpand: (originalRow) => {\n return Boolean(\n originalRow.original?.listing?.isLtGrp &&\n (originalRow.original?.listing as ListingGroup).groupType !==\n GroupType.Invisible\n );\n },\n getExpandedRowModel: (table) => getExpandedRowModel()(table),\n autoResetExpanded: false,\n paginateExpandedRows: false,\n enableRowSelection: (row) => !row.original?.isCompListing,\n enableMultiRowSelection: (row) => !row.original?.isCompListing,\n onRowSelectionChange,\n enableSubRowSelection: (row) => !row.original?.isCompListing,\n sortingFns: { ...seatingColumnSorting },\n }),\n [\n data,\n displayedColumnsConfig,\n pagination,\n sorting,\n rowSelection,\n expandedState,\n getListingTicketClassColor,\n hasTablePinActionColumnFeature,\n sectionType,\n showSelectAllOnHeader,\n setPagination,\n onRowSelectionChange,\n seatingColumnSorting,\n setActiveSortTableColumn,\n ]\n );\n\n const onRowWrapper: RowWrapper = useCallback(\n (rowData, tableRow, rowIndex) => {\n if (rowData?.isCompListing) {\n // If it's comp listing, put into `disabledFocusContexts`\n // We don't want to price on that\n if (\n !disabledFocusContexts?.find(\n (p) =>\n p?.currentPageIndex === pagination.pageIndex &&\n p?.rowIndex === rowIndex &&\n p?.viagVirtualId === event.viagVirtualId\n )\n ) {\n setDisabledFocusContexts((prev: FocusContext[] | undefined) => {\n return [\n ...(prev ?? []),\n {\n viagVirtualId: event.viagVirtualId,\n rowIndex,\n // can be either, we don't use it when checking for focus\n priceField: 'listPrice',\n currentPageIndex: pagination.pageIndex,\n },\n ];\n });\n }\n } else {\n if (\n disabledFocusContexts?.find(\n (p) =>\n p?.currentPageIndex === pagination.pageIndex &&\n p?.rowIndex === rowIndex &&\n p?.viagVirtualId === event.viagVirtualId\n )\n ) {\n setDisabledFocusContexts((prev: FocusContext[] | undefined) => {\n return prev?.filter(\n (p) =>\n p?.currentPageIndex !== pagination.pageIndex ||\n p?.rowIndex !== rowIndex ||\n p?.viagVirtualId !== event.viagVirtualId\n );\n });\n }\n }\n\n return (\n \n );\n },\n [\n disabledFocusContexts,\n event.viagVirtualId,\n pagination.pageIndex,\n setDisabledFocusContexts,\n ]\n );\n\n const [draggingListing, setDraggingListing] = useState();\n\n const listingsToDrop = useMemo((): Listing[] => {\n if (!draggingListing) {\n return [];\n }\n const selectedIds = Object.entries(rowSelection)\n .filter(([_, value]) => value)\n .map(([key, _]) => key)\n .map(Number);\n\n if (!isEmpty(selectedIds)) {\n if (selectedIds.includes(draggingListing.id)) {\n const selectedListings = (listings\n ?.flatMap(flattenListingGroup)\n .filter(({ id, isLtGrp }) => !isLtGrp && selectedIds.includes(id)) ??\n []) as Listing[];\n return selectedListings;\n }\n }\n return [draggingListing];\n }, [draggingListing, listings, rowSelection]);\n\n const onDragListingStart = useCallback(\n (event: DragStartEvent) => {\n const activeListing = listings\n ?.flatMap(flattenListingGroup)\n .find(({ id }) => id === event.active?.data?.current?.listingId);\n if (activeListing) {\n setDraggingListing(activeListing as Listing);\n }\n },\n [listings]\n );\n\n const onDragListingEnd = useCallback(\n async (e: DragEndEvent) => {\n const { over, active } = e;\n const fromListingGroupId = active?.data?.current\n ?.currentListingGroupId as string | null | undefined;\n const toListingGroupId = over?.data?.current?.ltGrpId as\n | string\n | null\n | undefined;\n\n const activeListingId = active?.data?.current?.listingId as\n | number\n | null\n | undefined;\n\n const onDropCompleted = () => {\n const targetListingGroup = listings?.find(\n (l) => l.isLtGrp && l.ltGrpId === toListingGroupId\n );\n if (!targetListingGroup) {\n return;\n }\n const allGroups = (targetListingGroup as ListingGroup).groupItems\n .map((item) => item.id)\n .reduce(\n (res, id) => {\n res[id.toString()] = true;\n return res;\n },\n {} as Record\n );\n setExpandedState((prev) => {\n if (typeof prev === 'boolean') {\n return prev;\n }\n return {\n ...prev,\n ...allGroups,\n [targetListingGroup.id]: true,\n };\n });\n\n if (activeListingId) {\n onRowSelectionChange({\n [activeListingId + '']: true,\n });\n }\n };\n\n // Reorder listing group\n if (\n hasReorderListingInGroupFeature &&\n fromListingGroupId != null &&\n fromListingGroupId === toListingGroupId\n ) {\n const fromPriority = active?.data?.current?.listingGroupPriority as\n | number\n | null\n | undefined;\n const toPriority = over?.data?.current?.listingGroupPriority as\n | number\n | null\n | undefined;\n\n if (\n activeListingId &&\n fromPriority &&\n toPriority &&\n fromPriority != toPriority\n ) {\n setDraggingListing(undefined);\n\n return await tryInvokeApi(\n async () => {\n const updatedListings = await new ListingClient(\n activeAccountWebClientConfig\n ).reorderListingInGroup({\n listingId: activeListingId,\n fromPosition: fromPriority,\n toPosition: toPriority,\n listingGroupId: fromListingGroupId,\n });\n updateExpandedListItems(updatedListings);\n onDropCompleted();\n },\n (error) => {\n showErrorDialog(\n 'ListingGroupClient.reorderListingInGroup',\n error,\n {\n trackErrorData: {\n listingGroupId: fromListingGroupId,\n listingId: activeListingId,\n },\n }\n );\n },\n () => {\n setDraggingListing(undefined);\n }\n );\n }\n }\n\n if (!toListingGroupId) {\n return;\n }\n\n // No point to drop listing to the same group\n const sanitizedListings = listingsToDrop.filter(\n (l) => l.ltGrpId !== toListingGroupId\n );\n\n if (isEmpty(sanitizedListings)) {\n return;\n }\n\n setDraggingListing(undefined);\n\n return await tryInvokeApi(\n async () => {\n const input: SwapListingGroupInput[] = sanitizedListings.map((l) => ({\n listingId: l.id,\n listingGroupId: l.ltGrpId,\n quantity: l.availQty,\n adminHoldExpirationDate: l.adminHoldExpiredOn,\n }));\n const updatedListings = await new ListingClient(\n activeAccountWebClientConfig\n ).batchSwapListingGroup({\n listings: input,\n toListingGroupId,\n });\n updateExpandedListItems(updatedListings);\n onDropCompleted();\n },\n (error) => {\n showErrorDialog('ListingGroupClient.batchSwapListingGroup', error, {\n trackErrorData: {\n toListingGroupId,\n },\n });\n },\n () => {\n setDraggingListing(undefined);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n hasReorderListingInGroupFeature,\n listings,\n listingsToDrop,\n onRowSelectionChange,\n showErrorDialog,\n updateExpandedListItems,\n ]\n );\n\n const onRowSelect = useCallback(\n (row: Row) => {\n const listing = row.original?.listing;\n if (listing) {\n setActivePosEntity(listing.id, listing.idOnMkp, true, [\n ListingDetailDataField.Basic,\n ]);\n setModal(getListingDetailsModalConfigWithDeepLink(listing.id, true));\n }\n },\n [setActivePosEntity, setModal]\n );\n\n const onFilteredRowsChange = useCallback(\n (filteredRows: Row[] | undefined) => {\n const filteredItemIds = filteredRows\n ?.filter((r) => !r.original?.isLtGrp && !r.original?.isCompListing)\n .map((r) => r.original?.listing?.id)\n .filter((lid) => lid != null) as number[] | undefined;\n updateGroupFilteredIds(groupId, filteredItemIds);\n },\n [groupId, updateGroupFilteredIds]\n );\n\n // Apply distance on drag event, which will unblock the onClick event\n // for the elements in the draggable component\n const pointerSensor = useSensor(PointerSensor, {\n activationConstraint: { distance: 5 },\n });\n const sensors = useSensors(pointerSensor);\n\n return getDataFail ? (\n }\n />\n ) : data?.length ? (\n \n \n \n {createPortal(\n \n {!isEmpty(listingsToDrop) ? (\n
    \n \n {listingsToDrop.map((l) => (\n
    \n \n
    \n ))}\n \n
    \n ) : null}\n
    ,\n document.body\n )}\n \n \n ) : (\n // We should never see this - because the events are filtered to only those that has listings\n // So this is to prevent a crash - but this should be looked at\n \n \n \n );\n};\n\nexport default ListingTable;\n","import { createColumnHelper } from '@tanstack/react-table';\nimport { ConnectedEventInfo } from 'src/components/Events/ConnectedEventInfo';\nimport {\n EventDateDisplay,\n VenueNameDisplay,\n} from 'src/components/Events/EventInfo';\nimport {\n COLUMN_DEFAULT_SIZE_XL,\n COLUMN_DEFAULT_SIZE_XXL,\n COLUMN_MAX_SIZE,\n COLUMN_MIN_SIZE,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport { Content } from 'src/contexts/ContentContext';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { useColumnUserSetting } from 'src/hooks/useColumnUserSetting';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { FormatOption, FormatOptionEntries } from 'src/modals/EditTableColumns';\nimport * as tableStyles from 'src/tables/Table/Table.css';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\nimport { ListingTableFlattenedColumnId } from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n compareEventsByDate,\n compareEventsByName,\n} from 'src/utils/eventWithDataUtils';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { DateTimeRange, UserSetting, Venue } from 'src/WebApiController';\n\nimport {\n ListingWithEvent,\n SHIMMERING_DIV_HEIGHT_LISTING_GROUP,\n SHIMMERING_DIV_HEIGHT_SINGLE_LISTING,\n} from '../ListingTable.types';\n\nconst columnHelper = createColumnHelper();\n\nexport const LISTING_TABLE_FLATTENED_COLUMNS_CONFIG = {\n [ListingTableFlattenedColumnId.Event]: columnHelper.accessor((data) => data, {\n id: ListingTableFlattenedColumnId.Event,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_XXL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original }, table }) {\n const listing = getValue();\n const { value: storedInventoryFlattenedColumnNumberPrecisions = {} } =\n useServerUserSetting({\n id: UserSetting.InventoryFlattenedColumnNumberPrecision,\n });\n\n if (!listing?.listing) {\n return (\n \n );\n }\n\n if (!listing.event) {\n return null;\n }\n\n const customPrecision =\n table.options.meta?.formatOptionOverrides?.[\n ListingTableFlattenedColumnId.Event\n ];\n\n const eventNameOnly = customPrecision\n ? customPrecision === FormatOption.Event_EventName\n : storedInventoryFlattenedColumnNumberPrecisions[\n ListingTableFlattenedColumnId.Event\n ] === FormatOption.Event_EventName;\n\n return (\n \n \n \n );\n },\n sortingFn: compareEventsByName,\n }),\n [ListingTableFlattenedColumnId.Venue]: columnHelper.accessor(\n (data) => data?.venue,\n {\n id: ListingTableFlattenedColumnId.Venue,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const venue = getValue();\n if (!original || !original?.listing) {\n return (\n \n );\n }\n return (\n \n \n \n );\n },\n }\n ),\n [ListingTableFlattenedColumnId.Location]: columnHelper.accessor(\n (data) => data?.venue,\n {\n id: ListingTableFlattenedColumnId.Location,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const venue = getValue();\n if (!original || !original?.listing) {\n return (\n \n );\n }\n return (\n \n \n \n );\n },\n }\n ),\n [ListingTableFlattenedColumnId.EventDate]: columnHelper.accessor(\n (data) => data?.event?.dates,\n {\n id: ListingTableFlattenedColumnId.EventDate,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original }, column, table }) {\n const columnId = column.id;\n\n const value = getValue();\n const {\n userDefinedPrecision = FormatOption.DateTime_MonthDD_Time_Day,\n } = useColumnUserSetting(columnId, SectionType.Events);\n\n if (!original || !original?.listing) {\n return (\n \n );\n }\n\n const customPrecision =\n table.options.meta?.formatOptionOverrides?.[\n ListingTableFlattenedColumnId.EventDate\n ];\n\n const date = applyNumberFormatting({\n precision: customPrecision ?? userDefinedPrecision,\n inputNumber: value?.start,\n isDateTime: true,\n }) as string;\n\n return (\n \n {userDefinedPrecision === FormatOption.DateTime_MonthDD_Time ? (\n \n ) : (\n \n {date}\n \n )}\n \n );\n },\n sortingFn: compareEventsByDate,\n }\n ),\n} as const;\n","import {\n ColumnDef,\n ExpandedState,\n functionalUpdate,\n getExpandedRowModel,\n InitialTableState,\n Row,\n RowSelectionState,\n SortingState,\n TableOptions,\n Updater,\n} from '@tanstack/react-table';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useActiveSortTableColumnContext } from 'src/contexts/ActiveSortTableColumnContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCollapsableViewContext } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { ColumnResizingContextProvider } from 'src/contexts/ColumnResizingContext/ColumnResizingContext';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { useInputPriceFocusContext } from 'src/contexts/InputPriceFocusContext/InputPriceFocusContext';\nimport {\n MultiSelectScope,\n NO_GROUP_ID,\n SelectionMode,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { useClearShiftSelectionOnSortingChange } from 'src/contexts/MultiSelectionContext/useClearShiftSelectionOnSortingChange';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { useSortListingTableSeatingColumn } from 'src/hooks/useSortListingTableSeatingColumn';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { FormatOptionEntries } from 'src/modals/EditTableColumns';\nimport { NoData, Table } from 'src/tables/Table';\nimport {\n defaultListingFlattenedColumnsConfig,\n filterColumnsByFeatures,\n getListingColumnConfigById,\n} from 'src/utils/columns/columnUtils';\nimport {\n ListingTableColumnId,\n ListingTableFlattenedColumnId,\n} from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { filterCustomColumnsForListing } from 'src/utils/columns/inventory/inventoryCustomColumnUtils';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { generateShimmeringRows } from 'src/utils/dataTableUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { hasFeatures } from 'src/utils/userUtils';\nimport { SomethingWentWrong } from 'src/views';\nimport {\n ActionOutboxEntityType,\n Feature,\n GroupType,\n ListingGroup,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { usePaginationSettings } from '../Table/hooks/usePaginationSettings';\nimport { RowWrapper } from '../Table/Table.types';\nimport { ListingPricingForm } from './configs/ListingPriceForm';\nimport {\n customColumnDef,\n getListingTableColumnConfigs,\n tagColumnDef,\n} from './configs/ListingTableColumnsConfig';\nimport { LISTING_TABLE_FLATTENED_COLUMNS_CONFIG } from './configs/ListingTableFlattenedColumnsConfig';\nimport { ListingWithEvent } from './ListingTable.types';\n\nexport type ListingTableFlattenedProps = {\n listings?: ListingWithEvent[];\n listingCount: number;\n ungroupedListingCount: number;\n listingGroupCount: number;\n failedToRetrieveData: boolean;\n onMount?: () => void;\n onUnmount?: (state: object) => void;\n initState?: InitialTableState;\n selectionMode?: SelectionMode | null;\n selectedIds?: number[];\n onItemSelectionsChanged?: (newSelectedIds: number[]) => void;\n disablePagination?: boolean;\n useVirtuoso?: boolean;\n columnVisibilityOverride?: (\n | ListingTableColumnId\n | ListingTableFlattenedColumnId\n )[];\n formatOptionOverrides?: FormatOptionEntries;\n withOuterPadding?: boolean;\n disableSelection?: boolean;\n alwaysShowCheckbox?: boolean;\n showSelectAllOnHeader?: boolean;\n enableColumnFilters?: boolean;\n ignoreMaxCount?: boolean;\n};\n\nconst PAGE_SIZE = 100;\n\nexport const ListingTableFlattened = ({\n listings,\n listingCount,\n ungroupedListingCount,\n listingGroupCount,\n failedToRetrieveData,\n selectedIds,\n selectionMode: defaultSelectionMode,\n onItemSelectionsChanged,\n disablePagination,\n onMount,\n onUnmount,\n initState,\n useVirtuoso,\n columnVisibilityOverride,\n formatOptionOverrides,\n withOuterPadding = true,\n disableSelection,\n alwaysShowCheckbox,\n showSelectAllOnHeader,\n enableColumnFilters,\n ignoreMaxCount,\n}: ListingTableFlattenedProps) => {\n const { appContext, loginContext } = useAppContext();\n\n const { onScroll } = useCollapsableViewContext();\n\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const { activeSortTableColumn, setActiveSortTableColumn } =\n useActiveSortTableColumnContext();\n const {\n selectionMode: selectionModeOverride,\n setGroupItems,\n getSelection,\n getGroupToggleState,\n isAllSelected,\n updateGroupFilteredIds,\n } = useMultiSelectionContext();\n\n const selectionMode = selectionModeOverride ?? defaultSelectionMode;\n\n const listingSelection = getSelection(NO_GROUP_ID);\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n const hasSortListingsInGroupFeature = useUserHasFeature(\n Feature.SortListingsInGroup\n );\n const hasSectionalLoadInListingTableFeature = useUserHasFeature(\n Feature.SectionalLoadInListingTable\n );\n\n const [sorting, setSorting] = useState(\n activeSortTableColumn ||\n initState?.sorting || [\n { id: 'actions', desc: false },\n { id: 'seating', desc: false },\n ]\n );\n\n useClearShiftSelectionOnSortingChange({ sortingState: sorting });\n\n const [expandedState, setExpandedState] = useState(\n initState?.expanded ?? {}\n );\n\n // This is to pre-expand all the groups on first-load\n useEffect(() => {\n if (\n Object.keys(expandedState).length === 0 &&\n listings?.some((l) => l.isLtGrp)\n ) {\n setExpandedState(\n listings?.reduce(\n (r, l) => {\n if (l.isLtGrp) {\n r[l.listing!.id.toString()] = true;\n }\n\n return r;\n },\n {} as Record\n ) ?? {}\n );\n }\n }, [expandedState, listings]);\n\n const { inputPriceFocusContext } = useInputPriceFocusContext();\n const { isItemsLoading } = useCatalogDataContext();\n const currentPage = useMemo(() => {\n return inputPriceFocusContext &&\n inputPriceFocusContext.rowIndex < listingCount\n ? inputPriceFocusContext.currentPageIndex\n : -1;\n }, [inputPriceFocusContext, listingCount]);\n\n const { data, hasNoDataLoad } = useMemo(() => {\n const data =\n listings == null || isItemsLoading\n ? (generateShimmeringRows(\n ungroupedListingCount,\n listingGroupCount\n ) as (ListingWithEvent | null)[])\n : listings;\n\n const hasNoDataLoad =\n !ignoreMaxCount && listingCount > MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS;\n return { data, hasNoDataLoad };\n }, [\n listings,\n isItemsLoading,\n ungroupedListingCount,\n listingGroupCount,\n ignoreMaxCount,\n listingCount,\n ]);\n\n const { pagination, setPagination } = usePaginationSettings(\n data.length,\n currentPage,\n PAGE_SIZE,\n disablePagination,\n initState\n );\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n const rowSelection = useMemo(() => {\n return data\n ?.flatMap((d) => [\n d?.listing,\n ...((d?.listing as ListingGroup)?.groupItems ?? []),\n ...((d?.listing as ListingGroup)?.groupItems ?? []).flatMap(\n (lg) => (lg as ListingGroup).groupItems ?? []\n ),\n ])\n ?.reduce>((result, listing) => {\n if (listing?.id) {\n result[listing.id] = isAllSelected\n ? true\n : ((getGroupToggleState(NO_GROUP_ID).isGroupSelected ||\n (listingSelection?.items.itemIds ?? selectedIds)?.includes(\n String(listing?.id)\n )) ??\n false);\n }\n return result;\n }, {});\n }, [\n data,\n getGroupToggleState,\n isAllSelected,\n listingSelection?.items.itemIds,\n selectedIds,\n ]);\n\n const onRowSelectionChange = useCallback(\n (updater: Updater) => {\n if (disableSelection) return;\n\n const newSelections =\n typeof updater === 'function' ? updater(rowSelection) : updater;\n const newSelectedIds = Object.keys(newSelections).filter(\n (r) => newSelections[r] === true\n );\n if (selectionMode?.mode === 'singleItem') {\n newSelectedIds.forEach((id) => {\n if (rowSelection[id] && newSelections[id]) {\n // if both of these are the same value and is true, we need to set it to false\n newSelections[id] = false;\n }\n });\n }\n setGroupItems(NO_GROUP_ID, newSelections);\n onItemSelectionsChanged?.(\n newSelectedIds\n .filter((id) => newSelections[id])\n .map((id) => parseInt(id))\n );\n },\n [\n disableSelection,\n rowSelection,\n selectionMode?.mode,\n setGroupItems,\n onItemSelectionsChanged,\n ]\n );\n\n const {\n value:\n storedInventoryFlattenedColumnOrderSetting = defaultListingFlattenedColumnsConfig,\n } = useServerUserSetting({\n id: UserSetting.InventoryFlattenedColumnOrder,\n });\n const { value: storedInventoryColumnsEnabledSetting } = useServerUserSetting<\n string[]\n >({\n id: UserSetting.InventoryFlattenedColumnsEnabled,\n });\n\n const { value: customListingColumns = [] } = useServerUserSetting<\n CustomListingColumn[]\n >({\n id: UserSetting.InventoryCustomColumns,\n });\n const { tagsMetadata, tagsMetadataNumeric } = useTagsForEntityType(\n ActionOutboxEntityType.Listing,\n true\n );\n\n const customListingColumnsFiltered = filterCustomColumnsForListing(\n customListingColumns,\n tagsMetadataNumeric\n );\n\n const showCheckbox = useMemo(\n () =>\n alwaysShowCheckbox ||\n selectionMode?.mode === MultiSelectScope.AllGroups ||\n listingSelection.isSingleGroupMultiSelect,\n [\n alwaysShowCheckbox,\n listingSelection.isSingleGroupMultiSelect,\n selectionMode?.mode,\n ]\n );\n\n const allColumnConfigs = useMemo(\n () =>\n getListingTableColumnConfigs(\n hasSortListingsInGroupFeature,\n false,\n hasSectionalLoadInListingTableFeature\n ),\n [hasSectionalLoadInListingTableFeature, hasSortListingsInGroupFeature]\n );\n\n const seatingColumnSorting = useSortListingTableSeatingColumn(\n SectionType.ListingsFlattened\n );\n\n const displayedColumnsConfig = useMemo(() => {\n const inventoryColumnOrder = columnVisibilityOverride\n ? columnVisibilityOverride\n : storedInventoryFlattenedColumnOrderSetting.filter(\n // If storedInventoryColumnsEnabledSetting has never been set, default to true\n (c) => storedInventoryColumnsEnabledSetting?.includes(c) ?? true\n );\n\n if (\n !columnVisibilityOverride &&\n !hasTablePinActionColumnFeature &&\n !inventoryColumnOrder.includes(ListingTableColumnId.Actions)\n ) {\n inventoryColumnOrder.push(ListingTableColumnId.Actions);\n }\n\n const listingTableColumnConfigs = Object.values(allColumnConfigs);\n const listingTableFlattenedColumnConfigs = Object.values(\n LISTING_TABLE_FLATTENED_COLUMNS_CONFIG\n );\n\n const columns = new Set(\n columnVisibilityOverride\n ? columnVisibilityOverride\n .map(\n (cid) =>\n listingTableColumnConfigs.find((c) => c.id === cid) ??\n listingTableFlattenedColumnConfigs.find((c) => c.id === cid)!\n )\n\n .map((item) => item.id!)\n : [\n // Add unconfigurable columns first\n ...listingTableFlattenedColumnConfigs\n .filter((column) => {\n const columnDef = getListingColumnConfigById(\n column.id as ListingTableFlattenedColumnId\n ).personalization;\n const hasFeatureForColumn =\n columnDef.requiredFeatures.length === 0 ||\n hasFeatures(\n loginContext?.user,\n appContext?.features,\n columnDef.requiredFeatures\n );\n\n return !columnDef.isConfigurable && hasFeatureForColumn;\n })\n .map((item) => item.id!),\n ...listingTableColumnConfigs\n .filter((column) => {\n const columnDef = getListingColumnConfigById(\n column.id as ListingTableColumnId\n ).personalization;\n const hasFeatureForColumn =\n columnDef.requiredFeatures.length === 0 ||\n hasFeatures(\n loginContext?.user,\n appContext?.features,\n columnDef.requiredFeatures\n );\n\n let isConfigurable = columnDef.isConfigurable;\n if (\n !hasTablePinActionColumnFeature &&\n column.id === ListingTableColumnId.Actions\n ) {\n isConfigurable = true;\n }\n\n return !isConfigurable && hasFeatureForColumn;\n })\n .map((item) => item.id!),\n // Add user defined columns next\n ...filterColumnsByFeatures(\n inventoryColumnOrder,\n SectionType.ListingsFlattened,\n customListingColumnsFiltered,\n loginContext?.user,\n appContext?.features,\n tagsMetadata ?? []\n ),\n ]\n );\n\n if (!columnVisibilityOverride) {\n if (showCheckbox) {\n if (!alwaysShowCheckbox) {\n columns.delete(ListingTableColumnId.Actions);\n }\n } else {\n columns.delete(ListingTableColumnId.Checkbox);\n }\n }\n\n return Array.from(columns).reduce[]>(\n (acc, columnId) => {\n if (\n !columnVisibilityOverride &&\n tagsMetadata?.find((t) => t.key === columnId)\n ) {\n acc.push(tagColumnDef(columnId));\n } else if (\n !columnVisibilityOverride &&\n customListingColumnsFiltered.find((c) => c.id === columnId)\n ) {\n acc.push(\n customColumnDef(\n columnId,\n customListingColumnsFiltered.find((c) => c.id === columnId)\n ?.formula\n )\n );\n } else {\n const columnConfig1 = listingTableColumnConfigs.find(\n (column) => column.id === columnId\n );\n if (columnConfig1) {\n acc.push(columnConfig1 as ColumnDef);\n }\n const columnConfig2 = listingTableFlattenedColumnConfigs.find(\n (column) => column.id === columnId\n );\n if (columnConfig2) {\n acc.push(columnConfig2 as ColumnDef);\n }\n }\n\n return acc;\n },\n []\n );\n }, [\n columnVisibilityOverride,\n storedInventoryFlattenedColumnOrderSetting,\n hasTablePinActionColumnFeature,\n allColumnConfigs,\n customListingColumnsFiltered,\n loginContext?.user,\n appContext?.features,\n tagsMetadata,\n storedInventoryColumnsEnabledSetting,\n showCheckbox,\n alwaysShowCheckbox,\n ]);\n\n const options: Partial> = useMemo(\n () => ({\n data,\n columns: displayedColumnsConfig,\n state: {\n pagination,\n sorting,\n rowSelection,\n expanded: expandedState,\n columnVisibility: {\n [ListingTableColumnId.TicketClassColor]: false,\n },\n columnPinning: {\n right: hasTablePinActionColumnFeature\n ? [ListingTableColumnId.Actions]\n : undefined,\n },\n },\n meta: {\n sectionType: SectionType.ListingsFlattened,\n formatOptionOverrides,\n showSelectAllCheckbox: showSelectAllOnHeader,\n },\n getRowId: (originalRow: ListingWithEvent | null, index: number) => {\n return (originalRow?.listing?.id ?? index).toString();\n },\n onPaginationChange: setPagination,\n onSortingChange: (sortingUpdaterFn) => {\n const newSortVal = functionalUpdate(sortingUpdaterFn, sorting);\n setSorting(newSortVal);\n setActiveSortTableColumn(newSortVal);\n },\n onExpandedChange: setExpandedState,\n getSubRows: (originalRow) => {\n if (!originalRow?.listing || !originalRow.listing.isLtGrp) {\n return [];\n }\n\n const listingGroup = originalRow.listing as ListingGroup;\n const result =\n [...(listingGroup.groupItems ?? [])]\n .toSorted((a, b) => {\n if (a.availQty <= 0 && b.availQty >= 0) {\n return 1;\n } else if (a.availQty >= 0 && b.availQty <= 0) {\n return -1;\n }\n return (a.ltGrpPrior ?? -1) - (b.ltGrpPrior ?? -1);\n })\n ?.map(\n (l, i) =>\n ({\n ...originalRow,\n rowIndex: i,\n listing: l,\n }) as ListingWithEvent\n ) ?? [];\n\n return result;\n },\n getRowCanExpand: (originalRow) => {\n return Boolean(\n originalRow.original?.listing?.isLtGrp &&\n (originalRow.original?.listing as ListingGroup).groupType !==\n GroupType.Invisible\n );\n },\n getExpandedRowModel: (table) => getExpandedRowModel()(table),\n paginateExpandedRows: false,\n enableRowSelection: showCheckbox,\n enableMultiRowSelection: showCheckbox,\n onRowSelectionChange,\n enableSubRowSelection: showCheckbox,\n sortingFns: { ...seatingColumnSorting },\n }),\n [\n data,\n displayedColumnsConfig,\n pagination,\n sorting,\n rowSelection,\n expandedState,\n hasTablePinActionColumnFeature,\n formatOptionOverrides,\n showSelectAllOnHeader,\n setPagination,\n showCheckbox,\n onRowSelectionChange,\n seatingColumnSorting,\n setActiveSortTableColumn,\n ]\n );\n\n const onRowWrapper: RowWrapper = useCallback(\n (rowData, tableRow, rowIndex) => {\n return (\n \n );\n },\n [pagination.pageIndex]\n );\n\n const onFilteredRowsChange = useCallback(\n (filteredRows: Row[] | undefined) => {\n const filteredItemIds = filteredRows\n ?.filter((r) => !r.original?.isLtGrp && !r.original?.isCompListing)\n .map((r) => r.original?.listing?.id)\n .filter((lid) => lid != null) as number[] | undefined;\n updateGroupFilteredIds(NO_GROUP_ID, filteredItemIds);\n },\n [updateGroupFilteredIds]\n );\n\n return failedToRetrieveData ? (\n }\n />\n ) : hasNoDataLoad ? (\n \n \n }\n />\n \n ) : data?.length > 0 ? (\n \n \n \n ) : null;\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const TileWrapper = styled.div`\n width: 100%;\n padding: ${() => `${vars.spacing.m} ${vars.spacing.m}`};\n background: ${({ theme }) => theme.colors.backgroundPrimary};\n border-radius: ${() => vars.spacing.sm};\n margin-bottom: ${() => vars.spacing.xxs};\n border: 1px solid ${(props) => props.theme.colors.borderPrimary};\n\n &:hover {\n background-color: ${(props) => props.theme.colors.backgroundBrandLight};\n }\n`;\n\nexport const TileWrapperIndented = styled.div`\n width: 100%;\n padding: ${() => `${vars.spacing.m} ${vars.spacing.m}`};\n background: ${({ theme }) => theme.colors.backgroundSecondary};\n border-radius: ${() => vars.spacing.sm};\n margin-bottom: ${() => vars.spacing.xxs};\n border: 1px solid ${(props) => props.theme.colors.borderPrimary};\n\n &:hover {\n background-color: ${(props) => props.theme.colors.backgroundBrandLight};\n }\n`;\n\nexport const TileHeader = styled.span`\n font-size: var(--bs-body-font-size);\n ${({ theme: { typography } }) => typography.getStyles('caption1', 'regular')}\n color: ${({ theme: { colors } }) => colors.textPrimary};\n display: flex;\n align-items: center;\n padding-bottom: ${() => vars.spacing.m};\n`;\n\nexport const TileLeftLayout = styled.div`\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n width: 100%;\n gap: 4px;\n`;\n\nexport const TileRightLayout = styled.div<{ columns?: number }>`\n display: grid;\n grid-template-columns:\n repeat(${(props) => (props.columns ?? 2) - 1}, max-content)\n auto;\n gap: 4px;\n align-items: center;\n`;\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const ListingTilesContainer = styled.div``;\nexport const UnHideIconContainer = styled.span`\n display: flex;\n ${({ theme: { typography } }) => typography.getStyles('body1', 'medium')}\n`;\n\nexport const Divider = styled.div`\n border-bottom: 1px solid ${(props) => props.theme.colors.borderPrimary};\n`;\n\nexport const CheckboxContainer = styled.div`\n label {\n margin-bottom: 0;\n }\n`;\n\nexport const DetailLabel = styled.span<{ textAlign?: TextAlign }>`\n ${({ theme: { typography } }) => typography.getStyles('caption1', 'regular')}\n color: ${({ theme: { colors } }) => colors.textPrimary};\n text-align: ${(props) =>\n props.textAlign ? props.textAlign.toString() : 'left'};\n`;\n\nexport const GroupCountBadge = styled.div`\n width: ${() => vars.spacing.xl};\n height: ${() => vars.spacing.xl};\n background-color: ${(props) => props.theme.colors.backgroundBrandActive};\n border-radius: 12px;\n color: ${(props) => props.theme.colors.textInverted};\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n`;\n\nexport const DetailValue = styled.span<{ textAlign?: TextAlign }>`\n ${({ theme: { typography } }) => typography.getStyles('caption1', 'regular')}\n text-align: ${(props) =>\n props.textAlign ? props.textAlign.toString() : 'left'};\n padding-right: ${() => vars.spacing.xxs};\n`;\n\nexport const DetailUnitCostValue = styled.span`\n ${({ theme: { typography } }) => typography.getStyles('caption1', 'regular')}\n display: flex;\n align-items: center;\n padding-right: ${() => vars.spacing.xxs};\n`;\n\nexport enum TextAlign {\n Left = 'left',\n Center = 'center',\n Right = 'right',\n}\n","import { useCallback, useContext, useMemo, useState } from 'react';\nimport { EventAccordionItemBodyComponentType } from 'src/components/Accordions';\nimport { ListingDisplay } from 'src/components/Listings/ListingDisplay';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext/ModalContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { GroupItemIcon } from 'src/svgs/GroupItemIcon';\nimport { IconsFill, MoreIcon } from 'src/svgs/Viagogo';\nimport { ListingGroupActions } from 'src/tables/ListingTable/configs/ListingGroupActions';\nimport { ListingGroupStatusSummary } from 'src/tables/ListingTable/configs/ListingGroupStatusSummary';\nimport { ListingPriceCell } from 'src/tables/ListingTable/configs/ListingPriceCell';\nimport { ListingPricingForm } from 'src/tables/ListingTable/configs/ListingPriceForm';\nimport { SeatInfoContainer } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getListingActionButtons,\n getListingDetailsModalConfigWithDeepLink,\n} from 'src/utils/inventoryUtils';\nimport { getDeliveryTypeIcon } from 'src/utils/ticketTypeUtils';\nimport {\n Event,\n Listing,\n ListingActionType,\n ListingGroup,\n Marketplace,\n} from 'src/WebApiController';\n\nimport {\n TileHeader,\n TileLeftLayout,\n TileRightLayout,\n TileWrapper,\n TileWrapperIndented,\n} from '../Tile/Tile.styled';\nimport * as styles from './ListingTile.css';\nimport {\n CheckboxContainer,\n DetailLabel,\n DetailUnitCostValue,\n DetailValue,\n Divider,\n ListingTilesContainer,\n TextAlign,\n} from './ListingTile.styled';\n\nexport type ListingTilesProps = EventAccordionItemBodyComponentType;\n\nconst ListingTile = ({\n listing,\n event,\n indentLevel,\n}: {\n listing: Listing;\n event: Event;\n indentLevel?: number;\n}) => {\n const icon = getDeliveryTypeIcon(listing.delivType, listing.topPriTktType);\n\n const listingGroup = listing as ListingGroup;\n\n const subListings = useMemo(() => {\n if (!listing.isLtGrp) {\n return [];\n }\n\n return listingGroup.groupItems as Listing[];\n }, [listing.isLtGrp, listingGroup.groupItems]);\n\n const [isExpanded, setIsExpanded] = useState(false);\n const [isInputFocused, setIsInputFocused] = useState(false);\n const { getSelection, setGroupItems } = useMultiSelectionContext();\n const listingSelection = getSelection(event.viagVirtualId);\n\n const { setActivePosEntity, isLoading } =\n useActivePosEntityContext();\n const { setModal } = useContext(ModalContext);\n\n const toggleListingSelection = useCallback(() => {\n const listingIdsToggled = [\n listing,\n ...(listingGroup.groupItems ?? []),\n ...(listingGroup.groupItems ?? []).flatMap(\n (lg) => (lg as ListingGroup).groupItems ?? []\n ),\n ].map((l) => l.id);\n\n const selectedListingIds = listingSelection.items.itemIds;\n\n // Current intended behavior: Either select all ids in listingGroup or none\n if (\n selectedListingIds.some((selected) =>\n listingIdsToggled.includes(parseInt(selected))\n )\n ) {\n // Deselect\n setGroupItems(\n event.viagVirtualId,\n selectedListingIds\n .map((id) => parseInt(id))\n .filter((id) => !listingIdsToggled.includes(id))\n .reduce(\n (r, l) => {\n r[l] = true;\n return r;\n },\n {} as Record\n )\n );\n } else {\n // Add select\n selectedListingIds.push(...listingIdsToggled.map((lId) => String(lId)));\n setGroupItems(\n event.viagVirtualId,\n selectedListingIds\n .map((id) => parseInt(id))\n .reduce(\n (r, listingId) => {\n r[listingId] = true;\n return r;\n },\n {} as Record\n )\n );\n }\n }, [\n event.viagVirtualId,\n listing,\n listingGroup.groupItems,\n listingSelection.items.itemIds,\n setGroupItems,\n ]);\n\n const isSelected = useMemo(() => {\n return listingSelection.items.itemIds.includes(String(listing.id));\n }, [listingSelection.items.itemIds, listing.id]);\n\n const onViewClick = useCallback(async () => {\n if (listingSelection.isSingleGroupMultiSelect) {\n toggleListingSelection();\n return;\n }\n if (isInputFocused) {\n setIsInputFocused(false);\n return;\n }\n\n if (!listing.isLtGrp) {\n // Only allow click when not a listing group\n setActivePosEntity(listing.id, listing.idOnMkp, true);\n setModal(getListingDetailsModalConfigWithDeepLink(listing.id, true));\n } else {\n setIsExpanded((prev) => !prev);\n }\n }, [\n listingSelection.isSingleGroupMultiSelect,\n isInputFocused,\n listing.isLtGrp,\n listing.id,\n listing.idOnMkp,\n toggleListingSelection,\n setActivePosEntity,\n setModal,\n ]);\n\n const broadcastActions = getListingActionButtons(\n true /* for table */,\n listing,\n listing.actions?.filter((a) =>\n [\n ListingActionType.Broadcast,\n ListingActionType.Unbroadcast,\n ListingActionType.FullySoldNoAction,\n ].includes(a)\n ) ?? [],\n event,\n 'text',\n true,\n undefined,\n isLoading\n );\n const otherActions =\n getListingActionButtons(\n true /* for table */,\n listing,\n listing.actions?.filter((a) =>\n [\n ListingActionType.PredeliverExternalIds,\n ListingActionType.PredeliverTicketUrls,\n ListingActionType.PredeliverBarcodes,\n ListingActionType.PredeliverETickets,\n ListingActionType.Split,\n ].includes(a)\n ) ?? [],\n event,\n 'text',\n false,\n undefined,\n isLoading\n ) ?? [];\n\n const onFocus = useCallback(() => {\n setIsInputFocused(true);\n }, [setIsInputFocused]);\n\n const sellerFee = listing.mkpListings?.find(\n (m) => m.mkp === Marketplace.StubHub\n )?.sellerFee;\n\n const TileWrapperDiv = indentLevel ? TileWrapperIndented : TileWrapper;\n\n return (\n <>\n \n \n \n
    \n {listingSelection.isSingleGroupMultiSelect && (\n {\n /* Prevent onViewClick from being called twice and interfering with selection */\n e.preventDefault();\n }}\n >\n {\n /* do nothing - as we already have the row listing to on-click */\n }}\n />\n \n )}\n {!listing.isLtGrp ? (\n icon\n ) : (\n \n )}\n \n \n \n
    \n
    \n \n {!listingSelection.isSingleGroupMultiSelect && (\n <>{broadcastActions}\n )}\n {!listingSelection.isSingleGroupMultiSelect && (\n \n {otherActions.length > 0 ? (\n \n }\n align=\"end\"\n >\n {otherActions.map((a, i) => (\n {a}\n ))}\n \n ) : listing.isLtGrp ? (\n \n ) : null}\n \n )}\n \n
    \n \n
    \n \n \n \n \n {!listing.isLtGrp && }\n \n \n {!listing.isLtGrp && }\n \n \n {listing.unitCst?.disp ?? listing.faceValue?.disp ?? (\n \n )}\n \n \n {!listing.isLtGrp && (\n \n )}\n \n \n {!listing.isLtGrp ? (\n \n ) : (\n \n )}\n \n
    \n \n {isExpanded &&\n subListings.map((subListing) => (\n \n ))}\n \n );\n};\n\nexport const ListingTiles = ({ entities, event }: ListingTilesProps) => {\n return entities ? (\n \n {entities.map((listing) => {\n const tile = (\n \n );\n return (\n \n );\n })}\n \n ) : (\n \n );\n};\n","import {\n EventAccordionItemBodyComponentType,\n MinRowsForUsingVirtuoso,\n} from 'src/components/Accordions';\nimport { useCollapsableViewContext } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { ListingTable } from 'src/tables/ListingTable';\nimport { ListingTiles } from 'src/tiles/ListingTiles';\nimport { Listing } from 'src/WebApiController';\n\ntype InventoryEventsBodyProps = EventAccordionItemBodyComponentType;\n\nexport const InventoryEventsBody = (props: InventoryEventsBodyProps) => {\n const isMobile = useMatchMedia('mobile');\n const Body = isMobile ? ListingTiles : ListingTable;\n const hasVirtuosoMinRows = props.entityCount > MinRowsForUsingVirtuoso;\n const { isEnabled } = useCollapsableViewContext();\n return (\n \n );\n};\n","import { IconButton } from 'src/components/Buttons';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const MultiSelectCloseButton = () => {\n const { setSelectionMode } = useMultiSelectionContext();\n\n return (\n setSelectionMode(undefined)}\n titleContentId={ContentId.Remove}\n icon={}\n />\n );\n};\n","import clsx from 'clsx';\nimport { ComponentProps, ReactNode, useMemo } from 'react';\nimport {\n MultiSelectAll,\n MultiSelectAllProps,\n} from 'src/components/common/MultiSelect/MultiSelectAll';\nimport * as styles from 'src/components/common/MultiSelect/MultiSelectAll.css';\nimport {\n childrenWrapperMobile,\n groupStyle,\n rootDesktop,\n rootMobile,\n} from 'src/components/common/MultiSelect/MultiSelectAll.css';\nimport { MultiSelectCloseButton } from 'src/components/common/MultiSelect/MultiSelectCloseButton';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n MultiSelectScope,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { Stack } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { ContentId } from 'src/utils/constants/contentId';\n\ntype MultiSelectContainerProps = {\n children: ReactNode;\n groupId?: string;\n showHideOnSelection?: boolean;\n} & Pick &\n Pick, 'style' | 'className'>;\n\nexport const MultiSelectActionBar = ({\n children,\n groupId,\n flattenedIdsOverride,\n className,\n displayMode,\n showHideOnSelection,\n style,\n}: MultiSelectContainerProps) => {\n const isMobile = useMatchMedia('mobile');\n const { selectionMode, totalItemsSelected } = useMultiSelectionContext();\n\n // IMPORTANT - it is vital that you do not return NULL in this component\n // We always need to render the children (bulk-actions) in there so that the bulk-action dialogs will always be there\n // If we do not render this bar - all the current bulk-edit actions will also be removed from the DOM and disappear before\n // they can be finished.\n const isHidden = useMemo(() => {\n if (showHideOnSelection) {\n return !totalItemsSelected;\n }\n\n let isHidden = false;\n if (!selectionMode) {\n isHidden = true;\n }\n\n if (groupId) {\n const canShowGroup =\n selectionMode?.groupId === groupId &&\n selectionMode?.mode === MultiSelectScope.SingleGroup;\n if (!canShowGroup) {\n isHidden = true;\n }\n } else {\n if (selectionMode?.mode !== MultiSelectScope.AllGroups) {\n isHidden = true;\n }\n }\n\n return isHidden;\n }, [groupId, selectionMode, showHideOnSelection, totalItemsSelected]);\n\n const bulkActionsText = (\n \n \n \n );\n\n if (isHidden) {\n return
    ;\n }\n\n const multiSelectAll = (\n \n );\n\n if (isMobile) {\n return (\n \n \n {bulkActionsText}\n {!showHideOnSelection && }\n \n
    {children}
    \n {multiSelectAll}\n \n );\n }\n\n return (\n \n \n {multiSelectAll}\n \n {bulkActionsText}\n {children}\n {!showHideOnSelection && }\n \n \n
    \n );\n};\n","import { ReactNode } from 'react';\nimport { Stack } from 'src/core/ui';\n\ninterface MultiSelectActionsContainerProps {\n children: ReactNode;\n}\n\nexport const MultiSelectActionsContainer = ({\n children,\n}: MultiSelectActionsContainerProps) => {\n return (\n \n {children}\n \n );\n};\n","import { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\n\ninterface BulkActionsState {\n areBulkActionsEnabled: boolean;\n}\n\nexport const useBulkActionsState = (): BulkActionsState => {\n const { totalItemsSelected } = useMultiSelectionContext();\n\n return {\n areBulkActionsEnabled: totalItemsSelected > 0,\n };\n};\n","import { ComponentProps } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DatePickerInput, TimePickerInput } from 'src/core/POS/DateSelector';\nimport { PosTextArea } from 'src/core/POS/PosTextArea';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport type AddAdminHoldInputProps = ComponentProps & {\n adminHoldExpirationDate: Date | null;\n adminHoldNotes: string | null;\n onAdminHoldExpirationDateChange: (date: Date | null) => void;\n onAdminHoldNotesChange: (notes: string | null) => void;\n disabled?: boolean;\n};\n\nexport function AddAdminHoldInput({\n adminHoldExpirationDate,\n adminHoldNotes,\n onAdminHoldExpirationDateChange,\n onAdminHoldNotesChange,\n disabled,\n}: AddAdminHoldInputProps) {\n return (\n \n \n \n \n {\n const newDate = adminHoldExpirationDate\n ? new Date(adminHoldExpirationDate.getTime())\n : new Date();\n newDate.setFullYear(date.getFullYear());\n newDate.setMonth(date.getMonth());\n newDate.setDate(date.getDate());\n\n const now = new Date();\n if (newDate < now) {\n newDate.setTime(now.getTime());\n }\n\n onAdminHoldExpirationDateChange(newDate);\n }}\n disabled={disabled}\n minDate={new Date()}\n />\n \n \n \n {\n const newDate = adminHoldExpirationDate\n ? new Date(adminHoldExpirationDate.getTime())\n : new Date();\n\n if (t) {\n newDate.setFullYear(t.getFullYear());\n newDate.setMonth(t.getMonth());\n newDate.setDate(t.getDate());\n newDate.setHours(t.getHours());\n newDate.setMinutes(t.getMinutes());\n } else {\n newDate.setHours(0);\n newDate.setMinutes(0);\n }\n\n const now = new Date();\n if (newDate < now) {\n newDate.setTime(now.getTime());\n }\n\n onAdminHoldExpirationDateChange(newDate);\n }}\n disabled={disabled}\n />\n \n \n\n \n {\n onAdminHoldNotesChange(e.target.value);\n }}\n />\n \n );\n}\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { SelectionMode } from 'src/contexts/MultiSelectionContext/MultiSelectionContext.types';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { AddAdminHoldInput } from 'src/dialogs/AddAdminHoldDialog/AddAdminHoldInput';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n ListingDetails,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\nimport * as styles from './BulkAddListingAdminHoldDialog.css';\n\nexport type BulkAddListingAdminHoldDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n onOkay: (\n adminHoldExpirationDate: Date | null,\n adminHoldNotes: string | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport function BulkAddListingAdminHoldDialog({\n updateKey,\n onOkay,\n onCancel,\n ...rest\n}: BulkAddListingAdminHoldDialogProps) {\n const [isLoading, setIsLoading] = useState(false);\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n await refreshExpandedListItems();\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n ActionOutboxEntityType.Listing,\n BulkActionType.AdminHold,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const [adminHoldExpirationDate, setAdminHoldExpirationDate] =\n useState(null);\n const [adminHoldNotes, setAdminHoldNotes] = useState(null);\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(null, null, false, onPreviewReceived);\n } else {\n onOkay(\n adminHoldExpirationDate,\n adminHoldNotes,\n hasBackgroundBulkEditFeature,\n undefined,\n preview\n );\n }\n setIsLoading(false);\n },\n [\n onOkay,\n preview,\n hasBackgroundBulkEditFeature,\n adminHoldExpirationDate,\n adminHoldNotes,\n ]\n );\n const submittButtonRef = useRef(null);\n\n return (\n } />\n }\n onOpened={() => {\n setAdminHoldExpirationDate(null);\n setAdminHoldNotes(null);\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter') {\n submittButtonRef.current.click();\n }\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n
    \n \n
    \n \n \n );\n}\n","import { useBulkBroadcastActionsPermission } from 'src/components/common/BulkActions/BulkBroadcastActions/useBulkBroadcastActionsPermission';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const LaunchAddHold = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const { hasSellerAccountAdminPermission } =\n useBulkBroadcastActionsPermission();\n\n if (!hasSellerAccountAdminPermission) {\n return null;\n }\n\n return (\n \n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { BulkAddListingAdminHoldDialog } from 'src/dialogs/BulkEdits/BulkAddListingAdminHoldDialog';\nimport { SQL_MAX_DATEITME } from 'src/utils/dateTimeUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n Event,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_UPDATE_ADMIN_HOLD_UPDATE_KEY } from '../../InventoryActionDropdown.constants';\nimport { LaunchAddHold } from './LaunchAddHold';\n\nexport const useBulkAddHoldAction = (\n filterQueryWithEventIds: ListingQuery,\n\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const updateKey = event\n ? `adminHold-event-${event.viagVirtualId}`\n : INVENTORY_BULK_UPDATE_ADMIN_HOLD_UPDATE_KEY;\n const {\n refreshCatalog,\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkAddListingAdminHold,\n closeDialog: closeBulkAddListingAdminHold,\n } = useDialog(\n DialogId.BulkAddListingAdminHold,\n BulkAddListingAdminHoldDialog\n );\n\n const onSubmitAddHold = useCallback(\n async (\n adminHoldExpirationDate: Date | null,\n adminHoldNotes: string | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdateAdminHoldPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateAdminHoldPreview', error, {\n trackErrorData: { filterQueryWithEventIds, addHold: true },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdateAdminHold(\n preview!.preview,\n (adminHoldExpirationDate ?? SQL_MAX_DATEITME).toISOString(),\n adminHoldNotes,\n updateKey,\n supportBackgroundProcess\n );\n if (!supportBackgroundProcess) {\n if (succeeded) {\n if (!event) {\n await refreshCatalog();\n }\n await refreshExpandedListItems();\n }\n\n closeBulkAddListingAdminHold();\n }\n },\n (error) => {\n showErrorDialog(\n 'BulkEditListingClient.bulkUpdateAdminHold',\n error,\n {\n trackErrorData: {\n adminHoldExpirationDate,\n adminHoldNotes,\n preview,\n addHold: true,\n },\n }\n );\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n setIsLoading,\n activeAccountWebClientConfig,\n filterQueryWithEventIds,\n showErrorDialog,\n updateKey,\n closeBulkAddListingAdminHold,\n event,\n refreshExpandedListItems,\n refreshCatalog,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n if (event) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n openBulkAddListingAdminHold({\n event,\n updateKey,\n onOkay: onSubmitAddHold,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkAddListingAdminHold,\n });\n }}\n disabled={isLoading}\n />\n ),\n };\n};\n","import { MarketplaceLogo } from 'src/components/common/MarketplaceLogo';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { Switch } from 'src/core/interim/Switch';\nimport { vars } from 'src/core/themes';\nimport { SimpleTable } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getListingBroadcastIcon } from 'src/utils/inventoryUtils';\nimport { Event, ListingStatus, Marketplace } from 'src/WebApiController';\n\nimport * as styles from './MarketplaceDisplay.css';\n\nexport const MarketplaceDisplay = ({\n marketplace,\n marketplaceActive,\n isSelected,\n isActive,\n isLoading,\n event,\n isUKEvent,\n isViagogo,\n disabled,\n onListingBroadcastToggle,\n}: {\n marketplace: Marketplace;\n marketplaceActive: boolean;\n isSelected: boolean;\n isActive: boolean;\n isLoading: boolean;\n event?: Event;\n isUKEvent?: boolean;\n isViagogo?: boolean;\n disabled?: boolean;\n onListingBroadcastToggle: (\n isSelected: boolean,\n isBroadcasting: boolean,\n marketplace: Marketplace\n ) => void;\n}) => {\n const alwaysShowAsDelisted =\n isUKEvent && marketplace === Marketplace.StubHub && !isViagogo;\n\n const isChecked = !alwaysShowAsDelisted && isActive && isSelected;\n\n const { iconComponent: ListingBroadcastIcon } = getListingBroadcastIcon(\n alwaysShowAsDelisted || !marketplaceActive\n ? ListingStatus.Delisted // We always show Delisted for StubHub when event is in UK\n : isActive\n ? isLoading\n ? ListingStatus.ListingPending\n : ListingStatus.Listed\n : isLoading\n ? ListingStatus.DelistingPending\n : ListingStatus.Delisted\n );\n\n const listingStatusCell = (\n <>\n {isSelected && }\n \n \n \n \n );\n\n return (\n \n \n \n onListingBroadcastToggle(!isSelected, isChecked, marketplace)\n }\n />\n \n \n \n \n \n {\n onListingBroadcastToggle(isSelected, !isChecked, marketplace);\n }}\n />\n \n \n
    {listingStatusCell}
    \n
    \n \n );\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { isEqual } from 'lodash-es';\nimport {\n ComponentProps,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { useGetEventFullInfo } from 'src/hooks/useGetEventFullInfo';\nimport { UK_COUNTRY_CODES } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getIsInternationalEvent } from 'src/utils/eventWithDataUtils';\nimport { isMarketplaceActive } from 'src/utils/userUtils';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreview,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n Event,\n ListingDetails,\n Marketplace,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\nimport * as styles from './BulkEditBroadcastSettingsDialog.css';\nimport { MarketplaceDisplay } from './MarketplaceDisplay';\n\nexport type MarketplaceBroadcastSelectionMode = 'all' | 'none' | 'default';\n\nexport type BulkEditBroadcastSettingsDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n marketplaceBroadcastSelectionMode?: MarketplaceBroadcastSelectionMode;\n onOkay: (\n marketplacesToBroadcast: Marketplace[] | null,\n marketplacesToUnbroadcast: Marketplace[] | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreview\n ) => void;\n onCancel: () => void;\n event?: Event;\n};\n\nexport function BulkEditBroadcastSettingsDialog({\n updateKey,\n marketplaceBroadcastSelectionMode = 'default',\n onOkay,\n onCancel,\n event,\n ...rest\n}: BulkEditBroadcastSettingsDialogProps) {\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n await refreshExpandedListItems();\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n ActionOutboxEntityType.Listing,\n BulkActionType.UpdateBroadcastSettings,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const { venue } = useGetEventFullInfo(event);\n\n const isUKEvent = Boolean(\n event != null &&\n venue?.country?.code &&\n UK_COUNTRY_CODES.includes(venue.country.code.toUpperCase())\n );\n const isInternationalEvent = getIsInternationalEvent(venue?.country?.code);\n\n const { loginContext } = useAppContext();\n const marketplaceSettings =\n loginContext?.user?.activeAccount?.marketplaceSettings;\n\n const marketplacesActive = useMemo(() => {\n return (\n marketplaceSettings\n ?.filter((mk) => isMarketplaceActive(mk))\n .filter(\n (mk) =>\n event == null ||\n !isInternationalEvent ||\n mk.mkp === Marketplace.StubHub\n )\n .map((mk) => mk.mkp) ?? []\n );\n }, [event, isInternationalEvent, marketplaceSettings]);\n\n const [marketplacesSelected, setMarketplacesSelected] =\n useState(marketplacesActive);\n\n const [marketplacesToBroadcast, setMarketplacesToBroadcast] = useState<\n Marketplace[]\n >([]);\n const marketplacesToUnbroadcast = useMemo(() => {\n return (\n marketplacesSelected?.filter(\n (mk) => !marketplacesToBroadcast.includes(mk)\n ) ?? []\n );\n }, [marketplacesSelected, marketplacesToBroadcast]);\n\n useEffect(() => {\n if (marketplaceBroadcastSelectionMode === 'all') {\n if (!isEqual(marketplacesToBroadcast, marketplacesActive)) {\n setMarketplacesToBroadcast(marketplacesActive);\n }\n if (!isEqual(marketplacesSelected, marketplacesActive)) {\n setMarketplacesSelected(marketplacesActive);\n }\n }\n if (marketplaceBroadcastSelectionMode === 'none') {\n if (marketplacesToBroadcast.length !== 0) {\n setMarketplacesToBroadcast([]);\n }\n if (!isEqual(marketplacesSelected, marketplacesActive)) {\n setMarketplacesSelected(marketplacesActive);\n }\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [marketplaceBroadcastSelectionMode]);\n\n const onListingBroadcastToggle = useCallback(\n (isSelected: boolean, isBroadcasting: boolean, mk: Marketplace) => {\n if (isSelected) {\n if (!marketplacesSelected.includes(mk)) {\n setMarketplacesSelected((prev) => [...prev, mk]);\n }\n } else {\n setMarketplacesToBroadcast((prev) => prev.filter((m) => m !== mk));\n setMarketplacesSelected((prev) => prev.filter((m) => m !== mk));\n }\n if (isBroadcasting) {\n if (!marketplacesToBroadcast.includes(mk)) {\n setMarketplacesToBroadcast((prev) => [...prev, mk]);\n }\n } else {\n setMarketplacesToBroadcast((prev) => prev.filter((m) => m !== mk));\n }\n },\n [marketplacesSelected, marketplacesToBroadcast]\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(null, null, false, onPreviewReceived);\n } else {\n onOkay(\n marketplacesToBroadcast,\n marketplacesToUnbroadcast,\n hasBackgroundBulkEditFeature,\n undefined,\n preview!.preview\n );\n }\n setIsLoading(false);\n },\n [\n onOkay,\n marketplacesToBroadcast,\n marketplacesToUnbroadcast,\n preview,\n hasBackgroundBulkEditFeature,\n ]\n );\n const submittButtonRef = useRef(null);\n\n return (\n }\n />\n }\n onOpened={() => {\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter') {\n submittButtonRef.current.click();\n }\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n
    \n
    \n {marketplaceSettings\n ?.filter(\n (mk) =>\n event == null ||\n !isInternationalEvent ||\n mk.mkp === Marketplace.StubHub\n )\n .map((mk) => {\n const isActive = marketplacesToBroadcast.includes(mk.mkp);\n const isSelected = marketplacesSelected.includes(mk.mkp);\n const loading =\n isLoading ||\n progress?.step === BulkEditStep.Initializing ||\n progress?.step === BulkEditStep.InProgress;\n\n if (mk.mkp === Marketplace.StubHub) {\n return [\n ,\n ,\n ];\n }\n\n // event == null means we are in the \"Bulk edit for all listings\" flow\n return event == null || !isInternationalEvent\n ? [\n ,\n ]\n : [];\n })}\n
    \n
    \n \n \n );\n}\n","import { useCallback } from 'react';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { BulkEditBroadcastSettingsDialog } from 'src/dialogs/BulkEdits/BulkEditBroadcastSettingsDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { lookupEventInCatalog } from 'src/utils/eventWithDataUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditListingClient,\n BulkEditPreview,\n BulkEditPreviewWithDetails,\n EventWithData,\n Listing,\n ListingActionType,\n ListingDetails,\n ListingGroup,\n ListingQuery,\n ListingStatus,\n Marketplace,\n} from 'src/WebApiController';\n\nexport const useBulkEditBroadcastSettingsAction = ({\n affectedVisibleListingIds,\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event,\n}: {\n affectedVisibleListingIds: number[];\n filterQueryWithEventIds: ListingQuery;\n setIsLoading: (v: boolean) => void;\n isLoading?: boolean;\n event: EventWithData['event'];\n}) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const bulkBroadcastListingsKey = `broadcast-event-${event.viagVirtualId}`;\n\n const {\n data,\n updateItemInEvent,\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkEditBroadcastSettingsDialog,\n closeDialog: closeBulkEditBroadcastSettingsDialog,\n } = useDialog(\n DialogId.BulkEditBroadcastSettings,\n BulkEditBroadcastSettingsDialog\n );\n\n const {\n openDialog: openBulkEditUnbroadcastSettingsDialog,\n closeDialog: closeBulkEditUnbroadcastSettingsDialog,\n } = useDialog(\n DialogId.BulkEditBroadcastSettings,\n BulkEditBroadcastSettingsDialog\n );\n\n const onSubmitEditBroadcastSettings = useCallback(\n async (\n marketplacesToBroadcast: Marketplace[] | null,\n marketplacesToUnbroadcast: Marketplace[] | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreview\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const client = new BulkEditListingClient(\n activeAccountWebClientConfig\n );\n\n const preview = await client.bulkBroadcastListingsPreview(\n filterQueryWithEventIds\n );\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkBroadcastListingsPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (marketplacesToBroadcast && marketplacesToUnbroadcast) {\n await tryInvokeApi(\n async () => {\n // First check if this event has listings expanded, if so, we want to update their state immediately\n const eventWithData = lookupEventInCatalog(\n data,\n event.viagVirtualId,\n ...event.posIds\n );\n if (eventWithData?.entities?.listings?.length) {\n const affectedListings = eventWithData.entities.listings\n .flatMap((l) => [l, ...((l as ListingGroup)?.groupItems ?? [])])\n .filter((l) => affectedVisibleListingIds.includes(l.id));\n\n if (marketplacesToUnbroadcast.length) {\n affectedListings\n .filter((l) =>\n (l as Listing).actions.includes(\n ListingActionType.Unbroadcast\n )\n )\n .forEach((l) =>\n updateItemInEvent(\n {\n ...(l as Listing),\n status: ListingStatus.DelistingPending,\n },\n ActionOutboxEntityType.Listing\n )\n );\n }\n if (marketplacesToBroadcast.length) {\n affectedListings\n .filter((l) =>\n (l as Listing).actions.includes(ListingActionType.Broadcast)\n )\n .forEach((l) =>\n updateItemInEvent(\n {\n ...(l as Listing),\n status: ListingStatus.ListingPending,\n },\n ActionOutboxEntityType.Listing\n )\n );\n }\n }\n\n const succeeded = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkBroadcastListings(\n {\n item1: preview!,\n item2: marketplacesToBroadcast,\n item3: marketplacesToUnbroadcast,\n },\n bulkBroadcastListingsKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n // It's ok to close both, cuz only 1 can be opened anyway\n closeBulkEditBroadcastSettingsDialog();\n closeBulkEditUnbroadcastSettingsDialog();\n\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on listingDetails\n // we force re-loading the listing and newest broadcast state can be displayed\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n }\n },\n (error) => {\n showErrorDialog('onSubmitEditBroadcastSettings', error, {\n trackErrorData: {\n preview,\n marketplacesToBroadcast,\n marketplacesToUnbroadcast,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n affectedVisibleListingIds,\n bulkBroadcastListingsKey,\n closeBulkEditBroadcastSettingsDialog,\n closeBulkEditUnbroadcastSettingsDialog,\n data,\n event.posIds,\n event.viagVirtualId,\n filterQueryWithEventIds,\n refreshExpandedListItems,\n setActivePosEntity,\n setIsLoading,\n showErrorDialog,\n updateItemInEvent,\n ]\n );\n\n const openBulkEditBroadcastSettingsDialogWithEvent = useCallback(() => {\n openBulkEditBroadcastSettingsDialog({\n event,\n updateKey: bulkBroadcastListingsKey,\n filterQuery: filterQueryWithEventIds,\n marketplaceBroadcastSelectionMode: 'all',\n onOkay: onSubmitEditBroadcastSettings,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkEditBroadcastSettingsDialog,\n });\n }, [\n bulkBroadcastListingsKey,\n closeBulkEditBroadcastSettingsDialog,\n event,\n filterQueryWithEventIds,\n onSubmitEditBroadcastSettings,\n openBulkEditBroadcastSettingsDialog,\n setIsLoading,\n ]);\n\n const openBulkEditUnbroadcastSettingsDialogWithEvent = useCallback(() => {\n openBulkEditUnbroadcastSettingsDialog({\n event,\n updateKey: bulkBroadcastListingsKey,\n filterQuery: filterQueryWithEventIds,\n marketplaceBroadcastSelectionMode: 'none',\n onOkay: onSubmitEditBroadcastSettings,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkEditUnbroadcastSettingsDialog,\n });\n }, [\n bulkBroadcastListingsKey,\n closeBulkEditUnbroadcastSettingsDialog,\n event,\n filterQueryWithEventIds,\n onSubmitEditBroadcastSettings,\n openBulkEditUnbroadcastSettingsDialog,\n setIsLoading,\n ]);\n\n const onBroadcastAllClick = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setListItemExpansion(true, [event.viagVirtualId]);\n openBulkEditBroadcastSettingsDialogWithEvent();\n },\n [\n event.viagVirtualId,\n openBulkEditBroadcastSettingsDialogWithEvent,\n setListItemExpansion,\n ]\n );\n\n const onUnbroadcastAllClick = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setListItemExpansion(true, [event.viagVirtualId]);\n openBulkEditUnbroadcastSettingsDialogWithEvent();\n },\n [\n event.viagVirtualId,\n openBulkEditUnbroadcastSettingsDialogWithEvent,\n setListItemExpansion,\n ]\n );\n\n return {\n dropDown: (\n <>\n \n \n \n \n \n \n \n ),\n };\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n ListingDetails,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport type BulkRemoveAdminHoldDialogProps = ComponentProps & {\n updateKey: string;\n onOkay: (\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport const BulkRemoveAdminHoldDialog = ({\n updateKey,\n onCancel,\n onOkay,\n ...rest\n}: BulkRemoveAdminHoldDialogProps) => {\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n await refreshExpandedListItems();\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n ActionOutboxEntityType.Listing,\n BulkActionType.AdminHold,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(false, onPreviewReceived);\n } else {\n onOkay(hasBackgroundBulkEditFeature, undefined, preview);\n }\n setIsLoading(false);\n },\n [onOkay, preview, hasBackgroundBulkEditFeature]\n );\n\n const submittButtonRef = useRef(null);\n\n return (\n } />\n }\n onOpened={initJob}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter') {\n submittButtonRef.current.click();\n }\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n {...rest}\n >\n \n \n \n \n );\n};\n","import { useBulkBroadcastActionsPermission } from 'src/components/common/BulkActions/BulkBroadcastActions/useBulkBroadcastActionsPermission';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const LaunchRemoveHold = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const { hasSellerAccountAdminPermission } =\n useBulkBroadcastActionsPermission();\n\n if (!hasSellerAccountAdminPermission) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { BulkRemoveAdminHoldDialog } from 'src/dialogs/BulkEdits/BulkRemoveHoldDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n Event,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_UPDATE_ADMIN_HOLD_UPDATE_KEY } from '../../InventoryActionDropdown.constants';\nimport { LaunchRemoveHold } from './LaunchRemoveHold';\n\nexport const useBulkRemoveHoldAction = (\n filterQueryWithEventIds: ListingQuery,\n\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const updateKey = event\n ? `adminHold-event-${event.viagVirtualId}`\n : INVENTORY_BULK_UPDATE_ADMIN_HOLD_UPDATE_KEY;\n const {\n refreshCatalog,\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const { setSelectionMode } = useMultiSelectionContext();\n\n const {\n openDialog: openBulkRemoveHoldDialog,\n closeDialog: closeBulkRemoveHoldDialog,\n } = useDialog(DialogId.BulkRemoveHold, BulkRemoveAdminHoldDialog);\n\n const onSubmit = useCallback(\n async (\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdateAdminHoldPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateAdminHoldPreview', error, {\n trackErrorData: { filterQueryWithEventIds, removeHold: true },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdateAdminHold(\n preview!.preview,\n null,\n null,\n updateKey,\n supportBackgroundProcess\n );\n if (!supportBackgroundProcess) {\n if (succeeded) {\n if (!event) {\n await refreshCatalog();\n }\n setSelectionMode();\n await refreshExpandedListItems();\n }\n }\n },\n (error) => {\n showErrorDialog(\n 'BulkEditListingClient.bulkUpdateAdminHold',\n error,\n {\n trackErrorData: { preview, removeHold: true },\n }\n );\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n event,\n filterQueryWithEventIds,\n refreshCatalog,\n refreshExpandedListItems,\n setIsLoading,\n setSelectionMode,\n showErrorDialog,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n if (event) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n openBulkRemoveHoldDialog({\n updateKey,\n onOkay: onSubmit,\n onCancel: closeBulkRemoveHoldDialog,\n onClosed: () => {\n setIsLoading(false);\n },\n });\n }}\n disabled={isLoading}\n />\n ),\n };\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useMemo, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport type BulkUngroupListingsDialogProps = ComponentProps & {\n updateKey: string;\n isLoading?: boolean;\n onOkay: (\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport const BulkUngroupListingsDialog = ({\n updateKey,\n isLoading,\n onOkay,\n onCancel,\n ...rest\n}: BulkUngroupListingsDialogProps) => {\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n await refreshExpandedListItems();\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel?.();\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n ActionOutboxEntityType.Listing,\n BulkActionType.UngroupListings,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature = useMemo(\n () => bulkEditHub?.state === HubConnectionState.Connected,\n [bulkEditHub?.state]\n );\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n if (onPreviewReceived) {\n onOkay(false, onPreviewReceived);\n } else {\n onOkay(hasBackgroundBulkEditFeature, undefined, preview);\n }\n },\n [onOkay, preview, hasBackgroundBulkEditFeature]\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const submittButtonRef = useRef(null);\n\n return (\n } />\n }\n onOpened={initJob}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter') {\n submittButtonRef.current.click();\n }\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Permission } from 'src/WebApiController';\n\nexport const LaunchUngroupListings = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const hasPermission = useUserHasAnyOfPermissions(\n Permission.Inventory_BroadcastUnbroadcast,\n Permission.Inventory_BroadcastUnbroadcastOnIsPricerOf,\n Permission.Inventory_BroadcastUnbroadcastOnPurchasedBy\n );\n\n if (!hasPermission) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { BulkUngroupListingsDialog } from 'src/dialogs/BulkEdits/BulkUngroupListingsDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n Event,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_UNGROUP_LISTINGS_UPDATE_KEY } from '../../InventoryActionDropdown.constants';\nimport { LaunchUngroupListings } from './LaunchUngroupListings';\n\nexport const useBulkUngroupListings = (\n filterQueryWithEventIds: ListingQuery,\n\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const updateKey = event\n ? `inventory-ungroup-listing-event-${event.viagVirtualId}`\n : INVENTORY_BULK_UNGROUP_LISTINGS_UPDATE_KEY;\n\n const {\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkUngroupListingsDialog,\n closeDialog: closeBulkUngroupListingsDialog,\n } = useDialog(DialogId.BulkUngroupListings, BulkUngroupListingsDialog);\n\n const onSubmit = useCallback(\n async (\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUngroupListingsPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUngroupListingsPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUngroupListings(\n preview!.preview,\n updateKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n await refreshExpandedListItems();\n }\n\n closeBulkUngroupListingsDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkUngroupListings', error, {\n trackErrorData: {\n preview,\n error,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeBulkUngroupListingsDialog,\n filterQueryWithEventIds,\n refreshExpandedListItems,\n setIsLoading,\n showErrorDialog,\n updateKey,\n ]\n );\n\n const onChangeClick = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (event) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n openBulkUngroupListingsDialog({\n updateKey,\n isLoading,\n onOkay: onSubmit,\n entityType: ActionOutboxEntityType.Listing,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkUngroupListingsDialog,\n });\n },\n [\n closeBulkUngroupListingsDialog,\n event,\n isLoading,\n onSubmit,\n openBulkUngroupListingsDialog,\n setIsLoading,\n setListItemExpansion,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n \n ),\n };\n};\n","import { useState } from 'react';\nimport { useBulkBroadcastActionsPermission } from 'src/components/common/BulkActions/BulkBroadcastActions/useBulkBroadcastActionsPermission';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { useInventoryEventBulkActionsState } from 'src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/useInventoryEventBulkActionsState';\nimport { useBulkAddHoldAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkAddHoldAction';\nimport { useBulkEditBroadcastSettingsAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkEditBroadcastSettingsAction/useBulkEditBroadcastSettingsAction';\nimport { useBulkRemoveHoldAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkRemoveHoldAction';\nimport { useBulkUngroupListings } from 'src/components/Listings/InventoryActionDropdown/components/LaunchUngroupListingsAction';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EventWithData } from 'src/WebApiController';\n\nexport interface BroadcastActionsProps {\n event: EventWithData['event'];\n isEventPage: boolean;\n listingCount: number;\n}\n\nexport const BroadcastActions = ({ event }: BroadcastActionsProps) => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n const [isLoading, setIsLoading] = useState(false);\n const { affectedVisibleListingIds, filterQueryWithEventIds } =\n useInventoryEventBulkActionsState(event);\n\n const { hasBroadcastPermission } = useBulkBroadcastActionsPermission();\n\n const bulkAddHold = useBulkAddHoldAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const bulkRemoveHold = useBulkRemoveHoldAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const bulkUngroupListings = useBulkUngroupListings(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const bulkEditBroadcastSettings = useBulkEditBroadcastSettingsAction({\n affectedVisibleListingIds,\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event,\n });\n\n return (\n <>\n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {hasBroadcastPermission && bulkEditBroadcastSettings.dropDown}\n {bulkAddHold.dropDown}\n {bulkRemoveHold.dropDown}\n \n \n );\n};\n","import { ChangeEvent } from 'react';\nimport { useState } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { Slider } from 'src/core/ui/Slider';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { useAvailableAutopricingModes } from 'src/hooks/useAvailableAutopricingModes';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { DetailGroup, DetailSection, SectionContent } from 'src/modals/common';\nimport { ResetIcon } from 'src/svgs/Viagogo';\nimport {\n OUTLIER_MODE_KTH_LOWEST_STRATEGY,\n OutlierModeKthLowestStrategy,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { STANDARD_DEVIATIONS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { getCompleteEventConfigScoreOverrides } from 'src/utils/seatScoreUtils';\nimport {\n AutoPricingCompListingMode,\n AutoPricingOutlierMode,\n Feature,\n ListingGroup,\n} from 'src/WebApiController';\n\nimport * as styles from './SectionRowIdFilter.css';\nimport { useListingGroupAutoPricingSettings } from './useListingGroupAutoPricingSettings';\n\nexport const BulkEditAdvancePricingSettings = () => {\n const [outlierKthLowestStrategy, setKthLowestOutlierStrategy] = useState<\n OutlierModeKthLowestStrategy | undefined\n >(OutlierModeKthLowestStrategy.Relative);\n\n const {\n onResetAdvanceSettings,\n\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n\n compListingMode,\n compListingQuantityScoreAdjustmentEnabled,\n compListingExcludeFanInventory,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacing,\n\n onCompListingChange,\n onCircuitBreakerChange,\n onOutlierChange,\n } = useListingGroupAutoPricingSettings();\n\n const { activeConfigOverride, venueMapInfo } = useEventMapContext();\n const hasExcludeFanInventoryFeature = useUserHasFeature(\n Feature.ExcludeFanInventory\n );\n\n const scores = getCompleteEventConfigScoreOverrides(\n venueMapInfo?.sectionScores,\n activeConfigOverride?.scoreOverrides,\n false\n );\n\n const { outlierModes, outlierModesDisabled } = useAvailableAutopricingModes(\n true,\n null,\n null,\n Boolean(scores?.some((s) => s.score))\n );\n\n return (\n }\n >\n \n <>\n {compListingMode === AutoPricingCompListingMode.QualityScore && (\n \n \n }\n >\n ) => e.stopPropagation()}\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (\n isChecked !== compListingQuantityScoreAdjustmentEnabled\n ) {\n onCompListingChange({\n compListingQuantityScoreAdjustmentEnabledNew: isChecked,\n });\n }\n }}\n />\n \n \n )}\n {hasExcludeFanInventoryFeature && (\n \n }\n >\n ) => e.stopPropagation()}\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (isChecked !== compListingExcludeFanInventory) {\n onCompListingChange({\n compListingExcludeFanInventoryNew: isChecked,\n });\n }\n }}\n />\n \n \n )}\n \n }\n >\n {\n onCircuitBreakerChange(\n undefined,\n undefined,\n undefined,\n undefined,\n Math.round(count)\n );\n }}\n />\n \n \n \n }>\n e.stopPropagation()}\n onChange={(v) => {\n onOutlierChange({\n outlierModeNew: v as AutoPricingOutlierMode,\n });\n }}\n />\n \n \n {outlierMode == AutoPricingOutlierMode.StandardDeviations ? (\n \n }>\n e.stopPropagation()}\n onChange={(v) => {\n const value = parseInt(v ?? '');\n if (value != null && !isNaN(value)) {\n onOutlierChange({\n outlierModeNew:\n AutoPricingOutlierMode.StandardDeviations,\n outlierStandardDeviationsNew: value,\n });\n } else {\n onOutlierChange({\n outlierModeNew:\n AutoPricingOutlierMode.StandardDeviations,\n outlierStandardDeviationsNew: null,\n });\n }\n }}\n />\n \n \n ) : outlierMode == AutoPricingOutlierMode.KthLowest ? (\n \n \n \n {\n const v = parseInt(e.target.value);\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: v,\n });\n }}\n />\n \n {outlierKthLowestStrategy ==\n OutlierModeKthLowestStrategy.Relative ? (\n {\n let v = parseInt(e.target.value);\n if (v < 0) {\n v = 0;\n } else if (v > 100) {\n v = 100;\n }\n\n if (!isNaN(v)) {\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: undefined,\n outlierKthLowestLimitAbsoluteSpacingNew: null,\n outlierKthLowestLimitRelativeSpacingNew: v,\n });\n }\n }}\n />\n ) : (\n {\n const v = parseInt(e.target.value);\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: undefined,\n outlierKthLowestLimitAbsoluteSpacingNew: v,\n outlierKthLowestLimitRelativeSpacingNew: null,\n });\n }}\n />\n )}\n {\n if (!value) {\n return;\n }\n\n const strat = value as OutlierModeKthLowestStrategy;\n setKthLowestOutlierStrategy(strat);\n }}\n />\n \n \n \n ) : null}\n \n \n \n {\n const v = parseFloat(e.target.value) / 100;\n onCircuitBreakerChange(\n undefined,\n undefined,\n v,\n undefined,\n undefined\n );\n }}\n />\n \n {\n const v = parseInt(e.target.value);\n onCircuitBreakerChange(\n undefined,\n undefined,\n undefined,\n v,\n undefined\n );\n }}\n />\n \n \n \n \n }\n textContentId={ContentId.ResetSettings}\n onClick={onResetAdvanceSettings}\n />\n \n \n \n \n );\n};\n","import { ChangeEvent, useMemo } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { PillList } from 'src/core/ui/PillList';\nimport { Slider } from 'src/core/ui/Slider';\nimport { Switch as CoreSwitch } from 'src/core/ui/Switch';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { SectionSelectDialog } from 'src/dialogs/SectionSelectDialog';\nimport { useAvailableAutopricingModes } from 'src/hooks/useAvailableAutopricingModes';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useCompQuantitiesFilter } from 'src/hooks/useCompQuantitiesFilter';\nimport { useUndercutAmountSettings } from 'src/hooks/useUndercutAmountSettings';\nimport { DetailGroup } from 'src/modals/common';\nimport { RestrictSelectionType } from 'src/modals/ListingDetails/components/PricingSection/AutoPricingSection.types';\nimport { EditIcon, IconsFill, PlusIcon, ResetIcon } from 'src/svgs/Viagogo';\nimport {\n convertSliderValueFromServer,\n convertSliderValueToServer,\n getUndercutPriceRepresentingMode,\n SLIDER_MAX,\n SLIDER_MIN,\n UNDERCUT_PRICE_MODE_OPTIONS,\n UndercutPriceSettingsMode,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { getCompleteEventConfigScoreOverrides } from 'src/utils/seatScoreUtils';\nimport {\n AutoPricingCompListingMode,\n AutoPricingUndercutMode,\n} from 'src/WebApiController';\n\nimport * as styles from './SectionRowIdFilter.css';\nimport { useListingGroupAutoPricingSettings } from './useListingGroupAutoPricingSettings';\n\nexport const BulkEditAutoPricingSettingsSection = ({\n disabled,\n}: {\n disabled?: boolean;\n}) => {\n const sectionSelectDialog = useBasicDialog();\n\n const {\n uiCurrency,\n\n onResetSettings,\n eventPricingSettings,\n accountPricingSettings,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingSelectedSectionSettings,\n compListingOnlyForSelectedSectionsEnabled,\n compListingOnlyForSameZoneEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n\n compListingFloorError,\n compListingSelectedSectionError,\n undercutAbsoluteAmountError,\n undercutRelativeAmountError,\n\n onUndercutChange,\n onCompListingChange,\n\n resetListingAutoPricingSettings,\n setResetListingAutoPricingSettings,\n } = useListingGroupAutoPricingSettings();\n\n const {\n undercutAbsoluteAmountMode,\n setUndercutAbsoluteAmountMode,\n undercutRelativeAmountMode,\n setUndercutRelativeAmountMode,\n } = useUndercutAmountSettings(undercutAbsoluteAmount, undercutRelativeAmount);\n\n const {\n quantitiesFilterOptions,\n quantitiesFilterValue,\n onUpdateQuantitiesFilter,\n } = useCompQuantitiesFilter(\n compListingQuantityScoreAdjustmentOverrideJson,\n onCompListingChange\n );\n\n const { activeConfigOverride, venueMapInfo } = useEventMapContext();\n\n const scores = getCompleteEventConfigScoreOverrides(\n venueMapInfo?.sectionScores,\n activeConfigOverride?.scoreOverrides,\n false\n );\n\n const restrictSelection = Boolean(\n compListingOnlyForSameZoneEnabled ||\n compListingOnlyForSelectedSectionsEnabled\n );\n\n const showCompListingSettingsDetails = !(\n !compListingMode ||\n compListingMode === AutoPricingCompListingMode.SameZone ||\n compListingMode === AutoPricingCompListingMode.SameEvent ||\n compListingMode === AutoPricingCompListingMode.ParentListing\n );\n const showCompListingRestictSelectionDetails =\n compListingMode != null &&\n (compListingMode === AutoPricingCompListingMode.QualityScore ||\n compListingMode === AutoPricingCompListingMode.SameEvent ||\n compListingMode === AutoPricingCompListingMode.SameZone);\n\n const {\n compListingModes,\n compListingModesDisabled,\n undercutModes,\n undercutModesDisabled,\n restrictSelectionTypes,\n } = useAvailableAutopricingModes(\n true,\n undercutMode,\n compListingMode,\n Boolean(scores?.some((s) => s.score)),\n false,\n false,\n compListingOnlyForSelectedSectionsEnabled\n );\n\n const selectedSectionsPills = useMemo(\n () =>\n compListingSelectedSectionSettings?.sectionIdFilter\n ?.map((sectionId) => {\n const section = venueMapInfo?.sections.find(\n (section) => sectionId === section.id\n );\n return {\n value: section?.id.toString() ?? '',\n display: section?.name ?? '',\n };\n })\n .filter((info) => info.value && info.display) ?? [],\n [\n compListingSelectedSectionSettings?.sectionIdFilter,\n venueMapInfo?.sections,\n ]\n );\n\n const isDealScoreMode =\n (undercutMode ??\n eventPricingSettings?.undercutMode ??\n accountPricingSettings?.undercutMode) === AutoPricingUndercutMode.Deal;\n\n return (\n <>\n \n \n
    \n \n
    \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n if (isChecked !== resetListingAutoPricingSettings) {\n setResetListingAutoPricingSettings(isChecked);\n }\n }}\n />\n
    \n
    \n \n \n \n \n \n
    \n \n
    \n e.stopPropagation()}\n onChange={(v) => {\n if (v) {\n onCompListingChange({\n compListingModeNew: v as AutoPricingCompListingMode,\n });\n } else {\n onCompListingChange({\n compListingModeNew: null,\n compListingFloorNew: null,\n compListingCeilingNew: null,\n });\n }\n\n if (v === AutoPricingCompListingMode.ParentListing) {\n onUndercutChange(AutoPricingUndercutMode.Simple);\n }\n }}\n />\n
    \n
    \n\n {showCompListingSettingsDetails && (\n <>\n \n \n
    \n \n
    \n \n {\n const v = parseFloat(e.target.value);\n if (!isNaN(v)) {\n if (\n v >= SLIDER_MIN * 100 &&\n v <= SLIDER_MAX * 100 &&\n convertSliderValueToServer(v) < compListingCeiling\n ) {\n onCompListingChange({\n compListingFloorNew: convertSliderValueToServer(v),\n });\n }\n }\n }}\n postfixDisplay=\"%\"\n placeholder={\n compListingMode == null\n ? eventPricingSettings?.compListingFloor?.toString() ??\n accountPricingSettings?.compListingFloor?.toString() ??\n undefined\n : undefined\n }\n />\n \n
    \n \n
    \n \n {\n const v = parseFloat(e.target.value);\n if (!isNaN(v)) {\n if (\n v >= SLIDER_MIN * 100 &&\n v <= SLIDER_MAX * 100 &&\n convertSliderValueToServer(v) > compListingFloor\n ) {\n onCompListingChange({\n compListingCeilingNew: convertSliderValueToServer(v),\n });\n }\n }\n }}\n postfixDisplay=\"%\"\n placeholder={\n compListingMode == null\n ? eventPricingSettings?.compListingCeiling?.toString() ??\n accountPricingSettings?.compListingCeiling?.toString() ??\n undefined\n : undefined\n }\n />\n \n
    \n \n
    \n
    \n
    \n \n \n (\n {roundToPrecision(val, 0)}%\n )}\n onValueChange={([floor, ceil]) => {\n onCompListingChange({\n compListingFloorNew: convertSliderValueToServer(floor),\n compListingCeilingNew: convertSliderValueToServer(ceil),\n });\n }}\n />\n
    \n \n
    \n
    \n \n \n \n )}\n \n }\n style={{ width: '100%' }}\n >\n \n \n \n\n {showCompListingRestictSelectionDetails && (\n \n }>\n ) => e.stopPropagation()}\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (isChecked) {\n if (\n !compListingOnlyForSameZoneEnabled &&\n !compListingOnlyForSelectedSectionsEnabled\n ) {\n // set zone by default\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: true,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n }\n } else {\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n }\n }}\n />\n \n {restrictSelection && (\n \n
    \n \n
    \n e.stopPropagation()}\n onChange={(v) => {\n if (v === RestrictSelectionType.SameZone) {\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: true,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n } else {\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n });\n }\n }}\n />\n
    \n )}\n {compListingOnlyForSelectedSectionsEnabled && (\n \n \n {compListingSelectedSectionSettings?.sectionIdFilter?.length ? (\n <>\n \n \n \n }\n textContentId={ContentId.EditSections}\n onClick={sectionSelectDialog.launchDialog}\n disabled={disabled}\n style={{ paddingLeft: 0, paddingRight: 0 }}\n />\n \n ) : (\n \n }\n textContentId={ContentId.SelectSections}\n onClick={sectionSelectDialog.launchDialog}\n disabled={disabled}\n style={{ padding: 0 }}\n />\n )}\n \n \n )}\n
    \n )}\n \n \n \n \n \n
    \n \n
    \n e.stopPropagation()}\n onChange={(v) => {\n if (v) {\n onUndercutChange(v as AutoPricingUndercutMode);\n } else {\n onUndercutChange(null, null, null);\n }\n }}\n />\n
    \n \n
    \n
    \n
    \n {isDealScoreMode && (\n
    \n \n
    \n )}\n \n \n {\n if (!value) return;\n\n const mode = value as UndercutPriceSettingsMode;\n setUndercutRelativeAmountMode(mode);\n\n if (undercutRelativeAmount) {\n const curAmountAbs = Math.abs(undercutRelativeAmount);\n onUndercutChange(\n undefined,\n undefined,\n getUndercutPriceRepresentingMode(curAmountAbs, mode)\n );\n }\n }}\n />\n\n
    \n \n
    \n\n \n {\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n const relativeValue = Math.min(v, 100) / 100;\n if (\n undercutRelativeAmountMode ===\n UndercutPriceSettingsMode.Premium\n ) {\n onUndercutChange(undefined, undefined, -relativeValue);\n } else {\n onUndercutChange(undefined, undefined, relativeValue);\n }\n } else {\n onUndercutChange(undefined, undefined, null);\n }\n }}\n />\n \n
    \n \n
    \n {\n if (!value) return;\n\n const mode = value as UndercutPriceSettingsMode;\n setUndercutAbsoluteAmountMode(mode);\n\n if (undercutAbsoluteAmount) {\n const curAmountAbs = Math.abs(undercutAbsoluteAmount);\n onUndercutChange(\n undefined,\n getUndercutPriceRepresentingMode(curAmountAbs, mode)\n );\n }\n }}\n />\n
    \n \n
    \n \n {\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n if (\n undercutAbsoluteAmountMode ===\n UndercutPriceSettingsMode.Premium\n ) {\n onUndercutChange(undefined, -v);\n } else {\n onUndercutChange(undefined, v);\n }\n } else {\n onUndercutChange(undefined, null);\n }\n }}\n />\n \n
    \n
    \n \n }\n textContentId={ContentId.ResetSettings}\n onClick={onResetSettings}\n />\n \n\n {\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter: selectedSections.map((s) => s.id),\n rowIdFilter: compListingSelectedSectionSettings?.rowIdFilter ?? [],\n sectionRowIdFilter:\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {},\n };\n onCompListingChange({ compListingSelectedSectionSettingsNew });\n sectionSelectDialog.closeDialog();\n }}\n onClosed={sectionSelectDialog.closeDialog}\n />\n \n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { SimpleTable } from 'src/core/ui';\nimport { useEventMarketplaceSettings } from 'src/hooks/useEventMarketplaceSettings';\nimport { MultiDetailSection } from 'src/modals/common';\nimport { BulkEditListingGroupSettingsFields } from 'src/modals/GroupListings/components/groupingTypes';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { compareMarketplace } from 'src/utils/eventWithDataUtils';\nimport { isMarketplaceActive } from 'src/utils/userUtils';\nimport { Event, Marketplace } from 'src/WebApiController';\n\nimport { MarketplaceDisplay } from './MarketplaceDisplay';\nimport * as styles from './MarketplaceDisplay.css';\n\n/**\n * Get marketplace id from marketplace enum.\n * This assumes the enum order is aligned with the Marketplace.Marketplace table\n */\nconst getMarketplaceIdFromMarketplace = (marketplace: Marketplace) => {\n let marketplaceId = 0;\n Object.values(Marketplace).forEach((mp, index) => {\n if (mp === marketplace) {\n marketplaceId = index + 1;\n }\n });\n return marketplaceId;\n};\n\ntype BulkEditListingGroupSettingMarketplaceBroadcastProps = {\n event?: Event;\n};\n\nexport const BulkEditListingGroupSettingsMarketplaceBroadcast = ({\n event,\n}: BulkEditListingGroupSettingMarketplaceBroadcastProps) => {\n const { watch, setValue } =\n useFormContext();\n\n const marketplaceSettings = watch('marketplaceSettings');\n\n const { eventMarketplaceSettings, isUKEvent, isInternationalEvent } =\n useEventMarketplaceSettings(event);\n\n const onListingBroadcastToggle = useCallback(\n (isSelected: boolean, isBroadcasting: boolean, mp: Marketplace) => {\n const marketplaceId = getMarketplaceIdFromMarketplace(mp);\n const copied = { ...marketplaceSettings?.listingMarketplaceSettings };\n\n if (isSelected) {\n copied[marketplaceId] = {\n listingBroadcastStateId: isBroadcasting ? 2 : 1,\n };\n } else {\n delete copied[marketplaceId];\n }\n\n setValue('marketplaceSettings', { listingMarketplaceSettings: copied });\n },\n [marketplaceSettings, setValue]\n );\n\n const marketplacesSelected = useMemo(() => {\n const selected: Marketplace[] = [];\n const settings = marketplaceSettings?.listingMarketplaceSettings ?? [];\n const includedIds = Object.keys(settings);\n Object.values(Marketplace).forEach((mp, index) => {\n if (includedIds.includes(index + 1 + '')) {\n selected.push(mp);\n }\n });\n return selected;\n }, [marketplaceSettings]);\n\n const marketplaceToStateId = useMemo(() => {\n const marketplaceToId = {} as Record;\n const settings = marketplaceSettings?.listingMarketplaceSettings;\n const includedIds = settings != null ? Object.keys(settings) : [];\n Object.values(Marketplace).forEach((mp, index) => {\n const key = index + 1 + '';\n if (includedIds.includes(key) && settings != null) {\n marketplaceToId[mp] = settings[key].listingBroadcastStateId;\n }\n });\n return marketplaceToId;\n }, [marketplaceSettings]);\n\n return (\n }\n extraContent={[]}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {eventMarketplaceSettings\n .toSorted((a, b) => compareMarketplace(a.mkp, b.mkp))\n .flatMap((mk) => {\n const isSelected = marketplacesSelected.includes(mk.mkp);\n const isActive = marketplaceToStateId[mk.mkp] === 2;\n\n if (mk.mkp === Marketplace.StubHub) {\n return [\n ,\n ,\n ];\n }\n\n if (!event || !isInternationalEvent) {\n return [\n ,\n ];\n }\n\n // Only support Stubhub/Viagogo for international events\n return [];\n })}\n \n \n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { ChangeEvent, useState } from 'react';\nimport {\n UseFormRegister,\n UseFormSetValue,\n UseFormWatch,\n} from 'react-hook-form';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport * as Tabs from 'src/core/ui/Tabs';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { DetailSection, SectionContent } from 'src/modals/common';\nimport { BulkEditAdvancePricingSettings } from 'src/modals/GroupListings/components/AutoPricingSettings/BulkEditAdvancePricingSettings';\nimport { BulkEditAutoPricingSettingsSection } from 'src/modals/GroupListings/components/AutoPricingSettings/BulkEditAutoPricingSettingsSection';\nimport { BulkEditListingGroupSettingsFields } from 'src/modals/GroupListings/components/groupingTypes';\nimport { getQuantitiesOptions } from 'src/modals/GroupListings/components/groupingUtils';\nimport { BulkEditListingGroupSettingsMarketplaceBroadcast } from 'src/modals/GroupListings/components/MarketplaceBroadcast/BulkEditListingGroupSettingsMarketplaceBroadcast';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { Event, Feature } from 'src/WebApiController';\n\nimport * as styles from './BulkEditListingGroupSettingsDialog.css';\n\nenum GroupListingsTab {\n Groupings = 'groupings',\n Broadcast = 'broadcast',\n AutoPricing = 'autopricing',\n}\n\nexport const BulkEditListingGroupSettingsDialogBody = ({\n event,\n currency,\n watch,\n register,\n setValue,\n}: {\n event: Event;\n currency: string;\n setValue: UseFormSetValue;\n watch: UseFormWatch;\n register: UseFormRegister;\n}) => {\n const [activeTab, setActiveTab] = useState(\n GroupListingsTab.Groupings\n );\n\n return (\n <>\n \n \n \n \n \n setActiveTab(value as GroupListingsTab)}\n style={{ height: '100%' }}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n <>\n }>\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport const BulkEditListingGroupSettingsInput = ({\n currency,\n watch,\n register,\n setValue,\n}: {\n currency: string;\n setValue: UseFormSetValue;\n watch: UseFormWatch;\n register: UseFormRegister;\n}) => {\n // Setup hooks\n const { getUiCurrency } = useLocalizationContext();\n\n // Variables\n const uiCurrency = getUiCurrency(currency);\n const dontChangePlaceholder = useContent(ContentId.DontChange);\n\n // Form values\n const desiredActiveListings = watch('desiredActiveListings');\n const deprioritizedQuantities = watch('deprioritizedQuantities');\n const undercutAbsoluteAmount = watch('rankPremiums.undercutAbsoluteAmount');\n const undercutRelativeAmount = watch('rankPremiums.undercutRelativeAmount');\n\n // FF\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n return (\n \n {hasAutoPricingFeature && (\n }\n style={{ flex: '0.5' }}\n >\n {\n const v = parseFloat(e.target.value);\n if (isNaN(v)) {\n setValue(`rankPremiums.undercutAbsoluteAmount`, null);\n return;\n }\n\n setValue(`rankPremiums.undercutAbsoluteAmount`, v);\n }}\n value={undercutAbsoluteAmount ?? undefined}\n placeholder={dontChangePlaceholder}\n />\n\n {\n const v = parseFloat(e.target.value);\n if (isNaN(v)) {\n setValue(`rankPremiums.undercutRelativeAmount`, null);\n return;\n }\n\n let relativeValue = null;\n if (v >= 0 && v <= Number.MAX_VALUE) {\n relativeValue = Math.min(v, 100) / 100;\n }\n setValue(`rankPremiums.undercutRelativeAmount`, relativeValue);\n }}\n value={\n undercutRelativeAmount != null\n ? roundToPrecision(Math.abs(undercutRelativeAmount) * 100, 8)\n : ''\n }\n />\n \n )}\n }\n style={{ width: '200px' }}\n >\n ) => {\n let v = parseInt(e.target.value);\n if (isNaN(v)) {\n setValue(`desiredActiveListings`, null);\n return;\n }\n\n if (v < 0) {\n v = 0;\n }\n setValue(`desiredActiveListings`, v);\n }}\n />\n \n }\n style={{ width: '190px' }}\n >\n {\n if (newValues.length === 0) {\n setValue('deprioritizedQuantities', null);\n return;\n }\n\n if (!isEqual(newValues, deprioritizedQuantities)) {\n setValue('deprioritizedQuantities', newValues);\n }\n }}\n valueOptionsContent={getQuantitiesOptions()}\n />\n \n \n );\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useRef } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { useBulkEditHubContext } from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { BulkEditFooter } from 'src/dialogs/BulkEdits/common/BulkEditFooter';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { BulkEditListingGroupSettingsFields } from 'src/modals/GroupListings/components/groupingTypes';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n Event,\n} from 'src/WebApiController';\n\nimport { BulkEditHeader } from '../common/BulkEditHeader';\nimport { BulkEditListingGroupSettingsDialogBody } from './BulkEditListingGroupSettingsDialogBody';\n\nexport type BulkEditListingGroupSettingsDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n isLoading?: boolean;\n event: Event;\n currency: string;\n onOkay: (\n input: BulkEditListingGroupSettingsFields | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel?: () => void;\n};\n\nconst getDefaultFormValues = () => {\n return {\n marketplaceSettings: { listingMarketplaceSettings: {} },\n desiredActiveListings: null,\n deprioritizedQuantities: null,\n rankPremiums: {\n undercutAbsoluteAmount: null,\n undercutRelativeAmount: null,\n },\n pricingSettingsInputs: {},\n };\n};\n\nexport const BulkEditListingGroupSettingsDialog = ({\n event,\n currency,\n ...rest\n}: BulkEditListingGroupSettingsDialogProps) => {\n const methods = useForm({\n defaultValues: getDefaultFormValues(),\n });\n\n return (\n \n \n \n );\n};\n\nexport const BulkEditListingGroupSettingsDialogContent = ({\n event,\n currency,\n updateKey,\n isLoading,\n onOkay,\n onCancel,\n handleSubmit,\n getValues,\n clearErrors,\n setError,\n setValue,\n watch,\n register,\n reset,\n formState,\n ...rest\n}: BulkEditListingGroupSettingsDialogProps &\n Omit<\n ComponentProps<\n typeof FormProvider\n >,\n 'children'\n >) => {\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n\n const onClose = useCallback(\n async (newProgress?: BulkEditProgress) => {\n if (newProgress?.step === BulkEditStep.Done) {\n await refreshExpandedListItems();\n setSelectionMode(undefined);\n setProgress(undefined);\n setPreview(undefined);\n }\n onCancel?.();\n },\n [\n onCancel,\n refreshExpandedListItems,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, stage, preview, initJob } = useBulkEditHub(\n ActionOutboxEntityType.Listing,\n BulkActionType.EditListingGroupSetting,\n updateKey,\n onBulkEditDone\n );\n\n const submitButtonRef = useRef(null);\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n if (onPreviewReceived) {\n onOkay(null, false, onPreviewReceived);\n } else {\n handleSubmit((i) =>\n onOkay(i, hasBackgroundBulkEditFeature, undefined, preview)\n )();\n }\n },\n [onOkay, handleSubmit, hasBackgroundBulkEditFeature, preview]\n );\n\n return (\n <>\n }\n />\n }\n onOpened={() => {\n reset(getDefaultFormValues());\n initJob();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n \n \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const LaunchBulkEditListingGroupSettings = ({\n onClick,\n onlyListingGroupsSelected,\n}: {\n onClick: (e: React.MouseEvent) => void;\n onlyListingGroupsSelected: boolean;\n}) => {\n return (\n <>\n \n \n \n \n \n \n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport {\n BulkEditListingGroupSettingsDialog,\n BulkEditListingGroupSettingsDialogProps,\n} from 'src/dialogs/BulkEdits/BulkEditListingGroupSettingsDialog';\nimport { BulkEditListingGroupSettingsFields } from 'src/modals/GroupListings/components/groupingTypes';\nimport { flattenListingGroup } from 'src/modals/GroupListings/components/groupingUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditListingGroupClient,\n BulkEditListingGroupSettingsInput,\n BulkEditPreviewWithDetails,\n EventWithData,\n ListingGroupUndercutSetting,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_UPDATE_LISTING_GROUP_SETTINGS_UPDATE_KEY } from '../../InventoryActionDropdown.constants';\nimport { LaunchBulkEditListingGroupSettings } from './LaunchBulkEditListingGroupSettings';\n\nexport const useBulkEditListingGroupSettings = (\n filterQueryWithEventIds: ListingQuery,\n eventWithData: EventWithData,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const updateKey = INVENTORY_BULK_UPDATE_LISTING_GROUP_SETTINGS_UPDATE_KEY;\n\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const eventCurrency = useMemo(\n () => eventWithData.entities.listings?.[0]?.currency ?? 'USD',\n [eventWithData.entities.listings]\n );\n\n const selectedListingIds = useMemo(\n () => filterQueryWithEventIds.entityIds ?? [],\n [filterQueryWithEventIds.entityIds]\n );\n\n const onlyListingGroupsSelected = useMemo(() => {\n if (\n selectedListingIds.length === 0 ||\n eventWithData.entities.listings == null\n ) {\n return true;\n }\n const selectedListings =\n eventWithData.entities.listings\n ?.flatMap(flattenListingGroup)\n .filter((l) => selectedListingIds.includes(l.id)) ?? [];\n\n const selectedListingGroups = eventWithData.entities.listings.filter((l) =>\n selectedListingIds.includes(l.id)\n );\n\n if (!selectedListingGroups || selectedListingGroups.length === 0) {\n return false;\n }\n\n const selectedListingGroupIds = selectedListingGroups\n .map((l) => l.ltGrpId)\n .filter((id) => id != null);\n\n return (selectedListings ?? []).every((l) =>\n selectedListingGroupIds.includes(l.ltGrpId ?? '')\n );\n }, [selectedListingIds, eventWithData.entities.listings]);\n\n const event = eventWithData.event;\n\n const { openDialog: openBulkEditDialog, closeDialog: closeBulkEditDialog } =\n useDialog(\n DialogId.BulkUpdateListingGroupSettings,\n BulkEditListingGroupSettingsDialog\n );\n\n const onSubmit = useCallback(\n (\n input: BulkEditListingGroupSettingsFields | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n tryInvokeApi(\n async () => {\n const client = await new BulkEditListingGroupClient(\n activeAccountWebClientConfig\n );\n const preview = await client.bulkEditListingsGroupSettingsPreview(\n filterQueryWithEventIds\n );\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkEditListingGroupSettingsPreview', error, {\n trackErrorData: {\n filterQueryWithEventIds,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (input) {\n tryInvokeApi(\n async () => {\n const client = await new BulkEditListingGroupClient(\n activeAccountWebClientConfig\n );\n\n const rankPremiums: ListingGroupUndercutSetting = {\n undAbsAmt: input.rankPremiums?.undercutAbsoluteAmount ?? null,\n undRelAmt: input.rankPremiums?.undercutRelativeAmount ?? null,\n actRankUndAbsAmt: null,\n actRankUndRelAmt: null,\n };\n\n const listingGroupListingIds = preview!.listings\n ?.flatMap(flattenListingGroup)\n .filter(({ id, isLtGrp }) => id > 0 && !isLtGrp)\n .map((l) => l.id);\n\n const payload: BulkEditListingGroupSettingsInput = {\n desiredActiveListings: input.desiredActiveListings ?? null,\n deprioritizedQuantities: input.deprioritizedQuantities ?? null,\n groupUndercutSetting: rankPremiums,\n marketplaceSettings: input.marketplaceSettings ?? null,\n autoPricingInputs: input.pricingSettingsInputs ?? null,\n listingGroupListingIds: listingGroupListingIds ?? [],\n };\n\n const succeeded = await client.bulkEditListingGroupSettings(\n payload,\n updateKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n await refreshExpandedListItems();\n }\n\n closeBulkEditDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkEditListingGroupSettings', error, {\n trackErrorData: {\n input,\n preview,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeBulkEditDialog,\n filterQueryWithEventIds,\n refreshExpandedListItems,\n setIsLoading,\n showErrorDialog,\n updateKey,\n ]\n );\n\n const openDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n openBulkEditDialog({\n event: event,\n currency: eventCurrency,\n updateKey: INVENTORY_BULK_UPDATE_LISTING_GROUP_SETTINGS_UPDATE_KEY,\n isLoading: isLoading,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkEditDialog,\n });\n },\n [\n closeBulkEditDialog,\n event,\n eventCurrency,\n isLoading,\n onSubmit,\n openBulkEditDialog,\n setIsLoading,\n ]\n );\n\n return {\n dropDown: (\n \n ),\n };\n};\n","import { ComponentProps, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { Content } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './AddSectionGroupDialog.css';\n\ntype FormValues = {\n zone: string | undefined;\n area: string | undefined;\n};\n\nexport type AddSectionGroupDialogProps = ComponentProps & {\n onOkay: (zoneName: string, sectionGroupName: string) => void;\n onCancel: () => void;\n};\n\nexport function AddSectionGroupDialog({\n onOkay,\n onCancel,\n ...rest\n}: AddSectionGroupDialogProps) {\n const [formValues, setFormValues] = useState({\n zone: undefined,\n area: undefined,\n });\n\n return (\n <>\n \n {' '}\n \n \n }\n footer={\n <>\n \n {\n onOkay(formValues.zone ?? '', formValues.area ?? '');\n setFormValues({ zone: undefined, area: undefined });\n }}\n >\n \n \n \n }\n onCancel={onCancel}\n >\n \n }>\n {\n const sanitizedValue = e.target.value.replace(/:/g, '');\n setFormValues((prev) => ({\n ...prev,\n zone: sanitizedValue,\n }));\n }}\n />\n \n }>\n {\n const sanitizedValue = e.target.value.replace(/:/g, '');\n setFormValues((prev) => ({\n ...prev,\n area: sanitizedValue,\n }));\n }}\n />\n \n \n \n \n );\n}\n","import {\n cloneElement,\n ComponentPropsWithoutRef,\n ComponentPropsWithRef,\n forwardRef,\n isValidElement,\n PropsWithChildren,\n ReactElement,\n ReactNode,\n useRef,\n} from 'react';\nimport { Button, Popover } from 'src/core/ui';\n\nimport * as styles from './PosDropdownAnimated.css';\n\nexport type PosDropdownAnimatedProps = {\n trigger?: ReactNode;\n rootProps?: ComponentPropsWithRef;\n triggerProps?: ComponentPropsWithRef;\n};\n\nexport const PosDropdownAnimated = forwardRef<\n HTMLDivElement,\n PropsWithChildren<\n ComponentPropsWithoutRef & PosDropdownAnimatedProps\n >\n>(function PosDropdownAnimated(\n { rootProps, triggerProps, trigger, children, id, ...rest },\n ref\n): ReactElement {\n return (\n \n {\n // This is to prevent the click from passing through to the container (which maybe a clickable tile)\n e.stopPropagation();\n }}\n >\n \n {isValidElement(trigger)\n ? cloneElement(trigger as ReactElement<{ disabled: boolean }>, {\n disabled: !!triggerProps?.disabled,\n })\n : trigger}\n \n \n \n {children}\n \n \n );\n});\n\nexport const PosDropdownAnimatedItem = forwardRef<\n HTMLButtonElement,\n PropsWithChildren> & {\n noPadding?: boolean;\n keepOpenAfterSelection?: boolean;\n justifyContent?: 'start' | 'center' | 'space-between';\n }\n>(function PosDropdownAnimatedItem(\n { onClick, justifyContent, keepOpenAfterSelection, children, id, ...props },\n ref\n): ReactElement {\n const closeRef = useRef(null);\n\n return (\n <>\n {\n onClick?.(e);\n if (!keepOpenAfterSelection) {\n closeRef.current?.click?.();\n }\n }}\n justifyContent={justifyContent ? justifyContent : 'space-between'}\n >\n {children}\n \n {\n // We want the default behavior of the onClick event here.\n // We only don't want the click event to propagate to other elements, e.g. eventAccordion that will cause the collapsible to fold\n e.stopPropagation();\n }}\n />\n \n );\n});\n","import { head, uniq } from 'lodash-es';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { SectionInfo } from 'src/WebApiController';\n\nexport const useAutoCompMapSectionHandler = (onLaunchingDialog: () => void) => {\n const { venueMapInfo } = useEventMapContext();\n const [selectedSection, setSectionSelected] = useState(\n null\n );\n\n const [selectedSectionIds, setSelectedSectionIds] = useState([]);\n\n const selectedSectionData = useMemo(() => {\n if (!venueMapInfo || !selectedSectionIds?.length) {\n return undefined;\n }\n\n return venueMapInfo?.sections?.filter((s: SectionInfo) =>\n selectedSectionIds.includes(s.id)\n );\n }, [selectedSectionIds, venueMapInfo]);\n\n const onResetSections = useCallback(() => setSelectedSectionIds([]), []);\n\n const onShiftSelect = useCallback(\n (sectionInfo: SectionInfo) => {\n // We are using the ticketClassId to group the sections\n const selectedClassId = head(\n sectionInfo?.rows\n ?.map(({ tktClass: ticketClass }) => ticketClass?.id)\n .filter((id) => !!id)\n );\n const updatedSectionIds = venueMapInfo?.sections\n ?.filter(\n ({ rows }: SectionInfo) =>\n rows?.some(\n ({ tktClass: ticketClass }) => ticketClass?.id === selectedClassId\n )\n )\n ?.map((s: SectionInfo) => s.id);\n\n setSelectedSectionIds((prev) => {\n if (prev.includes(sectionInfo.id)) {\n return prev.filter((id) => !updatedSectionIds?.includes(id));\n }\n return uniq([...prev, ...(updatedSectionIds ?? [])]);\n });\n },\n [venueMapInfo?.sections]\n );\n\n const onCtrlSelect = useCallback(\n (sectionInfo: SectionInfo) =>\n setSelectedSectionIds((prev) => {\n if (prev.includes(sectionInfo.id)) {\n return prev.filter((id) => id !== sectionInfo.id);\n }\n return [...prev, sectionInfo.id];\n }),\n []\n );\n\n const onSingleSelect = useCallback(\n (sectionInfo: SectionInfo) =>\n setSelectedSectionIds((prev) => {\n if (prev.includes(sectionInfo.id)) {\n return prev.filter((id) => id !== sectionInfo.id);\n }\n return [...prev, sectionInfo.id];\n }),\n []\n );\n\n const onSectionClicked = useCallback(\n (e: MouseEvent, sectionInfo: SectionInfo) => {\n if (e.shiftKey) {\n onShiftSelect(sectionInfo);\n return;\n }\n if (e.ctrlKey || e.metaKey) {\n onCtrlSelect(sectionInfo);\n return;\n }\n\n onSingleSelect(sectionInfo);\n },\n [onCtrlSelect, onSingleSelect, onShiftSelect]\n );\n\n const onToggleMirrors = useCallback(\n (mirrors: SectionInfo[], exclude?: boolean) => {\n setSelectedSectionIds((prev) => {\n const mirrorIds = mirrors.map(({ id }) => id);\n if (exclude) {\n return [...prev.filter((id) => !mirrorIds.includes(id))];\n } else {\n return uniq([...prev, ...mirrorIds]);\n }\n });\n },\n []\n );\n\n const onSelectedSectionsChange = useCallback((sections: SectionInfo[]) => {\n setSelectedSectionIds(sections.map(({ id }) => id));\n }, []);\n\n return {\n selectedSection,\n selectedSectionIds,\n selectedSectionData,\n onSectionClicked,\n onResetSections,\n onToggleMirrors,\n onSelectedSectionsChange,\n };\n};\n","import { ComponentProps, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { Content } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Button, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './AddToGroupDialog.css';\n\nexport type AddToGroupDialogProps = ComponentProps & {\n groupOptions: Record;\n onOkay: (groupId: string) => void;\n onCancel: () => void;\n};\n\nexport function AddToGroupDialog({\n groupOptions,\n onOkay,\n onCancel,\n ...rest\n}: AddToGroupDialogProps) {\n const [selectedGroupId, setSelectedGroupId] = useState(\n Object.keys(groupOptions)[0] ?? undefined\n );\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n return (\n <>\n }\n footer={\n <>\n {isSubmitting ? (\n \n ) : (\n <>\n \n {\n setIsSubmitting(true);\n onOkay(selectedGroupId ?? '');\n }}\n >\n \n \n \n )}\n \n }\n onCancel={onCancel}\n >\n \n \n\n setSelectedGroupId(groupId)}\n value={selectedGroupId}\n searchable\n disabled={isSubmitting}\n valueOptionsContent={groupOptions}\n onClick={(e) => e.stopPropagation()}\n />\n \n \n \n );\n}\n","import { useCallback, useContext, useMemo } from 'react';\nimport { useInventoryEventBulkActionsState } from 'src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/useInventoryEventBulkActionsState';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { AddToGroupDialog } from 'src/dialogs/BulkEdits/AddToGroupDialog';\nimport { AddToGroupListingsModal } from 'src/modals/GroupListings';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EventWithData, ListingGroup } from 'src/WebApiController';\n\nexport const LaunchAddToGroup = ({\n eventData,\n disabled,\n}: {\n eventData: EventWithData;\n disabled?: boolean;\n}) => {\n const { setModal } = useContext(ModalContext);\n\n const {\n openDialog: openAddToGroupDialog,\n closeDialog: closeAddToGroupDialog,\n } = useDialog(DialogId.AddToGroup, AddToGroupDialog);\n\n const { filterQueryWithEventIds } = useInventoryEventBulkActionsState(\n eventData.event\n );\n\n const selectedListingIds = useMemo(\n () => filterQueryWithEventIds.entityIds ?? [],\n [filterQueryWithEventIds]\n );\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n const filteredListings = eventData?.entities?.listings?.filter(\n (l) => l.isLtGrp && l.ltGrpId != null\n ) as ListingGroup[];\n\n const listingGroups =\n filteredListings.reduce(\n (acc, curr: ListingGroup) => {\n acc[curr.ltGrpId!] = curr.groupName;\n return acc;\n },\n {} as Record\n ) ?? {};\n\n openAddToGroupDialog({\n groupOptions: listingGroups,\n onOkay: (groupId) => {\n closeAddToGroupDialog();\n setModal({\n children: (\n \n ),\n clickOutsideToClose: true,\n ...{ size: 'slide-in' },\n });\n },\n onCancel: () => {\n closeAddToGroupDialog();\n },\n });\n },\n [\n closeAddToGroupDialog,\n eventData.event.viagVirtualId,\n eventData?.entities?.listings,\n openAddToGroupDialog,\n selectedListingIds,\n setModal,\n ]\n );\n\n return (\n \n \n \n \n \n );\n};\n","import {\n BucketType,\n ListingGroupListingMarketplaceSettings,\n ListingGroupUndercutSetting,\n MergeListingGroupInputList,\n RowGroupSetting,\n VenueZoneConfigType,\n} from 'src/WebApiController';\n\nexport enum GroupListingsState {\n Configure = 'Configure',\n Review = 'Review',\n}\n\nexport enum ListingGroupType {\n Zone = 'Zone',\n ZoneMap = 'ZoneMap',\n Section = 'Section',\n Row = 'Row',\n Quantity = 'Quantity',\n UnitCost = 'UnitCost',\n None = 'None',\n}\n\nexport type ListingGroupBy = {\n groupingType: ListingGroupType;\n numberOfBuckets?: number;\n bucketOption?: BucketType;\n ranges?: GroupRange[];\n};\n\nexport type GroupListingsFormProps = MergeListingGroupInputList & {\n groupBys: ListingGroupBy[];\n venueZoneConfigType: VenueZoneConfigType;\n rowGroupSetting: RowGroupSetting;\n deprioritizedQuantities: string[];\n groupSortBy: GroupSortByType | null;\n desiredActiveListings: number | null;\n groupUndercutSettings: ListingGroupUndercutSetting | null;\n marketplaceSettings: ListingGroupListingMarketplaceSettings | null;\n};\n\nexport enum SplitZoneByType {\n RowRanges = 'RowRanges',\n}\n\nexport enum RankPremiumType {\n Absolute = 'absolute',\n Relative = 'relative',\n}\n\nexport enum GroupSortByType {\n SectionAsc = 'SectionAsc',\n SectionDesc = 'SectionDesc',\n RowAsc = 'RowAsc',\n RowDesc = 'RowDesc',\n UnsoldQuantityAsc = 'UnsoldQuantityAsc',\n UnsoldQuantityDesc = 'UnsoldQuantityDesc',\n}\n\nexport type GroupRange = {\n min: number;\n max: number;\n};\n","import { useSortable } from '@dnd-kit/sortable';\nimport { ColumnDef } from '@tanstack/react-table';\nimport { useMemo } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { BroadcastIcon } from 'src/svgs/BroadcastIcon';\nimport { FlattenedViewIcon } from 'src/svgs/FlattenedViewIcon';\nimport { IconsFill, MoreIcon } from 'src/svgs/Viagogo';\nimport { TableShimmeringDiv } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getDeliveryTypeIcon } from 'src/utils/ticketTypeUtils';\nimport { DeliveryType } from 'src/WebApiController';\n\nimport { RankPremiumType } from '../../GroupListingsV2.types';\nimport { GroupListingTableItem } from './GroupListingsPreviewTable';\n\nexport const UngroupedListingGroupId = 'UngroupedListingGroup';\n\nconst DeliveryTypeCell = ({ deliveryType }: { deliveryType: DeliveryType }) => {\n const icon = getDeliveryTypeIcon(deliveryType, null, IconsFill.textStrong);\n return icon;\n};\n\n// Cell Component\nconst RowDragHandleCell = ({ rowId }: { rowId: number }) => {\n const { attributes, listeners } = useSortable({\n id: rowId,\n });\n return (\n \n );\n};\n\nexport const usePreviewTableColumns = (\n desiredActiveListings: number | null,\n isUngroupedGroup: boolean,\n removeListing: (listingId: number) => void,\n onMoveListing: (listingId: number) => void\n) => {\n const columns = useMemo((): ColumnDef[] => {\n const tableColumns: ColumnDef[] = [\n {\n id: 'id',\n header: () => undefined,\n size: 40,\n cell: ({ row: { original } }) => {\n if (!original) {\n return ;\n }\n\n return ;\n },\n enableSorting: false,\n },\n {\n id: 'priority',\n header: () => (\n \n #\n \n ),\n size: 40,\n cell: ({ row: { original, depth } }) => {\n if (!original) {\n return ;\n }\n\n const { priority } = original;\n\n if (depth > 0) return null;\n\n if (desiredActiveListings && priority <= desiredActiveListings) {\n return (\n \n \n \n );\n }\n\n return (\n \n {priority}\n \n );\n },\n enableSorting: false,\n },\n {\n id: 'seating.section',\n header: () => (\n \n \n \n ),\n minSize: 50,\n maxSize: 100,\n accessorFn: (data) => data?.seating.section,\n cell: ({ row: { original } }) => {\n if (!original) {\n return ;\n }\n\n return (\n \n {original.seating.section}\n \n );\n },\n enableSorting: false,\n },\n {\n id: 'seating.row',\n header: () => (\n \n \n \n ),\n minSize: 50,\n maxSize: 70,\n accessorFn: (data) => data?.seating.row ?? '',\n cell: ({ row: { original } }) => {\n if (!original) {\n return ;\n }\n\n return (\n \n {original.seating.row}\n \n );\n },\n enableSorting: false,\n },\n {\n id: 'seating.seatFr',\n header: () => (\n \n \n \n ),\n minSize: 50,\n maxSize: 100,\n cell: ({ row: { original } }) => {\n if (!original) {\n return ;\n }\n\n let text = original.seating.seatFr;\n if (\n original.seating.seatTo &&\n original.seating.seatTo !== original.seating.seatFr\n ) {\n text += ` - ${original.seating.seatTo}`;\n }\n\n return {text};\n },\n enableSorting: false,\n },\n {\n id: 'undercutSetting',\n header: () => (\n \n \n \n ),\n minSize: 50,\n maxSize: 100,\n cell: ({ row: { original } }) => {\n if (!original) {\n return ;\n }\n\n const undercutSettings = original.undercutSetting;\n\n const rankPremium =\n undercutSettings?.undAbsAmt != null\n ? RankPremiumType.Absolute\n : undercutSettings?.undRelAmt != null\n ? RankPremiumType.Relative\n : undefined;\n\n const premiumValue =\n undercutSettings?.undAbsAmt != null\n ? undercutSettings?.undAbsAmt\n : undercutSettings?.undRelAmt != null\n ? undercutSettings?.undRelAmt * 100\n : undefined;\n\n const display =\n premiumValue == null\n ? undefined\n : rankPremium === RankPremiumType.Absolute\n ? `$${premiumValue}`\n : rankPremium === RankPremiumType.Relative\n ? `${premiumValue}%`\n : premiumValue;\n\n return {display};\n },\n enableSorting: false,\n },\n {\n id: 'delivType',\n header: () => (\n \n \n \n ),\n minSize: 80,\n maxSize: 100,\n cell: ({ row: { original } }) => {\n if (!original) {\n return ;\n }\n\n return (\n \n \n \n );\n },\n enableSorting: false,\n },\n {\n id: 'availQty',\n header: () => (\n \n /\n \n ),\n minSize: 70,\n maxSize: 70,\n accessorFn: (data) => data?.availQty,\n cell: function Cell({ row: { original } }) {\n if (!original) {\n return ;\n }\n\n const available = original.availQty ?? 0;\n const sold = original.ticketCnt - available;\n\n return (\n {`${sold}/${available}`}\n );\n },\n enableSorting: false,\n },\n {\n id: 'unitCst',\n header: () => (\n \n \n \n ),\n minSize: 70,\n maxSize: 100,\n cell: function Cell({ row: { original } }) {\n if (!original) {\n return ;\n }\n\n return (\n \n {original.unitCst?.disp ?? original?.faceValue?.disp ?? (\n \n )}\n \n );\n },\n enableSorting: false,\n },\n {\n id: 'name',\n header: () => (\n \n \n \n ),\n size: 40,\n cell: function Cell({ row: { original } }) {\n if (!original) {\n return ;\n }\n\n return (\n \n \n \n
    \n }\n align=\"end\"\n >\n onMoveListing(original.id)}\n >\n \n \n {!isUngroupedGroup && (\n removeListing(original.id)}\n >\n \n \n )}\n \n \n );\n },\n enableSorting: false,\n },\n ];\n\n return tableColumns.filter((column) => {\n if (isUngroupedGroup) {\n return column.id && !['id', 'undercutSetting'].includes(column.id);\n }\n return true;\n });\n }, [desiredActiveListings, isUngroupedGroup, onMoveListing, removeListing]);\n\n return columns;\n};\n","import { Label } from '@radix-ui/react-label';\nimport { MarketplaceLogo } from 'src/components/common/MarketplaceLogo';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { SimpleTable, Switch } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Event, Marketplace } from 'src/WebApiController';\n\nimport * as styles from './Broadcast.css';\n\ntype BroadcastMarketplaceProps = {\n marketplace: Marketplace;\n isSelected: boolean;\n isActive: boolean;\n event?: Event;\n isUKEvent?: boolean;\n isViagogo?: boolean;\n onListingBroadcastToggle: (\n isSelected: boolean,\n isBroadcasting: boolean,\n marketplace: Marketplace\n ) => void;\n};\n\nexport const BroadcastMarketplace: React.FC = ({\n marketplace,\n isSelected,\n isActive,\n event,\n isUKEvent,\n isViagogo,\n onListingBroadcastToggle,\n}) => {\n const alwaysShowAsDelisted =\n isUKEvent && marketplace === Marketplace.StubHub && !isViagogo;\n\n const isChecked = !alwaysShowAsDelisted && isActive && isSelected;\n\n return (\n \n \n \n onListingBroadcastToggle(!isSelected, isChecked, marketplace)\n }\n />\n \n \n \n \n \n \n \n \n e.stopPropagation()}\n onCheckedChange={(checked) => {\n onListingBroadcastToggle(isSelected, checked, marketplace);\n }}\n />\n \n \n );\n};\n\ntype InventoryStatusProps = {\n isSelected: boolean;\n isActive: boolean;\n};\n\nconst InventoryStatus: React.FC = ({\n isSelected,\n isActive,\n}) => {\n if (!isSelected) {\n return undefined;\n }\n return (\n \n );\n};\n","import { isEmpty } from 'lodash-es';\nimport React, { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { SimpleTable } from 'src/core/ui';\nimport { useEventMarketplaceSettings } from 'src/hooks/useEventMarketplaceSettings';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { compareMarketplace } from 'src/utils/eventWithDataUtils';\nimport { isMarketplaceActive } from 'src/utils/userUtils';\nimport {\n Event,\n ListingMarketplaceSetting,\n Marketplace,\n} from 'src/WebApiController';\n\nimport { GroupListingsFormProps } from '../../GroupListingsV2.types';\nimport * as styles from './Broadcast.css';\nimport { BroadcastMarketplace } from './BroadcastMarketplace';\n\n/**\n * Get maerketplace id from marketplace enum.\n * This assumes the enum order is aligned with the Marketplace.Marketplace table\n */\nconst getMarketplaceIdFromMarketplace = (marketplace: Marketplace) => {\n let marketplaceId = 0;\n Object.values(Marketplace).forEach((mp, index) => {\n if (mp === marketplace) {\n marketplaceId = index + 1;\n }\n });\n return marketplaceId;\n};\n\ntype GroupBroadcastSettingsProps = {\n event?: Event;\n};\n\nexport const GroupBroadcastSettings: React.FC = ({\n event,\n}) => {\n const { watch, setValue } = useFormContext();\n const marketplaceSettings = watch('marketplaceSettings');\n const { eventMarketplaceSettings, isUKEvent, isInternationalEvent } =\n useEventMarketplaceSettings(event);\n\n const availableMarketplaceSettings = useMemo(\n () =>\n eventMarketplaceSettings.filter((mk) => {\n if (mk.mkp === Marketplace.StubHub) {\n return true;\n }\n return (!event || !isInternationalEvent) && isMarketplaceActive(mk);\n }),\n [eventMarketplaceSettings, event, isInternationalEvent]\n );\n\n const onListingBroadcastToggle = useCallback(\n (isSelected: boolean, isBroadcasting: boolean, mp: Marketplace) => {\n const { listingMarketplaceSettings } = marketplaceSettings || {\n listingMarketplaceSettings: {},\n };\n const marketplaceId = getMarketplaceIdFromMarketplace(mp);\n const copied = { ...listingMarketplaceSettings };\n if (isSelected) {\n Object.assign(copied, {\n [marketplaceId + '']: {\n listingBroadcastStateId: isBroadcasting ? 2 : 1,\n },\n });\n } else {\n delete copied[marketplaceId];\n }\n setValue('marketplaceSettings', { listingMarketplaceSettings: copied });\n },\n [marketplaceSettings, setValue]\n );\n const onToggleAllBroadcast = useCallback(\n (isSelected: boolean) => {\n if (isSelected) {\n const marketplaceSettings: {\n [key: string]: ListingMarketplaceSetting;\n } = {};\n for (const setting of availableMarketplaceSettings) {\n const marketplaceId = getMarketplaceIdFromMarketplace(setting.mkp);\n marketplaceSettings[marketplaceId + ''] = {\n listingBroadcastStateId: 2,\n };\n }\n setValue('marketplaceSettings', {\n listingMarketplaceSettings: marketplaceSettings,\n });\n } else {\n setValue('marketplaceSettings', {\n listingMarketplaceSettings: {},\n });\n }\n },\n [availableMarketplaceSettings, setValue]\n );\n const allSelected = useMemo(() => {\n const { listingMarketplaceSettings } = marketplaceSettings || {\n listingMarketplaceSettings: {},\n };\n if (isEmpty(listingMarketplaceSettings)) {\n return false;\n }\n return availableMarketplaceSettings.every((setting) => {\n const marketplaceId = getMarketplaceIdFromMarketplace(setting.mkp);\n return !isEmpty(listingMarketplaceSettings[marketplaceId + '']);\n });\n }, [availableMarketplaceSettings, marketplaceSettings]);\n\n const marketplacesSelected = useMemo(() => {\n const selected: Marketplace[] = [];\n const listingMarketplaceSettings =\n marketplaceSettings?.listingMarketplaceSettings ?? {};\n const includedIds = Object.keys(listingMarketplaceSettings);\n Object.values(Marketplace).forEach((mp, index) => {\n if (includedIds.includes(index + 1 + '')) {\n selected.push(mp);\n }\n });\n return selected;\n }, [marketplaceSettings]);\n\n const marketplaceToStateId = useMemo(() => {\n const marketplaceToId = {} as Record;\n const listingMarketplaceSettings =\n marketplaceSettings?.listingMarketplaceSettings ?? {};\n const includedIds = Object.keys(listingMarketplaceSettings);\n Object.values(Marketplace).forEach((mp, index) => {\n const key = index + 1 + '';\n if (includedIds.includes(key)) {\n marketplaceToId[mp] =\n listingMarketplaceSettings[key].listingBroadcastStateId;\n }\n });\n return marketplaceToId;\n }, [marketplaceSettings]);\n\n return (\n \n \n \n \n {\n const value = event.target.checked;\n onToggleAllBroadcast(value);\n }}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n {availableMarketplaceSettings\n .toSorted((a, b) => compareMarketplace(a.mkp, b.mkp))\n .flatMap((mk) => {\n const isSelected = marketplacesSelected.includes(mk.mkp);\n const isActive = marketplaceToStateId[mk.mkp] === 2;\n\n if (mk.mkp === Marketplace.StubHub) {\n return [\n ,\n ,\n ];\n }\n\n return [\n ,\n ];\n })}\n \n \n );\n};\n","import { ContentId } from 'src/utils/constants/contentId';\n\nimport { ListingGroupType, SplitZoneByType } from './GroupListingsV2.types';\n\nexport const GroupTypeToCID: Partial> = {\n [ListingGroupType.ZoneMap]: ContentId.ZoneMap,\n [ListingGroupType.Section]: ContentId.Section,\n [ListingGroupType.Zone]: ContentId.Zone,\n [ListingGroupType.Row]: ContentId.Row,\n [ListingGroupType.Quantity]: ContentId.Quantity,\n [ListingGroupType.UnitCost]: ContentId.UnitCost,\n [ListingGroupType.None]: ContentId.None,\n};\n\nexport const SplitZoneByTypeToCid: Record = {\n [SplitZoneByType.RowRanges]: ContentId.RowRanges,\n};\n","import React from 'react';\nimport { Stack } from 'src/core/ui';\n\nimport * as styles from './SettingsTitle.css';\n\ntype SettingsTitleProps = {\n title: React.ReactNode;\n subtitle?: React.ReactNode;\n};\n\nexport const SettingsTitle: React.FC = ({\n title,\n subtitle,\n}) => {\n return (\n \n
    {title}
    \n {subtitle &&
    {subtitle}
    }\n
    \n );\n};\n","import clsx from 'clsx';\nimport { useCallback, useMemo, useState } from 'react';\nimport { Content, useFormattedContent } from 'src/contexts/ContentContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack, Tooltip } from 'src/core/ui';\nimport { InfoOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\n\nimport { GroupRange } from '../../GroupListingsV2.types';\nimport * as styles from './GroupingMethods.css';\n\ntype RowRangesPrefixType = {\n ranges?: GroupRange[];\n editing: boolean;\n};\n\nconst RowRangesPrefix: React.FC = ({\n ranges,\n editing,\n}) => {\n const getLabelFromRowRange = useCallback(({ min, max }: GroupRange) => {\n if (min === max) {\n return min;\n }\n if (max === Number.MAX_VALUE) {\n return `${min}+`;\n }\n return `${min}-${max}`;\n }, []);\n\n const lastRange = useMemo(() => {\n if (ranges && ranges.length > 0) {\n return ranges[ranges.length - 1];\n }\n return null;\n }, [ranges]);\n\n return (\n \n {(ranges ?? []).map((range, index) => {\n const lastEditing = ranges && index === ranges.length - 1 && editing;\n if (lastEditing) {\n return undefined;\n }\n return (\n \n {getLabelFromRowRange(range)}\n \n );\n })}\n {editing && lastRange && (\n
    {`${lastRange?.min}-`}
    \n )}\n
    \n );\n};\n\ntype InputRowRangesProps = {\n ranges?: GroupRange[];\n onRowRangesChange: (ranges: GroupRange[]) => void;\n};\n\nexport const InputRowRanges: React.FC = ({\n ranges,\n onRowRangesChange,\n}) => {\n const [rowInput, setRowInput] = useState();\n const [editing, setEditing] = useState(false);\n const [inputError, setInputError] = useState();\n\n const lastRowRange = useMemo(() => {\n if (ranges && ranges.length > 0) {\n return ranges[ranges.length - 1];\n }\n return undefined;\n }, [ranges]);\n\n const rowRangeInputErrorMsg = useFormattedContent(\n FormatContentId.RowRangeInputError,\n lastRowRange?.min + ''\n );\n\n const onLeaveInput = useCallback(() => {\n setEditing(false);\n setRowInput(undefined);\n setInputError(undefined);\n }, []);\n\n const onCutomRowRangeKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n const sorted = (ranges ?? []).toSorted((a, b) => a.min - b.min);\n\n // In the case when no row ranges, add 1+\n if (sorted.length === 0) {\n onRowRangesChange([{ min: 1, max: Number.MAX_VALUE }]);\n setRowInput(undefined);\n return;\n }\n\n // + is considered an terminating input to mark the last row range +, i.e 6+.\n if (event.key === '+') {\n onLeaveInput();\n if (document.activeElement instanceof HTMLElement) {\n document.activeElement.blur();\n }\n return;\n }\n\n if (event.key === 'Enter') {\n const lastRange = sorted[sorted.length - 1];\n\n //Enter with no input => apply max with infinite value via blur the input\n if (!rowInput) {\n lastRange.max = lastRange.min;\n sorted.pop();\n const updated = [\n ...sorted,\n lastRange,\n { min: lastRange.min + 1, max: Number.MAX_VALUE },\n ];\n\n onRowRangesChange(updated);\n setRowInput(undefined);\n return;\n }\n // Invalid input\n if (rowInput < lastRange.min) {\n setInputError(rowRangeInputErrorMsg as string);\n return;\n }\n // Only take the enter when the input value is gte than the leading min\n lastRange.max = rowInput;\n sorted.pop();\n const updated = [\n ...sorted,\n lastRange,\n { min: rowInput + 1, max: Number.MAX_VALUE },\n ];\n onRowRangesChange(updated);\n setRowInput(undefined);\n }\n\n // Backspace to clear the last range if no row input\n if (\n event.key === 'Backspace' &&\n rowInput === undefined &&\n sorted.length > 1\n ) {\n sorted.pop();\n const lastRange = sorted[sorted.length - 1];\n lastRange.max = Number.MAX_VALUE;\n onRowRangesChange(sorted);\n setRowInput(sorted[sorted.length - 1].min);\n }\n },\n [onLeaveInput, onRowRangesChange, rowInput, rowRangeInputErrorMsg, ranges]\n );\n\n const activePlaceholder = useMemo(() => {\n if (!editing) return undefined;\n if (!lastRowRange) return undefined;\n const suggestingNum = lastRowRange.min + 1;\n return suggestingNum + '';\n }, [editing, lastRowRange]);\n\n return (\n \n }\n value={rowInput ?? ''}\n onChange={(event) => {\n const value = parseInt(event.target.value);\n if (value > 0) {\n setRowInput(value);\n } else {\n setRowInput(undefined);\n }\n setInputError(undefined);\n }}\n onKeyDown={onCutomRowRangeKeyDown}\n onFocus={() => setEditing(true)}\n onBlur={onLeaveInput}\n placeholder={activePlaceholder}\n postfixDisplay={\n \n \n \n }\n >\n ↵\n \n }\n />\n \n );\n};\n","import { VenueMapColorSelector } from 'src/components/Events/VenueMap/VenueMap.types';\nimport { VenueMapContentProps } from 'src/components/Events/VenueMap/VenueMapContent';\nimport { SectionSectionGroup } from 'src/WebApiController';\n\nconst baseColors = [\n '#228B22', // Forest Green\n '#8B3A62', // Deep Rose\n '#008B8B', // Deep Cyan\n '#8B864E', // Dark Khaki\n '#8B3A8B', // Deep Magenta\n '#1F4F1F', // Deep Forest Green\n '#8B7355', // Deep Wheat\n '#8B4C39', // Deep Salmon\n '#8B7E66', // Deep Moccasin\n '#8B3E2F', // Deep Coral\n '#8B668B', // Deep Plum\n '#8B8B00', // Deep Yellow\n '#27408B', // Royal Blue\n '#8B3A3A', // Deep Red\n '#8B7B8B', // Deep Purple\n '#8B4726', // Deep Sienna\n '#704214', // Deep Sepia\n '#614051', // Deep Mauve\n '#683A5E', // Deep Wine\n '#4A2B45', // Deep Aubergine\n '#454B1B', // Deep Olive\n '#4B0082', // Deep Indigo\n '#2F4F4F', // Dark Slate Gray\n '#3C1414', // Deep Burgundy\n '#1B1B1B', // Almost Black\n '#3D1C02', // Deep Coffee\n '#2C1810', // Deep Brown\n '#371F1C', // Deep Mahogany\n '#302112', // Deep Umber\n '#32174D', // Russian Violet\n '#2B0202', // Dark Blood Red\n '#1A2421', // Dark Forest\n '#2C1608', // Deep Chocolate\n '#2F1B0C', // Dark Cinnamon\n '#251607', // Deep Espresso\n '#2C1103', // Dark Roast\n '#1F1200', // Deep Bronze\n '#251F1F', // Dark Charcoal\n '#28282B', // Dark Gunmetal\n '#483D8B', // Deep Slate Blue\n];\n\nexport const getRandomColor = (index: number): string => {\n if (index < baseColors.length) {\n return baseColors[index];\n }\n\n // Only pick a random one if we've run out of base colors to use for top level zones\n return baseColors[Math.floor(Math.random() * baseColors.length)];\n};\n\nexport const createGetColor = (\n sectionSectionGroupLookup?: { [key: string]: SectionSectionGroup } | null\n): NonNullable => {\n return ({ sectionId }: VenueMapColorSelector) => {\n if (!sectionId || sectionSectionGroupLookup == null) {\n return { fill: `#FFFFFF`, stroke: 'black' };\n }\n\n const colorMap = Object.fromEntries(\n Object.entries(sectionSectionGroupLookup).map(\n ([sectionId, sectionSectionGroup]) => [\n sectionId,\n {\n ...sectionSectionGroup,\n color: sectionSectionGroup.sectionGroupColor,\n },\n ]\n )\n );\n\n const sectionGroup = colorMap[sectionId];\n return { fill: `${sectionGroup?.color ?? '#FFFFFF'}`, stroke: 'black' };\n };\n};\n","import clsx from 'clsx';\nimport { isEmpty } from 'lodash-es';\nimport { useCallback, useMemo, useState } from 'react';\nimport { EventVenueMap } from 'src/components/Events/VenueMap/EventVenueMap';\nimport { createGetColor } from 'src/components/Listings/InventoryEventPage/utils/colorUtils';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './GroupingMethods.css';\n\nexport const ZoneMap = () => {\n const [mapOverlay, setMapOverlay] = useState(true);\n const toggleZoneMap = useCallback(() => {\n setMapOverlay((prev) => !prev);\n }, []);\n\n const viewZoneMapText = useContent(ContentId.ViewZoneMap);\n const hideZoneMapText = useContent(ContentId.HideZoneMap);\n const buttonText = useMemo(\n () => (mapOverlay ? viewZoneMapText : hideZoneMapText),\n [hideZoneMapText, mapOverlay, viewZoneMapText]\n );\n\n const { venueZoneConfigs } = useEventMapContext();\n\n const getColor = useMemo(() => {\n if (isEmpty(venueZoneConfigs?.sectionSectionGroupLookup)) {\n return undefined;\n }\n return createGetColor(venueZoneConfigs?.sectionSectionGroupLookup);\n }, [venueZoneConfigs?.sectionSectionGroupLookup]);\n\n return (\n
    \n \n
    {venueZoneConfigs?.name}
    \n {mapOverlay && (\n \n {buttonText}\n \n )}\n
    \n \n
    \n \n
    \n \n {!mapOverlay && (\n
    \n \n
    \n )}\n \n );\n};\n","import { isEmpty, noop, size } from 'lodash-es';\nimport { ChangeEvent, useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { BUCKET_OPTIONS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { BucketType, Feature } from 'src/WebApiController';\n\nimport { GroupTypeToCID } from '../../GroupListingsV2.constants';\nimport * as commonStyles from '../../GroupListingsV2.css';\nimport {\n GroupListingsFormProps,\n GroupRange,\n ListingGroupBy,\n ListingGroupType,\n} from '../../GroupListingsV2.types';\nimport { SettingsTitle } from '../SettingsTitle';\nimport * as styles from './GroupingMethods.css';\nimport { InputRowRanges } from './InputRowRanges';\nimport { ZoneMap } from './ZoneMap';\n\nconst getDefaultRanges = (type: ListingGroupType): GroupRange[] | undefined => {\n if (type === ListingGroupType.Row) {\n return [\n { min: 1, max: 1 },\n { min: 2, max: 5 },\n { min: 6, max: Number.MAX_VALUE },\n ];\n }\n if (type === ListingGroupType.Quantity) {\n return [\n { min: 1, max: 4 },\n { min: 5, max: Number.MAX_VALUE },\n ];\n }\n\n if (type === ListingGroupType.UnitCost) {\n return [\n { min: 1, max: 100 },\n { min: 100, max: Number.MAX_VALUE },\n ];\n }\n\n return undefined;\n};\n\nconst BucketGroupingTypes = [\n ListingGroupType.Quantity,\n ListingGroupType.UnitCost,\n];\n\ntype GroupingMethodsProps = {};\n\nexport const GroupingMethods: React.FC = () => {\n const { watch, setValue } = useFormContext();\n\n const rowRangesText = useContent(ContentId.RowRanges);\n const addAnotherSplitText = useContent(ContentId.AddAnotherSplit);\n\n const groupBys = watch('groupBys');\n\n const primaryGroupBy = useMemo(() => {\n if (size(groupBys) < 1) {\n return null;\n }\n return groupBys[0];\n }, [groupBys]);\n\n const onPrimaryGroupTypeUpdate = useCallback(\n (type: ListingGroupType | null) => {\n if (type === null) {\n setValue('groupBys', []);\n } else {\n if (type === ListingGroupType.ZoneMap) {\n const groupBys: ListingGroupBy[] = [\n {\n groupingType: type,\n ranges: [\n { min: 1, max: 1 },\n { min: 2, max: 5 },\n { min: 6, max: Number.MAX_VALUE },\n ],\n },\n ];\n setValue('groupBys', groupBys);\n } else {\n const groupBys: ListingGroupBy[] = [{ groupingType: type }];\n setValue('groupBys', groupBys);\n }\n }\n },\n [setValue]\n );\n\n const onUpdateZoneMapRowRange = useCallback(\n (ranges: GroupRange[]) => {\n if (!primaryGroupBy) {\n return;\n }\n const updated = [...groupBys];\n const newGroupBy: ListingGroupBy = { ...primaryGroupBy, ranges };\n updated[0] = newGroupBy;\n setValue('groupBys', updated);\n },\n [groupBys, primaryGroupBy, setValue]\n );\n\n const primaryGroupOptions = useMemo(() => {\n const { Quantity, UnitCost, Row, None, ...cloned } = GroupTypeToCID;\n\n return cloned as Record;\n }, []);\n\n const groupBySubtitle = useMemo(() => {\n return (\n \n setValue('groupBys', [\n ...groupBys,\n { groupingType: ListingGroupType.None },\n ])\n }\n >\n {addAnotherSplitText}\n \n );\n }, [addAnotherSplitText, groupBys, setValue]);\n\n const canAddSecondaryThenBy = useMemo(() => {\n return groupBys.length === 1;\n }, [groupBys.length]);\n\n const canAddThirdThenBy = useMemo(() => {\n if (primaryGroupBy?.groupingType === ListingGroupType.ZoneMap) {\n return false;\n }\n return groupBys.length === 2;\n }, [groupBys.length, primaryGroupBy?.groupingType]);\n\n return (\n \n \n }\n subtitle={\n primaryGroupBy?.groupingType !== ListingGroupType.ZoneMap &&\n canAddSecondaryThenBy &&\n groupBySubtitle\n }\n />\n \n \n {primaryGroupBy?.groupingType === ListingGroupType.ZoneMap && (\n <>\n \n \n \n }\n subtitle={\n primaryGroupBy?.groupingType === ListingGroupType.ZoneMap &&\n canAddSecondaryThenBy &&\n groupBySubtitle\n }\n />\n \n \n \n
    \n \n )}\n <>\n setValue('groupBys', values)}\n subtitle={canAddThirdThenBy && groupBySubtitle}\n />\n {primaryGroupBy?.groupingType !== ListingGroupType.ZoneMap && (\n setValue('groupBys', values)}\n />\n )}\n \n \n );\n};\n\ntype ThenGroupByProps = {\n groupBys: ListingGroupBy[];\n groupLevel: number;\n subtitle?: React.ReactNode;\n onUpdateGroupBys: (groupBys: ListingGroupBy[]) => void;\n};\nconst ThenGroupBy: React.FC = ({\n groupLevel,\n groupBys,\n subtitle,\n onUpdateGroupBys,\n}) => {\n const hasGroupListingsWithRangedQuantityCostFeature = useUserHasFeature(\n Feature.GroupListingsWithRangedQuantityCost\n );\n const groupBy = useMemo(() => {\n if (groupBys.length <= groupLevel) {\n return undefined;\n }\n return groupBys[groupLevel];\n }, [groupBys, groupLevel]);\n\n const onUpdateGroupBy = useCallback(\n (type: ListingGroupType | null) => {\n if (type == null) {\n return;\n }\n if (type === ListingGroupType.None) {\n onUpdateGroupBys(groupBys.slice(0, groupLevel));\n return;\n }\n if (isEmpty(groupBy)) {\n onUpdateGroupBys([...groupBys, { groupingType: type }]);\n } else {\n const updated = [...groupBys];\n const newGroupBy: ListingGroupBy = {\n groupingType: type,\n numberOfBuckets: BucketGroupingTypes.includes(type) ? 2 : undefined,\n bucketOption: BucketGroupingTypes.includes(type)\n ? BucketType.Clusters\n : undefined,\n };\n\n if (hasGroupListingsWithRangedQuantityCostFeature) {\n const ranges = getDefaultRanges(type);\n Object.assign(newGroupBy, { ranges });\n }\n updated[groupLevel] = newGroupBy;\n onUpdateGroupBys(updated);\n }\n },\n [\n groupBy,\n groupBys,\n groupLevel,\n hasGroupListingsWithRangedQuantityCostFeature,\n onUpdateGroupBys,\n ]\n );\n\n const onUpdateGroupRanges = useCallback(\n (ranges: GroupRange[]) => {\n if (isEmpty(groupBy)) {\n return;\n }\n const updated = [...groupBys];\n const newGroupBy: ListingGroupBy = { ...groupBy, ranges };\n updated[groupLevel] = newGroupBy;\n onUpdateGroupBys(updated);\n },\n [groupBy, groupBys, groupLevel, onUpdateGroupBys]\n );\n\n const groupOptions = useMemo(() => {\n const { ZoneMap, ...cloned } = GroupTypeToCID;\n\n // Zone map is already splited by zone and section\n if (groupBys[0] && groupBys[0].groupingType === ListingGroupType.ZoneMap) {\n delete cloned[ListingGroupType.Zone];\n delete cloned[ListingGroupType.Section];\n delete cloned[ListingGroupType.Row]; // Row is included in the zone map ranges\n }\n for (let index = 0; index < groupBys.length; index++) {\n if (index < groupLevel) {\n const current = groupBys[index];\n if (\n current.groupingType !== ListingGroupType.ZoneMap &&\n current.groupingType !== ListingGroupType.None &&\n cloned[current.groupingType]\n ) {\n delete cloned[current.groupingType];\n }\n }\n }\n return cloned as Record;\n }, [groupBys, groupLevel]);\n\n const showBucketOption = useMemo(\n () =>\n groupBy?.groupingType &&\n [ListingGroupType.Quantity, ListingGroupType.UnitCost].includes(\n groupBy?.groupingType\n ),\n [groupBy?.groupingType]\n );\n\n if (groupLevel >= groupBys.length) {\n return undefined;\n }\n\n return (\n \n \n }\n subtitle={subtitle}\n />\n \n \n {hasGroupListingsWithRangedQuantityCostFeature &&\n groupBy?.groupingType &&\n groupBy.groupingType !== ListingGroupType.None && (\n \n )}\n {showBucketOption && !hasGroupListingsWithRangedQuantityCostFeature && (\n \n \n } />\n ) => {\n const v = parseInt(e.target.value);\n if (v >= 1) {\n if (v !== groupBy?.numberOfBuckets) {\n const updated = [...groupBys];\n updated[groupLevel] = {\n ...updated[groupLevel],\n numberOfBuckets: v,\n };\n onUpdateGroupBys(updated);\n }\n }\n }}\n />\n \n \n } />\n {\n if (v != null) {\n const updated = [...groupBys];\n updated[groupLevel] = {\n ...updated[groupLevel],\n bucketOption: v,\n };\n onUpdateGroupBys(updated);\n }\n }}\n />\n \n \n )}\n \n );\n};\n","import * as Collapsible from '@radix-ui/react-collapsible';\nimport clsx from 'clsx';\nimport { useState } from 'react';\nimport {\n ComponentProps,\n ComponentPropsWithoutRef,\n ComponentType,\n forwardRef,\n ReactNode,\n} from 'react';\nimport { vars } from 'src/core/themes';\nimport { mergeProps, styledComponent } from 'src/core/utils';\nimport { IconsFill, MinusIcon, PlusIcon } from 'src/svgs/Viagogo';\n\nimport * as styles from './GroupListingsSetting.css';\n\nexport type PosCollapsibleProps = Pick<\n ComponentProps,\n 'open' | 'onOpenChange'\n> & {\n trigger?: ReactNode;\n children?: ReactNode;\n};\n\nexport function PosCollapsible({\n open,\n onOpenChange,\n trigger,\n children,\n}: PosCollapsibleProps) {\n return (\n \n {trigger}\n {children}\n \n );\n}\n\nexport const Root = styledComponent(Collapsible.Root, styles.root);\n\nexport const Trigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef & {\n ExpandIcon?: ComponentType<{ size: string; fill: IconsFill }>;\n FoldIcon?: ComponentType<{ size: string; fill: IconsFill }>;\n iconSize?: string;\n }\n>(function Content({ children, ...props }, ref) {\n return (\n \n
    \n
    {children}
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n );\n});\n\nexport const Content = styledComponent(Collapsible.Content, styles.content);\n\ntype GroupListingsSetting = {\n title: React.ReactNode;\n content: React.ReactNode;\n defaultToOpen?: boolean;\n};\n\nexport const GroupListingsSetting: React.FC = ({\n title,\n content,\n defaultToOpen = false,\n}) => {\n const [open, setOpen] = useState(defaultToOpen);\n return (\n setOpen(!open)}>\n {title}\n {content}\n \n );\n};\n","import { groupBy, keyBy } from 'lodash-es';\nimport { getContent, IContentContext } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { kmeans, VectorWithData } from 'src/utils/kmeans';\nimport {\n BucketType,\n Listing,\n SectionInfo,\n SectionSectionGroup,\n} from 'src/WebApiController';\n\nimport {\n GroupRange,\n ListingGroupBy,\n ListingGroupType,\n} from './GroupListingsV2.types';\n\nexport type ListingGroup = {\n name: string;\n listings: Listing[];\n};\n\nconst getNameContent = (\n groupingType: ListingGroupType,\n contentContext: IContentContext\n) => {\n switch (groupingType) {\n case ListingGroupType.Section:\n return getContent(ContentId.Section, contentContext);\n case ListingGroupType.Row:\n return getContent(ContentId.Row, contentContext);\n case ListingGroupType.Zone:\n return getContent(ContentId.Zone, contentContext);\n case ListingGroupType.Quantity:\n return getContent(ContentId.UnsoldQty, contentContext);\n case ListingGroupType.UnitCost:\n return getContent(ContentId.UnitCost, contentContext);\n }\n\n return '';\n};\n\nexport class ListingGroupsGenerator {\n private listings: Listing[];\n private sections: SectionInfo[];\n private sectionGroups: SectionSectionGroup[];\n private listingGroups: ListingGroup[];\n constructor(\n listings: Listing[],\n sections: SectionInfo[],\n sectionGroups: SectionSectionGroup[]\n ) {\n this.listings = listings.filter(\n (listing) => listing.rowId || listing.seating.rowId\n );\n this.sections = sections;\n this.sectionGroups = sectionGroups;\n this.listingGroups = [{ name: '', listings: this.listings }];\n }\n\n public getListingGroups(): ListingGroup[] {\n return this.listingGroups;\n }\n\n public generateBaseZoneGroups(): ListingGroupsGenerator {\n const rowIdToSectionId = this.sections.reduce(\n (acc, section) => {\n for (const row of section.rows) {\n acc[row.id] = section.id;\n }\n return acc;\n },\n {} as Record\n );\n const sectionToSectionGroup = keyBy(\n this.sectionGroups,\n (group) => group.sectId\n );\n const sectionListings = groupBy(this.listings, (listing) => {\n if (listing.rowId) {\n return rowIdToSectionId[listing.rowId];\n }\n return rowIdToSectionId[listing.seating.rowId!];\n });\n const sectionGroups = Object.entries(sectionListings)\n .map(([sectionId, listings]) => {\n const sectionGroup = sectionToSectionGroup[sectionId];\n if (!sectionGroup) {\n return undefined;\n }\n const name = `${sectionGroup.ticketClassName} ${\n sectionGroup.sectionGroupAreaType ?? sectionGroup.sectionGroupAreaName\n }`;\n return {\n name,\n listings,\n };\n })\n .filter((group): group is ListingGroup => !!group);\n\n // Group by zone and area\n this.listingGroups = Object.entries(\n groupBy(sectionGroups, (group) => group.name)\n ).map(([name, groups]) => {\n return {\n name,\n listings: groups.flatMap((g) => g.listings),\n };\n });\n\n return this;\n }\n\n public splitByRanges(\n ranges: GroupRange[],\n type: ListingGroupType,\n contentContext: IContentContext\n ): ListingGroupsGenerator {\n if (ranges.length === 0) {\n return this;\n }\n const groupNamePrefix = getNameContent(type, contentContext);\n switch (type) {\n case ListingGroupType.Row:\n this.listingGroups = this.splitByRowRanges(ranges, groupNamePrefix);\n break;\n case ListingGroupType.Quantity:\n this.listingGroups = this.splitByQuantityRanges(\n ranges,\n groupNamePrefix\n );\n break;\n case ListingGroupType.UnitCost:\n this.listingGroups = this.splitByUnitCostRanges(\n ranges,\n groupNamePrefix\n );\n break;\n default:\n break;\n }\n\n return this;\n }\n\n public splitWithGroupBy(\n groupBy: ListingGroupBy,\n contentContext: IContentContext\n ): ListingGroupsGenerator {\n const { groupingType } = groupBy;\n const groupNamePrefix = getNameContent(groupingType, contentContext);\n switch (groupingType) {\n case ListingGroupType.Zone:\n this.listingGroups = this.splitByZone(groupNamePrefix);\n break;\n case ListingGroupType.Section:\n this.listingGroups = this.splitBySection(groupNamePrefix);\n break;\n case ListingGroupType.Row:\n this.listingGroups = this.splitByRow(groupNamePrefix);\n break;\n case ListingGroupType.Quantity:\n case ListingGroupType.UnitCost:\n this.listingGroups = this.splitByBucket(groupBy, groupNamePrefix);\n break;\n default:\n break;\n }\n return this;\n }\n\n private splitByRowRanges(\n ranges: GroupRange[],\n groupNamePrefix: string\n ): ListingGroup[] {\n const speculativeRowIds = this.sections.flatMap((section) =>\n section.rows.filter((row) => row.ordinal == null).map((row) => row.id)\n );\n const rowIdToIndex = this.sections.reduce(\n (res, section) => {\n const sortedRows = section.rows\n .filter((row) => row.ordinal != null)\n .toSorted((a, b) => a.ordinal! - b.ordinal!);\n for (const [index, row] of sortedRows.entries()) {\n res[row.id] = index + 1;\n }\n return res;\n },\n {} as Record\n );\n return this.listingGroups\n .flatMap((group) => {\n return ranges.map((range): ListingGroup | null => {\n const rangedListings = group.listings.filter((listing) => {\n const rowId = listing.rowId ?? listing.seating.rowId;\n if (rowId == null) {\n return false;\n }\n // Putting speculative rows to the first row range\n if (speculativeRowIds.includes(rowId)) {\n return range.min === 1;\n }\n const ordinal = rowIdToIndex[rowId];\n return ordinal && ordinal >= range.min && ordinal <= range.max;\n });\n if (rangedListings.length > 0) {\n const updatedName = `${group.name} ${groupNamePrefix} ${this.postfixNameFromRange(range)}`;\n return {\n name: updatedName,\n listings: rangedListings,\n };\n }\n return null;\n });\n })\n .filter((group: ListingGroup | null): group is ListingGroup => !!group);\n }\n\n private splitByQuantityRanges(\n ranges: GroupRange[],\n groupNamePrefix: string\n ): ListingGroup[] {\n return this.listingGroups.flatMap((group) => {\n return ranges\n .map((range) => {\n const rangedListings = group.listings.filter(\n (listing) =>\n listing.availQty >= range.min && listing.availQty <= range.max\n );\n if (rangedListings.length > 0) {\n const updatedName = `${group.name} ${groupNamePrefix} ${this.postfixNameFromRange(range)}`;\n return {\n name: updatedName,\n listings: rangedListings,\n };\n }\n return null;\n })\n .filter((group: ListingGroup | null): group is ListingGroup => !!group);\n });\n }\n\n private splitByUnitCostRanges(\n ranges: GroupRange[],\n groupNamePrefix: string\n ): ListingGroup[] {\n return this.listingGroups.flatMap((group) => {\n return ranges\n .map((range) => {\n const rangedListings = group.listings.filter(\n (listing) =>\n listing.unitCst?.amt &&\n listing.unitCst.amt >= range.min &&\n listing.unitCst.amt <= range.max\n );\n if (rangedListings.length > 0) {\n const updatedName = `${group.name} ${groupNamePrefix} ${this.postfixNameFromRange(range)}`;\n return {\n name: updatedName,\n listings: rangedListings,\n };\n }\n return null;\n })\n .filter((group: ListingGroup | null): group is ListingGroup => !!group);\n });\n }\n\n private splitByZone(groupNamePrefix: string): ListingGroup[] {\n const rowIdToZone = this.sections.reduce(\n (res, section) => {\n for (const row of section.rows) {\n res[row.id] = row.tktClass?.name ?? 'Unknown';\n }\n return res;\n },\n {} as Record\n );\n return this.listingGroups.flatMap((group) => {\n return Object.entries(\n groupBy(\n group.listings,\n (listing) => rowIdToZone[listing.rowId ?? 0] ?? 'Unknown'\n )\n )\n .map(([zone, listings]) => {\n return {\n name: this.getGroupName(group.name, groupNamePrefix, zone),\n listings,\n };\n })\n .filter((group) => group.listings.length > 0);\n });\n }\n\n private splitBySection(groupNamePrefix: string): ListingGroup[] {\n const rowIdToSection = this.sections.reduce(\n (res, section) => {\n for (const row of section.rows) {\n res[row.id] = section.name ?? 'Unknown';\n }\n return res;\n },\n {} as Record\n );\n return this.listingGroups.flatMap((group) => {\n return Object.entries(\n groupBy(group.listings, (listing) => rowIdToSection[listing.rowId ?? 0])\n )\n .map(([name, listings]) => {\n return {\n name: this.getGroupName(\n group.name,\n groupNamePrefix,\n name ?? 'Unknown'\n ),\n listings,\n };\n })\n .filter((group) => group.listings.length > 0);\n });\n }\n\n private splitByRow(groupNamePrefix: string): ListingGroup[] {\n const rowIdToName = this.sections.reduce(\n (res, section) => {\n for (const row of section.rows) {\n res[row.id] = row.name ?? 'Unknown';\n }\n return res;\n },\n {} as Record\n );\n return this.listingGroups.flatMap((group) => {\n return Object.entries(\n groupBy(group.listings, (listing) => rowIdToName[listing.rowId ?? 0])\n )\n .map(([name, listings]) => {\n return {\n name: this.getGroupName(\n group.name,\n groupNamePrefix,\n name ?? 'Unknown'\n ),\n listings,\n };\n })\n .filter((group) => group.listings.length > 0);\n });\n }\n\n private splitByBucket(\n groupBy: ListingGroupBy,\n groupNamePrefix: string\n ): ListingGroup[] {\n const { groupingType, numberOfBuckets, bucketOption } = groupBy;\n return this.listingGroups.flatMap((group) => {\n const listings = group.listings;\n const divider =\n bucketOption === BucketType.SameSize\n ? this.sameSizeDivider(listings, numberOfBuckets ?? 2)\n : this.kMeansDivider(listings, groupingType, numberOfBuckets ?? 2);\n return divider\n .map((listings, index) => {\n return {\n name: this.getGroupName(\n group.name,\n groupNamePrefix,\n `${index + 1}`\n ),\n listings,\n };\n })\n .filter((group) => group.listings.length > 0);\n });\n }\n\n private sameSizeDivider(\n listings: Listing[],\n numberOfBuckets: number\n ): Listing[][] {\n const bucketSize = Math.ceil(listings.length / numberOfBuckets);\n const result = [];\n for (let i = 0; i < listings.length; i += bucketSize) {\n result.push(listings.slice(i, i + bucketSize));\n }\n return result;\n }\n\n private kMeansDivider(\n listings: Listing[],\n groupType: ListingGroupType,\n numberOfBuckets: number\n ): Listing[][] {\n const sanitizedBuckets = Math.min(numberOfBuckets, listings.length);\n const dataset = listings.map(\n (listing) =>\n ({\n vector: [this.getListingClusterValue(listing, groupType)],\n data: listing,\n }) as VectorWithData\n );\n return kmeans(dataset, sanitizedBuckets).clusters.map((cluster) =>\n cluster.vectors.flatMap((v) => v.data)\n );\n }\n\n private getListingClusterValue(\n listing: Listing,\n groupingType: ListingGroupType\n ) {\n switch (groupingType) {\n case ListingGroupType.Quantity:\n return listing.availQty;\n case ListingGroupType.UnitCost:\n return listing.unitCst?.amt ?? 0;\n }\n }\n\n private getGroupName(prevName: string, subPrefix: string, value: string) {\n if (prevName.trim().length === 0) {\n return `${subPrefix} ${value}`;\n }\n return `${prevName} ${subPrefix} ${value}`;\n }\n\n private postfixNameFromRange(range: GroupRange) {\n const { min, max } = range;\n if (min === max) {\n return min;\n }\n if (max === Number.MAX_VALUE) {\n return `${min}+`;\n }\n return `${min}-${max}`;\n }\n}\n","import { isEmpty, size } from 'lodash-es';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useInventoryEventBulkActionsState } from 'src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/useInventoryEventBulkActionsState';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useContentContext } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { newGuidId } from 'src/utils/idUtils';\nimport {\n Event,\n Listing,\n ListingGroupItemInput,\n MergeListingGroupInput,\n RowGroupSetting,\n} from 'src/WebApiController';\n\nimport { flattenListingGroup } from '../GroupListings/components/groupingUtils';\nimport {\n groupPrioritySort,\n useGroupSortingCriteria,\n} from '../GroupListings/components/ListingGroupInput.hook';\nimport {\n GroupListingsFormProps,\n GroupListingsState,\n GroupSortByType,\n ListingGroupType,\n} from './GroupListingsV2.types';\nimport { ListingGroupsGenerator } from './ZoneMapGroupsGenerator';\n\nconst stringSortWrapper = (\n a: string | null | undefined,\n b: string | null | undefined\n) => {\n const parsedA = parseFloat(a ?? '');\n const parsedB = parseFloat(b ?? '');\n if (isNaN(parsedA) || isNaN(parsedB)) {\n return (a ?? '').localeCompare(b ?? '');\n }\n return parsedA - parsedB;\n};\n\nconst rowRangeFromGroupSetting = (rowGroupSetting: RowGroupSetting) => {\n switch (rowGroupSetting) {\n case RowGroupSetting.OneToFiveSixPlus:\n return [\n { min: 1, max: 5 },\n { min: 6, max: Number.MAX_VALUE },\n ];\n case RowGroupSetting.OneToTenElevenPlus:\n return [\n { min: 1, max: 10 },\n { min: 11, max: Number.MAX_VALUE },\n ];\n case RowGroupSetting.SingleTwoToFiveSixPlus:\n return [\n { min: 1, max: 1 },\n { min: 2, max: 5 },\n { min: 6, max: Number.MAX_VALUE },\n ];\n case RowGroupSetting.OneTwoToFiveSixToTwelveThirteenPlus:\n return [\n { min: 1, max: 1 },\n { min: 2, max: 5 },\n { min: 6, max: 12 },\n { min: 13, max: Number.MAX_VALUE },\n ];\n default:\n return [];\n }\n};\n\nconst sortGroupListings = (\n groupListings: T[],\n eventListings: Listing[],\n groupSort?: GroupSortByType | null\n) => {\n if (!groupSort) {\n return groupListings;\n }\n const groupListingIds = groupListings.map((l) => l.listingId);\n\n const isAssending = ![\n GroupSortByType.RowDesc,\n GroupSortByType.SectionDesc,\n GroupSortByType.UnsoldQuantityDesc,\n ].includes(groupSort);\n const orderFactor = isAssending ? 1 : -1;\n const sortedListingIds = eventListings\n .filter((l) => groupListingIds.includes(l.id))\n .toSorted((a, b) => {\n if (\n [GroupSortByType.SectionAsc, GroupSortByType.SectionDesc].includes(\n groupSort\n )\n ) {\n return (\n orderFactor *\n stringSortWrapper(a.seating?.section, b.seating?.section)\n );\n }\n if (\n [GroupSortByType.RowAsc, GroupSortByType.RowDesc].includes(groupSort)\n ) {\n return orderFactor * stringSortWrapper(a.seating?.row, b.seating?.row);\n }\n\n return orderFactor * (a.availQty - b.availQty);\n })\n .map((l) => l.id);\n\n return groupListings\n .toSorted((a, b) => {\n return (\n sortedListingIds.indexOf(a.listingId) -\n sortedListingIds.indexOf(b.listingId)\n );\n })\n .map((l, index) => ({ ...l, priority: index + 1 }));\n};\n\nexport const useSetListingGroupValue = (listingGroupId: string) => {\n const { watch, setValue } = useFormContext();\n const listingGroups = watch('mergeListingGroupInputs');\n\n const setListingGroupValue = useCallback(\n (value: Partial) => {\n setValue(\n 'mergeListingGroupInputs',\n listingGroups.map((group) => {\n if (group.listingGroupId === listingGroupId) {\n return {\n ...group,\n ...value,\n };\n }\n return group;\n })\n );\n },\n [listingGroupId, listingGroups, setValue]\n );\n\n return setListingGroupValue;\n};\n\nconst useLoadListingGroups = (\n event: Event,\n listings: Listing[],\n input: GroupListingsFormProps\n) => {\n const { venueMapInfo, venueZoneConfigs } = useEventMapContext();\n\n const idToSortingCriteria = useGroupSortingCriteria(listings);\n const contentContext = useContentContext();\n\n const loadFromZoneMap = useCallback((): MergeListingGroupInput[] => {\n if (isEmpty(venueZoneConfigs?.sectionSectionGroupLookup)) {\n return [];\n }\n const rowRanges = input.groupBys[0].ranges ?? [];\n\n let generator = new ListingGroupsGenerator(\n listings,\n venueMapInfo?.sections ?? [],\n Object.values(venueZoneConfigs?.sectionSectionGroupLookup ?? {})\n )\n .generateBaseZoneGroups()\n .splitByRanges(rowRanges, ListingGroupType.Row, contentContext);\n\n if (input.groupBys.length > 1) {\n const secondaryGroup = input.groupBys[1];\n if (isEmpty(secondaryGroup.ranges)) {\n generator = generator.splitWithGroupBy(secondaryGroup, contentContext);\n } else {\n generator = generator.splitByRanges(\n secondaryGroup.ranges ?? [],\n secondaryGroup.groupingType,\n contentContext\n );\n }\n }\n\n return generator.getListingGroups().map((group): MergeListingGroupInput => {\n const listingGroupId = newGuidId();\n const { undAbsAmt, undRelAmt } = input.groupUndercutSettings ?? {};\n\n const items = sortGroupListings(\n group.listings.map((l, i) => ({\n ...l,\n listingId: l.id,\n priority: i + 1,\n })),\n listings,\n input.groupSortBy\n )\n .toSorted(\n groupPrioritySort(idToSortingCriteria, input.deprioritizedQuantities)\n )\n .map((l, i): ListingGroupItemInput => {\n const undercutSetting = {\n undAbsAmt: undAbsAmt ? undAbsAmt * i : null,\n undRelAmt: undRelAmt ? Math.min(undRelAmt * i, 1) : null,\n actRankUndAbsAmt: null,\n actRankUndRelAmt: null,\n };\n return {\n listingId: l.listingId,\n priority: i + 1,\n undercutSetting,\n groupId: l.ltGrpId,\n };\n });\n return {\n listingGroupId,\n name: group.name,\n minActiveListings: null,\n maxActiveListings: null,\n targetPercentage: null,\n viagogoEventId: event.viagId,\n viagogoMappingId: event.mappingId,\n desiredActiveListings: input.desiredActiveListings,\n deprioritizedQuantities: input.deprioritizedQuantities,\n marketplaceSettings: input.marketplaceSettings,\n groupUndercutSetting: input.groupUndercutSettings,\n listingGroupItems: items,\n groupingMethods: null,\n };\n });\n }, [\n venueZoneConfigs?.sectionSectionGroupLookup,\n input.groupBys,\n input.groupUndercutSettings,\n input.groupSortBy,\n input.deprioritizedQuantities,\n input.desiredActiveListings,\n input.marketplaceSettings,\n listings,\n venueMapInfo?.sections,\n contentContext,\n idToSortingCriteria,\n event.viagId,\n event.mappingId,\n ]);\n\n const loadFromGroupBys = useCallback(() => {\n let generator = new ListingGroupsGenerator(\n listings,\n venueMapInfo?.sections ?? [],\n Object.values(venueZoneConfigs?.sectionSectionGroupLookup ?? {})\n );\n\n for (const groupBy of input.groupBys) {\n if (isEmpty(groupBy.ranges)) {\n generator = generator.splitWithGroupBy(groupBy, contentContext);\n } else {\n generator = generator.splitByRanges(\n groupBy.ranges ?? [],\n groupBy.groupingType,\n contentContext\n );\n }\n }\n\n const { undAbsAmt, undRelAmt } = input.groupUndercutSettings ?? {};\n\n return generator.getListingGroups().map((group): MergeListingGroupInput => {\n const listingGroupId = newGuidId();\n const sortedItems = sortGroupListings(\n group.listings.map((l, i) => ({\n ...l,\n listingId: l.id,\n priority: i + 1,\n })),\n listings,\n input.groupSortBy\n )\n .toSorted(\n groupPrioritySort(idToSortingCriteria, input.deprioritizedQuantities)\n )\n .map((l, i): ListingGroupItemInput => {\n const undercutSetting = {\n undAbsAmt: undAbsAmt ? undAbsAmt * i : null,\n undRelAmt: undRelAmt ? Math.min(undRelAmt * i, 1) : null,\n actRankUndAbsAmt: null,\n actRankUndRelAmt: null,\n };\n return {\n listingId: l.listingId,\n priority: i + 1,\n undercutSetting,\n groupId: l.ltGrpId,\n };\n });\n return {\n listingGroupId,\n name: group.name,\n minActiveListings: null,\n maxActiveListings: null,\n targetPercentage: null,\n viagogoEventId: event.viagId,\n viagogoMappingId: event.mappingId,\n desiredActiveListings: input.desiredActiveListings,\n deprioritizedQuantities: input.deprioritizedQuantities,\n marketplaceSettings: input.marketplaceSettings,\n groupUndercutSetting: input.groupUndercutSettings,\n listingGroupItems: sortedItems,\n groupingMethods: null,\n };\n });\n }, [\n contentContext,\n event.mappingId,\n event.viagId,\n idToSortingCriteria,\n input.deprioritizedQuantities,\n input.desiredActiveListings,\n input.groupBys,\n input.groupSortBy,\n input.groupUndercutSettings,\n input.marketplaceSettings,\n listings,\n venueMapInfo?.sections,\n venueZoneConfigs?.sectionSectionGroupLookup,\n ]);\n\n return {\n loadFromGroupBys,\n loadFromZoneMap,\n };\n};\n\nexport const useEventListings = (event: Event) => {\n const { eventsTransformed } = useCatalogDataContext();\n\n const eventDate = useMemo(() => {\n return (\n eventsTransformed?.find(\n (e) => e.event.viagVirtualId === event.viagVirtualId\n ) ?? null\n );\n }, [event.viagVirtualId, eventsTransformed]);\n\n const { filterQueryWithEventIds } = useInventoryEventBulkActionsState(event);\n\n const eventListings = useMemo(() => {\n const selectedListingIds = filterQueryWithEventIds.entityIds ?? [];\n if (\n selectedListingIds.length === 0 ||\n eventDate?.entities?.listings == null\n ) {\n return (\n (eventDate?.entities?.listings?.flatMap(\n flattenListingGroup\n ) as Listing[]) ?? []\n );\n }\n\n return (\n (eventDate?.entities?.listings\n .filter((l) => selectedListingIds.includes(l.id))\n .flatMap(flattenListingGroup) as Listing[]) ?? []\n );\n }, [filterQueryWithEventIds.entityIds, eventDate?.entities?.listings]);\n\n return eventListings;\n};\n\nexport const useGroupListingsAction = (\n event: Event,\n onSubmit: (input: GroupListingsFormProps) => void\n) => {\n const [state, setState] = useState(\n GroupListingsState.Configure\n );\n\n const eventListings = useEventListings(event);\n\n const { watch, setValue, handleSubmit } =\n useFormContext();\n const input = watch();\n\n const primaryGroupType = useMemo(() => {\n if (size(input.groupBys) < 1) {\n return null;\n }\n return input.groupBys[0].groupingType;\n }, [input.groupBys]);\n\n const { loadFromGroupBys, loadFromZoneMap } = useLoadListingGroups(\n event,\n eventListings,\n input\n );\n\n const onFooterNav = useCallback(\n (back = false) => {\n // Move from configure to preview\n if (state === GroupListingsState.Configure) {\n if (primaryGroupType === ListingGroupType.ZoneMap) {\n const groups = loadFromZoneMap();\n setValue('mergeListingGroupInputs', groups);\n } else {\n const groups = loadFromGroupBys();\n setValue('mergeListingGroupInputs', groups);\n }\n setState(GroupListingsState.Review);\n }\n\n // Submit\n if (state === GroupListingsState.Review) {\n if (back) {\n setState(GroupListingsState.Configure);\n } else {\n handleSubmit(onSubmit)();\n }\n }\n },\n [\n state,\n primaryGroupType,\n loadFromZoneMap,\n setValue,\n loadFromGroupBys,\n handleSubmit,\n onSubmit,\n ]\n );\n\n return {\n state,\n onFooterNav,\n eventListings,\n };\n};\n","import { isEmpty } from 'lodash-es';\nimport {\n ListingGroupItemInput,\n ListingGroupUndercutSetting,\n} from 'src/WebApiController';\n\nexport const withGroupUndercustSettings = (\n groupUndercutSetting: ListingGroupUndercutSetting | null,\n listingGroupItems: ListingGroupItemInput[]\n): ListingGroupItemInput[] => {\n if (isEmpty(listingGroupItems)) {\n return listingGroupItems;\n }\n const { undAbsAmt, undRelAmt } = groupUndercutSetting ?? {};\n return listingGroupItems.map((listing, index): ListingGroupItemInput => {\n const undercutSetting: ListingGroupUndercutSetting = {\n undAbsAmt: undAbsAmt ? undAbsAmt * index : null,\n undRelAmt: undRelAmt ? Math.min(undRelAmt * index, 1) : null,\n actRankUndAbsAmt: null,\n actRankUndRelAmt: null,\n };\n return {\n ...listing,\n undercutSetting,\n };\n });\n};\n","import { sum } from 'lodash-es';\nimport {\n ComponentProps,\n ReactNode,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { Content } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { newGuidId } from 'src/utils/idUtils';\nimport { Listing, MergeListingGroupInput } from 'src/WebApiController';\n\nimport * as styles from './GroupListingsPreview.css';\nimport { UngroupedListingGroupId } from './GroupListingsPreviewTable.constants';\n\nexport type MoveListingGroupItem = Pick<\n MergeListingGroupInput,\n 'listingGroupId' | 'name' | 'listingGroupItems'\n>;\n\ntype MoveListingGroupDialogProps = ComponentProps & {\n onClose: () => void;\n currentListingGroupId?: string;\n listings: Listing[];\n listingGroups: MoveListingGroupItem[];\n onMoveListingToGroup: (\n targetListingGroupId: string,\n newGroupName?: string\n ) => void;\n canAddNewGroup?: boolean;\n};\n\nexport const MoveListingGroupDialog: React.FC = ({\n currentListingGroupId,\n listingGroups,\n listings,\n onMoveListingToGroup,\n onClose,\n canAddNewGroup = false,\n ...rest\n}) => {\n const [targetListingGroupId, setTargetListingGroupId] = useState();\n const [groupMode, setGroupMode] = useState<'Select' | 'Create'>('Select');\n const [newGroupName, setNewGroupName] = useState(null);\n const [groups, setGroups] = useState(listingGroups);\n\n const onConfirm = useCallback(() => {\n if (groupMode === 'Select') {\n if (targetListingGroupId) {\n const targetGroup = groups.find(\n (group) => group.listingGroupId === targetListingGroupId\n );\n onMoveListingToGroup(targetListingGroupId, targetGroup?.name);\n }\n } else {\n if (!newGroupName) {\n return;\n }\n const newListingGroupId = newGuidId();\n setGroups((prev) => {\n return [\n ...prev,\n {\n listingGroupId: newListingGroupId,\n name: newGroupName,\n listingGroupItems: [],\n },\n ];\n });\n setNewGroupName(null);\n setGroupMode('Select');\n setTargetListingGroupId(newListingGroupId);\n }\n }, [\n groupMode,\n groups,\n newGroupName,\n onMoveListingToGroup,\n targetListingGroupId,\n ]);\n\n const idToListing = useMemo(() => {\n return listings.reduce(\n (res, listing) => {\n res[listing.id] = listing;\n return res;\n },\n {} as Record\n );\n }, [listings]);\n\n const [groupOptions, contentOptions] = useMemo(() => {\n const groupOptions = groups.reduce(\n (res, group) => {\n if (\n group.listingGroupId !== currentListingGroupId &&\n group.listingGroupId !== UngroupedListingGroupId\n ) {\n res[group.listingGroupId] = group.name;\n }\n return res;\n },\n {} as Record\n );\n\n const contentOptions = groups.reduce(\n (res, group) => {\n if (\n group.listingGroupId !== currentListingGroupId &&\n group.listingGroupId !== UngroupedListingGroupId\n ) {\n const groupListings = group.listingGroupItems.map(\n (item) => idToListing[item.listingId]\n );\n const availableQuantity = sum(\n groupListings.map((listing) => listing?.availQty ?? 0)\n );\n const total = sum(\n groupListings.map((listing) => listing?.ticketCnt ?? 0)\n );\n res[group.listingGroupId] = (\n \n
    {group.name}
    \n \n \n
    \n :\n
    \n
    {total}
    \n
    \n \n
    \n :\n
    \n
    \n {availableQuantity}\n
    \n
    \n
    \n \n );\n }\n return res;\n },\n {} as Record\n );\n return [groupOptions, contentOptions];\n }, [currentListingGroupId, idToListing, groups]);\n\n const content = useMemo(() => {\n if (groupMode === 'Select') {\n return (\n \n
    \n :\n
    \n \n
    \n );\n }\n\n return (\n \n
    \n :\n
    \n {\n const newValue = e.target.value?.length ? e.target.value : null;\n if (newGroupName !== newValue) {\n setNewGroupName(newValue);\n }\n }}\n maxLength={200}\n />\n
    \n );\n }, [\n contentOptions,\n groupMode,\n groupOptions,\n newGroupName,\n targetListingGroupId,\n ]);\n\n const actionButton = useMemo(() => {\n if (!canAddNewGroup) {\n return undefined;\n }\n if (groupMode === 'Select') {\n return (\n \n );\n }\n return (\n \n );\n }, [canAddNewGroup, groupMode]);\n\n const readyToSubmit = useMemo(() => {\n if (groupMode === 'Select') {\n return targetListingGroupId;\n }\n return newGroupName;\n }, [groupMode, newGroupName, targetListingGroupId]);\n\n return (\n <>\n }\n footer={\n \n {actionButton}\n \n \n \n \n \n }\n onCancel={onClose}\n >\n {content}\n \n \n );\n};\n","import {\n closestCenter,\n DndContext,\n DragEndEvent,\n KeyboardSensor,\n MouseSensor,\n UniqueIdentifier,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n useSortable,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport {\n flexRender,\n getCoreRowModel,\n Row,\n useReactTable,\n} from '@tanstack/react-table';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { vars } from 'src/core/themes';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport {\n groupPrioritySort,\n useGroupSortingCriteria,\n} from 'src/modals/GroupListings/components/ListingGroupInput.hook';\nimport {\n Listing,\n ListingGroupItemInput,\n ListingGroupUndercutSetting,\n MergeListingGroupInput,\n} from 'src/WebApiController';\n\nimport { useSetListingGroupValue } from '../../GroupListingsV2.hooks';\nimport { GroupListingsFormProps } from '../../GroupListingsV2.types';\nimport * as styles from './GroupListingsPreview.css';\nimport {\n UngroupedListingGroupId,\n usePreviewTableColumns,\n} from './GroupListingsPreviewTable.constants';\nimport { withGroupUndercustSettings } from './GroupsPreview.utils';\nimport { MoveListingGroupDialog } from './MoveListingGroupDialog';\n\nexport type GroupListingTableItem = ListingGroupItemInput & Listing;\n\ntype GroupListingPreviewTableProps = {\n listingGroup: MergeListingGroupInput;\n eventListings: Listing[];\n isUngroupedGroup: boolean;\n};\n\n// Row Component\nconst DraggableRow = ({ row }: { row: Row }) => {\n const { transform, transition, setNodeRef, isDragging } = useSortable({\n id: row.original.id,\n });\n\n return (\n \n {row.getVisibleCells().map((cell) => (\n
    \n ))}\n \n );\n};\n\nexport const GroupListingPreviewTable: React.FC<\n GroupListingPreviewTableProps\n> = ({ listingGroup, eventListings, isUngroupedGroup }) => {\n const { watch, setValue } = useFormContext();\n const listingGroups = watch('mergeListingGroupInputs');\n\n const [targetListingId, setTargetListingId] = useState();\n\n const moveListingGroupDialog = useBasicDialog();\n\n const idToSortingCriteria = useGroupSortingCriteria(eventListings);\n\n const setListingGroupValue = useSetListingGroupValue(\n listingGroup.listingGroupId\n );\n\n const listingIdToItem = useMemo(\n () =>\n listingGroup.listingGroupItems.reduce(\n (res, item) => {\n res[item.listingId] = item;\n return res;\n },\n {} as Record\n ),\n [listingGroup.listingGroupItems]\n );\n\n const listings = useMemo((): GroupListingTableItem[] => {\n const groupListingIds = Object.keys(listingIdToItem);\n return eventListings\n .filter((listing) => groupListingIds.includes(listing.id + ''))\n .map((listing) => ({ ...listing, ...listingIdToItem[listing.id] }))\n .toSorted((a, b) => a.priority - b.priority);\n }, [eventListings, listingIdToItem]);\n\n const listingIds = useMemo(\n () => listings.map(({ id }) => id),\n [listings]\n );\n\n const onMoveListing = useCallback(\n (listingId: number) => {\n setTargetListingId(listingId);\n moveListingGroupDialog.launchDialog();\n },\n [moveListingGroupDialog]\n );\n\n const onRemoveListingFromGroup = useCallback(\n (listingId: number) => {\n const updatedListings = withGroupUndercustSettings(\n listingGroup.groupUndercutSetting,\n listingGroup.listingGroupItems.filter(\n (item) => item.listingId !== listingId\n )\n ).map((item, index) => ({\n ...item,\n priority: index + 1,\n }));\n setListingGroupValue({\n listingGroupItems: updatedListings,\n });\n },\n [\n listingGroup.groupUndercutSetting,\n listingGroup.listingGroupItems,\n setListingGroupValue,\n ]\n );\n\n const onMoveListingToGroup = useCallback(\n (targetListingGroupId: string) => {\n if (!targetListingId) {\n return;\n }\n const targetListing = listings.find(\n ({ listingId }) => listingId === targetListingId\n );\n if (!targetListing) {\n return;\n }\n\n const idToGroup = listingGroups.reduce(\n (res, group) => {\n res[group.listingGroupId] = group;\n return res;\n },\n {} as Record\n );\n\n const toGroup = idToGroup[targetListingGroupId];\n\n if (listingGroup.listingGroupId === UngroupedListingGroupId) {\n const newItems = [\n ...toGroup.listingGroupItems,\n {\n listingId: targetListing.id,\n priority: toGroup.listingGroupItems.length + 1,\n groupId: targetListing.ltGrpId,\n undercutSetting: null,\n } as ListingGroupItemInput,\n ];\n\n idToGroup[targetListingGroupId] = {\n ...toGroup,\n listingGroupItems: withGroupUndercustSettings(\n toGroup.groupUndercutSetting,\n newItems\n )\n .toSorted(\n groupPrioritySort(\n idToSortingCriteria,\n toGroup.deprioritizedQuantities\n )\n )\n .map((listing, index) => ({\n ...listing,\n priority: index + 1,\n })),\n };\n } else {\n const fromGroup = idToGroup[listingGroup.listingGroupId];\n\n const targetListingGroupItem = fromGroup.listingGroupItems.find(\n ({ listingId }) => listingId === targetListingId\n );\n if (!targetListingGroupItem || !targetListing) {\n return;\n }\n\n idToGroup[listingGroup.listingGroupId] = {\n ...fromGroup,\n listingGroupItems: withGroupUndercustSettings(\n fromGroup.groupUndercutSetting,\n fromGroup.listingGroupItems.filter(\n ({ listingId }) => listingId !== targetListingId\n )\n ).map((listing, index) => ({\n ...listing,\n priority: index + 1,\n })),\n };\n\n const targetGroupItems = [\n ...toGroup.listingGroupItems,\n { ...targetListingGroupItem, groupId: targetListing.ltGrpId },\n ];\n idToGroup[targetListingGroupId] = {\n ...toGroup,\n listingGroupItems: withGroupUndercustSettings(\n toGroup.groupUndercutSetting,\n targetGroupItems\n )\n .toSorted(\n groupPrioritySort(\n idToSortingCriteria,\n toGroup.deprioritizedQuantities\n )\n )\n .map((listing, index) => ({\n ...listing,\n priority: index + 1,\n })),\n };\n }\n\n setValue('mergeListingGroupInputs', Object.values(idToGroup));\n moveListingGroupDialog.closeDialog();\n },\n [\n idToSortingCriteria,\n listingGroup.listingGroupId,\n listingGroups,\n listings,\n moveListingGroupDialog,\n setValue,\n targetListingId,\n ]\n );\n\n const columns = usePreviewTableColumns(\n listingGroup.desiredActiveListings,\n isUngroupedGroup,\n onRemoveListingFromGroup,\n onMoveListing\n );\n\n const table = useReactTable({\n data: listings,\n columns,\n getCoreRowModel: getCoreRowModel(),\n getRowId: (row) => row.id + '',\n sortingFns: {},\n });\n\n // reorder rows after drag & drop\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n if (active && over && active.id !== over.id) {\n const oldIndex = listingIds.indexOf(active.id);\n const newIndex = listingIds.indexOf(over.id);\n const reordered = arrayMove(listings, oldIndex, newIndex);\n const updateGroupItems = reordered.map(\n (listing, index): ListingGroupItemInput => {\n const { undAbsAmt, undRelAmt } =\n listingGroup.groupUndercutSetting ?? {};\n const undercutSetting: ListingGroupUndercutSetting = {\n undAbsAmt: undAbsAmt ? undAbsAmt * index : null,\n undRelAmt: undRelAmt ? undRelAmt * index : null,\n actRankUndAbsAmt: null,\n actRankUndRelAmt: null,\n };\n return {\n listingId: listing.id,\n groupId: listing.ltGrpId,\n priority: index + 1,\n undercutSetting,\n };\n }\n );\n setListingGroupValue({\n listingGroupItems: updateGroupItems,\n });\n }\n }\n\n const sensors = useSensors(\n useSensor(MouseSensor, {}),\n useSensor(KeyboardSensor, {})\n );\n\n return (\n <>\n \n
    \n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n
    \n \n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => (\n \n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n \n ))}\n \n ))}\n \n \n \n {table.getRowModel().rows.map((row) => (\n \n ))}\n \n \n
    \n \n \n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useMemo, useState } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { getQuantitiesOptions } from 'src/modals/GroupListings/components/groupingUtils';\nimport {\n groupPrioritySort,\n useGroupSortingCriteria,\n} from 'src/modals/GroupListings/components/ListingGroupInput.hook';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n Listing,\n ListingGroupItemInput,\n MergeListingGroupInput,\n} from 'src/WebApiController';\n\nimport { useSetListingGroupValue } from '../../GroupListingsV2.hooks';\nimport { RankPremiumType } from '../../GroupListingsV2.types';\nimport * as styles from './GroupListingsPreview.css';\nimport { GroupListingPreviewTable } from './GroupListingsPreviewTable';\nimport { UngroupedListingGroupId } from './GroupListingsPreviewTable.constants';\nimport { withGroupUndercustSettings } from './GroupsPreview.utils';\n\nexport const RelativeAbsoluteGroupOptions = [\n { value: RankPremiumType.Relative, children: '%' },\n { value: RankPremiumType.Absolute, children: '$' },\n];\n\ntype GroupListingsPreviewProps = {\n listingGroup: MergeListingGroupInput;\n eventListings: Listing[];\n};\n\nexport const GroupListingsPreview: React.FC = ({\n listingGroup,\n eventListings,\n}) => {\n const setListingGroupValue = useSetListingGroupValue(\n listingGroup.listingGroupId\n );\n\n const isUngroupedGroup = useMemo(\n () => listingGroup.listingGroupId === UngroupedListingGroupId,\n [listingGroup.listingGroupId]\n );\n\n const idToSortingCriteria = useGroupSortingCriteria(eventListings);\n\n const [rankPremium, setRankPremium] = useState(() =>\n listingGroup.groupUndercutSetting?.undAbsAmt\n ? RankPremiumType.Absolute\n : RankPremiumType.Relative\n );\n\n const premiumValue = useMemo(() => {\n if (rankPremium === RankPremiumType.Absolute) {\n return listingGroup.groupUndercutSetting?.undAbsAmt ?? undefined;\n }\n if (listingGroup.groupUndercutSetting?.undRelAmt != null) {\n return listingGroup.groupUndercutSetting?.undRelAmt * 100;\n }\n return undefined;\n }, [\n listingGroup.groupUndercutSetting?.undAbsAmt,\n listingGroup.groupUndercutSetting?.undRelAmt,\n rankPremium,\n ]);\n\n const onRankPremiumChange = useCallback(\n (premium: string) => {\n if (premium === rankPremium) {\n return;\n }\n const { groupUndercutSetting, listingGroupItems } = listingGroup;\n const value =\n groupUndercutSetting?.undAbsAmt ??\n groupUndercutSetting?.undRelAmt ??\n null;\n let undercutSetting;\n if (premium === RankPremiumType.Absolute) {\n undercutSetting = {\n actRankUndAbsAmt: null,\n actRankUndRelAmt: null,\n undRelAmt: null,\n undAbsAmt: value ? value * 100 : null,\n };\n } else {\n undercutSetting = {\n actRankUndAbsAmt: null,\n actRankUndRelAmt: null,\n undRelAmt: value ? Math.min(value, 100) / 100 : null,\n undAbsAmt: null,\n };\n }\n setListingGroupValue({\n groupUndercutSetting: undercutSetting,\n listingGroupItems: withGroupUndercustSettings(\n undercutSetting,\n listingGroupItems\n ),\n });\n setRankPremium(premium as RankPremiumType);\n },\n [listingGroup, rankPremium, setListingGroupValue]\n );\n\n const onPremiumValueChange: React.ChangeEventHandler =\n useCallback(\n (event) => {\n const value = parseFloat(event.target.value);\n let undercutSetting;\n if (rankPremium === RankPremiumType.Absolute) {\n undercutSetting = {\n actRankUndAbsAmt: null,\n actRankUndRelAmt: null,\n undRelAmt: null,\n undAbsAmt: isNaN(value) ? null : value,\n };\n }\n if (rankPremium === RankPremiumType.Relative) {\n undercutSetting = {\n actRankUndAbsAmt: null,\n actRankUndRelAmt: null,\n undRelAmt: isNaN(value) ? null : Math.min(value, 100) / 100,\n undAbsAmt: null,\n };\n }\n if (undercutSetting) {\n setListingGroupValue({\n groupUndercutSetting: undercutSetting,\n listingGroupItems: withGroupUndercustSettings(\n undercutSetting,\n listingGroup.listingGroupItems\n ),\n });\n }\n },\n [listingGroup.listingGroupItems, rankPremium, setListingGroupValue]\n );\n\n const onUpdateDeprioritizeQuantities = useCallback(\n (newValues: string[]) => {\n if (!isEqual(newValues, listingGroup.deprioritizedQuantities)) {\n setListingGroupValue({\n deprioritizedQuantities: newValues,\n listingGroupItems: listingGroup.listingGroupItems\n .toSorted(groupPrioritySort(idToSortingCriteria, newValues))\n .map((l, i): ListingGroupItemInput => {\n return {\n ...l,\n priority: i + 1,\n };\n }),\n });\n }\n },\n [\n idToSortingCriteria,\n listingGroup.deprioritizedQuantities,\n listingGroup.listingGroupItems,\n setListingGroupValue,\n ]\n );\n\n return (\n \n \n :\n
    \n }\n onChange={(value) =>\n setListingGroupValue({\n name: value.target.value,\n })\n }\n />\n {!isUngroupedGroup && (\n \n \n :\n
    \n }\n value={premiumValue}\n onChange={onPremiumValueChange}\n postfixDisplay={\n \n }\n />\n\n \n :\n \n }\n value={listingGroup.desiredActiveListings ?? undefined}\n onChange={(e) => {\n const value = parseInt(e.target.value);\n if (isNaN(value) || value <= 0) {\n setListingGroupValue({\n desiredActiveListings: null,\n });\n return;\n }\n setListingGroupValue({\n desiredActiveListings: value,\n });\n }}\n />\n\n \n :\n \n }\n triggerProps={{ style: { width: '100%' } }}\n values={listingGroup.deprioritizedQuantities ?? []}\n onChange={onUpdateDeprioritizeQuantities}\n valueOptionsContent={getQuantitiesOptions()}\n valuesDisplayText={(\n listingGroup.deprioritizedQuantities ?? []\n ).join(',')}\n />\n
    \n )}\n \n \n );\n};\n","import { first, isEmpty } from 'lodash-es';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport * as Tabs from 'src/core/ui/Tabs';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n Listing,\n ListingGroupItemInput,\n MergeListingGroupInput,\n} from 'src/WebApiController';\n\nimport { GroupListingsFormProps } from '../../GroupListingsV2.types';\nimport { GroupListingsPreview } from './GroupListingsPreview';\nimport * as styles from './GroupListingsPreview.css';\nimport { UngroupedListingGroupId } from './GroupListingsPreviewTable.constants';\n\ntype GroupPreivewProps = {\n eventListings: Listing[];\n};\n\nexport const GroupsPreview: React.FC = ({\n eventListings,\n}) => {\n const { watch } = useFormContext();\n const groups = watch('mergeListingGroupInputs');\n\n const [selectedGroup, setSelectedGroup] = useState();\n const ungroupedText = useContent(ContentId.Ungrouped);\n\n const ungroupedListings = useMemo(() => {\n const groupedListingIds = groups.flatMap((group) =>\n group.listingGroupItems.map(({ listingId }) => listingId)\n );\n return eventListings.filter(({ id }) => !groupedListingIds.includes(id));\n }, [eventListings, groups]);\n\n const ungroupedListingGroup = useMemo((): MergeListingGroupInput | null => {\n if (isEmpty(ungroupedListings)) {\n return null;\n }\n return {\n listingGroupId: UngroupedListingGroupId,\n name: ungroupedText,\n viagogoEventId: null,\n viagogoMappingId: null,\n marketplaceSettings: null,\n maxActiveListings: null,\n minActiveListings: null,\n groupingMethods: null,\n groupUndercutSetting: null,\n desiredActiveListings: null,\n deprioritizedQuantities: null,\n targetPercentage: null,\n listingGroupItems: ungroupedListings.map(\n (listing, index) =>\n ({\n listingId: listing.id,\n priority: index + 1,\n groupId: null,\n undercutSetting: null,\n }) as ListingGroupItemInput\n ),\n };\n }, [ungroupedListings, ungroupedText]);\n\n const enrichedGroups = useMemo(() => {\n if (ungroupedListingGroup === null) {\n return groups;\n }\n return [...groups, ungroupedListingGroup];\n }, [groups, ungroupedListingGroup]);\n\n useEffect(() => {\n if (isEmpty(enrichedGroups)) {\n return;\n }\n const firstGroup = first(enrichedGroups);\n const ids = enrichedGroups.map(({ listingGroupId }) => listingGroupId);\n if (selectedGroup && ids.includes(selectedGroup)) {\n return;\n }\n setSelectedGroup(firstGroup!.listingGroupId);\n }, [enrichedGroups, selectedGroup]);\n\n if (isEmpty(groups)) {\n return ;\n }\n return (\n \n \n {enrichedGroups.map((group) => {\n return (\n \n {group.name}\n \n );\n })}\n \n {enrichedGroups.map((group) => {\n return (\n \n \n \n );\n })}\n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport {\n Content,\n getContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { getQuantitiesOptions } from 'src/modals/GroupListings/components/groupingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from '../../GroupListingsV2.css';\nimport {\n GroupListingsFormProps,\n GroupSortByType,\n} from '../../GroupListingsV2.types';\nimport { SettingsTitle } from '../SettingsTitle';\n\ntype OrderingMethodsProps = {};\n\nexport const OrderingMethods: React.FC = () => {\n const { watch, setValue } = useFormContext();\n const groupSortBy = watch('groupSortBy');\n const deprioritizedQuantities = watch('deprioritizedQuantities');\n const desiredActiveListings = watch('desiredActiveListings');\n\n const contentContext = useContentContext();\n\n const sortingOptions = useMemo(() => {\n return {\n [GroupSortByType.RowDesc.toString()]: getContent(\n ContentId.RowsAscToDesc,\n contentContext\n ),\n [GroupSortByType.RowAsc.toString()]: getContent(\n ContentId.RowsDescToAsc,\n contentContext\n ),\n [GroupSortByType.SectionDesc.toString()]: getContent(\n ContentId.SectionsAscToDesc,\n contentContext\n ),\n [GroupSortByType.SectionAsc.toString()]: getContent(\n ContentId.SectionsDescToAsc,\n contentContext\n ),\n [GroupSortByType.UnsoldQuantityDesc.toString()]: getContent(\n ContentId.UnsoldQuantitiesHighToLow,\n contentContext\n ),\n [GroupSortByType.UnsoldQuantityAsc.toString()]: getContent(\n ContentId.UnsoldQuantitiesLowToHigh,\n contentContext\n ),\n };\n }, [contentContext]);\n\n return (\n \n \n }\n subtitle={}\n />\n\n \n type && setValue('groupSortBy', type as GroupSortByType)\n }\n valueOptionsContent={sortingOptions}\n valueOptionsContentOverride={sortingOptions}\n className={styles.inputStyle}\n />\n \n \n }\n subtitle={}\n />\n {\n const value = parseInt(e.target.value);\n if (value >= 0 && value !== desiredActiveListings) {\n setValue('desiredActiveListings', value);\n }\n }}\n rootProps={{ className: styles.inputStyle }}\n />\n \n \n }\n subtitle={\n \n }\n />\n
    \n {\n if (!isEqual(newValues, deprioritizedQuantities)) {\n setValue(`deprioritizedQuantities`, newValues);\n }\n }}\n valueOptionsContent={getQuantitiesOptions()}\n valuesDisplayText={(deprioritizedQuantities ?? []).join(', ')}\n />\n
    \n
    \n
    \n );\n};\n","import { useCallback, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Radio, RadioGroup, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from '../../GroupListingsV2.css';\nimport {\n GroupListingsFormProps,\n RankPremiumType,\n} from '../../GroupListingsV2.types';\n\ntype RankPremiumProps = {};\n\nexport const RankPremium: React.FC = () => {\n const [rankPremiumType, setRankPremiumType] = useState(\n RankPremiumType.Absolute\n );\n const { getUiCurrency } = useLocalizationContext();\n const currency = getUiCurrency('USD');\n\n const { watch, setValue, register } =\n useFormContext();\n const undercutPremium = watch('groupUndercutSettings');\n\n const onRankPremiumTypeChange = useCallback(\n (premiumType: RankPremiumType) => {\n if (premiumType === RankPremiumType.Absolute) {\n setValue('groupUndercutSettings.undRelAmt', null);\n } else {\n setValue('groupUndercutSettings.undAbsAmt', null);\n }\n setRankPremiumType(premiumType);\n },\n [setValue]\n );\n\n return (\n \n \n \n }\n />\n (v ? parseFloat(v) : null),\n })}\n disabled={rankPremiumType === RankPremiumType.Relative}\n uiCurrency={currency}\n rootProps={{ className: styles.inputStyle }}\n />\n \n \n }\n />\n {\n const v = parseFloat(e.target.value);\n let relativeValue = null;\n if (v >= 0 && v <= Number.MAX_VALUE) {\n relativeValue = Math.min(v, 100) / 100;\n }\n setValue(`groupUndercutSettings.undRelAmt`, relativeValue);\n }}\n value={\n undercutPremium?.undRelAmt\n ? undercutPremium?.undRelAmt * 100\n : undefined\n }\n rootProps={{ className: styles.inputStyle }}\n />\n \n \n \n );\n};\n","import { Content, useContent } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { DividerLine, Stack, Tooltip } from 'src/core/ui';\nimport { InfoOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Event, Listing } from 'src/WebApiController';\n\nimport { GroupBroadcastSettings } from './components/Broadcast';\nimport { GroupingMethods } from './components/GroupingMethods';\nimport { GroupListingsSetting } from './components/GroupListingsSetting';\nimport { GroupsPreview } from './components/GroupsPreview';\nimport { OrderingMethods } from './components/OrderingMethods';\nimport { RankPremium } from './components/RankPremium';\nimport { GroupListingsState } from './GroupListingsV2.types';\n\ntype GroupListingsBodyProps = {\n event: Event;\n state: GroupListingsState;\n eventListings: Listing[];\n};\n\nexport const GroupListingsBody: React.FC = ({\n event,\n state,\n eventListings,\n}) => {\n const rankPremiumTips = useContent(ContentId.RankPremiumTips);\n if (state === GroupListingsState.Review) {\n return ;\n }\n return (\n \n }\n content={}\n defaultToOpen\n />\n \n \n \n \n \n \n }\n >\n \n \n \n }\n content={}\n />\n \n }\n content={}\n />\n \n }\n content={}\n />\n \n );\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { useCallback, useContext, useState } from 'react';\nimport { FormProvider, useForm, useFormContext } from 'react-hook-form';\nimport { ModalBody } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { INVENTORY_BULK_CREATE_LISTING_GROUPS_KEY } from 'src/components/Listings/InventoryActionDropdown';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { EventMapContextProvider } from 'src/contexts/EventMapContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditListingClient,\n Event,\n RowGroupSetting,\n VenueZoneConfigType,\n} from 'src/WebApiController';\n\nimport { CancellableFormFooter } from '../common';\nimport { CancellableFormHeader } from '../common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from '../common/EventEntityHeader';\nimport { Summary } from '../common/Summary';\nimport { ModalFooter } from '../Modal';\nimport { ModalBodyDataContainer } from '../Modal/Modal.styled';\nimport { UngroupedListingGroupId } from './components/GroupsPreview/GroupListingsPreviewTable.constants';\nimport { GroupListingsBody } from './GroupListingsBody';\nimport { useGroupListingsAction } from './GroupListingsV2.hooks';\nimport {\n GroupListingsFormProps,\n GroupListingsState,\n ListingGroupType,\n} from './GroupListingsV2.types';\n\ntype GroupListingsV2Props = {\n event: Event;\n};\n\nexport const GroupListingsV2: React.FC = ({ event }) => {\n const methods = useForm({\n defaultValues: {\n venueZoneConfigType: VenueZoneConfigType.ConcertsSectionsBehindStage,\n rowGroupSetting: RowGroupSetting.SingleTwoToFiveSixPlus,\n desiredActiveListings: undefined,\n deprioritizedQuantities: undefined,\n groupUndercutSettings: null,\n marketplaceSettings: null,\n groupBys: [\n {\n groupingType: ListingGroupType.ZoneMap,\n ranges: [\n { min: 1, max: 1 },\n { min: 2, max: 5 },\n { min: 6, max: Number.MAX_VALUE },\n ],\n },\n ],\n mergeListingGroupInputs: [],\n },\n });\n return (\n \n \n \n \n \n );\n};\n\nconst GroupListingV2Content: React.FC = ({ event }) => {\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const { formState, reset } = useFormContext();\n const [isLoading, setIsLoading] = useState(false);\n const { isSubmitting } = formState;\n const { setActivePosEntity } = useActivePosEntityContext();\n const { setProgress, setPreview, setStage, setMainDialogOpened } =\n useBulkEditHubContext();\n\n const { closeModal } = useContext(ModalContext);\n const { activeAccountWebClientConfig } = useAppContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { bulkEditHub, initJob } = useBulkEditHub(\n ActionOutboxEntityType.Listing,\n BulkActionType.GroupListings,\n INVENTORY_BULK_CREATE_LISTING_GROUPS_KEY,\n async () => {\n setActivePosEntity(0);\n await refreshExpandedListItems();\n\n closeModal();\n }\n );\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const onSubmit = useCallback(\n (inputFormData: GroupListingsFormProps) => {\n setIsLoading(true);\n\n tryInvokeApi(\n async () => {\n initJob();\n const filteredListingGroupInputs =\n inputFormData.mergeListingGroupInputs\n .map((groupInput) => ({\n ...groupInput,\n desiredActiveListings: groupInput.desiredActiveListings ?? 0,\n listingGroupItems: groupInput.listingGroupItems.filter(\n (x) => x.listingId > 0\n ),\n }))\n .filter(\n (m) =>\n m.listingGroupItems.length &&\n m.listingGroupId !== UngroupedListingGroupId\n );\n\n const succeeded = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkCreateListingGroups(\n {\n mergeListingGroupInputs: filteredListingGroupInputs,\n },\n INVENTORY_BULK_CREATE_LISTING_GROUPS_KEY,\n hasBackgroundBulkEditFeature\n );\n\n reset(inputFormData);\n if (!hasBackgroundBulkEditFeature) {\n if (succeeded) {\n setActivePosEntity(0);\n await refreshExpandedListItems();\n\n closeModal();\n }\n }\n },\n (error) => {\n showErrorDialog(\n 'BulkEditListingClient.bulkCreateListingGroups',\n error,\n {\n trackErrorData: inputFormData,\n }\n );\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n closeModal,\n hasBackgroundBulkEditFeature,\n initJob,\n refreshExpandedListItems,\n reset,\n setActivePosEntity,\n showErrorDialog,\n ]\n );\n\n const { state, onFooterNav, eventListings } = useGroupListingsAction(\n event,\n onSubmit\n );\n\n return (\n <>\n {\n setProgress(undefined);\n setPreview(undefined);\n setStage(BulkEditStage.Idle);\n setMainDialogOpened(false);\n }}\n >\n }\n />\n \n\n \n \n
    \n \n
    \n \n \n \n
    \n
    \n \n \n {state === GroupListingsState.Configure && (\n {\n setProgress(undefined);\n setPreview(undefined);\n setStage(BulkEditStage.Idle);\n setMainDialogOpened(false);\n }}\n />\n )}\n {state === GroupListingsState.Review && (\n onFooterNav(true)}\n />\n )}\n \n \n \n \n );\n};\n","import { useCallback, useContext } from 'react';\nimport { useBulkBroadcastActionsPermission } from 'src/components/common/BulkActions/BulkBroadcastActions/useBulkBroadcastActionsPermission';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { GroupListingsV2 } from 'src/modals/GroupListingsV2';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Event } from 'src/WebApiController';\n\ntype LaunchGroupingWizardModal = {\n event: Event;\n};\n\nexport const LaunchGroupingWizard: React.FC = ({\n event,\n}) => {\n const { hasBroadcastPermission } = useBulkBroadcastActionsPermission();\n\n const { setModal } = useContext(ModalContext);\n const {\n eventsExpansion: { setListItemExpansion },\n } = useCatalogDataContext();\n\n const groupListings = useCallback(() => {\n setModal({\n children: ,\n clickOutsideToClose: true,\n ...{ size: 'slide-in', fullscreen: 'sm' },\n });\n }, [setModal, event]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setListItemExpansion(true, [event.viagVirtualId]);\n\n groupListings();\n },\n [event.viagVirtualId, groupListings, setListItemExpansion]\n );\n\n if (!hasBroadcastPermission) {\n return null;\n }\n\n return (\n \n \n \n \n \n );\n};\n","import { useCallback, useContext, useMemo } from 'react';\nimport { useInventoryEventBulkActionsState } from 'src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/useInventoryEventBulkActionsState';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { AddToGroupListingsModal } from 'src/modals/GroupListings';\nimport { flattenListingGroup } from 'src/modals/GroupListings/components/groupingUtils';\nimport {\n MoveListingGroupDialog,\n MoveListingGroupItem,\n} from 'src/modals/GroupListingsV2/components/GroupsPreview/MoveListingGroupDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n EventWithData,\n Listing,\n ListingGroup,\n ListingGroupItemInput,\n} from 'src/WebApiController';\n\nexport const LaunchMoveToGroup = ({\n eventData,\n}: {\n eventData: EventWithData;\n}) => {\n const { setModal } = useContext(ModalContext);\n\n const { openDialog, closeDialog } = useDialog(\n DialogId.AddToGroup,\n MoveListingGroupDialog\n );\n\n const { filterQueryWithEventIds } = useInventoryEventBulkActionsState(\n eventData.event\n );\n\n const selectedListingIds = useMemo(\n () => filterQueryWithEventIds.entityIds ?? [],\n [filterQueryWithEventIds]\n );\n\n const eventListings = useMemo(() => {\n return (\n (eventData?.entities?.listings?.flatMap(\n flattenListingGroup\n ) as Listing[]) ?? []\n );\n }, [eventData?.entities?.listings]);\n const eventListingGroups = useMemo(() => {\n return (\n eventData\n .entities!.listings!.filter(\n (l): l is ListingGroup => l.isLtGrp && l.ltGrpId != null\n )\n .map((group) => {\n const items = flattenListingGroup(group).map(\n (item) =>\n ({\n listingId: item.id,\n priority: item.ltGrpPrior,\n groupId: item.ltGrpId,\n }) as ListingGroupItemInput\n );\n return {\n listingGroupId: group.ltGrpId!,\n name: group.groupName,\n listingGroupItems: items,\n } as MoveListingGroupItem;\n }) ?? []\n );\n }, [eventData.entities]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n openDialog({\n listingGroups: eventListingGroups,\n listings: eventListings,\n canAddNewGroup: true,\n onMoveListingToGroup: (groupId: string, groupName?: string) => {\n const existingGroup = eventListingGroups.find(\n (group) => group.listingGroupId === groupId\n );\n const newListingGroupName = existingGroup ? undefined : groupName;\n closeDialog();\n setModal({\n children: (\n \n ),\n clickOutsideToClose: true,\n ...{ size: 'slide-in' },\n });\n },\n onClose: () => {\n closeDialog();\n },\n });\n },\n [\n closeDialog,\n eventData.event.viagVirtualId,\n eventListingGroups,\n eventListings,\n openDialog,\n selectedListingIds,\n setModal,\n ]\n );\n\n return (\n \n \n \n \n \n );\n};\n","import { useState } from 'react';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { useInventoryEventBulkActionsState } from 'src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/useInventoryEventBulkActionsState';\nimport { useBulkEditListingGroupSettings } from 'src/components/Listings/InventoryActionDropdown/components/BulkEditListingGroupSettingsAction';\nimport { LaunchGroupListings } from 'src/components/Listings/InventoryActionDropdown/components/GroupListingsAction';\nimport { LaunchAddToGroup } from 'src/components/Listings/InventoryActionDropdown/components/GroupListingsAction/LaunchAddToGroup';\nimport { LaunchGroupingWizard } from 'src/components/Listings/InventoryActionDropdown/components/GroupListingsAction/LaunchGroupingWizard';\nimport { LaunchMoveToGroup } from 'src/components/Listings/InventoryActionDropdown/components/GroupListingsAction/LaunchMoveToGroup';\nimport { useBulkUngroupListings } from 'src/components/Listings/InventoryActionDropdown/components/LaunchUngroupListingsAction';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature } from 'src/WebApiController';\nimport { EventWithData } from 'src/WebApiController';\n\ninterface GroupActionsProps {\n data: EventWithData;\n}\n\nexport const GroupActions = ({ data }: GroupActionsProps) => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n\n const [isLoading, setIsLoading] = useState(false);\n\n const { filterQueryWithEventIds } = useInventoryEventBulkActionsState(\n data.event\n );\n\n const bulkUngroupListings = useBulkUngroupListings(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n data.event\n );\n\n const bulkEditListingGroupSettings = useBulkEditListingGroupSettings(\n filterQueryWithEventIds,\n data,\n setIsLoading,\n isLoading\n );\n const hasMoveToGroupFeature = useUserHasFeature(Feature.MoveToGroup);\n\n const hasBulkEditsToListingGroupsFeature = useUserHasFeature(\n Feature.BulkEditsToListingGroups\n );\n\n const hasGroupingWizardFeature = useUserHasFeature(Feature.GroupingWizard);\n\n return (\n <>\n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {hasBulkEditsToListingGroupsFeature &&\n bulkEditListingGroupSettings.dropDown}\n\n {hasGroupingWizardFeature ? (\n \n ) : (\n \n )}\n\n {hasMoveToGroupFeature ? (\n \n ) : (\n \n )}\n {bulkUngroupListings.dropDown}\n \n \n );\n};\n","import { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Feature, Permission } from 'src/WebApiController';\n\ninterface BulkPricingActionsPermissions {\n hasEditPricingPermission: boolean;\n hasUpdateListingPermission: boolean;\n hasAutoPricingFeature: boolean;\n}\n\nexport const useBulkPricingActionsPermissions =\n (): BulkPricingActionsPermissions => {\n const hasEditPricingPermission = useUserHasAnyOfPermissions(\n Permission.Inventory_SetPrice,\n Permission.Inventory_SetPriceOnIsPricerOf,\n Permission.Inventory_SetPriceOnPurchasedBy\n );\n\n const hasUpdateListingPermission = useUserHasAnyOfPermissions(\n Permission.Inventory_UpdateListingInfo,\n Permission.Inventory_UpdateListingInfoOnIsPricerOf,\n Permission.Inventory_UpdateListingInfoOnPurchasedBy\n );\n\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n\n return {\n hasEditPricingPermission,\n hasAutoPricingFeature,\n hasUpdateListingPermission,\n };\n };\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const FieldLabelWrapper = styled.div`\n font-weight: 600;\n ${({\n theme: {\n media,\n typography: { getStyles },\n },\n }) => `\n${getStyles('body1')}\n padding-left: 0;\n ${media.makeMediaQuery(\n media.breakpoints.md,\n `padding-left: 0px;` // reset padding for tablets and above\n )}\n`}\n`;\n\nexport const FieldWrapper = styled.div`\n padding-block-end: ${() => vars.spacing.m};\n\n label {\n width: 100%;\n margin-bottom: 0;\n }\n`;\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useMemo, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Radio, RadioGroup, Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n ListingDetails,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\nimport * as styles from './BulkEditListingPriceDialog.css';\nimport { FieldWrapper } from './BulkEditListingPriceDialog.styled';\n\nexport type BulkEditListingPriceDialogProps = ComponentProps & {\n updateKey: string;\n increasePrice: boolean;\n onOkay: (\n priceChangePercentage: number | undefined,\n priceChangeAbsolute: number | undefined,\n increasePrice: boolean,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport enum PriceChangeMode {\n Percent = 'Percent',\n Absolute = 'Absolute',\n}\n\nexport const PRICE_CHANGE_MODE_OPTIONS = [\n {\n value: PriceChangeMode.Percent,\n children: ,\n },\n {\n value: PriceChangeMode.Absolute,\n children: ,\n },\n];\n\nexport function BulkEditListingPriceDialog({\n updateKey,\n increasePrice,\n onOkay,\n onCancel,\n ...rest\n}: BulkEditListingPriceDialogProps) {\n const { getUiCurrency } = useLocalizationContext();\n\n const { loginContext } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n\n const uiCurrency = useMemo(\n () => getUiCurrency(loginContext?.user?.activeAccount?.currencyCode),\n [getUiCurrency, loginContext?.user?.activeAccount?.currencyCode]\n );\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n await refreshExpandedListItems();\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n ActionOutboxEntityType.Listing,\n BulkActionType.UpdatePrices,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const [priceChangeMode, setPriceChangeMode] = useState(\n PriceChangeMode.Absolute\n );\n const [changeValue, setChangeValue] = useState();\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(undefined, undefined, false, false, onPreviewReceived);\n } else {\n onOkay(\n priceChangeMode === PriceChangeMode.Percent ? changeValue : undefined,\n priceChangeMode === PriceChangeMode.Absolute\n ? changeValue\n : undefined,\n increasePrice,\n hasBackgroundBulkEditFeature,\n undefined,\n preview\n );\n }\n setIsLoading(false);\n },\n [\n onOkay,\n priceChangeMode,\n changeValue,\n increasePrice,\n preview,\n hasBackgroundBulkEditFeature,\n ]\n );\n\n const isInputValid = useMemo(() => {\n return !!changeValue;\n }, [changeValue]);\n\n const submittButtonRef = useRef(null);\n\n return (\n \n ) : (\n \n )\n }\n />\n }\n onOpened={() => {\n setPriceChangeMode(PriceChangeMode.Absolute);\n setChangeValue(undefined);\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter' && isInputValid) {\n submittButtonRef.current.click();\n }\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n \n {': '}\n \n }\n >\n {\n setPriceChangeMode(newMode as PriceChangeMode);\n if (newMode == PriceChangeMode.Percent) {\n if (!increasePrice && (changeValue ?? 0) > 99) {\n setChangeValue(99); // we can't decrease by 100 or more % because that will result in zero\n }\n }\n }}\n disabled={isLoading}\n >\n \n {PRICE_CHANGE_MODE_OPTIONS.map((m) => (\n \n ))}\n \n \n \n {priceChangeMode === PriceChangeMode.Percent ? (\n {\n const value = parseFloat(e.target.value);\n if (value < 0) return;\n if (!increasePrice && value > 99) return; // we can't decrease by 100 or more % because that will result in zero\n\n setChangeValue(parseFloat(e.target.value));\n }}\n postfixDisplay={'%'}\n />\n ) : (\n {\n const value = parseFloat(e.target.value);\n if (value < 0) return;\n\n setChangeValue(parseFloat(e.target.value));\n }}\n />\n )}\n \n }\n />\n \n \n \n \n );\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Permission } from 'src/WebApiController';\n\nexport const LaunchChangeListingPrice = ({\n onClick,\n disabled,\n}: {\n onClick: (\n e: React.MouseEvent,\n increasePrice: boolean\n ) => void;\n disabled?: boolean;\n}) => {\n const hasEditPricingPermission = useUserHasAnyOfPermissions(\n Permission.Inventory_SetPrice,\n Permission.Inventory_SetPriceOnIsPricerOf,\n Permission.Inventory_SetPriceOnPurchasedBy\n );\n\n if (!hasEditPricingPermission) {\n return null;\n }\n\n return (\n <>\n {hasEditPricingPermission && (\n onClick(e, true)}\n disabled={disabled}\n >\n \n \n )}\n {hasEditPricingPermission && (\n onClick(e, false)}\n disabled={disabled}\n >\n \n \n )}\n \n );\n};\n","import { useCallback } from 'react';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport {\n BulkEditListingPriceDialog,\n BulkEditListingPriceDialogProps,\n} from 'src/dialogs/BulkEdits/BulkEditListingPriceDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n Event,\n ListingDetails,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_UPDATE_LISTING_PRICES_UPDATE_KEY } from '../../InventoryActionDropdown.constants';\nimport { LaunchChangeListingPrice } from './LaunchChangeListingPrice';\n\nexport const useBulkChangeListingPriceAction = (\n filterQueryWithEventIds: ListingQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const bulkUpdateListingsPricesUpdateKey = event\n ? `listingPrices-event-${event.viagVirtualId}`\n : INVENTORY_BULK_UPDATE_LISTING_PRICES_UPDATE_KEY;\n\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const {\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const { openDialog: openBulkEditDialog, closeDialog: closeBulkEditDialog } =\n useDialog(\n DialogId.BulkEditListingPrice,\n BulkEditListingPriceDialog\n );\n\n const onSubmitChangePriceByPercent = useCallback(\n async (\n priceChangePercentage: number | undefined,\n priceChangeAbsolute: number | undefined,\n increasePrice: boolean,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdateListingsPricesPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateListingsPricesPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else {\n await tryInvokeApi(\n async () => {\n let succeeded: BulkEditProgress | undefined;\n if (priceChangePercentage !== undefined) {\n succeeded = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdateListingsPricesByPercent(\n preview!.preview,\n (increasePrice\n ? 100 + priceChangePercentage\n : 100 - priceChangePercentage) /\n 100 /* we're sending the percent back in 0 - 1 ratio */,\n bulkUpdateListingsPricesUpdateKey,\n supportBackgroundProcess\n );\n } else if (priceChangeAbsolute !== undefined) {\n succeeded = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdateListingsPrices(\n preview!.preview,\n increasePrice ? priceChangeAbsolute : -priceChangeAbsolute,\n bulkUpdateListingsPricesUpdateKey,\n supportBackgroundProcess\n );\n }\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on listingDetails\n // we force re-loading the listing and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n\n closeBulkEditDialog();\n }\n },\n (error) => {\n showErrorDialog('onSubmitChangePrice', error, {\n trackErrorData: {\n priceChangePercentage,\n priceChangeAbsolute,\n increasePrice,\n preview,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n setIsLoading,\n activeAccountWebClientConfig,\n filterQueryWithEventIds,\n showErrorDialog,\n bulkUpdateListingsPricesUpdateKey,\n closeBulkEditDialog,\n setActivePosEntity,\n refreshExpandedListItems,\n ]\n );\n\n const onChangePriceByPercentClick = useCallback(\n (e: React.MouseEvent, increasePrice: boolean) => {\n e.preventDefault();\n e.stopPropagation();\n if (event) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n openBulkEditDialog({\n updateKey: bulkUpdateListingsPricesUpdateKey,\n increasePrice,\n onOkay: onSubmitChangePriceByPercent,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkEditDialog,\n });\n },\n [\n bulkUpdateListingsPricesUpdateKey,\n closeBulkEditDialog,\n event,\n onSubmitChangePriceByPercent,\n openBulkEditDialog,\n setIsLoading,\n setListItemExpansion,\n ]\n );\n return {\n dropDown: (\n \n ),\n };\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { useAlertWithSuppressionDialog } from './useAlertWithSuppressionDialog';\n\nexport function useDeliveryInfoChangeDialog(\n onOkay: () => void,\n onCancel: () => void\n) {\n const { value, ...rest } = useAlertWithSuppressionDialog(\n 'deliveryInfoChangeSuppressionTimestamp',\n onOkay,\n onCancel\n );\n return {\n ...rest,\n lastTimeStamp: value?.deliveryInfoChangeSuppressionTimestamp,\n bodyText: (\n \n ),\n cancelText: ,\n };\n}\n","import { useAppContext } from 'src/contexts/AppContext';\nimport { Marketplace } from 'src/WebApiController';\n\nexport const useMarketplaceHandledByProcessor = (\n marketplace?: Marketplace | null\n) => {\n const { loginContext } = useAppContext();\n\n const isMarketplaceHandledByProcessor =\n marketplace &&\n loginContext?.user?.activeAccount?.marketplaceSettings?.some(\n (mk) => mk.isSyncHandledByProcessor && mk.mkp === marketplace\n );\n\n return isMarketplaceHandledByProcessor;\n};\n\nexport const useAnyMarketplaceHandledByProcessor = () => {\n const { loginContext } = useAppContext();\n\n const isMarketplaceHandledByProcessor =\n loginContext?.user?.activeAccount?.marketplaceSettings?.some(\n (mk) => mk.isSyncHandledByProcessor\n );\n\n return isMarketplaceHandledByProcessor;\n};\n","import { UploadBarcodesBody } from 'src/components/UploadArtifacts/UploadBarcodes/UploadBarcodesBody';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { ModalBodyDataContainer } from 'src/modals/Modal/Modal.styled';\nimport { BarcodeIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SaleDetails } from 'src/WebApiController';\n\nexport const TransferTicketmasterBarcodesBody = ({\n disabled,\n instructionsContentId,\n viewOnly,\n}: {\n disabled?: boolean;\n instructionsContentId: ContentId;\n viewOnly?: boolean;\n}) => {\n const { posEntity: sale } = useActivePosEntityContext();\n\n return (\n \n \n \n {!viewOnly ? (\n \n ) : (\n \n {sale?.tickets\n ?.slice(0, sale.ticketCnt)\n ?.map((t) => (\n \n }\n value={t.barcode ?? ''}\n />\n ))}\n \n )}\n \n \n );\n};\n","import { useCallback, useContext } from 'react';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { ImageMagnifier } from 'src/core/POS/ImageMagnifier';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, Stack } from 'src/core/ui';\nimport { Detail, DetailGroup, DetailSection } from 'src/modals/common';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalBody, ModalFooter, ModalProps } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SaleDetails, UserDocumentLinks } from 'src/WebApiController';\n\nimport { SectionWrapper } from '../common/Detail/Detail.styled';\nimport { Summary } from '../common/Summary';\nimport {\n ModalBodyDataContainer,\n ModalBodyHeaderContainer,\n} from '../Modal/Modal.styled';\nimport * as styles from './TransferTickets.css';\nimport { TransferTicketmasterBarcodesBody } from './views/TransferTicketmasterBarcodes';\n\nexport const ViewTransferTickets = ({ cancelTo }: { cancelTo: ModalProps }) => {\n const { setModal } = useContext(ModalContext);\n const { event, posEntity: sale } = useActivePosEntityContext();\n const goBack = useCallback(() => {\n setModal(cancelTo);\n }, [setModal, cancelTo]);\n\n return (\n <>\n \n }\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\n// Pulled into a separate component since there were some weird issues with error boundary otherwise\nconst TrasnferProofBody = ({ saleDetails }: { saleDetails: SaleDetails }) => {\n const {\n transDest,\n transSrc,\n transferProofDocs,\n transferUrls,\n transferProofId,\n tickets,\n } = saleDetails;\n\n const transferBarcodes = tickets?.map((t) => t.barcode).filter((b) => b);\n\n const yourTickets = useContent(ContentId.YourTickets);\n const app = useContent(ContentId.App);\n const transferFrom = useContent(ContentId.TransferFrom);\n\n const yourBuyer = useContent(ContentId.YourBuyer);\n const transferTo = useContent(ContentId.TransferTo);\n const contact = useContent(ContentId.Contact);\n\n return (\n <>\n \n \n {transSrc?.map((tts) => (\n \n {tts.app}}\n />\n \n
    {tts.name}
    \n
    {tts.email}
    \n \n }\n />\n
    \n ))}\n
    \n \n {transDest ? (\n \n {transDest.name}\n }\n />\n {transDest.email}\n }\n />\n \n ) : (\n }\n />\n )}\n \n
    \n {transferProofDocs?.length ? (\n \n \n \n {' '}\n \n \n ) : transferUrls?.length ? (\n \n \n \n \n \n \n ) : transferProofId ? (\n \n \n \n \n \n \n ) : transferBarcodes?.length ? (\n \n \n \n ) : null}\n \n );\n};\n\nconst ImageProofContent = ({\n transferProofDocs,\n}: {\n transferProofDocs: UserDocumentLinks[];\n}) => {\n return (\n <>\n {transferProofDocs.map((d) => (\n

    \n \n

    \n ))}\n \n );\n};\n\nconst UrlProofContent = ({ transferUrls }: { transferUrls: string[] }) => {\n return (\n <>\n {transferUrls.map((url, i) => (\n

    \n \n

    \n ))}\n \n );\n};\n\nconst TransferIdProofContent = ({\n transferProofId,\n}: {\n transferProofId: string;\n}) => {\n return ;\n};\n","import { useCallback, useContext } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { UploadButton } from 'src/components/Buttons';\nimport {\n UploadBarcodesBody,\n UploadBarcodesForm,\n} from 'src/components/UploadArtifacts/UploadBarcodes';\nimport { BarcodeForm } from 'src/components/UploadArtifacts/UploadBarcodes/UploadBarcodes.utils';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Button } from 'src/core/ui';\nimport { useEventItemLoadingDisplay } from 'src/hooks/useEventItemLoadingDisplay';\nimport { CancellableFormFooter } from 'src/modals/common';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalBody, ModalFooter, ModalProps } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport {\n PosClientConfig,\n PosUiActionResult,\n SaleMetrics,\n TicketBarcode,\n} from 'src/WebApiController';\n\nimport { modalDetails } from '../common/Modals.css';\nimport { Summary } from '../common/Summary';\nimport {\n ModalBodyDataContainer,\n ModalBodyHeaderContainer,\n} from '../Modal/Modal.styled';\n\nexport type UploadBarcodeProps = {\n onUploadBarcodes?: (\n posClientConfig: PosClientConfig,\n entityId: number,\n barcodes: TicketBarcode[]\n ) => Promise;\n cancelTo?: ModalProps;\n defaultToBulk?: boolean;\n isReadOnly?: boolean;\n loadingContentId: FormatContentId;\n searchingContentId: FormatContentId;\n errorContentId: FormatContentId;\n};\n\nexport const UploadBarcodes = ({\n onUploadBarcodes,\n loadingContentId,\n searchingContentId,\n errorContentId,\n ...rest\n}: UploadBarcodeProps) => {\n const { loadingState } = useEventItemLoadingDisplay(\n loadingContentId,\n searchingContentId,\n errorContentId\n );\n\n return (\n loadingState || (\n \n )\n );\n};\n\nexport type UploadBarcodeContentProps = Omit<\n UploadBarcodeProps,\n 'loadingContentId' | 'searchingContentId' | 'errorContentId'\n>;\n\nexport const UploadBarcodesContent = ({\n cancelTo,\n onUploadBarcodes,\n isReadOnly = false,\n}: UploadBarcodeContentProps) => {\n const { closeModal, setModal } = useContext(ModalContext);\n const { posEntity: entityWithTickets, setActivePosEntity } =\n useActivePosEntityContext();\n const { refreshMetrics } = useCatalogMetricsContext();\n\n const goBack = useCallback(\n async (isCancelled: boolean) => {\n if (!isCancelled) {\n refreshMetrics?.();\n\n // Refresh the active data so the SaleDetail dialog will have the new content\n await setActivePosEntity(\n entityWithTickets!.id,\n entityWithTickets!.idOnMkp,\n true\n );\n }\n\n if (cancelTo) {\n setModal(cancelTo);\n } else {\n closeModal(true);\n }\n },\n [\n cancelTo,\n refreshMetrics,\n setActivePosEntity,\n entityWithTickets,\n setModal,\n closeModal,\n ]\n );\n\n return (\n void, disabled?: boolean) => (\n \n )}\n />\n );\n};\n\nconst UploadBarcodesFormContent = ({\n cancelTo,\n onUploadClick,\n disabled,\n goBack,\n}: {\n cancelTo?: ModalProps;\n onUploadClick: () => void;\n disabled?: boolean;\n goBack: (isCancelled: boolean) => void;\n}) => {\n const { formState } = useFormContext();\n const { isDirty, isSubmitting } = formState;\n\n const { event, posEntity } =\n useActivePosEntityContext();\n\n return (\n <>\n \n }\n />\n \n \n \n \n \n \n {isSubmitting || !posEntity ? (\n \n ) : (\n
    \n \n
    \n )}\n
    \n \n \n {/* We want to use isReadOnly here because isReadOnly is meant for this dialog is informational */}\n {!disabled && (\n \n {\n e.stopPropagation();\n e.preventDefault();\n onUploadClick();\n }}\n textContentId={ContentId.SaveBarcodes}\n />\n \n )}\n {disabled && (\n \n )}\n \n \n );\n};\n","import { useEventItemLoadingDisplay } from 'src/hooks/useEventItemLoadingDisplay';\nimport { ModalProps } from 'src/modals/Modal';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\n\nimport { UploadBarcodesContent } from './UploadBarcodes';\n\nexport type ViewBarcodeModalProps = {\n cancelTo?: ModalProps;\n defaultToBulk?: boolean;\n isReadOnly?: boolean;\n loadingContentId: FormatContentId;\n searchingContentId: FormatContentId;\n errorContentId: FormatContentId;\n};\n\nexport const ViewBarcodes = ({\n cancelTo,\n loadingContentId,\n searchingContentId,\n errorContentId,\n}: ViewBarcodeModalProps) => {\n const { loadingState } = useEventItemLoadingDisplay(\n loadingContentId,\n searchingContentId,\n errorContentId\n );\n\n return (\n loadingState || \n );\n};\n","import { ComponentProps } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const BackButton = ({\n textContentId,\n variant = 'regular',\n ...rest\n}: { textContentId?: ContentId } & Omit<\n ComponentProps,\n 'children'\n>) => {\n return (\n \n );\n};\n","import { useCallback, useContext } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { BackButton } from 'src/components/Buttons/BackButton';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport {\n DocumentFileUploadInfo,\n ETicketsForm,\n UploadETicketForm,\n UploadETicketsFinalPreviewBody,\n UploadETicketsSeatAssignmentBody,\n} from 'src/components/UploadArtifacts/UploadETickets';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { useEventItemLoadingDisplay } from 'src/hooks/useEventItemLoadingDisplay';\nimport { CancellableFormFooter } from 'src/modals/common';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalBody, ModalFooter, ModalProps } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport {\n DocumentProcessorClient,\n DocumentUploadInfo,\n FileParameter,\n PosClientConfig,\n PosUiActionResult,\n SaleMetrics,\n TicketType,\n UserDocument,\n} from 'src/WebApiController';\n\nimport { Summary } from '../common/Summary';\nimport {\n ModalBodyDataContainer,\n ModalBodyHeaderContainer,\n} from '../Modal/Modal.styled';\n\nexport type UploadETicketsModalProps = {\n onUploadDocuments: (\n client: DocumentProcessorClient,\n docUploadInfo: DocumentUploadInfo,\n file: FileParameter\n ) => Promise;\n onUploadETickets: (\n posClientConfig: PosClientConfig,\n entityId: number,\n ticketAssignments: UserDocument[]\n ) => Promise;\n ticketType: TicketType.ETicket | TicketType.QRCode;\n cancelTo?: ModalProps;\n loadingContentId: FormatContentId;\n searchingContentId: FormatContentId;\n errorContentId: FormatContentId;\n};\n\nexport const UploadETickets = ({\n loadingContentId,\n searchingContentId,\n errorContentId,\n ...rest\n}: UploadETicketsModalProps) => {\n const { loadingState } = useEventItemLoadingDisplay(\n loadingContentId,\n searchingContentId,\n errorContentId\n );\n\n return loadingState || ;\n};\n\nexport type UploadETicketsBodyProps = Omit<\n UploadETicketsModalProps,\n 'loadingContentId' | 'searchingContentId' | 'errorContentId'\n>;\n\nconst UploadETicketsContent = ({\n ticketType,\n onUploadDocuments,\n onUploadETickets,\n cancelTo,\n}: UploadETicketsBodyProps) => {\n const { setModal, closeModal } = useContext(ModalContext);\n\n const { posEntity, setActivePosEntity } =\n useActivePosEntityContext();\n\n const { refreshMetrics } = useCatalogMetricsContext();\n\n const goBack = useCallback(\n async (isCancelled: boolean) => {\n if (!isCancelled) {\n refreshMetrics?.();\n\n // Refresh the active data so the SaleDetail dialog will have the new content\n await setActivePosEntity(posEntity!.id, posEntity!.idOnMkp, true);\n }\n\n if (cancelTo) {\n setModal(cancelTo);\n } else {\n closeModal(true);\n }\n },\n [\n cancelTo,\n refreshMetrics,\n setActivePosEntity,\n posEntity,\n setModal,\n closeModal,\n ]\n );\n\n return (\n void,\n onNext: () => void,\n onCancel: () => void,\n onBack: () => void,\n isFinalPreview: boolean,\n disabled?: boolean\n ) => (\n \n )}\n />\n );\n};\n\nconst UploadETicketFormContent = ({\n cancelTo,\n ticketType,\n onNext,\n onCancel,\n onBack,\n isFinalPreview,\n disabled,\n eTicketUploadInfos,\n setETicketUploadInfos,\n}: {\n cancelTo?: ModalProps;\n ticketType: TicketType.ETicket | TicketType.QRCode;\n onNext: () => void;\n onCancel: () => void;\n onBack: () => void;\n isFinalPreview: boolean;\n disabled?: boolean;\n eTicketUploadInfos: DocumentFileUploadInfo[];\n setETicketUploadInfos: (infos: DocumentFileUploadInfo[]) => void;\n}) => {\n const { formState } = useFormContext();\n const { isDirty, isSubmitting } = formState;\n\n const { event, posEntity } =\n useActivePosEntityContext();\n\n return (\n <>\n \n \n }\n />\n \n\n \n \n \n \n \n {!isFinalPreview ? (\n \n ) : (\n \n )}\n \n \n\n \n \n {!isFinalPreview ? (\n \n ) : (\n <>\n \n \n \n )}\n \n \n \n );\n};\n","import { useCallback, useContext } from 'react';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { ImageMagnifier } from 'src/core/POS/ImageMagnifier';\nimport { Button } from 'src/core/ui';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalBody, ModalFooter, ModalProps } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ArtifactType,\n DocumentType,\n SaleDetails,\n Ticket,\n} from 'src/WebApiController';\n\nimport {\n Divider,\n PreviewTicket,\n SeatLabel,\n} from '../../components/UploadArtifacts/UploadETickets/UploadETickets.styled';\nimport { Summary } from '../common/Summary';\nimport {\n ModalBodyDataContainer,\n ModalBodyHeaderContainer,\n} from '../Modal/Modal.styled';\n\nexport const ViewETickets = ({\n artifactType,\n cancelTo,\n}: {\n artifactType: ArtifactType | null;\n cancelTo: ModalProps;\n}) => {\n const { setModal } = useContext(ModalContext);\n const { event, posEntity } = useActivePosEntityContext();\n const goBack = useCallback(() => {\n setModal(cancelTo);\n }, [setModal, cancelTo]);\n\n return (\n <>\n \n \n }\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\n// Pulled into a separate component since there were some weird issues with error boundary otherwise\nconst TicketArtifacts = ({\n section,\n tickets,\n artifactType,\n}: {\n section: string;\n tickets: Ticket[];\n artifactType: ArtifactType | null;\n}) => {\n const { posEntityId, entityType } = useActivePosEntityContext();\n\n return (\n <>\n {tickets.map(({ id, row, seat, eTicket, qrCode }, ix) => {\n const userDoc =\n artifactType === ArtifactType.ETicket ? eTicket : qrCode;\n return (\n
    \n \n \n \n \n {userDoc?.pageUri && (\n \n )}\n \n {ix !== tickets.length - 1 && }\n
    \n );\n })}\n \n );\n};\n","import { useCallback, useContext } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { UploadButton } from 'src/components/Buttons';\nimport {\n ExternalIdForm,\n UploadExternalIdsBody,\n UploadExternalIdsForm,\n} from 'src/components/UploadArtifacts/UploadExternalIds';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Button } from 'src/core/ui';\nimport { useEventItemLoadingDisplay } from 'src/hooks/useEventItemLoadingDisplay';\nimport { CancellableFormFooter } from 'src/modals/common';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalBody, ModalFooter, ModalProps } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport {\n PosClientConfig,\n PosUiActionResult,\n SaleMetrics,\n TicketExternalId,\n} from 'src/WebApiController';\n\nimport { modalDetails } from '../common/Modals.css';\nimport { Summary } from '../common/Summary';\nimport {\n ModalBodyDataContainer,\n ModalBodyHeaderContainer,\n} from '../Modal/Modal.styled';\n\nexport type UploadExternalIdProps = {\n onUploadExternalIds?: (\n posClientConfig: PosClientConfig,\n entityId: number,\n externalIds: TicketExternalId[]\n ) => Promise;\n cancelTo?: ModalProps;\n defaultToBulk?: boolean;\n isReadOnly?: boolean;\n loadingContentId: FormatContentId;\n searchingContentId: FormatContentId;\n errorContentId: FormatContentId;\n};\n\nexport const UploadExternalIds = ({\n onUploadExternalIds,\n loadingContentId,\n searchingContentId,\n errorContentId,\n cancelTo,\n}: UploadExternalIdProps) => {\n const { loadingState } = useEventItemLoadingDisplay(\n loadingContentId,\n searchingContentId,\n errorContentId\n );\n\n return (\n loadingState || (\n \n )\n );\n};\n\nexport type UploadExternalIdsContentProps = Omit<\n UploadExternalIdProps,\n 'loadingContentId' | 'searchingContentId' | 'errorContentId'\n>;\n\nexport const UploadExternalIdsContent = ({\n onUploadExternalIds,\n cancelTo,\n isReadOnly = false,\n}: UploadExternalIdsContentProps) => {\n const { closeModal, setModal } = useContext(ModalContext);\n\n const { posEntity: posEntity, setActivePosEntity } =\n useActivePosEntityContext();\n const { refreshMetrics } = useCatalogMetricsContext();\n\n const goBack = useCallback(\n async (isCancelled: boolean) => {\n if (!isCancelled) {\n refreshMetrics?.();\n\n // Refresh the active data so the SaleDetail dialog will have the new content\n await setActivePosEntity(posEntity!.id, posEntity!.idOnMkp, true);\n }\n\n if (cancelTo) {\n setModal(cancelTo);\n } else {\n closeModal(true);\n }\n },\n [\n cancelTo,\n refreshMetrics,\n setActivePosEntity,\n posEntity,\n setModal,\n closeModal,\n ]\n );\n\n return (\n void, disabled?: boolean) => (\n \n )}\n />\n );\n};\n\nconst UploadExternalIdsFormContent = ({\n cancelTo,\n onUploadClick,\n disabled,\n goBack,\n}: {\n cancelTo?: ModalProps;\n onUploadClick: () => void;\n disabled?: boolean;\n goBack: (isCancelled: boolean) => void;\n}) => {\n const { formState } = useFormContext();\n const { isDirty, isSubmitting } = formState;\n\n const { event, posEntity } =\n useActivePosEntityContext();\n\n return (\n <>\n \n }\n />\n \n \n \n \n \n \n {isSubmitting || !posEntity ? (\n \n ) : (\n
    \n \n
    \n )}\n
    \n \n \n {/* We want to use isReadOnly here because isReadOnly is meant for this dialog is informational */}\n {!disabled && (\n \n {\n e.stopPropagation();\n e.preventDefault();\n onUploadClick();\n }}\n textContentId={ContentId.SaveTicketIds}\n />\n \n )}\n {disabled && (\n \n )}\n \n \n );\n};\n","import { useEventItemLoadingDisplay } from 'src/hooks/useEventItemLoadingDisplay';\nimport { ModalProps } from 'src/modals/Modal';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\n\nimport { UploadExternalIdsContent } from './UploadExternalIds';\n\nexport type ViewExternalIdModalProps = {\n cancelTo?: ModalProps;\n defaultToBulk?: boolean;\n isReadOnly?: boolean;\n loadingContentId: FormatContentId;\n searchingContentId: FormatContentId;\n errorContentId: FormatContentId;\n};\n\nexport const ViewExternalIds = ({\n cancelTo,\n loadingContentId,\n searchingContentId,\n errorContentId,\n}: ViewExternalIdModalProps) => {\n const { loadingState } = useEventItemLoadingDisplay(\n loadingContentId,\n searchingContentId,\n errorContentId\n );\n\n return (\n loadingState || \n );\n};\n","import { useCallback, useContext } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { UploadButton } from 'src/components/Buttons';\nimport {\n TicketUrlForm,\n UploadTicketUrlsForm,\n} from 'src/components/UploadArtifacts/UploadTicketUrls';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Button } from 'src/core/ui';\nimport { useEventItemLoadingDisplay } from 'src/hooks/useEventItemLoadingDisplay';\nimport { CancellableFormFooter } from 'src/modals/common';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalBody, ModalFooter, ModalProps } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport {\n PosClientConfig,\n PosUiActionResult,\n SaleMetrics,\n TicketUrl,\n} from 'src/WebApiController';\n\nimport { UploadTicketUrlsBody } from '../../components/UploadArtifacts/UploadTicketUrls/UploadTicketUrlsBody';\nimport { modalDetails } from '../common/Modals.css';\nimport { Summary } from '../common/Summary';\nimport {\n ModalBodyDataContainer,\n ModalBodyHeaderContainer,\n} from '../Modal/Modal.styled';\n\nexport type UploadTicketUrlProps = {\n onUploadTicketUrls?: (\n posClientConfig: PosClientConfig,\n entityId: number,\n ticketUrls: TicketUrl[]\n ) => Promise;\n cancelTo?: ModalProps;\n defaultToBulk?: boolean;\n isReadOnly?: boolean;\n loadingContentId: FormatContentId;\n searchingContentId: FormatContentId;\n errorContentId: FormatContentId;\n};\n\nexport const UploadTicketUrls = ({\n onUploadTicketUrls,\n loadingContentId,\n searchingContentId,\n errorContentId,\n cancelTo,\n}: UploadTicketUrlProps) => {\n const { loadingState } = useEventItemLoadingDisplay(\n loadingContentId,\n searchingContentId,\n errorContentId\n );\n\n return (\n loadingState || (\n \n )\n );\n};\n\nexport type UploadTicketUrlsContentProps = Omit<\n UploadTicketUrlProps,\n 'loadingContentId' | 'searchingContentId' | 'errorContentId'\n>;\n\nexport const UploadTicketUrlsContent = ({\n onUploadTicketUrls,\n cancelTo,\n isReadOnly = false,\n}: UploadTicketUrlsContentProps) => {\n const { closeModal, setModal } = useContext(ModalContext);\n\n const { posEntity: entityWithTickets, setActivePosEntity } =\n useActivePosEntityContext();\n const { refreshMetrics } = useCatalogMetricsContext();\n\n const goBack = useCallback(\n async (isCancelled: boolean) => {\n if (!isCancelled) {\n refreshMetrics?.();\n\n // Refresh the active data so the SaleDetail dialog will have the new content\n await setActivePosEntity(\n entityWithTickets!.id,\n entityWithTickets!.idOnMkp,\n true\n );\n }\n\n if (cancelTo) {\n setModal(cancelTo);\n } else {\n closeModal(true);\n }\n },\n [\n cancelTo,\n refreshMetrics,\n setActivePosEntity,\n entityWithTickets,\n setModal,\n closeModal,\n ]\n );\n\n return (\n void, disabled?: boolean) => (\n \n )}\n />\n );\n};\n\nconst UploadTicketUrlsFormContent = ({\n cancelTo,\n onUploadClick,\n disabled,\n goBack,\n}: {\n cancelTo?: ModalProps;\n onUploadClick: () => void;\n disabled?: boolean;\n goBack: (isCancelled: boolean) => void;\n}) => {\n const { formState } = useFormContext();\n const { isDirty, isSubmitting } = formState;\n\n const { event, posEntity } =\n useActivePosEntityContext();\n\n return (\n <>\n \n }\n />\n \n \n \n \n \n \n {isSubmitting || !posEntity ? (\n \n ) : (\n
    \n \n
    \n )}\n
    \n \n \n {/* We want to use isReadOnly here because isReadOnly is meant for this dialog is informational */}\n {!disabled && (\n \n {\n e.stopPropagation();\n e.preventDefault();\n onUploadClick();\n }}\n textContentId={ContentId.SaveTicketUrls}\n />\n \n )}\n {disabled && (\n \n )}\n \n \n );\n};\n","import { useEventItemLoadingDisplay } from 'src/hooks/useEventItemLoadingDisplay';\nimport { ModalProps } from 'src/modals/Modal';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\n\nimport { UploadTicketUrlsContent } from './UploadTicketUrls';\n\nexport type ViewTicketUrlModalProps = {\n cancelTo?: ModalProps;\n defaultToBulk?: boolean;\n isReadOnly?: boolean;\n loadingContentId: FormatContentId;\n searchingContentId: FormatContentId;\n errorContentId: FormatContentId;\n};\n\nexport const ViewTicketUrls = ({\n cancelTo,\n loadingContentId,\n searchingContentId,\n errorContentId,\n}: ViewTicketUrlModalProps) => {\n const { loadingState } = useEventItemLoadingDisplay(\n loadingContentId,\n searchingContentId,\n errorContentId\n );\n\n return (\n loadingState || \n );\n};\n","import { useCallback, useContext } from 'react';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { DetailText } from 'src/modals/common';\nimport { ViewTransferTickets } from 'src/modals/TransferTickets/ViewTransferTickets';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport { ArtifactType } from 'src/WebApiController';\nimport { SaleDetails } from 'src/WebApiController';\n\nimport { ModalProps } from '../Modal';\nimport { ViewBarcodes } from '../UploadBarcodes';\nimport { ViewETickets } from '../UploadETickets';\nimport { ViewExternalIds } from '../UploadExternalIds';\nimport { ViewTicketUrls } from '../UploadTicketUrls';\n\nfunction getViewActionConfig(artifactType: ArtifactType | null) {\n switch (artifactType) {\n case ArtifactType.Barcode:\n return {\n contentId: ContentId.ViewBarcodes,\n ViewActionModal: ViewBarcodes,\n };\n case ArtifactType.ETicket:\n return {\n contentId: ContentId.ViewETickets,\n ViewActionModal: ViewETickets,\n };\n case ArtifactType.QRCode:\n return {\n contentId: ContentId.ViewQRCodes,\n ViewActionModal: ViewETickets,\n };\n case ArtifactType.TransferProof:\n return {\n contentId: ContentId.ViewTransferProof,\n ViewActionModal: ViewTransferTickets,\n };\n case ArtifactType.ETicketUrl:\n return {\n contentId: ContentId.ViewWallet,\n ViewActionModal: ViewTransferTickets,\n };\n case ArtifactType.TicketUrl:\n return {\n contentId: ContentId.ViewWallet,\n ViewActionModal: ViewTicketUrls,\n };\n case ArtifactType.ExternalId:\n return {\n contentId: ContentId.ViewTicketIds,\n ViewActionModal: ViewExternalIds,\n };\n default:\n return {\n id: undefined,\n ViewActionModal: undefined,\n };\n }\n}\n\nexport const ViewTickets = ({\n type,\n cancelTo,\n loadingContentId,\n searchingContentId,\n errorContentId,\n}: {\n type: ArtifactType | null;\n cancelTo: ModalProps;\n loadingContentId: FormatContentId;\n searchingContentId: FormatContentId;\n errorContentId: FormatContentId;\n}) => {\n const { posEntity } = useActivePosEntityContext();\n const { setModal } = useContext(ModalContext);\n const { ViewActionModal, contentId } = getViewActionConfig(type);\n\n const notAvailableContent = (\n \n {posEntity?.mkp ? (\n \n ) : (\n \n )}\n \n );\n\n const viewTickets = useCallback(() => {\n if (!ViewActionModal) {\n return;\n }\n\n setModal({\n children: (\n \n ),\n size: 'slide-in',\n clickOutsideToClose: true,\n deepLinkKey: cancelTo.deepLinkKey,\n deepLinkValue: cancelTo.deepLinkValue,\n });\n }, [\n ViewActionModal,\n setModal,\n type,\n cancelTo,\n loadingContentId,\n searchingContentId,\n errorContentId,\n ]);\n\n if (!ViewActionModal) {\n return notAvailableContent;\n }\n\n if (type === ArtifactType.TransferProof) {\n // Transfer is only on Sale\n const sale = posEntity as SaleDetails;\n if (\n // If it has none of the transfer artifacts\n !(\n sale?.transferProofDocs ||\n sale?.transferUrls ||\n sale?.transferProofId\n ) &&\n // or if it has no barcode to show\n (sale?.tickets ?? []).findIndex((t) => t.barcode) < 0\n ) {\n return notAvailableContent;\n }\n }\n\n // Both the below can be Sale or Listing (predelivered)\n\n if (type === ArtifactType.Barcode) {\n // if has at least one barcode, show the barcodes view, else show not available\n if ((posEntity?.tickets ?? []).findIndex((t) => t.barcode) < 0) {\n return notAvailableContent;\n }\n } else if (type === ArtifactType.ETicket) {\n // if has at least one e-ticket docs, show the docs view, else show not available\n if ((posEntity?.tickets ?? []).findIndex((t) => t.eTicket) < 0) {\n return notAvailableContent;\n }\n } else if (type === ArtifactType.TicketUrl) {\n // if has at least one e-ticket docs, show the docs view, else show not available\n if ((posEntity?.tickets ?? []).findIndex((t) => t.ticketUrl) < 0) {\n return notAvailableContent;\n }\n } else if (type === ArtifactType.ExternalId) {\n // if has at least one e-ticket docs, show the docs view, else show not available\n if ((posEntity?.tickets ?? []).findIndex((t) => t.externalTicketId) < 0) {\n return notAvailableContent;\n }\n }\n\n return contentId ? (\n \n \n \n ) : null;\n};\n","import { useFormContext } from 'react-hook-form';\nimport { TicketTypePriorityInput } from 'src/components/common/TicketTypePriorityInput';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { Detail, DetailGroup } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { DeliveryType, ListingDetailsUpdateInput } from 'src/WebApiController';\n\nexport const TicketTypePrioritySection = ({\n deliveryType,\n disabled,\n}: {\n deliveryType: DeliveryType | null;\n disabled: boolean;\n}) => {\n const { watch, setValue } = useFormContext();\n const isMobile = useMatchMedia('mobile');\n const ticketTypeRules = watch('ticketTypeRules');\n\n return (\n \n }\n style={{ flex: 1 }}\n detail={\n <>\n {\n setValue('ticketTypeRules', newRules);\n }}\n disabled={disabled}\n />\n \n }\n />\n \n );\n};\n","import { isEqual } from 'date-fns';\nimport { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { InHandDateDisplay } from 'src/components/common/InHandDateDisplay';\nimport { InHandDateInput } from 'src/components/Input/InHandDateInput';\nimport { DeliveryTypeSelector } from 'src/components/Selectors/DeliveryTypeSelector';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Stack, Switch } from 'src/core/ui';\nimport { AlertWithSuppressionDialog } from 'src/dialogs/AlertWithSuppressionDialog';\nimport { useDeliveryInfoChangeDialog } from 'src/dialogs/AlertWithSuppressionDialog/useDeliveryInfoChangeDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useAnyMarketplaceHandledByProcessor } from 'src/hooks/useMarketplaceHandledByProcessor';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n useUserCanSetDeliveryStrategy,\n useUserCanUpdateListing,\n useUserCanViewPredelivery,\n} from 'src/hooks/useUserHasListingPermissions';\nimport {\n Detail,\n DetailGroup,\n DetailSection,\n SectionContent,\n} from 'src/modals/common';\nimport { ViewTickets } from 'src/modals/ViewTickets';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { DELIVERY_OPTIONS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { isDatePassedHours } from 'src/utils/dateTimeUtils';\nimport { getListingDetailsModalConfigWithDeepLink } from 'src/utils/inventoryUtils';\nimport { getDeliveryTypeIcon } from 'src/utils/ticketTypeUtils';\nimport {\n Event,\n Feature,\n ListingDetails,\n ListingDetailsUpdateInput,\n PreDeliveryState,\n} from 'src/WebApiController';\n\nimport { TicketTypePrioritySection } from './TicketTypePrioritySection';\n\nexport const DeliverySection = ({\n listing,\n disabled: externalDisabled,\n event,\n isBulkEdit,\n}: {\n event?: Event | null;\n listing?: ListingDetails | null;\n disabled?: boolean;\n isBulkEdit?: boolean;\n}) => {\n const hasAutoFulfillFeature = useUserHasFeature(Feature.AutoFulfillSetting);\n const isAnyHandledByProcessor = useAnyMarketplaceHandledByProcessor();\n\n const { watch, setValue } = useFormContext();\n\n const isMobile = useMatchMedia('mobile');\n const inHandAt = watch('inHandDate');\n const isNoFulfill = watch('isNoFulfill');\n const updateSalesOfListings = watch('updateSalesOfListings');\n\n const deliveryType = watch('delivType');\n\n const ticketsSold = useMemo(\n () => (listing?.tickets?.filter((t) => t.saleId) ?? []).length,\n [listing?.tickets]\n );\n\n const hasUpdateSalesOfListingsFeature = useUserHasFeature(\n Feature.UpdateSalesOfListingsDeliveryInfo\n );\n\n const hasAnySales = ticketsSold > 0;\n\n const warningDialog = useBasicDialog();\n const deliveryInfoChangeHookProps = useDeliveryInfoChangeDialog(\n () => {\n setValue('updateSalesOfListings', true);\n },\n () => {\n // set don't change back\n setValue('updateSalesOfListings', false);\n }\n );\n\n const { preDelivState, isUndeliv } = listing ?? {};\n const predeliveryArtifactTypes = listing?.availArtTypes ?? [];\n const cancelTo = listing?.id\n ? getListingDetailsModalConfigWithDeepLink(listing.id)\n : undefined;\n const inHandDate = inHandAt\n ? new Date(inHandAt)\n : isBulkEdit\n ? undefined\n : new Date();\n\n const canUpdate = useUserCanUpdateListing(listing, isBulkEdit);\n const canSetDeliveryStrategy = useUserCanSetDeliveryStrategy(\n listing,\n isBulkEdit\n );\n const canViewFulfillmentArtifacts = useUserCanViewPredelivery(\n listing,\n isBulkEdit\n );\n const disabled = externalDisabled || !canUpdate;\n\n const icon = getDeliveryTypeIcon(listing?.delivType);\n\n const confirmUpdateSales = useCallback(() => {\n if (\n hasAnySales &&\n hasUpdateSalesOfListingsFeature &&\n // only ask once per form\n updateSalesOfListings == null\n ) {\n if (isDatePassedHours(deliveryInfoChangeHookProps.lastTimeStamp, 1)) {\n // Show warning if it has passed 1 hr or not suppressed\n warningDialog.launchDialog();\n } else {\n // If suppressed, assumed it's true (since the current alert suppression only save for Yes answer)\n setValue('updateSalesOfListings', true);\n }\n }\n }, [\n deliveryInfoChangeHookProps.lastTimeStamp,\n hasAnySales,\n hasUpdateSalesOfListingsFeature,\n setValue,\n updateSalesOfListings,\n warningDialog,\n ]);\n\n return (\n <>\n }>\n \n {!isBulkEdit && listing && (\n \n }\n style={{ flex: 1 }}\n detail={\n listing?.isSeatSaver ? (\n {\n if (newD !== deliveryType) {\n setValue('delivType', newD);\n\n confirmUpdateSales();\n }\n }}\n />\n ) : (\n \n {icon}\n \n \n )\n }\n />\n \n )}\n {!isBulkEdit && listing && (\n \n \n }\n style={{ flex: 1 }}\n detail={\n \n \n \n }\n />\n\n {canViewFulfillmentArtifacts &&\n cancelTo &&\n canViewFulfillmentArtifacts &&\n predeliveryArtifactTypes.map((predeliveryArtifactType) => (\n \n ))}\n \n \n )}\n {!isBulkEdit && hasAutoFulfillFeature && isAnyHandledByProcessor && (\n \n \n }\n style={{ flex: 1 }}\n detail={\n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n setValue('isNoFulfill', !isChecked);\n\n confirmUpdateSales();\n }}\n />\n }\n />\n \n \n )}\n \n }\n style={{ flex: 1 }}\n detail={\n \n {!isBulkEdit && }\n {\n if (date) {\n if (!inHandDate || !isEqual(date, inHandDate)) {\n setValue('inHandDate', date.toISOString());\n }\n\n setValue('daysBeforeEvent', daysBeforeEvent ?? null);\n\n confirmUpdateSales();\n } else {\n if (isBulkEdit) {\n setValue('inHandDate', null);\n }\n }\n }}\n value={inHandAt}\n targetDate={\n event?.dates?.start\n ? new Date(event?.dates?.start)\n : new Date()\n }\n />\n \n }\n />\n \n {!isBulkEdit && listing && (\n \n )}\n \n \n }\n size=\"md\"\n {...warningDialog.dialogProps}\n alerts={[deliveryInfoChangeHookProps]}\n onOkay={() => {\n warningDialog.closeDialog();\n }}\n okText={ContentId.Yes}\n cancelText={ContentId.No}\n onCancel={() => warningDialog.closeDialog()}\n />\n \n );\n};\n","import {\n ChangeEvent,\n ForwardedRef,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport { FieldValues, Path, useFormContext } from 'react-hook-form';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport {\n getTextFieldState,\n PosTextFieldProps,\n} from 'src/core/POS/PosTextField';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { onPriceFieldChange } from 'src/utils/inventoryUtils';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\n\ntype ListingPriceInputProps = {\n isBulkEdit?: boolean;\n currencyCode: string;\n field: Path;\n otherField: Path;\n isAllInPrice?: boolean;\n fieldToOtherRatio: number;\n onUnbroadcast?: () => void;\n onChange?: (newPrice: number) => void;\n onEnter?: () => void;\n} & Omit<\n PosTextFieldProps,\n 'type' | 'errors' | 'currency' | 'value' | 'onChange'\n>;\n\nconst ListingPriceInputInner = (\n {\n isBulkEdit,\n currencyCode,\n field,\n otherField,\n isAllInPrice,\n fieldToOtherRatio,\n onBlur,\n disabled,\n onChange,\n onEnter,\n placeholder,\n ...rest\n }: ListingPriceInputProps,\n ref: ForwardedRef\n) => {\n const { getUiCurrency } = useLocalizationContext();\n const { setValue, watch, setError, clearErrors, getFieldState, formState } =\n useFormContext();\n\n let price = watch(field) as number | null;\n const otherPrice = watch(otherField) as number | null;\n\n const uiCurrency = useMemo(\n () => getUiCurrency(currencyCode),\n [currencyCode, getUiCurrency]\n );\n\n if (isAllInPrice && otherPrice && price !== fieldToOtherRatio * otherPrice) {\n // This is a hack where the price fields for external marketplaces are not editable and is being derived from\n // only the StubHub price - so if the StubHub price has no fees, the external marketplaces price won't see the\n // reflection of their own fees\n price = roundToPrecision(fieldToOtherRatio * otherPrice, uiCurrency.dec);\n }\n\n const requiredMsg = useContent(ContentId.Required);\n const dontChange = useContent(ContentId.DontChange);\n\n const fieldError = getFieldState(field, formState)?.error?.message;\n\n const onChangeHandler = useCallback(\n (e: ChangeEvent) => {\n const newValue = parseFloat(e.target.value) ?? 0;\n\n onChange?.(newValue);\n\n onPriceFieldChange(\n newValue,\n field,\n price,\n otherField,\n otherPrice,\n // This is the otherToFieldRatio, so we take the inverse of fieldToOtherRatio\n 1 / fieldToOtherRatio,\n clearErrors,\n setValue\n );\n },\n [\n clearErrors,\n field,\n fieldToOtherRatio,\n onChange,\n otherField,\n otherPrice,\n price,\n setValue,\n ]\n );\n\n const onBlurHandler = useCallback(\n (e: React.FocusEvent) => {\n if (!isBulkEdit) {\n if (price == null || otherPrice == null) {\n setError(field, { message: requiredMsg });\n setError(otherField, { message: requiredMsg });\n }\n }\n\n if ((price ?? 0) < 0 || (otherPrice ?? 0) < 0) {\n setError(field, { message: requiredMsg });\n setError(otherField, { message: requiredMsg });\n }\n onBlur?.(e);\n },\n [\n field,\n isBulkEdit,\n onBlur,\n otherField,\n otherPrice,\n price,\n requiredMsg,\n setError,\n ]\n );\n\n return (\n \n {\n if (e.key === 'Enter' && typeof onEnter === 'function') {\n onEnter();\n }\n }}\n disabled={disabled}\n ref={ref}\n {...rest}\n />\n \n );\n};\n\nexport const ListingPriceInput = forwardRef(ListingPriceInputInner) as (\n props: ListingPriceInputProps & { ref?: ForwardedRef }\n) => ReturnType;\n","import { formatInTimeZone } from 'date-fns-tz';\nimport { createRef, useCallback, useEffect, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { MarketplaceLogo } from 'src/components/common/MarketplaceLogo';\nimport { ListingPriceInput } from 'src/components/Input/ListingPriceInput';\nimport { SellerAccountEmployeeSelector } from 'src/components/Selectors/SellerAccountEmployeeSelector';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { SimpleTable } from 'src/core/ui';\nimport {\n Alert,\n AlertWithSuppressionDialog,\n useManualPriceDisableAutoPricingDialog,\n} from 'src/dialogs/AlertWithSuppressionDialog';\nimport { useManualPriceAdjustFloorOrCeilingDialog } from 'src/dialogs/AlertWithSuppressionDialog/useManualPriceAdjustFloorOrCeilingDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useGetEventFullInfo } from 'src/hooks/useGetEventFullInfo';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserCanSetPrice } from 'src/hooks/useUserHasListingPermissions';\nimport {\n Detail,\n DetailGroup,\n DetailSection,\n SectionContent,\n} from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isDatePassedHours } from 'src/utils/dateTimeUtils';\nimport {\n compareMarketplace,\n getIsInternationalEvent,\n} from 'src/utils/eventWithDataUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n Event,\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingDetailsUpdateInput,\n ListingMetrics,\n ListingStatus,\n Marketplace,\n Permission,\n} from 'src/WebApiController';\n\nimport * as styles from './MarketplaceBroadcastSection/MarketplaceDisplay.css';\n\nexport const EconomicsSection = ({\n listing,\n disabled,\n isBulkEdit,\n activeEvent,\n displayMode = 'DEFAULT',\n}: {\n listing?: ListingDetails | null;\n disabled?: boolean;\n displayMode?: 'PRICE_ONLY' | 'NO_PRICE' | 'DEFAULT';\n isBulkEdit?: boolean;\n activeEvent?: Event;\n}) => {\n const { timeZone } = useSiteTimezoneContext();\n const isListed =\n listing?.status === ListingStatus.Listed ||\n listing?.status === ListingStatus.ListingPending;\n\n const { activeAccountWebClientConfig, loginContext } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const { getUiCurrency } = useLocalizationContext();\n const uiCurrency = useMemo(\n () =>\n getUiCurrency(\n listing?.currency ??\n loginContext?.user?.activeAccount?.currencyCode ??\n 'USD'\n ),\n [\n getUiCurrency,\n listing?.currency,\n loginContext?.user?.activeAccount?.currencyCode,\n ]\n );\n const canChangePricer = useUserHasAnyOfPermissions(\n Permission.Inventory_SetPrice\n );\n const { refreshMetrics } = useCatalogMetricsContext();\n\n const { watch, setValue, register, getValues, formState } =\n useFormContext();\n const dontChange = useContent(ContentId.DontChange);\n const defaultPlaceholder = useContent(ContentId.Default);\n\n const listPrice = watch('listPrice');\n const marketplacePriceUpdates = watch('marketplacePriceUpdates');\n const autoPricingEnabled = watch('autoPricingEnabled');\n const netProceedsFloor = watch('netProceedsFloor');\n const netProceedsCeiling = watch('netProceedsCeiling');\n const pricerSellerUserId = watch('pricerSellerUserId');\n const buyerUserId = watch('buyerUserId');\n const canSetPrice = useUserCanSetPrice(listing, isBulkEdit);\n\n const onUnbroadcast = useCallback(() => {\n if (!listing) {\n return;\n }\n tryInvokeApi(\n async () => {\n const client = new ListingClient(activeAccountWebClientConfig);\n\n const result = await client.deleteMarketplaceListings(listing.id, []);\n if (result) {\n refreshMetrics?.();\n\n // Refresh the active data so the SaleDetail dialog and table will have the new content\n await setActivePosEntity(listing.id, listing.idOnMkp, true, [\n ListingDetailDataField.Basic,\n ]);\n }\n },\n (error) => {\n showErrorDialog('ListingClient.deleteMarketplaceListings', error, {\n trackErrorData: {\n listingId: listing.id,\n marketplaceListingID: listing.idOnMkp,\n },\n });\n }\n );\n }, [\n activeAccountWebClientConfig,\n listing,\n refreshMetrics,\n setActivePosEntity,\n showErrorDialog,\n ]);\n\n const thirdPartyMPs = (\n listing?.mkpListings?.map(\n ({ mkp, markup, sellerAccountDefaultMarkup, sellerFee }) => ({\n mkp,\n markup,\n sellerAccountDefaultMarkup:\n sellerAccountDefaultMarkup != null\n ? roundToPrecision(sellerAccountDefaultMarkup * 100, 2)\n : null,\n sellerFee,\n })\n ) ??\n loginContext?.user?.activeAccount?.marketplaceSettings?.map(\n ({ mkp, markup, sellerFee }) => ({\n mkp,\n markup,\n sellerAccountDefaultMarkup: markup,\n sellerFee,\n })\n ) ??\n []\n )\n .filter((ml) => ml.mkp)\n .reduce(\n (r, m) => {\n r[m.mkp!] = m;\n return r;\n },\n {} as Record<\n Marketplace,\n {\n mkp: Marketplace;\n markup: number | null;\n sellerAccountDefaultMarkup: number | null;\n sellerFee: number | null;\n }\n >\n );\n const stubHubMarketplace = thirdPartyMPs[Marketplace.StubHub];\n\n const isDisabled = useMemo(() => {\n if (disabled || !canSetPrice) return true;\n // Bulk edit mode should not disable the section\n if (!listing) return false;\n if (listing.isDeleted) return true;\n\n return false;\n }, [disabled, canSetPrice, listing]);\n\n const { event, venue } = useGetEventFullInfo(activeEvent);\n\n const isInternationalEvent = getIsInternationalEvent(venue?.country?.code);\n\n const warningDialog = useBasicDialog();\n\n const manualPriceDisableAutoPricingProps =\n useManualPriceDisableAutoPricingDialog(() => {\n setValue('autoPricingEnabled', false);\n });\n\n const marketplacePrices = marketplacePriceUpdates\n .filter((m) => m.priceByMarketplace)\n .map((m) => m.listPrice);\n const allListPrices = useMemo(() => {\n const p = [listPrice, ...marketplacePrices]\n .filter((n) => n != null)\n .map((n) => n!);\n\n return p;\n }, [listPrice, marketplacePrices]);\n\n const smallestListPrice = useMemo(\n () => Math.min(...allListPrices.filter((l) => l > 0)),\n [allListPrices]\n );\n const largestListPrice = useMemo(\n () => Math.max(...allListPrices.filter((l) => l > 0)),\n [allListPrices]\n );\n const manualPriceAdjustFloorProps = useManualPriceAdjustFloorOrCeilingDialog(\n smallestListPrice,\n netProceedsFloor,\n netProceedsCeiling,\n () => {\n if (smallestListPrice < (netProceedsFloor ?? Number.MIN_VALUE)) {\n setValue('netProceedsFloor', smallestListPrice);\n }\n },\n () => {\n if (\n listPrice != null &&\n listPrice > 0 &&\n listPrice < (netProceedsFloor ?? Number.MIN_VALUE)\n ) {\n setValue('listPrice', netProceedsFloor);\n }\n\n marketplacePriceUpdates.forEach((m, i) => {\n if (m.priceByMarketplace && m.listPrice != null && m.listPrice > 0) {\n if (m.listPrice < (netProceedsFloor ?? 0)) {\n setValue(\n `marketplacePriceUpdates.${i}.listPrice`,\n netProceedsFloor\n );\n }\n }\n });\n }\n );\n\n const manualPriceAdjustCeilingProps =\n useManualPriceAdjustFloorOrCeilingDialog(\n largestListPrice,\n netProceedsFloor,\n netProceedsCeiling,\n () => {\n if (largestListPrice > (netProceedsCeiling ?? Number.MAX_VALUE)) {\n setValue('netProceedsCeiling', largestListPrice);\n }\n },\n () => {\n if (\n listPrice != null &&\n listPrice > 0 &&\n listPrice > (netProceedsCeiling ?? Number.MAX_VALUE)\n ) {\n setValue('listPrice', netProceedsCeiling);\n }\n\n marketplacePriceUpdates.forEach((m, i) => {\n if (m.priceByMarketplace && m.listPrice != null && m.listPrice > 0) {\n if (m.listPrice > (netProceedsCeiling ?? Number.MAX_VALUE)) {\n setValue(\n `marketplacePriceUpdates.${i}.listPrice`,\n netProceedsCeiling\n );\n }\n }\n });\n }\n );\n\n const [alerts, setAlerts] = useState([]);\n const rowsCount = marketplacePriceUpdates.length + 1;\n const [inputRefsArray] = useState(() =>\n Array.from({ length: rowsCount }, () => createRef())\n );\n const [focusedInputIndex, setFocusedInputIndex] = useState(0);\n\n const getFloorAlerts = useCallback((): Alert[] => {\n if (smallestListPrice < (netProceedsFloor ?? Number.MIN_VALUE)) {\n if (isDatePassedHours(manualPriceAdjustFloorProps.lastTimeStamp, 1)) {\n return [manualPriceAdjustFloorProps];\n }\n }\n return [];\n }, [manualPriceAdjustFloorProps, netProceedsFloor, smallestListPrice]);\n\n const getCeilingAlerts = useCallback((): Alert[] => {\n if (largestListPrice > (netProceedsCeiling ?? Number.MAX_VALUE)) {\n if (isDatePassedHours(manualPriceAdjustCeilingProps.lastTimeStamp, 1)) {\n return [manualPriceAdjustCeilingProps];\n }\n }\n return [];\n }, [largestListPrice, manualPriceAdjustCeilingProps, netProceedsCeiling]);\n const getAutoPriceAlerts = useCallback((): Alert[] => {\n if (\n autoPricingEnabled &&\n isDatePassedHours(manualPriceDisableAutoPricingProps.lastTimeStamp, 1)\n ) {\n return [manualPriceDisableAutoPricingProps];\n }\n return [];\n }, [autoPricingEnabled, manualPriceDisableAutoPricingProps]);\n\n const onPriceChanged = useCallback(() => {\n if (listPrice === formState?.defaultValues?.listPrice) {\n return;\n }\n const newAlerts = [\n ...getFloorAlerts(),\n ...getCeilingAlerts(),\n ...getAutoPriceAlerts(),\n ];\n\n if (!isBulkEdit && newAlerts.length) {\n setAlerts(newAlerts);\n warningDialog.launchDialog();\n }\n }, [\n listPrice,\n formState?.defaultValues?.listPrice,\n getFloorAlerts,\n getCeilingAlerts,\n getAutoPriceAlerts,\n isBulkEdit,\n warningDialog,\n ]);\n\n const onPriceEdit = useCallback(\n (newPrice: number, priceByMarketplaceEnabled: boolean, idx: number) => {\n if (listPrice) {\n const newMarkup = (newPrice - listPrice) / listPrice;\n\n if (priceByMarketplaceEnabled) {\n setValue(\n `marketplacePriceUpdates.${idx}.markup`,\n roundToPrecision(newMarkup * 100, 2)\n );\n onPriceChanged();\n }\n }\n },\n [listPrice, onPriceChanged, setValue]\n );\n\n const handleEnter = (index: number) => {\n let nextIndex = 0;\n for (let i = index + 1; i < rowsCount; i++) {\n // find next enabled\n if (marketplacePriceUpdates[i - 1]?.priceByMarketplace) {\n nextIndex = i;\n break;\n }\n }\n const nextInput = inputRefsArray?.[nextIndex]?.current;\n if (nextInput) {\n nextInput.focus();\n setFocusedInputIndex(() => nextIndex);\n }\n onPriceChanged();\n };\n\n useEffect(() => {\n if (isDisabled) return;\n const nextInput = inputRefsArray?.[focusedInputIndex]?.current;\n if (nextInput) {\n setTimeout(() => {\n nextInput.focus();\n nextInput.select();\n }, 100);\n }\n }, [isDisabled, focusedInputIndex, inputRefsArray]);\n\n return (\n }>\n {displayMode !== 'NO_PRICE' &&\n isBulkEdit &&\n (listPrice != null ||\n marketplacePriceUpdates.some((m) => m.listPrice != null)) && (\n \n \n }\n />\n \n )}\n \n {displayMode !== 'NO_PRICE' && (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n onPriceChanged()}\n onEnter={() => handleEnter(0)}\n />\n \n \n onPriceChanged()}\n onEnter={() => handleEnter(0)}\n />\n \n \n {(!isInternationalEvent || isBulkEdit) &&\n // We only show other marketplaces when the Event is US\n marketplacePriceUpdates\n .filter((mp) => mp.marketplace !== Marketplace.StubHub)\n .toSorted((a, b) =>\n compareMarketplace(a.marketplace, b.marketplace)\n )\n .map((mp, i) => {\n const ml = thirdPartyMPs[mp.marketplace!];\n\n const priceByMarketplaceEnabled = getValues(\n `marketplacePriceUpdates.${i}.priceByMarketplace`\n );\n\n return (\n \n \n \n \n \n handleEnter(i + 1)}\n onChange={(val) => {\n onPriceEdit(val, priceByMarketplaceEnabled, i);\n }}\n />\n \n \n {\n onPriceEdit(val, priceByMarketplaceEnabled, i);\n }}\n onEnter={() => handleEnter(i + 1)}\n />\n \n \n \n \n \n \n\n \n {\n const newMode = !mp.priceByMarketplace;\n setValue(\n `marketplacePriceUpdates.${i}.priceByMarketplace`,\n newMode\n );\n if (!newMode) {\n // If this is false, set the value to listValue\n const mpListPrice = roundToPrecision(\n (listPrice ?? 0) * (1 + (ml.markup ?? 0)),\n uiCurrency.dec\n );\n setValue(\n `marketplacePriceUpdates.${i}.listPrice`,\n mpListPrice\n );\n }\n\n setValue(\n `marketplacePriceUpdates.${i}.markup`,\n null\n );\n }}\n />\n \n \n );\n })}\n \n \n )}\n {displayMode !== 'PRICE_ONLY' && (\n <>\n \n }\n style={{ width: '100%' }}\n >\n {\n if (newId !== pricerSellerUserId) {\n setValue('pricerSellerUserId', newId);\n }\n }}\n onClick={(e) => e.stopPropagation()}\n />\n \n \n {isBulkEdit && (\n \n }\n style={{ width: '100%' }}\n >\n {\n if (newId !== buyerUserId) {\n setValue('buyerUserId', newId);\n }\n }}\n onClick={(e) => e.stopPropagation()}\n />\n \n \n )}\n {!isBulkEdit && listing && (\n \n {listing.lastPrcUpdOn && (\n }\n detail={\n \n {listing.lastPrcUpdOn\n ? formatInTimeZone(\n new Date(listing.lastPrcUpdOn),\n timeZone,\n 'MMM d, yyyy',\n {\n locale: getLocaleFromLanguageOrCurrent(),\n }\n )\n : ''}\n \n }\n />\n )}\n \n )}\n \n )}\n \n\n }\n size=\"md\"\n {...warningDialog.dialogProps}\n alerts={alerts}\n onOkay={() => warningDialog.closeDialog()}\n onCancel={() => warningDialog.closeDialog()}\n />\n \n );\n};\n","import { PropsWithChildren } from 'react';\nimport { mergeProps } from 'src/core/utils';\nimport { BroadcastFailedIcon } from 'src/svgs/BroadcastFailedIcon';\n\nimport { container, messageContainer } from './ErrorIconMessage.css';\n\nexport const ErrorIconMessage = ({\n alignment = 'left',\n children,\n ...props\n}: PropsWithChildren<{\n alignment?: 'center' | 'left' | 'right';\n className?: string;\n}>) => {\n return (\n \n \n
    {children}
    \n \n );\n};\n","import { formatInTimeZone } from 'date-fns-tz';\nimport { useState } from 'react';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { vars } from 'src/core/themes';\nimport { Card, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ListingDetails } from 'src/WebApiController';\n\nimport * as styles from './DuplicateSeatDialogEntry.css';\n\nexport type DuplicateSeatDialogEntryProps = {\n activeListing: ListingDetails;\n listingId: number;\n lastUpdateDate: Date;\n onClick: (listingId: number) => void;\n};\n\nexport function DuplicateSeatDialogEntry({\n activeListing,\n listingId,\n lastUpdateDate,\n onClick,\n}: DuplicateSeatDialogEntryProps) {\n const { timeZone } = useSiteTimezoneContext();\n const [isHovered, setIsHovered] = useState(false);\n const formattedDate = formatInTimeZone(\n lastUpdateDate,\n timeZone,\n 'MMM d, yyyy, h:mm a'\n );\n\n return (\n setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n onClick(listingId)}\n >\n \n\n \n \n ID: {listingId}\n \n \n \n \n\n \n {formattedDate}\n \n \n \n \n );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { ComponentProps, useCallback, useContext } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\nimport { BodySectionTitle, FieldError } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { getListingDetailsModalConfigWithDeepLink } from 'src/utils/inventoryUtils';\nimport {\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n} from 'src/WebApiController';\n\nimport { DuplicateSeatDialogEntry } from './DuplicateSeatDialogEntry';\n\nexport type DuplicateSeatsSelectionDialogProps = ComponentProps<\n typeof RSModal\n> & {\n onCancel: () => void;\n};\n\nexport function DuplicateSeatsSelectionDialog({\n onCancel,\n ...rest\n}: DuplicateSeatsSelectionDialogProps) {\n const { posEntity: listing, setActivePosEntity } =\n useActivePosEntityContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const { setModal } = useContext(ModalContext);\n\n const shouldQuery =\n listing?.id != null && activeAccountWebClientConfig.activeAccountId != null;\n const {\n data: duplicateListingInfo,\n isLoading,\n error,\n } = useQuery({\n queryKey: [\n 'ListingClient.GetDuplicateListingsForListingIds',\n activeAccountWebClientConfig,\n listing?.id,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n const data = await new ListingClient(\n activeAccountWebClientConfig\n ).getDuplicateListingsForListingId(listing?.id);\n\n return data;\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n showErrorDialog(\n 'ListingClient.GetDuplicateListingsForListingIds',\n error,\n {\n trackErrorData: {\n activeAccountId: activeAccountWebClientConfig.activeAccountId,\n },\n }\n );\n },\n },\n });\n\n const activeListingInfo = duplicateListingInfo?.[0];\n\n const onDuplicateListingClick = useCallback(\n (listingId: number) => {\n setActivePosEntity(listingId, null, false, [\n ListingDetailDataField.Basic,\n ]);\n setModal(getListingDetailsModalConfigWithDeepLink(listingId, true));\n },\n [setActivePosEntity, setModal]\n );\n\n return (\n }\n footer={\n <>\n \n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n {isLoading || !listing ? (\n \n ) : error ? (\n Failed fetching duplicate listings\n ) : (\n \n \n \n \n \n {activeListingInfo && (\n \n )}\n \n \n \n {duplicateListingInfo?.map((info) => (\n \n ))}\n \n )}\n \n );\n}\n","import { ComponentProps } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Button, Stack } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { DuplicateSeatsSelectionDialog } from './DuplicateSeatsSelectionDialog';\n\nexport type LaunchDuplicateSeatsSelectionDialogProps = ComponentProps<\n typeof Button\n>;\n\nexport const LaunchDuplicateSeatsSelectionDialog = ({\n variant = 'link',\n ...props\n}: LaunchDuplicateSeatsSelectionDialogProps) => {\n const dialog = useBasicDialog();\n const onLaunch = () => {\n dialog.launchDialog();\n };\n\n return (\n \n \n \n \n );\n};\n","import {\n Content,\n FormatContent,\n useContent,\n} from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { ErrorIconMessage } from 'src/core/POS/ErrorIconMessage';\nimport { vars } from 'src/core/themes';\nimport { Card, Stack } from 'src/core/ui';\nimport { LaunchDuplicateSeatsSelectionDialog } from 'src/dialogs/DuplicateSeatsSelectionDialog.tsx';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { FieldError } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { Feature, ListingDetails } from 'src/WebApiController';\n\nimport * as styles from './DuplicateListingSection.css';\n\nexport const DuplicateListingSection = ({\n listing,\n allowBroadcast,\n handleClick,\n}: {\n listing: ListingDetails;\n allowBroadcast: boolean;\n handleClick: (isChecked: boolean) => void;\n}) => {\n const hasIgnoreDupFeature = useUserHasFeature(Feature.IgnoreDuplicate);\n\n const duplicateSeatHeader = useContent(ContentId.DuplicateSeat);\n if (!listing.dupListingId) {\n return null;\n }\n\n return (\n <>\n {listing.dupListingId ? (\n \n \n \n \n {duplicateSeatHeader}\n \n \n \n \n \n {hasIgnoreDupFeature && (\n \n {\n const isChecked = !allowBroadcast;\n handleClick(isChecked);\n }}\n />\n \n \n )}\n \n \n \n ) : null}\n \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { Stack, Switch } from 'src/core/ui';\nimport { useMarketplaceHandledByProcessor } from 'src/hooks/useMarketplaceHandledByProcessor';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport {\n Feature,\n ListingDetails,\n ListingDetailsBroadcastSectionUpdates,\n Marketplace,\n} from 'src/WebApiController';\n\nimport * as styles from './EnableNativeSyncSection.css';\n\nexport const EnableNativeSyncSection = ({\n disabled,\n listing,\n}: {\n disabled?: boolean;\n listing: ListingDetails;\n}) => {\n const { watch, setValue } =\n useFormContext();\n const hasEnableNativeSyncFeature = useUserHasFeature(\n Feature.EnableNativeSyncToggle\n );\n\n const stubHubHandledByProcessor = useMarketplaceHandledByProcessor(\n Marketplace.StubHub\n );\n\n const enableNativeSync = watch('enableNativeSync');\n\n const shouldShow =\n hasEnableNativeSyncFeature &&\n // Only show if this listing has StubHub or Ticketmaster enabled and sync-by-processor\n listing.mkpListings?.find(\n (mkp) =>\n mkp.isEnabled &&\n mkp.mkp === Marketplace.StubHub &&\n stubHubHandledByProcessor\n ) != null;\n\n if (!shouldShow) {\n return null;\n }\n\n return (\n \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n setValue('enableNativeSync', isChecked, {\n shouldDirty: true,\n });\n }}\n />\n\n \n \n \n \n \n {' '}\n \n .\n \n \n \n );\n};\n","import { useCallback, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { FormatContent, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ErrorMessage } from 'src/core/POS/ErrorMessage';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { SingleFileUploadWithPreview } from 'src/core/POS/SingleFileUploadWithPreview';\nimport { Stack } from 'src/core/ui';\nimport { MAX_ALLOWED_UPLOAD_FILE_SIZE } from 'src/core/utils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n DocumentPage,\n DocumentProcessorClient,\n DocumentType,\n UserDocument,\n UserDocumentLinks,\n} from 'src/WebApiController';\n\nimport * as styles from './UploadDocumentInput.css';\n\nexport type UploadDocumentInputForm = {\n uploadProofDocuments: UserDocument[] | null;\n};\n\ntype FileUploadInfo = {\n file?: File;\n errorMessage?: string;\n docLink?: UserDocumentLinks;\n};\n\nexport const UploadDocumentInput = ({\n entityId,\n entityType,\n uploadInstruction,\n documentType,\n setIsSaveDisabled,\n}: {\n entityId: number;\n entityType: ActionOutboxEntityType;\n uploadInstruction?: React.ReactNode;\n documentType: DocumentType;\n setIsSaveDisabled: (disabled: boolean) => void;\n}) => {\n const { setValue, setError, clearErrors } =\n useFormContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const [isLoading, setIsLoading] = useState(false);\n const { activeAccountWebClientConfig } = useAppContext();\n\n const [fileInfo, setFileInfo] = useState({});\n\n const failedUpload = useContent(ContentId.UploadFailureMessage);\n const onUploadDocument = useCallback(\n (file: File) => {\n tryInvokeApi(\n async () => {\n const client = new DocumentProcessorClient(\n activeAccountWebClientConfig\n );\n\n if (file) {\n setIsLoading(true);\n setIsSaveDisabled(true);\n const uploadInfo = await client.getDocumentUploadInfo(\n entityId,\n documentType,\n file.type\n );\n\n const result = await client.uploadDocumentWithoutProcessing(\n uploadInfo.entityId,\n entityType,\n uploadInfo.documentType,\n uploadInfo.blobName,\n uploadInfo.documentId,\n uploadInfo.contentType,\n {\n data: file,\n fileName: file.name,\n }\n );\n\n if (result.data) {\n setFileInfo({\n file: file,\n docLink: result.data,\n });\n clearErrors('uploadProofDocuments');\n setValue('uploadProofDocuments', [\n {\n entityId: result.entityId,\n documentId: result.data.documentId,\n documentType: documentType,\n } as UserDocument,\n ]);\n } else {\n setFileInfo({\n file: file,\n errorMessage: result.message ?? failedUpload,\n });\n setValue('uploadProofDocuments', []);\n setError('uploadProofDocuments', {\n message: result.message ?? failedUpload,\n });\n }\n }\n },\n (error) => {\n showErrorDialog(\n 'DocumentProcessorClient.uploadDocumentWithoutProcessing',\n error,\n {\n trackErrorData: fileInfo.file,\n }\n );\n },\n () => {\n setIsLoading(false);\n setIsSaveDisabled(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n setIsSaveDisabled,\n entityId,\n documentType,\n entityType,\n clearErrors,\n setValue,\n failedUpload,\n setError,\n showErrorDialog,\n fileInfo.file,\n ]\n );\n\n return (\n \n {uploadInstruction && (\n
    {uploadInstruction}
    \n )}\n {isLoading && fileInfo.file?.name ? (\n
    \n
    \n \n
    \n \n
    \n ) : (\n \n fileName={fileInfo.file?.name}\n filePages={\n fileInfo.docLink\n ? [\n {\n id: fileInfo.docLink.documentId,\n documentId: fileInfo.docLink.documentId,\n documentUrl: fileInfo.docLink.documentUri,\n pageNumber: 1,\n thumbUrl: fileInfo.docLink.pageUri,\n },\n ]\n : []\n }\n isDeletable\n onFileDeleted={() => setFileInfo({})}\n onNewFileSelected={(f) => onUploadDocument(f[0])}\n hasError={Boolean(fileInfo.errorMessage)}\n maxFileSize={MAX_ALLOWED_UPLOAD_FILE_SIZE}\n />\n )}\n {fileInfo.errorMessage && (\n {fileInfo.errorMessage}\n )}\n
    \n );\n};\n","import { ComponentProps, useCallback, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport {\n UploadDocumentInput,\n UploadDocumentInputForm,\n} from 'src/components/Input/UploadDocumentInput';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { ImageMagnifier } from 'src/core/POS/ImageMagnifier';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n DocumentType,\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n UserDocumentLinks,\n} from 'src/WebApiController';\n\nexport type ProofOfPurchaseUploadDilaogProps = ComponentProps<\n typeof RSModal\n> & {\n onCancel: () => void;\n proofDocs?: UserDocumentLinks[] | null;\n};\n\nexport function ProofOfPurchaseUploadDilaog({\n onClosed,\n onCancel,\n proofDocs,\n ...rest\n}: ProofOfPurchaseUploadDilaogProps) {\n const methods = useForm();\n\n const { posEntity: listing, setActivePosEntity } =\n useActivePosEntityContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const onUploadProofOfPurchase = useCallback(() => {\n const uploadDocs = methods.getValues()?.uploadProofDocuments;\n if (!listing?.id || !uploadDocs?.length) {\n return;\n }\n\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const result = await new ListingClient(\n activeAccountWebClientConfig\n ).updateProofOfPurchaseForListing(listing.id!, uploadDocs!);\n\n if (!isSuccess(result)) {\n showErrorDialog(\n 'updateProofOfPurchaseForListing',\n { status: result.status, message: result.message },\n { trackErrorData: uploadDocs }\n );\n } else {\n await setActivePosEntity(listing.id, listing.idOnMkp, true, [\n ListingDetailDataField.Basic,\n ]);\n }\n onClosed?.();\n },\n (error) => {\n showErrorDialog('PurchaseClient.importPurchaseFromFile', error, {\n trackErrorData: { uploadDocs },\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n }, [\n activeAccountWebClientConfig,\n listing?.id,\n listing?.idOnMkp,\n methods,\n onClosed,\n setActivePosEntity,\n showErrorDialog,\n ]);\n\n return (\n }\n footer={\n <>\n \n {\n onUploadProofOfPurchase();\n }}\n textContentId={ContentId.Save}\n />\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n }\n />\n {' '}\n {!methods.getValues().uploadProofDocuments?.length &&\n proofDocs?.map((d) => (\n

    \n \n

    \n ))}\n
    \n \n );\n}\n","import { ComponentProps } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { IconsFill, UploadIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { UserDocumentLinks } from 'src/WebApiController';\n\nimport { ProofOfPurchaseUploadDilaog } from './ProofOfPurchaseUploadDialog';\n\nexport type LaunchProofOfPurchaseUploadDilaogProps = ComponentProps<\n typeof Button\n> & { className?: string; proofDocs?: UserDocumentLinks[] | null };\n\nexport const LaunchProofOfPurchaseUploadDilaog = ({\n variant = 'link',\n proofDocs,\n ...props\n}: LaunchProofOfPurchaseUploadDilaogProps) => {\n const dialog = useBasicDialog();\n\n const onLaunch = () => {\n dialog.launchDialog();\n };\n\n return (\n \n \n \n \n );\n};\n","import { Content, useContent } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Card, Stack } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { LaunchProofOfPurchaseUploadDilaog } from 'src/dialogs/ProofOfPurchaseUploadDialog';\nimport { FieldError } from 'src/modals/common';\nimport { CheckIcon, IconsFill, ProcessingIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PENDING_PROOF_STATE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { ListingDetails, PendingProofState } from 'src/WebApiController';\n\nimport * as styles from './ProofOfPurchaseSection.css';\n\nexport const ProofOfPurchaseSection = ({\n listing,\n}: {\n listing: ListingDetails;\n}) => {\n const pendingProofText = useContent(\n PENDING_PROOF_STATE_TO_CID[\n listing.pendProofState ?? PendingProofState.Approved\n ]\n );\n if (!listing.pendProofState) return null;\n\n return (\n \n \n {listing.pendProofState === PendingProofState.PendingProof ? (\n \n {pendingProofText}\n \n \n \n \n ) : (\n \n \n {listing.pendProofState === PendingProofState.PendingReview ? (\n \n \n \n ) : (\n \n )}\n \n )}\n \n \n \n );\n};\n","import { Content, FormatContent } from 'src/contexts/ContentContext';\nimport {\n ActionOutboxEntityType,\n ActivityLogValueChange,\n} from 'src/WebApiController';\n\nimport { ACTIVITY_LOG_STATE_TO_CID } from './constants/contentIdMaps';\nimport { FormatContentId } from './constants/formatContentId';\n\nexport const getActivityLogChangeDisplay = (\n activity: string,\n v: ActivityLogValueChange,\n emptyContentPlaceholder = '',\n detailed = false\n) => {\n const normalizedMessage = normalizeActivityLogMessage(v.message?.message);\n const newValueNormalized = normalizeActivityLogValue(\n v.newValue,\n emptyContentPlaceholder\n );\n\n return v.message ? (\n
    \n \n \n {normalizedMessage?.length && `: ${normalizedMessage[0]}`}\n \n {detailed &&\n (normalizedMessage?.length ?? 0) > 1 &&\n normalizedMessage!.slice(1).map((m, i) => {m})}\n
    \n ) : v.oldValue && v.newValue ? (\n \n ) : v.oldValue ? (\n \n ) : activity ? (\n `${activity}: ${newValueNormalized}`\n ) : (\n newValueNormalized\n );\n};\n\nexport const normalizeActivityLogValue = (\n value: string | null | undefined,\n emptyPlaceholder?: string\n) => {\n let strippedValue = value ?? '';\n if (strippedValue.startsWith(\"'\") && strippedValue.endsWith(\"'\")) {\n strippedValue = strippedValue.substring(1, strippedValue.length - 1);\n }\n if (strippedValue.startsWith('\"') && strippedValue.endsWith('\"')) {\n strippedValue = strippedValue.substring(1, strippedValue.length - 1);\n }\n\n if (!strippedValue) {\n return emptyPlaceholder;\n }\n\n return value;\n};\n\nexport const normalizeActivityLogMessage = (\n message?: string | null\n): string[] | undefined => {\n if (!message) {\n return undefined;\n }\n\n try {\n if (message.startsWith(StubHubApiErrorFormat)) {\n message = message.replace(StubHubApiErrorFormat, '');\n }\n\n return normalizeErrorMessage(message);\n } catch (e) {\n console.warn(e);\n return message\n ?.split('.')\n ?.filter((s) => s.length)\n ?.map((s) => `${s.trim()}.`);\n }\n};\n\nexport const StubHubApiErrorFormat =\n 'An error occurred with this API request: ';\n\nexport type ActivityLogMessageDetails = {\n code?: string | null;\n message?: string | null;\n errors?: {\n eventIds: string[] | null | undefined;\n 'seller_listing.seating.section': string[] | null | undefined;\n 'seller_listing.seating.row': string[] | null | undefined;\n 'seller_listing.seating.seat_from': string[] | null | undefined;\n 'seller_listing.seating.seat_to': string[] | null | undefined;\n 'seller_listing.number_of_tickets': string[] | null | undefined;\n 'seller_listing.display_number_of_tickets': string[] | null | undefined;\n 'seller_listing.split_type': string[] | null | undefined;\n 'seller_listing.ticket_price.amt': string[] | null | undefined;\n 'seller_listing.ticket_price.currency': string[] | null | undefined;\n 'seller_listing.ticket_proceeds.amt': string[] | null | undefined;\n 'seller_listing.ticket_proceeds.currency': string[] | null | undefined;\n 'seller_listing.listing_note_ids': string[] | null | undefined;\n 'seller_listing.face_value.amt': string[] | null | undefined;\n 'seller_listing.face_value.currency': string[] | null | undefined;\n 'seller_listing.ticket_location_address_id': string[] | null | undefined;\n 'seller_listing.in_hand_at': string[] | null | undefined;\n 'seller_listing.ticket_type': string[] | null | undefined;\n 'seller_listing.reservation_details.code': string[] | null | undefined;\n 'seller_listing.reservation_details.pin': string[] | null | undefined;\n 'seller_listing.reservation_details.store': string[] | null | undefined;\n 'seller_listing.reservation_details.expiry_date':\n | string[]\n | null\n | undefined;\n 'seller_listing.reservation_details.release_date':\n | string[]\n | null\n | undefined;\n 'seller_listing.face_value': string[] | null | undefined;\n 'seller_listing.additional_information.primary_order_id':\n | string[]\n | null\n | undefined;\n 'seller_listing.additional_information.home_or_away':\n | string[]\n | null\n | undefined;\n };\n};\n\nexport const StubHubApiPropertiesToPosProperties: Record = {\n 'seating.section': 'Section',\n 'seating.row': 'Row',\n 'seating.seat_from': 'SeatFrom',\n 'seating.seat_to': 'SeatTo',\n number_of_tickets: 'Quantity',\n display_number_of_tickets: 'Max Display Quantity',\n split_type: 'SplitType',\n 'ticket_price.amt': 'All-in Price',\n 'ticket_price.currency': 'Currency Code',\n 'ticket_proceeds.amt': 'List Price',\n 'ticket_proceeds.currency': 'Currency Code',\n listing_note_ids: 'Listing Notes',\n 'face_value.amt': 'Face Value',\n 'face_value.currency': 'Currency Code',\n ticket_location_address_id: 'Ticket Location Address Id',\n in_hand_at: 'In-hand At',\n ticket_type: 'Ticket Type',\n 'reservation_details.code': 'Reservation Code',\n 'reservation_details.pin': 'Reservation Pin',\n 'reservation_details.store': 'Reservation Store',\n 'reservation_details.expiry_date': 'Reservation Expiry Date',\n 'reservation_details.release_date': 'Reservation Release Date',\n face_value: '',\n 'additional_information.primary_order_id': 'Primary Order Id',\n 'additional_information.home_or_away': 'Home or Away',\n};\n\ntype Error = {\n message?: string;\n errors?: unknown;\n};\n\nconst extractMessage = (error: Error): string[] | undefined => {\n if (error.message) {\n return normalizeErrorMessage(error.message);\n } else if (error.errors) {\n const result = normalizeErrorObject(error.errors);\n if (result) return result;\n\n // TODO - this would no longer be needed when Broadcast service returns all these in one giant \"message\"\n return Object.values(error.errors)\n .flatMap((m) => m)\n .filter((m) => m)\n .map((m) => {\n let ms = m!.toString();\n Object.keys(StubHubApiPropertiesToPosProperties).forEach((k) => {\n ms = ms!\n .toString()\n .replace(`'${k}'`, `'${StubHubApiPropertiesToPosProperties[k]}'`);\n });\n return ms;\n });\n }\n\n return undefined;\n};\n\nconst normalizeErrorMessage = (message?: string) => {\n if (!message) {\n return undefined;\n }\n try {\n const errorObj = JSON.parse(message.trim());\n const result = normalizeErrorObject(errorObj);\n if (result) {\n return result;\n }\n } catch (e) {\n console.warn(`Unable to parse: ${message}\n${e}`);\n }\n return message\n ?.split('.')\n ?.filter((s) => s.length)\n ?.map((s) => `${s.trim()}.`);\n};\n\nconst normalizeErrorObject = (errorObj: Error[] | Error) => {\n if (Array.isArray(errorObj)) {\n return errorObj\n .flatMap((e: Error) => extractMessage(e))\n .filter((s) => s)\n .map((s) => s!);\n } else if (typeof errorObj === 'object') {\n return extractMessage(errorObj);\n }\n\n return undefined;\n};\n\nexport const entityTypeNumberToEntityTypeEnum = (\n entityType: number | null | undefined\n): ActionOutboxEntityType | undefined => {\n switch (entityType) {\n case 1:\n return ActionOutboxEntityType.Sale;\n case 2:\n return ActionOutboxEntityType.Listing;\n case 3:\n return ActionOutboxEntityType.Purchase;\n case 4:\n return ActionOutboxEntityType.SellerSupportCase;\n case 5:\n return ActionOutboxEntityType.Document;\n case 6:\n return ActionOutboxEntityType.SellerEvent;\n case 7:\n return ActionOutboxEntityType.InboundEmail;\n default:\n return undefined;\n }\n};\n","import { useMemo } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Virtuoso } from 'react-virtuoso';\nimport { vars } from 'src/core/themes';\nimport { ListingDetails } from 'src/WebApiController';\n\nimport { getSeatDisplay } from '../ListingDetails/components';\n\nexport const ViewSeatsListBody = ({\n listing,\n seeAvailableSeats,\n seeWastedSeats,\n}: {\n listing?: ListingDetails | null;\n seeAvailableSeats?: boolean;\n seeWastedSeats?: boolean;\n}) => {\n const navigate = useNavigate();\n const tickets = listing?.tickets;\n const seatsElements = useMemo(() => {\n if (tickets) {\n if (seeWastedSeats) {\n return tickets\n .filter((t) => t.saleId && t.isWasted)\n .map((t) => getSeatDisplay(t, navigate));\n } else if (seeAvailableSeats) {\n return tickets.filter((t) => !t.saleId).map((t) => getSeatDisplay(t));\n } else {\n return tickets\n .filter((t) => t.saleId)\n .map((t) => getSeatDisplay(t, navigate));\n }\n }\n }, [tickets, seeWastedSeats, seeAvailableSeats, navigate]);\n\n return (\n {\n return
    {seatsElement}
    ;\n }}\n />\n );\n};\n","import { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { CancellableFormFooter } from 'src/modals/common';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalBody, ModalFooter, ModalProps } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ListingDetails } from 'src/WebApiController';\n\nimport { ViewSeatsListBody } from './ViewSeatsListBody';\n\nexport const ViewSeatsListModal = ({\n cancelTo,\n seeAvailableSeats,\n seeWastedSeats,\n}: {\n cancelTo?: ModalProps;\n seeAvailableSeats?: boolean;\n seeWastedSeats?: boolean;\n}) => {\n const { posEntity: listing } = useActivePosEntityContext();\n\n return (\n <>\n \n \n }\n />\n \n\n \n \n \n\n \n \n \n \n );\n};\n","import { ComponentProps, useCallback, useContext } from 'react';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { Button } from 'src/core/ui';\nimport { ViewSeatsListModal } from 'src/modals/ViewSeatsListModal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n ListingDetailDataField,\n ListingDetails,\n} from 'src/WebApiController';\n\nexport const LaunchViewAllSeats = ({\n listingId,\n marketplaceListingId,\n cancelTo,\n seeAvailableSeats,\n seeWastedSeats,\n}: {\n listingId: number;\n marketplaceListingId?: string | null;\n\n disabled?: boolean;\n} & ComponentProps) => {\n const { setModal } = useContext(ModalContext);\n const { posEntity: listing, setActivePosEntity } =\n useActivePosEntityContext();\n\n const viewComps = useCallback(() => {\n setModal({\n children: (\n \n ),\n clickOutsideToClose: true,\n size: 'slide-in',\n deepLinkValue: listingId,\n trackViewEntityType: ActionOutboxEntityType.Listing,\n });\n }, [setModal, cancelTo, listingId, seeAvailableSeats]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setActivePosEntity(listingId, marketplaceListingId, true, [\n ListingDetailDataField.Basic,\n ListingDetailDataField.Tickets,\n ]);\n viewComps();\n },\n [setActivePosEntity, listingId, marketplaceListingId, viewComps]\n );\n\n return (\n \n );\n};\n","import { Fragment, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { NavigateFunction, useNavigate } from 'react-router-dom';\nimport { VenueRowInput } from 'src/components/Input/VenueRowInput';\nimport { VenueSectionInput } from 'src/components/Input/VenueSectionInput';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { useGetSectionRowFromVenueMapConfig } from 'src/contexts/EventMapContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Colors } from 'src/core/themes/constants/colors';\nimport { Button } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserCanUpdateListing } from 'src/hooks/useUserHasListingPermissions';\nimport {\n Detail,\n DetailGroup,\n DetailSection,\n SectionContent,\n} from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SPLIT_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { getListingDetailsModalConfigWithDeepLink } from 'src/utils/inventoryUtils';\nimport { INT_MAX_VALUE } from 'src/utils/numberFormatter';\nimport { getSaleDetailsRelativeUrl } from 'src/utils/saleUtils';\nimport {\n ListingDetails,\n ListingDetailsUpdateInput,\n SplitType,\n Ticket,\n} from 'src/WebApiController';\n\nimport { LaunchViewAllSeats } from '../actions/LaunchViewAllSeats';\n\nconst MAX_SEATS_DISPLAY = 10;\n\nexport const getSeatDisplay = (ticket: Ticket, navigate?: NavigateFunction) => {\n const { saleId, seat, ord } = ticket;\n\n if (ticket.saleId) {\n return (\n \n navigate ? navigate(getSaleDetailsRelativeUrl(saleId!)) : null\n }\n >\n {seat ? (\n <>{seat}\n ) : (\n \n )}\n \n );\n } else {\n return seat ? (\n <>{seat}\n ) : (\n \n );\n }\n};\n\nexport const TicketsSection = ({\n listing,\n disabled,\n isBulkEdit,\n}: {\n listing?: ListingDetails | undefined;\n disabled?: boolean;\n isBulkEdit?: boolean;\n}) => {\n const navigate = useNavigate();\n const {\n setValue,\n watch,\n clearErrors,\n formState: { defaultValues, errors },\n } = useFormContext();\n\n const { loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n const uiCurrency = useMemo(\n () =>\n getUiCurrency(\n listing?.currency ??\n loginContext?.user?.activeAccount?.currencyCode ??\n 'USD'\n ),\n [\n getUiCurrency,\n listing?.currency,\n loginContext?.user?.activeAccount?.currencyCode,\n ]\n );\n\n const splitType = watch('splitType');\n const hideSeats = watch('hideSeatsFromMarketplace');\n const manualMaxDisplayQuantity = watch('manualMaxDisplayQuantity');\n const cancelTo = getListingDetailsModalConfigWithDeepLink(listing?.id);\n\n const isMobile = useMatchMedia('mobile');\n\n const { tickets, ticketCnt, seating } = listing ?? {};\n\n const availableSeats = useMemo(() => {\n if (!tickets?.length || !listing) {\n return [];\n }\n const ticketsAvailable = tickets.filter((t) => !t.saleId);\n\n const ticketsElement = ticketsAvailable\n .slice(0, MAX_SEATS_DISPLAY)\n .map((t) => {getSeatDisplay(t)})\n .flatMap((value, index, array) =>\n array.length - 1 !== index\n ? [value, {', '}]\n : value\n );\n\n if (ticketsAvailable.length > MAX_SEATS_DISPLAY) {\n ticketsElement.push(\n \n {' ... '}\n \n \n );\n }\n return ticketsElement;\n }, [tickets, listing, cancelTo]);\n\n const soldSeats = useMemo(() => {\n if (!tickets?.length || !listing) {\n return [];\n }\n const ticketsSold = tickets.filter((t) => t.saleId);\n\n const ticketsElement = ticketsSold\n .slice(0, MAX_SEATS_DISPLAY)\n .map((t) => {getSeatDisplay(t, navigate)})\n .flatMap((value, index, array) =>\n array.length - 1 !== index\n ? [value, {', '}]\n : value\n );\n\n if (ticketsSold.length > MAX_SEATS_DISPLAY) {\n ticketsElement.push(\n \n {' ... '}\n \n \n );\n }\n return ticketsElement;\n }, [tickets, listing, navigate, cancelTo]);\n\n const canUpdate = useUserCanUpdateListing(listing, isBulkEdit);\n\n const isDisabled = disabled || listing?.isDeleted || !canUpdate;\n\n const onShownQuantityChange = (\n changeEvent: React.ChangeEvent\n ) => {\n const newValue = parseInt(changeEvent?.target?.value);\n if (newValue > 0 && newValue < INT_MAX_VALUE) {\n const validatedValue = Math.min(newValue, listing?.availQty ?? 0) || null;\n setValue('manualMaxDisplayQuantity', validatedValue);\n } else {\n setValue('manualMaxDisplayQuantity', null);\n }\n };\n\n const section = watch('section');\n const sectionId = watch('sectionId');\n const row = watch('row');\n const rowId = watch('rowId');\n const faceValueCost = watch('faceValue');\n\n const { section: selectedSection, row: selectedRow } =\n useGetSectionRowFromVenueMapConfig(rowId, sectionId, section, row);\n\n return (\n }>\n \n \n }\n detail={\n {\n if (newSplitType !== splitType) {\n setValue(\n 'splitType',\n newSplitType || isBulkEdit\n ? newSplitType\n : SplitType.AvoidOne\n );\n }\n }}\n />\n }\n />\n \n \n }\n detail={\n {\n const newHideSeats = e.target.checked;\n if (newHideSeats !== hideSeats) {\n setValue('hideSeatsFromMarketplace', newHideSeats);\n }\n }}\n />\n }\n />\n \n {!isBulkEdit && listing && seating && (\n <>\n \n }\n detail={\n \n }\n style={{\n width: '8em',\n }}\n />\n \n \n }\n detail={{listing.availQty}}\n />\n \n \n }\n detail={{ticketCnt}}\n />\n \n \n }\n errors={errors.section?.message}\n >\n {!listing.isSeatSaver ? (\n {section}\n ) : (\n {\n clearErrors('section');\n if (section) {\n setValue('section', section.name);\n setValue('sectionId', section.id);\n\n if (section.specRow?.id) {\n // Setting the section automatically set the speculative row id\n setValue('rowId', section.specRow?.id);\n setValue('row', '');\n }\n } else {\n setValue('section', sectionName ?? '');\n setValue('sectionId', null);\n\n // Free-text section do not have speculative row info\n setValue('rowId', null);\n setValue('row', '');\n }\n }}\n />\n )}\n \n \n \n }>\n {!listing.isSeatSaver ? (\n {row}\n ) : (\n {\n clearErrors('row');\n if (row) {\n setValue('row', row.isSpeculative ? '' : row.name);\n setValue('rowId', row.id);\n } else {\n // If we can't find the row - that mean they typed it in\n // so just keep with they type as the row\n setValue('row', rowName ?? '');\n setValue('rowId', null);\n }\n }}\n />\n )}\n \n \n \n }\n detail={\n <>\n
    \n \n \n {': '}\n \n {availableSeats}\n
    \n
    \n \n \n {': '}\n \n {soldSeats}\n
    \n \n }\n />\n
    \n\n {listing?.isSeatSaver && (\n \n }>\n {\n const v = parseFloat(e.target.value) || 0;\n if (v >= 0 && v <= Number.MAX_VALUE) {\n setValue('faceValue', v);\n } else {\n setValue('faceValue', null);\n }\n }}\n />\n \n \n )}\n \n )}\n
    \n
    \n );\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useMemo, useRef, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useBulkEditHubContext } from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { EconomicsSection } from 'src/modals/ListingDetails/components';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getListingDetailsUpdateInput,\n isListingDetailsInputChanged,\n} from 'src/utils/inventoryUtils';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n Event,\n Listing,\n ListingDetails,\n ListingDetailsUpdateInput,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport type BulkEditMarketplacePricesDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n listings?: Listing[] | null;\n selectedListingIds?: number[];\n event?: Event;\n onOkay: (\n listing: ListingDetailsUpdateInput | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport const BulkEditMarketplacePricesDialog = ({\n listings,\n ...rest\n}: BulkEditMarketplacePricesDialogProps) => {\n const { loginContext } = useAppContext();\n const methods = useForm({\n defaultValues: getListingDetailsUpdateInput(\n null,\n null,\n loginContext?.user?.activeAccount?.marketplaceSettings\n ),\n });\n\n return (\n \n \n \n );\n};\n\nfunction BulkEditMarketplacePricesDialogContent({\n updateKey,\n listings,\n selectedListingIds,\n event,\n onOkay,\n onCancel,\n handleSubmit,\n getValues,\n clearErrors,\n setError,\n setValue,\n watch,\n reset,\n formState,\n ...rest\n}: BulkEditMarketplacePricesDialogProps &\n Omit<\n ComponentProps>,\n 'children'\n >) {\n const { loginContext } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n const input = watch();\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n await refreshExpandedListItems();\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, stage, preview, initJob } = useBulkEditHub(\n ActionOutboxEntityType.Listing,\n BulkActionType.UpdateMarketplacePrices,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(null, false, onPreviewReceived);\n } else {\n handleSubmit((i) =>\n onOkay(i, hasBackgroundBulkEditFeature, undefined, preview)\n )();\n }\n setIsLoading(false);\n },\n [stage, onOkay, preview, hasBackgroundBulkEditFeature]\n );\n\n const isInputValid = useMemo(() => {\n return isListingDetailsInputChanged(\n input,\n formState.defaultValues as ListingDetailsUpdateInput\n );\n }, [input, formState.defaultValues]);\n\n const submittButtonRef = useRef(null);\n\n return (\n <>\n }\n />\n }\n onOpened={() => {\n reset(\n getListingDetailsUpdateInput(\n null,\n null,\n loginContext?.user?.activeAccount?.marketplaceSettings\n )\n );\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter' && isInputValid) {\n submittButtonRef.current.click();\n }\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n \n \n \n \n );\n}\n","import { useBulkPricingActionsPermissions } from 'src/components/common/BulkActions/BulkPricingActions/useBulkPricingActionsPermissions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const LaunchUpdateMarketplacePrices = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const { hasUpdateListingPermission, hasEditPricingPermission } =\n useBulkPricingActionsPermissions();\n\n if (!hasUpdateListingPermission) {\n return null;\n }\n\n if (!hasEditPricingPermission) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { BulkEditMarketplacePricesDialog } from 'src/dialogs/BulkEdits/BulkEditMarketplacePricesDialog';\nimport { flattenListingGroup } from 'src/modals/GroupListings/components/groupingUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n Event,\n Listing,\n ListingDetails,\n ListingDetailsUpdateInput,\n ListingPricesUpdateInput,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_UPDATE_MARKETPLACE_PRICES_UPDATE_KEY } from '../../InventoryActionDropdown.constants';\nimport { LaunchUpdateMarketplacePrices } from './LaunchChangeMarketplacePrice';\n\nexport const useBulkUpdateMarketplacePrices = (\n filterQueryWithEventIds: ListingQuery,\n affectedVisibleListingIds: number[],\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const updateKey = event\n ? `marketplacePrices-event-${event?.viagVirtualId}`\n : INVENTORY_BULK_UPDATE_MARKETPLACE_PRICES_UPDATE_KEY;\n\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const {\n eventsTransformed,\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkEditMarketplaceDialog,\n closeDialog: closeBulkEditMarketplaceDialog,\n } = useDialog(\n DialogId.BulkEditMarketplacePrices,\n BulkEditMarketplacePricesDialog\n );\n\n const onSubmit = useCallback(\n async (\n listingUpdate: ListingDetailsUpdateInput | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdateMarketplacePricesPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateMarketplacePricesPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (listingUpdate) {\n await tryInvokeApi(\n async () => {\n const client = await new BulkEditListingClient(\n activeAccountWebClientConfig\n );\n\n const input = {\n item1: preview!.preview,\n item2: {\n id: listingUpdate.id,\n allInPrice: listingUpdate.allInPrice,\n listPrice: listingUpdate.listPrice,\n netProceedsCeiling: listingUpdate.netProceedsCeiling,\n netProceedsFloor: listingUpdate.netProceedsFloor,\n autoPricingEnabled: listingUpdate.autoPricingEnabled,\n marketplacePriceUpdates: listingUpdate.marketplacePriceUpdates,\n } as ListingPricesUpdateInput,\n };\n const succeeded = await client.bulkUpdateMarketplacePrices(\n input,\n updateKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on listingDetails\n // we force re-loading the listing and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n\n closeBulkEditMarketplaceDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkUpdateMarketplacePrices', error, {\n trackErrorData: { preview, listingUpdate },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeBulkEditMarketplaceDialog,\n filterQueryWithEventIds,\n refreshExpandedListItems,\n setActivePosEntity,\n setIsLoading,\n showErrorDialog,\n updateKey,\n ]\n );\n\n const listings = useMemo(() => {\n return (eventsTransformed ?? [])\n .flatMap((ev) => ev.entities.listings)\n .flatMap(flattenListingGroup)\n .filter(({ id, isLtGrp }) => id > 0 && !isLtGrp) as Listing[];\n }, [eventsTransformed]);\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n openBulkEditMarketplaceDialog({\n event,\n updateKey,\n listings,\n selectedListingIds: affectedVisibleListingIds,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkEditMarketplaceDialog,\n });\n }}\n disabled={isLoading}\n />\n ),\n };\n};\n","import { Feature } from 'src/WebApiController';\n\nimport { useUserHasFeature } from './useUserHasFeature';\n\n/**\n * Returns `true` when user has the given feature _and_ has the general feature for autopricing;\n * Otherwise, returns `false`.\n */\nexport const useUserHasAutopricingFeature = (feature: Feature) => {\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n const hasFeature = useUserHasFeature(feature);\n return hasAutoPricingFeature && hasFeature;\n};\n","import { isEqual } from 'lodash-es';\nimport {\n UseFormClearErrors,\n UseFormSetError,\n UseFormSetValue,\n} from 'react-hook-form';\nimport {\n DEFAULT_COMP_LISTING_FLOOR,\n DEFAULT_UNDERCUT_ABSOLUTE_AMT,\n DEFAULT_UNDERCUT_RELATIVE_AMT,\n PricingSettingsField,\n} from 'src/utils/autoPricingUtils';\nimport { hasChanged, posChangedField, posField } from 'src/utils/posFieldUtils';\nimport {\n AutoPricingCompListingMode,\n Listing,\n ListingDetailsAutoPricingSectionUpdatesV2,\n} from 'src/WebApiController';\n\nimport {\n AutoPricingSettingsInput,\n PricingSettingsUpdateKey,\n} from './BulkEditAutoPricingSettingsDialog.types';\n\nexport const validateCompListingSettings = (\n clearErrors: UseFormClearErrors,\n setError: UseFormSetError,\n setValue: UseFormSetValue,\n listForm: ListingDetailsAutoPricingSectionUpdatesV2,\n compListingFloorCeilingError: string,\n requiredMsg: string,\n errorField?: PricingSettingsField,\n isStrategy?: boolean\n) => {\n let hasErrors = false;\n\n if (errorField) {\n clearErrors(errorField);\n } else {\n clearErrors('compListingFloor');\n clearErrors('compListingSelectedSectionSettings');\n }\n\n const {\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingOnlyForSelectedSectionsEnabled,\n compListingSelectedSectionSettings,\n autoPricingEnabled,\n } = listForm;\n\n const skipCompListing = !(\n compListingMode?.hasChanged ||\n compListingFloor?.hasChanged ||\n compListingCeiling?.hasChanged ||\n compListingOnlyForSelectedSectionsEnabled?.hasChanged ||\n compListingSelectedSectionSettings?.hasChanged\n );\n\n if (!autoPricingEnabled || skipCompListing) {\n return true;\n }\n\n if (\n compListingMode?.value === AutoPricingCompListingMode.QualityScore ||\n compListingMode?.value === AutoPricingCompListingMode.SameSection\n ) {\n if (!compListingFloor?.value) {\n listForm.compListingFloor = compListingFloor;\n setValue('compListingFloor', posChangedField(DEFAULT_COMP_LISTING_FLOOR));\n } else if (compListingCeiling && compListingFloor >= compListingCeiling) {\n setError(\n errorField ?? 'compListingFloor',\n {\n message: compListingFloorCeilingError,\n },\n { shouldFocus: true }\n );\n\n hasErrors = true;\n }\n }\n\n if (\n compListingMode?.value === AutoPricingCompListingMode.QualityScore ||\n compListingMode?.value === AutoPricingCompListingMode.SameEvent ||\n compListingMode?.value === AutoPricingCompListingMode.SameZone\n ) {\n if (\n compListingOnlyForSelectedSectionsEnabled?.value &&\n !isStrategy &&\n !compListingSelectedSectionSettings?.value?.sectionIdFilter?.length\n ) {\n setError(\n errorField ?? 'compListingSelectedSectionSettings',\n {\n message: requiredMsg,\n },\n { shouldFocus: true }\n );\n\n hasErrors = true;\n }\n }\n\n return !hasErrors;\n};\n\nexport const validateUndercutSettings = (\n clearErrors: UseFormClearErrors,\n setValue: UseFormSetValue,\n listForm: ListingDetailsAutoPricingSectionUpdatesV2,\n errorField?: PricingSettingsField\n) => {\n if (errorField) {\n clearErrors(errorField);\n } else {\n clearErrors('undercutAbsoluteAmount');\n clearErrors('undercutRelativeAmount');\n }\n\n const {\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n autoPricingEnabled,\n } = listForm;\n\n if (\n !autoPricingEnabled ||\n !(\n undercutMode?.hasChanged ||\n undercutAbsoluteAmount?.hasChanged ||\n undercutRelativeAmount?.hasChanged\n )\n ) {\n return true;\n }\n\n if (undercutMode?.value) {\n if (undercutAbsoluteAmount?.value == null) {\n listForm.undercutAbsoluteAmount = posChangedField(\n DEFAULT_UNDERCUT_ABSOLUTE_AMT\n );\n setValue(\n 'undercutAbsoluteAmount',\n posChangedField(DEFAULT_UNDERCUT_ABSOLUTE_AMT)\n );\n }\n\n if (undercutRelativeAmount?.value == null) {\n listForm.undercutRelativeAmount = posChangedField(\n DEFAULT_UNDERCUT_RELATIVE_AMT\n );\n setValue(\n 'undercutRelativeAmount',\n posChangedField(DEFAULT_UNDERCUT_RELATIVE_AMT)\n );\n }\n }\n\n return true;\n};\n\nexport const validateNetProceedsSettings = (\n clearErrors: UseFormClearErrors,\n setError: UseFormSetError,\n listForm: ListingDetailsAutoPricingSectionUpdatesV2,\n floorMustBeLessThanCeilingError: string,\n errorField?: PricingSettingsField\n) => {\n let hasErrors = false;\n\n if (errorField) {\n clearErrors(errorField);\n } else {\n clearErrors('netProceedsCeiling');\n clearErrors('netProceedsFloor');\n }\n\n const { netProceedsFloor, netProceedsCeiling } = listForm;\n\n if (\n (netProceedsFloor?.value ?? 0) > 0 &&\n (netProceedsCeiling?.value ?? 0) > 0\n ) {\n if (netProceedsFloor! >= netProceedsCeiling!) {\n setError(errorField ?? 'netProceedsFloor', {\n message: floorMustBeLessThanCeilingError,\n });\n hasErrors = true;\n }\n }\n\n return !hasErrors;\n};\n\nexport const validateAutoPricingSettings = (\n clearErrors: UseFormClearErrors,\n setError: UseFormSetError,\n setValue: UseFormSetValue,\n listForm: ListingDetailsAutoPricingSectionUpdatesV2,\n floorMustBeLessThanCeilingError: string,\n compListingFloorCeilingError: string,\n requiredMsg: string,\n isStrategy?: boolean\n) => {\n let hasErrors = false;\n\n if (\n !validateCompListingSettings(\n clearErrors,\n setError,\n setValue,\n listForm,\n compListingFloorCeilingError,\n requiredMsg,\n undefined,\n isStrategy\n )\n ) {\n hasErrors = true;\n }\n\n if (!validateUndercutSettings(clearErrors, setValue, listForm)) {\n hasErrors = true;\n }\n\n if (\n !isStrategy &&\n !validateNetProceedsSettings(\n clearErrors,\n setError,\n listForm,\n floorMustBeLessThanCeilingError\n )\n ) {\n hasErrors = true;\n }\n\n return !hasErrors;\n};\n\nexport const getSettingsInputChanged = (\n input: ListingDetailsAutoPricingSectionUpdatesV2,\n initial?: ListingDetailsAutoPricingSectionUpdatesV2,\n settingsInput?: AutoPricingSettingsInput\n): Partial<\n Record\n> => {\n const changedFields: Partial<\n Record\n > = {\n compListingFloor: hasChanged(\n input.compListingFloor,\n initial?.compListingFloor\n ),\n compListingCeiling: hasChanged(\n input.compListingCeiling,\n initial?.compListingCeiling\n ),\n undercutAbsoluteAmount: hasChanged(\n input.undercutAbsoluteAmount,\n initial?.undercutAbsoluteAmount\n ),\n undercutRelativeAmount: hasChanged(\n input.undercutRelativeAmount,\n initial?.undercutRelativeAmount\n ),\n netProceedsCeiling: hasChanged(\n input.netProceedsCeiling,\n initial?.netProceedsCeiling\n ),\n netProceedsFloor: hasChanged(\n input.netProceedsFloor,\n initial?.netProceedsFloor\n ),\n undercutMode: hasChanged(input.undercutMode, initial?.undercutMode),\n netProceedsFloorAdjustmentAmount:\n input.netProceedsFloorAdjustmentAmount != null &&\n input.netProceedsFloorAdjustmentType != null &&\n input.netProceedsFloorAdjustmentRelative != null,\n compListingMode: hasChanged(\n input.compListingMode,\n initial?.compListingMode\n ),\n id: false,\n rowVersion: false,\n autoPricingEnabled: hasChanged(\n input.autoPricingEnabled,\n initial?.autoPricingEnabled\n ),\n compListingQuantityScoreAdjustmentEnabled: hasChanged(\n input.compListingQuantityScoreAdjustmentEnabled,\n initial?.compListingQuantityScoreAdjustmentEnabled\n ),\n compListingQuantityScoreAdjustmentOverrideJson: hasChanged(\n input.compListingQuantityScoreAdjustmentOverrideJson,\n initial?.compListingQuantityScoreAdjustmentOverrideJson\n ),\n compListingOnlyForSameZoneEnabled: hasChanged(\n input.compListingOnlyForSameZoneEnabled,\n initial?.compListingOnlyForSameZoneEnabled\n ),\n compListingOnlyForSelectedSectionsEnabled: hasChanged(\n input.compListingOnlyForSelectedSectionsEnabled,\n initial?.compListingOnlyForSelectedSectionsEnabled\n ),\n compListingExcludeFanInventory: hasChanged(\n input.compListingExcludeFanInventory,\n initial?.compListingExcludeFanInventory\n ),\n compListingExcludeDefects: hasChanged(\n input.compListingExcludeDefects,\n initial?.compListingExcludeDefects\n ),\n compListingSelectedSectionSettings:\n hasChanged(\n input.compListingSelectedSectionSettings,\n initial?.compListingSelectedSectionSettings\n ) ||\n (settingsInput?.compListingSelectedSectionSettings?.hasConflict &&\n !input.includeExistingSelectedSections),\n deriveCompsFromVenueZoneConfig:\n input.deriveCompsFromVenueZoneConfig !=\n initial?.deriveCompsFromVenueZoneConfig,\n includeBetterZones: input.includeBetterZones != initial?.includeBetterZones,\n rowCompOffset: input.rowCompOffset != initial?.rowCompOffset,\n venueZoneMapName: input.venueZoneMapName != initial?.venueZoneMapName,\n circuitBreakerRelativeCeiling: hasChanged(\n input.circuitBreakerRelativeCeiling,\n initial?.circuitBreakerRelativeCeiling\n ),\n circuitBreakerRelativeFloor: hasChanged(\n input.circuitBreakerRelativeFloor,\n initial?.circuitBreakerRelativeFloor\n ),\n circuitBreakerMaxDiscountVelocityPercent: hasChanged(\n input.circuitBreakerMaxDiscountVelocityPercent,\n initial?.circuitBreakerMaxDiscountVelocityPercent\n ),\n circuitBreakerMaxDiscountVelocityTicksInHours: hasChanged(\n input.circuitBreakerMaxDiscountVelocityTicksInHours,\n initial?.circuitBreakerMaxDiscountVelocityTicksInHours\n ),\n circuitBreakerMinCompListingCount: hasChanged(\n input.circuitBreakerMinCompListingCount,\n initial?.circuitBreakerMinCompListingCount\n ),\n outlierMode: hasChanged(input.outlierMode, initial?.outlierMode),\n outlierStandardDeviations: hasChanged(\n input.outlierStandardDeviations,\n initial?.outlierStandardDeviations\n ),\n outlierKthLowestLimit: hasChanged(\n input.outlierKthLowestLimit,\n initial?.outlierKthLowestLimit\n ),\n outlierKthLowestLimitRelativeSpacing: hasChanged(\n input.outlierKthLowestLimitRelativeSpacing,\n initial?.outlierKthLowestLimitRelativeSpacing\n ),\n outlierKthLowestLimitAbsoluteSpacing: hasChanged(\n input.outlierKthLowestLimitAbsoluteSpacing,\n initial?.outlierKthLowestLimitAbsoluteSpacing\n ),\n currencyCode: false,\n };\n\n return changedFields;\n};\n\nexport const getAutoPricingSettingsUpdateInput = (\n listing: AutoPricingSettingsInput,\n accountCurrency: string | null,\n allowSeatScoreCompListingMode: boolean,\n hasBulkEditPricingSettingsUpdateFeature: boolean\n): ListingDetailsAutoPricingSectionUpdatesV2 => {\n let compListingMode;\n if (hasBulkEditPricingSettingsUpdateFeature) {\n compListingMode =\n !allowSeatScoreCompListingMode &&\n listing.compListingMode.value === AutoPricingCompListingMode.QualityScore\n ? posField(AutoPricingCompListingMode.SameEvent, true)\n : posField(listing.compListingMode.value);\n } else {\n // Bulk edit only supports SameEvent\n compListingMode = posField(AutoPricingCompListingMode.SameEvent, true);\n }\n return {\n id: -1,\n rowVersion: null,\n currencyCode: listing.currencyCode.value ?? accountCurrency,\n netProceedsFloorAdjustmentType: null,\n netProceedsFloorAdjustmentAmount: null,\n netProceedsFloorAdjustmentRelative: false,\n netProceedsFloor: posField(listing.netProceedsFloor.value),\n netProceedsCeiling: posField(listing.netProceedsCeiling.value),\n autoPricingEnabled: posField(listing.autoPricingEnabled.value),\n compListingFloor: posField(listing.compListingFloor.value),\n compListingCeiling: posField(listing.compListingCeiling.value),\n compListingMode,\n compListingOnlyForSameZoneEnabled: posField(\n listing.compListingOnlyForSameZoneEnabled.value\n ),\n compListingOnlyForSelectedSectionsEnabled: posField(\n listing.compListingOnlyForSelectedSectionsEnabled.value\n ),\n compListingExcludeFanInventory: posField(\n listing.compListingExcludeFanInventory.value\n ),\n compListingExcludeDefects: posField(\n listing.compListingExcludeDefects.value\n ),\n compListingQuantityScoreAdjustmentEnabled: posField(\n listing.compListingQuantityScoreAdjustmentEnabled.value\n ),\n compListingQuantityScoreAdjustmentOverrideJson: posField(\n listing.compListingQuantityScoreAdjustmentOverrideJson.value\n ),\n compListingSelectedSectionSettings: posField(\n listing.compListingSelectedSectionSettings.value\n ),\n deriveCompsFromVenueZoneConfig: false,\n includeBetterZones: false,\n rowCompOffset: 0,\n venueZoneMapName: null,\n includeExistingSelectedSections:\n !listing.compListingSelectedSectionSettings.value, // If no common sections are selected, include existing sections\n undercutMode: posField(listing.undercutMode.value),\n undercutAbsoluteAmount: posField(listing.undercutAbsoluteAmount.value),\n undercutRelativeAmount: posField(listing.undercutRelativeAmount.value),\n circuitBreakerMaxDiscountVelocityPercent: posField(\n listing.circuitBreakerMaxDiscountVelocityPercent.value\n ),\n circuitBreakerMaxDiscountVelocityTicksInHours: posField(\n listing.circuitBreakerMaxDiscountVelocityTicksInHours.value\n ),\n circuitBreakerMinCompListingCount: posField(\n listing.circuitBreakerMinCompListingCount.value\n ),\n circuitBreakerRelativeCeiling: posField(\n listing.circuitBreakerRelativeCeiling.value\n ),\n circuitBreakerRelativeFloor: posField(\n listing.circuitBreakerRelativeFloor.value\n ),\n outlierMode: posField(listing.outlierMode.value),\n outlierStandardDeviations: posField(\n listing.outlierStandardDeviations.value\n ),\n outlierKthLowestLimit: posField(listing.outlierKthLowestLimit.value),\n outlierKthLowestLimitRelativeSpacing: posField(\n listing.outlierKthLowestLimitRelativeSpacing.value\n ),\n outlierKthLowestLimitAbsoluteSpacing: posField(\n listing.outlierKthLowestLimitAbsoluteSpacing.value\n ),\n };\n};\n\nexport const generateDefaultSettings = (\n listings: Listing[],\n multiEvents: boolean,\n hasBulkEditPricingSettingsUpdateFeature: boolean\n): AutoPricingSettingsInput => {\n const currencyCode = new Set(listings.map((l) => l.currency));\n const autoPricingEnabled = new Set(listings.map((l) => l.isAutoPrc));\n const netProceedsFloor = new Set(listings.map((l) => l.procsFloor));\n const netProceedsCeiling = new Set(listings.map((l) => l.procsCeil));\n const compListingFloor = new Set(listings.map((l) => l.compFloor));\n const compListingCeiling = new Set(listings.map((l) => l.compCeil));\n const compListingSelectedSectionSettings = listings.map(\n (l) => l.compSectionSettings\n );\n const compListingOnlyForSameZoneEnabled = new Set(\n listings.map((l) => l.isCompForSameZone)\n );\n const compListingOnlyForSelectedSectionsEnabled = new Set(\n listings.map((l) => l.isCompSelectedSections)\n );\n const compListingExcludeFanInventory = new Set(\n listings.map((l) => l.compExclFanInv)\n );\n const compListingExcludeDefects = new Set(\n listings.map((l) => l.compExclDefects)\n );\n const compListingQuantityScoreAdjustmentEnabled = new Set(\n listings.map((l) => l.isCompQtyScrAdj)\n );\n const compListingQuantityScoreAdjustmentOverrideJson = new Set(\n listings.map((l) => l.compQtyScrAdjJson)\n );\n const undercutMode = new Set(listings.map((l) => l.undMode));\n const undercutAbsoluteAmount = new Set(listings.map((l) => l.undAbsAmt));\n const undercutRelativeAmount = new Set(listings.map((l) => l.undRelAmt));\n const circuitBreakerMaxDiscountVelocityPercent = new Set(\n listings.map((l) => l.cirBrMaxDiscVelocPercent)\n );\n const circuitBreakerMaxDiscountVelocityTicksInHours = new Set(\n listings.map((l) => l.cirBrMaxDiscVelocTicksInHrs)\n );\n const circuitBreakerMinCompListingCount = new Set(\n listings.map((l) => l.cirBrMinCompCount)\n );\n\n const circuitBreakerRelativeCeiling = new Set(\n listings.map((l) => l.cirBrRelCeil)\n );\n const circuitBreakerRelativeFloor = new Set(\n listings.map((l) => l.cirBrRelFloor)\n );\n const outlierMode = new Set(listings.map((l) => l.outMode));\n const outlierStandardDeviations = new Set(listings.map((l) => l.outlStdDev));\n const outlierKthLowestLimit = new Set(listings.map((l) => l.outKthLowestLim));\n const outlierKthLowestLimitRelativeSpacing = new Set(\n listings.map((l) => l.outKthLowestLimRelSpc)\n );\n const outlierKthLowestLimitAbsoluteSpacing = new Set(\n listings.map((l) => l.outKthLowestLimAbsSpc)\n );\n const compListingMode = new Set(listings.map((l) => l.compMode));\n\n return {\n currencyCode: toSettingInput(currencyCode, multiEvents),\n autoPricingEnabled: toSettingInput(autoPricingEnabled, multiEvents),\n netProceedsFloor: toSettingInput(netProceedsFloor, multiEvents),\n netProceedsCeiling: toSettingInput(netProceedsCeiling, multiEvents),\n compListingMode: hasBulkEditPricingSettingsUpdateFeature\n ? toSettingInput(compListingMode, multiEvents)\n : {\n value: AutoPricingCompListingMode.SameEvent,\n hasConflict: false,\n }, // Bulk edit only supports SameEvent\n compListingFloor: toSettingInput(compListingFloor, multiEvents),\n compListingCeiling: toSettingInput(compListingCeiling, multiEvents),\n compListingSelectedSectionSettings: toSettingInputFromArray(\n compListingSelectedSectionSettings,\n multiEvents\n ),\n compListingOnlyForSameZoneEnabled: toSettingInput(\n compListingOnlyForSameZoneEnabled,\n multiEvents\n ),\n compListingOnlyForSelectedSectionsEnabled: toSettingInput(\n compListingOnlyForSelectedSectionsEnabled,\n multiEvents\n ),\n compListingExcludeFanInventory: toSettingInput(\n compListingExcludeFanInventory,\n multiEvents\n ),\n compListingExcludeDefects: toSettingInput(\n compListingExcludeDefects,\n multiEvents\n ),\n compListingQuantityScoreAdjustmentEnabled: toSettingInput(\n compListingQuantityScoreAdjustmentEnabled,\n multiEvents\n ),\n compListingQuantityScoreAdjustmentOverrideJson: toSettingInput(\n compListingQuantityScoreAdjustmentOverrideJson,\n multiEvents\n ),\n undercutMode: toSettingInput(undercutMode, multiEvents),\n undercutAbsoluteAmount: toSettingInput(undercutAbsoluteAmount, multiEvents),\n undercutRelativeAmount: toSettingInput(undercutRelativeAmount, multiEvents),\n circuitBreakerMaxDiscountVelocityPercent: toSettingInput(\n circuitBreakerMaxDiscountVelocityPercent,\n multiEvents\n ),\n circuitBreakerMaxDiscountVelocityTicksInHours: toSettingInput(\n circuitBreakerMaxDiscountVelocityTicksInHours,\n multiEvents\n ),\n circuitBreakerMinCompListingCount: toSettingInput(\n circuitBreakerMinCompListingCount,\n multiEvents\n ),\n circuitBreakerRelativeCeiling: toSettingInput(\n circuitBreakerRelativeCeiling,\n multiEvents\n ),\n circuitBreakerRelativeFloor: toSettingInput(\n circuitBreakerRelativeFloor,\n multiEvents\n ),\n outlierMode: toSettingInput(outlierMode, multiEvents),\n outlierStandardDeviations: toSettingInput(\n outlierStandardDeviations,\n multiEvents\n ),\n outlierKthLowestLimit: toSettingInput(outlierKthLowestLimit, multiEvents),\n outlierKthLowestLimitRelativeSpacing: toSettingInput(\n outlierKthLowestLimitRelativeSpacing,\n multiEvents\n ),\n outlierKthLowestLimitAbsoluteSpacing: toSettingInput(\n outlierKthLowestLimitAbsoluteSpacing,\n multiEvents\n ),\n };\n};\n\nconst toSettingInput = (values: Set, multiEvents = false) => {\n const isUnique = values.size === 1;\n // Default to hasConflict if there are multiple events\n const hasConflict = values.size > 1 || multiEvents;\n return {\n value: isUnique ? Array.from(values)[0] ?? null : null,\n hasConflict,\n };\n};\n\nconst toSettingInputFromArray = (values: T[], multiEvents: boolean) => {\n const allEqual = values.every((v) => isEqual(v, values[0]));\n return {\n value: allEqual ? values[0] ?? null : null,\n // Default to hasConflict if there are multiple events\n hasConflict: !allEqual || multiEvents,\n };\n};\n\nexport const santizedPricingSettingsUpdateInput = (\n input: ListingDetailsAutoPricingSectionUpdatesV2,\n updateInput?: Partial>\n): ListingDetailsAutoPricingSectionUpdatesV2 => {\n return {\n id: input.id,\n rowVersion: input.rowVersion,\n currencyCode: input.currencyCode,\n netProceedsFloorAdjustmentType: input.netProceedsFloorAdjustmentType,\n netProceedsFloorAdjustmentAmount: input.netProceedsFloorAdjustmentAmount,\n netProceedsFloorAdjustmentRelative:\n input.netProceedsFloorAdjustmentRelative,\n netProceedsFloor: posField(\n input.netProceedsFloor?.value ?? null,\n input.netProceedsFloor?.hasChanged && updateInput?.netProceedsFloor\n ),\n netProceedsCeiling: posField(\n input.netProceedsCeiling?.value ?? null,\n input.netProceedsCeiling?.hasChanged && updateInput?.netProceedsCeiling\n ),\n autoPricingEnabled: posField(\n input.autoPricingEnabled?.value ?? null,\n input.autoPricingEnabled?.hasChanged && updateInput?.autoPricingEnabled\n ),\n undercutMode: input.undercutMode,\n undercutAbsoluteAmount: posField(\n input.undercutAbsoluteAmount?.value ?? null,\n input.undercutAbsoluteAmount?.hasChanged &&\n updateInput?.undercutAbsoluteAmount != null\n ),\n undercutRelativeAmount: posField(\n input.undercutRelativeAmount?.value ?? null,\n input.undercutRelativeAmount?.hasChanged &&\n updateInput?.undercutRelativeAmount\n ),\n compListingMode: posField(\n input.compListingMode?.value ?? null,\n input.compListingMode?.hasChanged && updateInput?.compListingMode\n ),\n compListingFloor: posField(\n input.compListingFloor?.value ?? null,\n input.compListingFloor?.hasChanged && updateInput?.compListingFloor\n ),\n compListingCeiling: posField(\n input.compListingCeiling?.value ?? null,\n input.compListingCeiling?.hasChanged && updateInput?.compListingCeiling\n ),\n compListingQuantityScoreAdjustmentEnabled: posField(\n input.compListingQuantityScoreAdjustmentEnabled?.value ?? null,\n input.compListingQuantityScoreAdjustmentEnabled?.hasChanged &&\n updateInput?.compListingQuantityScoreAdjustmentEnabled\n ),\n compListingQuantityScoreAdjustmentOverrideJson: posField(\n input.compListingQuantityScoreAdjustmentOverrideJson?.value ?? null,\n input.compListingQuantityScoreAdjustmentOverrideJson?.hasChanged &&\n updateInput?.compListingQuantityScoreAdjustmentOverrideJson\n ),\n compListingOnlyForSameZoneEnabled: posField(\n input.compListingOnlyForSameZoneEnabled?.value ?? null,\n input.compListingOnlyForSameZoneEnabled?.hasChanged &&\n updateInput?.compListingOnlyForSameZoneEnabled\n ),\n compListingOnlyForSelectedSectionsEnabled: posField(\n input.compListingOnlyForSelectedSectionsEnabled?.value ?? null,\n input.compListingOnlyForSelectedSectionsEnabled?.hasChanged &&\n updateInput?.compListingOnlyForSelectedSectionsEnabled\n ),\n compListingExcludeFanInventory: posField(\n input.compListingExcludeFanInventory?.value ?? null,\n input.compListingExcludeFanInventory?.hasChanged &&\n updateInput?.compListingExcludeFanInventory\n ),\n compListingExcludeDefects: posField(\n input.compListingExcludeDefects?.value ?? null,\n input.compListingExcludeDefects?.hasChanged &&\n updateInput?.compListingExcludeDefects\n ),\n compListingSelectedSectionSettings: posField(\n input.compListingSelectedSectionSettings?.value ?? null,\n (input.compListingSelectedSectionSettings?.hasChanged ||\n !input.includeExistingSelectedSections) && // When not include existing listings, always update\n updateInput?.compListingSelectedSectionSettings\n ),\n deriveCompsFromVenueZoneConfig: input.deriveCompsFromVenueZoneConfig,\n includeBetterZones: input.includeBetterZones,\n rowCompOffset: input.rowCompOffset,\n venueZoneMapName: input.venueZoneMapName,\n includeExistingSelectedSections:\n (input.includeExistingSelectedSections &&\n updateInput?.compListingSelectedSectionSettings) ??\n null,\n circuitBreakerRelativeCeiling: posField(\n input.circuitBreakerRelativeCeiling?.value ?? null,\n input.circuitBreakerRelativeCeiling?.hasChanged &&\n updateInput?.circuitBreakerRelativeCeiling\n ),\n circuitBreakerRelativeFloor: posField(\n input.circuitBreakerRelativeFloor?.value ?? null,\n input.circuitBreakerRelativeFloor?.hasChanged &&\n updateInput?.circuitBreakerRelativeFloor\n ),\n circuitBreakerMaxDiscountVelocityPercent: posField(\n input.circuitBreakerMaxDiscountVelocityPercent?.value ?? null,\n input.circuitBreakerMaxDiscountVelocityPercent?.hasChanged &&\n updateInput?.circuitBreakerMaxDiscountVelocityPercent\n ),\n circuitBreakerMaxDiscountVelocityTicksInHours: posField(\n input.circuitBreakerMaxDiscountVelocityTicksInHours?.value ?? null,\n input.circuitBreakerMaxDiscountVelocityTicksInHours?.hasChanged &&\n updateInput?.circuitBreakerMaxDiscountVelocityTicksInHours\n ),\n circuitBreakerMinCompListingCount: posField(\n input.circuitBreakerMinCompListingCount?.value ?? null,\n input.circuitBreakerMinCompListingCount?.hasChanged &&\n updateInput?.circuitBreakerMinCompListingCount\n ),\n outlierMode: posField(\n input.outlierMode?.value ?? null,\n input.outlierMode?.hasChanged && updateInput?.outlierMode\n ),\n outlierStandardDeviations: posField(\n input.outlierStandardDeviations?.value ?? null,\n input.outlierStandardDeviations?.hasChanged &&\n updateInput?.outlierStandardDeviations\n ),\n outlierKthLowestLimit: posField(\n input.outlierKthLowestLimit?.value ?? null,\n input.outlierKthLowestLimit?.hasChanged &&\n updateInput?.outlierKthLowestLimit\n ),\n outlierKthLowestLimitRelativeSpacing: posField(\n input.outlierKthLowestLimitRelativeSpacing?.value ?? null,\n input.outlierKthLowestLimitRelativeSpacing?.hasChanged &&\n updateInput?.outlierKthLowestLimitRelativeSpacing\n ),\n outlierKthLowestLimitAbsoluteSpacing: posField(\n input.outlierKthLowestLimitAbsoluteSpacing?.value ?? null,\n input.outlierKthLowestLimitAbsoluteSpacing?.hasChanged &&\n updateInput?.outlierKthLowestLimitAbsoluteSpacing\n ),\n };\n};\n","import { isEmpty } from 'lodash-es';\nimport { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n DEFAULT_COMP_LISTING_FLOOR,\n} from 'src/utils/autoPricingUtils';\nimport { coalesceUndefinedOnly } from 'src/utils/miscUtils';\nimport { posChangedField, posField } from 'src/utils/posFieldUtils';\nimport {\n mapToSelectedSectionSettings,\n SelectedSectionSettingsWithOptionals,\n} from 'src/utils/types/selectedSectionSettingsWithOptionals';\nimport {\n AutoPricingCompListingMode,\n AutoPricingOutlierMode,\n AutoPricingUndercutMode,\n Feature,\n Listing,\n ListingDetailsAutoPricingSectionUpdatesV2,\n PricingFloorCeilingAdjustmentType,\n SectionInfo,\n SelectedSectionSettings,\n} from 'src/WebApiController';\n\nexport const useAutoPricingSettings = (listing?: Listing | null) => {\n const { setValue, watch } =\n useFormContext();\n\n const hasDefaultFilterRowsFeature = useUserHasFeature(\n Feature.DefaultFilterRows\n );\n\n const updateInput = watch();\n const {\n netProceedsFloor,\n netProceedsCeiling,\n netProceedsFloorAdjustmentAmount,\n netProceedsFloorAdjustmentType,\n netProceedsFloorAdjustmentRelative,\n\n autoPricingEnabled,\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n compListingMode,\n compListingCeiling,\n compListingFloor,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingQuantityScoreAdjustmentEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingQuantityScoreAdjustmentOverrideJson,\n compListingSelectedSectionSettings,\n includeExistingSelectedSections,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacing,\n\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n } = updateInput;\n\n const { loginContext } = useAppContext();\n\n const { getUiCurrency } = useLocalizationContext();\n\n const uiCurrency = useMemo(\n () =>\n getUiCurrency(\n listing?.currency ?? loginContext?.user?.activeAccount?.currencyCode\n ),\n [\n getUiCurrency,\n listing?.currency,\n loginContext?.user?.activeAccount?.currencyCode,\n ]\n );\n\n const { event } = useEventMapContext();\n\n const circuitBreakerSettings = useMemo(() => {\n return {\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n };\n }, [\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n ]);\n\n const undercutSettings = useMemo(() => {\n return {\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n };\n }, [undercutAbsoluteAmount, undercutMode, undercutRelativeAmount]);\n\n const compListingSettings = useMemo(() => {\n return {\n compListingMode,\n compListingFloor:\n compListingFloor ?? posField(DEFAULT_COMP_LISTING_FLOOR),\n compListingCeiling:\n compListingCeiling ??\n posField(\n (compListingFloor?.value ?? DEFAULT_COMP_LISTING_FLOOR) +\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR\n ),\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingSelectedSectionSettings,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n };\n }, [\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingSelectedSectionSettings,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n ]);\n\n const outlierSettings = useMemo(() => {\n return {\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n };\n }, [\n outlierKthLowestLimit,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacing,\n outlierMode,\n outlierStandardDeviations,\n ]);\n\n const onUndercutChange = useCallback(\n (\n undercutModeNew?: AutoPricingUndercutMode | null,\n undercutAbsoluteAmountNew?: number | null,\n undercutRelativeAmountNew?: number | null\n ) => {\n setValue(\n 'undercutMode',\n posField(\n coalesceUndefinedOnly(\n undercutModeNew,\n undercutSettings.undercutMode?.value\n )!,\n undercutModeNew !== undefined ||\n undercutSettings.undercutMode?.hasChanged\n )\n );\n setValue(\n 'undercutAbsoluteAmount',\n posField(\n coalesceUndefinedOnly(\n undercutAbsoluteAmountNew,\n undercutSettings.undercutAbsoluteAmount?.value\n )!,\n undercutAbsoluteAmountNew !== undefined ||\n undercutSettings.undercutAbsoluteAmount?.hasChanged\n )\n );\n setValue(\n 'undercutRelativeAmount',\n posField(\n coalesceUndefinedOnly(\n undercutRelativeAmountNew,\n undercutSettings.undercutRelativeAmount?.value\n )!,\n undercutRelativeAmountNew !== undefined ||\n undercutSettings.undercutRelativeAmount?.hasChanged\n )\n );\n },\n [\n setValue,\n undercutSettings.undercutAbsoluteAmount,\n undercutSettings.undercutMode,\n undercutSettings.undercutRelativeAmount,\n ]\n );\n\n const onCompListingChange = useCallback(\n (input: {\n compListingModeNew?: AutoPricingCompListingMode | null;\n compListingFloorNew?: number | null;\n compListingCeilingNew?: number | null;\n compListingOnlyForSameZoneEnabledNew?: boolean | null;\n compListingOnlyForSelectedSectionsEnabledNew?: boolean | null;\n compListingQuantityScoreAdjustmentEnabledNew?: boolean | null;\n compListingExcludeFanInventoryNew?: boolean | null;\n compListingExcludeDefectsNew?: boolean | null;\n compListingQuantityScoreAdjustmentOverrideJsonNew?: string | null;\n compListingSelectedSectionSettingsNew?: SelectedSectionSettingsWithOptionals | null;\n }) => {\n const {\n compListingModeNew,\n compListingFloorNew,\n compListingCeilingNew,\n compListingOnlyForSameZoneEnabledNew,\n compListingOnlyForSelectedSectionsEnabledNew,\n compListingQuantityScoreAdjustmentEnabledNew,\n compListingExcludeFanInventoryNew,\n compListingExcludeDefectsNew,\n compListingQuantityScoreAdjustmentOverrideJsonNew,\n compListingSelectedSectionSettingsNew,\n } = input;\n\n const sanitizedCompListingOnlyForSameZoneEnabledNew =\n compListingOnlyForSelectedSectionsEnabledNew\n ? false\n : compListingOnlyForSameZoneEnabledNew;\n const sanitizedCompListingOnlyForSelectedSectionsEnabledNew =\n compListingOnlyForSameZoneEnabledNew\n ? false\n : compListingOnlyForSelectedSectionsEnabledNew;\n\n setValue(\n 'compListingMode',\n posField(\n coalesceUndefinedOnly(\n compListingModeNew,\n compListingSettings.compListingMode?.value\n )!,\n compListingModeNew !== undefined ||\n compListingSettings.compListingMode?.hasChanged\n )\n );\n setValue(\n 'compListingFloor',\n posField(\n coalesceUndefinedOnly(\n compListingFloorNew,\n compListingSettings.compListingFloor?.value\n )!,\n compListingFloorNew !== undefined ||\n compListingSettings.compListingFloor?.hasChanged\n )\n );\n setValue(\n 'compListingCeiling',\n posField(\n coalesceUndefinedOnly(\n compListingCeilingNew,\n compListingSettings.compListingCeiling?.value\n )!,\n compListingCeilingNew !== undefined ||\n compListingSettings.compListingCeiling?.hasChanged\n )\n );\n setValue(\n 'compListingOnlyForSameZoneEnabled',\n posField(\n coalesceUndefinedOnly(\n sanitizedCompListingOnlyForSameZoneEnabledNew,\n compListingSettings.compListingOnlyForSameZoneEnabled?.value\n )!,\n sanitizedCompListingOnlyForSameZoneEnabledNew !== undefined ||\n compListingSettings.compListingOnlyForSameZoneEnabled?.hasChanged\n )\n );\n setValue(\n 'compListingOnlyForSelectedSectionsEnabled',\n posField(\n coalesceUndefinedOnly(\n sanitizedCompListingOnlyForSelectedSectionsEnabledNew,\n compListingSettings.compListingOnlyForSelectedSectionsEnabled?.value\n )!,\n sanitizedCompListingOnlyForSelectedSectionsEnabledNew !== undefined ||\n compListingSettings.compListingOnlyForSelectedSectionsEnabled\n ?.hasChanged\n )\n );\n setValue(\n 'compListingQuantityScoreAdjustmentEnabled',\n posField(\n coalesceUndefinedOnly(\n compListingQuantityScoreAdjustmentEnabledNew,\n compListingSettings.compListingQuantityScoreAdjustmentEnabled?.value\n )!,\n compListingQuantityScoreAdjustmentEnabledNew !== undefined ||\n compListingSettings.compListingQuantityScoreAdjustmentEnabled\n ?.hasChanged\n )\n );\n setValue(\n 'compListingExcludeFanInventory',\n posField(\n coalesceUndefinedOnly(\n compListingExcludeFanInventoryNew,\n compListingSettings.compListingExcludeFanInventory?.value\n )!,\n compListingExcludeFanInventoryNew !== undefined ||\n compListingSettings.compListingExcludeFanInventory?.hasChanged\n )\n );\n setValue(\n 'compListingExcludeDefects',\n posField(\n coalesceUndefinedOnly(\n compListingExcludeDefectsNew,\n compListingSettings.compListingExcludeDefects?.value\n )!,\n compListingExcludeDefectsNew !== undefined ||\n compListingSettings.compListingExcludeDefects?.hasChanged\n )\n );\n setValue(\n 'compListingQuantityScoreAdjustmentOverrideJson',\n posField(\n coalesceUndefinedOnly(\n compListingQuantityScoreAdjustmentOverrideJsonNew,\n compListingSettings.compListingQuantityScoreAdjustmentOverrideJson\n ?.value\n )!,\n compListingQuantityScoreAdjustmentOverrideJsonNew !== undefined ||\n compListingSettings.compListingQuantityScoreAdjustmentOverrideJson\n ?.hasChanged\n )\n );\n setValue(\n 'compListingSelectedSectionSettings',\n posField(\n coalesceUndefinedOnly(\n mapToSelectedSectionSettings(compListingSelectedSectionSettingsNew),\n compListingSettings.compListingSelectedSectionSettings?.value\n )!,\n compListingSelectedSectionSettingsNew !== undefined ||\n compListingSettings.compListingSelectedSectionSettings?.hasChanged\n )\n );\n },\n [\n compListingSettings.compListingCeiling,\n compListingSettings.compListingFloor,\n compListingSettings.compListingMode,\n compListingSettings.compListingOnlyForSameZoneEnabled,\n compListingSettings.compListingOnlyForSelectedSectionsEnabled,\n compListingSettings.compListingQuantityScoreAdjustmentEnabled,\n compListingSettings.compListingExcludeFanInventory,\n compListingSettings.compListingExcludeDefects,\n compListingSettings.compListingQuantityScoreAdjustmentOverrideJson,\n compListingSettings.compListingSelectedSectionSettings,\n setValue,\n ]\n );\n\n const onCircuitBreakerChange = useCallback(\n (\n circuitBreakerRelativeCeilingNew?: number | null,\n circuitBreakerRelativeFloorNew?: number | null,\n circuitBreakerMaxDiscountVelocityPercentNew?: number | null,\n circuitBreakerMaxDiscountVelocityTicksInHoursNew?: number | null,\n circuitBreakerMinCompListingCountNew?: number | null\n ) => {\n setValue(\n 'circuitBreakerRelativeCeiling',\n posField(\n coalesceUndefinedOnly(\n circuitBreakerRelativeCeilingNew,\n circuitBreakerSettings.circuitBreakerRelativeCeiling?.value\n ) ?? null,\n circuitBreakerRelativeCeilingNew !== undefined ||\n circuitBreakerSettings.circuitBreakerRelativeCeiling?.hasChanged\n )\n );\n setValue(\n 'circuitBreakerRelativeFloor',\n posField(\n coalesceUndefinedOnly(\n circuitBreakerRelativeFloorNew,\n circuitBreakerSettings.circuitBreakerRelativeFloor?.value\n ) ?? null,\n circuitBreakerRelativeFloorNew !== undefined ||\n circuitBreakerSettings.circuitBreakerRelativeFloor?.hasChanged\n )\n );\n setValue(\n 'circuitBreakerMaxDiscountVelocityPercent',\n posField(\n coalesceUndefinedOnly(\n circuitBreakerMaxDiscountVelocityPercentNew,\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityPercent\n ?.value\n ) ?? null,\n circuitBreakerMaxDiscountVelocityPercentNew !== undefined ||\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityPercent\n ?.hasChanged\n )\n );\n setValue(\n 'circuitBreakerMaxDiscountVelocityTicksInHours',\n posField(\n coalesceUndefinedOnly(\n circuitBreakerMaxDiscountVelocityTicksInHoursNew,\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityTicksInHours\n ?.value\n ) ?? null,\n circuitBreakerMaxDiscountVelocityTicksInHoursNew !== undefined ||\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityTicksInHours\n ?.hasChanged\n )\n );\n setValue(\n 'circuitBreakerMinCompListingCount',\n posField(\n coalesceUndefinedOnly(\n circuitBreakerMinCompListingCountNew,\n circuitBreakerSettings.circuitBreakerMinCompListingCount?.value\n ) ?? null,\n circuitBreakerMinCompListingCountNew !== undefined ||\n circuitBreakerSettings.circuitBreakerMinCompListingCount?.hasChanged\n )\n );\n },\n [\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerSettings.circuitBreakerMinCompListingCount,\n circuitBreakerSettings.circuitBreakerRelativeCeiling,\n circuitBreakerSettings.circuitBreakerRelativeFloor,\n setValue,\n ]\n );\n\n const onOutlierChange = useCallback(\n (input: {\n outlierModeNew?: AutoPricingOutlierMode | null;\n outlierStandardDeviationsNew?: number | null;\n outlierKthLowestLimitNew?: number | null;\n outlierKthLowestLimitRelativeSpacingNew?: number | null;\n outlierKthLowestLimitAbsoluteSpacingNew?: number | null;\n }) => {\n const {\n outlierModeNew,\n outlierStandardDeviationsNew,\n outlierKthLowestLimitNew,\n outlierKthLowestLimitRelativeSpacingNew,\n outlierKthLowestLimitAbsoluteSpacingNew,\n } = input;\n\n // Covers both null and undefined cases\n if (outlierModeNew !== undefined) {\n setValue('outlierMode', posChangedField(outlierModeNew));\n\n switch (outlierModeNew) {\n case AutoPricingOutlierMode.StandardDeviations:\n setValue(\n 'outlierStandardDeviations',\n posField(\n coalesceUndefinedOnly(\n outlierStandardDeviationsNew,\n outlierSettings.outlierStandardDeviations?.value\n ) ?? null,\n outlierStandardDeviationsNew !== undefined ||\n outlierSettings.outlierStandardDeviations?.hasChanged\n )\n );\n setValue('outlierKthLowestLimit', posChangedField(null));\n setValue(\n 'outlierKthLowestLimitRelativeSpacing',\n posChangedField(null)\n );\n setValue(\n 'outlierKthLowestLimitAbsoluteSpacing',\n posChangedField(null)\n );\n break;\n case AutoPricingOutlierMode.KthLowest:\n setValue('outlierStandardDeviations', posChangedField(null));\n setValue(\n 'outlierKthLowestLimit',\n posField(\n coalesceUndefinedOnly(\n outlierKthLowestLimitNew,\n outlierSettings.outlierKthLowestLimit?.value\n ) ?? null,\n outlierKthLowestLimitNew !== undefined ||\n outlierSettings.outlierKthLowestLimit?.hasChanged\n )\n );\n\n setValue(\n 'outlierKthLowestLimitRelativeSpacing',\n posField(\n coalesceUndefinedOnly(\n outlierKthLowestLimitRelativeSpacingNew,\n outlierSettings.outlierKthLowestLimitRelativeSpacing?.value\n ) ?? null,\n outlierKthLowestLimitRelativeSpacingNew !== undefined ||\n outlierSettings.outlierKthLowestLimitRelativeSpacing\n ?.hasChanged\n )\n );\n\n setValue(\n 'outlierKthLowestLimitAbsoluteSpacing',\n posField(\n coalesceUndefinedOnly(\n outlierKthLowestLimitAbsoluteSpacingNew,\n outlierSettings.outlierKthLowestLimitAbsoluteSpacing?.value\n ) ?? null,\n outlierKthLowestLimitAbsoluteSpacingNew !== undefined ||\n outlierSettings.outlierKthLowestLimitAbsoluteSpacing\n ?.hasChanged\n )\n );\n break;\n case AutoPricingOutlierMode.SkipLogic:\n setValue('outlierStandardDeviations', posChangedField(null));\n setValue('outlierKthLowestLimit', posChangedField(null));\n setValue(\n 'outlierKthLowestLimitRelativeSpacing',\n posChangedField(null)\n );\n setValue(\n 'outlierKthLowestLimitAbsoluteSpacing',\n posChangedField(null)\n );\n }\n } else {\n setValue('outlierMode', null);\n setValue('outlierStandardDeviations', null);\n setValue('outlierKthLowestLimit', null);\n setValue('outlierKthLowestLimitRelativeSpacing', null);\n setValue('outlierKthLowestLimitAbsoluteSpacing', null);\n }\n },\n [\n outlierSettings.outlierKthLowestLimit,\n outlierSettings.outlierKthLowestLimitAbsoluteSpacing,\n outlierSettings.outlierKthLowestLimitRelativeSpacing,\n outlierSettings.outlierStandardDeviations,\n setValue,\n ]\n );\n\n const applySectionRowFilterCompListingChanges = useCallback(\n (\n newSectionIdFilter: number[],\n sections: SectionInfo[],\n compListingSelectedSectionSettingsNew?:\n | SelectedSectionSettingsWithOptionals\n | null\n | undefined\n ) => {\n if (newSectionIdFilter.length === 0 && sections.length > 0) {\n onCompListingChange({\n compListingSelectedSectionSettingsNew,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n }\n onCompListingChange({\n compListingSelectedSectionSettingsNew,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n });\n },\n [onCompListingChange]\n );\n\n const onCompListingSectionIdFilterChange = useCallback(\n (\n sectionId: number,\n selectedSections: SectionInfo[],\n section?: SectionInfo,\n listing?: Listing\n ) => {\n let newSectionIdFilter =\n compListingSelectedSectionSettings?.value?.sectionIdFilter ?? [];\n\n let newRowIdFilter =\n compListingSelectedSectionSettings?.value?.rowIdFilter ?? [];\n\n let newSectionRowIdFilter =\n compListingSelectedSectionSettings?.value?.sectionRowIdFilter ?? {};\n\n if (newSectionIdFilter.includes(sectionId)) {\n newSectionIdFilter = newSectionIdFilter.filter(\n (id) => id !== sectionId\n );\n\n // Remove all the associated row ids for this section\n const section = selectedSections.find((s) => s.id === sectionId);\n if (section) {\n const rowIds = section.rows.map((r) => r.id);\n newRowIdFilter = newRowIdFilter.filter((id) => !rowIds.includes(id));\n }\n\n // Remove the sectionRow mapping so we don't display it in pills\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [sectionId]: omitted, ...updatedSectionRowIdFilter } =\n compListingSelectedSectionSettings?.value?.sectionRowIdFilter ?? {};\n\n newSectionRowIdFilter = updatedSectionRowIdFilter;\n } else {\n newSectionIdFilter.push(sectionId);\n\n // If a section is present, add all the rows associated with the newly selected section\n if (\n hasDefaultFilterRowsFeature &&\n listing &&\n section &&\n listing.seating?.row\n ) {\n const { seating: listingSeating } = listing;\n const listingRow = listingSeating.row!;\n\n const matchingRow = section.rows.find(\n ({ id, name }) =>\n id === listingSeating.rowId ||\n name?.toLowerCase() === listingRow.toLowerCase()\n );\n\n if (matchingRow) {\n // Remove all the row filters associated with the section id\n const sectionRowIds = section.rows.map((r) => r.id);\n newRowIdFilter = [\n ...newRowIdFilter.filter(\n (rowId) => !sectionRowIds.includes(rowId)\n ),\n ];\n\n // Exclude all rows from section if the matching row has no ordinal\n if (matchingRow.ordinal == null) {\n newSectionRowIdFilter[section.id] = matchingRow.id.toString();\n return;\n }\n\n // Push all the row ids with an ordinal less than or equal to the matching row\n section.rows.forEach((row) => {\n if (row.ordinal == null || matchingRow.ordinal == null) return;\n if (row.ordinal <= matchingRow.ordinal) {\n newRowIdFilter.push(row.id);\n }\n });\n\n // Only store the highest ordinal row id to display in the pill\n newSectionRowIdFilter[section.id] = matchingRow.id.toString();\n }\n } else if (section) {\n // If listing or seating info is not present, add all the section rows as a filter\n const newRowIds = section.rows.map((r) => r.id);\n newRowIds.forEach((newRowId) => {\n if (!newRowIdFilter.includes(newRowId)) {\n newRowIdFilter.push(newRowId);\n }\n });\n }\n }\n\n const compListingSelectedSectionSettingsNew = {\n sectionIdFilter: newSectionIdFilter,\n rowIdFilter: newRowIdFilter,\n sectionRowIdFilter: newSectionRowIdFilter,\n };\n\n applySectionRowFilterCompListingChanges(\n newSectionIdFilter,\n selectedSections,\n compListingSelectedSectionSettingsNew\n );\n },\n [\n applySectionRowFilterCompListingChanges,\n compListingSelectedSectionSettings,\n hasDefaultFilterRowsFeature,\n ]\n );\n\n const onCompListingSectionZoneChange = useCallback(\n (sections: SectionInfo[], flipOnSameSections = true) => {\n let newSectionIdFilter =\n compListingSelectedSectionSettings?.value?.sectionIdFilter ?? [];\n\n let newRowIdFilter =\n compListingSelectedSectionSettings?.value?.rowIdFilter ?? [];\n\n const newSectionRowIdFilter =\n compListingSelectedSectionSettings?.value?.sectionRowIdFilter ?? {};\n\n // If every section passed in already exists in prevSections then we should remove them entirely\n const completelyOverlap = sections.every((section) =>\n newSectionIdFilter.includes(section.id)\n );\n\n if (completelyOverlap && flipOnSameSections) {\n const sectionIdsToRemove = new Set(\n sections.map((section) => section.id)\n );\n\n newSectionIdFilter = newSectionIdFilter.filter(\n (id) => !sectionIdsToRemove.has(id)\n );\n\n // Remove all associated rows as well\n const rowIdsToRemove = sections\n .map((section) => section.rows.map((r) => r.id))\n .flat();\n\n const rowIdsToRemoveSet = new Set(rowIdsToRemove);\n\n newRowIdFilter = newRowIdFilter.filter(\n (rowId) => !rowIdsToRemoveSet.has(rowId)\n );\n\n // Update sectionRowIdFilters to remove the sections that have been removed\n sections.forEach((section) => {\n if (section.id in newSectionRowIdFilter) {\n delete newSectionRowIdFilter[section.id];\n }\n });\n } else {\n // Upsert of the new sections\n sections.forEach((section) => {\n if (section.id in newSectionRowIdFilter) {\n return;\n }\n\n newSectionIdFilter.push(section.id);\n if (hasDefaultFilterRowsFeature && listing && listing.seating?.row) {\n const { seating: listingSeating } = listing;\n const listingRow = listingSeating.row!;\n\n const matchingRow = section.rows.find(\n ({ id, name }) =>\n id === listingSeating.rowId ||\n name?.toLowerCase() === listingRow.toLowerCase()\n );\n\n if (matchingRow) {\n // Remove all the row filters associated with the section id\n const sectionRowIds = section.rows.map((r) => r.id);\n newRowIdFilter = [\n ...newRowIdFilter.filter(\n (rowId) => !sectionRowIds.includes(rowId)\n ),\n ];\n\n // Exclude all rows from section if the matching row has no ordinal\n if (matchingRow.ordinal == null) {\n newSectionRowIdFilter[section.id] = matchingRow.id.toString();\n return;\n }\n\n // Push all the row ids with an ordinal less than or equal to the matching row\n section.rows.forEach((row) => {\n if (row.ordinal == null || matchingRow.ordinal == null) return;\n if (row.ordinal <= matchingRow.ordinal) {\n newRowIdFilter.push(row.id);\n }\n });\n\n // Only store the highest ordinal row id to display in the pill\n newSectionRowIdFilter[section.id] = matchingRow.id.toString();\n }\n } else {\n // If listing or seating info is not present, add all the section rows as a filter\n const newRowIds = section.rows.map((r) => r.id);\n newRowIds.forEach((newRowId) => {\n if (!newRowIdFilter.includes(newRowId)) {\n newRowIdFilter.push(newRowId);\n }\n });\n }\n });\n }\n\n const compListingSelectedSectionSettingsNew = {\n sectionIdFilter: newSectionIdFilter,\n rowIdFilter: newRowIdFilter,\n sectionRowIdFilter: newSectionRowIdFilter,\n };\n\n applySectionRowFilterCompListingChanges(\n newSectionIdFilter,\n sections,\n compListingSelectedSectionSettingsNew\n );\n },\n [\n applySectionRowFilterCompListingChanges,\n compListingSelectedSectionSettings,\n hasDefaultFilterRowsFeature,\n listing,\n ]\n );\n\n const onCompListingModeChange = useCallback(\n (mode: AutoPricingCompListingMode | null) => {\n if (!mode) {\n onCompListingChange({\n compListingModeNew: null,\n compListingFloorNew: null,\n compListingCeilingNew: null,\n });\n return;\n }\n\n onCompListingChange({\n compListingModeNew: mode,\n // Reset flag on mode change\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n\n if (mode === AutoPricingCompListingMode.ParentListing) {\n onUndercutChange(AutoPricingUndercutMode.Simple);\n }\n },\n [onCompListingChange, onUndercutChange]\n );\n\n const onUpdateNetProceedsFloorAdjustment = useCallback(\n (input: {\n isRelative?: boolean;\n adjustmentAmount?: number | null;\n adjustmentType?: PricingFloorCeilingAdjustmentType;\n }) => {\n if (isEmpty(input)) {\n setValue('netProceedsFloorAdjustmentAmount', null);\n setValue('netProceedsFloorAdjustmentRelative', false);\n setValue('netProceedsFloorAdjustmentType', null);\n }\n const { isRelative, adjustmentAmount, adjustmentType } = input;\n if (isRelative !== undefined) {\n setValue('netProceedsFloorAdjustmentRelative', isRelative);\n }\n if (adjustmentAmount !== undefined) {\n setValue('netProceedsFloorAdjustmentAmount', adjustmentAmount);\n }\n if (adjustmentType !== undefined) {\n setValue('netProceedsFloorAdjustmentType', adjustmentType);\n }\n },\n [setValue]\n );\n\n return {\n uiCurrency,\n autoPricingEnabled,\n event,\n\n ...circuitBreakerSettings,\n ...compListingSettings,\n ...undercutSettings,\n ...outlierSettings,\n\n netProceedsFloor,\n netProceedsCeiling,\n netProceedsFloorAdjustmentAmount,\n netProceedsFloorAdjustmentRelative,\n netProceedsFloorAdjustmentType,\n includeExistingSelectedSections,\n\n onUndercutChange,\n onCompListingChange,\n onCircuitBreakerChange,\n onOutlierChange,\n onCompListingSectionIdFilterChange,\n onCompListingSectionZoneChange,\n onCompListingModeChange,\n onUpdateNetProceedsFloorAdjustment,\n };\n};\n","import clsx from 'clsx';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { Stack } from 'src/core/ui';\nimport { ReloadIcon, WarningOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './AutoPricingSettings.css';\n\nconst PricingSettingStatus: React.FC<\n Pick\n> = ({ hasChange, hasConflict, onReset }) => {\n if (!hasChange && !hasConflict) {\n return undefined;\n }\n\n return (\n \n ) : (\n \n )\n }\n textContentId={hasChange ? ContentId.Edited : ContentId.Conflict}\n disabled={!hasChange}\n onClick={hasChange ? onReset : undefined}\n titleContentId={hasChange ? ContentId.Reset : undefined}\n />\n );\n};\n\ntype PricingSettingProps = {\n header: React.ReactNode;\n detail: React.ReactNode;\n status?: React.ReactNode;\n isHeader?: boolean;\n hasConflict?: boolean;\n hasChange?: boolean;\n onReset?: () => void;\n headerStyle?: React.CSSProperties;\n};\n\nexport const PricingSetting: React.FC = ({\n isHeader,\n header,\n detail,\n status,\n hasChange,\n hasConflict,\n onReset,\n headerStyle,\n}) => {\n return (\n \n
    \n {header}\n
    \n
    {detail}
    \n
    \n {status ?? (\n \n )}\n
    \n \n );\n};\n","import React, { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Switch } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posField } from 'src/utils/posFieldUtils';\nimport { ListingDetailsAutoPricingSectionUpdatesV2 } from 'src/WebApiController';\n\nimport {\n AutoPricingSettingsInput,\n PricingSettingsComponent,\n} from '../BulkEditAutoPricingSettingsDialog.types';\nimport { useAutoPricingSettings } from '../useBulkAutoPricingSettings';\nimport { PricingSetting } from './PricingSetting';\n\ntype AutoPricingEnabledSettingProps = {\n origin: Pick;\n};\n\nexport const AutoPricingEnabledSetting: React.FC<\n AutoPricingEnabledSettingProps\n> = ({ origin }) => {\n const { header, settings, hasConflict, hasChange, onReset } =\n useAutoPricingEnabled(origin);\n\n return (\n \n );\n};\n\nexport const useAutoPricingEnabled = (\n origin: Pick\n): PricingSettingsComponent => {\n const { autoPricingEnabled } = useAutoPricingSettings();\n\n const { setValue } =\n useFormContext();\n\n const hasChange = useMemo(\n () => origin.autoPricingEnabled?.value !== autoPricingEnabled?.value,\n [autoPricingEnabled?.value, origin.autoPricingEnabled?.value]\n );\n\n const onReset = useCallback(() => {\n setValue(\n 'autoPricingEnabled',\n posField(origin.autoPricingEnabled.value, false)\n );\n }, [setValue, origin.autoPricingEnabled?.value]);\n\n const onUpdateAutoPricingEnabled = useCallback(\n (isChecked: boolean) => {\n if (isChecked !== autoPricingEnabled?.value) {\n const changed = isChecked !== origin.autoPricingEnabled?.value;\n setValue('autoPricingEnabled', posField(isChecked, changed));\n }\n },\n [autoPricingEnabled?.value, origin.autoPricingEnabled?.value, setValue]\n );\n\n return {\n header: ,\n settings: (\n e.stopPropagation()}\n onCheckedChange={onUpdateAutoPricingEnabled}\n />\n ),\n fromDisplay: origin.autoPricingEnabled?.value + '',\n toDisplay: autoPricingEnabled?.value + '',\n hasConflict: origin.autoPricingEnabled.hasConflict,\n hasChange,\n onReset,\n };\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const Divider = styled.div`\n border-bottom: 1px solid ${(props) => props.theme.colors.borderPrimary};\n width: 100%;\n padding-bottom: ${() => vars.spacing.sm};\n`;\n","import { Content } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { Divider } from '../AutoPricingSettings.styled';\nimport * as styles from './SettingsSubheader.css';\n\ntype PricingSubheaderProps = {\n title: ContentId;\n};\n\nexport const SettingsSubheader: React.FC = ({\n title,\n}) => {\n return (\n \n \n
    \n \n
    \n
    \n );\n};\n","import { useCallback, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack, Switch } from 'src/core/ui';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { useUserHasAutopricingFeature } from 'src/hooks/useUserHasAutopricingFeature';\nimport {\n OUTLIER_MODE_KTH_LOWEST_STRATEGY,\n OutlierModeKthLowestStrategy,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { STANDARD_DEVIATIONS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { posField } from 'src/utils/posFieldUtils';\nimport {\n AutoPricingOutlierMode,\n Feature,\n ListingDetailsAutoPricingSectionUpdatesV2,\n} from 'src/WebApiController';\n\nimport { AutoPricingSettingsInput } from '../../BulkEditAutoPricingSettingsDialog.types';\nimport { useAutoPricingSettings } from '../../useBulkAutoPricingSettings';\nimport { PricingSetting } from '../PricingSetting';\nimport { SettingsSubheader } from '../PricingSubheader';\nimport * as styles from './PricingAdvancedSettings.css';\ntype PricingAdvancedSettingsProps = {\n origin: Pick<\n AutoPricingSettingsInput,\n | 'outlierMode'\n | 'outlierKthLowestLimit'\n | 'outlierStandardDeviations'\n | 'outlierKthLowestLimitRelativeSpacing'\n | 'outlierKthLowestLimitAbsoluteSpacing'\n | 'compListingExcludeDefects'\n | 'compListingExcludeFanInventory'\n | 'circuitBreakerMaxDiscountVelocityPercent'\n | 'circuitBreakerMaxDiscountVelocityTicksInHours'\n >;\n outlierModes: Record;\n outlierModesDisabled: Record;\n};\n\nexport const PricingAdvancedSettings: React.FC<\n PricingAdvancedSettingsProps\n> = ({ origin, outlierModes, outlierModesDisabled }) => {\n const {\n outlierMode,\n outlierKthLowestLimit,\n outlierStandardDeviations,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n onOutlierChange,\n onCircuitBreakerChange,\n onCompListingChange,\n } = useAutoPricingSettings();\n const { setValue } =\n useFormContext();\n\n const hasExcludeFanInventoryFeature = useUserHasAutopricingFeature(\n Feature.ExcludeFanInventory\n );\n const hasBulkEditPricingSettingsUpdateFeature = useUserHasAutopricingFeature(\n Feature.BulkEditPricingSettingsUpdate\n );\n\n const [outlierKthLowestStrategy, setKthLowestOutlierStrategy] = useState<\n OutlierModeKthLowestStrategy | undefined\n >(OutlierModeKthLowestStrategy.Relative);\n\n const outlierModeHasChange = useMemo(\n () => outlierMode?.value !== origin.outlierMode.value,\n [outlierMode?.value, origin.outlierMode.value]\n );\n const onResetOutlierMode = useCallback(() => {\n setValue('outlierMode', posField(origin.outlierMode.value));\n setValue(\n 'outlierStandardDeviations',\n posField(origin.outlierStandardDeviations.value)\n );\n setValue(\n 'outlierKthLowestLimit',\n posField(origin.outlierKthLowestLimit.value)\n );\n setValue(\n 'outlierKthLowestLimitRelativeSpacing',\n posField(origin.outlierKthLowestLimitRelativeSpacing.value)\n );\n setValue(\n 'outlierKthLowestLimitAbsoluteSpacing',\n posField(origin.outlierKthLowestLimitAbsoluteSpacing.value)\n );\n }, [\n origin.outlierKthLowestLimit.value,\n origin.outlierKthLowestLimitAbsoluteSpacing.value,\n origin.outlierKthLowestLimitRelativeSpacing.value,\n origin.outlierMode.value,\n origin.outlierStandardDeviations.value,\n setValue,\n ]);\n\n const standardDeviationsHasChange = useMemo(\n () =>\n origin.outlierStandardDeviations.value !==\n (outlierStandardDeviations?.value ?? null),\n [origin.outlierStandardDeviations?.value, outlierStandardDeviations?.value]\n );\n const onResetStandardDeviations = useCallback(() => {\n setValue('outlierMode', posField(origin.outlierMode.value));\n setValue(\n 'outlierStandardDeviations',\n posField(origin.outlierStandardDeviations.value)\n );\n }, [\n origin.outlierMode.value,\n origin.outlierStandardDeviations.value,\n setValue,\n ]);\n\n const kthLowestOutlierHasChange = useMemo(\n () =>\n origin.outlierKthLowestLimit.value !== outlierKthLowestLimit?.value ||\n origin.outlierKthLowestLimitRelativeSpacing.value !==\n outlierKthLowestLimitRelativeSpacing?.value ||\n origin.outlierKthLowestLimitAbsoluteSpacing.value !==\n outlierKthLowestLimitAbsoluteSpacing?.value,\n [\n origin.outlierKthLowestLimit.value,\n origin.outlierKthLowestLimitAbsoluteSpacing.value,\n origin.outlierKthLowestLimitRelativeSpacing.value,\n outlierKthLowestLimit?.value,\n outlierKthLowestLimitAbsoluteSpacing?.value,\n outlierKthLowestLimitRelativeSpacing?.value,\n ]\n );\n const onResetKthLowestOutlier = useCallback(() => {\n setValue(\n 'outlierKthLowestLimit',\n posField(origin.outlierKthLowestLimit.value)\n );\n setValue(\n 'outlierKthLowestLimitRelativeSpacing',\n posField(origin.outlierKthLowestLimitRelativeSpacing.value)\n );\n setValue(\n 'outlierKthLowestLimitAbsoluteSpacing',\n posField(origin.outlierKthLowestLimitAbsoluteSpacing.value)\n );\n }, [\n origin.outlierKthLowestLimit.value,\n origin.outlierKthLowestLimitAbsoluteSpacing.value,\n origin.outlierKthLowestLimitRelativeSpacing.value,\n setValue,\n ]);\n\n const circuitBreakerHasChange = useMemo(\n () =>\n origin.circuitBreakerMaxDiscountVelocityPercent.value !==\n circuitBreakerMaxDiscountVelocityPercent?.value ||\n origin.circuitBreakerMaxDiscountVelocityTicksInHours.value !==\n circuitBreakerMaxDiscountVelocityTicksInHours?.value,\n [\n circuitBreakerMaxDiscountVelocityPercent?.value,\n circuitBreakerMaxDiscountVelocityTicksInHours?.value,\n origin.circuitBreakerMaxDiscountVelocityPercent.value,\n origin.circuitBreakerMaxDiscountVelocityTicksInHours.value,\n ]\n );\n const onResetCircuitBreaker = useCallback(() => {\n setValue(\n 'circuitBreakerMaxDiscountVelocityPercent',\n posField(origin.circuitBreakerMaxDiscountVelocityPercent.value)\n );\n setValue(\n 'circuitBreakerMaxDiscountVelocityTicksInHours',\n posField(origin.circuitBreakerMaxDiscountVelocityTicksInHours.value)\n );\n }, [\n origin.circuitBreakerMaxDiscountVelocityPercent.value,\n origin.circuitBreakerMaxDiscountVelocityTicksInHours.value,\n setValue,\n ]);\n\n return (\n <>\n \n {hasBulkEditPricingSettingsUpdateFeature && (\n <>\n {hasExcludeFanInventoryFeature && (\n }\n detail={\n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n const compListingExcludeFanInventoryNew = isChecked;\n if (\n compListingExcludeFanInventoryNew !==\n compListingExcludeFanInventory?.value\n ) {\n onCompListingChange({\n compListingExcludeFanInventoryNew,\n });\n }\n }}\n />\n }\n hasChange={\n compListingExcludeFanInventory?.value !==\n origin.compListingExcludeFanInventory.value\n }\n hasConflict={origin.compListingExcludeFanInventory?.hasConflict}\n onReset={() =>\n setValue(\n 'compListingExcludeFanInventory',\n posField(origin.compListingExcludeFanInventory.value)\n )\n }\n />\n )}\n }\n detail={\n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n const compListingExcludeDefectsNew = !isChecked;\n if (\n compListingExcludeDefectsNew !==\n compListingExcludeDefects?.value\n ) {\n onCompListingChange({ compListingExcludeDefectsNew });\n }\n }}\n />\n }\n hasChange={\n compListingExcludeDefects?.value !==\n origin.compListingExcludeDefects.value\n }\n hasConflict={origin.compListingExcludeDefects?.hasConflict}\n onReset={() =>\n setValue(\n 'compListingExcludeDefects',\n posField(origin.compListingExcludeDefects.value)\n )\n }\n />\n \n )}\n\n }\n detail={\n e.stopPropagation()}\n onChange={(v) => {\n onOutlierChange({\n outlierModeNew: v as AutoPricingOutlierMode,\n });\n }}\n style={{ width: '50%' }}\n />\n }\n hasChange={outlierModeHasChange}\n hasConflict={origin.outlierMode?.hasConflict}\n onReset={onResetOutlierMode}\n />\n {outlierMode?.value === AutoPricingOutlierMode.StandardDeviations ? (\n }\n detail={\n e.stopPropagation()}\n onChange={(v) => {\n const value = parseInt(v ?? '');\n if (value != null && !isNaN(value)) {\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.StandardDeviations,\n outlierStandardDeviationsNew: value,\n });\n } else {\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.StandardDeviations,\n outlierStandardDeviationsNew: null,\n });\n }\n }}\n style={{ width: '50%' }}\n />\n }\n hasChange={standardDeviationsHasChange}\n hasConflict={origin.outlierStandardDeviations?.hasConflict}\n onReset={onResetStandardDeviations}\n />\n ) : outlierMode?.value == AutoPricingOutlierMode.KthLowest ? (\n }\n detail={\n \n {\n const v = parseInt(e.target.value);\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: v,\n });\n }}\n />\n \n {outlierKthLowestStrategy ==\n OutlierModeKthLowestStrategy.Relative ? (\n {\n let v = parseInt(e.target.value);\n if (v < 0) {\n v = 0;\n } else if (v > 100) {\n v = 100;\n }\n\n if (!isNaN(v)) {\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: undefined,\n outlierKthLowestLimitAbsoluteSpacingNew: null,\n outlierKthLowestLimitRelativeSpacingNew: v,\n });\n }\n }}\n />\n ) : (\n {\n const v = parseInt(e.target.value);\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: undefined,\n outlierKthLowestLimitAbsoluteSpacingNew: v,\n outlierKthLowestLimitRelativeSpacingNew: null,\n });\n }}\n />\n )}\n {\n if (!value) {\n return;\n }\n\n const strat = value as OutlierModeKthLowestStrategy;\n setKthLowestOutlierStrategy(strat);\n }}\n />\n \n \n }\n hasChange={kthLowestOutlierHasChange}\n hasConflict={\n origin.outlierKthLowestLimitAbsoluteSpacing?.hasConflict ||\n origin.outlierKthLowestLimitRelativeSpacing?.hasConflict\n }\n onReset={onResetKthLowestOutlier}\n />\n ) : null}\n {!hasBulkEditPricingSettingsUpdateFeature && (\n }\n detail={\n \n {\n const v = parseFloat(e.target.value) / 100;\n onCircuitBreakerChange(\n undefined,\n undefined,\n v,\n undefined,\n undefined\n );\n }}\n />\n \n {\n const v = parseInt(e.target.value);\n onCircuitBreakerChange(\n undefined,\n undefined,\n undefined,\n v,\n undefined\n );\n }}\n />\n \n \n }\n hasChange={circuitBreakerHasChange}\n hasConflict={\n origin.circuitBreakerMaxDiscountVelocityPercent?.hasConflict ||\n origin.circuitBreakerMaxDiscountVelocityTicksInHours?.hasConflict\n }\n onReset={onResetCircuitBreaker}\n />\n )}\n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { PricingClient } from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { ErrorTypes, useErrorBoundaryContext } from '../ErrorBoundaryContext';\n\nexport const useGetVenueZoneMapConfigInfo = (\n eventId?: number | null,\n configId?: number | null,\n disabled?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n !disabled &&\n activeAccountWebClientConfig.activeAccountId != null &&\n eventId != null &&\n configId != null;\n\n const venueMapZoneInfoQuery = useQuery({\n queryKey: [\n 'PricingClient.GetVenueMapZoneConfigInfo',\n activeAccountWebClientConfig.activeAccountId,\n eventId,\n disabled,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n const venueMapZoneInfo = await new PricingClient(\n activeAccountWebClientConfig\n ).getVenueMapZoneConfigInfo(eventId!, configId!);\n\n return venueMapZoneInfo;\n },\n\n enabled: shouldQuery,\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('PricingClient.GetVenueMapZoneConfigInfo', error, {\n eventId,\n configId,\n });\n },\n },\n });\n\n return venueMapZoneInfoQuery;\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { PricingClient } from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { ErrorTypes, useErrorBoundaryContext } from '../ErrorBoundaryContext';\n\nexport const useGetVenueZoneMapInfoOverrides = (\n eventId?: number | null,\n configId?: number | null,\n disabled?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n !disabled &&\n activeAccountWebClientConfig.activeAccountId != null &&\n eventId != null &&\n configId != null;\n\n const venueMapZoneInfoOverrideQuery = useQuery({\n queryKey: [\n 'PricingClient.GetVenueMapZoneInfoOverrides',\n activeAccountWebClientConfig.activeAccountId,\n eventId,\n disabled,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n const venueMapZoneInfoOverrides = await new PricingClient(\n activeAccountWebClientConfig\n ).getVenueMapZoneInfoOverrides(eventId!, configId!);\n\n return venueMapZoneInfoOverrides;\n },\n\n enabled: shouldQuery,\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('PricingClient.GetVenueMapZoneInfoOverrides', error, {\n eventId,\n configId,\n });\n },\n },\n });\n\n return venueMapZoneInfoOverrideQuery;\n};\n","import { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ROW_COMP_SETTING_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { ListingDetailsAutoPricingSectionUpdatesV2 } from 'src/WebApiController';\n\nimport * as styles from '../AutoPricingSettings.css';\nimport { PricingSetting } from '../PricingSetting';\n\nexport const RowComp = () => {\n const { watch, setValue } =\n useFormContext();\n const rowCompOffset = watch('rowCompOffset');\n\n return (\n }\n detail={\n \n {Object.entries(ROW_COMP_SETTING_TO_CID).map(\n ([option, contentId]) => {\n return (\n \n \n setValue('rowCompOffset', parseInt(e.target.value))\n }\n className={styles.hiddenRadio}\n />\n \n \n );\n }\n )}\n \n }\n hasChange={rowCompOffset != 0}\n hasConflict={false}\n onReset={() => setValue('rowCompOffset', 0)}\n />\n );\n};\n","import clsx from 'clsx';\nimport { isEqual } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Button } from 'reactstrap';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { FilterPillList } from 'src/components/common/FilterPill';\nimport { EventVenueMap } from 'src/components/Events/VenueMap/EventVenueMap';\nimport { createGetColor } from 'src/components/Listings/InventoryEventPage/utils/colorUtils';\nimport {\n Content,\n getContent,\n useContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useGetVenueZoneMapConfigInfo } from 'src/contexts/EventMapContext/useGetVenueZoneMapConfigInfo';\nimport { useGetVenueZoneMapInfoOverrides } from 'src/contexts/EventMapContext/useGetVenueZoneMapConfigInfoOverrides';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack, Switch, Tooltip, TooltipPopover } from 'src/core/ui';\nimport { PillItem } from 'src/core/ui/PillList/PillItem';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { SectionSelectDialog } from 'src/dialogs/SectionSelectDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useCompQuantitiesFilter } from 'src/hooks/useCompQuantitiesFilter';\nimport { useGetEventAutoPricingSettings } from 'src/hooks/useGetEventAutoPricingSettings';\nimport { useUndercutAmountSettings } from 'src/hooks/useUndercutAmountSettings';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { EditIcon, IconsFill, InfoOutlineIcon } from 'src/svgs/Viagogo';\nimport {\n getUndercutPriceRepresentingMode,\n UNDERCUT_PRICE_MODE_OPTIONS,\n UndercutPriceSettingsMode,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { VENUE_ZONE_CONFIG_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport {\n Feature,\n ListingDetailsAutoPricingSectionUpdatesV2,\n SectionSectionGroup,\n} from 'src/WebApiController';\n\nimport { AutoPricingSettingsInput } from '../../BulkEditAutoPricingSettingsDialog.types';\nimport { useAutoPricingSettings } from '../../useBulkAutoPricingSettings';\nimport * as styles from '../AutoPricingSettings.css';\nimport { PricingSetting } from '../PricingSetting';\nimport { SettingsSubheader } from '../PricingSubheader';\nimport { RowComp } from './RowComp';\n\ntype PricingAgainstProps = {\n origin: Pick<\n AutoPricingSettingsInput,\n | 'compListingMode'\n | 'compListingQuantityScoreAdjustmentEnabled'\n | 'compListingQuantityScoreAdjustmentOverrideJson'\n | 'compListingOnlyForSelectedSectionsEnabled'\n | 'compListingSelectedSectionSettings'\n | 'undercutAbsoluteAmount'\n | 'undercutRelativeAmount'\n >;\n compListingModes: Record;\n compListingModesDisabled: Record;\n canUseZoneMap?: boolean;\n};\n\nexport const PricingAgainst: React.FC = ({\n origin,\n compListingModes,\n compListingModesDisabled,\n canUseZoneMap,\n}) => {\n const {\n uiCurrency,\n compListingMode,\n compListingQuantityScoreAdjustmentOverrideJson,\n compListingSelectedSectionSettings,\n undercutMode,\n undercutRelativeAmount,\n undercutAbsoluteAmount,\n includeExistingSelectedSections,\n onCompListingChange,\n onUndercutChange,\n onCompListingSectionIdFilterChange,\n onCompListingModeChange,\n } = useAutoPricingSettings();\n\n const hasAllowSeatScoreCompListingModeFeature = useUserHasFeature(\n Feature.AllowSeatScoreCompListingMode\n );\n\n const { watch, setValue, formState } =\n useFormContext();\n\n const { event, venueMapInfo } = useEventMapContext();\n const contentContext = useContentContext();\n\n const [overrideLookup, setOverrideLookup] = useState<\n | {\n [key: string]: SectionSectionGroup;\n }\n | null\n | undefined\n >(null);\n\n const [defaultLookup, setDefaultLookup] = useState<\n | {\n [key: string]: SectionSectionGroup;\n }\n | null\n | undefined\n >(null);\n\n const { pricingSettingsQuery } = useGetEventAutoPricingSettings(\n event ?? null,\n false\n );\n\n const venueZoneMapConfigInfoQuery = useGetVenueZoneMapConfigInfo(\n event?.viagId,\n event?.venueCfgId\n );\n\n const venueZoneMapConfigOverrideInfoQuery = useGetVenueZoneMapInfoOverrides(\n event?.viagId,\n event?.venueCfgId\n );\n\n const selectedOverrideId = pricingSettingsQuery.data?.venueZoneOverrideId;\n const defaultConfig =\n pricingSettingsQuery.data?.venueZoneConfigType ??\n venueZoneMapConfigInfoQuery.data?.defaultVenueZoneConfigType;\n\n const venueNameFromQuery = useMemo(() => {\n if (\n selectedOverrideId != null &&\n venueZoneMapConfigOverrideInfoQuery.data &&\n venueZoneMapConfigOverrideInfoQuery.data[selectedOverrideId]?.name != null\n ) {\n return venueZoneMapConfigOverrideInfoQuery.data[selectedOverrideId].name;\n }\n\n if (\n defaultConfig != null &&\n venueZoneMapConfigInfoQuery.data?.venueMapZoneConfigs[defaultConfig]\n ) {\n return getContent(\n VENUE_ZONE_CONFIG_TYPE_TO_CID[defaultConfig],\n contentContext\n );\n }\n }, [\n contentContext,\n defaultConfig,\n selectedOverrideId,\n venueZoneMapConfigInfoQuery.data?.venueMapZoneConfigs,\n venueZoneMapConfigOverrideInfoQuery.data,\n ]);\n\n const currentVenueName = watch('venueZoneMapName');\n\n useEffect(() => {\n if (\n overrideLookup == null &&\n selectedOverrideId != null &&\n venueZoneMapConfigOverrideInfoQuery.data &&\n venueZoneMapConfigOverrideInfoQuery.data[selectedOverrideId] &&\n !venueZoneMapConfigOverrideInfoQuery.isLoading\n ) {\n setOverrideLookup(\n venueZoneMapConfigOverrideInfoQuery.data[selectedOverrideId]\n .sectionSectionGroupLookup\n );\n }\n }, [\n overrideLookup,\n selectedOverrideId,\n venueZoneMapConfigOverrideInfoQuery.data,\n venueZoneMapConfigOverrideInfoQuery.isLoading,\n setValue,\n ]);\n\n useEffect(() => {\n if (\n defaultLookup == null &&\n defaultConfig != null &&\n venueZoneMapConfigInfoQuery.data &&\n !venueZoneMapConfigInfoQuery.isLoading\n ) {\n setDefaultLookup(\n venueZoneMapConfigInfoQuery.data.venueMapZoneConfigs[defaultConfig]\n );\n }\n }, [\n defaultLookup,\n defaultConfig,\n venueZoneMapConfigInfoQuery.data,\n venueZoneMapConfigInfoQuery.isLoading,\n contentContext,\n setValue,\n ]);\n\n useEffect(() => {\n if (venueNameFromQuery && currentVenueName !== venueNameFromQuery) {\n setValue('venueZoneMapName', venueNameFromQuery);\n }\n }, [currentVenueName, venueNameFromQuery, setValue]);\n\n const sectionSectionGroupLookup = useMemo(() => {\n return overrideLookup ?? defaultLookup;\n }, [overrideLookup, defaultLookup]);\n\n const [mapOverlay, setMapOverlay] = useState(true);\n\n const deriveCompsFromVenueZoneConfig = watch(\n 'deriveCompsFromVenueZoneConfig'\n );\n const includeBetterZones = watch('includeBetterZones');\n\n const toggleZoneMap = useCallback(() => {\n setMapOverlay((prev) => !prev);\n }, []);\n\n const viewZoneMapText = useContent(ContentId.ViewZoneMap);\n const hideZoneMapText = useContent(ContentId.HideZoneMap);\n\n const buttonText = useMemo(\n () => (mapOverlay ? viewZoneMapText : hideZoneMapText),\n [hideZoneMapText, mapOverlay, viewZoneMapText]\n );\n\n const sectionSelectDialog = useBasicDialog();\n\n const {\n quantitiesFilterOptions,\n quantitiesFilterValue,\n onUpdateQuantitiesFilter,\n } = useCompQuantitiesFilter(\n compListingQuantityScoreAdjustmentOverrideJson?.value,\n onCompListingChange\n );\n\n const {\n undercutAbsoluteAmountMode,\n setUndercutAbsoluteAmountMode,\n undercutRelativeAmountMode,\n setUndercutRelativeAmountMode,\n } = useUndercutAmountSettings(\n undercutAbsoluteAmount?.value,\n undercutRelativeAmount?.value\n );\n\n const onResetCompListingMode = useCallback(() => {\n onCompListingChange({\n compListingModeNew: origin.compListingMode.value,\n compListingQuantityScoreAdjustmentEnabledNew:\n origin.compListingQuantityScoreAdjustmentEnabled.value,\n compListingOnlyForSelectedSectionsEnabledNew:\n origin.compListingOnlyForSelectedSectionsEnabled?.value,\n compListingSelectedSectionSettingsNew:\n origin.compListingSelectedSectionSettings?.value,\n });\n }, [\n onCompListingChange,\n origin.compListingMode.value,\n origin.compListingOnlyForSelectedSectionsEnabled?.value,\n origin.compListingQuantityScoreAdjustmentEnabled.value,\n origin.compListingSelectedSectionSettings?.value,\n ]);\n\n const selectedSectionsHasChange = useMemo(\n () =>\n !isEqual(\n origin.compListingSelectedSectionSettings?.value,\n compListingSelectedSectionSettings?.value\n ) ||\n (origin.compListingSelectedSectionSettings?.hasConflict &&\n !includeExistingSelectedSections),\n [\n compListingSelectedSectionSettings?.value,\n includeExistingSelectedSections,\n origin.compListingSelectedSectionSettings?.hasConflict,\n origin.compListingSelectedSectionSettings?.value,\n ]\n );\n const onResetSelectedSections = useCallback(() => {\n onCompListingChange({\n compListingOnlyForSelectedSectionsEnabledNew:\n origin.compListingOnlyForSelectedSectionsEnabled?.value,\n compListingSelectedSectionSettingsNew:\n origin.compListingSelectedSectionSettings?.value,\n });\n setValue(\n 'includeExistingSelectedSections',\n formState.defaultValues?.includeExistingSelectedSections ?? null\n );\n }, [\n formState.defaultValues?.includeExistingSelectedSections,\n onCompListingChange,\n origin.compListingOnlyForSelectedSectionsEnabled?.value,\n origin.compListingSelectedSectionSettings?.value,\n setValue,\n ]);\n const onResetZoneMapOption = useCallback(() => {\n onResetSelectedSections();\n\n setValue('deriveCompsFromVenueZoneConfig', false);\n setValue('includeBetterZones', false);\n setValue(\n 'includeExistingSelectedSections',\n formState.defaultValues?.includeExistingSelectedSections ?? null\n );\n }, [\n formState.defaultValues?.includeExistingSelectedSections,\n onResetSelectedSections,\n setValue,\n ]);\n\n const quantitiesFilterHasChange = useMemo(\n () =>\n origin.compListingQuantityScoreAdjustmentOverrideJson?.value !==\n compListingQuantityScoreAdjustmentOverrideJson?.value,\n [\n compListingQuantityScoreAdjustmentOverrideJson?.value,\n origin.compListingQuantityScoreAdjustmentOverrideJson?.value,\n ]\n );\n const onResetQuantitiesFilter = useCallback(\n () =>\n onCompListingChange({\n compListingQuantityScoreAdjustmentOverrideJsonNew:\n origin.compListingQuantityScoreAdjustmentOverrideJson?.value,\n }),\n [\n onCompListingChange,\n origin.compListingQuantityScoreAdjustmentOverrideJson?.value,\n ]\n );\n\n const undercutAmountHasChange = useMemo(\n () =>\n origin.undercutAbsoluteAmount?.value !== undercutAbsoluteAmount?.value ||\n origin.undercutRelativeAmount?.value !== undercutRelativeAmount?.value,\n [\n origin.undercutAbsoluteAmount?.value,\n origin.undercutRelativeAmount?.value,\n undercutAbsoluteAmount?.value,\n undercutRelativeAmount?.value,\n ]\n );\n const onResetUndercutAmount = useCallback(\n () =>\n onUndercutChange(\n undefined,\n origin.undercutAbsoluteAmount?.value,\n origin.undercutRelativeAmount?.value\n ),\n [\n onUndercutChange,\n origin.undercutAbsoluteAmount?.value,\n origin.undercutRelativeAmount?.value,\n ]\n );\n\n const existingSectionsText = useContent(ContentId.ExistingSections);\n const editSections = useContent(ContentId.EditSections);\n\n const selectedSections = useMemo(() => {\n const formSectionFilterIds =\n compListingSelectedSectionSettings?.value?.sectionIdFilter ?? [];\n return (\n venueMapInfo?.sections.filter((section) => {\n return formSectionFilterIds.includes(section.id);\n }) ?? []\n );\n }, [\n compListingSelectedSectionSettings?.value?.sectionIdFilter,\n venueMapInfo?.sections,\n ]);\n\n const rowIdFilters = useMemo(() => {\n return compListingSelectedSectionSettings?.value?.rowIdFilter ?? [];\n }, [compListingSelectedSectionSettings]);\n\n const sectionRowIdFilters = useMemo(() => {\n return compListingSelectedSectionSettings?.value?.sectionRowIdFilter ?? {};\n }, [compListingSelectedSectionSettings]);\n\n const applyCompListingChanges = (\n rowIdFilters: number[],\n sectionRowIdFilters: { [x: string]: string }\n ) => {\n const compListingSelectedSectionSettingsNew = {\n sectionIdFilter:\n compListingSelectedSectionSettings?.value?.sectionIdFilter ?? [],\n rowIdFilter: Array.from(new Set(rowIdFilters)),\n sectionRowIdFilter: sectionRowIdFilters,\n };\n\n onCompListingChange({\n compListingSelectedSectionSettingsNew,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n });\n };\n\n return (\n <>\n \n {hasAllowSeatScoreCompListingModeFeature && (\n }\n detail={\n e.stopPropagation()}\n onChange={onCompListingModeChange}\n style={{ width: '50%' }}\n />\n }\n hasChange={origin.compListingMode.value !== compListingMode?.value}\n hasConflict={origin.compListingMode.hasConflict}\n onReset={onResetCompListingMode}\n />\n )}\n\n {event && (\n <>\n {!deriveCompsFromVenueZoneConfig ? (\n \n \n \n \n {canUseZoneMap ? (\n \n setValue(\n 'deriveCompsFromVenueZoneConfig',\n !deriveCompsFromVenueZoneConfig\n )\n }\n >\n {' '}\n \n ) : (\n \n {' '}\n \n }\n contentVariant=\"dark\"\n >\n \n \n )}\n \n }\n detail={\n \n {event && (\n \n }\n onClick={sectionSelectDialog.launchDialog}\n style={{ padding: 0, textAlign: 'start' }}\n />\n )}\n {origin.compListingSelectedSectionSettings?.hasConflict &&\n includeExistingSelectedSections && (\n \n event &&\n setValue('includeExistingSelectedSections', false)\n }\n disabled={!includeExistingSelectedSections}\n />\n )}\n {event && (\n
    \n \n
    \n )}\n
    \n }\n hasChange={selectedSectionsHasChange}\n hasConflict={\n origin.compListingSelectedSectionSettings?.hasConflict\n }\n onReset={onResetSelectedSections}\n />\n ) : (\n <>\n \n \n \n setValue(\n 'deriveCompsFromVenueZoneConfig',\n !deriveCompsFromVenueZoneConfig\n )\n }\n >\n \n \n \n }\n detail={\n
    \n \n \n {currentVenueName}\n \n \n {buttonText}\n \n
    \n \n
    \n \n
    \n \n \n }\n hasChange={true}\n hasConflict={\n origin.compListingSelectedSectionSettings?.hasConflict\n }\n onReset={onResetZoneMapOption}\n />\n \n \n \n }\n contentVariant=\"dark\"\n >\n \n \n \n }\n detail={\n \n setValue('includeBetterZones', !includeBetterZones)\n }\n onCheckedChange={() =>\n setValue('includeBetterZones', !includeBetterZones)\n }\n />\n }\n hasChange={includeBetterZones ?? false}\n hasConflict={false}\n onReset={() => setValue('includeBetterZones', false)}\n />\n \n \n )}\n \n )}\n\n }\n detail={\n \n
    \n \n
    \n
    \n }\n hasChange={quantitiesFilterHasChange}\n hasConflict={\n origin.compListingQuantityScoreAdjustmentOverrideJson?.hasConflict\n }\n onReset={onResetQuantitiesFilter}\n />\n }\n detail={\n \n {\n if (!value) return;\n\n const mode = value as UndercutPriceSettingsMode;\n setUndercutRelativeAmountMode(mode);\n\n if (undercutRelativeAmount?.value) {\n const curAmountAbs = Math.abs(undercutRelativeAmount.value);\n onUndercutChange(\n undefined,\n undefined,\n getUndercutPriceRepresentingMode(curAmountAbs, mode)\n );\n }\n }}\n />\n\n
    \n \n
    \n\n \n {\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n const relativeValue = Math.min(v, 100) / 100;\n if (\n undercutRelativeAmountMode ===\n UndercutPriceSettingsMode.Premium\n ) {\n onUndercutChange(undefined, undefined, -relativeValue);\n } else {\n onUndercutChange(undefined, undefined, relativeValue);\n }\n } else {\n onUndercutChange(undefined, undefined, null);\n }\n }}\n />\n \n
    \n \n
    \n {\n if (!value) return;\n\n const mode = value as UndercutPriceSettingsMode;\n setUndercutAbsoluteAmountMode(mode);\n\n if (undercutAbsoluteAmount?.value) {\n const curAmountAbs = Math.abs(undercutAbsoluteAmount.value);\n onUndercutChange(\n undefined,\n getUndercutPriceRepresentingMode(curAmountAbs, mode)\n );\n }\n }}\n />\n
    \n \n
    \n \n {\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n if (\n undercutAbsoluteAmountMode ===\n UndercutPriceSettingsMode.Premium\n ) {\n onUndercutChange(undefined, -v);\n } else {\n onUndercutChange(undefined, v);\n }\n } else {\n onUndercutChange(undefined, null);\n }\n }}\n />\n \n
    \n }\n hasChange={undercutAmountHasChange}\n hasConflict={\n origin.undercutAbsoluteAmount?.hasConflict ||\n origin.undercutRelativeAmount?.hasConflict\n }\n onReset={onResetUndercutAmount}\n />\n {\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings?.value,\n sectionIdFilter: selectedSections.map((s) => s.id),\n rowIdFilter:\n compListingSelectedSectionSettings?.value?.rowIdFilter ?? [],\n sectionRowIdFilter:\n compListingSelectedSectionSettings?.value?.sectionRowIdFilter ??\n {},\n };\n onCompListingChange({ compListingSelectedSectionSettingsNew });\n sectionSelectDialog.closeDialog();\n }}\n onClosed={sectionSelectDialog.closeDialog}\n />\n \n );\n};\n","import { isEmpty } from 'lodash-es';\nimport React, {\n forwardRef,\n ReactElement,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui/Stack';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nconst enum RelativeAbsoluteOptions {\n Relative = 'relative',\n Absolute = 'absolute',\n}\n\nconst RelativeAbsoluteGroupOptions = [\n { value: RelativeAbsoluteOptions.Relative, children: '%' },\n { value: RelativeAbsoluteOptions.Absolute, children: '$' },\n];\n\nconst AboveBelowGroupOptions = [\n { value: 'true', children: },\n { value: 'false', children: },\n];\n\ntype FloorAdjustmentInputProps = {\n amount: number | null;\n isRelative?: boolean | null;\n onChange: (value: number | null, isRelative: boolean) => void;\n disabled?: boolean;\n};\n\nexport const FloorAdjustmentInput = forwardRef<\n HTMLInputElement,\n FloorAdjustmentInputProps\n>(function PosCurrencyField(\n { amount, isRelative, onChange, disabled },\n ref\n): ReactElement {\n const [isAbove, setIsAbove] = useState(!!amount && amount > 0);\n\n const onValueChange = useCallback(\n (event: React.ChangeEvent) => {\n const value = parseFloat(event.target.value);\n if (value < 0 || isNaN(value)) {\n onChange(null, !!isRelative);\n return;\n }\n // we can't decrease by 100 or more % because that will result in zero\n if (!isAbove && isRelative && value > 99) {\n return;\n }\n\n const sanitizedValue = isAbove ? value : -value;\n onChange(sanitizedValue, !!isRelative);\n },\n [isAbove, isRelative, onChange]\n );\n\n const onRelativeChange = useCallback(\n (value: string) => {\n if (isEmpty(value)) {\n return;\n }\n const updatedRelative = value === RelativeAbsoluteOptions.Relative;\n onChange(amount, updatedRelative);\n },\n [amount, onChange]\n );\n const onAboveChange = useCallback(\n (value: string) => {\n if (isEmpty(value)) {\n return;\n }\n const updatedIsAbove = value === 'true';\n setIsAbove(updatedIsAbove);\n const sanitizedValue = amount\n ? updatedIsAbove\n ? Math.abs(amount)\n : -Math.abs(amount)\n : null;\n onChange(sanitizedValue, !!isRelative);\n },\n [amount, isRelative, onChange]\n );\n\n const relativeValue = useMemo(() => {\n if (isRelative == null) {\n return undefined;\n }\n return isRelative\n ? RelativeAbsoluteOptions.Relative\n : RelativeAbsoluteOptions.Absolute;\n }, [isRelative]);\n\n return (\n \n \n \n \n \n }\n />\n \n );\n});\n","import { ChangeEvent, useCallback, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { Stack, Switch } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PRICING_FLOOR_CEIL_ADJUSTMENT_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n getAllInPriceFromListPrice,\n getListPriceFromAllinPrice,\n} from 'src/utils/inventoryUtils';\nimport { posChangedField, posField } from 'src/utils/posFieldUtils';\nimport {\n ListingDetailsAutoPricingSectionUpdatesV2,\n Marketplace,\n} from 'src/WebApiController';\n\nimport { AutoPricingSettingsInput } from '../../BulkEditAutoPricingSettingsDialog.types';\nimport { useAutoPricingSettings } from '../../useBulkAutoPricingSettings';\nimport { PricingSetting } from '../PricingSetting';\nimport { SettingsSubheader } from '../PricingSubheader';\nimport { FloorAdjustmentInput } from './FloorAdjustmentInput';\nimport * as styles from './PricingProtection.css';\n\ntype PricingProtectionProps = {\n origin: Pick<\n AutoPricingSettingsInput,\n 'netProceedsFloor' | 'netProceedsCeiling'\n >;\n};\n\nexport const PricingProtection: React.FC = ({\n origin,\n}) => {\n const { loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n const stubHubMkpSettings =\n loginContext?.user?.activeAccount?.marketplaceSettings?.find(\n (m) => m.mkp === Marketplace.StubHub\n );\n\n const uiCurrency = getUiCurrency(\n loginContext?.user?.activeAccount?.currencyCode\n );\n\n const { setValue } =\n useFormContext();\n\n const [isAbsolute, setIsAbsolute] = useState(false);\n\n const {\n netProceedsCeiling,\n netProceedsFloor,\n netProceedsFloorAdjustmentAmount,\n netProceedsFloorAdjustmentRelative,\n netProceedsFloorAdjustmentType,\n onUpdateNetProceedsFloorAdjustment,\n } = useAutoPricingSettings();\n\n const onPriceFloorChange = useCallback(\n (e: ChangeEvent) => {\n const v = parseFloat(e.target.value);\n if (v >= 0 && v < Number.MAX_VALUE) {\n const netProceedsValueNew = getListPriceFromAllinPrice(\n v,\n null,\n stubHubMkpSettings?.sellerFee\n )!;\n setValue('netProceedsFloor', posChangedField(netProceedsValueNew));\n } else {\n setValue('netProceedsFloor', null);\n }\n },\n [setValue, stubHubMkpSettings?.sellerFee]\n );\n\n const onPriceCeilingChange = useCallback(\n (e: ChangeEvent) => {\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n const netProceedsValueNew = getListPriceFromAllinPrice(\n v,\n null,\n stubHubMkpSettings?.sellerFee\n )!;\n setValue('netProceedsCeiling', posChangedField(netProceedsValueNew));\n } else {\n setValue('netProceedsCeiling', null);\n }\n },\n [setValue, stubHubMkpSettings?.sellerFee]\n );\n\n const netProceedsFloorWebsite = useMemo(() => {\n if (netProceedsFloor?.value == null) {\n return '';\n }\n return (\n getAllInPriceFromListPrice(\n netProceedsFloor.value,\n null,\n stubHubMkpSettings?.sellerFee\n ) ?? ''\n );\n }, [netProceedsFloor?.value, stubHubMkpSettings?.sellerFee]);\n\n const netProceedsCeilingWebsite = useMemo(() => {\n if (netProceedsCeiling?.value == null) {\n return '';\n }\n return (\n getAllInPriceFromListPrice(\n netProceedsCeiling.value,\n null,\n stubHubMkpSettings?.sellerFee\n ) ?? ''\n );\n }, [netProceedsCeiling?.value, stubHubMkpSettings?.sellerFee]);\n\n const floorOrCeilingHasChange = useMemo(\n () =>\n origin.netProceedsCeiling?.value !== netProceedsCeiling?.value ||\n origin.netProceedsFloor?.value !== netProceedsFloor?.value,\n [\n netProceedsCeiling?.value,\n netProceedsFloor?.value,\n origin.netProceedsCeiling?.value,\n origin.netProceedsFloor?.value,\n ]\n );\n\n const onResetPricingProtection = useCallback(() => {\n setValue('netProceedsCeiling', posField(origin.netProceedsCeiling?.value));\n setValue('netProceedsFloor', posField(origin.netProceedsFloor?.value));\n }, [\n origin.netProceedsCeiling?.value,\n origin.netProceedsFloor?.value,\n setValue,\n ]);\n\n const onRelativeSwitch = useCallback(\n (checked: boolean) => {\n setIsAbsolute(checked);\n onResetPricingProtection();\n },\n [onResetPricingProtection]\n );\n\n return (\n <>\n \n {!isAbsolute ? (\n }\n detail={\n \n {\n onUpdateNetProceedsFloorAdjustment({\n adjustmentAmount: amount,\n isRelative,\n });\n }}\n />\n\n
    \n \n
    \n\n {\n if (\n newValue != null &&\n newValue != netProceedsFloorAdjustmentType\n ) {\n onUpdateNetProceedsFloorAdjustment({\n adjustmentType: newValue,\n });\n }\n }}\n />\n
    \n }\n hasChange={\n netProceedsFloorAdjustmentAmount != null &&\n netProceedsFloorAdjustmentRelative != null &&\n !!netProceedsFloorAdjustmentType\n }\n onReset={() => onUpdateNetProceedsFloorAdjustment({})}\n />\n ) : (\n }\n detail={\n \n \n \n \n
    \n \n
    \n \n \n \n
    \n }\n hasChange={floorOrCeilingHasChange}\n hasConflict={\n origin.netProceedsFloor?.hasConflict ||\n origin.netProceedsCeiling?.hasConflict\n }\n onReset={onResetPricingProtection}\n />\n )}\n }\n detail={\n \n event.stopPropagation()}\n />\n \n }\n />\n \n );\n};\n","import React, { ComponentProps, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport type ConfirmDialogProps = {\n onOkay?: () => Promise | void;\n headerText: React.ReactNode;\n bodyText: React.ReactNode;\n onCancel?: () => void;\n cancelText?: ContentId;\n okText?: ContentId;\n} & ComponentProps;\n\nexport function ConfirmDialog({\n headerText,\n bodyText,\n onCancel,\n onOkay,\n okText,\n cancelText,\n isOpen,\n ...rest\n}: ConfirmDialogProps) {\n const [isLoading, setIsLoading] = useState(false);\n\n return (\n \n {onCancel && (\n \n )}\n {onOkay && (\n {\n setIsLoading(true);\n await onOkay();\n setIsLoading(false);\n }}\n />\n )}\n \n }\n {...rest}\n isOpen={isOpen}\n onCancel={onCancel}\n >\n \n {bodyText}\n {isLoading && }\n \n \n );\n}\n","import { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\n\nimport { ConfirmDialog, ConfirmDialogProps } from './ConfirmDialogV2';\n\nexport const useConfirmDialog = () => {\n const { openDialog, closeDialog } = useDialog(\n DialogId.Confirm,\n ConfirmDialog\n );\n\n return {\n openConfirmDialog: openDialog,\n closeConfirmDialog: closeDialog,\n };\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { useHasListingPricePermissions } from 'src/modals/ListingDetails/components/useHasListingPricePermissions';\nimport {\n AutoPricingSettingsCollection,\n Listing,\n PricingClient,\n} from 'src/WebApiController';\n\nexport const useAutoPricingStrategies = (\n listing?: Listing | null,\n forBulkEdit?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n\n const { canAutoPrice } = useHasListingPricePermissions(listing, forBulkEdit);\n const queryClient = useQueryClient();\n const queryKey = [\n 'getAutoPricingStrategies',\n activeAccountWebClientConfig.activeAccountId,\n ];\n\n const shouldQuery =\n canAutoPrice && activeAccountWebClientConfig.activeAccountId != null;\n const autoPricingStrategiesQuery = useQuery({\n queryKey,\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n return new PricingClient(\n activeAccountWebClientConfig\n ).getAutoPricingStrategies();\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('PricingClient.getAutoPricingStrategies', error);\n },\n },\n });\n\n const autoPricingStrategiesUpdateMutation = useMutation({\n mutationFn: async ({ input }: { input: AutoPricingSettingsCollection }) => {\n return await new PricingClient(\n activeAccountWebClientConfig\n ).upsertAutoPricingStrategy(input);\n },\n // optimistic ui\n onMutate: ({ input }) => {\n queryClient.cancelQueries({ queryKey });\n\n const prevValue =\n queryClient.getQueryData(queryKey);\n const newValue = [\n ...(prevValue?.filter(\n (c) =>\n c.autoPricingSettingsCollectionId !==\n input.autoPricingSettingsCollectionId\n ) ?? []),\n input,\n ];\n\n queryClient.setQueryData(queryKey, newValue);\n return { prevValue };\n },\n onError: (err: ErrorTypes, { input }, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('PricingClient.upsertAutoPricingStrategy', err, {\n trackErrorData: { input },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n },\n });\n\n const autoPricingStrategiesDeleteMutation = useMutation({\n mutationFn: async ({ collectionId }: { collectionId: number }) => {\n return await new PricingClient(\n activeAccountWebClientConfig\n ).deleteAutoPricingStrategy(collectionId);\n },\n // optimistic ui\n onMutate: ({ collectionId }) => {\n queryClient.cancelQueries({ queryKey });\n\n const prevValue =\n queryClient.getQueryData(queryKey);\n const newValue = prevValue?.filter(\n (c) => c.autoPricingSettingsCollectionId !== collectionId\n );\n\n queryClient.setQueryData(queryKey, newValue);\n return { prevValue };\n },\n onError: (err: ErrorTypes, { collectionId }, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('PricingClient.deleteAutoPricingStrategy', err, {\n trackErrorData: { collectionId },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n },\n });\n\n return {\n autoPricingStrategiesQuery,\n upsertAutoPricingStrategy: autoPricingStrategiesUpdateMutation.mutateAsync,\n deleteAutoPricingStrategy: autoPricingStrategiesDeleteMutation.mutateAsync,\n };\n};\n","import { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { getTextFieldState } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { useCompQuantitiesFilter } from 'src/hooks/useCompQuantitiesFilter';\nimport { useUndercutAmountSettings } from 'src/hooks/useUndercutAmountSettings';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { DetailGroup } from 'src/modals/common';\nimport { useListingAutoPricingSettings } from 'src/modals/ListingDetails/components/useListingAutoPricingSettings';\nimport {\n UNDERCUT_PRICE_MODE_OPTIONS,\n UndercutPriceSettingsMode,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n AutoPricingUndercutMode,\n Feature,\n Listing,\n ListingDetailsUpdateInput,\n} from 'src/WebApiController';\n\nimport { AutoPricingCompQuantitiesSelector } from '../AutoPricingCompQuantitiesSelector/AutoPricingCompQuantitiesSelector';\nimport { AutoPricingSectionRowIdFilter } from '../components/AutoPricingSectionRowIdFilter';\nimport * as styles from './SimplifiedAutopricingSection.css';\n\ntype SimplifiedAutopricingGuidedPriceProps = {\n listing?: Listing | null;\n listingHasParent?: boolean;\n disabled?: boolean;\n isMarketListingsView?: boolean;\n};\n\n/**\n * @deprecated - Do not use. Cleanup as part of IntelligibleAutoPricingSettings and SimplifiedAutoPricingUiV2 flag cleanup\n */\nexport const SimplifiedAutopricingGuidedPrice = ({\n listing,\n disabled,\n isMarketListingsView,\n}: SimplifiedAutopricingGuidedPriceProps) => {\n const { clearErrors, formState } =\n useFormContext();\n\n const {\n canAutoPrice,\n uiCurrency,\n eventPricingSettings,\n accountPricingSettings,\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n onUndercutChange,\n skipUndercut,\n compListingQuantityScoreAdjustmentOverrideJson,\n onCompListingChange,\n } = useListingAutoPricingSettings(listing);\n\n const hasIntelligibleAutoPricingSettingsFeature = useUserHasFeature(\n Feature.IntelligibleAutoPricingSettings\n );\n\n const {\n quantitiesFilterOptions,\n quantitiesFilterValue,\n onUpdateQuantitiesFilter,\n } = useCompQuantitiesFilter(\n compListingQuantityScoreAdjustmentOverrideJson,\n onCompListingChange\n );\n\n const autopricingSettingsAvailable = canAutoPrice || isMarketListingsView;\n\n const parsedQuantityOverridesJson = JSON.parse(\n compListingQuantityScoreAdjustmentOverrideJson || 'null'\n );\n\n const quantityFilterValue = parsedQuantityOverridesJson?.quantityFilter;\n\n const { undercutAbsoluteAmountMode, setUndercutAbsoluteAmountMode } =\n useUndercutAmountSettings(undercutAbsoluteAmount, undercutRelativeAmount);\n\n const isDealScoreMode =\n (undercutMode ??\n eventPricingSettings?.undercutMode ??\n accountPricingSettings?.undercutMode) === AutoPricingUndercutMode.Deal;\n const undercutAbsoluteAmountError =\n formState.errors.undercutAbsoluteAmount?.message;\n\n return (\n <>\n {isDealScoreMode && (\n
    \n \n
    \n )}\n\n \n {canAutoPrice && (\n \n {\n if (!value) return;\n\n const mode = value as UndercutPriceSettingsMode;\n setUndercutAbsoluteAmountMode(mode);\n\n if (undercutAbsoluteAmount) {\n const curAmountAbs = Math.abs(undercutAbsoluteAmount);\n onUndercutChange(\n undefined,\n mode == UndercutPriceSettingsMode.Premium\n ? -curAmountAbs\n : curAmountAbs\n );\n }\n }}\n />\n
    \n \n
    \n \n {\n clearErrors('undercutAbsoluteAmount');\n clearErrors('undercutRelativeAmount');\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n if (\n undercutAbsoluteAmountMode ===\n UndercutPriceSettingsMode.Premium\n ) {\n onUndercutChange(undefined, -v);\n } else {\n onUndercutChange(undefined, v);\n }\n } else {\n onUndercutChange(undefined, null);\n }\n }}\n />\n \n
    \n )}\n\n {autopricingSettingsAvailable && listing && (\n \n {hasIntelligibleAutoPricingSettingsFeature ? (\n <>\n
    \n \n
    \n\n \n \n ) : (\n <>\n
    \n \n
    \n\n \n \n )}\n\n \n
    \n )}\n
    \n \n );\n};\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { vars } from 'src/core/themes';\nimport {\n AutoPricingSettingsCollectionInput,\n AutoPricingStrategyDialog,\n AutoPricingStrategyDialogProps,\n} from 'src/dialogs/AutoPricingStrategyDialog';\nimport { useAutoPricingStrategies } from 'src/hooks/api/useAutoPricingStrategies';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { DetailGroup, DetailSection, SectionContent } from 'src/modals/common';\nimport { EditIcon, IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n AutoPricingSettingsCollection,\n Listing,\n ListingDetailsUpdateInput,\n} from 'src/WebApiController';\n\nimport { useHasListingPricePermissions } from '../useHasListingPricePermissions';\nimport { useListingAutoPricingSettings } from '../useListingAutoPricingSettings';\n\nexport const AutoPricingStrategySection = ({\n listing,\n disabled,\n isBulkEdit,\n listingHasParent,\n isMarketListingsView = false,\n}: {\n listing?: Listing | null;\n disabled?: boolean;\n isBulkEdit?: boolean;\n listingHasParent?: boolean;\n isMarketListingsView?: boolean;\n}) => {\n const {\n openDialog: openAutoPricingStrategyDialog,\n closeDialog: closeAutoPricingStrategyDialog,\n } = useDialog(\n DialogId.AutoPricingStrategy,\n AutoPricingStrategyDialog\n );\n const { canAutoPrice } = useHasListingPricePermissions(listing, isBulkEdit);\n\n const isMobile = useMatchMedia('mobile');\n\n const { setValue } = useFormContext();\n const { autoPricingStrategiesQuery } = useAutoPricingStrategies(\n listing,\n isBulkEdit\n );\n\n const [selectedAutoPricingStrategyId, setSelectedAutoPricingStrategyId] =\n useState(null);\n\n const keyOptionsContent = useMemo(() => {\n return (\n autoPricingStrategiesQuery.data?.reduce(\n (re, r) => {\n re[r.autoPricingSettingsCollectionId?.toString() ?? ''] =\n r.strategyName;\n return re;\n },\n {} as Record\n ) ?? {}\n );\n }, [autoPricingStrategiesQuery.data]);\n\n useEffect(() => {\n const autoPricingStrategy = autoPricingStrategiesQuery.data?.find(\n (r) => r.autoPricingSettingsCollectionId === selectedAutoPricingStrategyId\n );\n\n if (selectedAutoPricingStrategyId) {\n if (!autoPricingStrategy) {\n // On strategy delete, reset the form\n setSelectedAutoPricingStrategyId(null);\n } else {\n // on strategy change, apply the settings to the form\n applyAutoPricingStrategy(autoPricingStrategy);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [autoPricingStrategiesQuery.data]);\n\n const {\n autoPricingEnabled,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingQuantityScoreAdjustmentEnabled,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n\n onUndercutChange,\n onCompListingChange,\n onCircuitBreakerChange,\n onOutlierChange,\n } = useListingAutoPricingSettings(listing, isBulkEdit);\n\n const applyAutoPricingStrategy = useCallback(\n (autoPricingStrategy: AutoPricingSettingsCollection) => {\n // Apply the settings to the form\n setValue('autoPricingEnabled', true);\n setValue('skipAutoPricing', false);\n setValue('skipAdvancePricing', false);\n setValue('skipCompListing', false);\n setValue('skipUndercut', false);\n\n onUndercutChange(\n autoPricingStrategy.undercutMode,\n autoPricingStrategy.undercutAbsoluteAmount,\n autoPricingStrategy.undercutRelativeAmount\n );\n onCompListingChange({\n compListingModeNew: autoPricingStrategy.compListingMode,\n compListingFloorNew: autoPricingStrategy.compListingFloor,\n compListingCeilingNew: autoPricingStrategy.compListingCeiling,\n compListingOnlyForSameZoneEnabledNew:\n autoPricingStrategy.compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabledNew:\n autoPricingStrategy.compListingOnlyForSelectedSectionsEnabled,\n compListingQuantityScoreAdjustmentEnabledNew:\n autoPricingStrategy.compListingQuantityScoreAdjustmentEnabled,\n compListingExcludeFanInventoryNew:\n autoPricingStrategy.compListingExcludeFanInventory,\n });\n onCircuitBreakerChange(\n autoPricingStrategy.circuitBreakerRelativeCeiling,\n autoPricingStrategy.circuitBreakerRelativeFloor,\n autoPricingStrategy.circuitBreakerMaxDiscountVelocityPercent,\n autoPricingStrategy.circuitBreakerMaxDiscountVelocityTicksInHours,\n autoPricingStrategy.circuitBreakerMinCompListingCount\n );\n onOutlierChange({\n outlierModeNew: autoPricingStrategy.outlierMode,\n outlierStandardDeviationsNew:\n autoPricingStrategy.outlierStandardDeviations,\n outlierKthLowestLimitNew: autoPricingStrategy.outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacingNew:\n autoPricingStrategy.outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacingNew:\n autoPricingStrategy.outlierKthLowestLimitAbsoluteSpacing,\n });\n\n setSelectedAutoPricingStrategyId(\n autoPricingStrategy.autoPricingSettingsCollectionId\n );\n },\n [\n onCircuitBreakerChange,\n onCompListingChange,\n onOutlierChange,\n onUndercutChange,\n setValue,\n ]\n );\n\n const onAutoPricingStrategyChange = useCallback(\n (value: string) => {\n if (!value) return;\n\n const autoPricingStrategy = autoPricingStrategiesQuery.data?.find(\n (r) => r.autoPricingSettingsCollectionId === parseInt(value, 10)\n );\n if (!autoPricingStrategy) {\n return;\n }\n\n applyAutoPricingStrategy(autoPricingStrategy);\n },\n [applyAutoPricingStrategy, autoPricingStrategiesQuery.data]\n );\n\n const currentValueEqualsSelectedStrategy = useMemo(() => {\n const autoPricingStrategy = autoPricingStrategiesQuery.data?.find(\n (r) => r.autoPricingSettingsCollectionId === selectedAutoPricingStrategyId\n );\n\n if (!autoPricingStrategy) return true;\n\n return (\n autoPricingEnabled === true &&\n autoPricingStrategy &&\n (autoPricingStrategy.undercutMode == null ||\n autoPricingStrategy.undercutMode === undercutMode) &&\n (autoPricingStrategy.undercutAbsoluteAmount == null ||\n autoPricingStrategy.undercutAbsoluteAmount ===\n undercutAbsoluteAmount) &&\n (autoPricingStrategy.undercutRelativeAmount == null ||\n autoPricingStrategy.undercutRelativeAmount ===\n undercutRelativeAmount) &&\n (autoPricingStrategy.compListingMode == null ||\n autoPricingStrategy.compListingMode === compListingMode) &&\n (autoPricingStrategy.compListingFloor == null ||\n autoPricingStrategy.compListingFloor === compListingFloor) &&\n (autoPricingStrategy.compListingCeiling == null ||\n autoPricingStrategy.compListingCeiling === compListingCeiling) &&\n (autoPricingStrategy.compListingQuantityScoreAdjustmentEnabled == null ||\n autoPricingStrategy.compListingQuantityScoreAdjustmentEnabled ===\n compListingQuantityScoreAdjustmentEnabled) &&\n (autoPricingStrategy.compListingOnlyForSameZoneEnabled == null ||\n autoPricingStrategy.compListingOnlyForSameZoneEnabled ===\n compListingOnlyForSameZoneEnabled) &&\n (autoPricingStrategy.compListingOnlyForSelectedSectionsEnabled == null ||\n autoPricingStrategy.compListingOnlyForSelectedSectionsEnabled ===\n compListingOnlyForSelectedSectionsEnabled) &&\n (autoPricingStrategy.compListingExcludeFanInventory == null ||\n autoPricingStrategy.compListingExcludeFanInventory ===\n compListingExcludeFanInventory) &&\n (autoPricingStrategy.circuitBreakerRelativeCeiling == null ||\n autoPricingStrategy.circuitBreakerRelativeCeiling ===\n circuitBreakerRelativeCeiling) &&\n (autoPricingStrategy.circuitBreakerRelativeFloor == null ||\n autoPricingStrategy.circuitBreakerRelativeFloor ===\n circuitBreakerRelativeFloor) &&\n (autoPricingStrategy.circuitBreakerMaxDiscountVelocityPercent == null ||\n autoPricingStrategy.circuitBreakerMaxDiscountVelocityPercent ===\n circuitBreakerMaxDiscountVelocityPercent) &&\n (autoPricingStrategy.circuitBreakerMaxDiscountVelocityTicksInHours ===\n null ||\n autoPricingStrategy.circuitBreakerMaxDiscountVelocityTicksInHours ===\n circuitBreakerMaxDiscountVelocityTicksInHours) &&\n (autoPricingStrategy.circuitBreakerMinCompListingCount == null ||\n autoPricingStrategy.circuitBreakerMinCompListingCount ===\n circuitBreakerMinCompListingCount) &&\n (autoPricingStrategy.outlierMode == null ||\n autoPricingStrategy.outlierMode === outlierMode) &&\n (autoPricingStrategy.outlierStandardDeviations == null ||\n autoPricingStrategy.outlierStandardDeviations ===\n outlierStandardDeviations) &&\n (autoPricingStrategy.outlierKthLowestLimit == null ||\n autoPricingStrategy.outlierKthLowestLimit === outlierKthLowestLimit) &&\n (autoPricingStrategy.outlierKthLowestLimitRelativeSpacing == null ||\n autoPricingStrategy.outlierKthLowestLimitRelativeSpacing ===\n outlierKthLowestLimitRelativeSpacing) &&\n (autoPricingStrategy.outlierKthLowestLimitAbsoluteSpacing == null ||\n autoPricingStrategy.outlierKthLowestLimitAbsoluteSpacing ===\n outlierKthLowestLimitAbsoluteSpacing)\n );\n }, [\n autoPricingEnabled,\n autoPricingStrategiesQuery.data,\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n compListingCeiling,\n compListingFloor,\n compListingMode,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingQuantityScoreAdjustmentEnabled,\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n selectedAutoPricingStrategyId,\n undercutAbsoluteAmount,\n undercutMode,\n undercutRelativeAmount,\n ]);\n\n const isStrategyApplied =\n currentValueEqualsSelectedStrategy && selectedAutoPricingStrategyId;\n\n const defaultValuesForStrategy = useMemo(() => {\n const autoPricingStrategy = isStrategyApplied\n ? autoPricingStrategiesQuery.data?.find(\n (r) =>\n r.autoPricingSettingsCollectionId === selectedAutoPricingStrategyId\n )\n : undefined;\n\n return {\n autoPricingSettingsCollectionId:\n autoPricingStrategy?.autoPricingSettingsCollectionId,\n strategyName: autoPricingStrategy?.strategyName,\n\n skipAutoPricing: false,\n skipAdvancePricing: false,\n skipCompListing: false,\n skipUndercut: false,\n\n autoPricingEnabled,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingQuantityScoreAdjustmentEnabled,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n } as AutoPricingSettingsCollectionInput;\n }, [\n autoPricingEnabled,\n autoPricingStrategiesQuery.data,\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n compListingCeiling,\n compListingFloor,\n compListingMode,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingQuantityScoreAdjustmentEnabled,\n isStrategyApplied,\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n selectedAutoPricingStrategyId,\n undercutAbsoluteAmount,\n undercutMode,\n undercutRelativeAmount,\n ]);\n\n if (!canAutoPrice && !isMarketListingsView) {\n return null;\n }\n\n const sectionContent = (\n \n \n e.stopPropagation()}\n />\n \n \n \n ) : (\n \n )\n }\n textContentId={\n isStrategyApplied\n ? isMarketListingsView\n ? ContentId.Edit\n : ContentId.EditPricingStrategy\n : ContentId.CreatePricingStrategy\n }\n onClick={() =>\n openAutoPricingStrategyDialog({\n defaultValues: defaultValuesForStrategy,\n listing: listing!,\n isLoading: autoPricingStrategiesQuery.isLoading,\n onClosed: closeAutoPricingStrategyDialog,\n onStrategyUpdated: (strategyId: number) => {\n if (strategyId !== selectedAutoPricingStrategyId) {\n // An insert\n setSelectedAutoPricingStrategyId(strategyId);\n onAutoPricingStrategyChange(strategyId.toString());\n }\n closeAutoPricingStrategyDialog();\n },\n isBulkEdit,\n listingHasParent,\n disabled,\n })\n }\n disabled={disabled}\n style={{ padding: 0, textAlign: 'start' }}\n />\n \n \n );\n\n return (\n <>\n {isMarketListingsView ? (\n sectionContent\n ) : (\n }>\n {sectionContent}\n \n )}\n \n );\n};\n","import { useCallback, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useEventHubContext } from 'src/contexts/EventHubContext';\nimport { Switch } from 'src/core/ui';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { AutoPricingStrategySection } from 'src/modals/ListingDetails/components/PricingSection/AutoPricingStrategySection';\nimport { useHasListingPricePermissions } from 'src/modals/ListingDetails/components/useHasListingPricePermissions';\nimport { useListingAutoPricingSettings } from 'src/modals/ListingDetails/components/useListingAutoPricingSettings';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n Feature,\n Listing,\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingDetailsAutoPricingSectionUpdates,\n ListingDetailsUpdateInput,\n} from 'src/WebApiController';\n\nimport { SimplifiedAutopricingGuidedPrice } from './SimplifiedAutopricingGuidedPrice';\n\ntype SimplifiedAutopricingSectionProps = {\n listing: Listing | undefined;\n};\n\n/**\n * @deprecated - Use SimplifiedAutopricingSectionV2 instead\n */\nexport const SimplifiedAutopricingSection = ({\n listing,\n}: SimplifiedAutopricingSectionProps) => {\n // Hooks\n const [isSubmitting, setIsSubmitting] = useState(false);\n const { showErrorDialog } = useErrorBoundaryContext();\n const { canSetPrice, canAutoPrice } = useHasListingPricePermissions(listing);\n\n const { activeAccountWebClientConfig } = useAppContext();\n\n // React-hook-form\n const { setValue, getValues, reset } =\n useFormContext();\n\n const { hasChanges, autoPricingEnabled } =\n useListingAutoPricingSettings(listing);\n\n // Mutations\n const {\n updateItemInEvent,\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { onUpdateListing } = useEventHubContext();\n\n const hasSectionalLoadDataFeature = useUserHasFeature(\n Feature.ListingLoadBySection\n );\n\n const submitPricingSettingsChange = useCallback(() => {\n setIsSubmitting(true);\n const listForm = getValues();\n\n if (!listing) {\n return;\n }\n\n tryInvokeApi(\n async () => {\n const client = new ListingClient(activeAccountWebClientConfig);\n\n const input: ListingDetailsAutoPricingSectionUpdates = {\n ...listForm,\n id: listing.id,\n rowVersion: null,\n autoPriceFrequency: null,\n compListingQuantityFilters: null,\n compListingQuantityScoreAdjustmentOverrides: null,\n scoreModel: null,\n autoPricingDefaultQuantityFiltersJson: null,\n venueZoneOverrideId: null,\n venueZoneConfigType: null,\n };\n await client.updateListingAutoPricingSection(input);\n\n // Refersh listing\n const updated = await client.getListingByListingId(\n listing.id,\n hasSectionalLoadDataFeature ? (listing as ListingDetails) : undefined,\n hasSectionalLoadDataFeature\n ? [\n ListingDetailDataField.Pricing, // To refresh pricing related listing fields, i.e. auto pricing enabled\n ListingDetailDataField.AutoPricing,\n ]\n : null\n );\n if (updated) {\n updateItemInEvent(updated, ActionOutboxEntityType.Listing);\n onUpdateListing(updated.id);\n }\n },\n (error) => {\n showErrorDialog(\n 'ListingClient.updateListingAutoPricingSection',\n error,\n {\n trackErrorData: {\n item1: listing.id,\n item2: listForm,\n },\n }\n );\n },\n () => {\n setIsSubmitting(false);\n reset(listForm);\n }\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n getValues,\n listing,\n activeAccountWebClientConfig,\n refreshExpandedListItems,\n showErrorDialog,\n ]);\n\n return canSetPrice && listing ? (\n \n \n {canAutoPrice && (\n \n \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n setValue('autoPricingEnabled', isChecked);\n }}\n />\n \n \n )}\n\n \n\n {\n submitPricingSettingsChange();\n }}\n textContentId={ContentId.Save}\n disabled={listing == null || isSubmitting || !hasChanges(getValues())}\n />\n \n \n \n ) : null;\n};\n","import { useCallback, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useEventHubContext } from 'src/contexts/EventHubContext';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { vars } from 'src/core/themes';\nimport { Switch, Tooltip } from 'src/core/ui';\nimport { Stack } from 'src/core/ui';\nimport { useCompQuantitiesFilter } from 'src/hooks/useCompQuantitiesFilter';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useListingAutoPricingSettings } from 'src/modals/ListingDetails/components/useListingAutoPricingSettings';\nimport { InfoOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n Feature,\n Listing,\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingDetailsAutoPricingSectionUpdates,\n ListingDetailsUpdateInput,\n} from 'src/WebApiController';\n\nimport { AutoPricingCompQuantitiesSelector } from '../AutoPricingCompQuantitiesSelector/AutoPricingCompQuantitiesSelector';\nimport { AutoPricingSectionRowIdFilter } from '../components/AutoPricingSectionRowIdFilter';\n\ntype SimplifiedAutopricingSectionProps = {\n listing: Listing | undefined;\n};\n\nexport const SimplifiedAutopricingSection = ({\n listing,\n}: SimplifiedAutopricingSectionProps) => {\n // Hooks\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [showSections, setShowSections] = useState(false);\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const { activeAccountWebClientConfig } = useAppContext();\n\n const hasIntelligibleAutoPricingSettingsFeature = useUserHasFeature(\n Feature.IntelligibleAutoPricingSettings\n );\n\n // React-hook-form\n const { setValue, getValues, reset } =\n useFormContext();\n\n const {\n hasChanges,\n autoPricingEnabled,\n canAutoPrice,\n compListingQuantityScoreAdjustmentOverrideJson,\n onCompListingChange,\n } = useListingAutoPricingSettings(listing);\n\n // Mutations\n const {\n updateItemInEvent,\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { onUpdateListing } = useEventHubContext();\n\n const hasSectionalLoadDataFeature = useUserHasFeature(\n Feature.ListingLoadBySection\n );\n\n const submitPricingSettingsChange = useCallback(() => {\n setIsSubmitting(true);\n const listForm = getValues();\n\n if (!listing) {\n return;\n }\n\n tryInvokeApi(\n async () => {\n const client = new ListingClient(activeAccountWebClientConfig);\n\n const input: ListingDetailsAutoPricingSectionUpdates = {\n ...listForm,\n id: listing.id,\n rowVersion: null,\n autoPriceFrequency: null,\n compListingQuantityFilters: null,\n compListingQuantityScoreAdjustmentOverrides: null,\n scoreModel: null,\n autoPricingDefaultQuantityFiltersJson: null,\n venueZoneOverrideId: null,\n venueZoneConfigType: null,\n };\n await client.updateListingAutoPricingSection(input);\n\n // Refersh listing\n const updated = await client.getListingByListingId(\n listing.id,\n hasSectionalLoadDataFeature ? (listing as ListingDetails) : undefined,\n hasSectionalLoadDataFeature\n ? [\n ListingDetailDataField.Pricing, // To refresh pricing related listing fields, i.e. auto pricing enabled\n ListingDetailDataField.AutoPricing,\n ]\n : null\n );\n if (updated) {\n updateItemInEvent(updated, ActionOutboxEntityType.Listing);\n onUpdateListing(updated.id);\n }\n },\n (error) => {\n showErrorDialog(\n 'ListingClient.updateListingAutoPricingSection',\n error,\n {\n trackErrorData: {\n item1: listing.id,\n item2: listForm,\n },\n }\n );\n },\n () => {\n setIsSubmitting(false);\n reset(listForm);\n }\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n getValues,\n listing,\n activeAccountWebClientConfig,\n refreshExpandedListItems,\n showErrorDialog,\n ]);\n\n const {\n quantitiesFilterOptions,\n quantitiesFilterValue,\n onUpdateQuantitiesFilter,\n } = useCompQuantitiesFilter(\n compListingQuantityScoreAdjustmentOverrideJson,\n onCompListingChange\n );\n\n const showSave = listing != null && hasChanges(getValues());\n\n return canAutoPrice && listing ? (\n \n \n \n {hasIntelligibleAutoPricingSettingsFeature ? (\n <>\n \n\n \n \n ) : (\n <>\n \n \n \n )}\n \n \n \n \n \n \n }\n contentVariant=\"dark\"\n >\n \n \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n setShowSections(isChecked);\n }}\n />\n \n \n \n \n \n \n }\n contentVariant=\"dark\"\n >\n \n \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n setValue('autoPricingEnabled', isChecked);\n }}\n />\n \n {showSave && (\n {\n submitPricingSettingsChange();\n }}\n textContentId={ContentId.Save}\n disabled={isSubmitting}\n />\n )}\n \n\n {showSections && (\n \n )}\n \n ) : null;\n};\n","import { cloneElement } from 'react';\nimport { vars } from 'src/core/themes';\nimport { Stack, Tooltip } from 'src/core/ui';\nimport { IconsFill } from 'src/svgs/Viagogo';\nimport { ListingNoteType } from 'src/WebApiController';\n\nexport const ListingNoteBadge = ({\n listingNotes,\n icon,\n type,\n}: {\n listingNotes?: string[];\n icon: JSX.Element;\n type: ListingNoteType;\n}) => {\n const styledIcon = cloneElement(icon, {\n size: vars.iconSize.m,\n fill:\n type === ListingNoteType.Defect\n ? IconsFill.textWarning\n : IconsFill.textPrimary,\n });\n\n const content = {styledIcon};\n\n return listingNotes ? (\n \n \n {listingNotes?.map((note, idx) => {`• ${note}`})}\n \n \n ) : null;\n};\n","import clsx from 'clsx';\nimport { PropsWithChildren } from 'react';\n\nimport * as styles from './DividerLine.css';\n\nexport const DividerLine = ({\n children,\n darkBackground,\n}: PropsWithChildren<{ darkBackground?: boolean }>) => {\n return (\n
    \n \n \n {children}\n
    \n \n \n );\n};\n","import { ReactNode, useMemo } from 'react';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { vars } from 'src/core/themes';\nimport { Stack, Tooltip } from 'src/core/ui';\nimport { InfoOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { formatCurrency, formatPercent } from 'src/utils/numberFormatter';\nimport { ListingPriceCalculation, Seating } from 'src/WebApiController';\n\nimport * as styles from './ComparableListingDisplayTooltip.css';\nimport { DividerLine } from './DividerLine';\n\nexport type ComparableListingDisplayTooltipProps = {\n seating?: Seating;\n price?: ReactNode;\n listingPriceCalc?: ListingPriceCalculation | null;\n};\n\nexport function ComparableListingDisplayTooltip({\n seating,\n price,\n listingPriceCalc,\n}: ComparableListingDisplayTooltipProps) {\n const { getUiCurrency } = useLocalizationContext();\n const { isDarkMode } = useSiteTheme();\n\n const uiCurrency = useMemo(\n () => getUiCurrency(listingPriceCalc?.websitePrice?.currency ?? 'USD'),\n [getUiCurrency, listingPriceCalc?.websitePrice?.currency]\n );\n const pricingAgainst = listingPriceCalc?.compListings?.find(\n (x) => x.listingId === listingPriceCalc?.underCutChosenListingId\n );\n const content = (\n \n \n \n \n );\n\n const hasRelative = Boolean(\n listingPriceCalc?.udrRel || listingPriceCalc?.udrRelPrm\n );\n const hasAbsolute = Boolean(\n listingPriceCalc?.udrAbs || listingPriceCalc?.udrAbsPrm\n );\n\n return (\n \n \n \n \n \n \n {pricingAgainst?.sellerAllInPrice?.disp ?? (\n \n )}\n \n {hasRelative && (\n <>\n -\n\n
    \n {!!listingPriceCalc?.udrRel && (\n \n \n % \n \n {formatPercent(listingPriceCalc.udrRel, 0)}\n \n )}\n {!!listingPriceCalc?.udrRelPrm && (\n \n \n % \n \n {formatPercent(listingPriceCalc.udrRelPrm, 0)}\n \n )}\n
    \n \n )}\n {hasAbsolute && (\n <>\n +\n\n
    \n {!!listingPriceCalc?.udrAbs && (\n \n \n {uiCurrency.sym} \n \n {formatCurrency(\n listingPriceCalc.udrAbs,\n uiCurrency.code,\n uiCurrency.dec\n )}\n \n )}\n {!!listingPriceCalc?.udrAbsPrm && (\n \n \n {uiCurrency.sym} \n \n {formatCurrency(\n listingPriceCalc.udrAbsPrm,\n uiCurrency.code,\n uiCurrency.dec\n )}\n \n )}\n
    \n \n )}\n =\n \n \n {price}\n \n \n \n );\n}\n","import { clsx } from 'clsx';\nimport { ReactNode, useMemo } from 'react';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { ListingNoteBadge } from 'src/components/Listings/ListingNoteBadge/index';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { shared, vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { GenericDisclosuresIcon, InfoOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n Feature,\n ListingNote,\n ListingNoteType,\n ListingPriceCalculation,\n Seating,\n} from 'src/WebApiController';\n\nimport * as styles from './ComparableListingDisplay.css';\nimport { ComparableListingDisplayTooltip } from './ComparableListingDisplayTooltip';\n\nexport type ComparableListingDisplayProps = {\n /**\n * Whether this is the display that represents the current listing.\n */\n listingId: number;\n /**\n * Whether this is the selected listing.\n *\n * This will show an active background state.\n */\n isCurrentListing?: boolean;\n /**\n * Whether this is a listing owned by the current account.\n *\n * This will show a \"Your Listing\" badge.\n */\n isYourListing?: boolean;\n isOutlier?: boolean;\n isAnchor?: boolean;\n isSelectedWithListingGroup?: boolean;\n title?: ReactNode;\n price?: ReactNode;\n validPurchaseQuantities?: number[] | null;\n listingNotes?: ListingNote[];\n seating?: Seating;\n listingPriceCalc?: ListingPriceCalculation | null;\n};\n\nexport function ComparableListingDisplay({\n listingId,\n isCurrentListing = false,\n isYourListing = false,\n isOutlier = false,\n isAnchor = false,\n isSelectedWithListingGroup = false,\n title,\n price,\n validPurchaseQuantities,\n listingNotes,\n seating,\n listingPriceCalc,\n}: ComparableListingDisplayProps) {\n const hasShowIdFeature = useUserHasFeature(Feature.ListingIdForCompListings);\n const hasYourListingInComps = useUserHasFeature(Feature.YourListingsInComps);\n const hasIntelligiblePricePreviewFeature = useUserHasFeature(\n Feature.IntelligiblePricePreview\n );\n const hasListingGroupIntelligiblePricePreviewFeature = useUserHasFeature(\n Feature.IntelligiblePricePreviewForListingGroup\n );\n\n const hasCondensedTabsFeature = useUserHasFeature(\n Feature.CondensedPreviewTabsAndSingleListing\n );\n const hasCompListingDisplayUpdateFeature = useUserHasFeature(\n Feature.CompListingDisplayUpdate\n );\n\n const { isDarkMode } = useSiteTheme();\n\n const shouldGrayOut =\n isOutlier || (!isCurrentListing && isYourListing && hasYourListingInComps);\n\n const displayQuantity = useMemo(() => {\n if (!validPurchaseQuantities) {\n return 0;\n }\n\n return Math.max(...validPurchaseQuantities);\n }, [validPurchaseQuantities]);\n\n const quantitySplits = useMemo(() => {\n if (!validPurchaseQuantities || validPurchaseQuantities.length === 0) {\n return '0';\n }\n\n const splits = [...validPurchaseQuantities]\n .toSorted((a, b) => b - a)\n .filter((q) => q < 10);\n\n const hasSplitsLargerThanTen = validPurchaseQuantities.some((q) => q > 10);\n\n return [...(hasSplitsLargerThanTen ? ['10+'] : []), ...splits].join(', ');\n }, [validPurchaseQuantities]);\n\n const listingNoteDefects = useMemo(() => {\n return listingNotes\n ?.filter(\n (note) =>\n note.type === ListingNoteType.Defect ||\n note.type === ListingNoteType.RestrictionOnUse\n )\n .map((note) => note.listingNoteText);\n }, [listingNotes]);\n\n const listingNotePerks = useMemo(() => {\n return listingNotes\n ?.filter(\n (note) =>\n note.type === ListingNoteType.Perk ||\n note.type === ListingNoteType.Information\n )\n .map((note) => note.listingNoteText);\n }, [listingNotes]);\n\n return (\n \n \n \n \n {title ?? (\n \n )}\n \n \n \n \n \n {displayQuantity}\n \n\n •\n\n \n {quantitySplits}\n \n\n {listingNoteDefects?.length || listingNotePerks?.length ? (\n •\n ) : null}\n\n {listingNoteDefects?.length ? (\n }\n listingNotes={listingNoteDefects}\n type={ListingNoteType.Defect}\n />\n ) : null}\n\n {listingNotePerks?.length ? (\n }\n listingNotes={listingNotePerks}\n type={ListingNoteType.Perk}\n />\n ) : null}\n \n \n \n\n \n {isYourListing ? (\n \n {hasIntelligiblePricePreviewFeature &&\n (!isSelectedWithListingGroup ||\n hasListingGroupIntelligiblePricePreviewFeature) ? (\n \n ) : (\n \n )}\n \n ) : isOutlier ? (\n \n \n \n ) : isAnchor ? (\n \n \n \n ) : null}\n \n \n \n {price}\n \n {hasShowIdFeature && (\n \n {listingId}\n \n )}\n \n \n );\n}\n","import { Seating } from 'src/WebApiController';\n\nimport {\n ComparableListingDisplay,\n ComparableListingDisplayProps,\n} from '../../ComparableListingDisplay';\nimport { ComparableListing } from '../ComparableListings';\n\nexport type ConnectedComparableListingDisplayProps = Pick<\n ComparableListingDisplayProps,\n 'isCurrentListing'\n> & {\n listing: ComparableListing;\n};\n\nexport const ConnectedComparableListingDisplay: React.FC<\n ConnectedComparableListingDisplayProps\n> = ({\n listing: {\n listingId,\n section,\n row,\n price,\n currencyCode,\n isOutlier,\n isAnchor,\n isYourListing,\n isSelectedWithListingGroup,\n validPurchaseQuantities,\n listingNotes,\n },\n ...props\n}) => {\n if (price == null || currencyCode == null) {\n return null;\n }\n\n const formatter = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: currencyCode,\n });\n\n return (\n \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { FormatOption } from 'src/modals/EditTableColumns';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\nimport { Feature, UiCurrency } from 'src/WebApiController';\n\nimport { DisplayType } from './ComparableListingItem';\nimport * as styles from './FloorCeilingBarDisplay.css';\n\nexport type FloorCeilingBarDisplayProps = {\n displayType: DisplayType.FloorDisplay | DisplayType.CeilingDisplay;\n currency: UiCurrency;\n floorCeilingPrice: number;\n};\n\nexport const FloorCeilingBarDisplay: React.FC = ({\n displayType,\n currency,\n floorCeilingPrice,\n}) => {\n return (\n
    \n
    \n \n \n \n \n \n \n {applyNumberFormatting({\n precision: FormatOption.Precise,\n inputNumber: floorCeilingPrice,\n currencyCode: currency.code,\n currencyDecimalDigits: currency.dec,\n })}\n \n \n
    \n
    \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n Feature,\n ListingPriceCalculation,\n Seating,\n} from 'src/WebApiController';\n\nimport {\n ComparableListingDisplay,\n ComparableListingDisplayProps,\n} from '../../ComparableListingDisplay';\nimport { ComparableListing } from '../ComparableListings';\nimport * as styles from './YourAutoPricerResultsDisplay.css';\n\nexport type YourAutopriceResultsDisplayProps = Pick<\n ComparableListingDisplayProps,\n 'isCurrentListing'\n> & {\n currentListing: ComparableListing;\n anchorListing?: ComparableListing;\n listingPriceCalc?: ListingPriceCalculation | null;\n};\n\nexport const YourAutopriceResultsDisplay: React.FC<\n YourAutopriceResultsDisplayProps\n> = ({ isCurrentListing, currentListing, anchorListing, listingPriceCalc }) => {\n const hasIntelligiblePricePreviewFeature = useUserHasFeature(\n Feature.IntelligiblePricePreview\n );\n\n if (currentListing.price == null || currentListing.currencyCode == null) {\n return null;\n }\n\n if (anchorListing) {\n if (anchorListing.price == null || anchorListing.currencyCode == null) {\n return null;\n }\n }\n\n const formatterCurrent = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: currentListing.currencyCode,\n });\n\n const formatterAnchor =\n anchorListing == null\n ? null\n : new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: anchorListing.currencyCode,\n });\n\n return hasIntelligiblePricePreviewFeature ? (\n \n ) : (\n
    \n \n {anchorListing && (\n \n )}\n\n \n
    \n );\n};\n","import {\n ConnectedComparableListingDisplay,\n ConnectedComparableListingDisplayProps,\n} from './ConnectedComparableListingDisplay';\nimport {\n FloorCeilingBarDisplay,\n FloorCeilingBarDisplayProps,\n} from './FloorCeilingBarDisplay';\nimport {\n YourAutopriceResultsDisplay,\n YourAutopriceResultsDisplayProps,\n} from './YourAutoPricerResultsDisplay';\n\nexport enum DisplayType {\n FloorDisplay = 'FloorDisplay',\n CeilingDisplay = 'CeilingDisplay',\n AutopricerDisplay = 'AutopricerDisplay',\n ComparableDisplay = 'ComparableDisplay',\n}\n\nexport type ComparableListingItemProps = {\n displayType: DisplayType;\n itemProps:\n | FloorCeilingBarDisplayProps\n | YourAutopriceResultsDisplayProps\n | ConnectedComparableListingDisplayProps;\n};\n\nexport const ComparableListingItem: React.FC = ({\n displayType,\n itemProps,\n}) => {\n switch (displayType) {\n case DisplayType.FloorDisplay:\n case DisplayType.CeilingDisplay:\n return (\n \n );\n\n case DisplayType.AutopricerDisplay:\n return (\n \n );\n default:\n return (\n \n );\n }\n};\n","import React, { useCallback, useMemo } from 'react';\nimport { Virtuoso } from 'react-virtuoso';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { compareNumber } from 'src/utils/miscUtils';\nimport {\n Feature,\n ListingNote,\n ListingPriceCalculation,\n} from 'src/WebApiController';\n\nimport {\n ComparableListingItem,\n ComparableListingItemProps,\n DisplayType,\n} from './ComparableListingItem';\nimport * as styles from './ComparableListings.css';\n\nconst calculateDealScore = (\n sellerNetProceeds: number | undefined | null,\n seatScore: number | undefined | null\n) => {\n if (sellerNetProceeds == null || !seatScore) {\n return undefined;\n }\n\n return sellerNetProceeds / seatScore;\n};\n\nexport type ComparableListing = {\n listingId: number;\n section?: string;\n row?: string;\n seatFr?: string;\n seatTo?: string;\n price?: number | null;\n sellerNetProceeds?: number;\n currencyCode?: string;\n listingNotes?: ListingNote[];\n isYourListing?: boolean;\n isOutlier?: boolean;\n isAnchor?: boolean;\n seatScore?: number | null;\n availableTickets?: number | null;\n validPurchaseQuantities?: number[] | null;\n isSelectedWithListingGroup?: boolean;\n};\n\nexport type ComparableListingsProps = {\n currentListings?: ComparableListing[];\n comparableListings: ComparableListing[];\n sortBy?: 'price' | 'dealScore';\n isLtGrp?: boolean;\n isSortDescending?: boolean;\n floorPrice?: number | null;\n ceilingPrice?: number | null;\n showAutoPriceResults?: boolean;\n listingPriceCalc?: ListingPriceCalculation | null;\n};\n\nexport const ComparableListings: React.FC = ({\n currentListings,\n comparableListings,\n isLtGrp,\n sortBy,\n isSortDescending,\n floorPrice,\n ceilingPrice,\n showAutoPriceResults,\n listingPriceCalc,\n}) => {\n const { getUiCurrency } = useLocalizationContext();\n\n const hasIntelligiblePricePreviewFeature = useUserHasFeature(\n Feature.IntelligiblePricePreview\n );\n\n const firstCurrentListing = currentListings?.[0];\n const currentListingIds = useMemo(() => {\n return currentListings?.map((listing) => listing.listingId);\n }, [currentListings]);\n\n const floorPriceUICurrency = getUiCurrency(firstCurrentListing?.currencyCode);\n\n const addFloorCeilingLine = useCallback(\n (\n items: ComparableListingItemProps[],\n type: DisplayType.FloorDisplay | DisplayType.CeilingDisplay,\n price: number\n ) => {\n if (!hasIntelligiblePricePreviewFeature) return false;\n\n items.push({\n displayType: type,\n itemProps: {\n displayType: type,\n floorCeilingPrice: price,\n currency: floorPriceUICurrency,\n },\n });\n\n return true;\n },\n [floorPriceUICurrency, hasIntelligiblePricePreviewFeature]\n );\n\n const allListings = useMemo(() => {\n const all: ComparableListing[] = [];\n if (currentListings) {\n all.push(...currentListings);\n }\n all.push(...comparableListings);\n\n return all.toSorted((a, b) => {\n let cmpRes = 0;\n if (sortBy === 'dealScore') {\n const dealScoreA = calculateDealScore(a.sellerNetProceeds, a.seatScore);\n const dealScoreB = calculateDealScore(b.sellerNetProceeds, b.seatScore);\n cmpRes = compareNumber(dealScoreA, dealScoreB);\n } else if (sortBy === 'price') {\n cmpRes = compareNumber(a.price, b.price);\n }\n return cmpRes * (isSortDescending ? -1 : 1);\n });\n }, [comparableListings, currentListings, sortBy, isSortDescending]);\n\n const hasCurrentListingAndAnchor = useMemo(() => {\n return (\n firstCurrentListing &&\n comparableListings.some((listing) => listing.isAnchor)\n );\n }, [comparableListings, firstCurrentListing]);\n\n // this is always set to true if the feature is present\n showAutoPriceResults =\n showAutoPriceResults || hasIntelligiblePricePreviewFeature;\n\n const showCurrentWithAnchor = useMemo(() => {\n if (isLtGrp || hasIntelligiblePricePreviewFeature) {\n // we do not show anchor for listing-group or the new IntelligiblePricePreview feature\n return false;\n }\n return showAutoPriceResults && hasCurrentListingAndAnchor;\n }, [\n hasCurrentListingAndAnchor,\n hasIntelligiblePricePreviewFeature,\n isLtGrp,\n showAutoPriceResults,\n ]);\n\n const listingItems = useMemo(() => {\n const items: ComparableListingItemProps[] = [];\n let floorPriceShown = false;\n let ceilingPriceShown = false;\n\n // Determine if all listings are above floor/ceiling\n if (sortBy === 'price') {\n if (floorPrice != null) {\n const anyPriceLessThanFloor = allListings.some(\n (l) => l.price != null && l.price < floorPrice\n );\n if (!anyPriceLessThanFloor) {\n // If there are no listing less than floor, show floor first\n floorPriceShown = addFloorCeilingLine(\n items,\n DisplayType.FloorDisplay,\n floorPrice\n );\n }\n }\n if (ceilingPrice != null) {\n const anyPriceLessThanCeiling = allListings.some(\n (l) => l.price != null && l.price < ceilingPrice\n );\n if (!anyPriceLessThanCeiling) {\n // If there are no listing less than ceiling, show ceiling first\n ceilingPriceShown = addFloorCeilingLine(\n items,\n DisplayType.CeilingDisplay,\n ceilingPrice\n );\n }\n }\n }\n\n allListings.forEach((listing) => {\n if (listing.listingId === firstCurrentListing?.listingId) {\n if (showCurrentWithAnchor) {\n return;\n }\n }\n\n if (\n sortBy === 'price' &&\n !floorPriceShown &&\n floorPrice != null &&\n listing.price != null\n ) {\n if (\n (isSortDescending && listing.price < floorPrice) ||\n (!isSortDescending && listing.price >= floorPrice)\n ) {\n floorPriceShown = addFloorCeilingLine(\n items,\n DisplayType.FloorDisplay,\n floorPrice\n );\n }\n }\n\n if (\n sortBy === 'price' &&\n !ceilingPriceShown &&\n ceilingPrice != null &&\n listing.price != null\n ) {\n if (\n (isSortDescending && listing.price < ceilingPrice) ||\n (!isSortDescending && listing.price >= ceilingPrice)\n ) {\n ceilingPriceShown = addFloorCeilingLine(\n items,\n DisplayType.CeilingDisplay,\n ceilingPrice\n );\n }\n }\n\n if (showCurrentWithAnchor && listing.isAnchor) {\n items.push({\n displayType: DisplayType.AutopricerDisplay,\n itemProps: {\n isCurrentListing: currentListingIds?.includes(listing.listingId),\n currentListing: firstCurrentListing!,\n anchorListing: listing,\n listingPriceCalc,\n },\n });\n } else if (listing.listingId === firstCurrentListing?.listingId) {\n if (showAutoPriceResults && !showCurrentWithAnchor) {\n items.push({\n displayType: DisplayType.AutopricerDisplay,\n itemProps: {\n isCurrentListing: currentListingIds?.includes(listing.listingId),\n currentListing: firstCurrentListing!,\n listingPriceCalc,\n },\n });\n }\n } else {\n items.push({\n displayType: DisplayType.ComparableDisplay,\n itemProps: {\n isCurrentListing: currentListingIds?.includes(listing.listingId),\n listing,\n },\n });\n }\n });\n\n // Determine if all listings are below floor/ceiling\n if (sortBy === 'price') {\n if (floorPrice != null && !floorPriceShown) {\n // If there are no listing greater than floor, show floor last\n addFloorCeilingLine(items, DisplayType.FloorDisplay, floorPrice);\n }\n if (ceilingPrice != null && !ceilingPriceShown) {\n // If there are no listing greater than ceiling, show ceiling last\n addFloorCeilingLine(items, DisplayType.CeilingDisplay, ceilingPrice);\n }\n }\n\n return items;\n }, [\n addFloorCeilingLine,\n allListings,\n ceilingPrice,\n currentListingIds,\n firstCurrentListing,\n floorPrice,\n isSortDescending,\n listingPriceCalc,\n showAutoPriceResults,\n showCurrentWithAnchor,\n sortBy,\n ]);\n\n return (\n
    \n
    \n }\n />\n
    \n
    \n );\n};\n","import { KeyboardEvent, useEffect, useMemo } from 'react';\nimport {\n ComparableListing,\n ComparableListings,\n} from 'src/components/Listings/ComparableListings';\nimport { useActiveFocusContext } from 'src/contexts/ActiveFocusContext/ActiveFocusContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { flattenListingGroup } from 'src/modals/GroupListings/components/groupingUtils';\nimport {\n getAllInPriceFromListPrice,\n getAllInPriceFromListPriceForListing,\n} from 'src/utils/inventoryUtils';\nimport {\n ActivityLogClient,\n CompListing,\n Feature,\n Listing,\n ListingPriceCalculation,\n Marketplace,\n} from 'src/WebApiController';\n\nimport * as styles from './ConnectedComparableListings.css';\n\nexport type ListingWithSeatScore = Listing & {\n seatScore?: number | null | undefined;\n};\n\nexport type CompListingWithSeatScore = CompListing & {\n seatScore?: number | null | undefined;\n};\n\nexport type ConnectedComparableListingsProps = {\n isLoading?: boolean;\n currentListing?: ListingWithSeatScore;\n priceOverride?: number | null;\n currentListingFromListingGroup?: ListingWithSeatScore[];\n comparableListings: CompListingWithSeatScore[];\n seatScore?: number | null;\n sortBy?: 'price' | 'dealScore';\n showAutoPriceResults?: boolean;\n isSortDescending?: boolean;\n listingPriceCalc?: ListingPriceCalculation | null;\n /**\n * User's listings\n */\n listings?: Listing[] | null;\n};\n\nconst mapListingToComparableListing = (\n listing: ListingWithSeatScore,\n isSelectedWithListingGroup: boolean\n): ComparableListing => ({\n listingId: listing.id,\n section: listing.seating.section,\n row: listing.seating.row ?? undefined,\n seatFr: listing.seating.seatFr ?? undefined,\n seatTo: listing.seating.seatTo ?? undefined,\n price: getAllInPriceFromListPriceForListing(listing),\n currencyCode: listing.currency,\n listingNotes: listing.seatTraits ?? undefined,\n // Price assuming same fees as seller’s account\n sellerNetProceeds: listing.listPrice,\n seatScore: listing.seatScore,\n isYourListing: true,\n availableTickets: listing.availQty,\n validPurchaseQuantities: listing.vldPurQty,\n isSelectedWithListingGroup: isSelectedWithListingGroup,\n});\n\nexport function ConnectedComparableListings({\n isLoading,\n currentListing,\n currentListingFromListingGroup,\n comparableListings,\n listings,\n listingPriceCalc,\n ...rest\n}: ConnectedComparableListingsProps) {\n const hasCondensedInventory = useUserHasFeature(\n Feature.CondensedPreviewTabsAndSingleListing\n );\n\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { onKeyDownHandler, activeItem } = useActiveFocusContext();\n const activeItemIndex = activeItem?.index;\n\n const onCurrentKeyDownHandler = (e: KeyboardEvent) => {\n onKeyDownHandler(e, activeItemIndex ?? 0);\n };\n\n const marketplaceListingIdsSet = useMemo(() => {\n const flattenedListings = (listings?.flatMap(flattenListingGroup) ??\n []) as Listing[];\n\n return new Set(\n flattenedListings.reduce((ids, listing) => {\n const stubHubMkpListings = listing.mkpListings?.find(\n ({ mkp }) => mkp === Marketplace.StubHub\n );\n if (stubHubMkpListings?.mkpListingId) {\n ids.push(parseInt(stubHubMkpListings?.mkpListingId));\n }\n return ids;\n }, [] as number[])\n );\n }, [listings]);\n\n const { loginContext } = useAppContext();\n const stubHubMkpSettings =\n loginContext?.user?.activeAccount?.marketplaceSettings?.find(\n (m) => m.mkp === Marketplace.StubHub\n );\n\n const currentListings = useMemo(() => {\n if (currentListingFromListingGroup) {\n return currentListingFromListingGroup.map((l) =>\n mapListingToComparableListing(l, true)\n );\n }\n\n return currentListing\n ? [mapListingToComparableListing(currentListing, false)]\n : undefined;\n }, [currentListing, currentListingFromListingGroup]);\n\n const comparableListingsLoaded = useMemo(() => {\n return !isLoading && currentListing?.id != null;\n }, [currentListing?.id, isLoading]);\n\n useEffect(() => {\n if (comparableListingsLoaded && currentListing) {\n new ActivityLogClient(activeAccountWebClientConfig).trackListingCompsView(\n currentListing.id\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [comparableListingsLoaded]);\n\n return (\n \n {isLoading ? (\n hasCondensedInventory ? null : (\n \n )\n ) : (\n \n ({\n listingId: compListing.listingId,\n section: compListing.section ?? undefined,\n row: compListing.row ?? undefined,\n seatFr: compListing.seatFrom ?? undefined,\n seatTo: compListing.seatTo ?? undefined,\n price: compListing.sellerAllInPrice?.amt,\n currencyCode: compListing.currencyCode ?? undefined,\n listingNotes: compListing.listingNotes ?? undefined,\n sellerNetProceeds:\n compListing.sellerNetProceeds?.amt ?? undefined,\n isOutlier:\n compListing.isWithoutOutlier == null\n ? false\n : compListing.isWithoutOutlier,\n isAnchor: compListing.isAnchor ?? false,\n isYourListing:\n marketplaceListingIdsSet.has(compListing.listingId) ||\n compListing.isSellerCompListing,\n seatScore: compListing.seatScore,\n availableTickets: compListing.availableTickets,\n validPurchaseQuantities:\n compListing.validPurchaseQuantities,\n }) as ComparableListing\n )\n : []\n }\n floorPrice={\n listingPriceCalc?.cmpFlr?.amt ?? currentListing?.procsFloor\n ? getAllInPriceFromListPrice(\n listingPriceCalc?.cmpFlr?.amt ?? currentListing?.procsFloor,\n currentListing,\n stubHubMkpSettings?.sellerFee\n )\n : undefined\n }\n ceilingPrice={\n listingPriceCalc?.cmpCeil?.amt ?? currentListing?.procsCeil\n ? getAllInPriceFromListPrice(\n listingPriceCalc?.cmpCeil?.amt ?? currentListing?.procsCeil,\n currentListing,\n stubHubMkpSettings?.sellerFee\n )\n : undefined\n }\n listingPriceCalc={listingPriceCalc}\n isLtGrp={!!currentListingFromListingGroup}\n {...rest}\n />\n )}\n \n );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { head, uniqBy } from 'lodash-es';\nimport { useCallback, useState } from 'react';\nimport { useDebounce } from 'react-use';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { getSectionInfoDisplay } from 'src/utils/autoPricingUtils';\nimport { filterSectionByZone } from 'src/utils/venueConfigUtils';\nimport {\n ListingClient,\n ListingDetailsPricingUpdates,\n ListingPriceCalculation,\n SectionInfo,\n VenueMapInfo,\n} from 'src/WebApiController';\n\ntype AutoPricingPreviewQueryKeyType =\n | {\n listingId: number | undefined;\n eventId: number | null;\n listingInput: ListingDetailsPricingUpdates | undefined;\n }\n | undefined;\n\nexport const useAutoPricingPreview = (\n viagogoEventId: number | null,\n listingId?: number | undefined,\n listingInput?: ListingDetailsPricingUpdates\n) => {\n const [queryKey, setQueryKey] =\n useState(undefined);\n\n useDebounce(\n () =>\n setQueryKey({\n eventId: viagogoEventId,\n listingId,\n listingInput: listingInput,\n }),\n 300,\n [viagogoEventId, listingId, JSON.stringify(listingInput)]\n );\n\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const shouldQuery = Boolean(\n activeAccountWebClientConfig.activeAccountId != null &&\n queryKey?.eventId &&\n queryKey?.listingId &&\n queryKey?.listingInput\n );\n\n const priceCalcQuery = useQuery({\n queryKey: ['ListingClient.getListingPriceCalculation', queryKey],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n const r = await new ListingClient(\n activeAccountWebClientConfig\n ).getListingPriceCalculation(\n queryKey?.eventId ?? undefined,\n queryKey?.listingId ?? undefined,\n queryKey?.listingInput!\n );\n return r;\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n networkMode: 'offlineFirst',\n meta: {\n persist: false,\n onError: (error: ErrorTypes) => {\n trackError(\n 'ListingClient.getListingPriceCalculation',\n error,\n listingInput\n );\n },\n },\n });\n\n return { priceCalcQuery };\n};\n\nexport const useVenueMapHandlers = (\n filterSections: SectionInfo[],\n pricingPreview?: ListingPriceCalculation,\n venueMapInfo?: VenueMapInfo | null,\n onSelectedSectionsChange?: (selectedSections: SectionInfo[]) => void\n) => {\n const onShiftSelect = useCallback(\n (sectionInfo: SectionInfo) => {\n // We are using the ticketClassId to group the sections\n const selectedClassId = head(\n sectionInfo?.rows\n ?.map(({ tktClass: ticketClass }) => ticketClass?.id)\n .filter((id) => !!id)\n );\n const classSections =\n venueMapInfo?.sections?.filter(filterSectionByZone(selectedClassId)) ||\n [];\n\n const classedSectionIds = classSections.map(({ id }) => id);\n const filteredSeciontIds = filterSections.map(({ id }) => id);\n let cloned = [...filterSections];\n if (classedSectionIds.every((id) => filteredSeciontIds.includes(id))) {\n cloned = cloned.filter(({ id }) => !classedSectionIds.includes(id));\n } else {\n for (const section of classSections) {\n if (!filteredSeciontIds.includes(section.id)) {\n cloned.push(section);\n }\n }\n }\n onSelectedSectionsChange?.(cloned);\n },\n [filterSections, onSelectedSectionsChange, venueMapInfo?.sections]\n );\n\n const onSingleSelect = useCallback(\n (section: SectionInfo) => {\n const idx = filterSections.findIndex(({ id }) => id === section.id);\n const cloned = [...filterSections];\n if (idx === -1) {\n cloned.push(section);\n } else {\n cloned.splice(idx, 1);\n }\n onSelectedSectionsChange?.(cloned);\n },\n [filterSections, onSelectedSectionsChange]\n );\n\n const onSectionClicked = useCallback(\n (e: MouseEvent, sectionInfo: SectionInfo) => {\n if (e.shiftKey) {\n onShiftSelect(sectionInfo);\n return;\n }\n\n onSingleSelect(sectionInfo);\n },\n [onSingleSelect, onShiftSelect]\n );\n\n const onToggleMirrors = useCallback(\n (mirrors: SectionInfo[], exclude?: boolean) => {\n if (exclude) {\n const idsToExclude = mirrors.map(({ id }) => id);\n const updated = uniqBy(\n filterSections.filter(({ id }) => !idsToExclude.includes(id)),\n 'id'\n ).toSorted((a, b) => a.name.localeCompare(b.name));\n onSelectedSectionsChange?.(updated);\n } else {\n const updated = uniqBy(filterSections.concat(mirrors), 'id').toSorted(\n (a, b) => a.name.localeCompare(b.name)\n );\n onSelectedSectionsChange?.(updated);\n }\n },\n [filterSections, onSelectedSectionsChange]\n );\n\n const onSectionHovered = useCallback(\n (hoveredSection: SectionInfo) => {\n return getSectionInfoDisplay(\n hoveredSection,\n pricingPreview?.compListings ?? [],\n venueMapInfo?.sectionScores\n );\n },\n [pricingPreview?.compListings, venueMapInfo?.sectionScores]\n );\n\n return {\n onSectionClicked,\n onToggleMirrors,\n onSectionHovered,\n };\n};\n","import { isEmpty } from 'lodash-es';\nimport { ChangeEvent, useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { Stack } from 'src/core/ui';\nimport { FloorAdjustmentInput } from 'src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog/components/PricingProtection/FloorAdjustmentInput';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PRICING_FLOOR_CEIL_ADJUSTMENT_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n getAllInPriceFromListPrice,\n getListPriceFromAllinPrice,\n} from 'src/utils/inventoryUtils';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport {\n Listing,\n ListingDetailsAutoPricingSectionUpdatesV2,\n Marketplace,\n PricingFloorCeilingAdjustmentType,\n} from 'src/WebApiController';\n\nexport const QuickFloorInput = ({\n listing,\n disabled,\n onEnterKeyPressed,\n}: {\n listing: Listing;\n disabled?: boolean;\n onEnterKeyPressed?: () => void;\n}) => {\n const { loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n const stubHubMkpSettings =\n loginContext?.user?.activeAccount?.marketplaceSettings?.find(\n (m) => m.mkp === Marketplace.StubHub\n );\n\n const uiCurrency = getUiCurrency(\n loginContext?.user?.activeAccount?.currencyCode\n );\n\n const { setValue, watch } =\n useFormContext();\n\n const netProceedsFloor = watch('netProceedsFloor');\n const netProceedsFloorAdjustmentType = watch(\n 'netProceedsFloorAdjustmentType'\n );\n const netProceedsFloorAdjustmentAmount = watch(\n 'netProceedsFloorAdjustmentAmount'\n );\n const netProceedsFloorAdjustmentRelative = watch(\n 'netProceedsFloorAdjustmentRelative'\n );\n\n const onPriceFloorChange = useCallback(\n (e: ChangeEvent) => {\n const v = parseFloat(e.target.value);\n const newNetProceedFloor = getListPriceFromAllinPrice(\n v,\n listing,\n stubHubMkpSettings?.sellerFee\n );\n if (\n newNetProceedFloor &&\n newNetProceedFloor >= 0 &&\n newNetProceedFloor < (listing.procsCeil ?? Number.MAX_VALUE)\n ) {\n setValue('netProceedsFloor', posChangedField(newNetProceedFloor));\n } else {\n setValue('netProceedsFloor', null);\n }\n },\n [listing, setValue, stubHubMkpSettings?.sellerFee]\n );\n\n const onUpdateNetProceedsFloorAdjustment = useCallback(\n (input: {\n isRelative?: boolean;\n adjustmentAmount?: number | null;\n adjustmentType?: PricingFloorCeilingAdjustmentType;\n }) => {\n if (isEmpty(input)) {\n setValue('netProceedsFloorAdjustmentAmount', null);\n setValue('netProceedsFloorAdjustmentRelative', false);\n setValue('netProceedsFloorAdjustmentType', null);\n }\n const { isRelative, adjustmentAmount, adjustmentType } = input;\n if (isRelative !== undefined) {\n setValue('netProceedsFloorAdjustmentRelative', isRelative);\n }\n if (adjustmentAmount !== undefined) {\n setValue('netProceedsFloorAdjustmentAmount', adjustmentAmount);\n }\n if (adjustmentType !== undefined) {\n setValue('netProceedsFloorAdjustmentType', adjustmentType);\n }\n },\n [setValue]\n );\n\n const valueOptionsDisabled = useMemo(() => {\n const result: Record = {};\n\n if (listing.procsFloor == null) {\n result[PricingFloorCeilingAdjustmentType.CurrentFloor] =\n ContentId.ListingHasNoCurrentFloor;\n }\n if (listing.undNewPrice == null) {\n result[PricingFloorCeilingAdjustmentType.MarketPrice] =\n ContentId.ListingHasNoMarketprice;\n }\n if (listing.unitCst == null) {\n result[PricingFloorCeilingAdjustmentType.UnitCost] =\n ContentId.ListingHasNoUnitCost;\n }\n\n return result;\n }, [listing.procsFloor, listing.undNewPrice, listing.unitCst]);\n\n const inputboxRef = useRef(null);\n\n const onHandleEnterKey = useCallback(\n (e: KeyboardEvent) => {\n if (!disabled && onEnterKeyPressed && e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n\n onEnterKeyPressed();\n }\n },\n [disabled, onEnterKeyPressed]\n );\n\n useEffect(() => {\n const curRef = inputboxRef.current;\n if (onEnterKeyPressed && curRef) {\n inputboxRef.current.addEventListener('keydown', onHandleEnterKey);\n }\n\n return () => curRef?.removeEventListener('keydown', onHandleEnterKey);\n }, [onEnterKeyPressed, onHandleEnterKey]);\n\n return (\n <>\n {listing.isAutoPrc &&\n netProceedsFloor?.value == null && // only show relative-floor-input when no floor is set and is auto-pricing\n Object.entries(valueOptionsDisabled).length <\n Object.entries(PRICING_FLOOR_CEIL_ADJUSTMENT_TYPE_TO_CID).length ? (\n \n {\n onUpdateNetProceedsFloorAdjustment({\n adjustmentAmount: amount,\n isRelative,\n });\n }}\n />\n\n {\n if (\n newValue != null &&\n newValue != netProceedsFloorAdjustmentType\n ) {\n onUpdateNetProceedsFloorAdjustment({\n adjustmentType: newValue,\n });\n }\n }}\n />\n \n ) : (\n // show the normal floor input if is not auto-pricing or has floor set\n \n \n \n )}\n \n );\n};\n","import clsx from 'clsx';\nimport { PropsWithChildren } from 'react';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { vars } from 'src/core/themes';\nimport { mergeProps } from 'src/core/utils';\nimport { CrossIcon, MoreIcon } from 'src/svgs/Viagogo';\n\nimport * as styles from './FloatingToolbar.css';\n\nexport const FloatingToolbar = ({\n children,\n onToggleCollapsed,\n isCollapsed,\n disabled,\n ...rest\n}: PropsWithChildren<{\n onToggleCollapsed?: (forceCollapse?: boolean) => void;\n isCollapsed?: boolean;\n disabled?: boolean;\n}>) => {\n const { isDarkMode } = useSiteTheme();\n\n return (\n onToggleCollapsed?.(false) : undefined\n }\n >\n {!isCollapsed ? (\n <>\n {children}\n\n onToggleCollapsed?.(true)}\n withHoverEffect\n size={vars.iconSize.xs}\n />\n \n ) : (\n \n )}\n
    \n );\n};\n","import { PosIconProps } from './SvgWrapper';\n\nexport const QuickAtionShieldIcon = (props: Omit) => {\n return (\n \n \n \n );\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { QuickFloorInput } from 'src/components/AutoPricing/QuickFloorInput';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { FloatingToolbar } from 'src/core/ui/FloatingToolbar';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { QuickAtionShieldIcon } from 'src/svgs/QuickAtionShieldIcon';\nimport { ProcessingIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { posField } from 'src/utils/posFieldUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n Listing,\n ListingClient,\n ListingDetailsAutoPricingSectionUpdatesV2,\n PricingFloorCeilingAdjustmentType,\n UserSetting,\n} from 'src/WebApiController';\n\nexport const QuickFloorToolbar = ({ listing }: { listing: Listing }) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { isDarkMode } = useSiteTheme();\n const { showErrorDialog } = useErrorBoundaryContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const { value: quickFloorCollapsed, setUserSetting: setQuickFloorCollapsed } =\n useServerUserSetting({\n id: UserSetting.QuickFloorPromptDismissal,\n });\n\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const [isCollapsed, setIsCollapsed] = useState(\n quickFloorCollapsed\n );\n\n useEffect(() => {\n if (isCollapsed == null) {\n if (quickFloorCollapsed != null) {\n // if there is user settings, use is\n setIsCollapsed(quickFloorCollapsed);\n }\n }\n }, [isCollapsed, listing, quickFloorCollapsed]);\n\n const quickFloorForm = useForm({\n defaultValues: {\n id: listing.id,\n rowVersion: listing.rowVer,\n currencyCode: listing.currency,\n netProceedsFloor: posField(listing.procsFloor),\n netProceedsFloorAdjustmentType: listing.undNewPrice\n ? PricingFloorCeilingAdjustmentType.MarketPrice\n : listing.procsFloor\n ? PricingFloorCeilingAdjustmentType.CurrentFloor\n : listing.unitCst\n ? PricingFloorCeilingAdjustmentType.UnitCost\n : null,\n netProceedsFloorAdjustmentRelative: false,\n },\n });\n\n const { watch, getValues, reset } = quickFloorForm;\n\n const floor = watch('netProceedsFloor');\n const netProceedsFloorAdjustmentAmount = watch(\n 'netProceedsFloorAdjustmentAmount'\n );\n\n const hasChanged =\n (floor?.value != null && floor?.hasChanged) ||\n netProceedsFloorAdjustmentAmount != null;\n\n const onSave = useCallback(() => {\n const input = getValues();\n\n tryInvokeApi(\n async () => {\n if (isSubmitting) return;\n\n setIsSubmitting(true);\n\n const result = await new ListingClient(\n activeAccountWebClientConfig\n ).updateListingAutoPricingSectionV2(input);\n\n if (isSuccess(result)) {\n await refreshExpandedListItems();\n reset({\n ...input,\n // Reset these so they become unchanged\n netProceedsFloorAdjustmentAmount: null,\n netProceedsFloor: posField(input.netProceedsFloor?.value),\n });\n } else {\n showErrorDialog('Unable to save changes.', result, {\n trackErrorData: input,\n });\n }\n },\n (error) => {\n showErrorDialog(\n 'ListingClient.updateListingAutoPricingSectionV2',\n error,\n { trackErrorData: input }\n );\n },\n () => {\n setIsSubmitting(false);\n }\n );\n }, [\n activeAccountWebClientConfig,\n getValues,\n isSubmitting,\n refreshExpandedListItems,\n reset,\n showErrorDialog,\n ]);\n\n return (\n {\n if (collapsed == null) {\n collapsed = !isCollapsed; // toggle previous state\n }\n setIsCollapsed(collapsed);\n setQuickFloorCollapsed(collapsed);\n }}\n >\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import clsx from 'clsx';\nimport { union } from 'lodash-es';\nimport { useCallback, useMemo } from 'react';\nimport { SimplifiedAutopricingSection } from 'src/components/AutoPricing/SimplifiedAutopricingSection';\nimport { SimplifiedAutopricingSection as SimplifiedAutopricingSectionV2 } from 'src/components/AutoPricing/SimplifiedAutopricingSectionV2';\nimport { ColorBandProps } from 'src/components/Events/VenueMap';\nimport { EventVenueMap } from 'src/components/Events/VenueMap/EventVenueMap';\nimport { VenueMapContentProps } from 'src/components/Events/VenueMap/VenueMapContent';\nimport {\n ConnectedComparableListings,\n ListingWithSeatScore,\n} from 'src/components/Listings/ConnectedComparableListings';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n EventSessionRole,\n useEventHubContext,\n} from 'src/contexts/EventHubContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getListPriceFromAllinPrice } from 'src/utils/inventoryUtils';\nimport {\n getCompleteEventConfigScoreOverrides,\n getMatchingSectionRow,\n getSeatScore,\n} from 'src/utils/seatScoreUtils';\nimport {\n AutoPricingUndercutMode,\n CompListing,\n Feature,\n Listing,\n ListingDetailsPricingUpdates,\n ListingPriceCalculation,\n SectionInfo,\n} from 'src/WebApiController';\n\nimport * as styles from './MapWithCompListingsPreview.css';\nimport { useVenueMapHandlers } from './MapWithCompListingsPreview.hooks';\nimport { QuickFloorToolbar } from './QuickFloorToolbar';\n\ntype MapWithCompListingsPreviewProps = {\n listing?: Listing;\n listingInput: ListingDetailsPricingUpdates;\n pricingPreview?: ListingPriceCalculation;\n compListings: CompListing[];\n compListingsFromListgingGroup?: ListingWithSeatScore[];\n showSimplifiedSettings?: boolean;\n statsContent?: React.ReactNode;\n isLoading?: boolean;\n isInModal?: boolean;\n colorBand?: ColorBandProps;\n getColor?: VenueMapContentProps['getColor'];\n onSelectedSectionsChange?: (selectedSections: SectionInfo[]) => void;\n};\n\nexport const MapWithCompListingsPreview: React.FC<\n MapWithCompListingsPreviewProps\n> = ({\n listing,\n listingInput,\n pricingPreview,\n compListings,\n compListingsFromListgingGroup,\n showSimplifiedSettings,\n statsContent,\n isLoading,\n isInModal = false,\n colorBand,\n getColor,\n onSelectedSectionsChange,\n}) => {\n const { venueMapInfo, activeConfigOverride } = useEventMapContext();\n const { sessionRole, enabled } = useEventHubContext();\n const hasSimplifiedPricingV2Feature = useUserHasFeature(\n Feature.SimplifiedAutoPricingUiV2\n );\n const hasQuickFloorToolbarFeature = useUserHasFeature(\n Feature.QuickFloorToolbar\n );\n\n const sessionView = sessionRole === EventSessionRole.SidePanel;\n\n const filterSections = useMemo(() => {\n const selectedSectionId =\n listingInput?.compListingSelectedSectionSettings?.sectionIdFilter ?? [];\n return (\n venueMapInfo?.sections?.filter(({ id }) =>\n selectedSectionId.includes(id)\n ) ?? []\n );\n }, [\n listingInput?.compListingSelectedSectionSettings?.sectionIdFilter,\n venueMapInfo?.sections,\n ]);\n\n const { onSectionClicked, onToggleMirrors, onSectionHovered } =\n useVenueMapHandlers(\n filterSections,\n pricingPreview,\n venueMapInfo,\n onSelectedSectionsChange\n );\n\n const selectedSectionIds = useMemo(() => {\n if (!listing?.seating) {\n return [];\n }\n\n const { section } = getMatchingSectionRow(\n listing.seating,\n venueMapInfo?.sections\n );\n return section ? [section.id] : [];\n }, [listing?.seating, venueMapInfo?.sections]);\n\n const scoreOverrides = useMemo(\n () =>\n getCompleteEventConfigScoreOverrides(\n venueMapInfo?.sectionScores,\n activeConfigOverride?.scoreOverrides,\n false\n ),\n [activeConfigOverride?.scoreOverrides, venueMapInfo?.sectionScores]\n );\n\n const populateListingWithSeatScore = useCallback(\n (listing?: Listing) => {\n if (!listing) return;\n\n const seatScore = getSeatScore(\n listing.seating,\n scoreOverrides,\n venueMapInfo?.sections\n );\n if (seatScore != null) {\n const listPrice = getListPriceFromAllinPrice(\n pricingPreview?.websitePrice?.amt,\n listing\n );\n return {\n ...listing,\n // This is to make sure we use the auto-preview price instead of the listing's price when showing comparables\n // And we have to override listPrice because allIn is calculated from listPrice (instead of being read from the listing)\n listPrice: listPrice ?? listing.listPrice,\n seatScore,\n };\n }\n\n return listing;\n },\n [pricingPreview?.websitePrice?.amt, scoreOverrides, venueMapInfo?.sections]\n );\n\n const compListingsWithSeatScore: CompListing[] | undefined = useMemo(() => {\n return (\n compListings?.map((l) => {\n const seatScore = getSeatScore(\n l,\n scoreOverrides,\n venueMapInfo?.sections\n );\n if (seatScore != null) return { ...l, seatScore };\n\n return l;\n }) ?? []\n );\n }, [compListings, scoreOverrides, venueMapInfo?.sections]);\n\n const compListingSectionIds = useMemo(() => {\n const sectionNames = (pricingPreview?.compListings ?? []).map(\n (l) => l.section\n );\n const sectionIds = (venueMapInfo?.sections ?? [])\n .filter((section) => sectionNames.includes(section.name))\n .map(({ id }) => id);\n\n const selected = filterSections.map((section) => section.id);\n\n return union(sectionIds, selected);\n }, [pricingPreview?.compListings, venueMapInfo?.sections, filterSections]);\n\n return (\n \n \n }\n />\n
    \n \n {showSimplifiedSettings &&\n (hasSimplifiedPricingV2Feature ? (\n \n ) : (\n \n ))}\n \n {hasQuickFloorToolbarFeature && listing && !isInModal && (\n \n )}\n \n \n );\n};\n","import { groupBy, isEmpty, meanBy } from 'lodash-es';\nimport Rainbow from 'rainbowvis.js';\nimport { useMemo } from 'react';\nimport { VenueMapContentProps } from 'src/components/Events/VenueMap/VenueMapContent';\nimport { vars } from 'src/core/themes';\nimport { flattenListingGroup } from 'src/modals/GroupListings/components/groupingUtils';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { CompListing, Listing, UiMoney } from 'src/WebApiController';\n\nexport const ListingCompsSpectrum = ['0094DC', 'FFFFFF', 'D80F5E'];\nexport const ListingCompsRangeMin = -10;\nexport const ListingCompsRangeMax = 10;\n/**\n * Number of steps in the spectrum.\n */\nexport const ListingCompsNumberRange =\n ListingCompsRangeMax - ListingCompsRangeMin + 1;\n\nconst STEPS_PER_HALF = (ListingCompsNumberRange - 1) / 2;\n\n/**\n * The ratio that represents the maximum end of the spectrum.\n */\nconst MAX_RATIO = 2;\nconst MAX_RATIO_INCREMENT = Math.abs(MAX_RATIO - 1) / STEPS_PER_HALF;\n/**\n * The ratio that represents the minimum end of the spectrum.\n */\nconst MIN_RATIO = 0.5;\nconst MIN_RATIO_INCREMENT = Math.abs(MIN_RATIO - 1) / STEPS_PER_HALF;\n\n/**\n * Round to 8 decimal places by default.\n */\nconst ROUNDING_DECIMAL_PLACES = 8;\n\n/**\n * Gets the range index for a comparable price on a scale of 50% to 200% of the given `price`.\n *\n * The value is negated before returning because for the spectrum is actual relative to the `price`\n * instead of the comparable price, so the spectrum is actually reversed.\n * @param price\n * @param comparablePrice\n * @returns The color for the given comparable price.\n */\nexport function getCompListingSpectrumIndex(\n price: number,\n comparablePrice: number\n) {\n // the ratio relative to 100%\n const relativeRatio =\n Math.max(MIN_RATIO, Math.min(comparablePrice / price, MAX_RATIO)) - 1;\n if (relativeRatio > 0) {\n return -Math.ceil(\n roundToPrecision(\n relativeRatio / MAX_RATIO_INCREMENT,\n ROUNDING_DECIMAL_PLACES\n )\n );\n }\n if (relativeRatio < 0) {\n return -Math.floor(\n roundToPrecision(\n relativeRatio / MIN_RATIO_INCREMENT,\n ROUNDING_DECIMAL_PLACES\n )\n );\n }\n return 0;\n}\n\nexport function useComparableListingsVenueMapColor(\n listings: Listing[],\n compListings?: CompListing[],\n defaultCompListings?: CompListing[]\n): NonNullable {\n const compListingsBySection = useMemo(() => {\n if (!compListings) return {};\n\n return groupBy(\n compListings.filter((l) => l.section),\n (l) => l.section\n );\n }, [compListings]);\n const compListingsByRowId = useMemo(() => {\n if (!compListings) return {};\n\n return groupBy(\n compListings.filter((l) => l.rowId),\n (l) => l.rowId\n );\n }, [compListings]);\n\n const defaultCompListingsBySection = useMemo(() => {\n if (!defaultCompListings) return {};\n\n return groupBy(\n defaultCompListings.filter((l) => l.section),\n (l) => l.section\n );\n }, [defaultCompListings]);\n const defaultCompListingsByRowId = useMemo(() => {\n if (!defaultCompListings) return {};\n\n return groupBy(\n defaultCompListings.filter((l) => l.rowId),\n (l) => l.rowId\n );\n }, [defaultCompListings]);\n\n const sellerListingsBySection = useMemo(\n () =>\n groupBy(\n listings.flatMap(flattenListingGroup) as Listing[],\n (listing) => listing.seating.section\n ),\n [listings]\n );\n const sellerListingsByRowId = useMemo(\n () =>\n groupBy(\n listings.flatMap(flattenListingGroup) as Listing[],\n (listing) => listing.seating.rowId\n ),\n [listings]\n );\n\n const avgOverallPrice = meanBy(\n (compListings ?? [])\n .map(\n ({ sellerNetProceeds, sellerAllInPrice }) =>\n sellerNetProceeds ?? sellerAllInPrice\n )\n .filter((money): money is UiMoney => money != null),\n ({ amt }) => amt\n );\n\n return useMemo(() => {\n return ({ sectionName, rowId, isSelected, isMarked }) => {\n if (!sectionName && !rowId) {\n return;\n }\n\n if (isSelected) {\n return { fill: vars.color.backgroundHighlightHover, stroke: 'black' };\n }\n\n if (isMarked) {\n return {\n fill: vars.color.backgroundBrandHoverLight,\n stroke: 'black',\n };\n }\n\n const hasSellerListings =\n (rowId && !isEmpty(sellerListingsByRowId[rowId])) ||\n (sectionName && !isEmpty(sellerListingsBySection[sectionName]));\n\n const selectedComplistings =\n (rowId && compListingsByRowId[rowId]) ??\n (sectionName && compListingsBySection[sectionName]);\n\n if (selectedComplistings) {\n const avgCompPrice = meanBy(\n selectedComplistings\n .map(\n ({ sellerNetProceeds, sellerAllInPrice }) =>\n sellerNetProceeds ?? sellerAllInPrice\n )\n .filter((money): money is UiMoney => money != null),\n ({ amt }) => amt\n );\n\n const rainbow = new Rainbow();\n rainbow.setNumberRange(ListingCompsRangeMin, ListingCompsRangeMax);\n rainbow.setSpectrumByArray(ListingCompsSpectrum);\n\n const color = rainbow.colorAt(\n getCompListingSpectrumIndex(avgCompPrice, avgOverallPrice)\n );\n return {\n fill: `#${color}`,\n stroke: hasSellerListings\n ? vars.color.backgroundBrandActive\n : 'black',\n strokeWidth: hasSellerListings ? '10px' : undefined,\n };\n }\n\n const hasCompListing =\n (rowId && !isEmpty(defaultCompListingsByRowId[rowId])) ||\n (sectionName && !isEmpty(defaultCompListingsBySection[sectionName]));\n\n return {\n fill: hasCompListing ? vars.color.backgroundPrimaryActive : 'white',\n stroke: hasCompListing ? 'black' : '#A6A6A6',\n textColor: hasCompListing ? 'black' : '#B7B7B7',\n };\n };\n }, [\n avgOverallPrice,\n compListingsByRowId,\n compListingsBySection,\n defaultCompListingsByRowId,\n defaultCompListingsBySection,\n sellerListingsByRowId,\n sellerListingsBySection,\n ]);\n}\n","import { useMemo } from 'react';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport {\n getMatchingSectionRow,\n getSectionsSameZone,\n} from 'src/utils/seatScoreUtils';\nimport { AutoPricingCompListingMode, Listing } from 'src/WebApiController';\n\n/**\n * Given comp listing settings and event map, returns the disabled section ids which should not be selectable\n * when restricting selection to sections (compListingOnlyForSelectedSectionsEnabled)\n * @param undercutAbsoluteAmount\n * @param undercutRelativeAmount\n * @returns\n */\nexport const useCompListingDisabledSections = (\n listing: Listing | null | undefined,\n isBulkEdit: boolean | undefined,\n compListingMode: AutoPricingCompListingMode | null,\n compListingFloor: number | null,\n compListingCeiling: number | null\n) => {\n const { venueMapInfo } = useEventMapContext();\n\n const disabledSectionIds = useMemo(() => {\n if (!venueMapInfo || !compListingMode || !listing || isBulkEdit) return [];\n\n if (compListingMode === AutoPricingCompListingMode.SameZone) {\n const { ticketClassId } = getMatchingSectionRow(\n listing.seating,\n venueMapInfo.sections\n );\n\n if (ticketClassId == null) return [];\n\n const sectionsSameZone = getSectionsSameZone(\n listing.seating,\n venueMapInfo.sections\n );\n\n return venueMapInfo.sections\n .filter((s) => !sectionsSameZone?.some((ss) => ss.id === s.id))\n .map((s) => s.id);\n } else if (compListingMode === AutoPricingCompListingMode.QualityScore) {\n // section must have at least one row with score within slider range\n const { row } = getMatchingSectionRow(\n listing.seating,\n venueMapInfo.sections\n );\n const rowScore = row?.seatQualityScore;\n\n if (\n rowScore == null ||\n compListingFloor == null ||\n compListingCeiling == null\n )\n return [];\n\n const rowScoreFloor = rowScore * compListingFloor;\n const rowScoreCeiling = rowScore * compListingCeiling;\n\n return venueMapInfo.sections\n .filter((s) => {\n const hasRowWithinRange = s.rows.some(\n (r) =>\n r.seatQualityScore != null &&\n r.seatQualityScore >= rowScoreFloor &&\n r.seatQualityScore <= rowScoreCeiling\n );\n return !hasRowWithinRange;\n })\n .map((s) => s.id);\n }\n\n return [];\n }, [\n compListingCeiling,\n compListingFloor,\n compListingMode,\n isBulkEdit,\n listing,\n venueMapInfo,\n ]);\n\n return {\n disabledSectionIds,\n };\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { DATA_REFRESH_RATE_IN_MILLIS_LONG } from 'src/utils/constants/constants';\nimport {\n Event,\n Feature,\n ListingClient,\n ListingGroupClient,\n} from 'src/WebApiController';\n\nexport const useGetCompListings = (\n event?: Event | null,\n selectedListingId?: number,\n currency?: string,\n selectedListingGroupId?: string | null\n) => {\n const hasGroupCompsFeature = useUserHasFeature(Feature.ListingGroupCompUi);\n\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const shouldQuery =\n activeAccountWebClientConfig.activeAccountId != null &&\n event?.viagId != null;\n\n const compListingsQuery = useQuery({\n queryKey: [\n 'ListingClient.getCompListingsByEventId',\n activeAccountWebClientConfig,\n event?.viagId,\n selectedListingId,\n ],\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n return new ListingClient(\n activeAccountWebClientConfig\n ).getCompListingsByEventId(event!.viagId!, selectedListingId, currency);\n },\n\n enabled: shouldQuery,\n staleTime: DATA_REFRESH_RATE_IN_MILLIS_LONG,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('ListingClient.getCompListingsByEventId', error, {\n trackErrorData: {\n viagogoEventId: event?.viagId,\n selectedListingId,\n },\n });\n },\n },\n });\n\n const shouldQueryListingGroupsQuery =\n activeAccountWebClientConfig.activeAccountId != null &&\n event?.viagId != null &&\n selectedListingGroupId != null &&\n hasGroupCompsFeature;\n\n const compListingsGroupQuery = useQuery({\n queryKey: [\n 'ListingGroupClient.getListingGroupCompData',\n activeAccountWebClientConfig,\n event?.viagId,\n selectedListingGroupId,\n selectedListingId,\n ],\n queryFn: () => {\n if (!shouldQueryListingGroupsQuery) {\n return null;\n }\n\n return new ListingGroupClient(\n activeAccountWebClientConfig\n ).getListingGroupCompData(event!.viagId!, selectedListingGroupId);\n },\n\n enabled: shouldQueryListingGroupsQuery,\n staleTime: DATA_REFRESH_RATE_IN_MILLIS_LONG,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('ListingGroupClient.getListingGroupCompData', error, {\n trackErrorData: {\n viagogoEventId: event?.viagId,\n selectedListingId,\n },\n });\n },\n },\n });\n\n return {\n compListingsQuery,\n compListingsGroupQuery,\n };\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useDebounce } from 'react-use';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n AutoPricingCompListingMode,\n AutoPricingOutlierMode,\n AutoPricingUndercutMode,\n CompListingQuantity,\n ListingClient,\n ListingDetailsPricingUpdates,\n ListingDetailsUpdateInput,\n SelectedSectionSettings,\n} from 'src/WebApiController';\n\ntype AutoPricingPreviewQueryKeyType =\n | {\n listingId: number | undefined;\n eventId: number | null;\n priceUpdates: ListingDetailsPricingUpdates;\n }\n | undefined;\n\nexport const useAutoPricingPreview = (\n viagogoEventId: number | null,\n listingId?: number | undefined\n) => {\n const { watch } = useFormContext();\n\n const updatedFields = watch([\n 'netProceedsFloor',\n 'netProceedsCeiling',\n 'autoPricingEnabled',\n 'currencyCode',\n\n 'compListingFloor',\n 'compListingCeiling',\n 'compListingMode',\n 'compListingOnlyForSameZoneEnabled',\n 'compListingOnlyForSelectedSectionsEnabled',\n 'compListingExcludeFanInventory',\n 'compListingExcludeDefects',\n 'compListingQuantityScoreAdjustmentEnabled',\n 'compListingQuantityScoreAdjustmentOverrideJson',\n 'compListingSelectedSectionSettings',\n 'compListingQuantityFilters',\n\n 'undercutMode',\n 'undercutAbsoluteAmount',\n 'undercutRelativeAmount',\n\n 'circuitBreakerMaxDiscountVelocityPercent',\n 'circuitBreakerMaxDiscountVelocityTicksInHours',\n 'circuitBreakerMinCompListingCount',\n 'circuitBreakerRelativeCeiling',\n 'circuitBreakerRelativeFloor',\n\n 'outlierMode',\n 'outlierStandardDeviations',\n 'outlierKthLowestLimit',\n 'outlierKthLowestLimitRelativeSpacing',\n 'outlierKthLowestLimitAbsoluteSpacing',\n ]);\n\n const getListingDetailsPricingUpdates = useCallback(\n (\n listing: [\n number | null,\n number | null,\n boolean | null,\n string | null,\n\n // Comp Listing\n number | null,\n number | null,\n AutoPricingCompListingMode | null,\n boolean | null,\n boolean | null,\n boolean | null,\n boolean | null,\n boolean | null,\n string | null,\n SelectedSectionSettings | null,\n CompListingQuantity | null,\n\n // Undercut\n AutoPricingUndercutMode | null,\n number | null,\n number | null,\n\n // Circuit Breaker\n number | null,\n number | null,\n number | null,\n number | null,\n number | null,\n\n // Outlier\n AutoPricingOutlierMode | null,\n number | null,\n number | null,\n number | null,\n number | null,\n ]\n ) => {\n const [\n netProceedsFloor,\n netProceedsCeiling,\n autoPricingEnabled,\n currencyCode,\n\n compListingFloor,\n compListingCeiling,\n compListingMode,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n compListingSelectedSectionSettings,\n compListingQuantityFilters,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n ] = listing;\n\n return {\n netProceedsFloor,\n netProceedsCeiling,\n autoPricingEnabled,\n currencyCode,\n\n compListingFloor,\n compListingCeiling,\n compListingMode,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n compListingSelectedSectionSettings,\n compListingQuantityFilters,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n } as ListingDetailsPricingUpdates;\n },\n []\n );\n\n const priceUpdates = useMemo(() => {\n return getListingDetailsPricingUpdates(updatedFields);\n }, [getListingDetailsPricingUpdates, updatedFields]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n\n const [queryKey, setQueryKey] =\n useState(undefined);\n\n useDebounce(\n () =>\n setQueryKey({\n eventId: viagogoEventId,\n listingId,\n priceUpdates: priceUpdates,\n }),\n 300,\n [viagogoEventId, listingId, JSON.stringify(priceUpdates)]\n );\n\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const shouldQuery = Boolean(\n activeAccountWebClientConfig.activeAccountId != null &&\n queryKey?.eventId &&\n queryKey?.listingId &&\n queryKey?.priceUpdates\n );\n\n const priceCalcQuery = useQuery({\n queryKey: ['ListingClient.getListingPriceCalculation', queryKey],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n const r = await new ListingClient(\n activeAccountWebClientConfig\n ).getListingPriceCalculation(\n queryKey?.eventId ?? undefined,\n queryKey?.listingId ?? undefined,\n queryKey?.priceUpdates!\n );\n return r;\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n networkMode: 'offlineFirst',\n meta: {\n persist: false,\n onError: (error: ErrorTypes) => {\n trackError(\n 'ListingClient.getListingPriceCalculation',\n error,\n priceUpdates\n );\n },\n },\n });\n\n return { priceCalcQuery, priceUpdates };\n};\n","import {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useState,\n} from 'react';\n\ntype PanelContentType = 'comparables' | 'sectionSelection' | 'none';\n\ntype ListingDetailsModalSidePanelContextType = {\n contentType: PanelContentType;\n onCloseSidePanel: () => void;\n onShowContent: (\n newContentType: PanelContentType,\n e?: React.MouseEvent\n ) => void;\n};\n\nconst ListingDetailsModalSidePanelContext =\n createContext({\n contentType: 'none',\n onCloseSidePanel: () => {},\n onShowContent: () => {},\n });\n\ntype ListingDetailsModalSidePanelContextProviderProps = {\n children: ReactNode;\n};\n\nexport const ListingDetailsModalSidePanelContextProvider = ({\n children,\n}: ListingDetailsModalSidePanelContextProviderProps) => {\n const [contentType, setContentType] = useState('none');\n\n const onCloseSidePanel = useCallback(() => {\n if (contentType !== 'none') {\n setContentType('none');\n }\n }, [contentType]);\n\n const onShowContent = useCallback(\n (\n newContentType: PanelContentType,\n e?: React.MouseEvent\n ) => {\n e?.stopPropagation();\n e?.preventDefault();\n\n if (contentType !== newContentType) {\n setContentType(newContentType);\n } else if (contentType !== 'none') {\n setContentType('none');\n }\n },\n [contentType]\n );\n\n return (\n \n {children}\n \n );\n};\n\nexport const useListingDetailsModalSidePanelContext = () =>\n useContext(ListingDetailsModalSidePanelContext);\n","import { AutoPriceResultDisplay } from 'src/components/Listings/AutoPriceResultDisplay';\nimport { Content } from 'src/contexts/ContentContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { Button, Stack } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { AutoPricingResultType } from 'src/WebApiController';\n\nimport { useListingDetailsModalSidePanelContext } from '../ListingDetailsModalSidePanel';\nimport * as styles from './AutoPricePreview.css';\nimport { useAutoPricingPreview } from './useAutoPricePreview';\n\nexport const AutoPricePreview = ({\n viagogoEventId,\n listingId,\n}: {\n listingId: number;\n viagogoEventId: number;\n}) => {\n const { priceCalcQuery } = useAutoPricingPreview(viagogoEventId, listingId);\n const isMobile = useMatchMedia('mobile');\n const { onShowContent } = useListingDetailsModalSidePanelContext();\n\n return (\n onShowContent('comparables', e)} // undefined is for toggle\n >\n \n \n \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n {priceCalcQuery.data?.autoPricingResultType && // show when result type is not null and\n priceCalcQuery.data?.autoPricingResultType !==\n AutoPricingResultType.PriceSuccess && // is not success result and\n (priceCalcQuery.data?.autoPricingResultType !==\n AutoPricingResultType.None || // is not none or there's no price display (we show N/A when there's no price indicating we can't even call the endpoint)\n !priceCalcQuery.data?.websitePrice?.disp) && (\n \n )}\n {priceCalcQuery.data?.websitePrice?.disp}\n
    \n
    \n \n
    \n \n \n
    \n {priceCalcQuery.data?.compListings?.length ?? '0'}\n
    \n
    \n \n
    \n \n onShowContent('comparables', e)}\n style={isMobile ? { width: '100%' } : undefined}\n >\n \n \n \n {priceCalcQuery.data?.errorMessage && (\n \n )}\n \n \n );\n};\n","import { ListingDetailDataField } from 'src/WebApiController';\n\nexport const enum ListingTab {\n Broadcast = 'broadcast',\n Tickets = 'tickets',\n Pricing = 'pricing',\n Sales = 'sales',\n Purchase = 'purchase',\n Tags = 'tags',\n AutoPricing = 'autopricing',\n}\n\nexport const ListingTabOrder = [\n ListingTab.Broadcast,\n ListingTab.Tickets,\n ListingTab.Pricing,\n ListingTab.AutoPricing,\n ListingTab.Sales,\n ListingTab.Purchase,\n ListingTab.Tags,\n];\n\nexport const getListingDataFieldsForTab = (tab: ListingTab) => {\n switch (tab) {\n case ListingTab.AutoPricing:\n return [ListingDetailDataField.AutoPricing];\n case ListingTab.Broadcast:\n return [ListingDetailDataField.Basic];\n case ListingTab.Pricing:\n return [ListingDetailDataField.Pricing];\n case ListingTab.Purchase:\n return [ListingDetailDataField.Purchase];\n case ListingTab.Sales:\n return [ListingDetailDataField.Sales];\n case ListingTab.Tags:\n return [ListingDetailDataField.Tags];\n case ListingTab.Tickets:\n return [ListingDetailDataField.Tickets];\n\n default:\n console.log('Warning: unhandled listing tab for data: ' + tab);\n return [] as string[]; // we if we don't recognize the tab, return empty so we'll get all data\n }\n};\n","import { ChangeEvent } from 'react';\nimport { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { Switch } from 'src/core/interim/Switch';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { Slider } from 'src/core/ui/Slider';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { useAvailableAutopricingModes } from 'src/hooks/useAvailableAutopricingModes';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { DetailGroup, DetailSection, SectionContent } from 'src/modals/common';\nimport { ResetIcon } from 'src/svgs/Viagogo';\nimport {\n OUTLIER_MODE_KTH_LOWEST_STRATEGY,\n OutlierModeKthLowestStrategy,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { STANDARD_DEVIATIONS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { getCompleteEventConfigScoreOverrides } from 'src/utils/seatScoreUtils';\nimport {\n AutoPricingCompListingMode,\n AutoPricingOutlierMode,\n Feature,\n ListingDetails,\n ListingDetailsUpdateInput,\n} from 'src/WebApiController';\n\nimport { useListingAutoPricingSettings } from '../useListingAutoPricingSettings';\nimport * as styles from './PricingSection.css';\n\nexport const AdvancePricingSettings = ({\n listing,\n disabled: externalDisabled,\n isBulkEdit,\n isStrategyEdit,\n}: {\n listing?: ListingDetails;\n disabled?: boolean;\n isBulkEdit?: boolean;\n isStrategyEdit?: boolean;\n}) => {\n const { setValue, clearErrors } = useFormContext();\n const [outlierKthLowestStrategy, setKthLowestOutlierStrategy] = useState<\n OutlierModeKthLowestStrategy | undefined\n >(OutlierModeKthLowestStrategy.Relative);\n\n const {\n canSetPrice,\n onResetAdvanceSettings,\n\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n\n compListingMode,\n compListingQuantityScoreAdjustmentEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacing,\n\n onCompListingChange,\n onCircuitBreakerChange,\n onOutlierChange,\n\n skipAdvancePricing,\n } = useListingAutoPricingSettings(listing, isBulkEdit);\n\n const { activeConfigOverride, venueMapInfo } = useEventMapContext();\n const hasExcludeFanInventoryFeature = useUserHasFeature(\n Feature.ExcludeFanInventory\n );\n const hasExcludeDefectsFeature = useUserHasFeature(Feature.ExcludeDefects);\n\n const scores = getCompleteEventConfigScoreOverrides(\n venueMapInfo?.sectionScores,\n activeConfigOverride?.scoreOverrides,\n false\n );\n\n const { outlierModes, outlierModesDisabled } = useAvailableAutopricingModes(\n true,\n null,\n null,\n Boolean(scores?.some((s) => s.score))\n );\n\n const disabled = externalDisabled || Boolean(skipAdvancePricing);\n\n return (\n }\n >\n \n {isBulkEdit && !isStrategyEdit ? (\n }\n labelPosition=\"right\"\n onChange={(e) => {\n const skip = !e.target.checked;\n setValue('skipAdvancePricing', skip);\n if (!skip) {\n setValue('skipAutoPricing', false);\n }\n }}\n checked={!skipAdvancePricing}\n />\n ) : undefined}\n {skipAdvancePricing ? null : (\n <>\n {compListingMode === AutoPricingCompListingMode.QualityScore && (\n \n \n }\n >\n ) =>\n e.stopPropagation()\n }\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (\n isChecked !== compListingQuantityScoreAdjustmentEnabled\n ) {\n onCompListingChange({\n compListingQuantityScoreAdjustmentEnabledNew:\n isChecked,\n });\n }\n }}\n />\n \n \n )}\n {hasExcludeFanInventoryFeature && (\n \n }\n >\n ) =>\n e.stopPropagation()\n }\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (isChecked !== compListingExcludeFanInventory) {\n onCompListingChange({\n compListingExcludeFanInventoryNew: isChecked,\n });\n }\n }}\n />\n \n \n )}\n {/*\n * [NOTE]\n * Exclude defects feature was built first before product changed their mind for the\n * UI to instead show the opposite, \"Include Defects\" with a default value of false.\n * Originally, the requirement was \"Exclude Defects\" with a default value of true.\n * The DB columns and pricer backend has already been finished with logic revolving\n * around the \"Exclude Defect\" verbiage, with the logic gates predicating busisness logic\n * off of \"exclude\". The UI will now show the copy \"Include Defects\" and invert the value\n * being read/written from the database, but the rest of the backend (pricer + site) will remain\n * unchanged.\n */}\n {hasExcludeDefectsFeature && (\n \n }>\n ) =>\n e.stopPropagation()\n }\n onChange={(e) => {\n const compListingExcludeDefectsNew = !e.target.checked;\n if (\n compListingExcludeDefectsNew !==\n compListingExcludeDefects\n ) {\n onCompListingChange({\n compListingExcludeDefectsNew:\n compListingExcludeDefectsNew,\n });\n }\n }}\n />\n \n \n )}\n \n }\n >\n {\n onCircuitBreakerChange(\n undefined,\n undefined,\n undefined,\n undefined,\n Math.round(count)\n );\n }}\n />\n \n \n \n }>\n e.stopPropagation()}\n onChange={(v) => {\n onOutlierChange({\n outlierModeNew: v as AutoPricingOutlierMode,\n });\n }}\n />\n \n \n {outlierMode == AutoPricingOutlierMode.StandardDeviations ? (\n \n }\n >\n e.stopPropagation()}\n onChange={(v) => {\n const value = parseInt(v ?? '');\n if (value != null && !isNaN(value)) {\n onOutlierChange({\n outlierModeNew:\n AutoPricingOutlierMode.StandardDeviations,\n outlierStandardDeviationsNew: value,\n });\n } else {\n onOutlierChange({\n outlierModeNew:\n AutoPricingOutlierMode.StandardDeviations,\n outlierStandardDeviationsNew: null,\n });\n }\n }}\n />\n \n \n ) : outlierMode == AutoPricingOutlierMode.KthLowest ? (\n \n \n \n {\n const v = parseInt(e.target.value);\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: v,\n });\n }}\n />\n \n {outlierKthLowestStrategy ==\n OutlierModeKthLowestStrategy.Relative ? (\n {\n let v = parseInt(e.target.value);\n if (v < 0) {\n v = 0;\n } else if (v > 100) {\n v = 100;\n }\n\n if (!isNaN(v)) {\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: undefined,\n outlierKthLowestLimitAbsoluteSpacingNew: null,\n outlierKthLowestLimitRelativeSpacingNew: v,\n });\n }\n }}\n />\n ) : (\n {\n const v = parseInt(e.target.value);\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: undefined,\n outlierKthLowestLimitAbsoluteSpacingNew: v,\n outlierKthLowestLimitRelativeSpacingNew: null,\n });\n }}\n />\n )}\n {\n if (!value) {\n return;\n }\n\n const strat = value as OutlierModeKthLowestStrategy;\n setKthLowestOutlierStrategy(strat);\n }}\n />\n \n \n \n ) : null}\n \n \n \n {\n clearErrors('circuitBreakerMaxDiscountVelocityPercent');\n const v = parseFloat(e.target.value) / 100;\n onCircuitBreakerChange(\n undefined,\n undefined,\n v,\n undefined,\n undefined\n );\n }}\n />\n \n {\n const v = parseInt(e.target.value);\n onCircuitBreakerChange(\n undefined,\n undefined,\n undefined,\n v,\n undefined\n );\n }}\n />\n \n \n \n \n }\n textContentId={ContentId.ResetSettings}\n onClick={onResetAdvanceSettings}\n />\n \n \n )}\n \n \n );\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { isEqual, pickBy } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useCompListingDisabledSections } from 'src/hooks/useCompListingDisabledSections';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getMatchingSectionRow,\n getSectionsSameZone,\n} from 'src/utils/seatScoreUtils';\nimport { Listing, ListingDetailsUpdateInput } from 'src/WebApiController';\n\nimport { useListingAutoPricingSettings } from '../useListingAutoPricingSettings';\nimport { RestrictSelectionType } from './AutoPricingSection.types';\n\nexport const useRestrictSelection = (\n listing: Listing | undefined,\n defaultRestrictSelectionType: RestrictSelectionType,\n restrictSelectionTypes: Record,\n isBulkEdit?: boolean\n) => {\n const {\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingSelectedSectionSettings,\n onCompListingChange,\n } = useListingAutoPricingSettings(listing, isBulkEdit);\n\n const { clearErrors } = useFormContext();\n const { venueMapInfo } = useEventMapContext();\n\n const matchingSectionRow = useMemo(() => {\n if (listing && venueMapInfo) {\n return getMatchingSectionRow(listing.seating, venueMapInfo.sections);\n }\n return null;\n }, [listing, venueMapInfo]);\n\n const { disabledSectionIds } = useCompListingDisabledSections(\n listing,\n isBulkEdit,\n compListingMode,\n compListingFloor,\n compListingCeiling\n );\n\n useEffect(() => {\n if (\n !disabledSectionIds.length ||\n !compListingSelectedSectionSettings?.sectionIdFilter\n ) {\n return;\n }\n\n const sectionIdFilterNew =\n compListingSelectedSectionSettings.sectionIdFilter.filter(\n (sid) => !disabledSectionIds.includes(sid)\n );\n\n if (\n !isEqual(\n sectionIdFilterNew,\n compListingSelectedSectionSettings.sectionIdFilter\n )\n ) {\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter: sectionIdFilterNew,\n };\n onCompListingChange({ compListingSelectedSectionSettingsNew });\n }\n }, [disabledSectionIds]);\n\n const [restrictSelectionType, setRestrictSelectionType] =\n useState(defaultRestrictSelectionType);\n\n const updateToSameZone = useCallback((): void => {\n if (\n listing &&\n !isBulkEdit &&\n venueMapInfo &&\n Object.keys(restrictSelectionTypes).includes(\n RestrictSelectionType.SpecificSections\n )\n ) {\n // Display all sections in the same zone\n const sectionsSameZone = getSectionsSameZone(\n listing.seating,\n venueMapInfo.sections\n )?.filter((s) => !disabledSectionIds.includes(s.id));\n if (sectionsSameZone) {\n const sectionIdFilter = sectionsSameZone\n .toSorted((a, b) => a.name.localeCompare(b.name))\n .map((s) => s.id);\n const rowIdFilter = (sectionsSameZone ?? [])\n .flatMap(({ rows }) => rows)\n .map(({ id }) => id);\n const sectionRowIdFilter = pickBy(\n Object.assign(\n {},\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {}\n ),\n (_, key) => sectionIdFilter.includes(parseInt(key))\n );\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter,\n rowIdFilter,\n sectionRowIdFilter,\n };\n onCompListingChange({\n compListingSelectedSectionSettingsNew,\n compListingOnlyForSameZoneEnabledNew: true,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n }\n }\n }, [\n compListingSelectedSectionSettings,\n disabledSectionIds,\n isBulkEdit,\n listing,\n onCompListingChange,\n restrictSelectionTypes,\n venueMapInfo,\n ]);\n\n const updateToSameSection = useCallback((): void => {\n const sectionIdFilter = matchingSectionRow?.section?.id\n ? [matchingSectionRow.section.id]\n : [];\n const rowIdFilter = compListingSelectedSectionSettings?.rowIdFilter ?? [];\n const sectionRowIdFilter = pickBy(\n Object.assign(\n {},\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {}\n ),\n (_, key) => sectionIdFilter.includes(parseInt(key))\n );\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter,\n rowIdFilter,\n sectionRowIdFilter,\n };\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n compListingSelectedSectionSettingsNew,\n });\n }, []);\n\n useEffect(() => {\n if (\n compListingOnlyForSelectedSectionsEnabled &&\n restrictSelectionType !== RestrictSelectionType.SameSection &&\n RestrictSelectionType.SpecificSections in restrictSelectionTypes\n ) {\n setRestrictSelectionType(RestrictSelectionType.SpecificSections);\n } else if (\n compListingOnlyForSameZoneEnabled &&\n restrictSelectionType !== RestrictSelectionType.SameZone &&\n RestrictSelectionType.SameZone in restrictSelectionTypes\n ) {\n setRestrictSelectionType(RestrictSelectionType.SameZone);\n }\n }, [\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n restrictSelectionTypes,\n ]);\n\n const onRestrictSelectionTypeChange = useCallback(\n (type: RestrictSelectionType | null) => {\n clearErrors('compListingFloor');\n setRestrictSelectionType(type ?? defaultRestrictSelectionType);\n if (type === RestrictSelectionType.SameZone) {\n return updateToSameZone();\n } else if (type === RestrictSelectionType.SpecificSections) {\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n });\n return;\n } else {\n // Same section\n updateToSameSection();\n }\n },\n [\n clearErrors,\n setRestrictSelectionType,\n updateToSameZone,\n onCompListingChange,\n updateToSameSection,\n ]\n );\n\n return {\n restrictSelectionType,\n disabledSectionIds,\n onRestrictSelectionTypeChange,\n };\n};\n","import { ChangeEvent, useCallback, useEffect, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { AutoPricingSectionRowIdFilter } from 'src/components/AutoPricing/components/AutoPricingSectionRowIdFilter';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { Switch } from 'src/core/interim/Switch';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { Slider } from 'src/core/ui/Slider';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { SectionSelectDialog } from 'src/dialogs/SectionSelectDialog';\nimport { useAvailableAutopricingModes } from 'src/hooks/useAvailableAutopricingModes';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useCompQuantitiesFilter } from 'src/hooks/useCompQuantitiesFilter';\nimport { useAllInPriceFromListPrice } from 'src/hooks/useListAndAllInPrice';\nimport { useUndercutAmountSettings } from 'src/hooks/useUndercutAmountSettings';\nimport { Detail, DetailGroup } from 'src/modals/common';\nimport { EditIcon, IconsFill, PlusIcon, ResetIcon } from 'src/svgs/Viagogo';\nimport {\n convertSliderValueFromServer,\n convertSliderValueToServer,\n getUndercutPriceRepresentingMode,\n SLIDER_MAX,\n SLIDER_MIN,\n UNDERCUT_PRICE_MODE_OPTIONS,\n UndercutPriceSettingsMode,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { AUTO_PRICING_RESULT_TYPES_OPTIONS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { getCompleteEventConfigScoreOverrides } from 'src/utils/seatScoreUtils';\nimport {\n AutoPricingCompListingMode,\n AutoPricingUndercutMode,\n Listing,\n ListingDetailsUpdateInput,\n} from 'src/WebApiController';\n\nimport { useListingDetailsModalSidePanelContext } from '../ListingDetailsModalSidePanel';\nimport { useListingAutoPricingSettings } from '../useListingAutoPricingSettings';\nimport { RestrictSelectionType } from './AutoPricingSection.types';\nimport { useRestrictSelection } from './AutoPricingSettingsSection.hook';\nimport * as styles from './PricingSection.css';\n\n/**\n * @deprecated - Cleanup when cleaning up SimplifiedAutoPricingUiV2 and IntelligibleAutoPricingSettings field\n */\nexport const AutoPricingSettingsSection = ({\n listing,\n disabled,\n listingHasParent,\n isBulkEdit,\n isGlobalEdit,\n isStrategyEdit,\n}: {\n listing?: Listing;\n disabled?: boolean;\n listingHasParent: boolean;\n isBulkEdit?: boolean;\n isGlobalEdit?: boolean;\n isStrategyEdit?: boolean;\n}) => {\n const autoPricingResultStateContent = (\n AUTO_PRICING_RESULT_TYPES_OPTIONS_TO_CID as Record<\n string,\n string | undefined\n >\n )[listing?.autoPrcResult ?? ''];\n\n const { setValue, clearErrors, formState } =\n useFormContext();\n\n const sectionSelectDialog = useBasicDialog();\n\n const { contentType, onShowContent, onCloseSidePanel } =\n useListingDetailsModalSidePanelContext();\n\n const {\n canSetPrice,\n showAutoPricingSettings,\n uiCurrency,\n currencyNumberFormat,\n\n onResetSettings,\n eventPricingSettings,\n accountPricingSettings,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingSelectedSectionSettings,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n\n onUndercutChange,\n onCompListingChange,\n onCompListingModeChange,\n\n skipCompListing,\n skipUndercut,\n } = useListingAutoPricingSettings(listing, isBulkEdit);\n\n const {\n undercutAbsoluteAmountMode,\n setUndercutAbsoluteAmountMode,\n undercutRelativeAmountMode,\n setUndercutRelativeAmountMode,\n } = useUndercutAmountSettings(undercutAbsoluteAmount, undercutRelativeAmount);\n\n const {\n quantitiesFilterOptions,\n quantitiesFilterValue,\n onUpdateQuantitiesFilter,\n } = useCompQuantitiesFilter(\n compListingQuantityScoreAdjustmentOverrideJson,\n onCompListingChange\n );\n\n const compListingFloorError = formState.errors.compListingFloor?.message;\n const compListingSelectedSectionError =\n formState.errors.compListingSelectedSectionSettings?.message;\n\n const parsedQuantityOverridesJson = JSON.parse(\n compListingQuantityScoreAdjustmentOverrideJson || 'null'\n );\n\n const quantityFilterValue: number | null =\n parsedQuantityOverridesJson?.quantityFilter;\n\n const undercutAbsoluteAmountError =\n formState.errors.undercutAbsoluteAmount?.message;\n const undercutRelativeAmountError =\n formState.errors.undercutRelativeAmount?.message;\n\n const { activeConfigOverride, venueMapsByScoreModelQuery } =\n useEventMapContext();\n\n const defaultScoreOverrides = useMemo(() => {\n // In the backend, if AVG scores are missing, then we always fallback to MVG, even if AVG is explicitly selected\n return (\n venueMapsByScoreModelQuery?.data?.AdvancedVenueGeometry?.sectionScores ??\n venueMapsByScoreModelQuery?.data?.MergedVenueGeometry?.sectionScores ??\n venueMapsByScoreModelQuery?.data?.VenueGeometry?.sectionScores\n );\n }, [\n venueMapsByScoreModelQuery?.data?.AdvancedVenueGeometry?.sectionScores,\n venueMapsByScoreModelQuery?.data?.MergedVenueGeometry?.sectionScores,\n venueMapsByScoreModelQuery?.data?.VenueGeometry?.sectionScores,\n ]);\n\n const scores = getCompleteEventConfigScoreOverrides(\n defaultScoreOverrides,\n activeConfigOverride?.scoreOverrides,\n false\n );\n\n const {\n compListingModes,\n compListingModesDisabled,\n undercutModes,\n undercutModesDisabled,\n defaultRestrictSelectionType,\n restrictSelectionTypes,\n } = useAvailableAutopricingModes(\n true,\n undercutMode,\n compListingMode,\n Boolean(scores?.some((s) => s.score)),\n listingHasParent,\n isGlobalEdit,\n compListingOnlyForSelectedSectionsEnabled\n );\n\n if (\n compListingMode == AutoPricingCompListingMode.QualityScore &&\n compListingModesDisabled[AutoPricingCompListingMode.QualityScore] != null\n ) {\n setValue('compListingMode', AutoPricingCompListingMode.SameEvent);\n setValue('compListingOnlyForSameZoneEnabled', false);\n }\n\n const {\n restrictSelectionType,\n onRestrictSelectionTypeChange,\n disabledSectionIds,\n } = useRestrictSelection(\n listing,\n defaultRestrictSelectionType as RestrictSelectionType,\n restrictSelectionTypes,\n isBulkEdit\n );\n\n const isDealScoreMode =\n (undercutMode ??\n eventPricingSettings?.undercutMode ??\n accountPricingSettings?.undercutMode) === AutoPricingUndercutMode.Deal;\n\n const isParentListingMode =\n (compListingMode ??\n eventPricingSettings?.compListingMode ??\n accountPricingSettings?.compListingMode) ===\n AutoPricingCompListingMode.ParentListing;\n\n const showCompListingSettingsDetails = !(\n !compListingMode ||\n compListingMode === AutoPricingCompListingMode.SameZone ||\n compListingMode === AutoPricingCompListingMode.SameEvent ||\n compListingMode === AutoPricingCompListingMode.ParentListing\n );\n\n const showCompListingRestictSelectionDetails =\n compListingMode != null && Object.values(restrictSelectionTypes).length > 0;\n\n const hasAnyActiveRestrictionApplied = useMemo(() => {\n let applied = false;\n const restirctSelectionTypes = Object.keys(restrictSelectionTypes);\n restirctSelectionTypes.forEach((type) => {\n if (type === RestrictSelectionType.SameZone) {\n applied = applied || compListingOnlyForSameZoneEnabled === true;\n }\n if (\n type === RestrictSelectionType.SpecificSections ||\n type === RestrictSelectionType.SameSection\n ) {\n applied = applied || compListingOnlyForSelectedSectionsEnabled === true;\n }\n });\n\n return applied;\n }, [\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n restrictSelectionTypes,\n ]);\n\n const isCompListingAmountDisabled =\n disabled ||\n listing?.isDeleted ||\n !canSetPrice ||\n !compListingMode ||\n compListingMode === AutoPricingCompListingMode.SameZone ||\n compListingMode === AutoPricingCompListingMode.SameEvent ||\n compListingMode === AutoPricingCompListingMode.ParentListing;\n\n useEffect(() => {\n if (\n contentType === 'sectionSelection' &&\n (!showCompListingRestictSelectionDetails ||\n !hasAnyActiveRestrictionApplied)\n ) {\n onCloseSidePanel();\n }\n }, [\n showCompListingRestictSelectionDetails,\n hasAnyActiveRestrictionApplied,\n contentType,\n onShowContent,\n onCloseSidePanel,\n ]);\n\n const onLaunchSectionSelection = useCallback(\n (e: React.MouseEvent) => {\n if (!isBulkEdit && listing?.id) {\n onShowContent('sectionSelection', e);\n } else {\n sectionSelectDialog.launchDialog();\n }\n },\n [isBulkEdit, listing?.id, onShowContent, sectionSelectDialog]\n );\n\n const marketPrice = useAllInPriceFromListPrice(listing?.undNewPrice, listing);\n\n if (!showAutoPricingSettings) return null;\n\n return (\n <>\n {isBulkEdit && !isStrategyEdit ? (\n \n }\n labelPosition=\"right\"\n onChange={(e) => {\n const skip = !e.target.checked;\n setValue('skipCompListing', skip);\n if (!skip) {\n setValue('skipAutoPricing', false);\n }\n }}\n checked={!skipCompListing}\n />\n \n ) : undefined}\n {skipCompListing ? null : (\n <>\n \n \n \n \n \n
    \n \n
    \n e.stopPropagation()}\n onChange={onCompListingModeChange}\n />\n
    \n
    \n {showCompListingSettingsDetails && (\n <>\n \n \n
    \n \n
    \n \n {\n const v = parseFloat(e.target.value);\n if (!isNaN(v)) {\n if (\n v >= SLIDER_MIN * 100 &&\n v <= SLIDER_MAX * 100 &&\n convertSliderValueToServer(v) < compListingCeiling\n ) {\n onCompListingChange({\n compListingFloorNew:\n convertSliderValueToServer(v),\n });\n }\n }\n }}\n postfixDisplay=\"%\"\n placeholder={\n compListingMode == null\n ? eventPricingSettings?.compListingFloor?.toString() ??\n accountPricingSettings?.compListingFloor?.toString() ??\n undefined\n : undefined\n }\n />\n \n
    \n \n
    \n \n {\n const v = parseFloat(e.target.value);\n if (!isNaN(v)) {\n if (\n v >= SLIDER_MIN * 100 &&\n v <= SLIDER_MAX * 100 &&\n convertSliderValueToServer(v) > compListingFloor\n ) {\n onCompListingChange({\n compListingCeilingNew:\n convertSliderValueToServer(v),\n });\n }\n }\n }}\n postfixDisplay=\"%\"\n placeholder={\n compListingMode == null\n ? eventPricingSettings?.compListingCeiling?.toString() ??\n accountPricingSettings?.compListingCeiling?.toString() ??\n undefined\n : undefined\n }\n />\n \n
    \n \n
    \n
    \n
    \n \n {!isCompListingAmountDisabled && (\n \n (\n \n {roundToPrecision(val, 0)}%\n \n )}\n onValueChange={([floor, ceil]) => {\n onCompListingChange({\n compListingFloorNew:\n convertSliderValueToServer(floor),\n compListingCeilingNew:\n convertSliderValueToServer(ceil),\n });\n }}\n />\n
    \n \n
    \n
    \n \n )}\n \n \n )}\n {showCompListingRestictSelectionDetails && (\n \n }\n style={{ width: '100%' }}\n >\n \n \n\n }\n style={{ width: '100%' }}\n >\n ) => e.stopPropagation()}\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (isChecked) {\n if (!hasAnyActiveRestrictionApplied) {\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew:\n defaultRestrictSelectionType ===\n RestrictSelectionType.SameZone,\n compListingOnlyForSelectedSectionsEnabledNew:\n defaultRestrictSelectionType ===\n RestrictSelectionType.SpecificSections,\n });\n }\n } else {\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n compListingSelectedSectionSettingsNew: null,\n });\n }\n }}\n />\n \n {hasAnyActiveRestrictionApplied && (\n \n
    \n \n
    \n e.stopPropagation()}\n onChange={onRestrictSelectionTypeChange}\n />\n
    \n )}\n {hasAnyActiveRestrictionApplied &&\n (!isBulkEdit || compListingOnlyForSelectedSectionsEnabled) &&\n !isGlobalEdit &&\n !isStrategyEdit && (\n \n \n {compListingSelectedSectionSettings?.sectionIdFilter\n ?.length ? (\n <>\n \n \n \n }\n textContentId={ContentId.EditSections}\n onClick={onLaunchSectionSelection}\n disabled={disabled}\n style={{ paddingLeft: 0, paddingRight: 0 }}\n />\n \n ) : (\n \n }\n textContentId={ContentId.SelectSections}\n onClick={onLaunchSectionSelection}\n disabled={disabled}\n style={{ padding: 0 }}\n />\n )}\n \n \n )}\n \n )}\n \n )}\n\n {isBulkEdit && !isStrategyEdit ? (\n \n }\n labelPosition=\"right\"\n onChange={(e) => {\n const skip = !e.target.checked;\n setValue('skipUndercut', skip);\n if (!skip) {\n setValue('skipAutoPricing', false);\n }\n }}\n checked={!skipUndercut}\n />\n \n ) : undefined}\n {skipUndercut ? null : (\n <>\n \n \n \n {isParentListingMode ? (\n
    \n \n
    \n ) : (\n <>\n \n \n
    \n \n
    \n e.stopPropagation()}\n onChange={(v) => {\n clearErrors('undercutAbsoluteAmount');\n clearErrors('undercutRelativeAmount');\n if (v) {\n onUndercutChange(v as AutoPricingUndercutMode);\n } else {\n onUndercutChange(null, null, null);\n }\n }}\n />\n
    \n \n
    \n
    \n
    \n {isDealScoreMode && (\n
    \n \n
    \n )}\n \n )}\n \n \n {\n if (!value) return;\n\n const mode = value as UndercutPriceSettingsMode;\n setUndercutRelativeAmountMode(mode);\n\n if (undercutRelativeAmount) {\n const curAmountAbs = Math.abs(undercutRelativeAmount);\n onUndercutChange(\n undefined,\n undefined,\n getUndercutPriceRepresentingMode(curAmountAbs, mode)\n );\n }\n }}\n />\n\n
    \n \n
    \n\n \n {\n clearErrors('undercutAbsoluteAmount');\n clearErrors('undercutRelativeAmount');\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n const relativeValue = Math.min(v, 100) / 100;\n if (\n undercutRelativeAmountMode ===\n UndercutPriceSettingsMode.Premium\n ) {\n onUndercutChange(undefined, undefined, -relativeValue);\n } else {\n onUndercutChange(undefined, undefined, relativeValue);\n }\n } else {\n onUndercutChange(undefined, undefined, null);\n }\n }}\n />\n \n
    \n \n
    \n {\n if (!value) return;\n\n const mode = value as UndercutPriceSettingsMode;\n setUndercutAbsoluteAmountMode(mode);\n\n if (undercutAbsoluteAmount) {\n const curAmountAbs = Math.abs(undercutAbsoluteAmount);\n onUndercutChange(\n undefined,\n getUndercutPriceRepresentingMode(curAmountAbs, mode)\n );\n }\n }}\n />\n
    \n \n
    \n \n {\n clearErrors('undercutAbsoluteAmount');\n clearErrors('undercutRelativeAmount');\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n if (\n undercutAbsoluteAmountMode ===\n UndercutPriceSettingsMode.Premium\n ) {\n onUndercutChange(undefined, -v);\n } else {\n onUndercutChange(undefined, v);\n }\n } else {\n onUndercutChange(undefined, null);\n }\n }}\n />\n \n
    \n
    \n \n )}\n {autoPricingResultStateContent && (\n \n }\n detail={\n \n \n \n }\n />\n \n )}\n {!isBulkEdit && !isStrategyEdit && marketPrice != null && (\n \n }\n detail={{currencyNumberFormat.format(marketPrice)}}\n />\n \n )}\n \n }\n textContentId={ContentId.ResetSettings}\n onClick={onResetSettings}\n />\n \n {\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter: selectedSections.map((s) => s.id),\n rowIdFilter: compListingSelectedSectionSettings?.rowIdFilter ?? [],\n sectionRowIdFilter:\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {},\n };\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n compListingSelectedSectionSettingsNew,\n });\n sectionSelectDialog.closeDialog();\n clearErrors('compListingSelectedSectionSettings');\n }}\n onClosed={sectionSelectDialog.closeDialog}\n />\n \n );\n};\n","import { ChangeEvent, useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState } from 'src/core/POS/PosTextField';\nimport { Radio, RadioGroup } from 'src/core/ui';\nimport { Stack } from 'src/core/ui';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { DetailGroup, DetailSection, SectionContent } from 'src/modals/common';\nimport {\n PRICE_FLOOR_CEILING_MODE_OPTIONS,\n PriceFloorCeilingMode,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getAllInPriceFromListPrice,\n getListPriceFromAllinPrice,\n} from 'src/utils/inventoryUtils';\nimport {\n AutoPricingCompListingMode,\n ListingDetails,\n ListingDetailsUpdateInput,\n Marketplace,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { useListingAutoPricingSettings } from '../useListingAutoPricingSettings';\nimport * as styles from './PricingSection.css';\n\nexport const PricingProtection = ({\n listing,\n disabled,\n isBulkEdit,\n}: {\n listing?: ListingDetails | null;\n disabled?: boolean;\n isBulkEdit?: boolean;\n}) => {\n const { setValue, watch, clearErrors, formState } =\n useFormContext();\n\n const { loginContext } = useAppContext();\n const stubHubMkpSettings =\n loginContext?.user?.activeAccount?.marketplaceSettings?.find(\n (m) => m.mkp === Marketplace.StubHub\n );\n\n const dontChangeText = useContent(ContentId.DontChange);\n const listPrice = watch('listPrice');\n const netProceedsFloor = watch('netProceedsFloor');\n const netProceedsCeiling = watch('netProceedsCeiling');\n const marketplacePriceUpdates = watch('marketplacePriceUpdates');\n\n const floorError = formState.errors.netProceedsFloor?.message;\n const ceilingError = formState.errors.netProceedsCeiling?.message;\n\n const {\n canSetPrice,\n autoPricingEnabled,\n uiCurrency,\n compListingMode,\n skipPriceProtection,\n } = useListingAutoPricingSettings(listing, isBulkEdit);\n\n const turnOffSkipSetting = useCallback(\n () => setValue('skipPriceProtection', false),\n [setValue]\n );\n\n const priceProtectionDisabled =\n disabled ||\n listing?.isDeleted ||\n !canSetPrice ||\n Boolean(\n autoPricingEnabled &&\n compListingMode === AutoPricingCompListingMode.ParentListing\n );\n\n const adjustListPriceToBeWithinFloorAndCeiling = useCallback(() => {\n if (listPrice != null) {\n if (netProceedsFloor != null && listPrice < netProceedsFloor) {\n setValue('listPrice', netProceedsFloor);\n } else if (netProceedsCeiling != null && listPrice > netProceedsCeiling) {\n setValue('listPrice', netProceedsCeiling);\n }\n }\n marketplacePriceUpdates\n .filter((m) => m.priceByMarketplace)\n .forEach((m, i) => {\n if (m.listPrice != null) {\n if (netProceedsFloor != null && m.listPrice < netProceedsFloor) {\n setValue(\n `marketplacePriceUpdates.${i}.listPrice`,\n netProceedsFloor\n );\n } else if (\n netProceedsCeiling != null &&\n m.listPrice > netProceedsCeiling\n ) {\n setValue(\n `marketplacePriceUpdates.${i}.listPrice`,\n netProceedsCeiling\n );\n }\n }\n });\n }, [\n listPrice,\n marketplacePriceUpdates,\n netProceedsCeiling,\n netProceedsFloor,\n setValue,\n ]);\n\n const { value: priceFloorMode, setUserSetting: setPriceFloorMode } =\n useServerUserSetting({\n id: UserSetting.PriceFloorCeilingMode,\n currentLoginUserOnly: true,\n });\n\n const onPriceFloorChange = useCallback(\n (e: ChangeEvent) => {\n turnOffSkipSetting();\n const v = parseFloat(e.target.value);\n if (v >= 0 && v < Number.MAX_VALUE) {\n clearErrors('listPrice');\n marketplacePriceUpdates?.forEach((_, i) =>\n clearErrors(`marketplacePriceUpdates.${i}.listPrice`)\n );\n if (netProceedsCeiling && v < netProceedsCeiling) {\n clearErrors('netProceedsFloor');\n }\n\n let newV = v;\n if (priceFloorMode === PriceFloorCeilingMode.Website) {\n // If we're editing in WebSite mode, we need to convert it to proceeds\n newV = getListPriceFromAllinPrice(\n v,\n listing,\n stubHubMkpSettings?.sellerFee\n )!;\n }\n\n setValue('netProceedsFloor', newV);\n } else {\n setValue('netProceedsFloor', null);\n }\n },\n [\n turnOffSkipSetting,\n clearErrors,\n marketplacePriceUpdates,\n netProceedsCeiling,\n priceFloorMode,\n setValue,\n listing,\n stubHubMkpSettings?.sellerFee,\n ]\n );\n\n const onPriceCeilingChange = useCallback(\n (e: ChangeEvent) => {\n turnOffSkipSetting();\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n clearErrors('listPrice');\n marketplacePriceUpdates?.forEach((_, i) =>\n clearErrors(`marketplacePriceUpdates.${i}.listPrice`)\n );\n if (netProceedsFloor && v > netProceedsFloor) {\n clearErrors('netProceedsCeiling');\n }\n\n let newV = v;\n if (priceFloorMode === PriceFloorCeilingMode.Website) {\n // If we're editing in WebSite mode, we need to convert it to proceeds\n newV = getListPriceFromAllinPrice(\n v,\n listing,\n stubHubMkpSettings?.sellerFee\n )!;\n }\n\n setValue('netProceedsCeiling', newV);\n } else {\n setValue('netProceedsCeiling', null);\n }\n },\n [\n turnOffSkipSetting,\n clearErrors,\n marketplacePriceUpdates,\n netProceedsFloor,\n priceFloorMode,\n setValue,\n listing,\n stubHubMkpSettings?.sellerFee,\n ]\n );\n\n return (\n <>\n }>\n {isBulkEdit ? (\n }\n labelPosition=\"right\"\n onChange={(e) => setValue('skipPriceProtection', !e.target.checked)}\n checked={!skipPriceProtection}\n />\n ) : undefined}\n\n \n \n }>\n \n \n {PRICE_FLOOR_CEILING_MODE_OPTIONS.map((m) => (\n \n ))}\n \n \n \n \n\n \n \n
    \n \n
    \n \n \n \n
    \n \n
    \n \n \n \n
    \n
    \n\n {isBulkEdit &&\n ((netProceedsFloor ?? 0) > 0 || (netProceedsCeiling ?? 0) > 0) && (\n \n \n }\n />\n \n )}\n
    \n
    \n \n );\n};\n","import { useCallback, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { SimplifiedAutopricingGuidedPrice } from 'src/components/AutoPricing/SimplifiedAutopricingSection';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { Button, Stack, Switch } from 'src/core/ui';\nimport { useListingHasVenueMapInfo } from 'src/hooks/useListingHasVenueMapInfo';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { DetailGroup, DetailSection, SectionContent } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n Feature,\n Listing,\n ListingDetails,\n ListingDetailsUpdateInput,\n} from 'src/WebApiController';\n\nimport { AutoPricePreview } from '../AutoPricePreview';\nimport { ListingTab } from '../listingDetailsUtils';\nimport { useListingAutoPricingSettings } from '../useListingAutoPricingSettings';\nimport { AdvancePricingSettings } from './AdvancePricingSection';\nimport { AutoPricingSettingsSection } from './AutoPricingSettingsSection';\nimport { AutoPricingStrategySection } from './AutoPricingStrategySection';\nimport { PricingProtection } from './PricingProtection';\n\n/**\n *\n * @deprecated - Use ListingAutoPricingSettingsFormContentWrapper instead. IntelligibleAutoPricingSettings is GA\n */\nexport const AutoPricingSection = ({\n listing,\n disabled,\n isBulkEdit,\n isGlobalEdit,\n isStrategyEdit,\n listingHasParent,\n onSwitchToTab,\n}: {\n listing?: Listing | null;\n disabled?: boolean;\n isBulkEdit?: boolean;\n isGlobalEdit?: boolean;\n isStrategyEdit?: boolean;\n listingHasParent?: boolean;\n onSwitchToTab?: (tabName: ListingTab) => void;\n}) => {\n const { setValue } = useFormContext();\n\n const {\n canSetPrice,\n canAutoPrice,\n autoPricingEnabled,\n setAutoPricingDefaults,\n showAutoPricingSettings,\n skipAutoPricing,\n event,\n } = useListingAutoPricingSettings(listing, isBulkEdit);\n\n const hasAutoPricingUiGateRemovalFeature = useUserHasFeature(\n Feature.RemoveUiGateOnUnmap\n );\n\n const [showDetailedSettings, setShowDetailedSettings] = useState(\n !isStrategyEdit && !isBulkEdit ? false : true\n );\n\n const turnOffSkipSetting = useCallback(\n () => setValue('skipAutoPricing', false),\n [setValue]\n );\n\n const { mapExists, hasVenueMapInfo } = useListingHasVenueMapInfo(\n listing,\n hasAutoPricingUiGateRemovalFeature\n );\n\n if (!canSetPrice || !canAutoPrice) {\n return null;\n }\n\n return (\n <>\n }>\n {isBulkEdit && !isStrategyEdit ? (\n }\n labelPosition=\"right\"\n onChange={(e) => {\n const skip = !e.target.checked;\n setValue('skipAutoPricing', skip);\n if (!skip) {\n if (autoPricingEnabled == null) {\n // When this is turned on, we want to also set the value of autoPricingEnabled\n // to false so it will match what the Switch is reflecting\n setValue('autoPricingEnabled', false);\n }\n } else {\n // If skip is set to true, ensure all other skips are set to true\n setValue('skipAdvancePricing', true);\n setValue('skipCompListing', true);\n setValue('skipUndercut', true);\n }\n }}\n checked={!skipAutoPricing}\n />\n ) : undefined}\n \n {(isBulkEdit || hasVenueMapInfo) && canAutoPrice ? (\n <>\n {!isStrategyEdit && (\n \n \n \n }\n style={{ width: 'auto' }}\n >\n \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n turnOffSkipSetting();\n if (isChecked !== autoPricingEnabled) {\n setValue('autoPricingEnabled', isChecked);\n\n if (isChecked) {\n // If enabled, set defaults where necessary\n setAutoPricingDefaults();\n }\n }\n }}\n />\n
    \n \n \n
    \n }\n >\n \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n setShowDetailedSettings(isChecked);\n }}\n />\n \n \n \n
    \n )}\n\n {showDetailedSettings ? (\n <>\n {!isBulkEdit &&\n !isStrategyEdit &&\n event?.viagId &&\n listing?.id && (\n \n \n \n )}\n \n \n ) : (\n <>\n \n {!isBulkEdit &&\n !isStrategyEdit &&\n event?.viagId &&\n listing?.id && (\n \n \n \n )}\n \n )}\n \n ) : (\n \n \n {!canAutoPrice ? (\n \n ) : (\n !isBulkEdit &&\n (mapExists && !hasVenueMapInfo ? (\n <>\n \n\n onSwitchToTab?.(ListingTab.Broadcast)}\n style={{ width: 'max-content', padding: '0' }}\n >\n \n \n \n ) : (\n \n ))\n )}\n \n \n )}\n \n \n {showDetailedSettings && (\n \n )}\n {showDetailedSettings &&\n (isBulkEdit || hasVenueMapInfo) &&\n showAutoPricingSettings && (\n \n )}\n \n );\n};\n","import { ComponentProps, useCallback, useMemo, useState } from 'react';\nimport {\n Controller,\n FormProvider,\n useForm,\n UseFormSetValue,\n} from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { AutoPricingSettingsFormContent } from 'src/components/AutoPricing/AutoPricingSettingsFormContent/AutoPricingSettingsFormContent';\nimport { CancelButton } from 'src/components/Buttons';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog/useConfirmDialog';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useAutoPricingStrategies } from 'src/hooks/api/useAutoPricingStrategies';\nimport { useUserHasAutopricingFeature } from 'src/hooks/useUserHasAutopricingFeature';\nimport { AutoPricingSection } from 'src/modals/ListingDetails/components/PricingSection/AutoPricingSection';\nimport { validateAutoPricingSettings } from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n AutoPricingSettingsCollection,\n Feature,\n Listing,\n ListingDetailsUpdateInput,\n VenueZoneConfigType,\n} from 'src/WebApiController';\n\nexport type AutoPricingStrategyDialogProps = ComponentProps & {\n defaultValues?: AutoPricingSettingsCollectionInput;\n listing?: Listing;\n listingHasParent?: boolean;\n disabled?: boolean;\n onStrategyUpdated?: (strategyId: number) => void;\n isBulkEdit?: boolean;\n};\n\nexport type AutoPricingSettingsCollectionInput = ListingDetailsUpdateInput & {\n autoPricingSettingsCollectionId: number | null;\n strategyName: string;\n autoPricingDefaultQuantityFiltersJson: string;\n scoreModel: number | null;\n autoPriceFrequency: number | null;\n venueZoneConfigType: VenueZoneConfigType | null;\n venueZoneOverrideId: number | null;\n};\n\nexport const AutoPricingStrategyDialog = ({\n defaultValues,\n ...rest\n}: AutoPricingStrategyDialogProps) => {\n const methods = useForm({\n defaultValues,\n });\n\n return (\n \n \n \n );\n};\n\nfunction AutoPricingStrategyDialogContent({\n defaultValues,\n listing,\n listingHasParent,\n isBulkEdit,\n onClosed,\n onStrategyUpdated,\n onCancel,\n disabled,\n control,\n formState: { errors },\n watch,\n clearErrors,\n setError,\n setValue,\n getValues,\n handleSubmit,\n reset,\n ...rest\n}: AutoPricingStrategyDialogProps &\n Omit<\n ComponentProps<\n typeof FormProvider\n >,\n 'children'\n >) {\n const { loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n\n const uiCurrency = useMemo(\n () =>\n getUiCurrency(\n listing?.currency ?? loginContext?.user?.activeAccount?.currencyCode\n ),\n [\n getUiCurrency,\n listing?.currency,\n loginContext?.user?.activeAccount?.currencyCode,\n ]\n );\n\n const { showErrorDialog } = useErrorBoundaryContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const requiredMsg = useContent(ContentId.Required);\n const floorMustBeLessThanCeilingError = useContent(\n ContentId.FloorMustBeLessThanCeiling\n );\n const compListingFloorCeilingError = useContent(\n ContentId.CompListingFloorMustLessThanCeiling\n );\n\n const {\n openConfirmDialog: openConfirmDeleteDialog,\n closeConfirmDialog: closeConfirmDeleteDialog,\n } = useConfirmDialog();\n\n const autoPricingSettingsCollectionId = watch(\n 'autoPricingSettingsCollectionId'\n );\n\n const hasIntelligibleAutoPricingSettingsFeature =\n useUserHasAutopricingFeature(Feature.IntelligibleAutoPricingSettings);\n const hasAllowSeatScoreCompListingModeFeature = useUserHasAutopricingFeature(\n Feature.AllowSeatScoreCompListingMode\n );\n\n const { upsertAutoPricingStrategy, deleteAutoPricingStrategy } =\n useAutoPricingStrategies(listing, isBulkEdit);\n\n const onSubmit = useCallback(\n async (strategyInput: AutoPricingSettingsCollectionInput) => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const input = strategyInput as AutoPricingSettingsCollection;\n const id = await upsertAutoPricingStrategy({\n input,\n });\n\n if (id) {\n onStrategyUpdated?.(id);\n }\n },\n (error) => {\n showErrorDialog('PricingClient.upsertAutoPricingStrategy', error, {\n trackErrorData: strategyInput,\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [onStrategyUpdated, showErrorDialog, upsertAutoPricingStrategy]\n );\n\n const onSubmitHandler = useCallback(() => {\n const listForm = getValues();\n\n if (\n !validateAutoPricingSettings(\n clearErrors,\n setError,\n setValue as unknown as UseFormSetValue,\n listForm,\n floorMustBeLessThanCeilingError,\n compListingFloorCeilingError,\n requiredMsg,\n true // isStrategy\n )\n ) {\n return;\n }\n\n handleSubmit(onSubmit)();\n return;\n }, [\n clearErrors,\n compListingFloorCeilingError,\n floorMustBeLessThanCeilingError,\n getValues,\n handleSubmit,\n onSubmit,\n requiredMsg,\n setError,\n setValue,\n ]);\n\n const onStrategyDelete = useCallback(() => {\n closeConfirmDeleteDialog();\n\n if (!autoPricingSettingsCollectionId) return;\n\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n await deleteAutoPricingStrategy({\n collectionId: autoPricingSettingsCollectionId,\n });\n\n onClosed?.();\n },\n (error) => {\n showErrorDialog('PricingClient.deleteAutoPricingStrategy', error, {\n trackErrorData: { autoPricingSettingsCollectionId },\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n }, [\n autoPricingSettingsCollectionId,\n closeConfirmDeleteDialog,\n deleteAutoPricingStrategy,\n onClosed,\n showErrorDialog,\n ]);\n\n return (\n <>\n \n ) : (\n \n )\n }\n onKeyUp={(e) => {\n if (e.key === 'Enter') {\n onSubmitHandler();\n }\n }}\n onOpened={() => {\n reset(defaultValues);\n }}\n footer={\n \n <>\n {autoPricingSettingsCollectionId ? (\n \n openConfirmDeleteDialog({\n size: 'm',\n headerText: (\n \n ),\n bodyText: ,\n onOkay: onStrategyDelete,\n onCancel: closeConfirmDeleteDialog,\n okText: ContentId.Yes,\n cancelText: ContentId.No,\n })\n }\n >\n \n \n ) : (\n \n )}\n \n \n {onClosed && (\n \n )}\n \n \n \n \n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n \n \n\n (\n }\n >\n \n \n )}\n />\n {hasIntelligibleAutoPricingSettingsFeature ? (\n \n ) : (\n \n )}\n \n \n \n \n );\n}\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport {\n AutoPricingSettingsCollectionInput,\n AutoPricingStrategyDialog,\n AutoPricingStrategyDialogProps,\n} from 'src/dialogs/AutoPricingStrategyDialog';\nimport { useAutoPricingStrategies } from 'src/hooks/api/useAutoPricingStrategies';\nimport { EditIcon, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport {\n AutoPricingSettingsCollection,\n ListingDetailsAutoPricingSectionUpdatesV2,\n} from 'src/WebApiController';\n\nimport { useAutoPricingSettings } from '../useBulkAutoPricingSettings';\nimport { PricingSetting } from './PricingSetting';\n\nexport const AutoPricingStrategySetting = () => {\n const {\n openDialog: openAutoPricingStrategyDialog,\n closeDialog: closeAutoPricingStrategyDialog,\n } = useDialog(\n DialogId.AutoPricingStrategy,\n AutoPricingStrategyDialog\n );\n const { setValue } =\n useFormContext();\n const { autoPricingStrategiesQuery } = useAutoPricingStrategies();\n\n const [selectedAutoPricingStrategyId, setSelectedAutoPricingStrategyId] =\n useState(null);\n\n const createStrategyText = useContent(ContentId.CreatePricingStrategy);\n\n const keyOptionsContent = useMemo(() => {\n return (\n autoPricingStrategiesQuery.data?.reduce(\n (re, r) => {\n re[r.autoPricingSettingsCollectionId?.toString() ?? ''] =\n r.strategyName;\n return re;\n },\n {} as Record\n ) ?? {}\n );\n }, [autoPricingStrategiesQuery.data]);\n\n useEffect(() => {\n const autoPricingStrategy = autoPricingStrategiesQuery.data?.find(\n (r) => r.autoPricingSettingsCollectionId === selectedAutoPricingStrategyId\n );\n\n if (selectedAutoPricingStrategyId) {\n if (!autoPricingStrategy) {\n // On strategy delete, reset the form\n setSelectedAutoPricingStrategyId(null);\n } else {\n // on strategy change, apply the settings to the form\n applyAutoPricingStrategy(autoPricingStrategy);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [autoPricingStrategiesQuery.data]);\n\n const {\n autoPricingEnabled,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingQuantityScoreAdjustmentEnabled,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n\n onUndercutChange,\n onCompListingChange,\n onCircuitBreakerChange,\n onOutlierChange,\n } = useAutoPricingSettings();\n\n const applyAutoPricingStrategy = useCallback(\n (autoPricingStrategy: AutoPricingSettingsCollection) => {\n // Apply the settings to the form\n setValue('autoPricingEnabled', posChangedField(true));\n\n onUndercutChange(\n autoPricingStrategy.undercutMode,\n autoPricingStrategy.undercutAbsoluteAmount,\n autoPricingStrategy.undercutRelativeAmount\n );\n onCompListingChange({\n compListingModeNew: autoPricingStrategy.compListingMode,\n compListingFloorNew: autoPricingStrategy.compListingFloor,\n compListingCeilingNew: autoPricingStrategy.compListingCeiling,\n compListingOnlyForSameZoneEnabledNew:\n autoPricingStrategy.compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabledNew:\n autoPricingStrategy.compListingOnlyForSelectedSectionsEnabled,\n compListingQuantityScoreAdjustmentEnabledNew:\n autoPricingStrategy.compListingQuantityScoreAdjustmentEnabled,\n compListingExcludeFanInventoryNew:\n autoPricingStrategy.compListingExcludeFanInventory,\n compListingExcludeDefectsNew:\n autoPricingStrategy.compListingExcludeDefects,\n });\n onCircuitBreakerChange(\n autoPricingStrategy.circuitBreakerRelativeCeiling,\n autoPricingStrategy.circuitBreakerRelativeFloor,\n autoPricingStrategy.circuitBreakerMaxDiscountVelocityPercent,\n autoPricingStrategy.circuitBreakerMaxDiscountVelocityTicksInHours,\n autoPricingStrategy.circuitBreakerMinCompListingCount\n );\n onOutlierChange({\n outlierModeNew: autoPricingStrategy.outlierMode,\n outlierStandardDeviationsNew:\n autoPricingStrategy.outlierStandardDeviations,\n outlierKthLowestLimitNew: autoPricingStrategy.outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacingNew:\n autoPricingStrategy.outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacingNew:\n autoPricingStrategy.outlierKthLowestLimitAbsoluteSpacing,\n });\n\n setSelectedAutoPricingStrategyId(\n autoPricingStrategy.autoPricingSettingsCollectionId\n );\n },\n [\n onCircuitBreakerChange,\n onCompListingChange,\n onOutlierChange,\n onUndercutChange,\n setValue,\n ]\n );\n\n const onAutoPricingStrategyChange = useCallback(\n (value: string) => {\n if (!value) return;\n\n const autoPricingStrategy = autoPricingStrategiesQuery.data?.find(\n (r) => r.autoPricingSettingsCollectionId === parseInt(value, 10)\n );\n if (!autoPricingStrategy) {\n return;\n }\n\n applyAutoPricingStrategy(autoPricingStrategy);\n },\n [applyAutoPricingStrategy, autoPricingStrategiesQuery.data]\n );\n\n const currentValueEqualsSelectedStrategy = useMemo(() => {\n const autoPricingStrategy = autoPricingStrategiesQuery.data?.find(\n (r) => r.autoPricingSettingsCollectionId === selectedAutoPricingStrategyId\n );\n\n if (!autoPricingStrategy) return true;\n\n return (\n autoPricingEnabled?.value === true &&\n autoPricingStrategy &&\n (autoPricingStrategy.undercutMode == null ||\n autoPricingStrategy.undercutMode === undercutMode?.value) &&\n (autoPricingStrategy.undercutAbsoluteAmount == null ||\n autoPricingStrategy.undercutAbsoluteAmount ===\n undercutAbsoluteAmount?.value) &&\n (autoPricingStrategy.undercutRelativeAmount == null ||\n autoPricingStrategy.undercutRelativeAmount ===\n undercutRelativeAmount?.value) &&\n (autoPricingStrategy.compListingMode == null ||\n autoPricingStrategy.compListingMode === compListingMode?.value) &&\n (autoPricingStrategy.compListingFloor == null ||\n autoPricingStrategy.compListingFloor === compListingFloor?.value) &&\n (autoPricingStrategy.compListingCeiling == null ||\n autoPricingStrategy.compListingCeiling === compListingCeiling?.value) &&\n (autoPricingStrategy.compListingQuantityScoreAdjustmentEnabled == null ||\n autoPricingStrategy.compListingQuantityScoreAdjustmentEnabled ===\n compListingQuantityScoreAdjustmentEnabled?.value) &&\n (autoPricingStrategy.compListingOnlyForSameZoneEnabled == null ||\n autoPricingStrategy.compListingOnlyForSameZoneEnabled ===\n compListingOnlyForSameZoneEnabled?.value) &&\n (autoPricingStrategy.compListingOnlyForSelectedSectionsEnabled == null ||\n autoPricingStrategy.compListingOnlyForSelectedSectionsEnabled ===\n compListingOnlyForSelectedSectionsEnabled?.value) &&\n (autoPricingStrategy.compListingExcludeFanInventory == null ||\n autoPricingStrategy.compListingExcludeFanInventory ===\n compListingExcludeFanInventory?.value) &&\n (autoPricingStrategy.circuitBreakerRelativeCeiling == null ||\n autoPricingStrategy.circuitBreakerRelativeCeiling ===\n circuitBreakerRelativeCeiling?.value) &&\n (autoPricingStrategy.circuitBreakerRelativeFloor == null ||\n autoPricingStrategy.circuitBreakerRelativeFloor ===\n circuitBreakerRelativeFloor?.value) &&\n (autoPricingStrategy.circuitBreakerMaxDiscountVelocityPercent == null ||\n autoPricingStrategy.circuitBreakerMaxDiscountVelocityPercent ===\n circuitBreakerMaxDiscountVelocityPercent?.value) &&\n (autoPricingStrategy.circuitBreakerMaxDiscountVelocityTicksInHours ===\n null ||\n autoPricingStrategy.circuitBreakerMaxDiscountVelocityTicksInHours ===\n circuitBreakerMaxDiscountVelocityTicksInHours?.value) &&\n (autoPricingStrategy.circuitBreakerMinCompListingCount == null ||\n autoPricingStrategy.circuitBreakerMinCompListingCount ===\n circuitBreakerMinCompListingCount?.value) &&\n (autoPricingStrategy.outlierMode == null ||\n autoPricingStrategy.outlierMode === outlierMode?.value) &&\n (autoPricingStrategy.outlierStandardDeviations == null ||\n autoPricingStrategy.outlierStandardDeviations ===\n outlierStandardDeviations?.value) &&\n (autoPricingStrategy.outlierKthLowestLimit == null ||\n autoPricingStrategy.outlierKthLowestLimit ===\n outlierKthLowestLimit?.value) &&\n (autoPricingStrategy.outlierKthLowestLimitRelativeSpacing == null ||\n autoPricingStrategy.outlierKthLowestLimitRelativeSpacing ===\n outlierKthLowestLimitRelativeSpacing?.value) &&\n (autoPricingStrategy.outlierKthLowestLimitAbsoluteSpacing == null ||\n autoPricingStrategy.outlierKthLowestLimitAbsoluteSpacing ===\n outlierKthLowestLimitAbsoluteSpacing?.value)\n );\n }, [\n autoPricingEnabled,\n autoPricingStrategiesQuery.data,\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n compListingCeiling,\n compListingFloor,\n compListingMode,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingQuantityScoreAdjustmentEnabled,\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n selectedAutoPricingStrategyId,\n undercutAbsoluteAmount,\n undercutMode,\n undercutRelativeAmount,\n ]);\n\n const isStrategyApplied =\n currentValueEqualsSelectedStrategy && selectedAutoPricingStrategyId;\n\n const defaultValuesForStrategy = useMemo(() => {\n const autoPricingStrategy = isStrategyApplied\n ? autoPricingStrategiesQuery.data?.find(\n (r) =>\n r.autoPricingSettingsCollectionId === selectedAutoPricingStrategyId\n )\n : undefined;\n\n return {\n autoPricingSettingsCollectionId:\n autoPricingStrategy?.autoPricingSettingsCollectionId,\n strategyName: autoPricingStrategy?.strategyName,\n\n autoPricingEnabled: autoPricingEnabled?.value,\n\n undercutMode: undercutMode?.value,\n undercutAbsoluteAmount: undercutAbsoluteAmount?.value,\n undercutRelativeAmount: undercutRelativeAmount?.value,\n\n compListingMode: compListingMode?.value,\n compListingFloor: compListingFloor?.value,\n compListingCeiling: compListingCeiling?.value,\n compListingQuantityScoreAdjustmentEnabled:\n compListingQuantityScoreAdjustmentEnabled?.value,\n compListingOnlyForSameZoneEnabled:\n compListingOnlyForSameZoneEnabled?.value,\n compListingOnlyForSelectedSectionsEnabled:\n compListingOnlyForSelectedSectionsEnabled?.value,\n compListingExcludeFanInventory: compListingExcludeFanInventory?.value,\n compListingExcludeDefects: compListingExcludeDefects?.value,\n\n circuitBreakerRelativeCeiling: circuitBreakerRelativeCeiling?.value,\n circuitBreakerRelativeFloor: circuitBreakerRelativeFloor?.value,\n circuitBreakerMaxDiscountVelocityPercent:\n circuitBreakerMaxDiscountVelocityPercent?.value,\n circuitBreakerMaxDiscountVelocityTicksInHours:\n circuitBreakerMaxDiscountVelocityTicksInHours?.value,\n circuitBreakerMinCompListingCount:\n circuitBreakerMinCompListingCount?.value,\n\n outlierMode: outlierMode?.value,\n outlierStandardDeviations: outlierStandardDeviations?.value,\n outlierKthLowestLimit: outlierKthLowestLimit?.value,\n outlierKthLowestLimitRelativeSpacing:\n outlierKthLowestLimitRelativeSpacing?.value,\n outlierKthLowestLimitAbsoluteSpacing:\n outlierKthLowestLimitAbsoluteSpacing?.value,\n } as AutoPricingSettingsCollectionInput;\n }, [\n isStrategyApplied,\n autoPricingStrategiesQuery.data,\n autoPricingEnabled?.value,\n undercutMode?.value,\n undercutAbsoluteAmount?.value,\n undercutRelativeAmount?.value,\n compListingMode?.value,\n compListingFloor?.value,\n compListingCeiling?.value,\n compListingQuantityScoreAdjustmentEnabled?.value,\n compListingOnlyForSameZoneEnabled?.value,\n compListingOnlyForSelectedSectionsEnabled?.value,\n compListingExcludeFanInventory?.value,\n compListingExcludeDefects?.value,\n circuitBreakerRelativeCeiling?.value,\n circuitBreakerRelativeFloor,\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n selectedAutoPricingStrategyId,\n ]);\n\n const detailContent = (\n e.stopPropagation()}\n style={{ width: '50%' }}\n />\n );\n\n const headerContent = (\n \n \n \n ) : (\n \n )\n }\n onClick={() =>\n openAutoPricingStrategyDialog({\n defaultValues: defaultValuesForStrategy,\n isLoading: autoPricingStrategiesQuery.isLoading,\n onClosed: closeAutoPricingStrategyDialog,\n onStrategyUpdated: (strategyId: number) => {\n if (strategyId !== selectedAutoPricingStrategyId) {\n // An insert\n setSelectedAutoPricingStrategyId(strategyId);\n onAutoPricingStrategyChange(strategyId.toString());\n }\n closeAutoPricingStrategyDialog();\n },\n isBulkEdit: true,\n listingHasParent: false,\n })\n }\n style={{ padding: 0, textAlign: 'start' }}\n />\n \n );\n\n return ;\n};\n","import { useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useAvailableAutopricingModes } from 'src/hooks/useAvailableAutopricingModes';\nimport { WarningOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getCompleteEventConfigScoreOverrides } from 'src/utils/seatScoreUtils';\nimport { ListingDetailsAutoPricingSectionUpdatesV2 } from 'src/WebApiController';\n\nimport { AutoPricingSettingsInput } from '../BulkEditAutoPricingSettingsDialog.types';\nimport { useAutoPricingSettings } from '../useBulkAutoPricingSettings';\nimport { AutoPricingEnabledSetting } from './AutoPricingEnabled';\nimport * as styles from './AutoPricingSettings.css';\nimport { PricingAdvancedSettings } from './PricingAdvancedSettings';\nimport { PricingAgainst } from './PricingAgainst';\nimport { PricingProtection } from './PricingProtection';\nimport { PricingSetting } from './PricingSetting';\nimport { AutoPricingStrategySetting } from './PricingStrategy';\n\ntype AutoPricingSettingsProps = {\n settingsInput: AutoPricingSettingsInput;\n canUseZoneMap?: boolean;\n};\n\nexport const AutoPricingSettings: React.FC = ({\n settingsInput,\n canUseZoneMap,\n}) => {\n const settingContent = useContent(ContentId.Settings);\n const details = useContent(ContentId.Details);\n const status = useContent(ContentId.Status);\n\n const {\n compListingMode,\n undercutMode,\n compListingOnlyForSelectedSectionsEnabled,\n } = useAutoPricingSettings();\n\n const { activeConfigOverride, venueMapsByScoreModelQuery } =\n useEventMapContext();\n\n const { watch } = useFormContext();\n\n const deriveCompsFromVenueZoneConfig = watch(\n 'deriveCompsFromVenueZoneConfig'\n );\n\n const defaultScoreOverrides = useMemo(() => {\n // In the backend, if AVG scores are missing, then we always fallback to MVG, even if AVG is explicitly selected\n return (\n venueMapsByScoreModelQuery?.data?.AdvancedVenueGeometry?.sectionScores ??\n venueMapsByScoreModelQuery?.data?.MergedVenueGeometry?.sectionScores ??\n venueMapsByScoreModelQuery?.data?.VenueGeometry?.sectionScores\n );\n }, [\n venueMapsByScoreModelQuery?.data?.AdvancedVenueGeometry?.sectionScores,\n venueMapsByScoreModelQuery?.data?.MergedVenueGeometry?.sectionScores,\n venueMapsByScoreModelQuery?.data?.VenueGeometry?.sectionScores,\n ]);\n\n const scores = getCompleteEventConfigScoreOverrides(\n defaultScoreOverrides,\n activeConfigOverride?.scoreOverrides,\n false\n );\n\n const {\n outlierModes,\n outlierModesDisabled,\n compListingModes,\n compListingModesDisabled,\n } = useAvailableAutopricingModes(\n true,\n undercutMode?.value,\n compListingMode?.value,\n Boolean(scores?.some((s) => s.score)),\n false,\n false,\n compListingOnlyForSelectedSectionsEnabled?.value,\n deriveCompsFromVenueZoneConfig\n );\n\n const hasConflict = useMemo(\n () => Object.values(settingsInput).some(({ hasConflict }) => hasConflict),\n [settingsInput]\n );\n\n return (\n \n {hasConflict && (\n \n \n \n \n )}\n \n \n \n \n \n \n \n );\n};\n","import { RefObject, useLayoutEffect, useRef, useState } from 'react';\n\ninterface OverflowX {\n ref: RefObject;\n isOverflowX: boolean;\n}\n\n/**\n * Hook to check if an element has overflow-x\n */\nexport const useOverflowX = (): OverflowX => {\n const [isOverflowX, setIsOverflowX] = useState(false);\n const ref = useRef(null);\n\n useLayoutEffect(() => {\n const { current } = ref;\n\n const resizeObserver = new ResizeObserver(() => {\n if (current) {\n const hasOverflowX = current.scrollWidth > current.clientWidth;\n if (hasOverflowX !== isOverflowX) {\n setIsOverflowX(hasOverflowX);\n }\n }\n });\n\n if (current) {\n resizeObserver.observe(current);\n const hasOverflowX = current.scrollWidth > current.clientWidth;\n if (hasOverflowX !== isOverflowX) {\n setIsOverflowX(hasOverflowX);\n }\n }\n\n return () => resizeObserver.disconnect();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ref]);\n\n return { ref, isOverflowX };\n};\n","import clsx from 'clsx';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Stack, Tooltip } from 'src/core/ui';\nimport { useOverflowX } from 'src/hooks/useOverflowX';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './ListingsCarouselCard.css';\n\ninterface ListingsCarouselCardSingleListingProps {\n section: string;\n row?: string | null;\n}\n\ninterface ListingsCarouselCardMyListingsProps {\n listingsCount: number;\n}\n\nexport type ListingsCarouselCardProps = (\n | ListingsCarouselCardSingleListingProps\n | ListingsCarouselCardMyListingsProps\n) & {\n isSelected: boolean;\n onClick?: () => void;\n};\n\nexport const ListingsCarouselCard = ({\n isSelected,\n onClick,\n ...rest\n}: ListingsCarouselCardProps) => {\n const { section, row } = rest as ListingsCarouselCardSingleListingProps;\n const { listingsCount } = rest as ListingsCarouselCardMyListingsProps;\n\n return (\n \n {section ? (\n \n ) : (\n \n )}\n \n );\n};\n\nconst IndividualListingCard = ({\n section,\n row,\n isSelected,\n}: ListingsCarouselCardSingleListingProps & { isSelected: boolean }) => {\n const { ref, isOverflowX } = useOverflowX();\n\n const valueLabelClassName = clsx(styles.valueLabel, {\n [styles.valueLabelSelected]: isSelected,\n });\n return (\n <>\n \n {isOverflowX ? (\n {section}\n }\n contentVariant=\"theme\"\n >\n \n \n ) : (\n {section}\n )}\n \n\n {row && (\n \n \n \n \n {row}\n \n )}\n \n );\n};\n\nconst MyListingsCard = ({\n listingsCount,\n isSelected,\n}: ListingsCarouselCardMyListingsProps & { isSelected: boolean }) => {\n const attrLabelClassName = clsx(styles.attrLabel, {\n [styles.attrLabelSelected]: isSelected,\n });\n return (\n <>\n
    \n \n {}\n \n
    \n\n \n {listingsCount}\n \n \n );\n};\n","import { ScrollArea, Stack } from 'src/core/ui';\nimport { sortSeating } from 'src/utils/tableUtils';\nimport { Listing } from 'src/WebApiController';\n\nimport { ListingsCarouselCard } from '../ListingsCarouselCard/ListingsCarouselCard';\nimport * as styles from './ListingsCarousel.css';\nimport { VerticalDivider } from './ListingsCarousel.styled';\n\nexport type ListingsCarouselProps = {\n listings: Listing[];\n selectedListing: Listing | null;\n setSelectedListing: (listing: Listing | null) => void;\n};\n\nconst MY_LISTINGS_KEY = 0;\nconst DIVIDER_LINE_KEY = 1;\n\nexport const ListingsCarousel = ({\n listings,\n selectedListing,\n setSelectedListing,\n}: ListingsCarouselProps) => {\n return (\n \n \n \n setSelectedListing?.(null)}\n />\n\n \n\n {listings\n .toSorted((a, b) => sortSeating(a.seating, b.seating))\n .map((l, i) => {\n const index = i + 2;\n return (\n setSelectedListing?.(l)}\n />\n );\n })}\n \n \n \n );\n};\n","import { useCallback, useMemo, useState } from 'react';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\nimport { getAllInPriceFromListPriceForListing } from 'src/utils/inventoryUtils';\nimport {\n BulkListingPriceCalculation,\n CompListing,\n Listing,\n ListingPriceCalculation,\n} from 'src/WebApiController';\n\nimport { ComparableListing, ComparableListings } from '../ComparableListings';\nimport { ListingsCarousel } from '../ListingsCarousel/ListingsCarousel';\nimport * as styles from './CompListingsPreview.css';\n\nexport type CompListingsPreviewProps = {\n isLoading: boolean;\n listings: Listing[];\n listingPriceCalculations: BulkListingPriceCalculation[];\n compListings: CompListing[];\n sellerCompListings: CompListing[];\n};\n\nexport const CompListingsPreview = ({\n isLoading,\n listings,\n listingPriceCalculations,\n compListings,\n sellerCompListings,\n}: CompListingsPreviewProps) => {\n const [selectedListing, setSelectedListing] = useState(\n listings.length == 1 ? listings[0] : null\n );\n\n const listingPriceCalculationsByListingId = useMemo(() => {\n const record: Record = {};\n listingPriceCalculations.forEach((x) => {\n record[x.listingId] = x;\n });\n\n return record;\n }, [listingPriceCalculations]);\n\n const selectedListingPriceCalculation = useMemo(\n () =>\n selectedListing\n ? listingPriceCalculationsByListingId[selectedListing.id]\n : null,\n [listingPriceCalculationsByListingId, selectedListing]\n );\n\n const mapListingToComparableListing = useCallback(\n (listing: Listing): ComparableListing => {\n const websitePrice =\n listingPriceCalculationsByListingId[listing.id]?.websitePrice?.amt ??\n getAllInPriceFromListPriceForListing(listing);\n\n return {\n listingId: listing.id,\n section: listing.seating.section,\n row: listing.seating.row ?? undefined,\n seatFr: listing.seating.seatFr ?? undefined,\n seatTo: listing.seating.seatTo ?? undefined,\n price: websitePrice,\n currencyCode: listing.currency,\n listingNotes: listing.seatTraits ?? undefined,\n // Price assuming same fees as seller’s account\n sellerNetProceeds: listing.listPrice,\n isYourListing: true,\n availableTickets: listing.availQty,\n validPurchaseQuantities: listing.vldPurQty,\n isSelectedWithListingGroup: false,\n };\n },\n [listingPriceCalculationsByListingId]\n );\n\n const isComparableToSelectedListing = useCallback(\n (cl: CompListing) => {\n if (cl.isSellerCompListing) {\n return (\n selectedListingPriceCalculation?.sellerCompStubHubListingIds.includes(\n cl.listingId\n ) ?? false\n );\n }\n\n const isComparableListing =\n selectedListingPriceCalculation?.compStubHubListingIds.includes(\n cl.listingId\n ) ?? false;\n const isOutlierListing =\n selectedListingPriceCalculation?.outlierStubHubListingIds.includes(\n cl.listingId\n ) ?? false;\n\n return !selectedListing || isComparableListing || isOutlierListing;\n },\n [\n selectedListing,\n selectedListingPriceCalculation?.compStubHubListingIds,\n selectedListingPriceCalculation?.outlierStubHubListingIds,\n selectedListingPriceCalculation?.sellerCompStubHubListingIds,\n ]\n );\n\n const mapCompListingToComparableListing = useCallback(\n (cl: CompListing): ComparableListing => {\n const isAnchor =\n selectedListingPriceCalculation?.underCutChosenListingId ==\n cl.listingId;\n const isOutlier =\n selectedListingPriceCalculation?.outlierStubHubListingIds.includes(\n cl.listingId\n ) ?? false;\n\n return {\n listingId: cl.listingId,\n section: cl.section ?? undefined,\n row: cl.row ?? undefined,\n seatFr: cl.seatFrom ?? undefined,\n seatTo: cl.seatTo ?? undefined,\n price: cl.sellerAllInPrice?.amt,\n currencyCode: cl.sellerAllInPrice?.currency ?? undefined,\n listingNotes: cl.listingNotes ?? undefined,\n // Price assuming same fees as seller’s account\n sellerNetProceeds: cl.sellerNetProceeds?.amt ?? undefined,\n isAnchor: isAnchor,\n isOutlier: isOutlier,\n isYourListing: cl.isSellerCompListing ?? false,\n availableTickets: cl.availableTickets ?? undefined,\n validPurchaseQuantities: cl.validPurchaseQuantities ?? undefined,\n isSelectedWithListingGroup: false,\n };\n },\n [\n selectedListingPriceCalculation?.outlierStubHubListingIds,\n selectedListingPriceCalculation?.underCutChosenListingId,\n ]\n );\n\n const currentListings = useMemo(() => {\n if (selectedListing) {\n return [mapListingToComparableListing(selectedListing)];\n }\n\n return listings.map((l) => mapListingToComparableListing(l));\n }, [listings, mapListingToComparableListing, selectedListing]);\n\n const currentCompListings = useMemo(\n () =>\n [...compListings, ...sellerCompListings].filter(\n isComparableToSelectedListing\n ),\n [compListings, isComparableToSelectedListing, sellerCompListings]\n );\n\n const currentComparableListings = useMemo(\n () => currentCompListings.map(mapCompListingToComparableListing),\n [currentCompListings, mapCompListingToComparableListing]\n );\n\n const listingPriceCalcWithComps = useMemo(\n (): ListingPriceCalculation | null =>\n selectedListingPriceCalculation\n ? {\n ...selectedListingPriceCalculation,\n compListings: currentCompListings,\n }\n : null,\n [currentCompListings, selectedListingPriceCalculation]\n );\n\n return isLoading ? (\n \n ) : (\n \n {listings.length > 1 && (\n \n )}\n\n \n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { PricingClient } from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { ErrorTypes, useErrorBoundaryContext } from '../ErrorBoundaryContext';\n\nexport const useGetActiveVenueZoneMapSectionGroups = (\n viagogoEventId: number\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery = Boolean(\n activeAccountWebClientConfig.activeAccountId != null && viagogoEventId\n );\n\n const activeVenueZoneMapSectionGroupsQuery = useQuery({\n queryKey: [\n 'PricingClient.getActiveVenueZoneMapSectionGroups',\n activeAccountWebClientConfig.activeAccountId,\n viagogoEventId,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n return await new PricingClient(\n activeAccountWebClientConfig\n ).getActiveVenueZoneMapSectionGroups(viagogoEventId);\n },\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('PricingClient.getActiveVenueZoneMapSectionGroups', error, {\n trackErrorData: {\n activeAccountId: activeAccountWebClientConfig.activeAccountId,\n viagogoEventId: viagogoEventId,\n },\n });\n },\n },\n });\n\n return {\n activeVenueZoneMapSectionGroupsQuery,\n sectionGroupsBySectionId: activeVenueZoneMapSectionGroupsQuery.data,\n isLoading: activeVenueZoneMapSectionGroupsQuery.isLoading,\n };\n};\n","import { head, uniq } from 'lodash-es';\nimport { useCallback } from 'react';\nimport { SectionInfo, VenueMapInfo } from 'src/WebApiController';\n\nexport const useEventVenueMapSectionHandler = (\n selectedSectionIds?: number[],\n setSelectedSectionIds?: (selectedSectionIds: number[]) => void,\n venueMapInfo?: VenueMapInfo | null\n) => {\n const onSectionIdsIncludedOrExcluded = useCallback(\n (\n updatedSectionIds: number[] | null | undefined,\n excludeUpdatedSectionIds: boolean | undefined\n ) => {\n const newSelectedSectionIds = excludeUpdatedSectionIds\n ? selectedSectionIds?.filter(\n (id) => !updatedSectionIds?.includes(id)\n ) ?? []\n : uniq([...(selectedSectionIds ?? []), ...(updatedSectionIds ?? [])]);\n setSelectedSectionIds?.(newSelectedSectionIds);\n },\n [selectedSectionIds, setSelectedSectionIds]\n );\n\n const onShiftSelect = useCallback(\n (sectionInfo: SectionInfo) => {\n // We are using the ticketClassId to group the sections\n const selectedClassId = head(\n sectionInfo?.rows\n ?.map(({ tktClass: ticketClass }) => ticketClass?.id)\n .filter((id) => !!id)\n );\n const updatedSectionIds = venueMapInfo?.sections\n ?.filter(\n ({ rows }: SectionInfo) =>\n rows?.some(\n ({ tktClass: ticketClass }) => ticketClass?.id === selectedClassId\n )\n )\n ?.map((s: SectionInfo) => s.id);\n\n onSectionIdsIncludedOrExcluded(\n updatedSectionIds,\n Boolean(selectedSectionIds?.includes(sectionInfo.id))\n );\n },\n [onSectionIdsIncludedOrExcluded, selectedSectionIds, venueMapInfo?.sections]\n );\n\n const onSingleSelect = useCallback(\n (sectionInfo: SectionInfo) =>\n onSectionIdsIncludedOrExcluded(\n [sectionInfo.id],\n Boolean(selectedSectionIds?.includes(sectionInfo.id))\n ),\n [onSectionIdsIncludedOrExcluded, selectedSectionIds]\n );\n\n const onSectionClicked = useCallback(\n (e: MouseEvent, sectionInfo: SectionInfo) => {\n if (e.shiftKey) {\n onShiftSelect(sectionInfo);\n return;\n }\n\n onSingleSelect(sectionInfo);\n },\n [onShiftSelect, onSingleSelect]\n );\n\n const onToggleMirrors = useCallback(\n (mirrors: SectionInfo[], exclude?: boolean) => {\n onSectionIdsIncludedOrExcluded(\n mirrors.map((s) => s.id),\n exclude\n );\n },\n [onSectionIdsIncludedOrExcluded]\n );\n\n const setSelectedSections = useCallback(\n (sections: SectionInfo[]) => {\n setSelectedSectionIds?.(sections.map(({ id }) => id));\n },\n [setSelectedSectionIds]\n );\n\n return {\n onSectionClicked,\n onToggleMirrors,\n setSelectedSections,\n };\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { isEmpty } from 'lodash-es';\nimport { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { createGetColor } from 'src/components/Listings/InventoryEventPage/utils/colorUtils';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useGetActiveVenueZoneMapSectionGroups } from 'src/contexts/EventMapContext/useGetActiveVenueZoneMapSectionGroups';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useComparableListingsVenueMapColor } from 'src/hooks/useComparableListingsVenueMapColor';\nimport { useEventVenueMapSectionHandler } from 'src/hooks/useEventVenueMapSectionHandler';\nimport { quantityFiltersFromJson } from 'src/utils/autoPricingUtils';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport {\n BulkEditListingClient,\n CompListing,\n Event,\n Listing,\n ListingDetailsAutoPricingSectionUpdatesV2,\n ListingPriceCalculationsInEventInput,\n NetProceedsFloorAdjustment,\n SelectedSectionSettings,\n UiMoney,\n} from 'src/WebApiController';\n\nexport const useBulkGetListingPriceCalculationsInEvent = (\n event: Event,\n selectedListings: Listing[]\n) => {\n const { activeAccountWebClientConfig, loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const uiCurrency = useMemo(\n () => getUiCurrency(loginContext?.user?.activeAccount?.currencyCode),\n [getUiCurrency, loginContext?.user?.activeAccount?.currencyCode]\n );\n\n const listingIds = useMemo(\n () => selectedListings.map((l) => l.id),\n [selectedListings]\n );\n\n const { watch } = useFormContext();\n const formValues = watch();\n\n // TODO: The bulk edit form should just be ListingPriceCalculationsInEventInput directly\n const autoPricingSettingsUpdates: ListingPriceCalculationsInEventInput =\n useMemo(\n () => ({\n compListingSetting: {\n mode: formValues.compListingMode,\n selectedSectionSettings: formValues.deriveCompsFromVenueZoneConfig\n ? {\n value: {\n sectionIdFilterFromZoneMap: true,\n includeBetterZones: formValues.includeBetterZones,\n rowOffset: formValues.rowCompOffset,\n } as SelectedSectionSettings,\n hasChanged: true,\n }\n : formValues.compListingSelectedSectionSettings,\n includeExistingSelectedSectionSettings: {\n value: formValues.includeExistingSelectedSections,\n hasChanged: formValues.includeExistingSelectedSections !== null,\n },\n onlyForSelectedSectionsEnabled:\n formValues.compListingOnlyForSelectedSectionsEnabled,\n quantityFilters:\n formValues.compListingQuantityScoreAdjustmentOverrideJson\n ? {\n value: quantityFiltersFromJson(\n formValues.compListingQuantityScoreAdjustmentOverrideJson\n .value\n ),\n hasChanged:\n formValues.compListingQuantityScoreAdjustmentOverrideJson\n .hasChanged,\n }\n : null,\n excludeFanInventory: formValues.compListingExcludeFanInventory,\n excludeDefects: formValues.compListingExcludeDefects,\n },\n underCutSetting: {\n underCutAbsoluteAmount: formValues.undercutAbsoluteAmount\n ? {\n value: formValues.undercutAbsoluteAmount.value\n ? ({\n amt: formValues.undercutAbsoluteAmount.value,\n currency: uiCurrency.code,\n } as UiMoney)\n : null,\n hasChanged: formValues.undercutAbsoluteAmount.hasChanged,\n }\n : null,\n underCutRelativeAmount: formValues.undercutRelativeAmount,\n },\n outlierSetting: {\n mode: formValues.outlierMode,\n standardDeviations: formValues.outlierStandardDeviations,\n outlierLimit: formValues.outlierKthLowestLimit,\n absoluteOutlierSpacing:\n formValues.outlierKthLowestLimitAbsoluteSpacing\n ? {\n value: formValues.outlierKthLowestLimitAbsoluteSpacing.value\n ? ({\n amt: formValues.outlierKthLowestLimitAbsoluteSpacing\n .value,\n currency: uiCurrency.code,\n } as UiMoney)\n : null,\n hasChanged:\n formValues.outlierKthLowestLimitAbsoluteSpacing.hasChanged,\n }\n : null,\n relativeOutlierSpacing:\n formValues.outlierKthLowestLimitRelativeSpacing,\n },\n netProceedsFloor: formValues.netProceedsFloor?.hasChanged\n ? {\n value: {\n absoluteAmount: formValues.netProceedsFloor?.value\n ? ({\n amt: formValues.netProceedsFloor.value,\n currency: uiCurrency.code,\n } as UiMoney)\n : null,\n relativeAdjustmentType: null,\n relativeAmount: null,\n relativePercentage: null,\n } as NetProceedsFloorAdjustment,\n hasChanged: true,\n }\n : formValues.netProceedsFloorAdjustmentAmount != null &&\n formValues.netProceedsFloorAdjustmentRelative != null &&\n !!formValues.netProceedsFloorAdjustmentType\n ? {\n value: {\n absoluteAmount: null,\n relativeAmount: !formValues.netProceedsFloorAdjustmentRelative\n ? {\n amt: formValues.netProceedsFloorAdjustmentAmount,\n currency: uiCurrency.code,\n }\n : null,\n relativePercentage:\n formValues.netProceedsFloorAdjustmentRelative\n ? formValues.netProceedsFloorAdjustmentAmount\n : null,\n relativeAdjustmentType:\n formValues.netProceedsFloorAdjustmentType,\n } as NetProceedsFloorAdjustment,\n hasChanged: true,\n }\n : null,\n netProceedsCeiling: formValues.netProceedsCeiling\n ? {\n value: formValues.netProceedsCeiling.value\n ? ({\n amt: formValues.netProceedsCeiling.value,\n currency: uiCurrency.code,\n } as UiMoney)\n : null,\n hasChanged: formValues.netProceedsCeiling.hasChanged,\n }\n : null,\n }),\n [\n formValues.compListingMode,\n formValues.compListingSelectedSectionSettings,\n formValues.deriveCompsFromVenueZoneConfig,\n formValues.includeBetterZones,\n formValues.includeExistingSelectedSections,\n formValues.compListingOnlyForSelectedSectionsEnabled,\n formValues.compListingQuantityScoreAdjustmentOverrideJson,\n formValues.compListingExcludeFanInventory,\n formValues.compListingExcludeDefects,\n formValues.undercutAbsoluteAmount,\n formValues.undercutRelativeAmount,\n formValues.outlierMode,\n formValues.outlierStandardDeviations,\n formValues.outlierKthLowestLimit,\n formValues.outlierKthLowestLimitAbsoluteSpacing,\n formValues.outlierKthLowestLimitRelativeSpacing,\n formValues.netProceedsFloor?.hasChanged,\n formValues.netProceedsFloor?.value,\n formValues.netProceedsFloorAdjustmentAmount,\n formValues.netProceedsFloorAdjustmentRelative,\n formValues.netProceedsFloorAdjustmentType,\n formValues.netProceedsCeiling,\n formValues.rowCompOffset,\n uiCurrency.code,\n ]\n );\n\n const shouldQuery = Boolean(\n activeAccountWebClientConfig.activeAccountId &&\n event.viagId &&\n !isEmpty(listingIds) &&\n autoPricingSettingsUpdates\n );\n const listingCalculationsQuery = useQuery({\n queryKey: [\n 'BulkEditListingClient.BulkGetListingPriceCalculationsInEvent',\n activeAccountWebClientConfig.activeAccountId,\n event.viagId,\n listingIds,\n autoPricingSettingsUpdates,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n const pricingSettings = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkGetListingPriceCalculationsInEvent(event.viagId!, {\n item1: listingIds,\n item2: autoPricingSettingsUpdates!,\n });\n\n return pricingSettings;\n },\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n showErrorDialog('PricingClient.getListingAutoPricingSettings', error, {\n trackErrorData: {\n activeAccountId: activeAccountWebClientConfig.activeAccountId,\n viagogoEventId: event.viagId,\n listingIds,\n autoPricingSettingsUpdates,\n },\n });\n },\n },\n });\n\n return {\n listingCalculationsQuery,\n bulkListingPriceCalculationResult: listingCalculationsQuery.data,\n isLoading: listingCalculationsQuery.isLoading,\n };\n};\n\nexport const useBulkEditAutoPricingSettingsSidePanelEventMapProps = (\n viagogoEventId: number,\n listings: Listing[],\n compListings: CompListing[] | undefined\n) => {\n const { sectionGroupsBySectionId } =\n useGetActiveVenueZoneMapSectionGroups(viagogoEventId);\n\n const { setValue, watch } =\n useFormContext();\n const { compListingSelectedSectionSettings, deriveCompsFromVenueZoneConfig } =\n watch();\n\n const selectedSectionIds = useMemo(\n () =>\n deriveCompsFromVenueZoneConfig\n ? []\n : (compListingSelectedSectionSettings?.value?.sectionIdFilter ??\n undefined),\n [\n compListingSelectedSectionSettings?.value?.sectionIdFilter,\n deriveCompsFromVenueZoneConfig,\n ]\n );\n\n const setSelectedSectionIds = useCallback(\n (sectionIds: number[]) => {\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings?.value,\n sectionIdFilter: sectionIds,\n rowIdFilter:\n compListingSelectedSectionSettings?.value?.rowIdFilter ?? [],\n sectionRowIdFilter:\n compListingSelectedSectionSettings?.value?.sectionRowIdFilter ?? {},\n sectionIdFilterFromZoneMap: false,\n includeBetterZones: false,\n rowOffset: null,\n };\n setValue(\n 'compListingSelectedSectionSettings',\n posChangedField(compListingSelectedSectionSettingsNew)\n );\n },\n [compListingSelectedSectionSettings?.value, setValue]\n );\n\n const { venueMapInfo } = useEventMapContext();\n\n const { onSectionClicked, onToggleMirrors, setSelectedSections } =\n useEventVenueMapSectionHandler(\n selectedSectionIds,\n setSelectedSectionIds,\n venueMapInfo\n );\n\n const compListingsVenueMapColor = useComparableListingsVenueMapColor(\n listings,\n undefined,\n compListings\n );\n\n const getColor = useMemo(\n () =>\n deriveCompsFromVenueZoneConfig\n ? createGetColor(sectionGroupsBySectionId)\n : compListingsVenueMapColor,\n [\n compListingsVenueMapColor,\n deriveCompsFromVenueZoneConfig,\n sectionGroupsBySectionId,\n ]\n );\n\n return {\n getColor,\n onSectionClicked,\n onToggleMirrors,\n selectedSectionIds,\n setSelectedSections,\n disableHoverEffect: Boolean(deriveCompsFromVenueZoneConfig),\n };\n};\n","import { EventVenueMap } from 'src/components/Events/VenueMap/EventVenueMap';\nimport { CompListingsPreview } from 'src/components/Listings/CompListingsPreview';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { Event, Listing } from 'src/WebApiController';\n\nimport * as styles from './BulkEditAutoPricingSettingsSidePanel.css';\nimport {\n useBulkEditAutoPricingSettingsSidePanelEventMapProps,\n useBulkGetListingPriceCalculationsInEvent,\n} from './BulkEditAutoPricingSettingsSidePanel.hooks';\n\nexport const BulkEditAutoPricingSettingsSidePanel = ({\n event,\n selectedListings,\n show,\n}: {\n event: Event;\n selectedListings: Listing[];\n show?: boolean;\n}) => {\n const { bulkListingPriceCalculationResult, isLoading } =\n useBulkGetListingPriceCalculationsInEvent(event, selectedListings);\n\n const eventVenueMapProps =\n useBulkEditAutoPricingSettingsSidePanelEventMapProps(\n event.viagId!,\n selectedListings,\n bulkListingPriceCalculationResult?.compListings\n );\n\n if (!show) {\n return null;\n }\n\n return (\n \n \n
    \n }\n />\n
    \n \n \n \n \n \n \n
    \n
    \n );\n};\n","import { ContentId } from 'src/utils/constants/contentId';\n\nexport type PreviewColumn = {\n setting: ContentId;\n from: React.ReactNode;\n to: React.ReactNode;\n include: boolean;\n onChange: (checked: boolean) => void;\n};\n\nexport enum PricingSettingsPreviewColumnId {\n Setting = 'setting',\n SettingFrom = 'settingFrom',\n SettingTo = 'settingTo',\n Checkbox = 'checkbox',\n}\n","import { ColumnDef } from '@tanstack/react-table';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { vars } from 'src/core/themes';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport {\n PreviewColumn,\n PricingSettingsPreviewColumnId,\n} from './PricingSettingsPreview.types';\n\nexport const PricingSettingsPreviewColumns: ColumnDef[] = [\n {\n id: PricingSettingsPreviewColumnId.Setting,\n header: () => (\n \n \n \n ),\n minSize: 80,\n maxSize: 150,\n accessorFn: (data) => data.setting,\n cell: ({ getValue }) => {\n const value = getValue();\n\n return (\n \n \n \n );\n },\n enableSorting: false,\n },\n {\n id: PricingSettingsPreviewColumnId.SettingFrom,\n header: () => (\n \n \n \n ),\n minSize: 80,\n accessorFn: (data) => data.from,\n cell: ({ getValue }) => {\n const value = getValue();\n\n return {value};\n },\n enableSorting: false,\n },\n {\n id: PricingSettingsPreviewColumnId.SettingTo,\n header: () => (\n \n \n \n ),\n minSize: 80,\n accessorFn: (data) => data.to,\n cell: ({ getValue }) => {\n const value = getValue();\n\n return {value};\n },\n enableSorting: false,\n },\n {\n id: PricingSettingsPreviewColumnId.Checkbox,\n header: () => (\n \n \n \n ),\n size: 80,\n accessorFn: (data) => data,\n cell: ({ getValue }) => {\n const { include, onChange } = getValue();\n\n return (\n \n {\n onChange(!include);\n }}\n />\n \n );\n },\n enableSorting: false,\n },\n];\n","import { TableOptions } from '@tanstack/react-table';\nimport { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { Stack } from 'src/core/ui/Stack';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getAllInPriceFromListPrice } from 'src/utils/inventoryUtils';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\nimport { hasChanged } from 'src/utils/posFieldUtils';\nimport {\n ListingDetailsAutoPricingSectionUpdatesV2,\n Marketplace,\n} from 'src/WebApiController';\n\nimport {\n AutoPricingSettingsInput,\n PricingSettingsUpdateKey,\n} from '../BulkEditAutoPricingSettingsDialog.types';\nimport { PricingSettingsPreviewColumns } from './PricingSettingsPreview.constants';\nimport { PreviewColumn } from './PricingSettingsPreview.types';\n\nconst booleanToText = (\n value: boolean | null | undefined,\n defaultText: string,\n reverse = false\n) => {\n if (value == null) return defaultText;\n return Boolean(reverse ? !value : value) + '';\n};\n\nexport const usePricingSettingsPreviewTable = (\n settingsInput: AutoPricingSettingsInput,\n defaultValues: ListingDetailsAutoPricingSectionUpdatesV2,\n updates: ListingDetailsAutoPricingSectionUpdatesV2,\n updateChangedFields: (\n values: Partial>\n ) => void,\n changedFields?: Partial>\n): Partial> => {\n const conflictText = useContent(ContentId.Conflict);\n const existingSectionsText = useContent(ContentId.ExistingSections);\n const overrideText = useContent(ContentId.Override);\n const naText = useContent(ContentId.NA);\n const sameZoneOrBetter = useContent(ContentId.SameZoneOrBetter);\n const sameZone = useContent(ContentId.SameZone);\n\n const { loginContext } = useAppContext();\n const sellerFee =\n loginContext?.user?.activeAccount?.marketplaceSettings?.find(\n (m) => m.mkp === Marketplace.StubHub\n )?.sellerFee;\n\n const { venueMapInfo } = useEventMapContext();\n\n const sectionIdToName = useMemo(() => {\n return (venueMapInfo?.sections ?? []).reduce(\n (res, section) => {\n res[section.id] = section.name;\n return res;\n },\n {} as Record\n );\n }, [venueMapInfo?.sections]);\n\n const data = useMemo((): PreviewColumn[] => {\n const settings: PreviewColumn[] = [];\n if (\n hasChanged(updates?.autoPricingEnabled, defaultValues.autoPricingEnabled)\n ) {\n settings.push({\n setting: ContentId.EnableAutoPricing,\n from: settingsInput.autoPricingEnabled?.hasConflict\n ? conflictText\n : defaultValues.autoPricingEnabled?.value + '',\n to: updates.autoPricingEnabled?.value + '',\n include: !!changedFields?.autoPricingEnabled,\n onChange: (include: boolean) => {\n updateChangedFields({\n autoPricingEnabled: include,\n });\n },\n });\n }\n\n if (hasChanged(updates?.compListingMode, defaultValues.compListingMode)) {\n settings.push({\n setting: ContentId.AllListings,\n from: settingsInput.compListingMode?.hasConflict\n ? conflictText\n : defaultValues.compListingMode?.value,\n to: updates.compListingMode?.value,\n include: !!changedFields?.compListingMode,\n onChange: (include: boolean) => {\n updateChangedFields({\n compListingMode: include,\n });\n },\n });\n }\n\n if (\n hasChanged(\n updates?.compListingExcludeFanInventory,\n defaultValues.compListingExcludeFanInventory\n )\n ) {\n settings.push({\n setting: ContentId.ExcludeFanInventory,\n from: settingsInput.compListingExcludeFanInventory?.hasConflict\n ? conflictText\n : booleanToText(\n defaultValues.compListingExcludeFanInventory?.value,\n naText\n ),\n to: booleanToText(\n updates.compListingExcludeFanInventory?.value,\n naText\n ),\n include: !!changedFields?.compListingExcludeFanInventory,\n onChange: (include: boolean) => {\n updateChangedFields({\n compListingExcludeFanInventory: include,\n });\n },\n });\n }\n if (\n hasChanged(\n updates?.compListingExcludeDefects,\n defaultValues.compListingExcludeDefects\n )\n ) {\n settings.push({\n setting: ContentId.IncludeDefects,\n from: settingsInput.compListingExcludeDefects?.hasConflict\n ? conflictText\n : booleanToText(\n defaultValues.compListingExcludeDefects?.value,\n naText,\n true\n ),\n to: booleanToText(\n updates.compListingExcludeDefects?.value,\n naText,\n true\n ),\n include: !!changedFields?.compListingExcludeDefects,\n onChange: (include: boolean) => {\n updateChangedFields({\n compListingExcludeDefects: include,\n });\n },\n });\n }\n\n if (\n hasChanged(\n updates?.compListingSelectedSectionSettings,\n defaultValues.compListingSelectedSectionSettings\n ) ||\n (settingsInput.compListingSelectedSectionSettings?.hasConflict &&\n !updates.includeExistingSelectedSections)\n ) {\n const defaultSelectedSections = (\n defaultValues.compListingSelectedSectionSettings?.value\n ?.sectionIdFilter ?? []\n ).map((id) => sectionIdToName[id]);\n const updatedSectionedSections = (\n updates.compListingSelectedSectionSettings?.value?.sectionIdFilter ?? []\n ).map((id) => sectionIdToName[id]);\n settings.push({\n setting: ContentId.Sections,\n from: settingsInput.compListingSelectedSectionSettings?.hasConflict\n ? conflictText\n : defaultSelectedSections.join(','),\n to: `${\n updates.includeExistingSelectedSections\n ? existingSectionsText + ', '\n : overrideText\n } ${updatedSectionedSections.join(',')}`,\n include: !!changedFields?.compListingSelectedSectionSettings,\n onChange: (include: boolean) => {\n updateChangedFields({\n compListingSelectedSectionSettings: include,\n });\n },\n });\n }\n\n if (\n updates.deriveCompsFromVenueZoneConfig !=\n defaultValues?.deriveCompsFromVenueZoneConfig ||\n updates.includeBetterZones != defaultValues?.includeBetterZones ||\n updates.rowCompOffset != defaultValues?.rowCompOffset\n ) {\n const defaultSelectedSections = (\n defaultValues.compListingSelectedSectionSettings?.value\n ?.sectionIdFilter ?? []\n ).map((id) => sectionIdToName[id]);\n\n const venueMapName = updates.venueZoneMapName;\n const betterZonesValue = updates.includeBetterZones\n ? sameZoneOrBetter\n : sameZone;\n\n settings.push({\n setting: ContentId.Sections,\n from: settingsInput.compListingSelectedSectionSettings?.hasConflict\n ? conflictText\n : defaultSelectedSections.join(','),\n to: `${venueMapName}, ${betterZonesValue}, Row Comp Offset: ${updates.rowCompOffset}`,\n include: !!changedFields?.deriveCompsFromVenueZoneConfig,\n onChange: (include: boolean) => {\n updateChangedFields({\n deriveCompsFromVenueZoneConfig: include,\n });\n },\n });\n }\n\n if (\n hasChanged(\n updates?.compListingQuantityScoreAdjustmentOverrideJson,\n defaultValues.compListingQuantityScoreAdjustmentOverrideJson\n )\n ) {\n settings.push({\n setting: ContentId.SplitType,\n from: settingsInput.compListingQuantityScoreAdjustmentOverrideJson\n ?.hasConflict\n ? conflictText\n : defaultValues.compListingQuantityScoreAdjustmentOverrideJson\n ?.value + '',\n to: updates.compListingQuantityScoreAdjustmentOverrideJson?.value + '',\n include:\n !!changedFields?.compListingQuantityScoreAdjustmentOverrideJson,\n onChange: (include: boolean) => {\n updateChangedFields({\n compListingQuantityScoreAdjustmentOverrideJson: include,\n });\n },\n });\n }\n if (\n hasChanged(\n updates?.undercutAbsoluteAmount,\n defaultValues.undercutAbsoluteAmount\n ) ||\n hasChanged(\n updates?.undercutRelativeAmount,\n defaultValues.undercutRelativeAmount\n )\n ) {\n settings.push({\n setting: ContentId.UnderCutModePrompt,\n from:\n settingsInput.undercutAbsoluteAmount?.hasConflict ||\n settingsInput.undercutRelativeAmount?.hasConflict ? (\n conflictText\n ) : (\n \n \n
    \n {defaultValues.undercutRelativeAmount?.value\n ? applyNumberFormatting({\n inputNumber: defaultValues.undercutRelativeAmount.value,\n isPercent: true,\n })\n : naText}\n
    \n \n
    \n {defaultValues.undercutAbsoluteAmount?.value\n ? applyNumberFormatting({\n inputNumber: defaultValues.undercutAbsoluteAmount.value,\n currencyCode: defaultValues.currencyCode,\n })\n : naText}\n
    \n
    \n ),\n to: (\n \n \n
    \n {updates.undercutRelativeAmount?.value\n ? applyNumberFormatting({\n inputNumber: updates.undercutRelativeAmount.value,\n isPercent: true,\n })\n : naText}\n
    \n \n
    \n {updates.undercutAbsoluteAmount?.value\n ? applyNumberFormatting({\n inputNumber: updates.undercutAbsoluteAmount.value,\n currencyCode: updates.currencyCode,\n })\n : naText}\n
    \n
    \n ),\n include:\n !!changedFields?.undercutAbsoluteAmount ||\n !!changedFields?.undercutRelativeAmount,\n onChange: (include: boolean) => {\n updateChangedFields({\n undercutAbsoluteAmount: include,\n undercutRelativeAmount: include,\n });\n },\n });\n }\n if (\n hasChanged(updates?.netProceedsFloor, defaultValues.netProceedsFloor) ||\n hasChanged(updates?.netProceedsCeiling, defaultValues.netProceedsCeiling)\n ) {\n settings.push({\n setting: ContentId.PriceBelowFloor,\n from:\n settingsInput.netProceedsFloor?.hasConflict ||\n settingsInput.netProceedsCeiling?.hasConflict ? (\n conflictText\n ) : (\n \n
    \n {defaultValues.netProceedsFloor?.value\n ? applyNumberFormatting({\n inputNumber: getAllInPriceFromListPrice(\n defaultValues.netProceedsFloor.value,\n null,\n sellerFee\n ),\n currencyCode: defaultValues.currencyCode,\n })\n : naText}\n
    \n \n
    \n {defaultValues.netProceedsCeiling?.value\n ? applyNumberFormatting({\n inputNumber: getAllInPriceFromListPrice(\n defaultValues.netProceedsCeiling.value,\n null,\n sellerFee\n ),\n currencyCode: defaultValues.currencyCode,\n })\n : naText}\n
    \n
    \n ),\n to: (\n \n
    \n {updates.netProceedsFloor?.value\n ? applyNumberFormatting({\n inputNumber: getAllInPriceFromListPrice(\n updates.netProceedsFloor.value,\n null,\n sellerFee\n ),\n currencyCode: updates.currencyCode,\n })\n : naText}\n
    \n \n
    \n {updates.netProceedsCeiling?.value\n ? applyNumberFormatting({\n inputNumber: getAllInPriceFromListPrice(\n updates.netProceedsCeiling.value,\n null,\n sellerFee\n ),\n currencyCode: updates.currencyCode,\n })\n : naText}\n
    \n
    \n ),\n include:\n !!changedFields?.netProceedsFloor ||\n !!changedFields?.netProceedsCeiling,\n onChange: (include: boolean) => {\n updateChangedFields({\n netProceedsFloor: include,\n netProceedsCeiling: include,\n });\n },\n });\n }\n if (\n updates?.netProceedsFloorAdjustmentAmount != null &&\n updates?.netProceedsFloorAdjustmentRelative != null &&\n updates?.netProceedsFloorAdjustmentType != null\n ) {\n settings.push({\n setting: ContentId.AdjustFloor,\n from: naText,\n to: (\n \n
    \n {updates.netProceedsFloorAdjustmentRelative\n ? applyNumberFormatting({\n inputNumber: updates.netProceedsFloorAdjustmentAmount / 100,\n isPercent: true,\n })\n : applyNumberFormatting({\n inputNumber: updates.netProceedsFloorAdjustmentAmount,\n currencyCode: updates.currencyCode,\n })}\n
    \n \n
    {updates.netProceedsFloorAdjustmentType}
    \n
    \n ),\n include: !!changedFields?.netProceedsFloorAdjustmentAmount,\n onChange: (include: boolean) => {\n updateChangedFields({\n netProceedsFloorAdjustmentAmount: include,\n });\n },\n });\n }\n if (\n hasChanged(\n updates?.circuitBreakerMinCompListingCount,\n defaultValues.circuitBreakerMinCompListingCount\n )\n ) {\n settings.push({\n setting: ContentId.MinListingsRequired,\n from: settingsInput.circuitBreakerMinCompListingCount?.hasConflict\n ? conflictText\n : defaultValues.circuitBreakerMinCompListingCount?.value,\n to: updates.circuitBreakerMinCompListingCount?.value,\n include: !!changedFields?.circuitBreakerMinCompListingCount,\n onChange: (include: boolean) => {\n updateChangedFields({\n circuitBreakerMinCompListingCount: include,\n });\n },\n });\n }\n if (hasChanged(updates?.outlierMode, defaultValues.outlierMode)) {\n settings.push({\n setting: ContentId.OutlierMode,\n from: settingsInput.outlierMode?.hasConflict\n ? conflictText\n : defaultValues.outlierMode?.value,\n to: updates.outlierMode?.value,\n include: !!changedFields?.outlierMode,\n onChange: (include: boolean) => {\n updateChangedFields({\n outlierMode: include,\n });\n },\n });\n }\n if (\n hasChanged(\n updates?.outlierStandardDeviations,\n defaultValues.outlierStandardDeviations\n )\n ) {\n settings.push({\n setting: ContentId.OutlierFiltering,\n from: settingsInput.outlierStandardDeviations?.hasConflict\n ? conflictText\n : defaultValues.outlierStandardDeviations?.value,\n to: updates.outlierStandardDeviations?.value,\n include: !!changedFields?.outlierStandardDeviations,\n onChange: (include: boolean) => {\n updateChangedFields({\n outlierStandardDeviations: include,\n });\n },\n });\n }\n\n if (\n hasChanged(\n updates?.outlierKthLowestLimit,\n defaultValues.outlierKthLowestLimit\n ) &&\n (hasChanged(\n updates?.outlierKthLowestLimitAbsoluteSpacing,\n defaultValues.outlierKthLowestLimitAbsoluteSpacing\n ) ||\n hasChanged(\n updates?.outlierKthLowestLimitRelativeSpacing,\n defaultValues.outlierKthLowestLimitRelativeSpacing\n ))\n ) {\n settings.push({\n setting: ContentId.IgnoreTheFirst,\n from:\n settingsInput.outlierKthLowestLimit?.hasConflict ||\n settingsInput.outlierKthLowestLimitAbsoluteSpacing?.hasConflict ||\n settingsInput.outlierKthLowestLimitRelativeSpacing?.hasConflict ? (\n conflictText\n ) : (\n \n
    {defaultValues.outlierKthLowestLimit?.value ?? naText}
    \n \n
    \n {defaultValues.outlierKthLowestLimitAbsoluteSpacing?.value\n ? applyNumberFormatting({\n inputNumber:\n defaultValues.outlierKthLowestLimitAbsoluteSpacing\n ?.value,\n })\n : defaultValues.outlierKthLowestLimitRelativeSpacing?.value\n ? applyNumberFormatting({\n inputNumber:\n defaultValues.outlierKthLowestLimitRelativeSpacing\n ?.value,\n isPercent: true,\n })\n : naText}\n
    \n \n
    \n ),\n to: (\n \n
    {updates.outlierKthLowestLimit?.value ?? naText}
    \n \n
    \n {updates.outlierKthLowestLimitAbsoluteSpacing?.value\n ? applyNumberFormatting({\n inputNumber:\n updates.outlierKthLowestLimitAbsoluteSpacing?.value,\n })\n : updates.outlierKthLowestLimitRelativeSpacing?.value\n ? applyNumberFormatting({\n inputNumber:\n updates.outlierKthLowestLimitRelativeSpacing.value,\n isPercent: true,\n })\n : naText}\n
    \n \n
    \n ),\n include:\n !!changedFields?.outlierKthLowestLimit ||\n !!changedFields?.outlierKthLowestLimitAbsoluteSpacing ||\n !!changedFields?.outlierKthLowestLimitRelativeSpacing,\n onChange: (include: boolean) => {\n updateChangedFields({\n outlierKthLowestLimit: include,\n outlierKthLowestLimitAbsoluteSpacing: include,\n outlierKthLowestLimitRelativeSpacing: include,\n });\n },\n });\n }\n\n if (\n hasChanged(\n updates?.circuitBreakerMaxDiscountVelocityPercent,\n defaultValues?.circuitBreakerMaxDiscountVelocityPercent\n ) ||\n hasChanged(\n updates?.circuitBreakerMaxDiscountVelocityTicksInHours,\n defaultValues?.circuitBreakerMaxDiscountVelocityTicksInHours\n )\n ) {\n settings.push({\n setting: ContentId.DonotDropMoreThan,\n from:\n settingsInput.circuitBreakerMaxDiscountVelocityPercent?.hasConflict ||\n settingsInput.circuitBreakerMaxDiscountVelocityPercent\n ?.hasConflict ? (\n conflictText\n ) : (\n \n
    \n {defaultValues.circuitBreakerMaxDiscountVelocityPercent?.value\n ? applyNumberFormatting({\n inputNumber:\n defaultValues.circuitBreakerMaxDiscountVelocityPercent\n ?.value,\n isPercent: true,\n })\n : naText}\n
    \n \n
    \n {defaultValues.circuitBreakerMaxDiscountVelocityTicksInHours\n ?.value\n ? applyNumberFormatting({\n inputNumber:\n defaultValues\n .circuitBreakerMaxDiscountVelocityTicksInHours?.value,\n })\n : naText}\n
    \n \n
    \n ),\n to: (\n \n
    \n {updates.circuitBreakerMaxDiscountVelocityPercent?.value\n ? applyNumberFormatting({\n inputNumber:\n updates.circuitBreakerMaxDiscountVelocityPercent.value,\n isPercent: true,\n })\n : naText}\n
    \n \n
    \n {updates.circuitBreakerMaxDiscountVelocityTicksInHours?.value\n ? applyNumberFormatting({\n inputNumber:\n updates.circuitBreakerMaxDiscountVelocityTicksInHours\n ?.value,\n })\n : naText}\n
    \n \n
    \n ),\n include:\n !!changedFields?.circuitBreakerMaxDiscountVelocityPercent ||\n !!changedFields?.circuitBreakerMaxDiscountVelocityTicksInHours,\n onChange: (include: boolean) => {\n updateChangedFields({\n circuitBreakerMaxDiscountVelocityPercent: include,\n circuitBreakerMaxDiscountVelocityTicksInHours: include,\n });\n },\n });\n }\n\n return settings;\n }, [\n updates.autoPricingEnabled,\n updates.compListingMode,\n updates.compListingExcludeDefects,\n updates.compListingExcludeFanInventory,\n updates.compListingSelectedSectionSettings,\n updates.includeExistingSelectedSections,\n updates.deriveCompsFromVenueZoneConfig,\n updates.includeBetterZones,\n updates.rowCompOffset,\n updates.compListingQuantityScoreAdjustmentOverrideJson,\n updates.undercutAbsoluteAmount,\n updates.undercutRelativeAmount,\n updates.netProceedsFloor,\n updates.netProceedsCeiling,\n updates.netProceedsFloorAdjustmentAmount,\n updates.netProceedsFloorAdjustmentRelative,\n updates.netProceedsFloorAdjustmentType,\n updates.circuitBreakerMinCompListingCount,\n updates.outlierMode,\n updates.outlierStandardDeviations,\n updates.outlierKthLowestLimit,\n updates.outlierKthLowestLimitAbsoluteSpacing,\n updates.outlierKthLowestLimitRelativeSpacing,\n updates.circuitBreakerMaxDiscountVelocityPercent,\n updates.circuitBreakerMaxDiscountVelocityTicksInHours,\n updates.venueZoneMapName,\n updates.currencyCode,\n defaultValues.autoPricingEnabled,\n defaultValues.compListingMode,\n defaultValues.compListingExcludeDefects,\n defaultValues.compListingExcludeFanInventory,\n defaultValues.compListingSelectedSectionSettings,\n defaultValues?.deriveCompsFromVenueZoneConfig,\n defaultValues?.includeBetterZones,\n defaultValues?.rowCompOffset,\n defaultValues.compListingQuantityScoreAdjustmentOverrideJson,\n defaultValues.undercutAbsoluteAmount,\n defaultValues.undercutRelativeAmount,\n defaultValues.netProceedsFloor,\n defaultValues.netProceedsCeiling,\n defaultValues.circuitBreakerMinCompListingCount,\n defaultValues.outlierMode,\n defaultValues.outlierStandardDeviations,\n defaultValues.outlierKthLowestLimit,\n defaultValues.outlierKthLowestLimitAbsoluteSpacing,\n defaultValues.outlierKthLowestLimitRelativeSpacing,\n defaultValues.circuitBreakerMaxDiscountVelocityPercent,\n defaultValues.circuitBreakerMaxDiscountVelocityTicksInHours,\n defaultValues.currencyCode,\n settingsInput.compListingSelectedSectionSettings?.hasConflict,\n settingsInput.autoPricingEnabled?.hasConflict,\n settingsInput.compListingMode?.hasConflict,\n settingsInput.compListingExcludeDefects?.hasConflict,\n settingsInput.compListingExcludeFanInventory?.hasConflict,\n settingsInput.compListingQuantityScoreAdjustmentOverrideJson?.hasConflict,\n settingsInput.undercutAbsoluteAmount?.hasConflict,\n settingsInput.undercutRelativeAmount?.hasConflict,\n settingsInput.netProceedsFloor?.hasConflict,\n settingsInput.netProceedsCeiling?.hasConflict,\n settingsInput.circuitBreakerMinCompListingCount?.hasConflict,\n settingsInput.outlierMode?.hasConflict,\n settingsInput.outlierStandardDeviations?.hasConflict,\n settingsInput.outlierKthLowestLimit?.hasConflict,\n settingsInput.outlierKthLowestLimitAbsoluteSpacing?.hasConflict,\n settingsInput.outlierKthLowestLimitRelativeSpacing?.hasConflict,\n settingsInput.circuitBreakerMaxDiscountVelocityPercent?.hasConflict,\n conflictText,\n changedFields?.autoPricingEnabled,\n changedFields?.compListingMode,\n changedFields?.compListingExcludeDefects,\n changedFields?.compListingExcludeFanInventory,\n changedFields?.compListingSelectedSectionSettings,\n changedFields?.deriveCompsFromVenueZoneConfig,\n changedFields?.compListingQuantityScoreAdjustmentOverrideJson,\n changedFields?.undercutAbsoluteAmount,\n changedFields?.undercutRelativeAmount,\n changedFields?.netProceedsFloor,\n changedFields?.netProceedsCeiling,\n changedFields?.netProceedsFloorAdjustmentAmount,\n changedFields?.circuitBreakerMinCompListingCount,\n changedFields?.outlierMode,\n changedFields?.outlierStandardDeviations,\n changedFields?.outlierKthLowestLimit,\n changedFields?.outlierKthLowestLimitAbsoluteSpacing,\n changedFields?.outlierKthLowestLimitRelativeSpacing,\n changedFields?.circuitBreakerMaxDiscountVelocityPercent,\n changedFields?.circuitBreakerMaxDiscountVelocityTicksInHours,\n updateChangedFields,\n existingSectionsText,\n overrideText,\n sectionIdToName,\n sameZoneOrBetter,\n sameZone,\n naText,\n sellerFee,\n ]);\n\n return {\n data,\n columns: PricingSettingsPreviewColumns,\n };\n};\n","import React, { useMemo } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { WarningOutlineIcon } from 'src/svgs/Viagogo';\nimport { Table } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ListingDetailsAutoPricingSectionUpdatesV2 } from 'src/WebApiController';\n\nimport {\n AutoPricingSettingsInput,\n PricingSettingsUpdateKey,\n} from '../BulkEditAutoPricingSettingsDialog.types';\nimport * as styles from '../components/AutoPricingSettings.css';\nimport { usePricingSettingsPreviewTable } from './PricingSettingsPreview.hooks';\n\ntype PricingSettingsPreviewProps = {\n settingsInput: AutoPricingSettingsInput;\n defaultValues: ListingDetailsAutoPricingSectionUpdatesV2;\n updates: ListingDetailsAutoPricingSectionUpdatesV2;\n changedFields?: Partial<\n Record\n >;\n updateChangedFields: (\n values: Partial>\n ) => void;\n};\n\nexport const PricingSettingsPreview: React.FC = ({\n settingsInput,\n defaultValues,\n updates,\n changedFields,\n updateChangedFields,\n}) => {\n const options = usePricingSettingsPreviewTable(\n settingsInput,\n defaultValues,\n updates,\n updateChangedFields,\n changedFields\n );\n\n const hasConflict = useMemo(\n () => Object.values(settingsInput).some(({ hasConflict }) => hasConflict),\n [settingsInput]\n );\n\n return (\n \n {hasConflict && (\n \n \n \n \n )}\n
    \n \n
    \n \n \n );\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\n// /* eslint-disable react-hooks/exhaustive-deps */\nimport { HubConnectionState } from '@microsoft/signalr';\nimport {\n ComponentProps,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { FormProvider, useForm, useFormContext } from 'react-hook-form';\nimport { useEffectOnce } from 'react-use';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { EventMapContextProvider } from 'src/contexts/EventMapContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport {\n GenericDialog,\n GenericDialogProps,\n} from 'src/core/interim/dialogs/GenericDialog';\nimport { Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { useUserHasAutopricingFeature } from 'src/hooks/useUserHasAutopricingFeature';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { flattenListingGroup } from 'src/modals/GroupListings/components/groupingUtils';\nimport { Modal, ModalBody, ModalFooter } from 'src/modals/Modal';\nimport { ModalBodyDataContainer } from 'src/modals/Modal/Modal.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n Event,\n Feature,\n Listing,\n ListingDetails,\n ListingDetailsAutoPricingSectionUpdatesV2,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\nimport {\n AutoPricingSettingsInput,\n PricingSettingsUpdateKey,\n} from './BulkEditAutoPricingSettingsDialog.types';\nimport {\n generateDefaultSettings,\n getAutoPricingSettingsUpdateInput,\n getSettingsInputChanged,\n santizedPricingSettingsUpdateInput,\n} from './BulkEditAutoPricingSettingsDialog.utils';\nimport { AutoPricingSettings } from './components/AutoPricingSettings';\nimport { BulkEditAutoPricingSettingsSidePanel } from './components/BulkEditAutoPricingSettingsSidePanel/BulkEditAutoPricingSettingsSidePanel';\nimport { PricingSettingsPreview } from './PricingSettingsPreview';\n\nexport type BulkEditAutoPricingSettingsDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n isLoading?: boolean;\n listings?: Listing[] | null;\n selectedListingIds?: number[];\n event?: Event;\n canUseZoneMap?: boolean;\n multiEvents?: boolean;\n onOkay: (\n input: ListingDetailsAutoPricingSectionUpdatesV2 | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel?: () => void;\n};\n\nexport const BulkEditAutoPricingSettingsDialog: React.FC<\n BulkEditAutoPricingSettingsDialogProps\n> = ({ listings, selectedListingIds, event, ...rest }) => {\n const { loginContext } = useAppContext();\n const hasAllowSeatScoreCompListingModeFeature = useUserHasFeature(\n Feature.AllowSeatScoreCompListingMode\n );\n const hasBulkEditPricingSettingsUpdateFeature = useUserHasFeature(\n Feature.BulkEditPricingSettingsUpdate\n );\n const selectedListings = useMemo(() => {\n const flattenedListings = listings?.flatMap((l) => flattenListingGroup(l));\n return (\n flattenedListings\n ?.filter((l) => l.isFull && selectedListingIds?.includes(l.id))\n .map((l) => l as Listing) ?? []\n );\n }, [listings, selectedListingIds]);\n\n const isMultiEvent = useMemo(\n () => (hasBulkEditPricingSettingsUpdateFeature ? rest.multiEvents : !event),\n [hasBulkEditPricingSettingsUpdateFeature, rest.multiEvents, event]\n );\n\n const settingsInput = useMemo(\n () =>\n generateDefaultSettings(\n selectedListings,\n Boolean(isMultiEvent),\n hasBulkEditPricingSettingsUpdateFeature\n ),\n [selectedListings, isMultiEvent]\n );\n\n const defaultValues = useMemo(\n () =>\n getAutoPricingSettingsUpdateInput(\n settingsInput,\n loginContext?.user?.activeAccount?.currencyCode ?? null,\n hasAllowSeatScoreCompListingModeFeature,\n hasBulkEditPricingSettingsUpdateFeature\n ),\n [\n settingsInput,\n loginContext?.user?.activeAccount?.currencyCode,\n hasAllowSeatScoreCompListingModeFeature,\n hasBulkEditPricingSettingsUpdateFeature,\n ]\n );\n const methods = useForm({\n defaultValues,\n });\n\n return (\n \n \n \n \n \n );\n};\n\nfunction BulkEditAutoPricingSettingsDialogContent({\n updateKey,\n isLoading,\n event,\n onOkay,\n onCancel,\n settingsInput,\n defaultInput,\n canUseZoneMap,\n selectedListings,\n listings,\n ...rest\n}: BulkEditAutoPricingSettingsDialogProps & {\n selectedListings: Listing[];\n settingsInput: AutoPricingSettingsInput;\n defaultInput: ListingDetailsAutoPricingSectionUpdatesV2;\n}) {\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n\n const [changedFields, setChangedFileds] =\n useState>>();\n const { handleSubmit, watch, reset, formState } =\n useFormContext();\n\n const input = watch();\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n await refreshExpandedListItems();\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel?.();\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, stage, initJob } = useBulkEditHub(\n ActionOutboxEntityType.Listing,\n BulkActionType.UpdateAutoPricingSettings,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n if (onPreviewReceived) {\n onOkay(null, false, onPreviewReceived);\n } else {\n handleSubmit((i) => {\n onOkay(\n santizedPricingSettingsUpdateInput(i, changedFields),\n hasBackgroundBulkEditFeature,\n undefined,\n preview\n );\n })();\n }\n },\n [onOkay, handleSubmit, changedFields, hasBackgroundBulkEditFeature, preview]\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n useEffect(() => {\n const changed = getSettingsInputChanged(\n input,\n formState.defaultValues as ListingDetailsAutoPricingSectionUpdatesV2,\n settingsInput\n );\n\n setChangedFileds(changed);\n }, [\n JSON.stringify(input),\n JSON.stringify(formState.defaultValues),\n JSON.stringify(settingsInput),\n ]);\n\n const hasChanges = useMemo(\n () => Object.values(changedFields ?? {}).some((value) => !!value),\n [changedFields]\n );\n\n const submittButtonRef = useRef(null);\n\n const onUpdateChangedFields = useCallback(\n (\n values: Partial>\n ) => {\n setChangedFileds((prev) => ({ ...prev, ...values }));\n },\n [setChangedFileds]\n );\n\n return (\n <>\n }\n />\n }\n onOpened={() => {\n reset(defaultInput);\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter' && hasChanges) {\n submittButtonRef.current.click();\n }\n }}\n onClose={onClose}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n }\n >\n \n \n \n \n \n \n );\n}\n\nconst BulkEditAutoPricingSettingsModalOrDialog = ({\n selectedListings,\n event,\n multiEvents = false,\n stage,\n header,\n footer,\n children,\n onClose,\n ...rest\n}: GenericDialogProps & {\n selectedListings: Listing[];\n event: Event | null | undefined;\n multiEvents?: boolean;\n stage: BulkEditStage;\n onClose: () => void;\n}) => {\n const [delayLoaded, setDelayLoaded] = useState(false);\n const hasBulkEditAutoPricingPreviewFeature = useUserHasAutopricingFeature(\n Feature.AutoPricingBulkEditToDrawerWithPreview\n );\n const hasBulkEditPricingSettingsUpdateFeature = useUserHasAutopricingFeature(\n Feature.BulkEditPricingSettingsUpdate\n );\n\n // Trick to delay showing side panel to avoid modal bouncing left and right\n useEffectOnce(() => {\n setTimeout(() => {\n setDelayLoaded(true);\n }, 50);\n });\n\n // We don't want to show side pannel for multi-events,\n // but add this logic behind ulkEditPricingSettingsUpdate feature\n const showSidePanel = useMemo(\n () =>\n Boolean(event?.viagId && stage === BulkEditStage.Idle && delayLoaded) &&\n !(hasBulkEditPricingSettingsUpdateFeature && multiEvents),\n [\n event?.viagId,\n stage,\n delayLoaded,\n hasBulkEditPricingSettingsUpdateFeature,\n multiEvents,\n ]\n );\n\n return hasBulkEditAutoPricingPreviewFeature ? (\n \n \n {event?.viagId && (\n \n )}\n \n \n \n \n\n \n {children}\n \n\n {footer}\n \n \n \n ) : (\n \n {children}\n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { PricingClient } from 'src/WebApiController';\n\nexport const usePricingConfigFromEventIds = (\n eventIds: number[],\n disable: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n !disable &&\n activeAccountWebClientConfig.activeAccountId != null &&\n eventIds.length > 0;\n\n return useQuery({\n queryKey: [\n 'getPricingConfigFromEventIds',\n activeAccountWebClientConfig.activeAccountId,\n eventIds.toSorted(),\n disable,\n ],\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n return new PricingClient(\n activeAccountWebClientConfig\n ).getPricingConfigFromEventIds(eventIds);\n },\n\n enabled: shouldQuery,\n staleTime: Infinity,\n refetchOnMount: false,\n refetchOnReconnect: false,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('ListingClient.getPricingConfigFromEventIds', error, {\n eventIds,\n });\n },\n },\n });\n};\n","import { useBulkPricingActionsPermissions } from 'src/components/common/BulkActions/BulkPricingActions/useBulkPricingActionsPermissions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const LaunchEditAutoPricingSettings = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const { hasAutoPricingFeature, hasEditPricingPermission } =\n useBulkPricingActionsPermissions();\n\n if (!hasAutoPricingFeature || !hasEditPricingPermission) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n","import { uniq } from 'lodash-es';\nimport { useCallback, useMemo } from 'react';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport {\n BulkEditAutoPricingSettingsDialog,\n BulkEditAutoPricingSettingsDialogProps,\n} from 'src/dialogs/BulkEdits/BulkEditAutoPricingSettingsDialog';\nimport { usePricingConfigFromEventIds } from 'src/hooks/api/usePricingConfigFromEventIds';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { flattenListingGroup } from 'src/modals/GroupListings/components/groupingUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n Event,\n Feature,\n Listing,\n ListingDetails,\n ListingDetailsAutoPricingSectionUpdatesV2,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_UPDATE_AUTOPRICING_SETTINGS_UPDATE_KEY } from '../../InventoryActionDropdown.constants';\nimport { LaunchEditAutoPricingSettings } from './LaunchEditAutoPricingSettings';\n\nexport const useBulkEditAutoPricingSettings = (\n filterQueryWithEventIds: ListingQuery,\n affectedVisibleListingIds: number[],\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const updateKey = event\n ? `autopricingSettings-event-${event?.viagVirtualId}`\n : INVENTORY_BULK_UPDATE_AUTOPRICING_SETTINGS_UPDATE_KEY;\n\n const { setActivePosEntity } = useActivePosEntityContext();\n const hasPricingSectionSettingsAcrossEventsFeature = useUserHasFeature(\n Feature.PricingSectionSettingsAcrossEvents\n );\n\n const {\n eventsTransformed,\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const distinctEventIds = useMemo(() => {\n const { eventOrMappingIds } = filterQueryWithEventIds;\n const eventIdsFromSelectedListings = (eventsTransformed ?? [])\n .flatMap((ev) => ev.entities.listings)\n .flatMap(flattenListingGroup)\n .filter(({ id, isLtGrp }) => id > 0 && !isLtGrp)\n .filter(({ id }) => affectedVisibleListingIds.includes(id))\n .map((l) => (l as Listing).viagEvId);\n return uniq([\n ...eventIdsFromSelectedListings,\n ...(eventOrMappingIds ?? [])\n .map((mappingId) => Number(mappingId))\n .filter((id) => !isNaN(id)),\n ]).filter((id: number | null): id is number => !!id);\n }, [affectedVisibleListingIds, eventsTransformed, filterQueryWithEventIds]);\n\n const pricingConfigFromEvents = usePricingConfigFromEventIds(\n distinctEventIds,\n !hasPricingSectionSettingsAcrossEventsFeature\n );\n\n const sanitizedEvent = useMemo(() => {\n if (event) {\n return event;\n }\n\n const { sharedConfigId } = pricingConfigFromEvents.data ?? {};\n if (sharedConfigId && sharedConfigId > 0) {\n return (eventsTransformed ?? [])\n .map((ev) => ev.event)\n .find((ev) => ev.viagId && distinctEventIds.includes(ev.viagId));\n }\n\n return undefined;\n }, [\n distinctEventIds,\n event,\n eventsTransformed,\n pricingConfigFromEvents.data,\n ]);\n\n const canUseZoneMap = useMemo(() => {\n if (event) {\n return true;\n }\n return pricingConfigFromEvents.data?.canUseZoneMap;\n }, [event, pricingConfigFromEvents.data?.canUseZoneMap]);\n\n const multiEvents = useMemo(() => {\n if (event) {\n return false;\n }\n return distinctEventIds.length > 1;\n }, [distinctEventIds.length, event]);\n\n const {\n openDialog: openBulkEditAutoPricingSettingsDialog,\n closeDialog: closeBulkEditAutoPricingSettingsDialog,\n } = useDialog(\n DialogId.BulkEditAutoPricingSettings,\n BulkEditAutoPricingSettingsDialog\n );\n\n const onSubmitAutoPricingRework = useCallback(\n (\n settingsInput: ListingDetailsAutoPricingSectionUpdatesV2 | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n tryInvokeApi(\n async () => {\n const client = await new BulkEditListingClient(\n activeAccountWebClientConfig\n );\n const preview = await client.bulkUpdateAutoPricingSettingsPreview(\n filterQueryWithEventIds\n );\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateAutoPricingSettingsPreview', error, {\n trackErrorData: {\n filterQueryWithEventIds,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (settingsInput) {\n tryInvokeApi(\n async () => {\n const client = await new BulkEditListingClient(\n activeAccountWebClientConfig\n );\n const input = {\n item1: preview!.preview,\n item2: settingsInput,\n };\n\n const succeeded = await client.bulkUpdateAutoPricingSettingsV2(\n input,\n sanitizedEvent?.viagId,\n updateKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on listingDetails\n // we force re-loading the listing and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n\n closeBulkEditAutoPricingSettingsDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkUpdateAutoPricingSettingsV2', error, {\n trackErrorData: {\n settingsInput,\n preview,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeBulkEditAutoPricingSettingsDialog,\n sanitizedEvent?.viagId,\n filterQueryWithEventIds,\n refreshExpandedListItems,\n setActivePosEntity,\n setIsLoading,\n showErrorDialog,\n updateKey,\n ]\n );\n\n const listings = useMemo(() => {\n return (eventsTransformed ?? [])\n .flatMap((ev) => ev.entities.listings)\n .flatMap(flattenListingGroup)\n .filter(({ id, isLtGrp }) => id > 0 && !isLtGrp) as Listing[];\n }, [eventsTransformed]);\n\n const openDialog = () => {\n openBulkEditAutoPricingSettingsDialog({\n event: sanitizedEvent,\n updateKey: updateKey,\n isLoading: isLoading,\n canUseZoneMap: canUseZoneMap,\n multiEvents,\n listings: listings,\n selectedListingIds: affectedVisibleListingIds,\n onOkay: onSubmitAutoPricingRework,\n onClosed: () => {\n setIsLoading(false);\n },\n });\n };\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n openDialog();\n }}\n disabled={isLoading}\n />\n ),\n openDialog: openDialog,\n };\n};\n","import { throttle } from 'lodash-es';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { Stack } from 'src/core/ui/Stack';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nconst enum RelativeAbsoluteOptions {\n Relative = 'relative',\n Absolute = 'absolute',\n}\n\nexport const enum LanguagePreference {\n Above_Below = 'aboveBelow',\n Increase_Decrease = 'increaseDecrease',\n}\n\nconst getRelativeAbsoluteOptions = (absoluteUnit: '$' | '123') => [\n { value: RelativeAbsoluteOptions.Relative, children: '%' },\n { value: RelativeAbsoluteOptions.Absolute, children: absoluteUnit },\n];\n\nconst getAboveBelowOptions = (languagePreference: LanguagePreference) => {\n const aboveText =\n languagePreference === LanguagePreference.Above_Below ? (\n \n ) : (\n \n );\n const belowText =\n languagePreference === LanguagePreference.Above_Below ? (\n \n ) : (\n \n );\n return [\n { value: 'true', children: aboveText },\n { value: 'false', children: belowText },\n ];\n};\n\ntype BulkEditNumberProps = {\n initAmount?: number | null;\n isLoading: boolean;\n onChange: (value: number, isRelative: boolean, isAbove: boolean) => void;\n showAbsolute?: boolean;\n showApplyToAll?: boolean;\n absoluteUnit?: '$' | '123';\n languagePreference?: LanguagePreference;\n};\n\nexport const BulkEditNumber: React.FC = ({\n initAmount,\n isLoading,\n onChange,\n showAbsolute = false,\n showApplyToAll = false,\n absoluteUnit = '$',\n languagePreference = LanguagePreference.Above_Below,\n}) => {\n const [amount, setAmount] = useState(initAmount ?? 0);\n const [isRelative, setIsRelative] = useState(true);\n const [isAbove, setIsAbove] = useState(false);\n\n const onValueChange = useCallback(\n (event: React.ChangeEvent) => {\n const value = parseFloat(event.target.value);\n if (value < 0 || isNaN(value)) {\n return;\n }\n // we can't decrease by 100 or more % because that will result in zero\n if (!isAbove && isRelative && value > 99) {\n return;\n }\n setAmount(value);\n\n // Don't call onChange if we are showing apply to all button\n !showApplyToAll && onChange(value, isRelative, isAbove);\n },\n [isAbove, isRelative, onChange, showApplyToAll]\n );\n\n const onRelativeChange = useCallback(\n (value: string) => {\n const updatedRelative = value === RelativeAbsoluteOptions.Relative;\n setIsRelative(updatedRelative);\n !showApplyToAll && onChange(amount, updatedRelative, isAbove);\n },\n [amount, isAbove, onChange, showApplyToAll]\n );\n const onAboveChange = useCallback(\n (value: string) => {\n const updatedIsAbove = value === 'true';\n setIsAbove(updatedIsAbove);\n !showApplyToAll && onChange(amount, isRelative, updatedIsAbove);\n },\n [amount, isRelative, onChange, showApplyToAll]\n );\n\n // Throttle the onChange call to avoid calling it too often, once per 800ms\n const onApplyToAll = useMemo(() => {\n if (showApplyToAll) {\n return throttle(() => onChange(amount, isRelative, isAbove), 800, {\n trailing: false,\n });\n }\n return () => undefined;\n }, [amount, isAbove, isRelative, onChange, showApplyToAll]);\n\n return (\n \n \n {showAbsolute ? (\n \n ) : (\n <>% \n )}\n \n \n }\n />\n {showApplyToAll && (\n \n \n \n )}\n \n );\n};\n","export enum FloorCeiling {\n Floor = 'Floor',\n Ceiling = 'Ceiling',\n}\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const FieldLabelWrapper = styled.div`\n font-weight: 600;\n ${({\n theme: {\n media,\n typography: { getStyles },\n },\n }) => `\n${getStyles('body1')}\n padding-left: 0;\n ${media.makeMediaQuery(\n media.breakpoints.md,\n `padding-left: 0px;` // reset padding for tablets and above\n )}\n`}\n`;\n\nexport const FieldWrapper = styled.div`\n padding-block-end: ${() => vars.spacing.m};\n\n label {\n width: 100%;\n margin-bottom: 0;\n }\n`;\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useMemo, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditNumber } from 'src/components/common/BulkActions/BulkEditNumber';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport {\n Content,\n FormatContent,\n useContent,\n} from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n PRICING_FLOOR_CEIL_ADJUSTMENT_TYPE_TO_CID,\n PRICING_FLOOR_CEIL_ADJUSTMENT_TYPE_TO_WARNING_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n ListingDetails,\n PricingFloorCeilingAdjustmentType,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\nimport { FloorCeiling } from './BulkEditListingPricingFloorCeilingDialog.constants';\nimport * as styles from './BulkEditListingPricingFloorCeilingDialog.css';\nimport {\n FieldLabelWrapper,\n FieldWrapper,\n} from './BulkEditListingPricingFloorCeilingDialog.styled';\n\n/**\n * Props for the BulkEditListingPricingFloorCeilingDialog component.\n *\n * @param floorCeiling Indicates whether the dialog is for adjusting the floor or ceiling.\n *\n * @param onOkay Callback function to be called when the user clicks the \"Okay\" button. Callback accepts\n the following parameters\n * - amount: The raw amount value we the user is adjusting the floor / ceiling by\n * - isAbove: Indicates whether the value should be increased or decreased\n * - floorCeiling: The floor/ceiling object.\n * - isRelative: Indicates whether the adjustment is relative or absolute.\n * - relativeToTarget: The type of adjustment to be made.\n * - supportBackgroundProcess: Optional parameter to indicate whether to support background process.\n */\nexport type BulkEditListingPricingFloorCeilingDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n floorCeiling: FloorCeiling;\n onOkay: (\n amount: number,\n isAbove: boolean,\n floorCeiling: FloorCeiling,\n isRelative: boolean,\n relativeToTarget: PricingFloorCeilingAdjustmentType,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport function BulkEditListingPricingFloorCeilingDialog({\n updateKey,\n floorCeiling,\n onOkay,\n onCancel,\n ...rest\n}: BulkEditListingPricingFloorCeilingDialogProps) {\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n const marketPriceText = useContent(ContentId.MarketPrice);\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n await refreshExpandedListItems();\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n ActionOutboxEntityType.Listing,\n BulkActionType.UpdatePriceFloorCeiling,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n // Form values\n const [amount, setAmount] = useState(0);\n const [isAbove, setIsAbove] = useState(false);\n const [isRelative, setIsRelative] = useState(true);\n const [relativeToTarget, setRelativeToTarget] =\n useState(\n floorCeiling === FloorCeiling.Floor\n ? PricingFloorCeilingAdjustmentType.UnitCost\n : PricingFloorCeilingAdjustmentType.MarketPrice\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(\n 0,\n false,\n FloorCeiling.Floor,\n false,\n PricingFloorCeilingAdjustmentType.CurrentFloor,\n false,\n onPreviewReceived\n );\n } else {\n onOkay(\n amount,\n isAbove,\n floorCeiling,\n isRelative,\n relativeToTarget,\n hasBackgroundBulkEditFeature,\n undefined,\n preview\n );\n }\n setIsLoading(false);\n },\n [\n onOkay,\n amount,\n isAbove,\n floorCeiling,\n isRelative,\n relativeToTarget,\n preview,\n hasBackgroundBulkEditFeature,\n ]\n );\n\n const isInputValid = useMemo(() => {\n return !!amount;\n }, [amount]);\n\n const submittButtonRef = useRef(null);\n\n return (\n \n ) : (\n \n )\n }\n />\n }\n onOpened={() => {\n setAmount(0);\n setRelativeToTarget(\n floorCeiling === FloorCeiling.Floor\n ? PricingFloorCeilingAdjustmentType.UnitCost\n : PricingFloorCeilingAdjustmentType.MarketPrice\n );\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter' && isInputValid) {\n submittButtonRef.current.click();\n }\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n {floorCeiling === FloorCeiling.Ceiling && (\n \n \n \n )}\n\n \n {\n setAmount(value);\n setIsRelative(isRelative);\n setIsAbove(isAbove);\n }}\n />\n {floorCeiling === FloorCeiling.Floor && (\n \n
    \n \n
    \n\n \n {\n if (newValue != null && newValue != relativeToTarget) {\n setRelativeToTarget(newValue);\n }\n }}\n />\n \n
    \n )}\n
    \n
    \n \n \n }\n />\n \n \n \n \n );\n}\n","import { useCallback } from 'react';\nimport { INVENTORY_BULK_UPDATE_PRICE_FLOOR_CEILING_UPDATE_KEY } from 'src/components/Listings/InventoryActionDropdown';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport {\n BulkEditListingPricingFloorCeilingDialog,\n FloorCeiling,\n} from 'src/dialogs/BulkEdits/BulkEditListingPricingFloorCeilingDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditPreviewWithDetails,\n EventWithData,\n} from 'src/WebApiController';\nimport {\n BulkEditListingClient,\n ListingDetails,\n ListingQuery,\n PricingFloorCeilingAdjustmentType,\n} from 'src/WebApiController';\n\ntype BulkChangeFloorCeilingActionsProps = {\n setIsLoading: (v: boolean) => void;\n isLoading: boolean;\n event?: EventWithData['event'] | undefined;\n filterQueryWithEventIds: ListingQuery;\n};\n\nexport const useBulkChangeFloorCeilingActions = ({\n setIsLoading,\n isLoading,\n event,\n filterQueryWithEventIds,\n}: BulkChangeFloorCeilingActionsProps) => {\n const {\n openDialog: openBulkChangeFloorCeilingDialog,\n closeDialog: closeBulkChangeFloorCeilingDialog,\n } = useDialog(\n DialogId.BulkChangeFloorCeilingActions,\n BulkEditListingPricingFloorCeilingDialog\n );\n\n const { showErrorDialog } = useErrorBoundaryContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const updateKey = event\n ? `listingPricingFloorCeiling-event-${event.viagVirtualId}`\n : INVENTORY_BULK_UPDATE_PRICE_FLOOR_CEILING_UPDATE_KEY;\n\n const onSubmitChangeFloorCeilingCallback = useCallback(\n async (\n amount: number,\n isAbove: boolean,\n floorCeiling: FloorCeiling,\n isRelative: boolean,\n adjustmentType: PricingFloorCeilingAdjustmentType,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n\n setIsLoading(true);\n\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdatePriceFloorCeilingPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdatePriceFloorCeilingPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else {\n await tryInvokeApi(\n async () => {\n const client = new BulkEditListingClient(\n activeAccountWebClientConfig\n );\n\n // At the moment, if we are submitting a bulk ceiling update, we should always use a percentage\n // based adjustment, and the values of isRelative and adjustmentType are ignored.\n let adjustment = (isAbove ? 100 + amount : 100 - amount) / 100;\n if (floorCeiling === FloorCeiling.Floor && !isRelative) {\n // If we are performing a bulk floor adjustment, and isRelative is false, that means we want\n // to do an absolute adjustment. The adjustment value needs to be positive if isAbove is true,\n // and negative if isAbove is false\n adjustment = isAbove ? amount : -1 * amount;\n }\n\n const succeeded =\n floorCeiling === FloorCeiling.Floor\n ? await client.bulkUpdatePriceFloor(\n preview!.preview,\n adjustment,\n updateKey,\n isRelative,\n adjustmentType,\n supportBackgroundProcess\n )\n : await client.bulkUpdatePriceCeiling(\n preview!.preview,\n adjustment,\n updateKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on listingDetails\n // we force re-loading the listing and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n\n closeBulkChangeFloorCeilingDialog();\n }\n },\n (error) => {\n showErrorDialog('ListingClient.onSubmitChangeFloorCeiling', error, {\n trackErrorData: { amount, isAbove, floorCeiling, preview },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n setIsLoading,\n filterQueryWithEventIds,\n showErrorDialog,\n updateKey,\n closeBulkChangeFloorCeilingDialog,\n setActivePosEntity,\n refreshExpandedListItems,\n ]\n );\n\n const onChangeFloorCeilingClick = useCallback(\n (e: React.MouseEvent, floorCeiling: FloorCeiling) => {\n e.preventDefault();\n e.stopPropagation();\n\n openBulkChangeFloorCeilingDialog({\n updateKey,\n floorCeiling,\n onOkay: onSubmitChangeFloorCeilingCallback,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkChangeFloorCeilingDialog,\n });\n },\n [\n closeBulkChangeFloorCeilingDialog,\n onSubmitChangeFloorCeilingCallback,\n openBulkChangeFloorCeilingDialog,\n setIsLoading,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n <>\n onChangeFloorCeilingClick(e, FloorCeiling.Floor)}\n disabled={isLoading}\n >\n \n \n onChangeFloorCeilingClick(e, FloorCeiling.Ceiling)}\n disabled={isLoading}\n >\n \n \n \n ),\n };\n};\n","import { useState } from 'react';\nimport { useBulkPricingActionsPermissions } from 'src/components/common/BulkActions/BulkPricingActions/useBulkPricingActionsPermissions';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { useInventoryEventBulkActionsState } from 'src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/useInventoryEventBulkActionsState';\nimport { useBulkChangeListingPriceAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkChangeListingPriceAction';\nimport { useBulkUpdateMarketplacePrices } from 'src/components/Listings/InventoryActionDropdown/components/BulkChangeMarketplacePriceAction/indext';\nimport { useBulkEditAutoPricingSettings } from 'src/components/Listings/InventoryActionDropdown/components/BulkEditAutoPricingSettingsAction';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { useBulkChangeFloorCeilingActions } from 'src/hooks/useBulkChangeFloorCeilingActions';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EventWithData } from 'src/WebApiController';\n\ninterface PricingActionsProps {\n event: EventWithData['event'];\n}\n\nexport const PricingActions = ({ event }: PricingActionsProps) => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n const { affectedVisibleListingIds, filterQueryWithEventIds } =\n useInventoryEventBulkActionsState(event);\n\n const [isLoading, setIsLoading] = useState(false);\n\n const bulkUpdateListingPrice = useBulkChangeListingPriceAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const { hasEditPricingPermission } = useBulkPricingActionsPermissions();\n\n const bulkEditAutoPricingSettingsV2 = useBulkEditAutoPricingSettings(\n filterQueryWithEventIds,\n affectedVisibleListingIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const bulkChangeFloorCeilingActions = useBulkChangeFloorCeilingActions({\n event,\n setIsLoading,\n isLoading,\n filterQueryWithEventIds,\n });\n\n const bulkUpdateMarketplacePrices = useBulkUpdateMarketplacePrices(\n filterQueryWithEventIds,\n affectedVisibleListingIds,\n setIsLoading,\n isLoading,\n event\n );\n\n return (\n <>\n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {bulkUpdateListingPrice.dropDown}\n {hasEditPricingPermission && bulkChangeFloorCeilingActions.dropDown}\n {bulkEditAutoPricingSettingsV2.dropDown}\n {bulkUpdateMarketplacePrices.dropDown}\n \n \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature, Permission } from 'src/WebApiController';\n\nexport const LaunchChangeEvent = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const hasPermission = useUserHasAnyOfPermissions(\n Permission.Inventory_UpdateListingInfo,\n Permission.Inventory_UpdateListingInfoOnIsPricerOf,\n Permission.Inventory_UpdateListingInfoOnPurchasedBy\n );\n\n if (!hasPermission) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n );\n};\n","import { useCallback, useRef, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { BulkChangeEventDialog } from 'src/dialogs/BulkEdits/BulkChangeEventDialog';\nimport { TicketGroupIntentionDialog } from 'src/dialogs/TicketGroupIntentionDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EmptyListingQuery } from 'src/utils/eventQueryUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n Event,\n TicketGroupEditReason,\n} from 'src/WebApiController';\n\nimport { LaunchChangeEvent } from './LaunchChangeEvent';\n\nexport const useBulkChangeEventAction = (\n event: Event,\n affectedVisibleListingIds: number[],\n\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const updateKey = `inventory-changeEvent-event-${event.viagVirtualId}`;\n const {\n refreshCatalog,\n eventsExpansion: { setListItemExpansion },\n } = useCatalogDataContext();\n const [changeEventNote, setChangeEventNote] = useState();\n const deallocateSalesRef = useRef(true);\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const ticketGroupIntentionDialog = useBasicDialog();\n\n const {\n openDialog: openBulkChangeEventDialog,\n closeDialog: closeBulkChangeEventDialog,\n } = useDialog(DialogId.BulkChangeEvent, BulkChangeEventDialog);\n\n const onSubmitChangeEvent = useCallback(\n async (\n newSelectedEvent: Event | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n\n if (onPreviewReceived) {\n const activeQuery = {\n ...EmptyListingQuery,\n eventOrMappingIds: affectedVisibleListingIds.length\n ? null\n : [event.viagVirtualId],\n entityIds: affectedVisibleListingIds,\n };\n await tryInvokeApi(\n async () => {\n const client = new BulkEditListingClient(\n activeAccountWebClientConfig\n );\n\n const preview = await client.bulkChangeEventPreview(activeQuery);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateTagsPreview', error, {\n trackErrorData: { activeQuery },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (newSelectedEvent) {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkChangeEvent(\n preview!.preview,\n newSelectedEvent.posIds[0],\n newSelectedEvent.viagId,\n newSelectedEvent.mappingId,\n deallocateSalesRef.current,\n changeEventNote ?? '',\n updateKey,\n supportBackgroundProcess\n );\n if (!supportBackgroundProcess) {\n if (succeeded) {\n refreshCatalog();\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n\n closeBulkChangeEventDialog();\n }\n },\n (error) => {\n showErrorDialog('onSubmitChangeEvent', error, {\n trackErrorData: {\n newSelectedEvent,\n preview,\n changeEventNote,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n affectedVisibleListingIds,\n changeEventNote,\n closeBulkChangeEventDialog,\n event.viagVirtualId,\n refreshCatalog,\n setIsLoading,\n setListItemExpansion,\n showErrorDialog,\n updateKey,\n ]\n );\n\n const onChangeEventClick = useCallback(\n (changeEventNote?: string) => {\n setChangeEventNote(changeEventNote);\n\n openBulkChangeEventDialog({\n entityType: ActionOutboxEntityType.Listing,\n changeEventNote,\n updateKey,\n onOkay: onSubmitChangeEvent,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkChangeEventDialog,\n });\n },\n [\n closeBulkChangeEventDialog,\n onSubmitChangeEvent,\n openBulkChangeEventDialog,\n setIsLoading,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n ticketGroupIntentionDialog.launchDialog();\n }}\n disabled={isLoading}\n />\n ),\n dialog: (\n <>\n {\n deallocateSalesRef.current = deallocateSales == true;\n onChangeEventClick(i.additionalInfo);\n ticketGroupIntentionDialog.closeDialog();\n }}\n saveButtonContentId={ContentId.Save}\n />\n \n ),\n };\n};\n","import { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { IconsFill, InfoOutlineIcon } from 'src/svgs/Viagogo';\n\nimport * as styles from './MessageWithIcon.css';\n\nexport const InfoMessage = ({\n message,\n iconSize = vars.iconSize.l,\n style,\n}: {\n message: string | JSX.Element;\n iconSize?: string;\n style?: React.CSSProperties;\n}) => {\n return (\n \n \n
    {message}
    \n \n );\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { TicketTypePriorityInput } from 'src/components/common/TicketTypePriorityInput';\nimport { DeliveryTypeSelector } from 'src/components/Selectors/DeliveryTypeSelector';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { InfoMessage } from 'src/core/POS/MessageWithIcon/InfoMessage';\nimport { Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n DeliveryType, Feature,\n TicketTypeOverride,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\nimport {Checkbox} from \"src/core/interim/Checkbox\";\nimport {useUserHasFeature} from \"src/hooks/useUserHasFeature\";\n\nexport type BulkChangeTicketTypeRuleDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n onOkay: (\n deliveryType: DeliveryType | null,\n ticketTypeRules: TicketTypeOverride | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n updateSalesOfListing?: boolean,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nconst INIT_TICKET_TYPE_RULES = {\n overrides: [\n {\n deliveryType: DeliveryType.InApp,\n ticketTypePriorities: [],\n },\n ],\n};\n\nexport function BulkChangeTicketTypeRuleDialog({\n updateKey,\n onOkay,\n onCancel,\n ...rest\n}: BulkChangeTicketTypeRuleDialogProps) {\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n const [updateSalesOfListings, setUpdateSalesOfListings] = useState(false);\n\n const hasBackfillTicketTypeOverrideToSaleFeature = useUserHasFeature(\n Feature.BackfillListingTicketTypeOverrideToSale\n );\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n await refreshExpandedListItems();\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n ActionOutboxEntityType.Listing,\n BulkActionType.UpdateTicketTypeRules,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const [deliveryType, setDeliveryType] = useState(\n DeliveryType.InApp\n );\n const [ticketTypeRules, setTicketTypeRules] = useState(\n INIT_TICKET_TYPE_RULES\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(null, null, false, onPreviewReceived, updateSalesOfListings);\n } else {\n onOkay(\n deliveryType,\n ticketTypeRules,\n hasBackgroundBulkEditFeature,\n undefined,\n updateSalesOfListings,\n preview\n );\n }\n setIsLoading(false);\n },\n [\n onOkay,\n deliveryType,\n ticketTypeRules,\n preview,\n hasBackgroundBulkEditFeature,\n updateSalesOfListings\n ]\n );\n\n const submittButtonRef = useRef(null);\n\n return (\n }\n />\n }\n onOpened={() => {\n setDeliveryType(DeliveryType.InApp);\n setTicketTypeRules(INIT_TICKET_TYPE_RULES);\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter') {\n submittButtonRef.current.click();\n }\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n }\n />\n {\n if (newD && newD !== deliveryType) {\n setDeliveryType(newD);\n }\n }}\n />\n \n setTicketTypeRules(newRules ?? INIT_TICKET_TYPE_RULES)\n }\n disabled={isLoading}\n />\n {hasBackfillTicketTypeOverrideToSaleFeature && \n {\n setUpdateSalesOfListings((prev) => !prev);\n }}\n disabled={isLoading}\n label={}\n />\n }\n \n \n \n );\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Permission } from 'src/WebApiController';\n\nexport const LaunchChangeTicketTypeRule = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const hasPermission = useUserHasAnyOfPermissions(\n Permission.Inventory_UpdateDeliveryStrategy,\n Permission.Inventory_UpdateDeliveryStrategyOnIsPricerOf,\n Permission.Inventory_UpdateDeliveryStrategyOnPurchasedBy\n );\n\n if (!hasPermission) {\n return null;\n }\n\n return (\n \n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { BulkChangeTicketTypeRuleDialog } from 'src/dialogs/BulkEdits/BulkChangeTicketTypeRuleDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n DeliveryType,\n Event,\n ListingQuery,\n TicketTypeOverride,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_UPDATE_TICKET_TYPE_RULE_UPDATE_KEY } from '../../InventoryActionDropdown.constants';\nimport { LaunchChangeTicketTypeRule } from './LaunchChangeTicketTypeRule';\n\nexport const useBulkChangeTicketTypeRuleAction = (\n filterQueryWithEventIds: ListingQuery,\n\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const updateKey = event\n ? `ticket-type-rule-event-${event.viagVirtualId}`\n : INVENTORY_BULK_UPDATE_TICKET_TYPE_RULE_UPDATE_KEY;\n const {\n refreshCatalog,\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkChangeTicketTypeRuleDialog,\n closeDialog: closeBulkChangeTicketTypeRuleDialog,\n } = useDialog(\n DialogId.BulkChangeTicketTypeRule,\n BulkChangeTicketTypeRuleDialog\n );\n\n const onSubmit = useCallback(\n async (\n deliveryType: DeliveryType | null,\n ticketTypeRules: TicketTypeOverride | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n updateSalesOfListing?: boolean,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const client = new BulkEditListingClient(\n activeAccountWebClientConfig\n );\n\n const preview = await client.bulkUpdateTicketTypeRulesPreview(\n filterQueryWithEventIds,\n updateSalesOfListing\n );\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateTicketTypeRulesPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (deliveryType && ticketTypeRules) {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdateTicketTypeRules(\n {\n item1: preview!.preview,\n item2: deliveryType,\n item3:\n ticketTypeRules.overrides[0].ticketTypePriorities ?? null,\n },\n updateKey,\n supportBackgroundProcess,\n updateSalesOfListing\n );\n if (!supportBackgroundProcess) {\n if (succeeded) {\n if (!event) {\n await refreshCatalog();\n }\n await refreshExpandedListItems();\n }\n\n closeBulkChangeTicketTypeRuleDialog();\n }\n },\n (error) => {\n showErrorDialog(\n 'BulkEditListingClient.bulkUpdateTicketTypeRules',\n error,\n {\n trackErrorData: {\n preview,\n deliveryType,\n ticketTypeRules:\n ticketTypeRules.overrides[0].ticketTypePriorities ?? null,\n },\n }\n );\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n setIsLoading,\n activeAccountWebClientConfig,\n filterQueryWithEventIds,\n showErrorDialog,\n updateKey,\n closeBulkChangeTicketTypeRuleDialog,\n event,\n refreshExpandedListItems,\n refreshCatalog,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n if (event) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n openBulkChangeTicketTypeRuleDialog({\n event,\n updateKey,\n onOkay: onSubmit,\n onClose: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkChangeTicketTypeRuleDialog,\n });\n }}\n disabled={isLoading}\n />\n ),\n };\n};\n","import { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { Permission } from 'src/WebApiController';\n\ninterface UseUpdatePurchasesPermissions {\n hasUpdatePurchasesPermission: boolean;\n hasPurchaseUpdateCommissionPermission: boolean;\n hasPurchaseUpdateDeliveryTypePermission: boolean;\n hasPurchaseUpdateSeatTraitsPermission: boolean;\n}\n\nexport const useUpdatePurchasesPermissions =\n (): UseUpdatePurchasesPermissions => {\n const hasPurchaseUpdatePermission = useUserHasAnyOfPermissions(\n Permission.Purchases_Edit,\n Permission.Purchases_EditOwned\n );\n const hasPurchaseUpdateCommissionPermission = useUserHasAnyOfPermissions(\n Permission.Purchases_UpdateBuyerCommission,\n Permission.Purchases_UpdateBuyerCommissionOwned\n );\n const hasPurchaseUpdateDeliveryTypePermission = useUserHasAnyOfPermissions(\n Permission.Purchases_UpdateDeliveryType,\n Permission.Purchases_UpdateDeliveryTypeOwned,\n Permission.Purchases_UpdateCustomDeliveryType,\n Permission.Purchases_UpdateCustomDeliveryTypeOwned\n );\n const hasPurchaseUpdateSeatTraitsPermission = useUserHasAnyOfPermissions(\n Permission.Purchases_UpdateSeatTraits,\n Permission.Purchases_UpdateSeatTraitsOwned\n );\n\n return {\n hasUpdatePurchasesPermission: hasPurchaseUpdatePermission,\n hasPurchaseUpdateCommissionPermission,\n hasPurchaseUpdateDeliveryTypePermission,\n hasPurchaseUpdateSeatTraitsPermission,\n };\n };\n","import { useUpdatePurchasesPermissions } from 'src/components/Purchases/BulkActions/useUpdatePurchasesPermissions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const LaunchBulkEditCommission = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const { hasPurchaseUpdateCommissionPermission } =\n useUpdatePurchasesPermissions();\n\n if (!hasPurchaseUpdateCommissionPermission) {\n return null;\n }\n\n return (\n onClick(e)}\n disabled={disabled}\n >\n \n \n );\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useMemo, useRef, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport {\n CommissionSection,\n PurchaseCommissionInput,\n} from 'src/modals/common/Purchase/CommissionSection';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n Commission,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport type BulkEditCommissionDialogProps = ComponentProps & {\n updateKey: string;\n onOkay: (\n commissions: Commission[] | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport function BulkEditCommissionDialog({\n updateKey,\n onOkay,\n onCancel,\n ...rest\n}: BulkEditCommissionDialogProps) {\n const entityType = ActionOutboxEntityType.Purchase;\n\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { refreshData } = usePurchaseDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const methods = useForm();\n const { handleSubmit, watch, formState, trigger } = methods;\n const isFormValid = formState.isValid;\n\n const input = watch();\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n // Depending whether it's Listing, Sales, or Purchase\n // the context would be different here\n if (refreshData) {\n await refreshData(true);\n }\n if (refreshExpandedListItems) {\n await refreshExpandedListItems();\n }\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshData,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n entityType,\n BulkActionType.UpdateBuyerCommissions,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature = useMemo(\n () => bulkEditHub?.state === HubConnectionState.Connected,\n [bulkEditHub?.state]\n );\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(null, false, onPreviewReceived);\n } else {\n handleSubmit((i) =>\n onOkay(\n i.commissions?.value ?? null,\n hasBackgroundBulkEditFeature,\n undefined,\n preview\n )\n )();\n }\n setIsLoading(false);\n },\n [handleSubmit, hasBackgroundBulkEditFeature, onOkay, preview]\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const isInputValid = useMemo(() => {\n return input.commissions != null;\n }, [input]);\n\n const submitButtonRef = useRef(null);\n\n return (\n }\n />\n }\n onOpened={() => {\n initJob();\n }}\n onKeyUp={(e) => {\n if (submitButtonRef.current && e.key === 'Enter' && isInputValid) {\n submitButtonRef.current.click();\n }\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n {\n if (!isFormValid) {\n trigger();\n }\n return isFormValid;\n }}\n />\n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n \n \n {input.commissions != null &&\n input.commissions.value?.length === 0 && (\n \n }\n />\n )}\n \n \n \n );\n}\n","import { useCallback } from 'react';\nimport { LaunchBulkEditCommission } from 'src/components/common/BulkActions/BulkEditCommissionAction';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { BulkEditCommissionDialog } from 'src/dialogs/BulkEdits/BulkEditCommissionDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n Commission,\n Event,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_UPDATE_COMMISSION_UPDATE_KEY } from '../../InventoryActionDropdown.constants';\n\nexport const useBulkEditCommissionAction = (\n filterQueryWithEventIds: ListingQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const updateKey = event\n ? `listingCommission-event-${event.viagVirtualId}`\n : INVENTORY_BULK_UPDATE_COMMISSION_UPDATE_KEY;\n const {\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkEditCommissionDialog,\n closeDialog: closeBulkEditCommissionDialog,\n } = useDialog(DialogId.BulkEditCommission, BulkEditCommissionDialog);\n\n const onSubmit = useCallback(\n async (\n commissions: Commission[] | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdatePurchaseCommissionsPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdatePurchaseCommissionsPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdatePurchaseCommissions(\n {\n item1: preview!.preview,\n item2: commissions ?? [],\n },\n updateKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on listingDetails\n // we force re-loading the listing and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n\n closeBulkEditCommissionDialog();\n }\n },\n (error) => {\n showErrorDialog('onSubmitEditCommission', error, {\n trackErrorData: { commissions, preview },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n setIsLoading,\n activeAccountWebClientConfig,\n filterQueryWithEventIds,\n showErrorDialog,\n updateKey,\n closeBulkEditCommissionDialog,\n setActivePosEntity,\n refreshExpandedListItems,\n ]\n );\n\n const onLaunchAction = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (event) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n openBulkEditCommissionDialog({\n updateKey,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkEditCommissionDialog,\n });\n },\n [\n closeBulkEditCommissionDialog,\n event,\n onSubmit,\n openBulkEditCommissionDialog,\n setIsLoading,\n setListItemExpansion,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n \n ),\n };\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { isEqual } from 'lodash-es';\nimport { ComponentProps, useCallback, useMemo, useRef, useState } from 'react';\nimport { FormProvider, useForm, UseFormReturn } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { MarketplaceLogo } from 'src/components/common/MarketplaceLogo';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { SimpleTable } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { compareMarketplace } from 'src/utils/eventWithDataUtils';\nimport { getListingDetailsUpdateInput } from 'src/utils/inventoryUtils';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n ListingDetails,\n ListingDetailsUpdateInput,\n Marketplace,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\nimport * as styles from './BulkEditMarketplaceSeatingDialog.css';\n\nexport type MarketplaceBroadcastSelectionMode = 'all' | 'none' | 'default';\n\nconst enum SeatingAttribute {\n Section = 'overrideSection',\n Row = 'overrideRow',\n Seats = 'overrideSeats',\n}\n\nconst seatingAttributes = [\n SeatingAttribute.Section,\n SeatingAttribute.Row,\n SeatingAttribute.Seats,\n] as const;\n\nexport type BulkEditMarketplaceSeatingDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n onOkay: (\n listingUpdate: ListingDetailsUpdateInput | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\n/**\n * Bulk Marketplace Seating Change Dialog, with Form Provider wrapper\n */\nexport const BulkEditMarketplaceSeatingDialog = ({\n ...rest\n}: BulkEditMarketplaceSeatingDialogProps) => {\n const methods = useForm<\n Partial>>\n >({});\n\n return (\n \n \n \n );\n};\n\ntype BulkEditMarketplaceSeatingDialogContent = {\n methods: UseFormReturn<\n Partial>>,\n unknown,\n undefined\n >;\n} & BulkEditMarketplaceSeatingDialogProps;\n\n/**\n * Bulk Marketplace Seating Change Dialog\n */\nexport function BulkEditMarketplaceSeatingDialogContent({\n updateKey,\n onOkay,\n onCancel,\n methods,\n ...rest\n}: BulkEditMarketplaceSeatingDialogContent) {\n const { loginContext } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n const marketplaceSettings =\n loginContext?.user?.activeAccount?.marketplaceSettings;\n const { getValues, setValue, formState, watch } = methods;\n\n const input = watch();\n\n const textContentMap = {\n [SeatingAttribute.Section]: useContent(ContentId.Section),\n [SeatingAttribute.Row]: useContent(ContentId.Row),\n [SeatingAttribute.Seats]: useContent(ContentId.Seats),\n };\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n await refreshExpandedListItems();\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n ActionOutboxEntityType.Listing,\n BulkActionType.UpdateMarketplaceSeating,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const onInputChangeHandler = (\n value: string,\n marketplace: Marketplace,\n attribute: SeatingAttribute\n ) => {\n const oldValue =\n getValues(marketplace) ?? ({} as Record);\n setValue(marketplace, { ...oldValue, [attribute]: value });\n };\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n const formValues = getValues();\n const formEntries = Object.entries(formValues).map(\n ([marketplace, value]) => ({ mkp: marketplace, ...value })\n );\n\n const updatedListing = getListingDetailsUpdateInput({\n mkpListings: formEntries,\n } as ListingDetails);\n\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(null, false, onPreviewReceived);\n } else {\n onOkay(\n updatedListing,\n hasBackgroundBulkEditFeature,\n undefined,\n preview\n );\n }\n setIsLoading(false);\n },\n [getValues, onOkay, preview, hasBackgroundBulkEditFeature]\n );\n\n const isInputValid = useMemo(() => {\n return !isEqual(input, formState.defaultValues ?? {});\n }, [formState.defaultValues, input]);\n\n const submittButtonRef = useRef(null);\n\n return (\n }\n />\n }\n onOpened={() => {\n initJob();\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n }}\n centered\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter' && isInputValid) {\n submittButtonRef.current.click();\n }\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n
    \n
    \n \n \n \n \n \n \n \n {textContentMap[SeatingAttribute.Section]}\n \n \n {textContentMap[SeatingAttribute.Row]}\n \n \n {textContentMap[SeatingAttribute.Seats]}\n \n \n \n \n {marketplaceSettings\n ?.filter((ml) => ml.mkp && ml.mkp !== Marketplace.Offline)\n ?.toSorted((a, b) => compareMarketplace(a.mkp, b.mkp))\n ?.map((marketplace) => {\n return (\n \n \n \n \n {seatingAttributes.map((attribute) => (\n \n \n onInputChangeHandler(\n e.currentTarget.value,\n marketplace.mkp,\n attribute\n )\n }\n />\n \n ))}\n \n );\n })}\n \n \n
    \n
    \n \n \n );\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Permission } from 'src/WebApiController';\n\nexport const LaunchUpdateMarketplaceSeating = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const hasPermission = useUserHasAnyOfPermissions(\n Permission.Inventory_UpdateListingInfo,\n Permission.Inventory_UpdateListingInfoOnIsPricerOf,\n Permission.Inventory_UpdateListingInfoOnPurchasedBy\n );\n\n if (!hasPermission) {\n return null;\n }\n\n return (\n \n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { BulkEditMarketplaceSeatingDialog } from 'src/dialogs/BulkEdits/BulkEditMarketplaceSeatingDialog/BulkEditMarketplaceSeatingDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n Event,\n ListingDetails,\n ListingDetailsUpdateInput,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_UPDATE_MARKETPLACE_SEATING_UPDATE_KEY } from '../../InventoryActionDropdown.constants';\nimport { LaunchUpdateMarketplaceSeating } from './LaunchEditMarketplaceSeating';\n\nexport const useBulkEditMarketplaceSeatingAction = (\n filterQueryWithEventIds: ListingQuery,\n\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const updateKey = event\n ? `marketplace-seating-event-${event.viagVirtualId}`\n : INVENTORY_BULK_UPDATE_MARKETPLACE_SEATING_UPDATE_KEY;\n const {\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const {\n openDialog: openBulkEditMarketplaceSeatingDialog,\n closeDialog: closeBulkEditMarketplaceSeatingDialog,\n } = useDialog(\n DialogId.BulkEditMarketplaceSeating,\n BulkEditMarketplaceSeatingDialog\n );\n const onSubmit = useCallback(\n async (\n listingUpdate: ListingDetailsUpdateInput | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdateMarketplaceSeatingOverridesPreview(\n filterQueryWithEventIds\n );\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog(\n 'bulkUpdateMarketplaceSeatingOverridesPreview',\n error,\n {\n trackErrorData: { filterQueryWithEventIds },\n }\n );\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (listingUpdate) {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdateMarketplaceSeatingOverrides(\n {\n item1: preview!.preview,\n item2: listingUpdate,\n },\n updateKey,\n supportBackgroundProcess\n );\n if (!supportBackgroundProcess) {\n if (succeeded) {\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n closeBulkEditMarketplaceSeatingDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkUpdateMarketplaceSeatingOverrides', error, {\n trackErrorData: { listingUpdate, preview },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n setIsLoading,\n activeAccountWebClientConfig,\n filterQueryWithEventIds,\n showErrorDialog,\n updateKey,\n closeBulkEditMarketplaceSeatingDialog,\n setActivePosEntity,\n refreshExpandedListItems,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n if (event) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n openBulkEditMarketplaceSeatingDialog({\n updateKey,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkEditMarketplaceSeatingDialog,\n });\n }}\n disabled={isLoading}\n />\n ),\n };\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n ListingDetails,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport type BulkRemovePredeliveryDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n onOkay: (\n removeBarcodes: boolean,\n removePdfs: boolean,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport const BulkRemovePredeliveryDialog = ({\n updateKey,\n onCancel,\n onOkay,\n ...rest\n}: BulkRemovePredeliveryDialogProps) => {\n const [removeBarcodes, setRemoveBarcodes] = useState(true);\n const [removePdfs, setRemovePdfs] = useState(true);\n\n const [isLoading, setIsLoading] = useState(false);\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n await refreshExpandedListItems();\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n ActionOutboxEntityType.Listing,\n BulkActionType.RemovePredelivery,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(false, false, false, onPreviewReceived);\n } else {\n onOkay(\n removeBarcodes,\n removePdfs,\n hasBackgroundBulkEditFeature,\n undefined,\n preview\n );\n }\n setIsLoading(false);\n },\n [onOkay, removeBarcodes, removePdfs, preview, hasBackgroundBulkEditFeature]\n );\n\n const submittButtonRef = useRef(null);\n\n return (\n }\n />\n }\n onOpened={() => {\n setRemoveBarcodes(true);\n setRemovePdfs(true);\n initJob();\n }}\n onKeyUp={(e) => {\n if (\n submittButtonRef.current &&\n e.key === 'Enter' &&\n (removeBarcodes || removePdfs)\n ) {\n submittButtonRef.current.click();\n }\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n {...rest}\n >\n \n \n \n }\n />\n\n \n setRemoveBarcodes(e.target.checked)}\n label={}\n labelPosition=\"right\"\n />\n setRemovePdfs(e.target.checked)}\n label={}\n labelPosition=\"right\"\n />\n\n {isLoading && }\n \n \n \n \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Permission } from 'src/WebApiController';\n\nexport const LaunchRemovePredelivery = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const hasPermission = useUserHasAnyOfPermissions(\n Permission.Inventory_Predelivery,\n Permission.Inventory_PredeliveryOnIsPricerOf,\n Permission.Inventory_PredeliveryOnPurchasedBy\n );\n\n if (!hasPermission) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { BulkRemovePredeliveryDialog } from 'src/dialogs/BulkEdits/BulkRemovePredeliveryDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n Event,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_REMOVE_PREDELIVERY_UPDATE_KEY } from '../../InventoryActionDropdown.constants';\nimport { LaunchRemovePredelivery } from './LaunchRemovePredelivery';\n\nexport const useBulkRemovePredelivery = (\n filterQueryWithEventIds: ListingQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { setSelectionMode } = useMultiSelectionContext();\n\n const updateKey = event\n ? `inventory-predelivery-event-${event.viagVirtualId}`\n : INVENTORY_BULK_REMOVE_PREDELIVERY_UPDATE_KEY;\n\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkRemovePredeliveryDialog,\n closeDialog: closeBulkRemovePredeliveryDialog,\n } = useDialog(DialogId.BulkRemovePredilivery, BulkRemovePredeliveryDialog);\n\n const onSubmit = useCallback(\n async (\n removeBarcodes: boolean,\n removePdfs: boolean,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkRemovePredeliveryPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkRemovePredeliveryPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkRemovePredelivery(\n preview!.preview,\n removeBarcodes,\n removePdfs,\n updateKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n setSelectionMode();\n await refreshExpandedListItems();\n }\n\n closeBulkRemovePredeliveryDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkRemovePredelivery', error, {\n trackErrorData: {\n preview,\n removeBarcodes,\n removePdfs,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeBulkRemovePredeliveryDialog,\n filterQueryWithEventIds,\n refreshExpandedListItems,\n setIsLoading,\n setSelectionMode,\n showErrorDialog,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n openBulkRemovePredeliveryDialog({\n updateKey,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkRemovePredeliveryDialog,\n });\n }}\n disabled={isLoading}\n />\n ),\n };\n};\n","import { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { ActionOutboxEntityType, Permission } from 'src/WebApiController';\n\ninterface UseBulkUpdateAutoFulfillPermissionsProps {\n entityType: ActionOutboxEntityType.Listing | ActionOutboxEntityType.Sale;\n}\n\ninterface BulkUpdateAutoFulfillPermissions {\n hasEditAutoFulfillPermissions: boolean;\n}\n\nexport const useBulkUpdateAutoFulfillPermissions = ({\n entityType,\n}: UseBulkUpdateAutoFulfillPermissionsProps): BulkUpdateAutoFulfillPermissions => {\n const hasEditAutoFulfillPermissions = useUserHasAnyOfPermissions(\n ...(entityType === ActionOutboxEntityType.Listing\n ? [\n Permission.Inventory_UpdateListingInfo,\n Permission.Inventory_UpdateListingInfoOnIsPricerOf,\n Permission.Inventory_UpdateListingInfoOnPurchasedBy,\n ]\n : [\n Permission.Sales_UpdateSalesInfo,\n Permission.Sales_UpdateSalesInfoOnIsFulfillerOf,\n Permission.Sales_UpdateSalesInfoOnIsPricerOf,\n Permission.Sales_UpdateSaleOnPurchasedBy,\n ])\n );\n\n return {\n hasEditAutoFulfillPermissions,\n };\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { useAnyMarketplaceHandledByProcessor } from 'src/hooks/useMarketplaceHandledByProcessor';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ActionOutboxEntityType, Feature } from 'src/WebApiController';\n\nimport { useBulkUpdateAutoFulfillPermissions } from './useBulkUpdateAutoFulfillPermissions';\n\nexport const LaunchBulkUpdateAutoFulfill = ({\n onClick,\n disabled,\n entityType,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n entityType: ActionOutboxEntityType.Listing | ActionOutboxEntityType.Sale;\n}) => {\n const { hasEditAutoFulfillPermissions } = useBulkUpdateAutoFulfillPermissions(\n {\n entityType,\n }\n );\n const hasAutoFulfillFeature = useUserHasFeature(Feature.AutoFulfillSetting);\n const anyMkpHandledByProcessor = useAnyMarketplaceHandledByProcessor();\n\n if (\n !anyMkpHandledByProcessor ||\n !hasEditAutoFulfillPermissions ||\n !hasAutoFulfillFeature\n ) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Stack, Switch } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport type BulkUpdateAutoFulfillDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n onOkay: (\n isNoFulfill: boolean | null,\n updateSalesOfListings: boolean,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n entityType: ActionOutboxEntityType.Listing | ActionOutboxEntityType.Sale;\n};\n\nexport function BulkUpdateAutoFulfillDialog({\n updateKey,\n onOkay,\n onCancel,\n entityType,\n ...rest\n}: BulkUpdateAutoFulfillDialogProps) {\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n\n const [isNoFulfill, setIsNoFulfill] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n await refreshExpandedListItems();\n\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n entityType,\n BulkActionType.UpdateIsNoFulfill,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const [updateSalesOfListings, setUpdateSalesOfListings] = useState(false);\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(null, updateSalesOfListings, false, onPreviewReceived);\n } else {\n onOkay(\n isNoFulfill,\n updateSalesOfListings,\n hasBackgroundBulkEditFeature,\n undefined,\n preview\n );\n }\n setIsLoading(false);\n },\n [\n onOkay,\n updateSalesOfListings,\n isNoFulfill,\n preview,\n hasBackgroundBulkEditFeature,\n ]\n );\n\n const submittButtonRef = useRef(null);\n\n return (\n }\n />\n }\n onOpened={() => {\n setIsNoFulfill(false);\n setUpdateSalesOfListings(false);\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter') {\n submittButtonRef.current.click();\n }\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n \n \n \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n setIsNoFulfill(!isChecked);\n }}\n />\n \n\n {entityType === ActionOutboxEntityType.Listing && (\n {\n setUpdateSalesOfListings((prev) => !prev);\n }}\n disabled={isLoading}\n label={}\n />\n )}\n \n \n \n );\n}\n","import { useCallback } from 'react';\nimport { LaunchBulkUpdateAutoFulfill } from 'src/components/common/BulkActions/BulkUpdateAutoFulfillAction';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { BulkUpdateAutoFulfillDialog } from 'src/dialogs/BulkEdits/BulkUpdateAutoFulfillDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n Event,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_UPDATE_AUTOFULFILL_UPDATE_KEY } from '../../InventoryActionDropdown.constants';\n\nexport const useBulkUpdateAutoFulfillAction = (\n filterQueryWithEventIds: ListingQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const updateKey = event\n ? `listing-autofulfill-event-${event.viagVirtualId}`\n : INVENTORY_BULK_UPDATE_AUTOFULFILL_UPDATE_KEY;\n const {\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkUpdateAutoFulfillDialog,\n closeDialog: closeBulkUpdateAutofulfillDialog,\n } = useDialog(DialogId.BulkUpdateAutoFulfill, BulkUpdateAutoFulfillDialog);\n\n const onSubmit = useCallback(\n async (\n isNoFulfill: boolean | null,\n updateSalesOfListings: boolean,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdateIsNoFulfillPreview(\n filterQueryWithEventIds,\n updateSalesOfListings\n );\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateIsNoFulfillPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (isNoFulfill != null) {\n await tryInvokeApi(\n async () => {\n const listingClient = new BulkEditListingClient(\n activeAccountWebClientConfig\n );\n\n const succeeded = await listingClient.bulkUpdateIsNoFulfill(\n preview!.preview,\n updateKey,\n isNoFulfill,\n updateSalesOfListings,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on listingDetails\n // we force re-loading the listing and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n\n closeBulkUpdateAutofulfillDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkUpdateIsNoFulfill', error, {\n trackErrorData: { isNoFulfill, preview },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n setIsLoading,\n activeAccountWebClientConfig,\n filterQueryWithEventIds,\n showErrorDialog,\n updateKey,\n closeBulkUpdateAutofulfillDialog,\n setActivePosEntity,\n refreshExpandedListItems,\n ]\n );\n\n const onChangeClick = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (event) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n\n openBulkUpdateAutoFulfillDialog({\n updateKey,\n onOkay: onSubmit,\n entityType: ActionOutboxEntityType.Listing,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkUpdateAutofulfillDialog,\n });\n },\n [\n event,\n openBulkUpdateAutoFulfillDialog,\n updateKey,\n onSubmit,\n closeBulkUpdateAutofulfillDialog,\n setListItemExpansion,\n setIsLoading,\n ]\n );\n\n return {\n dropDown: (\n \n ),\n };\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { TicketTypePriorityInput } from 'src/components/common/TicketTypePriorityInput';\nimport { DeliveryTypeSelector } from 'src/components/Selectors/DeliveryTypeSelector';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreview,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n DeliveryType,\n ListingDetails,\n TicketTypeOverride,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport type BulkEditDeliveryTypeDialogProps = ComponentProps & {\n updateKey: string;\n onOkay: (\n deliveryType: DeliveryType | null,\n ticketTypeRules: TicketTypeOverride | null,\n updateSalesOfListings: boolean,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails,\n retryableEntities?: BulkEditPreview\n ) => void;\n onCancel: () => void;\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Purchase\n | ActionOutboxEntityType.TicketGroup;\n infoMessage?: React.ReactNode;\n showUpdateAssociatedSalesOption?: boolean;\n};\n\nconst INIT_TICKET_TYPE_RULES = {\n overrides: [\n {\n deliveryType: DeliveryType.InApp,\n ticketTypePriorities: [],\n },\n ],\n};\n\nexport function BulkEditDeliveryTypeDialog({\n updateKey,\n onOkay,\n onCancel,\n entityType,\n infoMessage,\n children,\n showUpdateAssociatedSalesOption = true,\n ...rest\n}: BulkEditDeliveryTypeDialogProps) {\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { refreshData } = usePurchaseDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const [isLoading, setIsLoading] = useState(false);\n const {\n setProgress,\n setPreview,\n setMainDialogOpened,\n retryableEntities,\n clearRetryStates,\n } = useBulkEditHubContext();\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (retryableEntities || newProgress?.step === BulkEditStep.Done) {\n if (retryableEntities) {\n clearRetryStates();\n }\n\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n if (refreshData) {\n await refreshData(true);\n }\n if (refreshExpandedListItems) {\n await refreshExpandedListItems();\n }\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n clearRetryStates,\n onCancel,\n refreshData,\n refreshExpandedListItems,\n retryableEntities,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n entityType,\n BulkActionType.UpdateDeliveryType,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const [deliveryType, setDeliveryType] = useState(\n DeliveryType.InApp\n );\n const [ticketTypeRules, setTicketTypeRules] = useState(\n INIT_TICKET_TYPE_RULES\n );\n const [updateSalesOfListings, setUpdateSalesOfListings] = useState(false);\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(\n null,\n null,\n updateSalesOfListings,\n false,\n onPreviewReceived,\n undefined,\n retryableEntities\n );\n } else {\n onOkay(\n deliveryType,\n ticketTypeRules,\n updateSalesOfListings,\n hasBackgroundBulkEditFeature,\n undefined,\n preview\n );\n }\n setIsLoading(false);\n },\n [\n onOkay,\n updateSalesOfListings,\n retryableEntities,\n deliveryType,\n ticketTypeRules,\n hasBackgroundBulkEditFeature,\n preview,\n ]\n );\n\n const submittButtonRef = useRef(null);\n\n return (\n }\n />\n }\n size={stage === BulkEditStage.Preview ? 'xl' : 'lg'}\n {...rest}\n onOpened={() => {\n setDeliveryType(DeliveryType.InApp);\n setTicketTypeRules(INIT_TICKET_TYPE_RULES);\n setUpdateSalesOfListings(false);\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter') {\n submittButtonRef.current.click();\n }\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n onExit={() => {\n if (retryableEntities) {\n clearRetryStates();\n }\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n {infoMessage}\n {\n if (newD && newD !== deliveryType) {\n setDeliveryType(newD);\n }\n }}\n />\n\n \n setTicketTypeRules(newRules || INIT_TICKET_TYPE_RULES)\n }\n disabled={isLoading}\n />\n\n {showUpdateAssociatedSalesOption && (\n {\n setUpdateSalesOfListings((prev) => !prev);\n }}\n disabled={isLoading}\n label={}\n />\n )}\n\n {children}\n \n \n \n );\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature, Permission } from 'src/WebApiController';\n\nexport const LaunchBulkUpdateDeliveryType = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const hasPermission = useUserHasAnyOfPermissions(\n Permission.Inventory_ManageSeatSaver,\n Permission.Inventory_ManageSeatSaverCreatedBy\n );\n\n const hasSeatSaverPermission = useUserHasFeature(Feature.SeatSaver);\n\n if (!hasPermission || !hasSeatSaverPermission) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { InfoMessage } from 'src/core/POS/MessageWithIcon/InfoMessage';\nimport { BulkEditDeliveryTypeDialog } from 'src/dialogs/BulkEdits/BulkEditDeliveryTypeDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n DeliveryType,\n Event,\n ListingQuery,\n TicketTypeOverride,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_UPDATE_DELIVERY_TYPE_UPDATE_KEY } from '../../InventoryActionDropdown.constants';\nimport { LaunchBulkUpdateDeliveryType } from './LaunchBulkUpdateDeliveryType';\n\nexport const useBulkUpdateDeliveryType = (\n filterQuery: ListingQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const updateKey = event\n ? `inventory-delivery-type-event-${event.viagVirtualId}`\n : INVENTORY_BULK_UPDATE_DELIVERY_TYPE_UPDATE_KEY;\n\n const { showErrorDialog } = useErrorBoundaryContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const {\n openDialog: openBulkEditDeliveryTypeDialog,\n closeDialog: closeBulkEditDeliveryTypeDialog,\n } = useDialog(DialogId.BulkEditDeliveryType, BulkEditDeliveryTypeDialog);\n const onSubmit = useCallback(\n async (\n deliveryType: DeliveryType | null,\n tickeTypePriorities: TicketTypeOverride | null,\n _updateSalesOfListings: boolean, // not used\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdateDeliveryTypePreview(filterQuery);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateDeliveryTypePreview', error, {\n trackErrorData: { filterQuery },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (deliveryType && tickeTypePriorities) {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdateDeliveryType(\n {\n item1: preview!.preview,\n item2: deliveryType,\n item3: tickeTypePriorities.overrides[0].ticketTypePriorities,\n },\n updateKey,\n supportBackgroundProcess\n );\n if (!supportBackgroundProcess) {\n if (succeeded) {\n refreshExpandedListItems();\n }\n\n closeBulkEditDeliveryTypeDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkUpdateDeliveryType', error, {\n trackErrorData: {\n preview,\n deliveryType,\n tickeTypePriorities,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeBulkEditDeliveryTypeDialog,\n filterQuery,\n refreshExpandedListItems,\n setIsLoading,\n showErrorDialog,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n openBulkEditDeliveryTypeDialog({\n header: (\n \n ),\n updateKey,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkEditDeliveryTypeDialog,\n entityType: ActionOutboxEntityType.Listing,\n infoMessage: (\n \n }\n />\n ),\n showUpdateAssociatedSalesOption: false, // Placeholder listings don't have allocated sales\n });\n }}\n disabled={isLoading}\n />\n ),\n };\n};\n","import { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { ActionOutboxEntityType, Permission } from 'src/WebApiController';\n\ninterface UseBulkUpdateInternalNotesPermissionsProps {\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Sale\n | ActionOutboxEntityType.Purchase;\n}\n\ninterface BulkUpdateInternalNotesPermissions {\n hasEditInternalNotesPermissions: boolean;\n}\n\nexport const useBulkUpdateInternalNotesPermissions = ({\n entityType,\n}: UseBulkUpdateInternalNotesPermissionsProps): BulkUpdateInternalNotesPermissions => {\n const hasEditInternalNotesPermissions = useUserHasAnyOfPermissions(\n ...(entityType === ActionOutboxEntityType.Listing\n ? [\n Permission.Inventory_UpdateListingInfo,\n Permission.Inventory_UpdateListingInfoOnIsPricerOf,\n Permission.Inventory_UpdateListingInfoOnPurchasedBy,\n ]\n : entityType === ActionOutboxEntityType.Sale\n ? [\n Permission.Sales_UpdateSalesInfo,\n Permission.Sales_UpdateSalesInfoOnIsFulfillerOf,\n Permission.Sales_UpdateSalesInfoOnIsPricerOf,\n Permission.Sales_UpdateSaleOnPurchasedBy,\n ]\n : [Permission.Purchases_Edit, Permission.Purchases_EditOwned])\n );\n\n return {\n hasEditInternalNotesPermissions,\n };\n};\n","import { useBulkUpdateInternalNotesPermissions } from 'src/components/common/BulkActions/BulkUpdateInternalNotesAction/useBulkUpdateInternalNotesPermissions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ActionOutboxEntityType, Feature } from 'src/WebApiController';\n\nexport const LaunchBulkUpdateInternalNotes = ({\n onClick,\n disabled,\n entityType,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Sale\n | ActionOutboxEntityType.Purchase;\n}) => {\n const { hasEditInternalNotesPermissions } =\n useBulkUpdateInternalNotesPermissions({\n entityType,\n });\n\n const hasBulkUpdateInternalNotesFeature = useUserHasFeature(\n Feature.BulkUpdateInternalNotes\n );\n\n if (!hasEditInternalNotesPermissions || !hasBulkUpdateInternalNotesFeature) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useMemo, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Radio, RadioGroup, Stack } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport type BulkUpdateInternalNotesDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n onOkay: (\n isUpdate: boolean | null,\n searchString: string | null,\n replaceString: string | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport function BulkUpdateInternalNotesDialog({\n updateKey,\n onOkay,\n onCancel,\n entityType,\n ...rest\n}: BulkUpdateInternalNotesDialogProps) {\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { refreshData } = usePurchaseDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n const [updateMode, setUpdateMode] = useState<\n 'searchAndReplace' | 'clearAndOverwrite'\n >('searchAndReplace');\n const [searchString, setSearchString] = useState('');\n const [replaceString, setReplaceString] = useState('');\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n // Depending whether it's Listing, Sales, or Purchase\n // the context would be different here\n if (refreshData) {\n await refreshData(true);\n }\n if (refreshExpandedListItems) {\n await refreshExpandedListItems();\n }\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshData,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n entityType,\n BulkActionType.UpdateInternalNotes,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const alertDialog = useBasicDialog();\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const isInputValid = useMemo(() => {\n if (updateMode === 'searchAndReplace') {\n return searchString.length > 0 && replaceString.length > 0;\n }\n\n return replaceString.length > 0;\n }, [updateMode, replaceString.length, searchString.length]);\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n if (onPreviewReceived) {\n onOkay(null, null, null, false, onPreviewReceived);\n } else {\n onOkay(\n /* isUpdate */ updateMode === 'clearAndOverwrite',\n searchString,\n replaceString,\n hasBackgroundBulkEditFeature,\n undefined,\n preview\n );\n }\n setIsLoading(false);\n },\n [\n onOkay,\n updateMode,\n searchString,\n replaceString,\n preview,\n hasBackgroundBulkEditFeature,\n ]\n );\n\n const onConfirmDialogOkay = useCallback(() => {\n onOkay(\n /* isUpdate */ updateMode === 'clearAndOverwrite',\n searchString,\n replaceString,\n hasBackgroundBulkEditFeature,\n undefined,\n preview\n );\n\n alertDialog.closeDialog();\n }, [\n alertDialog,\n hasBackgroundBulkEditFeature,\n onOkay,\n preview,\n replaceString,\n searchString,\n updateMode,\n ]);\n\n const submittButtonRef = useRef(null);\n\n return (\n }\n />\n }\n onOpened={() => {\n setUpdateMode('searchAndReplace');\n setSearchString('');\n setReplaceString('');\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter' && isInputValid) {\n submittButtonRef.current.click();\n }\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n }>\n {\n setUpdateMode(value);\n }}\n value={updateMode}\n >\n \n }\n />\n }\n />\n \n \n \n\n {updateMode === 'searchAndReplace' && (\n }>\n setSearchString(v.target.value)}\n />\n \n )}\n\n \n }\n >\n setReplaceString(v.target.value)}\n />\n \n \n \n \n );\n}\n","import { useCallback } from 'react';\nimport { LaunchBulkUpdateInternalNotes } from 'src/components/common/BulkActions/BulkUpdateInternalNotesAction';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { BulkUpdateInternalNotesDialog } from 'src/dialogs/BulkEdits/BulkUpdateInternalNotesDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n Event,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_UPDATE_INTERNAL_NOTES_UPDATE_KEY } from '../../InventoryActionDropdown.constants';\n\nexport const useBulkUpdateInternalNotesAction = (\n filterQueryWithEventIds: ListingQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const updateKey = event\n ? `listing-internal-notes-event-${event.viagVirtualId}`\n : INVENTORY_BULK_UPDATE_INTERNAL_NOTES_UPDATE_KEY;\n const {\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkUpdateInternalNotesDialog,\n closeDialog: closeBulkUpdateInternalNotesDialog,\n } = useDialog(\n DialogId.BulkUpdateInternalNotes,\n BulkUpdateInternalNotesDialog\n );\n\n const onSubmit = useCallback(\n async (\n isUpdate: boolean | null,\n searchString: string | null,\n replaceString: string | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdateInternalNotesPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateInternalNotesPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (\n isUpdate != null &&\n searchString != null &&\n replaceString != null\n ) {\n await tryInvokeApi(\n async () => {\n const listingClient = new BulkEditListingClient(\n activeAccountWebClientConfig\n );\n\n const succeeded = await listingClient.bulkUpdateInternalNotes(\n preview!.preview,\n updateKey,\n isUpdate,\n searchString,\n replaceString,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on listingDetails\n // we force re-loading the listing and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n\n closeBulkUpdateInternalNotesDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkUpdateInternalNotes', error, {\n trackErrorData: {\n isUpdate,\n searchString,\n replaceString,\n preview,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n setIsLoading,\n activeAccountWebClientConfig,\n filterQueryWithEventIds,\n showErrorDialog,\n updateKey,\n closeBulkUpdateInternalNotesDialog,\n setActivePosEntity,\n refreshExpandedListItems,\n ]\n );\n\n const onChangeClick = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (event) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n\n openBulkUpdateInternalNotesDialog({\n updateKey,\n onOkay: onSubmit,\n entityType: ActionOutboxEntityType.Listing,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkUpdateInternalNotesDialog,\n });\n },\n [\n closeBulkUpdateInternalNotesDialog,\n event,\n onSubmit,\n openBulkUpdateInternalNotesDialog,\n setIsLoading,\n setListItemExpansion,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n \n ),\n };\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport {\n ComponentProps,\n CSSProperties,\n useCallback,\n useRef,\n useState,\n} from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { ListingNoteSelectionInput } from 'src/components/Input/ListingNoteSelectionInput';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { InfoMessage } from 'src/core/POS/MessageWithIcon/InfoMessage';\nimport { vars } from 'src/core/themes';\nimport { Radio, RadioGroup, Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n ListingNote,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nconst radioInfoMessageStyle: CSSProperties = {\n marginLeft: vars.spacing.xxs,\n};\n\nexport type BulkEditSeatTraitsDialogProps = ComponentProps & {\n updateKey: string;\n isLoading?: boolean;\n onOkay: (\n seatTraits: ListingNote[] | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails,\n appendSeatTraits?: boolean\n ) => void;\n onCancel: () => void;\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Purchase\n | ActionOutboxEntityType.TicketGroup;\n infoMessage?: React.ReactNode;\n};\n\nexport function BulkEditSeatTraitsDialog({\n updateKey,\n onOkay,\n onCancel,\n entityType,\n infoMessage,\n ...rest\n}: BulkEditSeatTraitsDialogProps) {\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { refreshData } = usePurchaseDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n const [appendSeatTraits, setAppendSeatTraits] = useState(false);\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n if (refreshData) {\n await refreshData(true);\n }\n if (refreshExpandedListItems) {\n await refreshExpandedListItems();\n }\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshData,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n entityType,\n BulkActionType.UpdateSeatTraits,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const [seatTraits, setSeatTraits] = useState([]);\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n if (onPreviewReceived) {\n setIsLoading(true);\n\n onOkay(null, false, onPreviewReceived);\n setIsLoading(false);\n } else {\n onOkay(\n seatTraits,\n hasBackgroundBulkEditFeature,\n undefined,\n preview,\n appendSeatTraits\n );\n }\n },\n [\n onOkay,\n appendSeatTraits,\n seatTraits,\n hasBackgroundBulkEditFeature,\n preview,\n ]\n );\n const submitButtonRef = useRef(null);\n\n return (\n }\n />\n }\n {...rest}\n onKeyUp={(e) => {\n if (submitButtonRef.current && e.key === 'Enter') {\n submitButtonRef.current.click();\n }\n }}\n onOpened={() => {\n setSeatTraits([]);\n initJob();\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n {infoMessage}\n {\n setAppendSeatTraits(value === 'true');\n }}\n value={appendSeatTraits.toString()}\n >\n \n \n }\n />\n \n }\n iconSize={vars.iconSize.s}\n />\n \n \n \n }\n />\n \n }\n iconSize={vars.iconSize.s}\n />\n \n \n \n\n \n {seatTraits && seatTraits.length === 0 && (\n \n }\n />\n )}\n \n \n \n );\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature, Permission } from 'src/WebApiController';\n\nexport const LaunchBulkUpdateSeatTraits = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const hasPermission = useUserHasAnyOfPermissions(\n Permission.Inventory_ManageSeatSaver,\n Permission.Inventory_ManageSeatSaverCreatedBy\n );\n\n const hasSeatSaverPermission = useUserHasFeature(Feature.SeatSaver);\n\n if (!hasPermission || !hasSeatSaverPermission) {\n return null;\n }\n return (\n <>\n \n \n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext/Content';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { InfoMessage } from 'src/core/POS/MessageWithIcon/InfoMessage';\nimport { BulkEditSeatTraitsDialog } from 'src/dialogs/BulkEdits/BulkEditSeatTraitsDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n Event,\n ListingNote,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_UPDATE_SEAT_TRAITS_UPDATE_KEY } from '../../InventoryActionDropdown.constants';\nimport { LaunchBulkUpdateSeatTraits } from './LaunchBulkUpdateSeatTraits';\n\nexport const useBulkUpdateSeatTraits = (\n filterQuery: ListingQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const updateKey = event\n ? `inventory-seat-traits-event-${event.viagVirtualId}`\n : INVENTORY_BULK_UPDATE_SEAT_TRAITS_UPDATE_KEY;\n\n const { showErrorDialog } = useErrorBoundaryContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const {\n openDialog: openBulkEditSeatTraitsDialog,\n closeDialog: closeBulkEditSeatTraitsDialog,\n } = useDialog(DialogId.BulkEditSeatTraits, BulkEditSeatTraitsDialog);\n\n const onSubmit = useCallback(\n async (\n seatTraits: ListingNote[] | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails,\n appendSeatTraits?: boolean\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const bulkEditClient = new BulkEditListingClient(\n activeAccountWebClientConfig\n );\n\n const preview =\n await bulkEditClient.bulkUpdateSeatTraitsPreview(filterQuery);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateTagsPreview', error, {\n trackErrorData: { filterQuery },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (seatTraits) {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdateSeatTraits(\n {\n item1: preview!.preview,\n item2: seatTraits,\n },\n updateKey,\n supportBackgroundProcess,\n appendSeatTraits\n );\n if (!supportBackgroundProcess) {\n if (succeeded) {\n refreshExpandedListItems();\n }\n\n closeBulkEditSeatTraitsDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkUpdateSeatTraits', error, {\n trackErrorData: {\n preview,\n seatTraits,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeBulkEditSeatTraitsDialog,\n filterQuery,\n refreshExpandedListItems,\n setIsLoading,\n showErrorDialog,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n openBulkEditSeatTraitsDialog({\n header: ,\n updateKey,\n isLoading,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkEditSeatTraitsDialog,\n entityType: ActionOutboxEntityType.Listing,\n infoMessage: (\n \n }\n />\n ),\n });\n }}\n disabled={isLoading}\n />\n ),\n };\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature } from 'src/WebApiController';\n\nexport const LaunchBulkWasteTickets = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const canBulkWasteTickets = useUserHasFeature(Feature.BulkWasteTickets);\n\n if (!canBulkWasteTickets) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useMemo, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport type BulkWasteTicketsDialogProps = ComponentProps & {\n updateKey: string;\n onOkay: (\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport function BulkWasteTicketsDialog({\n updateKey,\n onOkay,\n onCancel,\n ...rest\n}: BulkWasteTicketsDialogProps) {\n const entityType = ActionOutboxEntityType.Listing;\n\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n if (refreshExpandedListItems) {\n await refreshExpandedListItems();\n }\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n entityType,\n BulkActionType.WasteTickets,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature = useMemo(\n () => bulkEditHub?.state === HubConnectionState.Connected,\n [bulkEditHub?.state]\n );\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(false, onPreviewReceived);\n } else {\n onOkay(hasBackgroundBulkEditFeature, undefined, preview);\n }\n setIsLoading(false);\n },\n [hasBackgroundBulkEditFeature, onOkay, preview]\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const submitButtonRef = useRef(null);\n\n return (\n }\n />\n }\n onOpened={initJob}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n \n \n \n );\n}\n","import { useCallback } from 'react';\nimport { LaunchBulkWasteTickets } from 'src/components/Listings/InventoryActionDropdown/components/BulkWasteTicketsAction/LaunchBulkWasteTickets';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { BulkWasteTicketsDialog } from 'src/dialogs/BulkEdits/BulkWasteTicketsDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n Event,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_WASTE_TICKETS_KEY } from '../../InventoryActionDropdown.constants';\n\nexport const useBulkWasteTicketsAction = (\n filterQueryWithEventIds: ListingQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const updateKey = event\n ? `wasteTickets-event-${event.viagVirtualId}`\n : INVENTORY_BULK_WASTE_TICKETS_KEY;\n const {\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkWasteTicketsDialog,\n closeDialog: closeBulkWasteTicketsDialog,\n } = useDialog(DialogId.BulkWasteTickets, BulkWasteTicketsDialog);\n\n const onSubmit = useCallback(\n async (\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkWasteTicketsPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkWasteTicketsPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkWasteTickets(\n preview!.preview,\n updateKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on listingDetails\n // we force re-loading the listing and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n\n closeBulkWasteTicketsDialog();\n }\n },\n (error) => {\n showErrorDialog('onSubmitWasteTickets', error, {\n trackErrorData: { preview },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n setIsLoading,\n activeAccountWebClientConfig,\n filterQueryWithEventIds,\n showErrorDialog,\n updateKey,\n closeBulkWasteTicketsDialog,\n setActivePosEntity,\n refreshExpandedListItems,\n ]\n );\n\n const onLaunchAction = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (event) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n openBulkWasteTicketsDialog({\n updateKey,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkWasteTicketsDialog,\n });\n },\n [\n closeBulkWasteTicketsDialog,\n event,\n onSubmit,\n openBulkWasteTicketsDialog,\n setIsLoading,\n setListItemExpansion,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n \n ),\n };\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useMemo, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { InfoMessage } from 'src/core/POS/MessageWithIcon/InfoMessage';\nimport { Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport type BulkDeleteSeatSaversDialogProps = ComponentProps & {\n updateKey: string;\n onOkay: (\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport const BulkDeleteSeatSaversDialog = ({\n updateKey,\n onOkay,\n onCancel,\n ...rest\n}: BulkDeleteSeatSaversDialogProps) => {\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n\n const [isLoading, setIsLoading] = useState(false);\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n await refreshExpandedListItems();\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel?.();\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n ActionOutboxEntityType.Listing,\n BulkActionType.DeleteSeatSavers,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature = useMemo(\n () => bulkEditHub?.state === HubConnectionState.Connected,\n [bulkEditHub?.state]\n );\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(false, onPreviewReceived);\n } else {\n onOkay(hasBackgroundBulkEditFeature, undefined, preview);\n }\n setIsLoading(false);\n },\n [onOkay, preview, hasBackgroundBulkEditFeature]\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n const submittButtonRef = useRef(null);\n\n return (\n }\n />\n }\n onOpened={initJob}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter') {\n submittButtonRef.current.click();\n }\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n \n \n }\n />\n \n \n \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature, Permission } from 'src/WebApiController';\n\nexport const LaunchDeleteSeatSavers = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const hasPermission = useUserHasAnyOfPermissions(\n Permission.Inventory_ManageSeatSaver,\n Permission.Inventory_ManageSeatSaverCreatedBy\n );\n const hasSeatSaverFeature = useUserHasFeature(Feature.SeatSaver);\n\n if (!hasPermission || !hasSeatSaverFeature) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { BulkDeleteSeatSaversDialog } from 'src/dialogs/BulkEdits/BulkDeleteSeatSaversDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n Event,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_DELETE_SEAT_SAVERS_UPDATE_KEY } from '../../InventoryActionDropdown.constants';\nimport { LaunchDeleteSeatSavers } from './LaunchDeleteSeatSavers';\n\nexport const useBulkDeleteSeatSavers = (\n filterQueryWithEventIds: ListingQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const updateKey = event\n ? `inventory-delete-seat-savers-event-${event.viagVirtualId}`\n : INVENTORY_BULK_DELETE_SEAT_SAVERS_UPDATE_KEY;\n\n const {\n refreshCatalog,\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkDeleteSeatSavers,\n closeDialog: closeBulkDeleteSeatSavers,\n } = useDialog(DialogId.BulkDeleteSeatSeavers, BulkDeleteSeatSaversDialog);\n\n const onSubmitDeleteSeatSavers = useCallback(\n async (\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n const client = new BulkEditListingClient(activeAccountWebClientConfig);\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await client.bulkDeleteSeatSaversPreview(\n filterQueryWithEventIds\n );\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkDeleteSeatSaversPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else {\n await tryInvokeApi(\n async () => {\n const succeeded = await client.bulkDeleteSeatSavers(\n preview!.preview,\n updateKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Because delete listings can result in an empty event - so we need to reget catalog\n await refreshCatalog();\n\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n closeBulkDeleteSeatSavers();\n }\n },\n (error) => {\n showErrorDialog('onSubmitDeleteSeatSavers', error, {\n trackErrorData: { preview, event },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeBulkDeleteSeatSavers,\n event,\n filterQueryWithEventIds,\n refreshCatalog,\n refreshExpandedListItems,\n setActivePosEntity,\n setIsLoading,\n showErrorDialog,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n openBulkDeleteSeatSavers({\n updateKey,\n onOkay: onSubmitDeleteSeatSavers,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkDeleteSeatSavers,\n });\n }}\n disabled={isLoading}\n />\n ),\n };\n};\n","import { useState } from 'react';\nimport { ExportInventoryButton } from 'src/components/Buttons/ExportInventoryButton';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { useInventoryEventBulkActionsState } from 'src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/useInventoryEventBulkActionsState';\nimport { useBulkChangeEventAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkChangeEventAction';\nimport { useBulkChangeTicketTypeRuleAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkChangeTicketTypeRuleAction';\nimport { useBulkEditCommissionAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkEditCommissionAction/useBulkEditCommissionAction';\nimport { useBulkEditMarketplaceSeatingAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkEditMarketplaceSeating';\nimport { useBulkRemovePredelivery } from 'src/components/Listings/InventoryActionDropdown/components/BulkRemovePredeliveryAction';\nimport { useBulkUpdateAutoFulfillAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkUpdateAutoFulfillAction';\nimport { useBulkUpdateDeliveryType } from 'src/components/Listings/InventoryActionDropdown/components/BulkUpdateDeliveryType';\nimport { useBulkUpdateInternalNotesAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkUpdateInternalNotesAction';\nimport { useBulkUpdateListingSettings } from 'src/components/Listings/InventoryActionDropdown/components/BulkUpdateListingSettingsAction';\nimport { useBulkUpdateSeatTraits } from 'src/components/Listings/InventoryActionDropdown/components/BulkUpdateSeatTraits';\nimport { useBulkWasteTicketsAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkWasteTicketsAction';\nimport { useBulkDeleteSeatSavers } from 'src/components/Listings/InventoryActionDropdown/components/LaunchDeleteSeatSaversAction';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EventWithData, Feature } from 'src/WebApiController';\n\ninterface SettingsActionsProps {\n event: EventWithData['event'];\n\n isEventPage?: boolean;\n}\n\nexport const SettingsActions = ({\n event,\n isEventPage,\n}: SettingsActionsProps) => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n const hasExportInventoryFeature = useUserHasFeature(Feature.ExportInventory);\n const [isLoading, setIsLoading] = useState(false);\n const { affectedVisibleListingIds, filterQueryWithEventIds } =\n useInventoryEventBulkActionsState(event);\n\n const bulkEditGeneralSettings = useBulkUpdateListingSettings(\n 'general',\n filterQueryWithEventIds,\n affectedVisibleListingIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const bulkUpdateInternalNotes = useBulkUpdateInternalNotesAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const bulkUpdateAutoFulfill = useBulkUpdateAutoFulfillAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const bulkRemovePredelivery = useBulkRemovePredelivery(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const bulkChangeEvent = useBulkChangeEventAction(\n event,\n affectedVisibleListingIds,\n setIsLoading,\n isLoading\n );\n\n const bulkDeleteSeatSavers = useBulkDeleteSeatSavers(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n const bulkEditDeliverType = useBulkUpdateDeliveryType(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n const bulkEditSeatTraits = useBulkUpdateSeatTraits(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const bulkChangeTicketTypeRule = useBulkChangeTicketTypeRuleAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const bulkEditMarketplaceSeating = useBulkEditMarketplaceSeatingAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const bulkEditCommissionAction = useBulkEditCommissionAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n const bulkWasteTicketsAction = useBulkWasteTicketsAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n\n return (\n <>\n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {bulkEditGeneralSettings.dropDown}\n {bulkUpdateInternalNotes.dropDown}\n {bulkUpdateAutoFulfill.dropDown}\n {bulkRemovePredelivery.dropDown}\n {bulkChangeEvent.dropDown}\n {bulkDeleteSeatSavers.dropDown}\n {bulkEditDeliverType.dropDown}\n {bulkEditSeatTraits.dropDown}\n {bulkChangeTicketTypeRule.dropDown}\n {bulkEditMarketplaceSeating.dropDown}\n {bulkEditCommissionAction.dropDown}\n {hasExportInventoryFeature && isEventPage && (\n \n \n \n )}\n {bulkWasteTicketsAction.dropDown}\n \n {bulkChangeEvent.dialog}\n \n );\n};\n","import { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { ActionOutboxEntityType, Permission } from 'src/WebApiController';\n\ninterface UseBulkEditTagsPermissionsProps {\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Sale\n | ActionOutboxEntityType.Purchase;\n}\n\ninterface BulkEditTagsPermissions {\n hasEditTagsPermissions: boolean;\n}\n\nexport const useBulkEditTagsPermissions = ({\n entityType,\n}: UseBulkEditTagsPermissionsProps): BulkEditTagsPermissions => {\n const hasEditTagsPermission = useUserHasAnyOfPermissions(\n ...(entityType === ActionOutboxEntityType.Listing\n ? [\n Permission.Inventory_UpdateTags,\n Permission.Inventory_UpdateTagsOnIsPricerOf,\n Permission.Inventory_UpdateTagsOnPurchasedBy,\n ]\n : entityType === ActionOutboxEntityType.Sale\n ? [\n Permission.Sales_UpdateTags,\n Permission.Sales_UpdateTagsOnIsFulfillerOf,\n Permission.Sales_UpdateTagsOnIsPricerOf,\n Permission.Sales_UpdateTagsOnPurchasedBy,\n ]\n : [Permission.Purchases_UpdateTags, Permission.Purchases_UpdateTagsOwned])\n );\n\n const { tagsMetadata: existingTagsMetadata = [] } =\n useTagsForEntityType(entityType);\n\n return {\n hasEditTagsPermissions:\n hasEditTagsPermission || (existingTagsMetadata ?? []).length > 0,\n };\n};\n","import { ReactNode } from 'react';\nimport { useBulkEditTagsPermissions } from 'src/components/common/BulkActions/BulkEditTagsAction/useBulkEditTagsPermissions';\nimport { ActionOutboxEntityType } from 'src/WebApiController';\n\ninterface BulkEditTagsActionPermissionsHandlerProps {\n children: ReactNode;\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Sale\n | ActionOutboxEntityType.Purchase;\n}\n\nexport const BulkEditTagsActionPermissionsHandler = ({\n children,\n entityType,\n}: BulkEditTagsActionPermissionsHandlerProps) => {\n const { hasEditTagsPermissions } = useBulkEditTagsPermissions({ entityType });\n\n if (!hasEditTagsPermissions) {\n return null;\n }\n\n return <>{children};\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const FieldLabelWrapper = styled.div`\n font-weight: 600;\n ${({\n theme: {\n media,\n typography: { getStyles },\n },\n }) => `\n${getStyles('body1')}\n padding-left: 0;\n ${media.makeMediaQuery(\n media.breakpoints.md,\n `padding-left: 0px;` // reset padding for tablets and above\n )}\n`}\n`;\n\nexport const FieldWrapper = styled.div`\n padding-block-end: ${() => vars.spacing.m};\n\n label {\n width: 100%;\n margin-bottom: 0;\n }\n`;\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useMemo, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { TagValueInput } from 'src/components/TagsFormBody/TagValueCell';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n Tag,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\nimport { FieldLabelWrapper, FieldWrapper } from './BulkEditTagDialog.styled';\n\nexport enum BulkEditTagAction {\n Update = 'Update',\n Remove = 'Remove',\n}\nexport type BulkEditTagDialogProps = ComponentProps & {\n updateKey: string;\n action: BulkEditTagAction;\n onOkay: (\n action: BulkEditTagAction,\n tagKey: string | null,\n tagValue?: string | undefined,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Sale\n | ActionOutboxEntityType.Purchase;\n};\n\nexport function BulkEditTagDialog({\n updateKey,\n action,\n onOkay,\n onCancel,\n entityType,\n ...rest\n}: BulkEditTagDialogProps) {\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { refreshData } = usePurchaseDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n\n const [selectedTag, setSelectedTag] = useState();\n const [tagValue, setTagValue] = useState();\n const [isLoading, setIsLoading] = useState(false);\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n // Depending whether it's Listing, Sales, or Purchase\n // the context would be different here\n if (refreshData) {\n await refreshData(true);\n }\n if (refreshExpandedListItems) {\n await refreshExpandedListItems();\n }\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshData,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n entityType,\n BulkActionType.UpdateTagValues,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const { tagsMetadata: existingTagsMetadata = [] } =\n useTagsForEntityType(entityType);\n\n const keyOptionsContent = useMemo(() => {\n const keyOptions = (existingTagsMetadata ?? [])\n .toSorted((r1, r2) => r1.key.localeCompare(r2.key))\n .reduce(\n (re, r) => {\n re[r.key] = r.key;\n return re;\n },\n {} as Record\n );\n\n return keyOptions ?? {};\n }, [existingTagsMetadata]);\n\n const isInputValid = useMemo(() => {\n return selectedTag && (tagValue || action === BulkEditTagAction.Remove);\n }, [action, selectedTag, tagValue]);\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(action, null, undefined, false, onPreviewReceived);\n } else {\n onOkay(\n action,\n selectedTag!.key,\n tagValue,\n hasBackgroundBulkEditFeature,\n undefined,\n preview\n );\n }\n setIsLoading(false);\n },\n [\n onOkay,\n action,\n selectedTag,\n tagValue,\n preview,\n hasBackgroundBulkEditFeature,\n ]\n );\n\n const submittButtonRef = useRef(null);\n\n return (\n <>\n \n ) : (\n \n )\n }\n />\n }\n onOpened={() => {\n setSelectedTag(undefined);\n setTagValue(undefined);\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter' && isInputValid) {\n submittButtonRef.current.click();\n }\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n \n \n \n {\n setSelectedTag(\n (existingTagsMetadata ?? []).find((t) => t.key === newValue)\n );\n }}\n value={selectedTag?.key ?? ''}\n displayText={selectedTag?.key ?? ''}\n searchable\n disabled={isLoading}\n valueOptionsContent={keyOptionsContent}\n placeholderText={ContentId.Name}\n />\n \n {action !== BulkEditTagAction.Remove && (\n <>\n \n \n \n \n \n \n \n }\n />\n \n \n )}\n \n \n \n \n );\n}\n","import { useBulkEditTagsPermissions } from 'src/components/common/BulkActions/BulkEditTagsAction/useBulkEditTagsPermissions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { BulkEditTagAction } from 'src/dialogs/BulkEdits/BulkEditTagDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ActionOutboxEntityType } from 'src/WebApiController';\n\nexport const LaunchBulkEditTags = ({\n onClick,\n disabled,\n entityType,\n}: {\n onClick: (\n e: React.MouseEvent,\n editTagAction: BulkEditTagAction\n ) => void;\n disabled?: boolean;\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Sale\n | ActionOutboxEntityType.Purchase;\n}) => {\n const { hasEditTagsPermissions } = useBulkEditTagsPermissions({ entityType });\n\n if (!hasEditTagsPermissions) {\n return null;\n }\n\n return (\n <>\n onClick(e, BulkEditTagAction.Update)}\n disabled={disabled}\n >\n \n \n onClick(e, BulkEditTagAction.Remove)}\n disabled={disabled}\n >\n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { LaunchBulkEditTags } from 'src/components/common/BulkActions/BulkEditTagsAction';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport {\n BulkEditTagAction,\n BulkEditTagDialog,\n} from 'src/dialogs/BulkEdits/BulkEditTagDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n Event,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_UPDATE_TAGS_UPDATE_KEY } from '../../InventoryActionDropdown.constants';\n\nexport const useBulkEditTagsAction = (\n filterQueryWithEventIds: ListingQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const updateKey = event\n ? `listingTags-event-${event.viagVirtualId}`\n : INVENTORY_BULK_UPDATE_TAGS_UPDATE_KEY;\n const {\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkEditTagDialog,\n closeDialog: closeBulkEditTagDialog,\n } = useDialog(DialogId.BulkEditTags, BulkEditTagDialog);\n\n const onSubmitEditTags = useCallback(\n async (\n action: BulkEditTagAction,\n tagKey: string | null,\n tagValue?: string | undefined,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkUpdateTagsPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateTagsPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (tagKey) {\n await tryInvokeApi(\n async () => {\n const listingClient = new BulkEditListingClient(\n activeAccountWebClientConfig\n );\n\n const succeeded =\n action === BulkEditTagAction.Update\n ? await listingClient.bulkUpdateTags(\n preview!.preview,\n tagKey,\n tagValue,\n updateKey,\n supportBackgroundProcess\n )\n : await listingClient.bulkRemoveTags(\n preview!.preview,\n tagKey,\n updateKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on listingDetails\n // we force re-loading the listing and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n\n closeBulkEditTagDialog();\n }\n },\n (error) => {\n showErrorDialog('onSubmitEditTags', error, {\n trackErrorData: { tagKey, tagValue, preview },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n setIsLoading,\n filterQueryWithEventIds,\n showErrorDialog,\n updateKey,\n closeBulkEditTagDialog,\n setActivePosEntity,\n refreshExpandedListItems,\n ]\n );\n\n const onChangeTagClick = useCallback(\n (e: React.MouseEvent, editTagAction: BulkEditTagAction) => {\n e.preventDefault();\n e.stopPropagation();\n if (event) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n\n openBulkEditTagDialog({\n updateKey: updateKey,\n action: editTagAction,\n onOkay: onSubmitEditTags,\n entityType: ActionOutboxEntityType.Listing,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkEditTagDialog,\n });\n },\n [\n closeBulkEditTagDialog,\n event,\n onSubmitEditTags,\n openBulkEditTagDialog,\n setIsLoading,\n setListItemExpansion,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n \n ),\n };\n};\n","import { useState } from 'react';\nimport { BulkEditTagsActionPermissionsHandler } from 'src/components/common/BulkActions/BulkEditTagsAction/BulkEditTagsActionPermissionsHandler';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { useInventoryEventBulkActionsState } from 'src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/useInventoryEventBulkActionsState';\nimport { useBulkEditTagsAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkEditTagsAction';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EventWithData } from 'src/WebApiController';\nimport { ActionOutboxEntityType } from 'src/WebApiController';\n\ninterface TagsActionsProps {\n event: EventWithData['event'];\n}\n\nexport const TagsActions = ({ event }: TagsActionsProps) => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n const [isLoading, setIsLoading] = useState(false);\n const { filterQueryWithEventIds } = useInventoryEventBulkActionsState(event);\n const bulkUpdateTags = useBulkEditTagsAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n return (\n \n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {bulkUpdateTags.dropDown}\n \n \n );\n};\n","import { MultiSelectActionsContainer } from 'src/components/common/MultiSelect/MultiSelectActionsContainer';\nimport { BroadcastActions } from 'src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/Actions/BroadcastActions';\nimport { EventWithData } from 'src/WebApiController';\n\nimport { GroupActions } from './Actions/GroupActions';\nimport { PricingActions } from './Actions/PricingActions';\nimport { SettingsActions } from './Actions/SettingsActions';\nimport { TagsActions } from './Actions/TagsActions';\n\ntype InventoryBulkActionsProps = {\n eventWithData: EventWithData;\n isEventPage: boolean;\n listingCount: number;\n};\n\nexport const InventoryEventBulkActions = (props: InventoryBulkActionsProps) => {\n const { eventWithData, isEventPage, listingCount } = props;\n\n return (\n \n \n \n \n \n \n \n );\n};\n","import { ListingTableColumnId } from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { CompListing, Listing, Seating } from 'src/WebApiController';\n\nexport const mapCompListingToListing = (listing: CompListing): Listing => {\n return {\n id: listing.listingId,\n availQty: listing.availableTickets ?? undefined,\n unsoldQty: listing.availableTickets ?? undefined,\n seating: {\n section: listing.section ?? '',\n row: listing.row,\n rowId: listing.rowId,\n seatFr: listing.seatFrom,\n seatTo: listing.seatTo,\n } as Seating,\n allInPrice: listing.sellerAllInPrice?.amt ?? undefined,\n currency:\n listing.sellerAllInPrice?.currency ?? listing.currencyCode ?? 'USD',\n } as Listing;\n};\n\nexport const prependTicketClassColorColumnForFirstTime = (\n storedInventoryColumnOrderSetting: string[],\n storedInventoryColumnsEnabledSetting: string[],\n setInventoryColumnOrderSetting: (value: string[]) => void,\n setInventoryColumnsEnabledSetting: (value: string[]) => void\n) => {\n // Only add if it's not already in the order setting list - meaning the user never configured it\n if (\n !storedInventoryColumnOrderSetting.includes(\n ListingTableColumnId.TicketClassColor\n )\n ) {\n // In this case we turn it on and add it to the beginning of the order setting\n setInventoryColumnOrderSetting([\n ListingTableColumnId.TicketClassColor,\n ...storedInventoryColumnOrderSetting,\n ]);\n if (\n !storedInventoryColumnsEnabledSetting.includes(\n ListingTableColumnId.TicketClassColor\n )\n ) {\n setInventoryColumnsEnabledSetting([\n ListingTableColumnId.TicketClassColor,\n ...storedInventoryColumnsEnabledSetting,\n ]);\n }\n }\n};\n","import { format } from 'date-fns';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\n\nexport const getGroupingLabelForString = (value: string): string => {\n return value.charAt(0).toUpperCase();\n};\n\nexport const getGroupLabelForDates = (date?: string | null): string => {\n if (!date) {\n return '-';\n }\n return format(new Date(date), 'MMMM yyyy', {\n locale: getLocaleFromLanguageOrCurrent(),\n });\n};\n\nexport const getGroupLabelForNumber = (value: number, prefix = ''): string => {\n const length = String(Math.abs(Math.trunc(value))).length;\n const sign = value < 0 ? '-' : '';\n const from = 10 ** (length - 1);\n const fromLabel = from === 1 ? 0 : from.toLocaleString();\n const to = (10 ** length).toLocaleString();\n return `${sign}${prefix}${fromLabel} to ${sign}${prefix}${to}`;\n};\n\nexport const getGroupLabelForPercentNumber = (\n value: number,\n prefix = ''\n): string => {\n let from = Math.abs(Math.trunc((value ?? 0) * 10));\n from = from === 10 ? 9 : from; // Avoid going over 100%\n const sign = value < 0 ? '-' : '';\n const fromLabel = (from * 10).toLocaleString();\n const to = ((from + 1) * 10).toLocaleString();\n return `${sign}${prefix}${fromLabel} - ${sign}${prefix}${to}%`;\n};\n","import { useMemo } from 'react';\nimport { EventNameDisplay } from 'src/components/Events/EventInfo';\nimport { Stack } from 'src/core/ui';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { ParkingPassIcon } from 'src/svgs/Viagogo/functional-svgs/ParkingPass';\nimport {\n EVENT_TYPE_PARKING,\n getFormattedEventName,\n} from 'src/utils/eventWithDataUtils';\nimport {\n Event,\n Performer,\n TopLevelCategory,\n Venue,\n} from 'src/WebApiController';\n\nimport * as styles from './EventsTableColumnsConfig.css';\n\ntype EventDisplayCellProps = {\n event: Event;\n performer?: Performer;\n venue?: Venue;\n isSinglePerformerView?: boolean;\n forceDisplayEventName?: boolean;\n};\n\nexport const EventDisplayCell: React.FC = ({\n event,\n performer,\n venue,\n isSinglePerformerView,\n forceDisplayEventName,\n}) => {\n const [eventName, eventNameConnector, eventSubName, displayVenueOnly] =\n useMemo(() => {\n const eventName = event.shortName || event.name;\n const lowerCasedEventName = eventName.toLocaleLowerCase();\n const lowerCasedPerformer = performer?.name?.toLocaleLowerCase();\n const displayVenueOnly = forceDisplayEventName\n ? false\n : isSinglePerformerView &&\n (event.genre === TopLevelCategory.Concert ||\n event.genre === TopLevelCategory.Theatre) &&\n lowerCasedEventName === lowerCasedPerformer;\n\n const [\n formattedEventName,\n formattedEventConnector,\n formattedEventSubName,\n ] = getFormattedEventName({\n event,\n performer,\n venue,\n slimMode: isSinglePerformerView,\n useShortName: true,\n });\n\n return [\n formattedEventName,\n formattedEventConnector,\n formattedEventSubName,\n displayVenueOnly,\n ];\n }, [event, forceDisplayEventName, isSinglePerformerView, performer, venue]);\n\n return (\n \n \n {!displayVenueOnly && (\n \n )}\n {event.eventType === EVENT_TYPE_PARKING && (\n \n )}\n \n \n );\n};\n","import { EventIdQueryParam } from 'src/utils/constants/constants';\nimport { removeFilters } from 'src/utils/eventQueryUtils';\n\nexport const createInventoryEventUrl = (\n eventId: string,\n includeAllSearchParams = true, // current searchParams + EventIdQueryParam\n useEventV2 = false,\n queryParamOverride?: string, // query param to use for eventId\n queryParamsToRemove?: string[] // queryParams to remove from final URL\n): string => {\n let searchParams = '';\n if (includeAllSearchParams) {\n const url = new URL(window.location.href);\n url.searchParams.set(queryParamOverride || EventIdQueryParam, eventId);\n (queryParamsToRemove ?? []).forEach((param) =>\n url.searchParams.delete(param)\n );\n searchParams = `?${removeFilters(url.searchParams.toString(), [\n 'searchText',\n ])}`;\n }\n return `/inventory/event${useEventV2 ? '/v2' : ''}${searchParams}`;\n};\n","import { useCallback } from 'react';\nimport { Link, useLocation, useNavigate } from 'react-router-dom';\nimport { IconButton } from 'src/components/Buttons';\nimport { vars } from 'src/core/themes';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { createInventoryEventUrl } from 'src/navigations/Routes/InventoryEvent/InventoryEvent.utils';\nimport { FullPageIcon } from 'src/svgs/FullPageIcon';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Event, Feature } from 'src/WebApiController';\n\nexport const EventActionsCell = ({ event }: { event: Event }) => {\n const navigate = useNavigate();\n const location = useLocation();\n\n const hasInventoryEventPageV2Feature = useUserHasFeature(\n Feature.InventoryEventPageV2\n );\n\n const eventUrl = createInventoryEventUrl(\n event.viagVirtualId,\n true // includeSearchParams\n );\n\n const eventUrlV2 = createInventoryEventUrl(\n event.viagVirtualId,\n true, // includeSearchParams\n true // useEventV2\n );\n\n const onViewClick = useCallback(\n (eventUrl: string) => {\n if (event) {\n window.location.replace(`#${event.viagVirtualId}`);\n setTimeout(() => {\n navigate(eventUrl, {\n state: {\n returnUrl: `${location.pathname}${location.search}#${event.viagVirtualId}`,\n },\n });\n }, 10);\n }\n },\n [event, navigate, location.pathname, location.search]\n );\n\n return (\n \n {hasInventoryEventPageV2Feature && (\n {\n if (e.button === 0 && e.getModifierState('Control') === false) {\n // Perform like a button click when it's a left-click (and no Ctrl)\n // Else the click will be whatever does\n e.preventDefault();\n e.stopPropagation();\n\n onViewClick(eventUrlV2);\n }\n }}\n >\n \n }\n titleContentId={ContentId.OpenEventPageV2InDevelopment}\n />\n \n )}\n {\n if (e.button === 0 && e.getModifierState('Control') === false) {\n // Perform like a button click when it's a left-click (and no Ctrl)\n // Else the click will be whatever does\n e.preventDefault();\n e.stopPropagation();\n\n onViewClick(eventUrl);\n }\n }}\n >\n \n }\n titleContentId={ContentId.OpenEventPage}\n />\n \n \n );\n};\n","import { VenueNameDisplay } from 'src/components/Events/EventInfo';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport * as styles from 'src/tables/Table/Table.css';\nimport {\n Event,\n Performer,\n TopLevelCategory,\n Venue,\n} from 'src/WebApiController';\n\ntype LocationDisplayCellProps = {\n event: Event;\n performer?: Performer;\n venue?: Venue;\n isSinglePerformerView?: boolean;\n};\n\nexport const LocationDisplayCell: React.FC = ({\n event,\n performer,\n venue,\n isSinglePerformerView,\n}) => {\n const lowerCasedEventName = event.name.toLocaleLowerCase();\n const lowerCasedPerformer = performer?.name?.toLocaleLowerCase();\n const doNotShowVenue =\n event.genre === TopLevelCategory.Sports && isSinglePerformerView;\n const displayVenueOnly =\n isSinglePerformerView &&\n (event.genre === TopLevelCategory.Concert ||\n event.genre === TopLevelCategory.Theatre) &&\n lowerCasedEventName === lowerCasedPerformer;\n return (\n \n {(!doNotShowVenue || displayVenueOnly) && (\n \n )}\n \n );\n};\n","import React from 'react';\nimport { VenueNameDisplay } from 'src/components/Events/EventInfo';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport * as styles from 'src/tables/Table/Table.css';\nimport {\n Event,\n Performer,\n TopLevelCategory,\n Venue,\n} from 'src/WebApiController';\n\ntype VenueDisplayCellProps = {\n event: Event;\n performer?: Performer;\n venue?: Venue;\n isSinglePerformerView?: boolean;\n};\n\nexport const VenueDisplayCell: React.FC = ({\n event,\n performer,\n venue,\n isSinglePerformerView,\n}) => {\n const lowerCasedEventName = event.name.toLocaleLowerCase();\n const lowerCasedPerformer = performer?.name?.toLocaleLowerCase();\n const doNotShowVenue =\n event.genre === TopLevelCategory.Sports && isSinglePerformerView;\n const displayVenueOnly =\n isSinglePerformerView &&\n (event.genre === TopLevelCategory.Concert ||\n event.genre === TopLevelCategory.Theatre) &&\n lowerCasedEventName === lowerCasedPerformer;\n return (\n \n {(!doNotShowVenue || displayVenueOnly) && (\n \n )}\n \n );\n};\n","import { ColumnDef } from '@tanstack/react-table';\nimport { EventDateDisplay } from 'src/components/Events/EventInfo';\nimport { TagValueDisplay } from 'src/components/TagsFormBody/TagValueCell';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n COLUMN_DEFAULT_SIZE_BASE,\n COLUMN_DEFAULT_SIZE_LG,\n COLUMN_DEFAULT_SIZE_SM,\n COLUMN_DEFAULT_SIZE_XL,\n COLUMN_MAX_SIZE,\n COLUMN_MIN_SIZE,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { vars } from 'src/core/themes';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { useColumnUserSetting } from 'src/hooks/useColumnUserSetting';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { FormatOption, FormatOptionEntries } from 'src/modals/EditTableColumns';\nimport { CustomColumnName } from 'src/modals/InventoryTableColumns/CustomColumnName';\nimport { CustomNumericCell } from 'src/tables/ListingTable/configs/CustomNumericCell';\nimport { TableShimmeringDiv } from 'src/tables/Table';\nimport { DateCell } from 'src/tables/Table/TableCells';\nimport { getColumnPersonalization } from 'src/utils/columns/columnPersonalizationUtils';\nimport { EventsTableColumnId } from 'src/utils/columns/events/eventsColumnUtils.types';\nimport { CustomEventsColumn } from 'src/utils/columns/events/eventsCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EVENTS_TABLE_COLUMN_ID_TO_CONTENT_ID } from 'src/utils/constants/contentIdMaps';\nimport {\n compareEventsByDate,\n compareEventsByLocation,\n compareEventsByName,\n compareEventsByVenue,\n getFormattedEventName,\n} from 'src/utils/eventWithDataUtils';\nimport {\n getGroupingLabelForString,\n getGroupLabelForDates,\n getGroupLabelForNumber,\n getGroupLabelForPercentNumber,\n} from 'src/utils/groupingUtils';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\nimport { sortGeneric, sortMoney } from 'src/utils/tableUtils';\nimport {\n SECTION_TYPE_TO_PRECISION_SETTING,\n SectionType,\n} from 'src/utils/types/sectionType';\nimport {\n DateTimeRange,\n Event,\n EventWithData,\n Feature,\n ListingDetailedMetrics,\n Performer,\n TagsValueType,\n UiMoney,\n UserSetting,\n Venue,\n} from 'src/WebApiController';\n\nimport { evaluateFormula } from '../../../utils/columns/events/eventsCustomColumnUtils';\nimport { EventDisplayCell } from './EventDisplayCell';\nimport { EventActionsCell } from './EventsActionCell';\nimport * as styles from './EventsTableColumnsConfig.css';\nimport { LocationDisplayCell } from './LocationDisplayCell';\nimport { VenueDisplayCell } from './VenueDisplayCell';\n\nconst SHIMMERING_DIV_HEIGHT_SINGLE_LISTING = vars.spacing['4xl'];\n\nconst QUANTITY_COLUMN_MIN_SIZE = 50;\nconst QUANTITY_COLUMN_MAX_SIZE = 80;\nconst COST_COLUMN_MIN_SIZE = 50;\nconst COST_COLUMN_MAX_SIZE = 80;\nconst DATE_COLUMN_MIN_SIZE = 100;\nconst DATE_COLUMN_MAX_SIZE = 200;\n\nconst SECTION_TYPE = SectionType.Events;\n\nexport type EventWithDataAndMetrics = EventWithData & {\n isSinglePerformerView: boolean;\n performer?: Performer;\n venue?: Venue;\n metrics?: ListingDetailedMetrics;\n};\n\nexport type EventsFormulaFields = {\n actualStr?: number | null;\n expectedStr?: number | null;\n liftPercentage?: number | null;\n listedAtp?: number | null;\n revenue?: number | null;\n totalAtp?: number | null;\n totalCost?: number | null;\n totalGrossProfit?: number | null;\n totalListPrice?: number | null;\n totalListedQuantity?: number | null;\n totalListedValue?: number | null;\n totalNetProceeds?: number | null;\n totalSoldCost?: number | null;\n totalSoldQuantity?: number | null;\n totalTicketQuantity?: number | null;\n totalUnsoldListPrice?: number | null;\n totalUnsoldQuantity?: number | null;\n};\n\nexport const tagColumnDef = (\n tagName: string\n): ColumnDef => ({\n id: tagName,\n header: () => (\n \n \n {tagName}\n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => {\n const tag = data?.metrics?.tags?.find((t) => t.key === tagName);\n if (\n tag?.valueType === TagsValueType.Int ||\n tag?.valueType === TagsValueType.Decimal\n ) {\n return tag ? parseFloat(tag.value) : null;\n }\n return tag?.value;\n },\n cell: function Cell({ getValue, row: { original }, table }) {\n const { value: storedColumnNumberPrecisions = {} } =\n useServerUserSetting({\n id: SECTION_TYPE_TO_PRECISION_SETTING[\n table.options.meta?.sectionType ?? SECTION_TYPE\n ],\n });\n const tag = original?.metrics?.tags?.find((t) => t.key === tagName);\n\n if (\n tag?.valueType === TagsValueType.Int ||\n tag?.valueType === TagsValueType.Decimal\n ) {\n const userDefinedPrecision = storedColumnNumberPrecisions[tagName];\n\n return (\n ()}\n isLoading={Boolean(!original || !original.metrics)}\n shimmeringDivHeight={SHIMMERING_DIV_HEIGHT_SINGLE_LISTING}\n sectionType={table.options.meta?.sectionType ?? SECTION_TYPE}\n matchingTag={tag}\n currencyCode={original?.metrics?.currency}\n />\n );\n }\n\n if (!original || !original.metrics) {\n return (\n \n );\n }\n\n if (!tag) {\n return null;\n }\n\n return (\n \n \n \n );\n },\n});\n\nexport const customColumnDef = (\n columnId: string,\n formula?: string | null\n): ColumnDef => ({\n id: columnId,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => {\n return formula && data\n ? (evaluateFormula(formula, data.metrics) ?? null)\n : null;\n },\n cell: function Cell({ getValue, row: { original } }) {\n const { value: storedInventoryColumnNumberPrecisions = {} } =\n useServerUserSetting({\n id: UserSetting.SaleColumnNumberPrecision,\n });\n const { value: customColumns = [] } = useServerUserSetting<\n CustomEventsColumn[]\n >({\n id: UserSetting.EventsCustomColumns,\n });\n\n const userDefinedPrecision =\n storedInventoryColumnNumberPrecisions[columnId];\n\n const { loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n const uiCurrency = getUiCurrency(\n loginContext?.user?.activeAccount.currencyCode\n );\n\n const { isCurrency, isPercent } = getColumnPersonalization({\n id: columnId,\n sectionType: SECTION_TYPE,\n matchingCustomColumn: customColumns.find((c) => c.id === columnId),\n });\n\n if (!original || !original.metrics) {\n return (\n \n );\n }\n\n const value = getValue();\n\n return (\n \n
    \n {value == null ? (\n ''\n ) : isNaN(value) || !isFinite(value) ? (\n \n ) : (\n <>\n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: getValue(),\n currencyCode: isCurrency ? uiCurrency.code : undefined,\n currencyDecimalDigits: isCurrency ? uiCurrency.dec : undefined,\n isPercent: isPercent && !isCurrency,\n })}\n \n )}\n
    \n
    \n );\n },\n});\n\nexport const EVENTS_TABLE_COLUMNS_CONFIG: Record<\n EventsTableColumnId,\n ColumnDef\n> = {\n [EventsTableColumnId.Checkbox]: {\n id: EventsTableColumnId.Checkbox,\n header: '',\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_DEFAULT_SIZE_SM,\n maxSize: COLUMN_DEFAULT_SIZE_SM,\n enableSorting: false,\n enableResizing: false,\n cell: function Cell({ row: { original, getIsSelected } }) {\n const { setShiftKeyGroupSelectionState } = useMultiSelectionContext();\n const isSelected = getIsSelected();\n\n if (!original?.metrics) {\n return ;\n }\n\n return (\n \n {\n setShiftKeyGroupSelectionState(original.event.viagVirtualId);\n }}\n />\n \n );\n },\n },\n [EventsTableColumnId.Event]: {\n id: EventsTableColumnId.Event,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => data,\n cell: function Cell({ getValue, row: { original } }) {\n const { event, performer, venue } = getValue();\n if (!original?.metrics) {\n return ;\n }\n\n return (\n \n );\n },\n sortingFn: compareEventsByName,\n getGroupingValue: (row) => {\n const eventName = getFormattedEventName({\n event: row?.event,\n performer: row?.performer,\n venue: row?.venue,\n useShortName: true,\n }).join(' ');\n return getGroupingLabelForString(eventName);\n },\n },\n\n [EventsTableColumnId.Venue]: {\n id: EventsTableColumnId.Venue,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => data,\n cell: function Cell({ getValue, row: { original } }) {\n const { event, venue, performer } = getValue();\n if (!original?.metrics) {\n return ;\n }\n return (\n \n );\n },\n sortingFn: compareEventsByVenue,\n getGroupingValue: (item: EventWithDataAndMetrics | null) =>\n getGroupingLabelForString(item?.venue?.name ?? ''),\n },\n [EventsTableColumnId.Location]: {\n id: EventsTableColumnId.Location,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => data,\n cell: function Cell({ getValue, row: { original } }) {\n const { event, venue, performer } = getValue();\n if (!original?.metrics) {\n return ;\n }\n return (\n
    \n \n
    \n );\n },\n sortingFn: compareEventsByLocation,\n getGroupingValue: (item: EventWithDataAndMetrics | null) =>\n getGroupingLabelForString(item?.venue?.descr ?? ''),\n },\n [EventsTableColumnId.Date]: {\n id: EventsTableColumnId.Date,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.event?.dates,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n\n const value = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_MonthDD_Time_Day } =\n useColumnUserSetting(columnId, SectionType.Events);\n\n if (!original?.metrics) {\n return ;\n }\n\n const date = applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value?.start,\n isDateTime: true,\n }) as string;\n\n return (\n \n {userDefinedPrecision === FormatOption.DateTime_MonthDD_Time ? (\n \n ) : (\n
    {date}
    \n )}\n
    \n );\n },\n sortingFn: compareEventsByDate,\n getGroupingValue: (item: EventWithDataAndMetrics | null) =>\n getGroupLabelForDates(item?.event.dates.start),\n },\n [EventsTableColumnId.TotalQty]: {\n id: EventsTableColumnId.TotalQty,\n header: () => (\n \n \n \n ),\n minSize: QUANTITY_COLUMN_MIN_SIZE,\n maxSize: QUANTITY_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.tktQty,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.Events\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n })}\n \n );\n },\n getGroupingValue: (item: EventWithDataAndMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.tktQty ?? 0),\n },\n [EventsTableColumnId.SoldQty]: {\n id: EventsTableColumnId.SoldQty,\n header: () => (\n \n \n \n ),\n minSize: QUANTITY_COLUMN_MIN_SIZE,\n maxSize: QUANTITY_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.soldQty,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.Events\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n })}\n \n );\n },\n getGroupingValue: (item: EventWithDataAndMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.soldQty ?? 0),\n },\n [EventsTableColumnId.ActualSTR]: {\n id: EventsTableColumnId.ActualSTR,\n header: () => (\n \n \n \n ),\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.str ?? 0,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.Events\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n inputNumber: value,\n precision: userDefinedPrecision,\n isPercent: true,\n })}\n \n );\n },\n getGroupingValue: (item: EventWithDataAndMetrics | null) => {\n return getGroupLabelForPercentNumber(item?.metrics?.str ?? 0);\n },\n },\n [EventsTableColumnId.Revenue]: {\n id: EventsTableColumnId.Revenue,\n header: () => (\n \n \n \n ),\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.rvn,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.Events\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })}\n \n );\n },\n sortingFn: sortMoney,\n getGroupingValue: (item: EventWithDataAndMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.rvn?.amt ?? 0, '$'),\n },\n [EventsTableColumnId.UnsoldProceeds]: {\n id: EventsTableColumnId.UnsoldProceeds,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.ttlUnsoldListPrc,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.Events\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })}\n \n );\n },\n sortingFn: sortMoney,\n getGroupingValue: (item: EventWithDataAndMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.ttlUnsoldListPrc?.amt ?? 0, '$'),\n },\n [EventsTableColumnId.SoldCost]: {\n id: EventsTableColumnId.SoldCost,\n header: () => (\n \n \n \n ),\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n accessorFn: (data) => {\n return {\n currencyCode: data?.metrics?.currency ?? null,\n ...(data?.metrics?.soldCst ?? null),\n };\n },\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.Events\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })}\n \n );\n },\n sortingFn: sortMoney,\n getGroupingValue: (item: EventWithDataAndMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.soldCst?.amt ?? 0, '$'),\n },\n [EventsTableColumnId.UnsoldCost]: {\n id: EventsTableColumnId.UnsoldCost,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n accessorFn: (data) => {\n return {\n currency: data?.metrics?.currency ?? null,\n dec: data?.metrics?.soldCst?.dec ?? null,\n amt: data?.metrics\n ? data.metrics.ttlCst.amt - data.metrics.soldCst.amt\n : null,\n };\n },\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.Events\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })}\n \n );\n },\n sortingFn: sortMoney,\n getGroupingValue: (item: EventWithDataAndMetrics | null) => {\n const value = item?.metrics\n ? item.metrics.ttlCst.amt - item.metrics.soldCst.amt\n : 0;\n return getGroupLabelForNumber(value, '$');\n },\n },\n [EventsTableColumnId.TotalCost]: {\n id: EventsTableColumnId.TotalCost,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n accessorFn: (data) => {\n return {\n currencyCode: data?.metrics?.currency ?? null,\n ...(data?.metrics?.ttlCst ?? null),\n };\n },\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.Events\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })}\n \n );\n },\n sortingFn: sortMoney,\n getGroupingValue: (item: EventWithDataAndMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.ttlCst?.amt ?? 0, '$'),\n },\n [EventsTableColumnId.Profit]: {\n id: EventsTableColumnId.Profit,\n header: () => (\n \n \n \n ),\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.pandL,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.Events\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })}\n \n );\n },\n sortingFn: sortMoney,\n getGroupingValue: (item: EventWithDataAndMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.pandL?.amt ?? 0, '$'),\n },\n [EventsTableColumnId.LiftPercentage]: {\n id: EventsTableColumnId.LiftPercentage,\n header: () => (\n \n \n \n ),\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.liftPerc,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.Events\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n inputNumber: value,\n precision: userDefinedPrecision,\n isPercent: true,\n })}\n \n );\n },\n getGroupingValue: (item: EventWithDataAndMetrics | null) =>\n getGroupLabelForPercentNumber(item?.metrics?.liftPerc ?? 0),\n },\n [EventsTableColumnId.ATP]: {\n id: EventsTableColumnId.ATP,\n header: () => (\n \n \n \n ),\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.atp,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.Events\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })}\n \n );\n },\n sortingFn: sortMoney,\n getGroupingValue: (item: EventWithDataAndMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.atp?.amt ?? 0, '$'),\n },\n [EventsTableColumnId.ListedQty]: {\n id: EventsTableColumnId.ListedQty,\n header: () => (\n \n \n \n ),\n minSize: QUANTITY_COLUMN_MIN_SIZE,\n maxSize: QUANTITY_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.listQty ?? 0,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.Events\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n })}\n \n );\n },\n getGroupingValue: (item: EventWithDataAndMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.listQty ?? 0, '$'),\n },\n [EventsTableColumnId.ListedAtp]: {\n id: EventsTableColumnId.ListedAtp,\n header: () => (\n \n \n \n ),\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n accessorFn: (data) => {\n return {\n currencyCode: data?.metrics?.currency ?? null,\n ...(data?.metrics?.listedATP ?? null),\n };\n },\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.Events\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })}\n \n );\n },\n sortingFn: sortMoney,\n getGroupingValue: (item: EventWithDataAndMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.listedATP?.amt ?? 0, '$'),\n },\n [EventsTableColumnId.UnsoldQty]: {\n id: EventsTableColumnId.UnsoldQty,\n header: () => (\n \n \n \n ),\n minSize: QUANTITY_COLUMN_MIN_SIZE,\n maxSize: QUANTITY_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.unsoldQty,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.Events\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n })}\n \n );\n },\n getGroupingValue: (item: EventWithDataAndMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.unsoldQty ?? 0),\n },\n [EventsTableColumnId.Action]: {\n id: EventsTableColumnId.Action,\n enableSorting: false,\n enableResizing: true,\n header: function Cell() {\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n\n if (hasTablePinActionColumnFeature) {\n return null;\n }\n\n return (\n \n \n \n );\n },\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.event ?? null,\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue();\n if (!original?.metrics) {\n return ;\n }\n return ;\n },\n },\n [EventsTableColumnId.LastPriceUpdatedDate]: {\n id: EventsTableColumnId.LastPriceUpdatedDate,\n header: () => (\n \n \n \n ),\n minSize: DATE_COLUMN_MIN_SIZE,\n maxSize: DATE_COLUMN_MAX_SIZE,\n sortingFn: sortGeneric,\n accessorFn: (data) => data?.metrics?.priceUpdatedOn,\n cell: function Cell({\n row: { original },\n getValue,\n column: { id: columnId },\n }) {\n const value = getValue();\n\n const { userDefinedPrecision = FormatOption.DateTime_MonthDD_Time } =\n useColumnUserSetting(columnId, SECTION_TYPE);\n\n if (!original?.metrics) {\n return ;\n }\n\n const date = applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n isDateTime: true,\n }) as string;\n\n return (\n \n {userDefinedPrecision === FormatOption.DateTime_MonthDD_Time ? (\n \n ) : (\n
    {date}
    \n )}\n
    \n );\n },\n getGroupingValue: (item: EventWithDataAndMetrics | null) =>\n getGroupLabelForDates(item?.metrics?.priceUpdatedOn),\n },\n};\n","import { ReportConfig } from 'src/hooks/useReportConfigs';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { ReportFileType } from 'src/WebApiController';\n\nexport type ReportExportOptions = {\n reportToExport: ReportConfig;\n fileType: ReportFileType;\n serverSideExport?: boolean;\n};\n\nexport type ReportExportOptionsV2 = {\n reportToExport: ReportConfigV2;\n fileType: ReportFileType.CSV | ReportFileType.XLSX;\n};\n\nexport enum AccessorReturnType {\n STRING = 'string',\n SELLER_USER_ID = 'sellerUserId',\n PURCHASE_BUYER_INFOS = 'purchaseBuyerInfos',\n}\n\n/**\n * Values from the table don't always match the values we want to export\n * e.g. some cells return sellerUserId, but we want to export the seller name\n * this type is used to return the value and the type of the value\n * so that the export function can resolve the value correctly\n */\nexport type AccessorReturn = {\n stringValueType: AccessorReturnType;\n /**\n * String values used for ReportsExport to resolve the real value\n * If undefined, it means that the value is already a string and we can use it for resolving directly\n */\n stringValues?: string[] | string | null | undefined;\n value: T;\n};\n","import { TableCellDiv } from 'src/core/ui/TableCellDiv';\n\nimport * as styles from './LinkCell.css';\n\nexport function LinkCell({\n text,\n url,\n openInNewTab,\n align,\n style,\n separator,\n}: {\n text: string | string[];\n url: string | string[];\n openInNewTab?: boolean;\n align: 'left' | 'right' | 'center';\n style?: React.CSSProperties;\n separator?: React.ReactElement;\n}) {\n if (!Array.isArray(text) && !Array.isArray(url)) {\n return (\n \n \n {text}\n
    \n \n );\n }\n\n const texts = text as string[];\n const urls = url as string[];\n\n return (\n \n {texts.flatMap((text, index) => {\n const url = urls[index];\n if (index < texts.length - 1 && separator) {\n return [\n \n {text}\n ,\n separator,\n ];\n }\n\n return [\n \n {text}\n ,\n ];\n })}\n \n );\n}\n","import { vars } from 'src/core/themes';\n\nexport const SHIMMERING_DIV_HEIGHT_REPORT = vars.spacing.xxl;\n","import { Content } from 'src/contexts/ContentContext';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { ListingReportTableColumnId } from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { SalesReportTableColumnId } from 'src/utils/columns/sales/salesColumnUtils.types';\nimport {\n LISTING_REPORT_TABLE_COLUMN_ID_TO_CONTENT_ID,\n SALE_REPORT_TABLE_COLUMN_ID_TO_CONTENT_ID,\n} from 'src/utils/constants/contentIdMaps';\nimport { SectionType } from 'src/utils/types/sectionType';\n\nexport const TableHeader = ({\n column: { id: columnId },\n sectionType,\n align = 'left',\n}: {\n column: { id: string };\n sectionType: SectionType.SalesReport | SectionType.ListingsReport;\n align: 'left' | 'right' | 'center';\n}) => {\n const contentId =\n sectionType === SectionType.SalesReport\n ? SALE_REPORT_TABLE_COLUMN_ID_TO_CONTENT_ID[\n columnId as SalesReportTableColumnId\n ]\n : LISTING_REPORT_TABLE_COLUMN_ID_TO_CONTENT_ID[\n columnId as ListingReportTableColumnId\n ];\n return (\n \n \n \n );\n};\n","import { Getter } from '@tanstack/react-table';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\n\nimport { SHIMMERING_DIV_HEIGHT_REPORT } from './ReportTableCommon.constants';\n\n/**\n * Use this component to render any cell with text, as long as getValue() returns string.\n * @param param0\n * @returns\n */\nexport function TextCell({\n getValue,\n value,\n row: { original },\n align,\n style,\n}: {\n getValue: Getter;\n value?: string | null;\n row: { original: T | null };\n align: 'left' | 'right' | 'center';\n style?: React.CSSProperties;\n}) {\n if (!original) {\n return ;\n }\n\n return (\n \n {value ?? getValue()}\n \n );\n}\n","import { Table } from '@tanstack/react-table';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useColumnUserSetting } from 'src/hooks/useColumnUserSetting';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\nimport { getColumnPersonalization } from 'src/utils/columns/columnPersonalizationUtils';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { CustomSalesColumn } from 'src/utils/columns/sales/salesCustomColumnUtils.types';\nimport {\n ListingReportMetricsWithGroupBy,\n SaleReportMetricsWithGroupBy,\n} from 'src/utils/reportsUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { MoneyClient, PosClientConfig } from 'src/WebApiController';\n\nimport { CustomNumericCell } from './CustomNumericCell';\n\nexport const CustomNumericFooterCell = ({\n table,\n columnId,\n matchingCustomColumn,\n shimmeringDivHeight,\n sectionType,\n}: {\n table:\n | Table\n | Table;\n matchingCustomColumn?: CustomListingColumn | CustomSalesColumn;\n columnId: string;\n shimmeringDivHeight: string;\n sectionType: SectionType;\n}) => {\n const { userDefinedPrecision } = useColumnUserSetting(columnId, sectionType);\n const { activeAccountWebClientConfig } = useAppContext();\n const [sumValue, setSumValue] = useState(null);\n\n const original = table.options.meta?.summaryData;\n\n const loadData = useCallback(\n async (\n original: ListingReportMetricsWithGroupBy | SaleReportMetricsWithGroupBy,\n matchingCustomColumn: CustomListingColumn | CustomSalesColumn,\n activeAccountWebClientConfig: PosClientConfig\n ) => {\n let newSumValue: number | null = null;\n\n const tableRows = table.getFilteredRowModel().rows;\n const columnValues = tableRows.map((r) => {\n const value = r.getValue(columnId);\n if (value == null || isNaN(value) || !isFinite(value)) {\n return null;\n }\n return value;\n });\n\n const allNull = columnValues.every((d) => d == null);\n\n const { isCurrency } = getColumnPersonalization({\n id: columnId,\n sectionType,\n matchingCustomColumn,\n });\n\n if (!allNull) {\n if (isCurrency) {\n const targetCurrencyCode = original.currency;\n newSumValue = 0;\n const currencyCodes = tableRows.map((r) => r.original?.currency);\n\n // Need to sum the currency values\n const valuesByCurrencyCodeToConvert: {\n [currencyCode: string]: number;\n } = {};\n\n currencyCodes.forEach((currencyCode, i) => {\n if (currencyCode && columnValues[i] != null) {\n if (currencyCode === targetCurrencyCode) {\n newSumValue = (newSumValue ?? 0) + columnValues[i]!;\n } else {\n valuesByCurrencyCodeToConvert[currencyCode] =\n (valuesByCurrencyCodeToConvert[currencyCode] ?? 0) +\n (columnValues[i] ?? 0);\n }\n }\n });\n\n newSumValue += await new MoneyClient(\n activeAccountWebClientConfig\n ).getConvertedMoneyAmount(\n valuesByCurrencyCodeToConvert,\n targetCurrencyCode\n );\n } else {\n newSumValue = columnValues.reduce(\n (total, columnValue) => total + (columnValue ?? 0),\n 0\n );\n }\n }\n\n setSumValue(newSumValue);\n },\n [columnId, sectionType, table]\n );\n\n useEffect(() => {\n if (!original || !matchingCustomColumn || !activeAccountWebClientConfig) {\n return;\n }\n\n loadData(original, matchingCustomColumn, activeAccountWebClientConfig);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n original,\n matchingCustomColumn,\n activeAccountWebClientConfig,\n columnId,\n sectionType,\n ]);\n\n if (!original) {\n return ;\n }\n\n return (\n \n );\n};\n","import { ColumnDef, createColumnHelper } from '@tanstack/react-table';\nimport { useMemo } from 'react';\nimport { ListingDeliveryTypeDisplay } from 'src/components/Listings/ListingDeliveryTypeDisplay';\nimport { AccessorReturnType } from 'src/components/Reports/ReportsExport/ReportsExport.types';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n COLUMN_DEFAULT_SIZE_BASE,\n COLUMN_DEFAULT_SIZE_LG,\n COLUMN_DEFAULT_SIZE_XL,\n COLUMN_MAX_SIZE,\n COLUMN_MIN_SIZE,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport {\n Content,\n isContentId,\n useContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { useColumnUserSetting } from 'src/hooks/useColumnUserSetting';\nimport { useMapDeliveryTypesToString } from 'src/hooks/useMapDeliveryTypesToString';\nimport { useGetUserInfos } from 'src/hooks/userGetUserInfo';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport {\n FormatOption,\n type FormatOptionEntries,\n} from 'src/modals/EditTableColumns';\nimport { CustomColumnName } from 'src/modals/InventoryTableColumns/CustomColumnName';\nimport { createInventoryEventUrl } from 'src/navigations/Routes/InventoryEvent/InventoryEvent.utils';\nimport { PaymentSize } from 'src/svgs/Viagogo';\nimport { LinkCell } from 'src/tables/ReportTableCommon/LinkCell';\nimport { SHIMMERING_DIV_HEIGHT_REPORT } from 'src/tables/ReportTableCommon/ReportTableCommon.constants';\nimport { TableHeader } from 'src/tables/ReportTableCommon/TableHeader';\nimport { TextCell } from 'src/tables/ReportTableCommon/TextCell';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\nimport { DateCell, InHandCell } from 'src/tables/Table/TableCells';\nimport { getColumnPersonalization } from 'src/utils/columns/columnPersonalizationUtils';\nimport { ListingReportTableColumnId } from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { evaluateFormula } from 'src/utils/columns/inventory/inventoryReportCustomColumnUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ContentIds } from 'src/utils/constants/contentIdDataMap';\nimport {\n MARKETPLACE_SALE_PAYMENT_STATE_TO_CID,\n PAYMENT_METHOD_TYPE_TO_CID,\n PURCHASE_PAYMENT_STATUS_TO_CID,\n SALE_PAYMENT_STATE_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { getListingDetailsRelativeUrl } from 'src/utils/inventoryUtils';\nimport {\n applyNumberFormatting,\n formatPercent,\n} from 'src/utils/numberFormatter';\nimport { getPaymentMethodIcon } from 'src/utils/paymentMethodUtils';\nimport { getPurchaseOrderRelativeUrl } from 'src/utils/purchaseUtils';\nimport { ListingReportMetricsWithGroupBy } from 'src/utils/reportsUtils';\nimport { getSaleDetailsRelativeUrl } from 'src/utils/saleUtils';\nimport { sortMoney } from 'src/utils/tableUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport {\n DeliveryType,\n Feature,\n MarketplacePaymentState,\n PointOfSalePaymentState,\n PurchasePaymentMethodType,\n PurchasePaymentStatus,\n TagsValueType,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { CustomNumericCell } from './CustomNumericCell';\nimport { CustomNumericFooterCell } from './CustomNumericFooterCell';\n\nconst SECTION_TYPE = SectionType.ListingsReport;\n\nexport const tagColumnDef = (\n tagName: string\n): ColumnDef => ({\n id: tagName,\n header: () => (\n \n \n {tagName}\n \n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => {\n const tag = data?.tags.find((t) => t.key === tagName);\n return tag ? parseFloat(tag.value) : null;\n },\n cell: function Cell({ getValue, row: { original } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n tagName,\n SECTION_TYPE\n );\n\n const tag = original?.tags.find((t) => t.key === tagName);\n\n return (\n ()}\n isLoading={!original}\n shimmeringDivHeight={SHIMMERING_DIV_HEIGHT_REPORT}\n sectionType={SECTION_TYPE}\n matchingTag={tag}\n currencyCode={original?.currency}\n />\n );\n },\n});\n\nexport const eventTagColumnDef = (\n tagName: string\n): ColumnDef => ({\n id: tagName,\n header: () => (\n \n \n {tagName}\n \n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => {\n const tag = data?.eventTags.find((t) => t.key === tagName);\n return tag?.value;\n },\n cell: function Cell({ getValue, row: { original } }) {\n const { value: storedInventoryColumnNumberPrecisions = {} } =\n useServerUserSetting({\n id: UserSetting.InventoryColumnNumberPrecision,\n });\n const tag = original?.tags.find((t) => t.key === tagName);\n\n const userDefinedPrecision = storedInventoryColumnNumberPrecisions[tagName];\n\n if (!original) {\n return ;\n }\n\n if (\n tag?.valueType === TagsValueType.Decimal ||\n tag?.valueType === TagsValueType.Int\n ) {\n return (\n ()}\n isLoading={!original}\n shimmeringDivHeight={SHIMMERING_DIV_HEIGHT_REPORT}\n sectionType={SECTION_TYPE}\n matchingTag={tag}\n currencyCode={original?.currency}\n />\n );\n }\n\n return (\n \n
    {getValue()}
    \n
    \n );\n },\n});\n\nexport const customColumnDef = (\n columnId: string,\n formula?: string | null\n): ColumnDef => ({\n id: columnId,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => {\n return formula && data ? (evaluateFormula(formula, data) ?? null) : null;\n },\n cell: function Cell({ getValue, row: { original } }) {\n const { value: customColumns = [] } = useServerUserSetting<\n CustomListingColumn[]\n >({\n id: UserSetting.InventoryCustomColumns,\n });\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n return (\n ()}\n isLoading={!original}\n shimmeringDivHeight={SHIMMERING_DIV_HEIGHT_REPORT}\n sectionType={SECTION_TYPE}\n matchingCustomColumn={customColumns.find((c) => c.id === columnId)}\n currencyCode={original?.currency}\n />\n );\n },\n\n footer: function Cell({ table }) {\n const { value: customColumns = [] } = useServerUserSetting<\n CustomListingColumn[]\n >({\n id: UserSetting.InventoryCustomColumns,\n });\n\n return (\n c.id === columnId)}\n sectionType={SECTION_TYPE}\n />\n );\n },\n});\n\nconst columnHelper =\n createColumnHelper();\n\nexport const LISTING_REPORT_TABLE_COLUMNS_CONFIG = {\n [ListingReportTableColumnId.Performer]: columnHelper.accessor(\n (data) => data?.performer?.name ?? '',\n {\n id: ListingReportTableColumnId.Performer,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [ListingReportTableColumnId.Venue]: columnHelper.accessor(\n (data) => data?.venue?.name ?? '',\n {\n id: ListingReportTableColumnId.Venue,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [ListingReportTableColumnId.Event]: columnHelper.accessor(\n (data) => data?.event?.name ?? '',\n {\n id: ListingReportTableColumnId.Event,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [ListingReportTableColumnId.EventGenre]: columnHelper.accessor(\n (data) => data?.genre ?? data?.event?.genre ?? '',\n {\n id: ListingReportTableColumnId.EventGenre,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [ListingReportTableColumnId.EventCountry]: columnHelper.accessor(\n (data) => data?.country?.name ?? data?.venue?.country?.name ?? '',\n {\n id: ListingReportTableColumnId.EventCountry,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [ListingReportTableColumnId.EventCity]: columnHelper.accessor(\n (data) => data?.city ?? data?.venue?.city ?? '',\n {\n id: ListingReportTableColumnId.EventCity,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [ListingReportTableColumnId.SeatingSection]: columnHelper.accessor(\n (data) => data?.section ?? '',\n {\n id: ListingReportTableColumnId.SeatingSection,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [ListingReportTableColumnId.SeatingRow]: columnHelper.accessor(\n (data) => data?.row ?? '',\n {\n id: ListingReportTableColumnId.SeatingRow,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [ListingReportTableColumnId.UnsoldQuantity]: columnHelper.accessor(\n (data) => data?.availQty ?? 0,\n {\n id: ListingReportTableColumnId.UnsoldQuantity,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n return (\n \n
    \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: getValue(),\n })}\n
    \n
    \n );\n },\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n const number = accessorFn?.(original, -1);\n\n return (\n \n
    \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: number,\n })}\n
    \n
    \n );\n },\n }\n ),\n [ListingReportTableColumnId.TicketCount]: columnHelper.accessor(\n (data) => data?.tktQty ?? 0,\n {\n id: ListingReportTableColumnId.TicketCount,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n return (\n \n
    \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: getValue(),\n })}\n
    \n
    \n );\n },\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n const number = accessorFn?.(original, -1);\n\n return (\n \n
    \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: number,\n })}\n
    \n
    \n );\n },\n }\n ),\n [ListingReportTableColumnId.SoldQuantity]: columnHelper.accessor(\n (data) => data?.soldQty ?? 0,\n {\n id: ListingReportTableColumnId.SoldQuantity,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n return (\n \n
    \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: getValue(),\n })}\n
    \n
    \n );\n },\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n const number = accessorFn?.(original, -1);\n\n return (\n \n
    \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: number,\n })}\n
    \n
    \n );\n },\n }\n ),\n // TODO: Change to total cost\n [ListingReportTableColumnId.UnitCost]: columnHelper.accessor(\n (data) => data?.ttlCst,\n {\n id: ListingReportTableColumnId.UnitCost,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n const value = getValue();\n\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n sortingFn: sortMoney,\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n\n const value = accessorFn?.(original, -1);\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n }\n ),\n [ListingReportTableColumnId.SoldCost]: columnHelper.accessor(\n (data) => data?.soldCst,\n {\n id: ListingReportTableColumnId.SoldCost,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n sortingFn: sortMoney,\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n\n const value = accessorFn?.(original, -1);\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n }\n ),\n [ListingReportTableColumnId.UnsoldCost]: columnHelper.accessor(\n (data) => data?.unsoldCst,\n {\n id: ListingReportTableColumnId.UnsoldCost,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n sortingFn: sortMoney,\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n\n const value = accessorFn?.(original, -1);\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n }\n ),\n [ListingReportTableColumnId.SoldProceeds]: columnHelper.accessor(\n (data) => data?.soldProcs,\n {\n id: ListingReportTableColumnId.SoldProceeds,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n sortingFn: sortMoney,\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n\n const value = accessorFn?.(original, -1);\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n }\n ),\n [ListingReportTableColumnId.ListPrice]: columnHelper.accessor(\n (data) => data?.ttlListPrc,\n {\n id: ListingReportTableColumnId.ListPrice,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n if (!original) {\n return ;\n }\n\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n\n const value = accessorFn?.(original, -1);\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n }\n ),\n [ListingReportTableColumnId.AllInPrice]: columnHelper.accessor(\n (data) => data?.ttlWebPrc,\n {\n id: ListingReportTableColumnId.AllInPrice,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n\n const value = accessorFn?.(original, -1);\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n }\n ),\n [ListingReportTableColumnId.PandL]: columnHelper.accessor(\n (data) => data?.pandL,\n {\n id: ListingReportTableColumnId.PandL,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n sortingFn: sortMoney,\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n\n const value = accessorFn?.(original, -1);\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n }\n ),\n [ListingReportTableColumnId.Margin]: columnHelper.accessor(\n (data) => data?.marg,\n {\n id: ListingReportTableColumnId.Margin,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n isPercent: true,\n })\n : (value ?? )}\n
    \n
    \n );\n },\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n\n const value = accessorFn?.(original, -1);\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n isPercent: true,\n })\n : (value ?? )}\n
    \n
    \n );\n },\n }\n ),\n [ListingReportTableColumnId.EventId]: columnHelper.accessor(\n (data) => data?.event?.viagId ?? '',\n {\n id: ListingReportTableColumnId.EventId,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => {\n const eventId = params.row.original?.eventId;\n if (!eventId) {\n return ;\n }\n const eventUrl = createInventoryEventUrl(eventId);\n return (\n \n );\n },\n }\n ),\n [ListingReportTableColumnId.Category]: columnHelper.accessor(\n (data) => data?.performer?.descr ?? '',\n {\n id: ListingReportTableColumnId.Category,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [ListingReportTableColumnId.EventDate]: columnHelper.accessor(\n (data) => data?.event?.dates?.start ?? '',\n {\n id: ListingReportTableColumnId.EventDate,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_MonthDD_Time } =\n useColumnUserSetting(columnId, SECTION_TYPE);\n\n if (!original) {\n return ;\n }\n\n return (\n \n );\n },\n }\n ),\n [ListingReportTableColumnId.EventStateProvince]: columnHelper.accessor(\n (data) => data?.venue?.state ?? '',\n {\n id: ListingReportTableColumnId.EventStateProvince,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [ListingReportTableColumnId.SaleId]: columnHelper.accessor(\n (data) => data?.sales?.map((s) => s.saleId) ?? null,\n {\n id: ListingReportTableColumnId.SaleId,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue }) => {\n const saleIds = getValue();\n\n if (!saleIds) {\n return ;\n }\n\n return (\n `#${saleId}`)}\n url={saleIds.map((saleId) => getSaleDetailsRelativeUrl(saleId))}\n separator={{', '}}\n openInNewTab\n align=\"left\"\n style={{ fontWeight: 600 }}\n />\n );\n },\n }\n ),\n [ListingReportTableColumnId.HoldId]: columnHelper.accessor(\n (data) => data?.holds?.map((s) => s.saleId) ?? null,\n {\n id: ListingReportTableColumnId.HoldId,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue }) => {\n const holdIds = getValue();\n\n if (!holdIds) {\n return ;\n }\n\n return (\n `#${holdId}`)}\n url={holdIds.map((holdId) => getSaleDetailsRelativeUrl(holdId))}\n separator={{', '}}\n openInNewTab\n align=\"left\"\n style={{ fontWeight: 600 }}\n />\n );\n },\n }\n ),\n [ListingReportTableColumnId.SeatingSeats]: columnHelper.accessor(\n (data) => {\n if (!data?.seatFr) return null;\n let text = data.seatFr;\n if (data.seatTo && data.seatTo !== data.seatFr) {\n text += ` - ${data.seatTo}`;\n }\n return text;\n },\n {\n id: ListingReportTableColumnId.SeatingSeats,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [ListingReportTableColumnId.DeliveryType]: columnHelper.accessor(\n (data) => data?.delivType ?? null,\n {\n id: ListingReportTableColumnId.DeliveryType,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n const value = getValue();\n\n const strDeliveryTypes = useMapDeliveryTypesToString({\n deliveryTypesObj: { delivType: value },\n });\n\n if (!original || !value) {\n return ;\n }\n\n return (\n \n \n \n );\n },\n }\n ),\n [ListingReportTableColumnId.PurchasePaymentStatus]: columnHelper.accessor(\n (data) => data?.poInfos?.pmtStatuses ?? null,\n {\n id: ListingReportTableColumnId.PurchasePaymentStatus,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue }) {\n const values = getValue();\n\n const { contentResolver } = useContentContext();\n\n if (values == null) {\n return ;\n }\n\n const contentIds = values.map((v) => PURCHASE_PAYMENT_STATUS_TO_CID[v]);\n const contentText = contentIds\n .map((cid) => {\n if (isContentId(cid)) {\n return contentResolver(ContentIds[cid as ContentId]);\n } else {\n return cid;\n }\n })\n .join(', ');\n\n return (\n \n {contentText}\n \n );\n },\n }\n ),\n [ListingReportTableColumnId.PaymentMethodType]: columnHelper.accessor(\n (data) => data?.poInfos?.pmtMethods ?? null,\n {\n id: ListingReportTableColumnId.PaymentMethodType,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n const { contentResolver } = useContentContext();\n\n const value = getValue();\n if (!original || !value) {\n return ;\n }\n\n if (userDefinedPrecision === FormatOption.EnumDisplay_Text) {\n const contentIds = value.map((v) => PAYMENT_METHOD_TYPE_TO_CID[v]);\n const contentText = contentIds\n .map((cid) => {\n if (isContentId(cid)) {\n return contentResolver(ContentIds[cid as ContentId]);\n } else {\n return cid;\n }\n })\n .join(', ');\n\n return (\n \n {contentText}\n \n );\n }\n\n return (\n \n {value.map((v, i) => {\n const PurchaseMethodIcon = getPaymentMethodIcon(v);\n return (\n \n );\n })}\n \n );\n },\n }\n ),\n [ListingReportTableColumnId.InHandDate]: columnHelper.accessor(\n (data) => data?.inHandDate ?? '',\n {\n id: ListingReportTableColumnId.InHandDate,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue();\n if (!original) {\n return ;\n }\n return (\n \n \n \n );\n },\n sortingFn: 'datetime',\n }\n ),\n [ListingReportTableColumnId.PurchaseId]: columnHelper.accessor(\n (data) => data?.poInfos?.poIds ?? null,\n {\n id: ListingReportTableColumnId.PurchaseId,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue }) => {\n const purchaseIds = getValue();\n\n if (!purchaseIds) {\n return ;\n }\n\n return (\n `#${purchaseId}`)}\n url={purchaseIds.map((purchaseId) =>\n getPurchaseOrderRelativeUrl(purchaseId)\n )}\n separator={{', '}}\n openInNewTab\n align=\"left\"\n style={{ fontWeight: 600 }}\n />\n );\n },\n }\n ),\n [ListingReportTableColumnId.PurchasedBy]: columnHelper.accessor(\n (data) => ({\n stringValueType: AccessorReturnType.PURCHASE_BUYER_INFOS,\n value: data?.poInfos?.buyers,\n }),\n {\n id: ListingReportTableColumnId.PurchasedBy,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue }) {\n const buyerInfos = getValue().value;\n\n const useGetUserInfosQuery = useGetUserInfos(\n buyerInfos?.map((u) => u.buyerUserId)\n );\n const deactivatedText = useContent(ContentId.Deactivated);\n const hasDisplayDeactivatedUser = useUserHasFeature(\n Feature.DisplayDeactivatedUser\n );\n const buyerUserInfos = useMemo(() => {\n if (buyerInfos == null) return [];\n\n return buyerInfos.map((bi) => {\n const buyerUser = useGetUserInfosQuery.data?.[bi.buyerUserId];\n return {\n buyerUserId: bi.buyerUserId,\n buyerUser,\n averageBuyerCommissionPercentage:\n bi.averageBuyerCommissionPercent,\n };\n });\n }, [buyerInfos, useGetUserInfosQuery.data]);\n\n if (buyerInfos == null) {\n return ;\n }\n\n return (\n \n {buyerUserInfos\n .map(\n (bui) =>\n `${\n bui.buyerUser?.name ??\n bui.buyerUser?.email ??\n bui.buyerUserId\n } ${\n bui.buyerUser?.isDeactivated && !hasDisplayDeactivatedUser\n ? `(${deactivatedText})`\n : ''\n } ${\n bui.averageBuyerCommissionPercentage\n ? `(${formatPercent(\n bui.averageBuyerCommissionPercentage,\n 2\n )})`\n : ''\n }`\n )\n .join(', ')}\n \n );\n },\n }\n ),\n [ListingReportTableColumnId.PurchaseDate]: columnHelper.accessor(\n (data) => data?.poInfos?.poDates ?? null,\n {\n id: ListingReportTableColumnId.PurchaseDate,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n column: { id: columnId },\n row: { original },\n }) {\n const purchaseDates = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_MonthDD_Time } =\n useColumnUserSetting(columnId, SECTION_TYPE);\n\n if (original == null) {\n return ;\n }\n\n return (\n \n );\n },\n }\n ),\n [ListingReportTableColumnId.CancellationDatePurchase]: columnHelper.accessor(\n (data) => data?.poInfos?.cancDates ?? null,\n {\n id: ListingReportTableColumnId.CancellationDatePurchase,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue }) => {\n const purchaseDates = getValue();\n\n if (!purchaseDates) {\n return ;\n }\n\n return (\n \n );\n },\n }\n ),\n [ListingReportTableColumnId.Vendor]: columnHelper.accessor(\n (data) => {\n if (!data) return null;\n const { poInfos: purchaseInfos } = data;\n if (!purchaseInfos?.vendors.length) return null;\n\n return purchaseInfos.vendors.map((v) => v.vendorName).join(', ');\n },\n {\n id: ListingReportTableColumnId.Vendor,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [ListingReportTableColumnId.InternalNotesPurchase]: columnHelper.accessor(\n (data) => {\n if (!data) return null;\n const { poInfos: purchaseInfos } = data;\n if (!purchaseInfos?.privNotes.length) return null;\n\n return purchaseInfos.privNotes.join(', ');\n },\n {\n id: ListingReportTableColumnId.InternalNotesPurchase,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [ListingReportTableColumnId.VendorOrderId]: columnHelper.accessor(\n (data) => {\n if (!data) return null;\n const { poInfos: purchaseInfos } = data;\n if (!purchaseInfos?.vendOrdIds.length) return null;\n\n return purchaseInfos.vendOrdIds.join(', ');\n },\n {\n id: ListingReportTableColumnId.VendorOrderId,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n\n [ListingReportTableColumnId.VendorAccountEmail]: columnHelper.accessor(\n (data) => {\n if (!data) return null;\n const { poInfos: purchaseInfos } = data;\n if (!purchaseInfos?.vendorAccs.length) return null;\n\n return purchaseInfos.vendorAccs\n .map((v) => v.encryptedEmailAddress)\n .join(', ');\n },\n {\n id: ListingReportTableColumnId.VendorAccountEmail,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [ListingReportTableColumnId.SalePaymentState]: columnHelper.accessor(\n (data) =>\n data?.sales\n ?.map((s) => ({\n marketplacePaymentState: s.mkpPmtState,\n paymentState: s.pmtState,\n }))\n ?.filter(\n (s) => s.marketplacePaymentState != null || s.paymentState != null\n ) ?? null,\n {\n id: ListingReportTableColumnId.SalePaymentState,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue }) {\n const values = getValue<\n {\n marketplacePaymentState: MarketplacePaymentState;\n paymentState: PointOfSalePaymentState;\n }[]\n >();\n if (values == null) {\n return ;\n }\n\n const pmtStates = values.map((s) =>\n s.marketplacePaymentState != null\n ? MARKETPLACE_SALE_PAYMENT_STATE_TO_CID[s.marketplacePaymentState]\n : SALE_PAYMENT_STATE_TO_CID[s.paymentState!]\n );\n\n const valuesDeduped = Array.from(new Set(pmtStates));\n\n return (\n \n {valuesDeduped.flatMap((contentId, index) => {\n if (index < valuesDeduped.length - 1) {\n return [\n ,\n {', '},\n ];\n }\n\n return [];\n })}\n \n );\n },\n }\n ),\n [ListingReportTableColumnId.Charges]: columnHelper.accessor(\n (data) =>\n data?.sales?.map((s) => s.chargs?.amt).filter((c) => c != null) ?? null,\n {\n id: ListingReportTableColumnId.Charges,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const { loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n const uiCurrency = getUiCurrency(\n original?.currency ?? loginContext?.user?.activeAccount.currencyCode\n );\n\n const { isCurrency, isPercent } = getColumnPersonalization({\n id: columnId,\n sectionType: SECTION_TYPE,\n });\n\n if (original == null) {\n return ;\n }\n\n const value = getValue();\n\n const formatted =\n value\n ?.map((v) =>\n applyNumberFormatting({\n precision: FormatOption.Precise,\n inputNumber: v,\n currencyCode: uiCurrency.code,\n currencyDecimalDigits: uiCurrency.dec,\n isPercent: isPercent && !isCurrency,\n })\n )\n ?.join(', ') ?? '';\n\n return (\n \n
    {formatted}
    \n
    \n );\n },\n }\n ),\n [ListingReportTableColumnId.Credits]: columnHelper.accessor(\n (data) =>\n data?.sales?.map((s) => s.creds?.amt).filter((c) => c != null) ?? null,\n {\n id: ListingReportTableColumnId.Credits,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const { loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n const uiCurrency = getUiCurrency(\n original?.currency ?? loginContext?.user?.activeAccount.currencyCode\n );\n\n const { isCurrency, isPercent } = getColumnPersonalization({\n id: columnId,\n sectionType: SECTION_TYPE,\n });\n\n if (original == null) {\n return ;\n }\n\n const value = getValue();\n\n const formatted =\n value\n ?.map((v) =>\n applyNumberFormatting({\n precision: FormatOption.Precise,\n inputNumber: v,\n currencyCode: uiCurrency.code,\n currencyDecimalDigits: uiCurrency.dec,\n isPercent: isPercent && !isCurrency,\n })\n )\n ?.join(', ') ?? '';\n\n return (\n \n
    {formatted}
    \n
    \n );\n },\n }\n ),\n [ListingReportTableColumnId.Fulfiller]: columnHelper.accessor(\n (data) => ({\n stringValueType: AccessorReturnType.SELLER_USER_ID,\n value:\n (data?.sales\n ?.map((s) => s.fulfillerId)\n .filter((c) => c != null) as string[]) ?? null,\n }),\n {\n id: ListingReportTableColumnId.Fulfiller,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const { allActiveUserInfos } = useSellerAccountContext();\n\n const sellerUserIds = getValue().value;\n\n const fulfillerFormatted = useMemo(\n () =>\n sellerUserIds\n ? [...new Set(sellerUserIds)]\n .map(\n (fulfillerId) =>\n allActiveUserInfos?.[fulfillerId]?.displayName\n )\n .filter((name) => name != null)\n .join(', ')\n : null,\n [allActiveUserInfos, sellerUserIds]\n );\n\n if (original == null) {\n return ;\n }\n\n return {fulfillerFormatted};\n },\n }\n ),\n [ListingReportTableColumnId.ListingId]: columnHelper.accessor(\n (data) => data?.listId?.toString() ?? '',\n {\n id: ListingReportTableColumnId.ListingId,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue }) => {\n const listingId = getValue();\n\n if (!listingId) {\n return ;\n }\n\n const url = getListingDetailsRelativeUrl(listingId!);\n return (\n \n );\n },\n }\n ),\n [ListingReportTableColumnId.Zone]: columnHelper.accessor(\n (data) => data?.zone ?? '',\n {\n id: ListingReportTableColumnId.Zone,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [ListingReportTableColumnId.PricedBy]: columnHelper.accessor(\n (data) => ({\n stringValueType: AccessorReturnType.SELLER_USER_ID,\n value: data?.pricerId ?? null,\n }),\n {\n id: ListingReportTableColumnId.PricedBy,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const { allActiveUserInfos } = useSellerAccountContext();\n\n const pricerSellerUserId = getValue().value;\n\n const pricer = useMemo(\n () =>\n pricerSellerUserId\n ? allActiveUserInfos?.[pricerSellerUserId]?.displayName\n : null,\n [allActiveUserInfos, pricerSellerUserId]\n );\n\n if (original == null) {\n return ;\n }\n\n return {pricer};\n },\n }\n ),\n [ListingReportTableColumnId.PurchaseCreatedBy]: columnHelper.accessor(\n (data) => ({\n stringValueType: AccessorReturnType.SELLER_USER_ID,\n value: data?.poInfos?.createdBys,\n }),\n {\n id: ListingReportTableColumnId.PurchaseCreatedBy,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const { allActiveUserInfos } = useSellerAccountContext();\n\n const sellerUserIds = getValue().value;\n\n const displayNamesFormatted = useMemo(\n () =>\n sellerUserIds\n ? [...new Set(sellerUserIds)]\n .map(\n (sellerUserId) =>\n allActiveUserInfos?.[sellerUserId]?.displayName\n )\n .filter((name) => name != null)\n .join(', ')\n : null,\n [allActiveUserInfos, sellerUserIds]\n );\n\n if (original == null) {\n return ;\n }\n\n return (\n {displayNamesFormatted}\n );\n },\n }\n ),\n [ListingReportTableColumnId.InternalNotes]: columnHelper.accessor(\n (data) => data?.privNotes ?? '',\n {\n id: ListingReportTableColumnId.InternalNotes,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n} as const;\n","export function AutomatiqSquareLogo({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) {\n return (\n \n \n \n \n \n );\n}\n","export function AxsSquareLogo({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","export function FaxExchangeSquareLogo({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) {\n return (\n \n \n \n \n );\n}\n","export function GametimeSquareLogo({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","export function GoTicketsSquareLogo({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n","export function LyteSquareLogo({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) {\n return (\n \n \n \n \n );\n}\n","export function SeatGeekSquareLogo({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","export function StubHubSquareLogo({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) {\n return (\n \n \n \n \n );\n}\n","export function TicketEvolutionSquareLogo({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","export function TicketmasterSquareLogo({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","export function TicketNetworkSquareLogo({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","export function TickPickSquareLogo({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","export function VividSeatsSquareLogo({\n width,\n height,\n}: {\n width?: string | number;\n height?: string | number;\n}) {\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","import { ReactNode } from 'react';\nimport { AutomatiqSquareLogo } from 'src/svgs/AutomatiqSquareLogo';\nimport { AxsSquareLogo } from 'src/svgs/AxsSquareLogo';\nimport { FaxExchangeSquareLogo } from 'src/svgs/FaxExchangeSquareLogo';\nimport { GametimeSquareLogo } from 'src/svgs/GametimeSquareLogo';\nimport { GoTicketsSquareLogo } from 'src/svgs/GoTicketsSquareLogo';\nimport { LyteSquareLogo } from 'src/svgs/LyteSquareLogo';\nimport { SeatGeekSquareLogo } from 'src/svgs/SeatGeekSquareLogo';\nimport { StubHubSquareLogo } from 'src/svgs/StubHubSquareLogo';\nimport { TicketEvolutionSquareLogo } from 'src/svgs/TicketEvolutionSquareLogo';\nimport { TicketmasterSquareLogo } from 'src/svgs/TicketmasterSquareLogo';\nimport { TicketNetworkSquareLogo } from 'src/svgs/TicketNetworkSquareLogo';\nimport { TickPickSquareLogo } from 'src/svgs/TickPickSquareLogo';\nimport { VividSeatsSquareLogo } from 'src/svgs/VividSeatsSquareLogo';\nimport { Marketplace } from 'src/WebApiController';\n\nconst getMarketplaceSquareLogo = (\n marketplace: Marketplace | undefined | null\n): ReactNode => {\n switch (marketplace) {\n case Marketplace.VividSeats:\n return ;\n case Marketplace.StubHub:\n return ;\n case Marketplace.SeatGeek:\n return ;\n case Marketplace.TickPick:\n return ;\n case Marketplace.Ticketmaster:\n return ;\n case Marketplace.AXS:\n return ;\n case Marketplace.FanXchange:\n return ;\n case Marketplace.Gametime:\n return ;\n case Marketplace.TicketEvolution:\n return ;\n case Marketplace.TicketNetwork:\n return ;\n case Marketplace.Automatiq:\n return ;\n case Marketplace.Lyte:\n return ;\n case Marketplace.GoTickets:\n return ;\n default:\n return marketplace;\n }\n};\n\ninterface MarketplaceSquareLogoProps {\n marketplace?: Marketplace | undefined | null;\n}\n\nexport const MarketplaceSquareLogo = ({\n marketplace,\n}: MarketplaceSquareLogoProps) => {\n return <>{getMarketplaceSquareLogo(marketplace)};\n};\n","import { useQueryClient } from '@tanstack/react-query';\nimport {\n MutableRefObject,\n useCallback,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PAYMENT_SINGLE_MONTH_QUERY_KEY } from 'src/contexts/MarketplacePaymentDataContext/MarketplacePaymentDataContext.constants';\nimport { ConvertCurrencyDialog } from 'src/dialogs/ConvertCurrency';\nimport {\n ConvertCurrencyForm,\n CurrencyConversionPayment,\n} from 'src/dialogs/ConvertCurrency/ConvertCurrencyDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { getConversionRate } from 'src/utils/currencyUtils';\nimport {\n Feature,\n MarketplacePaymentClient,\n MarketplaceSalePayment,\n} from 'src/WebApiController';\n\nexport interface ConvertPaymentAmountRefActions {\n showConvertPaymentAmountDialog: () => void;\n currencyConversionPayment: CurrencyConversionPayment;\n}\n\ninterface ConvertPaymentAmountProps {\n marketplaceSalePayment: MarketplaceSalePayment;\n convertPaymentAmountActionsRef?: MutableRefObject;\n}\n\nexport const ConvertPaymentAmount = ({\n convertPaymentAmountActionsRef,\n marketplaceSalePayment,\n}: ConvertPaymentAmountProps) => {\n const [isSavingConversionRate, setIsSavingConversionRate] =\n useState(false);\n const canConvertMarketplacePaymentLines = useUserHasFeature(\n Feature.MarketplacePaymentConversion\n );\n const queryClient = useQueryClient();\n const { activeAccountWebClientConfig } = useAppContext();\n const convertMarketplacePaymentDialog = useBasicDialog();\n const { loginContext } = useAppContext();\n const currentUserId = loginContext?.user?.userId!;\n\n const onCancel = useCallback(() => {\n convertMarketplacePaymentDialog.closeDialog();\n }, [convertMarketplacePaymentDialog]);\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const onSave = useCallback(\n async (formValues: ConvertCurrencyForm) => {\n setIsSavingConversionRate(true);\n try {\n await new MarketplacePaymentClient(\n activeAccountWebClientConfig\n ).convertMarketplacePaymentAmount(\n marketplaceSalePayment.id,\n formValues.convertedPaymentAmount!.amt,\n formValues.convertedCurrencyCode\n );\n\n const isExpanded = true;\n queryClient.invalidateQueries({\n queryKey: [PAYMENT_SINGLE_MONTH_QUERY_KEY, isExpanded],\n refetchType: 'active',\n });\n\n convertMarketplacePaymentDialog.closeDialog();\n } catch (e) {\n console.error(e);\n showErrorDialog(\n 'MarketplacePaymentClient.convertMarketplacePaymentAmount',\n e as Error\n );\n } finally {\n setIsSavingConversionRate(false);\n }\n },\n [\n activeAccountWebClientConfig,\n convertMarketplacePaymentDialog,\n marketplaceSalePayment.id,\n queryClient,\n showErrorDialog,\n ]\n );\n\n const currencyConversionPayment = useMemo(() => {\n return {\n convertedPaymentAmount: marketplaceSalePayment.convertedPmtAmt,\n paymentAmount: marketplaceSalePayment.pmtAmt,\n conversionRate: marketplaceSalePayment.convertedPmtAmt\n ? Math.abs(\n getConversionRate(\n marketplaceSalePayment.pmtAmt.amt,\n marketplaceSalePayment.convertedPmtAmt.amt\n )\n )\n : null,\n convertedCurrencyCode:\n marketplaceSalePayment.convertedPmtAmt?.currency ?? null,\n };\n }, [marketplaceSalePayment.convertedPmtAmt, marketplaceSalePayment.pmtAmt]);\n\n useImperativeHandle(\n convertPaymentAmountActionsRef,\n () => ({\n showConvertPaymentAmountDialog: () =>\n convertMarketplacePaymentDialog.launchDialog(),\n currencyConversionPayment: currencyConversionPayment,\n }),\n [convertMarketplacePaymentDialog, currencyConversionPayment]\n );\n\n return (\n <>\n {canConvertMarketplacePaymentLines &&\n convertMarketplacePaymentDialog.dialogProps.isOpen &&\n currencyConversionPayment && (\n \n )}\n \n );\n};\n","import { useRef } from 'react';\nimport {\n ConvertPaymentAmount,\n ConvertPaymentAmountRefActions,\n} from 'src/components/MarketplacePayments/ConvertPaymentAmount/ConvertPaymentAmount';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { IconsFill, MoreIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature, MarketplaceSalePayment } from 'src/WebApiController';\n\ninterface MarketplacePaymentOptionsActionProps {\n marketplaceSalePayment: MarketplaceSalePayment;\n}\n\nexport const MarketplacePaymentOptions = ({\n marketplaceSalePayment,\n}: MarketplacePaymentOptionsActionProps) => {\n const actionsRef = useRef(null);\n const canConvertMarketplacePaymentLines = useUserHasFeature(\n Feature.MarketplacePaymentConversion\n );\n\n const canShowOptions = canConvertMarketplacePaymentLines;\n\n if (!canShowOptions) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n }\n align=\"end\"\n >\n {canConvertMarketplacePaymentLines && (\n actionsRef.current?.showConvertPaymentAmountDialog()}\n >\n \n \n )}\n \n {canConvertMarketplacePaymentLines && (\n \n )}\n \n );\n};\n","import { useContext } from 'react';\nimport { IconButton } from 'src/components/Buttons';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { vars } from 'src/core/themes';\nimport { OpenLinkIcon } from 'src/svgs';\nimport { MarketplacePaymentOptions } from 'src/tables/MarketplacePaymentsTable/Cells/MarketplacePaymentOptionsAction';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getMarketplacePaymentDetailsModalConfigWithDeepLink } from 'src/utils/marketplacePaymentUtils';\nimport { MarketplaceSalePayment } from 'src/WebApiController';\n\ninterface MarketplacePaymentsActionsCellProps {\n marketplaceSalePayment: MarketplaceSalePayment;\n}\n\nexport const MarketplacePaymentsActions = ({\n marketplaceSalePayment,\n}: MarketplacePaymentsActionsCellProps) => {\n const { setModal } = useContext(ModalContext);\n return (\n <>\n \n\n \n setModal(\n getMarketplacePaymentDetailsModalConfigWithDeepLink(\n marketplaceSalePayment.id\n )\n )\n }\n icon={\n \n }\n titleContentId={ContentId.ViewDetails}\n />\n \n );\n};\n","import { vars } from 'src/core/themes';\n\nexport const SHIMMERING_DIV_HEIGHT_PAYMENTS = vars.spacing.xxl;\n","import { ColumnDef } from '@tanstack/react-table';\nimport { ReactNode, useMemo } from 'react';\nimport { MarketplacePaymentStatePill } from 'src/components/common/MarketplacePaymentStatePill/MarketplacePaymentStatePill';\nimport { MarketplaceSquareLogo } from 'src/components/common/MarketplaceSquareLogo';\nimport {\n COLUMN_DEFAULT_SIZE_BASE,\n COLUMN_DEFAULT_SIZE_LG,\n COLUMN_DEFAULT_SIZE_SM,\n COLUMN_MAX_SIZE,\n COLUMN_MIN_SIZE,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { FormatOption_DateTime } from 'src/modals/EditTableColumns';\nimport { MarketplacePaymentsActions } from 'src/tables/MarketplacePaymentsTable/Cells/MarketplacePaymentsActionsCell';\nimport { SHIMMERING_DIV_HEIGHT_PAYMENTS } from 'src/tables/MarketplacePaymentsTable/MarketplacePaymentsTableCommon.constants';\nimport { TableShimmeringDiv } from 'src/tables/Table';\nimport { DateCell } from 'src/tables/Table/TableCells';\nimport { MarketplacePaymentsTableColumnId } from 'src/utils/columns/marketplacePayments/marketplacePaymentsColumnsUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { MARKETPLACE_SALE_PAYMENT_STATE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { safeSortDateTime, sortMoney } from 'src/utils/tableUtils';\nimport {\n Feature,\n Marketplace,\n MarketplacePaymentState,\n MarketplaceSalePayment,\n UiMoney,\n} from 'src/WebApiController';\n\nexport const useMarketplacePaymentsTableColumnsConfig = () => {\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n\n return useMemo<\n Record<\n MarketplacePaymentsTableColumnId,\n ColumnDef\n >\n >(() => {\n // Reuse dates for same values\n const datesMap: Map = new Map();\n\n return {\n [MarketplacePaymentsTableColumnId.PaymentDate]: {\n id: MarketplacePaymentsTableColumnId.PaymentDate,\n accessorFn: (data) => data?.pmtDate,\n header: (params) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const date = getValue();\n if (!original) {\n return (\n \n );\n }\n\n if (!date) {\n return null;\n }\n\n if (!datesMap.has(date)) {\n datesMap.set(\n date,\n \n );\n }\n return {datesMap.get(date)};\n },\n sortingFn: safeSortDateTime,\n },\n [MarketplacePaymentsTableColumnId.Marketplace]: {\n id: MarketplacePaymentsTableColumnId.Marketplace,\n accessorFn: (data) => data?.mkp,\n header: (params) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const marketplace = getValue();\n if (!original) {\n return (\n \n );\n }\n\n return (\n \n \n \n );\n },\n },\n [MarketplacePaymentsTableColumnId.PaymentReferenceID]: {\n id: MarketplacePaymentsTableColumnId.PaymentReferenceID,\n accessorFn: (data) => data?.extPmtId,\n header: (params) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_DEFAULT_SIZE_BASE,\n maxSize: COLUMN_DEFAULT_SIZE_LG,\n cell: ({ getValue, row: { original } }) => {\n const pmtRefId = getValue();\n if (!original) {\n return (\n \n );\n }\n return {pmtRefId};\n },\n },\n [MarketplacePaymentsTableColumnId.State]: {\n id: MarketplacePaymentsTableColumnId.State,\n accessorFn: (data) => data?.state,\n header: (params) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const state = getValue();\n const stateTitle = useContent(\n MARKETPLACE_SALE_PAYMENT_STATE_TO_CID[\n state || MarketplacePaymentState.Ineligible\n ]\n );\n\n if (!original) {\n return (\n \n );\n }\n\n if (!state) {\n return null;\n }\n\n return (\n \n \n \n );\n },\n },\n [MarketplacePaymentsTableColumnId.PaymentAmount]: {\n id: MarketplacePaymentsTableColumnId.PaymentAmount,\n accessorFn: (data) => data?.pmtAmt,\n header: (params) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const pmtAmt = getValue();\n if (!original) {\n return (\n \n );\n }\n\n if (!pmtAmt) {\n return null;\n }\n\n return {pmtAmt.disp};\n },\n sortingFn: sortMoney,\n },\n [MarketplacePaymentsTableColumnId.ConvertedPaymentsAmount]: {\n id: MarketplacePaymentsTableColumnId.ConvertedPaymentsAmount,\n accessorFn: (data) => data?.convertedPmtAmt,\n header: (params) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const convertedPmtAmt = getValue();\n if (!original) {\n return (\n \n );\n }\n\n if (!convertedPmtAmt) {\n return null;\n }\n\n return (\n {convertedPmtAmt.disp}\n );\n },\n sortingFn: sortMoney,\n },\n [MarketplacePaymentsTableColumnId.CreditAmount]: {\n id: MarketplacePaymentsTableColumnId.CreditAmount,\n accessorFn: (data) => data?.credit,\n header: (params) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const credit = getValue();\n if (!original) {\n return (\n \n );\n }\n\n if (!credit) {\n return null;\n }\n\n return {credit.disp};\n },\n sortingFn: sortMoney,\n },\n [MarketplacePaymentsTableColumnId.ChargeAmount]: {\n id: MarketplacePaymentsTableColumnId.ChargeAmount,\n accessorFn: (data) => data?.charge,\n header: (params) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const charge = getValue();\n\n if (!original) {\n return (\n \n );\n }\n\n if (!charge) {\n return null;\n }\n\n return {charge.disp};\n },\n sortingFn: sortMoney,\n },\n [MarketplacePaymentsTableColumnId.ProceedsAmount]: {\n id: MarketplacePaymentsTableColumnId.ProceedsAmount,\n accessorFn: (data) => data?.proceedsAmt,\n header: (params) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const proceeds = getValue();\n\n if (!original) {\n return (\n \n );\n }\n\n if (!proceeds) {\n return null;\n }\n\n return {proceeds.disp};\n },\n sortingFn: sortMoney,\n },\n [MarketplacePaymentsTableColumnId.Actions]: {\n id: MarketplacePaymentsTableColumnId.Actions,\n accessorFn: (data) => data,\n header: (params) => (\n \n \n \n ),\n enableResizing: !hasTablePinActionColumnFeature,\n enableSorting: false,\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n if (!original) {\n return (\n \n );\n }\n const marketplaceSalePayment = getValue();\n return (\n \n \n \n );\n },\n },\n };\n }, [hasTablePinActionColumnFeature]);\n};\n","import { useMemo } from 'react';\nimport { useMarketplacePaymentsTableColumnsConfig } from 'src/tables/MarketplacePaymentsTable';\nimport { getEventsColumnConfigById } from 'src/utils/columns/columnUtils';\nimport { MarketplacePaymentsTableColumnId } from 'src/utils/columns/marketplacePayments/marketplacePaymentsColumnsUtils.types';\n\nexport const useDefaultPaymentsColumnConfig = () => {\n const paymentColumnConfig = useMarketplacePaymentsTableColumnsConfig();\n return useMemo(\n () =>\n Object.values(paymentColumnConfig)\n .filter((item) => {\n const columnConfig = getEventsColumnConfigById(\n item.id as MarketplacePaymentsTableColumnId\n );\n return (\n !columnConfig.personalization.isHiddenByDefault &&\n (columnConfig.personalization.isConfigurable ||\n columnConfig.personalization.isRequired)\n );\n })\n .map((column) => column.id as MarketplacePaymentsTableColumnId),\n [paymentColumnConfig]\n );\n};\n","import { EventAccordionItemBodyComponentType } from 'src/components/Accordions';\nimport { FormatOptionEntries } from 'src/modals/EditTableColumns';\nimport { PurchasesTableColumnId } from 'src/utils/columns/purchases/purchasesColumnUtils.types';\nimport {\n PurchaseOrderTicketGroup,\n PurchaseViewMode,\n} from 'src/WebApiController';\n\nimport { TableProps } from '../Table/Table';\n\nexport const SHIMMERING_DIV_HEIGHT_SINGLE_PURCHASE = '30px';\n\nexport type PurchaseOrderTableDataProps = {\n useVirtuoso?: boolean;\n} & Pick<\n EventAccordionItemBodyComponentType,\n | 'onMount'\n | 'onUnmount'\n | 'initState'\n | 'disablePagination'\n | 'onItemSelectionsChanged'\n | 'entities'\n | 'entityCount'\n | 'getDataFail'\n | 'enableColumnFilters'\n>;\n\nexport type PurchaseOrderTableProps = PurchaseOrderTableDataProps & {\n groupId: string; // First of month, or event virtualId\n viewMode?: PurchaseViewMode;\n alwaysShowCheckbox?: boolean;\n showSelectAllOnHeader?: boolean;\n isItemsLoading?: boolean;\n rowSupportsAccordion?: boolean;\n columnVisibilityOverride?: PurchasesTableColumnId[];\n formatOptionOverrides?: FormatOptionEntries;\n withOuterPadding?: boolean;\n disableSelection?: boolean;\n isSideTable?: boolean;\n ignoreMaxCount?: boolean;\n} & Pick<\n TableProps,\n 'RowComponent' | 'virtuosoItemSize'\n >;\n","import { useMemo } from 'react';\nimport { useGetUserInfos } from 'src/hooks/userGetUserInfo';\nimport { SHIMMERING_DIV_HEIGHT_SINGLE_PURCHASE } from 'src/tables/PurchaseTable/PurchaseTable.types';\nimport { TableShimmeringDiv } from 'src/tables/Table';\nimport { Commission } from 'src/WebApiController';\n\ninterface CommissionsCellProps {\n commissions: Commission[] | null;\n}\n\nexport const CommissionsCell = ({ commissions }: CommissionsCellProps) => {\n const usersIds = useMemo(\n () => (commissions ?? [])?.map((commission) => commission.buyerUserId),\n [commissions]\n );\n\n const { isLoading: isLoadingUsers, data: usersMap } =\n useGetUserInfos(usersIds);\n\n return useMemo(() => {\n if (!commissions) {\n return null;\n }\n\n if (isLoadingUsers || !usersMap) {\n return (\n \n );\n }\n\n return commissions\n .map(\n (commission: Commission) =>\n `${usersMap[commission.buyerUserId]?.name} ${(\n commission.commissionPercentage * 100\n ).toFixed(2)}%`\n )\n .join(', ');\n }, [commissions, isLoadingUsers, usersMap]);\n};\n","import { useCallback, useContext } from 'react';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { IconButton } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { ModalContext } from 'src/contexts/ModalContext/ModalContext';\nimport { vars } from 'src/core/themes';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport { OpenLinkIcon } from 'src/svgs/OpenLinkIcon';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getPurchaseOrderDeepLinkUrl,\n getPurchaseOrderDetailsModalConfigWithDeepLink,\n getPurchaseOrderRelativeUrl,\n} from 'src/utils/purchaseUtils';\nimport { PurchaseOrderDetails } from 'src/WebApiController';\n\nexport const PurchaseActionsCell = ({\n purchaseOrderId,\n linkOnly,\n}: {\n purchaseOrderId: number;\n linkOnly?: boolean;\n}) => {\n const { setActivePosEntity } =\n useActivePosEntityContext();\n const { setModal } = useContext(ModalContext);\n const { mainRoute } = useAppContext();\n const navigate = useNavigate();\n\n const onViewClick = useCallback(\n async (newTab: boolean) => {\n if (newTab) {\n window.open(getPurchaseOrderDeepLinkUrl(purchaseOrderId), '_blank');\n } else if (mainRoute === MainRoute.Purchases) {\n setActivePosEntity(purchaseOrderId, undefined, true);\n setModal(\n getPurchaseOrderDetailsModalConfigWithDeepLink(purchaseOrderId)\n );\n } else {\n navigate(getPurchaseOrderRelativeUrl(purchaseOrderId));\n }\n },\n [setActivePosEntity, purchaseOrderId, setModal, mainRoute, navigate]\n );\n\n return (\n {\n if (e.button === 0 && e.getModifierState('Control') === false) {\n // Perform like a button click when it's a left-click (and no Ctrl)\n // Else the click will be whatever does\n e.preventDefault();\n e.stopPropagation();\n\n onViewClick(!!linkOnly);\n }\n }}\n >\n \n }\n titleContentId={ContentId.ViewDetails}\n />\n \n );\n};\n","import { useMemo } from 'react';\nimport { isCancelledState } from 'src/utils/purchaseUtils';\nimport { PurchaseOrder } from 'src/WebApiController';\n\nimport * as styles from './PurchaseTableColumnsConfig.css';\n\ntype PurchaseCellProps = Pick<\n PurchaseOrder,\n 'vendor' | 'vendOrdId' | 'poState'\n>;\n\nexport function PurchaseIdCell({\n vendor,\n vendOrdId,\n poState,\n}: PurchaseCellProps) {\n const isCancelled = isCancelledState(poState);\n\n const titleText = useMemo(() => {\n let text = `#${vendOrdId}`;\n if (vendor) {\n text += ` - ${vendor.name}`;\n }\n return text;\n }, [vendOrdId, vendor]);\n\n return (\n
    \n
    \n #{vendOrdId}\n {vendor?.name}\n
    \n {isCancelled && (\n
    \n {poState}\n
    \n )}\n
    \n );\n}\n","import {\n ColumnDef,\n createColumnHelper,\n FilterFnOption,\n} from '@tanstack/react-table';\nimport { format, startOfDay, startOfMonth } from 'date-fns';\nimport { useCallback, useContext, useMemo } from 'react';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { IconButton } from 'src/components/Buttons';\nimport { MultiSelectAll } from 'src/components/common/MultiSelect/MultiSelectAll';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { EventDateDisplay } from 'src/components/Events/EventInfo';\nimport { ListingNotesDisplay } from 'src/components/Listings/ListingDisplay/ListingNotesDisplay';\nimport { CommissionsCell } from 'src/components/Purchases/CommissionsCell';\nimport { TagValueDisplay } from 'src/components/TagsFormBody/TagValueCell';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport {\n COLUMN_DEFAULT_SIZE_BASE,\n COLUMN_DEFAULT_SIZE_LG,\n COLUMN_DEFAULT_SIZE_XL,\n COLUMN_DEFAULT_SIZE_XS,\n COLUMN_MAX_SIZE,\n COLUMN_MIN_SIZE,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport {\n NO_GROUP_ID,\n TableRow,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport * as PosCollapsible from 'src/core/POS/PosCollapsible';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { CopyToClipboardV2 } from 'src/core/ui/CopyToClipboard/CopyToClipboardV2';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { useColumnUserSetting } from 'src/hooks/useColumnUserSetting';\nimport { useMapDeliveryTypesToString } from 'src/hooks/useMapDeliveryTypesToString';\nimport { getUserDisplayName, useGetUserInfos } from 'src/hooks/userGetUserInfo';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport {\n FormatOption,\n FormatOption_Seating,\n FormatOptionEntries,\n} from 'src/modals/EditTableColumns';\nimport { LaunchDownloadUserDocuments } from 'src/modals/PurchaseWizard/LaunchDownloadUserDocuments';\nimport { PredeliveryActionsDropdown } from 'src/modals/PurchaseWizard/PurchaseTicketsFlow/components/PredeliveryActionsDropdown';\nimport { UploadPredeliveryAction } from 'src/modals/PurchaseWizard/PurchaseTicketsFlow/purchaseTicketsFlow.utils';\nimport { TicketGroupEditContext } from 'src/modals/PurchaseWizard/PurchaseWizard.types';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport { OpenLinkIcon } from 'src/svgs';\nimport {\n EditIcon,\n ExpandIcon,\n ForwardIcon,\n IconsFill,\n PaymentSize,\n UploadIcon,\n} from 'src/svgs/Viagogo';\nimport { SEATING_SORTING_FN_NAME } from 'src/tables/common/hooks/useSeatingColumnSorting';\nimport { CustomNumericCell } from 'src/tables/ListingTable/configs/CustomNumericCell';\nimport { PurchaseActionsCell } from 'src/tables/PurchaseTable/configs/PurchaseActionsCell';\nimport { SeatInfoContainer, TableShimmeringDiv } from 'src/tables/Table';\nimport { PurchasesTableColumnId } from 'src/utils/columns/purchases/purchasesColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n PURCHASE_PAYMENT_STATUS_TO_CID,\n PURCHASE_TABLE_COLUMN_ID_TO_CONTENT_ID,\n QUALITY_CONTROL_STATE_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { stringToUtcDate } from 'src/utils/dateTimeUtils';\nimport { isInFullPageEventView } from 'src/utils/deepLinkUtils';\nimport {\n EVENT_TYPE_PARKING,\n getEventPerformerVenue,\n lookupEventInCatalog,\n} from 'src/utils/eventWithDataUtils';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\nimport { getPaymentMethodIcon } from 'src/utils/paymentMethodUtils';\nimport { posField } from 'src/utils/posFieldUtils';\nimport {\n combineWithTicketGroupId,\n formatConversionRate,\n getPurchaseOrderDeepLinkUrl,\n getPurchaseOrderDetailsModalConfigWithDeepLink,\n getPurchaseOrderRelativeUrl,\n} from 'src/utils/purchaseUtils';\nimport {\n filterSeatingSectionFn,\n filterSeatRangeFn,\n filterSeatTraitsFn,\n filterStringMultiSelect,\n sortGeneric,\n sortMoney,\n sortSeatingSeatsForTable,\n} from 'src/utils/tableUtils';\nimport { getDeliveryTypeIcon } from 'src/utils/ticketTypeUtils';\nimport {\n SECTION_TYPE_TO_PRECISION_SETTING,\n SectionType,\n} from 'src/utils/types/sectionType';\nimport {\n Commission,\n DeliveryType,\n Event,\n Feature,\n ListingNote,\n PurchaseOrderDetails,\n PurchaseOrderTicketGroup,\n PurchasePaymentStatus,\n QualityControlState,\n Seating,\n TagsValueType,\n TicketGroupEditReason,\n} from 'src/WebApiController';\n\nimport { SHIMMERING_DIV_HEIGHT_SINGLE_PURCHASE } from '../PurchaseTable.types';\nimport { PurchaseIdCell } from './PurchaseIdCell';\nimport * as styles from './PurchaseTableColumnsConfig.css';\n\nconst getSeating = (\n purchaseOrderTicketGroup: PurchaseOrderTicketGroup | null\n): Seating | null => {\n if (!purchaseOrderTicketGroup) {\n return null;\n }\n const ticketGroupToGetSeating = purchaseOrderTicketGroup.isTktGrp\n ? purchaseOrderTicketGroup\n : purchaseOrderTicketGroup.ticketGroupItems?.[0];\n\n if (ticketGroupToGetSeating?.seating == null) {\n return null;\n }\n\n return ticketGroupToGetSeating.seating;\n};\n\nconst columnHelper = createColumnHelper();\n\nexport const PURCHASE_TABLE_COLUMNS_CONFIG: ColumnDef<\n PurchaseOrderTicketGroup | null,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any\n>[] = [\n columnHelper.accessor((data) => (data ? data : null), {\n id: PurchasesTableColumnId.Checkbox,\n enableSorting: false,\n enableResizing: false,\n header: (props) => {\n return props.table.options.meta?.showSelectAllCheckbox ? (\n \n \n \n ) : (\n ''\n );\n },\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_DEFAULT_SIZE_BASE,\n maxSize: COLUMN_DEFAULT_SIZE_BASE,\n cell: function Cell({\n row: { id, original, getIsSelected, depth, getCanSelectSubRows },\n table,\n }) {\n const {\n setShiftKeyRowSelectionState,\n isNoGroupIdSet,\n shouldHideCheckboxes,\n } = useMultiSelectionContext();\n if (!original || !original.poDate) {\n return (\n \n );\n }\n\n // We don't want to display this if the row is a ticket group\n if (\n original.isTktGrp &&\n table.options.meta?.sectionType !== SectionType.PurchaseEvent &&\n table.options.meta?.sectionType !== SectionType.PurchaseSideTable\n ) {\n return null;\n }\n\n const canSelect = getCanSelectSubRows() || depth === 0;\n return canSelect ? (\n \n {\n if (!original.poDate) {\n return;\n }\n let groupId = NO_GROUP_ID; // List View\n if (!isNoGroupIdSet()) {\n // Event View (TicketGroups)\n if (\n original.isTktGrp &&\n original.tgId &&\n original.viagVirtualId\n ) {\n groupId = original.viagVirtualId;\n } else {\n // Time View\n const startOfMonthDate = startOfDay(\n startOfMonth(stringToUtcDate(original.poDate))\n );\n groupId = format(startOfMonthDate, \"yyyy-MM-dd'T00:00:00'\");\n }\n }\n setShiftKeyRowSelectionState(\n id,\n table.getRowModel().rows as unknown as TableRow[],\n groupId\n );\n }}\n />\n \n ) : null;\n },\n }),\n columnHelper.accessor((data) => (data ? data : null), {\n id: PurchasesTableColumnId.AccordianToggle,\n enableSorting: false,\n header: '',\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_XS,\n minSize: COLUMN_DEFAULT_SIZE_XS,\n maxSize: COLUMN_DEFAULT_SIZE_XS,\n meta: {\n styleOverrides: { padding: 0 },\n },\n cell: ({\n row: { original, toggleExpanded, getCanExpand, getIsExpanded },\n }) => {\n const canExpand = getCanExpand();\n const isExpanded = getIsExpanded();\n const Icon = isExpanded ? ExpandIcon : ForwardIcon;\n\n if (original?.isTktGrp) {\n return null;\n }\n\n return (\n \n \n {canExpand && (\n {\n e.stopPropagation();\n e.preventDefault();\n toggleExpanded(!isExpanded);\n }}\n />\n )}\n \n \n );\n },\n }),\n columnHelper.accessor((data) => (data ? data.poDate || '' : null), {\n id: PurchasesTableColumnId.PurchaseDate,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n enableSorting: true,\n cell: function Cell({\n getValue,\n row: { original },\n table: {\n options: { meta },\n },\n column,\n }) {\n const columnId = column.id;\n const value = getValue();\n const rowSupportsAccordion = meta?.rowSupportsAccordion;\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n meta?.sectionType || SectionType.Purchases\n );\n const { timeZone } = useSiteTimezoneContext();\n\n const date = applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n isDateTime: true,\n enableUtcFallback: true,\n timeZone,\n }) as string;\n if (!original) {\n return (\n \n );\n }\n\n // We don't want to display this if the row is a ticket group\n if (\n original.isTktGrp &&\n meta?.sectionType !== SectionType.PurchaseEvent &&\n meta?.sectionType !== SectionType.PurchaseSideTable\n ) {\n return null;\n }\n\n return (\n \n \n {rowSupportsAccordion && (\n e.stopPropagation()}\n className={styles.purchaseOrderTableCollapseTrigger}\n FoldIcon={ExpandIcon}\n ExpandIcon={ForwardIcon}\n iconSize={vars.iconSize.s}\n />\n )}\n {value == null ? (\n \n ) : (\n
    {date}
    \n )}\n
    \n
    \n );\n },\n sortingFn: 'datetime',\n }),\n columnHelper.accessor((data) => (data ? data : null), {\n id: PurchasesTableColumnId.VendorOrderId,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original }, table }) => {\n // We don't want to display this if the row is a ticket group\n if (\n original?.isTktGrp &&\n table.options.meta?.sectionType !== SectionType.PurchaseEvent &&\n table.options.meta?.sectionType !== SectionType.PurchaseSideTable\n ) {\n return null;\n }\n\n const value = getValue();\n if (value == null) {\n return (\n \n );\n }\n\n const rawIdOnly =\n table.options.meta?.formatOptionOverrides?.[\n PurchasesTableColumnId.VendorOrderId\n ] === FormatOption.Id_RawIdOnly;\n\n return (\n \n \n \n \n \n \n \n );\n },\n }),\n columnHelper.accessor((data) => (data ? data.delivType : null), {\n id: PurchasesTableColumnId.Shipment,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const delivType = getValue();\n const strDelivType = useMapDeliveryTypesToString({\n deliveryTypesObj: {\n delivType,\n },\n });\n\n if (!original) {\n return (\n \n );\n }\n if (!delivType) return null;\n const icon = getDeliveryTypeIcon(delivType, null, IconsFill.textStrong);\n return (\n \n {icon}\n \n );\n },\n }),\n columnHelper.accessor((data) => (data ? data.tktGrpCnt : null), {\n id: PurchasesTableColumnId.Orders,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original }, table }) => {\n const value = getValue();\n if (!original) {\n return (\n \n );\n }\n\n // We don't want to display this if the row is a ticket group\n if (\n original.isTktGrp &&\n table.options.meta?.sectionType !== SectionType.PurchaseEvent &&\n table.options.meta?.sectionType !== SectionType.PurchaseSideTable\n ) {\n return null;\n }\n return {value ?? 0};\n },\n }),\n columnHelper.accessor((data) => (data ? data.ticketCnt : null), {\n id: PurchasesTableColumnId.Tickets,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue();\n if (!original) {\n return (\n \n );\n }\n return {value ?? 0};\n },\n }),\n columnHelper.accessor((data) => (data ? data.pmtMethod : null), {\n id: PurchasesTableColumnId.Payment,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original }, table }) => {\n const value = getValue();\n if (!original) {\n return (\n \n );\n }\n\n // We don't want to display this if the row is a ticket group\n if (\n original.isTktGrp &&\n table.options.meta?.sectionType !== SectionType.PurchaseEvent &&\n table.options.meta?.sectionType !== SectionType.PurchaseSideTable\n ) {\n return null;\n }\n if (!value) return null;\n const PurchaseMethodIcon = getPaymentMethodIcon(value);\n return (\n \n \n \n );\n },\n }),\n columnHelper.accessor((data) => (data ? data.totalCst : null), {\n id: PurchasesTableColumnId.Cost,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue }) => {\n const value = getValue();\n if (value == null) {\n return (\n \n );\n }\n return {value.disp};\n },\n sortingFn: sortMoney,\n }),\n columnHelper.accessor((data) => (data ? data.totalPmt : null), {\n id: PurchasesTableColumnId.TotalPayment,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue();\n if (original == null) {\n return (\n \n );\n }\n return {value?.disp};\n },\n sortingFn: sortMoney,\n }),\n columnHelper.accessor((data) => (data ? data.totalConvertedPmt : null), {\n id: PurchasesTableColumnId.TotalConvertedPayment,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue();\n if (original == null) {\n return (\n \n );\n }\n return {value?.disp};\n },\n sortingFn: sortMoney,\n }),\n columnHelper.accessor((data) => (data ? data.pmtConvRate : null), {\n id: PurchasesTableColumnId.PaymentConversionRate,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue();\n if (original == null) {\n return (\n \n );\n }\n return (\n \n {formatConversionRate(\n value,\n original.totalPmt?.currency,\n original.totalConvertedPmt?.currency\n )}\n \n );\n },\n sortingFn: sortMoney,\n }),\n columnHelper.accessor((data) => (data ? data.pmtStat : null), {\n id: PurchasesTableColumnId.PaymentStatus,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original }, table }) => {\n // We don't want to display this if the row is a ticket group\n if (\n original?.isTktGrp &&\n table.options.meta?.sectionType !== SectionType.PurchaseEvent &&\n table.options.meta?.sectionType !== SectionType.PurchaseSideTable\n ) {\n return null;\n }\n\n const value = getValue();\n if (value == null) {\n return (\n \n );\n }\n\n return (\n \n \n \n );\n },\n }),\n columnHelper.accessor((data) => (data ? (data.qcState ?? null) : undefined), {\n id: PurchasesTableColumnId.QualityControlState,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original }, table }) => {\n // We don't want to display this if the row is a ticket group\n if (\n original?.isTktGrp &&\n table.options.meta?.sectionType !== SectionType.PurchaseEvent &&\n table.options.meta?.sectionType !== SectionType.PurchaseSideTable\n ) {\n return null;\n }\n\n const value = getValue() as QualityControlState;\n if (value === undefined) {\n return (\n \n );\n }\n return (\n \n \n \n );\n },\n }),\n columnHelper.accessor((data) => (data ? data.buyerId || '' : null), {\n id: PurchasesTableColumnId.BuyerUserId,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n enableSorting: true,\n cell: function Cell({ getValue, row: { original }, table }) {\n const { allActiveUserInfos, allUserInfos } = useSellerAccountContext();\n const sellerUserId = getValue();\n const displayNamesFormatted = useMemo(\n () =>\n sellerUserId ? allActiveUserInfos?.[sellerUserId]?.displayName : null,\n [allActiveUserInfos, sellerUserId]\n );\n if (!original) {\n return (\n \n );\n }\n\n // We don't want to display this if the row is a ticket group\n if (\n original.isTktGrp &&\n table.options.meta?.sectionType !== SectionType.PurchaseEvent &&\n table.options.meta?.sectionType !== SectionType.PurchaseSideTable\n ) {\n return null;\n }\n return {displayNamesFormatted};\n },\n }),\n columnHelper.display({\n id: PurchasesTableColumnId.Actions,\n enableSorting: false,\n enableResizing: true,\n header: function Cell() {\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n\n if (hasTablePinActionColumnFeature) {\n return null;\n }\n\n return (\n \n \n \n );\n },\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ row: { original }, table }) {\n const { setActivePosEntity } =\n useActivePosEntityContext();\n const { setModal } = useContext(ModalContext);\n const { mainRoute } = useAppContext();\n const navigate = useNavigate();\n\n const onAmendTickets = useCallback(\n (ticketGroupEditContext?: Partial) => {\n const ticketGroupId = original?.isTktGrp\n ? original!.tgId!\n : original?.ticketGroupItems?.[0]?.tgId;\n setActivePosEntity(original!.id, undefined, true);\n ticketGroupId &&\n setModal(\n getPurchaseOrderDetailsModalConfigWithDeepLink(\n combineWithTicketGroupId(original!.id, {\n ...ticketGroupEditContext,\n ticketGroupId,\n editIntention: TicketGroupEditReason.AmendTickets,\n })\n )\n );\n },\n [original, setActivePosEntity, setModal]\n );\n\n const ticketGroupNavId = useMemo(() => {\n const ticketGroupId = original?.isTktGrp\n ? original!.tgId!\n : original?.ticketGroupItems?.[0]?.tgId;\n\n return (\n original &&\n ticketGroupId &&\n combineWithTicketGroupId(original.id, {\n ticketGroupId: ticketGroupId,\n })\n );\n }, [original]);\n\n const onViewTicketGroup = useCallback(\n (newTab: boolean) => {\n const inFullPageEventView = isInFullPageEventView(mainRoute);\n if (ticketGroupNavId) {\n if (newTab) {\n window.open(\n getPurchaseOrderDeepLinkUrl(ticketGroupNavId),\n '_blank'\n );\n } else if (\n mainRoute === MainRoute.Purchases ||\n inFullPageEventView\n ) {\n setActivePosEntity(original!.id, undefined, true);\n setModal(\n getPurchaseOrderDetailsModalConfigWithDeepLink(ticketGroupNavId)\n );\n } else {\n navigate(getPurchaseOrderRelativeUrl(ticketGroupNavId));\n }\n } else {\n if (newTab) {\n window.open(getPurchaseOrderDeepLinkUrl(original!.id), '_blank');\n } else {\n setActivePosEntity(original!.id, undefined, true);\n setModal(\n getPurchaseOrderDetailsModalConfigWithDeepLink(original!.id)\n );\n }\n }\n },\n [\n mainRoute,\n navigate,\n original,\n setActivePosEntity,\n setModal,\n ticketGroupNavId,\n ]\n );\n\n if (!original) {\n return (\n \n );\n }\n\n const linkOnly =\n table.options.meta?.formatOptionOverrides?.[\n PurchasesTableColumnId.Actions\n ] === FormatOption.Actions_LinkOnly;\n\n let predeliveryActions = null;\n const ticketGroup = original.isTktGrp\n ? original\n : original.ticketGroupItems?.[0];\n\n if (!linkOnly && ticketGroup) {\n predeliveryActions = (\n \n }\n />\n }\n ticketGroup={{ tickets: posField(ticketGroup.tickets) }}\n onPredeliveryAction={(\n uploadPredeliveryAction: UploadPredeliveryAction\n ) => {\n onAmendTickets({\n additionalData: {\n amendActionData: {\n uploadPredeliveryAction: uploadPredeliveryAction,\n },\n },\n });\n }}\n />\n );\n }\n\n if (\n original.isTktGrp ||\n (table.options.meta?.sectionType !== SectionType.PurchaseEvent &&\n table.options.meta?.sectionType !== SectionType.PurchaseSideTable)\n ) {\n return (\n \n \n {!linkOnly && ticketGroupNavId && (\n <>\n }\n onClick={() => onAmendTickets()}\n titleContentId={ContentId.AmendTickets}\n />\n {ticketGroup?.canGetDocArts ? (\n \n ) : (\n predeliveryActions\n )}\n \n )}\n {\n if (\n e.button === 0 &&\n e.getModifierState('Control') === false\n ) {\n // Perform like a button click when it's a left-click (and no Ctrl)\n // Else the click will be whatever
    does\n e.preventDefault();\n e.stopPropagation();\n\n onViewTicketGroup(!!linkOnly);\n }\n }}\n >\n \n }\n titleContentId={ContentId.ViewDetails}\n />\n \n \n \n );\n }\n return (\n \n {original.ticketGroupItems?.length === 1 && (\n <>\n {ticketGroup?.canGetDocArts ? (\n \n ) : (\n predeliveryActions\n )}\n \n )}\n \n \n );\n },\n }),\n columnHelper.accessor((data) => (data ? data.vendAcc?.email || '' : null), {\n id: PurchasesTableColumnId.VendorAccountEmail,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n enableSorting: true,\n cell: function Cell({ getValue, row: { original }, table }) {\n const vendorAccountEmail = getValue() as string;\n\n if (!original) {\n return (\n \n );\n }\n\n // We don't want to display this if the row is a ticket group\n if (\n original.isTktGrp &&\n table.options.meta?.sectionType !== SectionType.PurchaseEvent &&\n table.options.meta?.sectionType !== SectionType.PurchaseSideTable\n ) {\n return null;\n }\n\n return {vendorAccountEmail};\n },\n sortingFn: sortGeneric,\n }),\n columnHelper.accessor((data) => (data ? data.insertBy || '' : null), {\n id: PurchasesTableColumnId.CreatedBy,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original }, table }) {\n const deactivatedText = useContent(ContentId.Deactivated);\n const insertByUserId = getValue() as string;\n const getUserInfosQuery = useGetUserInfos([insertByUserId]);\n\n const displayUserName = useMemo(() => {\n const user = insertByUserId\n ? getUserInfosQuery.data?.[insertByUserId]\n : undefined;\n\n return user ? getUserDisplayName(user, deactivatedText) : '';\n }, [deactivatedText, getUserInfosQuery.data, insertByUserId]);\n\n if (!original) {\n return (\n \n );\n }\n\n // We don't want to display this if the row is a ticket group\n if (\n original.isTktGrp &&\n table.options.meta?.sectionType !== SectionType.PurchaseEvent &&\n table.options.meta?.sectionType !== SectionType.PurchaseSideTable\n ) {\n return null;\n }\n\n return {displayUserName};\n },\n }),\n columnHelper.accessor((data) => data, {\n id: PurchasesTableColumnId.Event,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const multipleText = useContent(ContentId.Multiple);\n const purchaseOrder = getValue();\n const { data } = useCatalogDataContext();\n\n if (!original) {\n return (\n \n );\n }\n\n let displayText: string | null | undefined = null;\n let displayTitle: string | null | undefined = null;\n const { ticketGroupItems, isMultEv, isTktGrp, viagVirtualId } =\n purchaseOrder;\n\n const isValidTicketGroups =\n ticketGroupItems != null && ticketGroupItems.length > 1;\n\n const getEventDisplayName = (event: Event | null | undefined) => {\n if (event?.eventType === EVENT_TYPE_PARKING) {\n // In this case we don't want to show the parking icon to keep the cell plan text, so just display full name\n return event?.name;\n }\n return event?.shortName || event?.name;\n };\n\n const { event, performer, venue } = getEventPerformerVenue(\n viagVirtualId,\n data\n );\n const {\n event: firstTgEvent,\n performer: firstTgPerf,\n venue: firstTgVenue,\n } = getEventPerformerVenue(ticketGroupItems?.[0]?.viagVirtualId, data);\n\n const eventDisplayName = getEventDisplayName(event?.event);\n const firstTgEventDisplayName = getEventDisplayName(firstTgEvent?.event);\n\n const performerDisplayName = performer?.shortName || performer?.name;\n const firstTgPerformerDisplayName =\n firstTgPerf?.shortName || firstTgPerf?.name;\n\n if (isTktGrp && event) {\n displayText = eventDisplayName;\n displayTitle = event.event.name;\n } else if (isValidTicketGroups) {\n const ticketGroupItemHasPerformer = !!firstTgPerf?.name;\n\n const performerName =\n performerDisplayName || firstTgPerformerDisplayName;\n const performerFullName = performer?.name || performer?.shortName;\n\n const eventName = eventDisplayName || firstTgEventDisplayName;\n const eventFullName = event?.event?.name || firstTgEvent?.event?.name;\n\n // Performer field is not consitantly populated. We'll fallback to event name if performer is not available\n const displayName = ticketGroupItemHasPerformer\n ? performerName\n : eventName;\n const displayFullName = ticketGroupItemHasPerformer\n ? performerFullName\n : eventFullName;\n\n // If it's not multiple events we can skip additional checks\n if (!isMultEv) {\n displayText = displayName\n ? `${displayName} (${multipleText})`\n : multipleText;\n displayTitle = displayFullName\n ? `${displayFullName} (${multipleText})`\n : multipleText;\n } else {\n const allEventsSameName = ticketGroupItemHasPerformer\n ? ticketGroupItems?.every((tg) => tg.perfId === firstTgPerf?.viagId)\n : ticketGroupItems?.every((tg) => {\n const tgEv = lookupEventInCatalog(data, tg.viagVirtualId);\n return tgEv?.event?.name === firstTgEvent?.event?.name;\n });\n\n displayText =\n allEventsSameName && displayName\n ? `${displayName} (${multipleText})`\n : multipleText;\n displayTitle =\n allEventsSameName && displayFullName\n ? `${displayFullName} (${multipleText})`\n : multipleText;\n }\n } else if (event != null) {\n displayText = eventDisplayName;\n displayTitle = event?.event?.name;\n }\n\n return (\n \n {displayText}\n \n );\n },\n }),\n columnHelper.accessor((data) => data, {\n id: PurchasesTableColumnId.Venue,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const purchaseOrder = getValue();\n const multipleText = useContent(ContentId.Multiple);\n const { data } = useCatalogDataContext();\n\n if (!original) {\n return (\n \n );\n }\n\n const { ticketGroupItems, isMultEv, tktGrpCnt, isTktGrp, viagVirtualId } =\n purchaseOrder;\n\n const { venue } = getEventPerformerVenue(viagVirtualId, data);\n\n const isMultipleEvents = isMultEv || tktGrpCnt > 1;\n\n const isValidTicketGroups =\n ticketGroupItems != null && ticketGroupItems.length > 1;\n\n let displayText: string | null = null;\n let displayTitle: string | null = null;\n\n if (isTktGrp && venue != null) {\n displayText = venue.shortName || venue.name;\n displayTitle = venue.name;\n } else if (isValidTicketGroups) {\n const { venue: firstTgVenue } = getEventPerformerVenue(\n ticketGroupItems?.[0]?.viagVirtualId,\n data\n );\n\n const venueName =\n venue?.shortName ||\n venue?.name ||\n firstTgVenue?.shortName ||\n firstTgVenue?.name;\n const venueFullName = venue?.name || firstTgVenue?.name;\n\n // If it's not multiple events then that means venue is the same. We can skip additional checks\n if (!isMultipleEvents) {\n displayText = venueName ? venueName : multipleText;\n displayTitle = venueFullName ? venueFullName : multipleText;\n } else {\n const allEventsSameVenue = ticketGroupItems?.every(\n (tg) => tg.venId === firstTgVenue?.viagId\n );\n\n displayText =\n allEventsSameVenue && venueName ? venueName : multipleText;\n displayTitle =\n allEventsSameVenue && venueFullName ? venueFullName : multipleText;\n }\n } else if (venue != null) {\n displayText = venue.shortName || venue.name;\n displayTitle = venue.name;\n }\n\n if (displayText == null) {\n return null;\n }\n\n return (\n \n {displayText}\n \n );\n },\n }),\n columnHelper.accessor((data) => data, {\n id: PurchasesTableColumnId.EventDate,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original }, table }) {\n const purchaseOrder = getValue();\n const multipleText = useContent(ContentId.Multiple);\n const { data } = useCatalogDataContext();\n\n if (!original) {\n return (\n \n );\n }\n\n if (!purchaseOrder.isTktGrp && purchaseOrder.isMultEv) {\n return {multipleText};\n }\n\n const event = lookupEventInCatalog(data, purchaseOrder.viagVirtualId);\n if (event?.event == null) {\n return null;\n }\n\n const dates = event.event.dates;\n\n const customPrecision =\n table.options.meta?.formatOptionOverrides?.[\n PurchasesTableColumnId.EventDate\n ];\n\n const date = customPrecision\n ? (applyNumberFormatting({\n precision: customPrecision,\n inputNumber: dates?.start,\n isDateTime: true,\n }) as string)\n : undefined;\n\n return (\n \n {date ? (\n \n {date}\n \n ) : (\n \n )}\n \n );\n },\n }),\n columnHelper.accessor(\n (purchaseOrder) => {\n const seating = getSeating(purchaseOrder);\n\n if (seating == null) {\n return null;\n }\n\n return {\n seating,\n };\n },\n {\n id: PurchasesTableColumnId.Seating,\n header: function Header({\n table: {\n options: { meta },\n },\n column,\n }) {\n const seatingText = useContent(\n PURCHASE_TABLE_COLUMN_ID_TO_CONTENT_ID[PurchasesTableColumnId.Seating]\n );\n const sectionText = useContent(ContentId.Section);\n const { userDefinedPrecision } = useColumnUserSetting(\n column.id,\n meta?.sectionType || SectionType.PurchaseEvent\n );\n\n const isSectionOnly =\n userDefinedPrecision === FormatOption.Seating_SectionOnly;\n return (\n \n \n {isSectionOnly ? `${seatingText} (${sectionText})` : seatingText}\n \n \n );\n },\n enableColumnFilter: true,\n filterFn:\n filterSeatingSectionFn as FilterFnOption,\n meta: {\n uniqueValueVariant: 'seatingSection',\n },\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n table: {\n options: { meta },\n },\n row: { original },\n column,\n }) {\n const purchaseOrder = original;\n const multipleText = useContent(ContentId.Multiple);\n const columnId = column.id;\n const hasSeatTraitsColumnFeature = useUserHasFeature(\n Feature.SeatTraitsColumn\n );\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n meta?.sectionType || SectionType.PurchaseEvent\n );\n\n if (!purchaseOrder) {\n return (\n \n );\n }\n\n if (\n !purchaseOrder.isTktGrp &&\n (purchaseOrder.isMultEv || purchaseOrder.tktGrpCnt > 1)\n ) {\n return {multipleText};\n }\n\n const ticketGroupToGetSeating = purchaseOrder.isTktGrp\n ? purchaseOrder\n : purchaseOrder.ticketGroupItems?.[0];\n\n if (ticketGroupToGetSeating?.seating == null) {\n return null;\n }\n\n const { seating, seatTraits: listingNotes } = ticketGroupToGetSeating;\n const adjustedSeating =\n userDefinedPrecision === FormatOption_Seating.Seating_SectionOnly\n ? {\n ...seating,\n row: null,\n seatFr: null,\n seatTo: null,\n }\n : seating;\n\n return (\n \n \n {!hasSeatTraitsColumnFeature && listingNotes?.length ? (\n \n ) : null}\n \n );\n },\n sortingFn: SEATING_SORTING_FN_NAME,\n }\n ),\n columnHelper.accessor((data) => getSeating(data)?.row ?? '', {\n id: PurchasesTableColumnId.Row,\n header: () => (\n \n \n \n ),\n enableColumnFilter: true,\n filterFn:\n filterStringMultiSelect as FilterFnOption,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original: purchaseOrder } }) {\n const multipleText = useContent(ContentId.Multiple);\n if (!purchaseOrder) {\n return (\n \n );\n }\n\n if (\n !purchaseOrder.isTktGrp &&\n (purchaseOrder.isMultEv || purchaseOrder.tktGrpCnt > 1)\n ) {\n return {multipleText};\n }\n\n const ticketGroupToGetSeating = purchaseOrder.isTktGrp\n ? purchaseOrder\n : purchaseOrder.ticketGroupItems?.[0];\n\n if (ticketGroupToGetSeating?.seating == null) {\n return null;\n }\n\n const { seating } = ticketGroupToGetSeating;\n return {seating.row};\n },\n sortingFn: sortGeneric,\n }),\n columnHelper.accessor((data) => getSeating(data), {\n id: PurchasesTableColumnId.Seats,\n header: () => (\n \n \n \n ),\n enableColumnFilter: true,\n filterFn:\n filterSeatRangeFn as FilterFnOption,\n meta: {\n columnFilterVariant: 'seatRange',\n },\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ row: { original: purchaseOrder } }) {\n const multipleText = useContent(ContentId.Multiple);\n if (!purchaseOrder) {\n return (\n \n );\n }\n\n if (\n !purchaseOrder.isTktGrp &&\n (purchaseOrder.isMultEv || purchaseOrder.tktGrpCnt > 1)\n ) {\n return {multipleText};\n }\n\n const ticketGroupToGetSeating = purchaseOrder.isTktGrp\n ? purchaseOrder\n : purchaseOrder.ticketGroupItems?.[0];\n\n if (ticketGroupToGetSeating?.seating == null) {\n return null;\n }\n\n const { seating } = ticketGroupToGetSeating;\n return (\n \n \n \n );\n },\n sortingFn: sortSeatingSeatsForTable,\n }),\n columnHelper.accessor(\n (data) => {\n const ticketGroupToGetSeating = data?.isTktGrp\n ? data\n : data?.ticketGroupItems?.[0];\n\n return ticketGroupToGetSeating?.seatTraits;\n },\n {\n id: PurchasesTableColumnId.SeatTraits,\n header: () => (\n \n \n \n ),\n enableColumnFilter: true,\n filterFn:\n filterSeatTraitsFn as FilterFnOption,\n meta: {\n uniqueValueVariant: 'seatTraits',\n },\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original: purchaseOrder } }) {\n const multipleText = useContent(ContentId.Multiple);\n if (!purchaseOrder) {\n return (\n \n );\n }\n\n if (\n !purchaseOrder.isTktGrp &&\n (purchaseOrder.isMultEv || purchaseOrder.tktGrpCnt > 1)\n ) {\n return {multipleText};\n }\n\n const listingNotes = getValue();\n\n return (\n \n {listingNotes?.length ? (\n \n ) : null}\n \n );\n },\n enableSorting: false,\n }\n ),\n columnHelper.accessor((data) => data?.commissions, {\n id: PurchasesTableColumnId.Commissions,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original: purchaseOrder } }) {\n if (!purchaseOrder) {\n return (\n \n );\n }\n\n const commissions = getValue();\n\n if (!commissions) {\n return null;\n }\n\n return (\n \n \n \n );\n },\n sortingFn: sortGeneric,\n }),\n];\nconst SECTION_TYPE = SectionType.Purchases;\n\nexport const tagColumnDef = (\n tagName: string\n): ColumnDef => ({\n id: tagName,\n header: () => (\n \n \n {tagName}\n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => {\n const tag = data?.tags?.find((t) => t.key === tagName);\n if (\n tag?.valueType === TagsValueType.Int ||\n tag?.valueType === TagsValueType.Decimal\n ) {\n return tag ? parseFloat(tag.value) : null;\n }\n return tag?.value;\n },\n cell: function Cell({ getValue, row: { original }, table }) {\n const { value: storedColumnNumberPrecisions = {} } =\n useServerUserSetting({\n id: SECTION_TYPE_TO_PRECISION_SETTING[\n table.options.meta?.sectionType ?? SECTION_TYPE\n ],\n });\n const tag = original?.tags?.find((t) => t.key === tagName);\n\n if (\n tag?.valueType === TagsValueType.Int ||\n tag?.valueType === TagsValueType.Decimal\n ) {\n const userDefinedPrecision = storedColumnNumberPrecisions[tagName];\n\n return (\n ()}\n isLoading={Boolean(!original || !original)}\n shimmeringDivHeight={SHIMMERING_DIV_HEIGHT_SINGLE_PURCHASE}\n sectionType={table.options.meta?.sectionType ?? SECTION_TYPE}\n matchingTag={tag}\n currencyCode={original?.currency}\n />\n );\n }\n\n if (!original) {\n return (\n \n );\n }\n\n if (!tag) {\n return null;\n }\n\n return (\n \n \n \n );\n },\n});\n","import {\n AccessorReturn,\n AccessorReturnType,\n} from 'src/components/Reports/ReportsExport/ReportsExport.types';\nimport { SaleReportMetricsWithGroupBy } from 'src/utils/reportsUtils';\nimport { Money, UiMoney } from 'src/WebApiController';\n\nimport { SalesReportTableColumnId } from '../../../utils/columns/sales/salesColumnUtils.types';\n\n// Only primitive types / Money / AccessorReturn are allowed for proper support from ReportsExport.utils.ts\ntype SaleReportTableAccessorFn = (\n data: SaleReportMetricsWithGroupBy | null\n) =>\n | string\n | string[]\n | number\n | number[]\n | boolean\n | Money\n | UiMoney\n | AccessorReturn\n | null\n | undefined;\n\nexport const SALE_REPORT_TABLE_COLUMNS_ACCESSOR = {\n [SalesReportTableColumnId.Performer]: (data) => data?.performer?.name ?? '',\n [SalesReportTableColumnId.Venue]: (data) => data?.venue?.name ?? '',\n [SalesReportTableColumnId.Event]: (data) => data?.event?.name ?? '',\n [SalesReportTableColumnId.EventGenre]: (data) =>\n data?.genre ?? data?.event?.genre ?? '',\n [SalesReportTableColumnId.EventCountry]: (data) =>\n data?.country?.name ?? data?.venue?.country?.name ?? '',\n [SalesReportTableColumnId.EventCity]: (data) =>\n data?.city ?? data?.venue?.city ?? '',\n [SalesReportTableColumnId.SeatingSection]: (data) => data?.section ?? '',\n [SalesReportTableColumnId.SeatingRow]: (data) => data?.row ?? '',\n [SalesReportTableColumnId.SaleMarketplace]: (data) => data?.mkp ?? '',\n [SalesReportTableColumnId.SaleMonth]: (data) => data?.saleDate ?? '',\n [SalesReportTableColumnId.SaleWeek]: (data) => data?.saleDate ?? '',\n [SalesReportTableColumnId.SaleDay]: (data) => data?.saleDate ?? '',\n [SalesReportTableColumnId.QuantitySold]: (data) => data?.qtySold ?? 0,\n [SalesReportTableColumnId.Proceeds]: (data) => data?.netProcs,\n [SalesReportTableColumnId.SoldTicketCost]: (data) => data?.soldCst,\n [SalesReportTableColumnId.CommissionPercent]: (data) =>\n data?.commission?.commissionPercentage,\n\n [SalesReportTableColumnId.CommissionShare]: (data) => data?.commssionShr,\n [SalesReportTableColumnId.OutstandingBalance]: (data) => data?.ttlOutsBal,\n [SalesReportTableColumnId.Charges]: (data) => data?.chargs,\n [SalesReportTableColumnId.Credits]: (data) => data?.creds,\n [SalesReportTableColumnId.PandL]: (data) => data?.pandL,\n [SalesReportTableColumnId.Margin]: (data) => data?.marg,\n [SalesReportTableColumnId.EventId]: (data) => data?.event?.viagId ?? '',\n [SalesReportTableColumnId.Category]: (data) =>\n data?.performer?.categ[0] ?? '',\n [SalesReportTableColumnId.EventDate]: (data) =>\n data?.event?.dates?.start ?? '',\n\n [SalesReportTableColumnId.EventStateProvince]: (data) =>\n data?.venue?.state ?? '',\n [SalesReportTableColumnId.SaleId]: (data) => data?.saleId?.toString() ?? '',\n [SalesReportTableColumnId.MarketplaceSaleId]: (data) =>\n data?.mkpSaleId ? `#${data.mkpSaleId}` : '',\n [SalesReportTableColumnId.Status]: (data) => data?.saleStatus,\n [SalesReportTableColumnId.TicketType]: (data) => data?.ticketType,\n\n [SalesReportTableColumnId.InHandDate]: (data) => data?.inHandDate,\n\n [SalesReportTableColumnId.PaymentState]: (data) => ({\n stringValueType: AccessorReturnType.STRING,\n stringValues: data?.mkpPmtState ?? data?.pmtState,\n value: {\n marketplacePaymentState: data?.mkpPmtState,\n paymentState: data?.pmtState,\n },\n }),\n [SalesReportTableColumnId.PaymentReceived]: (data) => data?.pmtRcv,\n [SalesReportTableColumnId.PaymentReferenceId]: (data) => data?.pmtRefId,\n [SalesReportTableColumnId.PricedBy]: (data) => ({\n stringValueType: AccessorReturnType.SELLER_USER_ID,\n value: data?.pricerId,\n }),\n [SalesReportTableColumnId.Fulfiller]: (data) => ({\n stringValueType: AccessorReturnType.SELLER_USER_ID,\n value: data?.fulfillerId,\n }),\n [SalesReportTableColumnId.CommissionUser]: (data) => ({\n stringValueType: AccessorReturnType.SELLER_USER_ID,\n value: data?.commission?.buyerUserId,\n }),\n [SalesReportTableColumnId.PurchaseId]: (data) => data?.poInfos?.poIds,\n [SalesReportTableColumnId.PurchasedBy]: (data) => ({\n stringValueType: AccessorReturnType.PURCHASE_BUYER_INFOS,\n value: data?.poInfos?.buyers,\n }),\n [SalesReportTableColumnId.PurchaseDate]: (data) => data?.poInfos.poDates,\n [SalesReportTableColumnId.Vendor]: (data) => {\n if (!data) return null;\n const { poInfos } = data;\n if (!poInfos?.vendors.length) return null;\n return poInfos.vendors.map((v) => v.vendorName).join(', ');\n },\n [SalesReportTableColumnId.VendorAccountEmail]: (data) => {\n if (!data) return null;\n const { poInfos } = data;\n if (!poInfos?.vendorAccs.length) return null;\n return poInfos.vendorAccs.map((v) => v.encryptedEmailAddress).join(', ');\n },\n [SalesReportTableColumnId.SeatingSeats]: (data) => {\n if (!data?.seatFr) return null;\n let text = data.seatFr;\n if (data.seatTo && data.seatTo !== data.seatFr) {\n text += ` - ${data.seatTo}`;\n }\n return text;\n },\n [SalesReportTableColumnId.OrderDate]: (data) => data?.saleDate,\n [SalesReportTableColumnId.CancellationDate]: (data) => data?.cancelDate,\n [SalesReportTableColumnId.CurrencyCode]: (data) => data?.currency ?? '',\n [SalesReportTableColumnId.InternalNotes]: (data) => data?.privNotes ?? '',\n [SalesReportTableColumnId.TicketId]: (data) =>\n data?.ticketId?.toString() ?? '',\n [SalesReportTableColumnId.TicketGroupId]: (data) => data?.tktGrId?.toString(),\n [SalesReportTableColumnId.PaymentDate]: (data) => data?.lastPmtOn,\n [SalesReportTableColumnId.FulfillmentDate]: (data) => data?.fulfillDate,\n [SalesReportTableColumnId.PurchaseCreatedBy]: (data) => ({\n stringValueType: AccessorReturnType.SELLER_USER_ID,\n value: data?.poInfos?.createdBys,\n }),\n [SalesReportTableColumnId.MarketplacePaymentTerms]: (data) =>\n data?.mkpPmtTerm,\n} satisfies Record;\n","import { DateTimeRangeWithRelative } from 'src/WebApiController';\n\nconst DAY_IN_SECONDS = 86400;\nconst TIME_BUCKET_TOTAL_COLUMN_ID = 'timeBucketTotal';\n\nexport const timeBucketToDayString = (\n timeBucket: DateTimeRangeWithRelative,\n daysText: string,\n totalText: string\n) => {\n if (\n timeBucket.relativeStartSecs == null &&\n timeBucket.relativeEndSecs == null\n ) {\n return totalText;\n }\n if (timeBucket.relativeEndSecs == null) {\n return `${Math.floor(\n timeBucket.relativeStartSecs! / DAY_IN_SECONDS\n )}+ ${daysText}`;\n }\n\n return `${Math.floor(timeBucket.relativeStartSecs! / DAY_IN_SECONDS)}-${\n Math.floor(timeBucket.relativeEndSecs! / DAY_IN_SECONDS) - 1\n } ${daysText}`;\n};\n\nexport const timeBucketToColumnId = (timeBucket: DateTimeRangeWithRelative) =>\n timeBucket.relativeStartSecs != null || timeBucket.relativeEndSecs != null\n ? `${timeBucket.relativeStartSecs ?? ''}_${\n timeBucket.relativeEndSecs ?? ''\n }`\n : TIME_BUCKET_TOTAL_COLUMN_ID;\n","import { ColumnDef, createColumnHelper } from '@tanstack/react-table';\nimport { formatInTimeZone } from 'date-fns-tz';\nimport { useMemo } from 'react';\nimport { AccessorReturn } from 'src/components/Reports/ReportsExport/ReportsExport.types';\nimport {\n COLUMN_DEFAULT_SIZE_BASE,\n COLUMN_DEFAULT_SIZE_LG,\n COLUMN_DEFAULT_SIZE_XL,\n COLUMN_MAX_SIZE,\n COLUMN_MIN_SIZE,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { useColumnUserSetting } from 'src/hooks/useColumnUserSetting';\nimport { useGetUserInfos } from 'src/hooks/userGetUserInfo';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport {\n FormatOption,\n type FormatOptionEntries,\n} from 'src/modals/EditTableColumns';\nimport { CustomColumnName } from 'src/modals/InventoryTableColumns/CustomColumnName';\nimport { createInventoryEventUrl } from 'src/navigations/Routes/InventoryEvent/InventoryEvent.utils';\nimport { IconsFill } from 'src/svgs/Viagogo';\nimport { CustomNumericCell } from 'src/tables/ListingTable/configs/CustomNumericCell';\nimport { CustomNumericFooterCell } from 'src/tables/ListingTable/configs/CustomNumericFooterCell';\nimport { LinkCell } from 'src/tables/ReportTableCommon/LinkCell';\nimport { SHIMMERING_DIV_HEIGHT_REPORT } from 'src/tables/ReportTableCommon/ReportTableCommon.constants';\nimport { TableHeader } from 'src/tables/ReportTableCommon/TableHeader';\nimport { TextCell } from 'src/tables/ReportTableCommon/TextCell';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\nimport { DateCell, InHandCell } from 'src/tables/Table/TableCells';\nimport { evaluateFormulaSaleMetrics } from 'src/utils/columns/sales/salesCustomColumnUtils';\nimport { CustomSalesColumn } from 'src/utils/columns/sales/salesCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n MARKETPLACE_PAYMENT_TERM_TO_CID,\n MARKETPLACE_SALE_PAYMENT_STATE_TO_CID,\n SALE_PAYMENT_STATE_TO_CID,\n TICKET_TYPE_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { stringToUtcDate } from 'src/utils/dateTimeUtils';\nimport {\n applyNumberFormatting,\n formatPercent,\n} from 'src/utils/numberFormatter';\nimport { getPurchaseOrderRelativeUrl } from 'src/utils/purchaseUtils';\nimport { SaleReportMetricsWithGroupBy } from 'src/utils/reportsUtils';\nimport {\n getSaleDetailsRelativeUrl,\n getSaleStatusDisplayContentId,\n getSaleStatusIcon,\n} from 'src/utils/saleUtils';\nimport { sortMoney } from 'src/utils/tableUtils';\nimport { getTicketTypeIcon } from 'src/utils/ticketTypeUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport {\n DateTimeRangeWithRelative,\n Feature,\n PointOfSaleSaleStatus,\n TagsValueType,\n TicketType,\n UiMoney,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { SalesReportTableColumnId } from '../../../utils/columns/sales/salesColumnUtils.types';\nimport { SALE_REPORT_TABLE_COLUMNS_ACCESSOR } from './SaleReportTableColumnsAccessor';\nimport {\n timeBucketToColumnId,\n timeBucketToDayString,\n} from './SaleReportTableColumnsConfig.utils';\n\nconst SECTION_TYPE = SectionType.SalesReport;\n\nexport const tagColumnDef = (\n tagName: string\n): ColumnDef => ({\n id: tagName,\n header: () => (\n \n \n {tagName}\n \n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => {\n const tag = data?.tags.find((t) => t.key === tagName);\n return tag ? parseFloat(tag.value) : null;\n },\n cell: function Cell({ getValue, row: { original } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n tagName,\n SECTION_TYPE\n );\n\n const tag = original?.tags.find((t) => t.key === tagName);\n\n return (\n ()}\n isLoading={!original}\n shimmeringDivHeight={SHIMMERING_DIV_HEIGHT_REPORT}\n sectionType={SECTION_TYPE}\n matchingTag={tag}\n currencyCode={original?.currency}\n />\n );\n },\n});\n\nexport const eventTagColumnDef = (\n tagName: string\n): ColumnDef => ({\n id: tagName,\n header: () => (\n \n \n {tagName}\n \n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => {\n const tag = data?.eventTags.find((t) => t.key === tagName);\n return tag?.value;\n },\n cell: function Cell({ getValue, row: { original } }) {\n const { value: storedColumnNumberPrecision = {} } =\n useServerUserSetting({\n id: UserSetting.SaleColumnNumberPrecision,\n });\n const tag = original?.tags.find((t) => t.key === tagName);\n\n const userDefinedPrecision = storedColumnNumberPrecision[tagName];\n\n if (!original) {\n return ;\n }\n\n if (\n tag?.valueType === TagsValueType.Decimal ||\n tag?.valueType === TagsValueType.Int\n ) {\n return (\n ()}\n isLoading={!original}\n shimmeringDivHeight={SHIMMERING_DIV_HEIGHT_REPORT}\n sectionType={SECTION_TYPE}\n matchingTag={tag}\n currencyCode={original?.currency}\n />\n );\n }\n\n return (\n \n
    {getValue()}
    \n
    \n );\n },\n});\n\nexport const arTimeBucketColumnDef = (\n timeBucket: DateTimeRangeWithRelative\n): ColumnDef => {\n return {\n id: timeBucketToColumnId(timeBucket),\n header: function Cell() {\n const daysText = useContent(ContentId.Days);\n const totalText = useContent(ContentId.Total);\n return (\n \n \n {timeBucketToDayString(timeBucket, daysText, totalText)}\n \n \n );\n },\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => {\n const timeBucketWithData = data?.timeBucketsWithData?.find(\n (t) =>\n t.timeBkt?.relativeEndSecs === timeBucket.relativeEndSecs &&\n t.timeBkt?.relativeStartSecs === timeBucket.relativeStartSecs\n );\n return timeBucketWithData?.ttlOutsBal;\n },\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n if (!value) return ;\n\n const displayValue =\n applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n }) ?? undefined;\n\n return (\n \n
    {displayValue ?? }
    \n
    \n );\n },\n sortingFn: sortMoney,\n footer: function Cell({ table, column: { accessorFn } }) {\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n\n const value = accessorFn?.(original, -1) as UiMoney | undefined;\n\n if (!value) return ;\n\n return (\n \n
    \n {applyNumberFormatting({\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })}\n
    \n
    \n );\n },\n };\n};\n\nexport const customColumnDef = (\n columnId: string,\n formula?: string | null\n): ColumnDef => ({\n id: columnId,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => {\n return formula && data ? evaluateFormulaSaleMetrics(formula, data) : null;\n },\n cell: function Cell({ getValue, row: { original } }) {\n const { value: customColumns = [] } = useServerUserSetting<\n CustomSalesColumn[]\n >({\n id: UserSetting.SaleCustomColumns,\n });\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n return (\n ()}\n isLoading={!original}\n shimmeringDivHeight={SHIMMERING_DIV_HEIGHT_REPORT}\n sectionType={SECTION_TYPE}\n matchingCustomColumn={customColumns.find((c) => c.id === columnId)}\n currencyCode={original?.currency}\n />\n );\n },\n\n footer: function Cell({ table }) {\n const { value: customColumns = [] } = useServerUserSetting<\n CustomSalesColumn[]\n >({\n id: UserSetting.SaleCustomColumns,\n });\n\n return (\n c.id === columnId)}\n sectionType={SECTION_TYPE}\n />\n );\n },\n});\n\nconst columnHelper = createColumnHelper();\n\nexport const SALE_REPORT_TABLE_COLUMNS_CONFIG = {\n [SalesReportTableColumnId.Performer]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.Performer],\n {\n id: SalesReportTableColumnId.Performer,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.Venue]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.Venue],\n {\n id: SalesReportTableColumnId.Venue,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.Event]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.Event],\n {\n id: SalesReportTableColumnId.Event,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.EventGenre]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.EventGenre],\n {\n id: SalesReportTableColumnId.EventGenre,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.EventCountry]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.EventCountry],\n {\n id: SalesReportTableColumnId.EventCountry,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.EventCity]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.EventCity],\n {\n id: SalesReportTableColumnId.EventCity,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.SeatingSection]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.SeatingSection],\n {\n id: SalesReportTableColumnId.SeatingSection,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.SeatingRow]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.SeatingRow],\n {\n id: SalesReportTableColumnId.SeatingRow,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.SaleMarketplace]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[\n SalesReportTableColumnId.SaleMarketplace\n ],\n {\n id: SalesReportTableColumnId.SaleMarketplace,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.SaleMonth]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.SaleMonth],\n {\n id: SalesReportTableColumnId.SaleMonth,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n if (!original) {\n return ;\n }\n\n const dateValue = getValue();\n\n return (\n \n
    \n {dateValue\n ? formatInTimeZone(\n stringToUtcDate(dateValue),\n 'UTC',\n 'MMMM yyyy'\n )\n : ''}\n
    \n
    \n );\n },\n }\n ),\n [SalesReportTableColumnId.SaleWeek]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.SaleWeek],\n {\n id: SalesReportTableColumnId.SaleWeek,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n if (!original) {\n return ;\n }\n\n const dateValue = getValue();\n\n const dateEndOfWeek = dateValue ? stringToUtcDate(dateValue) : null;\n if (dateEndOfWeek) {\n dateEndOfWeek.setDate(dateEndOfWeek.getDate() + 6);\n }\n\n return (\n \n
    \n {dateValue && dateEndOfWeek\n ? formatInTimeZone(\n stringToUtcDate(dateValue),\n 'UTC',\n 'yyyy/MM/dd'\n ) +\n ' - ' +\n formatInTimeZone(dateEndOfWeek, 'UTC', 'yyyy/MM/dd')\n : ''}\n
    \n
    \n );\n },\n }\n ),\n [SalesReportTableColumnId.SaleDay]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.SaleDay],\n {\n id: SalesReportTableColumnId.SaleDay,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n if (!original) {\n return ;\n }\n\n const dateValue = getValue();\n\n return (\n \n
    \n {dateValue\n ? formatInTimeZone(\n stringToUtcDate(dateValue),\n 'UTC',\n 'yyyy/MM/dd'\n )\n : ''}\n
    \n
    \n );\n },\n }\n ),\n [SalesReportTableColumnId.QuantitySold]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.QuantitySold],\n {\n id: SalesReportTableColumnId.QuantitySold,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n return (\n \n
    \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: getValue(),\n })}\n
    \n
    \n );\n },\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n const number = accessorFn?.(original, -1);\n\n return (\n \n
    \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: number,\n })}\n
    \n
    \n );\n },\n }\n ),\n [SalesReportTableColumnId.Proceeds]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.Proceeds],\n {\n id: SalesReportTableColumnId.Proceeds,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n if (!value) return ;\n\n const displayValue =\n applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n }) ?? undefined;\n\n return (\n \n
    {displayValue ?? }
    \n
    \n );\n },\n sortingFn: sortMoney,\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n\n const value = accessorFn?.(original, -1);\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n }\n ),\n [SalesReportTableColumnId.SoldTicketCost]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.SoldTicketCost],\n {\n id: SalesReportTableColumnId.SoldTicketCost,\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: (params) => (\n \n ),\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n if (!value) return ;\n\n const displayValue =\n applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n }) ?? undefined;\n\n return (\n \n
    {displayValue ?? }
    \n
    \n );\n },\n sortingFn: sortMoney,\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n\n const value = accessorFn?.(original, -1);\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n }\n ),\n [SalesReportTableColumnId.CommissionPercent]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[\n SalesReportTableColumnId.CommissionPercent\n ],\n {\n id: SalesReportTableColumnId.CommissionPercent,\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: (params) => (\n \n ),\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n if (!value) return ;\n\n const displayValue =\n applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n isPercent: true,\n }) ?? undefined;\n\n return (\n \n
    {displayValue ?? }
    \n
    \n );\n },\n }\n ),\n [SalesReportTableColumnId.CommissionShare]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[\n SalesReportTableColumnId.CommissionShare\n ],\n {\n id: SalesReportTableColumnId.CommissionShare,\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: (params) => (\n \n ),\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n if (!value) return ;\n\n const displayValue =\n applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n }) ?? undefined;\n\n return (\n \n
    {displayValue ?? }
    \n
    \n );\n },\n sortingFn: sortMoney,\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n\n const value = accessorFn?.(original, -1);\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n }\n ),\n [SalesReportTableColumnId.OutstandingBalance]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[\n SalesReportTableColumnId.OutstandingBalance\n ],\n {\n id: SalesReportTableColumnId.OutstandingBalance,\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: (params) => (\n \n ),\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n if (!value) return ;\n\n const displayValue =\n applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n }) ?? undefined;\n\n return (\n \n
    {displayValue ?? }
    \n
    \n );\n },\n sortingFn: sortMoney,\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n\n const value = accessorFn?.(original, -1);\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n }\n ),\n [SalesReportTableColumnId.Charges]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.Charges],\n {\n id: SalesReportTableColumnId.Charges,\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: (params) => (\n \n ),\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n if (!value) return ;\n\n const displayValue =\n applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n }) ?? undefined;\n\n return (\n \n
    {displayValue ?? }
    \n
    \n );\n },\n sortingFn: sortMoney,\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n\n const value = accessorFn?.(original, -1);\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n }\n ),\n [SalesReportTableColumnId.Credits]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.Credits],\n {\n id: SalesReportTableColumnId.Credits,\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: (params) => (\n \n ),\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n if (!value) return ;\n\n const displayValue =\n applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n }) ?? undefined;\n\n return (\n \n
    {displayValue ?? }
    \n
    \n );\n },\n sortingFn: sortMoney,\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n\n const value = accessorFn?.(original, -1);\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n }\n ),\n [SalesReportTableColumnId.PandL]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.PandL],\n {\n id: SalesReportTableColumnId.PandL,\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: (params) => (\n \n ),\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n if (!value) return ;\n\n const displayValue =\n applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n }) ?? undefined;\n\n return (\n \n
    {displayValue ?? }
    \n
    \n );\n },\n sortingFn: sortMoney,\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n\n const value = accessorFn?.(original, -1);\n if (!value) return ;\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: value.dec,\n })\n : (value.disp ?? )}\n
    \n
    \n );\n },\n }\n ),\n [SalesReportTableColumnId.Margin]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.Margin],\n {\n id: SalesReportTableColumnId.Margin,\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: (params) => (\n \n ),\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n if (!original) {\n return ;\n }\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n isPercent: true,\n })\n : (value ?? )}\n
    \n
    \n );\n },\n footer: function Cell({ table, column: { id: columnId, accessorFn } }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const original = table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n\n const value = accessorFn?.(original, -1);\n\n return (\n \n
    \n {userDefinedPrecision\n ? applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n isPercent: true,\n })\n : (value ?? )}\n
    \n
    \n );\n },\n }\n ),\n [SalesReportTableColumnId.EventId]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.EventId],\n {\n id: SalesReportTableColumnId.EventId,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => {\n const eventId = params.row.original?.eventId;\n if (!eventId) {\n return ;\n }\n const eventUrl = createInventoryEventUrl(eventId);\n return (\n \n );\n },\n }\n ),\n [SalesReportTableColumnId.Category]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.Category],\n {\n id: SalesReportTableColumnId.Category,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.EventDate]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.EventDate],\n {\n id: SalesReportTableColumnId.EventDate,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_MMDD_Time_Day } =\n useColumnUserSetting(columnId, SECTION_TYPE);\n\n if (!original) {\n return ;\n }\n\n return (\n \n );\n },\n }\n ),\n [SalesReportTableColumnId.EventStateProvince]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[\n SalesReportTableColumnId.EventStateProvince\n ],\n {\n id: SalesReportTableColumnId.EventStateProvince,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.SaleId]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.SaleId],\n {\n id: SalesReportTableColumnId.SaleId,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue }) => {\n const saleId = getValue();\n\n if (!saleId) {\n return ;\n }\n\n const url = getSaleDetailsRelativeUrl(saleId!);\n return (\n \n );\n },\n }\n ),\n [SalesReportTableColumnId.MarketplaceSaleId]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[\n SalesReportTableColumnId.MarketplaceSaleId\n ],\n {\n id: SalesReportTableColumnId.MarketplaceSaleId,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.Status]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.Status],\n {\n id: SalesReportTableColumnId.Status,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n\n const value = getValue() as PointOfSaleSaleStatus;\n\n // TODO: SaleReportMetricsWithGroupBy does not have allocationState. We should add it\n const saleStatusContentId = getSaleStatusDisplayContentId(value);\n\n const statusContent = useContent(saleStatusContentId ?? '');\n if (original === undefined) {\n return ;\n }\n\n const SaleStatusIcon = getSaleStatusIcon(value);\n\n return (\n \n {userDefinedPrecision === FormatOption.EnumDisplay_Icon ? (\n \n ) : (\n \n )}\n \n );\n },\n }\n ),\n [SalesReportTableColumnId.TicketType]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.TicketType],\n {\n id: SalesReportTableColumnId.TicketType,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SECTION_TYPE\n );\n const value = getValue() as TicketType;\n if (original === undefined) {\n return ;\n }\n const ticketTypeIcon = getTicketTypeIcon(value, IconsFill.textStrong);\n return (\n \n {userDefinedPrecision === FormatOption.EnumDisplay_Icon ? (\n <>{ticketTypeIcon}\n ) : (\n \n )}\n \n );\n },\n }\n ),\n [SalesReportTableColumnId.InHandDate]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.InHandDate],\n {\n id: SalesReportTableColumnId.InHandDate,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue();\n if (!original) {\n return ;\n }\n return (\n \n \n \n );\n },\n sortingFn: 'datetime',\n }\n ),\n [SalesReportTableColumnId.PaymentState]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.PaymentState],\n {\n id: SalesReportTableColumnId.PaymentState,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue }) {\n const value = getValue().value;\n\n if (value == null) {\n return ;\n }\n\n return (\n \n {value.marketplacePaymentState ? (\n \n ) : value.paymentState ? (\n \n ) : null}\n \n );\n },\n }\n ),\n [SalesReportTableColumnId.PaymentReceived]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[\n SalesReportTableColumnId.PaymentReceived\n ],\n {\n id: SalesReportTableColumnId.PaymentReceived,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue();\n if (original === undefined) {\n return ;\n }\n\n return (\n \n \n \n );\n },\n }\n ),\n [SalesReportTableColumnId.PaymentReferenceId]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[\n SalesReportTableColumnId.PaymentReferenceId\n ],\n {\n id: SalesReportTableColumnId.PaymentReferenceId,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue();\n if (original === undefined) {\n return ;\n }\n\n return {value};\n },\n }\n ),\n [SalesReportTableColumnId.PricedBy]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.PricedBy],\n {\n id: SalesReportTableColumnId.PricedBy,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const { allActiveUserInfos } = useSellerAccountContext();\n\n const pricerSellerUserId = getValue().value;\n\n const pricer = useMemo(\n () =>\n pricerSellerUserId\n ? allActiveUserInfos?.[pricerSellerUserId]?.displayName\n : null,\n [allActiveUserInfos, pricerSellerUserId]\n );\n\n if (original === undefined) {\n return ;\n }\n\n return {pricer};\n },\n }\n ),\n [SalesReportTableColumnId.Fulfiller]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.Fulfiller],\n {\n id: SalesReportTableColumnId.Fulfiller,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const { allActiveUserInfos } = useSellerAccountContext();\n\n const fulfillerId = getValue().value;\n\n const fulfiller = useMemo(\n () =>\n fulfillerId ? allActiveUserInfos?.[fulfillerId]?.displayName : null,\n [allActiveUserInfos, fulfillerId]\n );\n\n if (original === undefined) {\n return ;\n }\n\n return {fulfiller};\n },\n }\n ),\n [SalesReportTableColumnId.CommissionUser]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.CommissionUser],\n {\n id: SalesReportTableColumnId.CommissionUser,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const { allActiveUserInfos } = useSellerAccountContext();\n\n const sellerUserId = getValue().value;\n\n const commissioner = useMemo(\n () =>\n sellerUserId\n ? allActiveUserInfos?.[sellerUserId]?.displayName\n : null,\n [allActiveUserInfos, sellerUserId]\n );\n\n if (original === undefined) {\n return ;\n }\n\n return {commissioner};\n },\n }\n ),\n [SalesReportTableColumnId.PurchaseId]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.PurchaseId],\n {\n id: SalesReportTableColumnId.PurchaseId,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue }) => {\n const purchaseIds = getValue();\n\n if (!purchaseIds) {\n return ;\n }\n\n return (\n `#${purchaseId}`)}\n url={purchaseIds.map((purchaseId) =>\n getPurchaseOrderRelativeUrl(purchaseId)\n )}\n separator={{', '}}\n openInNewTab\n align=\"left\"\n style={{ fontWeight: 600 }}\n />\n );\n },\n }\n ),\n [SalesReportTableColumnId.PurchasedBy]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.PurchasedBy],\n {\n id: SalesReportTableColumnId.PurchasedBy,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const buyerInfos = getValue().value;\n\n const useGetUserInfosQuery = useGetUserInfos(\n buyerInfos?.map((u) => u.buyerUserId)\n );\n const deactivatedText = useContent(ContentId.Deactivated);\n const hasDisplayDeactivatedUser = useUserHasFeature(\n Feature.DisplayDeactivatedUser\n );\n\n const buyerUserInfos = useMemo(() => {\n if (buyerInfos == null) return [];\n\n return buyerInfos.map((bi) => {\n const buyerUser = useGetUserInfosQuery.data?.[bi.buyerUserId];\n return {\n buyerUserId: bi.buyerUserId,\n buyerUser,\n averageBuyerCommissionPercentage:\n bi.averageBuyerCommissionPercent,\n };\n });\n }, [buyerInfos, useGetUserInfosQuery.data]);\n\n if (original === undefined) {\n return ;\n }\n\n return (\n \n {buyerUserInfos\n .map(\n (bui) =>\n `${\n bui.buyerUser?.name ??\n bui.buyerUser?.email ??\n bui.buyerUserId\n } ${\n bui.buyerUser?.isDeactivated && !hasDisplayDeactivatedUser\n ? `(${deactivatedText})`\n : ''\n } ${\n bui.averageBuyerCommissionPercentage\n ? `(${formatPercent(\n bui.averageBuyerCommissionPercentage,\n 2\n )})`\n : ''\n }`\n )\n .join(', ')}\n \n );\n },\n }\n ),\n [SalesReportTableColumnId.PurchaseDate]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.PurchaseDate],\n {\n id: SalesReportTableColumnId.PurchaseDate,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_MonthDD_Time } =\n useColumnUserSetting(\n SalesReportTableColumnId.PurchaseDate,\n SECTION_TYPE\n );\n\n if (original === undefined) {\n return ;\n }\n\n return (\n \n );\n },\n }\n ),\n [SalesReportTableColumnId.Vendor]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.Vendor],\n {\n id: SalesReportTableColumnId.Vendor,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.VendorAccountEmail]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[\n SalesReportTableColumnId.VendorAccountEmail\n ],\n {\n id: SalesReportTableColumnId.VendorAccountEmail,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.SeatingSeats]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.SeatingSeats],\n {\n id: SalesReportTableColumnId.SeatingSeats,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.OrderDate]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.OrderDate],\n {\n id: SalesReportTableColumnId.OrderDate,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n column: { id: columnId },\n row: { original },\n }) {\n const value = getValue();\n const {\n userDefinedPrecision = FormatOption.DateTime_Month_DD_YY_Time,\n } = useColumnUserSetting(columnId, SECTION_TYPE);\n\n if (original === undefined) {\n return ;\n }\n\n return (\n \n );\n },\n sortingFn: 'datetime',\n }\n ),\n [SalesReportTableColumnId.CancellationDate]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[\n SalesReportTableColumnId.CancellationDate\n ],\n {\n id: SalesReportTableColumnId.CancellationDate,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n column: { id: columnId },\n row: { original },\n }) {\n const value = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_MonthDD_Time } =\n useColumnUserSetting(columnId, SECTION_TYPE);\n\n if (original === undefined) {\n return ;\n }\n\n return (\n \n );\n },\n sortingFn: 'datetime',\n }\n ),\n [SalesReportTableColumnId.CurrencyCode]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.CurrencyCode],\n {\n id: SalesReportTableColumnId.CurrencyCode,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.InternalNotes]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.InternalNotes],\n {\n id: SalesReportTableColumnId.InternalNotes,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.TicketId]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.TicketId],\n {\n id: SalesReportTableColumnId.TicketId,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.TicketGroupId]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.TicketGroupId],\n {\n id: SalesReportTableColumnId.TicketGroupId,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => ,\n }\n ),\n [SalesReportTableColumnId.PaymentDate]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[SalesReportTableColumnId.PaymentDate],\n {\n id: SalesReportTableColumnId.PaymentDate,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n column: { id: columnId },\n row: { original },\n }) {\n const value = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_MonthDD_Time } =\n useColumnUserSetting(columnId, SECTION_TYPE);\n\n if (original === undefined) {\n return ;\n }\n\n return (\n \n );\n },\n sortingFn: 'datetime',\n }\n ),\n [SalesReportTableColumnId.FulfillmentDate]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[\n SalesReportTableColumnId.FulfillmentDate\n ],\n {\n id: SalesReportTableColumnId.FulfillmentDate,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n column: { id: columnId },\n row: { original },\n }) {\n const value = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_MonthDD_Time } =\n useColumnUserSetting(columnId, SECTION_TYPE);\n\n if (original === undefined) {\n return ;\n }\n\n return (\n \n );\n },\n sortingFn: 'datetime',\n }\n ),\n [SalesReportTableColumnId.PurchaseCreatedBy]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[\n SalesReportTableColumnId.PurchaseCreatedBy\n ],\n {\n id: SalesReportTableColumnId.PurchaseCreatedBy,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const { allActiveUserInfos } = useSellerAccountContext();\n\n const sellerUserIds = getValue>().value;\n\n const displayNamesFormatted = useMemo(\n () =>\n sellerUserIds\n ? [...new Set(sellerUserIds)]\n .map(\n (sellerUserId) =>\n allActiveUserInfos?.[sellerUserId]?.displayName\n )\n .filter((name) => name != null)\n .join(', ')\n : null,\n [allActiveUserInfos, sellerUserIds]\n );\n\n if (original === undefined) {\n return ;\n }\n\n return (\n {displayNamesFormatted}\n );\n },\n }\n ),\n [SalesReportTableColumnId.MarketplacePaymentTerms]: columnHelper.accessor(\n SALE_REPORT_TABLE_COLUMNS_ACCESSOR[\n SalesReportTableColumnId.MarketplacePaymentTerms\n ],\n {\n id: SalesReportTableColumnId.MarketplacePaymentTerms,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue();\n if (!original) {\n return ;\n }\n\n return (\n \n
    \n {value ? (\n \n ) : null}\n
    \n
    \n );\n },\n }\n ),\n} as const;\n","import { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Marketplace } from 'src/WebApiController';\n\nexport const MerchantDisplay = ({\n name,\n}: {\n name?: Marketplace | string | null;\n}) => {\n if (!name) {\n return ;\n }\n\n return <>{name};\n};\n","import clsx from 'clsx';\nimport { MerchantDisplay } from 'src/components/common/MerchantDisplay';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './SaleMarketplaceIdDisplay.css';\n\nexport type SaleMarketplaceIdDisplayProps = {\n marketplaceSaleId: string | null;\n saleId: number;\n marketplace: string;\n textAlign?: 'left' | 'right';\n classNames?: string;\n};\n\nexport const SaleMarketplaceIdDisplay = ({\n saleId,\n marketplaceSaleId,\n marketplace,\n textAlign,\n classNames,\n}: SaleMarketplaceIdDisplayProps) => {\n const uniqueIdLabel = useContent(ContentId.UniqueId);\n return (\n \n #{marketplaceSaleId || saleId}\n \n \n \n \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Permission } from 'src/WebApiController';\nimport styled from 'styled-components/macro';\n\nexport type ProceedsCellProps = {\n displayValue?: string;\n margin?: number;\n};\n\nexport const ProceedsCell = ({ displayValue, margin }: ProceedsCellProps) => {\n const hasTotalNetProceedsPermissions = useUserHasAnyOfPermissions(\n Permission.Sales_ViewProceeds,\n Permission.Sales_ViewRecentProceeds\n );\n\n return (\n \n \n {!displayValue ? (\n hasTotalNetProceedsPermissions ? (\n \n ) : null\n ) : (\n displayValue\n )}\n \n {margin && {margin.toFixed(2)}%}\n \n );\n};\n\nconst ProceedsWrapper = styled.div`\n display: flex;\n justify-content: flex-end;\n align-items: center;\n color: ${({ theme: { colors } }) => colors.textPrimary};\n`;\n\nconst Proceeds = styled.span`\n font-weight: 500;\n`;\n\nconst ProceedsMargin = styled.span`\n margin-left: 10px;\n ${({ theme: { typography } }) => typography.getStyles('caption1', 'regular')}\n`;\n","import { vars } from 'src/core/themes';\nimport { Event, Performer, Sale, Venue } from 'src/WebApiController';\n\nexport const SHIMMERING_DIV_HEIGHT_SINGLE_SALE = vars.spacing['3xl'];\n\nexport type SaleWithEvent = {\n sale: Sale;\n event: Event;\n performer?: Performer | null;\n venue?: Venue | null;\n isFlattenedMode?: boolean;\n};\n\nexport type SaleFormulaFields = {\n totalNetProceeds?: number | null;\n quantitySold?: number | null;\n charges?: number | null;\n credits?: number | null;\n soldTicketCost?: number | null;\n pandL?: number | null;\n margin?: number | null;\n};\n","import { useCallback, useContext, useMemo } from 'react';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { IconButton } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { ModalContext } from 'src/contexts/ModalContext/ModalContext';\nimport { vars } from 'src/core/themes';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport { OpenLinkIcon } from 'src/svgs/OpenLinkIcon';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isInFullPageEventView } from 'src/utils/deepLinkUtils';\nimport {\n getSaleActionButton,\n getSaleDetailsDeepLinkUrl,\n getSaleDetailsModalConfigWithDeepLink,\n getSaleDetailsRelativeUrl,\n NON_MAIN_SALE_ACTIONS,\n} from 'src/utils/saleUtils';\nimport {\n Marketplace,\n PointOfSaleSaleStatus,\n SaleActionType,\n SaleDetails,\n TicketType,\n} from 'src/WebApiController';\n\nexport const SalesActionsCell = ({\n saleId,\n marketplaceSaleId,\n marketplace,\n saleStatus,\n actions,\n ticketType,\n linkOnly,\n isNoFulfill,\n}: {\n saleId: number;\n marketplaceSaleId: string | null;\n marketplace: Marketplace | null;\n saleStatus: PointOfSaleSaleStatus;\n actions: SaleActionType[];\n ticketType: TicketType | null;\n linkOnly?: boolean;\n isNoFulfill?: boolean | null;\n}) => {\n const { setActivePosEntity, isLoading } =\n useActivePosEntityContext();\n const { setModal } = useContext(ModalContext);\n const { mainRoute } = useAppContext();\n const navigate = useNavigate();\n\n const onViewClick = useCallback(\n async (newTab: boolean) => {\n const inFullPageEventView = isInFullPageEventView(mainRoute);\n if (newTab) {\n window.open(getSaleDetailsDeepLinkUrl(saleId), '_blank');\n } else if (\n mainRoute === MainRoute.Sales ||\n mainRoute === MainRoute.SalesSearch ||\n inFullPageEventView\n ) {\n setActivePosEntity(saleId, marketplaceSaleId, true);\n setModal(getSaleDetailsModalConfigWithDeepLink(saleId, true));\n } else {\n navigate(getSaleDetailsRelativeUrl(saleId));\n }\n },\n [\n mainRoute,\n setActivePosEntity,\n saleId,\n marketplaceSaleId,\n setModal,\n navigate,\n ]\n );\n\n const mainActionTypes = useMemo(\n () => actions.filter((a) => !NON_MAIN_SALE_ACTIONS.includes(a)),\n [actions]\n );\n\n return (\n \n {!linkOnly &&\n (saleStatus === PointOfSaleSaleStatus.PendingConfirmation ||\n saleStatus === PointOfSaleSaleStatus.PendingAllocation ||\n saleStatus === PointOfSaleSaleStatus.Hold ||\n saleStatus === PointOfSaleSaleStatus.CancelledHold ? (\n <>\n {getSaleActionButton(\n saleId,\n marketplaceSaleId,\n marketplace,\n saleStatus,\n mainActionTypes[0],\n ticketType,\n isNoFulfill,\n undefined,\n true,\n undefined,\n isLoading\n )}\n {mainActionTypes.length > 1 &&\n getSaleActionButton(\n saleId,\n marketplaceSaleId,\n marketplace,\n saleStatus,\n actions[1],\n ticketType,\n isNoFulfill,\n undefined,\n true,\n undefined,\n isLoading\n )}\n \n ) : mainActionTypes.length > 0 ? (\n getSaleActionButton(\n saleId,\n marketplaceSaleId,\n marketplace,\n saleStatus,\n mainActionTypes[mainActionTypes.length - 1],\n ticketType,\n isNoFulfill,\n undefined,\n true,\n undefined,\n isLoading\n )\n ) : null)}\n {\n if (e.button === 0 && e.getModifierState('Control') === false) {\n // Perform like a button click when it's a left-click (and no Ctrl)\n // Else the click will be whatever
    does\n e.preventDefault();\n e.stopPropagation();\n\n onViewClick(!!linkOnly);\n }\n }}\n >\n \n }\n titleContentId={ContentId.ViewDetails}\n />\n \n \n );\n};\n","import { ColumnDef, FilterFnOption } from '@tanstack/react-table';\nimport { useCallback, useMemo } from 'react';\nimport { Link } from 'react-router-dom';\nimport { MultiSelectAll } from 'src/components/common/MultiSelect/MultiSelectAll';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport {\n SaleMarketplaceIdDisplay,\n SaleMarketplaceIdDisplayProps,\n} from 'src/components/Sales/SaleMarketplaceIdDisplay';\nimport { TagValueDisplay } from 'src/components/TagsFormBody/TagValueCell';\nimport {\n COLUMN_DEFAULT_SIZE_BASE,\n COLUMN_DEFAULT_SIZE_LG,\n COLUMN_DEFAULT_SIZE_XL,\n COLUMN_MAX_SIZE,\n COLUMN_MIN_SIZE,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport {\n Content,\n useContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport {\n NO_GROUP_ID,\n TableRow,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { HorizontalTextList } from 'src/core/POS/HorizontalTextList';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack, TooltipPopover } from 'src/core/ui';\nimport { CopyToClipboardV2 } from 'src/core/ui/CopyToClipboard/CopyToClipboardV2';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { useColumnUserSetting } from 'src/hooks/useColumnUserSetting';\nimport { getUserDisplayName, useGetUserInfos } from 'src/hooks/userGetUserInfo';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport {\n FormatOption,\n FormatOption_Seating,\n FormatOptionEntries,\n} from 'src/modals/EditTableColumns';\nimport { CustomColumnName } from 'src/modals/InventoryTableColumns/CustomColumnName';\nimport { IconsFill, WarningOutlineIcon } from 'src/svgs/Viagogo';\nimport { SEATING_SORTING_FN_NAME } from 'src/tables/common/hooks/useSeatingColumnSorting';\nimport { CustomNumericCell } from 'src/tables/ListingTable/configs/CustomNumericCell';\nimport { ProceedsCell } from 'src/tables/SalesTable/configs/ProceedsCell';\nimport { SeatInfoContainer, TableShimmeringDiv } from 'src/tables/Table';\nimport { DateCell, InHandCell } from 'src/tables/Table/TableCells';\nimport { evaluateFormula } from 'src/utils/columns/sales/salesCustomColumnUtils';\nimport { CustomSalesColumn } from 'src/utils/columns/sales/salesCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n MARKETPLACE_SALE_PAYMENT_STATE_TO_CID,\n SALE_PAYMENT_STATE_TO_CID,\n SALE_TABLE_COLUMN_ID_TO_CONTENT_ID,\n TICKET_TYPE_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { getListingNoteIcon } from 'src/utils/listingNotesUtils';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\nimport { getPurchaseOrderRelativeUrl } from 'src/utils/purchaseUtils';\nimport {\n getSaleStatusDisplayContentId,\n getSaleStatusIcon,\n} from 'src/utils/saleUtils';\nimport {\n filterSeatingSectionFn,\n filterSeatRangeFn,\n filterStringMultiSelect,\n safeSortDateTime,\n sortGeneric,\n sortMoney,\n sortSeatingSeatsForTable,\n} from 'src/utils/tableUtils';\nimport { getTicketTypeIcon } from 'src/utils/ticketTypeUtils';\nimport {\n SECTION_TYPE_TO_PRECISION_SETTING,\n SectionType,\n} from 'src/utils/types/sectionType';\nimport {\n Feature,\n ListingNote,\n MarketplaceFulfillmentState,\n MarketplacePaymentState,\n PointOfSalePaymentState,\n PointOfSaleSaleStatus,\n Seating,\n TagsValueType,\n TicketType,\n UiMoney,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { SalesTableColumnId } from '../../../utils/columns/sales/salesColumnUtils.types';\nimport {\n SaleWithEvent,\n SHIMMERING_DIV_HEIGHT_SINGLE_SALE,\n} from '../SalesTable.type';\nimport { SalesActionsCell } from './SalesActionsCell';\n\nconst COST_COLUMN_MIN_SIZE = 75;\nconst COST_COLUMN_MAX_SIZE = 125;\n\nconst SECTION_TYPE = SectionType.Sales;\n\nexport const tagColumnDef = (\n tagName: string\n): ColumnDef => ({\n id: tagName,\n header: () => (\n \n \n {tagName}\n \n \n ),\n enableColumnFilter: false,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => {\n const tag = data?.sale?.tags?.find((t) => t.key === tagName);\n if (\n tag?.valueType === TagsValueType.Int ||\n tag?.valueType === TagsValueType.Decimal\n ) {\n return tag ? parseFloat(tag.value) : null;\n }\n return tag?.value;\n },\n cell: function Cell({ getValue, row: { original }, table }) {\n const { value: storedColumnNumberPrecisions = {} } =\n useServerUserSetting({\n id: SECTION_TYPE_TO_PRECISION_SETTING[\n table.options.meta?.sectionType ?? SECTION_TYPE\n ],\n });\n const tag = original?.sale?.tags?.find((t) => t.key === tagName);\n\n if (\n tag?.valueType === TagsValueType.Int ||\n tag?.valueType === TagsValueType.Decimal\n ) {\n const userDefinedPrecision = storedColumnNumberPrecisions[tagName];\n\n return (\n ()}\n isLoading={Boolean(!original || !original.sale)}\n shimmeringDivHeight={SHIMMERING_DIV_HEIGHT_SINGLE_SALE}\n sectionType={table.options.meta?.sectionType ?? SECTION_TYPE}\n matchingTag={tag}\n currencyCode={original?.sale?.currency}\n />\n );\n }\n\n if (!original || !original.sale) {\n return ;\n }\n\n if (!tag) {\n return null;\n }\n\n return (\n \n \n \n );\n },\n});\n\nexport const customColumnDef = (\n columnId: string,\n formula?: string | null\n): ColumnDef => ({\n id: columnId,\n header: ({ table }) => (\n \n \n \n ),\n enableColumnFilter: false,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => {\n return formula && data ? evaluateFormula(formula, data.sale) ?? null : null;\n },\n cell: function Cell({ getValue, row: { original }, table }) {\n const { value: storedColumnNumberPrecisions = {} } =\n useServerUserSetting({\n id: SECTION_TYPE_TO_PRECISION_SETTING[\n table.options.meta?.sectionType ?? SECTION_TYPE\n ],\n });\n const { value: customColumns = [] } = useServerUserSetting<\n CustomSalesColumn[]\n >({\n id: UserSetting.SaleCustomColumns,\n });\n\n const userDefinedPrecision = storedColumnNumberPrecisions[columnId];\n\n return (\n ()}\n isLoading={Boolean(!original || !original.sale)}\n shimmeringDivHeight={SHIMMERING_DIV_HEIGHT_SINGLE_SALE}\n sectionType={table.options.meta?.sectionType ?? SECTION_TYPE}\n matchingCustomColumn={customColumns.find((c) => c.id === columnId)}\n currencyCode={original?.sale?.currency}\n />\n );\n },\n});\n\nexport const SALE_TABLE_COLUMNS_CONFIG: Record<\n SalesTableColumnId,\n ColumnDef\n> = {\n [SalesTableColumnId.Checkbox]: {\n id: SalesTableColumnId.Checkbox,\n header: (props) => {\n return props.table.options.meta?.showSelectAllCheckbox ? (\n \n \n \n ) : (\n ''\n );\n },\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_DEFAULT_SIZE_BASE,\n maxSize: COLUMN_DEFAULT_SIZE_BASE,\n enableSorting: false,\n enableResizing: false,\n cell: function Cell({\n row: { id, original, getIsSelected, depth, getCanSelectSubRows },\n table,\n }) {\n const { setShiftKeyRowSelectionState, isNoGroupIdSet } =\n useMultiSelectionContext();\n\n if (!original || !original.sale) {\n return (\n \n );\n }\n\n const isSelected = getIsSelected();\n const canSelect = getCanSelectSubRows() || depth === 0;\n const groupId = isNoGroupIdSet()\n ? NO_GROUP_ID\n : original.event.viagVirtualId;\n return canSelect ? (\n \n {\n setShiftKeyRowSelectionState(\n id,\n table.getRowModel().rows as unknown as TableRow[],\n groupId\n );\n }}\n />\n \n ) : null;\n },\n },\n [SalesTableColumnId.Seating]: {\n id: SalesTableColumnId.Seating,\n header: function Header({\n table: {\n options: { meta },\n },\n column,\n }) {\n const seatingText = useContent(\n SALE_TABLE_COLUMN_ID_TO_CONTENT_ID[SalesTableColumnId.Seating]\n );\n const sectionText = useContent(ContentId.Section);\n const { userDefinedPrecision } = useColumnUserSetting(\n column.id,\n meta?.sectionType || SectionType.Sales\n );\n\n const isSectionOnly =\n userDefinedPrecision === FormatOption_Seating.Seating_SectionOnly;\n return (\n \n \n {isSectionOnly ? `${seatingText} (${sectionText})` : seatingText}\n \n \n );\n },\n enableColumnFilter: true,\n filterFn: filterSeatingSectionFn as FilterFnOption,\n meta: {\n uniqueValueVariant: 'seatingSection',\n },\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) =>\n data\n ? {\n seating: data.sale.seating,\n listingNotes: data.sale.seatTraits,\n isSeatSaver: data.sale.isSeatSaver,\n status: data.sale.status,\n }\n : null,\n cell: function Cell({\n getValue,\n row: { original },\n table: {\n options: { meta },\n },\n column,\n }) {\n const hasWasteSaleFeature = useUserHasFeature(Feature.WasteSale);\n const hasSaleHasMarketplaceProblemFeature = useUserHasFeature(\n Feature.SaleHasMarketplaceProblem\n );\n const contentContext = useContentContext();\n const hasListingNotesAdditionalInfoFeature = useUserHasFeature(\n Feature.ListingNotesAdditionalInfo\n );\n const { userDefinedPrecision } = useColumnUserSetting(\n column.id,\n meta?.sectionType || SectionType.Sales\n );\n\n const value = getValue<{\n seating: Seating;\n listingNotes: ListingNote[];\n isSeatSaver: boolean;\n status: PointOfSaleSaleStatus;\n } | null>();\n if (value == null) {\n return (\n \n );\n }\n\n const { seating, listingNotes, isSeatSaver, status } = value;\n const adjustedSeating =\n userDefinedPrecision === FormatOption_Seating.Seating_SectionOnly\n ? {\n ...seating,\n row: null,\n seatFr: null,\n seatTo: null,\n }\n : seating;\n const hasMarketplaceProblem =\n original?.sale?.hasMarketplaceProblem ?? false;\n return (\n \n \n \n \n {listingNotes?.length > 0 && (\n n.listingNoteText)}\n />\n )}\n \n {hasMarketplaceProblem && hasSaleHasMarketplaceProblemFeature && (\n
    \n \n }\n >\n \n }\n />\n \n
    \n )}\n
    \n
    \n );\n },\n sortingFn: SEATING_SORTING_FN_NAME,\n },\n [SalesTableColumnId.QuantitySold]: {\n id: SalesTableColumnId.QuantitySold,\n header: ({ column: { id } }) => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => (data ? data.sale.qtySold || 0 : null),\n cell: function Cell({ getValue, column: { id: columnId }, table }) {\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (value == null) {\n return (\n \n );\n }\n\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n })}\n \n );\n },\n },\n [SalesTableColumnId.OrderDate]: {\n id: SalesTableColumnId.OrderDate,\n header: ({ column: { id } }) => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.sale?.saleDate,\n cell: function Cell({ getValue, column: { id: columnId }, table }) {\n const value = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_MonthDD_Time } =\n useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (value == null) {\n return (\n \n );\n }\n\n return (\n \n \n \n );\n },\n sortingFn: safeSortDateTime,\n },\n [SalesTableColumnId.InHandDate]: {\n id: SalesTableColumnId.InHandDate,\n header: () => IH,\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.sale.inHandAt,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue();\n if (!original?.sale) {\n return (\n \n );\n }\n return (\n \n \n \n );\n },\n sortingFn: safeSortDateTime,\n },\n [SalesTableColumnId.Status]: {\n id: SalesTableColumnId.Status,\n header: ({ column: { id } }) => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => (data ? data.sale.status : null),\n cell: function Cell({ getValue, column: { id: columnId }, row, table }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n const sale = row.original?.sale;\n const value = getValue() as PointOfSaleSaleStatus;\n\n const statusContent = useContent(\n getSaleStatusDisplayContentId(value, sale?.mkpContrState, sale?.mkp)\n );\n\n if (value == null) {\n return (\n \n );\n }\n\n const SaleStatusIcon = getSaleStatusIcon(\n value,\n sale?.mkpContrState,\n sale?.mkp\n );\n\n return (\n \n \n {userDefinedPrecision === FormatOption.EnumDisplay_Icon ? (\n \n ) : (\n
    {statusContent}
    \n )}\n\n {\n // if the Sale is fulfilled in both POS and Marketplace, but the version is mismatched, show the warning\n value === PointOfSaleSaleStatus.Fulfilled &&\n sale?.isFulfillVerMis ? (\n \n \n }\n >\n \n }\n />\n \n \n ) : value !== PointOfSaleSaleStatus.Fulfilled &&\n sale?.mkpFulfState === MarketplaceFulfillmentState.Fulfilled ? (\n \n \n }\n >\n \n }\n />\n \n \n ) : undefined\n }\n
    \n
    \n );\n },\n },\n [SalesTableColumnId.TicketType]: {\n id: SalesTableColumnId.TicketType,\n header: ({ column: { id } }) => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => (data ? data.sale.ticketType : null),\n cell: function Cell({ getValue, column: { id: columnId }, table }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n const value = getValue() as TicketType;\n if (value == null) {\n return (\n \n );\n }\n const ticketTypeIcon = getTicketTypeIcon(value, IconsFill.currentColor);\n return (\n \n {userDefinedPrecision === FormatOption.EnumDisplay_Icon ? (\n \n {ticketTypeIcon}\n \n ) : (\n \n )}\n \n );\n },\n },\n [SalesTableColumnId.Proceeds]: {\n id: SalesTableColumnId.Proceeds,\n enableColumnFilter: false,\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return !data\n ? null\n : {\n proceeds: data.sale.ttlNetProcs,\n margin: undefined, // TODO - provide this when the data is actually available\n };\n },\n cell: function Cell({ getValue, column: { id: columnId }, table }) {\n const value = getValue<{\n proceeds: UiMoney | null;\n margin?: number;\n } | null>();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (value == null) {\n return (\n \n );\n }\n\n const displayValue =\n applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value.proceeds?.amt,\n currencyCode: value.proceeds?.currency,\n currencyDecimalDigits: value.proceeds?.dec,\n }) ?? undefined;\n\n return (\n \n \n \n );\n },\n sortingFn: (rowA, rowB, colId) => {\n type ValueType = {\n proceeds: UiMoney | null;\n margin?: number;\n };\n const a = rowA.getValue(colId);\n const b = rowB.getValue(colId);\n if (!a?.proceeds) return b ? -1 : 1;\n if (!b?.proceeds) return 1;\n\n return a.proceeds.amt < b.proceeds.amt ? -1 : 1;\n },\n },\n [SalesTableColumnId.SoldTicketCost]: {\n id: SalesTableColumnId.SoldTicketCost,\n enableColumnFilter: false,\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale?.soldTktCost?.amt;\n },\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n return (\n ()}\n isLoading={Boolean(!original || !original.sale)}\n shimmeringDivHeight={SHIMMERING_DIV_HEIGHT_SINGLE_SALE}\n sectionType={table.options.meta?.sectionType ?? SECTION_TYPE}\n currencyCode={original?.sale?.currency}\n />\n );\n },\n },\n [SalesTableColumnId.PandL]: {\n id: SalesTableColumnId.PandL,\n enableColumnFilter: false,\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale?.pandL?.amt;\n },\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n return (\n ()}\n isLoading={Boolean(!original || !original.sale)}\n shimmeringDivHeight={SHIMMERING_DIV_HEIGHT_SINGLE_SALE}\n sectionType={table.options.meta?.sectionType ?? SECTION_TYPE}\n currencyCode={original?.sale?.currency}\n />\n );\n },\n },\n [SalesTableColumnId.Margin]: {\n id: SalesTableColumnId.Margin,\n enableColumnFilter: false,\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale?.margin;\n },\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n return (\n ()}\n isLoading={Boolean(!original || !original.sale)}\n shimmeringDivHeight={SHIMMERING_DIV_HEIGHT_SINGLE_SALE}\n sectionType={table.options.meta?.sectionType ?? SECTION_TYPE}\n />\n );\n },\n },\n [SalesTableColumnId.Charges]: {\n id: SalesTableColumnId.Charges,\n enableColumnFilter: false,\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale?.charges?.amt;\n },\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n return (\n ()}\n isLoading={Boolean(!original || !original.sale)}\n shimmeringDivHeight={SHIMMERING_DIV_HEIGHT_SINGLE_SALE}\n sectionType={table.options.meta?.sectionType ?? SECTION_TYPE}\n currencyCode={original?.sale?.currency}\n />\n );\n },\n },\n [SalesTableColumnId.Credits]: {\n id: SalesTableColumnId.Credits,\n enableColumnFilter: false,\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale?.credits?.amt;\n },\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n table,\n }) {\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n return (\n ()}\n isLoading={Boolean(!original || !original.sale)}\n shimmeringDivHeight={SHIMMERING_DIV_HEIGHT_SINGLE_SALE}\n sectionType={table.options.meta?.sectionType ?? SECTION_TYPE}\n currencyCode={original?.sale?.currency}\n />\n );\n },\n },\n [SalesTableColumnId.Sale]: {\n id: SalesTableColumnId.Sale,\n header: ({ column: { id } }) => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) =>\n !data\n ? null\n : {\n marketplaceSaleId: data.sale.idOnMkp,\n saleId: data.sale.id,\n isExternal: Boolean(data.sale.idOnMkp),\n marketplace: data.sale.mkp,\n },\n cell: ({ getValue }) => {\n const value = getValue();\n if (value == null) {\n return (\n \n );\n }\n\n const props = value as SaleMarketplaceIdDisplayProps;\n return (\n \n \n \n \n \n \n \n );\n },\n // sort by market, then order\n sortingFn: (rowA, rowB, colId) => {\n const a = rowA.getValue(colId) as SaleMarketplaceIdDisplayProps;\n const b = rowB.getValue(colId) as SaleMarketplaceIdDisplayProps;\n if (!a) return b ? -1 : 1;\n if (!b) return 1;\n\n if (a.marketplace !== b.marketplace) {\n return a.marketplace < b.marketplace ? -1 : 1;\n }\n\n // Same marketplace, sort by sale id\n return (a.marketplaceSaleId || '') < (b.marketplaceSaleId || '') ? -1 : 1;\n },\n },\n [SalesTableColumnId.Actions]: {\n id: SalesTableColumnId.Actions,\n enableSorting: false,\n enableResizing: true,\n header: function Cell() {\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n\n if (hasTablePinActionColumnFeature) {\n return null;\n }\n\n return (\n \n \n \n );\n },\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_DEFAULT_SIZE_LG,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ row: { original }, table }) => {\n const linkOnly =\n table.options.meta?.formatOptionOverrides?.[\n SalesTableColumnId.Actions\n ] === FormatOption.Actions_LinkOnly;\n\n return !original ? (\n \n ) : (\n \n );\n },\n },\n [SalesTableColumnId.FulfillmentDate]: {\n id: SalesTableColumnId.FulfillmentDate,\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale?.fulfillDate;\n },\n cell: function Cell({\n getValue,\n column: { id: columnId },\n row: { original },\n table,\n }) {\n const value = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_MonthDD_Time } =\n useColumnUserSetting(\n columnId,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (original == null) {\n return (\n \n );\n }\n\n return (\n \n );\n },\n sortingFn: safeSortDateTime,\n },\n [SalesTableColumnId.AutoFulfill]: {\n id: SalesTableColumnId.AutoFulfill,\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale?.isNoFulfill;\n },\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue();\n\n if (original == null) {\n return (\n \n );\n }\n\n return (\n \n {/* AutoFulfill is negative of IsNoFulfill */}\n \n \n );\n },\n },\n [SalesTableColumnId.PaymentState]: {\n id: SalesTableColumnId.PaymentState,\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return {\n pmtState: data?.sale?.pmtState,\n mkpPmtState: data?.sale?.mkpPmtState,\n };\n },\n cell: function Cell({ getValue }) {\n const value = getValue() as {\n mkpPmtState: MarketplacePaymentState;\n pmtState: PointOfSalePaymentState;\n };\n if (value.mkpPmtState == null && value.pmtState == null) {\n return (\n \n );\n }\n\n return (\n \n {value.mkpPmtState ? (\n \n ) : (\n \n )}\n \n );\n },\n },\n [SalesTableColumnId.PaymentReceived]: {\n id: SalesTableColumnId.PaymentReceived,\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale ? data.sale.pmtRcv ?? null : undefined;\n },\n cell: function Cell({ getValue }) {\n const value = getValue();\n if (value === undefined) {\n return (\n \n );\n }\n\n return (\n \n \n \n );\n },\n },\n [SalesTableColumnId.PaymentReferenceId]: {\n id: SalesTableColumnId.PaymentReferenceId,\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale ? data.sale.pmtRefId ?? null : undefined;\n },\n cell: function Cell({ getValue }) {\n const value = getValue();\n if (value === undefined) {\n return (\n \n );\n }\n\n return {value};\n },\n },\n [SalesTableColumnId.PurchaseCreatedBy]: {\n id: SalesTableColumnId.PurchaseCreatedBy,\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale?.owners?.poInsertBys;\n },\n cell: function Cell({ getValue, row: { original } }) {\n const { allActiveUserInfos } = useSellerAccountContext();\n\n const sellerUserIds = getValue();\n\n const displayNamesFormatted = useMemo(\n () =>\n sellerUserIds\n ? [...new Set(sellerUserIds)]\n .map(\n (sellerUserId) =>\n allActiveUserInfos?.[sellerUserId]?.displayName\n )\n .filter((name) => name != null)\n .join(', ')\n : null,\n [allActiveUserInfos, sellerUserIds]\n );\n\n if (original == null) {\n return (\n \n );\n }\n\n return {displayNamesFormatted};\n },\n },\n [SalesTableColumnId.PurchasedBy]: {\n id: SalesTableColumnId.PurchasedBy,\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale?.owners?.buyerIds;\n },\n cell: function Cell({ getValue, row: { original } }) {\n const { allActiveUserInfos } = useSellerAccountContext();\n\n const sellerUserIds = getValue();\n\n const displayNamesFormatted = useMemo(\n () =>\n sellerUserIds\n ? [...new Set(sellerUserIds)]\n .map(\n (sellerUserId) =>\n allActiveUserInfos?.[sellerUserId]?.displayName\n )\n .filter((name) => name != null)\n .join(', ')\n : null,\n [allActiveUserInfos, sellerUserIds]\n );\n\n if (original == null) {\n return (\n \n );\n }\n\n return {displayNamesFormatted};\n },\n },\n [SalesTableColumnId.PurchaseDate]: {\n id: SalesTableColumnId.PurchaseDate,\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale?.poDate;\n },\n cell: function Cell({ getValue, row: { original }, table }) {\n const value = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_MonthDD_Time } =\n useColumnUserSetting(\n SalesTableColumnId.PurchaseDate,\n table.options.meta?.sectionType ?? SECTION_TYPE\n );\n\n if (original == null) {\n return (\n \n );\n }\n\n return (\n \n \n \n );\n },\n sortingFn: safeSortDateTime,\n },\n [SalesTableColumnId.VendorOrderId]: {\n id: SalesTableColumnId.VendorOrderId,\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale?.poVendOrdId;\n },\n cell: function Cell({ getValue, row: { original } }) {\n const onViewClick = useCallback(async () => {\n if (!original || !original.sale?.poId) {\n return;\n }\n }, [original]);\n\n if (!original) {\n return (\n \n );\n }\n\n if (!original?.sale?.poId) {\n return '';\n }\n\n const externalPoID = getValue();\n\n return (\n \n \n \n \n \n {getValue()}\n \n \n \n \n \n );\n },\n },\n [SalesTableColumnId.VendorAccountEmail]: {\n id: SalesTableColumnId.VendorAccountEmail,\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale?.poVendAccEmail;\n },\n cell: function Cell({ getValue, row: { original } }) {\n if (!original) {\n return (\n \n );\n }\n\n return (\n \n
    {getValue()}
    \n
    \n );\n },\n },\n [SalesTableColumnId.OriginatedBy]: {\n id: SalesTableColumnId.OriginatedBy,\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale?.origBy;\n },\n cell: function Cell({ getValue, row: { original } }) {\n const deactivatedText = useContent(ContentId.Deactivated);\n const insertByUserId = getValue() as string;\n const getUserInfosQuery = useGetUserInfos([insertByUserId]);\n\n const displayUserName = useMemo(() => {\n const user = insertByUserId\n ? getUserInfosQuery.data?.[insertByUserId]\n : undefined;\n\n return user ? getUserDisplayName(user, deactivatedText) : '';\n }, [deactivatedText, getUserInfosQuery.data, insertByUserId]);\n\n if (original == null) {\n return (\n \n );\n }\n\n return {displayUserName};\n },\n },\n [SalesTableColumnId.Row]: {\n id: SalesTableColumnId.Row,\n enableColumnFilter: true,\n filterFn: filterStringMultiSelect as FilterFnOption,\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale?.seating?.row;\n },\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue();\n\n if (!original) {\n return (\n \n );\n }\n if (!original.sale) return null;\n\n return {value};\n },\n sortingFn: sortGeneric,\n },\n [SalesTableColumnId.Seats]: {\n id: SalesTableColumnId.Seats,\n enableColumnFilter: true,\n filterFn: filterSeatRangeFn as FilterFnOption,\n meta: {\n columnFilterVariant: 'seatRange',\n },\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale?.seating;\n },\n cell: function Cell({ row: { original } }) {\n if (!original) {\n return (\n \n );\n }\n if (!original.sale) return null;\n\n const { seatFr, seatTo } = original.sale.seating;\n\n return (\n \n \n \n );\n },\n sortingFn: sortSeatingSeatsForTable,\n },\n [SalesTableColumnId.TotalPaymentsAmount]: {\n id: SalesTableColumnId.TotalPaymentsAmount,\n enableColumnFilter: false,\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale?.totalPmt;\n },\n cell: function Cell({ getValue, row: { original } }) {\n const totalAmount = getValue();\n\n if (!original) {\n return (\n \n );\n }\n\n return {totalAmount?.disp};\n },\n sortingFn: sortMoney,\n },\n [SalesTableColumnId.TotalConvertedPaymentsAmount]: {\n id: SalesTableColumnId.TotalConvertedPaymentsAmount,\n enableColumnFilter: false,\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale?.totalConvertedPmt;\n },\n cell: function Cell({ getValue, row: { original } }) {\n const totalConvertedAmount = getValue();\n\n if (!original) {\n return (\n \n );\n }\n\n return (\n {totalConvertedAmount?.disp}\n );\n },\n sortingFn: sortMoney,\n },\n [SalesTableColumnId.WastedQuantity]: {\n id: SalesTableColumnId.WastedQuantity,\n enableColumnFilter: false,\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n header: ({ column: { id } }) => (\n \n \n \n ),\n accessorFn: (data) => {\n return data?.sale?.qtyWasted;\n },\n cell: function Cell({ getValue, row: { original } }) {\n if (!original) {\n return (\n \n );\n }\n\n const wastedQty = getValue();\n\n return {wastedQty};\n },\n },\n};\n","import { createColumnHelper } from '@tanstack/react-table';\nimport { ConnectedEventInfo } from 'src/components/Events/ConnectedEventInfo';\nimport {\n EventDateDisplay,\n VenueNameDisplay,\n} from 'src/components/Events/EventInfo';\nimport {\n COLUMN_DEFAULT_SIZE_XL,\n COLUMN_DEFAULT_SIZE_XXL,\n COLUMN_MAX_SIZE,\n COLUMN_MIN_SIZE,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport { Content } from 'src/contexts/ContentContext';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { useColumnUserSetting } from 'src/hooks/useColumnUserSetting';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { FormatOption, FormatOptionEntries } from 'src/modals/EditTableColumns';\nimport * as tableStyles from 'src/tables/Table/Table.css';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\nimport { SalesTableFlattenedColumnId } from 'src/utils/columns/sales/salesColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n compareEventsByDate,\n compareEventsByName,\n} from 'src/utils/eventWithDataUtils';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { DateTimeRange, UserSetting, Venue } from 'src/WebApiController';\n\nimport {\n SaleWithEvent,\n SHIMMERING_DIV_HEIGHT_SINGLE_SALE,\n} from '../SalesTable.type';\nconst columnHelper = createColumnHelper();\n\nexport const SALE_TABLE_FLATTENED_COLUMNS_CONFIG = {\n [SalesTableFlattenedColumnId.Event]: columnHelper.accessor((data) => data, {\n id: SalesTableFlattenedColumnId.Event,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_XXL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, table }) {\n const sale = getValue();\n const { value: storedColumnNumberPrecisions = {} } =\n useServerUserSetting({\n id: UserSetting.SaleFlattenedColumnNumberPrecision,\n });\n\n if (!sale) {\n return (\n \n );\n }\n\n if (!sale.event) {\n return null;\n }\n\n const customPrecision =\n table.options.meta?.formatOptionOverrides?.[\n SalesTableFlattenedColumnId.Event\n ];\n\n const eventNameOnly = customPrecision\n ? customPrecision === FormatOption.Event_EventName\n : !sale.isFlattenedMode ||\n storedColumnNumberPrecisions[SalesTableFlattenedColumnId.Event] ===\n FormatOption.Event_EventName;\n\n return (\n \n \n \n );\n },\n sortingFn: compareEventsByName,\n }),\n [SalesTableFlattenedColumnId.Venue]: columnHelper.accessor(\n (data) => data?.venue,\n {\n id: SalesTableFlattenedColumnId.Venue,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const venue = getValue();\n if (!original || !original?.sale) {\n return (\n \n );\n }\n return (\n \n \n \n );\n },\n }\n ),\n [SalesTableFlattenedColumnId.Location]: columnHelper.accessor(\n (data) => data,\n {\n id: SalesTableFlattenedColumnId.Location,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const sale = getValue();\n if (!original || !original?.sale) {\n return (\n \n );\n }\n return (\n \n \n \n );\n },\n }\n ),\n [SalesTableFlattenedColumnId.EventDate]: columnHelper.accessor(\n (data) => data?.event?.dates,\n {\n id: SalesTableFlattenedColumnId.EventDate,\n header: () => (\n \n \n \n ),\n enableColumnFilter: false,\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original }, column, table }) {\n const columnId = column.id;\n\n const value = getValue();\n const {\n userDefinedPrecision = FormatOption.DateTime_MonthDD_Time_Day,\n } = useColumnUserSetting(columnId, SectionType.Events);\n\n if (!original || !original?.sale) {\n return (\n \n );\n }\n\n const customPrecision =\n table.options.meta?.formatOptionOverrides?.[\n SalesTableFlattenedColumnId.EventDate\n ];\n\n const date = applyNumberFormatting({\n precision: customPrecision ?? userDefinedPrecision,\n inputNumber: value?.start,\n isDateTime: true,\n }) as string;\n\n return (\n \n {userDefinedPrecision === FormatOption.DateTime_MonthDD_Time ? (\n \n ) : (\n \n {date}\n \n )}\n \n );\n },\n sortingFn: compareEventsByDate,\n }\n ),\n} as const;\n","import clsx from 'clsx';\nimport { ReactNode } from 'react';\nimport { vars } from 'src/core/themes';\nimport { HamburgerMenuIcon } from 'src/svgs/HamburgerMenuIcon';\n\nimport * as styles from './ColumnListItem.css';\n\ntype ColumnListItemProps = {\n children: ReactNode;\n actionButton: ReactNode;\n draggable?: boolean;\n highlighted?: boolean;\n};\n\nexport const ColumnListItem = ({\n children,\n actionButton,\n draggable,\n highlighted,\n}: ColumnListItemProps) => {\n return (\n \n
    \n {draggable && (\n \n )}\n {children}\n
    \n
    {actionButton}
    \n \n );\n};\n","import { useMemo } from 'react';\nimport { getContent, useContentContext } from 'src/contexts/ContentContext';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { OnSaleEventsTableColumnId } from 'src/navigations/Routes/OnSaleEvent/OnSaleEventView.types';\nimport { EventsTableColumnId } from 'src/utils/columns/events/eventsColumnUtils.types';\nimport {\n ListingReportTableColumnId,\n ListingTableColumnId,\n ListingTableFlattenedColumnId,\n} from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { MarketplacePaymentsTableColumnId } from 'src/utils/columns/marketplacePayments/marketplacePaymentsColumnsUtils.types';\nimport { PurchasesTableColumnId } from 'src/utils/columns/purchases/purchasesColumnUtils.types';\nimport {\n SalesReportTableColumnId,\n SalesTableColumnId,\n SalesTableFlattenedColumnId,\n} from 'src/utils/columns/sales/salesColumnUtils.types';\nimport {\n EVENTS_TABLE_COLUMN_ID_TO_CONTENT_ID,\n LISTING_REPORT_TABLE_COLUMN_ID_TO_CONTENT_ID,\n LISTING_TABLE_COLUMN_ID_TO_CONTENT_ID,\n LISTING_TABLE_FLATTENED_COLUMN_ID_TO_CONTENT_ID,\n ON_SALE_EVENT_TABLE_COLUMN_ID_CONTENT_ID,\n PAYMENTS_TABLE_COLUMN_ID_TO_CONTENT_ID,\n PURCHASE_TABLE_COLUMN_ID_TO_CONTENT_ID,\n SALE_REPORT_TABLE_COLUMN_ID_TO_CONTENT_ID,\n SALE_TABLE_COLUMN_ID_TO_CONTENT_ID,\n SALE_TABLE_FLATTENED_COLUMN_ID_TO_CONTENT_ID,\n} from 'src/utils/constants/contentIdMaps';\nimport {\n SECTION_TYPE_TO_ACTION_OUTBOX_ENTITY_TYPE,\n SECTION_TYPE_TO_CUSTOM_COLUMN_SETTING,\n SectionType,\n} from 'src/utils/types/sectionType';\n\nexport const getContentIdForColumn = (id: string, sectionType: SectionType) => {\n return {\n [SectionType.Listings]:\n LISTING_TABLE_COLUMN_ID_TO_CONTENT_ID[id as ListingTableColumnId],\n [SectionType.ListingsFlattened]:\n LISTING_TABLE_COLUMN_ID_TO_CONTENT_ID[id as ListingTableColumnId] ||\n LISTING_TABLE_FLATTENED_COLUMN_ID_TO_CONTENT_ID[\n id as ListingTableFlattenedColumnId\n ],\n [SectionType.InventorySideTable]:\n LISTING_TABLE_COLUMN_ID_TO_CONTENT_ID[id as ListingTableColumnId],\n [SectionType.Sales]:\n SALE_TABLE_COLUMN_ID_TO_CONTENT_ID[id as SalesTableColumnId],\n [SectionType.SalesFlattened]:\n SALE_TABLE_COLUMN_ID_TO_CONTENT_ID[id as SalesTableColumnId] ||\n SALE_TABLE_FLATTENED_COLUMN_ID_TO_CONTENT_ID[\n id as SalesTableFlattenedColumnId\n ],\n [SectionType.SalesSideTable]:\n SALE_TABLE_COLUMN_ID_TO_CONTENT_ID[id as SalesTableColumnId],\n [SectionType.Events]:\n EVENTS_TABLE_COLUMN_ID_TO_CONTENT_ID[id as EventsTableColumnId],\n [SectionType.SalesReport]:\n SALE_REPORT_TABLE_COLUMN_ID_TO_CONTENT_ID[id as SalesReportTableColumnId],\n [SectionType.Purchases]:\n PURCHASE_TABLE_COLUMN_ID_TO_CONTENT_ID[id as PurchasesTableColumnId],\n [SectionType.PurchaseEvent]:\n PURCHASE_TABLE_COLUMN_ID_TO_CONTENT_ID[id as PurchasesTableColumnId],\n [SectionType.PurchaseSideTable]:\n PURCHASE_TABLE_COLUMN_ID_TO_CONTENT_ID[id as PurchasesTableColumnId],\n [SectionType.ListingsReport]:\n LISTING_REPORT_TABLE_COLUMN_ID_TO_CONTENT_ID[\n id as ListingReportTableColumnId\n ],\n [SectionType.MarketplacePaymentsTable]:\n PAYMENTS_TABLE_COLUMN_ID_TO_CONTENT_ID[\n id as MarketplacePaymentsTableColumnId\n ],\n [SectionType.OnSaleEvents]:\n ON_SALE_EVENT_TABLE_COLUMN_ID_CONTENT_ID[id as OnSaleEventsTableColumnId],\n }[sectionType];\n};\n\nexport const isCustomColumn = (id: string, sectionType: SectionType) => {\n return getContentIdForColumn(id, sectionType) == null;\n};\n\nexport const useColumnDisplayName = ({\n columnIds,\n sectionType,\n}: {\n columnIds: string[];\n sectionType: SectionType;\n}) => {\n const contentContext = useContentContext();\n\n const { isTag } = useTagsForEntityType(\n SECTION_TYPE_TO_ACTION_OUTBOX_ENTITY_TYPE[sectionType],\n true\n );\n\n const { value: customListingColumns = [] } = useServerUserSetting<\n CustomListingColumn[]\n >({\n id: SECTION_TYPE_TO_CUSTOM_COLUMN_SETTING[sectionType],\n });\n\n const displayNamesWithContentId: string[] = useMemo(\n () =>\n columnIds.map((id) => {\n if (isTag(id)) {\n return id;\n } else if (isCustomColumn(id, sectionType)) {\n return customListingColumns.find((c) => c.id === id)?.name ?? id;\n } else {\n return getContentIdForColumn(id, sectionType);\n }\n }),\n [columnIds, customListingColumns, isTag, sectionType]\n );\n\n const columnIdDisplayNameMapping: Record = useMemo(\n () =>\n columnIds.reduce((access, id) => {\n if (isTag(id)) {\n return {\n ...access,\n [id]: id,\n };\n } else if (isCustomColumn(id, sectionType)) {\n const customColumn = customListingColumns.find((c) => c.id === id);\n return {\n ...access,\n [id]: customColumn?.name ?? id,\n };\n } else {\n const contentId = getContentIdForColumn(id, sectionType);\n return {\n ...access,\n [id]: getContent(contentId, contentContext),\n };\n }\n }, {}),\n [columnIds, customListingColumns, contentContext, isTag, sectionType]\n );\n\n const displayNames: string[] = useMemo(() => {\n return displayNamesWithContentId.map((name) =>\n getContent(name, contentContext)\n );\n }, [contentContext, displayNamesWithContentId]);\n\n return { displayNames, columnIdDisplayNameMapping };\n};\n","import { DndContext, DragEndEvent } from '@dnd-kit/core';\nimport { SortableContext } from '@dnd-kit/sortable';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DropWrapper } from 'src/core/POS/DragAndDropSort/DragAndDrop';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\n\nimport { ColumnListItem } from '../InventoryTableColumns/ColumnListItem/ColumnListItem';\nimport { useColumnDisplayName } from '../InventoryTableColumns/useColumnDisplayName';\nimport * as styles from './ColumnsSection.css';\n\ntype ColumnsSelectionProps = {\n titleContentId?: ContentId;\n items?: string[];\n renderActions: (id: string) => JSX.Element;\n onDragEnd?: (event: DragEndEvent) => void;\n sectionType: SectionType;\n highlightIndex?: number;\n shouldHideItem?: (id: string) => boolean;\n};\n\n/**\n * The sections that represent the Add Columns and Current Columns for the Edit Columns experience\n */\nexport const ColumnsSection = ({\n titleContentId,\n items = [],\n renderActions,\n onDragEnd,\n sectionType,\n highlightIndex,\n shouldHideItem,\n}: ColumnsSelectionProps) => {\n const { displayNames } = useColumnDisplayName({\n columnIds: items,\n sectionType,\n });\n\n return (\n
    \n {titleContentId && (\n
    \n \n
    \n )}\n
    \n {onDragEnd ? (\n \n \n {items.map((id, i) => {\n if (shouldHideItem?.(id)) {\n return null;\n }\n\n return (\n \n \n \n {displayNames[i]}\n \n \n \n );\n })}\n \n \n ) : (\n <>\n {items.map((id, i) => (\n \n \n {displayNames[i]}\n \n \n ))}\n \n )}\n
    \n
    \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const OperatorsIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const CustomColumnInstruction = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import 'react-autocomplete-input/dist/bundle.css';\n\nimport clsx from 'clsx';\nimport { nanoid } from 'nanoid';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useToggle } from 'react-use';\nimport { CancelButton, IconButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n Content,\n isContentId,\n useContent,\n useContentContext,\n useContents,\n} from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { typography } from 'src/core/themes/shared.css';\nimport { Button, Popover } from 'src/core/ui';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { OperatorsIcon } from 'src/svgs/OperatorsIcon';\nimport { InfoOutlineIcon } from 'src/svgs/Viagogo';\nimport { EventsFormulaFields } from 'src/tables/EventsTable/configs/EventsTableColumnsConfig';\nimport { SaleFormulaFields } from 'src/tables/SalesTable/SalesTable.type';\nimport { getColumnPersonalization } from 'src/utils/columns/columnPersonalizationUtils';\nimport {\n editableFormulaToTokens,\n FORMULA_DISPLAY_ALLOWED_INSERT_CHARS,\n FORMULA_OPERATORS_AND_NUMBERS_REGEXP_START,\n fromExecutableFormula,\n tagKeyToFieldName,\n toExecutableFormula,\n} from 'src/utils/columns/customColumnUtils';\nimport {\n findDependentEventsTableColumnIds,\n validateFormula as validateFormulaEvents,\n} from 'src/utils/columns/events/eventsCustomColumnUtils';\nimport { FORMULA_FIELD_TO_COLUMN_ID as FORMULA_FIELD_TO_COLUMN_ID_EVENT } from 'src/utils/columns/events/eventsCustomColumnUtils.constants';\nimport {\n CustomEventsColumn,\n CustomOnSaleEventsColumn,\n} from 'src/utils/columns/events/eventsCustomColumnUtils.types';\nimport {\n findDependentListingTableColumnIds as findDependentListingTableColumnIdsListing,\n FORMULA_FIELD_TO_COLUMN_ID as FORMULA_FIELD_TO_COLUMN_ID_LISTING,\n validateFormula as validateFormulaListing,\n} from 'src/utils/columns/inventory/inventoryCustomColumnUtils';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport {\n findDependentListingTableColumnIds as findDependentListingTableColumnIdsListingReport,\n FORMULA_FIELD_TO_COLUMN_ID as FORMULA_FIELD_TO_COLUMN_ID_LISTING_REPORT,\n validateFormula as validateFormulaListingReport,\n} from 'src/utils/columns/inventory/inventoryReportCustomColumnUtils';\nimport { CustomMarketplacePaymentsColumn } from 'src/utils/columns/payments/paymentsCustomColumnUtils.types';\nimport { CustomPurchasesColumn } from 'src/utils/columns/purchases/purchasesCustomColumnUtils.types';\nimport {\n findDependentSaleTableColumnIds,\n FORMULA_FIELD_TO_COLUMN_ID as FORMULA_FIELD_TO_COLUMN_ID_SALE,\n validateFormula as validateFormulaSales,\n} from 'src/utils/columns/sales/salesCustomColumnUtils';\nimport { CustomSalesColumn } from 'src/utils/columns/sales/salesCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ContentIds } from 'src/utils/constants/contentIdDataMap';\nimport {\n EVENTS_FORMULA_FIELDS_TO_CID,\n EVENTS_TABLE_COLUMN_ID_TO_CONTENT_ID,\n LISTING_FORMULA_FIELDS_TO_CID,\n LISTING_REPORT_FORMULA_FIELDS_TO_CID,\n LISTING_REPORT_TABLE_COLUMN_ID_TO_CONTENT_ID,\n LISTING_TABLE_COLUMN_ID_TO_CONTENT_ID,\n LISTING_TABLE_FLATTENED_COLUMN_ID_TO_CONTENT_ID,\n ListingFormulaFieldsListing,\n ListingFormulaFieldsListingReportMetrics,\n ON_SALE_EVENT_TABLE_COLUMN_ID_CONTENT_ID,\n PAYMENTS_TABLE_COLUMN_ID_TO_CONTENT_ID,\n PURCHASE_TABLE_COLUMN_ID_TO_CONTENT_ID,\n SALE_FORMULA_FIELDS_TO_CID,\n SALE_TABLE_COLUMN_ID_TO_CONTENT_ID,\n SALE_TABLE_FLATTENED_COLUMN_ID_TO_CONTENT_ID,\n} from 'src/utils/constants/contentIdMaps';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { hasFeatures } from 'src/utils/userUtils';\nimport { ActionOutboxEntityType, UserSetting } from 'src/WebApiController';\n\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '../Modal';\nimport { CustomColumnInstruction } from './CustomColumnInstruction';\nimport * as styles from './TableColumns.css';\n\nexport type CustomColumnType = {\n id: string;\n name: string;\n formula: string;\n dependency: string[];\n};\n\nexport function TableCustomColumnModal<\n T extends\n | CustomListingColumn\n | CustomSalesColumn\n | CustomEventsColumn\n | CustomPurchasesColumn\n | CustomMarketplacePaymentsColumn\n | CustomOnSaleEventsColumn,\n>({\n onClose,\n onSave,\n columnToEditId,\n sectionType,\n}: {\n onClose: () => void;\n onSave: (columns: T[]) => void;\n columnToEditId?: string;\n sectionType: SectionType;\n}) {\n const [isOpen, toggleIsOpen] = useToggle(true);\n const [showInfo, setShowInfo] = useState(false);\n const [showMetricSelector, setShowMetricSelector] = useState(false);\n const { appContext, loginContext } = useAppContext();\n const { contentResolver } = useContentContext();\n\n const nameColumnPlaceholder = useContent(ContentId.NameColumnPlaceholder);\n const requiredMsg = useContent(ContentId.Required);\n const invalidFormulaMsg = useContent(ContentId.InvalidFormula);\n const columnWithSameNameExistsMsg = useContent(\n ContentId.ColumnWithSameNameExists\n );\n\n const allPresetColumnsMap = {\n [SectionType.Events]: EVENTS_TABLE_COLUMN_ID_TO_CONTENT_ID,\n [SectionType.Listings]: LISTING_TABLE_COLUMN_ID_TO_CONTENT_ID,\n [SectionType.ListingsFlattened]: {\n ...LISTING_TABLE_FLATTENED_COLUMN_ID_TO_CONTENT_ID,\n ...LISTING_TABLE_COLUMN_ID_TO_CONTENT_ID,\n },\n [SectionType.ListingsReport]: LISTING_REPORT_TABLE_COLUMN_ID_TO_CONTENT_ID,\n [SectionType.InventorySideTable]: LISTING_TABLE_COLUMN_ID_TO_CONTENT_ID,\n [SectionType.Sales]: SALE_TABLE_COLUMN_ID_TO_CONTENT_ID,\n [SectionType.SalesFlattened]: {\n ...SALE_TABLE_FLATTENED_COLUMN_ID_TO_CONTENT_ID,\n ...SALE_TABLE_COLUMN_ID_TO_CONTENT_ID,\n },\n [SectionType.SalesReport]: SALE_TABLE_COLUMN_ID_TO_CONTENT_ID,\n [SectionType.SalesSideTable]: SALE_TABLE_COLUMN_ID_TO_CONTENT_ID,\n [SectionType.Purchases]: PURCHASE_TABLE_COLUMN_ID_TO_CONTENT_ID,\n [SectionType.PurchaseEvent]: PURCHASE_TABLE_COLUMN_ID_TO_CONTENT_ID,\n [SectionType.PurchaseSideTable]: PURCHASE_TABLE_COLUMN_ID_TO_CONTENT_ID,\n [SectionType.MarketplacePaymentsTable]:\n PAYMENTS_TABLE_COLUMN_ID_TO_CONTENT_ID,\n [SectionType.OnSaleEvents]: ON_SALE_EVENT_TABLE_COLUMN_ID_CONTENT_ID,\n }[sectionType] as Record;\n\n const allPresetColumnCid = new Set([...Object.values(allPresetColumnsMap)]);\n const allPresetColumnNames = useContents(\n Array.from(allPresetColumnCid.values())\n );\n\n const actionOutboxEntityType = useMemo(() => {\n switch (sectionType) {\n case SectionType.Events:\n return ActionOutboxEntityType.SellerEvent;\n case SectionType.Listings:\n case SectionType.ListingsFlattened:\n case SectionType.ListingsReport:\n case SectionType.InventorySideTable:\n return ActionOutboxEntityType.Listing;\n case SectionType.Sales:\n case SectionType.SalesFlattened:\n case SectionType.SalesReport:\n case SectionType.SalesSideTable:\n return ActionOutboxEntityType.Sale;\n case SectionType.Purchases:\n case SectionType.PurchaseEvent:\n case SectionType.PurchaseSideTable:\n return ActionOutboxEntityType.Purchase;\n default:\n return undefined;\n }\n }, [sectionType]);\n\n const { tagsMetadataNumeric } = useTagsForEntityType(\n actionOutboxEntityType,\n true\n );\n\n const {\n findDependentListingTableColumnIds,\n validateFormula,\n fieldOptionsPreset,\n } =\n sectionType === SectionType.Listings\n ? {\n findDependentListingTableColumnIds:\n findDependentListingTableColumnIdsListing,\n validateFormula: validateFormulaListing,\n fieldOptionsPreset: LISTING_FORMULA_FIELDS_TO_CID,\n }\n : sectionType === SectionType.ListingsReport\n ? {\n findDependentListingTableColumnIds:\n findDependentListingTableColumnIdsListingReport,\n validateFormula: validateFormulaListingReport,\n fieldOptionsPreset: LISTING_REPORT_FORMULA_FIELDS_TO_CID,\n }\n : sectionType === SectionType.Sales\n ? {\n findDependentListingTableColumnIds: findDependentSaleTableColumnIds,\n validateFormula: validateFormulaSales,\n fieldOptionsPreset: SALE_FORMULA_FIELDS_TO_CID,\n }\n : sectionType === SectionType.SalesReport\n ? {\n findDependentListingTableColumnIds: findDependentSaleTableColumnIds,\n validateFormula: validateFormulaSales,\n fieldOptionsPreset: SALE_FORMULA_FIELDS_TO_CID,\n }\n : {\n findDependentListingTableColumnIds: findDependentEventsTableColumnIds,\n validateFormula: validateFormulaEvents,\n fieldOptionsPreset: EVENTS_FORMULA_FIELDS_TO_CID,\n };\n\n const filteredFormulaFields = useMemo(\n () =>\n Object.entries(fieldOptionsPreset)\n .filter(([field]) => {\n const columnId =\n sectionType === SectionType.Listings\n ? FORMULA_FIELD_TO_COLUMN_ID_LISTING[\n field as ListingFormulaFieldsListing\n ]\n : sectionType === SectionType.ListingsReport\n ? FORMULA_FIELD_TO_COLUMN_ID_LISTING_REPORT[\n field as ListingFormulaFieldsListingReportMetrics\n ]\n : sectionType === SectionType.Sales\n ? FORMULA_FIELD_TO_COLUMN_ID_SALE[\n field as keyof SaleFormulaFields\n ]\n : sectionType === SectionType.SalesReport\n ? FORMULA_FIELD_TO_COLUMN_ID_SALE[\n field as keyof SaleFormulaFields\n ]\n : FORMULA_FIELD_TO_COLUMN_ID_EVENT[\n field as keyof EventsFormulaFields\n ];\n\n const columnDef = getColumnPersonalization({\n id: columnId ?? '',\n sectionType,\n });\n const hasFeatureForColumn =\n columnDef.requiredFeatures.length === 0 ||\n hasFeatures(\n loginContext?.user,\n appContext?.features,\n columnDef.requiredFeatures\n );\n return hasFeatureForColumn;\n })\n .reduce>(\n (acc, [field, contentId]) => ({\n ...acc,\n [field]: contentId,\n }),\n {}\n ),\n [appContext?.features, fieldOptionsPreset, loginContext?.user, sectionType]\n );\n\n const fieldOptions = useMemo(\n () => ({\n ...filteredFormulaFields,\n ...tagsMetadataNumeric?.reduce>(\n (acc, tag) => ({\n ...acc,\n [tagKeyToFieldName(tag.key)]: tag.key,\n }),\n {}\n ),\n }),\n [filteredFormulaFields, tagsMetadataNumeric]\n );\n\n const fieldOptionsReverse = useMemo(() => {\n return Object.entries(fieldOptions).reduce>(\n (acc, entry) => {\n const [key, value] = entry;\n if (!isContentId(value)) {\n acc[value] = key;\n return acc;\n }\n\n const content = contentResolver(\n ContentIds[value as ContentId]\n ) as string;\n acc[content] = key;\n return acc;\n },\n {}\n );\n }, [contentResolver, fieldOptions]);\n\n const fieldOptionsDisplay = useMemo(() => {\n const options: Record = {};\n Object.keys(fieldOptionsReverse).forEach((key) => {\n options[fieldOptionsReverse[key]] = key;\n });\n return options;\n }, [fieldOptionsReverse]);\n\n const autoCompleteOptions = useMemo(\n () => Object.keys(fieldOptionsReverse),\n [fieldOptionsReverse]\n );\n\n const { value: customEventsColumns = [] } = useServerUserSetting<\n CustomEventsColumn[]\n >({\n id: UserSetting.EventsCustomColumns,\n });\n const { value: customListingColumns = [] } = useServerUserSetting<\n CustomListingColumn[]\n >({\n id: UserSetting.InventoryCustomColumns,\n });\n const { value: customSaleColumns = [] } = useServerUserSetting<\n CustomSalesColumn[]\n >({\n id: UserSetting.SaleCustomColumns,\n });\n const { value: customPurchaseColumns = [] } = useServerUserSetting<\n CustomSalesColumn[]\n >({\n id: UserSetting.PurchaseCustomColumns,\n });\n const { value: customPaymentsColumns = [] } = useServerUserSetting<\n CustomMarketplacePaymentsColumn[]\n >({\n id: UserSetting.MarketplacePaymentsCustomColumns,\n });\n const { value: customOnSaleEventColumns = [] } = useServerUserSetting<\n CustomOnSaleEventsColumn[]\n >({\n id: UserSetting.OnSaleEventCustomColumns,\n });\n\n const customColumns = {\n [SectionType.Events]: customEventsColumns,\n [SectionType.Listings]: customListingColumns,\n [SectionType.ListingsFlattened]: customListingColumns,\n [SectionType.ListingsReport]: customListingColumns,\n [SectionType.InventorySideTable]: customListingColumns,\n [SectionType.Sales]: customSaleColumns,\n [SectionType.SalesFlattened]: customSaleColumns,\n [SectionType.SalesReport]: customSaleColumns,\n [SectionType.SalesSideTable]: customSaleColumns,\n [SectionType.Purchases]: customPurchaseColumns,\n [SectionType.PurchaseEvent]: customPurchaseColumns,\n [SectionType.PurchaseSideTable]: customPurchaseColumns,\n [SectionType.MarketplacePaymentsTable]: customPaymentsColumns,\n [SectionType.OnSaleEvents]: customOnSaleEventColumns,\n }[sectionType] as T[];\n\n const {\n register,\n handleSubmit,\n setError,\n formState: { errors },\n watch,\n setValue,\n clearErrors,\n } = useForm({\n defaultValues: columnToEditId\n ? customColumns.find((c) => c.id === columnToEditId)\n : { id: nanoid() },\n });\n\n const name = watch('name');\n const [formulaTokens, setFormulaTokens] = useState([]);\n const [formulaCaretPosition, setFormulaCaretPosition] = useState(-1);\n\n const tokenRefs = useRef([]);\n\n const validateNewCustomColumn = useCallback(\n (name: string, formula: string) => {\n let hasError = false;\n\n // check against not only custom column but predefined columns\n const allColumnNames = [\n ...allPresetColumnNames,\n ...customColumns.map((c) => c.name),\n ];\n if (\n allColumnNames.some(\n (n) => n.toLocaleLowerCase() === name.toLocaleLowerCase()\n )\n ) {\n if (\n !columnToEditId ||\n (columnToEditId &&\n customColumns.find((c) => c.id === columnToEditId)?.name !== name)\n ) {\n setError(\n 'name',\n { message: columnWithSameNameExistsMsg },\n { shouldFocus: true }\n );\n hasError = true;\n }\n }\n\n if (!validateFormula(formula, tagsMetadataNumeric)) {\n setError(\n 'formula',\n { message: invalidFormulaMsg },\n { shouldFocus: true }\n );\n hasError = true;\n }\n // check empty\n if (!name) {\n setError('name', { message: requiredMsg }, { shouldFocus: true });\n hasError = true;\n }\n\n if (!formula) {\n setError('formula', { message: requiredMsg }, { shouldFocus: true });\n hasError = true;\n }\n\n return !hasError;\n },\n [\n allPresetColumnNames,\n columnToEditId,\n columnWithSameNameExistsMsg,\n customColumns,\n invalidFormulaMsg,\n requiredMsg,\n setError,\n tagsMetadataNumeric,\n validateFormula,\n ]\n );\n\n const onSaveHandler = (newCustomColumn: CustomColumnType) => {\n newCustomColumn.name = newCustomColumn.name.trim();\n newCustomColumn.formula = toExecutableFormula(formulaTokens ?? []).trim();\n\n if (!validateNewCustomColumn(newCustomColumn.name, newCustomColumn.formula))\n return;\n\n const editableFormula = fromExecutableFormula(newCustomColumn.formula);\n newCustomColumn.dependency = findDependentListingTableColumnIds(\n editableFormula ?? ''\n );\n\n onSave([\n ...customColumns.filter((c) =>\n columnToEditId ? c.id !== columnToEditId : true\n ),\n newCustomColumn,\n ] as T[]);\n\n toggleIsOpen();\n };\n\n const formulaTokensWithCaret = useMemo(() => {\n if (formulaCaretPosition === -1) return formulaTokens;\n const result = [...formulaTokens];\n result.splice(formulaCaretPosition, 0, '|');\n return result;\n }, [formulaCaretPosition, formulaTokens]);\n\n const keyUpHandler = useCallback(\n (e: KeyboardEvent) => {\n // Keys are ignored if the editor is out of focus (no caret)\n if (formulaCaretPosition === -1) return;\n if (FORMULA_DISPLAY_ALLOWED_INSERT_CHARS.includes(e.key)) {\n if (\n // Number pressed and the previous token is number --> append\n /[0-9]/.test(e.key) &&\n formulaCaretPosition > 0 &&\n /[0-9]/.test(formulaTokens[formulaCaretPosition - 1])\n ) {\n const newTokens = [...formulaTokens];\n newTokens[formulaCaretPosition - 1] =\n formulaTokens[formulaCaretPosition - 1] + e.key;\n setFormulaTokens(newTokens);\n } else if (\n // Number pressed and the previous next is number --> prepend\n /[0-9]/.test(e.key) &&\n formulaCaretPosition < formulaTokens.length &&\n /[0-9]/.test(formulaTokens[formulaCaretPosition])\n ) {\n const newTokens = [...formulaTokens];\n newTokens[formulaCaretPosition] =\n e.key + formulaTokens[formulaCaretPosition];\n setFormulaTokens(newTokens);\n } else if (e.key === '@') {\n // @ --> open the metric selector dropdown\n setShowMetricSelector(true);\n } else {\n // else: replace the caret with the typed char (number or operator) and set new caret\n const newTokens = [...formulaTokensWithCaret].map((token) =>\n token === '|' ? e.key : token\n );\n setFormulaTokens(newTokens);\n setFormulaCaretPosition(formulaCaretPosition + 1);\n }\n } else if (e.key === 'ArrowLeft') {\n // move caret left\n setFormulaCaretPosition(formulaCaretPosition - 1);\n } else if (e.key === 'ArrowRight') {\n // move caret right\n setFormulaCaretPosition(formulaCaretPosition + 1);\n } else if (e.key === 'Backspace') {\n // delete one token before the caret\n const newTokens = [...formulaTokens];\n newTokens.splice(formulaCaretPosition - 1, 1);\n setFormulaTokens(newTokens);\n setFormulaCaretPosition(formulaCaretPosition - 1);\n } else if (e.key === 'Delete') {\n // delete one token after the caret\n const newTokens = [...formulaTokens];\n newTokens.splice(formulaCaretPosition, 1);\n setFormulaTokens(newTokens);\n }\n },\n [formulaCaretPosition, formulaTokens, formulaTokensWithCaret]\n );\n\n useEffect(() => {\n window.addEventListener('keyup', keyUpHandler);\n\n return () => {\n window.removeEventListener('keyup', keyUpHandler);\n };\n }, [keyUpHandler]);\n\n useEffect(() => {\n // Set the text value on load\n if (columnToEditId) {\n const formula = customColumns.find((c) => c.id === columnToEditId)\n ?.formula;\n if (formula && autoCompleteOptions.length) {\n setFormulaTokens(\n editableFormulaToTokens(\n fromExecutableFormula(formula),\n fieldOptionsReverse\n )\n );\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [columnToEditId, customColumns, autoCompleteOptions.length]);\n\n useEffect(() => {\n if (!isOpen) setTimeout(onClose, 300);\n }, [isOpen, onClose]);\n\n useEffect(() => {\n // this ensures keeping refs up-to-date for click tracking & caret positioning\n tokenRefs.current = Array(formulaTokens.length).fill(null);\n clearErrors('formula');\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [formulaTokens]);\n\n return (\n {\n // hide caret\n setFormulaCaretPosition(-1);\n setShowMetricSelector(false);\n }}\n >\n \n
    \n
    \n {columnToEditId ? (\n \n ) : (\n \n )}\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n \n {\n clearErrors('name');\n setValue('name', e.target.value);\n }}\n />\n \n
    \n \n\n \n \n setShowInfo((prev) => !prev)}\n >\n \n
    \n \n \n \n \n \n
    \n
    \n \n
    \n }>\n
    \n \n }\n style={{\n display: 'block',\n margin: 'auto',\n padding: vars.spacing.sm,\n }}\n >\n {['+', '-', '*', '/', '(', ')'].map((label, i) => (\n {\n e.stopPropagation();\n // add to tokens at caret position\n const newTokens = [...formulaTokensWithCaret].map(\n (token) => (token === '|' ? label : token)\n );\n setFormulaTokens(newTokens);\n setFormulaCaretPosition(formulaCaretPosition + 1);\n }}\n >\n {label}\n
    \n ))}\n \n \n \n \n }\n style={{\n display: 'block',\n margin: 'auto',\n padding: vars.spacing.sm,\n width: '40%',\n }}\n >\n {autoCompleteOptions.map((label, i) => (\n {\n e.stopPropagation();\n const tokenToAdd = fieldOptionsReverse[label] ?? '|';\n // add to tokens at caret position\n const newTokens = [...formulaTokensWithCaret].map(\n (token) => (token === '|' ? tokenToAdd : token)\n );\n setFormulaTokens(newTokens);\n setFormulaCaretPosition(formulaCaretPosition + 1);\n }}\n >\n {label}\n \n ))}\n \n \n \n
    \n {\n e.stopPropagation();\n const tokenRowRange = formulaTokens\n .map((token, i) => ({\n i,\n token,\n }))\n .filter((tokenItem) => {\n const tokenElement = tokenRefs.current[tokenItem.i];\n if (!tokenElement) return false;\n const rect = tokenElement.getBoundingClientRect();\n return (\n e.clientY >= rect.y && e.clientY <= rect.y + rect.height\n );\n });\n if (tokenRowRange.length === 0) {\n setFormulaCaretPosition(formulaTokens.length);\n return;\n }\n const position = tokenRowRange.find((tokenItem) => {\n const tokenElement = tokenRefs.current[tokenItem.i];\n if (!tokenElement) return false;\n const rect = tokenElement.getBoundingClientRect();\n return rect.x > e.clientX;\n });\n if (position) {\n setFormulaCaretPosition(position.i);\n } else {\n // none of them were left of the click\n const lastInRow = tokenRowRange.at(-1) as {\n i: number;\n token: string;\n };\n setFormulaCaretPosition(lastInRow.i + 1);\n }\n }}\n >\n {formulaTokensWithCaret.map((token, i) =>\n token === '|' ? (\n showMetricSelector ? (\n {\n if (!metric) return;\n const metricToken = fieldOptionsReverse[metric];\n if (!metricToken) return;\n const newTokens = [...formulaTokensWithCaret].map(\n (token) => (token === '|' ? metricToken : token)\n );\n setFormulaTokens(newTokens);\n setFormulaCaretPosition(formulaCaretPosition + 1);\n setShowMetricSelector(false);\n }}\n searchable\n valueOptionsContent={autoCompleteOptions.reduce(\n (options, current) => ({\n ...options,\n [current]: current,\n }),\n {}\n )}\n />\n ) : (\n
    \n |\n
    \n )\n ) : (\n {\n tokenRefs.current[i] = el;\n }}\n className={styles.formulaToken}\n onClick={(e) => {\n e.stopPropagation();\n const newCaretPosition =\n formulaTokens.findIndex((t) => t === token) + 1;\n setFormulaCaretPosition(newCaretPosition);\n }}\n >\n {FORMULA_OPERATORS_AND_NUMBERS_REGEXP_START.test(token)\n ? token\n : fieldOptionsDisplay[token]}\n \n )\n )}\n
    \n \n
    \n \n
    \n \n \n \n \n \n );\n}\n","import { DragEndEvent } from '@dnd-kit/core';\nimport { arrayMove } from '@dnd-kit/sortable';\nimport { MouseEvent, useCallback, useMemo, useState } from 'react';\nimport { useToggle } from 'react-use';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { vars } from 'src/core/themes';\nimport { Button, Switch } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport {\n FormatOption,\n FormatOptionEntries,\n FormatOptionPill,\n LISTING_TABLE_COLUMN_DEFAULT_PRECISION,\n} from 'src/modals/EditTableColumns';\nimport { DeleteIcon, EditIcon, IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { getColumnConfigById } from 'src/utils/columns/columnUtils';\nimport {\n CustomEventsColumn,\n CustomOnSaleEventsColumn,\n} from 'src/utils/columns/events/eventsCustomColumnUtils.types';\nimport { GROUP_BY_TO_PRIMARY_COLUMN_ID } from 'src/utils/columns/inventory/inventoryColumnUtils.constants';\nimport { ListingTableColumnId } from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { CustomMarketplacePaymentsColumn } from 'src/utils/columns/payments/paymentsCustomColumnUtils.types';\nimport { CustomPurchasesColumn } from 'src/utils/columns/purchases/purchasesCustomColumnUtils.types';\nimport { CustomSalesColumn } from 'src/utils/columns/sales/salesCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { ReportGroupBy, Tag, UserSetting } from 'src/WebApiController';\n\nimport { ColumnsSection } from './ColumnsSection';\nimport * as styles from './TableColumns.css';\nimport { TableCustomColumnModal } from './TableCustomColumnModal';\n\ntype TableColumnsInputProps = {\n // Override of required column ids - additive to the default required columns\n requiredColumns?: string[];\n userColumnSelection: string[];\n onUserColumnSelectionChange: (newSelection: string[]) => void;\n userColumnSorting: string[];\n onUserColumnSortingChange: (newSorting: string[]) => void;\n userEditableColumns?: string[];\n onUserEditableColumnsChange?: (newEditableColumns: string[]) => void;\n customColumns: T[];\n onCustomColumnsChange?: (newCustomColumns: T[]) => void;\n reportingTags?: Tag[];\n enableConfigureEditability?: boolean;\n sectionType?: SectionType;\n groupBy?: ReportGroupBy;\n // Only used with SectionType.Listings\n // We only want to show this column for setting if it's visible in the current view\n showTicketClassColor?: boolean;\n style?: React.CSSProperties;\n // Only supported for Purchase for now, used for filtering visible columns\n viewMode?: string | null;\n};\n\nexport function TableColumnsInput<\n T extends\n | CustomListingColumn\n | CustomSalesColumn\n | CustomEventsColumn\n | CustomPurchasesColumn\n | CustomMarketplacePaymentsColumn\n | CustomOnSaleEventsColumn,\n>({\n requiredColumns,\n userColumnSelection,\n onUserColumnSelectionChange,\n userColumnSorting,\n onUserColumnSortingChange,\n userEditableColumns,\n onUserEditableColumnsChange,\n customColumns,\n onCustomColumnsChange,\n reportingTags,\n enableConfigureEditability,\n sectionType = SectionType.Listings,\n groupBy,\n showTicketClassColor,\n viewMode,\n style,\n}: TableColumnsInputProps) {\n const [isCustomColumnModalOpen, toggleCustomColumnModal] = useToggle(false);\n const [customColumnToEditId, setCustomColumnToEditId] = useState();\n const [customColumnToDeleteId, setCustomColumnToDeleteId] =\n useState();\n const [highlightedItemIndex, setHighlightedItemIndex] = useState(-1);\n\n const deleteCustomColumnConfirmDialog = useBasicDialog();\n\n const columnNumberPrecisionSettingId = {\n [SectionType.Events]: UserSetting.EventsColumnNumberPrecision,\n [SectionType.Listings]: UserSetting.InventoryColumnNumberPrecision,\n [SectionType.ListingsFlattened]:\n UserSetting.InventoryFlattenedColumnNumberPrecision,\n [SectionType.ListingsReport]: UserSetting.InventoryColumnNumberPrecision,\n [SectionType.InventorySideTable]:\n UserSetting.InventorySideTableColumnNumberPrecision,\n [SectionType.Sales]: UserSetting.SaleColumnNumberPrecision,\n [SectionType.SalesFlattened]:\n UserSetting.SaleFlattenedColumnNumberPrecision,\n [SectionType.SalesReport]: UserSetting.SaleColumnNumberPrecision,\n [SectionType.SalesSideTable]:\n UserSetting.SalesSideTableColumnNumberPrecision,\n [SectionType.Purchases]: UserSetting.PurchaseColumnNumberPrecision,\n [SectionType.PurchaseEvent]: UserSetting.PurchaseEventColumnNumberPrecision,\n [SectionType.PurchaseSideTable]:\n UserSetting.PurchaseSideTableColumnNumberPrecision,\n [SectionType.MarketplacePaymentsTable]:\n UserSetting.MarketplacePaymentsColumnNumberPrecision,\n [SectionType.OnSaleEvents]: UserSetting.OnSaleEventColumnNumberPrecision,\n }[sectionType];\n\n const {\n value: storedColumnNumberPrecisions = {},\n setUserSetting: setNumberPrecisionSetting,\n } = useServerUserSetting({\n id: columnNumberPrecisionSettingId,\n });\n\n const updateNumberPrecisionSetting = useCallback(\n (id: string, precision: FormatOption) => {\n setNumberPrecisionSetting({\n ...storedColumnNumberPrecisions,\n [id]: precision,\n });\n },\n [setNumberPrecisionSetting, storedColumnNumberPrecisions]\n );\n\n const isTagColumn = useCallback(\n (tagName: string) => (reportingTags ?? []).some((t) => t.key === tagName),\n [reportingTags]\n );\n\n const moveColumnUnderLastEnabled = useCallback(\n (id: string) => {\n const currentPosition = userColumnSorting.indexOf(id);\n const lastEnabledPosition = userColumnSorting.findLastIndex((col) =>\n userColumnSelection.includes(col)\n );\n if (\n currentPosition === -1 ||\n lastEnabledPosition === -1 ||\n currentPosition === lastEnabledPosition\n ) {\n return;\n }\n const newPosition =\n currentPosition < lastEnabledPosition\n ? lastEnabledPosition\n : lastEnabledPosition + 1;\n onUserColumnSortingChange(\n arrayMove(userColumnSorting, currentPosition, newPosition)\n );\n setHighlightedItemIndex(newPosition);\n setTimeout(() => {\n // reset one-off highlight\n setHighlightedItemIndex(-1);\n }, 1100);\n },\n [onUserColumnSortingChange, userColumnSelection, userColumnSorting]\n );\n\n const addColumn = useCallback(\n (id: string) => {\n moveColumnUnderLastEnabled(id);\n onUserColumnSelectionChange([...userColumnSelection, id]);\n },\n [\n moveColumnUnderLastEnabled,\n onUserColumnSelectionChange,\n userColumnSelection,\n ]\n );\n\n const removeColumn = useCallback(\n (id: string) => {\n moveColumnUnderLastEnabled(id);\n onUserColumnSelectionChange(\n userColumnSelection?.filter((cId) => cId !== id)\n );\n },\n [\n moveColumnUnderLastEnabled,\n onUserColumnSelectionChange,\n userColumnSelection,\n ]\n );\n\n const deleteCustomColumn = useCallback(\n (id: string) => {\n removeColumn(id);\n const remainingColumns = customColumns.filter(\n (c) => (c as T & { id: string }).id !== id\n ) as T[];\n onCustomColumnsChange?.(remainingColumns);\n },\n [customColumns, removeColumn, onCustomColumnsChange]\n );\n\n const editCustomColumn = useCallback(\n (id: string) => {\n if (!isCustomColumnModalOpen) {\n setCustomColumnToEditId(id);\n toggleCustomColumnModal();\n }\n },\n [isCustomColumnModalOpen, toggleCustomColumnModal]\n );\n\n const renderColumnRowActions = useCallback(\n (id: string /*isColumnAdded?: boolean*/) => {\n const personalization = getColumnConfigById({\n id,\n customColumns,\n sectionType,\n reportingTags,\n }).personalization;\n\n const {\n isNumeric,\n isDateTime,\n isCurrency,\n isPercent,\n isEditabilityConfigurable,\n isInteger,\n } = personalization;\n\n let isRequired = personalization.isRequired;\n if (groupBy) {\n if (sectionType === SectionType.ListingsReport) {\n isRequired = GROUP_BY_TO_PRIMARY_COLUMN_ID[groupBy] === id;\n }\n }\n if (requiredColumns?.includes(id)) {\n isRequired = true;\n }\n\n const isCustom = customColumns.find(\n (c) => (c as T & { id: string }).id === id\n );\n\n const toggleColumn = (isChecked: boolean) => {\n if (isChecked) {\n if (!userColumnSelection.includes(id)) {\n addColumn(id);\n }\n } else {\n if (!isRequired) removeColumn(id);\n }\n };\n\n return (\n {\n e.stopPropagation();\n }}\n >\n {isCustom && (\n
    \n \n
    \n )}\n {isTagColumn(id) && (\n
    \n \n
    \n )}\n {isEditabilityConfigurable && enableConfigureEditability ? (\n \n {\n e.stopPropagation();\n const isChecked = e.target.checked;\n if (isChecked) {\n onUserEditableColumnsChange?.([\n ...userEditableColumns!,\n id,\n ]);\n } else {\n onUserEditableColumnsChange?.(\n userEditableColumns!.filter((cId) => cId !== id)\n );\n }\n }}\n label={\n userEditableColumns!.includes(id) ? (\n \n ) : (\n \n )\n }\n labelPosition=\"right\"\n />\n \n ) : null}\n {isNumeric || isDateTime ? (\n \n ) : null}\n\n {isCustom && onCustomColumnsChange && (\n <>\n {\n editCustomColumn(id);\n }}\n />\n {\n setCustomColumnToDeleteId(id);\n deleteCustomColumnConfirmDialog.launchDialog();\n }}\n />\n \n )}\n\n \n \n );\n },\n [\n addColumn,\n customColumns,\n deleteCustomColumnConfirmDialog,\n editCustomColumn,\n enableConfigureEditability,\n groupBy,\n isTagColumn,\n onCustomColumnsChange,\n onUserEditableColumnsChange,\n removeColumn,\n reportingTags,\n requiredColumns,\n sectionType,\n storedColumnNumberPrecisions,\n updateNumberPrecisionSetting,\n userColumnSelection,\n userEditableColumns,\n ]\n );\n\n const renderToggleButton = useCallback(\n (id: string) => renderColumnRowActions(id),\n [renderColumnRowActions]\n );\n\n /**\n * Handler that sets the column order based on the drag drop event\n */\n const onDragEndHandler = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over) return;\n const activeIndex = active.data.current?.sortable.index;\n const overIndex = over?.data.current?.sortable.index;\n\n onUserColumnSortingChange(\n arrayMove(userColumnSorting, activeIndex, overIndex)\n );\n },\n [onUserColumnSortingChange, userColumnSorting]\n );\n\n const openAddColumnModal = useCallback(\n (e: MouseEvent) => {\n e.stopPropagation();\n if (!isCustomColumnModalOpen) {\n setCustomColumnToEditId(undefined);\n toggleCustomColumnModal();\n }\n },\n [isCustomColumnModalOpen, toggleCustomColumnModal]\n );\n\n const hiddenItemIds = useMemo(() => {\n if (showTicketClassColor) {\n return [];\n }\n\n return [ListingTableColumnId.TicketClassColor.toString()];\n }, [showTicketClassColor]);\n\n const shouldHideItem = useCallback(\n (id: string) => {\n if (hiddenItemIds?.includes(id)) {\n return true;\n }\n\n const { visibleViewModes } = getColumnConfigById({\n id,\n customColumns,\n sectionType,\n reportingTags,\n }).personalization;\n\n if (\n visibleViewModes.length > 0 &&\n viewMode &&\n !visibleViewModes.includes(viewMode)\n ) {\n return true;\n }\n\n return false;\n },\n [customColumns, hiddenItemIds, reportingTags, sectionType, viewMode]\n );\n\n return (\n <>\n
    \n \n {onCustomColumnsChange && (\n \n \n \n \n )}\n
    \n {isCustomColumnModalOpen && (\n {\n onCustomColumnsChange?.(newColumns);\n }}\n sectionType={sectionType}\n />\n )}\n\n }\n bodyText={}\n onOkay={() => {\n if (customColumnToDeleteId) {\n deleteCustomColumn(customColumnToDeleteId);\n setCustomColumnToDeleteId(undefined);\n }\n\n deleteCustomColumnConfirmDialog.closeDialog();\n }}\n onCancel={() => deleteCustomColumnConfirmDialog.closeDialog()}\n />\n \n );\n}\n","import clsx from 'clsx';\nimport { isEqual, uniq } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useToggle } from 'react-use';\nimport { CancelButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { prependTicketClassColorColumnForFirstTime } from 'src/components/Listings/InventoryEventPage/Sections/ManualPricingSection.utils';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { typography } from 'src/core/themes/shared.css';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { ON_SALE_EVENTS_TABLE_COLUMNS_CONFIG } from 'src/navigations/Routes/OnSaleEvent/OnSaleEventView.constants';\nimport { EVENTS_TABLE_COLUMNS_CONFIG } from 'src/tables/EventsTable/configs/EventsTableColumnsConfig';\nimport { LISTING_REPORT_TABLE_COLUMNS_CONFIG } from 'src/tables/ListingTable/configs/ListingReportTableColumnsConfig';\nimport { getListingTableColumnConfigs } from 'src/tables/ListingTable/configs/ListingTableColumnsConfig';\nimport { LISTING_TABLE_FLATTENED_COLUMNS_CONFIG } from 'src/tables/ListingTable/configs/ListingTableFlattenedColumnsConfig';\nimport { useMarketplacePaymentsTableColumnsConfig } from 'src/tables/MarketplacePaymentsTable';\nimport { useDefaultPaymentsColumnConfig } from 'src/tables/PaymentsTable/useDefaultPaymentsColumnConfig';\nimport { PURCHASE_TABLE_COLUMNS_CONFIG } from 'src/tables/PurchaseTable/configs/PurchaseTableColumnsConfig';\nimport { SALE_REPORT_TABLE_COLUMNS_CONFIG } from 'src/tables/SalesTable/configs/SaleReportTableColumnsConfig';\nimport { SALE_TABLE_COLUMNS_CONFIG } from 'src/tables/SalesTable/configs/SaleTableColumnsConfig';\nimport { SALE_TABLE_FLATTENED_COLUMNS_CONFIG } from 'src/tables/SalesTable/configs/SaleTableFlattenedColumnsConfig';\nimport { getColumnPersonalization } from 'src/utils/columns/columnPersonalizationUtils';\nimport {\n defaultEventsColumnsConfig,\n defaultListingColumnsConfig,\n defaultListingFlattenedColumnsConfig,\n defaultOnSaleEventsColumnsConfig,\n defaultPurchaseEventEnabledColumnsConfig,\n defaultPurchasesColumnsConfig,\n defaultSalesColumnsConfig,\n defaultSalesFlattenedColumnsConfig,\n filterColumnsByFeatures,\n} from 'src/utils/columns/columnUtils';\nimport {\n CustomEventsColumn,\n CustomOnSaleEventsColumn,\n} from 'src/utils/columns/events/eventsCustomColumnUtils.types';\nimport { filterCustomColumnsForListing } from 'src/utils/columns/inventory/inventoryCustomColumnUtils';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { CustomMarketplacePaymentsColumn } from 'src/utils/columns/payments/paymentsCustomColumnUtils.types';\nimport { CustomPurchasesColumn } from 'src/utils/columns/purchases/purchasesCustomColumnUtils.types';\nimport { filterCustomColumnsForSale } from 'src/utils/columns/sales/salesCustomColumnUtils';\nimport { CustomSalesColumn } from 'src/utils/columns/sales/salesCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport {\n ActionOutboxEntityType,\n Feature,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '../Modal';\nimport * as styles from './ColumnSettings.css';\nimport { TableColumnsInput } from './TableColumnsInput';\n\nexport type TableColumnsSectionType =\n | SectionType.Listings\n | SectionType.ListingsFlattened\n | SectionType.InventorySideTable\n | SectionType.Sales\n | SectionType.SalesFlattened\n | SectionType.SalesSideTable\n | SectionType.Events\n | SectionType.Purchases\n | SectionType.PurchaseEvent\n | SectionType.PurchaseSideTable\n | SectionType.MarketplacePaymentsTable\n | SectionType.OnSaleEvents;\ntype TableColumnsModalContainerProps = {\n onClose: () => void;\n // Not fully supporting reporting yet\n sectionType: TableColumnsSectionType;\n // Only supported for Purchase for now, used for filtering visible columns\n viewMode?: string | null;\n // Only used with SectionType.Listings\n // We only want to show this column for setting if it's visible in the current view\n showTicketClassColor?: boolean;\n};\n\nexport function ColumnSettingsModal<\n T extends\n | CustomOnSaleEventsColumn\n | CustomListingColumn\n | CustomSalesColumn\n | CustomEventsColumn\n | CustomPurchasesColumn,\n>({\n onClose,\n sectionType,\n viewMode,\n showTicketClassColor,\n}: TableColumnsModalContainerProps) {\n const { appContext, loginContext } = useAppContext();\n\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n const hasSortListingsInGroupFeature = useUserHasFeature(\n Feature.SortListingsInGroup\n );\n const hasSectionalLoadInListingTableFeature = useUserHasFeature(\n Feature.SectionalLoadInListingTable\n );\n\n const [isOpen, toggleIsOpen] = useToggle(true);\n const {\n value: storedEventsColumnOrderSetting = defaultEventsColumnsConfig,\n setUserSetting: setEventsColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.EventsColumnOrder,\n });\n const {\n value: storedInventoryColumnOrderSetting = defaultListingColumnsConfig,\n setUserSetting: setInventoryColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.InventoryColumnOrder,\n });\n const {\n value:\n storedInventoryFlattenedColumnOrderSetting = defaultListingFlattenedColumnsConfig,\n setUserSetting: setInventoryFlattenedColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.InventoryFlattenedColumnOrder,\n });\n const {\n value:\n storedInventorySideTableColumnsOrderSetting = defaultListingColumnsConfig,\n setUserSetting: setInventorySideTableColumnsOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.InventorySideTableColumnOrder,\n });\n const {\n value: storedSaleColumnOrderSetting = defaultSalesColumnsConfig,\n setUserSetting: setSaleColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.SaleColumnOrder,\n });\n const {\n value:\n storedSaleFlattenedColumnOrderSetting = defaultSalesFlattenedColumnsConfig,\n setUserSetting: setSaleFlattenedColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.SaleFlattenedColumnOrder,\n });\n const {\n value: storedSaleSideTableColumnOrderSetting = defaultSalesColumnsConfig,\n setUserSetting: setSaleSideTableColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.SalesSideTableColumnOrder,\n });\n const {\n value: storedPurchaseColumnOrderSetting = defaultPurchasesColumnsConfig,\n setUserSetting: setPurchaseColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.PurchaseColumnOrder,\n });\n const {\n value:\n storedPurchaseEventColumnOrderSetting = defaultPurchaseEventEnabledColumnsConfig,\n setUserSetting: setPurchaseEventColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.PurchaseEventColumnOrder,\n });\n const {\n value:\n storedPurchaseSideTableColumnOrderSetting = defaultPurchasesColumnsConfig,\n setUserSetting: setPurchaseSideTableColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.PurchaseSideTableColumnOrder,\n });\n const defaultMarketplaceColumnsConfig =\n useMarketplacePaymentsTableColumnsConfig();\n const defaultMarketplacePaymentsColumnsId = useDefaultPaymentsColumnConfig();\n const {\n value:\n storedMarketplacePaymentsTableColumnOrderSetting = defaultMarketplacePaymentsColumnsId,\n setUserSetting: setMarketplacePaymentsTableColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.MarketplacePaymentsTableColumnOrder,\n });\n const {\n value:\n storedOnSaleEventsTableColumnOrderSetting = defaultOnSaleEventsColumnsConfig,\n setUserSetting: setOnSaleEventsTableColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.OnSaleEventColumnsOrder,\n });\n\n const setColumnOrderSetting = {\n [SectionType.Events]: setEventsColumnOrderSetting,\n [SectionType.Listings]: setInventoryColumnOrderSetting,\n [SectionType.ListingsFlattened]: setInventoryFlattenedColumnOrderSetting,\n [SectionType.ListingsReport]: () => console.log('Unused'),\n [SectionType.InventorySideTable]: setInventorySideTableColumnsOrderSetting,\n [SectionType.Sales]: setSaleColumnOrderSetting,\n [SectionType.SalesFlattened]: setSaleFlattenedColumnOrderSetting,\n [SectionType.SalesReport]: () => console.log('Unused'),\n [SectionType.SalesSideTable]: setSaleSideTableColumnOrderSetting,\n [SectionType.Purchases]: setPurchaseColumnOrderSetting,\n [SectionType.PurchaseEvent]: setPurchaseEventColumnOrderSetting,\n [SectionType.PurchaseSideTable]: setPurchaseSideTableColumnOrderSetting,\n [SectionType.MarketplacePaymentsTable]:\n setMarketplacePaymentsTableColumnOrderSetting,\n [SectionType.OnSaleEvents]: setOnSaleEventsTableColumnOrderSetting,\n }[sectionType];\n\n const {\n value: storedEventsColumnsEnabledSetting,\n setUserSetting: setEventsColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.EventsColumnsEnabled,\n });\n const {\n value: storedInventoryColumnsEnabledSetting,\n setUserSetting: setInventoryColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.InventoryColumnsEnabled,\n });\n const {\n value: storedInventoryFlattenedColumnsEnabledSetting,\n setUserSetting: setInventoryFlattenedColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.InventoryFlattenedColumnsEnabled,\n });\n const {\n value: storedInventorySideTableColumnsEnabledSetting,\n setUserSetting: setInventorySideTableColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.InventorySideTableColumnsEnabled,\n });\n const {\n value: storedSaleColumnsEnabledSetting,\n setUserSetting: setSaleColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.SaleColumnsEnabled,\n });\n const {\n value: storedSaleFlattenedColumnsEnabledSetting,\n setUserSetting: setSaleFlattenedColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.SaleFlattenedColumnsEnabled,\n });\n const {\n value: storedSaleSideTableColumnsEnabledSetting,\n setUserSetting: setSaleSideTableColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.SalesSideTableColumnsEnabled,\n });\n const {\n value: storedPurchaseColumnsEnabledSetting,\n setUserSetting: setPurchaseColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.PurchaseColumnsEnabled,\n });\n const {\n value:\n storedPurchaseEventColumnsEnabledSetting = defaultPurchaseEventEnabledColumnsConfig,\n setUserSetting: setPurchaseEventColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.PurchaseEventColumnsEnabled,\n });\n const {\n value: storedPurchaseSideTableColumnsEnabledSetting,\n setUserSetting: setPurchaseSideTableColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.PurchaseSideTableColumnsEnabled,\n });\n const {\n value: storedMarketplacePaymentsTableColumnsEnabledSetting,\n setUserSetting: setMarketplacePaymentsTableColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.MarketplacePaymentsTableColumnsEnabled,\n });\n const {\n value: storedOnSaleEventsTableColumnsEnabledSetting,\n setUserSetting: setOnSaleEventsTableColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.OnSaleEventColumnsEnabled,\n });\n\n const setColumnsEnabledSetting = {\n [SectionType.Events]: setEventsColumnsEnabledSetting,\n [SectionType.Listings]: setInventoryColumnsEnabledSetting,\n [SectionType.ListingsFlattened]: setInventoryFlattenedColumnsEnabledSetting,\n [SectionType.ListingsReport]: () => console.log('Unused'),\n [SectionType.InventorySideTable]:\n setInventorySideTableColumnsEnabledSetting,\n [SectionType.Sales]: setSaleColumnsEnabledSetting,\n [SectionType.SalesFlattened]: setSaleFlattenedColumnsEnabledSetting,\n [SectionType.SalesReport]: () => console.log('Unused'),\n [SectionType.SalesSideTable]: setSaleSideTableColumnsEnabledSetting,\n [SectionType.Purchases]: setPurchaseColumnsEnabledSetting,\n [SectionType.PurchaseEvent]: setPurchaseEventColumnsEnabledSetting,\n [SectionType.PurchaseSideTable]: setPurchaseSideTableColumnsEnabledSetting,\n [SectionType.MarketplacePaymentsTable]:\n setMarketplacePaymentsTableColumnsEnabledSetting,\n [SectionType.OnSaleEvents]: setOnSaleEventsTableColumnsEnabledSetting,\n }[sectionType];\n\n const {\n value: customEventsColumns = [],\n setUserSetting: setCustomEventsColumns,\n } = useServerUserSetting({\n id: UserSetting.EventsCustomColumns,\n });\n const {\n value: customListingColumns = [],\n setUserSetting: setCustomListingColumns,\n } = useServerUserSetting({\n id: UserSetting.InventoryCustomColumns,\n });\n const {\n value: customSaleColumns = [],\n setUserSetting: setCustomSaleColumns,\n } = useServerUserSetting({\n id: UserSetting.SaleCustomColumns,\n });\n const {\n value: customPurchaseColumns = [],\n setUserSetting: setCustomPurchaseColumns,\n } = useServerUserSetting({\n id: UserSetting.PurchaseCustomColumns,\n });\n const {\n value: customMarketplacePaymentsColumns = [],\n setUserSetting: setCustomMarketplacePaymentsColumns,\n } = useServerUserSetting({\n id: UserSetting.MarketplacePaymentsCustomColumns,\n });\n const {\n value: customOnSaleEventColumns = [],\n setUserSetting: setCustomOnSaleEvemtsColumns,\n } = useServerUserSetting({\n id: UserSetting.OnSaleEventCustomColumns,\n });\n const setCustomColumns = {\n [SectionType.Events]: setCustomEventsColumns,\n [SectionType.Listings]: setCustomListingColumns,\n [SectionType.ListingsFlattened]: setCustomListingColumns,\n [SectionType.ListingsReport]: () => console.log('Unused'),\n [SectionType.InventorySideTable]: setCustomListingColumns,\n [SectionType.Sales]: setCustomSaleColumns,\n [SectionType.SalesFlattened]: setCustomSaleColumns,\n [SectionType.SalesReport]: () => console.log('Unused'),\n [SectionType.SalesSideTable]: setCustomSaleColumns,\n [SectionType.Purchases]: setCustomPurchaseColumns,\n [SectionType.PurchaseEvent]: setCustomPurchaseColumns,\n [SectionType.PurchaseSideTable]: setCustomPurchaseColumns,\n [SectionType.MarketplacePaymentsTable]: setCustomMarketplacePaymentsColumns,\n [SectionType.OnSaleEvents]: setCustomOnSaleEvemtsColumns,\n }[sectionType] as (value: T[]) => void;\n\n const actionOutboxEntityType = useMemo(() => {\n switch (sectionType) {\n case SectionType.Events:\n return ActionOutboxEntityType.SellerEvent;\n case SectionType.Listings:\n case SectionType.ListingsFlattened:\n case SectionType.InventorySideTable:\n return ActionOutboxEntityType.Listing;\n case SectionType.Sales:\n case SectionType.SalesFlattened:\n case SectionType.SalesSideTable:\n return ActionOutboxEntityType.Sale;\n case SectionType.Purchases:\n case SectionType.PurchaseEvent:\n case SectionType.PurchaseSideTable:\n return ActionOutboxEntityType.Purchase;\n }\n }, [sectionType]);\n\n const { tagsMetadataNumeric, tagsMetadata } = useTagsForEntityType(\n actionOutboxEntityType,\n true\n );\n\n const customColumnsFiltered = {\n [SectionType.Events]: customEventsColumns, // TODO: check if correct\n [SectionType.Listings]: filterCustomColumnsForListing(\n customListingColumns,\n tagsMetadataNumeric\n ),\n [SectionType.ListingsFlattened]: filterCustomColumnsForListing(\n customListingColumns,\n tagsMetadataNumeric\n ),\n [SectionType.ListingsReport]: () => console.log('Unused'),\n [SectionType.InventorySideTable]: filterCustomColumnsForListing(\n customListingColumns,\n tagsMetadataNumeric\n ),\n [SectionType.Sales]: filterCustomColumnsForSale(\n customSaleColumns,\n tagsMetadataNumeric\n ),\n [SectionType.SalesFlattened]: filterCustomColumnsForSale(\n customSaleColumns,\n tagsMetadataNumeric\n ),\n [SectionType.SalesReport]: () => console.log('Unused'),\n [SectionType.SalesSideTable]: filterCustomColumnsForSale(\n customSaleColumns,\n tagsMetadataNumeric\n ),\n [SectionType.Purchases]: customPurchaseColumns,\n [SectionType.PurchaseEvent]: customPurchaseColumns,\n [SectionType.PurchaseSideTable]: customPurchaseColumns,\n\n [SectionType.MarketplacePaymentsTable]: customMarketplacePaymentsColumns,\n [SectionType.OnSaleEvents]: customOnSaleEventColumns,\n }[sectionType] as T[];\n\n const presetColumns = {\n [SectionType.Events]: EVENTS_TABLE_COLUMNS_CONFIG,\n [SectionType.Listings]: getListingTableColumnConfigs(\n hasSortListingsInGroupFeature\n ),\n [SectionType.ListingsFlattened]: {\n ...LISTING_TABLE_FLATTENED_COLUMNS_CONFIG,\n ...getListingTableColumnConfigs(\n hasSortListingsInGroupFeature,\n false,\n hasSectionalLoadInListingTableFeature\n ),\n },\n [SectionType.InventorySideTable]: getListingTableColumnConfigs(\n hasSortListingsInGroupFeature,\n false,\n hasSectionalLoadInListingTableFeature\n ),\n [SectionType.ListingsReport]: LISTING_REPORT_TABLE_COLUMNS_CONFIG,\n [SectionType.Sales]: SALE_TABLE_COLUMNS_CONFIG,\n [SectionType.SalesFlattened]: {\n ...SALE_TABLE_FLATTENED_COLUMNS_CONFIG,\n ...SALE_TABLE_COLUMNS_CONFIG,\n },\n [SectionType.SalesReport]: SALE_REPORT_TABLE_COLUMNS_CONFIG,\n [SectionType.SalesSideTable]: SALE_TABLE_COLUMNS_CONFIG,\n [SectionType.Purchases]: PURCHASE_TABLE_COLUMNS_CONFIG,\n [SectionType.PurchaseEvent]: PURCHASE_TABLE_COLUMNS_CONFIG,\n [SectionType.PurchaseSideTable]: PURCHASE_TABLE_COLUMNS_CONFIG,\n [SectionType.MarketplacePaymentsTable]: defaultMarketplaceColumnsConfig,\n [SectionType.OnSaleEvents]: ON_SALE_EVENTS_TABLE_COLUMNS_CONFIG,\n }[sectionType];\n\n const presetColumnIds = Object.values(presetColumns).map((i) => i.id);\n\n const filterColumns = useCallback(\n (columnList: string[]) => {\n // Filter out reporting tags that are later turned off reporting\n const activeTagNames = tagsMetadata?.map((t) => t.key) ?? [];\n const customColumnIds = customColumnsFiltered.map(\n (c) => (c as T & { id: string }).id\n );\n return columnList.filter((columnId) => {\n // Don't show inconfigurable columns - like checkbox\n if (presetColumnIds.includes(columnId)) {\n const isConfigurable = getColumnPersonalization({\n id: columnId,\n sectionType,\n }).isConfigurable;\n\n // With this new feature, we set action column as a column always showing at the right, thus inconfigurable\n // Without the feature, we treat the column as configurable\n if (!hasTablePinActionColumnFeature) {\n if (columnId === 'action' || columnId === 'actions') {\n return true;\n }\n }\n\n return isConfigurable;\n }\n return (\n activeTagNames.includes(columnId) ||\n customColumnIds.includes(columnId)\n );\n });\n },\n [\n customColumnsFiltered,\n hasTablePinActionColumnFeature,\n presetColumnIds,\n sectionType,\n tagsMetadata,\n ]\n );\n\n const storedColumnsEnabledSetting = {\n [SectionType.Events]: storedEventsColumnsEnabledSetting,\n [SectionType.Listings]: storedInventoryColumnsEnabledSetting,\n [SectionType.ListingsFlattened]:\n storedInventoryFlattenedColumnsEnabledSetting,\n [SectionType.ListingsReport]: [],\n [SectionType.InventorySideTable]:\n storedInventorySideTableColumnsEnabledSetting,\n [SectionType.Sales]: storedSaleColumnsEnabledSetting,\n [SectionType.SalesFlattened]: storedSaleFlattenedColumnsEnabledSetting,\n [SectionType.SalesReport]: [],\n [SectionType.SalesSideTable]: storedSaleSideTableColumnsEnabledSetting,\n [SectionType.Purchases]: storedPurchaseColumnsEnabledSetting,\n [SectionType.PurchaseEvent]: storedPurchaseEventColumnsEnabledSetting,\n [SectionType.PurchaseSideTable]:\n storedPurchaseSideTableColumnsEnabledSetting,\n [SectionType.MarketplacePaymentsTable]:\n storedMarketplacePaymentsTableColumnsEnabledSetting,\n [SectionType.OnSaleEvents]: storedOnSaleEventsTableColumnsEnabledSetting,\n }[sectionType];\n\n const storedColumnOrderSetting = {\n [SectionType.Events]: storedEventsColumnOrderSetting,\n [SectionType.Listings]: storedInventoryColumnOrderSetting,\n [SectionType.ListingsFlattened]: storedInventoryFlattenedColumnOrderSetting,\n [SectionType.ListingsReport]: [],\n [SectionType.InventorySideTable]:\n storedInventorySideTableColumnsOrderSetting,\n [SectionType.Sales]: storedSaleColumnOrderSetting,\n [SectionType.SalesFlattened]: storedSaleFlattenedColumnOrderSetting,\n [SectionType.SalesReport]: [],\n [SectionType.SalesSideTable]: storedSaleSideTableColumnOrderSetting,\n [SectionType.Purchases]: storedPurchaseColumnOrderSetting,\n [SectionType.PurchaseEvent]: storedPurchaseEventColumnOrderSetting,\n [SectionType.PurchaseSideTable]: storedPurchaseSideTableColumnOrderSetting,\n [SectionType.MarketplacePaymentsTable]:\n storedMarketplacePaymentsTableColumnOrderSetting,\n [SectionType.OnSaleEvents]: storedOnSaleEventsTableColumnOrderSetting,\n }[sectionType];\n\n const storedColumnOrderSettingFiltered = useMemo(() => {\n const allColumnIdsAvailable = filterColumns(\n uniq([\n ...storedColumnOrderSetting,\n ...presetColumnIds.toSorted((a, b) => a.localeCompare(b)),\n ...customColumnsFiltered.map((c) => c.id),\n ...(tagsMetadata?.map((t) => t.key) ?? []),\n ])\n );\n\n const existingColumnsOrderSetting = filterColumns(\n storedColumnOrderSetting as string[]\n );\n\n allColumnIdsAvailable.forEach((columnId) => {\n if (!existingColumnsOrderSetting.includes(columnId)) {\n existingColumnsOrderSetting.push(columnId);\n }\n });\n\n return existingColumnsOrderSetting;\n }, [\n customColumnsFiltered,\n filterColumns,\n presetColumnIds,\n storedColumnOrderSetting,\n tagsMetadata,\n ]);\n\n const storedColumnEnabledSettingFiltered = useMemo(() => {\n if (\n Array.isArray(storedColumnsEnabledSetting) &&\n storedColumnsEnabledSetting.length > 0\n ) {\n return filterColumns(storedColumnsEnabledSetting as string[]);\n } else {\n return filterColumns(storedColumnOrderSetting);\n }\n }, [filterColumns, storedColumnsEnabledSetting, storedColumnOrderSetting]);\n\n const editabilityId = {\n [SectionType.Events]: UserSetting.EventsColumnEditability,\n [SectionType.Listings]: UserSetting.InventoryColumnEditability,\n [SectionType.ListingsFlattened]:\n UserSetting.InventoryFlattenedColumnEditability,\n [SectionType.ListingsReport]: '' as UserSetting, // Unused\n [SectionType.InventorySideTable]:\n UserSetting.InventorySideTableColumnEditability,\n [SectionType.Sales]: UserSetting.SaleColumnEditability,\n [SectionType.SalesFlattened]: UserSetting.SaleFlattenedColumnEditability,\n [SectionType.SalesReport]: '' as UserSetting, // Unused,\n [SectionType.SalesSideTable]: UserSetting.SalesSideTableColumnEditability,\n [SectionType.Purchases]: UserSetting.PurchaseColumnEditability,\n [SectionType.PurchaseEvent]: UserSetting.PurchaseEventColumnEditability,\n [SectionType.PurchaseSideTable]:\n UserSetting.PurchaseSideTableColumnEditability,\n [SectionType.MarketplacePaymentsTable]:\n UserSetting.MarketplacePaymentsColumnEditability,\n [SectionType.OnSaleEvents]: UserSetting.OnSaleEventColumnEditability,\n }[sectionType];\n const { value: editableColumns = [], setUserSetting: setEditableColumns } =\n useServerUserSetting({\n id: editabilityId,\n });\n\n const customColumns = {\n [SectionType.Events]: customEventsColumns,\n [SectionType.Listings]: customListingColumns,\n [SectionType.ListingsFlattened]: customListingColumns,\n [SectionType.ListingsReport]: [], // Unused\n [SectionType.InventorySideTable]: customListingColumns,\n [SectionType.Sales]: customSaleColumns,\n [SectionType.SalesFlattened]: customSaleColumns,\n [SectionType.SalesReport]: [], // Unused\n [SectionType.SalesSideTable]: customSaleColumns,\n [SectionType.Purchases]: customPurchaseColumns,\n [SectionType.PurchaseEvent]: customPurchaseColumns,\n [SectionType.PurchaseSideTable]: customPurchaseColumns,\n [SectionType.MarketplacePaymentsTable]: customMarketplacePaymentsColumns,\n [SectionType.OnSaleEvents]: customOnSaleEventColumns,\n }[sectionType];\n\n const [userColumnSelection, setUserColumnSelection] = useState(\n filterColumnsByFeatures(\n storedColumnEnabledSettingFiltered,\n sectionType,\n customColumns,\n loginContext?.user,\n appContext?.features\n )\n );\n\n const [userColumnSorting, setUserColumnSorting] = useState(\n filterColumnsByFeatures(\n storedColumnOrderSettingFiltered,\n sectionType,\n customColumns,\n loginContext?.user,\n appContext?.features\n )\n );\n const [userEditableColumns, setUserEditableColumns] =\n useState(editableColumns);\n const [userColumnIsDirty, setUserColumnIsDirty] = useState(false);\n\n const onSaveHandler = () => {\n if (!userColumnSelection) {\n // TODO: show error\n return;\n }\n setColumnsEnabledSetting(userColumnSelection);\n setColumnOrderSetting(userColumnSorting);\n setEditableColumns(userEditableColumns);\n toggleIsOpen();\n };\n\n useEffect(() => {\n // XX Migration to add TicketClassColor column for users\n // When the column becomes available for the first time\n if (\n storedInventoryColumnOrderSetting != null &&\n storedInventoryColumnsEnabledSetting != null\n ) {\n prependTicketClassColorColumnForFirstTime(\n storedInventoryColumnOrderSetting,\n storedInventoryColumnsEnabledSetting,\n setInventoryColumnOrderSetting,\n setInventoryColumnsEnabledSetting\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [storedInventoryColumnOrderSetting, storedInventoryColumnsEnabledSetting]);\n\n // Sync the user setting to the default if the user has never set it\n useEffect(() => {\n const newColumns = filterColumnsByFeatures(\n storedColumnOrderSettingFiltered,\n sectionType,\n customColumns,\n loginContext?.user,\n appContext?.features,\n tagsMetadata ?? []\n );\n const newEnabledColumns = filterColumnsByFeatures(\n storedColumnEnabledSettingFiltered,\n sectionType,\n customColumns,\n loginContext?.user,\n appContext?.features\n );\n if (!userColumnIsDirty) {\n if (!isEqual(newColumns, userColumnSorting)) {\n setUserColumnSorting(newColumns);\n }\n if (!isEqual(editableColumns, userEditableColumns)) {\n setUserEditableColumns(editableColumns);\n }\n if (!isEqual(newEnabledColumns, userColumnSelection)) {\n setUserColumnSelection(newEnabledColumns);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n appContext?.features,\n customListingColumns,\n editableColumns,\n loginContext?.user,\n storedColumnOrderSettingFiltered,\n storedColumnEnabledSettingFiltered,\n ]);\n\n // Keep the columns up to date in case the user changes the settings (e.g. adds/deletes custom column)\n useEffect(() => {\n const allColumnIdsAvailable = filterColumns(\n uniq([\n ...storedColumnOrderSetting,\n ...presetColumnIds.toSorted((a, b) => a.localeCompare(b)),\n ...customColumnsFiltered.map((c) => c.id),\n ...(tagsMetadata?.map((t) => t.key) ?? []),\n ])\n );\n\n let userColumnSortingFiltered = filterColumns(userColumnSorting);\n\n allColumnIdsAvailable.forEach((columnId) => {\n if (!userColumnSortingFiltered.includes(columnId)) {\n userColumnSortingFiltered.push(columnId);\n }\n });\n\n userColumnSortingFiltered = filterColumnsByFeatures(\n userColumnSortingFiltered,\n sectionType,\n customColumns,\n loginContext?.user,\n appContext?.features,\n tagsMetadata ?? []\n );\n\n if (\n !isEqual(new Set(userColumnSortingFiltered), new Set(userColumnSorting))\n ) {\n setUserColumnSorting(userColumnSortingFiltered);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customColumnsFiltered]);\n\n useEffect(() => {\n if (!isOpen) setTimeout(onClose, 300);\n }, [isOpen, onClose]);\n\n return (\n <>\n \n \n
    \n
    \n \n
    \n
    \n
    \n \n \n userColumnSelection={userColumnSelection}\n onUserColumnSelectionChange={(newSelection) => {\n setUserColumnSelection(newSelection);\n setUserColumnIsDirty(true);\n }}\n userColumnSorting={userColumnSorting}\n onUserColumnSortingChange={(newSorting) => {\n setUserColumnSorting(newSorting);\n setUserColumnIsDirty(true);\n }}\n userEditableColumns={userEditableColumns}\n onUserEditableColumnsChange={(newEditableColumns) => {\n setUserEditableColumns(newEditableColumns);\n setUserColumnIsDirty(true);\n }}\n customColumns={customColumnsFiltered}\n onCustomColumnsChange={setCustomColumns}\n reportingTags={tagsMetadata ?? []}\n enableConfigureEditability\n sectionType={sectionType}\n showTicketClassColor={showTicketClassColor}\n viewMode={viewMode}\n />\n \n \n \n \n \n \n \n );\n}\n","export const SelectAllHotkeys = 'ctrl+s, command+s';\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const MultiEditCheckboxChecked = (props: PosIconProps) => {\n return (\n \n \n\n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const MultiEditCheckboxUnchecked = (props: PosIconProps) => {\n return (\n \n \n \n \n );\n};\n","import { useEffect, useMemo } from 'react';\nimport { useKeyPress } from 'react-use';\nimport {\n bulKActionsHighlightLetter,\n toggleButton,\n} from 'src/components/common/MultiSelect/Toggle/MultiSelectionToggle.css';\nimport { useBulkEditHubContext } from 'src/contexts/BulkEditHubContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useGenericDialogContext } from 'src/contexts/GenericDialogContext/GenericDialogContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Tooltip } from 'src/core/ui';\nimport { MultiEditCheckboxChecked } from 'src/svgs/MultiEditCheckboxChecked';\nimport { MultiEditCheckboxUnchecked } from 'src/svgs/MultiEditCheckboxUnchecked';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getCurrentLanguage } from 'src/utils/localeUtils';\n\ninterface MultiSelectionToggleProps {\n isToggled: boolean;\n onChange: (e: React.MouseEvent) => void;\n}\n\nexport const MultiSelectionToggle = ({\n onChange,\n isToggled,\n}: MultiSelectionToggleProps) => {\n const { mainDialogOpened } = useBulkEditHubContext();\n const { isDialogOpen } = useGenericDialogContext();\n const isEnglishLanguage = getCurrentLanguage().startsWith('en-');\n const tooltipText = useContent(ContentId.SelectItemsForBulkEdit);\n const isEscKeyPressed = useKeyPress('Escape')[0];\n const { setSelectionMode, selectionMode } = useMultiSelectionContext();\n const isToggleOn = !!selectionMode?.mode;\n\n const tooltipTextHighlighted = useMemo(() => {\n if (!isEnglishLanguage) {\n return tooltipText;\n }\n const parts = tooltipText.split(new RegExp('S', 'g'));\n return (\n \n {parts[0]}\n S\n {parts[1]}\n \n );\n }, [isEnglishLanguage, tooltipText]);\n\n useEffect(() => {\n if (isEscKeyPressed && isToggleOn && !mainDialogOpened && !isDialogOpen) {\n setSelectionMode();\n }\n }, [\n isEscKeyPressed,\n setSelectionMode,\n isToggleOn,\n mainDialogOpened,\n isDialogOpen,\n ]);\n\n return (\n \n {isToggled ? (\n \n ) : (\n \n )}\n \n }\n >\n {tooltipTextHighlighted}\n \n );\n};\n","import { SelectAllHotkeys } from 'src/components/common/MultiSelect/Toggle/contants';\nimport { MultiSelectionToggle } from 'src/components/common/MultiSelect/Toggle/MultiSelectionToggle';\nimport {\n MultiSelectScope,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { PosHotkeys } from 'src/core/POS/PosHotkeys';\n\ninterface MultiSelectionToggleGroupProps {\n groupId: string;\n onToggle?: (groupId: string, isChecked: boolean) => void;\n enableHotkey?: boolean;\n}\n\nexport const MultiSelectionToggleGroup = ({\n groupId,\n onToggle,\n enableHotkey = false,\n}: MultiSelectionToggleGroupProps) => {\n const { selectionMode, setSelectionMode, getSelection } =\n useMultiSelectionContext();\n const listingSelection = getSelection(groupId);\n const isChecked = selectionMode?.groupId === groupId;\n\n const onSelectMultipleClick = (e?: React.MouseEvent) => {\n e?.stopPropagation();\n onToggle?.(groupId, isChecked);\n\n if (listingSelection.isSingleGroupMultiSelect) {\n setSelectionMode();\n } else {\n setSelectionMode({\n mode: MultiSelectScope.SingleGroup,\n groupId,\n });\n }\n };\n\n // Since hotkeys are shared with globalToggle, disabled the hotkey\n // in here will make the global to be disabled too.\n const keyNames = enableHotkey ? SelectAllHotkeys : '';\n\n return (\n {\n onSelectMultipleClick();\n }}\n disabled={!enableHotkey}\n >\n \n \n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { Link, useLocation } from 'react-router-dom';\nimport { IconButton } from 'src/components/Buttons';\nimport { MultiSelectionToggleGroup } from 'src/components/common/MultiSelect/Toggle/MultiSelectionToggleGroup';\nimport { EventItemHeader } from 'src/components/Events/EventItemHeader';\nimport {\n EventItemHeaderType,\n METRICS_PLACEHOLDER_DIMS,\n} from 'src/components/Events/EventItemHeader/EventItemHeader';\nimport { InventoryEventActionDropdown } from 'src/components/Listings/InventoryActionDropdown';\nimport {\n MetricsDisplay,\n MetricsDisplayPlaceholder,\n} from 'src/components/Metrics';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { vars } from 'src/core/themes';\nimport { useGetEventFullInfo } from 'src/hooks/useGetEventFullInfo';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { createInventoryEventUrl } from 'src/navigations/Routes/InventoryEvent/InventoryEvent.utils';\nimport { TagIcon } from 'src/svgs';\nimport { FullPageIcon } from 'src/svgs/FullPageIcon';\nimport { EventIdQueryParam } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getInventoryListingMetrics,\n getInventoryListingMetricsV2,\n} from 'src/utils/ticketMetricUtils';\nimport { Feature, ListingMetrics } from 'src/WebApiController';\n\nimport * as styles from './EventListingHeader.css';\n\nexport const EventListingHeader = (props: EventItemHeaderType) => {\n const location = useLocation();\n const { loginContext } = useAppContext();\n\n const { event, ...rest } = props;\n const { venue, performer } = useGetEventFullInfo(event);\n const hasInventoryTileMetricV2Feature = useUserHasFeature(\n Feature.InventoryTileMetricV2\n );\n\n const hasInventoryEventPageV2Feature = useUserHasFeature(\n Feature.InventoryEventPageV2\n );\n const getInventoryListingMetricsFn = hasInventoryTileMetricV2Feature\n ? getInventoryListingMetricsV2\n : getInventoryListingMetrics;\n\n const { eventMetrics } = useCatalogMetricsContext();\n const metrics = useMemo(\n () =>\n getInventoryListingMetricsFn(\n eventMetrics?.[event.viagVirtualId],\n loginContext?.user?.activeAccount?.currencyCode\n ),\n [\n getInventoryListingMetricsFn,\n eventMetrics,\n event.viagVirtualId,\n loginContext?.user?.activeAccount?.currencyCode,\n ]\n );\n\n const {\n eventsExpansion: { expandedListItems, toggleListItemExpansion },\n } = useCatalogDataContext();\n\n const onToggleGroup = useCallback(\n (groupId: string) => {\n if (!expandedListItems.includes(groupId)) {\n toggleListItemExpansion([groupId]);\n }\n },\n [expandedListItems, toggleListItemExpansion]\n );\n\n const eventId = event.viagVirtualId;\n const searchParam = useMemo(() => {\n const searchParam = new URLSearchParams(location.search);\n searchParam.set(EventIdQueryParam, eventId);\n return searchParam;\n }, [eventId, location.search]);\n\n const actions = useMemo(\n () => [\n ...(hasInventoryEventPageV2Feature\n ? [\n \n \n }\n titleContentId={ContentId.OpenEventPageV2InDevelopment}\n />\n ,\n ]\n : []),\n \n \n }\n titleContentId={ContentId.OpenEventPage}\n />\n ,\n ,\n ,\n ],\n [\n eventId,\n hasInventoryEventPageV2Feature,\n location.pathname,\n location.search,\n onToggleGroup,\n props,\n searchParam,\n ]\n );\n\n return (\n \n {!hasInventoryTileMetricV2Feature && (\n \n )}\n {metrics.mainMetrics}\n \n }\n />\n )\n }\n metrics={\n !metrics ? (\n \n ) : (\n \n )\n }\n actions={actions}\n showMappingState={true}\n />\n );\n};\n","import clsx from 'clsx';\nimport { MouseEvent } from 'react';\nimport { useToggle } from 'react-use';\nimport { MinRowsForUsingVirtuoso } from 'src/components/Accordions';\nimport {\n multiSelectCollapsed,\n multiselectEventPageDetails,\n} from 'src/components/Accordions/InventoryEventsAccordion/InventoryEventsAccordion.css';\nimport { InventoryEventsBody } from 'src/components/Accordions/InventoryEventsAccordion/InventoryEventsBody';\nimport { MultiSelectActionBar } from 'src/components/common/MultiSelect/MultiSelectActionBar';\nimport { InventoryEventBulkActions } from 'src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/InventoryEventBulkActions';\nimport { ActiveSortTableColumnProvider } from 'src/contexts/ActiveSortTableColumnContext';\nimport { useCollapsableViewContext } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { ColumnSettingsModal } from 'src/modals/ColumnSettings/ColumnSettings';\nimport { LayoutIcon } from 'src/svgs/LayoutIcon';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { EventWithData, Listing } from 'src/WebApiController';\n\nimport {\n EventAccordionItemProps,\n EventsAccordion,\n VirtualizedEventAccordionProps,\n} from '../EventsAccordion';\nimport { EventListingHeader } from './EventListingHeader';\n\nexport const translateEventToInventoryAccordionItem = (\n props: EventWithData,\n index: number,\n isInventoryEventDetailsPage = false\n) => {\n return {\n index,\n itemId: props.event.viagVirtualId,\n HeaderComponent: EventListingHeader,\n BodyComponent: InventoryEventsBody,\n AfterHeaderComponent: () => {\n const { isCollapsedView, isEnabled } = useCollapsableViewContext();\n return (\n \n \n \n );\n },\n usingVirtuoso:\n isInventoryEventDetailsPage ||\n (props.counts.listCnt ?? 0) > MinRowsForUsingVirtuoso,\n ...props,\n entities: props.entities.listings ?? [],\n entityCount: props.counts.listCnt,\n ungroupedListingCount: props.counts.ungrListCnt,\n listingGroupCount: props.counts.listGrpCnt,\n } as EventAccordionItemProps;\n};\n\nexport const InventoryEventsAccordion = (\n props: VirtualizedEventAccordionProps\n) => {\n const [isColumnModalOpen, toggleColumnModal] = useToggle(false);\n\n const onColumnSettingButtonClickHandler = (\n e: MouseEvent\n ) => {\n e.stopPropagation();\n if (!isColumnModalOpen) toggleColumnModal(true);\n };\n\n return (\n \n {isColumnModalOpen ? (\n \n sectionType={SectionType.Listings}\n onClose={toggleColumnModal}\n />\n ) : null}\n \n \n \n \n \n \n }\n />\n \n );\n};\n","import {\n ColumnDef,\n functionalUpdate,\n Row,\n RowSelectionState,\n SortingState,\n TableOptions,\n Updater,\n} from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport {\n CSSProperties,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { EventAccordionItemBodyComponentType } from 'src/components/Accordions';\nimport { shiftSelect } from 'src/components/Events/EventPage/EventPage.css';\nimport { useSingleTableShortcutSelection } from 'src/components/Events/EventPage/hooks/useSingleTableShortcutSelection';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { ColumnResizingContextProvider } from 'src/contexts/ColumnResizingContext/ColumnResizingContext';\nimport {\n Content,\n FormatContent,\n useContent,\n} from 'src/contexts/ContentContext';\nimport {\n MultiSelectScope,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { useClearShiftSelectionOnSortingChange } from 'src/contexts/MultiSelectionContext/useClearShiftSelectionOnSortingChange';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { NoData, Table } from 'src/tables/Table';\nimport {\n defaultSalesColumnsConfig,\n filterColumnsByFeatures,\n getSaleColumnConfigById,\n} from 'src/utils/columns/columnUtils';\nimport { SALE_MAIN_COLUMNS } from 'src/utils/columns/sales/salesColumnUtils.constants';\nimport { filterCustomColumnsForSale } from 'src/utils/columns/sales/salesCustomColumnUtils';\nimport { CustomSalesColumn } from 'src/utils/columns/sales/salesCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { generateShimmeringRows } from 'src/utils/dataTableUtils';\nimport { isInFullPageEventView } from 'src/utils/deepLinkUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { hasFeatures } from 'src/utils/userUtils';\nimport { SomethingWentWrong } from 'src/views';\nimport {\n ActionOutboxEntityType,\n Feature,\n Permission,\n Sale,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { SalesTableColumnId } from '../../utils/columns/sales/salesColumnUtils.types';\nimport { useSeatingColumnSorting } from '../common/hooks/useSeatingColumnSorting';\nimport { usePaginationSettings } from '../Table/hooks/usePaginationSettings';\nimport {\n customColumnDef,\n SALE_TABLE_COLUMNS_CONFIG,\n tagColumnDef,\n} from './configs/SaleTableColumnsConfig';\nimport { SaleWithEvent } from './SalesTable.type';\n\nexport type SalesTableProps = EventAccordionItemBodyComponentType & {\n alwaysShowCheckbox?: boolean;\n showSelectAllOnHeader?: boolean;\n};\n\nconst PAGE_SIZE = 10;\n\nconst disabledPaginationStyles: CSSProperties = {\n position: 'sticky',\n top: '0',\n zIndex: '10',\n};\n\nconst tableCellStyles: CSSProperties = {\n height: '1px', // Keep this to be able to use height: 100% inside td\n};\n\nconst getRowId = (row: SaleWithEvent | null, index: number) =>\n (row?.sale?.id ?? index).toString();\n\nexport const SalesTable = ({\n event,\n entities: sales,\n entityCount: salesCount,\n getDataFail: failedToRetrieveData,\n onMount,\n onUnmount,\n initState,\n disablePagination,\n useVirtuoso,\n withOuterPadding = true,\n isSideTable = false,\n onItemSelectionsChanged,\n alwaysShowCheckbox,\n showSelectAllOnHeader,\n enableColumnFilters,\n}: SalesTableProps) => {\n const showMainColumnsOnly = false;\n const isItemsLoading = salesCount > 0 && (sales == null || sales.length == 0);\n const data = useMemo(() => {\n const result = sales?.map((sale) => ({ sale, event }));\n\n return result?.length\n ? result\n : result == null || isItemsLoading\n ? (generateShimmeringRows(salesCount) as null[])\n : [];\n }, [sales, isItemsLoading, salesCount, event]);\n\n const hasViewProceeds = useUserHasAnyOfPermissions(\n Permission.Sales_ViewProceeds,\n Permission.Sales_ViewRecentProceeds\n );\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n\n const { appContext, loginContext, mainRoute } = useAppContext();\n const inFullPageEventView = isInFullPageEventView(mainRoute);\n\n const salesText = useContent(ContentId.Sales);\n\n const {\n setGroupItems,\n getGroupToggleState,\n getSelection,\n selectionMode,\n updateGroupFilteredIds,\n } = useMultiSelectionContext();\n\n const saleSelection = getSelection(event.viagVirtualId);\n\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const [sorting, setSorting] = useState(\n initState?.sorting || []\n );\n\n useClearShiftSelectionOnSortingChange({ sortingState: sorting });\n\n const seatingColumnSorting = useSeatingColumnSorting(\n SalesTableColumnId.Seating,\n SectionType.Sales\n );\n\n const { pagination, setPagination } = usePaginationSettings(\n data.length,\n -1,\n PAGE_SIZE,\n disablePagination,\n initState\n );\n\n const groupId = event.viagVirtualId;\n const rowSelection = useMemo(() => {\n return data\n ?.flatMap((d) => [d?.sale])\n ?.reduce>((result, sale) => {\n if (sale?.id) {\n result[sale.id] =\n getGroupToggleState(groupId).isGroupSelected &&\n !saleSelection.items.itemIds.length\n ? true\n : ((saleSelection?.items.itemIds ?? [])?.includes(\n String(sale?.id)\n ) ?? false);\n }\n return result;\n }, {});\n }, [data, groupId, getGroupToggleState, saleSelection.items.itemIds]);\n\n const onRowSelectionChange = useCallback(\n (updater: Updater) => {\n const newSelections =\n typeof updater === 'function' ? updater(rowSelection) : updater;\n\n const newSelectedIds = Object.keys(newSelections).filter(\n (r) => newSelections[r] === true\n );\n\n setGroupItems(event.viagVirtualId, newSelections);\n onItemSelectionsChanged?.(\n newSelectedIds\n .filter((id) => newSelections[id])\n .map((id) => parseInt(id))\n );\n },\n [event.viagVirtualId, onItemSelectionsChanged, rowSelection, setGroupItems]\n );\n\n const showCheckbox = useMemo(\n () =>\n alwaysShowCheckbox ||\n selectionMode?.mode === MultiSelectScope.AllGroups ||\n saleSelection.isSingleGroupMultiSelect,\n [\n alwaysShowCheckbox,\n saleSelection.isSingleGroupMultiSelect,\n selectionMode?.mode,\n ]\n );\n\n const {\n lastSelectedRowRefIndex,\n allowShiftClickSelection,\n isShiftKeyPressed,\n isCtrlOrCmdKeyPressed,\n updateSelectionForRowAndSubRows,\n } = useSingleTableShortcutSelection({ isSideTable });\n\n const onRowShiftSelect = useCallback(\n (\n tableRows: Row[] | undefined,\n row: Row,\n index: number\n ) => {\n if (!tableRows || !allowShiftClickSelection || showCheckbox) {\n return;\n }\n const rowId = row.id.toString();\n const newIsSelected = !rowSelection[rowId];\n\n if (isShiftKeyPressed && lastSelectedRowRefIndex.current !== null) {\n const start = Math.min(lastSelectedRowRefIndex.current, index);\n const end = Math.max(lastSelectedRowRefIndex.current, index);\n\n const newRowSelection = { ...rowSelection };\n for (let i = start; i <= end; i++) {\n const row = tableRows[i];\n if (row) {\n updateSelectionForRowAndSubRows({\n row,\n rowId: row.id.toString(),\n newIsSelected,\n newRowSelection,\n });\n }\n }\n\n lastSelectedRowRefIndex.current = index;\n onRowSelectionChange(newRowSelection);\n } else if (isCtrlOrCmdKeyPressed) {\n const newRowSelection = { ...rowSelection };\n newRowSelection[rowId] = newIsSelected;\n updateSelectionForRowAndSubRows({\n row,\n rowId,\n newIsSelected, // Select the clicked row\n newRowSelection,\n });\n lastSelectedRowRefIndex.current = index;\n onRowSelectionChange(newRowSelection);\n } else {\n // No modifier key pressed, reset selection\n const newRowSelection = {};\n\n updateSelectionForRowAndSubRows({\n row,\n rowId,\n newIsSelected,\n newRowSelection,\n });\n lastSelectedRowRefIndex.current = index;\n onRowSelectionChange(newRowSelection);\n }\n },\n [\n allowShiftClickSelection,\n isCtrlOrCmdKeyPressed,\n isShiftKeyPressed,\n lastSelectedRowRefIndex,\n onRowSelectionChange,\n rowSelection,\n showCheckbox,\n updateSelectionForRowAndSubRows,\n ]\n );\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n // Clear selections when selection mode changes\n useEffect(() => {\n onItemSelectionsChanged?.([]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectionMode?.mode]);\n\n const {\n value: storedInventoryColumnOrderSetting = defaultSalesColumnsConfig,\n } = useServerUserSetting({\n id: isSideTable\n ? UserSetting.SalesSideTableColumnOrder\n : UserSetting.SaleColumnOrder,\n });\n const { value: storedSaleColumnsEnabledSetting } = useServerUserSetting<\n string[]\n >({\n id: isSideTable\n ? UserSetting.SalesSideTableColumnsEnabled\n : UserSetting.SaleColumnsEnabled,\n });\n\n const { value: customSaleColumns = [] } = useServerUserSetting<\n CustomSalesColumn[]\n >({\n id: UserSetting.SaleCustomColumns,\n });\n const { tagsMetadata, tagsMetadataNumeric } = useTagsForEntityType(\n ActionOutboxEntityType.Sale,\n true\n );\n\n const customSaleColumnsFiltered = filterCustomColumnsForSale(\n customSaleColumns,\n tagsMetadataNumeric\n );\n\n const displayedColumnsConfig = useMemo(() => {\n if (showMainColumnsOnly) {\n return SALE_MAIN_COLUMNS.filter((c) =>\n c === SalesTableColumnId.Checkbox ? showCheckbox : true\n ).reduce[]>((acc, columnId) => {\n const columnConfig = Object.values(SALE_TABLE_COLUMNS_CONFIG).find(\n (column) => column.id === columnId\n );\n if (columnConfig) {\n acc.push(columnConfig);\n }\n return acc;\n }, []);\n }\n\n const saleColumnOrder = storedInventoryColumnOrderSetting.filter(\n // If storedSaleColumnsEnabledSetting has never been set, default to true\n (c) => storedSaleColumnsEnabledSetting?.includes(c) ?? true\n );\n\n const salesTableColumnsConfig = Object.values(SALE_TABLE_COLUMNS_CONFIG);\n\n const columns = new Set([\n // Add unconfigurable columns first\n ...salesTableColumnsConfig\n .filter((column) => {\n const columnDef = getSaleColumnConfigById(\n column.id as SalesTableColumnId\n ).personalization;\n const hasFeatureForColumn =\n columnDef.requiredFeatures.length === 0 ||\n hasFeatures(\n loginContext?.user,\n appContext?.features,\n columnDef.requiredFeatures\n );\n\n let isConfigurable = columnDef.isConfigurable;\n if (\n !hasTablePinActionColumnFeature &&\n column.id === SalesTableColumnId.Actions\n ) {\n isConfigurable = true;\n }\n\n return !isConfigurable && hasFeatureForColumn;\n })\n .map((item) => item.id as SalesTableColumnId),\n // Add user defined columns next\n ...filterColumnsByFeatures(\n saleColumnOrder,\n SectionType.Sales,\n customSaleColumnsFiltered,\n loginContext?.user,\n appContext?.features,\n tagsMetadata ?? []\n ),\n ]);\n\n if (showCheckbox) {\n if (!alwaysShowCheckbox) {\n columns.delete(SalesTableColumnId.Actions);\n }\n } else {\n columns.delete(SalesTableColumnId.Checkbox);\n }\n\n return Array.from(columns).reduce[]>(\n (acc, columnId) => {\n if (tagsMetadata?.find((t) => t.key === columnId)) {\n acc.push(tagColumnDef(columnId));\n } else if (customSaleColumnsFiltered.find((c) => c.id === columnId)) {\n acc.push(\n customColumnDef(\n columnId,\n customSaleColumnsFiltered.find((c) => c.id === columnId)?.formula\n )\n );\n } else {\n const columnConfig = salesTableColumnsConfig.find(\n (column) => column.id === columnId\n );\n if (columnConfig) acc.push(columnConfig);\n }\n\n return acc;\n },\n []\n );\n }, [\n alwaysShowCheckbox,\n appContext?.features,\n customSaleColumnsFiltered,\n hasTablePinActionColumnFeature,\n loginContext?.user,\n showCheckbox,\n showMainColumnsOnly,\n storedInventoryColumnOrderSetting,\n storedSaleColumnsEnabledSetting,\n tagsMetadata,\n ]);\n\n const options: Partial> = useMemo(\n () => ({\n data,\n columns: displayedColumnsConfig.filter((c) =>\n c.id === 'proceeds' ? hasViewProceeds : true\n ),\n state: {\n pagination,\n rowSelection,\n sorting,\n columnVisibility: {\n checkbox: showCheckbox,\n },\n columnPinning: {\n right: hasTablePinActionColumnFeature\n ? [SalesTableColumnId.Actions]\n : undefined,\n },\n },\n meta: {\n sectionType: isSideTable ? SectionType.SalesSideTable : undefined,\n showSelectAllCheckbox: showSelectAllOnHeader,\n },\n getRowId: getRowId,\n onPaginationChange: setPagination,\n onSortingChange: (sortingUpdaterFn) => {\n const newSortVal = functionalUpdate(sortingUpdaterFn, sorting);\n setSorting(newSortVal);\n },\n enableRowSelection: showCheckbox || inFullPageEventView,\n enableMultiRowSelection: showCheckbox,\n enableSubRowSelection: showCheckbox,\n onRowSelectionChange:\n !allowShiftClickSelection || showCheckbox\n ? onRowSelectionChange\n : undefined,\n sortingFns: { ...seatingColumnSorting },\n }),\n [\n data,\n displayedColumnsConfig,\n pagination,\n rowSelection,\n sorting,\n showCheckbox,\n hasTablePinActionColumnFeature,\n isSideTable,\n showSelectAllOnHeader,\n setPagination,\n inFullPageEventView,\n allowShiftClickSelection,\n onRowSelectionChange,\n seatingColumnSorting,\n hasViewProceeds,\n ]\n );\n\n const onFilteredRowsChange = useCallback(\n (filteredRows: Row[] | undefined) => {\n const filteredItemIds = filteredRows\n ?.map((r) => r.original?.sale?.id)\n .filter((lid) => lid != null) as number[] | undefined;\n updateGroupFilteredIds(groupId, filteredItemIds);\n },\n [groupId, updateGroupFilteredIds]\n );\n\n return failedToRetrieveData ? (\n }\n />\n ) : data?.length ? (\n \n \n \n ) : (\n // We should never see this - because the events are filtered to only those that has sales\n // So this is to prevent a crash - but this should be looked at\n \n \n \n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nimport { TileWrapper } from '../Tile/Tile.styled';\n\nexport const SaleEventTileWrapper = styled(TileWrapper)`\n border-radius: 0;\n border: 0;\n border-bottom: 1px solid ${(props) => props.theme.colors.borderPrimary};\n`;\n\nexport const SaleTilesContainer = styled.div`\n ${SaleEventTileWrapper}:last-child {\n border-bottom: 0;\n padding-bottom: ${() => vars.spacing.sm};\n }\n`;\n\nexport const Status = styled.span``;\n\nexport const Price = styled.span``;\n\nexport const UnHideIconContainer = styled.span`\n display: flex;\n ${({ theme: { typography } }) => typography.getStyles('body1', 'medium')}\n`;\n\nexport const Divider = styled.div`\n border-bottom: 1px solid ${(props) => props.theme.colors.borderPrimary};\n`;\n\nexport const DetailLabel = styled.span<{ textAlign?: TextAlign }>`\n ${({ theme: { typography } }) => typography.getStyles('caption1', 'regular')}\n color: ${({ theme: { colors } }) => colors.textPrimary};\n text-align: ${(props) =>\n props.textAlign ? props.textAlign.toString() : 'left'};\n`;\n\nexport const DetailValue = styled.span<{ textAlign?: TextAlign }>`\n ${({ theme: { typography } }) => typography.getStyles('caption1', 'regular')}\n text-align: ${(props) =>\n props.textAlign ? props.textAlign.toString() : 'left'};\n padding-right: ${() => vars.spacing.xxs};\n`;\n\nexport const DetailUnitCostValue = styled.span`\n ${({ theme: { typography } }) => typography.getStyles('caption1', 'regular')}\n display: flex;\n align-items: center;\n padding-right: ${() => vars.spacing.xxs};\n`;\n\nexport enum TextAlign {\n Left = 'left',\n Center = 'center',\n Right = 'right',\n}\n\nexport const OtherDetailsDiv = styled.div`\n display: flex;\n color: ${({ theme: { colors } }) => colors.textPrimary};\n font-size: ${() => vars.typography.fontSize['xs']};\n`;\n","import { useCallback, useContext, useMemo } from 'react';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext/ModalContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { IconsFill, MoreIcon } from 'src/svgs/Viagogo';\nimport { ProceedsCell } from 'src/tables/SalesTable/configs/ProceedsCell';\nimport { SeatInfoContainer } from 'src/tables/Table';\nimport { DateCell, InHandCell } from 'src/tables/Table/TableCells';\nimport {\n getSaleActionButton,\n getSaleDetailsModalConfigWithDeepLink,\n getSaleStatusDisplayContentId,\n NON_MAIN_SALE_ACTIONS,\n} from 'src/utils/saleUtils';\nimport { getTicketTypeIcon } from 'src/utils/ticketTypeUtils';\nimport {\n ListingDetailDataField,\n Permission,\n PointOfSaleSaleStatus,\n Sale,\n SaleDetails,\n TicketType,\n} from 'src/WebApiController';\n\nimport {\n TileHeader,\n TileLeftLayout,\n TileRightLayout,\n} from '../Tile/Tile.styled';\nimport * as styles from './SaleTiles.css';\nimport {\n OtherDetailsDiv,\n Price,\n SaleEventTileWrapper,\n SaleTilesContainer,\n Status,\n} from './SaleTiles.styled';\n\nconst SaleTile = ({ sale }: { sale: Sale }) => {\n const ticketTypeIcon = getTicketTypeIcon(\n sale?.ticketType as TicketType,\n IconsFill.textPrimary\n );\n\n const { setActivePosEntity } = useActivePosEntityContext();\n const { setModal } = useContext(ModalContext);\n const onViewClick = useCallback(async () => {\n setActivePosEntity(sale.id, sale.idOnMkp, true, [\n ListingDetailDataField.Basic,\n ]);\n setModal(getSaleDetailsModalConfigWithDeepLink(sale.id, true));\n }, [sale.idOnMkp, setActivePosEntity, setModal, sale.id]);\n\n const hasTotalNetProceedsPermissions = useUserHasAnyOfPermissions(\n Permission.Sales_ViewProceeds,\n Permission.Sales_ViewRecentProceeds\n );\n\n const mainActionTypes = useMemo(\n () => sale.actions.filter((a) => !NON_MAIN_SALE_ACTIONS.includes(a)),\n [sale.actions]\n );\n\n const actions = sale\n ? sale.status === PointOfSaleSaleStatus.PendingConfirmation\n ? [\n getSaleActionButton(\n sale.id,\n sale.idOnMkp,\n sale.mkp,\n sale.status,\n mainActionTypes[0],\n sale.ticketType,\n sale.isNoFulfill,\n 'text',\n false\n ),\n getSaleActionButton(\n sale.id,\n sale.idOnMkp,\n sale.mkp,\n sale.status,\n mainActionTypes[1],\n sale.ticketType,\n sale.isNoFulfill,\n 'text',\n false\n ),\n ]\n : mainActionTypes.length > 0\n ? [\n getSaleActionButton(\n sale.id,\n sale.idOnMkp,\n sale.mkp,\n sale.status,\n mainActionTypes[mainActionTypes.length - 1],\n sale.ticketType,\n sale.isNoFulfill,\n 'text',\n false\n ),\n ]\n : []\n : [];\n\n return (\n \n \n \n
    \n {ticketTypeIcon}\n \n \n \n
    \n
    \n \n \n \n {actions.length > 0 ? (\n \n }\n align=\"end\"\n >\n {actions.map((a, i) => (\n {a}\n ))}\n \n ) : null}\n \n \n
    \n \n \n \n \n \n \n \n \n \n \n {hasTotalNetProceedsPermissions && (\n \n \n \n )}\n \n \n
    \n );\n};\n\nexport const SaleTiles = ({ sales }: { sales?: Sale[] | null }) => {\n return sales ? (\n \n {sales.map((sale) => (\n \n ))}\n \n ) : (\n \n );\n};\n","import {\n EventAccordionItemBodyComponentType,\n MinRowsForUsingVirtuoso,\n} from 'src/components/Accordions';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { SalesTable } from 'src/tables/SalesTable';\nimport { SaleTiles } from 'src/tiles/SaleTiles';\nimport { Sale } from 'src/WebApiController';\n\ntype EventSaleBodyProps = EventAccordionItemBodyComponentType;\n\nexport const EventSaleBody = (props: EventSaleBodyProps) => {\n const isMobile = useMatchMedia('mobile');\n const Body = isMobile ? SaleTiles : SalesTable;\n const usingVirtuoso = props.entityCount > MinRowsForUsingVirtuoso;\n\n return ;\n};\n","import { ReactNode } from 'react';\n\ninterface SalesBulkActionsPermissionsProps {\n children: ReactNode;\n}\n\n// TODO: Feature is now GA, need to clean this up.\nexport const SalesBulkActionsPermissions = ({\n children,\n}: SalesBulkActionsPermissionsProps) => {\n return <>{children};\n};\n","import { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { Permission } from 'src/WebApiController';\n\ninterface UseUpdateSalesSettingsPermissions {\n hasUpdateSalesSettingsPermission: boolean;\n}\n\nexport const useUpdateSalesSettingsPermissions =\n (): UseUpdateSalesSettingsPermissions => {\n const hasSaleViewPermission = useUserHasAnyOfPermissions(\n Permission.Sales_UpdateSalesInfo,\n Permission.Sales_UpdateSalesInfoOnIsFulfillerOf,\n Permission.Sales_UpdateSalesInfoOnIsPricerOf,\n Permission.Sales_UpdateSaleOnPurchasedBy\n );\n\n return {\n hasUpdateSalesSettingsPermission: hasSaleViewPermission,\n };\n };\n","/* IMPORTANT - whenever you add a new one here\n You need to add a handling for it in the BulkEditStatusSalePopover.tsx\n */\nexport const SALES_BULK_UPDATE_GENERAL_SETTINGS_UPDATE_KEY =\n 'general-settings-event-sales';\nexport const SALES_BULK_UPDATE_COMMISSION_UPDATE_KEY = 'commission-event-sales';\nexport const SALES_BULK_UPDATE_TAGS_UPDATE_KEY = 'tags-event-sales';\nexport const SALES_BULK_UPDATE_INTERNAL_NOTES_UPDATE_KEY =\n 'update-internal-notes-sales';\nexport const SALES_BULK_UPDATE_AUTOFULFILL_UPDATE_KEY =\n 'update-autofulfill-sales';\nexport const SALES_BULK_UPDATE_MARK_AS_FULFILLED_UPDATE_KEY =\n 'update-mark-as-fulfilled-sales';\nexport const SALES_BULK_MARK_SALE_AS_PAID_UPDATE_KEY = 'mark-sale-as-paid';\n","import { useCallback } from 'react';\nimport { LaunchBulkEditCommission } from 'src/components/common/BulkActions/BulkEditCommissionAction';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { BulkEditCommissionDialog } from 'src/dialogs/BulkEdits/BulkEditCommissionDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditPreviewWithDetails,\n BulkEditSaleClient,\n Commission,\n Event,\n SaleQuery,\n} from 'src/WebApiController';\n\nimport { SALES_BULK_UPDATE_COMMISSION_UPDATE_KEY } from '../../SalesActionDropdown.constants';\n\nexport const useBulkEditCommissionAction = (\n filterQueryWithEventIds: SaleQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const updateKey = event\n ? `saleCommission-event-${event.viagVirtualId}`\n : SALES_BULK_UPDATE_COMMISSION_UPDATE_KEY;\n const {\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkEditCommissionDialog,\n closeDialog: closeBulkEditCommissionDialog,\n } = useDialog(DialogId.BulkEditCommission, BulkEditCommissionDialog);\n\n const onSubmit = useCallback(\n async (\n commissions: Commission[] | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n\n setIsLoading(true);\n\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditSaleClient(\n activeAccountWebClientConfig\n ).bulkUpdatePurchaseCommissionsPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdatePurchaseCommissionsPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditSaleClient(\n activeAccountWebClientConfig\n ).bulkUpdatePurchaseCommissions(\n {\n item1: preview!.preview,\n item2: commissions ?? [],\n },\n updateKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on details modal\n // we force re-loading the entity and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n\n closeBulkEditCommissionDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkUpdatePurchaseCommissions', error, {\n trackErrorData: { commissions, preview },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n setIsLoading,\n filterQueryWithEventIds,\n showErrorDialog,\n updateKey,\n closeBulkEditCommissionDialog,\n setActivePosEntity,\n refreshExpandedListItems,\n ]\n );\n\n const onLaunchAction = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (event) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n openBulkEditCommissionDialog({\n updateKey,\n onOkay: onSubmit,\n onCancel: closeBulkEditCommissionDialog,\n onClosed: () => {\n setIsLoading(false);\n },\n });\n },\n [\n closeBulkEditCommissionDialog,\n event,\n onSubmit,\n openBulkEditCommissionDialog,\n setIsLoading,\n setListItemExpansion,\n updateKey,\n ]\n );\n return {\n dropDown: (\n \n ),\n };\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useMemo, useRef, useState } from 'react';\nimport { Controller, FormProvider, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { DatePickerInput } from 'src/core/POS/DateSelector';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { MARKET_PLACE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n Marketplace,\n SaleDetails,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport interface MarkSaleAsPaidForm {\n paymentDate: string;\n paymentReference: string;\n marketplace: Marketplace;\n}\n\nexport type BulkMarkSaleAsPaidDialogProps = ComponentProps & {\n updateKey: string;\n onOkay: (\n markSaleAsPaidForm: MarkSaleAsPaidForm | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport const BulkMarkSaleAsPaidDialog = ({\n ...rest\n}: BulkMarkSaleAsPaidDialogProps) => {\n const methods = useForm();\n\n return (\n \n \n \n );\n};\n\nfunction BulkMarkSaleAsPaidDialogContent({\n updateKey,\n sales,\n event,\n onOkay,\n onCancel,\n handleSubmit,\n watch,\n reset,\n control,\n formState,\n setValue,\n register,\n trigger,\n ...rest\n}: BulkMarkSaleAsPaidDialogProps &\n Omit<\n ComponentProps>,\n 'children'\n >) {\n const { loginContext } = useAppContext();\n const requiredText = useContent(ContentId.Required);\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n const paymentDate = watch('paymentDate');\n const paymentReference = watch('paymentReference');\n const marketplace = watch('marketplace');\n const { isValid: isFormValid } = formState;\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n await refreshExpandedListItems(true);\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n setMainDialogOpened(false);\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n ActionOutboxEntityType.Sale,\n BulkActionType.MarkSaleAsPaid,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(null, false, onPreviewReceived);\n } else {\n handleSubmit((formValues) =>\n onOkay(formValues, hasBackgroundBulkEditFeature, undefined, preview)\n )();\n }\n setIsLoading(false);\n },\n [handleSubmit, hasBackgroundBulkEditFeature, onOkay, preview]\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const isInputValid = useMemo(() => {\n return marketplace && paymentDate && paymentReference;\n }, [marketplace, paymentDate, paymentReference]);\n\n const submitButtonRef = useRef(null);\n\n return (\n <>\n }\n />\n }\n onOpened={() => {\n initJob();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n onKeyUp={(e) => {\n if (submitButtonRef.current && e.key === 'Enter' && isInputValid) {\n submitButtonRef.current.click();\n }\n }}\n footer={\n {\n if (!isFormValid) {\n trigger();\n }\n return isFormValid;\n }}\n />\n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n }\n errors={formState.errors.marketplace?.message}\n >\n {\n if (marketplace) {\n setValue('marketplace', marketplace);\n }\n }}\n valueOptionsContent={(\n loginContext?.user?.activeAccount?.marketplaceSettings?.map(\n (m) => m.mkp\n ) ?? [Marketplace.StubHub]\n )\n .concat(Marketplace.Offline)\n .reduce(\n (cur, m) => {\n cur[m] = MARKET_PLACE_TO_CID[m];\n return cur;\n },\n {} as Record\n )}\n />\n \n }\n errors={formState.errors.paymentDate?.message}\n >\n (\n {\n setValue(field.name, d.toISOString());\n }}\n />\n )}\n />\n \n }\n errors={formState.errors.paymentReference?.message}\n >\n \n \n \n \n \n \n );\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature } from 'src/WebApiController';\n\nexport const LaunchBulkMarkSaleAsPaid = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const hasBulkMarkSaleAsPaidFeature = useUserHasFeature(\n Feature.BulkMarkSalesAsPaid\n );\n\n if (!hasBulkMarkSaleAsPaidFeature) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport {\n BulkMarkSaleAsPaidDialog,\n MarkSaleAsPaidForm,\n} from 'src/dialogs/BulkEdits/BulkMarkSaleAsPaidDialog';\nimport { lookupEventInCatalog } from 'src/utils/eventWithDataUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditPreviewWithDetails,\n BulkEditSaleClient,\n Event,\n SaleQuery,\n} from 'src/WebApiController';\n\nimport { SALES_BULK_MARK_SALE_AS_PAID_UPDATE_KEY } from '../../SalesActionDropdown.constants';\nimport { LaunchBulkMarkSaleAsPaid } from './LaunchBulkMarkSaleAsPaid';\n\nexport const useBulkMarkSaleAsPaid = (\n filterQueryWithEventIds: SaleQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const updateKey = event\n ? `markSaleAsPaid-event-${event?.viagVirtualId}`\n : SALES_BULK_MARK_SALE_AS_PAID_UPDATE_KEY;\n\n const {\n data,\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkMarkSaleAsDialog,\n closeDialog: closeBulkMarkSaleAsPaidDialog,\n } = useDialog(DialogId.BulkMarkSaleAsPaid, BulkMarkSaleAsPaidDialog);\n\n const onSubmit = useCallback(\n async (\n markSaleAsPaidForm: MarkSaleAsPaidForm | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditSaleClient(\n activeAccountWebClientConfig\n ).bulkMarkSaleAsPaidPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkMarkSaleAsPaidPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (markSaleAsPaidForm) {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditSaleClient(\n activeAccountWebClientConfig\n ).bulkMarkSaleAsPaid(\n preview!.preview,\n markSaleAsPaidForm.paymentReference,\n markSaleAsPaidForm.paymentDate,\n markSaleAsPaidForm.marketplace,\n updateKey,\n supportBackgroundProcess\n );\n if (!supportBackgroundProcess) {\n if (succeeded) {\n await refreshExpandedListItems();\n }\n\n closeBulkMarkSaleAsPaidDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkMarkSaleAsPaid', error, {\n trackErrorData: { event, preview },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeBulkMarkSaleAsPaidDialog,\n event,\n filterQueryWithEventIds,\n refreshExpandedListItems,\n setIsLoading,\n showErrorDialog,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n openBulkMarkSaleAsDialog({\n event,\n sales: event\n ? lookupEventInCatalog(data, event.viagVirtualId)\n ?.entities?.sales?.filter((s) => s != null)\n ?.map((s) => s!)\n : [],\n updateKey,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkMarkSaleAsPaidDialog,\n });\n }}\n disabled={isLoading}\n />\n ),\n };\n};\n","import { useCallback } from 'react';\nimport { LaunchBulkUpdateInternalNotes } from 'src/components/common/BulkActions/BulkUpdateInternalNotesAction';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { BulkUpdateInternalNotesDialog } from 'src/dialogs/BulkEdits/BulkUpdateInternalNotesDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditPreviewWithDetails,\n BulkEditSaleClient,\n Event,\n SaleQuery,\n} from 'src/WebApiController';\n\nimport { SALES_BULK_UPDATE_INTERNAL_NOTES_UPDATE_KEY } from '../../SalesActionDropdown.constants';\n\nexport const useBulkUpdateInternalNotesAction = (\n filterQueryWithEventIds: SaleQuery,\n\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const updateKey = event\n ? `sales-internal-notes-event-${event.viagVirtualId}`\n : SALES_BULK_UPDATE_INTERNAL_NOTES_UPDATE_KEY;\n const {\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkUpdateInternalNotesDialog,\n closeDialog: closeBulkUpdateInternalNotesDialog,\n } = useDialog(\n DialogId.BulkUpdateInternalNotes,\n BulkUpdateInternalNotesDialog\n );\n\n const onSubmit = useCallback(\n async (\n isUpdate: boolean | null,\n searchString: string | null,\n replaceString: string | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditSaleClient(\n activeAccountWebClientConfig\n ).bulkUpdateInternalNotesPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateInternalNotesPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (\n isUpdate != null &&\n searchString != null &&\n replaceString != null\n ) {\n await tryInvokeApi(\n async () => {\n const saleClient = new BulkEditSaleClient(\n activeAccountWebClientConfig\n );\n\n const succeeded = await saleClient.bulkUpdateInternalNotes(\n preview!.preview,\n updateKey,\n isUpdate,\n searchString,\n replaceString,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on listingDetails\n // we force re-loading the listing and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n\n closeBulkUpdateInternalNotesDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkUpdateInternalNotes', error, {\n trackErrorData: {\n isUpdate,\n searchString,\n replaceString,\n preview,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n setIsLoading,\n activeAccountWebClientConfig,\n filterQueryWithEventIds,\n showErrorDialog,\n updateKey,\n closeBulkUpdateInternalNotesDialog,\n setActivePosEntity,\n refreshExpandedListItems,\n ]\n );\n\n const onChangeClick = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (event) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n openBulkUpdateInternalNotesDialog({\n updateKey,\n onOkay: onSubmit,\n entityType: ActionOutboxEntityType.Sale,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkUpdateInternalNotesDialog,\n });\n },\n [\n closeBulkUpdateInternalNotesDialog,\n event,\n onSubmit,\n openBulkUpdateInternalNotesDialog,\n setIsLoading,\n setListItemExpansion,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n \n ),\n };\n};\n","import { useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { Stack } from 'src/core/ui';\nimport { Detail } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { SaleInput } from 'src/WebApiController';\n\nexport const PaymentCurrencyConversionSection = () => {\n const { watch, setValue } = useFormContext();\n\n const paymentAmountReceived = watch('paymentAmountReceived');\n const paymentCurrency = watch('paymentCurrency');\n\n const { currencyCache, getUiCurrency } = useLocalizationContext();\n\n const availableCurrenciesOptions = useMemo(\n () =>\n Object.values(currencyCache || []).reduce(\n (result, cur) => {\n result[cur.code] = cur.code;\n return result;\n },\n {} as Record\n ),\n [currencyCache]\n );\n\n const { loginContext } = useAppContext();\n\n const uiCurrency = useMemo(\n () =>\n getUiCurrency(loginContext?.user?.activeAccount?.currencyCode ?? 'USD'),\n [getUiCurrency, loginContext?.user?.activeAccount?.currencyCode]\n );\n\n return (\n \n }\n />\n \n }\n style={{ width: '50%' }}\n detail={\n {\n setValue('paymentCurrency', posChangedField(value), {\n shouldDirty: true,\n });\n }}\n />\n }\n />\n }\n style={{ width: '50%' }}\n detail={\n {\n const newValue = parseFloat(e.target.value) || 0;\n setValue('paymentAmountReceived', posChangedField(newValue), {\n shouldDirty: true,\n });\n\n setValue(\n 'paymentCurrency',\n posChangedField(paymentCurrency?.value ?? uiCurrency.code),\n {\n shouldDirty: true,\n }\n );\n }}\n />\n }\n />\n \n \n );\n};\n","import { useEffect } from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SALE_LINE_ITEM_CHARGE_REASON_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { SaleLineItem } from 'src/WebApiController';\n\nimport * as styles from './ChargeOrCreditReasonSelector.css';\n\nexport const ChargeReasonSelector = () => {\n const { control, formState, watch, setValue } =\n useFormContext();\n const chargeReason = watch('saleLineItemChargeReason');\n const requiredText = useContent(ContentId.Required);\n\n useEffect(() => {\n return () => {\n setValue('saleLineItemChargeReason', null);\n };\n }, [setValue]);\n\n return (\n }\n errors={formState.errors.saleLineItemChargeReason?.message}\n >\n (\n \n )}\n />\n \n );\n};\n","import { useEffect } from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SALE_LINE_ITEM_CREDIT_REASON_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { SaleLineItem } from 'src/WebApiController';\nimport * as styles from './ChargeOrCreditReasonSelector.css';\n\nexport const CreditReasonSelector = () => {\n const { control, formState, watch, setValue } =\n useFormContext();\n const creditReason = watch('saleLineItemCreditReason');\n const requiredText = useContent(ContentId.Required);\n\n useEffect(() => {\n return () => {\n setValue('saleLineItemCreditReason', null);\n };\n }, [setValue]);\n\n return (\n }\n errors={formState.errors.saleLineItemCreditReason?.message}\n >\n (\n {\n setValue('saleLineItemCreditReason', creditReason);\n }}\n />\n )}\n />\n \n );\n};\n","import { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Feature } from 'src/WebApiController';\n\nexport const useHasPaymentsSectionsV2Feature = () => {\n return useUserHasFeature(Feature.SaleEarningsTableV2);\n};\n","import { useFormContext } from 'react-hook-form';\nimport { ChargeReasonSelector } from 'src/modals/SaleDetails/components/PaymentSection/SaleLineItemModal/ChargeOrCreditReason/ChargeReasonSelector';\nimport { CreditReasonSelector } from 'src/modals/SaleDetails/components/PaymentSection/SaleLineItemModal/ChargeOrCreditReason/CreditReasonSelector';\nimport { useHasPaymentsSectionsV2Feature } from 'src/modals/SaleDetails/hooks/useHasPaymentsSectionsV2Feature';\nimport { SaleCostType, SaleLineItem } from 'src/WebApiController';\n\nexport const ChargeOrCreditReasonSelector = () => {\n const { watch } = useFormContext();\n const costType = watch('costType');\n const isChargeType = costType === SaleCostType.Charge;\n const isCreditType = costType === SaleCostType.Credit;\n const hasPaymentsSectionsV2Feature = useHasPaymentsSectionsV2Feature();\n\n if (!hasPaymentsSectionsV2Feature) {\n return null;\n }\n\n if (isChargeType) {\n return ;\n }\n\n if (isCreditType) {\n return ;\n }\n\n return null;\n};\n","import { isEqual } from 'lodash';\nimport { useEffect, useMemo } from 'react';\nimport {\n Controller,\n FormProvider,\n useForm,\n useFormContext,\n UseFormReturn,\n} from 'react-hook-form';\nimport { CancelButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { DatePickerInput } from 'src/core/POS/DateSelector';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { shared } from 'src/core/themes';\nimport { Radio, RadioGroup, Stack } from 'src/core/ui';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from 'src/modals/Modal';\nimport { ChargeOrCreditReasonSelector } from 'src/modals/SaleDetails/components/PaymentSection/SaleLineItemModal/ChargeOrCreditReason/ChargeOrCreditReasonSelector';\nimport { useHasPaymentsSectionsV2Feature } from 'src/modals/SaleDetails/hooks/useHasPaymentsSectionsV2Feature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport {\n SaleCostType,\n SaleLineItem,\n SaleLineItemStatus,\n} from 'src/WebApiController';\n\nimport * as styles from './SaleLineItemModal.css';\nimport { AddLineItemModalBodyProps as SaleLineItemModalBodyProps } from './SaleLineItemModal.types';\n\nexport const SaleLineItemModal = (props: SaleLineItemModalBodyProps) => {\n const methods = useForm({\n defaultValues: props.item ?? {\n description: null,\n costType: SaleCostType.Charge,\n status: SaleLineItemStatus.Unpaid,\n costDate: props.costDate ?? new Date().toISOString(),\n dueDate: new Date().toISOString(),\n currencyCode: props.currencyCode,\n saleLineItemChargeReason: props.saleLineItemChargeReason,\n saleLineItemCreditReason: props.saleLineItemCreditReason,\n cost: props.remainingBalance ?? undefined,\n },\n });\n\n useEffect(() => {\n if (props.item && !isEqual(props.item, methods.formState.defaultValues)) {\n methods.reset(props.item);\n } else if (!props.item) {\n methods.reset({\n description: null,\n costType: SaleCostType.Charge,\n status: SaleLineItemStatus.Unpaid,\n costDate: new Date().toISOString(),\n dueDate: new Date().toISOString(),\n currencyCode: props.currencyCode,\n saleLineItemCreditReason: null,\n saleLineItemChargeReason: null,\n });\n }\n }, [methods, props.currencyCode, props.item, props.isOpen]);\n\n return (\n \n \n \n );\n};\n\nconst SaleLineItemModalBody = ({\n isOpen,\n onClose,\n onSave,\n currencyCode,\n}: SaleLineItemModalBodyProps & UseFormReturn) => {\n const hasPaymentsSectionsV2Feature = useHasPaymentsSectionsV2Feature();\n const itemNameText = useContent(ContentId.ItemName);\n const amountText = useContent(ContentId.Amount);\n const requiredText = useContent(ContentId.Required);\n\n const { control, reset, register, watch, setValue, handleSubmit, formState } =\n useFormContext();\n\n const name = watch('description');\n const cost = watch('cost');\n const costType = watch('costType');\n const status = watch('status');\n const costDate = watch('costDate');\n const dueDate = watch('dueDate');\n\n const { getUiCurrency } = useLocalizationContext();\n\n const uiCurrency = useMemo(\n () => getUiCurrency(currencyCode),\n [getUiCurrency, currencyCode]\n );\n\n return (\n \n \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n \n \n setValue('costType', v as SaleCostType)}\n >\n }\n value={SaleCostType.Charge}\n />\n }\n value={SaleCostType.Credit}\n />\n \n\n \n\n \n 0) ? requiredText : undefined,\n valueAsNumber: true,\n })}\n />\n \n {!hasPaymentsSectionsV2Feature && (\n setValue('status', v as SaleLineItemStatus)}\n >\n }\n value={SaleLineItemStatus.Paid}\n />\n }\n value={SaleLineItemStatus.Unpaid}\n />\n \n )}\n\n \n }\n errors={formState.errors.costDate?.message}\n >\n (\n {\n setValue(field.name, d.toISOString());\n }}\n />\n )}\n />\n \n {!hasPaymentsSectionsV2Feature && (\n }\n errors={formState.errors.dueDate?.message}\n >\n (\n {\n setValue(field.name, d.toISOString());\n }}\n />\n )}\n />\n \n )}\n \n \n \n \n {\n onClose();\n reset();\n }}\n />\n {\n handleSubmit(onSave)();\n }}\n />\n \n
    \n );\n};\n","import { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Feature } from 'src/WebApiController';\n\nexport const useHasWasteSaleFeature = () => {\n return useUserHasFeature(Feature.WasteSale);\n};\n","import { useHasWasteSaleFeature } from 'src/hooks/features/useHasWasteSaleFeature';\nimport { Sale } from 'src/WebApiController';\n\nexport const useShouldHideForWastedSale = (sale: Sale | null | undefined) => {\n const hasWasteSaleFeature = useHasWasteSaleFeature();\n const isWastedSale = !!sale?.isWastageSale;\n return hasWasteSaleFeature && isWastedSale;\n};\n","export const NUM_OF_COLUMNS = 5;\nexport const NUM_OF_COLUMNS_MOBILE = 2;\nexport const SectionContentGridFormat = `repeat(${NUM_OF_COLUMNS}, minmax(0, 1fr))`;\nexport const SectionContentGridMobileFormat = `repeat(${NUM_OF_COLUMNS_MOBILE}, minmax(0, 1fr))`;\n","import { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport {\n SectionContentGridFormat,\n SectionContentGridMobileFormat,\n} from 'src/modals/SaleDetailsV2/SaleDetails.constants';\n\nexport const useGetModalGridFormat = () => {\n const isMobile = useMatchMedia('mobile');\n\n return isMobile\n ? { SectionContentGridFormat: SectionContentGridMobileFormat }\n : { SectionContentGridFormat };\n};\n","import { useCallback, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack, Switch } from 'src/core/ui';\nimport { useHasSaleDetailsMarketplaceTermsFeature } from 'src/hooks/features/useHasSaleDetailsMarketplaceTermsFeature';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Detail, DetailGroup, SectionContent } from 'src/modals/common';\nimport { SaleLineItemModal } from 'src/modals/SaleDetails/components/PaymentSection/SaleLineItemModal';\nimport { useShouldHideForWastedSale } from 'src/modals/SaleDetails/hooks/useShouldHideForWastedSale';\nimport { useGetModalGridFormat } from 'src/modals/SaleDetailsV2/hooks/useGetModalGridFormat';\nimport { IconsFill, MoreIcon, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n MARKETPLACE_SALE_PAYMENT_STATE_TO_CID,\n SALE_PAYMENT_STATE_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { formatCurrency } from 'src/utils/numberFormatter';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport {\n Feature,\n Permission,\n Sale,\n SaleCostType,\n SaleInput,\n SaleLineItem,\n} from 'src/WebApiController';\n\nimport * as styles from './PaymentSection.css';\n\nexport const PaymentSection = ({\n sale,\n lineItems,\n isBulkEdit,\n onLineItemChange,\n}: {\n sale?: Sale | null;\n lineItems?: SaleLineItem[] | null;\n onLineItemChange?: (item: SaleLineItem, isDelete?: boolean) => void;\n isBulkEdit?: boolean;\n}) => {\n const { SectionContentGridFormat } = useGetModalGridFormat();\n const { loginContext } = useAppContext();\n const hasEditSaleLineItemsFeature = useUserHasFeature(\n Feature.SaleEditChargesAndCredits\n );\n const hasHideSalePaymentReceivedFilterFeature = useUserHasFeature(\n Feature.HideSalePaymentReceivedFilter\n );\n const { watch, setValue } = useFormContext();\n\n const costDialog = useBasicDialog();\n\n const hideForWastedSale = useShouldHideForWastedSale(sale);\n\n const onAddNewCostSave = useCallback(\n (item: SaleLineItem) => {\n onLineItemChange?.(item);\n\n // post logic goes here\n costDialog.closeDialog();\n },\n [costDialog, onLineItemChange]\n );\n\n const onAddNewCostCancel = useCallback(() => {\n costDialog.closeDialog();\n setCurItem(undefined);\n }, [costDialog]);\n\n const paymentReceived = watch('paymentReceived');\n const paymentReferenceId = watch('paymentReferenceId');\n\n const hasTotalNetProceedsPermissions = useUserHasAnyOfPermissions(\n Permission.Sales_ViewProceeds,\n Permission.Sales_ViewRecentProceeds\n );\n\n const hasSaleDetailsMarketplaceTermsFeature =\n useHasSaleDetailsMarketplaceTermsFeature();\n\n const totalProfitAmount = useMemo(() => {\n let sum = hasTotalNetProceedsPermissions\n ? (sale?.ttlNetProcs?.amt ?? 0)\n : 0;\n\n if (sale?.soldTktCost != null) {\n sum -= sale?.soldTktCost.amt;\n }\n\n if (hasEditSaleLineItemsFeature) {\n lineItems?.forEach((li) => {\n // Per James - charges subtracts and credits add\n sum += (li.costType === SaleCostType.Charge ? -1 : 1) * li.cost;\n });\n }\n\n return sum;\n }, [\n hasEditSaleLineItemsFeature,\n hasTotalNetProceedsPermissions,\n lineItems,\n sale?.soldTktCost,\n sale?.ttlNetProcs?.amt,\n ]);\n\n const [curItem, setCurItem] = useState();\n\n const onAddNewCost = useCallback(() => {\n costDialog.launchDialog();\n }, [costDialog]);\n\n return (\n \n {!isBulkEdit && (\n \n }\n detail={\n
    \n \n \n \n \n \n\n \n \n \n \n\n {hasEditSaleLineItemsFeature &&\n lineItems?.map((i) => (\n \n \n \n \n \n ))}\n {/* Add line item button */}\n {hasEditSaleLineItemsFeature && (\n {\n setCurItem(undefined);\n onAddNewCost();\n }}\n tabIndex={0}\n disabled={hideForWastedSale}\n >\n \n \n \n )}\n \n \n \n \n \n \n \n
    \n \n \n \n \n \n {sale?.ttlNetProcs == null ? (\n hasTotalNetProceedsPermissions ? (\n \n ) : null\n ) : (\n {sale.ttlNetProcs.disp}\n )}\n \n \n
    \n \n \n \n {sale?.soldTktCost == null ? (\n \n ) : (\n \n {'-'}\n {sale.soldTktCost.disp}\n \n )}\n \n \n
    \n {i.description}\n \n \n \n {i.costType === SaleCostType.Charge ? '-' : ''}\n \n \n {formatCurrency(i.cost!, sale?.currency)}\n \n \n \n
    \n \n }\n align=\"end\"\n >\n {\n setCurItem(i);\n onAddNewCost();\n }}\n >\n \n \n onLineItemChange?.(i, true)}\n >\n \n \n \n
    \n
    \n \n \n \n {formatCurrency(totalProfitAmount, sale?.currency)}\n \n
    \n }\n />\n \n )}\n\n {isBulkEdit && hasHideSalePaymentReceivedFilterFeature ? null : (\n \n }\n detail={\n {\n setValue('paymentReceived', posChangedField(isChecked), {\n shouldDirty: true,\n });\n }}\n />\n }\n />\n \n }\n detail={\n {\n const { value } = e.target;\n if (!value) {\n setValue('paymentReferenceId', null, {\n shouldDirty: true,\n });\n return;\n }\n setValue('paymentReferenceId', posChangedField(value), {\n shouldDirty: true,\n });\n }}\n trimOnBlur={true}\n />\n }\n />\n \n {!isBulkEdit && !hasSaleDetailsMarketplaceTermsFeature && (\n \n }\n detail={\n \n {sale?.mkpPmtState ? (\n \n ) : sale?.pmtState ? (\n \n ) : null}\n \n }\n />\n \n )}\n \n )}\n\n \n \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport * as styles from 'src/modals/SaleDetails/SaleDetails.css';\nimport { SALE_CANCELLATION_REASON_CID } from 'src/utils/constants/contentIdMaps';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport {\n Feature,\n PointOfSaleSaleStatus,\n SaleInput,\n} from 'src/WebApiController';\n\ninterface SaleCancellationReasonProps {\n status: PointOfSaleSaleStatus | undefined | null;\n}\n\nexport const SaleCancellationReason = ({\n status,\n}: SaleCancellationReasonProps) => {\n const { watch, setValue } = useFormContext();\n const userHasSaleCancellationReason = useUserHasFeature(\n Feature.SaleCancellationReason\n );\n\n const cancellationReason = watch('cancellationReason');\n\n const isRejectedState =\n status === PointOfSaleSaleStatus.Rejected ||\n status === PointOfSaleSaleStatus.PendingRejection;\n\n if (!isRejectedState || !userHasSaleCancellationReason) {\n return null;\n }\n\n return (\n {\n setValue(\n 'cancellationReason',\n posChangedField(selectedCancellationReason),\n {\n shouldDirty: true,\n }\n );\n }}\n />\n );\n};\n","import { formatInTimeZone } from 'date-fns-tz';\nimport { useFormContext } from 'react-hook-form';\nimport { InHandDateDisplay } from 'src/components/common/InHandDateDisplay';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { Stack, Switch, TooltipPopover } from 'src/core/ui';\nimport { useMarketplaceHandledByProcessor } from 'src/hooks/useMarketplaceHandledByProcessor';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n useUserCanUpdateSale,\n useUserCanViewFulfillmentArtifacts,\n} from 'src/hooks/useUserHasSalePermissions';\nimport { Detail, DetailGroup, SectionContent } from 'src/modals/common';\nimport { modalSection } from 'src/modals/common/Modals.css';\nimport { SaleCancellationReason } from 'src/modals/SaleDetails/components/SaleCancellationReason';\nimport { useGetModalGridFormat } from 'src/modals/SaleDetailsV2/hooks/useGetModalGridFormat';\nimport * as ticketsStyles from 'src/modals/TransferTickets/TransferTickets.css';\nimport { ViewTickets } from 'src/modals/ViewTickets';\nimport { IconsFill, WarningOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { TICKET_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { stringToUtcDate } from 'src/utils/dateTimeUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport {\n getSaleDetailsModalConfigWithDeepLink,\n getSaleStatusDisplayContentId,\n} from 'src/utils/saleUtils';\nimport {\n getTicketTypeIcon,\n getTicketTypeIcons,\n getTicketTypeLabel,\n} from 'src/utils/ticketTypeUtils';\nimport {\n Feature,\n Marketplace,\n MarketplaceFulfillmentState,\n PointOfSaleSaleStatus,\n SaleDetails,\n SaleInput,\n} from 'src/WebApiController';\n\nimport * as styles from '../SaleDetails.css';\n\n/**\n * Set of sale statuses that allow for changing ticket type.\n */\nconst ALLOWED_TICKET_TYPE_CHANGE_SALE_STATUSES = new Set([\n PointOfSaleSaleStatus.PendingConfirmation,\n PointOfSaleSaleStatus.PendingFulfillment,\n PointOfSaleSaleStatus.PendingReshipment,\n PointOfSaleSaleStatus.FulfillmentFailed,\n PointOfSaleSaleStatus.Hold,\n PointOfSaleSaleStatus.CancelledHold,\n]);\n\nexport type DeliverySectionProps = {\n sale?: SaleDetails | null;\n isBulkEdit?: boolean;\n disabled?: boolean;\n};\n\nexport const DeliverySection = ({\n sale,\n isBulkEdit,\n disabled,\n}: DeliverySectionProps) => {\n const { SectionContentGridFormat } = useGetModalGridFormat();\n const { timeZone } = useSiteTimezoneContext();\n const canEditSale = useUserCanUpdateSale(sale) || isBulkEdit;\n const canViewFulfillmentArtifacts = useUserCanViewFulfillmentArtifacts(sale);\n const hasFufillmentMismatchDisplay = useUserHasFeature(\n Feature.FufillmentMismatchDisplay\n );\n\n const { watch, setValue } = useFormContext();\n\n const ticketType = watch('ticketType');\n const isNoFulfill = watch('isNoFulfill');\n\n let InHandInfo = null;\n let HoldExpirationInfo = null;\n\n if (sale?.holdExpiredOn && status === PointOfSaleSaleStatus.Hold) {\n const holdExpirationDateAsDate = stringToUtcDate(sale.holdExpiredOn);\n\n const holdExpirationDateString = holdExpirationDateAsDate\n ? formatInTimeZone(\n holdExpirationDateAsDate,\n timeZone,\n 'MMM d, yyyy HH:mm:ss',\n {\n locale: getLocaleFromLanguageOrCurrent(),\n }\n )\n : undefined;\n\n HoldExpirationInfo = (\n }\n detail={holdExpirationDateString}\n />\n );\n }\n\n if (sale?.inHandAt) {\n const date = new Date(sale.inHandAt);\n\n const dateString = formatInTimeZone(date, timeZone, '(MMM d, yyyy)', {\n locale: getLocaleFromLanguageOrCurrent(),\n });\n\n const needsToFulfill = Boolean(\n sale?.status &&\n [\n PointOfSaleSaleStatus.Fulfilled,\n PointOfSaleSaleStatus.ProcessingFulfillment,\n PointOfSaleSaleStatus.Rejected,\n PointOfSaleSaleStatus.PendingRejection,\n ].includes(sale.status)\n );\n\n InHandInfo = (\n }\n detail={\n
    \n \n {dateString}\n
    \n }\n />\n );\n } else {\n InHandInfo = (\n }\n detail={}\n />\n );\n }\n\n const cancelTo = getSaleDetailsModalConfigWithDeepLink(sale?.id);\n\n const hasAutoFulfillFeature = useUserHasFeature(Feature.AutoFulfillSetting);\n const saleIsHandledByProcessor = useMarketplaceHandledByProcessor(sale?.mkp);\n\n const canChangeTicketType =\n isBulkEdit ||\n (sale &&\n (sale.mkp === Marketplace.StubHub || saleIsHandledByProcessor) &&\n ALLOWED_TICKET_TYPE_CHANGE_SALE_STATUSES.has(sale.status));\n\n const cantChangeTicketTypeTooltip = useContent(\n ContentId.SaleTicketTypeWarning\n );\n const content = (\n <>\n \n }\n detail={\n canEditSale ? (\n \n {isBulkEdit && (\n \n }\n />\n )}\n {\n setValue('ticketType', posChangedField(newTicketType), {\n shouldDirty: true,\n });\n }}\n />\n \n ) : (\n
    \n {getTicketTypeIcon(\n ticketType?.value ?? null,\n IconsFill.textPrimary\n )}\n
    \n {getTicketTypeLabel(ticketType?.value ?? null)}\n
    \n
    \n )\n }\n />\n {!isBulkEdit &&\n Boolean(sale?.availArtTypes?.length) &&\n canViewFulfillmentArtifacts && (\n \n )}\n
    \n {!isBulkEdit && hasAutoFulfillFeature && saleIsHandledByProcessor && (\n \n \n }\n style={{ flex: 1 }}\n detail={\n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n setValue('isNoFulfill', posChangedField(!isChecked), {\n shouldDirty: true,\n });\n }}\n />\n }\n />\n \n \n )}\n\n {!isBulkEdit && (\n <>\n {sale?.status && (\n \n }\n detail={\n <>\n \n \n \n {\n // if the Sale is fulfilled in both POS and Marketplace, but the version is mismatched, show the warning\n sale.status === PointOfSaleSaleStatus.Fulfilled &&\n sale.isFulfillVerMis ? (\n <>\n {hasFufillmentMismatchDisplay && (\n \n \n }\n >\n \n }\n />\n \n \n )}\n \n ) : sale.status !== PointOfSaleSaleStatus.Fulfilled &&\n sale?.mkpFulfState ===\n MarketplaceFulfillmentState.Fulfilled ? (\n \n \n }\n >\n \n }\n />\n \n \n ) : undefined\n }\n \n \n }\n />\n \n )}\n {HoldExpirationInfo}\n {InHandInfo}\n {sale?.transDest && (\n \n }\n detail={\n
    \n
    \n {sale?.transDest.name}\n
    \n
    \n {sale?.transDest.email}\n
    \n
    \n {sale?.transDest.phoneNumber}\n
    \n
    \n }\n />\n
    \n )}\n \n )}\n \n );\n\n return isBulkEdit ? (\n
    {content}
    \n ) : (\n {content}\n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { SellerAccountEmployeeSelector } from 'src/components/Selectors/SellerAccountEmployeeSelector';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useUserCanUpdateSale } from 'src/hooks/useUserHasSalePermissions';\nimport { Detail, DetailGroup, SectionContent } from 'src/modals/common';\nimport { modalSection } from 'src/modals/common/Modals.css';\nimport { useGetModalGridFormat } from 'src/modals/SaleDetailsV2/hooks/useGetModalGridFormat';\nimport {\n EMPTY_SELLER_USER_ID,\n FULFILLMENT_PROVIDER_SELLER_USER_IDS,\n} from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { Feature, Permission, Sale, SaleInput } from 'src/WebApiController';\n\nexport const FulfillmentSection = ({\n sale,\n isBulkEdit,\n}: {\n sale?: Sale | null;\n isBulkEdit?: boolean;\n}) => {\n const { SectionContentGridFormat } = useGetModalGridFormat();\n const canUpdate = useUserCanUpdateSale(sale) || isBulkEdit;\n const canChangeFulfiller =\n useUserHasAnyOfPermissions(Permission.Sales_Fulfill) && canUpdate;\n const { watch, setValue } = useFormContext();\n const hasFulfillmentProvidersFeature = useUserHasFeature(\n Feature.FulfillmentProviders\n );\n\n const fulfillerId = watch('fulfillerSellerUserId');\n\n const content = (\n \n }\n detail={\n {\n if (newId !== fulfillerId?.value) {\n setValue('fulfillerSellerUserId', posChangedField(newId), {\n shouldDirty: true,\n });\n if (FULFILLMENT_PROVIDER_SELLER_USER_IDS.has(newId)) {\n setValue('isNoFulfill', posChangedField(true), {\n shouldDirty: true,\n });\n }\n }\n }}\n onClick={(e) => e.stopPropagation()}\n isFulfillmentSection={hasFulfillmentProvidersFeature}\n />\n }\n />\n \n );\n return isBulkEdit ? (\n
    {content}
    \n ) : (\n {content}\n );\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { isEqual } from 'lodash-es';\nimport { ComponentProps, useCallback, useMemo, useRef, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { PaymentCurrencyConversionSection } from 'src/modals/SaleDetails/components/PaymentCurrencyConversionSection';\nimport { PaymentSection } from 'src/modals/SaleDetails/components/PaymentSection/PaymentSection';\nimport { DeliverySection } from 'src/modals/SaleDetailsV2/components/DeliverySection';\nimport { FulfillmentSection } from 'src/modals/SaleDetailsV2/components/FulfillmentSection';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getSaleDetailsUpdateInput } from 'src/utils/saleUtils';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n Event,\n Feature,\n Sale,\n SaleDetails,\n SaleInput,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport type BulkEditSalesSettingsDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n sales?: Sale[] | null;\n event?: Event;\n onOkay: (\n saleInput: SaleInput | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport const BulkEditSalesSettingsDialog = ({\n sales,\n ...rest\n}: BulkEditSalesSettingsDialogProps) => {\n const methods = useForm({\n defaultValues: getSaleDetailsUpdateInput(sales?.[0] as SaleDetails),\n });\n\n return (\n \n \n \n );\n};\n\nfunction BulkEditSalesSettingsDialogContent({\n updateKey,\n sales,\n event,\n onOkay,\n onCancel,\n handleSubmit,\n watch,\n reset,\n formState,\n ...rest\n}: BulkEditSalesSettingsDialogProps &\n Omit>, 'children'>) {\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n const input = watch();\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n await refreshExpandedListItems(true);\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n setMainDialogOpened(false);\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n ActionOutboxEntityType.Sale,\n BulkActionType.UpdateGeneralSettings,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(null, false, onPreviewReceived);\n } else {\n handleSubmit((i) =>\n onOkay(i, hasBackgroundBulkEditFeature, undefined, preview)\n )();\n }\n setIsLoading(false);\n },\n [onOkay, handleSubmit, preview, hasBackgroundBulkEditFeature]\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const hidePaymentCurrencyConversion = useUserHasFeature(\n Feature.HideSalePaymentConversionSection\n );\n\n const isInputValid = useMemo(() => {\n return !isEqual(input, formState.defaultValues ?? {});\n }, [formState.defaultValues, input]);\n\n const submittButtonRef = useRef(null);\n\n return (\n <>\n }\n />\n }\n onOpened={() => {\n reset(getSaleDetailsUpdateInput());\n initJob();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter' && isInputValid) {\n submittButtonRef.current.click();\n }\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n\n \n \n {!hidePaymentCurrencyConversion && (\n \n )}\n \n \n \n \n );\n}\n","import { useUpdateSalesSettingsPermissions } from 'src/components/Sales/BulkActions/useUpdateSalesSettingsPermissions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const LaunchUpdateSalesSettings = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const { hasUpdateSalesSettingsPermission } =\n useUpdateSalesSettingsPermissions();\n\n if (!hasUpdateSalesSettingsPermission) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { BulkEditSalesSettingsDialog } from 'src/dialogs/BulkEdits/BulkEditSalesSettingsDialog';\nimport { lookupEventInCatalog } from 'src/utils/eventWithDataUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditPreviewWithDetails,\n BulkEditSaleClient,\n Event,\n SaleInput,\n SaleQuery,\n} from 'src/WebApiController';\n\nimport { SALES_BULK_UPDATE_GENERAL_SETTINGS_UPDATE_KEY } from '../../SalesActionDropdown.constants';\nimport { LaunchUpdateSalesSettings } from './LaunchUpdateSaleSettings';\n\nexport const useBulkUpdateSalesSettings = (\n filterQueryWithEventIds: SaleQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const updateKey = event\n ? `salesSettings-event-${event?.viagVirtualId}`\n : SALES_BULK_UPDATE_GENERAL_SETTINGS_UPDATE_KEY;\n\n const {\n data,\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkEditSalesSettingsDialog,\n closeDialog: closeBulkEditSalesSettingsDialog,\n } = useDialog(DialogId.BulkEditSalesSettings, BulkEditSalesSettingsDialog);\n\n const onSubmit = useCallback(\n async (\n saleInput: SaleInput | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditSaleClient(\n activeAccountWebClientConfig\n ).bulkUpdateGeneralSettingsPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateGeneralSettingsPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (saleInput) {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditSaleClient(\n activeAccountWebClientConfig\n ).bulkUpdateGeneralSettings(\n {\n item1: preview!.preview,\n item2: saleInput,\n },\n updateKey,\n supportBackgroundProcess\n );\n if (!supportBackgroundProcess) {\n if (succeeded) {\n await refreshExpandedListItems();\n }\n\n closeBulkEditSalesSettingsDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkUpdateGeneralSettings', error, {\n trackErrorData: { event, preview },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeBulkEditSalesSettingsDialog,\n event,\n filterQueryWithEventIds,\n refreshExpandedListItems,\n setIsLoading,\n showErrorDialog,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n openBulkEditSalesSettingsDialog({\n event,\n sales: event\n ? lookupEventInCatalog(data, event.viagVirtualId)\n ?.entities?.sales?.filter((s) => s != null)\n ?.map((s) => s!)\n : [],\n updateKey,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkEditSalesSettingsDialog,\n });\n }}\n disabled={isLoading}\n />\n ),\n };\n};\n","import { useMemo } from 'react';\nimport {\n useFilterQueryState,\n UseFilterQueryStateType,\n} from 'src/components/MainFilterBar/useFilterQueryState';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { EventWithData } from 'src/WebApiController';\nimport { ActionOutboxEntityType, Sale, SaleQuery } from 'src/WebApiController';\n\ninterface UseSalesBulkActionsState {\n isAllSalesSelected: boolean;\n affectedVisibleSaleIds: number[];\n filterQueryWithEventIds: UseFilterQueryStateType;\n}\n\nexport const useSalesBulkActionsState = (\n event?: EventWithData['event']\n): UseSalesBulkActionsState => {\n const { isAllSelected } = useMultiSelectionContext();\n\n const { filterQueryWithEventIds } = useFilterQueryState(\n ActionOutboxEntityType.Sale,\n event?.viagVirtualId ? [event?.viagVirtualId] : []\n );\n\n const { eventsTransformed } = useCatalogDataContext();\n\n const sales = useMemo(() => {\n return (eventsTransformed ?? [])\n .flatMap((ev) => ev.entities.sales)\n .filter((s) => s != null) as Sale[];\n }, [eventsTransformed]);\n\n const affectedVisibleSaleIds = useMemo(() => {\n // Else we must respect only the entity Ids and event Ids\n const ids = [...(filterQueryWithEventIds.entityIds ?? [])];\n ids.push(\n ...sales\n .filter(\n (s) =>\n filterQueryWithEventIds.eventOrMappingIds?.includes(s.viagVirtualId)\n )\n .map((s) => s.id)\n );\n return ids;\n }, [\n filterQueryWithEventIds.entityIds,\n filterQueryWithEventIds.eventOrMappingIds,\n sales,\n ]);\n\n return {\n isAllSalesSelected: isAllSelected,\n affectedVisibleSaleIds,\n filterQueryWithEventIds,\n };\n};\n","import { useState } from 'react';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { useUpdatePurchasesPermissions } from 'src/components/Purchases/BulkActions/useUpdatePurchasesPermissions';\nimport { useUpdateSalesSettingsPermissions } from 'src/components/Sales/BulkActions/useUpdateSalesSettingsPermissions';\nimport { useBulkEditCommissionAction } from 'src/components/Sales/SalesActionDropdown/components/BulkEditCommissionAction';\nimport { useBulkMarkSaleAsPaid } from 'src/components/Sales/SalesActionDropdown/components/BulkMarkSaleAsPaid';\nimport { useBulkUpdateInternalNotesAction } from 'src/components/Sales/SalesActionDropdown/components/BulkUpdateInternalNotesAction';\nimport { useBulkUpdateSalesSettings } from 'src/components/Sales/SalesActionDropdown/components/BulkUpdateSalesGeneralSettings';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EventWithData } from 'src/WebApiController';\n\nimport { useSalesBulkActionsState } from '../../useSalesBulkActionsState';\n\ninterface SettingsActionsProps {\n event: EventWithData['event'];\n}\n\nexport const SettingsActions = ({ event }: SettingsActionsProps) => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n const [isLoading, setIsLoading] = useState(false);\n const { filterQueryWithEventIds } = useSalesBulkActionsState(event);\n\n const bulkUpdateGeneralSettings = useBulkUpdateSalesSettings(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const bulkUpdateInternalNotes = useBulkUpdateInternalNotesAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const bulkEditCommissionAction = useBulkEditCommissionAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const bulkBulkMarkAsPaid = useBulkMarkSaleAsPaid(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const { hasUpdateSalesSettingsPermission } =\n useUpdateSalesSettingsPermissions();\n const {\n hasUpdatePurchasesPermission,\n hasPurchaseUpdateCommissionPermission,\n } = useUpdatePurchasesPermissions();\n\n if (\n !hasUpdateSalesSettingsPermission &&\n !hasUpdatePurchasesPermission &&\n !hasPurchaseUpdateCommissionPermission\n ) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {bulkUpdateGeneralSettings.dropDown}\n {bulkUpdateInternalNotes.dropDown}\n {bulkEditCommissionAction.dropDown}\n {bulkBulkMarkAsPaid.dropDown}\n \n \n );\n};\n","import { useCallback, useState } from 'react';\nimport { LaunchBulkEditTags } from 'src/components/common/BulkActions/BulkEditTagsAction';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport {\n BulkEditTagAction,\n BulkEditTagDialog,\n} from 'src/dialogs/BulkEdits/BulkEditTagDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditPreviewWithDetails,\n BulkEditSaleClient,\n Event,\n SaleQuery,\n} from 'src/WebApiController';\n\nimport { SALES_BULK_UPDATE_TAGS_UPDATE_KEY } from '../../SalesActionDropdown.constants';\n\nexport const useBulkEditTagsAction = (\n filterQueryWithEventIds: SaleQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const updateKey = event\n ? `saleTags-event-${event.viagVirtualId}`\n : SALES_BULK_UPDATE_TAGS_UPDATE_KEY;\n const {\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkEditTagDialog,\n closeDialog: closeBulkEditTagDialog,\n } = useDialog(DialogId.BulkEditTags, BulkEditTagDialog);\n\n const [editTagAction, setEditTagAction] = useState(\n BulkEditTagAction.Update\n );\n\n const onSubmitEditTags = useCallback(\n async (\n action: BulkEditTagAction,\n tagKey: string | null,\n tagValue?: string | undefined,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n\n setIsLoading(true);\n\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const client = new BulkEditSaleClient(activeAccountWebClientConfig);\n\n const preview = await client.bulkUpdateTagsPreview(\n filterQueryWithEventIds\n );\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateTagsPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (tagKey) {\n await tryInvokeApi(\n async () => {\n const client = new BulkEditSaleClient(activeAccountWebClientConfig);\n\n const succeeded =\n action === BulkEditTagAction.Update\n ? await client.bulkUpdateTags(\n preview!.preview,\n tagKey,\n tagValue,\n updateKey,\n supportBackgroundProcess\n )\n : await client.bulkRemoveTags(\n preview!.preview,\n tagKey,\n updateKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on details modal\n // we force re-loading the entity and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n\n closeBulkEditTagDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkUpdateTags', error, {\n trackErrorData: { tagKey, tagValue, preview },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n setIsLoading,\n filterQueryWithEventIds,\n showErrorDialog,\n updateKey,\n closeBulkEditTagDialog,\n setActivePosEntity,\n refreshExpandedListItems,\n ]\n );\n\n const onChangeTagClick = useCallback(\n (e: React.MouseEvent, editTagAction: BulkEditTagAction) => {\n e.preventDefault();\n e.stopPropagation();\n if (event) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n setEditTagAction(editTagAction);\n openBulkEditTagDialog({\n updateKey,\n action: editTagAction,\n onOkay: onSubmitEditTags,\n entityType: ActionOutboxEntityType.Sale,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkEditTagDialog,\n });\n },\n [\n closeBulkEditTagDialog,\n event,\n onSubmitEditTags,\n openBulkEditTagDialog,\n setIsLoading,\n setListItemExpansion,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n \n ),\n };\n};\n","import { useState } from 'react';\nimport { BulkEditTagsActionPermissionsHandler } from 'src/components/common/BulkActions/BulkEditTagsAction/BulkEditTagsActionPermissionsHandler';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { useBulkEditTagsAction } from 'src/components/Sales/SalesActionDropdown/components/BulkEditTagsAction';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EventWithData } from 'src/WebApiController';\nimport { ActionOutboxEntityType } from 'src/WebApiController';\n\nimport { useSalesBulkActionsState } from '../../useSalesBulkActionsState';\n\ninterface TagsActionsProps {\n event: EventWithData['event'];\n}\n\nexport const TagsActions = ({ event }: TagsActionsProps) => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n const [isLoading, setIsLoading] = useState(false);\n const { filterQueryWithEventIds } = useSalesBulkActionsState();\n\n const bulkUpdateTags = useBulkEditTagsAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n\n return (\n \n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {bulkUpdateTags.dropDown}\n \n \n );\n};\n","import { useBulkUpdateAutoFulfillPermissions } from 'src/components/common/BulkActions/BulkUpdateAutoFulfillAction/useBulkUpdateAutoFulfillPermissions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { useAnyMarketplaceHandledByProcessor } from 'src/hooks/useMarketplaceHandledByProcessor';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ActionOutboxEntityType, Feature } from 'src/WebApiController';\n\nexport const LaunchBulkMarkAsFulfilled = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const { hasEditAutoFulfillPermissions } = useBulkUpdateAutoFulfillPermissions(\n {\n entityType: ActionOutboxEntityType.Sale,\n }\n );\n const hasMarkedAsFulfilled = useUserHasFeature(Feature.SaleMarkedAsFulfilled);\n const anyMkpHandledByProcessor = useAnyMarketplaceHandledByProcessor();\n\n if (\n !anyMkpHandledByProcessor ||\n !hasEditAutoFulfillPermissions ||\n !hasMarkedAsFulfilled\n ) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n","import { useContent } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const SalesGlobalActionDropdown = () => {\n const actionsMsg = useContent(ContentId.Actions);\n\n // Return actual content when we have actions\n // again\n return null;\n\n // return (\n // \n // \n // \n // }\n // align=\"end\"\n // >\n // );\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport type BulkMarkAsFulfilledDialogProps = ComponentProps & {\n updateKey: string;\n onOkay: (\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport function BulkMarkAsFulfilledDialog({\n updateKey,\n onOkay,\n onCancel,\n ...rest\n}: BulkMarkAsFulfilledDialogProps) {\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n await refreshExpandedListItems();\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n ActionOutboxEntityType.Sale,\n BulkActionType.MarkAsFulfilled,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(false, onPreviewReceived);\n } else {\n onOkay(hasBackgroundBulkEditFeature, undefined, preview);\n }\n setIsLoading(false);\n },\n [onOkay, preview, hasBackgroundBulkEditFeature]\n );\n const submittButtonRef = useRef(null);\n\n return (\n }\n />\n }\n onOpened={() => {\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter') {\n submittButtonRef.current.click();\n }\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n \n \n \n \n \n );\n}\n","import { useCallback } from 'react';\nimport { LaunchBulkMarkAsFulfilled } from 'src/components/common/BulkActions/BulkMarkAsFulfilled';\nimport { SALES_BULK_UPDATE_MARK_AS_FULFILLED_UPDATE_KEY } from 'src/components/Sales/SalesActionDropdown';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { BulkMarkAsFulfilledDialog } from 'src/dialogs/BulkEdits/BulkMarkAsFulfilledDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditPreviewWithDetails,\n BulkEditSaleClient,\n Event,\n SaleQuery,\n} from 'src/WebApiController';\n\nexport const useBulkMarkAsFulfilledAction = (\n filterQueryWithEventIds: SaleQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const updateKey = event\n ? `sales-markasfulfilled-event-${event.viagVirtualId}`\n : SALES_BULK_UPDATE_MARK_AS_FULFILLED_UPDATE_KEY;\n const {\n refreshCatalog,\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkMarkAsFulfilledDialog,\n closeDialog: closeBulkMarkAsFulfilledDialog,\n } = useDialog(DialogId.BulkMarkAsFulfilled, BulkMarkAsFulfilledDialog);\n\n const onSubmit = useCallback(\n async (\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditSaleClient(\n activeAccountWebClientConfig\n ).bulkUpdateMarkAsFulfilledPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateMarkAsFulfilledPreview', error, {\n trackErrorData: { event },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else {\n await tryInvokeApi(\n async () => {\n const saleClient = new BulkEditSaleClient(\n activeAccountWebClientConfig\n );\n\n const succeeded = await saleClient.bulkUpdateMarkAsFulfilled(\n preview!.preview,\n updateKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on listingDetails\n // we force re-loading the listing and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n\n closeBulkMarkAsFulfilledDialog();\n await refreshCatalog();\n }\n },\n (error) => {\n showErrorDialog('bulkUpdateMarkAsFulfilled', error, {\n trackErrorData: { preview },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n setIsLoading,\n activeAccountWebClientConfig,\n filterQueryWithEventIds,\n showErrorDialog,\n event,\n updateKey,\n closeBulkMarkAsFulfilledDialog,\n refreshCatalog,\n setActivePosEntity,\n refreshExpandedListItems,\n ]\n );\n\n const onChangeClick = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (event) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n\n openBulkMarkAsFulfilledDialog({\n updateKey,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkMarkAsFulfilledDialog,\n });\n },\n [\n closeBulkMarkAsFulfilledDialog,\n event,\n onSubmit,\n openBulkMarkAsFulfilledDialog,\n setIsLoading,\n setListItemExpansion,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n \n ),\n };\n};\n","import { useCallback } from 'react';\nimport { LaunchBulkUpdateAutoFulfill } from 'src/components/common/BulkActions/BulkUpdateAutoFulfillAction';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { BulkUpdateAutoFulfillDialog } from 'src/dialogs/BulkEdits/BulkUpdateAutoFulfillDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditPreviewWithDetails,\n BulkEditSaleClient,\n Event,\n SaleQuery,\n} from 'src/WebApiController';\n\nimport { SALES_BULK_UPDATE_AUTOFULFILL_UPDATE_KEY } from '../../SalesActionDropdown.constants';\n\nexport const useBulkUpdateAutoFulfillAction = (\n filterQueryWithEventIds: SaleQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const updateKey = event\n ? `sales-autofulfill-event-${event.viagVirtualId}`\n : SALES_BULK_UPDATE_AUTOFULFILL_UPDATE_KEY;\n const {\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkUpdateAutoFulfillDialog,\n closeDialog: closeBulkUpdateAutofulfillDialog,\n } = useDialog(DialogId.BulkUpdateAutoFulfill, BulkUpdateAutoFulfillDialog);\n\n const onSubmit = useCallback(\n async (\n isNoFulfill: boolean | null,\n _updateSalesOfListings: boolean,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditSaleClient(\n activeAccountWebClientConfig\n ).bulkUpdateIsNoFulfillPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateIsNoFulfillPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (isNoFulfill != null) {\n await tryInvokeApi(\n async () => {\n const saleClient = new BulkEditSaleClient(\n activeAccountWebClientConfig\n );\n\n const succeeded = await saleClient.bulkUpdateIsNoFulfill(\n preview!.preview,\n updateKey,\n isNoFulfill,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on listingDetails\n // we force re-loading the listing and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n\n closeBulkUpdateAutofulfillDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkUpdateIsNoFulfill', error, {\n trackErrorData: { isNoFulfill, preview },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n setIsLoading,\n activeAccountWebClientConfig,\n filterQueryWithEventIds,\n showErrorDialog,\n updateKey,\n closeBulkUpdateAutofulfillDialog,\n setActivePosEntity,\n refreshExpandedListItems,\n ]\n );\n\n const onChangeClick = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (event) {\n setListItemExpansion(true, [event.viagVirtualId]);\n }\n openBulkUpdateAutoFulfillDialog({\n updateKey,\n onOkay: onSubmit,\n entityType: ActionOutboxEntityType.Sale,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkUpdateAutofulfillDialog,\n });\n },\n [\n closeBulkUpdateAutofulfillDialog,\n event,\n onSubmit,\n openBulkUpdateAutoFulfillDialog,\n setIsLoading,\n setListItemExpansion,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n \n ),\n };\n};\n","import { useState } from 'react';\nimport { useBulkUpdateAutoFulfillPermissions } from 'src/components/common/BulkActions/BulkUpdateAutoFulfillAction/useBulkUpdateAutoFulfillPermissions';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { useSalesBulkActionsState } from 'src/components/Sales/BulkActions/useSalesBulkActionsState';\nimport { useBulkMarkAsFulfilledAction } from 'src/components/Sales/SalesActionDropdown/components/BulkMarkAsFulfilled';\nimport { useBulkUpdateAutoFulfillAction } from 'src/components/Sales/SalesActionDropdown/components/BulkUpdateAutoFulfillAction';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { useAnyMarketplaceHandledByProcessor } from 'src/hooks/useMarketplaceHandledByProcessor';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n EventWithData,\n Feature,\n} from 'src/WebApiController';\n\ninterface FulfillmentActionsProps {\n event?: EventWithData['event'];\n}\n\nexport const FulfillmentActions = ({ event }: FulfillmentActionsProps) => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n const [isLoading, setIsLoading] = useState(false);\n const { filterQueryWithEventIds } = useSalesBulkActionsState();\n const bulkUpdateAutoFulfill = useBulkUpdateAutoFulfillAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const bulkMarkAsFulfilled = useBulkMarkAsFulfilledAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const { hasEditAutoFulfillPermissions } = useBulkUpdateAutoFulfillPermissions(\n {\n entityType: ActionOutboxEntityType.Sale,\n }\n );\n const hasAutoFulfillFeature = useUserHasFeature(Feature.AutoFulfillSetting);\n const hasMarkedAsFulfilled = useUserHasFeature(Feature.SaleMarkedAsFulfilled);\n const anyMkpHandledByProcessor = useAnyMarketplaceHandledByProcessor();\n\n if (\n (!hasAutoFulfillFeature && !hasMarkedAsFulfilled) ||\n !anyMkpHandledByProcessor ||\n !hasEditAutoFulfillPermissions\n )\n return null;\n\n return (\n <>\n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {bulkUpdateAutoFulfill.dropDown}\n {bulkMarkAsFulfilled.dropDown}\n \n \n );\n};\n","import { MultiSelectActionsContainer } from 'src/components/common/MultiSelect/MultiSelectActionsContainer';\nimport { SettingsActions } from 'src/components/Sales/BulkActions/SalesEventBulkActions/Actions/SettingsActions';\nimport { TagsActions } from 'src/components/Sales/BulkActions/SalesEventBulkActions/Actions/TagsActions';\nimport { FulfillmentActions } from 'src/components/Sales/BulkActions/SalesGlobalBulkActions/Actions/FulfillmentActions';\nimport { EventWithData } from 'src/WebApiController';\n\ninterface SalesMonthlyBulkActionsProps {\n event: EventWithData['event'];\n}\n\nexport const SalesMonthlyBulkActions = ({\n event,\n}: SalesMonthlyBulkActionsProps) => {\n return (\n \n \n \n \n \n );\n};\n","import styled from 'styled-components/macro';\n\nexport const ItemsCountDiv = styled.div`\n text-align: right;\n line-height: 18px;\n white-space: nowrap;\n color: ${(props) => props.theme.colors.textPrimary};\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('caption1')};\n`;\n","import { useCallback, useMemo } from 'react';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { IconButton } from 'src/components/Buttons';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { vars } from 'src/core/themes';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport { FullPageIcon } from 'src/svgs';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { createPurchaseEventPageUrl } from 'src/utils/purchaseUtils';\nimport { createSaleEventPageUrl } from 'src/utils/saleUtils';\nimport { Event, Feature } from 'src/WebApiController';\n\nexport const FullPageEventAction = ({ event }: { event: Event }) => {\n const hasFullPageEventViewFeature = useUserHasFeature(\n Feature.FullPageEventView\n );\n const navigate = useNavigate();\n const { mainRoute } = useAppContext();\n\n const eventUrl = useMemo(() => {\n if (mainRoute === MainRoute.Sales) {\n return createSaleEventPageUrl(event.viagVirtualId);\n } else {\n return createPurchaseEventPageUrl(event.viagVirtualId);\n }\n }, [event.viagVirtualId, mainRoute]);\n\n const onViewClick = useCallback(\n (eventUrl: string) => {\n if (event) {\n window.location.replace(`#${event.viagVirtualId}`);\n setTimeout(() => {\n navigate(eventUrl, {\n state: {\n returnUrl: `${location.pathname}${location.search}#${event.viagVirtualId}`,\n },\n });\n }, 10);\n }\n },\n [event, navigate]\n );\n\n if (!hasFullPageEventViewFeature) {\n return null;\n }\n\n return (\n {\n if (e.button === 0 && e.getModifierState('Control') === false) {\n // Perform like a button click when it's a left-click (and no Ctrl)\n // Else the click will be whatever
    does\n e.preventDefault();\n e.stopPropagation();\n\n onViewClick(eventUrl);\n }\n }}\n >\n \n }\n titleContentId={ContentId.OpenEventPage}\n />\n \n );\n};\n","import { useMemo } from 'react';\nimport { MultiSelectionToggleGroup } from 'src/components/common/MultiSelect/Toggle/MultiSelectionToggleGroup';\nimport {\n MetricsDisplay,\n MetricsDisplayPlaceholder,\n} from 'src/components/Metrics';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useGetEventFullInfo } from 'src/hooks/useGetEventFullInfo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getSalesSaleMetrics } from 'src/utils/ticketMetricUtils';\nimport { SaleMetrics } from 'src/WebApiController';\n\nimport {\n EventItemHeader,\n EventItemHeaderType,\n METRICS_PLACEHOLDER_DIMS,\n} from '../../Events/EventItemHeader';\nimport * as styles from './EventSaleHeader.css';\nimport { ItemsCountDiv } from './EventSaleHeader.styled';\nimport { FullPageEventAction } from './FullPageEventAction';\n\nexport const EventSaleHeader = (props: EventItemHeaderType) => {\n const { eventMetrics } = useCatalogMetricsContext();\n\n const { event, entityCount: salesCount, ...rest } = props;\n const metrics = useMemo(\n () => getSalesSaleMetrics(eventMetrics?.[event.viagVirtualId]),\n [eventMetrics, event]\n );\n const { performer, venue } = useGetEventFullInfo(event);\n\n const {\n eventsExpansion: { expandedListItems, toggleListItemExpansion },\n } = useCatalogDataContext();\n\n const onToggleGroup = (groupId: string) => {\n if (!expandedListItems.includes(groupId)) {\n toggleListItemExpansion([groupId]);\n }\n };\n\n return (\n ,\n ,\n ]}\n headerMetrics={\n metrics && (\n \n )\n }\n metrics={\n
    \n {!metrics ? (\n \n ) : (\n \n )}\n \n {`${salesCount} `}\n \n \n
    \n }\n />\n );\n};\n","import clsx from 'clsx';\nimport { MinRowsForUsingVirtuoso } from 'src/components/Accordions';\nimport { EventSaleBody } from 'src/components/Accordions/SalesEventsAccordion/EventSaleBody';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { MultiSelectActionBar } from 'src/components/common/MultiSelect/MultiSelectActionBar';\nimport { multiActionToolBarNoHorizontalPadding } from 'src/components/Events/EventPage/EventPage.css';\nimport { SalesBulkActionsPermissions } from 'src/components/Sales/BulkActions/SalesBulkActionsPermissions';\nimport { SalesMonthlyBulkActions } from 'src/components/Sales/BulkActions/SalesEventBulkActions/SalesEventBulkActions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { SearchSolidIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EventWithData, Sale } from 'src/WebApiController';\n\nimport {\n EventAccordionItemProps,\n EventsAccordion,\n VirtualizedEventAccordionProps,\n} from '../EventsAccordion';\nimport { EventSaleHeader } from './EventSaleHeader';\n\nexport function translateEventToSaleAccordionItem(\n props: EventWithData,\n index: number,\n noPadding?: boolean\n): EventAccordionItemProps {\n return {\n index,\n itemId: props.event.viagVirtualId,\n HeaderComponent: EventSaleHeader,\n BodyComponent: EventSaleBody,\n AfterHeaderComponent: () => (\n \n \n \n \n \n ),\n usingVirtuoso: (props.counts.salesCnt ?? 0) > MinRowsForUsingVirtuoso,\n ...props,\n entities: props.entities.sales ?? [],\n entityCount: props.counts.salesCnt ?? 0,\n };\n}\n\nexport function SalesEventsAccordion(\n props: VirtualizedEventAccordionProps\n) {\n return ;\n}\n\nexport function SaleEventsEmpty() {\n return (\n \n \n \n }\n >\n \n \n \n \n \n \n \n );\n}\n","import { vars } from 'src/core/themes';\n\nexport const SHIMMERING_DIV_HEIGHT_PAYMENTS = vars.spacing.xxl;\n","export enum MarketplacePaymentLinesTableColumnId {\n Id = 'id',\n Type = 'type',\n Event = 'event',\n Seating = 'seating',\n Sale = 'sale',\n Paid = 'paid',\n SaleStatus = 'saleStatus',\n Actions = 'actions',\n}\n","import { useFormContext } from 'react-hook-form';\nimport { LinkMarketplacePaymentToSaleInput } from 'src/dialogs/LinkMarketplacePaymentToSaleDialog/LinkMarketplacePaymentToSaleDialog';\nimport { MarketplacePaymentLineType, SaleCostType } from 'src/WebApiController';\n\nexport const useGetRemainingBalance = () => {\n const { watch } = useFormContext();\n\n const saleLineItems = watch('saleLineItems') ?? [];\n const marketplacePaymentLine = watch('marketplacePaymentLine');\n\n const isCredit =\n marketplacePaymentLine?.type === MarketplacePaymentLineType.Credit;\n\n if (!marketplacePaymentLine) {\n return { remainingAmount: 0, isCredit };\n }\n\n // Only charge/credit that is linked to current payment id\n const saleLineItemsAmount = saleLineItems.reduce((acc, saleLineItem) => {\n let shouldCount = true;\n\n if (isCredit && saleLineItem.costType !== SaleCostType.Credit) {\n shouldCount = false;\n }\n\n if (!isCredit && saleLineItem.costType !== SaleCostType.Charge) {\n shouldCount = false;\n }\n\n if (saleLineItem.marketplacePaymentLineId !== marketplacePaymentLine.id) {\n shouldCount = false;\n }\n\n if (shouldCount) {\n acc += (isCredit ? 1 : -1) * saleLineItem.cost;\n }\n\n return acc;\n }, 0);\n\n return {\n remainingAmount: marketplacePaymentLine.amt.amt - saleLineItemsAmount,\n isCredit,\n };\n};\n","import { useFormContext } from 'react-hook-form';\nimport { LinkMarketplacePaymentToSaleInput } from 'src/dialogs/LinkMarketplacePaymentToSaleDialog/LinkMarketplacePaymentToSaleDialog';\nimport { useGetRemainingBalance } from 'src/dialogs/LinkMarketplacePaymentToSaleDialog/useGetRemainingBalance';\nimport { SaleLineItemModal } from 'src/modals/SaleDetails/components/PaymentSection/SaleLineItemModal';\nimport { AddLineItemModalBodyProps as SaleLineItemModalBodyProps } from 'src/modals/SaleDetails/components/PaymentSection/SaleLineItemModal/SaleLineItemModal.types';\n\ntype WrapperProps = SaleLineItemModalBodyProps;\n\nexport const SaleLineItemModalWrapper = (props: WrapperProps) => {\n const { remainingAmount, isCredit } = useGetRemainingBalance();\n const { watch } = useFormContext();\n\n const marketplacePaymentLine = watch('marketplacePaymentLine');\n return (\n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { SaleClient } from 'src/WebApiController';\n\nexport function useGetSaleLineItemsBySaleId(saleId?: number | null) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n !!activeAccountWebClientConfig?.activeAccountId && !!saleId;\n\n return useQuery({\n queryKey: ['GetSaleLineItemsBySaleId', saleId],\n async queryFn() {\n if (!shouldQuery) return null;\n\n try {\n return await new SaleClient(\n activeAccountWebClientConfig\n ).getSaleLineItemsBySaleId(saleId);\n } catch (err: unknown) {\n trackError('SaleClient.getSaleLineItemsBySaleId', err as ErrorTypes, {\n saleId,\n });\n throw err;\n }\n },\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n });\n}\n","import { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { SimpleTable } from 'src/core/ui';\nimport { useHasPaymentsSectionsV2Feature } from 'src/modals/SaleDetails/hooks/useHasPaymentsSectionsV2Feature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n SALE_LINE_ITEM_CHARGE_REASON_TO_CID,\n SALE_LINE_ITEM_CREDIT_REASON_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { formatCurrency } from 'src/utils/numberFormatter';\nimport { MarketplacePaymentLineType, SaleCostType } from 'src/WebApiController';\n\nimport { LinkMarketplacePaymentToSaleInput } from './LinkMarketplacePaymentToSaleDialog';\n\nexport function SaleChargesTable() {\n const { watch } = useFormContext();\n const hasPaymentsSectionsV2Feature = useHasPaymentsSectionsV2Feature();\n\n const saleLineItems = watch('saleLineItems') ?? [];\n const marketplacePaymentLine = watch('marketplacePaymentLine');\n const marketplacePaymentLineId = marketplacePaymentLine.id;\n const isCredit =\n marketplacePaymentLine.type === MarketplacePaymentLineType.Credit;\n\n const saleLineItemIndexesToDisplay = saleLineItems\n .map((saleLineItem, index) => {\n let shouldDisplay = true;\n\n if (isCredit && saleLineItem.costType !== SaleCostType.Credit) {\n shouldDisplay = false;\n }\n\n if (!isCredit && saleLineItem.costType !== SaleCostType.Charge) {\n shouldDisplay = false;\n }\n\n // Only charge/credit that is unlinked or current payment id\n if (\n saleLineItem.marketplacePaymentLineId != null &&\n saleLineItem.marketplacePaymentLineId !== marketplacePaymentLineId\n ) {\n shouldDisplay = false;\n }\n\n return { index, shouldDisplay };\n })\n .filter(({ shouldDisplay }) => shouldDisplay)\n .map(({ index }) => index);\n\n return (\n \n \n \n \n
    \n \n
    \n
    \n \n
    \n \n
    \n
    \n {hasPaymentsSectionsV2Feature && (\n \n
    \n \n
    \n
    \n )}\n \n
    \n \n
    \n
    \n
    \n
    \n \n {saleLineItemIndexesToDisplay.map((index, i) => (\n \n ))}\n \n
    \n );\n}\n\nfunction SaleLineItemRow({ index }: { index: number }) {\n const { watch, setValue } =\n useFormContext();\n const hasPaymentsSectionsV2Feature = useHasPaymentsSectionsV2Feature();\n const { getUiCurrency } = useLocalizationContext();\n\n const saleLineItems = watch('saleLineItems');\n const saleLineItem = saleLineItems![index];\n const marketplacePaymentLineId = watch('marketplacePaymentLine').id;\n\n const isSelected =\n saleLineItem.marketplacePaymentLineId === marketplacePaymentLineId;\n\n const reasonContentId =\n saleLineItem.costType === SaleCostType.Credit\n ? saleLineItem.saleLineItemCreditReason\n ? SALE_LINE_ITEM_CREDIT_REASON_TO_CID[\n saleLineItem.saleLineItemCreditReason\n ]\n : undefined\n : saleLineItem.saleLineItemChargeReason\n ? SALE_LINE_ITEM_CHARGE_REASON_TO_CID[\n saleLineItem.saleLineItemChargeReason\n ]\n : undefined;\n const reasonMsg = useContent(reasonContentId);\n\n const onSelect = useCallback(() => {\n if (isSelected) {\n setValue(\n 'saleLineItems',\n saleLineItems?.map((item, i) => {\n return i === index\n ? { ...item, marketplacePaymentLineId: null }\n : item;\n }) ?? null\n );\n } else {\n setValue(\n 'saleLineItems',\n saleLineItems?.map((item, i) => {\n return i === index ? { ...item, marketplacePaymentLineId } : item;\n }) ?? null\n );\n }\n }, [index, isSelected, marketplacePaymentLineId, saleLineItems, setValue]);\n\n const uiCurrency = useMemo(\n () => getUiCurrency(saleLineItem.currencyCode),\n [getUiCurrency, saleLineItem.currencyCode]\n );\n\n return (\n \n {saleLineItem.description}\n \n {formatCurrency(saleLineItem.cost, uiCurrency.code, uiCurrency.dec)}\n \n {hasPaymentsSectionsV2Feature && (\n {reasonMsg}\n )}\n \n \n \n \n );\n}\n","import { ComponentProps, useCallback, useEffect, useMemo } from 'react';\nimport { FormProvider, useForm, useFormContext } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { SaleLineItemModalWrapper } from 'src/dialogs/LinkMarketplacePaymentToSaleDialog/SaleLineItemModalWrapper';\nimport { useGetRemainingBalance } from 'src/dialogs/LinkMarketplacePaymentToSaleDialog/useGetRemainingBalance';\nimport { useGetSaleLineItemsBySaleId } from 'src/hooks/api/useGetSaleLineItemsBySaleId';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { formatCurrency } from 'src/utils/numberFormatter';\nimport {\n MarketplacePaymentLineType,\n MarketplaceSaleLineItem,\n SaleCostType,\n SaleLineItem,\n} from 'src/WebApiController';\n\nimport * as styles from './LinkMarketplacePaymentToSaleDialog.css';\nimport { SaleChargesTable } from './SaleChargesTable';\n\ntype LinkMarketplacePaymentToSaleDialogProps = Omit<\n ComponentProps,\n 'onSubmit'\n> & {\n onSubmit: (\n marketplacePaymentLineId: number,\n saleLineItems: SaleLineItem[]\n ) => void;\n marketplacePaymentLine: MarketplaceSaleLineItem;\n};\n\nexport type LinkMarketplacePaymentToSaleInput = {\n saleLineItems: SaleLineItem[] | null;\n marketplacePaymentLine: MarketplaceSaleLineItem;\n isCredit: boolean;\n};\n\nexport function LinkMarketplacePaymentToSaleDialog({\n onSubmit,\n onCancel,\n marketplacePaymentLine,\n ...dialogProps\n}: LinkMarketplacePaymentToSaleDialogProps) {\n const { loginContext } = useAppContext();\n const methods = useForm({\n defaultValues: {\n marketplacePaymentLine,\n },\n });\n\n const { watch, setValue } = methods;\n\n const {\n data: existingSaleLineItems,\n isLoading,\n isFetching,\n } = useGetSaleLineItemsBySaleId(marketplacePaymentLine.saleId);\n\n const isCredit =\n marketplacePaymentLine.type === MarketplacePaymentLineType.Credit;\n const costDialog = useBasicDialog();\n const saleLineItems = watch('saleLineItems');\n\n useEffect(() => {\n setValue('saleLineItems', existingSaleLineItems ?? null);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [existingSaleLineItems]);\n\n const onAddNewCostSave = useCallback(\n (item: SaleLineItem) => {\n // Only allow credit to be linked to credit and charge to be linked to charge\n if (isCredit && item.costType !== SaleCostType.Credit) {\n costDialog.closeDialog();\n }\n if (!isCredit && item.costType !== SaleCostType.Charge) {\n costDialog.closeDialog();\n }\n\n setValue('saleLineItems', [\n ...(saleLineItems ?? []),\n {\n ...item,\n saleId: marketplacePaymentLine.saleId!,\n marketplacePaymentLineId: marketplacePaymentLine.id,\n },\n ]);\n\n costDialog.closeDialog();\n },\n [\n costDialog,\n isCredit,\n marketplacePaymentLine.id,\n marketplacePaymentLine.saleId,\n saleLineItems,\n setValue,\n ]\n );\n\n const onAddNewCostCancel = useCallback(() => {\n costDialog.closeDialog();\n }, [costDialog]);\n\n const onAddNewCost = useCallback(() => {\n costDialog.launchDialog();\n }, [costDialog]);\n\n const saleLineItemsToLink = useMemo(\n () =>\n (saleLineItems ?? []).filter(\n (s) => s.marketplacePaymentLineId === marketplacePaymentLine.id\n ),\n [marketplacePaymentLine.id, saleLineItems]\n );\n\n const canSubmit = useMemo(\n () => saleLineItemsToLink.length > 0,\n [saleLineItemsToLink.length]\n );\n\n return (\n }\n footer={\n \n \n \n onSubmit(marketplacePaymentLine.id, saleLineItemsToLink)\n }\n disabled={!canSubmit}\n textContentId={ContentId.Link}\n />\n \n }\n {...dialogProps}\n >\n \n {isLoading || isFetching ? (\n \n ) : (\n \n \n \n \n \n \n \n \n \n \n {\n onAddNewCost();\n }}\n tabIndex={0}\n >\n \n \n \n \n )}\n {costDialog.dialogProps.isOpen && (\n \n )}\n \n \n );\n}\n\nfunction LinkMarketplacePaymentToSaleAmountDisplay() {\n const { watch } = useFormContext();\n const { getUiCurrency } = useLocalizationContext();\n\n const marketplacePaymentLine = watch('marketplacePaymentLine');\n const { remainingAmount } = useGetRemainingBalance();\n\n // Assuming marketplacePaymentLine and saleLineItems are in the same currency\n const uiCurrency = useMemo(\n () => getUiCurrency(marketplacePaymentLine.amt.currency),\n [getUiCurrency, marketplacePaymentLine.amt.currency]\n );\n\n return (\n \n \n \n \n \n

    \n {formatCurrency(remainingAmount, uiCurrency.code, uiCurrency.dec)}\n

    \n \n \n \n

    {marketplacePaymentLine.amt.disp}

    \n
    \n \n );\n}\n","import { useMutation } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { MarketplacePaymentClient } from 'src/WebApiController';\n\nexport function useLinkMarketplacePaymentLineToSale() {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n\n return useMutation({\n mutationFn: async ({\n marketplacePaymentLineId,\n }: {\n marketplacePaymentLineId: number | undefined;\n }) => {\n if (!marketplacePaymentLineId) {\n return Promise.reject('Invalid parameters');\n }\n return await new MarketplacePaymentClient(\n activeAccountWebClientConfig\n ).unlinkMarketplacePaymentLine(marketplacePaymentLineId);\n },\n onError: (error: ErrorTypes, { marketplacePaymentLineId }, context) => {\n trackError(\n 'MarketplacePaymentClient.unlinkMarketplacePaymentLine',\n error,\n {\n marketplacePaymentLineId,\n }\n );\n showErrorDialog(\n 'MarketplacePaymentClient.unlinkMarketplacePaymentLine',\n error,\n {\n trackErrorData: { marketplacePaymentLineId },\n }\n );\n },\n });\n}\n","import React, { MutableRefObject, useImperativeHandle } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { useLinkMarketplacePaymentLineToSale } from 'src/hooks/api/useUnlinkMarketplacePaymentLineToSale';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { LinkMarketplacePaymentLineRefActions } from 'src/tables/MarketplacePaymentLinesTable/Cell/LinkMarketplacePaymentLineToSale';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport * as styles from './UnlinkMarketplacePaymentLineToSaleDialog.css';\n\nexport interface UnlinkMarketplacePaymentLineRefActions {\n showDialog: () => void;\n}\n\nexport type UnlinkMarketplacePaymentLineToSaleDialogProps = {\n refActions: MutableRefObject;\n marketplacePaymentLineId: number;\n onUnlinkSuccess: () => void;\n};\n\nexport const UnlinkMarketplacePaymentLineToSaleDialog = ({\n refActions,\n marketplacePaymentLineId,\n onUnlinkSuccess,\n}: UnlinkMarketplacePaymentLineToSaleDialogProps) => {\n const { launchDialog, closeDialog, dialogProps } = useBasicDialog();\n\n const { isPending, mutateAsync } = useLinkMarketplacePaymentLineToSale();\n\n useImperativeHandle(\n refActions,\n () => {\n return {\n showDialog: launchDialog,\n };\n },\n [launchDialog]\n );\n\n if (!dialogProps.isOpen) {\n return null;\n }\n\n return (\n }\n bodyText={\n
    \n \n \n \n \n
    \n }\n okText={ContentId.Confirm}\n cancelText={ContentId.Cancel}\n {...dialogProps}\n isLoading={isPending}\n onOkay={async () => {\n await mutateAsync({ marketplacePaymentLineId });\n closeDialog();\n onUnlinkSuccess();\n }}\n size=\"l\"\n />\n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n CatalogClient,\n CatalogResults,\n Sale,\n SaleClient,\n} from 'src/WebApiController';\n\nexport function useGetSaleByAmbiguousIdWithCatalogData(id?: string | null) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n return useQuery({\n queryKey: ['useGetSaleByAmbiguousIdWithCatalogData', id],\n async queryFn() {\n if (!id) return null;\n\n let sale: Sale | null = null;\n let catalog: CatalogResults | null = null;\n const saleId = Number(id);\n if (!isNaN(saleId)) {\n try {\n sale = await new SaleClient(\n activeAccountWebClientConfig\n ).getSaleBySaleId(saleId);\n } catch (err: unknown) {\n trackError('SaleClient.getSaleBySaleId', err as ErrorTypes, {\n saleId,\n });\n throw err;\n }\n }\n\n if (sale == null) {\n try {\n const sales = await new SaleClient(\n activeAccountWebClientConfig\n ).getSalesByMarketplaceSaleId(id);\n\n // there is rare chance there are multiple POS sale returned on the same marketplace sale id\n // return the first one as default for now\n if (sales != null && sales.length > 0) {\n sale = sales[0];\n }\n } catch (err: unknown) {\n trackError('SaleClient.getSaleBySaleId', err as ErrorTypes, {\n saleId,\n });\n throw err;\n }\n }\n\n if (sale == null) {\n return { sale, catalog };\n }\n\n try {\n catalog = await new CatalogClient(\n activeAccountWebClientConfig\n ).getCatalogForSaleBySaleId(sale.id);\n } catch (err: unknown) {\n trackError(\n 'CatalogClient.getCatalogForSaleBySaleId',\n err as ErrorTypes,\n {\n saleId,\n }\n );\n throw err;\n }\n return { sale, catalog };\n },\n refetchOnWindowFocus: false,\n });\n}\n","import { clsx } from 'clsx';\nimport { useEffect } from 'react';\nimport { MarketplaceLogo } from 'src/components/common/MarketplaceLogo';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { EventInfo } from 'src/components/Events/EventInfo';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosLink } from 'src/core/POS/PosLink';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\nimport { useGetSaleByAmbiguousIdWithCatalogData } from 'src/hooks/api/useGetSaleByAmbiguousIdWithCatalogData';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SALES_STATUS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { getFormattedEventName } from 'src/utils/eventWithDataUtils';\nimport { getFormattedLocation } from 'src/utils/format';\nimport { getSaleDetailsRelativeUrl } from 'src/utils/saleUtils';\nimport { Sale } from 'src/WebApiController';\n\nimport * as styles from './SaleEventBox.css';\n\ninterface SaleEventBoxProps {\n lookupId: string | undefined | null;\n onSearchSaleChanged?: (sale: Sale | undefined | null) => void;\n}\n\nexport const SaleEventBox = ({\n lookupId,\n onSearchSaleChanged,\n}: SaleEventBoxProps) => {\n const { isLoading, data, isError } = useGetSaleByAmbiguousIdWithCatalogData(lookupId);\n\n useEffect(() => {\n if (isLoading || isError) {\n onSearchSaleChanged?.(undefined);\n }\n onSearchSaleChanged?.(data?.sale);\n }, [data?.sale, isError, isLoading, onSearchSaleChanged]);\n\n if (isLoading) {\n return ;\n }\n\n if (isError) {\n return (\n
    \n \n
    \n );\n }\n\n if (data) {\n const sale = data.sale;\n const eventId = sale?.viagEvId;\n const event = eventId && data.catalog?.events[eventId]?.event;\n const seating = sale?.seating;\n\n if (!eventId || !event || !sale) {\n return (\n
    \n \n
    \n );\n }\n\n const venue = data.catalog.venues[event.venueId];\n const performer = event.perfId\n ? data.catalog.performers[event.perfId]\n : undefined;\n\n const [eventName, eventNameConnector, eventSubName] = getFormattedEventName(\n {\n event,\n performer,\n venue,\n slimMode: false,\n }\n );\n\n const venueLocation = venue && getFormattedLocation(venue);\n\n return (\n \n
    \n \n
    \n {seating && (\n
    \n \n
    \n )}\n
    \n \n \n #{sale.idOnMkp}\n \n \n \n
    \n \n \n \n
    \n );\n }\n\n return null;\n};\n","import { useMutation } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { MarketplacePaymentClient } from 'src/WebApiController';\n\nexport function useLinkMarketplacePaymentLineToSale() {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n\n return useMutation({\n mutationFn: async ({\n saleId,\n marketplacePaymentLineId,\n }: {\n saleId: number | undefined;\n marketplacePaymentLineId: number | undefined;\n }) => {\n if (!saleId || !marketplacePaymentLineId) {\n return Promise.reject('Invalid parameters');\n }\n return await new MarketplacePaymentClient(\n activeAccountWebClientConfig\n ).linkMarketplacePaymentLine(saleId, marketplacePaymentLineId);\n },\n onError: (\n error: ErrorTypes,\n { saleId, marketplacePaymentLineId },\n context\n ) => {\n trackError('MarketplacePaymentClient.linkMarketplacePaymentLine', error, {\n saleId,\n marketplacePaymentLineId,\n });\n showErrorDialog(\n 'MarketplacePaymentClient.linkMarketplacePaymentLine',\n error,\n {\n trackErrorData: { saleId, marketplacePaymentLineId },\n }\n );\n },\n });\n}\n","import React, { ComponentProps, useCallback, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button } from 'src/core/ui';\nimport { SaleEventBox } from 'src/dialogs/LinkMarketplacePaymentLineDialog/SaleEventBox/SaleEventBox';\nimport { useLinkMarketplacePaymentLineToSale } from 'src/hooks/api/useLinkMarketplacePaymentLineToSale';\nimport { FieldWrapper } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Sale } from 'src/WebApiController';\n\nexport type LinkMarketplacePaymentLineToSaleDialogProps = Omit<\n ComponentProps,\n 'header' | 'footer'\n> & {\n onCancel: () => void;\n marketplacePaymentLineId: number | undefined;\n onLinkSuccess: () => void;\n};\n\ntype LinkMarketplacePaymentLineToSaleForm = {\n lookupId: string | null; // can be either marketplace sale id or pos sale id\n saleId: number | null; // pos sale id\n marketplacePaymentLineId: number;\n};\n\nexport const LinkMarketplacePaymentLineToSaleDialog = ({\n onCancel,\n payment,\n marketplacePaymentLineId,\n closeDialog,\n onLinkSuccess,\n ...dialogProps\n}: LinkMarketplacePaymentLineToSaleDialogProps) => {\n const requiredMsg = useContent(ContentId.Required);\n const [existsSaleId, setExistsSaleId] = useState(false);\n const [posSaleIdToLink, setPosSaleIdToLink] = useState();\n\n const { register, formState, handleSubmit, trigger, getValues, watch } =\n useForm({\n defaultValues: {\n lookupId: null,\n saleId: null,\n marketplacePaymentLineId,\n },\n });\n\n const { mutateAsync, isPending } = useLinkMarketplacePaymentLineToSale();\n\n const lookupId = watch('lookupId');\n\n const onSubmit = useCallback(async () => {\n const hasErrors = Object.keys(formState.errors).length > 0;\n if (hasErrors || !existsSaleId) {\n return;\n }\n const { marketplacePaymentLineId } = getValues();\n\n await mutateAsync({\n saleId: posSaleIdToLink ?? undefined,\n marketplacePaymentLineId,\n });\n closeDialog();\n onLinkSuccess();\n }, [\n closeDialog,\n existsSaleId,\n formState.errors,\n getValues,\n mutateAsync,\n onLinkSuccess,\n ]);\n\n const onSearchSaleChanged = useCallback(\n (saleDetails: Sale | undefined | null) => {\n setExistsSaleId(!!saleDetails);\n setPosSaleIdToLink(saleDetails?.id)\n },\n []\n );\n\n return (\n
    \n }\n footer={\n {\n await trigger();\n await handleSubmit(onSubmit)();\n }}\n >\n \n \n }\n onCancel={onCancel}\n >\n {isPending ? (\n \n ) : (\n <>\n \n }\n errors={formState.errors.saleId?.message}\n >\n \n \n \n \n\n {!!lookupId && (\n \n )}\n \n )}\n \n \n );\n};\n","import { MutableRefObject, useImperativeHandle } from 'react';\nimport { LinkMarketplacePaymentLineToSaleDialog } from 'src/dialogs/LinkMarketplacePaymentLineDialog/LinkMarketplacePaymentLineToSaleDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\n\nexport interface LinkMarketplacePaymentLineRefActions {\n showDialog: () => void;\n}\n\ninterface LinkMarketplacePaymentLineToSaleProps {\n refActions: MutableRefObject;\n marketplacePaymentLineId: number;\n onLinkSuccess: () => void;\n}\n\nexport const LinkMarketplacePaymentLineToSale = ({\n refActions,\n marketplacePaymentLineId,\n onLinkSuccess,\n}: LinkMarketplacePaymentLineToSaleProps) => {\n const { launchDialog, dialogProps, closeDialog } = useBasicDialog();\n\n useImperativeHandle(\n refActions,\n () => {\n return {\n showDialog: launchDialog,\n };\n },\n [launchDialog]\n );\n\n if (!dialogProps.isOpen) {\n return null;\n }\n\n return (\n \n );\n};\n","import { useQueryClient } from '@tanstack/react-query';\nimport { ReactNode, useCallback, useRef, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { GET_PAYMENT_LINES_WITH_SALES_QUERY_KEY } from 'src/contexts/MarketplacePaymentDataContext';\nimport { useConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog/useConfirmDialog';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { LinkMarketplacePaymentToSaleDialog } from 'src/dialogs/LinkMarketplacePaymentToSaleDialog';\nimport { UnlinkMarketplacePaymentLineToSaleDialog } from 'src/dialogs/UnlinkMarketplacePaymentLineDialog/UnlinkMarketplacePaymentLineToSaleDialog';\nimport { MarketplacePaymentLineWithSaleAndEventInfo } from 'src/hooks/useGetMarketplacePaymentLineTableData';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { CheckIcon, IconsFill, MoreIcon } from 'src/svgs/Viagogo';\nimport {\n LinkMarketplacePaymentLineRefActions,\n LinkMarketplacePaymentLineToSale,\n} from 'src/tables/MarketplacePaymentLinesTable/Cell/LinkMarketplacePaymentLineToSale';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n Feature,\n MarketplacePaymentClient,\n MarketplacePaymentLineType,\n SaleLineItem,\n} from 'src/WebApiController';\n\nexport function MarketplacePaymentLinesActionsCell({\n marketplacePaymentLine,\n}: {\n marketplacePaymentLine: MarketplacePaymentLineWithSaleAndEventInfo;\n}) {\n const linkActionsRef = useRef(\n null\n );\n const unlinkActionsRef = useRef(\n null\n );\n const { activeAccountWebClientConfig } = useAppContext();\n const queryClient = useQueryClient();\n const hasAddMarketplaceChargeCreditToSaleFeature = useUserHasFeature(\n Feature.AddMarketplaceChargeCreditToSale\n );\n\n const refreshData = useCallback(async () => {\n queryClient.invalidateQueries({\n queryKey: [GET_PAYMENT_LINES_WITH_SALES_QUERY_KEY],\n });\n }, [queryClient]);\n\n const actionsMsg = useContent(ContentId.Actions);\n const addedToSaleMsg = useContent(ContentId.AddedToSale);\n const [isLoading, setIsLoading] = useState(false);\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const userHasLinkPaymentLineFeature = useUserHasFeature(\n Feature.LinkPaymentLine\n );\n const canLinkPaymentLine =\n userHasLinkPaymentLineFeature && !marketplacePaymentLine.saleId;\n\n const canUnlinkMarketplaceLine =\n userHasLinkPaymentLineFeature && !!marketplacePaymentLine.saleId;\n\n const canManuallyAddToSale =\n hasAddMarketplaceChargeCreditToSaleFeature &&\n marketplacePaymentLine.saleId != null &&\n (marketplacePaymentLine.type === MarketplacePaymentLineType.Credit ||\n marketplacePaymentLine.type === MarketplacePaymentLineType.Charge);\n\n const isAddedToSale = marketplacePaymentLine?.isAddedToSale ?? false;\n\n const {\n openConfirmDialog: openRemoveFromSaleDialog,\n closeConfirmDialog: closeRemoveFromSaleDialog,\n } = useConfirmDialog();\n\n const { openDialog: openAddToSaleDialog, closeDialog: closeAddToSaleDialog } =\n useDialog(\n DialogId.AddMarketplacePaymentLineToSale,\n LinkMarketplacePaymentToSaleDialog\n );\n\n const marketplacePaymentLineId = marketplacePaymentLine.id;\n\n const onRemoveFromSale = useCallback(() => {\n closeRemoveFromSaleDialog();\n\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n await new MarketplacePaymentClient(\n activeAccountWebClientConfig\n ).removeMarketplacePaymentLineFromSaleLineItems(\n marketplacePaymentLineId!\n );\n\n refreshData();\n },\n (error) => {\n showErrorDialog(\n 'MarketplacePaymentClient.removeMarketplacePaymentLineFromSaleLineItems',\n error,\n {\n trackErrorData: { marketplacePaymentLineId },\n }\n );\n },\n () => {\n setIsLoading(false);\n }\n );\n }, [\n activeAccountWebClientConfig,\n closeRemoveFromSaleDialog,\n marketplacePaymentLineId,\n refreshData,\n showErrorDialog,\n ]);\n\n const onSubmitAddToSale = useCallback(\n (marketplacePaymentLineId: number, saleLineItems: SaleLineItem[]) => {\n closeAddToSaleDialog();\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n await new MarketplacePaymentClient(\n activeAccountWebClientConfig\n ).addMarketplacePaymentLineToSaleLineItems(\n marketplacePaymentLineId,\n saleLineItems\n );\n refreshData();\n },\n (error) => {\n showErrorDialog(\n 'MarketplacePaymentClient.addMarketplacePaymentLineToSaleLineItems',\n error,\n {\n trackErrorData: { marketplacePaymentLineId },\n }\n );\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n closeAddToSaleDialog,\n refreshData,\n showErrorDialog,\n ]\n );\n\n const dropdownItems: ReactNode[] = [];\n\n if (canManuallyAddToSale) {\n dropdownItems.push(\n <>\n {isAddedToSale ? (\n \n openRemoveFromSaleDialog({\n size: 'm',\n headerText: ,\n bodyText: ,\n onOkay: onRemoveFromSale,\n onCancel: closeRemoveFromSaleDialog,\n okText: ContentId.Yes,\n cancelText: ContentId.No,\n })\n }\n >\n \n \n \n \n ) : (\n {\n openAddToSaleDialog({\n marketplacePaymentLine,\n onSubmit: onSubmitAddToSale,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeAddToSaleDialog,\n });\n }}\n >\n \n \n \n \n )}\n \n );\n }\n\n if (canLinkPaymentLine) {\n dropdownItems.push(\n linkActionsRef.current?.showDialog()}\n >\n \n \n );\n } else if (canUnlinkMarketplaceLine) {\n dropdownItems.push(\n unlinkActionsRef.current?.showDialog()}\n >\n \n \n );\n }\n\n return (\n \n {isAddedToSale && (\n \n )}\n {dropdownItems.length > 0 && (\n \n \n \n }\n align=\"end\"\n >\n {...dropdownItems}\n \n )}\n {canLinkPaymentLine && (\n \n )}\n {canUnlinkMarketplaceLine && (\n \n )}\n \n );\n}\n","import { ColumnDef } from '@tanstack/react-table';\nimport { useMemo } from 'react';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { EventInfo } from 'src/components/Events/EventInfo';\nimport {\n COLUMN_DEFAULT_SIZE_BASE,\n COLUMN_DEFAULT_SIZE_LG,\n COLUMN_DEFAULT_SIZE_SM,\n COLUMN_MAX_SIZE,\n COLUMN_MIN_SIZE,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosLink } from 'src/core/POS/PosLink';\nimport { Stack } from 'src/core/ui';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { MarketplacePaymentLineWithSaleAndEventInfo } from 'src/hooks/useGetMarketplacePaymentLineTableData';\nimport { SHIMMERING_DIV_HEIGHT_PAYMENTS } from 'src/tables/MarketplacePaymentLinesTable/MarketplacePaymentLinesTableCommon.constants';\nimport { TableShimmeringDiv } from 'src/tables/Table';\nimport { MarketplacePaymentLinesTableColumnId } from 'src/utils/columns/marketplacePaymentLines/marketplacePaymentLinesColumnsUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { MARKETPLACE_PAYMENT_LINE_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { getFormattedEventName } from 'src/utils/eventWithDataUtils';\nimport { getFormattedLocation } from 'src/utils/format';\nimport {\n getSaleDetailsRelativeUrl,\n getSaleStatusDisplayContentId,\n} from 'src/utils/saleUtils';\nimport {\n sortMarketplacePaymentLineSeating,\n sortMoney,\n} from 'src/utils/tableUtils';\nimport {\n MarketplacePaymentLineType,\n PointOfSaleSaleStatus,\n Seating,\n UiMoney,\n} from 'src/WebApiController';\n\nimport { MarketplacePaymentLinesActionsCell } from './Cell/MarketplacePaymentLinesActionsCell';\n\nexport const useMarketplacePaymentLinesTableColumnsConfig = () => {\n return useMemo<\n Record<\n MarketplacePaymentLinesTableColumnId,\n ColumnDef\n >\n >(() => {\n return {\n [MarketplacePaymentLinesTableColumnId.Id]: {\n id: MarketplacePaymentLinesTableColumnId.Id,\n accessorFn: (data) => data?.extLineId,\n header: (params) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_DEFAULT_SIZE_SM,\n maxSize: COLUMN_DEFAULT_SIZE_LG,\n cell: ({ getValue, row: { original } }) => {\n if (!original) {\n return (\n \n );\n }\n\n const paymentLineId = getValue();\n return (\n \n {paymentLineId}\n \n );\n },\n },\n [MarketplacePaymentLinesTableColumnId.Paid]: {\n id: MarketplacePaymentLinesTableColumnId.Paid,\n accessorFn: (data) => data?.amt,\n header: (params) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n if (!original) {\n return (\n \n );\n }\n const amount = getValue();\n\n if (!amount) {\n return null;\n }\n\n return (\n \n {amount.disp}\n \n );\n },\n sortingFn: sortMoney,\n },\n [MarketplacePaymentLinesTableColumnId.Type]: {\n id: MarketplacePaymentLinesTableColumnId.Type,\n accessorFn: (data) => data?.type,\n header: (params) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_DEFAULT_SIZE_SM,\n maxSize: COLUMN_DEFAULT_SIZE_LG,\n cell: ({ getValue, row: { original } }) => {\n if (!original) {\n return (\n \n );\n }\n\n const paymentType = getValue();\n return (\n \n \n \n );\n },\n },\n [MarketplacePaymentLinesTableColumnId.Event]: {\n id: MarketplacePaymentLinesTableColumnId.Event,\n accessorFn: (data) => data,\n header: (params) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_DEFAULT_SIZE_LG,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n if (!original) {\n return (\n \n );\n }\n\n const paymentLine =\n getValue();\n const { event, venue } = paymentLine ?? {};\n\n if (!event) {\n return null;\n }\n\n const [eventName, eventNameConnector, eventSubName] =\n getFormattedEventName({\n event,\n performer: null,\n venue,\n slimMode: false,\n });\n\n const venueLocation = venue && getFormattedLocation(venue);\n\n return (\n \n \n \n );\n },\n },\n [MarketplacePaymentLinesTableColumnId.Seating]: {\n id: MarketplacePaymentLinesTableColumnId.Seating,\n accessorFn: (data) => data?.seating,\n header: (params) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n if (!original) {\n return (\n \n );\n }\n const seating = getValue();\n\n if (!seating) {\n return null;\n }\n\n return (\n \n \n \n );\n },\n sortingFn: sortMarketplacePaymentLineSeating,\n },\n [MarketplacePaymentLinesTableColumnId.Sale]: {\n id: MarketplacePaymentLinesTableColumnId.Sale,\n accessorFn: (data) => data?.extSaleId,\n header: (params) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n if (!original) {\n return (\n \n );\n }\n const extSaleId = getValue();\n\n if (!extSaleId) {\n return null;\n }\n\n return (\n \n \n {original.saleId != null ? (\n \n #{extSaleId}\n \n ) : (\n #{extSaleId}\n )}\n {original.marketplace}\n \n \n );\n },\n },\n [MarketplacePaymentLinesTableColumnId.SaleStatus]: {\n id: MarketplacePaymentLinesTableColumnId.SaleStatus,\n accessorFn: (data) => data?.saleStatus,\n header: (params) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n if (!original) {\n return (\n \n );\n }\n const saleStatus = getValue();\n\n if (!saleStatus) {\n return null;\n }\n\n return (\n \n \n \n );\n },\n },\n [MarketplacePaymentLinesTableColumnId.Actions]: {\n id: MarketplacePaymentLinesTableColumnId.Actions,\n accessorFn: (data) => data?.id,\n enableSorting: false,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const marketplacePaymentLineId = getValue();\n\n if (!original) {\n return (\n \n );\n }\n\n if (marketplacePaymentLineId == null) {\n return null;\n }\n\n return (\n \n \n \n );\n },\n },\n };\n }, []);\n};\n","import {\n functionalUpdate,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useMemo, useState } from 'react';\nimport { MinRowsForUsingVirtuoso } from 'src/components/Accordions';\nimport { ColumnResizingContextProvider } from 'src/contexts/ColumnResizingContext/ColumnResizingContext';\nimport { MarketplacePaymentLineWithSaleAndEventInfo } from 'src/hooks/useGetMarketplacePaymentLineTableData';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useMarketplacePaymentLinesTableColumnsConfig } from 'src/tables/MarketplacePaymentLinesTable/useMarketplacePaymentLinesTableColumnsConfig';\nimport { Table } from 'src/tables/Table';\nimport { MarketplacePaymentLinesTableColumnId } from 'src/utils/columns/marketplacePaymentLines/marketplacePaymentLinesColumnsUtils.types';\nimport { Feature } from 'src/WebApiController';\n\nconst getRowId = (\n row: MarketplacePaymentLineWithSaleAndEventInfo | null,\n index: number\n) => (row?.id ?? index).toString();\n\ninterface PaymentsTableProps {\n tableData: MarketplacePaymentLineWithSaleAndEventInfo[] | null;\n}\n\nexport const MarketplacePaymentLinesTable = ({\n tableData,\n}: PaymentsTableProps) => {\n const paymentsTableColumnConfig =\n useMarketplacePaymentLinesTableColumnsConfig();\n const [sorting, setSorting] = useState([]);\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n\n const options: Partial<\n TableOptions\n > = useMemo(\n () => ({\n data: tableData ?? [],\n columns: Object.values(paymentsTableColumnConfig),\n state: {\n sorting,\n columnPinning: {\n right: hasTablePinActionColumnFeature\n ? [MarketplacePaymentLinesTableColumnId.Actions]\n : undefined,\n },\n },\n getRowId: getRowId,\n onSortingChange: (sortingUpdaterFn) => {\n const newSortVal = functionalUpdate(sortingUpdaterFn, sorting);\n setSorting(newSortVal);\n },\n sortingFns: {},\n }),\n [\n tableData,\n paymentsTableColumnConfig,\n sorting,\n hasTablePinActionColumnFeature,\n ]\n );\n\n return (\n \n MinRowsForUsingVirtuoso)\n }\n usePaginationFooter={false}\n roundBorders={true}\n />\n \n );\n};\n","import * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useGetMarketplacePaymentById } from 'src/hooks/api/useGetMarketplacePaymentById';\nimport { useGetMarketplacePaymentLineTableData } from 'src/hooks/useGetMarketplacePaymentLineTableData';\nimport { MarketplacePaymentHeaderDetails } from 'src/modals/MaketplacePayments/MarketplacePaymentHeaderDetails';\nimport { SearchSolidIcon } from 'src/svgs/Viagogo';\nimport { MarketplacePaymentLinesTable } from 'src/tables/MarketplacePaymentLinesTable/MarketplacePaymentLinesTable';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SomethingWentWrong } from 'src/views';\n\ninterface MarketplacePaymentsDetailsModalBodyProps {\n marketplacePaymentId: number | undefined;\n}\n\nexport const MarketplacePaymentsDetailsModalBody = ({\n marketplacePaymentId,\n}: MarketplacePaymentsDetailsModalBodyProps) => {\n const {\n isLoading: isLoadingTableData,\n error,\n data,\n } = useGetMarketplacePaymentLineTableData(marketplacePaymentId);\n\n const { data: marketplacePayment, isLoading: isLoadingMarketplacePayment } =\n useGetMarketplacePaymentById(marketplacePaymentId);\n\n const hasData = !!data?.length;\n\n const isLoading = isLoadingTableData || isLoadingMarketplacePayment;\n\n return (\n <>\n {isLoading && }\n {error && (\n }\n />\n )}\n {!isLoading && !error && (\n <>\n {marketplacePayment && (\n \n )}\n {hasData ? (\n <>\n \n \n ) : (\n \n \n \n }\n >\n \n \n \n \n )}\n \n )}\n \n );\n};\n","import { useGetMarketplacePaymentIdQueryParam } from 'src/components/MarketplacePayments/hooks/useGetMarketplacePaymentIdQueryParam';\nimport { Content } from 'src/contexts/ContentContext';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { EventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { MarketplacePaymentsDetailsModalBody } from 'src/modals/MaketplacePayments/MarketplacePaymentsDetailsModalBody';\nimport {\n ModalBody,\n ModalBodyDataContainer,\n} from 'src/modals/Modal/Modal.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const MarketplacePaymentsDetailsModal = () => {\n const marketplacePaymentId = useGetMarketplacePaymentIdQueryParam();\n return (\n \n \n } />\n \n \n \n \n \n );\n};\n","import { MarketplacePaymentsDetailsModal } from 'src/modals/MaketplacePayments/MarketplacePaymentsDetailsModal';\nimport { MarketplacePaymentIdDeeplinkQueryParam } from 'src/utils/constants/constants';\n\nexport const MarketplacePaymentsDetails = {\n children: ,\n clickOutsideToClose: true,\n deepLinkKey: MarketplacePaymentIdDeeplinkQueryParam,\n deepLinkValue: undefined,\n size: 'slide-in',\n};\n","import { MarketplacePaymentsDetails } from 'src/modals/MaketplacePayments';\nimport { ModalProps } from 'src/modals/Modal';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport { MarketplacePaymentIdDeeplinkQueryParam } from 'src/utils/constants/constants';\nimport { getPathFromMainRoute } from 'src/utils/deepLinkUtils';\n\nexport const getMarketplacePaymentRelativeUrl = (\n marketplacePaymentId: number\n) => {\n return `${getPathFromMainRoute(\n MainRoute.Payments\n )}?${MarketplacePaymentIdDeeplinkQueryParam}=${marketplacePaymentId}`;\n};\n\nexport const getMarketplacePaymentDetailsModalConfigWithDeepLink = (\n marketplacePaymentId: number\n): ModalProps => {\n return {\n ...MarketplacePaymentsDetails,\n deepLinkValue: marketplacePaymentId,\n };\n};\n","import { clsx } from 'clsx';\nimport { formatInTimeZone } from 'date-fns-tz';\nimport { useCallback, useMemo, useRef } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { IconButton } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { PosLink } from 'src/core/POS/PosLink';\nimport { vars } from 'src/core/themes';\nimport { Button, SimpleTable, Stack } from 'src/core/ui';\nimport { Detail, DetailGroup } from 'src/modals/common';\nimport * as styles from 'src/modals/SaleDetails/components/MarketplacePaymentSection/MarketplacePaymentSection.css';\nimport {\n SetMarketplaceCharge,\n SetMarketplaceChargeActions,\n} from 'src/modals/SaleDetails/components/MarketplacePaymentSection/SetMarketplaceCharge';\nimport { DeleteIcon, EditIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n MARKETPLACE_PAYMENT_LINE_TYPE_TO_CID,\n MARKETPLACE_SALE_PAYMENT_STATE_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { stringToUtcDate } from 'src/utils/dateTimeUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { getMarketplacePaymentRelativeUrl } from 'src/utils/marketplacePaymentUtils';\nimport { formatCurrency } from 'src/utils/numberFormatter';\nimport { addMoneySameCurrency } from 'src/utils/ticketMetricUtils';\nimport {\n MarketplacePaymentState,\n SaleDetails,\n SaleInput,\n SiteMarketplacePaymentLineInput,\n UiMoney,\n} from 'src/WebApiController';\n\ninterface MarketplacePaymentProps {\n sale: SaleDetails;\n canManageMarketplacePayment: boolean;\n}\n\nexport const MarketplacePaymentLines = ({\n sale,\n canManageMarketplacePayment,\n}: MarketplacePaymentProps) => {\n const setMarketplaceChargeActions =\n useRef(null);\n const { timeZone } = useSiteTimezoneContext();\n const { watch, formState } = useFormContext();\n const marketplacePaymentLines = watch('marketplacePaymentLines');\n const marketplacePaymentLinesFormFieldDirty =\n !!formState.dirtyFields.marketplacePaymentLines;\n\n const formatDateCell = useCallback(\n (date: string | null) => {\n return (\n date &&\n formatInTimeZone(stringToUtcDate(date), timeZone, 'MMM d, yyyy', {\n locale: getLocaleFromLanguageOrCurrent(),\n })\n );\n },\n [timeZone]\n );\n\n const allMkpLinesHaveSameCurrency = useMemo(() => {\n const currencies = new Set();\n const saleMkpLines = sale?.mkpLines ?? [];\n saleMkpLines.forEach((line) => {\n if (line.amt.currency) {\n currencies.add(line.amt.currency);\n }\n });\n return currencies.size <= 1;\n }, [sale]);\n\n const mkpLinesTotal = useMemo(() => {\n if (!marketplacePaymentLinesFormFieldDirty) {\n return sale?.mkpLinesTotal?.disp;\n }\n\n if (allMkpLinesHaveSameCurrency) {\n const saleMkpLines = sale?.mkpLines ?? [];\n let total: UiMoney | null = null;\n const exampleUiMoney = saleMkpLines.find((line) => !!line.amt.currency)\n ?.amt;\n marketplacePaymentLines?.value?.forEach((line) => {\n const money: UiMoney = {\n amt: line.amount,\n disp: null,\n currency: exampleUiMoney?.currency ?? null,\n dec: exampleUiMoney?.dec ?? 2,\n };\n total = addMoneySameCurrency(total, money);\n });\n\n if (!total) {\n return undefined;\n }\n\n const totalDisplay = (total as UiMoney | null)?.disp;\n if (!totalDisplay) {\n const { amt, currency, dec } = total as UiMoney;\n return formatCurrency(amt, currency, dec);\n }\n\n return totalDisplay;\n }\n\n // Different currencies, don't show anything\n return undefined;\n }, [\n marketplacePaymentLinesFormFieldDirty,\n allMkpLinesHaveSameCurrency,\n sale,\n marketplacePaymentLines?.value,\n ]);\n\n return (\n <>\n \n \n \n {canManageMarketplacePayment && (\n \n setMarketplaceChargeActions.current?.addNewMarketplacePaymentLine()\n }\n >\n \n \n )}\n \n }\n detail={\n <>\n {Boolean(marketplacePaymentLines?.value?.length) && (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {canManageMarketplacePayment && (\n \n \n \n )}\n \n \n \n {marketplacePaymentLines?.value?.map(\n (\n marketplacePaymentLine: SiteMarketplacePaymentLineInput\n ) => {\n const {\n externalPaymentId,\n externalPaymentLineId,\n paymentLineType,\n amount,\n currency,\n externalSaleId,\n paymentDate,\n marketplacePaymentId,\n } = marketplacePaymentLine;\n\n const state =\n sale.mkpLines?.find(\n (mkPayment) =>\n mkPayment.extLineId === externalPaymentLineId\n )?.state || MarketplacePaymentState.Paid;\n return (\n \n \n {marketplacePaymentId ? (\n \n {externalPaymentId}\n \n ) : (\n <>{externalPaymentId}\n )}\n \n \n {externalPaymentLineId}\n \n \n {formatCurrency(amount, currency)}\n \n \n \n \n \n \n \n \n {formatDateCell(paymentDate)}\n \n\n {canManageMarketplacePayment && (\n \n \n \n }\n onClick={() => {\n setMarketplaceChargeActions.current?.editNewMarketplacePaymentLine(\n marketplacePaymentLine\n );\n }}\n titleContentId={ContentId.Edit}\n />\n \n }\n onClick={() => {\n setMarketplaceChargeActions.current?.removeNewMarketplacePaymentLine(\n marketplacePaymentLine.externalPaymentLineId\n );\n }}\n titleContentId={ContentId.Edit}\n />\n \n \n )}\n \n );\n }\n )}\n {mkpLinesTotal && (\n \n \n \n \n \n \n {mkpLinesTotal}\n \n \n \n \n )}\n \n \n )}\n \n }\n />\n\n \n \n \n );\n};\n","import { MarketplacePaymentStatePill } from 'src/components/common/MarketplacePaymentStatePill/MarketplacePaymentStatePill';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { useHasSaleDetailsMarketplaceTermsFeature } from 'src/hooks/features/useHasSaleDetailsMarketplaceTermsFeature';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Detail, DetailGroup } from 'src/modals/common';\nimport { MarketplacePaymentLines } from 'src/modals/SaleDetails/components/MarketplacePaymentSection/MarketplacePaymentLines';\nimport { useHasPaymentsSectionsV2Feature } from 'src/modals/SaleDetails/hooks/useHasPaymentsSectionsV2Feature';\nimport { useShouldHideForWastedSale } from 'src/modals/SaleDetails/hooks/useShouldHideForWastedSale';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n MARKETPLACE_SALE_PAYMENT_STATE_TO_CID,\n SALE_PAYMENT_STATE_TO_CID,\n SALES_STATUS_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { Feature, Permission, SaleDetails } from 'src/WebApiController';\n\nimport * as styles from './MarketplacePaymentSection.css';\n\nexport const MarketplacePaymentSection = ({\n sale,\n}: {\n sale?: SaleDetails | null;\n}) => {\n const hasMarketplacePaymentLinesDisplayFeature = useUserHasFeature(\n Feature.MarketplacePaymentLinesDisplay\n );\n const hasManageMarketplacePaymentFeature = useUserHasFeature(\n Feature.ManageMarketplacePayment\n );\n\n const hasViewMarketplacePaymentLinesPermission = useUserHasAnyOfPermissions(\n Permission.Accounting_ViewAll,\n Permission.Accounting_ViewPaymentsOnSale\n );\n\n const canViewMarketplacePaymentLines =\n hasViewMarketplacePaymentLinesPermission &&\n (hasMarketplacePaymentLinesDisplayFeature ||\n hasManageMarketplacePaymentFeature);\n\n const hasPaymentsSectionsV2Feature = useHasPaymentsSectionsV2Feature();\n const hasSaleDetailsMarketplaceTermsFeature =\n useHasSaleDetailsMarketplaceTermsFeature();\n\n const hideForWastedSale = useShouldHideForWastedSale(sale);\n\n return (\n \n \n {hideForWastedSale && sale?.status && (\n }\n detail={}\n />\n )}\n {!hasSaleDetailsMarketplaceTermsFeature && (\n }\n detail={\n \n {sale?.mkpPmtState ? (\n <>\n {hasPaymentsSectionsV2Feature ? (\n \n ) : (\n \n )}\n \n ) : sale?.pmtState ? (\n <>\n {hasPaymentsSectionsV2Feature ? (\n \n ) : (\n \n )}\n \n ) : null}\n \n }\n />\n )}\n \n {canViewMarketplacePaymentLines && sale && (\n \n )}\n \n );\n};\n","import { MarketplacePaymentStatePill } from 'src/components/common/MarketplacePaymentStatePill/MarketplacePaymentStatePill';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { Detail } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { MARKETPLACE_PAYMENT_TERM_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n MarketplacePaymentState,\n MarketplacePaymentTerm,\n} from 'src/WebApiController';\n\ninterface MarketplacePaymentTermsProps {\n marketplacePaymentTerm: MarketplacePaymentTerm | null | undefined;\n marketplacePaymentState: MarketplacePaymentState | null | undefined;\n}\n\nexport const MarketplacePaymentTerms = ({\n marketplacePaymentTerm,\n marketplacePaymentState,\n}: MarketplacePaymentTermsProps) => {\n if (!marketplacePaymentTerm || !marketplacePaymentState) {\n return null;\n }\n\n return (\n
    \n \n }\n detail={\n \n }\n />\n }\n detail={\n \n }\n />\n \n
    \n );\n};\n","import { clsx } from 'clsx';\nimport { formatInTimeZone } from 'date-fns-tz';\nimport { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { IconButton } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { PosLink } from 'src/core/POS/PosLink';\nimport { vars } from 'src/core/themes';\nimport { SimpleTable, Stack, Switch } from 'src/core/ui';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { DeleteIcon, EditIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n SALE_LINE_ITEM_CHARGE_REASON_TO_CID,\n SALE_LINE_ITEM_CREDIT_REASON_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { stringToUtcDate } from 'src/utils/dateTimeUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { getMarketplacePaymentRelativeUrl } from 'src/utils/marketplacePaymentUtils';\nimport { formatCurrency } from 'src/utils/numberFormatter';\nimport {\n Feature,\n MarketplacePaymentLineType,\n Permission,\n SaleCostType,\n SaleDetails,\n SaleInput,\n SaleLineItem,\n} from 'src/WebApiController';\n\nimport * as tableStyles from '../../../SaleDetailsTable.css';\nimport * as styles from './PaymentSectionTable.css';\n\ninterface PaymentSectionTableProps {\n sale: SaleDetails;\n lineItems: SaleLineItem[] | null | undefined;\n onEditSaleLineItem: (lineItem: SaleLineItem) => void;\n onDeleteSaleLineItem: (lineItem: SaleLineItem) => void;\n onPaymentReceivedToggleClicked: () => void;\n onSaleLineItemPaymentReceivedToggleClicked: (lineItem: SaleLineItem) => void;\n hidePartsForWastedSale: boolean;\n}\n\nexport const PaymentSectionTable = ({\n sale,\n lineItems,\n onEditSaleLineItem,\n onDeleteSaleLineItem,\n onPaymentReceivedToggleClicked,\n onSaleLineItemPaymentReceivedToggleClicked,\n hidePartsForWastedSale,\n}: PaymentSectionTableProps) => {\n const { timeZone } = useSiteTimezoneContext();\n const { watch } = useFormContext();\n const paymentReceived = watch('paymentReceived')?.value ?? false;\n const paymentReferenceId = watch('paymentReferenceId')?.value ?? '';\n const lastPaymentDate = watch('lastPaymentDate')?.value;\n const marketplacePaymentLines = watch('marketplacePaymentLines')?.value;\n const hasEditSaleLineItemsFeature = useUserHasFeature(\n Feature.SaleEditChargesAndCredits\n );\n\n const hasTotalNetProceedsPermissions = useUserHasAnyOfPermissions(\n Permission.Sales_ViewProceeds,\n Permission.Sales_ViewRecentProceeds\n );\n\n let originalProceeds = null;\n if (sale.ttlNetProcs && sale.mkpSaleTtlNetProcs) {\n if (sale.ttlNetProcs.currency !== sale.mkpSaleTtlNetProcs.currency) {\n originalProceeds = `(${sale.mkpSaleTtlNetProcs.disp})`;\n }\n }\n\n const totalProfitAmount = useMemo(() => {\n let sum = hasTotalNetProceedsPermissions ? sale?.ttlNetProcs?.amt ?? 0 : 0;\n\n if (sale?.soldTktCost != null) {\n sum -= sale?.soldTktCost.amt;\n }\n\n if (hasEditSaleLineItemsFeature) {\n lineItems?.forEach((li) => {\n // Per James - charges subtracts and credits add\n sum += (li.costType === SaleCostType.Charge ? -1 : 1) * li.cost;\n });\n }\n\n return sum;\n }, [\n hasEditSaleLineItemsFeature,\n hasTotalNetProceedsPermissions,\n lineItems,\n sale?.soldTktCost,\n sale?.ttlNetProcs?.amt,\n ]);\n\n const getMarketplacePaymentId = useCallback(\n (saleLineItem: SaleLineItem) => {\n return (marketplacePaymentLines ?? []).find(\n (mktPaymentLine) =>\n mktPaymentLine.marketplacePaymentLineId ===\n saleLineItem.marketplacePaymentLineId\n );\n },\n [marketplacePaymentLines]\n );\n\n const proceedsPaymentLine = useMemo(() => {\n return (marketplacePaymentLines ?? []).find(\n (mktPaymentLine) =>\n mktPaymentLine.paymentLineType === MarketplacePaymentLineType.Proceeds\n );\n }, [marketplacePaymentLines]);\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {originalProceeds && (\n \n {originalProceeds}{' '}\n \n )}\n {sale.ttlNetProcs?.disp}\n \n \n e.stopPropagation()}\n onClick={onPaymentReceivedToggleClicked}\n />\n \n \n {proceedsPaymentLine?.marketplacePaymentId ? (\n \n {paymentReferenceId}\n \n ) : (\n paymentReferenceId\n )}\n \n \n {lastPaymentDate &&\n formatInTimeZone(\n stringToUtcDate(lastPaymentDate),\n timeZone,\n 'MMM d, yyyy',\n {\n locale: getLocaleFromLanguageOrCurrent(),\n }\n )}\n \n \n \n {(lineItems ?? []).map((saleLineItem) => {\n const {\n id,\n costType,\n cost,\n costDate,\n currencyCode,\n saleLineItemChargeReason,\n saleLineItemCreditReason,\n paymentReceived,\n paymentReferenceId,\n } = saleLineItem;\n const marketplacePayment = getMarketplacePaymentId(saleLineItem);\n const isCharge = costType === SaleCostType.Charge;\n const lineTypeContentId = isCharge\n ? ContentId.Charge\n : ContentId.Credit;\n const costWithSign = isCharge ? cost * -1 : cost;\n const reasonContentId = isCharge\n ? saleLineItemChargeReason\n ? SALE_LINE_ITEM_CHARGE_REASON_TO_CID[saleLineItemChargeReason]\n : null\n : saleLineItemCreditReason\n ? SALE_LINE_ITEM_CREDIT_REASON_TO_CID[saleLineItemCreditReason]\n : null;\n return (\n \n \n \n \n {reasonContentId && (\n \n \n \n )}\n \n \n \n {formatCurrency(costWithSign, currencyCode)}\n \n \n e.stopPropagation()}\n onClick={() =>\n onSaleLineItemPaymentReceivedToggleClicked(saleLineItem)\n }\n />\n \n \n {paymentReferenceId &&\n marketplacePayment?.marketplacePaymentId ? (\n \n {paymentReferenceId}\n \n ) : (\n paymentReferenceId\n )}\n \n \n {costDate &&\n formatInTimeZone(\n stringToUtcDate(costDate),\n timeZone,\n 'MMM d, yyyy',\n {\n locale: getLocaleFromLanguageOrCurrent(),\n }\n )}\n \n \n \n onEditSaleLineItem(saleLineItem)}\n icon={\n \n }\n titleContentId={ContentId.Edit}\n />\n onDeleteSaleLineItem(saleLineItem)}\n icon={\n \n }\n titleContentId={ContentId.Remove}\n />\n \n \n \n );\n })}\n \n \n \n \n \n {sale?.soldTktCost == null ? (\n \n ) : (\n sale.soldTktCost.disp\n )}\n \n \n \n \n \n \n \n \n \n \n \n {formatCurrency(totalProfitAmount, sale?.currency)}\n \n \n \n \n \n \n \n \n
    \n );\n};\n","import { useCallback, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog/useConfirmDialog';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { SaleLineItemModal } from 'src/modals/SaleDetails/components/PaymentSection/SaleLineItemModal';\nimport { PaymentSectionTable } from 'src/modals/SaleDetails/components/PaymentSectionV2/PaymentSectionTable/PaymentSectionTable';\nimport { useShouldHideForWastedSale } from 'src/modals/SaleDetails/hooks/useShouldHideForWastedSale';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport {\n MarketplacePaymentLineType,\n MarketplacePaymentState,\n SaleCostType,\n SaleDetails,\n SaleInput,\n SaleLineItem,\n SiteMarketplacePaymentLineInput,\n} from 'src/WebApiController';\n\nimport { MarketplacePaymentLineDialog } from '../MarketplacePaymentSection/MarketplacePaymentLineDialog';\nimport { EMPTY_MARKETPLACE_PAYMENT_LINE } from '../MarketplacePaymentSection/MarketplacePaymentLineDialog/MarketplacePaymentLineDialog.utils';\n\ninterface PaymentSectionV2Props {\n sale?: SaleDetails | null | undefined;\n lineItems: SaleLineItem[] | null | undefined;\n onLineItemChange?: (item: SaleLineItem, isDelete?: boolean) => void;\n}\n\nexport const PaymentSectionV2 = ({\n sale,\n lineItems,\n onLineItemChange,\n}: PaymentSectionV2Props) => {\n const { loginContext } = useAppContext();\n const costDialog = useBasicDialog();\n\n const [curItem, setCurItem] = useState();\n\n const { setValue, watch } = useFormContext();\n const [currentMarketplacePaymentLine, setCurrentMarketplacePaymentLine] =\n useState();\n\n const paymentReceived = watch('paymentReceived')?.value ?? false;\n const marketplacePaymentLines = watch('marketplacePaymentLines')?.value;\n\n const {\n openConfirmDialog: launchRemovePaymentReceivedDialog,\n closeConfirmDialog: closeRemovePaymentReceivedDialog,\n } = useConfirmDialog();\n const addSalePaymentDialog = useBasicDialog();\n\n const hideForWastedSale = useShouldHideForWastedSale(sale);\n\n const onAddNewCostCancel = useCallback(() => {\n costDialog.closeDialog();\n setCurItem(undefined);\n }, [costDialog]);\n\n const onAddNewCostSave = useCallback(\n (item: SaleLineItem) => {\n onLineItemChange?.(item);\n costDialog.closeDialog();\n },\n [costDialog, onLineItemChange]\n );\n\n const onSetSaleLineItem = useCallback(\n (item?: SaleLineItem) => {\n setCurItem(item);\n costDialog.launchDialog();\n },\n [costDialog]\n );\n\n const onDeleteSaleLineItem = useCallback(\n (saleLineItem: SaleLineItem) => {\n onLineItemChange?.(saleLineItem, true);\n },\n [onLineItemChange]\n );\n\n const setPaymentReceivedFields = useCallback(\n (marketplacePaymentLine: SiteMarketplacePaymentLineInput) => {\n if (curItem?.id != null) {\n onLineItemChange?.(\n {\n ...curItem,\n paymentReceived: true,\n paymentReferenceId: marketplacePaymentLine.externalPaymentId,\n costDate: marketplacePaymentLine.paymentDate,\n },\n false\n );\n } else {\n setValue(\n 'paymentReferenceId',\n posChangedField(marketplacePaymentLine.externalPaymentId),\n {\n shouldDirty: true,\n }\n );\n setValue('paymentReceived', posChangedField(true), {\n shouldDirty: true,\n });\n setValue(\n 'lastPaymentDate',\n posChangedField(marketplacePaymentLine.paymentDate),\n {\n shouldDirty: true,\n }\n );\n }\n },\n [curItem, onLineItemChange, setValue]\n );\n\n const onRemovePaymentReceivedFields = useCallback(\n (curItem?: SaleLineItem) => {\n if (curItem?.id != null) {\n onLineItemChange?.(\n {\n ...curItem,\n paymentReceived: false,\n paymentReferenceId: null,\n marketplacePaymentLineId: null,\n },\n false\n );\n } else {\n setValue('paymentReceived', posChangedField(false), {\n shouldDirty: true,\n });\n setValue('paymentReferenceId', posChangedField(null), {\n shouldDirty: true,\n });\n setValue('lastPaymentDate', posChangedField(null), {\n shouldDirty: true,\n });\n }\n\n closeRemovePaymentReceivedDialog();\n },\n [closeRemovePaymentReceivedDialog, onLineItemChange, setValue]\n );\n\n const onCreateSalePayment = useCallback(\n (formMarketplacePaymentLineInput: SiteMarketplacePaymentLineInput) => {\n setValue(\n 'marketplacePaymentLines',\n posChangedField([\n ...(marketplacePaymentLines ?? []),\n formMarketplacePaymentLineInput,\n ]),\n {\n shouldDirty: true,\n }\n );\n setPaymentReceivedFields(formMarketplacePaymentLineInput);\n addSalePaymentDialog.closeDialog();\n setCurItem(undefined);\n },\n [\n addSalePaymentDialog,\n marketplacePaymentLines,\n setPaymentReceivedFields,\n setValue,\n ]\n );\n\n const onPaymentReceivedToggleClicked = useCallback(() => {\n if (paymentReceived) {\n launchRemovePaymentReceivedDialog({\n size: 'm',\n headerText: ,\n bodyText: ,\n onOkay: onRemovePaymentReceivedFields,\n onCancel: closeRemovePaymentReceivedDialog,\n okText: ContentId.Yes,\n cancelText: ContentId.No,\n });\n } else {\n const existingMarketplacePaymentProceedsLine =\n marketplacePaymentLines?.find(\n (line) => line.paymentLineType === MarketplacePaymentLineType.Proceeds\n );\n if (existingMarketplacePaymentProceedsLine != null) {\n setPaymentReceivedFields(existingMarketplacePaymentProceedsLine);\n } else {\n // Prompt user to enter a new one\n setCurrentMarketplacePaymentLine({\n ...EMPTY_MARKETPLACE_PAYMENT_LINE,\n externalPaymentLineId: `paymentline-${new Date().getTime()}`,\n externalSaleId: sale!.idOnMkp!,\n saleId: sale!.id,\n currency: sale!.currency,\n paymentLineType: MarketplacePaymentLineType.Proceeds,\n amount: sale!.mkpSaleTtlNetProcs?.amt ?? 0,\n paymentState: MarketplacePaymentState.Paid,\n });\n addSalePaymentDialog.launchDialog();\n }\n }\n }, [\n addSalePaymentDialog,\n closeRemovePaymentReceivedDialog,\n launchRemovePaymentReceivedDialog,\n marketplacePaymentLines,\n onRemovePaymentReceivedFields,\n paymentReceived,\n sale,\n setPaymentReceivedFields,\n ]);\n\n const onSaleLineItemPaymentReceivedToggleClicked = useCallback(\n (lineItem: SaleLineItem) => {\n if (lineItem.paymentReceived) {\n launchRemovePaymentReceivedDialog({\n size: 'm',\n headerText: ,\n bodyText: ,\n onOkay: () => onRemovePaymentReceivedFields(lineItem),\n onCancel: closeRemovePaymentReceivedDialog,\n okText: ContentId.Yes,\n cancelText: ContentId.No,\n });\n } else {\n setCurItem(lineItem);\n // Prompt user to enter a new one\n setCurrentMarketplacePaymentLine({\n ...EMPTY_MARKETPLACE_PAYMENT_LINE,\n externalPaymentLineId: `paymentline-${new Date().getTime()}`,\n externalSaleId: sale!.idOnMkp!,\n saleId: sale!.id,\n currency: lineItem.currencyCode,\n paymentLineType:\n lineItem.costType === SaleCostType.Charge\n ? MarketplacePaymentLineType.Charge\n : MarketplacePaymentLineType.Credit,\n amount: lineItem.cost,\n });\n addSalePaymentDialog.launchDialog();\n }\n },\n [\n addSalePaymentDialog,\n closeRemovePaymentReceivedDialog,\n launchRemovePaymentReceivedDialog,\n onRemovePaymentReceivedFields,\n sale,\n ]\n );\n\n if (!sale) {\n return null;\n }\n\n return (\n <>\n \n onSetSaleLineItem()}\n variant=\"textPlain\"\n disabled={hideForWastedSale}\n >\n \n \n \n \n \n \n {addSalePaymentDialog.dialogProps.isOpen && (\n {\n addSalePaymentDialog.closeDialog();\n setCurItem(undefined);\n }}\n disabledPaymentTypeInput={true}\n disabledAmountInput={!!currentMarketplacePaymentLine?.amount}\n />\n )}\n \n );\n};\n","import { PaymentSection } from 'src/modals/SaleDetails/components/PaymentSection';\nimport { PaymentSectionV2 } from 'src/modals/SaleDetails/components/PaymentSectionV2';\nimport { useHasPaymentsSectionsV2Feature } from 'src/modals/SaleDetails/hooks/useHasPaymentsSectionsV2Feature';\nimport { SaleDetails, SaleLineItem } from 'src/WebApiController';\n\ninterface PaymentSectionSelectorProps {\n sale?: SaleDetails | null;\n lineItems: SaleLineItem[] | null | undefined;\n onLineItemChange?: (item: SaleLineItem, isDelete?: boolean) => void;\n}\n\nexport const PaymentSectionSelector = ({\n sale,\n lineItems,\n onLineItemChange,\n}: PaymentSectionSelectorProps) => {\n const hasPaymentsSectionsV2Feature = useHasPaymentsSectionsV2Feature();\n\n return hasPaymentsSectionsV2Feature ? (\n \n ) : (\n \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { TagsFormBodyV2 } from 'src/components/TagsFormBody';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserCanUpdateSaleTags } from 'src/hooks/useUserHasSalePermissions';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport {\n ActionOutboxEntityType,\n Permission,\n Sale,\n SaleInput,\n} from 'src/WebApiController';\n\nexport const TagsSection = ({\n sale,\n disabled,\n}: {\n sale?: Sale | null;\n disabled?: boolean;\n}) => {\n const { setValue, watch } = useFormContext();\n const tags = watch('tags');\n\n const canCreateTage = useUserHasAnyOfPermissions(Permission.Sales_AddTagType);\n const canEditTags = useUserCanUpdateSaleTags(sale);\n\n return (\n {\n setValue('tags', posChangedField(tags), { shouldDirty: true });\n }}\n disabled={disabled}\n entityType={ActionOutboxEntityType.Sale}\n />\n );\n};\n","export const enum SaleTab {\n YourSale = 'YourSale',\n Tickets = 'Tickets',\n Notes = 'Notes',\n Economics = 'Economics',\n Delivery = 'Delivery',\n Fulfillment = 'Fulfillment',\n Purchase = 'Purchase',\n Tags = 'Tags',\n}\n\nexport enum SaleDetailsActionKey {\n Refresh = 'Refresh',\n UnwasteSale = 'Unwaste',\n}\n","import { useMutation } from '@tanstack/react-query';\nimport { useCallback, useContext, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { ReloadButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useUserCanUpdateSale } from 'src/hooks/useUserHasSalePermissions';\nimport { ModalFooter } from 'src/modals/Modal/Modal.styled';\nimport { SaleDetailsActionKey } from 'src/modals/SaleDetails/SaleDetails.constants';\nimport { IconsFill, MoreIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getSaleActionButton,\n getSaleDetailsModalConfigWithDeepLink,\n NON_MAIN_SALE_ACTIONS,\n} from 'src/utils/saleUtils';\nimport { tagHasChanges } from 'src/utils/tagUtils';\nimport {\n ActionOutboxEntityType,\n PointOfSaleSaleStatus,\n SaleActionType,\n SaleClient,\n SaleDetails,\n SaleInput,\n Tag,\n TicketType,\n} from 'src/WebApiController';\n\nexport function SaleDetailsFooter() {\n const { showErrorDialog } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { refetch: refreshTagMetadata, tagsMetadata } = useTagsForEntityType(\n ActionOutboxEntityType.Sale\n );\n\n const updateSaleMutation = useMutation({\n mutationFn: async (data: SaleInput) => {\n await new SaleClient(activeAccountWebClientConfig).updateSale(data);\n onReload();\n reset(data);\n },\n\n onError: (err: ErrorTypes, data) => {\n showErrorDialog('SaleClient.updateSale', err, {\n trackErrorData: { data },\n });\n },\n });\n\n const { formState, handleSubmit, reset, watch } = useFormContext();\n\n const tags = watch('tags');\n\n const isMobile = useMatchMedia('mobile');\n const { closeModal } = useContext(ModalContext);\n const {\n posEntity: sale,\n isLoading,\n errorInfo,\n setActivePosEntity,\n } = useActivePosEntityContext();\n\n const canUpdate = useUserCanUpdateSale(sale);\n\n const cancelTo = getSaleDetailsModalConfigWithDeepLink(sale?.id);\n\n const onReload = useCallback(() => {\n if (sale) {\n setActivePosEntity(sale.id, sale.idOnMkp, true);\n }\n // Update the tags metadata\n refreshTagMetadata();\n }, [refreshTagMetadata, sale, setActivePosEntity]);\n\n const formIsDirty = useMemo(() => {\n if (\n Object.keys(formState.dirtyFields).length === 1 &&\n Object.keys(formState.dirtyFields).includes('tags')\n ) {\n return tagHasChanges(\n (formState.defaultValues?.tags?.value ?? []) as Tag[],\n tags?.value,\n tagsMetadata ?? []\n );\n } else {\n return formState.isDirty;\n }\n }, [\n formState.defaultValues?.tags,\n formState.dirtyFields,\n formState.isDirty,\n tags,\n tagsMetadata,\n ]);\n\n // This flag is used to explicitly manually fulfill a sale when there is already artifact\n const canAttemptManualForceFulfill = useMemo(() => {\n // Condition 1, 2: isNoFulfill is true, and is pending fulfillment state\n if (\n !sale?.isNoFulfill ||\n sale?.status !== PointOfSaleSaleStatus.PendingFulfillment\n ) {\n return false;\n }\n\n // Condition 3: sale has artifact matching the ticket type\n if (\n sale.ticketType === TicketType.Barcode &&\n sale.tickets.every((t) => t.barcode)\n ) {\n return true;\n }\n\n if (\n sale.ticketType === TicketType.QRCode &&\n sale.tickets.every((t) => t.eTicket)\n ) {\n return true;\n }\n\n if (\n sale.ticketType === TicketType.QRCode &&\n sale.tickets.every((t) => t.qrCode)\n ) {\n return true;\n }\n\n return false;\n }, [sale?.isNoFulfill, sale?.status, sale?.ticketType, sale?.tickets]);\n\n if (errorInfo) {\n return ;\n }\n\n const refreshAction: { key: string; action: JSX.Element | null }[] = [\n {\n key: SaleDetailsActionKey.Refresh,\n action: (\n \n ),\n },\n ];\n\n const mainActionsStartingIndex = Math.max(\n 0,\n (sale?.actions?.length ?? 0) - (isMobile ? 2 : 3)\n );\n\n const actions: { key: string; action: JSX.Element | null }[] = sale?.actions\n ? sale.actions.map((saleActionType, i) => {\n const resolvedAction =\n saleActionType === SaleActionType.Fulfill &&\n canAttemptManualForceFulfill\n ? SaleActionType.Refulfill\n : saleActionType;\n\n return {\n key: resolvedAction,\n action:\n getSaleActionButton(\n sale.id,\n sale.idOnMkp,\n sale.mkp,\n sale.status,\n resolvedAction,\n sale.ticketType,\n sale.isNoFulfill,\n i < mainActionsStartingIndex\n ? 'text'\n : i === sale.actions.length - 1 &&\n resolvedAction !== SaleActionType.Reject &&\n !NON_MAIN_SALE_ACTIONS.includes(resolvedAction)\n ? 'regular'\n : 'outline',\n false,\n cancelTo,\n isLoading\n ) ?? null,\n };\n })\n : [];\n\n if (formIsDirty && canUpdate) {\n actions.push({\n key: 'Submit',\n action: (\n {\n const saleId = sale?.id;\n if (saleId) {\n updateSaleMutation.mutate({\n ...data,\n saleId,\n });\n }\n })}\n textContentId={ContentId.Save}\n disabled={isLoading}\n />\n ),\n });\n }\n\n const mainActions = (isMobile ? [] : refreshAction).concat(\n actions.slice(mainActionsStartingIndex)\n );\n\n const subActions = (isMobile ? refreshAction : []).concat(\n actions.slice(0, mainActionsStartingIndex)\n );\n\n return (\n \n {mainActions.map((a) => (\n
    {a.action}
    \n ))}\n {subActions.length > 0 ? (\n \n }\n align=\"end\"\n >\n {subActions\n .toSorted((a, b) => a.key.localeCompare(b.key))\n .map((a) => (\n \n {a.action}\n \n ))}\n \n ) : null}\n
    \n );\n}\n","import { ChangeEvent } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Detail, DetailGroup } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { Feature, SaleInput } from 'src/WebApiController';\n\ninterface AutoSourceTicketsProps {\n isSeatSaver?: boolean | null;\n}\n\nexport const AutoSourceTickets = ({ isSeatSaver }: AutoSourceTicketsProps) => {\n const { watch, setValue } = useFormContext();\n const disableAutoSourcing = watch('disableAutoSourcing');\n\n const allowDisableAutoSourcing = useUserHasFeature(\n Feature.DisableAutoSourcing\n );\n\n if (!isSeatSaver || !allowDisableAutoSourcing) {\n return null;\n }\n\n return (\n \n }\n detail={\n \n ) => e.stopPropagation()}\n onChange={(e) => {\n // by default, AutoSource Tickets is set to true\n // if not checked, seller wants to disable auto sourcing.\n const isChecked = e.currentTarget.checked;\n setValue('disableAutoSourcing', posChangedField(isChecked), {\n shouldDirty: true,\n });\n }}\n />\n \n }\n />\n \n );\n};\n","import { useCallback, useState } from 'react';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { vars } from 'src/core/themes';\nimport { Colors } from 'src/core/themes/constants/colors';\nimport { Stack } from 'src/core/ui';\nimport useCopyToClipboard from 'src/hooks/useCopyToClipboard';\nimport { CopyIcon } from 'src/svgs';\nimport { CheckIcon } from 'src/svgs/Viagogo';\n\nconst SHOW_COPIED_ICON_TIME = 1000;\n\ninterface CopyToClipboardPops {\n textToCopy?: string | number;\n copyIconColor?: string;\n iconSize?: string;\n}\n\nexport const CopyToClipboard = ({\n textToCopy,\n copyIconColor,\n iconSize,\n}: CopyToClipboardPops) => {\n const { isDarkMode } = useSiteTheme();\n const [showingCheckmarkIcon, setShowingCheckmarkIcon] =\n useState(false);\n const { copyToClipboard } = useCopyToClipboard();\n\n const copy = useCallback(async () => {\n if (textToCopy == null || String(textToCopy).length === 0) {\n return;\n }\n await copyToClipboard(String(textToCopy));\n setShowingCheckmarkIcon(true);\n const timeoutId = setTimeout(\n () => setShowingCheckmarkIcon(false),\n SHOW_COPIED_ICON_TIME\n );\n return () => {\n clearTimeout(timeoutId);\n };\n }, [copyToClipboard, textToCopy]);\n\n return (\n \n {showingCheckmarkIcon ? (\n \n ) : (\n \n )}\n \n );\n};\n","import { ReactNode } from 'react';\nimport { Link } from 'react-router-dom';\nimport { NavLink } from 'reactstrap';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { CopyToClipboard } from 'src/core/ui/CopyToClipboard';\n\nimport * as styles from './LinkAncCopy.css';\n\ninterface LinkAndCopyProps {\n valueToCopy: string | number;\n relativeUrl: string;\n linkChildren?: ReactNode;\n copyIconSize?: string;\n}\n\nexport const LinkAndCopy = ({\n relativeUrl,\n valueToCopy,\n linkChildren,\n copyIconSize,\n}: LinkAndCopyProps) => {\n return (\n \n \n {linkChildren || valueToCopy}\n \n \n \n );\n};\n","import { Link } from 'react-router-dom';\nimport { NavLink } from 'reactstrap';\nimport { Content } from 'src/contexts/ContentContext/Content';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { Detail, DetailGroup } from 'src/modals/common';\nimport { OpenLinkIcon } from 'src/svgs';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getListingDetailsRelativeUrl } from 'src/utils/inventoryUtils';\nimport { selectDistinctListingIds } from 'src/utils/ticketUtils';\nimport { Ticket } from 'src/WebApiController';\n\nimport * as styles from '../SaleDetails.css';\n\nconst renderListing = (\n contentId: string,\n listingId?: number | null,\n showTitle?: boolean\n) => {\n if (!listingId) return null;\n\n return (\n \n }\n detail={\n \n \n
    {'#' + listingId}
    \n \n
    \n \n }\n />\n
    \n );\n};\n\nexport const ListingLinksDetail = ({\n listingId,\n originatedFromListingId,\n tickets,\n showTitle = true,\n}: {\n listingId?: number | null;\n originatedFromListingId?: number | null;\n tickets?: Ticket[];\n showTitle?: boolean;\n}) => {\n const distinctListingIds = tickets?.length\n ? selectDistinctListingIds(tickets)\n : [];\n\n const hasOriginatedListing =\n originatedFromListingId &&\n distinctListingIds.includes(originatedFromListingId);\n\n return (\n <>\n {tickets?.length ? (\n <>\n {!hasOriginatedListing &&\n renderListing(\n ContentId.OriginatedListing,\n originatedFromListingId,\n showTitle\n )}\n {distinctListingIds.map((listingId) =>\n renderListing(\n listingId === originatedFromListingId\n ? ContentId.OriginatedListing\n : ContentId.AllocatedListing,\n listingId,\n showTitle\n )\n )}\n \n ) : (\n <>\n {originatedFromListingId &&\n renderListing(\n ContentId.OriginatedListing,\n originatedFromListingId,\n showTitle\n )}\n {listingId !== originatedFromListingId &&\n renderListing(ContentId.AllocatedListing, listingId, showTitle)}\n \n )}\n \n );\n};\n","import { clsx } from 'clsx';\nimport { useMemo } from 'react';\nimport { LinkAndCopy } from 'src/components/common/LinkAndCopy';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { SimpleTable, Stack, Tooltip } from 'src/core/ui';\nimport { UseGetUserInfo, useGetUserInfos } from 'src/hooks/userGetUserInfo';\nimport { ListingLinksDetail } from 'src/modals/SaleDetails/components/ListingLinksDetail';\nimport { GenericDisclosuresIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getPurchaseOrderRelativeUrl } from 'src/utils/purchaseUtils';\nimport { SaleDetails } from 'src/WebApiController';\n\nimport * as tableStyles from '../../../SaleDetails/SaleDetailsTable.css';\nimport * as styles from './SaleTickets.css';\n\ninterface AllocatedListingProps {\n sale: SaleDetails;\n}\n\nexport const AllocatedListing = ({ sale }: AllocatedListingProps) => {\n const { ticketGroupInfos } = sale;\n\n const canRender = sale.originatedFromListingId;\n\n const buyerUserIds = useMemo(() => {\n if (!canRender) {\n return []; // Don't fetch if it can't render\n }\n return ticketGroupInfos\n .filter((tkgInfo) => !!tkgInfo.buyerUserId)\n .map((tkgInfo) => tkgInfo.buyerUserId) as string[];\n }, [canRender, ticketGroupInfos]);\n\n const usersInfoQuery = useGetUserInfos(buyerUserIds);\n\n const usersMap: Record = usersInfoQuery.data || {};\n\n if (!canRender) {\n return null;\n }\n\n return (\n
    \n \n \n \n \n \n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {ticketGroupInfos.map((tkInfo, index) => {\n const { seating } = tkInfo;\n return (\n \n \n {seating.section}\n \n \n {seating.row}\n \n \n {seating.seatFr} - {seating.seatTo}\n \n \n {tkInfo.ticketCount}\n \n \n \n \n \n {tkInfo.buyerUserId && usersMap?.[tkInfo.buyerUserId]?.name}\n \n \n
    \n {tkInfo.vendor?.vendorName}\n
    \n \n ({tkInfo.vendorAccount?.encryptedEmailAddress})\n
    \n \n \n {tkInfo.internalNotes ? (\n \n \n
    \n }\n >\n
    \n
    \n \n
    \n
    \n {tkInfo.internalNotes}\n
    \n
    \n \n ) : undefined}\n \n \n );\n })}\n \n \n \n \n );\n};\n","import { clsx } from 'clsx';\nimport { Content } from 'src/contexts/ContentContext';\nimport { SimpleTable, Stack } from 'src/core/ui';\nimport { ListingLinksDetail } from 'src/modals/SaleDetails/components/ListingLinksDetail';\nimport * as styles from 'src/modals/SaleDetailsV2/components/SaleTickets/SaleTickets.css';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SaleDetails } from 'src/WebApiController';\n\nimport * as tableStyles from '../../../SaleDetails/SaleDetailsTable.css';\n\ninterface OriginalListingProps {\n sale: SaleDetails;\n}\n\nexport const OriginalListing = ({ sale }: OriginalListingProps) => {\n if (!sale.mkpSeating) {\n return null;\n }\n\n const { section, row, seatFr, seatTo } = sale.mkpSeating;\n\n return (\n
    \n \n \n \n \n \n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {section}\n \n \n {row}\n \n \n {seatFr} - {seatTo}\n \n \n {sale.qtySold}\n \n \n \n \n \n \n \n \n
    \n
    \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { DetailSection } from 'src/modals/common';\nimport { AutoSourceTickets } from 'src/modals/SaleDetails/components/AutoSourceTickets';\nimport { useShouldHideForWastedSale } from 'src/modals/SaleDetails/hooks/useShouldHideForWastedSale';\nimport { AllocatedListing } from 'src/modals/SaleDetailsV2/components/SaleTickets/AllocatedListing';\nimport { OriginalListing } from 'src/modals/SaleDetailsV2/components/SaleTickets/OriginalListing';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SaleDetails } from 'src/WebApiController';\n\ninterface SeatsSoldAsProps {\n sale: SaleDetails | undefined | null;\n}\n\nexport const SaleTicketsSection = ({ sale }: SeatsSoldAsProps) => {\n const hideForWastedSale = useShouldHideForWastedSale(sale);\n\n if (!sale) {\n return null;\n }\n\n return (\n }>\n {!hideForWastedSale && sale.tickets.length > 0 && (\n \n )}\n\n \n \n \n );\n};\n","import { Fragment, useMemo } from 'react';\nimport { LinkAndCopy } from 'src/components/common/LinkAndCopy';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { Button } from 'src/core/ui';\nimport { getUserDisplayName, useGetUserInfos } from 'src/hooks/userGetUserInfo';\nimport {\n Detail,\n DetailGroup,\n DetailSection,\n SectionContent,\n} from 'src/modals/common';\nimport * as styles from 'src/modals/SaleDetails/SaleDetails.css';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { QUALITY_CONTROL_STATE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { removeDuplicates } from 'src/utils/miscUtils';\nimport { getPurchaseOrderRelativeUrl } from 'src/utils/purchaseUtils';\nimport { QualityControlState, UiPurchaseInfo } from 'src/WebApiController';\n\nexport const PurchaseInfoSection = ({\n isSeatSaver,\n purchaseInfos,\n qualityControlState,\n insertBy,\n}: {\n isSeatSaver?: boolean;\n purchaseInfos: UiPurchaseInfo[];\n qualityControlState?: QualityControlState | null;\n insertBy?: string | null;\n}) => {\n const useGetUserInfosQuery = useGetUserInfos(\n [...purchaseInfos.map((u) => u.buyerUserId), insertBy]\n .filter((id) => id != null)\n .map((id) => id!)\n );\n\n const deactivatedText = useContent(ContentId.Deactivated);\n const buyerUserInfos = useMemo(() => {\n return purchaseInfos.map((bi) => {\n const buyerUser =\n bi.buyerUserId && useGetUserInfosQuery.data?.[bi.buyerUserId];\n return {\n buyerUserId: bi.buyerUserId,\n buyerUser,\n };\n });\n }, [purchaseInfos, useGetUserInfosQuery.data]);\n\n const insertByUser = insertBy\n ? useGetUserInfosQuery.data?.[insertBy]\n : undefined;\n\n return (\n }>\n {isSeatSaver ? (\n \n \n \n \n \n \n \n \n }\n detail={\n insertByUser && (\n {getUserDisplayName(insertByUser)}\n )\n }\n />\n \n \n ) : (\n \n \n \n }\n detail={\n
    \n {purchaseInfos.map(({ purchaseOrderId, vendorOrderId }) => {\n return (\n \n {purchaseOrderId && (\n \n )}\n \n );\n })}\n
    \n }\n />\n
    \n \n }\n detail={\n \n {removeDuplicates(\n buyerUserInfos.map((bui) =>\n bui.buyerUser\n ? getUserDisplayName(bui.buyerUser, deactivatedText)\n : bui.buyerUserId\n )\n ).join(', ')}\n \n }\n />\n \n \n \n }\n detail={\n \n {removeDuplicates(\n purchaseInfos\n .filter((v) => v.vendor?.vendorName != null)\n .map((v) => v.vendor!.vendorName)\n ).join(', ')}\n \n }\n />\n \n \n \n }\n detail={\n \n {removeDuplicates(\n purchaseInfos\n .filter(\n (v) => v.vendorAccount?.encryptedEmailAddress != null\n )\n .map((v) =>\n v.vendorAccount!.vendorAccountName\n ? `${v.vendorAccount!.vendorAccountName} (${\n v.vendorAccount!.encryptedEmailAddress\n })`\n : v.vendorAccount!.encryptedEmailAddress\n )\n ).join(', ')}\n \n }\n />\n \n {qualityControlState !== undefined && (\n \n }\n detail={\n qualityControlState ? (\n \n ) : (\n \n )\n }\n />\n \n )}\n {insertBy && (\n \n }\n detail={\n insertByUser && (\n {getUserDisplayName(insertByUser)}\n )\n }\n />\n \n )}\n \n }\n detail={\n \n {removeDuplicates(\n purchaseInfos\n .filter((p) => p.internalNotes?.length)\n .map((p) => p.internalNotes)\n ).join(', ')}\n \n }\n />\n \n
    \n )}\n
    \n );\n};\n","import { ReactNode } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { SetCommissionForm } from 'src/components/common/SetCommissions/SetCommissionsForm';\nimport { PosFieldArrayOfCommission } from 'src/WebApiController';\n\ninterface SaleCommissionOverrideFormProps {\n children: ReactNode;\n commissions: PosFieldArrayOfCommission | null;\n}\n\n/**\n * This wrapper is used to modify commissions overrides, but not apply them\n * to parent form. This solves the cancel option of the modal to rollback changes.\n * @param commissions\n * @param children\n * @constructor\n */\nexport const SaleCommissionOverrideFormWrapper = ({\n commissions,\n children,\n}: SaleCommissionOverrideFormProps) => {\n const methods = useForm({\n defaultValues: {\n commissions: commissions,\n },\n });\n return {children};\n};\n","import React, { ComponentProps, useRef, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport {\n SetCommissionForm,\n SetCommissionsForm,\n SetCommissionsRefActions,\n} from 'src/components/common/SetCommissions/SetCommissionsForm';\n\nimport { Content } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { SaleCommissionOverrideFormWrapper } from 'src/dialogs/SaleCommissionOverrideDialog/SaleCommissionOverrideFormWrapper';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Commission, PosFieldArrayOfCommission } from 'src/WebApiController';\nimport * as styles from './SaleCommissionOverrideDialog.css';\n\nexport type SaleCommissionOverrideDialogProps = {\n onSave: (commissions: Commission[]) => void;\n onCancel?: () => void;\n} & ComponentProps;\n\nexport function SaleCommissionOverrideDialog({\n header,\n onSave,\n onCancel,\n ...rest\n}: SaleCommissionOverrideDialogProps) {\n const actionsRef = useRef(null);\n const { watch } = useFormContext();\n const commissions = watch('commissions');\n const [initialCommissions] = useState(\n commissions\n );\n return (\n \n {onCancel && }\n actionsRef.current?.onSave()}\n />\n \n }\n includeCloseButton={true}\n >\n
    \n \n \n \n \n \n \n
    \n \n );\n}\n","import { vars } from 'src/core/themes';\n\nexport const shimmerHeight = vars.spacing.xl;\n","import { useMemo } from 'react';\nimport { IconButton } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { SimpleTable } from 'src/core/ui';\nimport { useGetUserInfos } from 'src/hooks/userGetUserInfo';\nimport { shimmerHeight } from 'src/modals/SaleDetails/components/Commissions/Commissions.constants';\nimport { EditIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { TableShimmeringDiv } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Commission } from 'src/WebApiController';\n\nimport * as styles from '../CommissionsTable.css';\n\ninterface CommissionsTableProps {\n commissions: Commission[];\n onEditAction: () => void;\n}\n\nexport const CommissionsOverridesTable = ({\n commissions,\n onEditAction,\n}: CommissionsTableProps) => {\n const usersIds = useMemo(\n () => commissions.map((commission) => commission.buyerUserId),\n [commissions]\n );\n\n const usersQuery = useGetUserInfos(usersIds);\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {usersQuery.isLoading ? (\n <>\n {commissions.map(({ buyerUserId }) => (\n \n \n \n \n \n \n \n \n \n \n \n ))}\n \n ) : (\n <>\n {commissions.map(\n ({ commissionPercentage, buyerUserId }, index) => (\n \n \n {usersQuery.data?.[buyerUserId]?.name}\n \n \n {(commissionPercentage * 100).toFixed(0)}%\n \n \n {index === 0 && (\n \n }\n titleContentId={ContentId.Edit}\n />\n )}\n \n \n )\n )}\n \n )}\n \n \n
    \n );\n};\n","import { useMemo } from 'react';\nimport { LinkAndCopy } from 'src/components/common/LinkAndCopy';\nimport { Content } from 'src/contexts/ContentContext';\nimport { SimpleTable } from 'src/core/ui';\nimport { useGetUserInfos } from 'src/hooks/userGetUserInfo';\nimport { shimmerHeight } from 'src/modals/SaleDetails/components/Commissions/Commissions.constants';\nimport { TableShimmeringDiv } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getPurchaseOrderRelativeUrl } from 'src/utils/purchaseUtils';\nimport { SaleDetails } from 'src/WebApiController';\nimport * as styles from '../CommissionsTable.css';\n\ninterface CommissionsTableProps {\n sale: SaleDetails | null | undefined;\n}\n\nexport const CommissionsTable = ({ sale }: CommissionsTableProps) => {\n const usersIds = useMemo(() => {\n if (\n !sale?.purchaseOrderCommissions ||\n sale?.purchaseOrderCommissions?.length === 0\n ) {\n return [];\n }\n\n const buyerUserIds = sale.purchaseOrderCommissions.flatMap((poc) =>\n poc.commissions.map((c) => c.buyerUserId)\n );\n return Array.from(new Set(buyerUserIds));\n }, [sale]);\n\n const usersQuery = useGetUserInfos(usersIds);\n\n if (!sale?.purchaseOrderCommissions || usersIds.length === 0) {\n return (\n
    \n \n
    \n );\n }\n\n const users = usersQuery.data ?? {};\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {usersQuery.isLoading ? (\n <>\n {usersIds.map((userId) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ))}\n \n ) : (\n <>\n {sale.purchaseOrderCommissions.map(\n ({ commissions, purchaseOrderId }) => {\n const tkInfo = sale.ticketGroupInfos.find(\n (tkg) => tkg.purchaseOrderId === purchaseOrderId\n );\n if (!tkInfo) {\n return null;\n }\n const { seating, ticketCount } = tkInfo;\n return (\n \n \n {seating.section}\n \n \n {seating.row}\n \n \n {seating.seatFr} - {seating.seatTo}\n \n \n {ticketCount}\n \n \n \n \n \n {commissions.map(({ buyerUserId }) => (\n
    {users[buyerUserId].name}
    \n ))}\n
    \n \n {commissions.map(\n ({ buyerUserId, commissionPercentage }) => (\n
    \n {(commissionPercentage * 100).toFixed(0)}%\n
    \n )\n )}\n
    \n
    \n );\n }\n )}\n \n )}\n
    \n
    \n
    \n );\n};\n","import { useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog/useConfirmDialog';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { SaleCommissionOverrideDialog } from 'src/dialogs/SaleCommissionOverrideDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport * as styles from 'src/modals/SaleDetails/components/Commissions/Commissions.css';\nimport { CommissionsOverridesTable } from 'src/modals/SaleDetails/components/Commissions/CommissionsOverrideTable/CommissionsOverridesTable';\nimport { CommissionsTable } from 'src/modals/SaleDetails/components/Commissions/CommissionsTable/CommissionsTable';\nimport { EditIcon, IconsFill, ResetIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { Commission, SaleDetails, SaleInput } from 'src/WebApiController';\n\ninterface CommissionsSectionProps {\n sale: SaleDetails | null | undefined;\n}\n\nexport const CommissionsSection = ({ sale }: CommissionsSectionProps) => {\n const { setValue, watch } = useFormContext();\n const { closeDialog, launchDialog, dialogProps } = useBasicDialog();\n const commissions = watch('commissions')?.value ?? [];\n\n const onSave = useCallback(\n (commissions: Commission[]) => {\n setValue('commissions', posChangedField(commissions), {\n shouldDirty: true,\n });\n closeDialog();\n },\n [closeDialog, setValue]\n );\n\n const {\n openConfirmDialog: openConfirmDeleteDialog,\n closeConfirmDialog: closeConfirmDeleteDialog,\n } = useConfirmDialog();\n\n const resetOverride = useCallback(() => {\n openConfirmDeleteDialog({\n size: 's',\n headerText: ,\n bodyText: ,\n onOkay: () => {\n const emptyCommissions: Commission[] = [];\n onSave(emptyCommissions);\n closeConfirmDeleteDialog();\n },\n onCancel: closeConfirmDeleteDialog,\n okText: ContentId.Yes,\n cancelText: ContentId.No,\n });\n }, [closeConfirmDeleteDialog, onSave, openConfirmDeleteDialog]);\n\n if (!sale) {\n return null;\n }\n\n const hasCommissions = commissions.length > 0;\n const ActionIcon = hasCommissions ? ResetIcon : EditIcon;\n\n return (\n <>\n \n (hasCommissions ? resetOverride() : launchDialog())}\n icon={\n \n }\n className={styles.addCommissionButton}\n />\n \n\n {hasCommissions ? (\n \n ) : (\n \n )}\n\n {dialogProps.isOpen && (\n }\n />\n )}\n \n );\n};\n","import { formatInTimeZone } from 'date-fns-tz';\nimport { MarketplaceLogo } from 'src/components/common/MarketplaceLogo';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { PosPill } from 'src/core/POS/PosPill';\nimport { PosPillVariant } from 'src/core/POS/PosPill/PosPill';\nimport { Stack } from 'src/core/ui';\nimport { CopyToClipboard } from 'src/core/ui/CopyToClipboard';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { getUserDisplayName, useGetUserInfos } from 'src/hooks/userGetUserInfo';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Detail, DetailGroup, SectionContent } from 'src/modals/common';\nimport { useGetModalGridFormat } from 'src/modals/SaleDetailsV2/hooks/useGetModalGridFormat';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { stringToUtcDate } from 'src/utils/dateTimeUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport {\n Feature,\n Marketplace,\n PointOfSaleSaleStatus,\n Sale,\n} from 'src/WebApiController';\n\nexport type YourSaleSectionProps = {\n marketplace?: Marketplace | null;\n saleId: number;\n marketplaceSaleId: string | null;\n saleDate: Sale['saleDate'];\n insertBy: Sale['insertBy'];\n status: PointOfSaleSaleStatus;\n};\n\nexport const YourSaleSection = ({\n marketplaceSaleId,\n saleId,\n marketplace,\n saleDate,\n insertBy,\n status,\n}: YourSaleSectionProps) => {\n const hasWasteSaleFeature = useUserHasFeature(Feature.WasteSale);\n const { SectionContentGridFormat } = useGetModalGridFormat();\n const { timeZone } = useSiteTimezoneContext();\n const displayDate = formatInTimeZone(\n stringToUtcDate(saleDate),\n timeZone,\n 'MMM d, yyyy h:mm aa',\n {\n locale: getLocaleFromLanguageOrCurrent(),\n }\n );\n\n const isMobile = useMatchMedia('mobile');\n\n const useGetUserInfosQuery = useGetUserInfos(\n insertBy ? [insertBy] : undefined\n );\n\n const deactivatedText = useContent(ContentId.Deactivated);\n const insertByUser = insertBy\n ? useGetUserInfosQuery.data?.[insertBy]\n : undefined;\n\n const isWastedSale = status === PointOfSaleSaleStatus.Wasted;\n\n return (\n \n \n }\n detail={\n \n #{marketplaceSaleId || saleId}\n \n \n }\n />\n \n \n }\n detail={\n hasWasteSaleFeature && isWastedSale ? (\n \n \n \n ) : (\n \n )\n }\n />\n \n \n }\n detail={displayDate}\n />\n \n {insertByUser && (\n \n }\n detail={\n insertByUser && (\n \n {getUserDisplayName(insertByUser, deactivatedText)}\n \n )\n }\n />\n \n )}\n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useCallback, useMemo } from 'react';\nimport { FormProvider, useForm, useFormContext } from 'react-hook-form';\nimport { useNavigate } from 'react-router-dom';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { useHasSaleDetailsMarketplaceTermsFeature } from 'src/hooks/features/useHasSaleDetailsMarketplaceTermsFeature';\nimport { useEventItemLoadingDisplay } from 'src/hooks/useEventItemLoadingDisplay';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useUserCanUpdateSale } from 'src/hooks/useUserHasSalePermissions';\nimport { DetailSection } from 'src/modals/common';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ListingNotesSection } from 'src/modals/common/ListingNotesSection';\nimport { ModalBody } from 'src/modals/Modal';\nimport { CommentSection } from 'src/modals/SaleDetails/components/CommentSection';\nimport { MarketplacePaymentSection } from 'src/modals/SaleDetails/components/MarketplacePaymentSection';\nimport { MarketplacePaymentTerms } from 'src/modals/SaleDetails/components/MarketplacePaymentTerms';\nimport { PaymentSectionSelector } from 'src/modals/SaleDetails/components/PaymentSectionSelector';\nimport { TagsSection } from 'src/modals/SaleDetails/components/TagsSection';\nimport { useShouldHideForWastedSale } from 'src/modals/SaleDetails/hooks/useShouldHideForWastedSale';\nimport { SaleDetailsFooter } from 'src/modals/SaleDetails/SaleDetailsFooter';\nimport { SaleTicketsSection } from 'src/modals/SaleDetailsV2/components/SaleTickets/SaleTickets';\nimport { IconsFill, MoreIcon } from 'src/svgs/Viagogo';\nimport { SaleDeeplinkQueryParam } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { getDeepLinkIdFromUrl } from 'src/utils/deepLinkUtils';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport {\n createSaleEventPageUrl,\n getSaleDetailsUpdateInput,\n} from 'src/utils/saleUtils';\nimport {\n AutoPoClient,\n Feature,\n Permission,\n SaleDetails,\n SaleInput,\n SaleLineItem,\n} from 'src/WebApiController';\n\nimport { PurchaseInfoSection } from '../common/PurchaseInfoSection';\nimport { Summary } from '../common/Summary';\nimport {\n ModalBodyDataContainer,\n ModalBodyHeaderContainer,\n} from '../Modal/Modal.styled';\nimport { CommissionsSection } from '../SaleDetails/components/Commissions';\nimport { DeliverySection } from './components/DeliverySection';\nimport { FulfillmentSection } from './components/FulfillmentSection';\nimport { YourSaleSection } from './components/YourSaleSection';\n\nexport const SaleDetailsModalV2 = () => {\n const activeId = getDeepLinkIdFromUrl(\n SaleDeeplinkQueryParam,\n window.location.href\n );\n const {\n isLoading,\n posEntity: sale,\n loadingState,\n } = useEventItemLoadingDisplay(\n FormatContentId.LoadingSaleId,\n FormatContentId.SearchingForSaleId,\n FormatContentId.CouldNotFindSaleId,\n activeId\n );\n\n if (!sale) {\n // If we don't have a sale yet, either return loading state or nothing\n return loadingState;\n }\n\n // If we do have a sale already, only return loadingState if it is not loading (ie, it's something else wrong)\n if (!isLoading && loadingState) return loadingState;\n\n return ;\n};\n\nconst SaleDetailsModalForm = ({ sale }: { sale: SaleDetails }) => {\n const methods = useForm({\n defaultValues: getSaleDetailsUpdateInput(sale),\n });\n\n return (\n \n \n }\n />\n \n\n \n \n \n );\n};\n\nconst SaleDetailsModalBody = () => {\n const { event, posEntity: sale } = useActivePosEntityContext();\n\n const hasSaleSkyboxNotesSectionFeature = useUserHasFeature(\n Feature.SaleSkyboxNotesSection\n );\n const hasCreatePermission = useUserHasAnyOfPermissions(\n Permission.Purchases_Create\n );\n const hasSaleSeatsSoldAs = useUserHasFeature(Feature.SaleSeatsSoldAs);\n\n const { activeAccountWebClientConfig } = useAppContext();\n const navigate = useNavigate();\n const { trackError } = useErrorBoundaryContext();\n const { watch, setValue } = useFormContext();\n const internalNotes = watch('internalNotes');\n const lineItems = watch('lineItems');\n\n const canUpdate = useUserCanUpdateSale(sale);\n const hideForWastedSale = useShouldHideForWastedSale(sale);\n const hasSaleDetailsMarketplaceTermsFeature =\n useHasSaleDetailsMarketplaceTermsFeature();\n\n const shouldQuery =\n activeAccountWebClientConfig.activeAccountId != null && sale?.id != null;\n const inboundEmailId = useQuery({\n queryKey: [\n 'AutoPoClient.getAutoPoClassifiedInboundEmailIdForEntity',\n activeAccountWebClientConfig,\n sale?.id,\n ],\n async queryFn() {\n if (!shouldQuery) {\n return null;\n }\n return new AutoPoClient(\n activeAccountWebClientConfig\n ).getAutoPoClassifiedInboundEmailIdForEntity(null, sale!.id);\n },\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError(\n 'AutoPoClient.getAutoPoClassifiedInboundEmailIdForEntity',\n error,\n {\n saleId: sale?.id,\n }\n );\n },\n },\n });\n\n const onLineItemChange = useCallback(\n (item: SaleLineItem, isDelete?: boolean) => {\n if (isDelete) {\n setValue(\n 'lineItems',\n posChangedField(\n lineItems?.value?.filter((l) => l.id !== item.id) ?? []\n ),\n {\n shouldDirty: true,\n }\n );\n } else {\n const indexExisting = lineItems?.value?.findIndex(\n (l) => l.id === item.id\n );\n if ((indexExisting ?? -1) >= 0) {\n lineItems!.value![indexExisting!] = item;\n setValue('lineItems', posChangedField([...lineItems!.value!]), {\n shouldDirty: true,\n });\n } else {\n item.id = -((lineItems?.value?.length ?? 0) + 1);\n setValue(\n 'lineItems',\n posChangedField([...(lineItems?.value ?? []), item]),\n {\n shouldDirty: true,\n }\n );\n }\n }\n },\n [lineItems, setValue]\n );\n\n const onInternalNotesChanged = useCallback(\n (notes?: string | null) => {\n if (notes !== internalNotes?.value) {\n setValue('internalNotes', posChangedField(notes ?? null), {\n shouldDirty: true,\n });\n }\n },\n [internalNotes?.value, setValue]\n );\n\n const saleEventUrl = useMemo(() => {\n const eventId = sale?.viagVirtualId;\n if (eventId) {\n return createSaleEventPageUrl(eventId, [SaleDeeplinkQueryParam]);\n }\n return undefined;\n }, [sale]);\n\n return (\n \n \n \n }\n align=\"end\"\n >\n {\n navigate(`/messages/${inboundEmailId.data}`);\n }}\n >\n \n \n \n )\n }\n />\n \n\n \n }>\n \n \n\n \n\n }>\n \n \n\n }>\n \n \n\n \n\n {hasSaleDetailsMarketplaceTermsFeature && (\n \n )}\n \n \n\n {!hideForWastedSale && (\n }>\n \n \n )}\n {!hideForWastedSale && (\n }>\n \n \n )}\n\n {!hasSaleSeatsSoldAs && (\n \n )}\n\n }>\n \n \n\n {hasSaleSkyboxNotesSectionFeature && (\n }>\n \n \n \n \n )}\n\n }>\n \n \n \n \n );\n};\n","import { SaleDeeplinkQueryParam } from 'src/utils/constants/constants';\n\nimport { SaleDetailsModalV2 } from '../SaleDetailsV2/SaleDetailsModalBody';\n\nexport const SaleDetailsModalConfig = {\n children: ,\n clickOutsideToClose: true,\n deepLinkKey: SaleDeeplinkQueryParam,\n deepLinkValue: undefined,\n size: 'slide-in',\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { Detail, DetailGroup, SectionContent } from 'src/modals/common';\nimport { AutoSourceTickets } from 'src/modals/SaleDetails/components/AutoSourceTickets';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { formatSeatDisplay } from 'src/utils/ticketUtils';\nimport { Seating, Ticket } from 'src/WebApiController';\n\nimport { ListingLinksDetail } from './ListingLinksDetail';\n\nexport const TicketsSection = ({\n section,\n row,\n seatFr,\n seatTo,\n quantity,\n tickets,\n listingId,\n originatedFromListingId,\n isSeatSaver,\n}: Seating & {\n quantity: number;\n tickets?: Ticket[];\n listingId?: number | null;\n originatedFromListingId?: number | null;\n isSeatSaver?: boolean | null;\n}) => {\n return (\n \n \n }\n detail={section}\n />\n \n\n \n } detail={row} />\n \n\n \n }\n detail={<>{formatSeatDisplay(seatFr, seatTo)}}\n />\n \n\n \n }\n detail={x {quantity}}\n />\n \n \n\n \n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { isEqual } from 'lodash-es';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Link } from 'react-router-dom';\nimport { TableVirtuoso } from 'react-virtuoso';\nimport { NavLink } from 'reactstrap';\nimport { usePurchaseVendorSelector } from 'src/components/Selectors/PurchaseVendorSelector/usePurchaseVendorSelector';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n Content,\n getFormattedContent,\n useContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Button, Radio, RadioGroup, SimpleTable, Stack } from 'src/core/ui';\nimport { useGetUserInfos } from 'src/hooks/userGetUserInfo';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { AttrLabel } from 'src/modals/common';\nimport { GenericFeatureIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { getPurchaseOrderRelativeUrl } from 'src/utils/purchaseUtils';\nimport { formatSeatDisplay } from 'src/utils/ticketUtils';\nimport {\n Feature,\n SaleClient,\n SaleDetails,\n Seating,\n SeatingForAlloc,\n} from 'src/WebApiController';\n\nimport * as styles from './SeatingAllocationInput.css';\n\nexport const SeatingAllocationInput = () => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const { getValues, setValue, watch } = useFormContext();\n\n const [allPossibleSeatings, setAllPossibleSeatings] = useState(false);\n\n const sale = getValues();\n const seating = watch('seating');\n\n const ticketsForAllocationQuery = useQuery({\n queryKey: [\n 'SaleClient.getSeatingsForSaleAllocation',\n sale.id,\n allPossibleSeatings,\n ],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n const client = new SaleClient(activeAccountWebClientConfig);\n const data = await client.getSeatingsForSaleAllocation(\n sale.id,\n allPossibleSeatings,\n false\n );\n\n return data;\n },\n refetchOnWindowFocus: false,\n refetchOnMount: true,\n networkMode: 'offlineFirst',\n meta: {\n persist: false,\n onError: (error: ErrorTypes) => {\n showErrorDialog('SaleClient.getSeatingsForSaleAllocation', error, {\n trackErrorData: {\n saleId: sale.id,\n allPossibleSeatings: allPossibleSeatings,\n },\n });\n },\n },\n });\n\n const possibleSeatings = useMemo(() => {\n const possibleSeatings = ticketsForAllocationQuery.data?.possibleSeatings;\n if (!possibleSeatings) {\n return possibleSeatings;\n }\n\n const possibleSeatingsConsecutive = possibleSeatings.filter(\n (seating) => !seating.nonConsecSeats\n );\n\n const possibleSeatingsNonConsecutive = possibleSeatings.filter(\n (seating) => seating.nonConsecSeats\n );\n\n return [...possibleSeatingsConsecutive, ...possibleSeatingsNonConsecutive];\n }, [ticketsForAllocationQuery.data?.possibleSeatings]);\n\n const getIndexOf = useCallback(\n (seating: Seating) => {\n let index = possibleSeatings?.findIndex((s) =>\n isEqual(s.ticketIds?.toSorted(), seating.ticketIds?.toSorted())\n );\n\n if (index == null || index < 0) {\n // If we don't have any selected...\n if (possibleSeatings?.length) {\n const newS = possibleSeatings.some((s, i) => {\n if (s.recAlloc) {\n // ...auto-select the first recommended one if there is one\n setValue('seating', s);\n index = i;\n\n // break\n return true;\n }\n\n return false;\n });\n\n if (!newS && !sale.isSeatSaver) {\n // if we still have nothing, just select the first one\n setValue('seating', possibleSeatings[0]);\n index = 0;\n }\n }\n }\n\n return index;\n },\n [possibleSeatings, sale.isSeatSaver, setValue]\n );\n\n if (ticketsForAllocationQuery.isFetching && !possibleSeatings?.length) {\n return ;\n }\n\n return (\n {\n const selectedIndex = parseInt(value);\n const newSeating = possibleSeatings?.[selectedIndex];\n\n if (newSeating) {\n setValue('seating', newSeating);\n }\n }}\n value={getIndexOf(seating)?.toString()}\n >\n {possibleSeatings?.length ? (\n <>\n
    \n (\n \n \n  \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {' '}\n \n \n \n \n \n \n \n \n \n \n \n  \n \n \n )}\n itemContent={(index, seating) => (\n \n )}\n />\n
    \n {ticketsForAllocationQuery.data?.hasMoreAllocations && (\n setAllPossibleSeatings(!allPossibleSeatings)}\n >\n \n \n )}\n \n ) : (\n \n \n
    \n \n \n \n
    \n
    \n )}\n \n );\n};\n\nconst PossibleSeatingTableRow = ({\n seating,\n index,\n}: {\n seating: SeatingForAlloc;\n index: number;\n}) => {\n const recommended = useContent(ContentId.Recommended);\n const contentContext = useContentContext();\n const deactivatedText = useContent(ContentId.Deactivated);\n const hasDisplayDeactivatedUser = useUserHasFeature(\n Feature.DisplayDeactivatedUser\n );\n\n const {\n section,\n row,\n seatFr,\n seatTo,\n recAlloc,\n nonConsecSeats,\n tktsForAlloc,\n } = seating;\n\n const purchasedByUsers = useGetUserInfos([\n ...new Set(\n tktsForAlloc\n ?.filter((t) => t.purchasedBy != null)\n ?.map((t) => t.purchasedBy!)\n ),\n ]);\n\n const { availableVendors } = usePurchaseVendorSelector({});\n\n const vendorNames = useMemo(() => {\n const missingVendorNameIds = new Set(\n tktsForAlloc\n .filter((t) => !t.vendorName && t.vendorId)\n .map((t) => t.vendorId!)\n );\n\n const vendorNames = [...missingVendorNameIds]\n .map((id) => availableVendors[id]?.name)\n .filter((n) => n)\n .map((n) => n!);\n\n const uniqueNames = new Set([\n ...vendorNames,\n ...tktsForAlloc.filter((t) => t.vendorName).map((t) => t.vendorName!),\n ]);\n\n return [...uniqueNames];\n }, [availableVendors, tktsForAlloc]);\n\n const vendorAccountNames = useMemo(() => {\n const uniqueNames = new Set(\n tktsForAlloc\n .filter((t) => t.vendorAccEmail || t.vendorAccName)\n .map((t) => (t.vendorAccEmail || t.vendorAccName)!)\n );\n\n return [...uniqueNames];\n }, [tktsForAlloc]);\n\n const seatNumbersDisplay = useMemo(() => {\n const allSeatsHaveValues = tktsForAlloc?.every((t) => !!t.seat);\n\n if (allSeatsHaveValues) {\n return tktsForAlloc\n ?.map((t) => t.seat)\n .toSorted((a, b) =>\n a.localeCompare(b, undefined, { numeric: true, sensitivity: 'base' })\n ) // Sort alphanumerically, case insensitive. This may not follow the underlying ordinality of the seats, but for display purposes it's better\n .join(', ');\n }\n\n const allSeatsHaveListingOrdinal = tktsForAlloc?.every(\n (t) => t.listingOrd != null\n );\n\n return tktsForAlloc\n ?.toSorted((a, b) => {\n if (allSeatsHaveListingOrdinal) {\n return a.listingOrd! - b.listingOrd!;\n }\n return a.ticketOrd - b.ticketOrd;\n })\n .map((t) => {\n if (t.seat) {\n return t.seat;\n }\n\n return getFormattedContent(\n FormatContentId.SeatNumber,\n [\n (allSeatsHaveListingOrdinal\n ? t.listingOrd!\n : t.ticketOrd\n ).toString(),\n ],\n contentContext\n );\n })\n .join(', ');\n }, [contentContext, tktsForAlloc]);\n\n return (\n <>\n \n \n \n {section}\n {row}\n \n {nonConsecSeats ? (\n <>\n {seatNumbersDisplay ? (\n {seatNumbersDisplay}\n ) : (\n \n )}\n \n ) : (\n <>{formatSeatDisplay(seatFr, seatTo)}\n )}\n \n \n \n {Object.values(purchasedByUsers.data ?? {}).map((user) => (\n
    \n {' '}\n {`${user?.name} ${\n user?.isDeactivated && !hasDisplayDeactivatedUser\n ? ` (${deactivatedText})`\n : ''\n }`}\n
    \n ))}\n
    \n
    \n \n \n {vendorNames?.map((vn) =>
    {vn}
    )}\n
    \n
    \n \n \n {vendorAccountNames.map((van) => (\n
    {van}
    \n ))}\n
    \n
    \n \n \n \n \n \n \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { DetailSection } from 'src/modals/common';\nimport { TicketsSection } from 'src/modals/SaleDetails/components/TicketsSection';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SaleDetails, Seating } from 'src/WebApiController';\n\nimport { SeatingAllocationInput } from './SeatingAllocationInput';\n\nexport const SeatingAllocationInputV1 = ({\n originalSeating,\n}: {\n originalSeating: Seating;\n}) => {\n const { getValues } = useFormContext();\n\n const sale = getValues();\n\n return (\n \n <>\n
    \n \n
    \n\n \n\n }>\n \n \n \n\n } fullHeight>\n \n \n
    \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport clsx from 'clsx';\nimport { useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Link } from 'react-router-dom';\nimport { TableVirtuoso } from 'react-virtuoso';\nimport { NavLink } from 'reactstrap';\nimport { usePurchaseVendorSelector } from 'src/components/Selectors/PurchaseVendorSelector/usePurchaseVendorSelector';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Button, SimpleTable, Stack } from 'src/core/ui';\nimport { UseGetUserInfo, useGetUserInfos } from 'src/hooks/userGetUserInfo';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { AttrLabel } from 'src/modals/common';\nimport { GenericFeatureIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getPurchaseOrderRelativeUrl } from 'src/utils/purchaseUtils';\nimport {\n Feature,\n SaleClient,\n SaleDetails,\n SeatingForAlloc,\n TicketInfoForAllocation,\n} from 'src/WebApiController';\n\nimport * as styles from './SeatingAllocationInput.css';\n\nexport type FlattenedSeatingAllocation = TicketInfoForAllocation &\n Pick;\n\nexport const SeatingSingleTicketAllocationInput = ({\n selectedSeatings,\n setSelectedSeatings,\n}: {\n selectedSeatings: FlattenedSeatingAllocation[];\n setSelectedSeatings: React.Dispatch<\n React.SetStateAction\n >;\n}) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const { getValues } = useFormContext();\n\n const [allPossibleSeatings, setAllPossibleSeatings] = useState(false);\n\n const sale = getValues();\n\n const selectedListingId = useMemo(() => {\n if (selectedSeatings.length) {\n return selectedSeatings[0].listingId;\n }\n\n return null;\n }, [selectedSeatings]);\n\n const hasRemoveListingRestrictionFeature = useUserHasFeature(Feature.AllocateSingleTicketListingRestrictionRemoval);\n\n const ticketsForAllocationQuery = useQuery({\n queryKey: [\n 'SaleClient.getSeatingsForSaleAllocation',\n sale.id,\n allPossibleSeatings,\n ],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n const client = new SaleClient(activeAccountWebClientConfig);\n const data = await client.getSeatingsForSaleAllocation(\n sale.id,\n allPossibleSeatings,\n true\n );\n return data;\n },\n refetchOnWindowFocus: false,\n refetchOnMount: true,\n networkMode: 'offlineFirst',\n meta: {\n persist: false,\n onError: (error: ErrorTypes) => {\n showErrorDialog('SaleClient.getSeatingsForSaleAllocation', error, {\n trackErrorData: {\n saleId: sale.id,\n allPossibleSeatings: allPossibleSeatings,\n },\n });\n },\n },\n });\n\n const possibleSeatings: FlattenedSeatingAllocation[] | undefined =\n useMemo(() => {\n const possibleSeatings = ticketsForAllocationQuery.data?.possibleSeatings;\n if (!possibleSeatings) {\n return possibleSeatings;\n }\n const seatingTickets: FlattenedSeatingAllocation[] = [];\n const ticketIds = new Set();\n\n const possibleSeatingsConsecutive = possibleSeatings.filter(\n (seating) => !seating.nonConsecSeats\n );\n\n const possibleSeatingsNonConsecutive = possibleSeatings.filter(\n (seating) => seating.nonConsecSeats\n );\n\n const filteredPossibleSeating = [\n ...possibleSeatingsConsecutive,\n ...possibleSeatingsNonConsecutive,\n ];\n\n filteredPossibleSeating.forEach((seating) => {\n seating.tktsForAlloc.forEach((ticket) => {\n if (!ticketIds.has(ticket.id)) {\n ticketIds.add(ticket.id);\n seatingTickets.push({\n section: seating.section,\n recAlloc: seating.recAlloc,\n ...ticket,\n });\n }\n });\n });\n\n return seatingTickets;\n }, [ticketsForAllocationQuery.data?.possibleSeatings]);\n\n const handleToggleSeating = (seating: FlattenedSeatingAllocation) => {\n setSelectedSeatings((prevSelected) => {\n const isAlreadySelected = prevSelected.some((s) => s.id === seating.id);\n\n if (isAlreadySelected) {\n const newSelected = prevSelected.filter((s) => s.id !== seating.id);\n return newSelected;\n } else {\n if (prevSelected.length >= sale.qtySold) {\n return prevSelected;\n } else {\n const newSelected = [...prevSelected, seating];\n return newSelected;\n }\n }\n });\n };\n\n const userIds = possibleSeatings\n ?.map((seating) => seating.purchasedBy)\n .filter((id): id is string => id !== null);\n\n const purchasedByUsers = useGetUserInfos(userIds);\n\n if (ticketsForAllocationQuery.isFetching && !possibleSeatings?.length) {\n return ;\n }\n\n return (\n <>\n {possibleSeatings?.length ? (\n \n
    \n (\n \n \n  \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {' '}\n \n \n \n \n \n \n \n \n \n \n \n  \n \n \n )}\n itemContent={(index, seating) => (\n s.id === seating.id)}\n handleSelection={handleToggleSeating}\n purchasedBy={\n seating.purchasedBy\n ? purchasedByUsers?.data\n ? purchasedByUsers.data[seating.purchasedBy]\n : null\n : null\n }\n disabled={\n hasRemoveListingRestrictionFeature ? \n false : (selectedListingId != null && seating.listingId !== selectedListingId)\n }\n />\n )}\n />\n
    \n {ticketsForAllocationQuery.data?.hasMoreAllocations && (\n setAllPossibleSeatings(!allPossibleSeatings)}\n >\n \n \n )}\n
    \n ) : (\n \n \n
    \n \n \n \n
    \n
    \n )}\n \n );\n};\n\nconst PossibleSeatingTableRow = ({\n seating,\n isSelected,\n handleSelection,\n purchasedBy,\n disabled,\n}: {\n seating: FlattenedSeatingAllocation;\n handleSelection: (seating: FlattenedSeatingAllocation) => void;\n isSelected: boolean;\n purchasedBy?: UseGetUserInfo | null;\n disabled?: boolean;\n}) => {\n const recommended = useContent(ContentId.Recommended);\n const deactivatedText = useContent(ContentId.Deactivated);\n const hasDisplayDeactivatedUser = useUserHasFeature(\n Feature.DisplayDeactivatedUser\n );\n const {\n seat,\n section,\n row,\n vendorId,\n vendorName,\n vendorAccEmail,\n vendorAccName,\n recAlloc,\n listingId,\n } = seating;\n\n const { availableVendors } = usePurchaseVendorSelector({});\n return (\n <>\n \n handleSelection(seating)}\n label={null}\n disabled={disabled}\n />\n \n \n {section}\n \n \n {row}\n \n \n {seat}\n \n \n {`#${listingId}`}\n \n \n {`${purchasedBy?.name} ${\n purchasedBy?.isDeactivated && !hasDisplayDeactivatedUser\n ? ` (${deactivatedText})`\n : ''\n }`}\n \n \n {vendorId ? availableVendors[vendorId]?.name : vendorName}\n \n \n {vendorAccEmail || vendorAccName}\n \n \n \n \n \n \n \n );\n};\n","import { SetStateAction } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport * as Tabs from 'src/core/ui/Tabs';\nimport { DetailSection } from 'src/modals/common';\nimport { TicketsSection } from 'src/modals/SaleDetails/components/TicketsSection';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SaleDetails, Seating } from 'src/WebApiController';\n\nimport { SeatingAllocationInput } from './SeatingAllocationInput';\nimport * as styles from './SeatingAllocationInput.css';\nimport {\n FlattenedSeatingAllocation,\n SeatingSingleTicketAllocationInput,\n} from './SeatingSingleTicketAllocationInput';\n\nexport const enum SeatingAllocationInputTab {\n Listings = 'listings',\n Tickets = 'tickets',\n}\n\nexport const SeatingAllocationInputV2 = ({\n selectedSeatings,\n setSelectedSeatings,\n activeTab,\n setActiveTab,\n originalSeating,\n}: {\n selectedSeatings: FlattenedSeatingAllocation[];\n setSelectedSeatings: React.Dispatch<\n React.SetStateAction\n >;\n activeTab: SeatingAllocationInputTab;\n setActiveTab: React.Dispatch>;\n originalSeating: Seating;\n}) => {\n const { getValues } = useFormContext();\n\n const sale = getValues();\n\n return (\n \n
    \n \n
    \n\n \n\n }>\n \n \n } fullHeight>\n {\n setActiveTab(value as SeatingAllocationInputTab);\n setSelectedSeatings([]);\n }}\n className={styles.tabsSection}\n >\n {/* Do not remove this empty div or the tab-list will display a weird scroll - this is due to the virtuoso content body */}\n
    \n \n \n \n \n \n \n \n \n
    \n \n \n \n \n \n \n \n
    \n
    \n );\n};\n","import { maxBy } from 'lodash';\nimport { useCallback, useContext, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { ConfirmButton } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useEventItemLoadingDisplay } from 'src/hooks/useEventItemLoadingDisplay';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { CancellableFormFooter } from 'src/modals/common';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport {\n SeatingAllocationInputTab,\n SeatingAllocationInputV1,\n SeatingAllocationInputV2,\n} from 'src/modals/ConfirmSale/SeatingAllocationInput';\nimport { ModalBody, ModalFooter, ModalProps } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { getPosManagedMarketplaceSaleInputFromSale } from 'src/utils/saleUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ApiException,\n Feature,\n Marketplace,\n PointOfSaleSaleStatus,\n PosUiActionResult,\n SaleActionType,\n SaleClient,\n SaleDetails,\n Seating,\n} from 'src/WebApiController';\n\nimport { Summary } from '../common/Summary';\nimport {\n ModalBodyDataContainer,\n ModalBodyHeaderContainer,\n} from '../Modal/Modal.styled';\nimport { FlattenedSeatingAllocation } from './SeatingAllocationInput/SeatingSingleTicketAllocationInput';\n\nexport type ConfirmSaleProps = {\n cancelTo?: ModalProps;\n action:\n | SaleActionType.Confirm\n | SaleActionType.Allocate\n | SaleActionType.ConfirmAllocation;\n};\n\nexport const ConfirmSaleModal = (props: ConfirmSaleProps) => {\n const { loadingState } = useEventItemLoadingDisplay(\n FormatContentId.LoadingSaleId,\n FormatContentId.SearchingForSaleId,\n FormatContentId.CouldNotFindSaleId\n );\n\n return loadingState ? loadingState : ;\n};\n\nconst ConfirmSaleModalContent = ({ cancelTo, action }: ConfirmSaleProps) => {\n const {\n event,\n posEntity: sale,\n setActivePosEntity,\n } = useActivePosEntityContext();\n const { showErrorDialog, genericError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { setModal, closeModal } = useContext(ModalContext);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const hasAllocatedSingleTicketFeature = useUserHasFeature(\n Feature.AllocateSingleTickets\n );\n\n const [activeTab, setActiveTab] = useState(\n SeatingAllocationInputTab.Listings\n );\n\n const [showSectionRowChangeWarning, setShowSectionRowChangeWarning] =\n useState(false);\n\n const methods = useForm({\n defaultValues: sale!,\n });\n\n const { isDirty } = methods.formState;\n const seating = methods.watch('seating');\n\n const [selectedSeatings, setSelectedSeatings] = useState<\n FlattenedSeatingAllocation[]\n >([]);\n\n const createSeatingFromSelectedTickets = (\n selectedTickets: FlattenedSeatingAllocation[]\n ): Seating => {\n // Find the most frequent section and row\n const sectionCounts: Record = {};\n const rowCounts: Record = {};\n\n selectedTickets.forEach((ticket) => {\n const { section, row } = ticket;\n sectionCounts[section] = (sectionCounts[section] || 0) + 1;\n rowCounts[row || ''] = (rowCounts[row || ''] || 0) + 1;\n });\n\n const mostFrequentSection = maxBy(\n Object.entries(sectionCounts),\n ([_, value]) => value\n )?.[0];\n\n const mostFrequentRow = maxBy(\n Object.entries(rowCounts),\n ([_, value]) => value\n )?.[0];\n\n // SeatFr & SeatTo sort by listingOrd or seat text\n let sortedTickets: FlattenedSeatingAllocation[] = [];\n\n const allHaveListingOrd = selectedTickets.every(\n (ticket) => ticket.listingOrd != null\n );\n\n if (allHaveListingOrd) {\n sortedTickets = selectedTickets.toSorted(\n (a, b) => (a.listingOrd || 0) - (b.listingOrd || 0)\n );\n } else {\n sortedTickets = selectedTickets.toSorted((a, b) =>\n (a.seat || '').localeCompare(b.seat || '', undefined, {\n numeric: true,\n })\n );\n }\n\n const seatFr = sortedTickets[0]?.seat || null;\n const seatTo = sortedTickets[sortedTickets.length - 1]?.seat || null;\n\n // Collect ticketIds & listingIds\n const ticketIds = selectedTickets.map((ticket) => ticket.id);\n const listingIds = selectedTickets.reduce((ids, ticket) => {\n if (ticket.listingId != null) {\n ids.push(ticket.listingId);\n }\n return ids;\n }, []);\n\n const seating: Seating = {\n section: mostFrequentSection || '',\n sectionId: null,\n row: mostFrequentRow || null,\n rowId: null,\n seatFr,\n seatTo,\n ticketIds,\n listingIds,\n };\n\n return seating;\n };\n\n const onSubmit = useCallback(\n async (saleForm: SaleDetails, skipAllocation?: boolean) => {\n // If this is called, there are no form errors (else onSubmit is never called)\n if (sale) {\n if (\n !showSectionRowChangeWarning &&\n (saleForm.seating.section !== sale.seating.section ||\n saleForm.seating.row !== sale.seating.row)\n ) {\n setShowSectionRowChangeWarning(true);\n return;\n }\n setIsSubmitting(true);\n\n tryInvokeApi(\n async () => {\n let result: PosUiActionResult;\n const client = new SaleClient(activeAccountWebClientConfig);\n if (\n sale.mkp === Marketplace.Offline &&\n (sale.status === PointOfSaleSaleStatus.Hold ||\n sale.status === PointOfSaleSaleStatus.CancelledHold ||\n sale.status === PointOfSaleSaleStatus.PendingRejection ||\n sale.status === PointOfSaleSaleStatus.Rejected)\n ) {\n // If it's offline sale and it's currently on hold or cancelled hold,\n result = await client.mergePosManagedMarketplaceSale({\n ...getPosManagedMarketplaceSaleInputFromSale(sale, event!),\n saleStatus: posChangedField(\n PointOfSaleSaleStatus.PendingConfirmation\n ),\n });\n\n if (!isSuccess(result)) {\n showErrorDialog(\n 'SaleClient.mergePosManagedMarketplaceSale',\n {\n message: result.message ?? genericError,\n status: result.status!,\n } as ApiException,\n {\n onDismissError: () => cancelTo && setModal(cancelTo),\n trackErrorData: {\n item1: saleForm.id,\n item2: saleForm.seating,\n },\n }\n );\n return;\n }\n }\n\n const skipAllocationValidation =\n activeTab === SeatingAllocationInputTab.Tickets;\n\n result = await client.confirmAllocationSale(\n saleForm.id,\n skipAllocation ? undefined : saleForm.seating,\n skipAllocationValidation\n );\n\n if (!isSuccess(result)) {\n showErrorDialog(\n 'SaleClient.confirmSale',\n {\n message: result.message ?? genericError,\n status: result.status!,\n } as ApiException,\n {\n onDismissError: () => cancelTo && setModal(cancelTo),\n trackErrorData: {\n item1: saleForm.id,\n item2: saleForm.seating,\n },\n }\n );\n } else {\n // Refresh the active data so the SaleDetail dialog and table will have the new content\n await setActivePosEntity(saleForm!.id, saleForm!.idOnMkp, true);\n if (cancelTo) {\n setModal(cancelTo);\n } else {\n closeModal(true);\n }\n }\n },\n (error) => {\n showErrorDialog('SaleClient.confirmSale', error, {\n trackErrorData: {\n saleId: saleForm.id,\n seation: saleForm.seating,\n },\n });\n },\n () => setIsSubmitting(false)\n );\n }\n\n return false;\n },\n [\n activeAccountWebClientConfig,\n activeTab,\n cancelTo,\n closeModal,\n event,\n genericError,\n sale,\n setActivePosEntity,\n setModal,\n showErrorDialog,\n showSectionRowChangeWarning,\n ]\n );\n\n const updateSeatingValueFromSingleTicketSelection = useCallback(() => {\n if (\n !hasAllocatedSingleTicketFeature ||\n activeTab === SeatingAllocationInputTab.Listings\n ) {\n return;\n }\n const seating = createSeatingFromSelectedTickets(selectedSeatings);\n methods.setValue('seating', seating); // Update form state\n }, [activeTab, hasAllocatedSingleTicketFeature, methods, selectedSeatings]);\n\n const contentId =\n action === SaleActionType.Confirm\n ? ContentId.ConfirmSale\n : action === SaleActionType.ConfirmAllocation\n ? ContentId.ConfirmAllocation\n : ContentId.AllocateTickets;\n\n return (\n \n \n } />\n \n\n \n \n
    \n \n \n {isSubmitting ? (\n \n ) : showSectionRowChangeWarning ? (\n \n ) : hasAllocatedSingleTicketFeature ? (\n \n ) : (\n \n )}\n \n \n\n \n \n {showSectionRowChangeWarning && (\n setShowSectionRowChangeWarning(false)}\n disabled={isSubmitting}\n textContentId={ContentId.Back}\n />\n )}\n {action === SaleActionType.Confirm &&\n sale?.isSeatSaver &&\n !seating?.ticketIds?.length && (\n onSubmit(f, true))}\n disabled={isSubmitting}\n variant=\"outline\"\n textContentId={ContentId.ConfirmWithoutAllocation}\n />\n )}\n {\n updateSeatingValueFromSingleTicketSelection();\n methods.handleSubmit((f) => onSubmit(f))();\n }}\n disabled={\n isSubmitting ||\n (hasAllocatedSingleTicketFeature &&\n activeTab === SeatingAllocationInputTab.Tickets\n ? selectedSeatings.length < (sale?.qtySold || 0)\n : !seating?.ticketIds?.length)\n }\n textContentId={\n showSectionRowChangeWarning\n ? ContentId.Yes\n : ContentId.ConfirmAllocation\n }\n />\n \n \n \n );\n};\n\nconst SeatingAllocationWarning = () => {\n return (\n
    \n
    \n \n
    \n }\n />\n
    \n );\n};\n","import { ComponentProps, useCallback, useContext } from 'react';\nimport { ConfirmButton } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { vars } from 'src/core/themes';\nimport { ButtonProps } from 'src/core/ui';\nimport { ConfirmSaleModal } from 'src/modals/ConfirmSale';\nimport { IconsFill, SearchOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n PointOfSaleSaleStatus,\n SaleActionType,\n SaleDetails,\n} from 'src/WebApiController';\n\nexport const LaunchConfirmSale = ({\n action,\n saleId,\n marketplaceSaleId,\n saleStatus,\n cancelTo,\n variant,\n ...buttonProps\n}: {\n action:\n | SaleActionType.Confirm\n | SaleActionType.Allocate\n | SaleActionType.ConfirmAllocation;\n saleId: number;\n marketplaceSaleId?: string | null;\n saleStatus: PointOfSaleSaleStatus;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n disabled?: boolean;\n} & ComponentProps) => {\n const { setModal } = useContext(ModalContext);\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const confirmSale = useCallback(() => {\n setModal({\n children: ,\n clickOutsideToClose: true,\n size: 'slide-in',\n deepLinkValue: saleId,\n trackViewEntityType: ActionOutboxEntityType.Sale,\n });\n }, [setModal, cancelTo, action, saleId]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setActivePosEntity(saleId, marketplaceSaleId);\n confirmSale();\n },\n [confirmSale, marketplaceSaleId, setActivePosEntity, saleId]\n );\n\n const contentId =\n action === SaleActionType.Confirm\n ? saleStatus === PointOfSaleSaleStatus.CancelledHold\n ? ContentId.UndoCancel\n : ContentId.ConfirmSale\n : action === SaleActionType.ConfirmAllocation\n ? ContentId.ConfirmAllocation\n : ContentId.AllocateTickets;\n\n return (\n \n ) : undefined\n }\n />\n );\n};\n","import { ComponentProps } from 'react';\nimport { vars } from 'src/core/themes';\nimport { IconsFill, ResetIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { ButtonWithIcon } from './ButtonWithIcon';\n\nexport const DeallocateButton = ({\n textContentId,\n iconOnlyMode,\n variant,\n icon,\n ...props\n}: ComponentProps) => {\n return (\n \n )\n }\n iconOnlyMode={iconOnlyMode}\n variant={variant}\n textContentId={textContentId || ContentId.DeallocateSale}\n />\n );\n};\n","import React, { useCallback, useState } from 'react';\nimport { DeallocateButton } from 'src/components/Buttons/DeallocateButton';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { vars } from 'src/core/themes';\nimport { ButtonProps, Stack } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { ErrorOutlineIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { getPosManagedMarketplaceSaleInputFromSale } from 'src/utils/saleUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n ActivityLogClient,\n ApiException,\n Marketplace,\n Permission,\n PointOfSaleSaleStatus,\n SaleActionType,\n SaleClient,\n SaleDetails,\n} from 'src/WebApiController';\n\nimport * as styles from './LaunchDeallocateSale.css';\n\nexport const LaunchDeallocateSale = ({\n action,\n saleId,\n marketplaceSaleId,\n marketplace,\n saleStatus,\n variant,\n iconOnlyMode,\n disabled,\n}: {\n action: SaleActionType.Deallocate | SaleActionType.RejectAllocation;\n saleId: number;\n marketplaceSaleId?: string | null;\n marketplace?: Marketplace | null;\n saleStatus: PointOfSaleSaleStatus;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n disabled?: boolean;\n}) => {\n const [isLoading, setIsLoading] = useState(false);\n const { showErrorDialog, genericError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { event, posEntity, setActivePosEntity } =\n useActivePosEntityContext();\n\n const hasPermission = useUserHasAnyOfPermissions(\n Permission.SellerAccount_Admin\n );\n\n const { launchDialog, closeDialog, dialogProps } = useBasicDialog();\n const [shouldAdminHold, setShouldAdminHold] = useState(false);\n const onToggleAdminHold = useCallback(\n () => setShouldAdminHold((prev) => !prev),\n []\n );\n\n const deallocateSale = useCallback(() => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const client = new SaleClient(activeAccountWebClientConfig);\n\n if (\n marketplace === Marketplace.Offline &&\n saleStatus === PointOfSaleSaleStatus.Fulfilled\n ) {\n // If the Offline Sale is set to be Fulfilled - it can't just be deallocated\n // We need to put it back to PendingFulfillment first then the Deallocation will work\n let saleDetails = posEntity;\n if (saleDetails == null) {\n saleDetails = await client.getSaleBySaleId(saleId);\n }\n const offlineSaleUpdate = getPosManagedMarketplaceSaleInputFromSale(\n saleDetails,\n event!\n );\n\n offlineSaleUpdate.saleStatus = posChangedField(\n PointOfSaleSaleStatus.PendingFulfillment\n );\n await client.mergePosManagedMarketplaceSale(offlineSaleUpdate);\n }\n\n const result = await client.deallocateSale(saleId, shouldAdminHold);\n if (!isSuccess(result)) {\n showErrorDialog(\n 'SaleClient.deallocateSale',\n {\n message: result.message ?? genericError,\n status: result.status!,\n } as ApiException,\n {\n trackErrorData: { saleId },\n }\n );\n } else {\n await setActivePosEntity(saleId, marketplaceSaleId, true);\n }\n },\n (error) => {\n showErrorDialog('SaleClient.deallocateSale', error, {\n trackErrorData: { saleId },\n });\n },\n () => {\n setIsLoading(false);\n closeDialog();\n }\n );\n }, [\n activeAccountWebClientConfig,\n closeDialog,\n event,\n genericError,\n marketplace,\n marketplaceSaleId,\n posEntity,\n saleId,\n saleStatus,\n setActivePosEntity,\n shouldAdminHold,\n showErrorDialog,\n ]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n new ActivityLogClient(activeAccountWebClientConfig).trackEntityView(\n saleId,\n ActionOutboxEntityType.Sale\n );\n launchDialog();\n },\n [saleId, launchDialog, activeAccountWebClientConfig]\n );\n\n const contentId =\n action === SaleActionType.RejectAllocation\n ? ContentId.RejectAllocation\n : ContentId.DeallocateSale;\n\n return (\n
    \n \n ) : undefined\n }\n />\n }\n onOkay={deallocateSale}\n bodyText={\n \n \n {hasPermission && action !== SaleActionType.RejectAllocation && (\n }\n />\n )}\n \n }\n />\n
    \n );\n};\n","import { useCallback, useState } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { vars } from 'src/core/themes';\nimport { ButtonProps } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { DownloadIcon, ProcessingIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { downloadFileFromBlob } from 'src/utils/fileUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { SaleClient } from 'src/WebApiController';\n\nexport const LaunchDownloadUserDocuments = ({\n saleId,\n variant,\n iconOnlyMode,\n disabled,\n}: {\n saleId: number;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n disabled?: boolean;\n}) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const onDownload = useCallback(async () => {\n setIsLoading(true);\n return await tryInvokeApi(\n async () => {\n const result = await new SaleClient(\n activeAccountWebClientConfig\n ).downloadMergedUserDocumentsPdf(saleId);\n if (result.data) {\n downloadFileFromBlob(result.fileName ?? 'tickets.pdf', result.data);\n }\n },\n (error) => {\n showErrorDialog('ListingClient.downloadMergedUserDocumentsPdf', error);\n },\n () => setIsLoading(false)\n );\n }, [activeAccountWebClientConfig, saleId, showErrorDialog]);\n\n const onClickHandler = useCallback(\n (e: React.MouseEvent) => {\n onDownload();\n },\n [onDownload]\n );\n\n const iconFill =\n iconOnlyMode || (variant && variant !== 'regular')\n ? vars.color.textBrand\n : vars.color.textInverted;\n\n return (\n \n \n \n ) : (\n \n )\n }\n />\n );\n};\n","import { useQuery, UseQueryResult } from '@tanstack/react-query';\nimport { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PosSelectProps } from 'src/core/POS/PosSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { BuyerInfo, SaleClient } from 'src/WebApiController';\n\nexport type UseBuyerSelectorOptions = {\n disabled?: boolean;\n additionalOptions?: Record;\n additionalOptionsPosition?: 'top' | 'bottom';\n placeholderText?: string | ContentId;\n};\n\nexport const useBuyerSelector = ({\n disabled,\n additionalOptions,\n additionalOptionsPosition = 'bottom',\n placeholderText,\n}: UseBuyerSelectorOptions): {\n query: UseQueryResult;\n posSelectProps: Pick<\n PosSelectProps,\n 'placeholderText' | 'valueOptionsContent'\n >;\n} => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n !disabled && activeAccountWebClientConfig.activeAccountId != null;\n const query = useQuery({\n queryKey: [\n 'getAllAvailableBuyers',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n return tryInvokeApi(\n () => {\n return new SaleClient(\n activeAccountWebClientConfig\n ).getAllAvailableBuyers();\n },\n (error) => {\n trackError('SaleClient.getAllAvailableBuyers', error);\n }\n );\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n });\n\n const availableBuyers = useMemo(() => {\n const dataSorted = query.data?.toSorted((a: BuyerInfo, b: BuyerInfo) =>\n a.email.localeCompare(b.email)\n );\n\n const results = dataSorted?.reduce(\n (r, cur) => {\n r[cur.email] = `${cur.email}${cur.name ? ` (${cur.name})` : ''}`;\n return r;\n },\n (additionalOptions && additionalOptionsPosition === 'top'\n ? additionalOptions\n : {}) as Record\n );\n\n return {\n ...(additionalOptionsPosition === 'top' ? additionalOptions : {}),\n ...(results ?? {}),\n ...(additionalOptionsPosition === 'bottom' ? additionalOptions : {}),\n };\n }, [query.data, additionalOptions, additionalOptionsPosition]);\n\n return {\n query,\n posSelectProps: {\n placeholderText: placeholderText ?? ContentId.ChooseBuyer,\n valueOptionsContent: availableBuyers,\n },\n };\n};\n","import { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useBuyerSelector } from 'src/components/Selectors/BuyerSelector/useBuyerSelector';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { DetailGroup, DetailSection, SectionContent } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PosManagedMarketplaceSaleInput } from 'src/WebApiController';\n\ntype MarketplaceSaleInputBuyer = Pick<\n PosManagedMarketplaceSaleInput,\n 'marketplaceSaleId' | 'buyerEmail' | 'buyerName' | 'buyerPhone' | 'saleId'\n>;\n\nexport const BuyerSection = ({ disabled }: { disabled?: boolean }) => {\n const requiredMsg = useContent(ContentId.Required);\n\n const { register, formState, setValue, getValues, clearErrors } =\n useFormContext();\n\n const { buyerEmail } = getValues();\n const { query, posSelectProps } = useBuyerSelector({\n disabled,\n placeholderText: ContentId.AddNewBuyer,\n });\n const [selectedBuyer, setSelectedBuyer] = useState(\n buyerEmail?.value ?? ''\n );\n\n const isEdit = formState?.defaultValues?.saleId != null;\n const buyerEmailError = formState.errors.buyerEmail?.message;\n const orderIdError = formState.errors.marketplaceSaleId?.message;\n return (\n }>\n \n \n }\n errors={orderIdError}\n >\n \n \n }>\n {\n setSelectedBuyer(newSelection);\n if (newSelection !== 'AddNewBuyer') {\n clearErrors('buyerEmail');\n setValue('buyerEmail', posChangedField(newSelection));\n const buyer = query.data?.find(\n (b) => b.email === newSelection\n );\n if (buyer) {\n setValue('buyerName', posChangedField(buyer.name));\n setValue('buyerPhone', posChangedField(buyer.phone));\n }\n }\n }}\n />\n \n }\n errors={buyerEmailError}\n >\n {\n const buyer = query.data?.find((b) => b.email === value);\n if (!buyer) {\n setSelectedBuyer('');\n } else {\n setValue('buyerEmail', posChangedField(value));\n setValue('buyerName', posChangedField(buyer.name));\n setValue('buyerPhone', posChangedField(buyer.phone));\n setSelectedBuyer(value);\n }\n },\n })}\n />\n \n }>\n {\n setValue('buyerName', posChangedField(value));\n },\n })}\n />\n \n }>\n {\n setValue('buyerPhone', posChangedField(value));\n },\n })}\n />\n \n \n \n \n );\n};\n","import { ChangeEvent, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { CurrencyFilterSelector } from 'src/components/Selectors/CurrencyFilterSelector';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { DatePickerInput } from 'src/core/POS/DateSelector';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosTextArea } from 'src/core/POS/PosTextArea';\nimport { getTextFieldState } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { DetailSection, SectionContent } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n SALE_PAYMENT_STATE_TO_CID,\n SALES_STATUS_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport {\n PointOfSaleSaleStatus,\n PosManagedMarketplaceSaleInput,\n} from 'src/WebApiController';\n\nconst statusAllowedChangeable = [\n PointOfSaleSaleStatus.PendingFulfillment,\n PointOfSaleSaleStatus.ProcessingFulfillment,\n PointOfSaleSaleStatus.Fulfilled,\n PointOfSaleSaleStatus.FulfillmentFailed,\n];\n\ntype MarketplaceSaleInputMarketplaceInfo = Pick<\n PosManagedMarketplaceSaleInput,\n | 'saleId'\n | 'saleDate'\n | 'saleStatus'\n | 'paymentState'\n | 'inHandDate'\n | 'totalNetProceeds'\n | 'internalNotes'\n | 'currencyCode'\n>;\n\nexport const MarketplaceSaleInfoSection = ({\n disabled,\n}: {\n disabled?: boolean;\n}) => {\n const { getValues, watch, formState, setValue, clearErrors } =\n useFormContext();\n const {\n saleId,\n saleDate,\n saleStatus,\n paymentState,\n inHandDate,\n totalNetProceeds,\n internalNotes,\n } = getValues();\n const currencyCode = watch('currencyCode');\n\n const saleDateError = formState.errors.saleDate?.message;\n const currencyCodeError = formState.errors.currencyCode?.message;\n const inHandDateError = formState.errors.inHandDate?.message;\n const totalNetProceedsError = formState.errors.totalNetProceeds?.message;\n\n const { getUiCurrency } = useLocalizationContext();\n const uiCurrency = useMemo(\n () => getUiCurrency(currencyCode?.value),\n [getUiCurrency, currencyCode]\n );\n\n const isMobile = useMatchMedia('mobile');\n\n const allowChangingSaleStatus =\n saleStatus &&\n statusAllowedChangeable.includes(\n saleStatus?.value ?? PointOfSaleSaleStatus.PendingAllocation\n );\n\n const allowedSaleStatus = useMemo(() => {\n if (allowChangingSaleStatus) {\n const saleStatusOptions: Record = {};\n statusAllowedChangeable.forEach((s) => {\n saleStatusOptions[s] = SALES_STATUS_TO_CID[s];\n });\n\n return saleStatusOptions;\n }\n\n return {};\n }, [allowChangingSaleStatus]);\n\n return (\n }>\n \n }\n errors={saleDateError}\n >\n {\n if (date) {\n clearErrors('saleDate');\n const dateStr = date.toISOString();\n if (dateStr !== saleDate?.value) {\n setValue('saleDate', posChangedField(dateStr));\n }\n }\n }}\n locale={getLocaleFromLanguageOrCurrent()}\n />\n \n }\n errors={inHandDateError}\n >\n {\n if (date) {\n clearErrors('inHandDate');\n const dateStr = date.toISOString();\n if (dateStr !== inHandDate?.value) {\n setValue('inHandDate', posChangedField(dateStr));\n }\n }\n }}\n locale={getLocaleFromLanguageOrCurrent()}\n />\n \n
    \n }\n errors={currencyCodeError}\n style={{ width: 'auto' }}\n >\n {\n if (\n newCurrencyCode &&\n newCurrencyCode !== currencyCode?.value\n ) {\n setValue('currencyCode', posChangedField(newCurrencyCode));\n }\n }}\n />\n \n }\n >\n ) => {\n const v = parseFloat(e.target.value) || 0;\n if (v >= 0 && v <= Number.MAX_VALUE) {\n clearErrors('totalNetProceeds');\n setValue('totalNetProceeds', posChangedField(v));\n }\n }}\n />\n \n
    \n {saleId && allowChangingSaleStatus && (\n }>\n {\n if (newStatus && newStatus !== saleStatus?.value) {\n setValue('saleStatus', posChangedField(newStatus));\n }\n }}\n />\n \n )}\n {saleId && (\n }>\n {\n if (newState && newState !== paymentState?.value) {\n setValue('paymentState', posChangedField(newState));\n }\n }}\n />\n \n )}\n }>\n {\n const newNotes = (e.target as HTMLInputElement).value;\n if (newNotes && newNotes !== internalNotes?.value) {\n setValue('internalNotes', posChangedField(newNotes));\n }\n }}\n onBlur={() => {\n const newNotes = internalNotes?.value?.trim();\n if (newNotes && newNotes !== internalNotes?.value) {\n setValue('internalNotes', posChangedField(newNotes));\n }\n }}\n />\n \n \n
    \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useGetEventMapConfig } from 'src/contexts/EventMapContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect, PosSelect } from 'src/core/POS/PosSelect';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { useTicketTypes } from 'src/hooks/api/useTicketTypes';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { DetailGroup, DetailSection, SectionContent } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { TICKET_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { getConsecutiveSeatingsForQuantity } from 'src/utils/saleUtils';\nimport { isSectionTypeGeneralAdmission } from 'src/utils/ticketUtils';\nimport {\n DeliveryType,\n Event,\n ListingDetails,\n PosManagedMarketplaceSaleInput,\n Ticket,\n TicketType,\n} from 'src/WebApiController';\n\ntype MarketplaceSaleInputTicket = Pick<\n PosManagedMarketplaceSaleInput,\n 'section' | 'row' | 'seatFrom' | 'seatTo' | 'ticketType' | 'quantitySold'\n>;\n\nexport const TicketSection = ({\n maxQuantity,\n deliveryType,\n disabled,\n tickets,\n event,\n listing,\n isEditingExisting,\n}: {\n maxQuantity?: number;\n deliveryType?: DeliveryType;\n disabled?: boolean;\n tickets?: Ticket[];\n event?: Event | null;\n listing?: ListingDetails;\n isEditingExisting?: boolean;\n}) => {\n const venueMapQuery = useGetEventMapConfig(\n event?.viagId,\n event?.viagId == null || listing?.sectionType != null\n );\n\n const requiredMsg = useContent(ContentId.Required);\n\n const { watch, getValues, register, formState, setValue, clearErrors } =\n useFormContext();\n const { section, row, seatFrom, seatTo, ticketType } = getValues();\n\n const quantitySold = watch('quantitySold');\n const sectionError = formState.errors.section?.message;\n const quantitySoldError = formState.errors.quantitySold?.message;\n const rowError = formState.errors.row?.message;\n const seatFromError = formState.errors.seatFrom?.message;\n const seatToError = formState.errors.seatTo?.message;\n const isMobile = useMatchMedia('mobile');\n\n const { ticketTypes } = useTicketTypes(deliveryType);\n\n const deliveryTypeToTicketTypesMap = useMemo(() => {\n const ticketTypeOptions = { ...TICKET_TYPE_TO_CID };\n if (deliveryType) {\n if (ticketTypes?.length) {\n Object.keys(ticketTypeOptions).forEach((k) => {\n const tt = k as TicketType;\n if (!ticketTypes.includes(tt)) {\n delete ticketTypeOptions[tt];\n }\n });\n\n // if ticket type is null or not exists in the options (because feature not allow)\n // default to 1st available ones\n if (\n ticketType?.value == null ||\n ticketTypeOptions[ticketType?.value] == null\n ) {\n setValue('ticketType', posChangedField(ticketTypes[0]));\n }\n }\n }\n\n return ticketTypeOptions;\n }, [deliveryType, setValue, ticketType, ticketTypes]);\n\n const [seatFromToOptions, setSeatFromToOptions] = useState<\n Record | undefined\n >();\n const [seatFromOptions, setSeatFromOptions] = useState<\n Record\n >({});\n\n const setSeatTo = useCallback(\n (quantitySold: number, seatFr: string, seatToOrdinal: number) => {\n if (quantitySold < 2) {\n setValue('seatTo', posChangedField(seatFr));\n } else {\n const t = tickets!.find((t) => t.lstOrd === seatToOrdinal);\n if (t) setValue('seatTo', posChangedField(t.seat));\n }\n },\n [setValue, tickets]\n );\n\n const canAllocateToNonConsecutiveSeats = useMemo(() => {\n let isSeatingGA = false;\n\n if (listing?.sectionType != null) {\n isSeatingGA = isSectionTypeGeneralAdmission(listing.sectionType);\n } else {\n const sections = venueMapQuery.data?.sections;\n if (sections != null && section != null) {\n isSeatingGA = isSectionTypeGeneralAdmission(\n sections.find(\n (s) =>\n s.name.toLocaleLowerCase() === section?.value?.toLocaleLowerCase()\n )?.sectionType\n );\n }\n }\n\n return isSeatingGA;\n }, [listing?.sectionType, section, venueMapQuery.data?.sections]);\n\n useEffect(() => {\n const result = getConsecutiveSeatingsForQuantity(\n tickets,\n quantitySold?.value,\n canAllocateToNonConsecutiveSeats\n );\n if (!result || listing?.isSeatSaver) return;\n\n if (result.maxAvailableQuantity < (quantitySold?.value ?? 0)) {\n // Current quantity sold not valid, so set new max possible quantity sold and quit\n // the next cycle of the use effect will recalculate the options\n setValue('quantitySold', posChangedField(result.maxAvailableQuantity));\n return;\n }\n\n const newSeatFromToOptions = result.result;\n\n if (\n tickets?.length &&\n newSeatFromToOptions &&\n !isEqual(newSeatFromToOptions, seatFromToOptions)\n ) {\n setSeatFromToOptions(newSeatFromToOptions);\n const seatFromOrdinals = Object.keys(newSeatFromToOptions);\n const newSeatFromOptions = seatFromOrdinals.reduce(\n (r, c) => {\n const t = tickets!.find((t) => t.lstOrd === parseInt(c));\n r[(t!.lstOrd ?? t!.ord).toString()] = t!.seat;\n return r;\n },\n {} as Record\n );\n\n if (!seatFrom?.value) {\n const seatFr = Object.values(newSeatFromOptions)[0];\n setValue('seatFrom', posChangedField(seatFr));\n\n const seatToOrdinal =\n newSeatFromToOptions![parseInt(seatFromOrdinals[0])];\n setSeatTo(quantitySold!.value!, seatFr, seatToOrdinal);\n } else {\n // Either the seatFr is no longer valid due to quantity change, or seatTo, need to revalidate both\n const seatFromTicket = tickets!.find((t) => t.seat === seatFrom.value);\n\n let seatFr = seatFromTicket!.seat;\n let seatFromOrdinal = seatFromTicket!.lstOrd ?? seatFromTicket!.ord;\n if (!seatFromOrdinals.includes(seatFromOrdinal.toString())) {\n seatFr = Object.values(newSeatFromOptions)[0];\n setValue('seatFrom', posChangedField(seatFr));\n seatFromOrdinal = parseInt(seatFromOrdinals[0]);\n }\n\n const seatToOrdinal = newSeatFromToOptions![seatFromOrdinal];\n setSeatTo(quantitySold!.value!, seatFr, seatToOrdinal);\n }\n\n setSeatFromOptions(newSeatFromOptions);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [quantitySold]);\n\n const ticketFrom = useMemo(() => {\n return tickets?.find((t) => t.seat === seatFrom?.value);\n }, [tickets, seatFrom?.value]);\n\n return (\n }>\n \n \n }\n >\n {\n const v = parseInt(e.target.value);\n if (v > 0 && v <= maxQuantity!) {\n clearErrors('quantitySold');\n\n if (v !== quantitySold?.value) {\n setValue('quantitySold', posChangedField(v));\n }\n } else {\n setValue('quantitySold', null);\n }\n }}\n />\n \n }\n >\n {\n if (t && t !== ticketType?.value) {\n setValue('ticketType', posChangedField(t));\n }\n }}\n />\n \n \n \n }\n >\n {\n setValue('section', posChangedField(value));\n },\n })}\n />\n \n }\n errors={rowError}\n >\n {\n setValue('row', posChangedField(value));\n },\n })}\n />\n \n }\n errors={seatFromError}\n >\n {\n const ord = parseInt(newSeatOrdinal);\n if (ord >= 0) {\n const fromTick = tickets!.find((t) => t.lstOrd === ord);\n const toTick = tickets!.find(\n (t) => t.lstOrd === seatFromToOptions![ord]\n );\n\n setValue('seatFrom', posChangedField(fromTick!.seat));\n setValue('seatTo', posChangedField(toTick!.seat));\n }\n }}\n />\n \n }\n errors={seatToError}\n >\n {\n setValue('seatTo', posChangedField(value));\n },\n })}\n />\n \n \n \n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { selectDistinctListingIds } from 'src/utils/ticketUtils';\nimport {\n Event,\n ListingClient,\n ListingDetails,\n SaleDetails,\n} from 'src/WebApiController';\n\nimport { ModalBodyDataContainer } from '../Modal/Modal.styled';\nimport { BuyerSection } from './components/BuyerSection';\nimport { MarketplaceSaleInfoSection } from './components/MarketplaceSaleInfoSection';\nimport { TicketSection } from './components/TicketSection';\n\nexport const ManagedMarketplaceSaleBody = ({\n listing,\n sale,\n disabled,\n event,\n}: {\n listing?: ListingDetails;\n sale?: SaleDetails;\n disabled?: boolean;\n event?: Event | null;\n}) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const saleLinkedListingIds = useMemo(\n () =>\n sale &&\n (selectDistinctListingIds(sale?.tickets).filter(\n (l) => l != null\n ) as number[]),\n [sale]\n );\n\n const shouldQuery = Boolean(\n saleLinkedListingIds != null &&\n activeAccountWebClientConfig != null &&\n saleLinkedListingIds.length > 0\n );\n\n const saleLinkedListingQuantityQuery = useQuery({\n queryKey: [\n 'ListingClient.getListingAvailableQuantitiesByListingIds',\n saleLinkedListingIds,\n activeAccountWebClientConfig,\n ],\n queryFn: () => {\n if (!shouldQuery) return null;\n\n return new ListingClient(\n activeAccountWebClientConfig\n ).getListingAvailableQuantitiesByListingIds(saleLinkedListingIds!);\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n });\n\n const linkedListingAvailableQuantities =\n saleLinkedListingQuantityQuery.data ?? 0;\n\n const maxQuantity = useMemo(() => {\n if (listing) {\n return listing.availQty;\n }\n\n return sale ? sale.ticketCnt + linkedListingAvailableQuantities : undefined;\n }, [linkedListingAvailableQuantities, listing, sale]);\n\n return (\n \n \n \n {saleLinkedListingQuantityQuery.isFetching ? (\n \n ) : (\n 0}\n />\n )}\n \n );\n};\n","import {\n ComponentProps,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useNavigate } from 'react-router-dom';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useEventItemLoadingDisplay } from 'src/hooks/useEventItemLoadingDisplay';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { hasChanged, posChangedField } from 'src/utils/posFieldUtils';\nimport {\n getPosManagedMarketplaceSaleInputFromListing,\n getPosManagedMarketplaceSaleInputFromSale,\n getSaleDetailsRelativeUrl,\n} from 'src/utils/saleUtils';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n ApiException,\n Event,\n ListingDetails,\n PosManagedMarketplaceSaleInput,\n SaleClient,\n SaleDetails,\n} from 'src/WebApiController';\n\nimport { CancellableFormFooter } from '../common';\nimport { CancellableFormHeader } from '../common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from '../common/EventEntityHeader';\nimport { modalDetails } from '../common/Modals.css';\nimport { Summary } from '../common/Summary';\nimport { ModalProps } from '../Modal';\nimport {\n ModalBody,\n ModalBodyHeaderContainer,\n ModalFooter,\n} from '../Modal/Modal.styled';\nimport { ManagedMarketplaceSaleBody } from './ManagedMarketplaceSaleBody';\n\ntype ManagedMarketplaceSaleProps = {\n cancelTo?: ModalProps;\n};\n\nexport const ManagedMarketplaceSale = ({\n cancelTo,\n}: ManagedMarketplaceSaleProps) => {\n const { posEntity, event, posEntityDisplayId, posEntityId } =\n useActivePosEntityContext();\n const listing =\n posEntity?.entityType === ActionOutboxEntityType.Listing\n ? (posEntity as ListingDetails)\n : undefined;\n const sale =\n posEntity?.entityType === ActionOutboxEntityType.Sale\n ? (posEntity as SaleDetails)\n : undefined;\n\n const methods = useForm({\n defaultValues:\n listing?.tickets?.length && event\n ? getPosManagedMarketplaceSaleInputFromListing(listing, event)\n : sale?.tickets?.length && event\n ? getPosManagedMarketplaceSaleInputFromSale(sale, event)\n : undefined,\n });\n\n useEffect(() => {\n if (\n methods.formState.defaultValues === undefined &&\n (listing?.tickets?.length || sale?.tickets?.length) &&\n event\n ) {\n methods.reset(\n listing?.tickets?.length\n ? getPosManagedMarketplaceSaleInputFromListing(listing, event)\n : getPosManagedMarketplaceSaleInputFromSale(sale!, event)\n );\n }\n }, [sale, methods, event, listing]);\n\n return (\n \n \n \n );\n};\n\nexport const ManagedSaleContent = ({\n listing,\n sale,\n posEntityDisplayId,\n event,\n cancelTo,\n formState,\n handleSubmit,\n watch,\n getValues,\n setError,\n}: Omit<\n ComponentProps>,\n 'children'\n> &\n ManagedMarketplaceSaleProps & {\n listing?: ListingDetails;\n sale?: SaleDetails;\n posEntityDisplayId?: string;\n event?: Event | null;\n }) => {\n const { showErrorDialog, genericError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { setModal, closeModal } = useContext(ModalContext);\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const { isLoading: entityIsLoading, loadingState } =\n useEventItemLoadingDisplay(\n FormatContentId.LoadingSaleId,\n FormatContentId.SearchingForSaleId,\n FormatContentId.CouldNotFindSaleId,\n posEntityDisplayId\n );\n\n const [isLoading, setIsLoading] = useState(false);\n const navigate = useNavigate();\n\n const onSubmit = useCallback(\n async (saleFormValue: PosManagedMarketplaceSaleInput) => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const client = new SaleClient(activeAccountWebClientConfig);\n\n const r = await client.mergePosManagedMarketplaceSale(saleFormValue);\n\n if (isSuccess(r)) {\n if (sale) {\n await setActivePosEntity(sale.id, sale.idOnMkp, true);\n } else if (r.entityId) {\n navigate(getSaleDetailsRelativeUrl(r.entityId));\n }\n if (cancelTo) {\n setModal(cancelTo);\n } else {\n closeModal(true);\n }\n } else {\n showErrorDialog(\n 'SaleClient.mergePosManagedMarketplaceSale',\n {\n message: r.message ?? genericError,\n status: r.status!,\n } as ApiException,\n {\n trackErrorData: saleFormValue,\n }\n );\n }\n },\n (error) => {\n showErrorDialog('SaleClient.mergePosManagedMarketplaceSale', error, {\n trackErrorData: saleFormValue,\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n cancelTo,\n closeModal,\n genericError,\n navigate,\n sale,\n setActivePosEntity,\n setModal,\n showErrorDialog,\n ]\n );\n\n const hasChanges = useCallback(\n (saleFormValue: PosManagedMarketplaceSaleInput) => {\n if (\n hasChanged(\n saleFormValue.saleStatus,\n formState.defaultValues?.saleStatus\n ) ||\n hasChanged(\n saleFormValue.buyerEmail,\n formState.defaultValues?.buyerEmail\n ) ||\n hasChanged(\n saleFormValue.buyerName,\n formState.defaultValues?.buyerName\n ) ||\n hasChanged(\n saleFormValue.buyerPhone,\n formState.defaultValues?.buyerPhone\n ) ||\n hasChanged(\n saleFormValue.currencyCode,\n formState.defaultValues?.currencyCode\n ) ||\n hasChanged(\n saleFormValue.inHandDate,\n formState.defaultValues?.inHandDate\n ) ||\n hasChanged(\n saleFormValue.quantitySold,\n formState.defaultValues?.quantitySold\n ) ||\n hasChanged(saleFormValue.saleDate, formState.defaultValues?.saleDate) ||\n hasChanged(saleFormValue.section, formState.defaultValues?.section) ||\n hasChanged(saleFormValue.row, formState.defaultValues?.row) ||\n hasChanged(saleFormValue.seatFrom, formState.defaultValues?.seatFrom) ||\n hasChanged(saleFormValue.seatTo, formState.defaultValues?.seatTo) ||\n hasChanged(\n saleFormValue.ticketType,\n formState.defaultValues?.ticketType\n ) ||\n hasChanged(\n saleFormValue.totalNetProceeds,\n formState.defaultValues?.totalNetProceeds\n ) ||\n hasChanged(\n saleFormValue.internalNotes,\n formState.defaultValues?.internalNotes\n ) ||\n hasChanged(\n saleFormValue.paymentState,\n formState.defaultValues?.paymentState\n ) ||\n hasChanged(\n saleFormValue.fulfillerSellerUserId,\n formState.defaultValues?.fulfillerSellerUserId\n )\n ) {\n return true;\n }\n return false;\n },\n [formState.defaultValues]\n );\n\n const requiredMsg = useContent(ContentId.Required);\n const inhandDateMustBeforeEventDate = useContent(\n ContentId.InHandDateMustBeBeforeEventDate\n );\n\n const onSubmitHandler = useCallback(() => {\n const formValues = getValues();\n if (!hasChanges(formValues)) return;\n\n if (!formValues.saleDate) {\n setError('saleDate', { message: requiredMsg }, { shouldFocus: true });\n }\n\n if (!formValues.totalNetProceeds?.value) {\n formValues.totalNetProceeds = posChangedField(0);\n }\n\n if (!formValues.inHandDate?.value) {\n setError('inHandDate', { message: requiredMsg }, { shouldFocus: true });\n } else if (\n new Date(formValues.inHandDate.value) >= new Date(event!.dates.start!)\n ) {\n setError(\n 'inHandDate',\n { message: inhandDateMustBeforeEventDate },\n { shouldFocus: true }\n );\n }\n if ((formValues.quantitySold?.value ?? 0) <= 0) {\n setError('quantitySold', { message: requiredMsg }, { shouldFocus: true });\n }\n\n if (listing?.tickets?.find((t) => !!t.seat)) {\n // If the listing tickets has seats - so better the sale\n if (!formValues.seatFrom?.value || !formValues.seatTo?.value) {\n setError('seatFrom', { message: requiredMsg }, { shouldFocus: true });\n }\n }\n\n handleSubmit(onSubmit)();\n }, [\n getValues,\n hasChanges,\n event,\n listing?.tickets,\n handleSubmit,\n onSubmit,\n setError,\n requiredMsg,\n inhandDateMustBeforeEventDate,\n ]);\n\n if (!sale && !listing) {\n // If we're looking for an active Sale, and there isn't one, return loading state\n return loadingState;\n }\n\n const formHasChanges = hasChanges(watch());\n\n return (\n <>\n \n \n \n \n }\n />\n \n\n \n
    \n {event && (listing || sale) && (\n \n \n \n )}\n {entityIsLoading || !(listing || sale) ? (\n \n ) : (\n \n )}\n
    \n
    \n\n \n \n \n \n \n \n );\n};\n","import { ComponentProps, useCallback, useContext } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { vars } from 'src/core/themes';\nimport { ManagedMarketplaceSale } from 'src/modals/ManagedMarketplaceSale';\nimport { EditIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ActionOutboxEntityType, SaleDetails } from 'src/WebApiController';\n\nexport const LaunchEditOfflineSale = ({\n saleId,\n marketplaceSaleId,\n cancelTo,\n iconOnlyMode,\n variant,\n ...buttonProps\n}: Omit<\n ComponentProps,\n 'onClick' | 'textContentId' | 'icon' | 'iconProps'\n> &\n Omit<\n ComponentProps,\n 'sale' | 'listing' | 'event' | 'venue'\n > & {\n saleId: number;\n marketplaceSaleId: string | null;\n eventId: string | null;\n }) => {\n const { setModal } = useContext(ModalContext);\n\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const editOfflineSale = useCallback(() => {\n setModal({\n children: ,\n clickOutsideToClose: true,\n size: 'slide-in',\n deepLinkValue: saleId,\n trackViewEntityType: ActionOutboxEntityType.Sale,\n });\n }, [setModal, cancelTo, saleId]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setActivePosEntity(saleId, marketplaceSaleId);\n editOfflineSale();\n },\n [editOfflineSale, marketplaceSaleId, saleId, setActivePosEntity]\n );\n\n return (\n \n }\n />\n );\n};\n","import React, { useCallback, useState } from 'react';\nimport { ExpireHoldButton } from 'src/components/Buttons/ExpireHoldButton';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { ButtonProps } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n ActivityLogClient,\n ApiException,\n SaleClient,\n SaleDetails,\n} from 'src/WebApiController';\n\nexport const LaunchExpireHold = ({\n saleId,\n marketplaceSaleId,\n variant,\n iconOnlyMode,\n disabled,\n}: {\n saleId: number;\n marketplaceSaleId?: string | null;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n disabled?: boolean;\n}) => {\n const [isLoading, setIsLoading] = useState(false);\n const { showErrorDialog, genericError, trackError } =\n useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const { launchDialog, closeDialog, dialogProps } = useBasicDialog();\n\n const expireHold = useCallback(() => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const client = new SaleClient(activeAccountWebClientConfig);\n\n const result = await client.expireHold(saleId);\n if (!isSuccess(result)) {\n showErrorDialog(\n 'SaleClient.ExpireHold',\n {\n message: result.message ?? genericError,\n status: result.status!,\n } as ApiException,\n {\n trackErrorData: { saleId },\n }\n );\n } else {\n await setActivePosEntity(saleId, marketplaceSaleId, true);\n }\n },\n (error) => {\n showErrorDialog('SaleClient.ExpireHold', error, {\n trackErrorData: { saleId },\n });\n },\n () => {\n setIsLoading(false);\n closeDialog();\n }\n );\n }, [\n activeAccountWebClientConfig,\n closeDialog,\n genericError,\n marketplaceSaleId,\n saleId,\n setActivePosEntity,\n showErrorDialog,\n ]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n tryInvokeApi(\n async () => {\n await new ActivityLogClient(\n activeAccountWebClientConfig\n ).trackEntityView(saleId, ActionOutboxEntityType.Sale);\n },\n (error) => {\n trackError('ActivityLogClient.trackEntityView', error, { saleId });\n }\n );\n launchDialog();\n },\n [launchDialog, activeAccountWebClientConfig, saleId, trackError]\n );\n\n return (\n
    \n \n }\n bodyText={}\n onOkay={expireHold}\n />\n
    \n );\n};\n","import React, { useCallback, useState } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { vars } from 'src/core/themes';\nimport { ButtonProps } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { CheckIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n ActivityLogClient,\n ApiException,\n SaleClient,\n SaleDetails,\n} from 'src/WebApiController';\n\nexport const LaunchMarkAsFulfilled = ({\n saleId,\n marketplaceSaleId,\n variant,\n iconOnlyMode,\n disabled,\n}: {\n saleId: number;\n marketplaceSaleId?: string | null;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n disabled?: boolean;\n}) => {\n const [isLoading, setIsLoading] = useState(false);\n const { showErrorDialog, genericError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const { launchDialog, closeDialog, dialogProps } = useBasicDialog();\n\n const markAsFulfilled = useCallback(() => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const client = new SaleClient(activeAccountWebClientConfig);\n\n const result = await client.markAsFulfilled(saleId);\n if (!isSuccess(result)) {\n showErrorDialog(\n 'SaleClient.markAsFulfilled',\n {\n message: result.message ?? genericError,\n status: result.status!,\n } as ApiException,\n {\n trackErrorData: { saleId },\n }\n );\n } else {\n await setActivePosEntity(saleId, marketplaceSaleId, true);\n }\n },\n (error) => {\n showErrorDialog('SaleClient.markAsFulfilled', error, {\n trackErrorData: { saleId },\n });\n },\n () => {\n setIsLoading(false);\n closeDialog();\n }\n );\n }, [\n activeAccountWebClientConfig,\n closeDialog,\n genericError,\n marketplaceSaleId,\n saleId,\n setActivePosEntity,\n showErrorDialog,\n ]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n new ActivityLogClient(activeAccountWebClientConfig).trackEntityView(\n saleId,\n ActionOutboxEntityType.Sale\n );\n launchDialog();\n },\n [saleId, launchDialog, activeAccountWebClientConfig]\n );\n\n return (\n
    \n \n }\n iconOnlyMode={iconOnlyMode}\n variant={variant}\n textContentId={ContentId.MarkAsFulfilled}\n />\n }\n bodyText={}\n onOkay={markAsFulfilled}\n />\n
    \n );\n};\n","import { ComponentProps } from 'react';\nimport { vars } from 'src/core/themes';\nimport { ErrorOutlineIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { ButtonWithIcon } from './ButtonWithIcon';\n\nexport const RejectButton = ({\n textContentId,\n variant,\n iconOnlyMode,\n icon,\n ...props\n}: ComponentProps) => {\n return (\n \n )\n }\n iconOnlyMode={iconOnlyMode}\n variant={variant}\n textContentId={textContentId || ContentId.RejectSale}\n />\n );\n};\n","import React, { useCallback, useState } from 'react';\nimport { RejectButton } from 'src/components/Buttons/RejectButton';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { ButtonProps, Stack } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SALE_CANCELLATION_REASON_CID } from 'src/utils/constants/contentIdMaps';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n ActivityLogClient,\n ApiException,\n Feature,\n SaleCancellationReason,\n SaleClient,\n SaleDetails,\n} from 'src/WebApiController';\n\nimport * as styles from '../SaleDetails.css';\n\nexport const LaunchRejectSale = ({\n saleId,\n marketplaceSaleId,\n variant,\n iconOnlyMode,\n disabled,\n}: {\n saleId: number;\n marketplaceSaleId?: string | null;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n disabled?: boolean;\n}) => {\n const [isLoading, setIsLoading] = useState(false);\n const [saleCancellationReason, setSaleCancellationReason] =\n useState(null);\n const { showErrorDialog, genericError, trackError } =\n useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const userHasSaleCancellationReason = useUserHasFeature(\n Feature.SaleCancellationReason\n );\n\n const { launchDialog, closeDialog, dialogProps } = useBasicDialog();\n\n const rejectSale = useCallback(() => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const client = new SaleClient(activeAccountWebClientConfig);\n\n const result = await client.rejectSale(\n saleId,\n false,\n saleCancellationReason\n );\n if (!isSuccess(result)) {\n showErrorDialog(\n 'SaleClient.rejectSale',\n {\n message: result.message ?? genericError,\n status: result.status!,\n } as ApiException,\n {\n trackErrorData: { saleId },\n }\n );\n } else {\n await setActivePosEntity(saleId, marketplaceSaleId, true);\n }\n },\n (error) => {\n showErrorDialog('SaleClient.rejectSale', error, {\n trackErrorData: { saleId },\n });\n },\n () => {\n setIsLoading(false);\n closeDialog();\n }\n );\n }, [\n activeAccountWebClientConfig,\n closeDialog,\n genericError,\n marketplaceSaleId,\n saleCancellationReason,\n saleId,\n setActivePosEntity,\n showErrorDialog,\n ]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n tryInvokeApi(\n async () => {\n await new ActivityLogClient(\n activeAccountWebClientConfig\n ).trackEntityView(saleId, ActionOutboxEntityType.Sale);\n },\n (error) => {\n trackError('ActivityLogClient.trackEntityView', error, { saleId });\n }\n );\n setSaleCancellationReason(null);\n launchDialog();\n },\n [launchDialog, activeAccountWebClientConfig, saleId, trackError]\n );\n\n return (\n
    \n \n }\n bodyText={\n \n {userHasSaleCancellationReason && (\n \n \n \n \n )}\n \n \n }\n />\n
    \n );\n};\n","import React, { useCallback, useState } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { vars } from 'src/core/themes';\nimport { ButtonProps } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { IconsFill, ResetIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n ActivityLogClient,\n ApiException,\n SaleClient,\n SaleDetails,\n} from 'src/WebApiController';\n\nexport const LaunchResetFulfillment = ({\n saleId,\n marketplaceSaleId,\n variant,\n iconOnlyMode,\n disabled,\n}: {\n saleId: number;\n marketplaceSaleId?: string | null;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n disabled?: boolean;\n}) => {\n const [isLoading, setIsLoading] = useState(false);\n const { showErrorDialog, genericError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const { launchDialog, closeDialog, dialogProps } = useBasicDialog();\n\n const resetFulfillment = useCallback(() => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const client = new SaleClient(activeAccountWebClientConfig);\n\n const result = await client.resetFulfillment(saleId, true, false);\n if (!isSuccess(result)) {\n showErrorDialog(\n 'SaleClient.resetFulfillment',\n {\n message: result.message ?? genericError,\n status: result.status!,\n } as ApiException,\n {\n trackErrorData: { saleId },\n }\n );\n } else {\n await setActivePosEntity(saleId, marketplaceSaleId, true);\n }\n },\n (error) => {\n showErrorDialog('SaleClient.resetFulfillment', error, {\n trackErrorData: { saleId },\n });\n },\n () => {\n setIsLoading(false);\n closeDialog();\n }\n );\n }, [\n activeAccountWebClientConfig,\n closeDialog,\n genericError,\n marketplaceSaleId,\n saleId,\n setActivePosEntity,\n showErrorDialog,\n ]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n new ActivityLogClient(activeAccountWebClientConfig).trackEntityView(\n saleId,\n ActionOutboxEntityType.Sale\n );\n launchDialog();\n },\n [saleId, launchDialog, activeAccountWebClientConfig]\n );\n\n return (\n
    \n \n }\n iconOnlyMode={iconOnlyMode}\n variant={variant}\n textContentId={ContentId.ResetFulfillment}\n />\n }\n bodyText={}\n onOkay={resetFulfillment}\n />\n
    \n );\n};\n","import { ComponentProps, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { Content } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Radio, RadioGroup, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { reset } from 'svg-pan-zoom';\n\nenum SaveArtifactType {\n SaveArtifact = 'SaveArtifact',\n ResetArtifact = 'ResetArtifact',\n}\n\nexport type ResetFulfillmentDialgoProps = ComponentProps;\n\nexport const ResetFulfillmentDialog = ({\n onOkay,\n onCancel,\n ...rest\n}: ResetFulfillmentDialgoProps) => {\n const [resetArtifacts, setResetArtifacts] = useState(false);\n\n const ResetFulfillmentDialogBody = () => (\n
    \n {\n if (value === SaveArtifactType.SaveArtifact) {\n setResetArtifacts(false);\n } else {\n setResetArtifacts(true);\n }\n }}\n value={\n resetArtifacts\n ? SaveArtifactType.ResetArtifact\n : SaveArtifactType.SaveArtifact\n }\n >\n \n }\n />\n }\n />\n \n \n
    \n );\n\n return (\n }\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n footer={\n <>\n \n onOkay(resetArtifacts)}\n />\n \n }\n >\n \n \n );\n};\n","import React, { useCallback, useState } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { vars } from 'src/core/themes';\nimport { ButtonProps } from 'src/core/ui';\nimport { IconsFill, ResetIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n ActivityLogClient,\n ApiException,\n Feature,\n SaleClient,\n SaleDetails,\n} from 'src/WebApiController';\n\nimport { ResetFulfillmentDialog } from '../components/ResetFulfillmentDialog';\n\nexport const LaunchResetFulfillmentV2 = ({\n saleId,\n marketplaceSaleId,\n variant,\n iconOnlyMode,\n disabled,\n}: {\n saleId: number;\n marketplaceSaleId?: string | null;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n disabled?: boolean;\n}) => {\n const [isLoading, setIsLoading] = useState(false);\n const { showErrorDialog, genericError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const {\n openDialog: openResetFulfillment,\n closeDialog: closeResetFulfillment,\n } = useDialog(DialogId.ResetFulfillment, ResetFulfillmentDialog);\n\n const resetFulfillment = useCallback(\n (resetArtifacts: boolean) => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const client = new SaleClient(activeAccountWebClientConfig);\n\n const result = await client.resetFulfillment(\n saleId,\n resetArtifacts,\n true\n );\n if (!isSuccess(result)) {\n showErrorDialog(\n 'SaleClient.resetFulfillment',\n {\n message: result.message ?? genericError,\n status: result.status!,\n } as ApiException,\n {\n trackErrorData: { saleId },\n }\n );\n } else {\n await setActivePosEntity(saleId, marketplaceSaleId, true);\n }\n },\n (error) => {\n showErrorDialog('SaleClient.resetFulfillment', error, {\n trackErrorData: { saleId },\n });\n },\n () => {\n setIsLoading(false);\n closeResetFulfillment();\n }\n );\n },\n [\n activeAccountWebClientConfig,\n closeResetFulfillment,\n genericError,\n marketplaceSaleId,\n saleId,\n setActivePosEntity,\n showErrorDialog,\n ]\n );\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n new ActivityLogClient(activeAccountWebClientConfig).trackEntityView(\n saleId,\n ActionOutboxEntityType.Sale\n );\n\n openResetFulfillment({\n onOkay: (resetArtifacts: boolean) => {\n resetFulfillment(resetArtifacts);\n closeResetFulfillment();\n },\n onCancel: closeResetFulfillment,\n });\n },\n [\n activeAccountWebClientConfig,\n saleId,\n openResetFulfillment,\n closeResetFulfillment,\n resetFulfillment,\n ]\n );\n\n return (\n \n }\n iconOnlyMode={iconOnlyMode}\n variant={variant}\n textContentId={ContentId.ResetFulfillment}\n />\n );\n};\n","import { ButtonProps } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Feature } from 'src/WebApiController';\n\nimport { LaunchResetFulfillment } from './LaunchResetFulfillment';\nimport { LaunchResetFulfillmentV2 } from './LaunchResetFulfillmentV2';\n\nexport const LaunchResetFulfillmentButton = ({\n saleId,\n marketplaceSaleId,\n variant,\n iconOnlyMode,\n disabled,\n}: {\n saleId: number;\n marketplaceSaleId?: string | null;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n disabled?: boolean;\n}) => {\n const hasResetFulfillmentKeepArtifactsFeature = useUserHasFeature(\n Feature.ResetFulfillmentKeepArtifacts\n );\n\n if (!hasResetFulfillmentKeepArtifactsFeature) {\n return (\n \n );\n }\n\n return (\n \n );\n};\n","import { useCallback, useState } from 'react';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport {\n ConfirmDialog,\n ConfirmDialogProps,\n} from 'src/core/interim/dialogs/ConfirmDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { SaleClient, SaleDetails } from 'src/WebApiController';\n\nexport type TurnOnSaleAutoFulfillDialogProps = Omit<\n ConfirmDialogProps,\n 'headerText' | 'bodyText'\n> & {\n saleId: number;\n};\n\nexport const TurnOnSaleAutoFulfillDialog = ({\n saleId,\n onOkay,\n onCancel,\n ...props\n}: TurnOnSaleAutoFulfillDialogProps) => {\n const { showErrorDialog } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const { posEntity: sale, setActivePosEntity } =\n useActivePosEntityContext();\n\n const onTurnOnAutoFulfill = useCallback(async () => {\n setIsLoading(true);\n await tryInvokeApi(\n async () => {\n await new SaleClient(\n activeAccountWebClientConfig\n ).updateSaleIsNoFulfill({\n item1: saleId,\n item2: false,\n });\n setIsLoading(false);\n\n if (sale) {\n setActivePosEntity(sale.id, sale.idOnMkp, true);\n }\n\n onOkay();\n },\n (error) => {\n showErrorDialog('SaleClient.updateSaleIsNoFulfill', error, {\n trackErrorData: {\n saleId,\n },\n });\n },\n () => setIsLoading(false)\n );\n }, [\n activeAccountWebClientConfig,\n onOkay,\n sale,\n saleId,\n setActivePosEntity,\n showErrorDialog,\n ]);\n\n return (\n }\n bodyText={}\n onOkay={onTurnOnAutoFulfill}\n onCancel={onCancel}\n okText={ContentId.Yes}\n cancelText={ContentId.No}\n {...props}\n isLoading={isLoading}\n />\n );\n};\n","import { UploadDocumentInput } from 'src/components/Input/UploadDocumentInput';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n DocumentType,\n SaleDetails,\n} from 'src/WebApiController';\n\nexport const ImageProofBody = ({\n setIsSaveDisabled,\n}: {\n setIsSaveDisabled: (disabled: boolean) => void;\n}) => {\n const { posEntity: sale } = useActivePosEntityContext();\n\n return (\n }\n setIsSaveDisabled={setIsSaveDisabled}\n />\n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Radio, RadioGroup, Stack } from 'src/core/ui';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ModalBodyDataContainer } from 'src/modals/Modal/Modal.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { TransferTicketsForm } from 'src/utils/ticketUtils';\nimport { Feature, Permission, TransferTicketType } from 'src/WebApiController';\n\nexport const ProofTypeSelectionBody = ({\n supportTicketmasterBarcodeTransfer,\n}: {\n supportTicketmasterBarcodeTransfer?: boolean;\n}) => {\n const { watch, setValue } = useFormContext();\n const watchTransferType = watch('transferType');\n const has1TicketApiFeature = useUserHasFeature(Feature.OneTicketTransferApi);\n const hasTransferWithoutProof = useUserHasAnyOfPermissions(\n Permission.Sales_ConfirmTransferWithoutProof\n );\n const hasTransferWithoutProofFeature = useUserHasFeature(\n Feature.ConfirmTransferWithoutProof\n );\n\n return (\n \n \n \n \n \n setValue('transferType', value as TransferTicketType)\n }\n value={watchTransferType}\n >\n \n \n }\n />\n }\n />\n {supportTicketmasterBarcodeTransfer && (\n <>\n \n }\n />\n {has1TicketApiFeature && (\n \n }\n />\n )}\n \n )}\n {hasTransferWithoutProof && hasTransferWithoutProofFeature && (\n }\n />\n )}\n \n \n \n \n \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { ModalBodyDataContainer } from 'src/modals/Modal/Modal.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { TransferTicketsForm } from 'src/utils/ticketUtils';\n\nexport const TransferIdProofBody = ({ disabled }: { disabled?: boolean }) => {\n const { register, formState, watch } = useFormContext();\n const transferProofId = watch('transferProofId');\n\n const transferProofIdErrpr = formState?.errors?.transferProofId?.message;\n return (\n \n \n \n }\n errors={transferProofIdErrpr}\n >\n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { BlinkingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport useCopyToClipboard from 'src/hooks/useCopyToClipboard';\nimport { Detail, DetailGroup, DetailSection } from 'src/modals/common';\nimport { ModalBodyDataContainer } from 'src/modals/Modal/Modal.styled';\nimport { TicketsSection } from 'src/modals/SaleDetails/components/TicketsSection';\nimport * as styles from 'src/modals/TransferTickets/TransferTickets.css';\nimport { CopyIcon } from 'src/svgs/CopyIcon';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Marketplace, SaleDetails } from 'src/WebApiController';\n\nexport const TransferTicketsRecipientBody = () => {\n const { posEntity: sale } = useActivePosEntityContext();\n\n const { loginContext } = useAppContext();\n const yourTickets = useContent(ContentId.YourTickets);\n const app = useContent(ContentId.App);\n const transferFrom = useContent(ContentId.TransferFrom);\n\n const yourBuyer = useContent(ContentId.YourBuyer);\n const transferTo = useContent(ContentId.TransferTo);\n const contact = useContent(ContentId.Contact);\n\n const { referenceIsCopied, copyToClipboard } = useCopyToClipboard();\n\n const onCopy = useCallback(\n (text: string, referenceId: string) => {\n copyToClipboard(text, referenceId);\n },\n [copyToClipboard]\n );\n\n const recipientNameReferenceId = 'recipientName';\n const recipientEmailReferenceId = 'recipientEmail';\n\n return (\n \n \n \n\n \n \n \n {sale?.transSrc?.length ? (\n sale?.transSrc?.map((tts) => (\n <>\n
    \n {tts.app}
    \n }\n />\n \n
    \n \n
    \n {tts.name}\n
    \n
    \n {tts.email}\n
    \n
    \n }\n />\n \n \n ))\n ) : (\n <>\n
    \n \n {Marketplace.StubHub}\n
    \n }\n />\n \n
    \n \n
    \n {loginContext?.user?.displayName}\n
    \n
    \n {loginContext?.user?.userName}\n
    \n
    \n }\n />\n \n \n )}\n {' '}\n
    \n
    \n \n \n {sale?.transDest ? (\n <>\n
    \n \n
    \n {sale.transDest.name}\n
    \n \n onCopy(\n sale.transDest!.name!,\n recipientNameReferenceId\n )\n }\n />\n {referenceIsCopied === recipientNameReferenceId && (\n \n \n \n )}\n
    \n }\n />\n \n
    \n \n
    \n {sale.transDest.email}\n
    \n \n onCopy(\n sale.transDest!.email!,\n recipientEmailReferenceId\n )\n }\n />\n {referenceIsCopied === recipientEmailReferenceId && (\n \n \n \n )}\n
    \n }\n />\n \n \n ) : (\n
    \n \n \n
    \n \n
    \n
    \n
    \n }\n />\n \n )}\n
    \n
    \n
    \n
    \n
    \n );\n};\n","import { UseFormRegister } from 'react-hook-form';\nimport { IconButton } from 'src/components/Buttons';\nimport { useContent, useFormattedContent } from 'src/contexts/ContentContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport { URL_REGEX } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { TransferTicketsForm } from 'src/utils/ticketUtils';\nimport { isUniqueWithin } from 'src/utils/validation';\n\nimport * as styles from './UrlProof.css';\n\nexport const URLInputField = ({\n id,\n index,\n register,\n canRemove,\n onRemove,\n allFields,\n error,\n disabled,\n}: {\n id: string | number;\n index: number;\n register: UseFormRegister;\n canRemove: boolean;\n onRemove: () => void;\n allFields: TransferTicketsForm['acceptanceUrlInputs'];\n error?: string;\n disabled?: boolean;\n}) => {\n const requiredUrlMsg = useContent(ContentId.Required);\n const invalidUrlMsg = useContent(ContentId.InvalidUrl);\n const dupeUrlMsg = useContent(ContentId.DuplicateUrl);\n const label = useFormattedContent(FormatContentId.UrlNumber, `${index + 1}`);\n\n return (\n
    \n \n {\n return fieldVal?.length ? undefined : requiredUrlMsg;\n },\n isUnique: (fieldVal) => {\n return (\n isUniqueWithin(\n fieldVal,\n allFields.map((t) => t.url) || [],\n true\n ) || dupeUrlMsg\n );\n },\n },\n })}\n />\n {canRemove && (\n } />\n )}\n \n
    \n );\n};\n","import { useEffect } from 'react';\nimport { useFieldArray, useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ErrorMessage } from 'src/core/POS/ErrorMessage';\nimport { Button, Stack } from 'src/core/ui';\nimport { ModalBodyDataContainer } from 'src/modals/Modal/Modal.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { TransferTicketsForm } from 'src/utils/ticketUtils';\n\nimport { URLInputField } from './URLInput';\nimport * as styles from './UrlProof.css';\n\nexport const UrlProofBody = ({ disabled }: { disabled?: boolean }) => {\n const { register, formState, watch } = useFormContext();\n const { fields, append, remove } = useFieldArray({\n name: 'acceptanceUrlInputs',\n });\n const allUrlInputs = watch('acceptanceUrlInputs');\n useEffect(() => {\n if (fields.length === 0) {\n append({ id: fields.length, url: '' });\n }\n }, [append, fields.length]);\n\n const allUrlsError = formState?.errors?.acceptanceUrlInputs?.message;\n return (\n \n \n \n
    \n {fields.map((field, index) => {\n const error =\n formState?.errors?.acceptanceUrlInputs?.[index]?.url?.message;\n return (\n 1}\n onRemove={() => remove(index)}\n allFields={allUrlInputs}\n error={error}\n />\n );\n })}\n
    \n append({ id: fields.length, url: '' })}\n >\n + \n \n
    \n {allUrlsError && {allUrlsError}}\n
    \n
    \n
    \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { ComponentProps, useCallback, useContext, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { BackButton } from 'src/components/Buttons/BackButton';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport {\n checkBarcodeErrors,\n checkDuplicateBarcodes,\n} from 'src/components/UploadArtifacts/UploadBarcodes';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport {\n Content,\n useContent,\n useFormattedContent,\n} from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useEventItemLoadingDisplay } from 'src/hooks/useEventItemLoadingDisplay';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { CancellableFormFooter } from 'src/modals/common';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalBody, ModalFooter, ModalProps } from 'src/modals/Modal';\nimport {\n DATA_REFRESH_RATE_IN_MILLIS_FAST,\n TICKETMASTER_APP_ID,\n} from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { TransferTicketsForm } from 'src/utils/ticketUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ApiException,\n Marketplace,\n SaleClient,\n SaleDetails,\n SaleMetrics,\n TransferTicketType,\n} from 'src/WebApiController';\n\nimport { Summary } from '../common/Summary';\nimport {\n ModalBodyDataContainer,\n ModalBodyHeaderContainer,\n} from '../Modal/Modal.styled';\nimport { ImageProofBody } from './views/ImageProof';\nimport { ProofTypeSelectionBody } from './views/ProofTypeSelection';\nimport { TransferIdProofBody } from './views/TransferIdProof';\nimport { TransferTicketmasterBarcodesBody } from './views/TransferTicketmasterBarcodes';\nimport { TransferTicketsRecipientBody } from './views/TransferTicketsRecipientBody';\nimport { UrlProofBody } from './views/UrlProof';\n\ntype TransferTicketProps = {\n cancelTo?: ModalProps;\n eTicketUrlOnly?: boolean;\n};\n\nexport const TransferTickets = (props: TransferTicketProps) => {\n const { loadingState } = useEventItemLoadingDisplay(\n FormatContentId.LoadingSaleId,\n FormatContentId.SearchingForSaleId,\n FormatContentId.CouldNotFindSaleId\n );\n\n return loadingState || ;\n};\n\nexport const TransferTicketsContent = (props: TransferTicketProps) => {\n const { loginContext } = useAppContext();\n const { posEntity: sale } = useActivePosEntityContext();\n\n const hasTicketmasterEnabled =\n loginContext?.user?.activeAccount?.marketplaceSettings?.find(\n (m) =>\n m.mkp === Marketplace.Ticketmaster &&\n m.isEnabled &&\n (m.hasApiToken || m.hasApiRefreshToken) &&\n !m.tokenExpired\n );\n const indexOfTM = sale?.transSrc?.findIndex(\n (ti) => ti.appId === TICKETMASTER_APP_ID\n );\n\n const supportTicketmasterBarcodeTransfer =\n hasTicketmasterEnabled != null && indexOfTM != null && indexOfTM >= 0;\n\n const methods = useForm({\n defaultValues: {\n transferType: props.eTicketUrlOnly\n ? TransferTicketType.URL\n : supportTicketmasterBarcodeTransfer &&\n sale?.tickets?.every((t) => t.barcode)\n ? TransferTicketType.ApiTransferTicketmaster // if this support TM transfer and has barcodes, default to selecting TM transfer\n : TransferTicketType.ImageProof,\n acceptanceUrls: sale?.transferUrls,\n acceptanceUrlInputs: sale?.transferUrls?.map((url, i) => ({\n id: i,\n url: url,\n })),\n uploadProofDocuments: sale?.transferProofDocs,\n transferProofId: sale?.transferProofId,\n barcodes: sale?.tickets?.map((t) => ({\n ticketId: t.id,\n barcode: t.barcode ?? '',\n })),\n },\n });\n\n return (\n \n \n \n );\n};\n\nenum TransferTicketBody {\n Recipient,\n ProofType,\n ImageProof,\n UrlProof,\n IdProof,\n TicketmasterBarcodesViaOneTicket,\n TicketmasterBarcodesViaTradeDesk,\n}\n\nconst TransferTicketsModal = ({\n cancelTo,\n formState,\n handleSubmit,\n watch,\n setError,\n getValues,\n eTicketUrlOnly,\n supportTicketmasterBarcodeTransfer,\n}: TransferTicketProps & {\n supportTicketmasterBarcodeTransfer: boolean;\n} & Omit<\n ComponentProps>,\n 'children'\n >) => {\n const [currentBody, setCurrentBody] = useState(\n eTicketUrlOnly ? TransferTicketBody.UrlProof : TransferTicketBody.Recipient\n );\n const { activeAccountWebClientConfig } = useAppContext();\n const { setModal, closeModal } = useContext(ModalContext);\n\n const { trackError, showErrorDialog, genericError } =\n useErrorBoundaryContext();\n\n const { isDirty, isSubmitting } = formState;\n\n const [isLoading, setIsLoading] = useState(false);\n\n const {\n posEntity: sale,\n event,\n setActivePosEntity,\n updateActivePosEntityInfo,\n } = useActivePosEntityContext();\n\n const shouldQuery = sale?.id != null && sale?.transDest == null;\n\n useQuery({\n queryKey: ['SaleClient.getSaleRecipient', sale?.id],\n queryFn: async () => {\n if (!shouldQuery) return null;\n\n const saleDetails = await new SaleClient(\n activeAccountWebClientConfig\n ).getSaleBySaleId(sale.id);\n\n if (saleDetails?.transDest) {\n // Only update the Sale details if we get the recipient info\n updateActivePosEntityInfo({\n event: event,\n posEntity: saleDetails,\n posEntityId: saleDetails.id,\n posEntityDisplayId: saleDetails.idOnMkp,\n });\n }\n\n return saleDetails;\n },\n\n enabled: shouldQuery,\n staleTime: Infinity, // Since we're always refetching on an interval, we don't want query to calculate whether the data is stale\n refetchOnWindowFocus: false,\n networkMode: 'offlineFirst',\n meta: {\n persist: false,\n onError: (error: ErrorTypes) => {\n trackError('SaleClient.getSaleRecipient', error, { saleId: sale?.id });\n },\n },\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_FAST,\n });\n\n const { refreshMetrics } = useCatalogMetricsContext();\n\n const requiredMsg = useContent(ContentId.Required);\n const atleastOneUrlRequired = useContent(ContentId.AtLeastOneUrlRequired);\n const anUploadedDocumentIsRequired = useContent(\n ContentId.AnUploadedDocumentIsRequired\n ); // 'An upload image or document is required.'\n\n const watchTransferType = watch('transferType');\n\n const isMobile = useMatchMedia('mobile');\n\n const onNext = useCallback(async () => {\n if (eTicketUrlOnly) {\n setCurrentBody(TransferTicketBody.UrlProof);\n }\n\n switch (currentBody) {\n case TransferTicketBody.Recipient:\n setCurrentBody(TransferTicketBody.ProofType);\n break;\n case TransferTicketBody.ProofType:\n if (watchTransferType === TransferTicketType.ImageProof) {\n setCurrentBody(TransferTicketBody.ImageProof);\n } else if (watchTransferType === TransferTicketType.URL) {\n setCurrentBody(TransferTicketBody.UrlProof);\n } else if (watchTransferType === TransferTicketType.IdProof) {\n setCurrentBody(TransferTicketBody.IdProof);\n } else if (\n watchTransferType === TransferTicketType.ApiTransferTicketmaster\n ) {\n setCurrentBody(TransferTicketBody.TicketmasterBarcodesViaTradeDesk);\n } else if (\n watchTransferType === TransferTicketType.ApiTransfer1Ticket\n ) {\n setCurrentBody(TransferTicketBody.TicketmasterBarcodesViaOneTicket);\n }\n break;\n default:\n console.log('Unhandled TransferTicketBody onNext: ' + currentBody);\n break;\n }\n }, [currentBody, eTicketUrlOnly, watchTransferType]);\n\n const onBack = useCallback(async () => {\n if (eTicketUrlOnly) {\n if (cancelTo) {\n setModal(cancelTo);\n } else {\n closeModal();\n }\n }\n switch (currentBody) {\n case TransferTicketBody.Recipient:\n if (cancelTo) {\n setModal(cancelTo);\n } else {\n closeModal();\n }\n break;\n case TransferTicketBody.ProofType:\n setCurrentBody(TransferTicketBody.Recipient);\n break;\n case TransferTicketBody.ImageProof:\n case TransferTicketBody.UrlProof:\n case TransferTicketBody.IdProof:\n case TransferTicketBody.TicketmasterBarcodesViaOneTicket:\n case TransferTicketBody.TicketmasterBarcodesViaTradeDesk:\n setCurrentBody(TransferTicketBody.ProofType);\n break;\n }\n }, [cancelTo, closeModal, currentBody, eTicketUrlOnly, setModal]);\n\n const { ticketCnt } = sale!;\n const barcodes = watch('barcodes');\n const barcodesProvided =\n barcodes?.map((b) => b.barcode).filter((b) => b?.length) ?? [];\n\n const duplicateMsg = useContent(ContentId.DuplicateBarcode);\n const missingMsg = useFormattedContent(\n FormatContentId.MissingBarcodes,\n `${ticketCnt - barcodesProvided.length}`\n );\n\n const extraMsg = useFormattedContent(\n FormatContentId.ExtraBarcodes,\n `${barcodesProvided.length - ticketCnt}`\n );\n\n const [alreadyReportedUsedBarcodes, setAlreadyReportedUsedBarcodes] =\n useState([]);\n const barcodeAlreadyUsedWarning = useContent(ContentId.BarcodeAlreadyInUsed);\n\n const onSubmit = useCallback(\n async (data: TransferTicketsForm) => {\n tryInvokeApi(\n async () => {\n setIsLoading(true);\n\n const client = new SaleClient(activeAccountWebClientConfig);\n\n data.saleId = sale!.id;\n const result = await client.saveTicketTransferInfo({\n saleId: data.saleId,\n transferType: data.transferType,\n acceptanceUrls:\n data.transferType === TransferTicketType.URL\n ? data.acceptanceUrlInputs.map((url) => url.url)\n : null,\n uploadProofDocuments:\n data.transferType === TransferTicketType.ImageProof\n ? data.uploadProofDocuments\n : null,\n transferProofId:\n data.transferType === TransferTicketType.IdProof\n ? data.transferProofId\n : null,\n barcodes:\n data.transferType === TransferTicketType.ApiTransfer1Ticket ||\n data.transferType === TransferTicketType.ApiTransferTicketmaster\n ? data.barcodes\n : null,\n });\n if (!isSuccess(result)) {\n showErrorDialog(\n 'SaleClient.saveTicketTransferInfo',\n {\n message: result.message ?? genericError,\n status: result.status!,\n } as ApiException,\n {\n onDismissError: () => cancelTo && setModal(cancelTo),\n trackErrorData: data,\n }\n );\n } else {\n // Refresh the active data so the SaleDetail dialog and table will have the new content\n await setActivePosEntity(sale!.id, sale!.idOnMkp, true);\n refreshMetrics?.();\n\n if (cancelTo) {\n setModal(cancelTo);\n } else {\n closeModal(true);\n }\n }\n },\n (error) => {\n showErrorDialog('SaleClient.saveTicketTransferInfo', error, {\n trackErrorData: data,\n });\n },\n () => setIsLoading(false)\n );\n },\n [\n activeAccountWebClientConfig,\n cancelTo,\n closeModal,\n genericError,\n refreshMetrics,\n sale,\n setActivePosEntity,\n setModal,\n showErrorDialog,\n ]\n );\n\n const onTransferClicked = useCallback(async () => {\n const data = getValues();\n if (data.transferType === TransferTicketType.URL) {\n if (!data.acceptanceUrlInputs?.length) {\n setError(\n 'acceptanceUrlInputs',\n {\n message: atleastOneUrlRequired,\n },\n { shouldFocus: true }\n );\n return;\n } else {\n let hasErrors = false;\n data.acceptanceUrlInputs.forEach((url, i) => {\n if (!url?.url?.length) {\n setError(\n `acceptanceUrlInputs.${i}.url`,\n {\n message: requiredMsg,\n },\n { shouldFocus: true }\n );\n hasErrors = true;\n }\n });\n\n if (hasErrors) return;\n data.acceptanceUrls = data.acceptanceUrlInputs.map((t) => t.url);\n }\n } else if (data.transferType === TransferTicketType.ImageProof) {\n if (!data.uploadProofDocuments?.length) {\n setError('uploadProofDocuments', {\n message: anUploadedDocumentIsRequired,\n });\n return;\n }\n } else if (data.transferType === TransferTicketType.IdProof) {\n if (!data.transferProofId) {\n setError('transferProofId', {\n message: requiredMsg,\n });\n\n return;\n }\n } else if (\n data.transferType === TransferTicketType.ApiTransferTicketmaster ||\n data.transferType === TransferTicketType.ApiTransfer1Ticket\n ) {\n let hasErrors = checkBarcodeErrors(\n data.isBulkUpload,\n data.barcodes ?? [],\n ticketCnt,\n setError,\n requiredMsg,\n missingMsg as string,\n extraMsg as string,\n duplicateMsg\n );\n\n if (hasErrors) {\n return;\n }\n\n hasErrors = Boolean(\n await checkDuplicateBarcodes(\n sale!.id,\n barcodes ?? [],\n activeAccountWebClientConfig,\n alreadyReportedUsedBarcodes,\n setAlreadyReportedUsedBarcodes,\n (index) =>\n setError(`barcodes.${index}.barcode`, {\n type: 'warning',\n message: barcodeAlreadyUsedWarning,\n }),\n () => setIsLoading(true),\n () => setIsLoading(false),\n showErrorDialog,\n sale!.viagVirtualId\n )\n );\n\n if (hasErrors) {\n return;\n }\n }\n\n handleSubmit(onSubmit)();\n }, [\n activeAccountWebClientConfig,\n alreadyReportedUsedBarcodes,\n anUploadedDocumentIsRequired,\n atleastOneUrlRequired,\n barcodeAlreadyUsedWarning,\n barcodes,\n duplicateMsg,\n extraMsg,\n getValues,\n handleSubmit,\n missingMsg,\n onSubmit,\n requiredMsg,\n sale,\n setError,\n showErrorDialog,\n ticketCnt,\n ]);\n\n const getBody = useCallback(() => {\n switch (currentBody) {\n case TransferTicketBody.Recipient:\n return ;\n case TransferTicketBody.ProofType:\n return (\n \n );\n case TransferTicketBody.ImageProof:\n return ;\n case TransferTicketBody.UrlProof:\n return ;\n case TransferTicketBody.IdProof:\n return ;\n case TransferTicketBody.TicketmasterBarcodesViaTradeDesk:\n return (\n \n );\n case TransferTicketBody.TicketmasterBarcodesViaOneTicket:\n return (\n \n );\n }\n }, [\n currentBody,\n isLoading,\n isSubmitting,\n supportTicketmasterBarcodeTransfer,\n ]);\n\n const LocalModalFooter = () => {\n return (\n <>\n {currentBody !== TransferTicketBody.Recipient && (\n \n )}\n {currentBody === TransferTicketBody.ImageProof ||\n currentBody === TransferTicketBody.UrlProof ||\n currentBody === TransferTicketBody.IdProof ||\n currentBody === TransferTicketBody.TicketmasterBarcodesViaOneTicket ||\n currentBody === TransferTicketBody.TicketmasterBarcodesViaTradeDesk ||\n watchTransferType === TransferTicketType.None ? (\n \n ) : (\n \n )}\n \n );\n };\n\n return (\n <>\n \n }\n />\n \n\n \n \n
    \n \n \n {isSubmitting && }\n {!isSubmitting && getBody()}\n \n \n\n \n {isMobile || currentBody !== TransferTicketBody.Recipient ? (\n \n ) : (\n \n \n \n )}\n \n \n );\n};\n","import { useCallback, useContext } from 'react';\nimport { TransferButton } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { ButtonProps } from 'src/core/ui';\nimport { TurnOnSaleAutoFulfillDialog } from 'src/dialogs/TurnOnSaleAutoFulfillDialog';\nimport { ModalProps } from 'src/modals/Modal';\nimport { TransferTickets } from 'src/modals/TransferTickets';\nimport { ActionOutboxEntityType, SaleDetails } from 'src/WebApiController';\n\nexport const LaunchTransferTickets = ({\n saleId,\n marketplaceSaleId,\n cancelTo,\n eTicketUrlOnly,\n isSaleNoFulfill,\n ...buttonProps\n}: {\n saleId: number;\n marketplaceSaleId?: string | null;\n variant?: ButtonProps['variant'];\n cancelTo?: ModalProps;\n iconOnlyMode?: boolean;\n disabled?: boolean;\n eTicketUrlOnly?: boolean;\n isSaleNoFulfill?: boolean | null;\n}) => {\n const { setModal } = useContext(ModalContext);\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const {\n openDialog: openTurnOnSaleAutoFulfillDialog,\n closeDialog: closeTurnOnSaleAutoFulfillDialog,\n } = useDialog(DialogId.Confirm, TurnOnSaleAutoFulfillDialog);\n\n const transferTickets = useCallback(() => {\n setModal({\n children: (\n \n ),\n clickOutsideToClose: true,\n size: 'slide-in',\n deepLinkValue: saleId,\n trackViewEntityType: ActionOutboxEntityType.Sale,\n });\n }, [setModal, cancelTo, eTicketUrlOnly, saleId]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setActivePosEntity(saleId, marketplaceSaleId);\n transferTickets();\n },\n [setActivePosEntity, saleId, marketplaceSaleId, transferTickets]\n );\n\n const onClickHandler = useCallback(\n (e: React.MouseEvent) => {\n if (isSaleNoFulfill) {\n e?.preventDefault();\n e?.stopPropagation();\n\n openTurnOnSaleAutoFulfillDialog({\n saleId: saleId,\n onOkay: () => {\n closeTurnOnSaleAutoFulfillDialog();\n onLaunchDialog(e);\n },\n onCancel: () => {\n closeTurnOnSaleAutoFulfillDialog();\n onLaunchDialog(e);\n },\n });\n } else {\n onLaunchDialog(e);\n }\n },\n [\n closeTurnOnSaleAutoFulfillDialog,\n isSaleNoFulfill,\n onLaunchDialog,\n openTurnOnSaleAutoFulfillDialog,\n saleId,\n ]\n );\n\n return (\n \n );\n};\n","import { useMutation } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { SaleClient } from 'src/WebApiController';\n\nexport function useUnwasteSale() {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n\n return useMutation({\n mutationFn: async ({ saleId }: { saleId: number }) => {\n return await new SaleClient(activeAccountWebClientConfig).unwasteSale({\n saleId,\n });\n },\n onError: (error: ErrorTypes, { saleId }, context) => {\n trackError('SaleClient.unwasteSale', error, {\n saleId,\n });\n showErrorDialog('SaleClient.unwasteSale', error, {\n trackErrorData: { saleId },\n });\n },\n });\n}\n","import React, { useCallback } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { vars } from 'src/core/themes';\nimport { useUnwasteSale } from 'src/hooks/api/useUnwasteSale';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { IconsFill, ResetIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SaleDetails } from 'src/WebApiController';\n\ninterface UnwasteTicketsButtonProps {\n saleId: number | undefined | null;\n}\n\nexport const UnwasteTicketsButton = ({ saleId }: UnwasteTicketsButtonProps) => {\n const isMobile = useMatchMedia('mobile');\n const { launchDialog, closeDialog, dialogProps } = useBasicDialog();\n const { mutateAsync, isPending } = useUnwasteSale();\n const { posEntity: sale, setActivePosEntity } =\n useActivePosEntityContext();\n\n const onReload = useCallback(() => {\n if (sale) {\n setActivePosEntity(sale.id, sale.idOnMkp, true);\n }\n }, [sale, setActivePosEntity]);\n\n if (!saleId) {\n return null;\n }\n\n return (\n <>\n \n }\n textContentId={ContentId.UnwasteTickets}\n onClick={launchDialog}\n />\n }\n bodyText={}\n okText={ContentId.Yes}\n cancelText={ContentId.No}\n {...dialogProps}\n isLoading={isPending}\n onOkay={async () => {\n await mutateAsync({ saleId });\n closeDialog();\n onReload();\n }}\n />\n \n );\n};\n","import { useCallback, useContext } from 'react';\nimport { UploadButton } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { ButtonProps } from 'src/core/ui';\nimport { TurnOnSaleAutoFulfillDialog } from 'src/dialogs/TurnOnSaleAutoFulfillDialog';\nimport { UploadBarcodeProps, UploadBarcodes } from 'src/modals/UploadBarcodes';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport { ListingActionType, SaleActionType } from 'src/WebApiController';\n\nexport const LaunchUploadBarcodes = ({\n entityId,\n idOnMkp,\n variant,\n iconOnlyMode,\n dropdownItemMode,\n disabled,\n action,\n isSaleNoFulfill,\n ...modalProps\n}: UploadBarcodeProps & {\n entityId: number;\n idOnMkp?: string | null;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n dropdownItemMode?: boolean;\n disabled?: boolean;\n isSaleNoFulfill?: boolean | null;\n action:\n | ListingActionType.PredeliverBarcodes\n | ListingActionType.RedeliverBarcodes\n | SaleActionType.Fulfill\n | SaleActionType.Refulfill;\n}) => {\n const { setModal } = useContext(ModalContext);\n const { setActivePosEntity } =\n useActivePosEntityContext();\n\n const uploadBarcodes = useCallback(() => {\n setModal({\n children: ,\n clickOutsideToClose: true,\n size: 'slide-in',\n });\n }, [setModal, modalProps]);\n\n const {\n openDialog: openTurnOnSaleAutoFulfillDialog,\n closeDialog: closeTurnOnSaleAutoFulfillDialog,\n } = useDialog(DialogId.Confirm, TurnOnSaleAutoFulfillDialog);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setActivePosEntity(entityId, idOnMkp);\n uploadBarcodes();\n },\n [setActivePosEntity, entityId, idOnMkp, uploadBarcodes]\n );\n\n const onClickHandler = useCallback(\n (e: React.MouseEvent) => {\n if (isSaleNoFulfill) {\n e.preventDefault();\n e.stopPropagation();\n\n openTurnOnSaleAutoFulfillDialog({\n saleId: entityId,\n onOkay: () => {\n closeTurnOnSaleAutoFulfillDialog();\n onLaunchDialog(e);\n },\n onCancel: () => {\n closeTurnOnSaleAutoFulfillDialog();\n onLaunchDialog(e);\n },\n });\n } else {\n onLaunchDialog(e);\n }\n },\n [\n closeTurnOnSaleAutoFulfillDialog,\n entityId,\n isSaleNoFulfill,\n onLaunchDialog,\n openTurnOnSaleAutoFulfillDialog,\n ]\n );\n\n const actionContentId =\n action === SaleActionType.Refulfill && isSaleNoFulfill\n ? ContentId.Fulfill\n : action === ListingActionType.RedeliverBarcodes ||\n action === SaleActionType.Refulfill\n ? ContentId.ReuploadBarcodes\n : ContentId.UploadBarcodes;\n\n if (dropdownItemMode) {\n return (\n \n \n \n );\n }\n\n return (\n \n );\n};\n","import { useCallback, useContext } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport {\n DocumentFileUploadInfo,\n ETicketsForm,\n UploadETicketForm,\n UploadETicketsSeatAssignmentBody,\n} from 'src/components/UploadArtifacts/UploadETicketsV2';\nimport { UploadETicketsContextProvider } from 'src/components/UploadArtifacts/UploadETicketsV2/UploadETicketsContext';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { DndGlobalFileDrop } from 'src/core/POS/DnDFileUploader/components/DndGlobalFileDrop';\nimport { DndFilerUploaderContextProvider } from 'src/core/POS/DnDFileUploader/DndFileUploaderContext';\nimport { useEventItemLoadingDisplay } from 'src/hooks/useEventItemLoadingDisplay';\nimport { CancellableFormFooter } from 'src/modals/common';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalBody, ModalFooter, ModalProps } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport {\n DocumentProcessorClient,\n DocumentUploadInfo,\n FileParameter,\n PosClientConfig,\n PosUiActionResult,\n SaleMetrics,\n TicketType,\n UserDocument,\n} from 'src/WebApiController';\n\nimport { Summary } from '../common/Summary';\nimport {\n ModalBodyDataContainer,\n ModalBodyHeaderContainer,\n} from '../Modal/Modal.styled';\n\nexport type UploadETicketsModalProps = {\n onUploadDocuments: (\n client: DocumentProcessorClient,\n docUploadInfo: DocumentUploadInfo,\n file: FileParameter\n ) => Promise;\n onUploadETickets: (\n posClientConfig: PosClientConfig,\n entityId: number,\n ticketAssignments: UserDocument[]\n ) => Promise;\n ticketType: TicketType.ETicket | TicketType.QRCode;\n cancelTo?: ModalProps;\n loadingContentId: FormatContentId;\n searchingContentId: FormatContentId;\n errorContentId: FormatContentId;\n};\n\nexport const UploadETicketsV2 = ({\n loadingContentId,\n searchingContentId,\n errorContentId,\n ...rest\n}: UploadETicketsModalProps) => {\n const { loadingState } = useEventItemLoadingDisplay(\n loadingContentId,\n searchingContentId,\n errorContentId\n );\n\n return loadingState || ;\n};\n\nexport type UploadETicketsBodyProps = Omit<\n UploadETicketsModalProps,\n 'loadingContentId' | 'searchingContentId' | 'errorContentId'\n>;\n\nconst UploadETicketsContent = ({\n ticketType,\n onUploadDocuments,\n onUploadETickets,\n cancelTo,\n}: UploadETicketsBodyProps) => {\n const { setModal, closeModal } = useContext(ModalContext);\n\n const { posEntity, setActivePosEntity } =\n useActivePosEntityContext();\n\n const { refreshMetrics } = useCatalogMetricsContext();\n\n const goBack = useCallback(\n async (isCancelled: boolean) => {\n if (!isCancelled) {\n refreshMetrics?.();\n\n // Refresh the active data so the SaleDetail dialog will have the new content\n await setActivePosEntity(posEntity!.id, posEntity!.idOnMkp, true);\n }\n\n if (cancelTo) {\n setModal(cancelTo);\n } else {\n closeModal(true);\n }\n },\n [\n cancelTo,\n refreshMetrics,\n setActivePosEntity,\n posEntity,\n setModal,\n closeModal,\n ]\n );\n\n return (\n \n void,\n onNext: () => void,\n onCancel: () => void,\n disabled?: boolean\n ) => (\n \n )}\n />\n \n );\n};\n\nconst UploadETicketFormContent = ({\n cancelTo,\n ticketType,\n onNext,\n onCancel,\n disabled,\n eTicketUploadInfos,\n setETicketUploadInfos,\n}: {\n cancelTo?: ModalProps;\n ticketType: TicketType.ETicket | TicketType.QRCode;\n onNext: () => void;\n onCancel: () => void;\n disabled?: boolean;\n eTicketUploadInfos: DocumentFileUploadInfo[];\n setETicketUploadInfos: (infos: DocumentFileUploadInfo[]) => void;\n}) => {\n const { formState } = useFormContext();\n const { isDirty, isSubmitting } = formState;\n\n const { event, posEntity } =\n useActivePosEntityContext();\n\n return (\n <>\n \n \n }\n />\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n );\n};\n","import { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n UploadETickets,\n UploadETicketsModalProps,\n} from 'src/modals/UploadETickets';\nimport { UploadETicketsV2 } from 'src/modals/UploadETickets/UploadETicketsV2';\nimport { Feature } from 'src/WebApiController';\n\ntype UploadETicketsVersionSelectorProps = UploadETicketsModalProps;\n\nexport const UploadETicketsSelector = (\n props: UploadETicketsVersionSelectorProps\n) => {\n const hasUploadTicketFilesFlowV2 = useUserHasFeature(\n Feature.UploadTicketFilesFlowV2\n );\n\n if (hasUploadTicketFilesFlowV2) {\n return ;\n }\n\n return ;\n};\n","import { useCallback, useContext } from 'react';\nimport { UploadButton } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { ButtonProps } from 'src/core/ui';\nimport { TurnOnSaleAutoFulfillDialog } from 'src/dialogs/TurnOnSaleAutoFulfillDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { UploadETicketsSelector } from 'src/modals/PurchaseWizard/UploadETicketsSelector';\nimport { UploadETicketsModalProps } from 'src/modals/UploadETickets';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ListingActionType,\n SaleActionType,\n TicketType,\n} from 'src/WebApiController';\n\nexport const LaunchUploadETickets = ({\n entityId,\n marketplaceSaleId,\n variant,\n iconOnlyMode,\n dropdownItemMode,\n disabled,\n action,\n ticketType,\n isSaleNoFulfill,\n ...modalProps\n}: {\n entityId: number;\n marketplaceSaleId?: string | null;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n dropdownItemMode?: boolean;\n disabled?: boolean;\n isSaleNoFulfill?: boolean | null;\n action:\n | ListingActionType.PredeliverETickets\n | ListingActionType.RedeliverETickets\n | ListingActionType.PredeliverQRCode\n | ListingActionType.RedeliverQRCode\n | SaleActionType.Fulfill\n | SaleActionType.Refulfill;\n} & UploadETicketsModalProps) => {\n const { setModal } = useContext(ModalContext);\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const {\n launchDialog: launchConfirmDialog,\n closeDialog: closeConfirmDialog,\n dialogProps,\n } = useBasicDialog();\n\n const {\n openDialog: openTurnOnSaleAutoFulfillDialog,\n closeDialog: closeTurnOnSaleAutoFulfillDialog,\n } = useDialog(DialogId.Confirm, TurnOnSaleAutoFulfillDialog);\n\n const uploadETickets = useCallback(() => {\n setModal({\n children: (\n \n ),\n clickOutsideToClose: true,\n size: 'slide-in',\n });\n }, [setModal, modalProps, ticketType]);\n\n const onLaunchDialog = useCallback(\n (e?: React.MouseEvent) => {\n e?.preventDefault();\n e?.stopPropagation();\n\n setActivePosEntity(entityId, marketplaceSaleId);\n uploadETickets();\n },\n [setActivePosEntity, entityId, marketplaceSaleId, uploadETickets]\n );\n\n const onClickHandler = useCallback(\n (e?: React.MouseEvent) => {\n if (isSaleNoFulfill) {\n e?.preventDefault();\n e?.stopPropagation();\n\n openTurnOnSaleAutoFulfillDialog({\n saleId: entityId,\n onOkay: () => {\n closeTurnOnSaleAutoFulfillDialog();\n onLaunchDialog(e);\n },\n onCancel: () => {\n closeTurnOnSaleAutoFulfillDialog();\n onLaunchDialog(e);\n },\n });\n } else {\n onLaunchDialog(e);\n }\n },\n [\n closeTurnOnSaleAutoFulfillDialog,\n entityId,\n isSaleNoFulfill,\n onLaunchDialog,\n openTurnOnSaleAutoFulfillDialog,\n ]\n );\n\n const actionContentId =\n action === SaleActionType.Refulfill && isSaleNoFulfill\n ? ContentId.Fulfill\n : action === ListingActionType.PredeliverQRCode ||\n (ticketType === TicketType.QRCode && action === SaleActionType.Fulfill)\n ? ContentId.UploadQRCodes\n : action === ListingActionType.RedeliverQRCode ||\n (ticketType === TicketType.QRCode &&\n action === SaleActionType.Refulfill)\n ? ContentId.ReuploadQRCodes\n : action === ListingActionType.RedeliverETickets ||\n action === SaleActionType.Refulfill\n ? ContentId.ReuploadETickets\n : ContentId.UploadETickets;\n\n const onAttemptLaunchDialog = useCallback(() => {\n if (action === SaleActionType.Refulfill) {\n launchConfirmDialog();\n } else {\n onClickHandler();\n }\n }, [action, launchConfirmDialog, onClickHandler]);\n\n return (\n <>\n {dropdownItemMode ? (\n \n \n \n ) : (\n {\n e.stopPropagation();\n e.preventDefault();\n onAttemptLaunchDialog();\n }}\n textContentId={actionContentId}\n />\n )}\n }\n bodyText={}\n onOkay={onClickHandler}\n onCancel={closeConfirmDialog}\n />\n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const CancelledHoldIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const FulfilledIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const FulfillmentFailedIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const HoldIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const PendingAllocationIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const PendingFulfillmentIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const PendingRejectionIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const ProcessingFulfillmentIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const SaleCancelledIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n );\n};\n","/* eslint-disable react-hooks/rules-of-hooks */\nimport { differenceInMinutes, format } from 'date-fns';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { vars } from 'src/core/themes';\nimport { ButtonProps } from 'src/core/ui';\nimport { ModalProps } from 'src/modals/Modal';\nimport { SaleDetailsModalConfig } from 'src/modals/SaleDetails';\nimport { LaunchConfirmSale } from 'src/modals/SaleDetails/actions/LaunchConfirmSale';\nimport { LaunchDeallocateSale } from 'src/modals/SaleDetails/actions/LaunchDeallocateSale';\nimport { LaunchDownloadUserDocuments } from 'src/modals/SaleDetails/actions/LaunchDownloadUserDocuments';\nimport { LaunchEditOfflineSale } from 'src/modals/SaleDetails/actions/LaunchEditOfflineSale';\nimport { LaunchExpireHold } from 'src/modals/SaleDetails/actions/LaunchExpireHold';\nimport { LaunchMarkAsFulfilled } from 'src/modals/SaleDetails/actions/LaunchMarkAsFulfilled';\nimport { LaunchRejectSale } from 'src/modals/SaleDetails/actions/LaunchRejectSale';\nimport { LaunchResetFulfillmentButton } from 'src/modals/SaleDetails/actions/LaunchResetFulfillmentButton';\nimport { LaunchTransferTickets } from 'src/modals/SaleDetails/actions/LaunchTransferTickets';\nimport { UnwasteTicketsButton } from 'src/modals/SaleDetails/components/UnwasteTickets/UnwasteTicketsButton';\nimport { LaunchUploadBarcodes } from 'src/modals/UploadBarcodes/LaunchUploadBarcodes';\nimport { LaunchUploadETickets } from 'src/modals/UploadETickets/LaunchUploadETickets';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport { CancelledHoldIcon } from 'src/svgs/CancelledHoldIcon';\nimport { FulfilledIcon } from 'src/svgs/FulfilledIcon';\nimport { FulfillmentFailedIcon } from 'src/svgs/FulfillmentFailedIcon';\nimport { HoldIcon } from 'src/svgs/HoldIcon';\nimport { PendingAllocationIcon } from 'src/svgs/PendingAllocationIcon';\nimport { PendingFulfillmentIcon } from 'src/svgs/PendingFulfillmentIcon';\nimport { PendingRejectionIcon } from 'src/svgs/PendingRejectionIcon';\nimport { ProcessingFulfillmentIcon } from 'src/svgs/ProcessingFulfillmentIcon';\nimport { SaleCancelledIcon } from 'src/svgs/SaleCancelledIcon';\nimport { IconsFill, WarningOutlineIcon } from 'src/svgs/Viagogo';\nimport {\n EventIdQueryParam,\n REACT_APP_STUBHUB_MY_HUB_BASE_URL,\n SaleDeeplinkQueryParam,\n} from 'src/utils/constants/constants';\nimport { removeFilters } from 'src/utils/eventQueryUtils';\nimport {\n ActionOutboxEntityType,\n DocumentProcessorClient,\n DocumentUploadInfo,\n Event,\n FileParameter,\n Listing,\n Marketplace,\n MarketplaceContractState,\n MarketplaceSaleInput,\n MarketplaceSaleLineItem,\n PointOfSaleSaleStatus,\n PosClientConfig,\n PosManagedMarketplaceSaleInput,\n SaleActionType,\n SaleClient,\n SaleDetails,\n SaleInput,\n SiteMarketplacePaymentLineInput,\n Ticket,\n TicketBarcode,\n TicketType,\n UserDocument,\n} from 'src/WebApiController';\n\nimport { ContentId } from './constants/contentId';\nimport { SALES_STATUS_TO_CID } from './constants/contentIdMaps';\nimport { FormatContentId } from './constants/formatContentId';\nimport { getFullUrl, getPathFromMainRoute } from './deepLinkUtils';\nimport { getInHandDateBasedOnEvent } from './eventWithDataUtils';\nimport { getLocaleFromLanguageOrCurrent } from './localeUtils';\nimport { getTimeDateDifferenceAsShorthand } from './numberFormatter';\nimport { posChangedField, posField } from './posFieldUtils';\nimport { getDefaultTicketType, getTicketTypeIcon } from './ticketTypeUtils';\n\nexport const NON_MAIN_SALE_ACTIONS = [\n SaleActionType.Deallocate,\n SaleActionType.MarkAsFulfilled,\n SaleActionType.ResetFulfillment,\n SaleActionType.Unwaste,\n];\n\nexport const getSaleDetailsModalConfigWithDeepLink = (\n deepLinkId?: string | number,\n doTrackView = false\n) => {\n const modalConfig = SaleDetailsModalConfig;\n return {\n ...modalConfig,\n deepLinkValue: deepLinkId,\n trackViewEntityType: doTrackView ? ActionOutboxEntityType.Sale : undefined,\n };\n};\n\nexport const getSaleDetailsDeepLinkUrl = (deepLinkId?: string | number) => {\n return getFullUrl(MainRoute.Sales, SaleDeeplinkQueryParam, deepLinkId);\n};\n\nexport const getSaleDetailsRelativeUrl = (deepLinkId?: string | number) => {\n const navigateUrl = `${getPathFromMainRoute(\n MainRoute.Sales\n )}?${SaleDeeplinkQueryParam}=${deepLinkId}`;\n\n return navigateUrl;\n};\n\nexport const openOnStubHubMyAccount = (marketplaceSaleId: string | null) => {\n if (!marketplaceSaleId) return;\n\n window.open(\n new URL(\n `/sales?saleId=${marketplaceSaleId}`,\n /* TODO - POS-777 - this should be the viagogo url if the event is a UK event */\n REACT_APP_STUBHUB_MY_HUB_BASE_URL\n ),\n '_blank'\n );\n};\n\nexport const getSaleActionButton = (\n saleId: number,\n marketplaceSaleId: string | null,\n marketplace: Marketplace | null,\n saleStatus: PointOfSaleSaleStatus,\n action: SaleActionType,\n ticketType: TicketType | null,\n isNoFulfill?: boolean | null,\n variant?: ButtonProps['variant'],\n iconOnlyMode?: boolean,\n cancelTo?: ModalProps,\n disabled?: boolean\n) => {\n if (action === SaleActionType.Reject) {\n return (\n \n );\n }\n if (action === SaleActionType.DownloadUserDocuments) {\n return (\n \n );\n }\n\n if (\n action === SaleActionType.Deallocate ||\n action === SaleActionType.RejectAllocation\n ) {\n return (\n \n );\n }\n\n if (action === SaleActionType.ResetFulfillment) {\n return (\n \n );\n }\n\n if (action === SaleActionType.MarkAsFulfilled) {\n return (\n \n );\n }\n\n if (\n action === SaleActionType.Confirm ||\n action === SaleActionType.Allocate ||\n action === SaleActionType.ConfirmAllocation\n ) {\n return (\n \n );\n }\n if (action === SaleActionType.ExpireHold) {\n return (\n \n );\n }\n\n if (\n action === SaleActionType.Fulfill ||\n action === SaleActionType.Refulfill\n ) {\n switch (ticketType) {\n case TicketType.Barcode:\n return (\n \n new SaleClient(clientConfig).updateBarcodesForSale(\n saleId,\n barcodes\n )\n }\n entityId={saleId}\n idOnMkp={marketplaceSaleId}\n iconOnlyMode={iconOnlyMode}\n cancelTo={cancelTo}\n variant={variant}\n action={action}\n loadingContentId={FormatContentId.LoadingSaleId}\n errorContentId={FormatContentId.CouldNotFindSaleId}\n searchingContentId={FormatContentId.SearchingForSaleId}\n isSaleNoFulfill={isNoFulfill}\n />\n );\n case TicketType.ETicket:\n case TicketType.QRCode:\n return (\n \n ticketType === TicketType.ETicket\n ? new SaleClient(clientConfig).saveETicketAssignments(\n entityId,\n etickets\n )\n : new SaleClient(clientConfig).saveQRCodeAssignments(\n entityId,\n etickets\n )\n }\n onUploadDocuments={(\n client: DocumentProcessorClient,\n docUploadInfo: DocumentUploadInfo,\n file: FileParameter\n ) =>\n client.uploadDocumentForSale(\n docUploadInfo.entityId,\n ActionOutboxEntityType.Sale,\n docUploadInfo.documentType,\n docUploadInfo.blobName,\n docUploadInfo.documentId,\n docUploadInfo.contentType,\n file\n )\n }\n loadingContentId={FormatContentId.LoadingSaleId}\n errorContentId={FormatContentId.CouldNotFindSaleId}\n searchingContentId={FormatContentId.SearchingForSaleId}\n isSaleNoFulfill={isNoFulfill}\n />\n );\n case TicketType.Transfer:\n case TicketType.ETicketUrl:\n case TicketType.SMPWallet:\n return (\n \n );\n default:\n return (\n {\n e.stopPropagation();\n openOnStubHubMyAccount(marketplaceSaleId);\n }}\n />\n );\n }\n }\n\n if (action === SaleActionType.EditOffline) {\n return (\n \n );\n }\n\n if (action === SaleActionType.Unwaste) {\n return ;\n }\n};\n\nexport function getInHandDisplayData(\n inhandTextString: string,\n utcDate?: Date | null,\n fromUtcDate: Date = new Date(),\n needsToFulfill = false,\n showAbsoluteDate = false,\n): {\n displayText: string | null;\n displayTooltip: string | null;\n alertIcon: React.ReactNode | null;\n} {\n const minutes = !utcDate ? -1 : differenceInMinutes(utcDate, fromUtcDate);\n const shorthandDifference = getTimeDateDifferenceAsShorthand({\n inputDate: utcDate,\n dateToCompareTo: fromUtcDate,\n hideRelativeTerms: true,\n });\n let displayText = null;\n let alertIcon: React.ReactNode | null = (\n \n );\n\n if (minutes <= 0) {\n displayText = inhandTextString;\n\n if (needsToFulfill) {\n alertIcon = (\n \n );\n }\n } else {\n displayText = shorthandDifference;\n if (showAbsoluteDate && utcDate) {\n displayText = format(utcDate, 'MMM d, yyyy', {\n locale: getLocaleFromLanguageOrCurrent(),\n });\n }\n \n const hours = minutes / 60;\n // Do not alert when in-hand date is still < 48 hours in the future\n if (hours > 48) alertIcon = null;\n }\n\n const displayTooltip = utcDate\n ? format(utcDate, 'MMM d, yyyy hh:mm', {\n locale: getLocaleFromLanguageOrCurrent(),\n })\n : null;\n\n\n return {\n displayText,\n displayTooltip,\n alertIcon,\n };\n}\n\nexport const getMarketplaceSaleInputFromListing = (\n listing: Listing,\n event: Event\n) => {\n const curMillis = new Date().getTime();\n\n return {\n marketplaceSaleId: `Sale-${curMillis}`, // the chance of 2 people creating the same Offline sale in the same milli is rare - this makes a short enough ID\n marketplace: undefined,\n listingId: listing.id,\n section: posChangedField(listing.seating.section),\n row: posChangedField(listing.seating.row),\n seatFrom: posChangedField(''),\n seatTo: posChangedField(''),\n posEventId: listing.posEvId,\n viagogoEventId: event.viagId,\n eventMappingId: event.mappingId,\n saleDate: posChangedField(new Date().toISOString()),\n currencyCode: posChangedField(listing.currency),\n totalNetProceeds: posChangedField(0),\n inHandDate: posChangedField(\n listing.inHandAt ?? getInHandDateBasedOnEvent(event)\n ),\n venueId: event.venueId,\n quantitySold: posChangedField(listing.availQty),\n ticketType: posChangedField(\n listing.topPriTktType ?? getDefaultTicketType(listing.delivType)\n ),\n buyerName: posChangedField(null),\n buyerEmail: posChangedField(null),\n buyerPhone: posChangedField(null),\n listingNotes: posChangedField(listing.seatTraits),\n saleStatus: posChangedField(PointOfSaleSaleStatus.PendingFulfillment), // We want to create this already-allocated\n } as unknown as MarketplaceSaleInput;\n};\n\nexport const getPosManagedMarketplaceSaleInputFromListing = (\n listing: Listing,\n event: Event\n) => {\n const curMillis = new Date().getTime();\n\n return {\n marketplaceSaleId: `Offline-${curMillis}`, // the chance of 2 people creating the same Offline sale in the same milli is rare - this makes a short enough ID\n listingId: listing.id,\n section: posChangedField(listing.seating.section),\n row: posChangedField(listing.seating.row),\n seatFrom: posChangedField(''),\n seatTo: posChangedField(''),\n posEventId: listing.posEvId,\n viagogoEventId: event.viagId,\n eventMappingId: event.mappingId,\n saleDate: posChangedField(new Date().toISOString()),\n currencyCode: posChangedField(listing.currency),\n totalNetProceeds: posChangedField(0),\n inHandDate: posChangedField(\n listing.inHandAt ?? getInHandDateBasedOnEvent(event)\n ),\n venueId: event.venueId,\n quantitySold: posChangedField(listing.availQty),\n ticketType: posChangedField(\n listing.topPriTktType ?? getDefaultTicketType(listing.delivType)\n ),\n buyerName: posChangedField(null),\n buyerEmail: posChangedField(null),\n buyerPhone: posChangedField(null),\n listingNotes: posChangedField(listing.seatTraits),\n saleStatus: posChangedField(PointOfSaleSaleStatus.Hold),\n } as PosManagedMarketplaceSaleInput;\n};\n\nexport const getPosManagedMarketplaceSaleInputFromSale = (\n sale: SaleDetails,\n event: Event\n) => {\n return {\n saleId: sale.id,\n marketplaceSaleId: sale.idOnMkp,\n listingId: sale.listingId ?? 0,\n section: posField(sale.seating.section),\n row: posField(sale.seating.row),\n seatFrom: posField(sale.seating.seatFr),\n seatTo: posField(sale.seating.seatTo),\n posEventId: sale.posEvId,\n viagogoEventId: event.viagId,\n eventMappingId: event.mappingId,\n saleDate: posField(new Date().toISOString()),\n currencyCode: posField(sale.currency),\n totalNetProceeds: posField(sale.ttlNetProcs?.amt ?? 0),\n inHandDate: posField(sale.inHandAt),\n venueId: event.venueId,\n quantitySold: posField(sale.qtySold),\n ticketType: posField(sale.ticketType),\n buyerName: posField(sale.transDest?.name),\n buyerEmail: posField(sale.transDest?.email),\n buyerPhone: posField(sale.transDest?.phoneNumber),\n listingNotes: posField(sale.seatTraits),\n saleStatus: posField(sale.status),\n paymentState: posField(sale.pmtState),\n internalNotes: posField(sale.privNotes),\n fulfillerSellerUserId: posField(sale.fulfillerId),\n } as PosManagedMarketplaceSaleInput;\n};\n\nexport const getConsecutiveSeatingsForQuantity = (\n tickets?: Ticket[],\n quantity?: number | null,\n canAllocateToNonConsecutiveSeats?: boolean\n) => {\n if (!tickets || !quantity) return undefined;\n\n const filteredTickets = tickets\n .filter((t) => t.saleId == null && t.holdId == null) // we only want the unsold/unhold tickets\n .toSorted((a, b) => (a.lstOrd ?? a.ord) - (b.lstOrd ?? b.ord));\n\n const result: Record = {};\n\n if (quantity < 2) {\n // Quantity 1 or less, we want to set seatFr and seatTo to same number\n return {\n result: filteredTickets.reduce(\n (r, c) => {\n r[c.lstOrd ?? c.ord] = c.lstOrd ?? c.ord;\n return r;\n },\n {} as Record\n ),\n maxAvailableQuantity: 1,\n };\n }\n\n let maxAvailableQuantity = 1;\n\n if (canAllocateToNonConsecutiveSeats) {\n // We treat the tickets as a consecutive sequence\n maxAvailableQuantity = filteredTickets.length;\n for (let i = 0; i < filteredTickets.length; i++) {\n if (i + quantity - 1 < filteredTickets.length) {\n const ord = filteredTickets[i].lstOrd ?? filteredTickets[i].ord;\n const nextOrd =\n filteredTickets[i + quantity - 1].lstOrd ??\n filteredTickets[i + quantity - 1].ord;\n result[ord] = nextOrd;\n }\n }\n } else {\n // We want to generate a seating for every seatFr\n for (let i = 0; i < filteredTickets.length; i++) {\n let isValidSequence = true;\n let sequenceLength = 1;\n for (\n let j = i;\n j < i + quantity - 1 && j < filteredTickets.length - 1;\n j++\n ) {\n const currentSeat = filteredTickets[j];\n const nextSeat = filteredTickets[j + 1];\n if (currentSeat.seat && nextSeat.seat) {\n const curOrdinal = currentSeat.lstOrd ?? currentSeat.ord;\n const nexOrdinal = nextSeat.lstOrd;\n if (curOrdinal + 1 !== nexOrdinal) {\n isValidSequence = false;\n break;\n } else {\n sequenceLength++;\n }\n } else {\n sequenceLength++;\n }\n }\n\n if (sequenceLength > maxAvailableQuantity) {\n // Update the max possible quantity as we go along\n maxAvailableQuantity = sequenceLength;\n }\n\n // If we found a valid sequence for the requested quantity - save it to result\n if (isValidSequence && sequenceLength === quantity) {\n const ord = filteredTickets[i].lstOrd ?? filteredTickets[i].ord;\n const nextOrd =\n filteredTickets[i + quantity - 1].lstOrd ??\n filteredTickets[i + quantity - 1].ord;\n result[ord] = nextOrd;\n }\n }\n }\n\n return { result: result, maxAvailableQuantity: maxAvailableQuantity };\n};\n\nexport const getSaleStatusDisplayContentId = (\n status?: PointOfSaleSaleStatus | null,\n marketplaceContractState?: MarketplaceContractState | null,\n marketplace?: Marketplace | null\n) => {\n if (\n marketplaceContractState ===\n MarketplaceContractState.CancelledProvisional &&\n marketplace !== Marketplace.Offline\n ) {\n return ContentId.CancelledHoldOnMarketplace;\n }\n\n return status ? SALES_STATUS_TO_CID[status] : undefined;\n};\n\nexport const getSaleStatusIcon = (\n status?: PointOfSaleSaleStatus | null,\n marketplaceContractState?: MarketplaceContractState | null,\n marketplace?: Marketplace | null\n) => {\n if (\n marketplaceContractState ===\n MarketplaceContractState.CancelledProvisional &&\n marketplace !== Marketplace.Offline\n ) {\n return CancelledHoldIcon;\n }\n\n switch (status) {\n case PointOfSaleSaleStatus.CancelledHold:\n return CancelledHoldIcon;\n\n case PointOfSaleSaleStatus.Fulfilled:\n return FulfilledIcon;\n\n case PointOfSaleSaleStatus.FulfillmentFailed:\n return FulfillmentFailedIcon;\n\n case PointOfSaleSaleStatus.Hold:\n return HoldIcon;\n\n case PointOfSaleSaleStatus.PendingConfirmation:\n return PendingAllocationIcon;\n\n case PointOfSaleSaleStatus.ProcessingFulfillment:\n return ProcessingFulfillmentIcon;\n\n case PointOfSaleSaleStatus.PendingRejection:\n return PendingRejectionIcon;\n\n case PointOfSaleSaleStatus.Rejected:\n return SaleCancelledIcon;\n case PointOfSaleSaleStatus.PendingFulfillment:\n default:\n return PendingFulfillmentIcon;\n }\n};\n\nexport const getSiteMarketplacePaymentLineInput = (\n mkpLine: MarketplaceSaleLineItem\n): SiteMarketplacePaymentLineInput => {\n return {\n marketplacePaymentLineId: mkpLine.id,\n marketplacePaymentId: mkpLine.posPmtId,\n externalPaymentId: mkpLine.extPmtId,\n externalPaymentLineId: mkpLine.extLineId,\n externalSaleId: mkpLine.extSaleId,\n saleId: mkpLine.saleId,\n currency: mkpLine.amt.currency!,\n amount: mkpLine.amt.amt,\n isCredit: mkpLine.isCred,\n paymentLineType: mkpLine.type,\n paymentDate: mkpLine.date,\n receivedDate: mkpLine.recvDate,\n paymentState: mkpLine.state,\n };\n};\n\nexport const getSaleDetailsUpdateInput = (\n sale?: SaleDetails | null\n): SaleInput => {\n return {\n saleId: sale?.id ?? -1,\n ticketType: posField(sale?.ticketType ?? null),\n fulfillerSellerUserId: posField(sale?.fulfillerId ?? null),\n tags: posField(sale?.tags ?? null),\n internalNotes: posField(sale?.privNotes ?? null),\n lineItems: posField(sale?.lineItems ?? null),\n paymentReceived: posField(sale?.pmtRcv ?? null),\n paymentReferenceId: posField(sale?.pmtRefId ?? null),\n paymentAmountReceived: posField(sale?.pmtAmtRcv ?? null),\n paymentCurrency: posField(sale?.pmtCurcy ?? null),\n disableAutoSourcing: posField(sale?.disAutoSource ?? null),\n isNoFulfill: posField(sale?.isNoFulfill ?? null),\n marketplacePaymentLines: posField(\n sale?.mkpLines?.map(getSiteMarketplacePaymentLineInput) ?? null\n ),\n commissions: posField(sale?.commissionOverride ?? null),\n lastPaymentDate: posField(sale?.lastPmtDate ?? null),\n cancellationReason: posField(sale?.cancellationReason ?? null),\n };\n};\n\nexport const createSaleEventPageUrl = (\n eventId: string,\n queryParamsToRemove?: string[] // queryParams to remove from final URL\n): string => {\n const url = new URL(window.location.href);\n url.searchParams.set(EventIdQueryParam, eventId);\n (queryParamsToRemove ?? []).forEach((param) =>\n url.searchParams.delete(param)\n );\n const cleanSearchParams = removeFilters(url.searchParams.toString(), [\n 'searchText',\n ]);\n return `/sales/event?${cleanSearchParams}`;\n};\n","import { LaunchActivityLog } from 'src/modals/ActivityLog';\nimport { SaleDeeplinkQueryParam } from 'src/utils/constants/constants';\nimport { getSaleDetailsModalConfigWithDeepLink } from 'src/utils/saleUtils';\n\nimport { ShareButton } from '../ShareButton/ShareButton';\nimport * as styles from './EventEntityHeader.css';\nimport { EntityIdNumberDiv, EntityInfoDiv } from './EventEntityHeader.styled';\n\nexport const SaleInfoDisplay = ({\n marketplace,\n entityId,\n idOnMkp,\n}: {\n marketplace?: string | null;\n idOnMkp: string | null;\n entityId: number;\n}) => {\n return (\n \n
    \n \n #{idOnMkp || entityId}\n
    \n
    {marketplace}
    \n \n
    \n );\n};\n","import { format } from 'date-fns';\nimport { ReactNode } from 'react';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { EventInfo } from 'src/components/Events/EventInfo';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useGetEventFullInfo } from 'src/hooks/useGetEventFullInfo';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { SummaryWrapper } from 'src/modals/common/Summary/SummaryWrapper';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport { SeatSaverIcon } from 'src/svgs';\nimport { ToBeDeterminedIcon } from 'src/svgs/Viagogo';\nimport {\n InventoryDeeplinkQueryParam,\n SaleDeeplinkQueryParam,\n} from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getFormattedEventName } from 'src/utils/eventWithDataUtils';\nimport { getFormattedLocation } from 'src/utils/format';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport {\n DateTimeRange,\n Event,\n MarketplaceEntityWithTickets,\n Performer,\n Seating,\n Venue,\n} from 'src/WebApiController';\n\nimport { ListingInfoDisplay } from '../EventEntityHeader/ListingInfoDisplay';\nimport { SaleInfoDisplay } from '../EventEntityHeader/SaleInfoDisplay';\nimport { ShareButton } from '../ShareButton/ShareButton';\nimport * as styles from './Summary.css';\nimport {\n Divider,\n MarketPlaceDetailsWrapper,\n SummaryColumn,\n SummaryDateSection,\n SummaryDetailsSection,\n SummaryMainText,\n SummaryMainTextPinkAccent,\n SummaryRow,\n} from './Summary.styled';\n\nexport const Summary = ({\n event,\n eventNameLink,\n proposedVenue,\n proposedPerformer,\n posEntity,\n actions,\n}: {\n event: Event;\n eventNameLink?: string;\n proposedPerformer?: Performer | null;\n proposedVenue?: Venue | null;\n posEntity?: MarketplaceEntityWithTickets;\n actions?: ReactNode;\n}) => {\n const { performer, venue } = useGetEventFullInfo(\n event,\n proposedPerformer,\n proposedVenue\n );\n if (!event) {\n throw new Error('Event could not be loaded');\n }\n\n const { mainRoute } = useAppContext();\n\n const { mkp, id: entityId, idOnMkp, seating, ticketCnt } = posEntity ?? {};\n\n const isSeatSaver = (posEntity as { isSeatSaver?: boolean | null })\n ?.isSeatSaver;\n\n const isMobile = useMatchMedia('mobile');\n const [mainText, connectText, subText] = getFormattedEventName({\n event,\n performer,\n });\n const venueLocation = venue && getFormattedLocation(venue);\n return isMobile ? (\n \n \n \n \n {actions}\n \n \n \n \n \n \n \n \n ) : (\n \n \n \n \n \n \n \n \n {isSeatSaver && (\n \n \n \n \n )}\n \n {posEntity &&\n (mainRoute === MainRoute.Sales ||\n mainRoute === MainRoute.SalesEvent) && (\n \n )}\n {posEntity &&\n (mainRoute === MainRoute.Inventory ||\n mainRoute === MainRoute.InventoryEvent) && (\n \n )}\n \n \n {actions &&
    {actions}
    }\n
    \n );\n};\n\nconst SummaryDateDisplay = ({\n dates,\n}: {\n dates?: DateTimeRange | null;\n hideYear?: boolean;\n}) => {\n const locale = getLocaleFromLanguageOrCurrent();\n\n const startDateObj = dates?.start;\n\n const startDate = startDateObj == null ? null : new Date(startDateObj);\n\n return (\n \n {!startDate && }\n {startDate && (\n <>\n \n {format(startDate, 'eee', { locale })}\n \n \n {format(startDate, 'h:mm a', { locale })}\n \n \n {format(startDate, 'MMM d, yyyy', {\n locale,\n })}\n \n \n )}\n \n );\n};\n\nconst MarketPlaceDetails = ({\n marketplace,\n entityId,\n idOnMkp,\n}: {\n marketplace?: string | null;\n idOnMkp: string | null;\n entityId: number;\n}) => {\n const { mainRoute } = useAppContext();\n return (\n \n
    \n \n \n #{idOnMkp || entityId}\n \n
    \n {marketplace}\n
    \n );\n};\n\nconst EventDetails = ({\n seating,\n isSeatSaver,\n}: {\n seating: Seating;\n isSeatSaver?: boolean;\n}) => {\n return (\n \n \n \n );\n};\n","import { PurchaseEventItemHeader } from 'src/modals/common';\nimport { VenueConfigSummary } from 'src/modals/common/Summary';\nimport { formatCurrency } from 'src/utils/numberFormatter';\nimport { getTicketGroupInputTotalCost } from 'src/utils/ticketUtils';\nimport { TicketGroupInput } from 'src/WebApiController';\n\ninterface PurchaseTicketFlowEventHeaderProps {\n isSingleInputModeForMultiEvent: boolean;\n ticketGroups: TicketGroupInput[];\n}\n\nexport const PurchaseTicketsFlowEventHeader = ({\n isSingleInputModeForMultiEvent,\n ticketGroups,\n}: PurchaseTicketFlowEventHeaderProps) => {\n const ticketGroup = ticketGroups[0];\n\n if (!ticketGroup || !ticketGroup.event) {\n return null;\n }\n\n if (!isSingleInputModeForMultiEvent) {\n const totalCost = getTicketGroupInputTotalCost(ticketGroup);\n return (\n \n );\n }\n\n const { event, performer, venue } = ticketGroup;\n\n const venues =\n (venue && {\n [event.viagVirtualId]: venue,\n }) ||\n undefined;\n\n const performers =\n (performer && {\n [event.viagVirtualId]: performer,\n }) ||\n undefined;\n\n return (\n tg.event!) || []}\n eventSelected={event}\n venues={venues}\n performers={performers}\n />\n );\n};\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { FormPage } from 'src/core/POS/FormPage';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Radio, RadioGroup, Stack } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { CheckboxContainer, FieldWrapper, FormRow } from 'src/modals/common';\nimport { fieldText } from 'src/modals/common/Purchase/Purchase.css';\nimport { TagIcon } from 'src/svgs';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getAllInPriceFromListPrice,\n getListPriceFromAllinPrice,\n} from 'src/utils/inventoryUtils';\nimport { formatCurrency } from 'src/utils/numberFormatter';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseOrderDetailsInput } from 'src/utils/purchaseUtils';\nimport { Marketplace } from 'src/WebApiController';\n\nimport { CostType } from '../TicketGroupInput';\n\nexport const CostSection = ({\n ticketGroupIndex,\n disabled,\n}: {\n ticketGroupIndex: number;\n disabled?: boolean;\n}) => {\n const { setValue, formState, getFieldState, clearErrors, watch } =\n useFormContext();\n\n const { getUiCurrency } = useLocalizationContext();\n const { loginContext } = useAppContext();\n\n const ticketGroup = watch(`ticketGroups.${ticketGroupIndex}`);\n const ticketCnt = watch(\n `ticketGroups.${ticketGroupIndex}.numberOfTickets.value`\n );\n const unitCost = watch(`ticketGroups.${ticketGroupIndex}.unitCost.value`);\n const faceValueCost = watch(\n `ticketGroups.${ticketGroupIndex}.faceValueCost.value`\n );\n const expectedValue = watch(\n `ticketGroups.${ticketGroupIndex}.expectedValue.value`\n );\n const websitePrice = watch(`ticketGroups.${ticketGroupIndex}.webPrice`);\n const taxPaid = watch(`ticketGroups.${ticketGroupIndex}.taxPaid.value`);\n const autoBroadcastCreatedListing = watch(\n `ticketGroups.${ticketGroupIndex}.autoBroadcastCreatedListing`\n );\n\n const unitCostField: `ticketGroups.${number}.unitCost` = `ticketGroups.${ticketGroupIndex}.unitCost`;\n const taxPaidField: `ticketGroups.${number}.taxPaid` = `ticketGroups.${ticketGroupIndex}.taxPaid`;\n const expectedValueField: `ticketGroups.${number}.expectedValue` = `ticketGroups.${ticketGroupIndex}.expectedValue`;\n const websitePriceField: `ticketGroups.${number}.webPrice` = `ticketGroups.${ticketGroupIndex}.webPrice`;\n\n const faceValueCostField: `ticketGroups.${number}.faceValueCost` = `ticketGroups.${ticketGroupIndex}.faceValueCost`;\n\n const unitCostError = getFieldState(unitCostField, formState)?.error?.message;\n const faceValueCostError = getFieldState(faceValueCostField, formState)?.error\n ?.message;\n\n const uiCurrency = useMemo(\n () => getUiCurrency(ticketGroup.currencyCode?.value),\n [getUiCurrency, ticketGroup.currencyCode?.value]\n );\n\n const isMobile = useMatchMedia('mobile');\n\n const [costSelected, setCostSelected] = useState(\n CostType.CostPerTicket\n );\n const [totalCost, setTotalCost] = useState(0);\n\n useEffect(() => {\n if (costSelected === CostType.CostPerTicket) {\n setTotalCost((unitCost ?? 0) * (ticketCnt ?? 0));\n }\n }, [unitCost, costSelected, ticketCnt]);\n\n const setFaceValue = useCallback(\n (faceValue: number) => {\n if (\n faceValue >= 0 &&\n faceValue <= Number.MAX_VALUE &&\n faceValue !== faceValueCost\n ) {\n setValue(faceValueCostField, posChangedField(faceValue));\n }\n },\n [faceValueCostField, setValue, faceValueCost]\n );\n\n const setUnitCost = useCallback(\n (newUnitCost: number) => {\n if (newUnitCost >= 0 && newUnitCost <= Number.MAX_VALUE) {\n clearErrors(unitCostField);\n\n if (newUnitCost !== unitCost) {\n if (newUnitCost === faceValueCost) {\n setFaceValue(newUnitCost);\n\n if (newUnitCost > 0 || autoBroadcastCreatedListing === false) {\n clearErrors(faceValueCostField);\n }\n }\n setValue(unitCostField, posChangedField(newUnitCost));\n }\n }\n },\n [\n autoBroadcastCreatedListing,\n clearErrors,\n faceValueCostField,\n setFaceValue,\n setValue,\n faceValueCost,\n unitCost,\n unitCostField,\n ]\n );\n\n const stubHubMarketplace =\n loginContext?.user?.activeAccount.marketplaceSettings.find(\n (mps) => mps.mkp === Marketplace.StubHub\n );\n return (\n }\n title={}\n >\n \n \n {\n if (value) {\n setCostSelected(value as CostType);\n }\n }}\n >\n \n \n \n \n }\n disabled={disabled}\n />\n \n \n \n }\n disabled={disabled}\n />\n \n \n \n \n {costSelected === CostType.TotalCost && (\n \n \n }\n >\n {\n const v = parseFloat(e.target.value) || 0;\n if (v >= 0 && v <= Number.MAX_VALUE) {\n setTotalCost(v);\n if (ticketGroup.numberOfTickets?.value) {\n const costPerTicket =\n v / ticketGroup.numberOfTickets.value;\n setUnitCost(costPerTicket);\n }\n }\n }}\n />\n \n \n \n )}\n \n \n }\n >\n {\n const v = parseFloat(e.target.value) || 0;\n setUnitCost(v);\n setTotalCost(\n ticketGroup.numberOfTickets?.value\n ? v * ticketGroup.numberOfTickets.value\n : 0\n );\n }}\n />\n \n \n \n }\n errors={faceValueCostError}\n >\n {\n const v = parseFloat(e.target.value) || 0;\n setFaceValue(v);\n\n if (v > 0 || autoBroadcastCreatedListing === false) {\n clearErrors(faceValueCostField);\n }\n }}\n />\n \n \n \n }>\n {\n const newExpectedValue = parseFloat(e.target.value) || 0;\n if (\n newExpectedValue >= 0 &&\n newExpectedValue <= Number.MAX_VALUE &&\n newExpectedValue !== expectedValue\n ) {\n setValue(\n expectedValueField,\n posChangedField(newExpectedValue)\n );\n const newWebsitePrice = getAllInPriceFromListPrice(\n newExpectedValue,\n null,\n stubHubMarketplace?.sellerFee\n );\n if (newWebsitePrice)\n setValue(websitePriceField, newWebsitePrice);\n }\n }}\n />\n \n \n \n }>\n {\n const newWebsitePrice = parseFloat(e.target.value) || 0;\n if (\n newWebsitePrice >= 0 &&\n newWebsitePrice <= Number.MAX_VALUE &&\n newWebsitePrice !== websitePrice\n ) {\n setValue(websitePriceField, newWebsitePrice);\n const newExpectedValue = getListPriceFromAllinPrice(\n newWebsitePrice,\n null,\n stubHubMarketplace?.sellerFee\n );\n if (newExpectedValue)\n setValue(\n expectedValueField,\n posChangedField(newExpectedValue)\n );\n }\n }}\n />\n \n \n \n {costSelected === CostType.CostPerTicket && (\n \n \n }\n >\n
    \n {formatCurrency(\n totalCost || 0,\n uiCurrency.code,\n uiCurrency.dec\n )}\n
    \n \n
    \n
    \n )}\n \n \n \n }\n disabled={disabled}\n checked={(taxPaid ?? 0) === 0} // tax exempt true means zero tax is paid\n onChange={(e) => {\n const isChecked = e.target.checked;\n setValue(taxPaidField, posChangedField(isChecked ? 0 : 1));\n }}\n />\n \n \n \n \n );\n};\n","import { useCallback, useEffect, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { TicketTypePriorityInput } from 'src/components/common/TicketTypePriorityInput';\nimport { DeliveryTypeRadioInput } from 'src/components/Input/DeliveryTypeRadioInput';\nimport { InHandDateInput } from 'src/components/Input/InHandDateInput';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { FormPage } from 'src/core/POS/FormPage';\nimport { InfoMessage } from 'src/core/POS/MessageWithIcon/InfoMessage';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { AlertWithSuppressionDialog } from 'src/dialogs/AlertWithSuppressionDialog';\nimport { useDeliveryInfoChangeDialog } from 'src/dialogs/AlertWithSuppressionDialog/useDeliveryInfoChangeDialog';\nimport { useDeliveryOverrideForNewTicketGroup } from 'src/hooks/api/useDeliveryOverrideForNewTicketGroup';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n useUserCanUpdateListingTicketTypePriorityFromPurchase,\n useUserCanUpdatePurchaseCustomDeliveryType,\n useUserCanUpdatePurchaseDeliveryType,\n} from 'src/hooks/useUserHasPurchasePermissions';\nimport { FieldWrapper, FormRow } from 'src/modals/common/Purchase';\nimport { useGetListingAndSaleIds } from 'src/modals/common/Purchase/hooks/useGetListingAndSaleIds';\nimport { IconsFill, SeatMapIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isDatePassedHours } from 'src/utils/dateTimeUtils';\nimport { getInHandDateBasedOnEvent } from 'src/utils/eventWithDataUtils';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { DeliveryType, Feature } from 'src/WebApiController';\n\nimport { PurchaseOrderInfoForTicketGroupInput } from '../TicketGroupInput.types';\n\nexport const DeliverySection = ({\n disabled,\n ticketGroupIndex,\n purchaseOrderInfo,\n}: {\n ticketGroupIndex: number;\n disabled?: boolean;\n purchaseOrderInfo?: PurchaseOrderInfoForTicketGroupInput | null;\n}) => {\n const { setValue, formState, getFieldState, clearErrors, watch } =\n useFormContext();\n\n const ticketGroup = watch(`ticketGroups.${ticketGroupIndex}`);\n\n const {\n isLoading: deliveryOverrideDefaultIsLoading,\n hasDefaultValues: hasDeliveryOverrideValues,\n deliveryTypeDefault,\n ticketTypeRulesDefault,\n inHandAtDefault,\n } = useDeliveryOverrideForNewTicketGroup(\n ticketGroup.event?.viagId,\n purchaseOrderInfo?.vendor?.id,\n purchaseOrderInfo?.vendAcc?.id,\n true, // isManual\n ticketGroup.ticketGroupId > 0 /* disabled if not new ticket group */\n );\n\n const canEditDeliveryType =\n useUserCanUpdatePurchaseDeliveryType(purchaseOrderInfo);\n const canEditCustomDeliveryType =\n useUserCanUpdatePurchaseCustomDeliveryType(purchaseOrderInfo);\n const canEditTicketTypePriority =\n useUserCanUpdateListingTicketTypePriorityFromPurchase(purchaseOrderInfo);\n\n const hasUpdateSalesOfListingsFeature = useUserHasFeature(\n Feature.UpdateSalesOfListingsDeliveryInfo\n );\n const { saleIds } = useGetListingAndSaleIds({\n ticketGroups: [{ tickets: ticketGroup.tickets?.value }],\n });\n const hasAnySales = saleIds.size > 0;\n\n const { getUiCurrency } = useLocalizationContext();\n const uiCurrency = useMemo(\n () => getUiCurrency(ticketGroup.currencyCode?.value),\n [getUiCurrency, ticketGroup.currencyCode?.value]\n );\n\n const deliveryOptionField: `ticketGroups.${number}.deliveryType` = `ticketGroups.${ticketGroupIndex}.deliveryType`;\n const inHandAtField: `ticketGroups.${number}.inHandDate` = `ticketGroups.${ticketGroupIndex}.inHandDate`;\n const deliveryCostField: `ticketGroups.${number}.deliveryCost` = `ticketGroups.${ticketGroupIndex}.deliveryCost`;\n const daysBeforeEventField = 'daysBeforeEvent' as const;\n\n const ticketTypeOverrideField: `ticketGroups.${number}.ticketTypeRules` = `ticketGroups.${ticketGroupIndex}.ticketTypeRules`;\n\n const defaultDelivType =\n formState.defaultValues?.ticketGroups?.[ticketGroupIndex]?.deliveryType\n ?.value;\n\n const inHandAt = watch(inHandAtField)?.value;\n const daysBeforeEvent = watch(daysBeforeEventField);\n const delivType = watch(deliveryOptionField)?.value;\n const delivCst = watch(deliveryCostField)?.value;\n const tktTypeRules = watch(ticketTypeOverrideField);\n const updateSalesOfListings = watch('updateSalesOfListings');\n\n const isNewTicketGroup = ticketGroup.ticketGroupId < 0;\n\n const deliveryOptionError = getFieldState(deliveryOptionField, formState)\n .error?.message;\n const inHandAtError = getFieldState(inHandAtField, formState).error?.message;\n\n const isMobile = useMatchMedia('mobile');\n\n const warningDialog = useBasicDialog();\n const deliveryInfoChangeHookProps = useDeliveryInfoChangeDialog(\n () => {\n setValue('updateSalesOfListings', true);\n },\n () => {\n // set don't change back\n setValue('updateSalesOfListings', false);\n }\n );\n\n const deliveryTypeHasChanged =\n delivType !==\n formState.defaultValues?.ticketGroups?.[ticketGroupIndex]?.deliveryType;\n\n // Used for setting value when the default value is loaded\n useEffect(() => {\n if (!deliveryOverrideDefaultIsLoading) {\n const desiredDelivType = deliveryTypeDefault ?? delivType;\n\n if (deliveryTypeDefault && delivType !== deliveryTypeDefault) {\n setValue(deliveryOptionField, posChangedField(deliveryTypeDefault));\n }\n\n if (inHandAtDefault && inHandAt !== inHandAtDefault) {\n setValue(inHandAtField, posChangedField(inHandAtDefault));\n }\n\n if (ticketTypeRulesDefault) {\n setValue(ticketTypeOverrideField, {\n overrides: ticketTypeRulesDefault.overrides.filter(\n (o) => o.deliveryType === desiredDelivType\n ),\n });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n deliveryOverrideDefaultIsLoading,\n deliveryTypeDefault,\n inHandAtDefault,\n ticketTypeRulesDefault,\n ]);\n\n useEffect(() => {\n if (!inHandAt && ticketGroup.event?.dates?.start) {\n const inHandDate = getInHandDateBasedOnEvent(\n ticketGroup.event,\n daysBeforeEvent\n );\n setValue(inHandAtField, posChangedField(inHandDate));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inHandAtField]);\n\n const onDeliveryTypeChange = (newDelType: DeliveryType) => {\n if (!disabled && newDelType && newDelType !== delivType) {\n clearErrors(deliveryOptionField);\n setValue(deliveryOptionField, posChangedField(newDelType));\n\n if (ticketTypeRulesDefault) {\n setValue(ticketTypeOverrideField, {\n overrides: ticketTypeRulesDefault.overrides.filter(\n (o) => o.deliveryType === newDelType\n ),\n });\n }\n\n confirmUpdateSales();\n }\n };\n\n const confirmUpdateSales = useCallback(() => {\n if (\n hasAnySales &&\n hasUpdateSalesOfListingsFeature &&\n // only ask once per form\n updateSalesOfListings == null\n ) {\n if (isDatePassedHours(deliveryInfoChangeHookProps.lastTimeStamp, 1)) {\n // Show warning if it has passed 1 hr or not suppressed\n warningDialog.launchDialog();\n } else {\n // If suppressed, assumed it's true (since the current alert suppression only save for Yes answer)\n setValue('updateSalesOfListings', true);\n }\n }\n }, [\n deliveryInfoChangeHookProps.lastTimeStamp,\n hasAnySales,\n hasUpdateSalesOfListingsFeature,\n setValue,\n updateSalesOfListings,\n warningDialog,\n ]);\n\n return (\n <>\n \n }\n title={}\n >\n {deliveryTypeHasChanged && (\n \n }\n />\n )}\n {hasDeliveryOverrideValues && (\n }\n />\n )}\n \n \n \n \n \n\n {(isNewTicketGroup || deliveryTypeHasChanged) && (\n \n \n \n }\n style={{ gap: vars.spacing['sm'] }}\n >\n {\n setValue(ticketTypeOverrideField, newRules);\n }}\n disabled={\n disabled ||\n deliveryOverrideDefaultIsLoading ||\n !canEditTicketTypePriority\n }\n />\n \n \n \n \n )}\n\n \n \n }\n >\n {\n const v = parseFloat(e.target.value) || 0;\n if (v >= 0 && v <= Number.MAX_VALUE && v !== delivCst) {\n setValue(deliveryCostField, posChangedField(v));\n }\n }}\n />\n \n \n \n }\n errors={inHandAtError}\n >\n {\n if (date) {\n clearErrors(inHandAtField);\n const dateStr = date.toISOString();\n if (dateStr !== inHandAt) {\n setValue(inHandAtField, posChangedField(dateStr));\n }\n\n setValue(daysBeforeEventField, daysBeforeEvent);\n\n confirmUpdateSales();\n }\n }}\n value={inHandAt ?? null}\n targetDate={\n ticketGroup.event?.dates?.start\n ? new Date(ticketGroup.event?.dates?.start)\n : new Date()\n }\n />\n \n \n \n \n }\n size=\"md\"\n {...warningDialog.dialogProps}\n alerts={[deliveryInfoChangeHookProps]}\n onOkay={() => {\n warningDialog.closeDialog();\n }}\n okText={ContentId.Yes}\n cancelText={ContentId.No}\n onCancel={() => warningDialog.closeDialog()}\n />\n \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { FormPage } from 'src/core/POS/FormPage';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { vars } from 'src/core/themes';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { CheckboxContainer, FormRow } from 'src/modals/common';\nimport { IconsFill, PaperTicketsOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PurchaseOrderDetailsInput } from 'src/utils/purchaseUtils';\n\nexport const NewListingSection = ({\n ticketGroupIndex,\n disabled,\n}: {\n ticketGroupIndex: number;\n disabled?: boolean;\n}) => {\n const { setValue, watch, clearErrors } =\n useFormContext();\n const isMobile = useMatchMedia('mobile');\n\n const autoBroadcastCreatedListing = watch(\n `ticketGroups.${ticketGroupIndex}.autoBroadcastCreatedListing`\n );\n\n const faceValue =\n watch(`ticketGroups.${ticketGroupIndex}.faceValueCost`)?.value ?? 0;\n\n return (\n \n }\n title={}\n >\n \n \n \n }\n disabled={disabled}\n checked={autoBroadcastCreatedListing ?? false}\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (isChecked !== autoBroadcastCreatedListing) {\n setValue(\n `ticketGroups.${ticketGroupIndex}.autoBroadcastCreatedListing`,\n isChecked\n );\n }\n if (!isChecked || faceValue > 0) {\n clearErrors(`ticketGroups.${ticketGroupIndex}.faceValueCost`);\n }\n }}\n />\n \n \n \n \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport {\n ListingNoteSelectionInput,\n ListingNoteSelectionInputProps,\n} from 'src/components/Input/ListingNoteSelectionInput';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\n\nexport type SeatTraitsSelectionInputProps = {\n ticketGroupIndex: number;\n} & Omit;\n\nexport const SeatTraitsSelectionInput = ({\n ticketGroupIndex,\n disabled,\n validListingNoteIds,\n ...rest\n}: SeatTraitsSelectionInputProps) => {\n const { setValue, watch } = useFormContext();\n\n const listingNotesField: `ticketGroups.${number}.listingNotes` = `ticketGroups.${ticketGroupIndex}.listingNotes`;\n const listingNotes = watch(listingNotesField);\n return (\n \n setValue(listingNotesField, posChangedField(listingNotes))\n }\n />\n );\n};\n","import { debounce, range } from 'lodash-es';\nimport { useCallback, useEffect } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { VenueRowInput } from 'src/components/Input/VenueRowInput';\nimport { VenueSectionInput } from 'src/components/Input/VenueSectionInput';\nimport {\n Content,\n FormatContent,\n useContent,\n useFormattedContent,\n} from 'src/contexts/ContentContext';\nimport { useGetSectionRowFromVenueMapConfig } from 'src/contexts/EventMapContext';\nimport { FormPage } from 'src/core/POS/FormPage';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Switch } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserCanUpdatePurchaseSeatTraits } from 'src/hooks/useUserHasPurchasePermissions';\nimport { FieldWrapper, FormRow } from 'src/modals/common';\nimport * as styles from 'src/modals/common/Purchase/PurchaseModal.css';\nimport { SeatTraitsSelectionInput } from 'src/modals/common/Purchase/SeatTraitsSelectionInput';\nimport { IconsFill, SeatIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { INT_MAX_VALUE } from 'src/utils/numberFormatter';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseTicketsInput } from 'src/utils/purchaseUtils';\nimport { getNextTicketBy } from 'src/utils/ticketUtils';\nimport {\n EventListingConstraints,\n Ticket,\n TicketGroupInput,\n} from 'src/WebApiController';\n\nimport { PurchaseOrderInfoForTicketGroupInput } from '../TicketGroupInput.types';\n\nexport const SeatingSection = ({\n ticketGroupIndex,\n disabled,\n listingConstraints,\n purchaseOrderInfo,\n}: {\n ticketGroupIndex: number;\n disabled?: boolean;\n listingConstraints?: EventListingConstraints | null;\n purchaseOrderInfo?: PurchaseOrderInfoForTicketGroupInput | null;\n}) => {\n const { setValue, formState, getFieldState, clearErrors, watch } =\n useFormContext();\n\n const canSetSeatTraits =\n useUserCanUpdatePurchaseSeatTraits(purchaseOrderInfo);\n\n const initialTicketGroup =\n formState.defaultValues?.ticketGroups?.[ticketGroupIndex];\n const ticketGroup = watch(`ticketGroups.${ticketGroupIndex}`);\n\n const ticketCountField: `ticketGroups.${number}.numberOfTickets` = `ticketGroups.${ticketGroupIndex}.numberOfTickets`;\n\n const sectionField: `ticketGroups.${number}.section` = `ticketGroups.${ticketGroupIndex}.section`;\n const sectionIdField: `ticketGroups.${number}.sectionId` = `ticketGroups.${ticketGroupIndex}.sectionId`;\n const rowField: `ticketGroups.${number}.row` = `ticketGroups.${ticketGroupIndex}.row`;\n const rowIdField: `ticketGroups.${number}.rowId` = `ticketGroups.${ticketGroupIndex}.rowId`;\n const allocateSeatsField: `ticketGroups.${number}.allocateSeats` = `ticketGroups.${ticketGroupIndex}.allocateSeats`;\n const seatIncrementTypeField: `ticketGroups.${number}.seatIncementType` = `ticketGroups.${ticketGroupIndex}.seatIncementType`;\n\n const ticketCountError = getFieldState(ticketCountField, formState).error\n ?.message;\n const sectionError = getFieldState(sectionField, formState).error?.message;\n const rowError = getFieldState(rowField, formState).error?.message;\n const seatErrors: (string | undefined)[] = [];\n\n ticketGroup.tickets?.value?.forEach((_, i) => {\n const seatError = getFieldState(\n `ticketGroups.${ticketGroupIndex}.tickets.value.${i}.seat`,\n formState\n ).error?.message;\n seatErrors.push(seatError);\n });\n\n // eslint-disable-next-line react-hooks/rules-of-hooks,react-hooks/exhaustive-deps\n const allocSeats = useCallback(\n debounce((ticketCnt: number) => {\n const curTicketOrdinals =\n ticketGroup.tickets?.value?.map((t) => t.ord) ?? [];\n\n const startingOrdinal =\n curTicketOrdinals.length > 0\n ? Math.min(...(ticketGroup.tickets?.value?.map((t) => t.ord) ?? [0]))\n : 0;\n\n setValue(\n `ticketGroups.${ticketGroupIndex}.tickets`,\n posChangedField(\n ticketCnt\n ? range(ticketCnt).map((index) => {\n const ordinal = startingOrdinal + index;\n // Try to preserve previous seating\n let prevTicket = ticketGroup.tickets?.value?.find(\n (t) => t.ord === ordinal\n );\n if (!prevTicket && initialTicketGroup?.tickets?.value) {\n // If the user clear the quantity - ticketGroup.tickets would be empty and so\n // there's no chance to retrieve the previous tickets, so we need to look at the\n // default value\n prevTicket = initialTicketGroup.tickets.value.find(\n (t) => t!.ord === ordinal\n ) as Ticket;\n }\n return {\n id: -ordinal,\n ord: ordinal,\n row: ticketGroup?.row?.value,\n ...(prevTicket ?? {}),\n seat: prevTicket?.seat ?? '',\n } as Ticket;\n })\n : []\n )\n );\n }, 600),\n [setValue, ticketGroup?.row, ticketGroup.tickets, ticketGroupIndex]\n );\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const setRowForTickets = useCallback(\n debounce((row: string) => {\n if (ticketGroup.tickets?.value) {\n setValue(\n `ticketGroups.${ticketGroupIndex}.tickets`,\n posChangedField(\n ticketGroup.tickets.value.map((t) => ({ ...t, row: row })) ?? null\n )\n );\n }\n }, 600),\n [setValue, ticketGroup.tickets, ticketGroupIndex]\n );\n\n const isMobile = useMatchMedia('mobile');\n\n const getOrSetDefaultAllocateSeats = (tg: TicketGroupInput) => {\n if (tg.allocateSeats == null) {\n tg.allocateSeats = Boolean(\n (ticketGroup.tickets?.value?.length &&\n ticketGroup.tickets!.value.find((t) => t.seat)) ||\n !ticketGroup.tickets?.value?.length\n );\n }\n return tg.allocateSeats;\n };\n\n useEffect(() => {\n if (\n getOrSetDefaultAllocateSeats(ticketGroup) &&\n !ticketGroup.tickets?.value?.length\n ) {\n allocSeats(0);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const increaseNone = useContent(ContentId.None);\n const increaseBy1Format = useFormattedContent(\n FormatContentId.NIncreaseBy,\n '1'\n );\n const increaseBy2Format = useFormattedContent(\n FormatContentId.NIncreaseBy,\n '2'\n );\n const increaseByValues = {\n '0': increaseNone as string,\n '1': increaseBy1Format as string,\n '2': increaseBy2Format as string,\n };\n\n const getOrSetDefaultSeatIncrementType = (tg: TicketGroupInput) => {\n if (!tg.seatIncementType && tg.seatIncementType !== 0) {\n tg.seatIncementType = 1;\n }\n return tg.seatIncementType?.toString();\n };\n\n const setSeatsIncrement = debounce((seatIndex: number) => {\n if (\n ticketGroup.seatIncementType &&\n ticketGroup.seatIncementType !== 0 &&\n ticketGroup.tickets?.value?.length &&\n seatIndex < ticketGroup.tickets.value.length - 1 &&\n ticketGroup.tickets.value[seatIndex].seat\n ) {\n let seatValue = ticketGroup.tickets.value[seatIndex].seat;\n for (\n let index = seatIndex + 1;\n index < ticketGroup.tickets.value.length;\n index++\n ) {\n const ticket = ticketGroup.tickets.value[index];\n\n seatValue = getNextTicketBy(\n seatValue,\n ticketGroup.seatIncementType\n ).toString();\n setSeatValue(seatValue, index, ticket);\n }\n }\n }, 500);\n\n const setSeatValue = (\n seatValue: string,\n seatIndex: number,\n ticket: Ticket\n ) => {\n if (seatValue) {\n clearErrors(\n `ticketGroups.${ticketGroupIndex}.tickets.value.${seatIndex}.seat`\n );\n }\n\n if (seatValue !== ticket.seat) {\n setValue(\n `ticketGroups.${ticketGroupIndex}.tickets.value.${seatIndex}.seat`,\n seatValue\n );\n setValue(`ticketGroups.${ticketGroupIndex}.tickets.hasChanged`, true);\n }\n };\n\n const { section: selectedSection, row: selectedRow } =\n useGetSectionRowFromVenueMapConfig(\n ticketGroup?.rowId?.value,\n ticketGroup?.sectionId?.value,\n ticketGroup?.section?.value,\n ticketGroup?.row?.value\n );\n\n return (\n }\n title={}\n >\n \n \n }\n >\n {\n const v = parseInt(e.target.value) || 0;\n if (v >= 0 && v <= INT_MAX_VALUE) {\n clearErrors(ticketCountField);\n\n if (v !== ticketGroup.numberOfTickets?.value) {\n allocSeats(v);\n setValue(ticketCountField, posChangedField(v));\n }\n }\n }}\n />\n \n \n }>\n
    \n {\n setValue(allocateSeatsField, isChecked);\n allocSeats(ticketGroup.numberOfTickets?.value ?? 0);\n }}\n />\n
    \n
    \n\n \n \n }\n >\n {\n clearErrors(sectionField);\n if (section) {\n setValue(sectionField, posChangedField(section.name));\n setValue(sectionIdField, posChangedField(section.id));\n\n if (section.specRow?.id) {\n // Setting the section automatically set the speculative row id\n setValue(rowIdField, posChangedField(section.specRow?.id));\n setValue(rowField, posChangedField(''));\n // changing the row changes all the tickets\n setRowForTickets('');\n }\n } else {\n setValue(sectionField, posChangedField(sectionName ?? ''));\n setValue(sectionIdField, posChangedField(null));\n\n // Free-text section do not have speculative row info\n setValue(rowIdField, posChangedField(null));\n setValue(rowField, posChangedField(''));\n setRowForTickets('');\n }\n }}\n />\n \n \n {ticketGroup.allocateSeats && (\n \n }\n >\n {\n clearErrors(rowField);\n if (row) {\n setValue(\n rowField,\n posChangedField(row.isSpeculative ? '' : row.name)\n );\n setValue(rowIdField, posChangedField(row.id));\n setRowForTickets((row.isSpeculative ? '' : row.name) ?? '');\n } else {\n // If we can't find the row - that mean they typed it in\n // so just keep with they type as the row\n setValue(rowField, posChangedField(rowName ?? ''));\n setValue(rowIdField, posChangedField(null));\n setRowForTickets(rowName ?? '');\n }\n }}\n />\n \n \n )}\n \n\n {ticketGroup.allocateSeats && (\n <>\n \n \n }\n >\n {\n if (e) {\n const v = parseInt(e) || 0;\n setValue(seatIncrementTypeField, v);\n } else {\n setValue(seatIncrementTypeField, null);\n }\n }}\n value={getOrSetDefaultSeatIncrementType(ticketGroup)}\n placeholderText={ContentId.ChooseIncrementType}\n valueOptionsContent={increaseByValues}\n />\n \n \n \n\n \n \n
    \n {ticketGroup.tickets?.value?.map((t, i) => (\n \n \n }\n >\n {\n const v = e.target.value;\n setSeatValue(v, i, t);\n setSeatsIncrement(i);\n }}\n />\n \n \n ))}\n
    \n
    \n
    \n \n )}\n \n \n }>\n \n \n \n \n \n );\n};\n","import { ComponentProps } from 'react';\nimport { EventMapContextProvider } from 'src/contexts/EventMapContext';\nimport { Stack } from 'src/core/ui';\nimport { ModalBodyDataContainer } from 'src/modals/Modal/Modal.styled';\nimport {\n EventListingConstraints,\n TicketGroupInput,\n} from 'src/WebApiController';\n\nimport { CostSection } from './components/CostSection';\nimport { DeliverySection } from './components/DeliverySection';\nimport { NewListingSection } from './components/NewListingSection';\nimport { PredeliverySection } from './components/PredeliverySection';\nimport { SeatingSection } from './components/SeatingSection';\nimport { UploadPredeliveryAction } from './purchaseTicketsFlow.utils';\nimport { PurchaseOrderInfoForTicketGroupInput } from './TicketGroupInput.types';\n\nexport enum CostType {\n CostPerTicket = 'CostPerTicket',\n TotalCost = 'TotalCost',\n}\n\nexport function TicketGroupInputForm({\n hideHeader,\n ticketGroup,\n ...rest\n}: {\n hideHeader: boolean;\n} & ComponentProps) {\n return (\n \n \n \n );\n}\n\nfunction TicketGroupInputBody({\n ticketGroup,\n ticketGroupIndex,\n disabled,\n listingConstraints,\n showPredeliverySection,\n onHidePredeliverAction,\n purchaseOrderInfo,\n}: {\n ticketGroup: TicketGroupInput;\n ticketGroupIndex: number;\n disabled?: boolean;\n listingConstraints?: EventListingConstraints | null;\n showPredeliverySection?: UploadPredeliveryAction;\n onHidePredeliverAction: () => void;\n purchaseOrderInfo?: PurchaseOrderInfoForTicketGroupInput | null;\n}) {\n return (\n \n {showPredeliverySection ? (\n \n ) : (\n <>\n \n {ticketGroup.ticketGroupId < 0 && (\n \n )}\n \n \n \n \n \n )}\n \n );\n}\n","import { isEqual } from 'lodash-es';\nimport { ComponentProps, useCallback, useMemo, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { DndGlobalFileDrop } from 'src/core/POS/DnDFileUploader/components/DndGlobalFileDrop';\nimport { DndFilerUploaderContextProvider } from 'src/core/POS/DnDFileUploader/DndFileUploaderContext';\nimport { Stack } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useGetEventListingConstraints } from 'src/hooks/useGetEventListingConstraints';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { EventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalBodyHeaderContainer } from 'src/modals/Modal/Modal.styled';\nimport { PurchaseTicketsFlowEventHeader } from 'src/modals/PurchaseWizard/PurchaseTicketsFlow/components/PurchaseTicketFlowEventHeader';\nimport { PurchaseTicketFlowTitle } from 'src/modals/PurchaseWizard/PurchaseTicketsFlow/components/PurchaseTicketFlowTitle';\nimport { predeliverETicketsDnd } from 'src/modals/PurchaseWizard/PurchaseTicketsFlow/PurchaseTicketFlow.css';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getInHandDateBasedOnEvent } from 'src/utils/eventWithDataUtils';\nimport { posChangedField, posField } from 'src/utils/posFieldUtils';\nimport {\n PurchaseTicketsInput,\n validateEventSelection,\n validateTicketGroup,\n validateTicketGroups,\n} from 'src/utils/purchaseUtils';\nimport { selectEventInfoFromTicketGroups } from 'src/utils/ticketUtils';\nimport {\n Feature,\n ListingActionType,\n TicketGroupInput,\n} from 'src/WebApiController';\n\nimport {\n PurchaseWizardFooter,\n PurchaseWizardFooterProps,\n} from '../../common/Purchase/PurchaseWizardFooter';\nimport { ModalBody } from '../../Modal';\nimport { PredeliveryActionsDropdown } from './components/PredeliveryActionsDropdown';\nimport { UploadPredeliveryAction } from './purchaseTicketsFlow.utils';\nimport { SearchPurchasedEvents } from './SearchPurchasedEvents';\nimport { TicketGroupInputForm } from './TicketGroupInput';\nimport { PurchaseOrderInfoForTicketGroupInput } from './TicketGroupInput.types';\n\nconst scrollToTopOnTicketGroupChange = () => {\n // The modal sits on top of the window, so window scrolling don't work.\n // Also, the ModalBody is a react component, wrapping it in forwardRef didn't expose the unlying html element. So, we use the vanilla js way to scroll to the top.\n const el = document.getElementsByClassName('modal-body')[0];\n el.scrollTop = 0;\n};\n\nexport type PurchaseTicketsFlowProps = {\n currencyCode: string;\n purchaseOrderInfo?: PurchaseOrderInfoForTicketGroupInput | null;\n ticketGroups: TicketGroupInput[];\n ticketGroupFromPartialPurchaseOrder?: TicketGroupInput | null;\n eventSearchTextFromPartialPurchaseOrder?: string | null;\n updateSalesOfListings?: boolean | null;\n startIndex: number;\n avoidPrefill?: boolean;\n disabled?: boolean;\n onCancel: () => void;\n onSubmit: (formData: PurchaseTicketsInput) => void;\n emailPreview?: JSX.Element | null;\n uploadPredeliveryAction?: UploadPredeliveryAction | undefined;\n};\n\nexport const PurchaseTicketsFlow = ({\n ticketGroups,\n avoidPrefill,\n ticketGroupFromPartialPurchaseOrder,\n eventSearchTextFromPartialPurchaseOrder,\n updateSalesOfListings,\n ...rest\n}: PurchaseTicketsFlowProps) => {\n const methods = useForm({\n defaultValues: {\n ticketGroups: avoidPrefill\n ? selectEventInfoFromTicketGroups(ticketGroups)\n : ticketGroups.map((tg) => ({\n ...tg,\n tickets: posField(\n tg.tickets?.value?.toSorted((a, b) => a.ord - b.ord)\n ),\n })),\n updateSalesOfListings,\n updatePredeliveryETicketArtifacts: false,\n ticketGroupFromPartialPurchaseOrder,\n eventSearchTextFromPartialPurchaseOrder,\n },\n });\n\n return (\n \n \n \n );\n};\n\nconst EMPTY_EVENT_IDS: number[] = [];\n\nfunction PurchaseTicketsFlowBody({\n disabled,\n currencyCode,\n purchaseOrderInfo,\n startIndex,\n onCancel,\n onSubmit,\n formState,\n handleSubmit,\n setError,\n setValue,\n clearErrors,\n watch,\n emailPreview,\n uploadPredeliveryAction,\n}: Omit &\n Omit<\n ComponentProps>,\n 'children'\n >) {\n const formTicketGroups = watch('ticketGroups');\n const daysBeforeEvent = watch('daysBeforeEvent');\n\n const hasPurchaseDeliveryFeature = useUserHasFeature(\n Feature.PurchasePredelivery\n );\n const hasMultiTicketGroupTableFeature = useUserHasFeature(\n Feature.MultiTicketGroupTable\n );\n const requiredMsg = useContent(ContentId.Required);\n const duplicateSeatMsg = useContent(ContentId.DuplicateSeat);\n const eventRequiredMsg = useContent(ContentId.SearchAndSelectAnEvent);\n const inHandDateMustBeforeEventDateMsg = useContent(\n ContentId.InHandDateMustBeBeforeEventDate\n );\n const autoBroadcastRequireFaceValueMsg = useContent(\n ContentId.AutoBroadcastRequiredFaceValue\n );\n\n const hasUploadTicketFilesFlowV2 = useUserHasFeature(\n Feature.UploadTicketFilesFlowV2\n );\n\n const multiEventInputsDialog = useBasicDialog();\n const [singleInputModeForMultiEvent, setSingleInputModeForMultiEvent] =\n useState(true);\n const isSingleInputModeForMultiEvent =\n singleInputModeForMultiEvent && formTicketGroups.length > 1;\n\n // Index of a Group of TicketGroupInput\n const [curGroupIndex, setCurGroupIndex] = useState(startIndex);\n\n const groupsOfTicketGroup = useMemo(() => {\n const noVenueCfgIdGroup = 'no_venue_cfg_id';\n\n if (isSingleInputModeForMultiEvent) {\n const ticketGroupsMap = new Map();\n formTicketGroups.forEach((ticketGroup) => {\n const venueCfgId = ticketGroup?.event?.venueCfgId || noVenueCfgIdGroup;\n const group = ticketGroupsMap.get(venueCfgId) || [];\n group.push(ticketGroup);\n ticketGroupsMap.set(venueCfgId, group);\n });\n\n const noCfgId = ticketGroupsMap.get(noVenueCfgIdGroup);\n ticketGroupsMap.delete(noVenueCfgIdGroup);\n\n const groupOfTicketGroups = Array.from(ticketGroupsMap.values());\n if (noCfgId && noCfgId.length > 0) {\n noCfgId.forEach((ticketGroup) => {\n groupOfTicketGroups.push([ticketGroup]);\n });\n }\n\n return groupOfTicketGroups;\n }\n\n return formTicketGroups.map((ticketGroup) => [ticketGroup]);\n }, [formTicketGroups, isSingleInputModeForMultiEvent]);\n\n const [showPredeliverySection, setShowPredeliverySection] = useState<\n UploadPredeliveryAction | undefined\n >(uploadPredeliveryAction);\n\n const curTicketGroup = useMemo(() => {\n return curGroupIndex >= 0\n ? // Pick first ticketGroup because:\n // If inputMode is grouping: all the items in the group will have the same config\n // If input mode is one by one: Each ticketGroup is a group of one item.\n groupsOfTicketGroup[curGroupIndex]?.[0]\n : undefined;\n }, [groupsOfTicketGroup, curGroupIndex]);\n\n const showSearch = curGroupIndex < 0 || !curTicketGroup;\n const ticketGroupsEventIds = useMemo(\n () =>\n formTicketGroups\n .filter((tg) => tg.event?.viagId != null)\n .map((tg) => tg.event?.viagId!),\n [formTicketGroups]\n );\n const { eventListingConstraintsQuery } = useGetEventListingConstraints(\n showSearch ? EMPTY_EVENT_IDS : ticketGroupsEventIds\n );\n\n const currentFormTicketGroupIndex = useMemo(() => {\n return formTicketGroups.findIndex(\n (tg) => tg.ticketGroupId === curTicketGroup?.ticketGroupId\n );\n }, [formTicketGroups, curTicketGroup]);\n\n const onSubmitWrapper = useCallback(() => {\n if (\n validateEventSelection(\n clearErrors,\n setError,\n formTicketGroups,\n eventRequiredMsg\n ) &&\n validateTicketGroups(\n true,\n clearErrors,\n setError,\n formTicketGroups,\n requiredMsg,\n duplicateSeatMsg,\n inHandDateMustBeforeEventDateMsg,\n autoBroadcastRequireFaceValueMsg\n )\n ) {\n handleSubmit(onSubmit)();\n }\n }, [\n autoBroadcastRequireFaceValueMsg,\n clearErrors,\n duplicateSeatMsg,\n eventRequiredMsg,\n handleSubmit,\n inHandDateMustBeforeEventDateMsg,\n onSubmit,\n requiredMsg,\n setError,\n formTicketGroups,\n ]);\n\n const onPrevFromSearchEventsStep = useCallback(() => {\n onCancel();\n }, [onCancel]);\n\n const onNextFromSearchEventsStep = useCallback(() => {\n if (\n validateEventSelection(\n clearErrors,\n setError,\n formTicketGroups,\n eventRequiredMsg\n )\n ) {\n const hasGroupedEvents = groupsOfTicketGroup.some(\n (group) => group.length > 1\n );\n if (hasGroupedEvents) {\n // If we have more than one event selected, we need to ask whether the user\n // wants to input tickets for each of them separately for together\n multiEventInputsDialog.launchDialog();\n } else {\n setSingleInputModeForMultiEvent(false);\n setCurGroupIndex(0);\n }\n }\n }, [\n clearErrors,\n setError,\n formTicketGroups,\n eventRequiredMsg,\n groupsOfTicketGroup,\n multiEventInputsDialog,\n ]);\n\n const onPrevFromTicketGroupInputStep = useCallback(() => {\n if (showPredeliverySection) {\n setShowPredeliverySection(undefined);\n } else if (curGroupIndex === startIndex) {\n onCancel();\n } else {\n setCurGroupIndex(curGroupIndex - 1);\n\n // Generate groups again to ask for confirmation for single input\n setSingleInputModeForMultiEvent(true);\n }\n }, [curGroupIndex, onCancel, showPredeliverySection, startIndex]);\n\n const onNextFromTicketGroupInputStep = useCallback(() => {\n const errors = validateTicketGroup(\n clearErrors,\n setError,\n curTicketGroup!,\n currentFormTicketGroupIndex,\n requiredMsg,\n duplicateSeatMsg,\n inHandDateMustBeforeEventDateMsg,\n autoBroadcastRequireFaceValueMsg\n );\n\n if (errors.length) {\n return;\n }\n\n const isLastGroup = curGroupIndex === groupsOfTicketGroup.length - 1;\n\n // Input mode: One input per group of ticket\n if (isSingleInputModeForMultiEvent) {\n const groupOfTickets = groupsOfTicketGroup[curGroupIndex];\n\n // Copy the content of the previous ticket-Group to all the ticketGroups and submit\n for (let i = 1; i < groupOfTickets.length; i++) {\n const tg = groupOfTickets[i];\n\n if (!tg.inHandDate?.value && tg.event?.dates?.start) {\n tg.inHandDate = posChangedField(\n getInHandDateBasedOnEvent(tg.event, daysBeforeEvent)\n );\n }\n\n const formTicketGroup = formTicketGroups.find(\n (ftg) => ftg.ticketGroupId === tg.ticketGroupId\n );\n\n if (formTicketGroup) {\n Object.assign(formTicketGroup, {\n ...curTicketGroup,\n ticketGroupId: tg.ticketGroupId,\n viagogoEventId: tg.event?.viagId,\n viagogoVirtualId: tg.event?.viagVirtualId,\n eventMappingId: tg.event?.mappingId,\n posEventId: tg.event?.posIds?.[0],\n event: tg.event,\n performer: tg.performer,\n venue: tg.venue,\n inHandDate: tg.inHandDate,\n } as TicketGroupInput);\n }\n }\n\n setValue('ticketGroups', [...formTicketGroups]);\n\n if (isLastGroup) {\n onSubmitWrapper();\n } else {\n setCurGroupIndex(curGroupIndex + 1);\n }\n } else {\n // Input mode: One ticket group at a time\n if (isLastGroup) {\n onSubmitWrapper();\n } else {\n // Just increment the group, since each ticketGroup\n // represents a ticketGroup[] of one element.\n setCurGroupIndex(curGroupIndex + 1);\n }\n }\n scrollToTopOnTicketGroupChange();\n }, [\n clearErrors,\n setError,\n curTicketGroup,\n currentFormTicketGroupIndex,\n requiredMsg,\n duplicateSeatMsg,\n inHandDateMustBeforeEventDateMsg,\n autoBroadcastRequireFaceValueMsg,\n curGroupIndex,\n groupsOfTicketGroup,\n isSingleInputModeForMultiEvent,\n setValue,\n formTicketGroups,\n daysBeforeEvent,\n onSubmitWrapper,\n ]);\n\n const getFooterActions = useCallback((): PurchaseWizardFooterProps => {\n if (curGroupIndex < 0) {\n return {\n hasChanges:\n !showPredeliverySection &&\n !isEqual(formState.defaultValues?.ticketGroups, formTicketGroups),\n onPreviousLabel: ContentId.Cancel,\n onPrevious: onPrevFromSearchEventsStep,\n onNextLabel: ContentId.Next,\n onNext: onNextFromSearchEventsStep,\n };\n } else {\n return {\n hasChanges:\n !showPredeliverySection && curGroupIndex === startIndex\n ? !isEqual(formState.defaultValues?.ticketGroups, formTicketGroups)\n : false,\n onPreviousLabel:\n curGroupIndex === startIndex ? ContentId.Cancel : ContentId.Back,\n onPrevious: onPrevFromTicketGroupInputStep,\n onNextLabel: showPredeliverySection\n ? ContentId.Upload\n : curGroupIndex === formTicketGroups.length - 1\n ? disabled\n ? ContentId.OK\n : ContentId.Save\n : ContentId.Next,\n onNext: onNextFromTicketGroupInputStep,\n };\n }\n }, [\n curGroupIndex,\n disabled,\n formState.defaultValues?.ticketGroups,\n onNextFromSearchEventsStep,\n onNextFromTicketGroupInputStep,\n onPrevFromSearchEventsStep,\n onPrevFromTicketGroupInputStep,\n showPredeliverySection,\n startIndex,\n formTicketGroups,\n ]);\n\n const footerActions = getFooterActions();\n const isPredeliverETicketsAction =\n showPredeliverySection === ListingActionType.PredeliverETickets;\n\n return (\n <>\n setShowPredeliverySection(undefined)\n : onCancel\n }\n >\n \n }\n />\n \n \n \n \n {emailPreview}\n\n \n {showSearch ? (\n \n ) : (\n <>\n \n \n \n \n setShowPredeliverySection(undefined)\n }\n purchaseOrderInfo={purchaseOrderInfo}\n hideHeader={isSingleInputModeForMultiEvent}\n disabled={disabled}\n ticketGroup={curTicketGroup}\n ticketGroupIndex={currentFormTicketGroupIndex}\n listingConstraints={\n curTicketGroup.event?.viagId\n ? eventListingConstraintsQuery.data?.[\n curTicketGroup.event.viagId\n ]\n : null\n }\n />\n \n )}\n \n \n {!showPredeliverySection && (\n ,\n ]\n : undefined\n }\n isSubmitting={formState.isSubmitting}\n />\n )}\n \n \n \n }\n bodyText={\n \n \n \n \n \n \n \n \n \n \n \n }\n onCancel={() => {\n setCurGroupIndex(0);\n setSingleInputModeForMultiEvent(false);\n multiEventInputsDialog.closeDialog();\n }}\n onOkay={() => {\n setCurGroupIndex(0);\n setSingleInputModeForMultiEvent(true);\n multiEventInputsDialog.closeDialog();\n }}\n />\n \n );\n}\n","import { UploadPredeliveryAction } from 'src/modals/PurchaseWizard/PurchaseTicketsFlow/purchaseTicketsFlow.utils';\nimport {\n Event,\n Performer,\n TicketGroupEditReason,\n Venue,\n} from 'src/WebApiController';\n\nexport const Steps = {\n PurchaseVendorInfoStep: 'PurchaseVendorInfoStep',\n PurchaseWizardMainStep: 'PurchaseWizardMainStep',\n TicketGroupInputStep: 'TicketGroupInputStep',\n TicketGroupBlankInputStep: 'TicketGroupBlankInputStep',\n} as const;\n\nexport const AddActions = [\n TicketGroupEditReason.EditEvent,\n TicketGroupEditReason.ExchangeTickets,\n TicketGroupEditReason.AddTickets,\n];\n\nexport const TicketGroupInputSteps: (keyof typeof Steps)[] = [\n Steps.TicketGroupInputStep,\n Steps.TicketGroupBlankInputStep,\n];\n\nexport type AmendActionData = {\n uploadPredeliveryAction: UploadPredeliveryAction | undefined;\n};\n\nexport type TicketGroupEditContextAdditionalData = {\n event?: Event | null;\n performer?: Performer | null;\n venue?: Venue | null;\n amendActionData?: AmendActionData;\n};\n\nexport type TicketGroupEditContext = {\n startWithEventSearch: boolean;\n ticketGroupId: number;\n ticketGroupIdToRemove?: number; // in the case of exchange\n editIntention: TicketGroupEditReason;\n editInfo: string;\n additionalData?: TicketGroupEditContextAdditionalData;\n};\n","import { useQueryClient } from '@tanstack/react-query';\nimport { StatusCodes } from 'http-status-codes';\nimport { isEqual } from 'lodash-es';\nimport {\n ComponentProps,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { FormProvider } from 'react-hook-form';\nimport { useNavigate } from 'react-router-dom';\nimport { useDebounce } from 'react-use';\nimport { EmailBody } from 'src/components/Messages/EmailBody';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { EmailPurchaseOrderContext } from 'src/contexts/EmailPurchaseOrderContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\nimport {\n AlertWithSuppressionDialog,\n useCancelTicketGroupDialog,\n} from 'src/dialogs/AlertWithSuppressionDialog';\nimport {\n InternationalComplianceDialog,\n useInternationalComplianceDialog,\n} from 'src/dialogs/InternationalComplianceDialog';\nimport { SecondaryVendorAccountDialog } from 'src/dialogs/SecondaryVendorAccountDialog/SecondaryVendorAccountDialog';\nimport { TicketGroupIntentionDialog } from 'src/dialogs/TicketGroupIntentionDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useGetIsPurchaseIdsInUsedForVendorId } from 'src/hooks/useGetIsPurchaseIdsInUsedForVendorId';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useUserCanUpdatePurchase } from 'src/hooks/useUserHasPurchasePermissions';\nimport { TicketGroupActionParams } from 'src/tables/PurchaseTicketTable/configs/TicketGroupTableColumnsConfig';\nimport {\n EventIdQueryParam,\n PurchaseDeeplinkQueryParam,\n PurchaseFromEmailPoQueryParam,\n US_COUNTRY_CODES,\n} from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isDatePassedHours } from 'src/utils/dateTimeUtils';\nimport {\n getDeepLinkIdFromUrl,\n isInFullPageEventView,\n useRemoveDeepLinkUrlPart,\n} from 'src/utils/deepLinkUtils';\nimport { getEventPerformerVenue } from 'src/utils/eventWithDataUtils';\nimport { newBigIntId } from 'src/utils/idUtils';\nimport {\n ListingCatalogMetricsQueryKey,\n ListingCatalogQueryKey,\n} from 'src/utils/inventoryUtils';\nimport { hasChanged, posChangedField } from 'src/utils/posFieldUtils';\nimport {\n cleanTicketGroupContextFromDeepLink,\n getPurchaseOrderDetailsModalConfigWithDeepLink,\n getPurchaseOrderRelativeUrl,\n PurchaseOrderDetailsInput,\n PurchaseTicketsInput,\n validateEventSelection,\n validateTicketGroups,\n validateVendorInfo,\n} from 'src/utils/purchaseUtils';\nimport { tagFieldHasChanges } from 'src/utils/tagUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n AutoPoClient,\n CatalogClient,\n DeliveryType,\n Feature,\n Permission,\n PosFieldArrayOfTag,\n PurchaseClient,\n PurchaseOrderDetails,\n PurchaseOrderState,\n PurchaseOrderTicketGroup,\n TicketClient,\n TicketGroupEditReason,\n TicketGroupInput,\n TicketGroupIntention,\n TicketGroupMergeInput,\n} from 'src/WebApiController';\n\nimport { CancellableFormHeader } from '../common/CancellableFormHeader';\nimport { EventEntityHeader } from '../common/EventEntityHeader';\nimport {\n EmailBodyWrapper,\n EmailPreviewContainer,\n EmailPreviewTitle,\n PurchaseMainDetails,\n PurchaseVendorHeader,\n StyledPurchaseWizardBody,\n} from '../common/Purchase';\nimport { DealSection } from '../common/Purchase/Deal/DealSection';\nimport {\n PurchaseWizardFooter,\n PurchaseWizardFooterProps,\n} from '../common/Purchase/PurchaseWizardFooter';\nimport { ModalBody } from '../Modal';\nimport { ModalBodyHeaderContainer } from '../Modal/Modal.styled';\nimport { PurchaseMultiTicketsFlow } from './PurchaseTicketsFlow/PurchaseMultiTicketsFlow';\nimport { PurchaseTicketsFlow } from './PurchaseTicketsFlow/PurchaseTicketsFlow';\nimport {\n AddActions,\n Steps,\n TicketGroupEditContext,\n TicketGroupInputSteps,\n} from './PurchaseWizard.types';\n\nexport function PurchaseWizardBody({\n formState,\n handleSubmit,\n setError,\n clearErrors,\n setValue,\n watch,\n reset,\n getValues,\n purchaseHasMergedListings,\n highlightTicketGroupIds,\n initialTicketGroupEditContext,\n}: Omit<\n ComponentProps>,\n 'children'\n> & {\n purchaseHasMergedListings?: boolean | null;\n highlightTicketGroupIds?: number[];\n initialTicketGroupEditContext?: Partial;\n}) {\n const initialTicketGroupEditReason =\n initialTicketGroupEditContext?.editIntention;\n const queryClient = useQueryClient();\n const navigate = useNavigate();\n const removeDeepLinkUrlPart = useRemoveDeepLinkUrlPart();\n const { posEntity: purchaseDetails } =\n useActivePosEntityContext();\n\n const purchaseOrderId = watch('id');\n const vendor = watch('vendor');\n const vendorAccount = watch('vendorAccount');\n const buyerUserId = watch('buyerUserId');\n const secondaryVendorAccount = watch('secondaryVendorAccount');\n const vendorOrderId = watch('vendorOrderId');\n const purchaseDate = watch('purchaseDate');\n const ticketGroups = watch('ticketGroups');\n const updateSalesOfListings = watch('updateSalesOfListings');\n const ticketGroupIntentions = watch('ticketGroupIntentions');\n const currencyCode = watch('currencyCode');\n const { refreshData } = usePurchaseDataContext();\n const { updateItemInEvent, refreshCatalog } = useCatalogDataContext();\n\n const [debouncedOrderId, setDebouncedOrderId] = useState();\n useDebounce(\n () => {\n setDebouncedOrderId(vendorOrderId?.value);\n },\n 300,\n [vendorOrderId]\n );\n\n const { purchasingIdInUseQuery } = useGetIsPurchaseIdsInUsedForVendorId(\n debouncedOrderId,\n vendor?.value?.id\n );\n\n const requiredMsg = useContent(ContentId.Required);\n const duplicateSeatMsg = useContent(ContentId.DuplicateSeat);\n const orderIdUsedErrorMsg = useContent(ContentId.OrderIdInUseSameVendor);\n const eventRequiredMsg = useContent(ContentId.SearchAndSelectAnEvent);\n const inhandDateMustBeforeEventDateMsg = useContent(\n ContentId.InHandDateMustBeBeforeEventDate\n );\n const autoBroadcastRequireFaceValueMsg = useContent(\n ContentId.AutoBroadcastRequiredFaceValue\n );\n\n const { closeModal } = useContext(ModalContext);\n const { inboundEmailId, classificationType } = useContext(\n EmailPurchaseOrderContext\n );\n const { showErrorDialog } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig, loginContext, mainRoute } =\n useAppContext();\n const { refetch: refreshTagMetadata, tagsMetadata } = useTagsForEntityType(\n ActionOutboxEntityType.Purchase\n );\n const [currentStep, setCurrentStep] = useState(\n purchaseOrderId < 0\n ? Steps.PurchaseVendorInfoStep\n : Steps.PurchaseWizardMainStep\n );\n\n useEffect(() => {\n if (purchaseOrderId > 0 && currentStep === Steps.PurchaseVendorInfoStep) {\n setCurrentStep(Steps.PurchaseWizardMainStep);\n }\n }, [currentStep, purchaseOrderId]);\n\n const [isLoading, setIsLoading] = useState(false);\n\n const isMobile = useMatchMedia('mobile');\n const { setModal } = useContext(ModalContext);\n const canCreate = useUserHasAnyOfPermissions(Permission.Purchases_Create);\n const canEdit = useUserCanUpdatePurchase(purchaseDetails);\n\n // if this is true - Everything in the PO is readonly\n // use this if an input can be writeable when PO is cancelled (like payments)\n const absoluteReadOnly =\n purchaseDetails?.poState === PurchaseOrderState.Void ||\n (purchaseOrderId > 0 ? !canEdit : !canCreate);\n\n // if this is true, either the entire PO is readonly, or only parts of it (in the case where the PO is cancelled, some parts can be Writeable - like Payments)\n // use this on a component if you know it will always be readonly whether the PO is void or cancelled\n const readOnly =\n absoluteReadOnly ||\n purchaseDetails?.poState === PurchaseOrderState.Cancelled;\n\n useEffect(() => {\n if (inboundEmailId && currentStep === Steps.PurchaseVendorInfoStep) {\n validateVendorInfo(\n purchaseOrderId,\n clearErrors,\n purchaseDate,\n requiredMsg,\n orderIdUsedErrorMsg,\n setError,\n vendor,\n vendorAccount,\n vendorOrderId,\n purchasingIdInUseQuery.data\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n inboundEmailId,\n currentStep,\n vendor,\n vendorAccount,\n vendorOrderId,\n purchasingIdInUseQuery.data,\n ]);\n\n const removeEventIdQueryIfExists = useCallback(() => {\n const posEventId = getDeepLinkIdFromUrl(\n EventIdQueryParam,\n window.location.href\n );\n\n const inFullPageEventView = isInFullPageEventView(mainRoute);\n\n if (posEventId && !inFullPageEventView) {\n removeDeepLinkUrlPart(EventIdQueryParam);\n }\n }, [mainRoute, removeDeepLinkUrlPart]);\n\n const onCloseModal = useCallback(\n (force?: boolean) => {\n removeEventIdQueryIfExists();\n removeDeepLinkUrlPart(PurchaseFromEmailPoQueryParam);\n closeModal(force);\n },\n [closeModal, removeDeepLinkUrlPart, removeEventIdQueryIfExists]\n );\n\n const [ticketGroupEditContext, setTicketGroupEditContext] =\n useState({\n startWithEventSearch: true,\n ticketGroupId: newBigIntId(),\n editIntention: TicketGroupEditReason.AddTickets,\n editInfo: '',\n ...initialTicketGroupEditContext,\n });\n const [ticketGroupActionParams, setTicketGroupActionParams] = useState<\n TicketGroupActionParams | undefined\n >();\n\n const ticketGroupIntentionDialog = useBasicDialog();\n const secondaryVendorAccountDialog = useBasicDialog();\n const updateMergedListingDialog = useBasicDialog();\n const ticketGroupCancelConfirmDialog = useBasicDialog();\n\n const hasPurchasePaymentConversionFeature = useUserHasFeature(\n Feature.PurchasePaymentConversion\n );\n const hasMultiTicketGroupTableFeature = useUserHasFeature(\n Feature.MultiTicketGroupTable\n );\n\n const { setActivePosEntity } =\n useActivePosEntityContext();\n\n const onSubmit = useCallback(\n async (purchaseDetailsForm: PurchaseOrderDetailsInput) => {\n if (absoluteReadOnly) {\n // Don't save\n return;\n }\n\n tryInvokeApi(\n async () => {\n setIsLoading(true);\n\n const client = new PurchaseClient(activeAccountWebClientConfig);\n if (purchaseDetailsForm.id < 0) {\n const result = await client.insertPurchaseOrder(\n purchaseDetailsForm,\n true // isManual\n );\n\n const savePurchaseOrderId = result.entityId;\n\n if (savePurchaseOrderId == null) {\n let errorMessage = 'Failed to insert purchase order';\n\n if (result.message != null) {\n errorMessage += `: ${result.message}`;\n }\n\n showErrorDialog(\n 'PurchaseClient.insertPurchaseOrder',\n {\n message: errorMessage,\n status: result.status ?? StatusCodes.INTERNAL_SERVER_ERROR,\n },\n {\n trackErrorData: purchaseDetailsForm,\n }\n );\n } else {\n if (inboundEmailId != null) {\n new AutoPoClient(\n activeAccountWebClientConfig\n ).classifyInboundEmail(\n inboundEmailId,\n classificationType,\n savePurchaseOrderId,\n null\n );\n\n navigate(\n `${getPurchaseOrderRelativeUrl(\n savePurchaseOrderId\n )}&fromAutoPo=true`\n );\n } else if (setActivePosEntity != null) {\n // Avoid calling navigate(getPurchaseOrderRelativeUrl()) because\n // the modal is used outside the purchases, and this will make\n // a non-wanted navigation.\n setModal(\n getPurchaseOrderDetailsModalConfigWithDeepLink(\n savePurchaseOrderId\n )\n );\n\n // Refetch all the inventory related queries because it needs to pick up the latest created inventories/events\n // Or else we have to wait until the next refetch cycle\n queryClient.refetchQueries({\n queryKey: [ListingCatalogQueryKey],\n type: 'all',\n });\n queryClient.refetchQueries({\n queryKey: [ListingCatalogQueryKey],\n type: 'all',\n });\n queryClient.refetchQueries({\n queryKey: [ListingCatalogMetricsQueryKey],\n type: 'all',\n });\n }\n }\n } else {\n if (purchaseHasMergedListings) {\n updateMergedListingDialog.closeDialog();\n }\n\n let reloadWizard = false;\n\n let ticketGroupsChanged = !isEqual(\n purchaseDetailsForm.ticketGroups,\n formState.defaultValues?.ticketGroups\n );\n const costsChanged = !isEqual(\n purchaseDetailsForm.additionalCosts,\n formState.defaultValues?.additionalCosts\n );\n const paymentsChanged = !isEqual(\n purchaseDetailsForm.payments,\n formState.defaultValues?.payments\n );\n\n const dealChanged = !isEqual(\n purchaseDetailsForm.deal,\n formState.defaultValues?.deal\n );\n\n // If we have any change from ticket-groups or costs, that could affect the PO main props (total-cost, unit cost, num of tickets and ticket-groups, etc.)\n // Or if we made any changes explicitly on the PO, then call updatePurchaseOrder to update those first-class props\n if (\n ticketGroupsChanged ||\n costsChanged ||\n paymentsChanged ||\n dealChanged ||\n hasChanged(\n purchaseDetailsForm.currencyCode,\n formState.defaultValues?.currencyCode\n ) ||\n hasChanged(\n purchaseDetailsForm.buyerUserId,\n formState.defaultValues?.buyerUserId\n ) ||\n hasChanged(\n purchaseDetailsForm.purchaseDate,\n formState.defaultValues?.purchaseDate\n ) ||\n hasChanged(\n purchaseDetailsForm.vendor,\n formState.defaultValues?.vendor\n ) ||\n hasChanged(\n purchaseDetailsForm.vendorAccount,\n formState.defaultValues?.vendorAccount\n ) ||\n hasChanged(\n purchaseDetailsForm.vendorOrderId,\n formState.defaultValues?.vendorOrderId\n ) ||\n hasChanged(\n purchaseDetailsForm.secondaryVendorAccount,\n formState.defaultValues?.secondaryVendorAccount\n ) ||\n hasChanged(\n purchaseDetailsForm.transferId,\n formState.defaultValues?.transferId\n ) ||\n tagFieldHasChanges(\n purchaseDetailsForm.tags,\n (formState.defaultValues?.tags ?? {}) as PosFieldArrayOfTag,\n tagsMetadata ?? []\n ) ||\n hasChanged(\n purchaseDetailsForm.privateNotes,\n formState.defaultValues?.privateNotes\n ) ||\n hasChanged(\n purchaseDetailsForm?.commissions,\n formState.defaultValues?.commissions\n ) ||\n hasChanged(\n purchaseDetailsForm?.qcState,\n formState.defaultValues?.qcState\n ) ||\n hasChanged(\n purchaseDetailsForm?.isCommissionsLocked,\n formState.defaultValues?.isCommissionsLocked\n )\n ) {\n reloadWizard = true;\n const result =\n await client.updatePurchaseOrder(purchaseDetailsForm);\n\n if (result.status !== 200) {\n let errorMessage = 'Failed to update purchase order';\n\n if (result.message != null) {\n errorMessage += `: ${result.message}`;\n }\n\n showErrorDialog(\n 'PurchaseClient.updatePurchaseOrder',\n { message: errorMessage, status: result.status },\n {\n trackErrorData: {\n purchaseDetailsForm,\n result,\n },\n }\n );\n return;\n }\n }\n\n if (ticketGroupsChanged || paymentsChanged || costsChanged) {\n reloadWizard = true;\n\n const tgIntentionsMap = getValues('ticketGroupIntentions');\n if (\n (paymentsChanged || costsChanged) &&\n hasPurchasePaymentConversionFeature\n ) {\n ticketGroups.forEach(({ ticketGroupId }) => {\n if (!tgIntentionsMap[ticketGroupId]?.reason) {\n tgIntentionsMap[ticketGroupId] = {\n ticketGroupId: ticketGroupId,\n reason: TicketGroupEditReason.AmendTickets,\n additionalInfo: 'Update payment and cost',\n };\n }\n });\n }\n\n // New ad groups (negative ids) can be edited/ after being added, so we want to change it back to add\n // so the backend can handle it properly\n // We don't care about the Cancel intention because it will result in no-op\n const intentions = Object.values(tgIntentionsMap).map((tgi) => {\n if (\n tgi.ticketGroupId < 0 &&\n tgi.reason === TicketGroupEditReason.AmendTickets\n ) {\n tgi.reason = TicketGroupEditReason.AddTickets;\n }\n\n return tgi;\n });\n ticketGroupsChanged = await new TicketClient(\n activeAccountWebClientConfig\n ).mergeTicketGroups(\n {\n purchaseOrderId: purchaseDetailsForm.id,\n intentions: intentions,\n ticketGroups: purchaseDetailsForm.ticketGroups,\n updateSalesOfListings:\n purchaseDetailsForm.updateSalesOfListings,\n updatePredeliveryETicketArtifacts:\n purchaseDetailsForm.updatePredeliveryETicketArtifacts,\n } as TicketGroupMergeInput,\n true // isManual\n );\n\n // If the ticket group is the same as the one we are editing, we need to update the context\n if (\n purchaseOrderId > 0 &&\n updateItemInEvent != null &&\n intentions.length === 1 &&\n highlightTicketGroupIds?.length === 1\n ) {\n if (\n highlightTicketGroupIds[0] === intentions[0].ticketGroupId\n ) {\n const purchaseOrderDetails =\n await client.getPurchaseOrderByPurchaseOrderId(\n purchaseOrderId,\n false\n );\n if (purchaseOrderDetails) {\n updateItemInEvent(\n {\n ...purchaseOrderDetails,\n ...purchaseOrderDetails.ticketGroups[0],\n ticketGroupItems: [],\n isTktGrp: true,\n id: purchaseOrderDetails.id,\n tgId: purchaseOrderDetails.ticketGroups[0].id,\n isMultEv: false,\n } as PurchaseOrderTicketGroup,\n ActionOutboxEntityType.Purchase\n );\n }\n }\n }\n }\n\n if (reloadWizard) {\n // Refresh the active data so the SaleDetail dialog and table will have the new content\n setActivePosEntity(purchaseDetailsForm.id, null, true);\n reset(purchaseDetailsForm);\n // Update the tags metadata\n refreshTagMetadata();\n }\n }\n\n await refreshCatalog();\n\n refreshData(true);\n },\n (error) => {\n showErrorDialog(\n purchaseDetailsForm.id < 0\n ? 'PurchaseClient.insertPurchaseOrder'\n : 'PurchaseClient.updatePurchaseOrder',\n error,\n {\n trackErrorData: purchaseDetailsForm,\n }\n );\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [\n absoluteReadOnly,\n activeAccountWebClientConfig,\n refreshCatalog,\n refreshData,\n showErrorDialog,\n inboundEmailId,\n setActivePosEntity,\n classificationType,\n navigate,\n setModal,\n queryClient,\n purchaseHasMergedListings,\n formState.defaultValues?.ticketGroups,\n formState.defaultValues?.additionalCosts,\n formState.defaultValues?.payments,\n formState.defaultValues?.deal,\n formState.defaultValues?.currencyCode,\n formState.defaultValues?.buyerUserId,\n formState.defaultValues?.purchaseDate,\n formState.defaultValues?.vendor,\n formState.defaultValues?.vendorAccount,\n formState.defaultValues?.vendorOrderId,\n formState.defaultValues?.secondaryVendorAccount,\n formState.defaultValues?.transferId,\n formState.defaultValues?.tags,\n formState.defaultValues?.privateNotes,\n formState.defaultValues?.commissions,\n formState.defaultValues?.qcState,\n formState.defaultValues?.isCommissionsLocked,\n tagsMetadata,\n updateMergedListingDialog,\n getValues,\n hasPurchasePaymentConversionFeature,\n purchaseOrderId,\n updateItemInEvent,\n highlightTicketGroupIds,\n ticketGroups,\n reset,\n refreshTagMetadata,\n ]\n );\n\n const onNextFromVendorInfoStep = useCallback(async () => {\n if (\n validateVendorInfo(\n purchaseOrderId,\n clearErrors,\n purchaseDate,\n requiredMsg,\n orderIdUsedErrorMsg,\n setError,\n vendor,\n vendorAccount,\n vendorOrderId,\n purchasingIdInUseQuery.data\n )\n ) {\n const viagVirtualId =\n purchaseOrderId < 0 &&\n getDeepLinkIdFromUrl(EventIdQueryParam, window.location.href);\n\n let additionalData = undefined;\n if (viagVirtualId) {\n // We have a viagVirtualId specified - we should go get that Event before moving on with the add\n const catalog = await new CatalogClient(\n activeAccountWebClientConfig\n ).getCatalog([viagVirtualId]);\n\n const { event, venue, performer } = getEventPerformerVenue(\n viagVirtualId,\n catalog\n );\n if (event) {\n additionalData = {\n event: event.event,\n performer,\n venue,\n };\n }\n }\n\n setTicketGroupEditContext({\n startWithEventSearch: !additionalData,\n ticketGroupId: newBigIntId(),\n editIntention: TicketGroupEditReason.AddTickets,\n editInfo: '',\n additionalData: additionalData,\n });\n setCurrentStep(Steps.TicketGroupInputStep);\n }\n }, [\n activeAccountWebClientConfig,\n clearErrors,\n orderIdUsedErrorMsg,\n purchaseOrderId,\n purchaseDate,\n purchasingIdInUseQuery.data,\n requiredMsg,\n setError,\n vendor,\n vendorAccount,\n vendorOrderId,\n ]);\n\n const {\n launchDialog: launchInternationalComplianceDialog,\n closeDialog: closeInternationalComplianceDialog,\n dialogProps: internationalComplianceDialogProps,\n } = useBasicDialog();\n\n const internationalComplianceHookProps = useInternationalComplianceDialog(\n () => {\n closeInternationalComplianceDialog();\n handleSubmit(onSubmit)();\n }\n );\n\n const onNextFromPurchaseWizardMainStep = useCallback(() => {\n if (\n validateVendorInfo(\n purchaseOrderId,\n clearErrors,\n purchaseDate,\n requiredMsg,\n orderIdUsedErrorMsg,\n setError,\n vendor,\n vendorAccount,\n vendorOrderId,\n purchasingIdInUseQuery.data\n ) &&\n validateEventSelection(\n clearErrors,\n setError,\n ticketGroups,\n eventRequiredMsg\n ) &&\n validateTicketGroups(\n false,\n clearErrors,\n setError,\n ticketGroups,\n requiredMsg,\n duplicateSeatMsg,\n inhandDateMustBeforeEventDateMsg,\n autoBroadcastRequireFaceValueMsg\n )\n ) {\n // Find any ticket group that is new and are for events not in US\n const internationalNewTgs = ticketGroups.filter(\n (tg) =>\n tg.ticketGroupId < 0 &&\n !US_COUNTRY_CODES.includes(\n tg.venue?.country?.code?.toUpperCase() ?? ''\n )\n );\n\n if (\n // If we have any, and there is a settings that last time we used it compare to now is more than 24 hrs, ask again\n internationalNewTgs.length > 0 &&\n isDatePassedHours(\n internationalComplianceHookProps.value?.doNotAskAgainTimestamp,\n 24\n )\n ) {\n launchInternationalComplianceDialog();\n } else {\n if (purchaseHasMergedListings) {\n updateMergedListingDialog.launchDialog();\n } else {\n handleSubmit(onSubmit)();\n }\n }\n }\n }, [\n purchaseOrderId,\n clearErrors,\n purchaseDate,\n requiredMsg,\n orderIdUsedErrorMsg,\n setError,\n vendor,\n vendorAccount,\n vendorOrderId,\n purchasingIdInUseQuery.data,\n ticketGroups,\n eventRequiredMsg,\n duplicateSeatMsg,\n inhandDateMustBeforeEventDateMsg,\n autoBroadcastRequireFaceValueMsg,\n internationalComplianceHookProps.value?.doNotAskAgainTimestamp,\n launchInternationalComplianceDialog,\n purchaseHasMergedListings,\n updateMergedListingDialog,\n handleSubmit,\n onSubmit,\n ]);\n\n const handleTicketGroupEdit = useCallback(\n (intention: TicketGroupIntention, tgContext: TicketGroupEditContext) => {\n if (intention.reason === TicketGroupEditReason.CancelTickets) {\n const newTgs = ticketGroups.filter(\n (tg) => tg.ticketGroupId !== tgContext.ticketGroupId\n );\n\n setValue('ticketGroups', newTgs);\n\n ticketGroupIntentions[intention.ticketGroupId.toString()] = intention;\n setValue('ticketGroupIntentions', { ...ticketGroupIntentions });\n } else if (intention.reason === TicketGroupEditReason.AmendTickets) {\n setTicketGroupEditContext({\n ...tgContext,\n editInfo: intention.additionalInfo,\n });\n\n // We just want to edit - go straight there\n setCurrentStep(Steps.TicketGroupInputStep);\n } else if (AddActions.includes(intention.reason)) {\n // Adding a new ticket-groups for the current-event\n // If it's an exchange, on Submit of the PurchaseTicketFlow, the current ticket group will be deleted\n const { additionalData } = tgContext;\n if (additionalData?.event) {\n setTicketGroupEditContext({\n ticketGroupId: intention.ticketGroupId,\n startWithEventSearch: false,\n ticketGroupIdToRemove: tgContext.ticketGroupIdToRemove,\n editIntention: intention.reason,\n additionalData,\n editInfo: intention.additionalInfo,\n });\n } else {\n setTicketGroupEditContext({\n startWithEventSearch: true,\n ticketGroupId: newBigIntId(),\n editIntention: TicketGroupEditReason.AddTickets,\n editInfo: intention.additionalInfo,\n });\n }\n\n // We just want to edit (but keep fields not pre-filled) - go straight there\n setCurrentStep(Steps.TicketGroupBlankInputStep);\n }\n\n ticketGroupIntentionDialog.closeDialog();\n },\n [setValue, ticketGroupIntentionDialog, ticketGroupIntentions, ticketGroups]\n );\n\n const onTicketGroupIntentionDialogSave = useCallback(\n (intention: TicketGroupIntention) => {\n cleanTicketGroupContextFromDeepLink(PurchaseDeeplinkQueryParam);\n\n handleTicketGroupEdit(intention, ticketGroupEditContext);\n\n ticketGroupIntentionDialog.closeDialog();\n },\n [handleTicketGroupEdit, ticketGroupEditContext, ticketGroupIntentionDialog]\n );\n\n const isDisabledAbsolutely =\n absoluteReadOnly || isLoading || formState.isSubmitting;\n\n const isDisabled = readOnly || isLoading || formState.isSubmitting;\n\n const onPurchaseTicketsFlowSubmit = useCallback(\n (formData: PurchaseTicketsInput) => {\n if (!isDisabled) {\n const newTicketGroups = formData.ticketGroups;\n let finalTicketGroups = [] as TicketGroupInput[];\n if (\n ticketGroupEditContext.editIntention ===\n TicketGroupEditReason.AddTickets\n ) {\n finalTicketGroups = [...(ticketGroups || []), ...newTicketGroups];\n newTicketGroups.forEach((tg) => {\n ticketGroupIntentions[tg.ticketGroupId.toString()] = {\n ticketGroupId: tg.ticketGroupId,\n reason: ticketGroupEditContext.editIntention,\n additionalInfo: ticketGroupEditContext.editInfo,\n };\n });\n } else if (\n ticketGroupEditContext.editIntention ===\n TicketGroupEditReason.AmendTickets\n ) {\n const index = ticketGroups.findIndex(\n (tg) => tg.ticketGroupId === ticketGroupEditContext.ticketGroupId\n );\n const editedTicketGroup = newTicketGroups[0];\n finalTicketGroups = [...(ticketGroups || [])];\n finalTicketGroups[index] = editedTicketGroup;\n\n ticketGroupIntentions[editedTicketGroup.ticketGroupId.toString()] = {\n ticketGroupId: editedTicketGroup.ticketGroupId,\n reason: ticketGroupEditContext.editIntention,\n additionalInfo: ticketGroupEditContext.editInfo,\n };\n } else if (\n ticketGroupEditContext.editIntention ===\n TicketGroupEditReason.ExchangeTickets\n ) {\n const ticketGroupsWithoutTheRemoved = (finalTicketGroups =\n ticketGroups.filter(\n (tg) =>\n tg.ticketGroupId !==\n ticketGroupEditContext.ticketGroupIdToRemove\n ));\n finalTicketGroups = [\n ...ticketGroupsWithoutTheRemoved,\n ...newTicketGroups,\n ];\n\n ticketGroupIntentions[\n ticketGroupEditContext.ticketGroupIdToRemove!.toString()\n ] = {\n ticketGroupId: ticketGroupEditContext.ticketGroupIdToRemove!,\n reason: ticketGroupEditContext.editIntention,\n additionalInfo: ticketGroupEditContext.editInfo,\n };\n\n newTicketGroups.forEach((tg) => {\n ticketGroupIntentions[tg.ticketGroupId.toString()] = {\n ticketGroupId: tg.ticketGroupId,\n reason: ticketGroupEditContext.editIntention,\n additionalInfo: ticketGroupEditContext.editInfo,\n };\n });\n }\n setValue('ticketGroups', finalTicketGroups);\n setValue('ticketGroupIntentions', { ...ticketGroupIntentions });\n setValue('updateSalesOfListings', formData.updateSalesOfListings);\n setValue(\n 'updatePredeliveryETicketArtifacts',\n formData.updatePredeliveryETicketArtifacts\n );\n }\n setCurrentStep(Steps.PurchaseWizardMainStep);\n cleanTicketGroupContextFromDeepLink(PurchaseDeeplinkQueryParam);\n },\n [\n isDisabled,\n ticketGroupEditContext,\n setValue,\n ticketGroupIntentions,\n ticketGroups,\n ]\n );\n\n const onPurchaseMultiTicketsFlowSubmit = useCallback(\n (formData: PurchaseTicketsInput) => {\n if (!isDisabled) {\n const newTicketGroups = formData.ticketGroups;\n let finalTicketGroups = [] as TicketGroupInput[];\n if (\n ticketGroupEditContext.editIntention ===\n TicketGroupEditReason.AddTickets ||\n ticketGroupEditContext.editIntention ===\n TicketGroupEditReason.AmendTickets\n ) {\n // For predelivery flow we want single TG action\n if (\n ticketGroupEditContext.additionalData?.amendActionData\n ?.uploadPredeliveryAction\n ) {\n const index = ticketGroups.findIndex(\n (tg) => tg.ticketGroupId === ticketGroupEditContext.ticketGroupId\n );\n const editedTicketGroup = newTicketGroups[0];\n finalTicketGroups = [...(ticketGroups || [])];\n finalTicketGroups[index] = editedTicketGroup;\n\n ticketGroupIntentions[editedTicketGroup.ticketGroupId.toString()] =\n {\n ticketGroupId: editedTicketGroup.ticketGroupId,\n reason: ticketGroupEditContext.editIntention,\n additionalInfo: ticketGroupEditContext.editInfo,\n };\n } else {\n const targetEventId = newTicketGroups[0]?.event?.viagVirtualId;\n if (targetEventId != null) {\n // Filter out existing ticketGroups with the same event ID\n finalTicketGroups = ticketGroups?.filter(\n (tg) => tg.event?.viagVirtualId !== targetEventId\n );\n\n // Add newTicketGroups to the final result\n finalTicketGroups = [\n ...(finalTicketGroups || []),\n ...newTicketGroups,\n ];\n } else {\n // If no event ID in newTicketGroups, just keep the existing groups unchanged\n finalTicketGroups = [...ticketGroups];\n }\n\n newTicketGroups.forEach((tg) => {\n ticketGroupIntentions[tg.ticketGroupId.toString()] = {\n ticketGroupId: tg.ticketGroupId,\n reason: ticketGroupEditContext.editIntention,\n additionalInfo: ticketGroupEditContext.editInfo,\n };\n });\n }\n } else if (\n ticketGroupEditContext.editIntention ===\n TicketGroupEditReason.ExchangeTickets\n ) {\n const ticketGroupsWithoutTheRemoved = (finalTicketGroups =\n ticketGroups.filter(\n (tg) =>\n tg.ticketGroupId !==\n ticketGroupEditContext.ticketGroupIdToRemove\n ));\n finalTicketGroups = [\n ...ticketGroupsWithoutTheRemoved,\n ...newTicketGroups,\n ];\n\n ticketGroupIntentions[\n ticketGroupEditContext.ticketGroupIdToRemove!.toString()\n ] = {\n ticketGroupId: ticketGroupEditContext.ticketGroupIdToRemove!,\n reason: ticketGroupEditContext.editIntention,\n additionalInfo: ticketGroupEditContext.editInfo,\n };\n\n newTicketGroups.forEach((tg) => {\n ticketGroupIntentions[tg.ticketGroupId.toString()] = {\n ticketGroupId: tg.ticketGroupId,\n reason: ticketGroupEditContext.editIntention,\n additionalInfo: ticketGroupEditContext.editInfo,\n };\n });\n }\n setValue('ticketGroups', finalTicketGroups);\n setValue('ticketGroupIntentions', { ...ticketGroupIntentions });\n setValue('updateSalesOfListings', formData.updateSalesOfListings);\n setValue(\n 'updatePredeliveryETicketArtifacts',\n formData.updatePredeliveryETicketArtifacts\n );\n }\n setCurrentStep(Steps.PurchaseWizardMainStep);\n cleanTicketGroupContextFromDeepLink(PurchaseDeeplinkQueryParam);\n },\n [\n isDisabled,\n ticketGroupEditContext,\n setValue,\n ticketGroupIntentions,\n ticketGroups,\n ]\n );\n\n const onPurchaseTicketsFlowCancel = useCallback(() => {\n setCurrentStep(Steps.PurchaseWizardMainStep);\n cleanTicketGroupContextFromDeepLink(PurchaseDeeplinkQueryParam);\n }, []);\n\n const getFooterActions = useCallback((): PurchaseWizardFooterProps => {\n const hasChanges = !isEqual(formState.defaultValues, getValues());\n switch (currentStep) {\n case Steps.PurchaseVendorInfoStep:\n return {\n onPreviousLabel: hasChanges ? ContentId.Cancel : ContentId.Close,\n onPrevious: onCloseModal,\n onNextLabel: ContentId.Next,\n onNext: onNextFromVendorInfoStep,\n };\n case Steps.PurchaseWizardMainStep:\n return {\n onPreviousLabel: hasChanges ? ContentId.Cancel : ContentId.Close,\n onPrevious: onCloseModal, // Once we're on the main page, going back means cancelling\n onNextLabel:\n purchaseOrderId < 0 || hasChanges ? ContentId.Save : undefined,\n onNext:\n purchaseOrderId < 0 || hasChanges\n ? onNextFromPurchaseWizardMainStep\n : undefined,\n };\n case Steps.TicketGroupInputStep:\n case Steps.TicketGroupBlankInputStep:\n return {\n onPreviousLabel: undefined,\n onPrevious: undefined,\n onNextLabel: undefined,\n onNext: undefined,\n };\n }\n }, [\n formState.defaultValues,\n getValues,\n currentStep,\n onCloseModal,\n onNextFromVendorInfoStep,\n purchaseOrderId,\n onNextFromPurchaseWizardMainStep,\n ]);\n const footerActions = getFooterActions();\n\n const getTicketGroupsForEditing = useCallback((): TicketGroupInput[] => {\n if (ticketGroupEditContext.startWithEventSearch) {\n // If we want to start with search, then we want to create new ticket groups for new event\n // so just return nothing here\n return [];\n }\n const existingTicketGroup = ticketGroups?.find(\n (tg) => tg.ticketGroupId === ticketGroupEditContext.ticketGroupId\n );\n\n if (existingTicketGroup) {\n if (\n hasMultiTicketGroupTableFeature &&\n !ticketGroupEditContext.additionalData?.amendActionData\n ?.uploadPredeliveryAction\n ) {\n return ticketGroups.filter(\n (tg) =>\n tg.event?.viagVirtualId === existingTicketGroup.event?.viagVirtualId\n );\n }\n\n return [existingTicketGroup];\n }\n\n // Return a new one that is copy of an existing one if exist for the same event\n const existingTgs = (ticketGroups ?? [])?.filter(\n (tg) =>\n tg.viagogoVirtualId ===\n ticketGroupEditContext.additionalData!.event!.viagVirtualId ||\n tg.event?.viagVirtualId ===\n ticketGroupEditContext.additionalData!.event!.viagVirtualId\n );\n\n // To handle \"Add Purchase\" from an event\n if (hasMultiTicketGroupTableFeature && existingTgs.length > 0) {\n return existingTgs;\n }\n return [\n {\n ...(existingTgs.length ? existingTgs[existingTgs.length - 1] : {}),\n ticketGroupId: ticketGroupEditContext.ticketGroupId,\n viagogoVirtualId:\n ticketGroupEditContext.additionalData!.event?.viagVirtualId,\n viagogoEventId: ticketGroupEditContext.additionalData!.event?.viagId,\n eventMappingId: ticketGroupEditContext.additionalData!.event?.mappingId,\n posEventId: ticketGroupEditContext.additionalData!.event?.posIds?.[0],\n deliveryType: posChangedField(DeliveryType.InApp),\n event: ticketGroupEditContext.additionalData!.event,\n performer: ticketGroupEditContext.additionalData!.performer,\n venue: ticketGroupEditContext.additionalData!.venue,\n currencyCode: posChangedField(currencyCode?.value),\n } as TicketGroupInput,\n ];\n }, [\n currencyCode?.value,\n hasMultiTicketGroupTableFeature,\n ticketGroupEditContext.additionalData,\n ticketGroupEditContext.startWithEventSearch,\n ticketGroupEditContext.ticketGroupId,\n ticketGroups,\n ]);\n\n const emailPreview = useMemo(() => {\n return inboundEmailId != null && !isMobile ? (\n \n \n \n \n \n \n \n \n ) : null;\n }, [inboundEmailId, isMobile]);\n\n const onTicketGroupAction = useCallback(\n ({ ticketGroupId, action, additionalData }: TicketGroupActionParams) => {\n const newTGNav: TicketGroupEditContext = {\n startWithEventSearch: false,\n ticketGroupId: AddActions.includes(action)\n ? newBigIntId()\n : ticketGroupId,\n editIntention: action,\n editInfo: '',\n additionalData: additionalData,\n ticketGroupIdToRemove:\n action === TicketGroupEditReason.ExchangeTickets\n ? ticketGroupId\n : undefined,\n };\n\n setTicketGroupEditContext(newTGNav);\n if (\n isDisabled ||\n purchaseOrderId < 0 ||\n (ticketGroupId < 0 && action !== TicketGroupEditReason.AddTickets) ||\n additionalData?.amendActionData?.uploadPredeliveryAction\n ) {\n // If this is a new order, or\n // Cancelling or Amending a newly added ticket, or\n // it's amend dialog for uploading artifacts\n // should just do it without launching the dialog\n handleTicketGroupEdit(\n {\n ticketGroupId: newTGNav.ticketGroupId,\n reason: action,\n additionalInfo: '',\n },\n newTGNav\n );\n } else {\n ticketGroupIntentionDialog.launchDialog();\n }\n },\n [\n handleTicketGroupEdit,\n isDisabled,\n purchaseOrderId,\n ticketGroupIntentionDialog,\n ]\n );\n\n const cancelTicketGroupHookProps = useCancelTicketGroupDialog(\n () => {\n if (ticketGroupActionParams) {\n onTicketGroupAction(ticketGroupActionParams);\n setTicketGroupActionParams(undefined);\n ticketGroupCancelConfirmDialog.closeDialog();\n }\n },\n () => {\n setTicketGroupActionParams(undefined);\n ticketGroupCancelConfirmDialog.closeDialog();\n }\n );\n\n const onTicketGroupActionAttempt = useCallback(\n (\n { ticketGroupId, action, additionalData }: TicketGroupActionParams,\n showConfirmationDialog?: boolean\n ) => {\n if (\n showConfirmationDialog &&\n isDatePassedHours(cancelTicketGroupHookProps.lastTimeStamp, 1)\n ) {\n setTicketGroupActionParams({ ticketGroupId, action, additionalData });\n ticketGroupCancelConfirmDialog.launchDialog();\n return;\n }\n\n onTicketGroupAction({ ticketGroupId, action, additionalData });\n },\n [\n cancelTicketGroupHookProps.lastTimeStamp,\n onTicketGroupAction,\n ticketGroupCancelConfirmDialog,\n ]\n );\n\n const saleIds = useMemo(() => {\n const ticketGroup =\n ticketGroupEditContext.ticketGroupId >= 0\n ? ticketGroups.find(\n (tg) => tg.ticketGroupId === ticketGroupEditContext.ticketGroupId\n )\n : undefined;\n return new Set(\n ticketGroup?.tickets?.value\n ?.filter((t) => t.saleId)\n ?.map((t) => t.saleId!) || []\n );\n }, [ticketGroupEditContext.ticketGroupId, ticketGroups]);\n\n useEffect(() => {\n if (highlightTicketGroupIds?.length === 1 && initialTicketGroupEditReason) {\n onTicketGroupAction({\n ticketGroupId: highlightTicketGroupIds[0],\n action: initialTicketGroupEditReason,\n additionalData: initialTicketGroupEditContext?.additionalData,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const ticketGroupFromPartialPurchaseOrder = watch(\n 'ticketGroupFromPartialPurchaseOrder'\n );\n const eventSearchTextFromPartialPurchaseOrder = watch(\n 'eventSearchTextFromPartialPurchaseOrder'\n );\n\n if (TicketGroupInputSteps.includes(currentStep)) {\n if (hasMultiTicketGroupTableFeature) {\n return (\n \n );\n }\n return (\n \n );\n }\n\n return (\n \n onCloseModal(true)}\n >\n \n }\n />\n \n \n {!isLoading && emailPreview}\n \n {currentStep === Steps.PurchaseVendorInfoStep && (\n \n {/* this is only for add - which means there are no sales or listings */}\n \n \n \n \n \n )}\n {isLoading ? (\n \n ) : (\n currentStep === Steps.PurchaseWizardMainStep && (\n \n )\n )}\n \n \n \n {\n cleanTicketGroupContextFromDeepLink(PurchaseDeeplinkQueryParam);\n ticketGroupIntentionDialog.closeDialog();\n }}\n onSave={onTicketGroupIntentionDialogSave}\n />\n {vendorAccount && (\n {\n setValue(\n 'secondaryVendor',\n posChangedField(secondaryVendor ?? null)\n );\n setValue(\n 'secondaryVendorAccount',\n posChangedField(secondaryVendorAccount ?? null)\n );\n secondaryVendorAccountDialog.closeDialog();\n }}\n vendorAccountFrom={vendorAccount.value}\n vendorAccountTo={secondaryVendorAccount?.value ?? null}\n />\n )}\n \n }\n bodyText={\n \n \n \n \n \n \n \n \n }\n onOkay={handleSubmit(onSubmit)}\n disabled={isLoading}\n onCancel={() => updateMergedListingDialog.closeDialog()}\n />\n }\n size=\"md\"\n {...ticketGroupCancelConfirmDialog.dialogProps}\n alerts={[cancelTicketGroupHookProps]}\n onOkay={() => {\n if (ticketGroupActionParams) {\n onTicketGroupAction(ticketGroupActionParams);\n setTicketGroupActionParams(undefined);\n ticketGroupCancelConfirmDialog.closeDialog();\n }\n }}\n okText={ContentId.Yes}\n cancelText={ContentId.No}\n onCancel={() => {\n setTicketGroupActionParams(undefined);\n ticketGroupCancelConfirmDialog.closeDialog();\n }}\n />\n \n );\n}\n","import {\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { EmailPurchaseOrderContext } from 'src/contexts/EmailPurchaseOrderContext';\nimport { useEventItemLoadingDisplay } from 'src/hooks/useEventItemLoadingDisplay';\nimport { TicketGroupEditContext } from 'src/modals/PurchaseWizard/PurchaseWizard.types';\nimport {\n PurchaseDeeplinkQueryParam,\n PurchaseFromEmailPoQueryParam,\n} from 'src/utils/constants/constants';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { getDeepLinkIdFromUrl } from 'src/utils/deepLinkUtils';\nimport { getEventPerformerVenue } from 'src/utils/eventWithDataUtils';\nimport { newBigIntId } from 'src/utils/idUtils';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport {\n PurchaseOrderDetailsInput,\n splitOutTicketGroupId,\n toPartialPurchaseOrderToPurchaseOrderDetailsInput,\n toPurchaseOrderDetailsInput,\n} from 'src/utils/purchaseUtils';\nimport { CatalogClient, PurchaseOrderDetails } from 'src/WebApiController';\n\nimport { PurchaseWizardBody } from './PurchaseWizardBody';\n\nexport const PurchaseWizard = () => {\n const { posEntity: purchase, setActivePosEntity } =\n useActivePosEntityContext();\n\n const idParam = getDeepLinkIdFromUrl(\n PurchaseDeeplinkQueryParam,\n window.location.href\n );\n const {\n id: activeId,\n ticketGroupId,\n ticketGroupEditReason,\n ticketGroupEditContext,\n } = useMemo(() => {\n return splitOutTicketGroupId(idParam);\n }, [idParam]);\n\n const purchaseOrderId = Number(activeId);\n\n const isFromAutoPo =\n getDeepLinkIdFromUrl(\n PurchaseFromEmailPoQueryParam,\n window.location.href\n ) === 'true';\n\n useEffect(() => {\n if (isFromAutoPo) {\n if (purchase?.id !== activeId) {\n setActivePosEntity(purchaseOrderId, null, true);\n }\n }\n }, [activeId, isFromAutoPo, purchase, purchaseOrderId, setActivePosEntity]);\n\n const { isLoading, loadingState } =\n useEventItemLoadingDisplay(\n FormatContentId.LoadingOrderId,\n FormatContentId.SearchingForOrderId,\n FormatContentId.CouldNotFindOrderId,\n activeId?.toString()\n );\n\n if (purchaseOrderId > 0) {\n if (!purchase) {\n // If we don't have a purchase yet, either return loading state or nothing\n return loadingState;\n }\n\n // If we do have a purchase already, only return loadingState if it is not loading (ie, it's something else wrong)\n if (!isLoading && loadingState) return loadingState;\n }\n\n return (\n \n );\n};\n\nconst PurchaseOrderDetailsForm = ({\n purchase,\n loadingState,\n ...rest\n}: {\n purchase?: PurchaseOrderDetails | null;\n loadingState?: ReactNode;\n highlightTicketGroupIds?: number[];\n initialTicketGroupEditContext?: Partial;\n}) => {\n const { loginContext, activeAccountUserId, activeAccountWebClientConfig } =\n useAppContext();\n const { partialPurchaseOrder } = useContext(EmailPurchaseOrderContext);\n const { data } = useCatalogDataContext();\n const [poInput, setPoInput] = useState(\n null\n );\n\n const createPurchaseInput = useCallback(async () => {\n const poInput = toPurchaseOrderDetailsInput(\n purchase,\n activeAccountUserId,\n loginContext?.user?.activeAccount?.currencyCode,\n data\n );\n\n if (poInput) {\n const tgMissingEvents = poInput?.ticketGroups?.filter(\n (tg) => tg.event == null\n );\n\n if (tgMissingEvents?.length) {\n const missingViagVirtualIds = tgMissingEvents?.map(\n (tg) => tg.viagogoVirtualId\n );\n const smallCatalog = await new CatalogClient(\n activeAccountWebClientConfig\n ).getCatalog(missingViagVirtualIds);\n\n tgMissingEvents.forEach((tg) => {\n const viagogoVirtualId = tg.viagogoVirtualId;\n\n const { event, performer, venue } = getEventPerformerVenue(\n viagogoVirtualId,\n smallCatalog\n );\n\n tg.event = event?.event ?? null;\n tg.performer = performer ?? null;\n tg.venue = venue ?? null;\n });\n }\n\n setPoInput(poInput);\n }\n }, [\n activeAccountUserId,\n activeAccountWebClientConfig,\n data,\n loginContext?.user?.activeAccount?.currencyCode,\n purchase,\n ]);\n\n const createDefaultValues = useCallback(() => {\n if (purchase && !poInput) {\n return undefined;\n }\n\n return (\n poInput ??\n toPartialPurchaseOrderToPurchaseOrderDetailsInput(\n partialPurchaseOrder,\n activeAccountUserId,\n loginContext?.user?.activeAccount?.currencyCode\n ) ??\n ({\n id: newBigIntId(),\n buyerUserId: posChangedField(activeAccountUserId),\n purchaseDate: posChangedField(new Date().toISOString()),\n currencyCode: posChangedField(\n loginContext?.user?.activeAccount?.currencyCode\n ),\n ticketGroupIntentions: {},\n deal: null,\n } as PurchaseOrderDetailsInput)\n );\n }, [\n activeAccountUserId,\n loginContext?.user?.activeAccount?.currencyCode,\n partialPurchaseOrder,\n poInput,\n purchase,\n ]);\n\n const methods = useForm({\n defaultValues: createDefaultValues(),\n });\n\n useEffect(() => {\n if (purchase && !poInput) {\n createPurchaseInput();\n } else {\n methods.reset(createDefaultValues());\n }\n }, [createDefaultValues, createPurchaseInput, methods, poInput, purchase]);\n\n if (!methods.formState.defaultValues) {\n // If we have purchase but unable to load the purchase default value yet, return loading state\n return loadingState;\n }\n\n return (\n \n \n \n );\n};\n","import { PurchaseWizard } from 'src/modals/PurchaseWizard';\nimport { PurchaseDeeplinkQueryParam } from 'src/utils/constants/constants';\n\nexport const PurchaseWizardModalConfig = {\n children: ,\n clickOutsideToClose: true,\n deepLinkKey: PurchaseDeeplinkQueryParam,\n deepLinkValue: undefined,\n size: 'slide-in',\n};\n","import * as Sentry from '@sentry/react';\nimport { UseFormClearErrors, UseFormSetError } from 'react-hook-form';\nimport { ExpandedEventData } from 'src/contexts/CatalogDataContext';\nimport { AutoPoPartialPurchaseOrderFields } from 'src/contexts/EmailPurchaseOrderContext';\nimport { ErrorTypes } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalProps } from 'src/modals/Modal';\nimport { TicketGroupEditContext } from 'src/modals/PurchaseWizard/PurchaseWizard.types';\nimport { PurchaseWizardModalConfig } from 'src/modals/PurchaseWizard/PurchaseWizardModalConfig';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport {\n EventIdQueryParam,\n PurchaseDeeplinkQueryParam,\n} from 'src/utils/constants/constants';\nimport { removeFilters } from 'src/utils/eventQueryUtils';\nimport {\n CatalogClient,\n CatalogResults,\n DateTimeRange,\n DeliveryType,\n PosClientConfig,\n PosFieldOfNullableDateTime,\n PosFieldOfPurchaseVendor,\n PosFieldOfPurchaseVendorAccount,\n PosFieldOfString,\n PurchaseClient,\n PurchaseOrderDeal,\n PurchaseOrderDealInput,\n PurchaseOrderDetails,\n PurchaseOrderDetailsInput as ServerPurchaseOrderDetailsInput,\n PurchaseOrderQuery,\n PurchaseOrderState,\n PurchasingIdInUseResultType,\n Ticket,\n TicketGroup,\n TicketGroupEditReason,\n TicketGroupInput,\n TicketGroupIntention,\n UserSetting,\n} from 'src/WebApiController';\n\nimport {\n getPresetFromUiDateTimeRange,\n getUiDateTimeRangeFromPreset,\n PurchaseDateRangePresetNames,\n StandardDateRangePresetNames,\n} from './dateTimeUtils';\nimport {\n addDeepLinkUrlPart,\n getDeepLinkIdFromUrl,\n getFullUrl,\n getPathFromMainRoute,\n} from './deepLinkUtils';\nimport { getEventPerformerVenue } from './eventWithDataUtils';\nimport { newBigIntId } from './idUtils';\nimport { posChangedField, posField } from './posFieldUtils';\nimport { fitsSeatIncrementType, getNextTicketBy } from './ticketUtils';\nimport { tryInvokeApi } from './tryExecuteUtils';\n\nexport type PurchaseOrderDetailsInput = ServerPurchaseOrderDetailsInput & {\n ticketGroupIntentions: Record;\n ticketGroupFromPartialPurchaseOrder?: TicketGroupInput | null;\n eventSearchTextFromPartialPurchaseOrder?: string | null;\n updateSalesOfListings?: boolean | null;\n updatePredeliveryETicketArtifacts?: boolean | null;\n};\n\nexport type PurchaseTicketsInput = Pick<\n PurchaseOrderDetailsInput,\n | 'ticketGroups'\n | 'ticketGroupFromPartialPurchaseOrder'\n | 'eventSearchTextFromPartialPurchaseOrder'\n | 'updateSalesOfListings'\n | 'updatePredeliveryETicketArtifacts'\n> & {\n daysBeforeEvent?: number;\n};\n\nexport const toPurchaseOrderDetailsInput = (\n purchase?: PurchaseOrderDetails | null,\n accountUserId?: string | null,\n accountCurrencyCode?: string | null,\n catalog?: CatalogResults\n) => {\n if (!purchase) {\n return null;\n }\n\n const isNewPurchase = purchase.id <= 0;\n return {\n id: purchase.id > 0 ? purchase.id : newBigIntId(),\n purchaseDate: posField(\n purchase.poDate ?? new Date().toISOString(),\n isNewPurchase\n ),\n buyerUserId: posField(purchase.buyerId ?? accountUserId, isNewPurchase),\n currencyCode: posField(\n purchase.currency ?? accountCurrencyCode,\n isNewPurchase\n ),\n vendorOrderId: posField(purchase?.vendOrdId, isNewPurchase),\n commissions: posField(purchase?.commissions ?? [], isNewPurchase),\n vendor: posField(purchase?.vendor, isNewPurchase),\n vendorAccount: posField(purchase?.vendAcc, isNewPurchase),\n secondaryVendorAccount: posField(purchase?.secVendAcc, isNewPurchase),\n secondaryVendor: posField(purchase?.secVendor, isNewPurchase),\n paymentStatus: posField(purchase?.pmtStat, isNewPurchase),\n additionalCosts: posField(purchase?.additionalCosts, isNewPurchase),\n payments: posField(purchase?.payments, isNewPurchase),\n transferId: posField(purchase?.transferId, isNewPurchase),\n tags: posField(purchase?.tags, isNewPurchase),\n privateNotes: posField(purchase?.privNotes, isNewPurchase),\n qcState: posField(purchase?.qcState, isNewPurchase),\n ticketGroupCount: purchase?.tktGrpCnt,\n ticketCount: purchase?.ticketCnt,\n isAutoPo: purchase?.isAutoPo,\n ticketGroups: purchase?.ticketGroups.map((tg) =>\n toTicketGroupInput(tg, catalog, isNewPurchase)\n ),\n ticketGroupIntentions: {},\n deal: purchase?.deal\n ? posField(toDealInput(purchase?.deal, isNewPurchase), isNewPurchase)\n : null,\n isCommissionsLocked: posField(purchase?.isCommissionsLocked, isNewPurchase),\n } as PurchaseOrderDetailsInput;\n};\n\nexport const toTicketGroupInput = (\n tg: TicketGroup,\n catalog?: CatalogResults,\n isNewTicketGroup?: boolean\n) => {\n const viagogoVirtualId = tg.viagVirtualId;\n\n const { event, performer, venue } = getEventPerformerVenue(\n viagogoVirtualId,\n catalog\n );\n\n return {\n ticketGroupId: tg.id,\n purchaseOrderId: tg.poId,\n viagogoEventId: tg.viagEvId ?? event?.event?.viagId,\n eventMappingId: tg.viagEvMapId ?? event?.event?.mappingId,\n viagogoVirtualId: viagogoVirtualId,\n posEventId: tg.posEvId ?? event?.event?.posIds?.[0],\n event: event?.event,\n venue,\n performer,\n canGetDocArts: tg.canGetDocArts,\n unitCost: posField(tg.unitCst?.amt, isNewTicketGroup),\n inHandDate: posField(tg.inHandAt, isNewTicketGroup),\n expectedValue: posField(tg.expectedVal?.amt, isNewTicketGroup),\n isFaceValueCost: posField(tg.isFaceVal, isNewTicketGroup),\n faceValueCost: posField(tg.faceVal?.amt, isNewTicketGroup),\n deliveryType: posField(tg.delivType, isNewTicketGroup),\n totalCost: posField(tg.totalCst?.amt, isNewTicketGroup),\n taxPaid: posField(tg.taxPaid?.amt, isNewTicketGroup),\n deliveryCost: posField(tg.delivCst?.amt, isNewTicketGroup),\n currencyCode: posField(tg.currency, isNewTicketGroup),\n section: posField(tg.seating.section, isNewTicketGroup),\n sectionId: posField(tg.seating.sectionId, isNewTicketGroup),\n rowId: posField(tg.seating.rowId, isNewTicketGroup),\n row: posField(tg.seating.row, isNewTicketGroup),\n tickets: posField(tg.tickets, isNewTicketGroup),\n numberOfTickets: posField(tg.ticketCnt, isNewTicketGroup),\n /** Note - TicketGroup doesn't have InternalNotes as a field, but they are passed in from API to be set onto Listing */\n internalNotes: posField(tg.privNotes, isNewTicketGroup),\n listingNotes: posField(tg.seatTraits, isNewTicketGroup),\n webPrice: tg.webPrice,\n autoBroadcastCreatedListing: false,\n } as TicketGroupInput;\n};\n\nexport const toDealInput = (\n deal: PurchaseOrderDeal | null,\n isNewDeal: boolean\n) => {\n return {\n dealId: deal?.dealId,\n dealType: deal?.dealType,\n dealDetails: {\n dealConfigId: deal?.dealDetails?.dealConfigId,\n dealFallbackConfig: deal?.dealDetails?.dealFallbackConfig,\n dealConfigs: posField(deal?.dealDetails?.dealConfigs, isNewDeal),\n dealStartDate: deal?.dealDetails?.dealStartDate,\n dealEndDate: deal?.dealDetails?.dealEndDate,\n configSplitType: posField(deal?.dealDetails?.configSplitType, isNewDeal),\n guaranteedAmountPaid: deal?.dealDetails?.guaranteedAmountPaid,\n },\n } as PurchaseOrderDealInput;\n};\n\nexport const formatConversionRate = (\n rate: number | null,\n fromCurrency?: string | null,\n toCurrency?: string | null\n) => {\n if (rate == null) {\n return null;\n }\n\n return `1 ${fromCurrency == null ? '' : ' '}${fromCurrency} → ${rate.toFixed(\n 4\n )}${toCurrency == null ? '' : ' '}${toCurrency}`;\n};\n\nexport const toPartialPurchaseOrderToPurchaseOrderDetailsInput = (\n partialPurchaseOrder?: AutoPoPartialPurchaseOrderFields | null,\n accountUserId?: string | null,\n accountCurrencyCode?: string | null\n): PurchaseOrderDetailsInput | null => {\n if (!partialPurchaseOrder) {\n return null;\n }\n\n let ticketGroup = null;\n let eventSearchText = null;\n if (\n partialPurchaseOrder.eventName != null ||\n partialPurchaseOrder.venueName != null ||\n partialPurchaseOrder.section != null ||\n partialPurchaseOrder.row != null ||\n partialPurchaseOrder.seatFrom != null ||\n partialPurchaseOrder.seatTo != null ||\n partialPurchaseOrder.quantity != null ||\n partialPurchaseOrder.faceValue != null\n ) {\n const tgId = newBigIntId();\n const tickets = [] as Ticket[];\n let seatIncrementType = null;\n // Assemble tickets\n if (partialPurchaseOrder.quantity) {\n const seatValues = [] as string[];\n if (\n partialPurchaseOrder.seatFrom != null ||\n partialPurchaseOrder.seatTo != null\n ) {\n for (let incr = 1; incr <= 2; incr++) {\n if (\n fitsSeatIncrementType(\n partialPurchaseOrder.seatFrom,\n partialPurchaseOrder.seatTo,\n partialPurchaseOrder.quantity,\n incr\n )\n ) {\n seatIncrementType = incr;\n break;\n }\n }\n }\n\n let i;\n if (seatIncrementType) {\n let seatValue = partialPurchaseOrder.seatFrom;\n seatValues.push(seatValue);\n for (i = 1; i < partialPurchaseOrder.quantity; i++) {\n seatValue = getNextTicketBy(seatValue, seatIncrementType).toString();\n seatValues.push(seatValue);\n }\n } else {\n for (i = 0; i < partialPurchaseOrder.quantity; i++) {\n if (i === 0) seatValues.push(partialPurchaseOrder.seatFrom);\n else if (i === partialPurchaseOrder.quantity - 1)\n seatValues.push(partialPurchaseOrder.seatTo);\n else seatValues.push('');\n }\n }\n\n for (i = 0; i < partialPurchaseOrder.quantity; i++) {\n tickets.push({\n id: -i,\n tgId: tgId,\n ord: i,\n lstOrd: i,\n row: partialPurchaseOrder.row,\n seat: seatValues[i],\n } as Ticket);\n }\n }\n\n eventSearchText =\n partialPurchaseOrder.eventName ?? partialPurchaseOrder.venueName;\n // Strip chars other than blank, alphanumeric, quote\n // Sometimes there's difference of special chars like ':' vs '-' making it hard to search\n if (eventSearchText != null) {\n eventSearchText = eventSearchText.replace(/[^\\p{L}\\p{N}' ]/giu, '');\n }\n\n ticketGroup = {\n ticketGroupId: tgId,\n currencyCode: posChangedField(accountCurrencyCode),\n section: posChangedField(partialPurchaseOrder.section ?? ''),\n row: posChangedField(partialPurchaseOrder.row),\n numberOfTickets: posChangedField(partialPurchaseOrder.quantity ?? 0),\n tickets: posChangedField(tickets),\n deliveryType: posChangedField(DeliveryType.InApp),\n seatIncrementType: posChangedField(seatIncrementType),\n allocateSeats: posChangedField(\n partialPurchaseOrder.row != null ||\n partialPurchaseOrder.seatFrom != null ||\n partialPurchaseOrder.seatTo != null\n ),\n faceValueCost: posChangedField(partialPurchaseOrder.faceValue),\n isFaceValueCost: posChangedField(partialPurchaseOrder.faceValue != null),\n } as unknown as TicketGroupInput;\n }\n\n return {\n id: newBigIntId(),\n vendorOrderId: posChangedField(partialPurchaseOrder.orderId),\n purchaseDate: posChangedField(\n partialPurchaseOrder.purchaseOrderDate ?? new Date().toISOString()\n ),\n buyerUserId: posChangedField(accountUserId),\n vendorAccount: posChangedField(partialPurchaseOrder.vendorAccount),\n vendor: posChangedField(partialPurchaseOrder.vendor),\n currencyCode: posChangedField(accountCurrencyCode),\n ticketGroupIntentions: {},\n ticketGroupFromPartialPurchaseOrder: ticketGroup,\n eventSearchTextFromPartialPurchaseOrder: eventSearchText,\n deal: null,\n } as PurchaseOrderDetailsInput;\n};\n\nexport const getPurchaseOrderDeepLinkUrl = (deepLinkId?: string | number) => {\n return getFullUrl(\n MainRoute.Purchases,\n PurchaseDeeplinkQueryParam,\n deepLinkId\n );\n};\n\nexport const getPurchaseOrderRelativeUrl = (\n deepLinkId?: string | number,\n viagVirtualId?: string\n) => {\n let navigateUrl = `${getPathFromMainRoute(\n MainRoute.Purchases\n )}?${PurchaseDeeplinkQueryParam}=${deepLinkId}`;\n\n if (deepLinkId === 0 && viagVirtualId) {\n // We only honor eventQueryId if the ID is 0 (which is for adding a new Purchase)\n navigateUrl += `&${EventIdQueryParam}=${viagVirtualId}`;\n }\n\n return navigateUrl;\n};\n\nexport const getPurchaseOrderDetailsModalConfigWithDeepLink = (\n deepLinkId?: string | number\n): ModalProps => {\n return {\n ...PurchaseWizardModalConfig,\n deepLinkValue: deepLinkId,\n };\n};\n\nexport const validateEventSelection = (\n clearErrors: UseFormClearErrors<\n Partial<{ ticketGroups: TicketGroupInput[] | null }>\n >,\n setError: UseFormSetError<\n Partial<{ ticketGroups: TicketGroupInput[] | null }>\n >,\n ticketGroups: TicketGroupInput[] | null,\n requiredMsg: string\n) => {\n clearErrors('ticketGroups');\n if (!ticketGroups?.length) {\n setError('ticketGroups', { message: requiredMsg });\n return false;\n }\n\n return true;\n};\n\nexport const validateVendorInfo = (\n purchaseId: number,\n clearErrors: UseFormClearErrors,\n purchaseDate: PosFieldOfNullableDateTime | null,\n requiredMsg: string,\n orderIdUsedErrorMsg: string,\n setError: UseFormSetError,\n vendor: PosFieldOfPurchaseVendor | null,\n vendorAccount: PosFieldOfPurchaseVendorAccount | null,\n vendorOrderId: PosFieldOfString | null,\n purchasingIdsInUseResult: PurchasingIdInUseResultType | null | undefined\n) => {\n let hasErrors = false;\n\n clearErrors('vendor');\n clearErrors('vendorAccount');\n clearErrors('secondaryVendorAccount');\n clearErrors('vendorOrderId');\n clearErrors('purchaseDate');\n\n if (\n !vendor?.value ||\n !vendorAccount?.value ||\n !vendorOrderId?.value ||\n !purchaseDate?.value\n ) {\n !purchaseDate?.value &&\n setError('purchaseDate', { message: requiredMsg }, { shouldFocus: true });\n\n !vendorOrderId?.value &&\n setError(\n 'vendorOrderId', // for this we use register so we put error on the value\n { message: requiredMsg },\n { shouldFocus: true }\n );\n\n !vendorAccount?.value &&\n setError(\n 'vendorAccount',\n { message: requiredMsg },\n { shouldFocus: true }\n );\n\n !vendor?.value &&\n setError('vendor', { message: requiredMsg }, { shouldFocus: true });\n\n hasErrors = true;\n }\n\n // Only validate OrderId when we're having new purchase\n if (\n purchaseId < 0 &&\n purchasingIdsInUseResult ===\n PurchasingIdInUseResultType.SameOrderIdAndVendorId\n ) {\n setError(\n 'vendorOrderId',\n { message: orderIdUsedErrorMsg },\n { shouldFocus: true }\n );\n hasErrors = true;\n }\n\n return !hasErrors;\n};\n\nexport const validateTicketGroup = (\n clearErrors: UseFormClearErrors<\n Partial<{ ticketGroups: TicketGroupInput[] | null }>\n >,\n setError: UseFormSetError<\n Partial<{ ticketGroups: TicketGroupInput[] | null }>\n >,\n curTicketGroup: TicketGroupInput,\n index: number,\n requiredMsg: string,\n duplicateSeatMsg: string,\n inhandDateMustBeforeEventDateMsg: string,\n autoBroadcastRequireFaceValueMsg: string,\n isMultiTgTableFeature?: boolean\n) => {\n // Validate the current ticket-group first\n const errors = [];\n\n const { event } = curTicketGroup;\n\n const isNewTicketGroup = curTicketGroup.ticketGroupId < 0;\n\n clearErrors(`ticketGroups.${index}`);\n clearErrors(`ticketGroups.${index}.deliveryType`);\n clearErrors(`ticketGroups.${index}.unitCost`);\n clearErrors(`ticketGroups.${index}.currencyCode`);\n clearErrors(`ticketGroups.${index}.numberOfTickets`);\n clearErrors(`ticketGroups.${index}.inHandDate`);\n clearErrors(`ticketGroups.${index}.faceValueCost`);\n\n if (\n (curTicketGroup.deliveryType?.hasChanged || isNewTicketGroup) &&\n !curTicketGroup.deliveryType?.value\n ) {\n errors.push('Delivery Type: ' + requiredMsg); // TODO - how to get content-id here\n setError(\n `ticketGroups.${index}.deliveryType`,\n {\n message: requiredMsg,\n },\n { shouldFocus: true }\n );\n }\n\n if (\n (curTicketGroup.unitCost?.hasChanged || isNewTicketGroup) &&\n !Number.isFinite(curTicketGroup.unitCost?.value)\n ) {\n errors.push('Unit Cost: ' + requiredMsg);\n setError(\n `ticketGroups.${index}.unitCost`,\n {\n message: requiredMsg,\n },\n { shouldFocus: true }\n );\n }\n\n if (\n (curTicketGroup.currencyCode?.hasChanged || isNewTicketGroup) &&\n !curTicketGroup.currencyCode?.value\n ) {\n errors.push('Currency Code: ' + requiredMsg);\n setError(\n `ticketGroups.${index}.currencyCode`,\n {\n message: requiredMsg,\n },\n { shouldFocus: true }\n );\n }\n\n if (\n (curTicketGroup.numberOfTickets?.hasChanged || isNewTicketGroup) &&\n !curTicketGroup.numberOfTickets?.value\n ) {\n errors.push('Quantity: ' + requiredMsg);\n setError(\n `ticketGroups.${index}.numberOfTickets`,\n {\n message: requiredMsg,\n },\n { shouldFocus: true }\n );\n } else {\n const uniqueSeats: Record = {};\n let ticketsWithSeats = 0;\n curTicketGroup.tickets?.value?.forEach((t, ti) => {\n if (t.seat) {\n ticketsWithSeats++;\n clearErrors(`ticketGroups.${index}.tickets.value.${ti}.seat`);\n\n if (uniqueSeats[t.seat] >= 0) {\n errors.push(`${t.seat}: ${duplicateSeatMsg}`);\n setError(\n `ticketGroups.${index}.tickets.value.${ti}.seat`,\n {\n message: duplicateSeatMsg,\n },\n { shouldFocus: true }\n );\n } else {\n uniqueSeats[t.seat] = ti;\n }\n }\n });\n\n if (curTicketGroup.allocateSeats || isMultiTgTableFeature) {\n if (\n (curTicketGroup.row?.hasChanged || isNewTicketGroup) &&\n !curTicketGroup.row?.value\n ) {\n errors.push(`Row: ${requiredMsg}`);\n setError(\n `ticketGroups.${index}.row`,\n {\n message: requiredMsg,\n },\n { shouldFocus: true }\n );\n }\n\n if (\n (curTicketGroup.tickets?.hasChanged || isNewTicketGroup) &&\n ticketsWithSeats > 0 && // If any ticket has seat, then total number needs to match ticket-count\n ticketsWithSeats !== curTicketGroup.numberOfTickets?.value\n ) {\n curTicketGroup.tickets?.value?.forEach((t, ti) => {\n if (!t.seat) {\n errors.push(`Seats: ${requiredMsg}`);\n setError(\n `ticketGroups.${index}.tickets.value.${ti}.seat`,\n {\n message: requiredMsg,\n },\n { shouldFocus: true }\n );\n }\n });\n }\n }\n }\n\n if (\n (curTicketGroup.section?.hasChanged || isNewTicketGroup) &&\n !curTicketGroup.section?.value\n ) {\n errors.push(`Section: ${requiredMsg}`);\n setError(\n `ticketGroups.${index}.section`,\n {\n message: requiredMsg,\n },\n { shouldFocus: true }\n );\n }\n\n if (\n (curTicketGroup.inHandDate?.hasChanged || isNewTicketGroup) &&\n !curTicketGroup.inHandDate?.value\n ) {\n errors.push(`In-Hand Date: ${requiredMsg}`);\n setError(\n `ticketGroups.${index}.inHandDate`,\n {\n message: requiredMsg,\n },\n { shouldFocus: true }\n );\n } else if (\n curTicketGroup.inHandDate?.hasChanged &&\n new Date(curTicketGroup.inHandDate!.value!) >= new Date(event!.dates.start!)\n ) {\n errors.push(`In-Hand Date: ${inhandDateMustBeforeEventDateMsg}`);\n setError(\n `ticketGroups.${index}.inHandDate`,\n {\n message: inhandDateMustBeforeEventDateMsg,\n },\n { shouldFocus: true }\n );\n }\n\n if (curTicketGroup.faceValueCost?.hasChanged) {\n if (!Number.isFinite(curTicketGroup.faceValueCost.value)) {\n errors.push(`Face Value: ${autoBroadcastRequireFaceValueMsg}`);\n setError(\n `ticketGroups.${index}.faceValueCost`,\n {\n message: autoBroadcastRequireFaceValueMsg,\n },\n { shouldFocus: true }\n );\n }\n }\n return errors;\n};\n\nexport const validateTicketGroups = (\n isAtSingleTicketGroupInputLevel: boolean,\n clearErrors: UseFormClearErrors<\n Partial<{ ticketGroups: TicketGroupInput[] | null }>\n >,\n setError: UseFormSetError<\n Partial<{ ticketGroups: TicketGroupInput[] | null }>\n >,\n ticketGroups: TicketGroupInput[],\n requiredMsg: string,\n duplicateSeatMsg: string,\n inhandDateMustBeforeEventDateMsg: string,\n autoBroadcastRequireFaceValueMsg: string,\n isMultiTgTableFeature?: boolean\n) => {\n let isValid = true;\n const seatingByEvents = {} as Record>;\n ticketGroups.forEach((tg, i) => {\n if (tg.tickets?.hasChanged && tg.tickets.value) {\n const eventKey = tg.event?.viagVirtualId ?? tg.viagogoVirtualId;\n const curEvent = seatingByEvents[eventKey];\n if (!curEvent) {\n seatingByEvents[eventKey] = tg.tickets.value\n .filter((t) => t.seat)\n .reduce(\n (r, t) => {\n r[`${tg.section?.value}|${tg.row?.value}|${t.seat}`] = t.id;\n return r;\n },\n {} as Record\n );\n } else {\n tg.tickets.value.forEach((t, ti) => {\n if (t.seat) {\n const newSeat = `${tg.section?.value}|${tg.row?.value}|${t.seat}`;\n if (curEvent[newSeat] >= 0) {\n isValid = false;\n if (isMultiTgTableFeature) {\n setError(\n `ticketGroups.${i}.tickets`,\n {\n message: `${duplicateSeatMsg}: ${tg.section?.value} Row ${tg.row?.value} Seat ${t.seat}`,\n },\n { shouldFocus: true }\n );\n } else {\n setError(\n `ticketGroups.${i}.tickets.value.${ti}.seat`,\n {\n message: `${duplicateSeatMsg}: ${tg.section?.value} Row ${tg.row?.value} Seat ${t.seat}`,\n },\n { shouldFocus: true }\n );\n }\n }\n // Add seat to array\n curEvent[newSeat] = t.id;\n }\n });\n }\n }\n });\n\n if (isMultiTgTableFeature && isValid) {\n let isValidTicketGroups = true;\n ticketGroups.forEach((tg, i) => {\n const errors = validateTicketGroup(\n clearErrors,\n setError,\n tg,\n i,\n requiredMsg,\n duplicateSeatMsg,\n inhandDateMustBeforeEventDateMsg,\n autoBroadcastRequireFaceValueMsg,\n isMultiTgTableFeature\n );\n if (errors.length) {\n if (!isAtSingleTicketGroupInputLevel) {\n setError(\n `ticketGroups.${i}`,\n {\n message: errors.join(' | '),\n },\n { shouldFocus: true }\n );\n }\n isValidTicketGroups = false;\n }\n });\n\n return isValidTicketGroups;\n }\n\n return (\n isValid &&\n ticketGroups.every((tg, i) => {\n const errors = validateTicketGroup(\n clearErrors,\n setError,\n tg,\n i,\n requiredMsg,\n duplicateSeatMsg,\n inhandDateMustBeforeEventDateMsg,\n autoBroadcastRequireFaceValueMsg\n );\n if (errors.length) {\n if (!isAtSingleTicketGroupInputLevel) {\n // Only report at the ticketGroups (collection) if not at single-ticket-group level\n setError(\n `ticketGroups.${i}`,\n {\n message: errors.join(' | '),\n },\n { shouldFocus: true }\n );\n }\n return false; // invalid\n }\n\n return true; // valid\n })\n );\n};\n\nconst CombinedTicketGroupSeparator = '|';\n\nexport const isCancelledState = (poState?: PurchaseOrderState | null) =>\n poState === PurchaseOrderState.Cancelled ||\n poState === PurchaseOrderState.Void;\n\n/**\n * Removes all TicketGroupContext data except\n * for the ticketGroupId and set it in the URL\n * @param queryParamName\n */\nexport const cleanTicketGroupContextFromDeepLink = (queryParamName: string) => {\n const deepLinkValue = getDeepLinkIdFromUrl(\n queryParamName,\n window.location.href\n );\n const ticketGroup = splitOutTicketGroupId(deepLinkValue);\n const { id: purchaseId, ticketGroupId } = ticketGroup;\n const ticketGroupEditContext: Partial = {\n ticketGroupId,\n };\n\n if (!purchaseId) {\n return;\n }\n\n addDeepLinkUrlPart(\n queryParamName,\n combineWithTicketGroupId(purchaseId, ticketGroupEditContext)\n );\n};\n\ntype SplitOutTicketGroupIdReturnType = {\n id: number | string;\n ticketGroupId: number | undefined;\n ticketGroupEditReason: TicketGroupEditReason | undefined;\n ticketGroupEditContext: Partial;\n};\n\nexport const splitOutTicketGroupId = (\n purchaseIdDeepLinkValue: string\n): SplitOutTicketGroupIdReturnType => {\n let id: number | string = purchaseIdDeepLinkValue;\n let ticketGroupId: number | undefined = undefined;\n let ticketGroupEditReason: TicketGroupEditReason | undefined = undefined;\n let ticketGroupEditContext: Partial = {};\n\n const ticketGroupSeparatorIndex = purchaseIdDeepLinkValue.indexOf(\n CombinedTicketGroupSeparator\n );\n if (ticketGroupSeparatorIndex > 0) {\n id = purchaseIdDeepLinkValue.substring(0, ticketGroupSeparatorIndex);\n try {\n const dataStr = purchaseIdDeepLinkValue.substring(\n String(id).length + CombinedTicketGroupSeparator.length\n );\n ticketGroupEditContext = JSON.parse(\n dataStr\n ) as Partial;\n ticketGroupId = ticketGroupEditContext.ticketGroupId ?? undefined;\n ticketGroupEditReason = ticketGroupEditContext?.editIntention;\n } catch (e) {\n console.error(e);\n try {\n Sentry.captureException(e);\n } catch (err) {\n console.warn('Sentry log request failed', err);\n }\n }\n } else {\n const indexOfTgBracket = id.indexOf('[');\n const indexOfTgBracketEnd = id.indexOf(']');\n\n if (indexOfTgBracket > 0 && indexOfTgBracketEnd > 0) {\n id = purchaseIdDeepLinkValue.substring(0, indexOfTgBracket);\n const ticketGroupIdStr = purchaseIdDeepLinkValue.substring(\n indexOfTgBracket + 1,\n indexOfTgBracketEnd\n );\n\n const n = parseInt(ticketGroupIdStr);\n if (!Number.isNaN(n)) {\n ticketGroupId = n;\n }\n }\n }\n\n return { id, ticketGroupId, ticketGroupEditReason, ticketGroupEditContext };\n};\n\nexport const combineWithTicketGroupIdSimple = (\n purchaseId: number | string,\n ticketGroupId?: number | null\n) => {\n return purchaseId + (ticketGroupId ? '[' + ticketGroupId + ']' : '');\n};\n\nexport const combineWithTicketGroupId = (\n purchaseId: number | string,\n ticketGroupEditContext?: Partial\n) => {\n return `${purchaseId}${CombinedTicketGroupSeparator}${JSON.stringify(\n ticketGroupEditContext || {}\n )}`;\n};\n\nexport const filterPurchaseOrderTicketGroupsByEventId = (\n tgs: TicketGroup[],\n allEventIds:\n | {\n viagVirtualId: string;\n performerId: number | null;\n venueId: number;\n }[]\n | undefined\n) => {\n tgs = tgs.filter((tg) => {\n return (\n allEventIds?.find((e) => e.viagVirtualId === tg.viagVirtualId) != null\n );\n });\n\n return tgs;\n};\n\nexport const createPurchaseEventPageUrl = (\n eventId: string,\n queryParamsToRemove?: string[] // queryParams to remove from final URL\n): string => {\n let searchParams = '';\n const url = new URL(window.location.href);\n url.searchParams.set(EventIdQueryParam, eventId);\n (queryParamsToRemove ?? []).forEach((param) =>\n url.searchParams.delete(param)\n );\n searchParams = `?${removeFilters(url.searchParams.toString(), [\n 'searchText',\n ])}`;\n return `/purchases/event${searchParams}`;\n};\n\nexport const getCatalogData = async (\n client: CatalogClient,\n filterQuery: PurchaseOrderQuery,\n includeCounts: boolean\n) => {\n return await client.getCatalogForPurchaseOrders(filterQuery, includeCounts);\n};\n\nexport const PURCHASE_USER_SETTINGS = [\n UserSetting.PurchaseColumnEditability,\n UserSetting.PurchaseColumnNumberPrecision,\n UserSetting.PurchaseColumnOrder,\n UserSetting.PurchaseColumnsEnabled,\n UserSetting.PurchaseCustomColumns,\n UserSetting.QuickFiltersStatePurchases,\n UserSetting.PurchaseColumnWidths,\n UserSetting.PurchasePageViewMode,\n UserSetting.PurchaseEventColumnOrder,\n UserSetting.PurchaseEventColumnsEnabled,\n UserSetting.PurchaseEventColumnEditability,\n UserSetting.PurchaseEventColumnNumberPrecision,\n UserSetting.PurchaseEventColumnWidths,\n UserSetting.PurchasesDefaultTab,\n];\n\nexport const purchaseQueryValueTransformToUrl = (\n key: string,\n value: DateTimeRange\n) => {\n if (!value) {\n return value;\n }\n\n const queryKey = key as keyof PurchaseOrderQuery;\n\n if (queryKey === 'purchaseDates') {\n const preset = getPresetFromUiDateTimeRange(value);\n if (preset && PurchaseDateRangePresetNames.includes(preset.name)) {\n return preset.name;\n }\n } else if (queryKey === 'paymentDates') {\n const preset = getPresetFromUiDateTimeRange(value);\n if (preset && StandardDateRangePresetNames.includes(preset.name)) {\n return preset.name;\n }\n }\n\n return value;\n};\n\nexport const purchaseQueryValueTransformFromUrl = (\n key: string,\n value: string\n) => {\n if (!value) {\n return value;\n }\n\n const queryKey = key as keyof PurchaseOrderQuery;\n if (queryKey === 'purchaseDates') {\n const preset = getUiDateTimeRangeFromPreset(\n value,\n PurchaseDateRangePresetNames\n );\n if (preset) {\n return preset;\n }\n } else if (queryKey === 'paymentDates') {\n const preset = getUiDateTimeRangeFromPreset(\n value,\n StandardDateRangePresetNames\n );\n if (preset) {\n return preset;\n }\n }\n\n return value;\n};\n\nexport const getCatalogDataExpanded = async (\n viagogoVirtualIds: string[],\n filterQuery: PurchaseOrderQuery,\n {\n activeAccountWebClientConfig,\n onError,\n }: {\n activeAccountWebClientConfig: PosClientConfig;\n onError?: (error: ErrorTypes) => void;\n }\n) => {\n const result = await tryInvokeApi(async () => {\n const allTicketGroups = await new PurchaseClient(\n activeAccountWebClientConfig\n ).getTicketGroupsForEvents({\n ...filterQuery,\n // Is is to support the legacy event ID urls\n oldPosEventIds: viagogoVirtualIds\n .filter((id) => id.startsWith('old:'))\n .map((id) => id.substring(4)),\n eventOrMappingIds: viagogoVirtualIds.filter(\n (id) => !id.startsWith('old:')\n ),\n });\n\n const emptyResults = viagogoVirtualIds.reduce((results, id) => {\n results[id] = {\n sales: null,\n listings: null,\n ticketGroups: null,\n failedToRetrieveData: false,\n };\n return results;\n }, {} as ExpandedEventData);\n\n return Promise.resolve(\n Object.entries(allTicketGroups).reduce((results, [id, ticketGroups]) => {\n results[id] = {\n sales: null,\n listings: null,\n ticketGroups: ticketGroups,\n failedToRetrieveData: false,\n };\n return results;\n }, emptyResults)\n );\n }, onError);\n\n if (result) {\n return Promise.resolve(result);\n }\n\n return Promise.resolve(\n viagogoVirtualIds.reduce((results, id) => {\n results[id] = {\n failedToRetrieveData: true,\n sales: null,\n listings: null,\n ticketGroups: null,\n };\n return results;\n }, {} as ExpandedEventData)\n );\n};\n\nexport const getCatalogMetrics = (\n client: CatalogClient,\n filterQuery: PurchaseOrderQuery,\n rowVersion?: number | null,\n hasMetricsV2Feature?: boolean\n) => {\n return hasMetricsV2Feature\n ? client.getCatalogMetricsForTicketGroups(filterQuery, rowVersion)\n : client.getCatalogTicketGroupMetrics(filterQuery);\n};\n","import { format } from 'date-fns';\nimport { STUBHUB_LOGO_IMAGE } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ACTION_OUTBOX_ENTITY_TYPE_TO_CID,\n NOTIFICATION_TYPE_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { getFormattedEventName } from 'src/utils/eventWithDataUtils';\nimport { getFormattedLocation } from 'src/utils/format';\nimport { getListingDetailsDeepLinkUrl } from 'src/utils/inventoryUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { getPurchaseOrderDeepLinkUrl } from 'src/utils/purchaseUtils';\nimport { getSaleDetailsDeepLinkUrl } from 'src/utils/saleUtils';\nimport {\n ActionOutboxEntityType,\n Marketplace,\n Notification,\n} from 'src/WebApiController';\n\nconst getUrl = (\n entityType: ActionOutboxEntityType,\n entityId: number\n): URL | null | undefined => {\n switch (entityType) {\n case ActionOutboxEntityType.Sale:\n return getSaleDetailsDeepLinkUrl(entityId);\n\n case ActionOutboxEntityType.Listing:\n return getListingDetailsDeepLinkUrl(entityId);\n\n case ActionOutboxEntityType.Purchase:\n return getPurchaseOrderDeepLinkUrl(entityId);\n\n case ActionOutboxEntityType.SellerSupportCase:\n return new URL(\n 'http://add-deep-link-to-support-case-view-when-its-created'\n );\n\n case ActionOutboxEntityType.Document:\n case ActionOutboxEntityType.SellerEvent:\n case ActionOutboxEntityType.InboundEmail:\n return null;\n }\n};\n\nconst buildMessage = (\n notification: Notification,\n resolveContent: (\n contentId: ContentId | FormatContentId,\n marketplace: Marketplace | null\n ) => string | string[] | undefined\n): string => {\n const locale = getLocaleFromLanguageOrCurrent();\n let result = `${resolveContent(\n ACTION_OUTBOX_ENTITY_TYPE_TO_CID[notification.entityType],\n notification.marketplace\n )} #${notification.entityId} \\n`;\n\n if (notification.event) {\n result += `${getFormattedEventName({\n event: notification.event,\n performer: notification.performer,\n }).join(' ')}\\n`;\n\n const startDate =\n notification.event?.dates.start == null\n ? null\n : new Date(notification.event?.dates.start);\n\n if (startDate) {\n const eventDate = `${format(startDate, 'MMM d, yyyy', {\n locale,\n })} - ${format(startDate, 'h:mm a', { locale })}`;\n\n result += `${eventDate}\\n`;\n }\n }\n\n if (notification.venue) {\n result += `${resolveContent(\n ContentId.VenueName,\n null\n )}: ${getFormattedLocation(notification.venue)}\\n`;\n }\n\n return result;\n};\n\nexport const fireNativeNotification = (\n notification: Notification,\n resolveContent: (\n contentId: ContentId | FormatContentId,\n marketplace: Marketplace | null\n ) => string | string[] | undefined\n) => {\n window.Notification.requestPermission().then((permission) => {\n if (permission === 'granted') {\n const notif = new window.Notification(\n resolveContent(\n NOTIFICATION_TYPE_TO_CID[notification.notificationType],\n notification.marketplace\n )?.toString() ?? '',\n {\n body: buildMessage(notification, resolveContent),\n icon: STUBHUB_LOGO_IMAGE,\n }\n );\n notif.onclick = () => {\n const url = getUrl(notification.entityType, notification.entityId);\n if (url) {\n window.open(url)?.focus();\n }\n };\n }\n });\n};\n","import * as signalR from '@microsoft/signalr';\nimport { ILogger, LogLevel } from '@microsoft/signalr';\nimport * as Sentry from '@sentry/react';\nimport { useQuery } from '@tanstack/react-query';\nimport { debounce, isEmpty } from 'lodash-es';\nimport React, {\n Dispatch,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useSet } from 'react-use';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ContentIds } from 'src/utils/constants/contentIdDataMap';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { FormatContentIds } from 'src/utils/constants/formatContentIdDataMap';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n Feature,\n Marketplace,\n Notification,\n NotificationClient,\n NotificationState,\n NotificationType,\n Permission,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { isContentId, useContentContext } from '../ContentContext';\nimport { fireNativeNotification } from './NativeNotification';\n\nexport class SignalRLogger implements ILogger {\n log(logLevel: LogLevel, message: string) {\n if (logLevel <= LogLevel.Debug) {\n return;\n }\n if (logLevel <= LogLevel.Information) {\n console.debug(message);\n } else if (logLevel <= LogLevel.Warning) {\n console.warn(message);\n } else if (logLevel <= LogLevel.Critical) {\n console.error(message);\n }\n }\n}\n\nexport type NotificationFilter = {\n type?: Set;\n};\n\ntype INotificationsContext = {\n notifications: Notification[];\n notificationsIsLoading: boolean;\n notificationsIsInitialLoading: boolean;\n dismissNotification: (notificationId: number) => Promise;\n setNotificationFilter: Dispatch;\n /**\n * Whether a filter is set, but there are no results for the filter.\n */\n noResultsForNotificationFilter: boolean;\n};\n\nexport const NotificationsContext = React.createContext({\n notifications: [],\n notificationsIsLoading: false,\n notificationsIsInitialLoading: false,\n dismissNotification: async () => {},\n setNotificationFilter: () => {},\n noResultsForNotificationFilter: false,\n});\n\nexport const useNotificationsContext = () => useContext(NotificationsContext);\n\nexport const NotificationsContextProvider = ({\n loadActiveNotifications,\n children,\n}: {\n loadActiveNotifications?: boolean;\n children: React.ReactNode;\n}) => {\n const hasActiveNotificationsFeature = useUserHasFeature(\n Feature.HomePageNotifications\n );\n const canViewNotifications = useUserHasAnyOfPermissions(\n Permission.General_ViewNotifications\n );\n\n loadActiveNotifications =\n loadActiveNotifications &&\n hasActiveNotificationsFeature &&\n canViewNotifications;\n\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { contentResolver, formattedContentResolver } = useContentContext();\n\n const hubConnection = useRef();\n const [dismissedNotifications, { add: addDismissedNotification }] =\n useSet();\n\n const [notificationFilter, setNotificationFilter] =\n useState();\n\n const resolveContent = useCallback(\n (\n contentId: ContentId | FormatContentId,\n marketplace: Marketplace | null\n ): string | string[] | undefined => {\n return isContentId(contentId)\n ? contentResolver({ ...ContentIds[contentId] })\n : (formattedContentResolver(\n FormatContentIds[contentId].id,\n [marketplace ?? ''],\n FormatContentIds[contentId].defaultValue\n ) as string);\n },\n [contentResolver, formattedContentResolver]\n );\n\n const getActiveNotificationsQuery = useQuery({\n queryKey: [\n 'NotificationsClient.getActiveNotifications',\n activeAccountWebClientConfig.activeAccountId,\n loadActiveNotifications,\n ],\n queryFn: () => {\n if (\n activeAccountWebClientConfig.activeAccountId == null ||\n !loadActiveNotifications\n ) {\n return null;\n }\n return new NotificationClient(\n activeAccountWebClientConfig\n ).getActiveNotifications();\n },\n enabled:\n activeAccountWebClientConfig.activeAccountId != null &&\n loadActiveNotifications,\n staleTime: 0,\n gcTime: 0,\n refetchOnWindowFocus: false,\n meta: {\n persist: false, // we do not want this thing cached\n onError: (error: ErrorTypes) => {\n trackError('NotificationsClient.getActiveNotifications', error);\n },\n },\n });\n\n const undismissedNotifications = useMemo(() => {\n if (!getActiveNotificationsQuery.data) {\n return [];\n }\n return getActiveNotificationsQuery.data\n .filter((n) => !dismissedNotifications.has(n.notificationId))\n .toSorted((a, b) => b.createDateTime.localeCompare(a.createDateTime));\n }, [dismissedNotifications, getActiveNotificationsQuery.data]);\n\n const filteredNotifications = useMemo(() => {\n return undismissedNotifications.filter((n) => {\n if (\n notificationFilter?.type &&\n !notificationFilter.type.has(n.notificationType)\n ) {\n return false;\n }\n return true;\n });\n }, [undismissedNotifications, notificationFilter]);\n\n const getNotificationById = useCallback(\n async (notificationId: number): Promise => {\n if (!activeAccountWebClientConfig.activeAccountId) {\n return null;\n }\n return tryInvokeApi(\n async () => {\n return new NotificationClient(\n activeAccountWebClientConfig\n ).getNotification(notificationId);\n },\n (error: ErrorTypes) => {\n trackError('NotificationClient.getNotificationById', error, {\n notificationId,\n });\n }\n );\n },\n [activeAccountWebClientConfig, trackError]\n );\n\n const getNotificationsQueryDebounced = debounce(\n getActiveNotificationsQuery.refetch,\n 2000\n );\n\n useEffect(() => {\n if (!hubConnection.current) {\n hubConnection.current = new signalR.HubConnectionBuilder()\n .withUrl('/hubs/notification')\n .withAutomaticReconnect()\n .configureLogging(new SignalRLogger())\n .build();\n\n hubConnection.current.on('new', async (message) => {\n try {\n const messageList = JSON.parse(message);\n for (const m of messageList) {\n console.debug(\n 'notificationcontext - got new notification',\n m,\n hubConnection\n );\n const notification = await getNotificationById(m.NotificationId);\n // TODO (POS-3544): Dismiss notification depending on NotificationState\n notification &&\n notification.notificationState == NotificationState.Active &&\n fireNativeNotification(notification, resolveContent);\n }\n await getNotificationsQueryDebounced();\n } catch (e) {\n console.error(\n 'notificationcontext - malformed SignalR Message: ' + message\n );\n try {\n Sentry.captureException(e);\n } catch (err) {\n console.warn('Sentry log request failed', err);\n }\n }\n });\n\n hubConnection.current.start().catch(console.error);\n\n console.debug(\n 'Creating new Notification connection with id: ' +\n hubConnection.current.connectionId\n );\n }\n\n // Close the connection before unmount\n return () => {\n if (\n hubConnection.current &&\n hubConnection.current.state === signalR.HubConnectionState.Connected\n ) {\n console.debug(\n 'Stopping Notification connection with id: ' +\n hubConnection.current.connectionId\n );\n hubConnection.current.stop();\n hubConnection.current = undefined;\n }\n };\n }, [getNotificationById, getNotificationsQueryDebounced, resolveContent]);\n\n const dismissNotification = useCallback(\n async (notificationId: number) => {\n await tryInvokeApi(\n async () => {\n addDismissedNotification(notificationId);\n await new NotificationClient(\n activeAccountWebClientConfig\n ).dismissNotification(notificationId);\n await getNotificationsQueryDebounced();\n },\n (error: ErrorTypes) => {\n trackError('NotificationClient.dismissNotification', error, {\n notificationId,\n });\n }\n );\n },\n [\n activeAccountWebClientConfig,\n addDismissedNotification,\n getNotificationsQueryDebounced,\n trackError,\n ]\n );\n\n return (\n \n {children}\n \n );\n};\n","import signalR, {\n HubConnection,\n HubConnectionBuilder,\n HubConnectionState,\n} from '@microsoft/signalr';\nimport { isEqual } from 'lodash-es';\nimport {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreview,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { SignalRLogger } from '../NotificationsContext';\n\nexport enum BulkEditStage {\n Idle,\n GettingPreview,\n Preview,\n Execute,\n Done,\n}\n\nexport type BulkEditJob = {\n entityType: ActionOutboxEntityType;\n action: BulkActionType;\n updateKey: string;\n onBulkEditDone?: (\n progress: BulkEditProgress,\n errors: string[]\n ) => Promise;\n};\n\nexport type IBulkEditHubContext = {\n bulkEditHub?: HubConnection;\n progress?: BulkEditProgress;\n setProgress: React.Dispatch<\n React.SetStateAction\n >;\n errors: string[];\n setErrors: React.Dispatch>;\n warnings: string[];\n setWarnings: React.Dispatch>;\n mainDialogOpened: boolean;\n setMainDialogOpened: React.Dispatch>;\n stage: BulkEditStage;\n setStage: (stage: BulkEditStage) => void;\n preview?: BulkEditPreviewWithDetails;\n setPreview: (preview: BulkEditPreviewWithDetails | undefined) => void;\n setCurJob: (job: BulkEditJob | undefined) => void;\n /**\n * Retryable entities are entities that are changed during the time between preview and actual action\n */\n retryableEntities?: BulkEditPreview;\n /**\n * Snapshot of the progress before retrying\n */\n progressBeforeRetry?: BulkEditProgress;\n clearRetryStates: () => void;\n onRetryCancel: () => void;\n};\n\nexport const BulkEditHubContext = createContext({\n bulkEditHub: undefined,\n progress: undefined,\n setProgress: () => {},\n errors: [],\n setErrors: () => {},\n warnings: [],\n setWarnings: () => {},\n mainDialogOpened: false,\n setMainDialogOpened: () => {},\n stage: BulkEditStage.Idle,\n setStage: () => {},\n preview: undefined,\n setPreview: () => {},\n setCurJob: () => {},\n retryableEntities: undefined,\n progressBeforeRetry: undefined,\n clearRetryStates: () => {},\n onRetryCancel: () => {},\n});\n\nexport const useBulkEditHubContext = () => useContext(BulkEditHubContext);\n\n/**\n * Needs to be in sync with the method in C#\n * GetMethodName in BackgroundActionService.cs\n */\nexport const getBulkEditMethodName = (\n entityType?: ActionOutboxEntityType,\n bulkEditAction?: BulkActionType\n) => {\n if (!entityType || !bulkEditAction) {\n return undefined;\n }\n\n return `${entityType}-${bulkEditAction}`;\n};\n\nexport function BulkEditHubContextProvider({\n children,\n}: {\n children: ReactNode;\n}) {\n const { activeAccountWebClientConfig } = useAppContext();\n const [hubConnection, setHubConnection] = useState();\n\n const [curJob, setCurJob] = useState();\n const method = useMemo(\n () => getBulkEditMethodName(curJob?.entityType, curJob?.action),\n [curJob?.action, curJob?.entityType]\n );\n\n const [progress, setProgress] = useState();\n\n const [progressBeforeRetry, setProgressBeforeRetry] =\n useState();\n const [errorsBeforeRetry, setErrorsBeforeRetry] = useState([]);\n const [retryableEntities, setRetryableEntities] = useState();\n\n const [errors, setErrors] = useState([]);\n const [warnings, setWarnings] = useState([]);\n const [mainDialogOpened, setMainDialogOpened] = useState(false);\n\n const [stage, setStage] = useState(BulkEditStage.Idle);\n const [preview, setPreview] = useState<\n BulkEditPreviewWithDetails | undefined\n >(undefined);\n\n useEffect(() => {\n // Only attempt to connect to signal R when there is a login\n if (activeAccountWebClientConfig.activeAccountId) {\n if (\n !hubConnection ||\n hubConnection.state === HubConnectionState.Disconnected ||\n hubConnection.state === HubConnectionState.Disconnecting\n ) {\n const newHubConnection = new HubConnectionBuilder()\n .withUrl('/hubs/bulkEdit')\n .withAutomaticReconnect()\n .configureLogging(new SignalRLogger())\n .build();\n\n setHubConnection(newHubConnection);\n\n newHubConnection\n .start()\n .then(() => {\n console.debug(\n `BulkEditHub connection ready with id: ${newHubConnection.connectionId}`\n );\n })\n .catch((err) => {\n console.warn(\n 'BulkEditHub could not be started at this time: ' + err\n );\n });\n\n newHubConnection.onclose((err) => {\n console.debug('BulkEditHub connection closed', err);\n });\n }\n }\n\n return () => {\n if (\n hubConnection &&\n !(\n hubConnection.state === HubConnectionState.Disconnected ||\n hubConnection.state === HubConnectionState.Disconnecting\n )\n ) {\n console.debug(\n `Stopping BulkEditHub connection (state: ${hubConnection.state}) with id: ${hubConnection.connectionId}`\n );\n hubConnection.stop();\n setHubConnection(undefined);\n }\n };\n }, [activeAccountWebClientConfig.activeAccountId, hubConnection]);\n\n const clearRetryStates = useCallback(() => {\n setRetryableEntities(undefined);\n setProgressBeforeRetry(undefined);\n setErrorsBeforeRetry([]);\n }, []);\n\n const updateProgress = useCallback(\n async (newProgress: BulkEditProgress) => {\n if (\n curJob &&\n method &&\n newProgress.updateKey === curJob.updateKey &&\n newProgress.method === method\n ) {\n if (\n !isEqual(newProgress, progress) &&\n (newProgress.step === BulkEditStep.Initializing || // new initialization, overrides the previous done progress\n progress?.step !== BulkEditStep.Done) // no more progress update is allowed when the last received progress is Done\n ) {\n if (newProgress.step === BulkEditStep.Initializing) {\n clearRetryStates();\n }\n\n newProgress =\n newProgress.step !== progress?.step\n ? newProgress // step changed, just take new one\n : {\n // step didn't change, make sure we only take the higher numbers\n ...newProgress,\n // This make sure the counts only increase, never decrease\n successCount: Math.max(\n newProgress.successCount,\n progress?.successCount ?? 0\n ),\n warningCount: Math.max(\n newProgress.warningCount,\n progress?.warningCount ?? 0\n ),\n failureCount: Math.max(\n newProgress.failureCount,\n progress?.failureCount ?? 0\n ),\n totalCount: Math.max(\n newProgress.totalCount,\n progress?.totalCount ?? 0\n ),\n successPercent: Math.max(\n newProgress.successPercent ?? 0,\n progress?.successPercent ?? 0\n ),\n warningPercent: Math.max(\n newProgress.warningPercent ?? 0,\n progress?.warningPercent ?? 0\n ),\n failurePercent: Math.max(\n newProgress.failurePercent ?? 0,\n progress?.failurePercent ?? 0\n ),\n };\n\n // This make sure that if the count is passed the total, considered the bulk-progress done unless forceNotDone is specified\n if (\n newProgress.step === BulkEditStep.InProgress &&\n newProgress.totalCount > 0 &&\n newProgress.successCount +\n newProgress.warningCount +\n newProgress.failureCount >=\n newProgress.totalCount\n ) {\n newProgress.step = BulkEditStep.Done;\n }\n\n // NOTE - this is necessary to call before the \"setProgress\" is called\n // because once the setProgress happens, the bulk edit shows completion\n // but the refresh of data hasn't complete, causing people to report bulk-edit not working\n if (newProgress.step === BulkEditStep.Done) {\n // Ensure that count matches so users don't question wtf is going on\n // Because the Done event can come in before the last count event\n // We only tally up success-count because even if the last message is the error we would have missed it\n newProgress.successCount =\n newProgress.totalCount -\n newProgress.failureCount -\n newProgress.warningCount;\n\n setStage(BulkEditStage.Done);\n await curJob.onBulkEditDone?.(newProgress, errors);\n }\n\n if (newProgress.step === BulkEditStep.DoneWithRetryableEntities) {\n setStage(BulkEditStage.Idle);\n setRetryableEntities(newProgress.retryableEntities ?? undefined);\n setProgressBeforeRetry(newProgress);\n setErrorsBeforeRetry(errors);\n }\n\n setProgress(newProgress);\n\n if (newProgress?.error && !errors.includes(newProgress.error)) {\n setErrors((prev) => {\n return [...prev, newProgress.error!];\n });\n }\n if (newProgress?.warning && !warnings.includes(newProgress.warning)) {\n setWarnings((prev) => {\n return [...prev, newProgress.warning!];\n });\n }\n }\n }\n },\n [curJob, method, progress, errors, warnings, clearRetryStates]\n );\n\n useEffect(() => {\n if (curJob) {\n const handler = (progress: BulkEditProgress) => {\n if (!curJob.updateKey || progress.updateKey === curJob.updateKey) {\n updateProgress(progress);\n }\n };\n\n if (method) {\n hubConnection?.on(method, handler);\n return () => {\n hubConnection?.off(method, handler);\n };\n }\n }\n }, [curJob, hubConnection, method, updateProgress]);\n\n const [successPercent, setSuccessPercent] = useState(0);\n useEffect(() => {\n if (curJob) {\n if (stage === BulkEditStage.GettingPreview) {\n if (successPercent < 100) {\n const interval = setInterval(() => {\n setProgress({\n updateKey: curJob.updateKey,\n method: method,\n step: BulkEditStep.InProgress,\n successPercent: Math.min(successPercent + 0.6, 100) / 100,\n } as BulkEditProgress);\n\n setSuccessPercent((prev) => prev + 0.3);\n }, 100);\n\n return () => clearInterval(interval);\n }\n } else {\n setProgress(undefined);\n }\n }\n }, [curJob, method, retryableEntities, setProgress, stage, successPercent]);\n\n const setStageWrapper = (newStage: BulkEditStage) => {\n if (curJob) {\n setStage(newStage);\n if (newStage === BulkEditStage.GettingPreview) {\n setSuccessPercent(0);\n } else if (newStage === BulkEditStage.Preview) {\n setSuccessPercent(100);\n setProgress({\n updateKey: curJob.updateKey,\n method: method,\n step: BulkEditStep.InProgress,\n successPercent: 1,\n } as BulkEditProgress);\n }\n }\n };\n\n const onRetryCancel = async () => {\n setStage(BulkEditStage.Done);\n if (progressBeforeRetry) {\n await curJob?.onBulkEditDone?.(progressBeforeRetry, errorsBeforeRetry);\n }\n clearRetryStates();\n };\n\n const setCurJobWrapper = (job?: BulkEditJob) => {\n if (!job) {\n setProgress(undefined);\n setPreview(undefined);\n setStage(BulkEditStage.Idle);\n }\n\n setCurJob(job);\n };\n\n return (\n \n {children}\n \n );\n}\n","import { Stack } from 'src/core/ui';\n\nimport * as styles from './BulkEditErrorList.css';\n\nexport function BulkEditErrorList({ errors }: { errors: string[] }) {\n return (\n \n {errors.toSorted().map((err, i) => (\n {err}\n ))}\n \n );\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { BulkEditProgress } from 'src/WebApiController';\n\nimport * as styles from './BulkEditPreviewDisplay.css';\n\nexport const BulkEditGettingPreview = ({\n progress,\n}: {\n progress?: BulkEditProgress;\n}) => {\n return (\n <>\n \n \n
    \n \n
    \n\n \n {roundToPrecision((progress?.successPercent ?? 0) * 100, 0)} / 100%\n \n
    \n \n );\n};\n","import { useMemo } from 'react';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { FormatContent } from 'src/contexts/ContentContext';\nimport { MultiSelectScope } from 'src/contexts/MultiSelectionContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { Stack } from 'src/core/ui';\nimport { FormatOption } from 'src/modals/EditTableColumns';\nimport { ListingTableFlattened } from 'src/tables/ListingTable';\nimport {\n ListingTableColumnId,\n ListingTableFlattenedColumnId,\n} from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { getEventPerformerVenue } from 'src/utils/eventWithDataUtils';\nimport { BulkEditPreviewWithDetails } from 'src/WebApiController';\n\nexport const BulkEditPreviewListingDetails = ({\n preview,\n}: {\n preview?: BulkEditPreviewWithDetails | null;\n}) => {\n const { data: catalog } = useCatalogDataContext();\n\n const listings = useMemo(() => {\n return preview?.listings\n ?.map((l) => {\n const { event, performer, venue } = getEventPerformerVenue(\n l?.viagVirtualId,\n catalog\n );\n\n if (event) {\n return { event: event.event, listing: l, performer, venue };\n }\n return null;\n })\n .filter((l) => l != null)\n .map((l) => l!);\n }, [catalog, preview?.listings]);\n\n if (!listings) {\n return null;\n }\n\n return (\n \n {listings.length <\n (preview?.preview?.bulkEditCountPreview?.Listing?.totalCount ?? 0) && (\n \n }\n />\n )}\n \n \n );\n};\n","import { ColumnDef } from '@tanstack/react-table';\nimport { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport {\n PURCHASE_TABLE_COLUMNS_CONFIG,\n tagColumnDef,\n} from 'src/tables/PurchaseTable/configs/PurchaseTableColumnsConfig';\nimport {\n defaultPurchaseEventEnabledColumnsConfig,\n defaultPurchasesColumnsConfig,\n filterColumnsByFeatures,\n getPurchasesColumnConfigById,\n} from 'src/utils/columns/columnUtils';\nimport { PurchasesTableColumnId } from 'src/utils/columns/purchases/purchasesColumnUtils.types';\nimport { CustomPurchasesColumn } from 'src/utils/columns/purchases/purchasesCustomColumnUtils.types';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { hasFeatures } from 'src/utils/userUtils';\nimport {\n ActionOutboxEntityType,\n Feature,\n PurchaseOrderTicketGroup,\n PurchaseViewMode,\n UserSetting,\n} from 'src/WebApiController';\n\ninterface UseGetPurchasesTableColumnsProps {\n groupId: string; // First of month\n viewMode: PurchaseViewMode;\n columnVisibilityOverride?: PurchasesTableColumnId[];\n isSideTable?: boolean;\n showCheckbox?: boolean;\n hideActionOnCheckbox?: boolean;\n}\n\nexport const useGetPurchasesTableColumns = ({\n viewMode,\n columnVisibilityOverride,\n isSideTable,\n showCheckbox,\n hideActionOnCheckbox = true,\n}: UseGetPurchasesTableColumnsProps) => {\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n\n const { appContext, loginContext } = useAppContext();\n\n const {\n value: storedPurchaseColumnOrderSetting = viewMode ===\n PurchaseViewMode.EventTileView\n ? defaultPurchaseEventEnabledColumnsConfig\n : defaultPurchasesColumnsConfig,\n } = useServerUserSetting({\n id: isSideTable\n ? UserSetting.PurchaseSideTableColumnOrder\n : viewMode === PurchaseViewMode.EventTileView\n ? UserSetting.PurchaseEventColumnOrder\n : UserSetting.PurchaseColumnOrder,\n });\n const {\n value: storedPurchaseColumnsEnabledSetting = viewMode ===\n PurchaseViewMode.EventTileView\n ? defaultPurchaseEventEnabledColumnsConfig\n : undefined,\n } = useServerUserSetting({\n id: isSideTable\n ? UserSetting.PurchaseSideTableColumnsEnabled\n : viewMode === PurchaseViewMode.EventTileView\n ? UserSetting.PurchaseEventColumnsEnabled\n : UserSetting.PurchaseColumnsEnabled,\n });\n\n const { tagsMetadata } = useTagsForEntityType(\n ActionOutboxEntityType.Purchase,\n true\n );\n\n return useMemo(() => {\n const customPurchaseColumnsFiltered: CustomPurchasesColumn[] = [];\n\n const purchaseColumnOrder = columnVisibilityOverride\n ? columnVisibilityOverride\n : storedPurchaseColumnOrderSetting.filter(\n // If storedPurchaseColumnsEnabledSetting has never been set, default to true\n (c) => storedPurchaseColumnsEnabledSetting?.includes(c) ?? true\n );\n\n const columns = new Set(\n columnVisibilityOverride\n ? columnVisibilityOverride\n .map(\n (cid) => PURCHASE_TABLE_COLUMNS_CONFIG.find((c) => c.id === cid)!\n )\n\n .map((item) => item.id!)\n : [\n // Add unconfigurable columns first\n ...Object.values(PURCHASE_TABLE_COLUMNS_CONFIG)\n .filter((column) => {\n const columnDef = getPurchasesColumnConfigById(\n column.id as PurchasesTableColumnId\n ).personalization;\n const hasFeatureForColumn =\n columnDef.requiredFeatures.length === 0 ||\n hasFeatures(\n loginContext?.user,\n appContext?.features,\n columnDef.requiredFeatures\n );\n\n const visibleInCurrentViewMode =\n columnDef.visibleViewModes.length === 0 ||\n columnDef.visibleViewModes.includes(viewMode);\n\n let isConfigurable = columnDef.isConfigurable;\n if (\n !hasTablePinActionColumnFeature &&\n column.id === PurchasesTableColumnId.Actions\n ) {\n isConfigurable = true;\n }\n\n return (\n !isConfigurable &&\n hasFeatureForColumn &&\n visibleInCurrentViewMode\n );\n })\n .map((item) => item.id as PurchasesTableColumnId),\n // Add user defined columns next\n ...filterColumnsByFeatures(\n purchaseColumnOrder,\n SectionType.Purchases,\n customPurchaseColumnsFiltered,\n loginContext?.user,\n appContext?.features,\n tagsMetadata ?? [],\n undefined,\n viewMode\n ),\n ]\n );\n\n if (!columnVisibilityOverride) {\n if (showCheckbox) {\n if (hideActionOnCheckbox) {\n columns.delete(PurchasesTableColumnId.Actions);\n }\n } else {\n columns.delete(PurchasesTableColumnId.Checkbox);\n }\n }\n\n return Array.from(columns).reduce<\n ColumnDef[]\n >((acc, columnId) => {\n if (tagsMetadata?.find((t) => t.key === columnId)) {\n acc.push(tagColumnDef(columnId));\n } else {\n const columnConfig = Object.values(PURCHASE_TABLE_COLUMNS_CONFIG).find(\n (column) => column.id === columnId\n );\n if (columnConfig) {\n acc.push(columnConfig);\n }\n }\n return acc;\n }, []);\n }, [\n appContext?.features,\n columnVisibilityOverride,\n hasTablePinActionColumnFeature,\n hideActionOnCheckbox,\n loginContext?.user,\n showCheckbox,\n storedPurchaseColumnOrderSetting,\n storedPurchaseColumnsEnabledSetting,\n tagsMetadata,\n viewMode,\n ]);\n};\n","import { useCallback, useMemo } from 'react';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { PurchaseOrderTableProps } from 'src/tables/PurchaseTable/PurchaseTable.types';\nimport { MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS } from 'src/utils/constants/constants';\nimport { generateShimmeringRows } from 'src/utils/dataTableUtils';\nimport { getEventPerformerVenue } from 'src/utils/eventWithDataUtils';\nimport {\n PurchaseOrderTicketGroup,\n PurchaseViewMode,\n} from 'src/WebApiController';\n\nexport function usePurchaseTableData({\n entities: purchaseOrders,\n entityCount: purchaseCount,\n viewMode,\n isItemsLoading,\n ignoreMaxCount,\n}: Pick<\n PurchaseOrderTableProps,\n 'entities' | 'entityCount' | 'viewMode' | 'isItemsLoading' | 'ignoreMaxCount'\n>) {\n const { data: catalog } = useCatalogDataContext();\n\n const getCatalogDataFromVirtualId = useCallback(\n (viagVirtualId: string | null | undefined) => {\n if (!viagVirtualId) {\n return {};\n }\n\n const { event, performer, venue } = getEventPerformerVenue(\n viagVirtualId,\n catalog\n );\n return { event: event?.event, performer, venue };\n },\n [catalog]\n );\n\n const { data, hasNoDataLoad } = useMemo(() => {\n const shouldShowShimmeringRows =\n viewMode === PurchaseViewMode.FlattenedView\n ? purchaseOrders == null || isItemsLoading\n : !purchaseOrders?.length || isItemsLoading;\n\n const data = shouldShowShimmeringRows\n ? (generateShimmeringRows(purchaseCount) as null[])\n : (purchaseOrders as PurchaseOrderTicketGroup[]);\n\n if (viewMode === PurchaseViewMode.FlattenedView) {\n return {\n data: data,\n hasNoDataLoad:\n !ignoreMaxCount &&\n purchaseCount > MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS,\n };\n }\n\n let dataWithEvent: (PurchaseOrderTicketGroup | null)[] = [];\n\n if (viewMode === PurchaseViewMode.EventTileView) {\n // Event Tile View - fill in the data, item is already flattened\n dataWithEvent = data?.map((tgItem) => {\n if (tgItem == null) {\n return null;\n }\n\n return {\n ...tgItem,\n ticketGroupItems: null,\n ...getCatalogDataFromVirtualId(tgItem.viagVirtualId),\n } as PurchaseOrderTicketGroup;\n });\n } else {\n // Tile View - just fill in the event data and keep the 2-level hierarchy\n dataWithEvent = data?.map((p) => {\n if (p == null) {\n return null;\n }\n\n const po = p as PurchaseOrderTicketGroup;\n const groupItems =\n po.ticketGroupItems?.map((tgItem) => {\n return {\n ...po,\n ...tgItem,\n ticketGroupItems: null,\n ...getCatalogDataFromVirtualId(tgItem.viagVirtualId),\n } as PurchaseOrderTicketGroup;\n }) ?? [];\n\n return {\n ...po,\n ...getCatalogDataFromVirtualId(po.viagVirtualId),\n ticketGroupItems: groupItems,\n } as PurchaseOrderTicketGroup;\n });\n }\n\n return { data: dataWithEvent, hasNoDataLoad: false };\n }, [\n getCatalogDataFromVirtualId,\n ignoreMaxCount,\n isItemsLoading,\n purchaseCount,\n purchaseOrders,\n viewMode,\n ]);\n\n return { data, hasNoDataLoad };\n}\n","import { Row, RowSelectionState, Updater } from '@tanstack/react-table';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport {\n MultiSelectScope,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { packNumericIds } from 'src/contexts/MultiSelectionContext/MultiSelectionContext.utils';\nimport { PurchaseOrderTableProps } from 'src/tables/PurchaseTable/PurchaseTable.types';\nimport {\n PurchaseOrderTicketGroup,\n PurchaseViewMode,\n} from 'src/WebApiController';\n\nconst getRowIdForPurchase = (\n originalRow: PurchaseOrderTicketGroup | null,\n index: number\n) =>\n (\n (originalRow?.isTktGrp ? originalRow.tgId : originalRow?.id) ?? index\n ).toString();\n\nconst getRowIdForTicketGroup = (\n originalRow: PurchaseOrderTicketGroup | null,\n index: number\n) =>\n originalRow?.tgId\n ? packNumericIds([originalRow.id, originalRow.tgId])\n : index.toString();\n\nexport function usePurchaseTableSelection({\n data,\n groupId,\n viewMode,\n disableSelection,\n onItemSelectionsChanged,\n}: Pick<\n PurchaseOrderTableProps,\n 'groupId' | 'viewMode' | 'disableSelection' | 'onItemSelectionsChanged'\n> & {\n data: (PurchaseOrderTicketGroup | null)[] | undefined;\n}) {\n const {\n selectionMode,\n setGroupItems,\n getGroupToggleState,\n getSelection,\n totalItemsSelected,\n updateGroupFilteredIds,\n } = useMultiSelectionContext();\n const rowSelection = useMemo(() => {\n // Don't call \"getSelection\" outside hook, the result is not memoized\n // and it expensive to calculate.\n const groupSelection = getSelection(groupId);\n // Type casting needed because of a bug in older TS versions: https://github.com/microsoft/TypeScript/issues/44373\n return (data as (PurchaseOrderTicketGroup | null)[]).reduce<\n Record\n >(\n (result, rowItem) => {\n if (viewMode === PurchaseViewMode.EventTileView) {\n if (rowItem?.tgId) {\n const rowId = getRowIdForTicketGroup(rowItem, -1);\n\n result[rowId] =\n getGroupToggleState(groupId).isGroupSelected &&\n !groupSelection.items.itemIds.length\n ? true\n : (groupSelection?.items.itemIds ?? [])?.includes(rowId) ??\n false;\n }\n } else {\n if (rowItem?.id) {\n result[rowItem.id] =\n getGroupToggleState(groupId).isGroupSelected &&\n !groupSelection.items.itemIds.length\n ? true\n : (groupSelection?.items.itemIds ?? [])?.includes(\n String(rowItem?.id)\n ) ?? false;\n }\n }\n\n return result;\n },\n {} as Record\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n totalItemsSelected, // Keep it here to trigger the hook\n data,\n viewMode,\n getGroupToggleState,\n getSelection,\n groupId,\n ]);\n\n // Clear selections when selection mode changes\n useEffect(() => {\n onItemSelectionsChanged?.([]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectionMode?.mode]);\n\n const onRowSelectionChange = useCallback(\n (updater: Updater) => {\n if (disableSelection) return;\n const newSelections =\n typeof updater === 'function' ? updater(rowSelection) : updater;\n\n const newSelectedIds = Object.keys(newSelections).filter(\n (r) => newSelections[r] === true\n );\n\n setGroupItems(groupId, newSelections);\n onItemSelectionsChanged?.(\n newSelectedIds\n .filter((id) => newSelections[id])\n .map((id) => parseInt(id))\n );\n },\n [\n disableSelection,\n groupId,\n onItemSelectionsChanged,\n rowSelection,\n setGroupItems,\n ]\n );\n\n const getRowId =\n viewMode === PurchaseViewMode.EventTileView\n ? getRowIdForTicketGroup\n : getRowIdForPurchase;\n\n const onFilteredRowsChange = useCallback(\n (filteredRows: Row[] | undefined) => {\n const filteredItemIds = filteredRows\n ?.map((r) => getRowId(r.original, r.index))\n .filter((lid) => lid != null) as number[] | undefined;\n updateGroupFilteredIds(groupId, filteredItemIds);\n },\n [getRowId, groupId, updateGroupFilteredIds]\n );\n\n return {\n getRowId,\n onRowSelectionChange,\n onFilteredRowsChange,\n rowSelection,\n showCheckbox:\n selectionMode?.mode === MultiSelectScope.AllGroups ||\n selectionMode?.mode === MultiSelectScope.SingleGroup,\n };\n}\n","import {\n ExpandedState,\n getExpandedRowModel,\n Row,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { shiftSelect } from 'src/components/Events/EventPage/EventPage.css';\nimport { useSingleTableShortcutSelection } from 'src/components/Events/EventPage/hooks/useSingleTableShortcutSelection';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { ColumnResizingContextProvider } from 'src/contexts/ColumnResizingContext/ColumnResizingContext';\nimport {\n Content,\n FormatContent,\n useContent,\n} from 'src/contexts/ContentContext';\nimport { useClearShiftSelectionOnSortingChange } from 'src/contexts/MultiSelectionContext/useClearShiftSelectionOnSortingChange';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { useSyncCenterSettings } from 'src/hooks/api/useSyncCenterSetting';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { PurchaseOrderTableProps } from 'src/tables/PurchaseTable/PurchaseTable.types';\nimport { useGetPurchasesTableColumns } from 'src/tables/PurchaseTicketTable/useGetPurchasesTableColumns';\nimport { NoData, Table } from 'src/tables/Table';\nimport { PurchasesTableColumnId } from 'src/utils/columns/purchases/purchasesColumnUtils.types';\nimport { MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { isInFullPageEventView } from 'src/utils/deepLinkUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { SomethingWentWrong } from 'src/views';\nimport {\n Feature,\n PurchaseOrderTicketGroup,\n PurchaseViewMode,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { useSeatingColumnSorting } from '../common/hooks/useSeatingColumnSorting';\nimport { usePaginationSettings } from '../Table/hooks/usePaginationSettings';\nimport { usePurchaseTableData } from './usePurchaseTableData';\nimport { usePurchaseTableSelection } from './usePurchaseTableSelection';\n\nconst PAGE_SIZE = 10;\n\nexport function PurchaseOrderTable({\n groupId,\n entities,\n entityCount,\n getDataFail,\n onMount,\n onUnmount,\n initState,\n disablePagination,\n useVirtuoso,\n viewMode = PurchaseViewMode.TileView,\n isItemsLoading,\n RowComponent,\n rowSupportsAccordion,\n virtuosoItemSize,\n columnVisibilityOverride,\n formatOptionOverrides,\n withOuterPadding = true,\n disableSelection,\n isSideTable,\n alwaysShowCheckbox,\n showSelectAllOnHeader,\n onItemSelectionsChanged,\n enableColumnFilters,\n ignoreMaxCount,\n}: PurchaseOrderTableProps) {\n const settings = useSyncCenterSettings();\n const { isAutoPoQualityControlled = false } = settings.data ?? {};\n\n const purchasesText = useContent(ContentId.Purchases);\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n\n const [expandedState, setExpandedState] = useState({});\n\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const [sorting, setSorting] = useState(\n initState?.sorting || [{ id: 'purchaseDate', desc: true }]\n );\n\n useClearShiftSelectionOnSortingChange({ sortingState: sorting });\n\n const sectionType = isSideTable\n ? SectionType.PurchaseSideTable\n : viewMode === PurchaseViewMode.EventTileView\n ? SectionType.PurchaseEvent\n : SectionType.Purchases;\n\n const seatingColumnSorting =\n useSeatingColumnSorting(\n PurchasesTableColumnId.Seating,\n sectionType\n );\n\n const { data, hasNoDataLoad } = usePurchaseTableData({\n entities,\n entityCount,\n viewMode,\n isItemsLoading,\n ignoreMaxCount,\n });\n\n const { pagination, setPagination } = usePaginationSettings(\n data.length,\n -1,\n PAGE_SIZE,\n disablePagination,\n initState\n );\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n const {\n rowSelection,\n onRowSelectionChange,\n getRowId,\n showCheckbox,\n onFilteredRowsChange,\n } = usePurchaseTableSelection({\n data,\n groupId,\n viewMode,\n disableSelection,\n onItemSelectionsChanged,\n });\n\n const columns = useGetPurchasesTableColumns({\n groupId,\n viewMode: viewMode,\n columnVisibilityOverride,\n isSideTable,\n showCheckbox: showCheckbox || alwaysShowCheckbox,\n hideActionOnCheckbox: !alwaysShowCheckbox, // only hide Action if we're not always showing checkbox\n });\n\n const {\n lastSelectedRowRefIndex,\n allowShiftClickSelection,\n isShiftKeyPressed,\n isCtrlOrCmdKeyPressed,\n updateSelectionForRowAndSubRows,\n } = useSingleTableShortcutSelection({\n isSideTable,\n });\n\n const onRowShiftSelect = useCallback(\n (\n tableRows: Row[] | undefined,\n row: Row,\n index: number\n ) => {\n if (\n !tableRows ||\n !allowShiftClickSelection ||\n showCheckbox ||\n alwaysShowCheckbox\n ) {\n return;\n }\n const rowId = row.id.toString();\n const newIsSelected = !rowSelection[rowId];\n\n if (isShiftKeyPressed && lastSelectedRowRefIndex.current !== null) {\n const start = Math.min(lastSelectedRowRefIndex.current, index);\n const end = Math.max(lastSelectedRowRefIndex.current, index);\n\n const newRowSelection = { ...rowSelection };\n for (let i = start; i <= end; i++) {\n const row = tableRows[i];\n const rowId = getRowId(row.original, i);\n\n if (row) {\n updateSelectionForRowAndSubRows({\n row,\n rowId,\n newIsSelected,\n newRowSelection,\n });\n }\n }\n\n lastSelectedRowRefIndex.current = index;\n onRowSelectionChange(newRowSelection);\n } else if (isCtrlOrCmdKeyPressed) {\n const newRowSelection = { ...rowSelection };\n newRowSelection[rowId] = newIsSelected;\n updateSelectionForRowAndSubRows({\n row,\n rowId,\n newIsSelected, // Select the clicked row\n newRowSelection,\n });\n lastSelectedRowRefIndex.current = index;\n onRowSelectionChange(newRowSelection);\n } else {\n // No modifier key pressed, reset selection\n const newRowSelection = {};\n\n updateSelectionForRowAndSubRows({\n row,\n rowId,\n newIsSelected,\n newRowSelection,\n });\n\n lastSelectedRowRefIndex.current = index;\n onRowSelectionChange(newRowSelection);\n }\n },\n [\n allowShiftClickSelection,\n alwaysShowCheckbox,\n getRowId,\n isCtrlOrCmdKeyPressed,\n isShiftKeyPressed,\n lastSelectedRowRefIndex,\n onRowSelectionChange,\n rowSelection,\n showCheckbox,\n updateSelectionForRowAndSubRows,\n ]\n );\n\n const { mainRoute } = useAppContext();\n const inFullPageEventView = isInFullPageEventView(mainRoute);\n const options = useMemo<\n Partial>\n >(\n () => ({\n data,\n columns: columns,\n state: {\n pagination,\n rowSelection,\n expanded: expandedState,\n sorting,\n columnVisibility: {\n checkbox: Boolean(showCheckbox || alwaysShowCheckbox),\n qualityControlState: isAutoPoQualityControlled ?? false,\n },\n columnPinning: {\n right: hasTablePinActionColumnFeature\n ? [PurchasesTableColumnId.Actions]\n : undefined,\n },\n },\n meta: {\n rowSupportsAccordion,\n sectionType,\n formatOptionOverrides,\n showSelectAllCheckbox: showSelectAllOnHeader,\n },\n enableRowSelection:\n showCheckbox || alwaysShowCheckbox || inFullPageEventView,\n enableMultiRowSelection: showCheckbox || alwaysShowCheckbox,\n enableSubRowSelection:\n alwaysShowCheckbox ||\n (showCheckbox && viewMode !== PurchaseViewMode.TileView), // For tile view, only select purchaseOrdes\n getRowId: getRowId,\n onPaginationChange: setPagination,\n onRowSelectionChange:\n !allowShiftClickSelection || showCheckbox || alwaysShowCheckbox\n ? onRowSelectionChange\n : undefined,\n onSortingChange: setSorting,\n onExpandedChange: setExpandedState,\n getSubRows: (originalRow) => {\n if (\n !originalRow ||\n !originalRow.ticketGroupItems?.length ||\n originalRow.ticketGroupItems?.length < 2\n ) {\n return [];\n }\n\n return originalRow.ticketGroupItems.map(\n (tgItem) => tgItem as PurchaseOrderTicketGroup\n );\n },\n getRowCanExpand: (originalRow) =>\n viewMode === PurchaseViewMode.TileView &&\n !!(\n originalRow?.original?.ticketGroupItems?.length &&\n originalRow?.original?.ticketGroupItems?.length > 1\n ),\n getExpandedRowModel: (table) => getExpandedRowModel()(table),\n autoResetExpanded: false,\n paginateExpandedRows: false,\n sortingFns: { ...seatingColumnSorting },\n }),\n [\n data,\n columns,\n pagination,\n rowSelection,\n expandedState,\n sorting,\n showCheckbox,\n alwaysShowCheckbox,\n isAutoPoQualityControlled,\n hasTablePinActionColumnFeature,\n rowSupportsAccordion,\n sectionType,\n formatOptionOverrides,\n showSelectAllOnHeader,\n inFullPageEventView,\n viewMode,\n getRowId,\n setPagination,\n allowShiftClickSelection,\n onRowSelectionChange,\n seatingColumnSorting,\n ]\n );\n\n if (getDataFail) {\n return (\n }\n />\n );\n }\n\n if (hasNoDataLoad) {\n return (\n \n \n }\n />\n \n );\n }\n\n return data?.length > 0 ? (\n \n \n \n ) : // We should never see this - because the events are filtered to only those that has purchaseOrders\n // So this is to prevent a crash - but this should be looked at\n viewMode === PurchaseViewMode.FlattenedView ? null : (\n \n \n \n );\n}\n","import { FormatContent } from 'src/contexts/ContentContext';\nimport { NO_GROUP_ID } from 'src/contexts/MultiSelectionContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { Stack } from 'src/core/ui';\nimport { FormatOption } from 'src/modals/EditTableColumns';\nimport { PurchaseOrderTable } from 'src/tables/PurchaseTable';\nimport { PurchasesTableColumnId } from 'src/utils/columns/purchases/purchasesColumnUtils.types';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport {\n BulkEditPreviewWithDetails,\n PurchaseOrderTicketGroup,\n PurchaseViewMode,\n} from 'src/WebApiController';\n\nexport const BulkEditPreviewPurchaseDetails = ({\n preview,\n}: {\n preview?: BulkEditPreviewWithDetails | null;\n}) => {\n if (!preview?.purchases) {\n return null;\n }\n\n return (\n \n {preview.purchases.length <\n (preview?.preview?.bulkEditCountPreview?.Purchase?.totalCount ?? 0) && (\n \n }\n />\n )}\n p as PurchaseOrderTicketGroup\n )}\n getDataFail={false}\n isItemsLoading={false}\n viewMode={PurchaseViewMode.FlattenedView}\n columnVisibilityOverride={[\n PurchasesTableColumnId.VendorOrderId,\n PurchasesTableColumnId.PurchaseDate,\n PurchasesTableColumnId.VendorAccountEmail,\n PurchasesTableColumnId.BuyerUserId,\n PurchasesTableColumnId.Actions,\n ]}\n formatOptionOverrides={{\n [PurchasesTableColumnId.Actions]: FormatOption.Actions_LinkOnly,\n }}\n withOuterPadding={false}\n />\n \n );\n};\n","import {\n ColumnDef,\n functionalUpdate,\n InitialTableState,\n Row,\n RowSelectionState,\n SortingState,\n TableOptions,\n Updater,\n} from '@tanstack/react-table';\nimport {\n CSSProperties,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { ColumnResizingContextProvider } from 'src/contexts/ColumnResizingContext/ColumnResizingContext';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport {\n MultiSelectScope,\n NO_GROUP_ID,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { useClearShiftSelectionOnSortingChange } from 'src/contexts/MultiSelectionContext/useClearShiftSelectionOnSortingChange';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { FormatOptionEntries } from 'src/modals/EditTableColumns';\nimport { NoData, Table } from 'src/tables/Table';\nimport {\n defaultSalesFlattenedColumnsConfig,\n filterColumnsByFeatures,\n getSaleColumnConfigById,\n} from 'src/utils/columns/columnUtils';\nimport { SALE_MAIN_COLUMNS } from 'src/utils/columns/sales/salesColumnUtils.constants';\nimport { filterCustomColumnsForSale } from 'src/utils/columns/sales/salesCustomColumnUtils';\nimport { CustomSalesColumn } from 'src/utils/columns/sales/salesCustomColumnUtils.types';\nimport { MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { generateShimmeringRows } from 'src/utils/dataTableUtils';\nimport { getEventPerformerVenue } from 'src/utils/eventWithDataUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { hasFeatures } from 'src/utils/userUtils';\nimport { SomethingWentWrong } from 'src/views';\nimport {\n ActionOutboxEntityType,\n Feature,\n Permission,\n Sale,\n UserSetting,\n} from 'src/WebApiController';\n\nimport {\n SalesTableColumnId,\n SalesTableFlattenedColumnId,\n} from '../../utils/columns/sales/salesColumnUtils.types';\nimport { useSeatingColumnSorting } from '../common/hooks/useSeatingColumnSorting';\nimport { usePaginationSettings } from '../Table/hooks/usePaginationSettings';\nimport {\n customColumnDef,\n SALE_TABLE_COLUMNS_CONFIG,\n tagColumnDef,\n} from './configs/SaleTableColumnsConfig';\nimport { SALE_TABLE_FLATTENED_COLUMNS_CONFIG } from './configs/SaleTableFlattenedColumnsConfig';\nimport { SaleWithEvent } from './SalesTable.type';\n\nexport type SalesTableFlattenedProps = {\n sales?: Sale[];\n salesCount: number;\n failedToRetrieveData: boolean;\n onMount?: () => void;\n onUnmount?: (state: object) => void;\n initState?: InitialTableState;\n disablePagination?: boolean;\n useVirtuoso?: boolean;\n columnVisibilityOverride?: (\n | SalesTableColumnId\n | SalesTableFlattenedColumnId\n )[];\n formatOptionOverrides?: FormatOptionEntries;\n withOuterPadding?: boolean;\n disableSelection?: boolean;\n alwaysShowCheckbox?: boolean;\n showSelectAllOnHeader?: boolean;\n enableColumnFilters?: boolean;\n ignoreMaxCount?: boolean;\n};\n\nconst PAGE_SIZE = 100;\n\nconst tableStyle: CSSProperties = {\n maxHeight: '60vh',\n};\n\nconst disabledPaginationStyles: CSSProperties = {\n position: 'sticky',\n top: '0',\n zIndex: '10',\n};\n\nconst tableCellStyles: CSSProperties = {\n height: '1px', // Keep this to be able to use height: 100% inside td\n};\n\nexport const SalesTableFlattened = ({\n sales,\n salesCount,\n failedToRetrieveData,\n onMount,\n onUnmount,\n initState,\n disablePagination,\n useVirtuoso,\n columnVisibilityOverride,\n formatOptionOverrides,\n withOuterPadding = true,\n disableSelection,\n alwaysShowCheckbox,\n showSelectAllOnHeader,\n enableColumnFilters,\n ignoreMaxCount,\n}: SalesTableFlattenedProps) => {\n const showMainColumnsOnly = false;\n const { data: catalog, isItemsLoading } = useCatalogDataContext();\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n\n const seatingColumnSorting = useSeatingColumnSorting(\n SalesTableColumnId.Seating,\n SectionType.SalesFlattened\n );\n\n const { data, hasNoDataLoad } = useMemo(() => {\n const nonNullSales = sales\n ?.map((sale) => {\n const { event, performer, venue } = getEventPerformerVenue(\n sale.viagVirtualId,\n catalog\n );\n\n if (event) {\n return {\n event: event.event,\n sale,\n performer,\n venue,\n isFlattenedMode: true,\n } as SaleWithEvent;\n }\n\n return null;\n })\n ?.filter((s) => s != null)\n ?.map((s) => s!);\n\n const data =\n nonNullSales == null || isItemsLoading\n ? (generateShimmeringRows(salesCount) as null[])\n : nonNullSales;\n\n const hasNoDataLoad =\n !ignoreMaxCount && salesCount > MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS;\n\n return { data, hasNoDataLoad };\n }, [sales, isItemsLoading, salesCount, ignoreMaxCount, catalog]);\n\n const hasViewProceeds = useUserHasAnyOfPermissions(\n Permission.Sales_ViewProceeds,\n Permission.Sales_ViewRecentProceeds\n );\n\n const { appContext, loginContext } = useAppContext();\n const {\n setGroupItems,\n getGroupToggleState,\n getSelection,\n selectionMode,\n updateGroupFilteredIds,\n } = useMultiSelectionContext();\n\n const saleSelection = getSelection(NO_GROUP_ID);\n\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const [sorting, setSorting] = useState(\n initState?.sorting || []\n );\n\n useClearShiftSelectionOnSortingChange({ sortingState: sorting });\n\n const { pagination, setPagination } = usePaginationSettings(\n data.length,\n -1,\n PAGE_SIZE,\n disablePagination,\n initState\n );\n\n const rowSelection = useMemo(() => {\n return data\n ?.flatMap((d) => [d?.sale])\n ?.reduce>((result, sale) => {\n if (sale?.id) {\n result[sale.id] =\n (getGroupToggleState(NO_GROUP_ID).isGroupSelected ||\n (saleSelection?.items.itemIds ?? [])?.includes(\n String(sale?.id)\n )) ??\n false;\n }\n return result;\n }, {});\n }, [data, getGroupToggleState, saleSelection?.items.itemIds]);\n\n const onRowSelectionChange = useCallback(\n (updater: Updater) => {\n if (disableSelection) return;\n const newSelections =\n typeof updater === 'function' ? updater(rowSelection) : updater;\n setGroupItems(NO_GROUP_ID, newSelections);\n },\n [disableSelection, rowSelection, setGroupItems]\n );\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n const {\n value:\n storedSaleFlattenedColumnOrderSetting = defaultSalesFlattenedColumnsConfig,\n } = useServerUserSetting({\n id: UserSetting.SaleFlattenedColumnOrder,\n });\n const { value: storedSaleColumnsEnabledSetting } = useServerUserSetting<\n string[]\n >({\n id: UserSetting.SaleFlattenedColumnsEnabled,\n });\n\n const { value: customSaleColumns = [] } = useServerUserSetting<\n CustomSalesColumn[]\n >({\n id: UserSetting.SaleCustomColumns,\n });\n const { tagsMetadata, tagsMetadataNumeric } = useTagsForEntityType(\n ActionOutboxEntityType.Sale,\n true\n );\n\n const customSaleColumnsFiltered = filterCustomColumnsForSale(\n customSaleColumns,\n tagsMetadataNumeric\n );\n\n const showCheckbox = useMemo(\n () =>\n alwaysShowCheckbox ||\n selectionMode?.mode === MultiSelectScope.AllGroups ||\n saleSelection.isSingleGroupMultiSelect,\n [\n alwaysShowCheckbox,\n saleSelection.isSingleGroupMultiSelect,\n selectionMode?.mode,\n ]\n );\n\n const displayedColumnsConfig = useMemo(() => {\n if (showMainColumnsOnly) {\n return SALE_MAIN_COLUMNS.filter((c) =>\n c === SalesTableColumnId.Checkbox ? showCheckbox : true\n ).reduce[]>((acc, columnId) => {\n const columnConfig = Object.values(SALE_TABLE_COLUMNS_CONFIG).find(\n (column) => column.id === columnId\n );\n if (columnConfig) {\n acc.push(columnConfig);\n }\n return acc;\n }, []);\n }\n\n const saleColumnOrder = columnVisibilityOverride\n ? columnVisibilityOverride\n : storedSaleFlattenedColumnOrderSetting.filter(\n // If storedSaleColumnsEnabledSetting has never been set, default to true\n (c) => storedSaleColumnsEnabledSetting?.includes(c) ?? true\n );\n\n if (\n !columnVisibilityOverride &&\n !hasTablePinActionColumnFeature &&\n !saleColumnOrder.includes(SalesTableColumnId.Actions)\n ) {\n saleColumnOrder.push(SalesTableColumnId.Actions);\n }\n\n const saleTableFlattenedColumnsConfig = Object.values(\n SALE_TABLE_FLATTENED_COLUMNS_CONFIG\n );\n const saleTableColumnsConfig = Object.values(SALE_TABLE_COLUMNS_CONFIG);\n\n const columns = new Set(\n columnVisibilityOverride\n ? columnVisibilityOverride\n .map(\n (cid) =>\n saleTableColumnsConfig.find((c) => c.id === cid) ??\n saleTableFlattenedColumnsConfig.find((c) => c.id === cid)!\n )\n\n .map((item) => item.id!)\n : [\n // Add unconfigurable columns first\n ...saleTableFlattenedColumnsConfig\n .filter((column) => {\n const columnDef = getSaleColumnConfigById(\n column.id as SalesTableFlattenedColumnId\n ).personalization;\n const hasFeatureForColumn =\n columnDef.requiredFeatures.length === 0 ||\n hasFeatures(\n loginContext?.user,\n appContext?.features,\n columnDef.requiredFeatures\n );\n\n return !columnDef.isConfigurable && hasFeatureForColumn;\n // return true;\n // return !columnDef.isConfigurable;\n })\n .map((item) => item.id as SalesTableFlattenedColumnId),\n ...saleTableColumnsConfig\n .filter((column) => {\n const columnDef = getSaleColumnConfigById(\n column.id as SalesTableColumnId\n ).personalization;\n const hasFeatureForColumn =\n columnDef.requiredFeatures.length === 0 ||\n hasFeatures(\n loginContext?.user,\n appContext?.features,\n columnDef.requiredFeatures\n );\n\n let isConfigurable = columnDef.isConfigurable;\n if (\n !hasTablePinActionColumnFeature &&\n column.id === SalesTableColumnId.Actions\n ) {\n isConfigurable = true;\n }\n\n return !isConfigurable && hasFeatureForColumn;\n })\n .map((item) => item.id as SalesTableColumnId),\n // Add user defined columns next\n ...filterColumnsByFeatures(\n saleColumnOrder,\n SectionType.SalesFlattened,\n customSaleColumnsFiltered,\n loginContext?.user,\n appContext?.features,\n tagsMetadata ?? []\n ),\n ]\n );\n\n if (!columnVisibilityOverride) {\n if (showCheckbox) {\n if (!alwaysShowCheckbox) {\n columns.delete(SalesTableColumnId.Actions);\n }\n } else {\n columns.delete(SalesTableColumnId.Checkbox);\n }\n }\n\n return Array.from(columns).reduce[]>(\n (acc, columnId) => {\n if (tagsMetadata?.find((t) => t.key === columnId)) {\n acc.push(tagColumnDef(columnId));\n } else if (customSaleColumnsFiltered.find((c) => c.id === columnId)) {\n acc.push(\n customColumnDef(\n columnId,\n customSaleColumnsFiltered.find((c) => c.id === columnId)?.formula\n )\n );\n } else {\n const columnConfig1 = saleTableColumnsConfig.find(\n (column) => column.id === columnId\n );\n if (columnConfig1) acc.push(columnConfig1);\n\n const columnConfig2 = saleTableFlattenedColumnsConfig.find(\n (column) => column.id === columnId\n );\n if (columnConfig2) acc.push(columnConfig2);\n }\n\n return acc;\n },\n []\n );\n }, [\n showMainColumnsOnly,\n columnVisibilityOverride,\n storedSaleFlattenedColumnOrderSetting,\n hasTablePinActionColumnFeature,\n customSaleColumnsFiltered,\n loginContext?.user,\n appContext?.features,\n tagsMetadata,\n showCheckbox,\n storedSaleColumnsEnabledSetting,\n alwaysShowCheckbox,\n ]);\n\n const options: Partial> = useMemo(\n () => ({\n data,\n columns: displayedColumnsConfig.filter((c) =>\n c.id === 'proceeds' ? hasViewProceeds : true\n ),\n state: {\n pagination,\n rowSelection,\n sorting,\n columnVisibility: {\n checkbox: showCheckbox,\n },\n columnPinning: {\n right: hasTablePinActionColumnFeature\n ? [SalesTableColumnId.Actions]\n : undefined,\n },\n },\n meta: {\n sectionType: SectionType.SalesFlattened,\n formatOptionOverrides,\n showSelectAllCheckbox: showSelectAllOnHeader,\n },\n getRowId: (row: SaleWithEvent | null, index: number) =>\n (row?.sale?.id ?? index).toString(),\n onPaginationChange: setPagination,\n onSortingChange: (sortingUpdaterFn) => {\n const newSortVal = functionalUpdate(sortingUpdaterFn, sorting);\n setSorting(newSortVal);\n },\n enableRowSelection: showCheckbox,\n enableMultiRowSelection: showCheckbox,\n enableSubRowSelection: showCheckbox,\n onRowSelectionChange,\n sortingFns: { ...seatingColumnSorting },\n }),\n [\n data,\n displayedColumnsConfig,\n pagination,\n rowSelection,\n sorting,\n showCheckbox,\n hasTablePinActionColumnFeature,\n formatOptionOverrides,\n showSelectAllOnHeader,\n setPagination,\n onRowSelectionChange,\n seatingColumnSorting,\n hasViewProceeds,\n ]\n );\n\n const onFilteredRowsChange = useCallback(\n (filteredRows: Row[] | undefined) => {\n const filteredItemIds = filteredRows\n ?.map((r) => r.original?.sale?.id)\n .filter((lid) => lid != null) as number[] | undefined;\n updateGroupFilteredIds(NO_GROUP_ID, filteredItemIds);\n },\n [updateGroupFilteredIds]\n );\n\n return failedToRetrieveData ? (\n }\n />\n ) : hasNoDataLoad ? (\n \n \n }\n />\n \n ) : data?.length > 0 ? (\n \n \n \n ) : null;\n};\n","import { FormatContent } from 'src/contexts/ContentContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { Stack } from 'src/core/ui';\nimport { FormatOption } from 'src/modals/EditTableColumns';\nimport { SalesTableFlattened } from 'src/tables/SalesTable/SalesTableFlattened';\nimport {\n SalesTableColumnId,\n SalesTableFlattenedColumnId,\n} from 'src/utils/columns/sales/salesColumnUtils.types';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { BulkEditPreviewWithDetails } from 'src/WebApiController';\n\nexport const BulkEditPreviewSaleDetails = ({\n preview,\n}: {\n preview?: BulkEditPreviewWithDetails | null;\n}) => {\n if (!preview?.sales) {\n return null;\n }\n\n return (\n \n {preview.sales.length <\n (preview?.preview?.bulkEditCountPreview?.Sale?.totalCount ?? 0) && (\n \n }\n />\n )}\n\n \n \n );\n};\n","import { FormatContent } from 'src/contexts/ContentContext';\nimport { NO_GROUP_ID } from 'src/contexts/MultiSelectionContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { Stack } from 'src/core/ui';\nimport { FormatOption } from 'src/modals/EditTableColumns';\nimport { PurchaseOrderTable } from 'src/tables/PurchaseTable';\nimport { PurchasesTableColumnId } from 'src/utils/columns/purchases/purchasesColumnUtils.types';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport {\n BulkEditPreviewWithDetails,\n PurchaseViewMode,\n} from 'src/WebApiController';\n\nexport const BulkEditPreviewTicketGroupDetails = ({\n preview,\n}: {\n preview?: BulkEditPreviewWithDetails | null;\n}) => {\n if (!preview?.ticketGroups) {\n return null;\n }\n\n return (\n \n {preview.ticketGroups.length <\n (preview?.preview?.bulkEditCountPreview?.TicketGroup?.totalCount ??\n 0) && (\n \n }\n />\n )}\n\n \n \n );\n};\n","import clsx from 'clsx';\nimport { useMemo, useState } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { FailureMessage, WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { Stack } from 'src/core/ui';\nimport { TabPanel } from 'src/core/ui/TabPanel';\nimport { TabItem } from 'src/core/ui/TabPanel/TabPanel.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ACTION_OUTBOX_ENTITY_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n ActionOutboxEntityType,\n BulkEditPreviewWithDetails,\n} from 'src/WebApiController';\n\nimport { ActionOutboxEntityTypeForBulkEdit } from '../../bulkEditUtils';\nimport * as styles from './BulkEditPreviewDisplay.css';\nimport { BulkEditPreviewListingDetails } from './BulkEditPreviewListingDetails';\nimport { BulkEditPreviewPurchaseDetails } from './BulkEditPreviewPurchaseDetails';\nimport { BulkEditPreviewSaleDetails } from './BulkEditPreviewSaleDetails';\nimport { BulkEditPreviewTicketGroupDetails } from './BulkEditPreviewTicketGroupDetails';\n\nconst NUM_OF_ITEMS_TO_FLAG_AS_TOO_LARGE = 12000;\n\nexport const BulkEditPreviewDisplay = ({\n entityType,\n preview,\n entityUpdatesPreview,\n}: {\n entityType: ActionOutboxEntityTypeForBulkEdit;\n preview?: BulkEditPreviewWithDetails | null;\n entityUpdatesPreview?: React.ReactNode;\n}) => {\n const [activeTabIndex, setActiveTabIndex] = useState(0);\n\n const isTooMany =\n (preview?.allItemsCount ?? 0) > NUM_OF_ITEMS_TO_FLAG_AS_TOO_LARGE;\n\n const tabs: TabItem[] = useMemo(\n () =>\n preview?.preview.bulkEditCountPreview\n ? Object.entries(preview.preview.bulkEditCountPreview)\n .filter((p) => p[1].totalCount > 0)\n .toSorted((a, b) =>\n a[0] === entityType\n ? -1\n : b[0] === entityType\n ? 1\n : a[0].localeCompare(b[0])\n )\n .map(([tab, value]) => ({\n value: tab,\n title: (\n \n \n \n :\n \n\n \n \n {value.totalCount}\n \n \n \n ),\n content: (\n <>\n {tab === ActionOutboxEntityType.Listing &&\n preview.listings && (\n \n )}\n {tab === ActionOutboxEntityType.Sale && preview.sales && (\n \n )}\n {tab === ActionOutboxEntityType.Purchase &&\n preview.purchases && (\n \n )}\n {tab === ActionOutboxEntityType.TicketGroup &&\n preview.ticketGroups && (\n \n )}\n \n ),\n }))\n : [],\n [entityType, preview]\n );\n\n return (\n \n {preview?.error && }\n {entityUpdatesPreview}\n {preview?.allItemsCount ? (\n \n \n {preview?.allItemsCount}\n \n \n \n \n \n ) : (\n }\n />\n )}\n\n {tabs.length > 0 && (\n \n setActiveTabIndex(tabs.findIndex((t) => t.value === v))\n }\n />\n )}\n \n );\n};\n","import { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { ActionOutboxEntityType, BulkEditProgress } from 'src/WebApiController';\n\nimport * as styles from './BulkEditProgressDisplay.css';\n\nexport const CountsByEntityDisplay = ({\n countsByEntity,\n}: {\n countsByEntity: BulkEditProgress['countsByEntity'];\n}) => {\n return (\n <>\n {Object.entries(countsByEntity).map(([key, value], index) => {\n let entityContentId = '';\n switch (key) {\n case ActionOutboxEntityType.Listing:\n entityContentId = ContentId.Listings;\n break;\n case ActionOutboxEntityType.Purchase:\n entityContentId = ContentId.Purchases;\n break;\n case ActionOutboxEntityType.Sale:\n entityContentId = ContentId.Sales;\n break;\n case ActionOutboxEntityType.Document:\n entityContentId = ContentId.Document;\n break;\n case ActionOutboxEntityType.TicketGroup:\n entityContentId = ContentId.TicketGroups;\n break;\n default:\n break;\n }\n\n return (\n <>\n {value.ttlCnt > 0 && (\n
    \n \n {value.succCnt} / {value.ttlCnt}{' '}\n \n \n
    \n \n }\n />\n \n )}\n {value.warnCnt > 0 && (\n
    \n \n
    \n )}\n {value.failCnt > 0 && (\n
    \n \n
    \n )}\n \n );\n })}\n \n );\n};\n","import { Content, FormatContent } from 'src/contexts/ContentContext';\nimport {\n FailureMessage,\n SuccessMessage,\n WarningMessage,\n WorkingMessage,\n} from 'src/core/POS/MessageWithIcon';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { BulkEditProgress, BulkEditStep } from 'src/WebApiController';\n\nimport { ActionOutboxEntityTypeForBulkEdit } from '../../bulkEditUtils';\nimport * as styles from './BulkEditProgressDisplay.css';\nimport { CountsByEntityDisplay } from './CountsByEntityDisplay';\n\nexport type BulkEditProgressDisplayProps = BulkEditProgress & {\n step: BulkEditStep;\n entityType?: ActionOutboxEntityTypeForBulkEdit;\n};\n\nexport function BulkEditProgressDisplay({\n countsByEntity,\n successPercent,\n failurePercent,\n warningPercent,\n successCount,\n failureCount,\n warningCount,\n totalCount,\n status,\n step,\n entityType,\n retryableEntities,\n}: BulkEditProgressDisplayProps) {\n successPercent =\n totalCount > 0\n ? 0\n : successPercent != null\n ? roundToPrecision(successPercent * 100, 0)\n : null;\n warningPercent =\n totalCount > 0\n ? 0\n : warningPercent != null\n ? roundToPrecision(warningPercent * 100, 0)\n : null;\n failurePercent =\n totalCount > 0\n ? 0\n : failurePercent != null\n ? roundToPrecision(failurePercent * 100, 0)\n : null;\n\n const skippedItemCount = entityType\n ? retryableEntities?.bulkEditCountPreview[entityType]?.idsAffected.length\n : undefined;\n\n return (\n \n \n \n
    \n {step === BulkEditStep.Initializing ? (\n \n ) : step === BulkEditStep.InProgress ? (\n \n ) : step === BulkEditStep.Done ? (\n \n ) : step === BulkEditStep.DoneWithRetryableEntities ? (\n \n ) : step === BulkEditStep.Cancelled ? (\n \n ) : null}\n
    \n \n {countsByEntity && Object.keys(countsByEntity).length > 0 ? (\n \n ) : (\n <>\n {!!successPercent && (\n
    \n \n
    \n )}\n {!!successCount && (\n
    \n \n
    \n )}\n {!!warningPercent && (\n
    \n \n
    \n )}\n {!!warningCount && (\n
    \n \n
    \n )}\n {!!failurePercent && (\n
    \n \n
    \n )}\n {!!failureCount && (\n
    \n \n
    \n )}\n \n )}\n
    \n
    \n \n {step === BulkEditStep.Done ||\n step === BulkEditStep.DoneWithRetryableEntities ? (\n <>\n {!totalCount && (\n }\n />\n )}\n {!!failureCount && (!!warningCount || !!successCount) && (\n }\n />\n )}\n {!failureCount && !!warningCount && !!successCount && (\n \n }\n />\n )}\n {!failureCount && !warningCount && !!successCount && (\n }\n />\n )}\n {!!failureCount && !warningCount && !successCount && (\n }\n />\n )}\n \n ) : (\n \n )}\n \n
    \n\n {retryableEntities && entityType && (\n \n }\n messageStyle={{ fontSize: vars.typography.fontSize.lg }}\n />\n )}\n
    \n );\n}\n","import { Stack } from 'src/core/ui';\n\nimport * as styles from './BulkEditWarningList.css';\n\nexport function BulkEditWarningList({ warnings }: { warnings: string[] }) {\n return (\n \n {warnings.toSorted().map((w, i) => (\n {w}\n ))}\n \n );\n}\n","import { ComponentProps, PropsWithChildren } from 'react';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\n\nimport { ActionOutboxEntityTypeForBulkEdit } from './bulkEditUtils';\nimport { BulkEditErrorList } from './components/BulkEditErrorList';\nimport {\n BulkEditGettingPreview,\n BulkEditPreviewDisplay,\n} from './components/BulkEditPreviewDisplay';\nimport { BulkEditProgressDisplay } from './components/BulkEditProgressDisplay';\nimport { BulkEditWarningList } from './components/BulkEditWarningList/BulkEditWarningList';\n\nexport type BulkEditStatusProps = {\n isLoading?: boolean;\n entityType: ActionOutboxEntityTypeForBulkEdit;\n updateKey: string;\n entityUpdatesPreview?: React.ReactNode;\n} & Pick, 'height'>;\n\nexport const BulkEditStatus = ({\n children,\n height,\n entityType,\n isLoading,\n entityUpdatesPreview,\n}: PropsWithChildren) => {\n const {\n progress,\n progressBeforeRetry,\n errors,\n warnings,\n preview,\n retryableEntities,\n stage,\n } = useBulkEditHubContext();\n\n return (\n \n {stage === BulkEditStage.GettingPreview ? (\n \n ) : preview && stage === BulkEditStage.Preview ? (\n \n ) : stage === BulkEditStage.Idle &&\n retryableEntities &&\n progressBeforeRetry ? (\n errors?.length ? (\n <>\n \n \n \n ) : (\n \n )\n ) : progress != null ? (\n <>\n \n\n {Boolean(warnings?.length) && (\n \n )}\n\n {Boolean(errors?.length) && }\n \n ) : isLoading ? (\n \n ) : (\n // Only display children if there's no progress\n children\n )}\n \n );\n};\n","import { REACT_APP_NAME } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditPurchaseClient,\n BulkEditSaleClient,\n BulkEditStep,\n ClientLogClient,\n LogLevel,\n PosClientConfig,\n} from 'src/WebApiController';\n\nexport const BulkEditProgressingSteps = [\n BulkEditStep.Initializing,\n BulkEditStep.InProgress,\n];\n\nexport type ActionOutboxEntityTypeForBulkEdit =\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Sale\n | ActionOutboxEntityType.Purchase\n | ActionOutboxEntityType.TicketGroup;\n\nexport const cancelBulkEdit = async (\n entityType: ActionOutboxEntityType,\n activeAccountWebClientConfig: PosClientConfig,\n updateKey: string,\n progress?: BulkEditProgress | null,\n setProgress?: (newProgress: BulkEditProgress) => void\n) => {\n const client =\n entityType === ActionOutboxEntityType.Listing\n ? new BulkEditListingClient(activeAccountWebClientConfig)\n : entityType === ActionOutboxEntityType.Sale\n ? new BulkEditSaleClient(activeAccountWebClientConfig)\n : entityType === ActionOutboxEntityType.Purchase\n ? new BulkEditPurchaseClient(activeAccountWebClientConfig)\n : undefined;\n\n if (client) {\n client.cancelBackgroundTask(updateKey);\n if (progress) {\n setProgress?.({\n ...progress,\n step: BulkEditStep.Cancelled,\n });\n }\n } else {\n new ClientLogClient(activeAccountWebClientConfig).log({\n logLevel: LogLevel.Warning,\n applicationSource: REACT_APP_NAME,\n errorId: null,\n error: `Unhandled BulkEditClient for entity: ${entityType}`,\n pageUrl: window.location.href,\n componentStack: 'bulkEditUtils.ts - cancelBulkEdit',\n additionalInfo: {\n entityType,\n updateKey,\n progress,\n },\n });\n }\n};\n\nexport const bulkEditInProgress = (\n hasBackgroundBulkEditFeature?: boolean,\n isLoading?: boolean,\n progress?: BulkEditProgress\n) => {\n const progressCountIsMax =\n (progress?.failureCount ?? 0) +\n (progress?.successCount ?? 0) +\n (progress?.warningCount ?? 0) >=\n (progress?.totalCount ?? 0);\n\n const progressPercentIsMax =\n (progress?.failurePercent ?? 0) +\n (progress?.successPercent ?? 0) +\n (progress?.warningPercent ?? 0) >=\n 1;\n\n if (!hasBackgroundBulkEditFeature && isLoading) {\n return true;\n }\n\n if (progress?.step) {\n if (progress?.step === BulkEditStep.Initializing) {\n return true;\n }\n\n if (\n progress?.step === BulkEditStep.InProgress &&\n !(progressCountIsMax || progressPercentIsMax)\n ) {\n return true;\n }\n }\n\n return false;\n};\n\nexport const getTitleForMethod = ({\n bulkActionType,\n entityType,\n}: {\n bulkActionType: BulkActionType;\n entityType: ActionOutboxEntityType;\n}) => {\n switch (bulkActionType) {\n case BulkActionType.UpdateBroadcastSettings:\n return ContentId.BroadcastSettings;\n case BulkActionType.UpdatePrices:\n return ContentId.IncreaseDecreasePrice;\n case BulkActionType.UpdateTagValues:\n return ContentId.UpdateTagValues;\n case BulkActionType.UpdatePriceFloorCeiling:\n return ContentId.UpdatePriceFloorCeiling;\n case BulkActionType.UpdateAutoPricingSettings:\n return ContentId.AutopricingSettings;\n case BulkActionType.UpdateMarketplacePrices:\n return ContentId.ListingSettings;\n case BulkActionType.UpdateMarketplaceSeating:\n return ContentId.UpdateMarketplaceSeating;\n case BulkActionType.GroupListings:\n return ContentId.GroupListings;\n case BulkActionType.ChangeEvent:\n return ContentId.ChangeEvent;\n case BulkActionType.AdminHold:\n return ContentId.Hold;\n case BulkActionType.UpdateDeliveryType:\n return ContentId.DeliveryStrategy;\n case BulkActionType.UpdateBuyerCommissions:\n return ContentId.BuyerCommission;\n\n case BulkActionType.UpdateGeneralSettings:\n if (entityType === ActionOutboxEntityType.Sale) {\n return ContentId.SaleSettings;\n } else if (entityType === ActionOutboxEntityType.Purchase) {\n return ContentId.PurchaseSettings;\n } else {\n return ContentId.ListingSettings;\n }\n case BulkActionType.UploadPurchaseFile:\n return ContentId.UploadPurchaseFile;\n\n case BulkActionType.UpdateInternalNotes:\n return ContentId.UpdatePrivateNotes;\n case BulkActionType.DeleteSeatSavers:\n return ContentId.DeletePlaceholders;\n case BulkActionType.RemovePredelivery:\n return ContentId.RemovePredelivery;\n default:\n return ContentId.BulkActions;\n }\n};\n\nexport const getPrimaryAffectedIds = (\n preview: BulkEditPreviewWithDetails | null | undefined,\n entityType: ActionOutboxEntityTypeForBulkEdit\n) => {\n const result =\n preview?.preview?.bulkEditCountPreview?.[entityType]?.idsAffected;\n return result?.length ? result : null;\n};\n\nexport const hasPrimaryAffectedIds = (\n preview: BulkEditPreviewWithDetails | null | undefined,\n entityType:\n | ActionOutboxEntityTypeForBulkEdit\n | ActionOutboxEntityTypeForBulkEdit[]\n) => {\n if (entityType instanceof Array) {\n return entityType.some(\n (et) => preview?.preview?.bulkEditCountPreview?.[et]?.idsAffected?.length\n );\n }\n\n return getPrimaryAffectedIds(preview, entityType) != null;\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { Event, Feature, Listing, PricingClient } from 'src/WebApiController';\n\nimport { useUserHasAutopricingFeature } from './useUserHasAutopricingFeature';\n\nexport const useGetListingAutoPricingSettings = (\n listing: Listing | null | undefined,\n event: Event | null | undefined\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const hasIntelligibleAutoPricingSettingsFeature =\n useUserHasAutopricingFeature(Feature.IntelligibleAutoPricingSettings);\n\n const shouldQuery = !(\n !activeAccountWebClientConfig.activeAccountId ||\n !listing?.id ||\n !event?.viagId ||\n !hasIntelligibleAutoPricingSettingsFeature\n );\n const pricingSettingsQuery = useQuery({\n queryKey: [\n 'PricingClient.getListingAutoPricingSettings',\n activeAccountWebClientConfig.activeAccountId,\n listing?.id,\n listing?.rowVer,\n event?.viagId,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n const pricingSettings = await new PricingClient(\n activeAccountWebClientConfig\n ).getListingAutoPricingSettings(listing?.id, event!.viagId!);\n\n return pricingSettings;\n },\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n retry: 3,\n retryDelay: (attemptIndex) => Math.min(500 ** attemptIndex, 3000),\n meta: {\n // TODO: temporally hide the error for now, enable this after https://stubhub.enterprise.slack.com/archives/C08D76X6M0S is fixed.\n // onError: (error: ErrorTypes) => {\n // showErrorDialog('PricingClient.getListingAutoPricingSettings', error, {\n // trackErrorData: {\n // activeAccountId: activeAccountWebClientConfig.activeAccountId,\n // listingId: listing?.id,\n // rowVer: listing?.rowVer,\n // viagogoEventId: event?.viagId,\n // },\n // });\n // },\n },\n });\n\n return {\n pricingSettings: pricingSettingsQuery.data,\n pricingSettingsQuery,\n loaded: pricingSettingsQuery.isFetched,\n };\n};\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useListingGroupPricingSettings } from 'src/hooks/api/useListingGroupPricingSettings';\nimport { useGetAccountAutoPricingSettings } from 'src/hooks/useGetAccountAutoPricingSettings';\nimport { useGetEventAutoPricingSettings } from 'src/hooks/useGetEventAutoPricingSettings';\nimport { useGetListingAutoPricingSettings } from 'src/hooks/useGetListingAutoPricingSettings';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n DEFAULT_COMP_LISTING_FLOOR,\n DEFAULT_UNDERCUT_ABSOLUTE_AMT,\n DEFAULT_UNDERCUT_RELATIVE_AMT,\n quantityFiltersFromJson,\n} from 'src/utils/autoPricingUtils';\nimport { getCurrentLanguage } from 'src/utils/localeUtils';\nimport { coalesceUndefinedOnly } from 'src/utils/miscUtils';\nimport {\n mapToSelectedSectionSettings,\n SelectedSectionSettingsWithOptionals,\n} from 'src/utils/types/selectedSectionSettingsWithOptionals';\nimport {\n AutoPricingCompListingMode,\n AutoPricingOutlierMode,\n AutoPricingUndercutMode,\n Feature,\n Listing,\n ListingDetailsAutoPricingSectionUpdates,\n ListingDetailsUpdateInput,\n SectionInfo,\n} from 'src/WebApiController';\n\nimport { useHasListingPricePermissions } from '../../components/useHasListingPricePermissions';\n\nexport const useAutoPricingSettings = (listing?: Listing | null) => {\n const { setValue, watch, formState, clearErrors } =\n useFormContext();\n const { canSetPrice, canAutoPrice } = useHasListingPricePermissions(\n listing,\n false\n );\n\n const unitNetProceeds = listing?.listPrice ?? 0;\n\n const updateInput = watch();\n const {\n autoPricingEnabled,\n\n skipAutoPricing,\n skipAdvancePricing,\n skipCompListing,\n skipUndercut,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n compListingMode,\n compListingCeiling,\n compListingFloor,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingQuantityScoreAdjustmentEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingQuantityScoreAdjustmentOverrideJson,\n compListingSelectedSectionSettings,\n compListingQuantityFilters,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacing,\n netProceedsFloor,\n\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n } = updateInput;\n\n const { loginContext } = useAppContext();\n\n const { getUiCurrency } = useLocalizationContext();\n\n const uiCurrency = useMemo(\n () =>\n getUiCurrency(\n listing?.currency ?? loginContext?.user?.activeAccount?.currencyCode\n ),\n [\n getUiCurrency,\n listing?.currency,\n loginContext?.user?.activeAccount?.currencyCode,\n ]\n );\n const currencyNumberFormat = useMemo(\n () =>\n new Intl.NumberFormat(getCurrentLanguage(), {\n style: 'currency',\n currency: uiCurrency.code,\n }),\n [uiCurrency.code]\n );\n\n const hasIntelligibleAutoPricingSettingsFeature = useUserHasFeature(\n Feature.IntelligibleAutoPricingSettings\n );\n const hasAllowSeatScoreCompListingModeFeature = useUserHasFeature(\n Feature.AllowSeatScoreCompListingMode\n );\n\n const defaultCompListingMode = useMemo(() => {\n if (hasAllowSeatScoreCompListingModeFeature) {\n return AutoPricingCompListingMode.QualityScore;\n }\n return AutoPricingCompListingMode.SameEvent;\n }, [hasAllowSeatScoreCompListingModeFeature]);\n\n const { event } = useEventMapContext();\n const { pricingSettings: listingPricingSettings } =\n useGetListingAutoPricingSettings(listing, event);\n const { pricingSettings: groupPricingSettings } =\n useListingGroupPricingSettings(listing?.ltGrpId, event);\n const { pricingSettings: eventPricingSettings } =\n useGetEventAutoPricingSettings(event!, false);\n const { pricingSettings: accountPricingSettings } =\n useGetAccountAutoPricingSettings();\n\n const onResetSettings = useCallback(() => {\n setValue('undercutMode', null);\n setValue('undercutAbsoluteAmount', null);\n setValue('undercutRelativeAmount', null);\n\n setValue('compListingMode', null);\n setValue('compListingFloor', null);\n setValue('compListingCeiling', null);\n setValue('compListingSelectedSectionSettings', null);\n setValue('compListingQuantityScoreAdjustmentOverrideJson', null);\n setValue('compListingOnlyForSameZoneEnabled', null);\n setValue('compListingOnlyForSelectedSectionsEnabled', null);\n }, [setValue]);\n\n const onResetAdvanceSettings = useCallback(() => {\n setValue('compListingQuantityScoreAdjustmentEnabled', null);\n setValue('compListingExcludeFanInventory', null);\n setValue('compListingExcludeDefects', null);\n\n setValue('circuitBreakerRelativeCeiling', null);\n setValue('circuitBreakerRelativeFloor', null);\n setValue('circuitBreakerMaxDiscountVelocityPercent', null);\n setValue('circuitBreakerMaxDiscountVelocityTicksInHours', null);\n setValue('circuitBreakerMinCompListingCount', null);\n\n setValue('outlierMode', null);\n setValue('outlierStandardDeviations', null);\n setValue('outlierKthLowestLimit', null);\n setValue('outlierKthLowestLimitRelativeSpacing', null);\n setValue('outlierKthLowestLimitAbsoluteSpacing', null);\n }, [setValue]);\n\n const circuitBreakerSettings = useMemo(() => {\n if (\n listingPricingSettings?.circuitBreakerMaxDiscountVelocityPercent !=\n null ||\n listingPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours !=\n null ||\n listingPricingSettings?.circuitBreakerMinCompListingCount != null ||\n listingPricingSettings?.circuitBreakerRelativeCeiling != null ||\n listingPricingSettings?.circuitBreakerRelativeFloor != null\n ) {\n // if it has any of these set - use the entire area\n return {\n circuitBreakerMaxDiscountVelocityPercent:\n listingPricingSettings?.circuitBreakerMaxDiscountVelocityPercent ??\n null,\n circuitBreakerMaxDiscountVelocityTicksInHours:\n listingPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours ??\n null,\n circuitBreakerMinCompListingCount:\n listingPricingSettings?.circuitBreakerMinCompListingCount ?? null,\n circuitBreakerRelativeCeiling:\n listingPricingSettings?.circuitBreakerRelativeCeiling ?? null,\n circuitBreakerRelativeFloor:\n listingPricingSettings?.circuitBreakerRelativeFloor ?? null,\n };\n }\n\n if (\n circuitBreakerMaxDiscountVelocityPercent != null ||\n circuitBreakerMaxDiscountVelocityTicksInHours != null ||\n circuitBreakerMinCompListingCount != null ||\n circuitBreakerRelativeCeiling != null ||\n circuitBreakerRelativeFloor != null\n ) {\n // if it has any of these set - use the entire area\n return {\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n };\n }\n\n if (\n groupPricingSettings?.circuitBreakerMaxDiscountVelocityPercent != null ||\n groupPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours !=\n null ||\n groupPricingSettings?.circuitBreakerMinCompListingCount != null ||\n groupPricingSettings?.circuitBreakerRelativeCeiling != null ||\n groupPricingSettings?.circuitBreakerRelativeFloor != null\n ) {\n // if it has any of these set - use the entire area\n return {\n circuitBreakerMaxDiscountVelocityPercent:\n groupPricingSettings?.circuitBreakerMaxDiscountVelocityPercent ??\n null,\n circuitBreakerMaxDiscountVelocityTicksInHours:\n groupPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours ??\n null,\n circuitBreakerMinCompListingCount:\n groupPricingSettings?.circuitBreakerMinCompListingCount ?? null,\n circuitBreakerRelativeCeiling:\n groupPricingSettings?.circuitBreakerRelativeCeiling ?? null,\n circuitBreakerRelativeFloor:\n groupPricingSettings?.circuitBreakerRelativeFloor ?? null,\n };\n }\n\n if (\n eventPricingSettings?.circuitBreakerMaxDiscountVelocityPercent != null ||\n eventPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours !=\n null ||\n eventPricingSettings?.circuitBreakerMinCompListingCount != null ||\n eventPricingSettings?.circuitBreakerRelativeCeiling != null ||\n eventPricingSettings?.circuitBreakerRelativeFloor != null\n ) {\n // if it has any of these set - use the entire area\n return {\n circuitBreakerMaxDiscountVelocityPercent:\n eventPricingSettings?.circuitBreakerMaxDiscountVelocityPercent ??\n null,\n circuitBreakerMaxDiscountVelocityTicksInHours:\n eventPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours ??\n null,\n circuitBreakerMinCompListingCount:\n eventPricingSettings?.circuitBreakerMinCompListingCount ?? null,\n circuitBreakerRelativeCeiling:\n eventPricingSettings?.circuitBreakerRelativeCeiling ?? null,\n circuitBreakerRelativeFloor:\n eventPricingSettings?.circuitBreakerRelativeFloor ?? null,\n };\n }\n\n // if it has any of these set - use the entire area\n return {\n circuitBreakerMaxDiscountVelocityPercent:\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityPercent ??\n null,\n circuitBreakerMaxDiscountVelocityTicksInHours:\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours ??\n null,\n circuitBreakerMinCompListingCount:\n accountPricingSettings?.circuitBreakerMinCompListingCount ?? null,\n circuitBreakerRelativeCeiling:\n accountPricingSettings?.circuitBreakerRelativeCeiling ?? null,\n circuitBreakerRelativeFloor:\n accountPricingSettings?.circuitBreakerRelativeFloor ?? null,\n };\n }, [\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityPercent,\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours,\n accountPricingSettings?.circuitBreakerMinCompListingCount,\n accountPricingSettings?.circuitBreakerRelativeCeiling,\n accountPricingSettings?.circuitBreakerRelativeFloor,\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n eventPricingSettings?.circuitBreakerMaxDiscountVelocityPercent,\n eventPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours,\n eventPricingSettings?.circuitBreakerMinCompListingCount,\n eventPricingSettings?.circuitBreakerRelativeCeiling,\n eventPricingSettings?.circuitBreakerRelativeFloor,\n groupPricingSettings?.circuitBreakerMaxDiscountVelocityPercent,\n groupPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours,\n groupPricingSettings?.circuitBreakerMinCompListingCount,\n groupPricingSettings?.circuitBreakerRelativeCeiling,\n groupPricingSettings?.circuitBreakerRelativeFloor,\n listingPricingSettings?.circuitBreakerMaxDiscountVelocityPercent,\n listingPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours,\n listingPricingSettings?.circuitBreakerMinCompListingCount,\n listingPricingSettings?.circuitBreakerRelativeCeiling,\n listingPricingSettings?.circuitBreakerRelativeFloor,\n ]);\n\n const undercutSettings = useMemo(() => {\n if (\n listingPricingSettings?.undercutMode != null ||\n listingPricingSettings?.undercutAbsoluteAmount != null ||\n listingPricingSettings?.undercutRelativeAmount != null\n ) {\n // if it has any of these set - use the entire area\n return {\n undercutMode: listingPricingSettings?.undercutMode ?? null,\n undercutAbsoluteAmount:\n listingPricingSettings?.undercutAbsoluteAmount ?? null,\n undercutRelativeAmount:\n listingPricingSettings?.undercutRelativeAmount ?? null,\n };\n }\n\n if (\n undercutMode != null ||\n undercutAbsoluteAmount != null ||\n undercutRelativeAmount != null\n ) {\n // if it has any of these set - use the entire area\n return {\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n };\n }\n\n if (\n groupPricingSettings?.undercutMode != null ||\n groupPricingSettings?.undercutAbsoluteAmount != null ||\n groupPricingSettings?.undercutRelativeAmount != null\n ) {\n // if it has any of these set - use the entire area\n return {\n undercutMode: groupPricingSettings?.undercutMode ?? null,\n undercutAbsoluteAmount:\n groupPricingSettings?.undercutAbsoluteAmount ?? null,\n undercutRelativeAmount:\n groupPricingSettings?.undercutRelativeAmount ?? null,\n };\n }\n\n if (\n eventPricingSettings?.undercutMode != null ||\n eventPricingSettings?.undercutAbsoluteAmount != null ||\n eventPricingSettings?.undercutRelativeAmount != null\n ) {\n // if it has any of these set - use the entire area\n return {\n undercutMode: eventPricingSettings?.undercutMode ?? null,\n undercutAbsoluteAmount:\n eventPricingSettings?.undercutAbsoluteAmount ?? null,\n undercutRelativeAmount:\n eventPricingSettings?.undercutRelativeAmount ?? null,\n };\n }\n\n // if it has any of these set - use the entire area\n return {\n undercutMode:\n accountPricingSettings?.undercutMode ?? AutoPricingUndercutMode.Simple,\n undercutAbsoluteAmount:\n accountPricingSettings?.undercutAbsoluteAmount ??\n DEFAULT_UNDERCUT_ABSOLUTE_AMT,\n undercutRelativeAmount:\n accountPricingSettings?.undercutRelativeAmount ??\n DEFAULT_UNDERCUT_RELATIVE_AMT,\n };\n }, [\n accountPricingSettings?.undercutAbsoluteAmount,\n accountPricingSettings?.undercutMode,\n accountPricingSettings?.undercutRelativeAmount,\n eventPricingSettings?.undercutAbsoluteAmount,\n eventPricingSettings?.undercutMode,\n eventPricingSettings?.undercutRelativeAmount,\n groupPricingSettings?.undercutAbsoluteAmount,\n groupPricingSettings?.undercutMode,\n groupPricingSettings?.undercutRelativeAmount,\n undercutAbsoluteAmount,\n undercutMode,\n undercutRelativeAmount,\n listingPricingSettings?.undercutAbsoluteAmount,\n listingPricingSettings?.undercutMode,\n listingPricingSettings?.undercutRelativeAmount,\n ]);\n\n const compListingSettings = useMemo(() => {\n if (\n listingPricingSettings?.compListingMode != null ||\n listingPricingSettings?.compListingFloor != null ||\n listingPricingSettings?.compListingCeiling != null ||\n listingPricingSettings?.compListingOnlyForSameZoneEnabled != null ||\n listingPricingSettings?.compListingOnlyForSelectedSectionsEnabled !=\n null ||\n listingPricingSettings?.compListingExcludeFanInventory != null ||\n listingPricingSettings?.compListingExcludeDefects != null ||\n listingPricingSettings?.compListingQuantityScoreAdjustmentEnabled !=\n null ||\n listingPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson !=\n null ||\n listingPricingSettings?.compListingSelectedSectionSettings != null ||\n listingPricingSettings?.compListingQuantityFilters != null\n ) {\n // if it has any of these set - use the entire area\n return {\n compListingMode: listingPricingSettings?.compListingMode ?? null,\n compListingFloor:\n listingPricingSettings?.compListingFloor ??\n DEFAULT_COMP_LISTING_FLOOR,\n compListingCeiling:\n listingPricingSettings?.compListingCeiling ??\n (listingPricingSettings?.compListingFloor ??\n DEFAULT_COMP_LISTING_FLOOR) +\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n compListingOnlyForSameZoneEnabled:\n listingPricingSettings?.compListingOnlyForSameZoneEnabled ?? null,\n compListingOnlyForSelectedSectionsEnabled:\n listingPricingSettings?.compListingOnlyForSelectedSectionsEnabled ??\n null,\n compListingQuantityScoreAdjustmentEnabled:\n listingPricingSettings?.compListingQuantityScoreAdjustmentEnabled ??\n null,\n compListingExcludeFanInventory:\n listingPricingSettings?.compListingExcludeFanInventory ?? null,\n compListingExcludeDefects:\n listingPricingSettings?.compListingExcludeDefects ?? null,\n compListingQuantityScoreAdjustmentOverrideJson:\n listingPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson ??\n null,\n compListingSelectedSectionSettings:\n listingPricingSettings?.compListingSelectedSectionSettings ?? null,\n compListingQuantityFilters:\n listingPricingSettings?.compListingQuantityFilters ?? null,\n };\n }\n\n if (\n compListingMode != null ||\n compListingFloor != null ||\n compListingCeiling != null ||\n compListingOnlyForSameZoneEnabled != null ||\n compListingOnlyForSelectedSectionsEnabled != null ||\n compListingExcludeFanInventory != null ||\n compListingExcludeDefects != null ||\n compListingSelectedSectionSettings != null ||\n compListingQuantityScoreAdjustmentEnabled != null ||\n compListingQuantityScoreAdjustmentOverrideJson != null ||\n compListingQuantityFilters != null\n ) {\n // if it has any of these set - use the entire area\n return {\n compListingMode,\n compListingFloor: compListingFloor ?? DEFAULT_COMP_LISTING_FLOOR,\n compListingCeiling:\n compListingCeiling ??\n (compListingFloor ?? DEFAULT_COMP_LISTING_FLOOR) +\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingSelectedSectionSettings,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n compListingQuantityFilters,\n };\n }\n\n if (\n groupPricingSettings?.compListingMode != null ||\n groupPricingSettings?.compListingFloor != null ||\n groupPricingSettings?.compListingCeiling != null ||\n groupPricingSettings?.compListingOnlyForSameZoneEnabled != null ||\n groupPricingSettings?.compListingOnlyForSelectedSectionsEnabled != null ||\n groupPricingSettings?.compListingExcludeFanInventory != null ||\n groupPricingSettings?.compListingExcludeDefects != null ||\n groupPricingSettings?.compListingQuantityScoreAdjustmentEnabled != null ||\n groupPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson !=\n null ||\n groupPricingSettings?.compListingSelectedSectionSettings != null ||\n groupPricingSettings?.compListingQuantityFilters != null\n ) {\n // if it has any of these set - use the entire area\n return {\n compListingMode: groupPricingSettings?.compListingMode ?? null,\n compListingFloor:\n groupPricingSettings?.compListingFloor ?? DEFAULT_COMP_LISTING_FLOOR,\n compListingCeiling:\n groupPricingSettings?.compListingCeiling ??\n (groupPricingSettings?.compListingFloor ??\n DEFAULT_COMP_LISTING_FLOOR) +\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n compListingOnlyForSameZoneEnabled:\n groupPricingSettings?.compListingOnlyForSameZoneEnabled ?? null,\n compListingOnlyForSelectedSectionsEnabled:\n groupPricingSettings?.compListingOnlyForSelectedSectionsEnabled ??\n null,\n compListingQuantityScoreAdjustmentEnabled:\n groupPricingSettings?.compListingQuantityScoreAdjustmentEnabled ??\n null,\n compListingExcludeFanInventory:\n groupPricingSettings?.compListingExcludeFanInventory ?? null,\n compListingExcludeDefects:\n groupPricingSettings?.compListingExcludeDefects ?? null,\n compListingQuantityScoreAdjustmentOverrideJson:\n groupPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson ??\n null,\n compListingSelectedSectionSettings:\n groupPricingSettings?.compListingSelectedSectionSettings ?? null,\n compListingQuantityFilters:\n groupPricingSettings?.compListingQuantityFilters ?? null,\n };\n }\n\n if (\n eventPricingSettings?.compListingMode != null ||\n eventPricingSettings?.compListingFloor != null ||\n eventPricingSettings?.compListingCeiling != null ||\n eventPricingSettings?.compListingOnlyForSameZoneEnabled != null ||\n eventPricingSettings?.compListingOnlyForSelectedSectionsEnabled != null ||\n eventPricingSettings?.compListingExcludeFanInventory != null ||\n eventPricingSettings?.compListingExcludeDefects != null ||\n eventPricingSettings?.compListingQuantityScoreAdjustmentEnabled != null ||\n eventPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson !=\n null ||\n eventPricingSettings?.compListingSelectedSectionSettings != null ||\n eventPricingSettings?.compListingQuantityFilters != null\n ) {\n // if it has any of these set - use the entire area\n return {\n compListingMode: eventPricingSettings?.compListingMode ?? null,\n compListingFloor:\n eventPricingSettings?.compListingFloor ?? DEFAULT_COMP_LISTING_FLOOR,\n compListingCeiling:\n eventPricingSettings?.compListingCeiling ??\n (eventPricingSettings?.compListingFloor ??\n DEFAULT_COMP_LISTING_FLOOR) +\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n compListingOnlyForSameZoneEnabled:\n eventPricingSettings?.compListingOnlyForSameZoneEnabled ?? null,\n compListingOnlyForSelectedSectionsEnabled:\n eventPricingSettings?.compListingOnlyForSelectedSectionsEnabled ??\n null,\n compListingQuantityScoreAdjustmentEnabled:\n eventPricingSettings?.compListingQuantityScoreAdjustmentEnabled ??\n null,\n compListingExcludeFanInventory:\n eventPricingSettings?.compListingExcludeFanInventory ?? null,\n compListingExcludeDefects:\n eventPricingSettings?.compListingExcludeDefects ?? null,\n compListingQuantityScoreAdjustmentOverrideJson:\n eventPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson ??\n null,\n compListingSelectedSectionSettings:\n eventPricingSettings?.compListingSelectedSectionSettings ?? null,\n compListingQuantityFilters:\n eventPricingSettings?.compListingQuantityFilters ?? null,\n };\n }\n\n // if it has any of these set - use the entire area\n return {\n compListingMode:\n accountPricingSettings?.compListingMode ?? defaultCompListingMode,\n compListingFloor:\n accountPricingSettings?.compListingFloor ?? DEFAULT_COMP_LISTING_FLOOR,\n compListingCeiling:\n accountPricingSettings?.compListingCeiling ??\n (accountPricingSettings?.compListingFloor ??\n DEFAULT_COMP_LISTING_FLOOR) +\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n compListingOnlyForSameZoneEnabled:\n accountPricingSettings?.compListingOnlyForSameZoneEnabled ?? null,\n compListingOnlyForSelectedSectionsEnabled:\n accountPricingSettings?.compListingOnlyForSelectedSectionsEnabled ??\n null,\n compListingQuantityScoreAdjustmentEnabled:\n accountPricingSettings?.compListingQuantityScoreAdjustmentEnabled ??\n null,\n compListingExcludeFanInventory:\n accountPricingSettings?.compListingExcludeFanInventory ?? null,\n compListingExcludeDefects:\n accountPricingSettings?.compListingExcludeDefects ?? null,\n compListingQuantityScoreAdjustmentOverrideJson:\n accountPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson ??\n null,\n compListingSelectedSectionSettings:\n accountPricingSettings?.compListingSelectedSectionSettings ?? null,\n compListingQuantityFilters:\n accountPricingSettings?.compListingQuantityFilters ?? null,\n };\n }, [\n listingPricingSettings?.compListingMode,\n listingPricingSettings?.compListingFloor,\n listingPricingSettings?.compListingCeiling,\n listingPricingSettings?.compListingOnlyForSameZoneEnabled,\n listingPricingSettings?.compListingOnlyForSelectedSectionsEnabled,\n listingPricingSettings?.compListingExcludeFanInventory,\n listingPricingSettings?.compListingExcludeDefects,\n listingPricingSettings?.compListingQuantityScoreAdjustmentEnabled,\n listingPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson,\n listingPricingSettings?.compListingSelectedSectionSettings,\n listingPricingSettings?.compListingQuantityFilters,\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingSelectedSectionSettings,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n compListingQuantityFilters,\n groupPricingSettings?.compListingMode,\n groupPricingSettings?.compListingFloor,\n groupPricingSettings?.compListingCeiling,\n groupPricingSettings?.compListingOnlyForSameZoneEnabled,\n groupPricingSettings?.compListingOnlyForSelectedSectionsEnabled,\n groupPricingSettings?.compListingExcludeFanInventory,\n groupPricingSettings?.compListingExcludeDefects,\n groupPricingSettings?.compListingQuantityScoreAdjustmentEnabled,\n groupPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson,\n groupPricingSettings?.compListingSelectedSectionSettings,\n groupPricingSettings?.compListingQuantityFilters,\n eventPricingSettings?.compListingMode,\n eventPricingSettings?.compListingFloor,\n eventPricingSettings?.compListingCeiling,\n eventPricingSettings?.compListingOnlyForSameZoneEnabled,\n eventPricingSettings?.compListingOnlyForSelectedSectionsEnabled,\n eventPricingSettings?.compListingExcludeFanInventory,\n eventPricingSettings?.compListingExcludeDefects,\n eventPricingSettings?.compListingQuantityScoreAdjustmentEnabled,\n eventPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson,\n eventPricingSettings?.compListingSelectedSectionSettings,\n eventPricingSettings?.compListingQuantityFilters,\n accountPricingSettings?.compListingMode,\n accountPricingSettings?.compListingFloor,\n accountPricingSettings?.compListingCeiling,\n accountPricingSettings?.compListingOnlyForSameZoneEnabled,\n accountPricingSettings?.compListingOnlyForSelectedSectionsEnabled,\n accountPricingSettings?.compListingQuantityScoreAdjustmentEnabled,\n accountPricingSettings?.compListingExcludeFanInventory,\n accountPricingSettings?.compListingExcludeDefects,\n accountPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson,\n accountPricingSettings?.compListingSelectedSectionSettings,\n accountPricingSettings?.compListingQuantityFilters,\n defaultCompListingMode,\n ]);\n\n const outlierSettings = useMemo(() => {\n if (\n listingPricingSettings?.outlierMode != null ||\n listingPricingSettings?.outlierStandardDeviations != null ||\n listingPricingSettings?.outlierKthLowestLimit != null ||\n listingPricingSettings?.outlierKthLowestLimitAbsoluteSpacing != null ||\n listingPricingSettings?.outlierKthLowestLimitRelativeSpacing != null\n ) {\n // if it has any of these set - use the entire area\n return {\n outlierMode: listingPricingSettings?.outlierMode ?? null,\n outlierStandardDeviations:\n listingPricingSettings?.outlierStandardDeviations ?? null,\n outlierKthLowestLimit:\n listingPricingSettings?.outlierKthLowestLimit ?? null,\n outlierKthLowestLimitAbsoluteSpacing:\n listingPricingSettings?.outlierKthLowestLimitAbsoluteSpacing ?? null,\n outlierKthLowestLimitRelativeSpacing:\n listingPricingSettings?.outlierKthLowestLimitRelativeSpacing ?? null,\n };\n }\n\n if (\n outlierMode != null ||\n outlierStandardDeviations != null ||\n outlierKthLowestLimit != null\n ) {\n // if it has any of these set - use the entire area\n return {\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n };\n }\n\n if (\n groupPricingSettings?.outlierMode != null ||\n groupPricingSettings?.outlierStandardDeviations != null\n // TODO - add rest of settings here\n ) {\n // if it has any of these set - use the entire area\n return {\n outlierMode: groupPricingSettings?.outlierMode ?? null,\n outlierStandardDeviations:\n groupPricingSettings?.outlierStandardDeviations ?? null,\n };\n }\n\n if (\n eventPricingSettings?.outlierMode != null ||\n eventPricingSettings?.outlierStandardDeviations != null\n // TODO - add rest of settings here\n ) {\n // if it has any of these set - use the entire area\n return {\n outlierMode: eventPricingSettings?.outlierMode ?? null,\n outlierStandardDeviations:\n eventPricingSettings?.outlierStandardDeviations ?? null,\n };\n }\n\n // if it has any of these set - use the entire area\n return {\n outlierMode: accountPricingSettings?.outlierMode ?? null,\n outlierStandardDeviations:\n accountPricingSettings?.outlierStandardDeviations ?? null,\n // TODO - add rest of settings here\n };\n }, [\n accountPricingSettings?.outlierMode,\n accountPricingSettings?.outlierStandardDeviations,\n eventPricingSettings?.outlierMode,\n eventPricingSettings?.outlierStandardDeviations,\n groupPricingSettings?.outlierMode,\n groupPricingSettings?.outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacing,\n outlierMode,\n outlierStandardDeviations,\n listingPricingSettings?.outlierMode,\n listingPricingSettings?.outlierStandardDeviations,\n listingPricingSettings?.outlierKthLowestLimit,\n listingPricingSettings?.outlierKthLowestLimitAbsoluteSpacing,\n listingPricingSettings?.outlierKthLowestLimitRelativeSpacing,\n ]);\n\n const onUndercutChange = useCallback(\n (\n undercutModeNew?: AutoPricingUndercutMode | null,\n undercutAbsoluteAmountNew?: number | null,\n undercutRelativeAmountNew?: number | null\n ) => {\n if (\n undercutModeNew !== undefined ||\n undercutAbsoluteAmountNew !== undefined ||\n undercutRelativeAmountNew !== undefined\n ) {\n setValue(\n 'undercutMode',\n coalesceUndefinedOnly(undercutModeNew, undercutSettings.undercutMode)!\n );\n setValue(\n 'undercutAbsoluteAmount',\n coalesceUndefinedOnly(\n undercutAbsoluteAmountNew,\n undercutSettings.undercutAbsoluteAmount\n )!\n );\n setValue(\n 'undercutRelativeAmount',\n coalesceUndefinedOnly(\n undercutRelativeAmountNew,\n undercutSettings.undercutRelativeAmount\n )!\n );\n }\n },\n [\n setValue,\n undercutSettings.undercutAbsoluteAmount,\n undercutSettings.undercutMode,\n undercutSettings.undercutRelativeAmount,\n ]\n );\n\n const onCompListingChange = useCallback(\n (input: {\n compListingModeNew?: AutoPricingCompListingMode | null;\n compListingFloorNew?: number | null;\n compListingCeilingNew?: number | null;\n compListingOnlyForSameZoneEnabledNew?: boolean | null;\n compListingOnlyForSelectedSectionsEnabledNew?: boolean | null;\n compListingQuantityScoreAdjustmentEnabledNew?: boolean | null;\n compListingExcludeFanInventoryNew?: boolean | null;\n compListingExcludeDefectsNew?: boolean | null;\n compListingQuantityScoreAdjustmentOverrideJsonNew?: string | null;\n compListingSelectedSectionSettingsNew?: SelectedSectionSettingsWithOptionals | null;\n }) => {\n const {\n compListingModeNew,\n compListingFloorNew,\n compListingCeilingNew,\n compListingOnlyForSameZoneEnabledNew,\n compListingOnlyForSelectedSectionsEnabledNew,\n compListingQuantityScoreAdjustmentEnabledNew,\n compListingExcludeFanInventoryNew,\n compListingExcludeDefectsNew,\n compListingQuantityScoreAdjustmentOverrideJsonNew,\n compListingSelectedSectionSettingsNew,\n } = input;\n\n if (\n compListingModeNew !== undefined ||\n compListingFloorNew !== undefined ||\n compListingCeilingNew !== undefined ||\n compListingOnlyForSameZoneEnabledNew !== undefined ||\n compListingOnlyForSelectedSectionsEnabledNew !== undefined ||\n compListingQuantityScoreAdjustmentEnabledNew !== undefined ||\n compListingExcludeFanInventoryNew !== undefined ||\n compListingExcludeDefectsNew !== undefined ||\n compListingQuantityScoreAdjustmentOverrideJsonNew !== undefined ||\n compListingSelectedSectionSettingsNew !== undefined\n ) {\n const sanitizedCompListingOnlyForSameZoneEnabledNew =\n compListingOnlyForSelectedSectionsEnabledNew\n ? false\n : compListingOnlyForSameZoneEnabledNew;\n const sanitizedCompListingOnlyForSelectedSectionsEnabledNew =\n compListingOnlyForSameZoneEnabledNew\n ? false\n : compListingOnlyForSelectedSectionsEnabledNew;\n setValue(\n 'compListingMode',\n coalesceUndefinedOnly(\n compListingModeNew,\n compListingSettings.compListingMode\n )!\n );\n setValue(\n 'compListingFloor',\n coalesceUndefinedOnly(\n compListingFloorNew,\n compListingSettings.compListingFloor\n )!\n );\n setValue(\n 'compListingCeiling',\n coalesceUndefinedOnly(\n compListingCeilingNew,\n compListingSettings.compListingCeiling\n )!\n );\n setValue(\n 'compListingOnlyForSameZoneEnabled',\n coalesceUndefinedOnly(\n sanitizedCompListingOnlyForSameZoneEnabledNew,\n compListingSettings.compListingOnlyForSameZoneEnabled\n )!\n );\n setValue(\n 'compListingOnlyForSelectedSectionsEnabled',\n coalesceUndefinedOnly(\n sanitizedCompListingOnlyForSelectedSectionsEnabledNew,\n compListingSettings.compListingOnlyForSelectedSectionsEnabled\n )!\n );\n setValue(\n 'compListingQuantityScoreAdjustmentEnabled',\n coalesceUndefinedOnly(\n compListingQuantityScoreAdjustmentEnabledNew,\n compListingSettings.compListingQuantityScoreAdjustmentEnabled\n )!\n );\n setValue(\n 'compListingExcludeFanInventory',\n coalesceUndefinedOnly(\n compListingExcludeFanInventoryNew,\n compListingSettings.compListingExcludeFanInventory\n )!\n );\n setValue(\n 'compListingExcludeDefects',\n coalesceUndefinedOnly(\n compListingExcludeDefectsNew,\n compListingSettings.compListingExcludeDefects\n )!\n );\n setValue(\n 'compListingQuantityScoreAdjustmentOverrideJson',\n coalesceUndefinedOnly(\n compListingQuantityScoreAdjustmentOverrideJsonNew,\n compListingSettings.compListingQuantityScoreAdjustmentOverrideJson\n )!\n );\n // When setting the json quantity fitlers, we also want to override the structured quantity filters\n setValue(\n 'compListingQuantityFilters',\n coalesceUndefinedOnly(\n quantityFiltersFromJson(\n compListingQuantityScoreAdjustmentOverrideJsonNew\n ),\n compListingSettings.compListingQuantityFilters\n )!\n ),\n setValue(\n 'compListingSelectedSectionSettings',\n coalesceUndefinedOnly(\n mapToSelectedSectionSettings(\n compListingSelectedSectionSettingsNew\n ),\n compListingSettings.compListingSelectedSectionSettings\n )!\n );\n }\n },\n [\n setValue,\n compListingSettings.compListingMode,\n compListingSettings.compListingFloor,\n compListingSettings.compListingCeiling,\n compListingSettings.compListingOnlyForSameZoneEnabled,\n compListingSettings.compListingOnlyForSelectedSectionsEnabled,\n compListingSettings.compListingQuantityScoreAdjustmentEnabled,\n compListingSettings.compListingExcludeFanInventory,\n compListingSettings.compListingExcludeDefects,\n compListingSettings.compListingQuantityScoreAdjustmentOverrideJson,\n compListingSettings.compListingQuantityFilters,\n compListingSettings.compListingSelectedSectionSettings,\n ]\n );\n\n const onCircuitBreakerChange = useCallback(\n (\n circuitBreakerRelativeCeilingNew?: number | null,\n circuitBreakerRelativeFloorNew?: number | null,\n circuitBreakerMaxDiscountVelocityPercentNew?: number | null,\n circuitBreakerMaxDiscountVelocityTicksInHoursNew?: number | null,\n circuitBreakerMinCompListingCountNew?: number | null\n ) => {\n if (\n circuitBreakerRelativeCeilingNew !== undefined ||\n circuitBreakerRelativeFloorNew !== undefined ||\n circuitBreakerMaxDiscountVelocityPercentNew !== undefined ||\n circuitBreakerMaxDiscountVelocityTicksInHoursNew !== undefined ||\n circuitBreakerMinCompListingCountNew !== undefined\n ) {\n setValue(\n 'circuitBreakerRelativeCeiling',\n coalesceUndefinedOnly(\n circuitBreakerRelativeCeilingNew,\n circuitBreakerSettings.circuitBreakerRelativeCeiling\n ) ?? null\n );\n setValue(\n 'circuitBreakerRelativeFloor',\n coalesceUndefinedOnly(\n circuitBreakerRelativeFloorNew,\n circuitBreakerSettings.circuitBreakerRelativeFloor\n ) ?? null\n );\n setValue(\n 'circuitBreakerMaxDiscountVelocityPercent',\n coalesceUndefinedOnly(\n circuitBreakerMaxDiscountVelocityPercentNew,\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityPercent\n ) ?? null\n );\n setValue(\n 'circuitBreakerMaxDiscountVelocityTicksInHours',\n coalesceUndefinedOnly(\n circuitBreakerMaxDiscountVelocityTicksInHoursNew,\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityTicksInHours\n ) ?? null\n );\n setValue(\n 'circuitBreakerMinCompListingCount',\n coalesceUndefinedOnly(\n circuitBreakerMinCompListingCountNew,\n circuitBreakerSettings.circuitBreakerMinCompListingCount\n ) ?? null\n );\n }\n },\n [\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerSettings.circuitBreakerMinCompListingCount,\n circuitBreakerSettings.circuitBreakerRelativeCeiling,\n circuitBreakerSettings.circuitBreakerRelativeFloor,\n setValue,\n ]\n );\n\n const onOutlierChange = useCallback(\n (input: {\n outlierModeNew?: AutoPricingOutlierMode | null;\n outlierStandardDeviationsNew?: number | null;\n outlierKthLowestLimitNew?: number | null;\n outlierKthLowestLimitRelativeSpacingNew?: number | null;\n outlierKthLowestLimitAbsoluteSpacingNew?: number | null;\n }) => {\n const {\n outlierModeNew,\n outlierStandardDeviationsNew,\n outlierKthLowestLimitNew,\n outlierKthLowestLimitRelativeSpacingNew,\n outlierKthLowestLimitAbsoluteSpacingNew,\n } = input;\n\n // Covers both null and undefined cases\n if (outlierModeNew !== undefined) {\n setValue(\n 'outlierMode',\n coalesceUndefinedOnly(outlierModeNew, outlierSettings.outlierMode) ??\n null\n );\n\n switch (outlierModeNew) {\n case AutoPricingOutlierMode.StandardDeviations:\n setValue(\n 'outlierStandardDeviations',\n coalesceUndefinedOnly(\n outlierStandardDeviationsNew,\n outlierSettings.outlierStandardDeviations\n ) ?? null\n );\n setValue('outlierKthLowestLimit', null);\n setValue('outlierKthLowestLimitRelativeSpacing', null);\n setValue('outlierKthLowestLimitAbsoluteSpacing', null);\n break;\n case AutoPricingOutlierMode.KthLowest:\n setValue('outlierStandardDeviations', null);\n setValue(\n 'outlierKthLowestLimit',\n coalesceUndefinedOnly(\n outlierKthLowestLimitNew,\n outlierSettings.outlierKthLowestLimit\n ) ?? null\n );\n\n setValue(\n 'outlierKthLowestLimitRelativeSpacing',\n coalesceUndefinedOnly(\n outlierKthLowestLimitRelativeSpacingNew,\n outlierSettings.outlierKthLowestLimitRelativeSpacing\n ) ?? null\n );\n\n setValue(\n 'outlierKthLowestLimitAbsoluteSpacing',\n coalesceUndefinedOnly(\n outlierKthLowestLimitAbsoluteSpacingNew,\n outlierSettings.outlierKthLowestLimitAbsoluteSpacing\n ) ?? null\n );\n break;\n case AutoPricingOutlierMode.SkipLogic:\n setValue('outlierStandardDeviations', null);\n setValue('outlierKthLowestLimit', null);\n setValue('outlierKthLowestLimitRelativeSpacing', null);\n setValue('outlierKthLowestLimitAbsoluteSpacing', null);\n }\n } else {\n setValue('outlierMode', null);\n setValue('outlierStandardDeviations', null);\n setValue('outlierKthLowestLimit', null);\n setValue('outlierKthLowestLimitRelativeSpacing', null);\n setValue('outlierKthLowestLimitAbsoluteSpacing', null);\n }\n },\n [\n outlierSettings.outlierKthLowestLimit,\n outlierSettings.outlierKthLowestLimitAbsoluteSpacing,\n outlierSettings.outlierKthLowestLimitRelativeSpacing,\n outlierSettings.outlierMode,\n outlierSettings.outlierStandardDeviations,\n setValue,\n ]\n );\n\n const setAutoPricingDefaults = useCallback(() => {\n if (!netProceedsFloor) {\n const proposedFloor = unitNetProceeds\n ? // If we have a non-zero list-price, we want the min of listprice or unitCost\n Math.min(\n unitNetProceeds,\n listing?.unitCst?.amt ??\n listing?.faceValue?.amt ??\n Number.MAX_SAFE_INTEGER\n )\n : // Else just use the unitCost\n (listing?.unitCst?.amt ?? listing?.faceValue?.amt ?? null);\n\n setValue('netProceedsFloor', proposedFloor);\n }\n\n // If this or any higher level don't have, set the default\n if (\n !undercutMode &&\n !eventPricingSettings?.undercutMode &&\n !accountPricingSettings?.undercutMode\n ) {\n setValue('undercutMode', undercutMode);\n setValue('undercutAbsoluteAmount', undercutAbsoluteAmount);\n setValue('undercutRelativeAmount', undercutRelativeAmount);\n }\n\n // If this or any higher level don't have, set the default\n if (\n !compListingMode &&\n !eventPricingSettings?.compListingMode &&\n !accountPricingSettings?.compListingMode\n ) {\n setValue('compListingMode', compListingMode);\n setValue('compListingFloor', compListingFloor);\n setValue('compListingCeiling', compListingCeiling);\n }\n }, [\n accountPricingSettings?.compListingMode,\n accountPricingSettings?.undercutMode,\n compListingCeiling,\n compListingFloor,\n compListingMode,\n eventPricingSettings?.compListingMode,\n eventPricingSettings?.undercutMode,\n listing?.faceValue?.amt,\n listing?.unitCst?.amt,\n netProceedsFloor,\n setValue,\n undercutAbsoluteAmount,\n undercutMode,\n undercutRelativeAmount,\n unitNetProceeds,\n ]);\n\n const applySectionRowFilterCompListingChanges = useCallback(\n (\n newSectionIdFilter: number[],\n sections: SectionInfo[],\n compListingSelectedSectionSettingsNew?:\n | SelectedSectionSettingsWithOptionals\n | null\n | undefined\n ) => {\n // If sectionIdFilter is empty, we should disable the compListingOnlyForSelectedSectionsEnabled\n // and revert back to QualitScore mode. When users add section filters, we should enable\n // compListingOnlyForSelectedSectionsEnabled and put the mode to SameEvent only on when the first\n // section is added. If the user swaps the comp mode after the first section we don't want to keep\n // forcing them back into SameEvent mode.\n if (newSectionIdFilter.length === 0 && sections.length > 0) {\n onCompListingChange({\n compListingSelectedSectionSettingsNew,\n compListingModeNew: defaultCompListingMode,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n } else {\n if (newSectionIdFilter.length === 1 && sections.length === 0) {\n onCompListingChange({\n compListingSelectedSectionSettingsNew,\n compListingModeNew: AutoPricingCompListingMode.SameEvent,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n });\n\n return;\n }\n\n // Otherwise, just update the section filters and ensure the selectedSections flag is true\n onCompListingChange({\n compListingSelectedSectionSettingsNew,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n });\n }\n },\n [defaultCompListingMode, onCompListingChange]\n );\n\n const onCompListingSectionIdFilterChange = useCallback(\n (\n sectionId: number,\n selectedSections: SectionInfo[],\n section?: SectionInfo\n ) => {\n let newSectionIdFilter =\n compListingSelectedSectionSettings?.sectionIdFilter ?? [];\n\n let newRowIdFilter =\n compListingSelectedSectionSettings?.rowIdFilter ?? [];\n\n let newSectionRowIdFilter =\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {};\n\n if (newSectionIdFilter.includes(sectionId)) {\n newSectionIdFilter = newSectionIdFilter.filter(\n (id) => id !== sectionId\n );\n\n // Remove all the associated row ids for this section\n const section = selectedSections.find((s) => s.id === sectionId);\n if (section) {\n const rowIds = section.rows.map((r) => r.id);\n newRowIdFilter = newRowIdFilter.filter((id) => !rowIds.includes(id));\n }\n\n // Remove the sectionRow mapping so we don't display it in pills\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [sectionId]: omitted, ...updatedSectionRowIdFilter } =\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {};\n\n newSectionRowIdFilter = updatedSectionRowIdFilter;\n } else {\n newSectionIdFilter.push(sectionId);\n\n // If a section is present, add all the rows associated with the newly selected section\n if (section) {\n const newRowIds = section.rows.map((r) => r.id);\n newRowIds.forEach((newRowId) => {\n if (!newRowIdFilter.includes(newRowId)) {\n newRowIdFilter.push(newRowId);\n }\n });\n }\n }\n\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter: newSectionIdFilter,\n rowIdFilter: newRowIdFilter,\n sectionRowIdFilter: newSectionRowIdFilter,\n };\n\n applySectionRowFilterCompListingChanges(\n newSectionIdFilter,\n selectedSections,\n compListingSelectedSectionSettingsNew\n );\n },\n [\n applySectionRowFilterCompListingChanges,\n compListingSelectedSectionSettings,\n ]\n );\n\n const onCompListingSectionZoneChange = useCallback(\n (sections: SectionInfo[], flipOnSameSections = true) => {\n let newSectionIdFilter =\n compListingSelectedSectionSettings?.sectionIdFilter ?? [];\n\n let newRowIdFilter =\n compListingSelectedSectionSettings?.rowIdFilter ?? [];\n\n const newSectionRowIdFilter =\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {};\n\n // If every section passed in already exists in prevSections then we should remove them entirely\n const completelyOverlap = sections.every((section) =>\n newSectionIdFilter.includes(section.id)\n );\n\n if (completelyOverlap && flipOnSameSections) {\n const sectionIdsToRemove = new Set(\n sections.map((section) => section.id)\n );\n\n newSectionIdFilter = newSectionIdFilter.filter(\n (id) => !sectionIdsToRemove.has(id)\n );\n\n // Remove all associated rows as well\n const rowIdsToRemove = sections\n .map((section) => section.rows.map((r) => r.id))\n .flat();\n\n const rowIdsToRemoveSet = new Set(rowIdsToRemove);\n\n newRowIdFilter = newRowIdFilter.filter(\n (rowId) => !rowIdsToRemoveSet.has(rowId)\n );\n\n // Update sectionRowIdFilters to remove the sections that have been removed\n sections.forEach((section) => {\n if (section.id in newSectionRowIdFilter) {\n delete newSectionRowIdFilter[section.id];\n }\n });\n } else {\n // Upsert of the new sections\n sections.forEach((section) => {\n if (!(section.id in newSectionRowIdFilter)) {\n newSectionIdFilter.push(section.id);\n\n const newRowIds = section.rows.map((r) => r.id);\n newRowIds.forEach((newRowId) => {\n if (!newRowIdFilter.includes(newRowId)) {\n newRowIdFilter.push(newRowId);\n }\n });\n }\n });\n }\n\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter: newSectionIdFilter,\n rowIdFilter: newRowIdFilter,\n sectionRowIdFilter: newSectionRowIdFilter,\n };\n\n applySectionRowFilterCompListingChanges(\n newSectionIdFilter,\n sections,\n compListingSelectedSectionSettingsNew\n );\n },\n [\n applySectionRowFilterCompListingChanges,\n compListingSelectedSectionSettings,\n ]\n );\n\n const hasChanges = useCallback(\n (listingForm: ListingDetailsUpdateInput) => {\n const hasCompListingQuantityFiltersChanges =\n hasIntelligibleAutoPricingSettingsFeature &&\n !isEqual(\n formState.defaultValues?.compListingQuantityFilters,\n listingForm?.compListingQuantityFilters\n );\n\n // Make sure we only send back the settable props\n if (\n formState.defaultValues?.autoPricingEnabled !==\n listingForm.autoPricingEnabled ||\n formState.defaultValues?.netProceedsFloor !==\n listingForm.netProceedsFloor ||\n formState.defaultValues?.compListingMode !==\n listingForm.compListingMode ||\n formState.defaultValues?.compListingFloor !==\n listingForm.compListingFloor ||\n formState.defaultValues?.compListingCeiling !==\n listingForm.compListingCeiling ||\n formState.defaultValues?.compListingQuantityScoreAdjustmentEnabled !==\n listingForm.compListingQuantityScoreAdjustmentEnabled ||\n formState.defaultValues\n ?.compListingQuantityScoreAdjustmentOverrideJson !==\n listingForm.compListingQuantityScoreAdjustmentOverrideJson ||\n formState.defaultValues?.compListingOnlyForSameZoneEnabled !==\n listingForm.compListingOnlyForSameZoneEnabled ||\n formState.defaultValues?.compListingOnlyForSelectedSectionsEnabled !==\n listingForm.compListingOnlyForSelectedSectionsEnabled ||\n formState.defaultValues?.compListingExcludeFanInventory !==\n listingForm.compListingExcludeFanInventory ||\n formState.defaultValues?.compListingExcludeDefects !==\n listingForm.compListingExcludeDefects ||\n !isEqual(\n formState.defaultValues?.compListingSelectedSectionSettings,\n listingForm?.compListingSelectedSectionSettings\n ) ||\n hasCompListingQuantityFiltersChanges ||\n formState.defaultValues?.undercutMode !== listingForm.undercutMode ||\n formState.defaultValues?.undercutAbsoluteAmount !==\n listingForm.undercutAbsoluteAmount ||\n formState.defaultValues?.undercutRelativeAmount !==\n listingForm.undercutRelativeAmount ||\n formState.defaultValues?.circuitBreakerMaxDiscountVelocityPercent !==\n listingForm.circuitBreakerMaxDiscountVelocityPercent ||\n formState.defaultValues\n ?.circuitBreakerMaxDiscountVelocityTicksInHours !==\n listingForm.circuitBreakerMaxDiscountVelocityTicksInHours ||\n formState.defaultValues?.circuitBreakerMinCompListingCount !==\n listingForm.circuitBreakerMinCompListingCount ||\n formState.defaultValues?.circuitBreakerRelativeCeiling !==\n listingForm.circuitBreakerRelativeCeiling ||\n formState.defaultValues?.circuitBreakerRelativeFloor !==\n listingForm.circuitBreakerRelativeFloor ||\n formState.defaultValues?.outlierMode !== listingForm.outlierMode ||\n formState.defaultValues?.outlierStandardDeviations !==\n listingForm.outlierStandardDeviations ||\n formState.defaultValues?.outlierKthLowestLimit !==\n listingForm.outlierKthLowestLimit ||\n formState.defaultValues?.outlierKthLowestLimitRelativeSpacing !==\n listingForm.outlierKthLowestLimitRelativeSpacing ||\n formState.defaultValues?.outlierKthLowestLimitAbsoluteSpacing !==\n listingForm.outlierKthLowestLimitAbsoluteSpacing\n ) {\n return true;\n }\n },\n [\n hasIntelligibleAutoPricingSettingsFeature,\n formState.defaultValues?.compListingQuantityFilters,\n formState.defaultValues?.autoPricingEnabled,\n formState.defaultValues?.netProceedsFloor,\n formState.defaultValues?.compListingMode,\n formState.defaultValues?.compListingFloor,\n formState.defaultValues?.compListingCeiling,\n formState.defaultValues?.compListingQuantityScoreAdjustmentEnabled,\n formState.defaultValues?.compListingQuantityScoreAdjustmentOverrideJson,\n formState.defaultValues?.compListingOnlyForSameZoneEnabled,\n formState.defaultValues?.compListingOnlyForSelectedSectionsEnabled,\n formState.defaultValues?.compListingExcludeFanInventory,\n formState.defaultValues?.compListingExcludeDefects,\n formState.defaultValues?.compListingSelectedSectionSettings,\n formState.defaultValues?.undercutMode,\n formState.defaultValues?.undercutAbsoluteAmount,\n formState.defaultValues?.undercutRelativeAmount,\n formState.defaultValues?.circuitBreakerMaxDiscountVelocityPercent,\n formState.defaultValues?.circuitBreakerMaxDiscountVelocityTicksInHours,\n formState.defaultValues?.circuitBreakerMinCompListingCount,\n formState.defaultValues?.circuitBreakerRelativeCeiling,\n formState.defaultValues?.circuitBreakerRelativeFloor,\n formState.defaultValues?.outlierMode,\n formState.defaultValues?.outlierStandardDeviations,\n formState.defaultValues?.outlierKthLowestLimit,\n formState.defaultValues?.outlierKthLowestLimitRelativeSpacing,\n formState.defaultValues?.outlierKthLowestLimitAbsoluteSpacing,\n ]\n );\n\n const onCompListingModeChange = useCallback(\n (mode: AutoPricingCompListingMode | null) => {\n clearErrors('compListingFloor');\n\n if (!mode) {\n onCompListingChange({\n compListingModeNew: null,\n compListingFloorNew: null,\n compListingCeilingNew: null,\n });\n return;\n }\n\n onCompListingChange({\n compListingModeNew: mode,\n // Reset flag on mode change\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n\n if (mode === AutoPricingCompListingMode.ParentListing) {\n onUndercutChange(AutoPricingUndercutMode.Simple);\n }\n },\n [clearErrors, onCompListingChange, onUndercutChange]\n );\n\n return {\n setValue,\n updateInput,\n canSetPrice,\n canAutoPrice,\n uiCurrency,\n currencyNumberFormat,\n showAutoPricingSettings: !(listing?.isDeleted || !canSetPrice),\n\n autoPricingEnabled,\n onResetSettings,\n onResetAdvanceSettings,\n setAutoPricingDefaults,\n eventPricingSettings,\n accountPricingSettings,\n event,\n\n ...circuitBreakerSettings,\n ...compListingSettings,\n ...undercutSettings,\n ...outlierSettings,\n\n onUndercutChange,\n onCompListingChange,\n onCircuitBreakerChange,\n onOutlierChange,\n onCompListingSectionIdFilterChange,\n onCompListingSectionZoneChange,\n onCompListingModeChange,\n\n skipAdvancePricing,\n skipAutoPricing,\n skipCompListing,\n skipUndercut,\n hasChanges,\n };\n};\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { vars } from 'src/core/themes';\nimport {\n AutoPricingSettingsCollectionInput,\n AutoPricingStrategyDialog,\n AutoPricingStrategyDialogProps,\n} from 'src/dialogs/AutoPricingStrategyDialog';\nimport { useAutoPricingStrategies } from 'src/hooks/api/useAutoPricingStrategies';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { DetailGroup, DetailSection, SectionContent } from 'src/modals/common';\nimport { useHasListingPricePermissions } from 'src/modals/ListingDetails/components/useHasListingPricePermissions';\nimport { EditIcon, IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n AutoPricingSettingsCollection,\n Listing,\n ListingDetailsAutoPricingSectionUpdates,\n} from 'src/WebApiController';\n\nimport { useAutoPricingSettings } from '../useAutoPricingSettings';\n\nexport const AutoPricingStrategySection = ({\n listing,\n disabled,\n isMarketListingsView = false,\n}: {\n listing?: Listing | null;\n disabled?: boolean;\n isMarketListingsView?: boolean;\n}) => {\n const {\n openDialog: openAutoPricingStrategyDialog,\n closeDialog: closeAutoPricingStrategyDialog,\n } = useDialog(\n DialogId.AutoPricingStrategy,\n AutoPricingStrategyDialog\n );\n const { canAutoPrice } = useHasListingPricePermissions(listing, false);\n\n const isMobile = useMatchMedia('mobile');\n\n const { setValue, watch } =\n useFormContext();\n const { autoPricingStrategiesQuery } = useAutoPricingStrategies(listing);\n\n const {\n autoPricingEnabled,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingQuantityScoreAdjustmentEnabled,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n } = watch();\n\n const {\n onUndercutChange,\n onCompListingChange,\n onCircuitBreakerChange,\n onOutlierChange,\n } = useAutoPricingSettings(listing);\n\n const [selectedAutoPricingStrategyId, setSelectedAutoPricingStrategyId] =\n useState(null);\n\n const keyOptionsContent = useMemo(() => {\n return (\n autoPricingStrategiesQuery.data?.reduce(\n (re, r) => {\n re[r.autoPricingSettingsCollectionId?.toString() ?? ''] =\n r.strategyName;\n return re;\n },\n {} as Record\n ) ?? {}\n );\n }, [autoPricingStrategiesQuery.data]);\n\n useEffect(() => {\n const autoPricingStrategy = autoPricingStrategiesQuery.data?.find(\n (r) => r.autoPricingSettingsCollectionId === selectedAutoPricingStrategyId\n );\n\n if (selectedAutoPricingStrategyId) {\n if (!autoPricingStrategy) {\n // On strategy delete, reset the form\n setSelectedAutoPricingStrategyId(null);\n } else {\n // on strategy change, apply the settings to the form\n applyAutoPricingStrategy(autoPricingStrategy);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [autoPricingStrategiesQuery.data]);\n\n const applyAutoPricingStrategy = useCallback(\n (autoPricingStrategy: AutoPricingSettingsCollection) => {\n // Apply the settings to the form\n setValue('autoPricingEnabled', true);\n setValue('skipAutoPricing', false);\n setValue('skipAdvancePricing', false);\n setValue('skipCompListing', false);\n setValue('skipUndercut', false);\n\n onUndercutChange(\n autoPricingStrategy.undercutMode,\n autoPricingStrategy.undercutAbsoluteAmount,\n autoPricingStrategy.undercutRelativeAmount\n );\n onCompListingChange({\n compListingModeNew: autoPricingStrategy.compListingMode,\n compListingFloorNew: autoPricingStrategy.compListingFloor,\n compListingCeilingNew: autoPricingStrategy.compListingCeiling,\n compListingOnlyForSameZoneEnabledNew:\n autoPricingStrategy.compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabledNew:\n autoPricingStrategy.compListingOnlyForSelectedSectionsEnabled,\n compListingQuantityScoreAdjustmentEnabledNew:\n autoPricingStrategy.compListingQuantityScoreAdjustmentEnabled,\n compListingExcludeFanInventoryNew:\n autoPricingStrategy.compListingExcludeFanInventory,\n compListingQuantityScoreAdjustmentOverrideJsonNew:\n autoPricingStrategy.compListingQuantityScoreAdjustmentOverrideJson,\n });\n onCircuitBreakerChange(\n autoPricingStrategy.circuitBreakerRelativeCeiling,\n autoPricingStrategy.circuitBreakerRelativeFloor,\n autoPricingStrategy.circuitBreakerMaxDiscountVelocityPercent,\n autoPricingStrategy.circuitBreakerMaxDiscountVelocityTicksInHours,\n autoPricingStrategy.circuitBreakerMinCompListingCount\n );\n onOutlierChange({\n outlierModeNew: autoPricingStrategy.outlierMode,\n outlierStandardDeviationsNew:\n autoPricingStrategy.outlierStandardDeviations,\n outlierKthLowestLimitNew: autoPricingStrategy.outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacingNew:\n autoPricingStrategy.outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacingNew:\n autoPricingStrategy.outlierKthLowestLimitAbsoluteSpacing,\n });\n\n setSelectedAutoPricingStrategyId(\n autoPricingStrategy.autoPricingSettingsCollectionId\n );\n },\n [\n onCircuitBreakerChange,\n onCompListingChange,\n onOutlierChange,\n onUndercutChange,\n setValue,\n ]\n );\n\n const onAutoPricingStrategyChange = useCallback(\n (value: string) => {\n if (!value) return;\n\n const autoPricingStrategy = autoPricingStrategiesQuery.data?.find(\n (r) => r.autoPricingSettingsCollectionId === parseInt(value, 10)\n );\n if (!autoPricingStrategy) {\n return;\n }\n\n applyAutoPricingStrategy(autoPricingStrategy);\n },\n [applyAutoPricingStrategy, autoPricingStrategiesQuery.data]\n );\n\n const currentValueEqualsSelectedStrategy = useMemo(() => {\n const autoPricingStrategy = autoPricingStrategiesQuery.data?.find(\n (r) => r.autoPricingSettingsCollectionId === selectedAutoPricingStrategyId\n );\n\n if (!autoPricingStrategy) return true;\n\n return (\n autoPricingEnabled === true &&\n autoPricingStrategy &&\n (autoPricingStrategy.undercutMode == null ||\n autoPricingStrategy.undercutMode === undercutMode) &&\n (autoPricingStrategy.undercutAbsoluteAmount == null ||\n autoPricingStrategy.undercutAbsoluteAmount ===\n undercutAbsoluteAmount) &&\n (autoPricingStrategy.undercutRelativeAmount == null ||\n autoPricingStrategy.undercutRelativeAmount ===\n undercutRelativeAmount) &&\n (autoPricingStrategy.compListingMode == null ||\n autoPricingStrategy.compListingMode === compListingMode) &&\n (autoPricingStrategy.compListingFloor == null ||\n autoPricingStrategy.compListingFloor === compListingFloor) &&\n (autoPricingStrategy.compListingCeiling == null ||\n autoPricingStrategy.compListingCeiling === compListingCeiling) &&\n (autoPricingStrategy.compListingQuantityScoreAdjustmentEnabled == null ||\n autoPricingStrategy.compListingQuantityScoreAdjustmentEnabled ===\n compListingQuantityScoreAdjustmentEnabled) &&\n (autoPricingStrategy.compListingOnlyForSameZoneEnabled == null ||\n autoPricingStrategy.compListingOnlyForSameZoneEnabled ===\n compListingOnlyForSameZoneEnabled) &&\n (autoPricingStrategy.compListingOnlyForSelectedSectionsEnabled == null ||\n autoPricingStrategy.compListingOnlyForSelectedSectionsEnabled ===\n compListingOnlyForSelectedSectionsEnabled) &&\n (autoPricingStrategy.compListingExcludeFanInventory == null ||\n autoPricingStrategy.compListingExcludeFanInventory ===\n compListingExcludeFanInventory) &&\n (autoPricingStrategy.circuitBreakerRelativeCeiling == null ||\n autoPricingStrategy.circuitBreakerRelativeCeiling ===\n circuitBreakerRelativeCeiling) &&\n (autoPricingStrategy.circuitBreakerRelativeFloor == null ||\n autoPricingStrategy.circuitBreakerRelativeFloor ===\n circuitBreakerRelativeFloor) &&\n (autoPricingStrategy.circuitBreakerMaxDiscountVelocityPercent == null ||\n autoPricingStrategy.circuitBreakerMaxDiscountVelocityPercent ===\n circuitBreakerMaxDiscountVelocityPercent) &&\n (autoPricingStrategy.circuitBreakerMaxDiscountVelocityTicksInHours ==\n null ||\n autoPricingStrategy.circuitBreakerMaxDiscountVelocityTicksInHours ===\n circuitBreakerMaxDiscountVelocityTicksInHours) &&\n (autoPricingStrategy.circuitBreakerMinCompListingCount == null ||\n autoPricingStrategy.circuitBreakerMinCompListingCount ===\n circuitBreakerMinCompListingCount) &&\n (autoPricingStrategy.outlierMode == null ||\n autoPricingStrategy.outlierMode === outlierMode) &&\n (autoPricingStrategy.outlierStandardDeviations == null ||\n autoPricingStrategy.outlierStandardDeviations ===\n outlierStandardDeviations) &&\n (autoPricingStrategy.outlierKthLowestLimit == null ||\n autoPricingStrategy.outlierKthLowestLimit === outlierKthLowestLimit) &&\n (autoPricingStrategy.outlierKthLowestLimitRelativeSpacing == null ||\n autoPricingStrategy.outlierKthLowestLimitRelativeSpacing ===\n outlierKthLowestLimitRelativeSpacing) &&\n (autoPricingStrategy.outlierKthLowestLimitAbsoluteSpacing == null ||\n autoPricingStrategy.outlierKthLowestLimitAbsoluteSpacing ===\n outlierKthLowestLimitAbsoluteSpacing)\n );\n }, [\n autoPricingEnabled,\n autoPricingStrategiesQuery.data,\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n compListingCeiling,\n compListingFloor,\n compListingMode,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingQuantityScoreAdjustmentEnabled,\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n selectedAutoPricingStrategyId,\n undercutAbsoluteAmount,\n undercutMode,\n undercutRelativeAmount,\n ]);\n\n const isStrategyApplied =\n currentValueEqualsSelectedStrategy && selectedAutoPricingStrategyId;\n\n const defaultValuesForStrategy = useMemo(() => {\n const autoPricingStrategy = isStrategyApplied\n ? autoPricingStrategiesQuery.data?.find(\n (r) =>\n r.autoPricingSettingsCollectionId === selectedAutoPricingStrategyId\n )\n : undefined;\n\n return {\n autoPricingSettingsCollectionId:\n autoPricingStrategy?.autoPricingSettingsCollectionId,\n strategyName: autoPricingStrategy?.strategyName,\n\n skipAutoPricing: false,\n skipAdvancePricing: false,\n skipCompListing: false,\n skipUndercut: false,\n\n autoPricingEnabled,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingQuantityScoreAdjustmentEnabled,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n } as AutoPricingSettingsCollectionInput;\n }, [\n autoPricingEnabled,\n autoPricingStrategiesQuery.data,\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n compListingCeiling,\n compListingFloor,\n compListingMode,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingQuantityScoreAdjustmentEnabled,\n isStrategyApplied,\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n selectedAutoPricingStrategyId,\n undercutAbsoluteAmount,\n undercutMode,\n undercutRelativeAmount,\n ]);\n\n if (!canAutoPrice && !isMarketListingsView) {\n return null;\n }\n\n const sectionContent = (\n \n \n e.stopPropagation()}\n />\n \n \n \n ) : (\n \n )\n }\n textContentId={\n isStrategyApplied\n ? isMarketListingsView\n ? ContentId.Edit\n : ContentId.EditPricingStrategy\n : ContentId.CreatePricingStrategy\n }\n onClick={() =>\n openAutoPricingStrategyDialog({\n defaultValues: defaultValuesForStrategy,\n listing: listing!,\n isLoading: autoPricingStrategiesQuery.isLoading,\n onClosed: closeAutoPricingStrategyDialog,\n onStrategyUpdated: (strategyId: number) => {\n if (strategyId !== selectedAutoPricingStrategyId) {\n // An insert\n setSelectedAutoPricingStrategyId(strategyId);\n onAutoPricingStrategyChange(strategyId.toString());\n }\n closeAutoPricingStrategyDialog();\n },\n isBulkEdit: false,\n listingHasParent: false,\n disabled,\n })\n }\n disabled={disabled}\n style={{ padding: 0, textAlign: 'start' }}\n />\n \n \n );\n\n return (\n <>\n {isMarketListingsView ? (\n sectionContent\n ) : (\n }>\n {sectionContent}\n \n )}\n \n );\n};\n","import { ChangeEvent, useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport {\n AutoPricingSettingsFormContent,\n AutoPricingSettingsFormContentCoreProps,\n PricingSetting,\n} from 'src/components/AutoPricing/AutoPricingSettingsFormContent/AutoPricingSettingsFormContent';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { Stack, Switch } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getAllInPriceFromListPrice,\n getListPriceFromAllinPrice,\n} from 'src/utils/inventoryUtils';\nimport {\n Listing,\n ListingDetailsAutoPricingSectionUpdates,\n UiCurrency,\n} from 'src/WebApiController';\n\nimport * as styles from './ListingAutoPricingSettingsFormContent.css';\n\nexport type ListingAutoPricingSettingsFormContentProps =\n AutoPricingSettingsFormContentCoreProps & {\n listing: Listing | null | undefined;\n isGlobalEdit: boolean | undefined;\n sellerFee: number | null | undefined;\n autoPricingStrategySection?: React.ReactNode;\n };\n\nexport const ListingAutoPricingSettingsFormContent = ({\n listing,\n disabled,\n sellerFee,\n autoPricingStrategySection,\n ...rest\n}: ListingAutoPricingSettingsFormContentProps) => {\n const { watch, setValue } =\n useFormContext();\n\n const { autoPricingEnabled } = watch();\n\n return (\n <>\n \n {autoPricingStrategySection && (\n }\n detail={autoPricingStrategySection}\n />\n )}\n\n }\n detail={\n e.stopPropagation()}\n onCheckedChange={(isChecked: boolean) => {\n if (isChecked !== autoPricingEnabled) {\n setValue('autoPricingEnabled', isChecked);\n }\n }}\n />\n }\n />\n \n }\n pricingProtectionSectionChildren={\n \n }\n {...rest}\n />\n \n );\n};\n\nconst PricingProtectionSettings = ({\n listing,\n sellerFee,\n uiCurrency,\n disabled,\n}: {\n listing: Listing | null | undefined;\n sellerFee: number | null | undefined;\n uiCurrency: UiCurrency;\n disabled: boolean;\n}) => {\n const { watch, setValue } =\n useFormContext();\n\n const { netProceedsFloor, netProceedsCeiling } = watch();\n\n const allInFloor = useMemo(() => {\n return getAllInPriceFromListPrice(netProceedsFloor, listing, sellerFee);\n }, [listing, netProceedsFloor, sellerFee]);\n const allInCeiling = useMemo(() => {\n return getAllInPriceFromListPrice(netProceedsCeiling, listing, sellerFee);\n }, [listing, netProceedsCeiling, sellerFee]);\n\n const onPriceValueChange = useCallback(\n (\n e: ChangeEvent,\n valueName: 'netProceedsFloor' | 'netProceedsCeiling'\n ) => {\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n const netProceedsValueNew = getListPriceFromAllinPrice(\n v,\n listing,\n sellerFee\n )!;\n setValue(valueName, netProceedsValueNew);\n } else {\n setValue(valueName, null);\n }\n },\n [listing, sellerFee, setValue]\n );\n\n return (\n <>\n }\n detail={\n \n \n onPriceValueChange(e, 'netProceedsFloor')}\n />\n \n
    \n \n
    \n \n onPriceValueChange(e, 'netProceedsCeiling')}\n />\n \n
    \n }\n />\n \n );\n};\n","import { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { Button, Stack } from 'src/core/ui';\nimport { useListingHasVenueMapInfo } from 'src/hooks/useListingHasVenueMapInfo';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ListingTab } from 'src/modals/ListingDetails/components/listingDetailsUtils';\nimport { useHasListingPricePermissions } from 'src/modals/ListingDetails/components/useHasListingPricePermissions';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getCompleteEventConfigScoreOverrides } from 'src/utils/seatScoreUtils';\nimport { Feature, Listing, Marketplace } from 'src/WebApiController';\n\nimport { AutoPricingStrategySection } from '../../Sections/AutoPricingStrategySection';\nimport { ListingAutoPricingSettingsFormContent } from '../ListingAutoPricingSettingsFormContent/ListingAutoPricingSettingsFormContent';\n\nexport const ListingAutoPricingSettingsFormContentWrapper = ({\n listing,\n isBulkEdit,\n isGlobalEdit,\n disabled,\n onSwitchToTab,\n}: {\n listing: Listing | null | undefined;\n isBulkEdit?: boolean;\n isGlobalEdit?: boolean;\n disabled: boolean;\n onSwitchToTab?: (tabName: ListingTab) => void;\n}) => {\n const { loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n const stubHubMkpSettings =\n loginContext?.user?.activeAccount?.marketplaceSettings?.find(\n (m) => m.mkp === Marketplace.StubHub\n );\n\n const uiCurrency = useMemo(\n () =>\n getUiCurrency(\n listing?.currency ?? loginContext?.user?.activeAccount?.currencyCode\n ),\n [\n getUiCurrency,\n listing?.currency,\n loginContext?.user?.activeAccount?.currencyCode,\n ]\n );\n\n const { canAutoPrice } = useHasListingPricePermissions(listing, isBulkEdit);\n const { hasVenueMapInfo, mapExists } = useListingHasVenueMapInfo(listing);\n\n const { activeConfigOverride, venueMapInfo, venueMapsByScoreModelQuery } =\n useEventMapContext();\n\n const defaultScoreOverrides = useMemo(() => {\n // In the backend, if AVG scores are missing, then we always fallback to MVG, even if AVG is explicitly selected\n return (\n venueMapsByScoreModelQuery?.data?.AdvancedVenueGeometry?.sectionScores ??\n venueMapsByScoreModelQuery?.data?.MergedVenueGeometry?.sectionScores ??\n venueMapsByScoreModelQuery?.data?.VenueGeometry?.sectionScores\n );\n }, [\n venueMapsByScoreModelQuery?.data?.AdvancedVenueGeometry?.sectionScores,\n venueMapsByScoreModelQuery?.data?.MergedVenueGeometry?.sectionScores,\n venueMapsByScoreModelQuery?.data?.VenueGeometry?.sectionScores,\n ]);\n\n const scores = getCompleteEventConfigScoreOverrides(\n defaultScoreOverrides,\n activeConfigOverride?.scoreOverrides,\n false\n );\n\n const hasAllowSeatScoreCompListingModeFeature = useUserHasFeature(\n Feature.AllowSeatScoreCompListingMode\n );\n\n return (isBulkEdit || hasVenueMapInfo) && canAutoPrice ? (\n s.score))}\n sellerFee={stubHubMkpSettings?.sellerFee}\n uiCurrency={uiCurrency}\n allowSeatScoreCompListingMode={hasAllowSeatScoreCompListingModeFeature}\n isGlobalEdit={isGlobalEdit}\n disabled={disabled}\n autoPricingStrategySection={\n \n }\n />\n ) : (\n \n {!canAutoPrice ? (\n \n ) : mapExists && !hasVenueMapInfo ? (\n <>\n \n\n onSwitchToTab?.(ListingTab.Broadcast)}\n style={{ width: 'max-content', padding: '0' }}\n >\n \n \n \n ) : (\n \n )}\n \n );\n};\n","import { useUserHasAutopricingFeature } from 'src/hooks/useUserHasAutopricingFeature';\nimport { AutoPricingSection } from 'src/modals/ListingDetails/components/PricingSection/AutoPricingSection';\nimport { ListingAutoPricingSettingsFormContentWrapper } from 'src/modals/ListingDetails/ListingForms/AutoPricingForm/components/ListingAutoPricingSettingsFormContentWrapper/ListingAutoPricingSettingsFormContentWrapper';\nimport { Feature } from 'src/WebApiController';\n\nexport const AutoPricingSettings = ({\n isLoading,\n hasParents,\n isGlobalEdit,\n}: {\n isLoading?: boolean;\n hasParents?: boolean;\n isGlobalEdit?: boolean;\n}) => {\n const hasIntelligibleAutoPricingSettingsFeature =\n useUserHasAutopricingFeature(Feature.IntelligibleAutoPricingSettings);\n\n return (\n <>\n {hasIntelligibleAutoPricingSettingsFeature ? (\n \n ) : (\n \n )}\n \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DetailSection } from 'src/modals/common';\nimport { ListingNotesSection } from 'src/modals/common/ListingNotesSection';\nimport {\n DeliverySection,\n EconomicsSection,\n TicketsSection,\n} from 'src/modals/ListingDetails/components';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n Event,\n ListingDetails,\n ListingDetailsUpdateInput,\n} from 'src/WebApiController';\n\nexport const GeneralSettings = ({\n event,\n isLoading,\n}: {\n listing?: ListingDetails | undefined;\n event?: Event;\n isLoading?: boolean;\n}) => {\n const { watch } = useFormContext();\n\n return (\n <>\n \n\n \n\n \n \n );\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useMemo, useRef, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { EventMapContextProvider } from 'src/contexts/EventMapContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { useGetAccountAutoPricingSettings } from 'src/hooks/useGetAccountAutoPricingSettings';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { flattenListingGroup } from 'src/modals/GroupListings/components/groupingUtils';\nimport { validateAutoPricingSettings } from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getListingDetailsUpdateInput,\n isListingDetailsInputChanged,\n} from 'src/utils/inventoryUtils';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n Event,\n Feature,\n Listing,\n ListingDetails,\n ListingDetailsUpdateInput,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\nimport { AutoPricingSettings } from './components/AutoPricingSettings';\nimport { GeneralSettings } from './components/GeneralSettings';\n\nexport type BulkEditListingSettingsDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n isLoading?: boolean;\n listings?: Listing[] | null;\n selectedListingIds?: number[];\n event?: Event;\n onOkay: (\n listing: ListingDetailsUpdateInput | null,\n hasPurchaseUpdate: boolean,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel?: () => void;\n bulkEditMode: 'autoPricing' | 'general';\n};\n\nexport const BulkEditListingSettingsDialog = ({\n listings,\n ...rest\n}: BulkEditListingSettingsDialogProps) => {\n const methods = useForm({\n defaultValues: getListingDetailsUpdateInput(\n null,\n null,\n [],\n null,\n null,\n true\n ),\n });\n\n return (\n \n \n \n );\n};\n\nfunction BulkEditListingSettingsDialogContent({\n updateKey,\n isLoading,\n listings,\n bulkEditMode,\n selectedListingIds,\n event,\n onOkay,\n onCancel,\n handleSubmit,\n getValues,\n clearErrors,\n setError,\n setValue,\n watch,\n reset,\n formState,\n ...rest\n}: BulkEditListingSettingsDialogProps &\n Omit<\n ComponentProps>,\n 'children'\n >) {\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n\n const hasAllowSeatScoreCompListingModeFeature = useUserHasFeature(\n Feature.AllowSeatScoreCompListingMode\n );\n\n const { pricingSettings } = useGetAccountAutoPricingSettings();\n\n const input = watch();\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n await refreshExpandedListItems();\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel?.();\n },\n [\n onCancel,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, stage, preview, initJob } = useBulkEditHub(\n ActionOutboxEntityType.Listing,\n bulkEditMode === 'autoPricing'\n ? BulkActionType.UpdateAutoPricingSettings\n : BulkActionType.UpdateGeneralSettings,\n updateKey,\n onBulkEditDone\n );\n\n const selectedListings = useMemo(() => {\n const flattenedListings = listings?.flatMap((l) => flattenListingGroup(l));\n return flattenedListings\n ?.filter((l) => l.isFull && selectedListingIds?.includes(l.id))\n .map((l) => l as Listing);\n }, [listings, selectedListingIds]);\n\n const hasParents = useMemo(() => {\n return selectedListings?.every((l) => !!l.ltGrpParentId);\n }, [selectedListings]);\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const floorMustBeLessThanCeilingError = useContent(\n ContentId.FloorMustBeLessThanCeiling\n );\n\n const compListingFloorCeilingError = useContent(\n ContentId.CompListingFloorMustLessThanCeiling\n );\n\n const requiredMsg = useContent(ContentId.Required);\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n const listForm = getValues();\n if (\n !validateAutoPricingSettings(\n clearErrors,\n setError,\n setValue,\n listForm,\n floorMustBeLessThanCeilingError,\n compListingFloorCeilingError,\n requiredMsg\n )\n )\n return;\n\n if (onPreviewReceived) {\n const hasPurchaseUpdate = listForm.buyerUserId != null;\n onOkay(null, hasPurchaseUpdate, false, onPreviewReceived);\n } else {\n handleSubmit((i) =>\n onOkay(\n i,\n i.buyerUserId != null,\n hasBackgroundBulkEditFeature,\n undefined,\n preview\n )\n )();\n }\n },\n [onOkay, preview, hasBackgroundBulkEditFeature]\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const isInputValid = useMemo(() => {\n return isListingDetailsInputChanged(\n input,\n formState.defaultValues as ListingDetailsUpdateInput\n );\n }, [input, formState.defaultValues]);\n\n const submittButtonRef = useRef(null);\n\n return (\n <>\n \n }\n />\n }\n onOpened={() => {\n reset(\n getListingDetailsUpdateInput(\n null,\n null,\n [],\n pricingSettings,\n null,\n true,\n null,\n hasAllowSeatScoreCompListingModeFeature\n )\n );\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter' && isInputValid) {\n submittButtonRef.current.click();\n }\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n {bulkEditMode === 'autoPricing' && (\n \n )}\n {bulkEditMode === 'general' && (\n \n )}\n \n \n \n \n \n );\n}\n","import { useBulkPricingActionsPermissions } from 'src/components/common/BulkActions/BulkPricingActions/useBulkPricingActionsPermissions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const LaunchUpdateListingSettings = ({\n onClick,\n disabled,\n bulkEditMode,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n\n bulkEditMode: 'general' | 'autoPricing';\n}) => {\n const {\n hasUpdateListingPermission,\n hasAutoPricingFeature,\n hasEditPricingPermission,\n } = useBulkPricingActionsPermissions();\n\n if (bulkEditMode === 'general' && !hasUpdateListingPermission) {\n return null;\n }\n\n if (\n bulkEditMode === 'autoPricing' &&\n (!hasAutoPricingFeature || !hasEditPricingPermission)\n ) {\n return null;\n }\n\n return (\n \n {bulkEditMode === 'general' ? (\n \n \n \n ) : (\n \n )}\n \n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport {\n BulkEditListingSettingsDialog,\n BulkEditListingSettingsDialogProps,\n} from 'src/dialogs/BulkEdits/BulkEditListingSettingsDialog';\nimport { flattenListingGroup } from 'src/modals/GroupListings/components/groupingUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditListingClient,\n BulkEditPreviewWithDetails,\n Event,\n Listing,\n ListingDetails,\n ListingDetailsUpdateInput,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport {\n INVENTORY_BULK_UPDATE_AUTOPRICING_SETTINGS_UPDATE_KEY,\n INVENTORY_BULK_UPDATE_GENERAL_SETTINGS_UPDATE_KEY,\n} from '../../InventoryActionDropdown.constants';\nimport { LaunchUpdateListingSettings } from './LaunchUpdateListingSettings';\n\nexport const useBulkUpdateListingSettings = (\n bulkEditMode: 'general' | 'autoPricing',\n filterQueryWithEventIds: ListingQuery,\n affectedVisibleListingIds: number[],\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n event?: Event\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const updateKey =\n bulkEditMode === 'general'\n ? event\n ? `listingSettings-event-${event?.viagVirtualId}`\n : INVENTORY_BULK_UPDATE_GENERAL_SETTINGS_UPDATE_KEY\n : event\n ? `autopricingSettings-event-${event?.viagVirtualId}`\n : INVENTORY_BULK_UPDATE_AUTOPRICING_SETTINGS_UPDATE_KEY;\n\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const {\n eventsTransformed,\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const { openDialog: openBulkEditDialog, closeDialog: closeBulkEditDialog } =\n useDialog(\n DialogId.BulkEditListingSettings,\n BulkEditListingSettingsDialog\n );\n\n const onSubmit = useCallback(\n (\n listingUpdate: ListingDetailsUpdateInput | null,\n hasPurchaseUpdate: boolean,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n tryInvokeApi(\n async () => {\n const client = await new BulkEditListingClient(\n activeAccountWebClientConfig\n );\n const preview =\n bulkEditMode === 'general'\n ? await client.bulkUpdateGeneralSettingsPreview(\n filterQueryWithEventIds,\n hasPurchaseUpdate\n )\n : await client.bulkUpdateAutoPricingSettingsPreview(\n filterQueryWithEventIds\n );\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateGeneralSettingsPreview', error, {\n trackErrorData: {\n filterQueryWithEventIds,\n hasPurchaseUpdate,\n bulkEditMode,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (listingUpdate) {\n tryInvokeApi(\n async () => {\n const client = await new BulkEditListingClient(\n activeAccountWebClientConfig\n );\n const input = {\n item1: preview!.preview,\n item2: listingUpdate,\n };\n\n const succeeded =\n bulkEditMode === 'general'\n ? await client.bulkUpdateGeneralSettings(\n input,\n updateKey,\n supportBackgroundProcess\n )\n : await client.bulkUpdateAutoPricingSettings(\n input,\n updateKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on listingDetails\n // we force re-loading the listing and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n\n closeBulkEditDialog();\n }\n },\n (error) => {\n showErrorDialog(\n bulkEditMode === 'general'\n ? 'bulkUpdateGeneralSettings'\n : 'bulkUpdateAutoPricingSettings',\n error,\n {\n trackErrorData: {\n listingUpdate,\n preview,\n hasPurchaseUpdate,\n bulkEditMode,\n },\n }\n );\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n bulkEditMode,\n closeBulkEditDialog,\n filterQueryWithEventIds,\n refreshExpandedListItems,\n setActivePosEntity,\n setIsLoading,\n showErrorDialog,\n updateKey,\n ]\n );\n\n const listings = useMemo(() => {\n return (eventsTransformed ?? [])\n .flatMap((ev) => ev.entities.listings)\n .flatMap(flattenListingGroup)\n .filter(({ id, isLtGrp }) => id > 0 && !isLtGrp) as Listing[];\n }, [eventsTransformed]);\n\n const openDialog = () => {\n openBulkEditDialog({\n event: event,\n updateKey: updateKey,\n isLoading: isLoading,\n listings: listings,\n selectedListingIds: affectedVisibleListingIds,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n bulkEditMode: bulkEditMode,\n });\n };\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n openDialog();\n }}\n disabled={isLoading}\n bulkEditMode={bulkEditMode}\n />\n ),\n openDialog: openDialog,\n };\n};\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useInventoryEventBulkActionsState } from 'src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/useInventoryEventBulkActionsState';\nimport { useBulkUpdateListingSettings } from 'src/components/Listings/InventoryActionDropdown/components/BulkUpdateListingSettingsAction';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n MultiSelectScope,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ContentIds } from 'src/utils/constants/contentIdDataMap';\nimport { COMMAND_OPTION_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { EventWithData } from 'src/WebApiController';\n\nimport * as styles from './CommandMenu.css';\n\ninterface CommandMenuProps {\n groupId: string;\n event: EventWithData['event'];\n}\n\nexport enum CommandOptionType {\n ToggleSelectionMode = 'toggle-selection-mode',\n SelectAll = 'select-all',\n AutoPricingSettings = 'auto-pricing-settings',\n}\n\nconst CommandMenu = ({ groupId, event }: CommandMenuProps) => {\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState('');\n const [selectedIndex, setSelectedIndex] = useState(0);\n const dialogRef = useRef(null);\n const inputRef = useRef(null);\n\n const { toggleGroup, selectionMode, setSelectionMode, getSelection } =\n useMultiSelectionContext();\n\n const listingSelection = getSelection(groupId);\n\n const onToggleSelectionModeClick = useCallback(\n (e?: React.MouseEvent) => {\n e?.stopPropagation();\n\n if (listingSelection.isSingleGroupMultiSelect) {\n setSelectionMode();\n } else {\n setSelectionMode({\n mode: MultiSelectScope.SingleGroup,\n groupId,\n });\n }\n },\n [groupId, listingSelection.isSingleGroupMultiSelect, setSelectionMode]\n );\n\n const onSelectAllClick = useCallback(() => {\n toggleGroup(groupId);\n }, [groupId, toggleGroup]);\n\n const { affectedVisibleListingIds, filterQueryWithEventIds } =\n useInventoryEventBulkActionsState(event);\n\n const [isLoading, setIsLoading] = useState(false);\n\n const bulkEditAutoPricingSettings = useBulkUpdateListingSettings(\n 'autoPricing',\n filterQueryWithEventIds,\n affectedVisibleListingIds,\n setIsLoading,\n isLoading,\n event\n );\n\n const filteredCommandOptions = useMemo(() => {\n const commandOptions = [\n {\n label: (\n \n ),\n id: CommandOptionType.ToggleSelectionMode,\n searchText: `${\n ContentIds[\n COMMAND_OPTION_TYPE_TO_CID[CommandOptionType.ToggleSelectionMode]\n ].defaultValue\n }`,\n },\n {\n label: (\n \n ),\n id: CommandOptionType.SelectAll,\n searchText: `${\n ContentIds[COMMAND_OPTION_TYPE_TO_CID[CommandOptionType.SelectAll]]\n .defaultValue\n }`,\n },\n ];\n\n return commandOptions.filter((option) =>\n option.searchText.toString().toLowerCase().includes(search.toLowerCase())\n );\n }, [search]);\n\n const filteredSettingOptions = useMemo(() => {\n const settingOptions = [\n {\n label: (\n \n ),\n id: CommandOptionType.AutoPricingSettings,\n searchText: `${\n ContentIds[\n COMMAND_OPTION_TYPE_TO_CID[CommandOptionType.AutoPricingSettings]\n ].defaultValue\n }`,\n },\n ];\n\n return settingOptions.filter((option) =>\n option.searchText.toString().toLowerCase().includes(search.toLowerCase())\n );\n }, [search]);\n\n const combinedOptions = useMemo(\n () => [...filteredCommandOptions, ...filteredSettingOptions],\n [filteredCommandOptions, filteredSettingOptions]\n );\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if ((event.metaKey || event.ctrlKey) && event.key === 'k') {\n event.preventDefault();\n setOpen((prev) => !prev);\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, []);\n\n const handleOptionSelect = useCallback(\n (option: {\n label: JSX.Element;\n id: CommandOptionType;\n searchText: string;\n }) => {\n setOpen((prev) => !prev);\n\n if (option.id === CommandOptionType.ToggleSelectionMode) {\n onToggleSelectionModeClick();\n } else if (option.id === CommandOptionType.SelectAll) {\n if (selectionMode == undefined) {\n onToggleSelectionModeClick();\n }\n onSelectAllClick();\n } else if (option.id === CommandOptionType.AutoPricingSettings) {\n bulkEditAutoPricingSettings.openDialog();\n }\n },\n [\n onToggleSelectionModeClick,\n selectionMode,\n onSelectAllClick,\n bulkEditAutoPricingSettings,\n ]\n );\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (!open) {\n return;\n }\n\n if (event.key === 'Escape') {\n setOpen(false); // Close dialog on Escape\n } else if (['ArrowDown', 'ArrowUp', 'Enter'].includes(event.key)) {\n event.preventDefault();\n\n if (event.key === 'ArrowDown') {\n setSelectedIndex((prevIndex) =>\n prevIndex === combinedOptions.length - 1 ? 0 : prevIndex + 1\n );\n } else if (event.key === 'ArrowUp') {\n setSelectedIndex((prevIndex) =>\n prevIndex === 0 ? combinedOptions.length - 1 : prevIndex - 1\n );\n } else if (event.key === 'Enter') {\n handleOptionSelect(combinedOptions[selectedIndex]);\n }\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [open, combinedOptions, selectedIndex, handleOptionSelect]);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dialogRef.current &&\n !dialogRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside);\n } else {\n document.removeEventListener('mousedown', handleClickOutside);\n }\n\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open]);\n\n useEffect(() => {\n if (open && inputRef.current) {\n inputRef.current.focus();\n }\n }, [open]);\n\n return (\n \n {\n setSearch(e.target.value);\n }}\n />\n {filteredCommandOptions.length > 0 && (\n
    \n
    \n \n
    \n \n {filteredCommandOptions.map((option, index) => {\n return (\n setSelectedIndex(index)}\n onClick={() => {\n if (combinedOptions.length === 0) {\n return;\n }\n\n handleOptionSelect(combinedOptions[selectedIndex]);\n }}\n >\n {option.label}\n
    \n );\n })}\n \n \n )}\n\n {filteredSettingOptions.length > 0 && (\n
    \n
    \n \n
    \n \n {filteredSettingOptions.map((option, index) => {\n return (\n \n setSelectedIndex(index + filteredCommandOptions.length)\n }\n onClick={() => {\n if (combinedOptions.length === 0) {\n return;\n }\n\n handleOptionSelect(combinedOptions[selectedIndex]);\n }}\n >\n {option.label}\n
    \n );\n })}\n \n \n )}\n \n );\n};\n\nexport default CommandMenu;\n","/**\n * Used as an enum and the path associated with that enum\n *\n * N.B. Changes here should also reflect in `contentIdMaps.ts` and `AppRoutes.tsx`\n *\n * Planned based on the mocks: (contentIds already generated for these)\n * - Vendors\n * - Automations\n * - Pricing\n * - Venues\n * - Tickets\n */\nexport const enum SettingTab {\n MyAccount = 'my-account',\n UserManagement = 'user-management',\n UserManagement_Users = 'users',\n UserManagement_Roles = 'roles',\n UserManagement_Teams = 'teams',\n SyncCenter = 'sync-center',\n CurrencyConversion = 'currency-conversion',\n PurchaseOrder = 'purchase-order',\n Accounting = 'accounting',\n SellerAccount = 'seller-account', // legacy: will be split out into separate views\n VendorManagement = 'vendor-management',\n VendorManagement_Vendors = 'vendors',\n VendorManagement_Payments = 'payments',\n FulfillmentProviders = 'fulfillment-providers',\n AutoPricing = 'auto-pricing',\n}\n\nexport const SettingsTree: Record = {\n [SettingTab.MyAccount]: '',\n [SettingTab.UserManagement]: '',\n [SettingTab.SyncCenter]: '',\n [SettingTab.AutoPricing]: '',\n [SettingTab.PurchaseOrder]: '',\n [SettingTab.Accounting]: '',\n [SettingTab.SellerAccount]: '',\n [SettingTab.CurrencyConversion]: '',\n [SettingTab.UserManagement_Users]: SettingTab.UserManagement + '/',\n [SettingTab.UserManagement_Roles]: SettingTab.UserManagement + '/',\n [SettingTab.UserManagement_Teams]: SettingTab.UserManagement + '/',\n [SettingTab.VendorManagement]: '',\n [SettingTab.VendorManagement_Vendors]: SettingTab.VendorManagement + '/',\n [SettingTab.VendorManagement_Payments]: SettingTab.VendorManagement + '/',\n [SettingTab.FulfillmentProviders]: '',\n};\n","export enum AdCampaignsTableColumnId {\n Name = 'name',\n State = 'state',\n Budget = 'budget',\n StartDateTime = 'startDateTime',\n EndDateTime = 'endDateTime',\n AdSpend = 'adSpend',\n SoldProceeds = 'salesProceeds',\n SoldQty = 'qtySold',\n Actions = 'action',\n}\n","export enum AdGroupsTableColumnId {\n Name = 'name',\n State = 'state',\n BaseBid = 'baseBid',\n MaxBid = 'maxBid',\n DailyBudget = 'dailyBudget',\n Genre = 'genre',\n Performer = 'performer',\n Venue = 'venue',\n TicketClass = 'ticketClass',\n Section = 'section',\n Listing = 'listing',\n Event = 'event',\n BidModifier = 'bidModifier',\n AdSpend = 'adSpend',\n SoldProceeds = 'salesProceeds',\n SoldQty = 'qtySold',\n Actions = 'actions',\n}\n","// Subset of ReportCommissionColumnName from ReportingService\n\nexport enum CommissionReportTableGroupingColumnId {\n SaleId = 'saleId',\n MarketplaceName = 'marketplaceName',\n MarketplaceSaleId = 'marketplaceSaleId',\n Commissioner = 'commissioner',\n EventName = 'eventName',\n EventDateLocal = 'eventDateLocal',\n VenueName = 'venueName',\n EventId = 'eventId',\n EventStateName = 'eventStateName',\n SaleStatusName = 'saleStatusName',\n Section = 'section',\n SeatingRow = 'seatingRow',\n SeatFrom = 'seatFrom',\n SeatTo = 'seatTo',\n FulfillmentDate = 'fulfillmentDate',\n LastPaymentDate = 'lastPaymentDate',\n NetCommissionRate = 'netCommissionRate',\n NetCommissionRateOverride = 'netCommissionRateOverride',\n SaleBasisShare = 'saleBasisShare',\n IsCommissionEligible = 'isCommissionEligible',\n CommissionEligibilityDate = 'commissionEligibilityDate',\n}\n\nexport enum CommissionReportTableValueColumnId {\n TotalNetProceeds = 'totalNetProceeds',\n Credits = 'credits',\n TotalCost = 'totalCost',\n Charges = 'charges',\n CommissionerCostsAndCharges = 'commissionerCostsAndCharges',\n CommissionerProceedsAndCredits = 'commissionerProceedsAndCredits',\n CommissionerProfitAndLoss = 'commissionerProfitAndLoss',\n OriginalProceeds = 'originalProceeds',\n}\n","export enum ReportFilterEditability {\n Hidden = 'hidden',\n View = 'view',\n Edit = 'edit',\n}\n\nexport const DEFAULT_REPORT_FILTER_EDITABILITY = ReportFilterEditability.Hidden;\n\nexport enum ReportPerformerVenueFilterItemId {\n PerformerIds = 'performerIds',\n VenueIds = 'venueIds',\n}\n","import { PriceUpdatedFilterEnum } from 'src/components/Filters/StackedFilter/PriceUpdatedDateStackedFilter';\nimport { SaleDateFilterEnum } from 'src/components/Filters/StackedFilter/SaleDateStackedFilter';\nimport { CommandOptionType } from 'src/components/Listings/InventoryEventPage/CommandMenu/CommandMenu';\nimport { SiteThemeOption } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { vars } from 'src/core/themes';\nimport { RestrictSelectionType } from 'src/modals/ListingDetails/components/PricingSection/AutoPricingSection.types';\nimport { OnSaleEventsTableColumnId } from 'src/navigations/Routes/OnSaleEvent/OnSaleEventView.types';\nimport { SettingTab } from 'src/navigations/Routes/Settings/constants';\nimport { SaleFormulaFields } from 'src/tables/SalesTable/SalesTable.type';\nimport { EventsTableColumnId } from 'src/utils/columns/events/eventsColumnUtils.types';\nimport { MarketplacePaymentsTableColumnId } from 'src/utils/columns/marketplacePayments/marketplacePaymentsColumnsUtils.types';\nimport {\n PurchasesTableColumnId,\n PurchaseTableColumnGroupId,\n} from 'src/utils/columns/purchases/purchasesColumnUtils.types';\nimport {\n SalesReportTableColumnId,\n SalesReportTableGroupingColumnId,\n SalesReportTableValueColumnId,\n SalesTableColumnId,\n SalesTableFlattenedColumnId,\n} from 'src/utils/columns/sales/salesColumnUtils.types';\nimport {\n ActionOutboxEntityType,\n ApiEventStatus,\n AutoPoInboundEmailClassificationType,\n AutoPricingCompListingMode,\n AutoPricingOutlierMode,\n AutoPricingResultType,\n AutoPricingUndercutMode,\n BroadcastErrorCode,\n BucketType,\n DealSplitType,\n DealThresholdSplitDirection,\n DeliveryType,\n EventDemandFactorType,\n EventGroupingType,\n EventTimeFrameFilter,\n EventUnpricedStatus,\n GroupingType,\n InventoryViewMode,\n ListingNoteType,\n ListingStatus,\n Marketplace,\n MarketplaceOperationResultState,\n MarketplacePaymentLineType,\n MarketplacePaymentState,\n MarketplacePaymentTerm,\n NotificationType,\n OnSaleEventViewMode,\n PaymentMethodNameKnownRegex,\n PendingProofState,\n Permission,\n PermissionAccessArea,\n PointOfSaleFulfillmentState,\n PointOfSalePaymentState,\n PointOfSaleSaleStatus,\n PricingFloorCeilingAdjustmentType,\n PurchaseOrderCostType,\n PurchaseOrderState,\n PurchasePaymentMethodType,\n PurchaseViewMode,\n QualityControlState,\n ReportGroupBy,\n ReportWidgetTypesInventory,\n Role,\n RowGroupSetting,\n SaleCancellationReason,\n SaleLineItemChargeReason,\n SaleLineItemCreditReason,\n SalesViewMode,\n SectionGroupAreaType,\n SplitType,\n TagsValueType,\n TicketGroupEditReason,\n TicketType,\n TimePeriodType,\n TopLevelCategory,\n VenueZoneConfigType,\n} from 'src/WebApiController';\n\nimport { AdCampaignsTableColumnId } from '../columns/adCampaigns/adCampaignsColumnUtils.types';\nimport { AdGroupsTableColumnId } from '../columns/adGroups/adGroupsColumnUtils.types';\nimport { CommissionReportTableValueColumnId } from '../columns/commission/commissionColumnUtils.types';\nimport { CommissionReportTableGroupingColumnId } from '../columns/commission/commissionColumnUtils.types';\nimport {\n ListingReportTableColumnId,\n ListingReportTableGroupingColumnId,\n ListingReportTableValueColumnId,\n ListingTableColumnId,\n ListingTableFlattenedColumnId,\n} from '../columns/inventory/inventoryColumnUtils.types';\nimport { ListingFormulaFields } from '../columns/inventory/inventoryCustomColumnUtils';\nimport {\n EventMappingStateFilter,\n EventUiSort,\n LastReviewedSinceDate,\n TextFilterEnum,\n YesNoEnum,\n} from '../eventQueryUtils';\nimport { ReportFilterEditability } from '../reportsFilterUtils';\nimport { ReportTypes } from '../reportsUtils';\nimport { PurchasePaymentStatus } from './../../WebApiController';\nimport { ContentId } from './contentId';\nimport { FormatContentId } from './formatContentId';\n\n// NOTE - the order declared here is the order the items shows up in the drop-down\n\nexport const EVENT_GROUPING_TO_CID: Record = {\n [EventGroupingType.Performer]: ContentId.Performers,\n [EventGroupingType.Venue]: ContentId.Venues,\n};\n\nexport const EVENT_SORT_TO_CID: Record = {\n [EventUiSort.DateDesc]: ContentId.DateDescArrow,\n [EventUiSort.DateAsc]: ContentId.DateAscArrow,\n [EventUiSort.SortAtoZ]: ContentId.AtoZArrow,\n [EventUiSort.SortZtoA]: ContentId.ZtoAArrow,\n};\n\nexport const EVENT_SORT_DATE_ONLY_TO_CID: Record = {\n [EventUiSort.DateDesc]: ContentId.DateDescArrow,\n [EventUiSort.DateAsc]: ContentId.DateAscArrow,\n};\n\nexport const ON_SALE_EVENT_VIEW_MODE_TO_CID: Record = {\n [OnSaleEventViewMode.MetricView]: ContentId.InsightsView,\n};\nexport const INVENTORY_VIEW_MODE_TO_CID: Record = {\n [InventoryViewMode.TileView]: ContentId.TileView,\n [InventoryViewMode.MetricView]: ContentId.InsightsView,\n [InventoryViewMode.FlattenedView]: ContentId.ListView,\n};\nexport const SALES_VIEW_MODE_TO_CID: Record = {\n [SalesViewMode.TileView]: ContentId.TileView,\n [SalesViewMode.FlattenedView]: ContentId.ListView,\n};\nexport const PURCHASE_VIEW_MODE_TO_CID: Record = {\n [PurchaseViewMode.TileView]: ContentId.TimeView,\n [PurchaseViewMode.FlattenedView]: ContentId.ListView,\n [PurchaseViewMode.EventTileView]: ContentId.EventView,\n};\n\nexport const PURCHASE_SORT_TO_CID: Record = {\n [EventUiSort.DateDesc]: ContentId.DateDescArrow,\n [EventUiSort.DateAsc]: ContentId.DateAscArrow,\n};\n\nexport const TIME_PERIOD_TO_CID: Record<\n Exclude,\n ContentId\n> = {\n // [TimePeriodType.Daily]: ContentId.Day, // TODO - Fix how we handle timezones when fetching data\n [TimePeriodType.Weekly]: ContentId.Week,\n [TimePeriodType.Monthly]: ContentId.Month,\n};\n\nexport const CONVERSATION_SORT_TO_CID: Record = {\n [EventUiSort.DateDesc]: ContentId.DateDescArrow,\n [EventUiSort.DateAsc]: ContentId.DateAscArrow,\n};\n\nexport const DEAL_CONFIG_SPLIT_TYPE_TO_CID: Record = {\n [DealSplitType.Sales]: ContentId.Sales,\n [DealSplitType.Quantity]: ContentId.Quantity,\n [DealSplitType.None]: ContentId.NoHurdle,\n};\n\nexport const DEAL_CONFIG_TRESHOLD_SPLIT_DIRECTION_TO_CID: Record<\n string,\n ContentId\n> = {\n [DealThresholdSplitDirection.Above]: ContentId.Above,\n [DealThresholdSplitDirection.Below]: ContentId.Below,\n};\n\n/**\n * Use `getSaleStatusDisplayContentId` for displaying purposes\n */\nexport const SALES_STATUS_TO_CID: Record = {\n [PointOfSaleSaleStatus.PendingConfirmation]: ContentId.PendingConfirmation,\n [PointOfSaleSaleStatus.PendingAllocation]: ContentId.PendingSourcing,\n [PointOfSaleSaleStatus.ProvisionalAllocation]:\n ContentId.ProvisionalAllocation,\n [PointOfSaleSaleStatus.PendingFulfillment]: ContentId.PendingFulfillment,\n [PointOfSaleSaleStatus.PendingReshipment]: ContentId.PendingReshipment,\n [PointOfSaleSaleStatus.ProcessingFulfillment]:\n ContentId.ProcessingFulfillment,\n [PointOfSaleSaleStatus.Fulfilled]: ContentId.Fulfilled,\n [PointOfSaleSaleStatus.FulfillmentFailed]: ContentId.FulfillmentFailed,\n [PointOfSaleSaleStatus.PendingRejection]: ContentId.Rejected,\n [PointOfSaleSaleStatus.Rejected]: ContentId.Cancelled,\n [PointOfSaleSaleStatus.Hold]: ContentId.Hold,\n [PointOfSaleSaleStatus.CancelledHold]: ContentId.CancelledHold,\n [PointOfSaleSaleStatus.Wasted]: ContentId.Wasted,\n};\n\nexport const SETTINGS_VIEWS_TO_CONTENT_ID_MAP: Record = {\n [SettingTab.MyAccount]: ContentId.MyAccount,\n [SettingTab.UserManagement]: ContentId.UserManagement,\n [SettingTab.UserManagement_Users]: ContentId.Users,\n [SettingTab.UserManagement_Roles]: ContentId.Roles,\n [SettingTab.UserManagement_Teams]: ContentId.Teams,\n [SettingTab.SyncCenter]: ContentId.SyncCenter,\n [SettingTab.AutoPricing]: ContentId.Autopricing,\n [SettingTab.PurchaseOrder]: ContentId.Purchases,\n [SettingTab.Accounting]: ContentId.Accounting,\n [SettingTab.SellerAccount]: ContentId.SellerAccount,\n [SettingTab.CurrencyConversion]: ContentId.CurrencyConversion,\n [SettingTab.FulfillmentProviders]: ContentId.FulfillmentProviders,\n [SettingTab.VendorManagement]: ContentId.VendorManagement,\n [SettingTab.VendorManagement_Payments]: ContentId.Payments,\n [SettingTab.VendorManagement_Vendors]: ContentId.Vendors,\n};\n\nexport const SALE_PAYMENT_STATE_TO_CID: Record<\n PointOfSalePaymentState,\n ContentId\n> = {\n [PointOfSalePaymentState.Paid]: ContentId.Paid,\n [PointOfSalePaymentState.Queued]: ContentId.QueuedForPayment,\n [PointOfSalePaymentState.Unpaid]: ContentId.Unpaid,\n [PointOfSalePaymentState.PartiallyPaid]: ContentId.PartiallyPaid,\n [PointOfSalePaymentState.PendingReversal]: ContentId.PendingReversal,\n [PointOfSalePaymentState.Reversed]: ContentId.Reversed,\n};\n\nexport const SALE_CANCELLATION_REASON_CID: Record<\n SaleCancellationReason,\n ContentId\n> = {\n [SaleCancellationReason.EventCancellation]: ContentId.EventCancellation,\n [SaleCancellationReason.SellerFault]: ContentId.SellerFault,\n [SaleCancellationReason.MarketplaceFault]: ContentId.MarketplaceFault,\n [SaleCancellationReason.NoFault]: ContentId.NoFault,\n [SaleCancellationReason.Other]: ContentId.Other,\n};\n\nexport const MARKETPLACE_SALE_PAYMENT_STATE_TO_CID: Record<\n MarketplacePaymentState,\n ContentId\n> = {\n [MarketplacePaymentState.Paid]: ContentId.Paid,\n [MarketplacePaymentState.Queued]: ContentId.QueuedForPayment,\n [MarketplacePaymentState.Unpaid]: ContentId.Unpaid,\n [MarketplacePaymentState.PartiallyPaid]: ContentId.PartiallyPaid,\n [MarketplacePaymentState.Ineligible]: ContentId.Ineligible,\n [MarketplacePaymentState.PendingReversal]: ContentId.PendingReversal,\n [MarketplacePaymentState.Reversed]: ContentId.Reversed,\n};\n\nexport const MARKETPLACE_PAYMENT_LINE_TYPE_TO_CID: Record<\n MarketplacePaymentLineType,\n ContentId\n> = {\n [MarketplacePaymentLineType.Credit]: ContentId.Credit,\n [MarketplacePaymentLineType.Proceeds]: ContentId.Proceeds,\n [MarketplacePaymentLineType.FullPrice]: ContentId.FullPrice,\n [MarketplacePaymentLineType.SellerFee]: ContentId.SellerFee,\n [MarketplacePaymentLineType.Penalty]: ContentId.Penalty,\n [MarketplacePaymentLineType.AlternativeTickets]: ContentId.AlternativeTickets,\n [MarketplacePaymentLineType.OrderNotFulfilled]: ContentId.OrderNotFulfilled,\n [MarketplacePaymentLineType.CancelledEvent]: ContentId.CancelledEvent,\n [MarketplacePaymentLineType.WitheldFunds]: ContentId.WitheldFunds,\n [MarketplacePaymentLineType.LastMinuteSalesLateDelivery]:\n ContentId.LastMinuteSalesLateDelivery,\n [MarketplacePaymentLineType.ExpiredShippingLabel]:\n ContentId.ExpiredShippingLabel,\n [MarketplacePaymentLineType.DeliveryMethodChange]:\n ContentId.DeliveryMethodChange,\n [MarketplacePaymentLineType.BuyerDeniedEntry]: ContentId.BuyerDeniedEntry,\n [MarketplacePaymentLineType.WrongTicketsReturnShippingCost]:\n ContentId.WrongTicketsReturnShippingCost,\n [MarketplacePaymentLineType.EarlyShippingLabelGeneration]:\n ContentId.EarlyShippingLabelGeneration,\n [MarketplacePaymentLineType.WrongTrackingNumber]:\n ContentId.WrongTrackingNumber,\n [MarketplacePaymentLineType.ExcessiveFailureRate]:\n ContentId.ExcessiveFailureRate,\n [MarketplacePaymentLineType.SellerError]: ContentId.SellerError,\n [MarketplacePaymentLineType.AlternativeTicketsBuyerCompensation]:\n ContentId.AlternativeTicketsBuyerCompensation,\n [MarketplacePaymentLineType.RAGSellerFaultNoResponse]:\n ContentId.RAGSellerFaultNoResponse,\n [MarketplacePaymentLineType.OverchargedSeller]: ContentId.OverchargedSeller,\n [MarketplacePaymentLineType.ShippingRefund]: ContentId.ShippingRefund,\n [MarketplacePaymentLineType.SellerRelationship]: ContentId.SellerRelationship,\n [MarketplacePaymentLineType.RAGDeliveryDispute]: ContentId.RAGDeliveryDispute,\n [MarketplacePaymentLineType.CSError]: ContentId.CSError,\n [MarketplacePaymentLineType.LMSError]: ContentId.LMSError,\n [MarketplacePaymentLineType.TaxRefund]: ContentId.TaxRefund,\n [MarketplacePaymentLineType.Other]: ContentId.Other,\n [MarketplacePaymentLineType.Charge]: ContentId.Charge,\n};\n\nexport const PURCHASE_PAYMENT_STATUS_TO_CID: Record<\n PurchasePaymentStatus,\n ContentId\n> = {\n [PurchasePaymentStatus.Unpaid]: ContentId.Unpaid,\n [PurchasePaymentStatus.PartiallyPaid]: ContentId.PartiallyPaid,\n [PurchasePaymentStatus.Paid]: ContentId.Paid,\n [PurchasePaymentStatus.Failed]: ContentId.Failed,\n [PurchasePaymentStatus.RefundNeeded]: ContentId.RefundNeeded,\n [PurchasePaymentStatus.Refunded]: ContentId.Refunded,\n [PurchasePaymentStatus.PartiallyRefunded]: ContentId.PartiallyRefunded,\n};\n\nexport const QUALITY_CONTROL_STATE_TO_CID: Record<\n QualityControlState,\n ContentId\n> = {\n [QualityControlState.Pending]: ContentId.Pending,\n [QualityControlState.Approved]: ContentId.Approved,\n [QualityControlState.Rejected]: ContentId.Rejected,\n};\n\nexport const ROLE_TO_CID: Record = {\n [Role.Owner]: [ContentId.Owner, ContentId.Role_Owner_Details],\n [Role.Buyer]: [ContentId.Buyer, ContentId.Role_Buyer_Details],\n [Role.Finance]: [ContentId.Finance, ContentId.Role_Finance_Details],\n [Role.FinanceAPI]: [ContentId.FinanceAPI, ContentId.Role_FinanceAPI_Details],\n [Role.Fulfillment]: [\n ContentId.Fulfillment,\n ContentId.Role_Fulfillment_Details,\n ],\n [Role.Pricer]: [ContentId.Pricer, ContentId.Role_Pricer_Details],\n [Role.Processor]: [ContentId.Processor, ContentId.Role_Processor_Details],\n [Role.AutoPO]: [ContentId.AutoPO, ContentId.Role_AutoPO_Details],\n [Role.AutoFulfill]: [\n ContentId.AutoFulfill,\n ContentId.Role_AutoFulfill_Details,\n ],\n [Role.AutoPricer]: [ContentId.AutoPricer, ContentId.Role_AutoPricer_Details],\n [Role.Reporter]: [ContentId.Reporter, ContentId.Role_Reporter_Details],\n};\n\nexport const PERMISSION_ACCESS_AREA_TO_CID: Record<\n PermissionAccessArea,\n ContentId\n> = {\n [PermissionAccessArea.General]: ContentId.General,\n [PermissionAccessArea.Inventory]: ContentId.Inventory,\n [PermissionAccessArea.Sales]: ContentId.Sales,\n [PermissionAccessArea.Purchases]: ContentId.Purchases,\n [PermissionAccessArea.Events]: ContentId.Events,\n [PermissionAccessArea.Account]: ContentId.Account,\n [PermissionAccessArea.Reporting]: ContentId.Reporting,\n [PermissionAccessArea.Messages]: ContentId.Messages,\n [PermissionAccessArea.Accounting]: ContentId.Accounting,\n [PermissionAccessArea.AdPlatform]: ContentId.SponsoredListings,\n};\n\nexport const PERMISSION_TO_CID: Record<\n Permission,\n // TODO - add contentId for Details (explanation when clicking (i) icon)\n [ContentId, ContentId, 'view' | 'action']\n> = {\n [Permission.Sales_ViewAll]: [\n ContentId.Permission_ViewAll,\n ContentId.Sales_ViewAll_Details,\n 'view',\n ],\n [Permission.Sales_ViewRecent]: [\n ContentId.Permission_ViewRecentSales,\n ContentId.Sales_ViewRecent_Details,\n 'view',\n ],\n [Permission.Sales_ViewRecentFromExternalMarketplace]: [\n ContentId.Permission_ViewRecentFromExternalMarketplace,\n ContentId.Sales_ViewRecentFromExternalMarketplace_Details,\n 'view',\n ],\n [Permission.Sales_ConfirmReject]: [\n ContentId.Permission_ConfirmRejectSale,\n ContentId.Sales_ConfirmReject_Details,\n 'action',\n ],\n [Permission.Sales_Fulfill]: [\n ContentId.Permission_FulfillSale,\n ContentId.Sales_Fulfill_Details,\n 'action',\n ],\n [Permission.Sales_CreateForExternalMarketplaces]: [\n ContentId.Permission_CreateForExternalMarketplaces,\n ContentId.Sales_CreateForExternalMarketplaces_Details,\n 'action',\n ],\n [Permission.Sales_ViewProceeds]: [\n ContentId.Permission_ViewProceeds,\n ContentId.Sales_ViewProceeds_Details,\n 'view',\n ],\n [Permission.Sales_ViewRecentProceeds]: [\n ContentId.Permission_ViewRecentProceeds,\n ContentId.Sales_ViewRecentProceeds_Details,\n 'view',\n ],\n [Permission.Sales_ViewCostAndMargin]: [\n ContentId.Permission_ViewCostAndMargin,\n ContentId.Sales_ViewCostAndMargin_Details,\n 'view',\n ],\n [Permission.Sales_ViewPaymentState]: [\n ContentId.Permission_ViewPaymentState,\n ContentId.Sales_ViewPaymentState_Details,\n 'view',\n ],\n [Permission.Sales_ViewFulfillmentArtifacts]: [\n ContentId.Permission_ViewFulfillmentArtifacts,\n ContentId.Sales_ViewFulfillmentArtifacts_Details,\n 'view',\n ],\n [Permission.Sales_ManageHold]: [\n ContentId.Permission_ManageHolds,\n ContentId.Sales_ManageHold_Details,\n 'action',\n ],\n [Permission.Inventory_ViewAll]: [\n ContentId.Permission_ViewAll,\n ContentId.Inventory_ViewAll_Details,\n 'view',\n ],\n [Permission.Inventory_ViewRecent]: [\n ContentId.Permission_ViewRecentListings,\n ContentId.Inventory_ViewRecent_Details,\n 'view',\n ],\n [Permission.Inventory_ViewRecentFromExternalMarketplace]: [\n ContentId.Permission_ViewRecentFromExternalMarketplace,\n ContentId.Inventory_ViewRecentFromExternalMarketplace_Details,\n 'view',\n ],\n [Permission.Inventory_ViewAllMarketplaceAttributes]: [\n ContentId.Permission_ViewAllMarketplaceAttributes,\n ContentId.Inventory_ViewAllMarketplaceAttributes_Details,\n 'view',\n ],\n [Permission.Inventory_ViewExternalMarketplaceAttributes]: [\n ContentId.Permission_ViewExternalMarketplaceAttributes,\n ContentId.Inventory_ViewExternalMarketplaceAttributes_Details,\n 'view',\n ],\n [Permission.Inventory_ViewFulfillmentArtifacts]: [\n ContentId.Permission_ViewFulfillmentArtifacts,\n ContentId.Inventory_ViewFulfillmentArtifacts_Details,\n 'view',\n ],\n [Permission.Inventory_SetPrice]: [\n ContentId.Permission_SetPrice,\n ContentId.Inventory_SetPrice_Details,\n 'action',\n ],\n [Permission.Inventory_SetPriceOnPurchasedBy]: [\n ContentId.Permission_SetPriceOnPurchasedListings,\n ContentId.Inventory_SetPriceOnPurchasedBy_Details,\n 'action',\n ],\n [Permission.Inventory_SetPriceOnIsPricerOf]: [\n ContentId.Permission_SetPriceOnAssignedListings,\n ContentId.Inventory_SetPriceOnIsPricerOf_Details,\n 'action',\n ],\n [Permission.Inventory_Predelivery]: [\n ContentId.Permission_Predeliver,\n ContentId.Inventory_Predelivery_Details,\n 'action',\n ],\n [Permission.Inventory_BroadcastUnbroadcast]: [\n ContentId.Permission_BroadcastUnbroadcast,\n ContentId.Inventory_BroadcastUnbroadcast_Details,\n\n 'action',\n ],\n [Permission.Inventory_BroadcastUnbroadcastOnPurchasedBy]: [\n ContentId.Permission_BroadcastUnbroadcastOnPurchasedBy,\n ContentId.Inventory_BroadcastUnbroadcastOnPurchasedBy_Details,\n 'action',\n ],\n [Permission.Inventory_UpdateListingInfo]: [\n ContentId.Permission_UpdateInfo,\n ContentId.Inventory_UpdateListingInfo_Details,\n 'action',\n ],\n [Permission.Inventory_UpdateListingInfoOnPurchasedBy]: [\n ContentId.Permission_UpdateInfoOnPurchasedListings,\n ContentId.Inventory_UpdateListingInfoOnPurchasedBy_Details,\n 'action',\n ],\n [Permission.Inventory_UpdateDeliveryStrategy]: [\n ContentId.Permission_UpdateDeliveryStrategy,\n ContentId.Inventory_UpdateDeliveryStrategy_Details,\n 'action',\n ],\n [Permission.Inventory_UpdateDeliveryStrategyOnIsPricerOf]: [\n ContentId.Permission_UpdateDeliveryStrategyOnPricedListings,\n ContentId.Inventory_UpdateDeliveryStrategyOnIsPricerOf_Details,\n 'action',\n ],\n [Permission.Inventory_UpdateDeliveryStrategyOnPurchasedBy]: [\n ContentId.Permission_UpdateDeliveryStrategyOnPurchasedListings,\n ContentId.Inventory_UpdateDeliveryStrategyOnPurchasedBy_Details,\n 'action',\n ],\n [Permission.SellerAccount_Admin]: [\n ContentId.Permission_Administration,\n ContentId.SellerAccount_Admin_Details,\n 'action',\n ],\n [Permission.SellerSupportCase_Create]: [\n ContentId.Permission_Create,\n ContentId.SellerSupportCase_Create_Details,\n 'action',\n ],\n [Permission.SellerSupportCase_View]: [\n ContentId.Permission_ViewAll,\n ContentId.SellerSupportCase_View_Details,\n 'view',\n ],\n [Permission.Purchases_ViewAll]: [\n ContentId.Permission_ViewAll,\n ContentId.Purchases_ViewAll_Details,\n 'view',\n ],\n [Permission.Purchases_ViewRecent]: [\n ContentId.Permission_ViewRecent,\n ContentId.Purchases_ViewRecent_Details,\n 'view',\n ],\n [Permission.Purchases_Edit]: [\n ContentId.Permission_UpdateInfo,\n ContentId.Purchases_Edit_Details,\n 'action',\n ],\n [Permission.Purchases_EditOwned]: [\n ContentId.Permission_UpdateInfoOnPurchasedListings,\n ContentId.Purchases_EditOwned_Details,\n 'action',\n ],\n [Permission.Purchases_UpdateBuyerCommission]: [\n ContentId.Permission_UpdateBuyerCommission,\n ContentId.Purchases_UpdateBuyerCommission_Details,\n 'action',\n ],\n [Permission.Purchases_UpdateBuyerCommissionOwned]: [\n ContentId.Permission_UpdateBuyerCommissionOwned,\n ContentId.Purchases_UpdateBuyerCommissionOwned_Details,\n 'action',\n ],\n [Permission.Purchases_UpdateDeliveryType]: [\n ContentId.Permission_UpdateDeliveryType,\n ContentId.Purchases_UpdateDeliveryType_Details,\n 'action',\n ],\n [Permission.Purchases_UpdateDeliveryTypeOwned]: [\n ContentId.Permission_UpdateDeliveryTypeOwned,\n ContentId.Purchases_UpdateDeliveryTypeOwned_Details,\n 'action',\n ],\n [Permission.Purchases_UpdateCustomDeliveryType]: [\n ContentId.Permission_UpdateCustomDeliveryType,\n ContentId.Purchases_UpdateCustomDeliveryType_Details,\n 'action',\n ],\n [Permission.Purchases_UpdateCustomDeliveryTypeOwned]: [\n ContentId.Permission_UpdateCustomDeliveryTypeOwned,\n ContentId.Purchases_UpdateCustomDeliveryTypeOwned_Details,\n 'action',\n ],\n [Permission.Purchases_UpdateSeatTraits]: [\n ContentId.Permission_UpdateSeatTraits,\n ContentId.Purchases_UpdateSeatTraits_Details,\n 'action',\n ],\n [Permission.Purchases_UpdateSeatTraitsOwned]: [\n ContentId.Permission_UpdateSeatTraitsOwned,\n ContentId.Purchases_UpdateSeatTraitsOwned_Details,\n 'action',\n ],\n [Permission.Purchases_Create]: [\n ContentId.Permission_CreatePO,\n ContentId.Purchases_Create_Details,\n 'action',\n ],\n [Permission.Purchases_LockUnlockCommission]: [\n ContentId.Permission_LockUnlockCommission,\n ContentId.Purchases_LockUnlockCommission_Details,\n 'action',\n ],\n [Permission.Purchases_LockUnlockCommissionOwned]: [\n ContentId.Permission_LockUnlockCommissionOwned,\n ContentId.Purchases_LockUnlockCommissionOwned_Details,\n 'action',\n ],\n [Permission.Purchases_EditVendor]: [\n ContentId.Permission_EditVendor,\n ContentId.Purchases_EditVendor_Details,\n 'action',\n ],\n [Permission.Events_ViewAll]: [\n ContentId.Permission_ViewAll,\n ContentId.Events_ViewAll_Details,\n 'view',\n ],\n [Permission.Accounts_ViewAll]: [\n ContentId.Permission_ViewAll,\n ContentId.Accounts_ViewAll_Details,\n 'view',\n ],\n [Permission.TicketGroups_ViewAll]: [\n ContentId.Permission_ViewAll,\n ContentId.TicketGroups_ViewAll_Details,\n 'view',\n ],\n [Permission.Sales_AddTagType]: [\n ContentId.Permission_AddTagType,\n ContentId.Sales_AddTagType_Details,\n 'action',\n ],\n [Permission.Sales_UpdateTags]: [\n ContentId.Permission_UpdateTags,\n ContentId.Sales_UpdateTags_Details,\n 'action',\n ],\n [Permission.Sales_ViewSalesOnIsPricerOf]: [\n ContentId.Permission_ViewSaleFromPricedListings,\n ContentId.Sales_ViewSalesOnIsPricerOf_Details,\n 'view',\n ],\n [Permission.Sales_UpdateSalesInfo]: [\n ContentId.Permission_UpdateInfo,\n ContentId.Sales_UpdateSalesInfo_Details,\n 'action',\n ],\n [Permission.Sales_UpdateSalesInfoOnIsPricerOf]: [\n ContentId.Permission_UpdateInfoOnPricedListings,\n ContentId.Sales_UpdateSalesInfoOnIsPricerOf_Details,\n 'action',\n ],\n [Permission.Sales_UpdateSalesInfoOnIsFulfillerOf]: [\n ContentId.Permission_UpdateInfoOnAssignedSales,\n ContentId.Sales_UpdateSalesInfoOnIsFulfillerOf_Details,\n 'action',\n ],\n [Permission.Sales_FulfillOnIsFulfillerOf]: [\n ContentId.Permission_FulfillSalesOnAssignedSales,\n ContentId.Sales_FulfillOnIsFulfillerOf_Details,\n 'action',\n ],\n [Permission.Sales_ViewSalesOnPurchasedBy]: [\n ContentId.Permission_ViewSaleOnPurchasedListings,\n ContentId.Sales_ViewSalesOnPurchasedBy_Details,\n 'view',\n ],\n [Permission.Sales_UpdateSaleOnPurchasedBy]: [\n ContentId.Permission_UpdateInfoFromPurchasedListings,\n ContentId.Sales_UpdateSaleOnPurchasedBy_Details,\n 'action',\n ],\n [Permission.Sales_FulfillOnPurchasedBy]: [\n ContentId.Permission_FulfillSalesFromPurchasedListings,\n ContentId.Sales_FulfillOnPurchasedBy_Details,\n 'action',\n ],\n [Permission.Sales_FulfillOnPricerOf]: [\n ContentId.Permission_FulfillSaleOnPricedListings,\n ContentId.Sales_FulfillOnPricerOf_Details,\n 'action',\n ],\n [Permission.Sales_UpdateTagsOnPurchasedBy]: [\n ContentId.Permission_UpdateTagsFromPurchasedListings,\n ContentId.Sales_UpdateTagsOnPurchasedBy_Details,\n 'action',\n ],\n [Permission.Sales_UpdateTagsOnIsPricerOf]: [\n ContentId.Permission_UpdateTagsFromPricedListings,\n ContentId.Sales_UpdateTagsOnIsPricerOf_Details,\n 'action',\n ],\n [Permission.Sales_UpdateTagsOnIsFulfillerOf]: [\n ContentId.Permission_UpdateTagsOnAssignedSales,\n ContentId.Sales_UpdateTagsOnIsFulfillerOf_Details,\n 'action',\n ],\n [Permission.Sales_ConfirmRejectOnIsPricerOf]: [\n ContentId.Permission_ConfirmRejectSaleOnPricedListings,\n ContentId.Sales_ConfirmRejectOnIsPricerOf_Details,\n 'action',\n ],\n [Permission.Sales_ConfirmRejectOnPurchasedBy]: [\n ContentId.Permission_ConfirmRejectSalesFromPurchasedListings,\n ContentId.Sales_ConfirmRejectOnPurchasedBy_Details,\n 'action',\n ],\n [Permission.Sales_ViewFulfillmentArtifactsOnPurchasedBy]: [\n ContentId.Permission_ViewFulfillmentArtifactsOnSaleFromPurchasedListings,\n ContentId.Sales_ViewFulfillmentArtifactsOnPurchasedBy_Details,\n 'view',\n ],\n [Permission.Sales_ViewFulfillmentArtifactsOnIsPricerOf]: [\n ContentId.Permission_ViewFulfillmentArtifactsOnSaleFromPricedListings,\n ContentId.Sales_ViewFulfillmentArtifactsOnIsPricerOf_Details,\n 'view',\n ],\n [Permission.Sales_ConfirmRejectOnIsFulfillerOf]: [\n ContentId.Permission_ConfirmRejectOnAssignedSales,\n ContentId.Sales_ConfirmRejectOnIsFulfillerOf_Details,\n 'action',\n ],\n [Permission.Sales_ViewSalesOnIsFulfillerOf]: [\n ContentId.Permission_ViewAssignedSales,\n ContentId.Sales_ViewSalesOnIsFulfillerOf_Details,\n 'view',\n ],\n [Permission.Inventory_EditPricing]: [\n ContentId.Permission_SetPrice,\n ContentId.Inventory_EditPricing_Details,\n 'action',\n ],\n [Permission.Inventory_AddTagType]: [\n ContentId.Permission_AddTagType,\n ContentId.Inventory_AddTagType_Details,\n 'action',\n ],\n [Permission.Inventory_UpdateTags]: [\n ContentId.Permission_UpdateTags,\n ContentId.Inventory_UpdateTags_Details,\n 'action',\n ],\n [Permission.Inventory_UpdateTagsOnPurchasedBy]: [\n ContentId.Permission_UpdateTagsOnPurchasedListings,\n ContentId.Inventory_UpdateTagsOnPurchasedBy_Details,\n 'action',\n ],\n [Permission.Inventory_ViewListingOnIsPricerOf]: [\n ContentId.Permission_ViewAssignedListings,\n ContentId.Inventory_ViewListingOnIsPricerOf_Details,\n 'view',\n ],\n [Permission.Inventory_UpdateListingInfoOnIsPricerOf]: [\n ContentId.Permission_UpdateInfoOnAssignedListings,\n ContentId.Inventory_UpdateListingInfoOnIsPricerOf_Details,\n 'action',\n ],\n [Permission.Inventory_UpdateTagsOnIsPricerOf]: [\n ContentId.Permission_UpdateTagsOnAssignedListings,\n ContentId.Inventory_UpdateTagsOnIsPricerOf_Details,\n 'action',\n ],\n [Permission.Inventory_PredeliveryOnPurchasedBy]: [\n ContentId.Permission_PredeliverPurchasedListings,\n ContentId.Inventory_PredeliveryOnPurchasedBy_Details,\n 'action',\n ],\n [Permission.Inventory_PredeliveryOnIsPricerOf]: [\n ContentId.Permission_PredeliverOnAssignedListings,\n ContentId.Inventory_PredeliveryOnIsPricerOf_Details,\n 'action',\n ],\n [Permission.Inventory_ViewListingsOnPurchasedBy]: [\n ContentId.Permission_ViewPurchasedListings,\n ContentId.Inventory_ViewListingsOnPurchasedBy_Details,\n 'view',\n ],\n [Permission.Inventory_ViewFulfillmentArtifactsOnPurchasedBy]: [\n ContentId.Permission_ViewFulfillmentArtifactsOnPurchasedListings,\n ContentId.Inventory_ViewFulfillmentArtifactsOnPurchasedBy_Details,\n 'view',\n ],\n [Permission.Inventory_ViewFulfillmentArtifactsOnIsPricerOf]: [\n ContentId.Permission_ViewFulfillmentArtifactsOnAssignedListings,\n ContentId.Inventory_ViewFulfillmentArtifactsOnIsPricerOf_Details,\n 'view',\n ],\n [Permission.Inventory_BroadcastUnbroadcastOnIsPricerOf]: [\n ContentId.Permission_BroadcastUnbroadcastOnAssignedListings,\n ContentId.Inventory_BroadcastUnbroadcastOnIsPricerOf_Details,\n 'action',\n ],\n [Permission.Purchases_AddTagType]: [\n ContentId.Permission_AddTagType,\n ContentId.Purchases_AddTagType_Details,\n 'action',\n ],\n [Permission.Purchases_UpdateTags]: [\n ContentId.Permission_UpdateTags,\n ContentId.Purchases_UpdateTags_Details,\n 'action',\n ],\n [Permission.Purchases_UpdateTagsOwned]: [\n ContentId.Permission_UpdateTagsOnOwnedPurchasedOrder,\n ContentId.Purchases_UpdateTagsOwned_Details,\n 'action',\n ],\n [Permission.Purchases_ViewOwned]: [\n ContentId.Permission_ViewOwnedPurchasedOrders,\n ContentId.Purchases_ViewOwned_Details,\n 'view',\n ],\n [Permission.Events_AddTagType]: [\n ContentId.Permission_AddTagType,\n ContentId.Events_AddTagType_Details,\n 'action',\n ],\n [Permission.Events_UpdateTags]: [\n ContentId.Permission_UpdateTags,\n ContentId.Events_UpdateTags_Details,\n 'action',\n ],\n [Permission.Events_Edit]: [\n ContentId.Permission_UpdateInfo,\n ContentId.Events_Edit_Details,\n 'action',\n ],\n [Permission.Reports_CreateReports]: [\n ContentId.Permission_CreateReports,\n ContentId.Reports_CreateReports_Details,\n 'action',\n ],\n [Permission.Reports_UpdateReports]: [\n ContentId.Permission_UpdateReports,\n ContentId.Reports_UpdateReports_Details,\n 'action',\n ],\n [Permission.Reports_UpdateReportsOwned]: [\n ContentId.Permission_UpdateCreatedReports,\n ContentId.Reports_UpdateReportsOwned_Details,\n 'action',\n ],\n [Permission.Reports_ViewInventoryReports]: [\n ContentId.Permission_ViewInventoryReports,\n ContentId.Reports_ViewInventoryReports_Details,\n 'view',\n ],\n [Permission.Reports_ViewSalesReports]: [\n ContentId.Permission_ViewSalesReports,\n ContentId.Reports_ViewSalesReports_Details,\n 'view',\n ],\n [Permission.Reports_ViewGlobalReports]: [\n ContentId.Permission_ViewGlobalReports,\n ContentId.Reports_ViewGlobalReports_Details,\n 'view',\n ],\n [Permission.Reports_ViewAll]: [\n ContentId.Permission_ViewAll,\n ContentId.Reports_ViewAll_Details,\n 'view',\n ],\n [Permission.Sales_ViewFulfillmentArtifactsOnIsFulfillerOf]: [\n ContentId.Permission_ViewFulfillmentArtifactsOnAssignedSales,\n ContentId.Sales_ViewFulfillmentArtifactsOnIsFulfillerOf_Details,\n 'view',\n ],\n [Permission.Sales_CreateOfflineSale]: [\n ContentId.Permission_CreateOfflineSale,\n ContentId.Sales_CreateOfflineSale_Details,\n 'action',\n ],\n [Permission.Sales_ManageOfflineSale]: [\n ContentId.Permission_ManageOfflineSale,\n ContentId.Sales_ManageOfflineSale_Details,\n 'action',\n ],\n [Permission.Sales_ManageOfflineSaleCreatedBy]: [\n ContentId.Permission_ManageOfflineSalesOnPurchasedListings,\n ContentId.Sales_ManageOfflineSaleCreatedBy_Details,\n 'action',\n ],\n [Permission.Sales_ConfirmTransferWithoutProof]: [\n ContentId.Permission_ConfirmTransferWithoutProof,\n ContentId.Sales_ConfirmTransferWithoutProof_Details,\n 'action',\n ],\n [Permission.Sales_ResetFulfillment]: [\n ContentId.Permission_ResetFulfillment,\n ContentId.Sales_ResetFulfillment_Details,\n 'action',\n ],\n [Permission.Inventory_AddSeatSaver]: [\n ContentId.Permission_AddSeatSaver,\n ContentId.Inventory_AddSeatSaver_Details,\n 'action',\n ],\n [Permission.Inventory_ManageSeatSaver]: [\n ContentId.Permission_ManagePlaceholderListings,\n ContentId.Inventory_ManageSeatSaver_Details,\n 'action',\n ],\n [Permission.Inventory_ManageSeatSaverCreatedBy]: [\n ContentId.Permission_ManageCreatedPlaceholderListings,\n ContentId.Inventory_ManageSeatSaverCreatedBy_Details,\n 'action',\n ],\n [Permission.Events_SetPrice]: [\n ContentId.Permission_ConfigurePricing,\n ContentId.Events_SetPrice_Details,\n 'action',\n ],\n [Permission.Account_SetPrice]: [\n ContentId.Permission_ConfigurePricing,\n ContentId.Account_SetPrice_Details,\n 'action',\n ],\n [Permission.Webhook_View]: [\n ContentId.Permission_Webhook_View,\n ContentId.Webhook_View_Details,\n 'view',\n ],\n [Permission.Webhook_Create]: [\n ContentId.Permission_Webhook_Create,\n ContentId.Webhook_Create_Details,\n 'action',\n ],\n [Permission.Webhook_Edit]: [\n ContentId.Permission_Webhook_Edit,\n ContentId.Webhook_Edit_Details,\n 'action',\n ],\n [Permission.EventConfig_Create]: [\n ContentId.Permission_EventConfig_Create,\n ContentId.EventConfig_Create_Details,\n 'action',\n ],\n [Permission.EventConfig_Edit]: [\n ContentId.Permission_EventConfig_Edit,\n ContentId.EventConfig_Edit_Details,\n 'action',\n ],\n [Permission.EventConfig_View]: [\n ContentId.Permission_EventConfig_View,\n ContentId.EventConfig_View_Details,\n 'view',\n ],\n [Permission.Accounting_ViewAll]: [\n ContentId.Permission_ViewAll,\n ContentId.Accounting_ViewAll_Details,\n 'view',\n ],\n [Permission.Accounting_ViewPaymentsOnSale]: [\n ContentId.Permission_ViewPaymentsOnSale,\n ContentId.Accounting_ViewPaymentsOnSale_Details,\n 'view',\n ],\n [Permission.Accounting_ViewStubhubPayments]: [\n ContentId.Permission_ViewStubhubPayments,\n ContentId.Accounting_ViewStubhubPayments_Details,\n 'view',\n ],\n [Permission.General_ViewNotifications]: [\n ContentId.Permission_ViewNotifications,\n ContentId.General_ViewNotifications_Details,\n 'view',\n ],\n [Permission.General_ViewReleaseNotes]: [\n ContentId.Permission_ViewReleaseNotes,\n ContentId.General_ViewReleaseNotes_Details,\n 'view',\n ],\n [Permission.AdPlatform_Edit]: [\n ContentId.Permission_AdPlatformEdit,\n ContentId.AdPlatform_Edit_Details,\n 'action',\n ],\n};\n\nexport const EVENT_TIME_FRAME_FILTER_TO_CID: Record<\n EventTimeFrameFilter,\n ContentId\n> = {\n [EventTimeFrameFilter.Future]: ContentId.FutureEvents,\n [EventTimeFrameFilter.Past]: ContentId.PastEvents,\n};\n\nexport const MARKETPLACE_PAYMENTS_TIME_FRAME_FILTER_TO_CID: Record<\n EventTimeFrameFilter,\n ContentId\n> = {\n [EventTimeFrameFilter.Future]: ContentId.FuturePayments,\n [EventTimeFrameFilter.Past]: ContentId.PastPayments,\n};\n\nexport const TOP_LEVEL_CATEGORY_TO_CID: Record = {\n [TopLevelCategory.Concert]: ContentId.Concert,\n [TopLevelCategory.Festival]: ContentId.Festival,\n [TopLevelCategory.Sports]: ContentId.Sports,\n [TopLevelCategory.Theatre]: ContentId.Theatre,\n};\n\nexport const PARENT_CATEGORY_TO_CID: Record = {\n '1007': ContentId.Category1007,\n '1009': ContentId.Category1009,\n '4286': ContentId.Category4286,\n '5099': ContentId.Category5099,\n '6401': ContentId.Category6401,\n '6404': ContentId.Category6404,\n '6451': ContentId.Category6451,\n '6452': ContentId.Category6452,\n '12567': ContentId.Category12567,\n '263024': ContentId.Category263024,\n '272988': ContentId.Category272988,\n '272989': ContentId.Category272989,\n '273013': ContentId.Category273013,\n '273026': ContentId.Category273026,\n '273031': ContentId.Category273031,\n '273034': ContentId.Category273034,\n '273055': ContentId.Category273055,\n '273057': ContentId.Category273057,\n '273089': ContentId.Category273089,\n '273137': ContentId.Category273137,\n '273138': ContentId.Category273138,\n '273164': ContentId.Category273164,\n '273171': ContentId.Category273171,\n '273393': ContentId.Category273393,\n '273409': ContentId.Category273409,\n '273431': ContentId.Category273431,\n '273485': ContentId.Category273485,\n '273529': ContentId.Category273529,\n '273657': ContentId.Category273657,\n '274164': ContentId.Category274164,\n '274701': ContentId.Category274701,\n '274794': ContentId.Category274794,\n '275344': ContentId.Category275344,\n '275641': ContentId.Category275641,\n '276077': ContentId.Category276077,\n '276281': ContentId.Category276281,\n '276306': ContentId.Category276306,\n '276308': ContentId.Category276308,\n '276311': ContentId.Category276311,\n '276861': ContentId.Category276861,\n '278221': ContentId.Category278221,\n '278837': ContentId.Category278837,\n '279267': ContentId.Category279267,\n '279563': ContentId.Category279563,\n '289352': ContentId.Category289352,\n '150012246': ContentId.Category150012246,\n '1013': ContentId.Category1013,\n '1015': ContentId.Category1015,\n '1017': ContentId.Category1017,\n '2294': ContentId.Category2294,\n '4551': ContentId.Category4551,\n '6403': ContentId.Category6403,\n '55548': ContentId.Category55548,\n '259716': ContentId.Category259716,\n '356361': ContentId.Category356361,\n '356453': ContentId.Category356453,\n '356499': ContentId.Category356499,\n '356585': ContentId.Category356585,\n '357019': ContentId.Category357019,\n '357036': ContentId.Category357036,\n '358121': ContentId.Category358121,\n '358959': ContentId.Category358959,\n '366262': ContentId.Category366262,\n '366288': ContentId.Category366288,\n '366529': ContentId.Category366529,\n '366888': ContentId.Category366888,\n '375100': ContentId.Category375100,\n '379731': ContentId.Category379731,\n '379991': ContentId.Category379991,\n '380480': ContentId.Category380480,\n '381561': ContentId.Category381561,\n '150002820': ContentId.Category150002820,\n '1014': ContentId.Category1014,\n '1022': ContentId.Category1022,\n '1023': ContentId.Category1023,\n '1026': ContentId.Category1026,\n '1027': ContentId.Category1027,\n '1059': ContentId.Category1059,\n '1205': ContentId.Category1205,\n '14858': ContentId.Category14858,\n '259810': ContentId.Category259810,\n '259815': ContentId.Category259815,\n '259819': ContentId.Category259819,\n '259820': ContentId.Category259820,\n '259822': ContentId.Category259822,\n '259823': ContentId.Category259823,\n '259824': ContentId.Category259824,\n '259827': ContentId.Category259827,\n '259828': ContentId.Category259828,\n '259829': ContentId.Category259829,\n '259833': ContentId.Category259833,\n '259921': ContentId.Category259921,\n '259922': ContentId.Category259922,\n '260261': ContentId.Category260261,\n '260263': ContentId.Category260263,\n '260264': ContentId.Category260264,\n '260265': ContentId.Category260265,\n '260266': ContentId.Category260266,\n '260267': ContentId.Category260267,\n '260268': ContentId.Category260268,\n '260270': ContentId.Category260270,\n '260271': ContentId.Category260271,\n '260275': ContentId.Category260275,\n '260347': ContentId.Category260347,\n '260357': ContentId.Category260357,\n '260385': ContentId.Category260385,\n '260389': ContentId.Category260389,\n '260392': ContentId.Category260392,\n '260421': ContentId.Category260421,\n '260478': ContentId.Category260478,\n '260483': ContentId.Category260483,\n '260492': ContentId.Category260492,\n '260530': ContentId.Category260530,\n '260539': ContentId.Category260539,\n '260542': ContentId.Category260542,\n '260601': ContentId.Category260601,\n '260624': ContentId.Category260624,\n '260628': ContentId.Category260628,\n '260637': ContentId.Category260637,\n '260644': ContentId.Category260644,\n '261289': ContentId.Category261289,\n '261291': ContentId.Category261291,\n '308335': ContentId.Category308335,\n '308336': ContentId.Category308336,\n '308341': ContentId.Category308341,\n '308342': ContentId.Category308342,\n '308344': ContentId.Category308344,\n '308345': ContentId.Category308345,\n '308350': ContentId.Category308350,\n '308351': ContentId.Category308351,\n '308352': ContentId.Category308352,\n '308353': ContentId.Category308353,\n '308355': ContentId.Category308355,\n '308357': ContentId.Category308357,\n '308358': ContentId.Category308358,\n '308363': ContentId.Category308363,\n '308364': ContentId.Category308364,\n '308365': ContentId.Category308365,\n '308385': ContentId.Category308385,\n '321834': ContentId.Category321834,\n '1024': ContentId.Category1024,\n};\n\nexport const MARKET_PLACE_TO_CID: Record = {\n [Marketplace.StubHub]: Marketplace.StubHub,\n [Marketplace.SeatGeek]: Marketplace.SeatGeek,\n [Marketplace.Ticketmaster]: Marketplace.Ticketmaster,\n [Marketplace.VividSeats]: Marketplace.VividSeats,\n [Marketplace.TickPick]: Marketplace.TickPick,\n [Marketplace.Offline]: ContentId.DirectOffline,\n [Marketplace.AXS]: Marketplace.AXS,\n [Marketplace.FanXchange]: Marketplace.FanXchange,\n [Marketplace.Gametime]: Marketplace.Gametime,\n [Marketplace.TicketEvolution]: Marketplace.TicketEvolution,\n [Marketplace.TicketNetwork]: Marketplace.TicketNetwork,\n [Marketplace.Automatiq]: Marketplace.Automatiq,\n [Marketplace.Lyte]: Marketplace.Lyte,\n [Marketplace.GoTickets]: Marketplace.GoTickets,\n [Marketplace.B2BSales]: Marketplace.B2BSales,\n [Marketplace.TicketNetworkMercury]: Marketplace.TicketNetworkMercury,\n};\n\nexport const YES_NO_ENUM_FILTER_TO_CID: Record = {\n [YesNoEnum.Yes]: ContentId.Yes,\n [YesNoEnum.No]: ContentId.No,\n};\n\nexport const EVENT_PRICED_STATUS_TO_CID: Record<\n EventUnpricedStatus,\n ContentId\n> = {\n [EventUnpricedStatus.AllUnpriced]: ContentId.All,\n [EventUnpricedStatus.NoneUnpriced]: ContentId.None,\n [EventUnpricedStatus.AnyUnpriced]: ContentId.Any,\n};\n\nexport const EVENT_LAST_REVIEWED_SINCE_DATE_CID: Record<\n LastReviewedSinceDate,\n ContentId\n> = {\n [LastReviewedSinceDate.LastThreeDays]: ContentId.Last3Days,\n [LastReviewedSinceDate.LastSevenDays]: ContentId.LastWeek,\n [LastReviewedSinceDate.LastTwoWeeks]: ContentId.Last2Weeks,\n [LastReviewedSinceDate.LastThirtyDays]: ContentId.Last30Days,\n};\n\nexport const CONTAINS_EQUALS_ENUM_FILTER_TO_CID: Record<\n TextFilterEnum,\n ContentId\n> = {\n [TextFilterEnum.Contains]: ContentId.Contains,\n [TextFilterEnum.Equals]: ContentId.Equals,\n [TextFilterEnum.NotContains]: ContentId.NotContains,\n};\n\nexport const SALES_DATE_FILTER_TO_CID: Record = {\n [SaleDateFilterEnum.HasSaleDate]: ContentId.SaleDateFilterOccured,\n [SaleDateFilterEnum.NoSaleDate]: ContentId.SaleDateFilterNotOccured,\n};\n\nexport const PRICE_UPDATED_DATE_FILTER_TO_CID: Record<\n PriceUpdatedFilterEnum,\n ContentId\n> = {\n [PriceUpdatedFilterEnum.PriceUpdatedDate]: ContentId.PriceDateFilterChanged,\n [PriceUpdatedFilterEnum.PriceNotUpdatedDate]:\n ContentId.PriceDateFilterUnchanged,\n};\n\n/**\n * This is created when we don't need to show the No option in the filter\n */\nexport const YES_ENUM_FILTER_TO_CID: Record = {\n [YesNoEnum.Yes]: ContentId.Yes,\n};\n\n/**\n * This is created because the original YES_NO_ENUM_FILTER_TO_CID was used for\n * filter query \"isSeatingUnmapped\" and the labels was Seating Unmapped.\n * A new business requirement, asks for called it Seating Mapped, so the values\n * must be inverted in order to continue working.\n */\nexport const YES_NO_INVERTED_ENUM_FILTER_TO_CID: Record =\n {\n [YesNoEnum.Yes]: ContentId.No,\n [YesNoEnum.No]: ContentId.Yes,\n };\n\nexport const AUTO_PRICING_RESULT_TYPES_OPTIONS_TO_CID: Record<\n AutoPricingResultType,\n ContentId\n> = {\n [AutoPricingResultType.None]: ContentId.NA,\n [AutoPricingResultType.PriceSuccess]: ContentId.Success,\n [AutoPricingResultType.PriceBelowFloor]: ContentId.PriceBelowFloor,\n [AutoPricingResultType.PriceAboveCeiling]: ContentId.PriceAboveCeiling,\n [AutoPricingResultType.PriceBelowMaxAllowedDrop]:\n ContentId.PriceBelowMaxAllowedDrop,\n [AutoPricingResultType.InsufficientComparables]:\n ContentId.InsufficientComparables,\n [AutoPricingResultType.CannotCalculateUndercut]:\n ContentId.CannotCalculateUndercut,\n [AutoPricingResultType.EffectiveCeilingBelowFloor]:\n ContentId.EffectiveCeilingBelowFloor,\n [AutoPricingResultType.MissingSeatScore]: ContentId.MissingSeatScore,\n [AutoPricingResultType.MissingUnitCost]: ContentId.MissingUnitCost,\n [AutoPricingResultType.MissingZone]: ContentId.MissingZone,\n [AutoPricingResultType.PriceHitHardFloor]: ContentId.PriceHitHardFloor,\n [AutoPricingResultType.PriceHitRelativeFloor]:\n ContentId.PriceHitRelativeFloor,\n [AutoPricingResultType.PriceHitMaxAllowedDrop]:\n ContentId.PriceHitMaxAllowedDrop,\n [AutoPricingResultType.ConfigRowMissing]: ContentId.MappingError,\n [AutoPricingResultType.SectionUnmapped]: ContentId.SectionUnmapped,\n};\n\nexport const AUTO_PRICING_RESULT_TYPES_OPTIONS_TO_COLOR: Record<\n AutoPricingResultType,\n string\n> = {\n [AutoPricingResultType.None]: vars.color.textDisabled,\n [AutoPricingResultType.PriceSuccess]: vars.color.borderSuccess,\n [AutoPricingResultType.PriceBelowFloor]: vars.color.borderWarning,\n [AutoPricingResultType.PriceAboveCeiling]: vars.color.borderWarning,\n [AutoPricingResultType.PriceBelowMaxAllowedDrop]: vars.color.borderWarning,\n [AutoPricingResultType.InsufficientComparables]: vars.color.borderWarning,\n [AutoPricingResultType.CannotCalculateUndercut]: vars.color.borderError,\n [AutoPricingResultType.EffectiveCeilingBelowFloor]: vars.color.borderError,\n [AutoPricingResultType.MissingSeatScore]: vars.color.borderError,\n [AutoPricingResultType.MissingUnitCost]: vars.color.borderError,\n [AutoPricingResultType.MissingZone]: vars.color.borderError,\n [AutoPricingResultType.PriceHitHardFloor]: vars.color.borderWarning,\n [AutoPricingResultType.PriceHitRelativeFloor]: vars.color.borderWarning,\n [AutoPricingResultType.PriceHitMaxAllowedDrop]: vars.color.borderWarning,\n [AutoPricingResultType.ConfigRowMissing]: vars.color.borderError,\n [AutoPricingResultType.SectionUnmapped]: vars.color.borderError,\n};\n\nexport const DELIVERY_OPTIONS_TO_CID: Record =\n {\n [DeliveryType.InApp]: ContentId.InApp,\n [DeliveryType.PDF]: DeliveryType.PDF, // PDF has no translation\n [DeliveryType.Paper]: ContentId.Paper,\n [DeliveryType.MemberCard]: ContentId.MemberCard,\n [DeliveryType.Wallet]: ContentId.Wallet,\n [DeliveryType.Custom]: ContentId.Custom,\n };\n\nexport const TICKET_TYPE_TO_CID: Record = {\n [TicketType.Barcode]: ContentId.Barcode,\n [TicketType.ETicket]: ContentId.ETicket,\n [TicketType.QRCode]: ContentId.QRCode,\n [TicketType.Transfer]: ContentId.Transfer,\n [TicketType.ETicketUrl]: ContentId.Wallet,\n [TicketType.SMPWallet]: ContentId.SMPWallet,\n [TicketType.Paper]: ContentId.Paper,\n [TicketType.Season]: ContentId.Season,\n [TicketType.Custom]: ContentId.Custom,\n};\n\nexport const PENDING_PROOF_STATE_TO_CID: Record =\n {\n [PendingProofState.PendingProof]: ContentId.ProofOfPurchasedRequired,\n [PendingProofState.PendingReview]: ContentId.PendingReview,\n [PendingProofState.Approved]: ContentId.Approved,\n };\n\nexport const PURCHASE_COST_TYPE_TO_CID: Record<\n PurchaseOrderCostType,\n ContentId\n> = {\n [PurchaseOrderCostType.Tax]: ContentId.TaxPaid,\n [PurchaseOrderCostType.Shipping]: ContentId.Shipping,\n [PurchaseOrderCostType.CreditCardFee]: ContentId.CreditCardFee,\n [PurchaseOrderCostType.BulkDiscount]: ContentId.BulkDiscount,\n};\n\nexport const SPLIT_TYPE_TO_CID: Record = {\n [SplitType.Any]: ContentId.Any,\n [SplitType.None]: ContentId.None,\n [SplitType.AvoidOne]: ContentId.AvoidOne,\n [SplitType.AvoidOneAndThree]: ContentId.AvoidOneAndThree,\n [SplitType.Pairs]: ContentId.Pairs,\n};\n\nexport const TAG_VALUE_TYPE_TO_CID: Record = {\n [TagsValueType.String]: ContentId.Text,\n [TagsValueType.Decimal]: ContentId.DecimalNumber,\n [TagsValueType.Int]: ContentId.WholeNumber,\n [TagsValueType.Boolean]: ContentId.TrueFalse,\n [TagsValueType.Url]: ContentId.Hyperlink,\n [TagsValueType.Marketplace]: ContentId.Marketplace,\n [TagsValueType.Date]: ContentId.Date,\n [TagsValueType.POSUser]: ContentId.Users,\n [TagsValueType.Vendor]: ContentId.Vendors,\n [TagsValueType.UserGroup]: ContentId.Teams,\n};\n\nexport const PAYMENT_METHOD_TYPE_TO_CID: Record<\n PurchasePaymentMethodType,\n ContentId | string\n> = {\n [PurchasePaymentMethodType.PayPal]: PurchasePaymentMethodType.PayPal, // this is a brand\n [PurchasePaymentMethodType.Check]: ContentId.Check,\n [PurchasePaymentMethodType.ECheck]: ContentId.ECheck,\n [PurchasePaymentMethodType.MoneyOrder]: ContentId.MoneyOrder,\n [PurchasePaymentMethodType.Card]: ContentId.CreditCard,\n [PurchasePaymentMethodType.Cash]: ContentId.Cash,\n [PurchasePaymentMethodType.Credit]: ContentId.Credit,\n [PurchasePaymentMethodType.COD]: ContentId.COD,\n [PurchasePaymentMethodType.BankTransfer]: ContentId.BankTransfer,\n [PurchasePaymentMethodType.DebitCard]: ContentId.DebitCard,\n [PurchasePaymentMethodType.CreditMemo]: ContentId.CreditBalance,\n [PurchasePaymentMethodType.DebitNote]: ContentId.DebitNote,\n [PurchasePaymentMethodType.Other]: ContentId.Other,\n};\n\nexport const TICKET_GROUP_EDIT_REASON_TO_CID: Record<\n TicketGroupEditReason,\n ContentId\n> = {\n [TicketGroupEditReason.AddTickets]: ContentId.AddTickets,\n [TicketGroupEditReason.AmendTickets]: ContentId.AmendTickets,\n [TicketGroupEditReason.CancelTickets]: ContentId.CancelTickets,\n [TicketGroupEditReason.ExchangeTickets]: ContentId.ExchangeTickets,\n [TicketGroupEditReason.EditEvent]: ContentId.ChangeEvent,\n};\n\nexport const LISTING_STATUS_TO_CID: Record = {\n [ListingStatus.Delisted]: ContentId.Delisted,\n [ListingStatus.DelistingPending]: ContentId.DelistingPending,\n [ListingStatus.DelistingFailed]: ContentId.ListedDelistFailed,\n [ListingStatus.Listed]: ContentId.Listed,\n [ListingStatus.ListingPending]: ContentId.ListingPending,\n [ListingStatus.ListingFailed]: ContentId.ListingFailed,\n [ListingStatus.FullySold]: ContentId.FullySold,\n [ListingStatus.Disabled]: ContentId.BroadcastDisabled,\n};\n\nexport const FULFILLMENT_STATE_TO_CID: Record<\n PointOfSaleFulfillmentState,\n ContentId\n> = {\n [PointOfSaleFulfillmentState.Ineligible]: ContentId.Ineligible,\n [PointOfSaleFulfillmentState.Pending]: ContentId.Pending,\n [PointOfSaleFulfillmentState.Processing]: ContentId.Processing,\n [PointOfSaleFulfillmentState.PendingPickup]: ContentId.PendingPickup,\n [PointOfSaleFulfillmentState.InTransit]: ContentId.InTransit,\n [PointOfSaleFulfillmentState.Fulfilled]: ContentId.Fulfilled,\n [PointOfSaleFulfillmentState.Resetted]: ContentId.PendingRefulfillment,\n [PointOfSaleFulfillmentState.Failed]: ContentId.Failed,\n};\n\nexport const LISTING_STATUS_WITH_ACTION_TO_CID: Record<\n ListingStatus,\n ContentId\n> = {\n [ListingStatus.Delisted]: ContentId.DelistedClickToList,\n [ListingStatus.DelistingPending]: ContentId.DelistingClickToCancel,\n [ListingStatus.DelistingFailed]: ContentId.DelistingFailedClickToTryAgain,\n [ListingStatus.Listed]: ContentId.ListedClickToDelist,\n [ListingStatus.ListingPending]: ContentId.ListingClickToCancel,\n [ListingStatus.ListingFailed]: ContentId.ListingFailedClickToTryAgain,\n [ListingStatus.FullySold]: ContentId.ListingFullSoldNoActionAvailable,\n [ListingStatus.Disabled]: ContentId.BroadcastDisabled,\n};\n\nexport const LISTING_TABLE_FLATTENED_COLUMN_ID_TO_CONTENT_ID: Record<\n ListingTableFlattenedColumnId,\n ContentId\n> = {\n [ListingTableFlattenedColumnId.Event]: ContentId.Event,\n [ListingTableFlattenedColumnId.Venue]: ContentId.Venue,\n [ListingTableFlattenedColumnId.Location]: ContentId.Location,\n [ListingTableFlattenedColumnId.EventDate]: ContentId.EventDate,\n};\n\nexport const LISTING_TABLE_COLUMN_ID_TO_CONTENT_ID: Record<\n ListingTableColumnId,\n ContentId | string\n> = {\n [ListingTableColumnId.Checkbox]: ContentId.Checkbox,\n [ListingTableColumnId.TicketClassColor]: ContentId.Zone,\n [ListingTableColumnId.Seating]: ContentId.Seating,\n [ListingTableColumnId.DeliveryType]: ContentId.Delivery,\n [ListingTableColumnId.ShownQuantity]: ContentId.Shown,\n [ListingTableColumnId.UnsoldQuantity]: ContentId.Unsold,\n [ListingTableColumnId.TicketCount]: ContentId.Total,\n [ListingTableColumnId.InHandDate]: 'IH',\n [ListingTableColumnId.UnitCost]: ContentId.UnitCost,\n [ListingTableColumnId.ListPrice]: ContentId.Proceeds,\n [ListingTableColumnId.AllInPrice]: ContentId.Price,\n [ListingTableColumnId.Actions]: ContentId.Actions,\n [ListingTableColumnId.ListingId]: ContentId.ListingId,\n [ListingTableColumnId.AutoPricing]: ContentId.PriceToMarket,\n [ListingTableColumnId.ProceedsFloor]: ContentId.ProceedsFloor,\n [ListingTableColumnId.ProceedsCeiling]: ContentId.ProceedsCeiling,\n [ListingTableColumnId.WebsiteFloor]: ContentId.WebsiteFloor,\n [ListingTableColumnId.WebsiteCeiling]: ContentId.WebsiteCeiling,\n [ListingTableColumnId.UndercutMode]: ContentId.UndercutMode,\n [ListingTableColumnId.UndercutAbsoluteAmount]:\n ContentId.UndercutAbsoluteAmount,\n [ListingTableColumnId.UndercutRelativeAmount]:\n ContentId.UndercutRelativeAmount,\n [ListingTableColumnId.UndercutNewPrice]: ContentId.MarketPrice,\n [ListingTableColumnId.CompListingMode]: ContentId.CompListingMode,\n [ListingTableColumnId.CompListingFloor]: ContentId.CompListingFloor,\n [ListingTableColumnId.CompListingCeiling]: ContentId.CompListingCeiling,\n [ListingTableColumnId.CompListingMinimumQuantity]:\n ContentId.CompListingMinQuantity,\n [ListingTableColumnId.CompListingExcludeFanInventory]:\n ContentId.ExcludeFanInventory,\n [ListingTableColumnId.OutlierMode]: ContentId.OutlierMode,\n [ListingTableColumnId.OutlierLimit]: ContentId.OutlierLimit,\n [ListingTableColumnId.OutlierFiltering]: ContentId.OutlierFiltering,\n [ListingTableColumnId.OutlierSpacing]: ContentId.OutlierSpacing,\n [ListingTableColumnId.CircuitBreakerMinCompListingCount]:\n ContentId.CompListingMinCount,\n [ListingTableColumnId.CircuitBreakerVelocity]: ContentId.Velocity,\n [ListingTableColumnId.CircuitBreakerVelocityHours]: ContentId.VelocityHours,\n [ListingTableColumnId.SeatingRow]: ContentId.Row,\n [ListingTableColumnId.SeatingSeats]: ContentId.Seats,\n [ListingTableColumnId.AutoPricingResultType]: ContentId.AutoPricingResult,\n [ListingTableColumnId.LastPriceUpdatedDate]: ContentId.LastPriceUpdatedDate,\n [ListingTableColumnId.WastedCost]: ContentId.WastedCost,\n [ListingTableColumnId.WastedTickets]: ContentId.WastedQty,\n [ListingTableColumnId.PurchaseId]: ContentId.ExternalPurchaseIdAbbreviated,\n [ListingTableColumnId.VendorAccount]: ContentId.VendorAccount,\n [ListingTableColumnId.MarketplaceVisibility]: ContentId.MarketplaceVisibility,\n [ListingTableColumnId.PurchaseCreatedBy]: ContentId.CreatedBy,\n [ListingTableColumnId.PurchasedBy]: ContentId.PurchasedBy,\n [ListingTableColumnId.PurchaseDate]: ContentId.PoDate,\n [ListingTableColumnId.RelativeRankPremium]: ContentId.RelativeRankPremium,\n [ListingTableColumnId.AbsoluteRankPremium]: ContentId.AbsoluteRankPremium,\n [ListingTableColumnId.UnsoldProceeds]: ContentId.UnsoldProceeds,\n [ListingTableColumnId.UnsoldCost]: ContentId.UnsoldCost,\n [ListingTableColumnId.SoldQty]: ContentId.SoldQty,\n [ListingTableColumnId.SoldCost]: ContentId.SoldCost,\n [ListingTableColumnId.TotalCost]: ContentId.TotalCost,\n [ListingTableColumnId.AutoFulfill]: ContentId.AutoFulfill,\n [ListingTableColumnId.SeatTraits]: ContentId.SeatTraits,\n [ListingTableColumnId.SplitType]: ContentId.SplitType,\n};\n\nexport const LISTING_REPORT_TABLE_COLUMN_ID_TO_CONTENT_ID: Record<\n ListingReportTableColumnId,\n ContentId | string\n> = {\n [ListingReportTableColumnId.Performer]: ContentId.Performer,\n [ListingReportTableColumnId.Venue]: ContentId.Venue,\n [ListingReportTableColumnId.Event]: ContentId.EventName,\n [ListingReportTableColumnId.UnsoldQuantity]: ContentId.UnsoldQty,\n [ListingReportTableColumnId.SoldQuantity]: ContentId.SoldQty,\n [ListingReportTableColumnId.TicketCount]: ContentId.TotalQty,\n [ListingReportTableColumnId.UnitCost]: ContentId.TotalUnitCost,\n [ListingReportTableColumnId.ListPrice]: ContentId.TotalProceeds,\n [ListingReportTableColumnId.AllInPrice]: ContentId.Price,\n [ListingReportTableColumnId.EventGenre]: ContentId.Genre,\n [ListingReportTableColumnId.EventCountry]: ContentId.Country,\n [ListingReportTableColumnId.EventCity]: ContentId.City,\n [ListingReportTableColumnId.SeatingSection]: ContentId.Section,\n [ListingReportTableColumnId.SeatingRow]: ContentId.Row,\n [ListingReportTableColumnId.SoldCost]: ContentId.SoldCost,\n [ListingReportTableColumnId.SoldProceeds]: ContentId.SoldProceeds,\n [ListingReportTableColumnId.UnsoldCost]: ContentId.UnsoldCost,\n [ListingReportTableColumnId.EventId]: ContentId.EventId,\n [ListingReportTableColumnId.Category]: ContentId.Category,\n [ListingReportTableColumnId.EventDate]: ContentId.EventDate,\n [ListingReportTableColumnId.EventStateProvince]: ContentId.StateProvince,\n [ListingReportTableColumnId.SaleId]: ContentId.SaleId,\n [ListingReportTableColumnId.HoldId]: ContentId.HoldId,\n [ListingReportTableColumnId.SeatingSeats]: ContentId.Seats,\n [ListingReportTableColumnId.DeliveryType]: ContentId.Delivery,\n [ListingReportTableColumnId.InHandDate]: 'IH',\n [ListingReportTableColumnId.PurchaseId]: ContentId.PoId,\n [ListingReportTableColumnId.PurchasedBy]: ContentId.PurchasedBy,\n [ListingReportTableColumnId.PurchaseDate]: ContentId.PoDate,\n [ListingReportTableColumnId.Vendor]: ContentId.Vendor,\n [ListingReportTableColumnId.SalePaymentState]: ContentId.PayState,\n [ListingReportTableColumnId.Charges]: ContentId.Charges,\n [ListingReportTableColumnId.Credits]: ContentId.Credits,\n [ListingReportTableColumnId.Fulfiller]: ContentId.FulfilledBy,\n [ListingReportTableColumnId.ListingId]: ContentId.ListingId,\n [ListingReportTableColumnId.PaymentMethodType]: ContentId.PaymentMethod,\n [ListingReportTableColumnId.PurchasePaymentStatus]: ContentId.POPaymentState,\n [ListingReportTableColumnId.Zone]: ContentId.Zone,\n [ListingReportTableColumnId.PricedBy]: ContentId.PricedBy,\n [ListingReportTableColumnId.InternalNotes]: ContentId.Notes,\n [ListingReportTableColumnId.InternalNotesPurchase]: ContentId.Notes,\n [ListingReportTableColumnId.VendorOrderId]:\n ContentId.ExternalPurchaseIdAbbreviated,\n [ListingReportTableColumnId.VendorAccountEmail]: ContentId.VendorAccount,\n [ListingReportTableColumnId.CancellationDatePurchase]:\n ContentId.CancellationDate,\n [ListingReportTableColumnId.PandL]: ContentId.PandL,\n [ListingReportTableColumnId.Margin]: ContentId.Margin,\n [ListingReportTableColumnId.PurchaseCreatedBy]: ContentId.POCreatedBy,\n};\n\nexport const LISTING_REPORT_TABLE_GROUPING_COLUMN_ID_TO_CONTENT_ID: Record<\n ListingReportTableGroupingColumnId,\n ContentId\n> = {\n [ListingReportTableGroupingColumnId.PerformerName]: ContentId.Performer,\n [ListingReportTableGroupingColumnId.VenueName]: ContentId.Venue,\n [ListingReportTableGroupingColumnId.EventName]: ContentId.EventName,\n [ListingReportTableGroupingColumnId.TopLevelCategoryName]: ContentId.Genre,\n [ListingReportTableGroupingColumnId.CountryName]: ContentId.Country,\n [ListingReportTableGroupingColumnId.CityName]: ContentId.City,\n [ListingReportTableGroupingColumnId.EventId]: ContentId.EventId,\n [ListingReportTableGroupingColumnId.LocalEventDateTime]: ContentId.EventDate,\n [ListingReportTableGroupingColumnId.StateProvince]: ContentId.StateProvince,\n [ListingReportTableGroupingColumnId.InternalNotes]: ContentId.PrivateNote,\n [ListingReportTableGroupingColumnId.ListingId]: ContentId.ListingId,\n [ListingReportTableGroupingColumnId.IsSeatSaver]: ContentId.SeatSaver,\n [ListingReportTableGroupingColumnId.IsNoFulfill]: ContentId.AutoFulfill,\n [ListingReportTableGroupingColumnId.PricerSellerUserId]: ContentId.PricedBy,\n [ListingReportTableGroupingColumnId.Section]: ContentId.Section,\n [ListingReportTableGroupingColumnId.SeatingRow]: ContentId.Row,\n [ListingReportTableGroupingColumnId.SeatFrom]: ContentId.SeatFrom,\n [ListingReportTableGroupingColumnId.SeatTo]: ContentId.SeatTo,\n};\n\nexport const LISTING_REPORT_TABLE_VALUE_COLUMN_ID_TO_CONTENT_ID: Record<\n ListingReportTableValueColumnId,\n ContentId\n> = {\n [ListingReportTableValueColumnId.UnsoldQuantity]: ContentId.UnsoldQty,\n [ListingReportTableValueColumnId.SoldQuantity]: ContentId.SoldQuantity,\n [ListingReportTableValueColumnId.TotalQuantity]: ContentId.TotalQuantity,\n [ListingReportTableValueColumnId.UnitAllInPrice]: ContentId.AllIn,\n [ListingReportTableValueColumnId.UnitNetProceeds]: ContentId.TotalNetProceeds,\n [ListingReportTableValueColumnId.SoldCost]: ContentId.SoldCost,\n [ListingReportTableValueColumnId.UnsoldCost]: ContentId.UnsoldCost,\n [ListingReportTableValueColumnId.UnitCost]: ContentId.UnitCost,\n [ListingReportTableValueColumnId.PurchaseOrderId]: ContentId.PoId,\n [ListingReportTableValueColumnId.PurchaseOrderDate]: ContentId.PoDate,\n [ListingReportTableValueColumnId.BuyerUserId]: ContentId.PurchasedBy,\n [ListingReportTableValueColumnId.PurchaseOrderVendorName]: ContentId.Vendor,\n [ListingReportTableValueColumnId.VendorOrderId]:\n ContentId.ExternalPurchaseIdAbbreviated,\n [ListingReportTableValueColumnId.VendorAccountEmail]: ContentId.VendorAccount,\n};\n\nexport const SALES_REPORT_TABLE_GROUPING_COLUMN_ID_TO_CONTENT_ID: Record<\n SalesReportTableGroupingColumnId,\n ContentId\n> = {\n [SalesReportTableGroupingColumnId.PerformerName]: ContentId.Performer,\n [SalesReportTableGroupingColumnId.VenueName]: ContentId.Venue,\n [SalesReportTableGroupingColumnId.EventName]: ContentId.EventName,\n [SalesReportTableGroupingColumnId.TopLevelCategoryName]: ContentId.Genre,\n [SalesReportTableGroupingColumnId.CountryName]: ContentId.Country,\n [SalesReportTableGroupingColumnId.CityName]: ContentId.City,\n [SalesReportTableGroupingColumnId.Section]: ContentId.Section,\n [SalesReportTableGroupingColumnId.SeatingRow]: ContentId.Row,\n [SalesReportTableGroupingColumnId.SeatFrom]: ContentId.SeatFrom,\n [SalesReportTableGroupingColumnId.SeatTo]: ContentId.SeatTo,\n [SalesReportTableGroupingColumnId.EventId]: ContentId.EventId,\n [SalesReportTableGroupingColumnId.LocalEventDateTime]: ContentId.EventDate,\n [SalesReportTableGroupingColumnId.StateProvince]: ContentId.StateProvince,\n [SalesReportTableGroupingColumnId.SaleId]: ContentId.SaleId,\n [SalesReportTableGroupingColumnId.InternalNotes]: ContentId.PrivateNote,\n [SalesReportTableGroupingColumnId.SaleDate]: ContentId.SaleDate,\n [SalesReportTableGroupingColumnId.SaleStatusName]: ContentId.SaleStatus,\n [SalesReportTableGroupingColumnId.PaymentReferenceId]: ContentId.PayRef,\n [SalesReportTableGroupingColumnId.TicketTypeName]: ContentId.Ticket,\n [SalesReportTableGroupingColumnId.InHandDate]: ContentId.InHandDate,\n [SalesReportTableGroupingColumnId.LastPaymentDate]: ContentId.PaymentDate,\n [SalesReportTableGroupingColumnId.CancellationDate]:\n ContentId.CancellationDate,\n [SalesReportTableGroupingColumnId.FulfillerSellerUserId]:\n ContentId.FulfilledBy,\n [SalesReportTableGroupingColumnId.FulfillmentDate]: ContentId.FulfillmentDate,\n [SalesReportTableGroupingColumnId.MarketplacePaymentStateName]:\n ContentId.PayState,\n [SalesReportTableGroupingColumnId.MarketplaceName]: ContentId.Marketplace,\n [SalesReportTableGroupingColumnId.MarketplaceSaleId]:\n ContentId.ExternalSaleId,\n [SalesReportTableGroupingColumnId.IsSeatSaver]: ContentId.SeatSaver,\n [SalesReportTableGroupingColumnId.IsNoFulfill]: ContentId.AutoFulfill,\n [SalesReportTableGroupingColumnId.SaleMonth]: ContentId.SaleMonth,\n [SalesReportTableGroupingColumnId.SaleWeek]: ContentId.SaleWeek,\n [SalesReportTableGroupingColumnId.SaleDay]: ContentId.SaleDay,\n};\n\nexport const SALES_REPORT_TABLE_VALUE_COLUMN_ID_TO_CONTENT_ID: Record<\n SalesReportTableValueColumnId,\n ContentId\n> = {\n [SalesReportTableValueColumnId.QuantitySold]: ContentId.SoldQty,\n [SalesReportTableValueColumnId.TotalNetProceeds]: ContentId.TotalNetProceeds,\n [SalesReportTableValueColumnId.Charges]: ContentId.Charges,\n [SalesReportTableValueColumnId.Credits]: ContentId.Credits,\n [SalesReportTableValueColumnId.OutstandingBalance]:\n ContentId.OutstandingBalance,\n [SalesReportTableValueColumnId.PandL]: ContentId.PandL,\n [SalesReportTableValueColumnId.TotalCost]: ContentId.TotalCost,\n [SalesReportTableValueColumnId.Margin]: ContentId.Margin,\n};\n\nexport const COMMISSION_REPORT_TABLE_GROUPING_COLUMN_ID_TO_CONTENT_ID: Record<\n CommissionReportTableGroupingColumnId,\n ContentId\n> = {\n [CommissionReportTableGroupingColumnId.SaleId]: ContentId.SaleId,\n [CommissionReportTableGroupingColumnId.MarketplaceName]:\n ContentId.Marketplace,\n [CommissionReportTableGroupingColumnId.MarketplaceSaleId]:\n ContentId.ExternalSaleId,\n [CommissionReportTableGroupingColumnId.Commissioner]: ContentId.Commissioner,\n [CommissionReportTableGroupingColumnId.EventName]: ContentId.EventName,\n [CommissionReportTableGroupingColumnId.EventDateLocal]: ContentId.EventDate,\n [CommissionReportTableGroupingColumnId.VenueName]: ContentId.VenueName,\n [CommissionReportTableGroupingColumnId.EventId]: ContentId.EventId,\n [CommissionReportTableGroupingColumnId.EventStateName]: ContentId.EventState,\n [CommissionReportTableGroupingColumnId.SaleStatusName]: ContentId.SaleStatus,\n [CommissionReportTableGroupingColumnId.Section]: ContentId.Section,\n [CommissionReportTableGroupingColumnId.SeatingRow]: ContentId.Row,\n [CommissionReportTableGroupingColumnId.SeatFrom]: ContentId.SeatFrom,\n [CommissionReportTableGroupingColumnId.SeatTo]: ContentId.SeatTo,\n [CommissionReportTableGroupingColumnId.FulfillmentDate]:\n ContentId.FulfillmentDate,\n [CommissionReportTableGroupingColumnId.LastPaymentDate]:\n ContentId.PaymentDate,\n [CommissionReportTableGroupingColumnId.NetCommissionRate]:\n ContentId.NetCommissionRate,\n [CommissionReportTableGroupingColumnId.NetCommissionRateOverride]:\n ContentId.NetCommissionRateOverride,\n [CommissionReportTableGroupingColumnId.SaleBasisShare]:\n ContentId.SaleBasisShare,\n [CommissionReportTableGroupingColumnId.IsCommissionEligible]:\n ContentId.CommissionEligible,\n [CommissionReportTableGroupingColumnId.CommissionEligibilityDate]:\n ContentId.CommissionEligibilityDate,\n};\n\nexport const COMMISSION_REPORT_TABLE_VALUE_COLUMN_ID_TO_CONTENT_ID: Record<\n CommissionReportTableValueColumnId,\n ContentId\n> = {\n [CommissionReportTableValueColumnId.TotalNetProceeds]:\n ContentId.TotalNetProceeds,\n [CommissionReportTableValueColumnId.Credits]: ContentId.Credits,\n [CommissionReportTableValueColumnId.TotalCost]: ContentId.TotalCost,\n [CommissionReportTableValueColumnId.Charges]: ContentId.Charges,\n [CommissionReportTableValueColumnId.CommissionerCostsAndCharges]:\n ContentId.CommissionerCostsAndCharges,\n [CommissionReportTableValueColumnId.CommissionerProceedsAndCredits]:\n ContentId.CommissionerProceedsAndCredits,\n [CommissionReportTableValueColumnId.CommissionerProfitAndLoss]:\n ContentId.CommissionerProfitAndLoss,\n [CommissionReportTableValueColumnId.OriginalProceeds]:\n ContentId.OriginalProceeds,\n};\n\nexport const SITE_THEME_OPTION_TO_CID_MAP: Record =\n {\n [SiteThemeOption.System]: ContentId.SyncWithSystemSettings,\n [SiteThemeOption.Light]: ContentId.Light,\n [SiteThemeOption.Dark]: ContentId.Dark,\n };\n\nexport const EVENTS_TABLE_COLUMN_ID_TO_CONTENT_ID: Record<\n EventsTableColumnId,\n ContentId\n> = {\n [EventsTableColumnId.Checkbox]: ContentId.Checkbox,\n [EventsTableColumnId.Event]: ContentId.EventName,\n [EventsTableColumnId.Venue]: ContentId.Venue,\n [EventsTableColumnId.Location]: ContentId.Location,\n [EventsTableColumnId.Date]: ContentId.EventDate,\n [EventsTableColumnId.TotalQty]: ContentId.TotalQty,\n [EventsTableColumnId.SoldQty]: ContentId.SoldQty,\n [EventsTableColumnId.ActualSTR]: ContentId.SellThroughRate,\n [EventsTableColumnId.Revenue]: ContentId.SoldProceeds,\n [EventsTableColumnId.SoldCost]: ContentId.SoldCost,\n [EventsTableColumnId.Profit]: ContentId.SoldProfit,\n [EventsTableColumnId.LiftPercentage]: ContentId.LiftPercentage,\n [EventsTableColumnId.ATP]: ContentId.SoldAverageTicketPrice,\n [EventsTableColumnId.ListedQty]: ContentId.ListedQty,\n [EventsTableColumnId.ListedAtp]: ContentId.ListedAverageTicketPrice,\n [EventsTableColumnId.UnsoldQty]: ContentId.UnsoldQty,\n [EventsTableColumnId.Action]: ContentId.Actions,\n [EventsTableColumnId.UnsoldProceeds]: ContentId.UnsoldProceeds,\n [EventsTableColumnId.UnsoldCost]: ContentId.UnsoldCost,\n [EventsTableColumnId.TotalCost]: ContentId.TotalCost,\n [EventsTableColumnId.LastPriceUpdatedDate]: ContentId.LastPriceUpdatedDate,\n};\n\nexport const SALE_TABLE_COLUMN_ID_TO_CONTENT_ID: Record<\n SalesTableColumnId,\n ContentId\n> = {\n [SalesTableColumnId.Checkbox]: ContentId.Checkbox,\n [SalesTableColumnId.Actions]: ContentId.Actions,\n [SalesTableColumnId.InHandDate]: ContentId.InHandDate,\n [SalesTableColumnId.OrderDate]: ContentId.SaleDate,\n [SalesTableColumnId.Proceeds]: ContentId.SoldProceeds,\n [SalesTableColumnId.QuantitySold]: ContentId.SoldQty,\n [SalesTableColumnId.Sale]: ContentId.Sale,\n [SalesTableColumnId.Seating]: ContentId.Seating,\n [SalesTableColumnId.Row]: ContentId.Row,\n [SalesTableColumnId.Seats]: ContentId.Seats,\n [SalesTableColumnId.Status]: ContentId.SaleStatus,\n [SalesTableColumnId.TicketType]: ContentId.Ticket,\n [SalesTableColumnId.SoldTicketCost]: ContentId.SoldCost,\n [SalesTableColumnId.Charges]: ContentId.Charges,\n [SalesTableColumnId.Credits]: ContentId.Credits,\n [SalesTableColumnId.PandL]: ContentId.PandL,\n [SalesTableColumnId.Margin]: ContentId.Margin,\n [SalesTableColumnId.PurchaseCreatedBy]: ContentId.POCreatedBy,\n [SalesTableColumnId.PurchasedBy]: ContentId.PurchasedBy,\n [SalesTableColumnId.PurchaseDate]: ContentId.PoDate,\n [SalesTableColumnId.PaymentState]: ContentId.PayState,\n [SalesTableColumnId.PaymentReceived]: ContentId.PayRec,\n [SalesTableColumnId.PaymentReferenceId]: ContentId.PayRef,\n [SalesTableColumnId.FulfillmentDate]: ContentId.FulfillmentDate,\n [SalesTableColumnId.AutoFulfill]: ContentId.AutoFulfill,\n [SalesTableColumnId.VendorOrderId]: ContentId.ExternalPurchaseIdAbbreviated,\n [SalesTableColumnId.VendorAccountEmail]: ContentId.VendorAccount,\n [SalesTableColumnId.OriginatedBy]: ContentId.OriginatedBy,\n [SalesTableColumnId.TotalPaymentsAmount]: ContentId.PaymentsAmount,\n [SalesTableColumnId.TotalConvertedPaymentsAmount]:\n ContentId.ConvertedPaymentsAmount,\n [SalesTableColumnId.WastedQuantity]: ContentId.WastedQty,\n};\n\nexport const SALE_TABLE_FLATTENED_COLUMN_ID_TO_CONTENT_ID: Record<\n SalesTableFlattenedColumnId,\n ContentId\n> = {\n [SalesTableFlattenedColumnId.Event]: ContentId.Event,\n [SalesTableFlattenedColumnId.Venue]: ContentId.Venue,\n [SalesTableFlattenedColumnId.Location]: ContentId.Location,\n [SalesTableFlattenedColumnId.EventDate]: ContentId.EventDate,\n};\n\nexport const SALE_REPORT_TABLE_COLUMN_ID_TO_CONTENT_ID: Record<\n SalesReportTableColumnId,\n ContentId\n> = {\n [SalesReportTableColumnId.Performer]: ContentId.Performer,\n [SalesReportTableColumnId.Venue]: ContentId.Venue,\n [SalesReportTableColumnId.Event]: ContentId.EventName,\n [SalesReportTableColumnId.QuantitySold]: ContentId.SoldQty,\n [SalesReportTableColumnId.Proceeds]: ContentId.SoldProceeds,\n [SalesReportTableColumnId.EventGenre]: ContentId.Genre,\n [SalesReportTableColumnId.EventCountry]: ContentId.Country,\n [SalesReportTableColumnId.EventCity]: ContentId.City,\n [SalesReportTableColumnId.SeatingSection]: ContentId.Section,\n [SalesReportTableColumnId.SeatingRow]: ContentId.Row,\n [SalesReportTableColumnId.SaleMarketplace]: ContentId.Marketplace,\n [SalesReportTableColumnId.SaleMonth]: ContentId.Month,\n [SalesReportTableColumnId.SaleWeek]: ContentId.WeekOfYear,\n [SalesReportTableColumnId.SaleDay]: ContentId.Day,\n [SalesReportTableColumnId.SoldTicketCost]: ContentId.SoldCost,\n [SalesReportTableColumnId.Charges]: ContentId.Charges,\n [SalesReportTableColumnId.Credits]: ContentId.Credits,\n [SalesReportTableColumnId.EventId]: ContentId.EventId,\n [SalesReportTableColumnId.Category]: ContentId.Category,\n [SalesReportTableColumnId.EventDate]: ContentId.EventDate,\n [SalesReportTableColumnId.EventStateProvince]: ContentId.StateProvince,\n [SalesReportTableColumnId.SaleId]: ContentId.SaleId,\n [SalesReportTableColumnId.MarketplaceSaleId]: ContentId.ExternalSaleId,\n [SalesReportTableColumnId.Status]: ContentId.SaleStatus,\n [SalesReportTableColumnId.TicketType]: ContentId.Ticket,\n [SalesReportTableColumnId.InHandDate]: ContentId.InHandDate,\n [SalesReportTableColumnId.PaymentState]: ContentId.PayState,\n [SalesReportTableColumnId.PaymentReceived]: ContentId.PayRec,\n [SalesReportTableColumnId.PaymentReferenceId]: ContentId.PayRef,\n [SalesReportTableColumnId.Fulfiller]: ContentId.FulfilledBy,\n [SalesReportTableColumnId.PurchaseId]: ContentId.PoId,\n [SalesReportTableColumnId.PurchasedBy]: ContentId.PurchasedBy,\n [SalesReportTableColumnId.Vendor]: ContentId.Vendor,\n [SalesReportTableColumnId.SeatingSeats]: ContentId.Seats,\n [SalesReportTableColumnId.OrderDate]: ContentId.SaleDate,\n [SalesReportTableColumnId.PricedBy]: ContentId.PricedBy,\n [SalesReportTableColumnId.CurrencyCode]: ContentId.Currency,\n [SalesReportTableColumnId.PaymentDate]: ContentId.PaymentDate,\n [SalesReportTableColumnId.FulfillmentDate]: ContentId.FulfillmentDate,\n [SalesReportTableColumnId.VendorAccountEmail]: ContentId.VendorAccount,\n [SalesReportTableColumnId.InternalNotes]: ContentId.Notes,\n [SalesReportTableColumnId.CancellationDate]: ContentId.CancellationDate,\n [SalesReportTableColumnId.OutstandingBalance]: ContentId.OutstandingBalance,\n [SalesReportTableColumnId.PandL]: ContentId.PandL,\n [SalesReportTableColumnId.Margin]: ContentId.Margin,\n [SalesReportTableColumnId.PurchaseCreatedBy]: ContentId.POCreatedBy,\n [SalesReportTableColumnId.PurchaseDate]: ContentId.PoDate,\n [SalesReportTableColumnId.TicketId]: ContentId.TicketId,\n [SalesReportTableColumnId.TicketGroupId]: ContentId.TicketGroupId,\n [SalesReportTableColumnId.CommissionUser]: ContentId.Commissioner,\n [SalesReportTableColumnId.CommissionPercent]: ContentId.Commission,\n [SalesReportTableColumnId.CommissionShare]: ContentId.Share,\n [SalesReportTableColumnId.MarketplacePaymentTerms]:\n ContentId.MarketplacePaymentTerms,\n};\n\nexport const ADGROUPS_TABLE_COLUMN_ID_TO_CONTENT_ID: Record<\n AdGroupsTableColumnId,\n ContentId\n> = {\n [AdGroupsTableColumnId.Name]: ContentId.Name,\n [AdGroupsTableColumnId.State]: ContentId.State,\n [AdGroupsTableColumnId.BaseBid]: ContentId.BaseBid,\n [AdGroupsTableColumnId.MaxBid]: ContentId.MaxBid,\n [AdGroupsTableColumnId.DailyBudget]: ContentId.DailyBudget,\n [AdGroupsTableColumnId.Genre]: ContentId.Genre,\n [AdGroupsTableColumnId.Performer]: ContentId.Performer,\n [AdGroupsTableColumnId.Venue]: ContentId.Venue,\n [AdGroupsTableColumnId.Section]: ContentId.Section,\n [AdGroupsTableColumnId.TicketClass]: ContentId.TicketClass,\n [AdGroupsTableColumnId.Listing]: ContentId.Listing,\n [AdGroupsTableColumnId.Event]: ContentId.Event,\n [AdGroupsTableColumnId.BidModifier]: ContentId.BidModifier,\n [AdGroupsTableColumnId.AdSpend]: ContentId.AdSpend,\n [AdGroupsTableColumnId.SoldProceeds]: ContentId.SoldProceeds,\n [AdGroupsTableColumnId.SoldQty]: ContentId.SoldQty,\n [AdGroupsTableColumnId.Actions]: ContentId.Actions,\n};\n\nexport const ADCAMPAIGNS_TABLE_COLUMN_ID_TO_CONTENT_ID: Record<\n AdCampaignsTableColumnId,\n ContentId\n> = {\n [AdCampaignsTableColumnId.Name]: ContentId.Name,\n [AdCampaignsTableColumnId.State]: ContentId.State,\n [AdCampaignsTableColumnId.Budget]: ContentId.Budget,\n [AdCampaignsTableColumnId.StartDateTime]: ContentId.StartDateTime,\n [AdCampaignsTableColumnId.EndDateTime]: ContentId.EndDateTime,\n [AdCampaignsTableColumnId.AdSpend]: ContentId.AdSpend,\n [AdCampaignsTableColumnId.SoldProceeds]: ContentId.SoldProceeds,\n [AdCampaignsTableColumnId.SoldQty]: ContentId.SoldQty,\n [AdCampaignsTableColumnId.Actions]: ContentId.Actions,\n};\n\nexport const PURCHASE_TABLE_COLUMN_ID_TO_CONTENT_ID: Record<\n PurchasesTableColumnId | PurchaseTableColumnGroupId,\n ContentId | string\n> = {\n [PurchasesTableColumnId.BuyerUserId]: ContentId.PurchasedBy,\n [PurchasesTableColumnId.Checkbox]: ContentId.Checkbox,\n [PurchasesTableColumnId.AccordianToggle]: ContentId.AccordianToggle,\n [PurchasesTableColumnId.Id]: ContentId.Id,\n [PurchasesTableColumnId.Payment]: ContentId.PmtMethod,\n [PurchasesTableColumnId.PaymentStatus]: ContentId.PmtState,\n [PurchasesTableColumnId.PurchaseDate]: ContentId.PoDate,\n [PurchasesTableColumnId.QualityControlState]: 'QC',\n [PurchasesTableColumnId.TotalCost]: ContentId.TotalCost,\n [PurchasesTableColumnId.UnitCost]: ContentId.UnitCost,\n [PurchasesTableColumnId.VendorOrderId]:\n ContentId.ExternalPurchaseIdAbbreviated,\n [PurchasesTableColumnId.Tickets]: ContentId.QuantityAbbreviated,\n [PurchasesTableColumnId.Orders]: ContentId.TicketGroups,\n [PurchasesTableColumnId.Shipment]: ContentId.Delivery,\n [PurchasesTableColumnId.Cost]: ContentId.TotalCost,\n [PurchasesTableColumnId.Actions]: ContentId.Actions,\n [PurchasesTableColumnId.VendorAccountEmail]: ContentId.VendorAccount,\n [PurchasesTableColumnId.CreatedBy]: ContentId.CreatedBy,\n [PurchasesTableColumnId.Event]: ContentId.Event,\n [PurchasesTableColumnId.Venue]: ContentId.Venue,\n [PurchasesTableColumnId.EventDate]: ContentId.EventDate,\n [PurchasesTableColumnId.Seating]: ContentId.Seating,\n [PurchasesTableColumnId.Row]: ContentId.Row,\n [PurchasesTableColumnId.Seats]: ContentId.Seats,\n [PurchaseTableColumnGroupId.TicketGroup]: ContentId.TicketGroup,\n [PurchasesTableColumnId.TotalPayment]: ContentId.PmtAmount,\n [PurchasesTableColumnId.TotalConvertedPayment]: ContentId.ConvPmtAmt,\n [PurchasesTableColumnId.PaymentConversionRate]: ContentId.FXRate,\n [PurchasesTableColumnId.Commissions]: ContentId.Commissions,\n [PurchasesTableColumnId.SeatTraits]: ContentId.SeatTraits,\n};\n\nexport const PAYMENTS_TABLE_COLUMN_ID_TO_CONTENT_ID: Record<\n MarketplacePaymentsTableColumnId,\n ContentId | string\n> = {\n [MarketplacePaymentsTableColumnId.PaymentReferenceID]:\n ContentId.PaymentReferenceID,\n [MarketplacePaymentsTableColumnId.PaymentAmount]: ContentId.PaymentAmount,\n [MarketplacePaymentsTableColumnId.PaymentDate]: ContentId.PaymentDate,\n [MarketplacePaymentsTableColumnId.State]: ContentId.State,\n [MarketplacePaymentsTableColumnId.CreditAmount]: ContentId.CreditAmount,\n [MarketplacePaymentsTableColumnId.ProceedsAmount]: ContentId.ProceedsAmount,\n [MarketplacePaymentsTableColumnId.ChargeAmount]: ContentId.ChargeAmount,\n [MarketplacePaymentsTableColumnId.Marketplace]: ContentId.Marketplace,\n [MarketplacePaymentsTableColumnId.ConvertedPaymentsAmount]:\n ContentId.ConvertedPaymentsAmount,\n [MarketplacePaymentsTableColumnId.Actions]: ContentId.Actions,\n};\n\nexport const ON_SALE_EVENT_TABLE_COLUMN_ID_CONTENT_ID: Record<\n OnSaleEventsTableColumnId,\n ContentId | string\n> = {\n [ListingTableColumnId.Checkbox]: ContentId.Checkbox,\n [OnSaleEventsTableColumnId.Event]: ContentId.EventName,\n [OnSaleEventsTableColumnId.Venue]: ContentId.Venue,\n [OnSaleEventsTableColumnId.Location]: ContentId.Location,\n [OnSaleEventsTableColumnId.OnSaleDate]: ContentId.OnSaleDate,\n [OnSaleEventsTableColumnId.RawPreSaleDate]: ContentId.PreSaleDate,\n [OnSaleEventsTableColumnId.Date]: ContentId.EventDate,\n [OnSaleEventsTableColumnId.ListingCount]: ContentId.ListingQty,\n [OnSaleEventsTableColumnId.TicketCount]: ContentId.TicketQty,\n [OnSaleEventsTableColumnId.UnitNetProceedsMin]: ContentId.PriceMin,\n [OnSaleEventsTableColumnId.UnitNetProceedsP25]: ContentId.PriceP25,\n [OnSaleEventsTableColumnId.UnitNetProceedsP50]: ContentId.PriceP50,\n // TODO: @tianxu Temporary hardcode the texts, need to make the map support formatted contents\n [OnSaleEventsTableColumnId.VisitsLastHour]: 'Visits L1H',\n [OnSaleEventsTableColumnId.VisitsLastDay]: 'Visits L24H',\n [OnSaleEventsTableColumnId.VisitsLast3Days]: 'Visits L3D',\n [OnSaleEventsTableColumnId.TransactionsLastHour]: 'Visits L7H',\n [OnSaleEventsTableColumnId.VisitsLast7Days]: 'Trans. L1H',\n [OnSaleEventsTableColumnId.TransactionsLastDay]: 'Trans. L24H',\n [OnSaleEventsTableColumnId.TransactionsLast3Days]: 'Trans. L3D',\n [OnSaleEventsTableColumnId.TransactionsLast7Days]: 'Trans. L7D',\n [OnSaleEventsTableColumnId.Action]: ContentId.Actions,\n};\n\nexport type ListingFormulaFieldsListing =\n | ListingFormulaFields.availableQuantity\n | ListingFormulaFields.ticketCount\n | ListingFormulaFields.unitCost\n | ListingFormulaFields.listPrice\n | ListingFormulaFields.allInPrice\n | ListingFormulaFields.netProceedsFloor\n | ListingFormulaFields.netProceedsCeiling\n | ListingFormulaFields.websiteFloor\n | ListingFormulaFields.websiteCeiling\n | ListingFormulaFields.undercutAbsoluteAmount\n | ListingFormulaFields.undercutRelativeAmount\n | ListingFormulaFields.compListingFloor\n | ListingFormulaFields.compListingCeiling;\n\nexport const LISTING_FORMULA_FIELDS_TO_CID: Record<\n ListingFormulaFieldsListing,\n ContentId\n> = {\n ['availableQuantity']: ContentId.Remaining,\n ['ticketCount']: ContentId.Original,\n ['unitCost']: ContentId.UnitCost,\n ['listPrice']: ContentId.Proceeds,\n ['allInPrice']: ContentId.Price,\n ['netProceedsFloor']: ContentId.ProceedsFloor,\n ['netProceedsCeiling']: ContentId.ProceedsCeiling,\n ['websiteFloor']: ContentId.Price,\n ['websiteCeiling']: ContentId.WebsiteCeiling,\n ['undercutAbsoluteAmount']: ContentId.UndercutAbsoluteAmount,\n ['undercutRelativeAmount']: ContentId.UndercutRelativeAmount,\n ['compListingFloor']: ContentId.CompListingFloor,\n ['compListingCeiling']: ContentId.CompListingCeiling,\n};\n\nexport type ListingFormulaFieldsListingReportMetrics =\n | ListingFormulaFields.availableQuantity\n | ListingFormulaFields.ticketCount\n | ListingFormulaFields.unitCost\n | ListingFormulaFields.listPrice\n | ListingFormulaFields.allInPrice\n | ListingFormulaFields.soldQuantity\n | ListingFormulaFields.soldCost\n | ListingFormulaFields.unsoldCost\n | ListingFormulaFields.soldProceeds;\n\nexport const LISTING_REPORT_FORMULA_FIELDS_TO_CID: Record<\n ListingFormulaFieldsListingReportMetrics,\n ContentId\n> = {\n ['availableQuantity']: ContentId.UnsoldQty,\n ['soldQuantity']: ContentId.SoldQty,\n ['ticketCount']: ContentId.TotalQty,\n ['soldProceeds']: ContentId.SoldProceeds,\n ['listPrice']: ContentId.TotalProceeds,\n ['allInPrice']: ContentId.Price,\n ['soldCost']: ContentId.SoldCost,\n ['unsoldCost']: ContentId.UnsoldCost,\n ['unitCost']: ContentId.TotalCost,\n};\n\nexport const SALE_FORMULA_FIELDS_TO_CID: Record<\n keyof SaleFormulaFields,\n ContentId\n> = {\n ['quantitySold']: ContentId.SoldQty,\n ['totalNetProceeds']: ContentId.SoldProceeds,\n ['charges']: ContentId.Charges,\n ['credits']: ContentId.Credits,\n ['soldTicketCost']: ContentId.SoldCost,\n ['pandL']: ContentId.PandL,\n ['margin']: ContentId.Margin,\n};\n\nexport const EVENTS_FORMULA_FIELDS_TO_CID: Record = {\n totalListedQuantity: ContentId.ListedQty,\n totalSoldQuantity: ContentId.SoldQty,\n totalUnsoldQuantity: ContentId.UnsoldQty,\n totalTicketQuantity: ContentId.TotalQty,\n listedAtp: ContentId.ListedAverageTicketPrice,\n totalAtp: ContentId.SoldAverageTicketPrice,\n revenue: ContentId.SoldProceeds,\n totalSoldCost: ContentId.SoldCost,\n totalGrossProfit: ContentId.SoldProfit,\n actualStr: ContentId.SellThroughRate,\n liftPercentage: ContentId.LiftPercentage,\n};\n\nexport const LISTING_GROUPING_TO_CID: Record = {\n [GroupingType.Custom]: ContentId.Custom,\n [GroupingType.Section]: ContentId.Section,\n [GroupingType.Zone]: ContentId.Zone,\n [GroupingType.Row]: ContentId.Row,\n [GroupingType.SeatScore]: ContentId.SeatScore,\n [GroupingType.Quantity]: ContentId.UnsoldQuantity,\n [GroupingType.UnitCost]: ContentId.UnitCost,\n [GroupingType.None]: ContentId.None,\n};\n\nexport const BUCKET_OPTIONS_TO_CID: Record = {\n [BucketType.None]: ContentId.None,\n [BucketType.Clusters]: ContentId.Clusters,\n [BucketType.SameSize]: ContentId.SameSize,\n};\n\nexport const NOTIFICATION_TYPE_TO_CID: Record<\n NotificationType,\n ContentId | FormatContentId\n> = {\n [NotificationType.SaleNew]: ContentId.NotificationTypeSaleNew,\n [NotificationType.SaleFulfilmentFailed]:\n ContentId.NotificationTypeSaleFulfilmentFailed,\n [NotificationType.SaleMarketplaceCancelled]:\n ContentId.NotificationTypeSaleMarketplaceCancelled,\n [NotificationType.ListingHideSeatsFailed]:\n ContentId.NotificationTypeListingHideSeatsFailed,\n [NotificationType.ListingUpdateAllInPriceFailed]:\n FormatContentId.NotificationTypeListingUpdateAllInPriceFailed,\n [NotificationType.ListingUpdateInHandDateFailed]:\n FormatContentId.NotificationTypeListingUpdateInHandDateFailed,\n [NotificationType.ListingUpdateSplitTypeFailed]:\n FormatContentId.NotificationTypeListingUpdateSplitTypeFailed,\n [NotificationType.ListingUpdateDeliveryTypeFailed]:\n ContentId.NotificationTypeListingUpdateDeliveryTypeFailed,\n [NotificationType.ListingUpdateUnitNetProceedsFailed]:\n FormatContentId.NotificationTypeListingUpdateUnitNetProceedsFailed,\n [NotificationType.ListingBroadcastFailed]:\n FormatContentId.NotificationTypeListingBroadcastFailed,\n [NotificationType.ListingUnbroadcastFailed]:\n FormatContentId.NotificationTypeListingUnbroadcastFailed,\n [NotificationType.ListingMergeFailed]:\n ContentId.NotificationTypeListingMergeFailed,\n [NotificationType.ListingSplitFailed]:\n ContentId.NotificationTypeListingSplitFailed,\n [NotificationType.ListingPriceUpdate]:\n ContentId.NotificationTypeListingPriceUpdate,\n [NotificationType.AutopriceBelowFloor]:\n ContentId.NotificationTypeAutopriceBelowFloor,\n [NotificationType.AutopriceInsufficientCompListings]:\n ContentId.NotificationTypeAutopriceInsufficientCompListings,\n [NotificationType.AutopriceFirebrake]:\n ContentId.NotificationTypeAutopriceFirebrake,\n [NotificationType.SellerSupportCaseNewReply]:\n FormatContentId.NotificationTypeSellerSupportCaseNewReply,\n};\n\nexport const ACTION_OUTBOX_ENTITY_TYPE_TO_CID: Record<\n ActionOutboxEntityType,\n ContentId\n> = {\n [ActionOutboxEntityType.Listing]: ContentId.Listing,\n [ActionOutboxEntityType.Sale]: ContentId.Sale,\n [ActionOutboxEntityType.Purchase]: ContentId.Purchase,\n [ActionOutboxEntityType.SellerSupportCase]: ContentId.SellerSupportCase,\n [ActionOutboxEntityType.Document]: ContentId.Document,\n [ActionOutboxEntityType.SellerEvent]: ContentId.Event,\n [ActionOutboxEntityType.InboundEmail]: ContentId.Email,\n [ActionOutboxEntityType.TicketGroup]: ContentId.TicketGroup,\n};\n\nexport const ACTIVITY_LOG_STATE_TO_CID: Record<\n MarketplaceOperationResultState,\n ContentId\n> = {\n [MarketplaceOperationResultState.Succeeded]: ContentId.Succeeded,\n [MarketplaceOperationResultState.FailedAndRequiresSellerAction]:\n ContentId.FailedAndRequiresSellerAction,\n [MarketplaceOperationResultState.FailedWithNonRetryableError]:\n ContentId.FailedWithNonRetryableError,\n [MarketplaceOperationResultState.FailedWithRetryableError]:\n ContentId.FailedWithRetryableError,\n [MarketplaceOperationResultState.Skipped]: ContentId.Skipped,\n [MarketplaceOperationResultState.NotImplemented]: ContentId.NotImplemented,\n};\n\nexport const UNDERCUT_MODE_TO_CID: Record =\n {\n [AutoPricingUndercutMode.Simple]: ContentId.Simple,\n [AutoPricingUndercutMode.RowExtrapolation]: ContentId.RowExtrapolation,\n [AutoPricingUndercutMode.Deal]: ContentId.Deal,\n };\n\nexport const UNDERCUT_MODE_TO_FLUENT_CID: Record<\n AutoPricingUndercutMode,\n ContentId\n> = {\n [AutoPricingUndercutMode.Simple]: ContentId.Cheapest,\n [AutoPricingUndercutMode.RowExtrapolation]: ContentId.BestRowExtrapolation,\n [AutoPricingUndercutMode.Deal]: ContentId.BestDealScore,\n};\n\nexport const OUTLIER_MODE_TO_CID: Record = {\n [AutoPricingOutlierMode.StandardDeviations]: ContentId.StandardDeviations,\n [AutoPricingOutlierMode.KthLowest]: ContentId.Spacing,\n [AutoPricingOutlierMode.SkipLogic]: ContentId.SkipLogic,\n};\n\nexport const COMP_LISTING_MODE_TO_CID: Record<\n AutoPricingCompListingMode,\n ContentId\n> = {\n [AutoPricingCompListingMode.QualityScore]: ContentId.VenueWideQualityScore,\n [AutoPricingCompListingMode.SameSection]:\n ContentId.VenueWideInSectionPriority,\n [AutoPricingCompListingMode.SameZone]: ContentId.Zones,\n [AutoPricingCompListingMode.SameEvent]: ContentId.Events,\n [AutoPricingCompListingMode.ParentListing]: ContentId.ParentListing,\n};\n\nexport const COMP_LISTING_MODE_TO_FLUENT_CID: Record<\n AutoPricingCompListingMode,\n ContentId\n> = {\n [AutoPricingCompListingMode.QualityScore]: ContentId.OfSimilarQuality,\n [AutoPricingCompListingMode.SameSection]: ContentId.InSection,\n [AutoPricingCompListingMode.SameZone]: ContentId.InZone,\n [AutoPricingCompListingMode.SameEvent]: ContentId.ForTheEvent,\n [AutoPricingCompListingMode.ParentListing]: ContentId.InMyGroup,\n};\n\nexport const AUTO_PO_INBOUND_EMAIL_CLASSIFICATION_TYPE_TO_CID: Record<\n AutoPoInboundEmailClassificationType,\n ContentId\n> = {\n [AutoPoInboundEmailClassificationType.NewPurchaseOrder]: ContentId.NewOrder,\n [AutoPoInboundEmailClassificationType.ExistingPurchaseOrder]:\n ContentId.ExistingOrder,\n [AutoPoInboundEmailClassificationType.Junk]: ContentId.Junk,\n [AutoPoInboundEmailClassificationType.OneTimePass]: ContentId.OneTimePass,\n [AutoPoInboundEmailClassificationType.Password]: ContentId.Password,\n [AutoPoInboundEmailClassificationType.TicketsAvailable]:\n ContentId.TicketsAvailable,\n [AutoPoInboundEmailClassificationType.PurchaseCancelled]:\n ContentId.PurchaseCancelled,\n [AutoPoInboundEmailClassificationType.EventCancelled]:\n ContentId.EventCancelled,\n [AutoPoInboundEmailClassificationType.EventPostponed]:\n ContentId.EventPostponed,\n [AutoPoInboundEmailClassificationType.EnjoyTheEvent]: ContentId.EnjoyTheEvent,\n [AutoPoInboundEmailClassificationType.TransferSent]: ContentId.TransferSent,\n [AutoPoInboundEmailClassificationType.TransferAccepted]:\n ContentId.TransferAccepted,\n [AutoPoInboundEmailClassificationType.TransferExpired]:\n ContentId.TransferExpired,\n [AutoPoInboundEmailClassificationType.NewSale]: ContentId.NewSale,\n [AutoPoInboundEmailClassificationType.ConfirmationDeadline]:\n ContentId.ConfirmationDeadline,\n [AutoPoInboundEmailClassificationType.ShippingDeadline]:\n ContentId.ShippingDeadline,\n [AutoPoInboundEmailClassificationType.SaleCancelled]: ContentId.SaleCancelled,\n [AutoPoInboundEmailClassificationType.OtherMarketplaceContact]:\n ContentId.OtherMarketplaceContact,\n};\n\nexport const STANDARD_DEVIATIONS_TO_CID: Record = {\n '1': ContentId.VeryAggressive,\n '2': ContentId.AggressiveOption,\n '3': ContentId.NormalOption,\n '4': ContentId.InclusiveOption,\n};\n\nexport const REPORT_TYPES_TO_CID: Record = {\n [ReportTypes.Inventory]: ContentId.Inventory,\n [ReportTypes.Sale]: ContentId.Sales,\n};\n\nexport const INVENTORY_REPORT_WIDGETS_TO_CID: Record<\n ReportWidgetTypesInventory,\n ContentId\n> = {\n [ReportWidgetTypesInventory.AverageTicketPrice]:\n ContentId.SoldAverageTicketPrice,\n [ReportWidgetTypesInventory.SalesAndMargin]: ContentId.SalesAndMargin,\n [ReportWidgetTypesInventory.TicketsListedAndSold]:\n ContentId.TicketsListedAndSold,\n};\n\nexport const REPORT_INVENTORY_GROUP_BY_TO_CID: Record = {\n [ReportGroupBy.ListingId]: ContentId.Listing,\n [ReportGroupBy.PurchaseId]: ContentId.Purchase,\n [ReportGroupBy.Performer]: ContentId.Performers,\n [ReportGroupBy.Event]: ContentId.Event,\n [ReportGroupBy.EventGenre]: ContentId.Genre,\n [ReportGroupBy.Venue]: ContentId.Venue,\n [ReportGroupBy.EventCountry]: ContentId.Country,\n [ReportGroupBy.EventCity]: ContentId.City,\n [ReportGroupBy.SeatingSection]: ContentId.Section,\n [ReportGroupBy.SeatingRow]: ContentId.Row,\n [ReportGroupBy.Vendor]: ContentId.Vendor,\n [ReportGroupBy.PricedBy]: ContentId.PricedBy,\n [ReportGroupBy.PurchasedBy]: ContentId.PurchasedBy,\n [ReportGroupBy.FulfilledBy]: ContentId.FulfilledBy,\n};\n\nexport const REPORT_SALE_GROUP_BY_TO_CID: Record = {\n [ReportGroupBy.SaleId]: ContentId.Sale,\n [ReportGroupBy.Performer]: ContentId.Performers,\n [ReportGroupBy.Event]: ContentId.Event,\n [ReportGroupBy.EventGenre]: ContentId.Genre,\n [ReportGroupBy.Venue]: ContentId.Venue,\n [ReportGroupBy.EventCountry]: ContentId.Country,\n [ReportGroupBy.EventCity]: ContentId.City,\n [ReportGroupBy.SeatingSection]: ContentId.Section,\n [ReportGroupBy.SeatingRow]: ContentId.Row,\n [ReportGroupBy.SaleMarketplace]: ContentId.Marketplace,\n [ReportGroupBy.Vendor]: ContentId.Vendor,\n [ReportGroupBy.SaleMonth]: ContentId.Month,\n [ReportGroupBy.SaleWeek]: ContentId.WeekOfYear,\n [ReportGroupBy.SaleDay]: ContentId.Day,\n [ReportGroupBy.PricedBy]: ContentId.PricedBy,\n [ReportGroupBy.PurchasedBy]: ContentId.PurchasedBy,\n [ReportGroupBy.FulfilledBy]: ContentId.FulfilledBy,\n};\n\nexport const REPORT_IS_SORT_DESCENDING_TO_CID: Record = {\n // corresponds to value isSortDescending : boolean\n false: ContentId.AtoZArrow,\n true: ContentId.ZtoAArrow,\n};\n\nexport const REPORT_IS_SORT_ASCENDING_TO_CID: Record = {\n // corresponds to value isSortAsc : boolean\n true: ContentId.AtoZArrow,\n false: ContentId.ZtoAArrow,\n};\n\nexport const BOOLEAN_OPTIONS_CONTENT: Record = {\n true: 'true',\n false: 'false',\n};\n\nexport const RESTRICT_SELECTION_TYPE_TO_CID: Record<\n RestrictSelectionType,\n ContentId\n> = {\n [RestrictSelectionType.SameZone]: ContentId.SameZone,\n [RestrictSelectionType.SpecificSections]: ContentId.SpecificSections,\n [RestrictSelectionType.SameSection]: ContentId.SameSection,\n};\n\nexport const MARKETPLACE_PAYMENT_TERM_TO_CID: Record<\n MarketplacePaymentTerm,\n ContentId\n> = {\n [MarketplacePaymentTerm.PaymentUponSaleConfirmation]:\n ContentId.PaymentUponSaleConfirmation,\n [MarketplacePaymentTerm.PaymentUponDelivery]: ContentId.PaymentUponDelivery,\n [MarketplacePaymentTerm.PaymentPostEvent]: ContentId.PaymentPostEvent,\n};\n\n// From https://dev.azure.com/viagogo/Database/_git/viagogo.Database.ProductionDeploys?path=%2Fdb%2FGoldenData%2FAppEventDataManager%2Ftables%2FMappingRejectionReason.sql&_a=contents&version=GBdevelop\n// Overrides the MappingRejectionReasonDescription within the table with internationalized content\n//\n// select\t*\n// from\tGoldenData.AppEventDataManager.MappingRejectionReason\n// where\tMappingTypeId = 1; -- Event Mapping\nexport const MAPPING_REJECTION_REASON_ID_TO_CID: Record = {\n '1': ContentId.CancelledEvent,\n '2': ContentId.CharityEvent,\n '3': ContentId.DuplicateEventNeedsToBeRescheduled,\n '4': ContentId.DuplicateEventPerformerVenueDateAndTimeMatch,\n '5': ContentId.EventHasPassed,\n '6': ContentId.FreeEvent,\n '7': ContentId.FulfillmentRestrictions,\n '8': ContentId.IncorrectPerfomerOrGrouping,\n '9': ContentId.NotEnoughInformationToCreate,\n '10': ContentId.NotFoundOnPrimary,\n '11': ContentId.PendingPartnerIntegrations,\n '12': ContentId.IncorrectCountryCode,\n};\n\nexport const EVENT_MAPPING_STATE_FILTER_TO_CID: Record<\n EventMappingStateFilter,\n ContentId\n> = {\n [EventMappingStateFilter.All]: ContentId.All,\n [EventMappingStateFilter.Mapped]: ContentId.Mapped,\n [EventMappingStateFilter.Pending]: ContentId.Pending,\n [EventMappingStateFilter.Rejected]: ContentId.Rejected,\n};\n\nexport const PRICING_FLOOR_CEIL_ADJUSTMENT_TYPE_TO_CID: Record<\n PricingFloorCeilingAdjustmentType,\n ContentId\n> = {\n [PricingFloorCeilingAdjustmentType.MarketPrice]: ContentId.MarketPrice,\n [PricingFloorCeilingAdjustmentType.UnitCost]: ContentId.UnitCost,\n [PricingFloorCeilingAdjustmentType.CurrentFloor]: ContentId.CurrentFloor,\n};\n\nexport const PRICING_FLOOR_CEIL_ADJUSTMENT_TYPE_TO_WARNING_CID: Record<\n PricingFloorCeilingAdjustmentType,\n ContentId\n> = {\n [PricingFloorCeilingAdjustmentType.MarketPrice]:\n ContentId.BulkEditFloorCeilingWarning,\n [PricingFloorCeilingAdjustmentType.UnitCost]:\n ContentId.BulkEditFloorCeilingUnitCostWarning,\n [PricingFloorCeilingAdjustmentType.CurrentFloor]:\n ContentId.BulkEditFloorCeilingCurrentFloorWarning,\n};\n\nexport const BROADCAST_ERROR_CODE_TO_CID: Record<\n BroadcastErrorCode,\n ContentId\n> = {\n [BroadcastErrorCode.BroadcastListing]:\n ContentId.BroadcastErrorCode_BroadcastListing,\n [BroadcastErrorCode.Unknown]: ContentId.BroadcastErrorCode_Unknown,\n [BroadcastErrorCode.UpdatePrice]: ContentId.BroadcastErrorCode_UpdatePrice,\n [BroadcastErrorCode.UpdateTicketType]:\n ContentId.BroadcastErrorCode_UpdateTicketType,\n [BroadcastErrorCode.UpdateSplitType]:\n ContentId.BroadcastErrorCode_UpdateSplitType,\n [BroadcastErrorCode.UpdateInHandDate]:\n ContentId.BroadcastErrorCode_UpdateInHandDate,\n [BroadcastErrorCode.SplitListing]: ContentId.BroadcastErrorCode_SplitListing,\n [BroadcastErrorCode.MergeListing]: ContentId.BroadcastErrorCode_MergeListing,\n [BroadcastErrorCode.UnbroadcastListing]:\n ContentId.BroadcastErrorCode_UnbroadcastListing,\n [BroadcastErrorCode.UpdateQuantity]:\n ContentId.BroadcastErrorCode_UpdateQuantity,\n [BroadcastErrorCode.HideSeats]: ContentId.BroadcastErrorCode_HideSeats,\n [BroadcastErrorCode.UpdateListingNotes]:\n ContentId.BroadcastErrorCode_UpdateListingNotes,\n [BroadcastErrorCode.UpdateSeating]:\n ContentId.BroadcastErrorCode_UpdateSeating,\n [BroadcastErrorCode.MarketplaceResaleRestricted]:\n ContentId.BroadcastErrorCode_MarketplaceResaleRestricted,\n [BroadcastErrorCode.MarketplaceManifestMismatch]:\n ContentId.BroadcastErrorCode_MarketplaceManifestMismatch,\n [BroadcastErrorCode.MarketplacePriceBelowFloor]:\n ContentId.BroadcastErrorCode_MarketplacePriceBelowFloor,\n};\n\nexport const PAYMENT_METHOD_NAME_REGEX_TO_CONTENT_ID: Record<\n PaymentMethodNameKnownRegex,\n ContentId\n> = {\n [PaymentMethodNameKnownRegex.All]: ContentId.All,\n [PaymentMethodNameKnownRegex.AllAmex]: ContentId.AllAmex,\n [PaymentMethodNameKnownRegex.AllVisa]: ContentId.AllVisa,\n [PaymentMethodNameKnownRegex.AllMastercard]: ContentId.AllMastercard,\n};\n\nexport const REPORT_FILTER_EDITABILITY_TO_CID: Record<\n ReportFilterEditability,\n ContentId\n> = {\n [ReportFilterEditability.Hidden]: ContentId.Hidden,\n [ReportFilterEditability.View]: ContentId.View,\n [ReportFilterEditability.Edit]: ContentId.Edit,\n};\n\nexport const REPORT_FILTER_EDITABILITY_TO_DESC_CID: Record<\n ReportFilterEditability,\n ContentId\n> = {\n [ReportFilterEditability.Hidden]: ContentId.HiddenEditabilityDescription,\n [ReportFilterEditability.View]: ContentId.ViewEditabilityDescription,\n [ReportFilterEditability.Edit]: ContentId.EditEditabilityDescription,\n};\n\nexport const VENUE_ZONE_CONFIG_TYPE_TO_CID: Record<\n VenueZoneConfigType,\n ContentId\n> = {\n [VenueZoneConfigType.Amphitheater]: ContentId.Amphitheater,\n [VenueZoneConfigType.ConcertsSectionsBehindStage]:\n ContentId.ConcertsSectionsBehindStage,\n [VenueZoneConfigType.SportsOrConcertsWith360]:\n ContentId.SportsOrConcertsWith360,\n};\n\nexport const VENUE_ZONE_SECTION_GROUP_AREA_TYPE_TO_CID: Record<\n SectionGroupAreaType,\n ContentId\n> = {\n [SectionGroupAreaType.Center]: ContentId.Center,\n [SectionGroupAreaType.LeftRight]: ContentId.LeftAndRight,\n [SectionGroupAreaType.FarLeftFarRight]: ContentId.FarLeftAndFarRight,\n [SectionGroupAreaType.Front]: ContentId.Front,\n [SectionGroupAreaType.Sides]: ContentId.Sides,\n [SectionGroupAreaType.SideT1]: ContentId.SideTier1,\n [SectionGroupAreaType.SideT2]: ContentId.SideTier2,\n [SectionGroupAreaType.Ends]: ContentId.Ends,\n [SectionGroupAreaType.Rear]: ContentId.Rear,\n [SectionGroupAreaType.Corners]: ContentId.Corners,\n [SectionGroupAreaType.Unknown]: ContentId.Unknown,\n};\n\nexport const EVENT_STATUS_TO_CID: Record = {\n [ApiEventStatus.Normal]: ContentId.Normal,\n [ApiEventStatus.Postponed]: ContentId.Postponed,\n [ApiEventStatus.Cancelled]: ContentId.Cancelled,\n [ApiEventStatus.Rescheduled]: ContentId.Rescheduled,\n [ApiEventStatus.Relocated]: ContentId.Relocated,\n [ApiEventStatus.RelocatedAndRescheduled]: ContentId.RelocatedAndRescheduled,\n [ApiEventStatus.Draft]: ContentId.Draft,\n [ApiEventStatus.Deleted]: ContentId.Deleted,\n [ApiEventStatus.Contingent]: ContentId.Contingent,\n};\n\nexport const EVENT_DEMAND_FACTOR_TYPE_TO_CID: Record<\n EventDemandFactorType,\n ContentId\n> = {\n [EventDemandFactorType.HomeTeamOdds]: ContentId.Odds,\n [EventDemandFactorType.Opponent]: ContentId.Opponent,\n [EventDemandFactorType.SpotifyPopularity]: ContentId.SpotifyPopularity,\n [EventDemandFactorType.Stakes]: ContentId.Stakes,\n [EventDemandFactorType.Standing]: ContentId.Standing,\n [EventDemandFactorType.Weather]: ContentId.Weather,\n};\n\nexport const ROW_COMP_SETTING_TO_CID: Record = {\n 0: ContentId.RowCompSettingExactMatch,\n 1: '-1',\n 3: '-3',\n 6: '-6',\n};\n\nexport const ROW_GROUP_SETTING_TO_CID: Record<\n RowGroupSetting,\n ContentId | string\n> = {\n [RowGroupSetting.SingleTwoToFiveSixPlus]: '1 2-5 6+',\n [RowGroupSetting.OneTwoToFiveSixToTwelveThirteenPlus]: '1 2-5 6-12 13+',\n [RowGroupSetting.OneToFiveSixPlus]: '1-5 6+',\n [RowGroupSetting.OneToTenElevenPlus]: '1-10 11+',\n [RowGroupSetting.AllRows]: ContentId.All,\n};\n\nexport const PURCHASE_ORDER_STATE_TO_CID: Record<\n PurchaseOrderState,\n ContentId\n> = {\n [PurchaseOrderState.Active]: ContentId.Active,\n [PurchaseOrderState.Cancelled]: ContentId.Cancelled,\n [PurchaseOrderState.Void]: ContentId.Void,\n [PurchaseOrderState.Drafted]: ContentId.Drafted,\n};\n\nexport const LISTING_NOTE_TYPE_TO_CID: Record = {\n [ListingNoteType.Defect]: ContentId.Defect,\n [ListingNoteType.RestrictionOnUse]: ContentId.RestrictionOnUse,\n [ListingNoteType.Perk]: ContentId.Perk,\n [ListingNoteType.Information]: ContentId.Information,\n [ListingNoteType.ConnectedSeller]: ContentId.ConnectedSeller,\n [ListingNoteType.InternallyGenerated]: ContentId.InternallyGenerated,\n};\n\nexport const COMMAND_OPTION_TYPE_TO_CID: Record =\n {\n [CommandOptionType.ToggleSelectionMode]: ContentId.ToggleSelectionMode,\n [CommandOptionType.SelectAll]: ContentId.SelectAll,\n [CommandOptionType.AutoPricingSettings]: ContentId.AutopricingSettings,\n };\n\nexport const SALE_LINE_ITEM_CHARGE_REASON_TO_CID: Record<\n SaleLineItemChargeReason,\n ContentId\n> = {\n [SaleLineItemChargeReason.CancelledProceeds]: ContentId.CancelledProceeds,\n [SaleLineItemChargeReason.DroppedOrderPenalty]: ContentId.DroppedOrderPenalty,\n [SaleLineItemChargeReason.Compensation]: ContentId.Compensation,\n [SaleLineItemChargeReason.Other]: ContentId.Other,\n};\n\nexport const SALE_LINE_ITEM_CREDIT_REASON_TO_CID: Record<\n SaleLineItemCreditReason,\n ContentId\n> = {\n [SaleLineItemCreditReason.ReversedPenalty]: ContentId.ReversedPenalty,\n [SaleLineItemCreditReason.ReversedCharge]: ContentId.ReversedCharge,\n [SaleLineItemCreditReason.ProceedRepayment]: ContentId.ProceedRepayment,\n [SaleLineItemCreditReason.Other]: ContentId.Other,\n};\n","import { useMemo } from 'react';\nimport { useGetEventAutoPricingSettings } from 'src/hooks/useGetEventAutoPricingSettings';\nimport { VENUE_ZONE_CONFIG_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { Event, VenueZoneConfigOverride } from 'src/WebApiController';\n\nimport { getContent, useContentContext } from '../ContentContext';\nimport { useGetVenueZoneMapConfigInfo } from './useGetVenueZoneMapConfigInfo';\nimport { useGetVenueZoneMapInfoOverrides } from './useGetVenueZoneMapConfigInfoOverrides';\n\nexport const useVenueZoneMapIntegration = (event: Event | null) => {\n const contentContext = useContentContext();\n\n const { pricingSettingsQuery } = useGetEventAutoPricingSettings(\n event ?? null,\n false\n );\n const venueZoneMapConfigInfoQuery = useGetVenueZoneMapConfigInfo(\n event?.viagId,\n event?.venueCfgId\n );\n const venueZoneMapConfigOverrideInfoQuery = useGetVenueZoneMapInfoOverrides(\n event?.viagId,\n event?.venueCfgId\n );\n\n const venueZoneConfigs = useMemo((): VenueZoneConfigOverride | null => {\n const venueZoneOverrideId = pricingSettingsQuery.data?.venueZoneOverrideId;\n if (\n venueZoneOverrideId != null &&\n venueZoneMapConfigOverrideInfoQuery.data &&\n venueZoneMapConfigOverrideInfoQuery.data[venueZoneOverrideId]\n ) {\n return venueZoneMapConfigOverrideInfoQuery.data[venueZoneOverrideId];\n }\n\n const zoneConfigType =\n pricingSettingsQuery.data?.venueZoneConfigType ??\n venueZoneMapConfigInfoQuery.data?.defaultVenueZoneConfigType;\n if (zoneConfigType && venueZoneMapConfigInfoQuery.data) {\n const sectionSectionGroupLookup =\n venueZoneMapConfigInfoQuery.data.venueMapZoneConfigs[zoneConfigType];\n\n return {\n name: getContent(\n VENUE_ZONE_CONFIG_TYPE_TO_CID[zoneConfigType],\n contentContext\n ),\n sectionSectionGroupLookup: sectionSectionGroupLookup ?? {},\n };\n }\n return null;\n }, [\n contentContext,\n pricingSettingsQuery.data?.venueZoneConfigType,\n pricingSettingsQuery.data?.venueZoneOverrideId,\n venueZoneMapConfigInfoQuery.data,\n venueZoneMapConfigOverrideInfoQuery.data,\n ]);\n\n return venueZoneConfigs;\n};\n","import * as Sentry from '@sentry/react';\nimport { UseQueryResult } from '@tanstack/react-query';\nimport {\n createContext,\n PropsWithChildren,\n useCallback,\n useContext,\n useMemo,\n} from 'react';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n Event,\n EventConfigScoreOverride,\n Feature,\n SellerAccountEventConfigScoreOverrides,\n TicketClassInfo,\n VenueMapInfo,\n VenueZoneConfigOverride\n} from 'src/WebApiController';\n\nimport { ErrorTypes } from '../ErrorBoundaryContext';\nimport { useGetEventMapConfig } from './useGetEventMapConfig';\nimport { useGetEventMapConfigOverrides } from './useGetEventMapConfigOverrides';\nimport { useGetEventMapsByScoreModelConfig } from './useGetEventMapsByScoreModelConfig';\nimport { useVenueZoneMapIntegration } from './useVenueZoneMapIntegration';\n\nexport type EventMapContextProps = {\n event?: Event | null;\n ticketClasses: TicketClassInfo[];\n /**\n * @deprecated Use venueMapInfo and isMapLoading instead.\n */\n venueMapQuery: UseQueryResult;\n venueMapsByScoreModelQuery: UseQueryResult<\n {\n readonly VenueGeometry?: VenueMapInfo | undefined;\n readonly MergedVenueGeometry?: VenueMapInfo | undefined;\n readonly AdvancedVenueGeometry?: VenueMapInfo | undefined;\n } | null,\n ErrorTypes\n >;\n isMapLoading: boolean;\n venueMapInfo: VenueMapInfo | null;\n mapConfigOverridesQuery: UseQueryResult<\n EventConfigScoreOverride[] | null,\n ErrorTypes\n >;\n sellerAccountScoreOverridesQuery: UseQueryResult<\n SellerAccountEventConfigScoreOverrides[] | null,\n ErrorTypes\n >;\n activeConfigOverride?: EventConfigScoreOverride | null;\n isGeneralAdmissionOnly: boolean;\n normalizeConfigOverrideWithUiScore: (\n scoreOverride: EventConfigScoreOverride\n ) => EventConfigScoreOverride;\n venueZoneConfigs: VenueZoneConfigOverride | null;\n};\n\nexport const EventMapContext = createContext({\n event: null,\n ticketClasses: [],\n venueMapQuery: {} as UseQueryResult,\n venueMapsByScoreModelQuery: {} as UseQueryResult<{\n readonly VenueGeometry?: VenueMapInfo | undefined;\n readonly MergedVenueGeometry?: VenueMapInfo | undefined;\n } | null>,\n isMapLoading: false,\n venueMapInfo: null,\n mapConfigOverridesQuery: {} as UseQueryResult,\n sellerAccountScoreOverridesQuery: {} as UseQueryResult<\n SellerAccountEventConfigScoreOverrides[]\n >,\n activeConfigOverride: null,\n isGeneralAdmissionOnly: false,\n normalizeConfigOverrideWithUiScore: (x) => x,\n venueZoneConfigs: null,\n});\n\nexport const useEventMapContext = () => useContext(EventMapContext);\n\nconst populateScoreForDisplay = (\n eventConfigScoreOverride: EventConfigScoreOverride | null | undefined,\n venueMapMaxScoreRaw: number,\n venueMapInfo: VenueMapInfo | null | undefined,\n normalizeScores: boolean\n) => {\n if (!eventConfigScoreOverride) {\n return eventConfigScoreOverride;\n }\n\n const scoreOverrides = eventConfigScoreOverride.scoreOverrides.map(\n (scoreOverride) => {\n let score = scoreOverride.scoreRaw;\n\n // If the venue config ids do not align that means we are pulling scores\n // from a different venue config as a template, and should not normalize\n normalizeScores =\n normalizeScores &&\n eventConfigScoreOverride.cfgId == venueMapInfo?.venueCfgId;\n if (\n normalizeScores &&\n scoreOverride.scoreRaw != null &&\n venueMapMaxScoreRaw\n ) {\n // Score normalized to 0-100\n score = (scoreOverride.scoreRaw / venueMapMaxScoreRaw) * 100;\n }\n\n return {\n ...scoreOverride,\n score,\n };\n }\n );\n\n return {\n ...eventConfigScoreOverride,\n scoreOverrides,\n };\n};\n\nexport const EventMapContextProvider = ({\n event,\n children,\n disabled,\n doNotGetScoreOverrides,\n}: PropsWithChildren<{\n event?: Event | null;\n disabled?: boolean;\n doNotGetScoreOverrides?: boolean;\n}>) => {\n const viagogoEventId = event?.viagId;\n const venueConfigId = event?.venueCfgId;\n\n const hasScaledSeatScoreFeature = useUserHasFeature(Feature.ScaledSeatScore);\n\n const venueMapQuery = useGetEventMapConfig(viagogoEventId, disabled);\n\n const venueMapsByScoreModelQuery = useGetEventMapsByScoreModelConfig(\n viagogoEventId,\n disabled\n );\n\n const venueZoneConfigs = useVenueZoneMapIntegration(event ?? null);\n\n /**\n * VenueMapBaseInfo are all the same for different score models,\n * this is the safe guard to ensure we have a venue map present\n * in case any of the queries returned empty map due to race\n * conditions.\n */\n const venueMapInfo = useMemo((): VenueMapInfo | null => {\n if (venueMapQuery.data) {\n return venueMapQuery.data;\n }\n if (venueMapsByScoreModelQuery.data) {\n return (\n Object.values(venueMapsByScoreModelQuery.data).find(\n (mapInfo) => !!mapInfo\n ) ?? null\n );\n }\n\n return null;\n }, [venueMapQuery.data, venueMapsByScoreModelQuery.data]);\n\n const configId = venueMapInfo?.venueCfgId;\n\n const {\n seatScoreOverridesQuery: mapConfigOverridesQuery,\n sellerAccountScoreOverridesQuery: sellerAccountScoreOverridesQuery,\n } = useGetEventMapConfigOverrides(\n doNotGetScoreOverrides\n ? undefined // If we don't want the score overrides, just pass null into here\n : viagogoEventId,\n doNotGetScoreOverrides ? undefined : configId,\n doNotGetScoreOverrides || disabled\n );\n\n /* This logic was something carried from CX code\n We don't think we need this, but leaving this to know how is GA handles\n const isGeneralAdmissionOnly = Boolean(\n venueMapQuery.data &&\n venueMapQuery.data.sections.every(\n (s) =>\n s.sectionType === VenueMapSectionType.GeneralAdmission ||\n s.sectionType === VenueMapSectionType.GeneralAdmissionWithQueueNumber\n )\n );*/\n\n const venueMapMaxScoreRaw = useMemo(\n () =>\n venueMapQuery.data?.sectionScores.reduce(\n (acc, section) => Math.max(acc, section.scoreRaw ?? 0),\n 0\n ) ?? 0,\n [venueMapQuery.data]\n );\n\n const mapConfigOverridesQueryWithUIScore = useMemo(() => {\n if (!mapConfigOverridesQuery.data?.length) {\n return mapConfigOverridesQuery;\n }\n\n const data = mapConfigOverridesQuery.data.map((configOverride) =>\n populateScoreForDisplay(\n configOverride,\n venueMapMaxScoreRaw,\n venueMapQuery.data,\n hasScaledSeatScoreFeature\n )\n );\n\n return {\n ...mapConfigOverridesQuery,\n data,\n } as UseQueryResult;\n }, [\n hasScaledSeatScoreFeature,\n mapConfigOverridesQuery,\n venueMapMaxScoreRaw,\n venueMapQuery.data,\n ]);\n\n const activeConfigOverride = useMemo(():\n | EventConfigScoreOverride\n | undefined => {\n if (mapConfigOverridesQueryWithUIScore.isLoading) {\n return undefined;\n }\n\n const activeConfig = mapConfigOverridesQueryWithUIScore.data?.find(\n (c) => c.isActive\n );\n\n if (!activeConfig) {\n return undefined;\n }\n\n const rowIdToOrdinal =\n venueMapInfo?.sections?.reduce(\n (acc, section) => {\n for (const row of section.rows) {\n acc[row.id] = row.ordinal;\n }\n return acc;\n },\n {} as Record\n ) ?? {};\n\n const sanitizedScores = activeConfig?.scoreOverrides?.map((score) => {\n const ordinal = score.isManualOverride\n ? score.rowOrdinal\n : rowIdToOrdinal[score.rowId] ?? score.rowOrdinal;\n return {\n ...score,\n rowOrdinal: ordinal,\n };\n });\n\n return {\n ...activeConfig,\n scoreOverrides: sanitizedScores,\n };\n }, [\n venueMapInfo?.sections,\n mapConfigOverridesQueryWithUIScore.data,\n mapConfigOverridesQueryWithUIScore.isLoading,\n ]);\n\n const normalizeConfigOverrideWithUiScore = useCallback(\n (scoreOverride: EventConfigScoreOverride) => {\n const result = populateScoreForDisplay(\n scoreOverride,\n venueMapMaxScoreRaw,\n venueMapQuery.data,\n hasScaledSeatScoreFeature\n );\n\n return result!;\n },\n [hasScaledSeatScoreFeature, venueMapMaxScoreRaw, venueMapQuery.data]\n );\n\n const ticketClasses = useMemo(() => {\n try {\n if (venueMapQuery.data) {\n return Object.values(\n venueMapQuery.data.sections\n .flatMap((s) => s.rows.map((r) => r.tktClass))\n .reduce(\n (r, c) => {\n if (c?.id) {\n r[c.id] = c;\n }\n return r;\n },\n {} as Record\n )\n );\n }\n return [];\n } catch (error) {\n // TODO - remove when this is main-stream\n console.error(error);\n try {\n Sentry.captureException(error);\n } catch (err) {\n console.warn('Sentry log request failed', err);\n }\n }\n\n return [];\n }, [venueMapQuery.data]);\n\n const isMapLoading = useMemo(\n () => venueMapQuery.isLoading || venueMapsByScoreModelQuery.isLoading,\n [venueMapQuery.isLoading, venueMapsByScoreModelQuery.isLoading]\n );\n\n return (\n \n {children}\n \n );\n};\n","import { SectionInfo } from 'src/WebApiController';\n\nimport { useEventMapContext } from './EventMapContext';\n\nexport const useGetSectionRowFromVenueMapConfig = (\n rowId?: number | null,\n sectionId?: number | null,\n sectionName?: string | null,\n rowName?: string | null\n) => {\n const { venueMapInfo } = useEventMapContext();\n\n if (!venueMapInfo) return {};\n\n let section: SectionInfo | undefined = undefined;\n if (sectionId) {\n section = venueMapInfo.sections.find((s) => s.id == sectionId);\n }\n\n if (rowId) {\n let row = section?.rows.find((r) => r.id === rowId);\n\n if (row) {\n return { section, row };\n }\n\n section = venueMapInfo.sections.find((s) =>\n s.rows.some((r) => r.id === rowId)\n );\n\n if (!section) return {};\n\n row = section.rows.find((r) => r.id === rowId);\n\n // Row cannot be null, because if it was, the section would have been null\n if (!row) return {};\n\n return { section, row };\n } else {\n const section = venueMapInfo.sections.find((s) => s.name === sectionName);\n\n if (!section) return {};\n\n const row = section.rows.find((r) => r.name === rowName);\n\n return { section, row };\n }\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { ListingClient } from 'src/WebApiController';\n\nexport const useListingCanBeWasted = (listingId?: number | null) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n activeAccountWebClientConfig.activeAccountId != null && listingId != null;\n\n return useQuery({\n queryKey: [\n 'getListingsCanBeWasted',\n activeAccountWebClientConfig.activeAccountId,\n listingId,\n ],\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n return new ListingClient(\n activeAccountWebClientConfig\n ).getListingsCanBeWasted(listingId!);\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('ListingClient.getListingsCanBeWasted', error, {\n listingId,\n });\n },\n },\n });\n};\n","import { clsx } from 'clsx';\nimport { format } from 'date-fns';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Seating, Ticket } from 'src/WebApiController';\nimport * as styles from './SaleWasteInfo.css';\n\ninterface SaleWasteInfoProps {\n eventDate: string | null | undefined;\n tickets: Ticket[] | undefined;\n seating?: Seating;\n canBeWasted: boolean;\n}\n\nexport const SaleWasteInfo = ({\n eventDate,\n tickets,\n seating,\n canBeWasted,\n}: SaleWasteInfoProps) => {\n const isMobile = useMatchMedia('mobile');\n const ticketsToWaste = (tickets ?? []).filter((t) => !t.isWasted);\n\n if (\n !eventDate ||\n !tickets ||\n !seating ||\n ticketsToWaste.length === 0 ||\n !canBeWasted\n ) {\n return (\n
    \n \n
    \n );\n }\n\n return (\n \n \n \n \n
    \n
    \n \n
    \n
    \n {format(new Date(eventDate), 'MMM dd, yyyy')}\n
    \n
    \n
    \n
    \n \n
    \n
    $0
    \n
    \n
    \n \n
    \n\n
    \n
    \n \n
    \n
    x {ticketsToWaste.length}
    \n
    \n\n {ticketsToWaste.map((ticket, index) => {\n const isFirst = index === 0;\n return (\n <>\n
    \n {isFirst && (\n
    \n \n
    \n )}\n
    {seating.section}
    \n
    \n
    \n {isFirst && (\n
    \n \n
    \n )}\n
    {ticket.row}
    \n
    \n
    \n {isFirst && (\n
    \n \n
    \n )}\n
    {ticket.seat}
    \n
    \n \n );\n })}\n \n );\n};\n","import { useCallback, useContext, useState } from 'react';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useListingCanBeWasted } from 'src/hooks/api/useListingCanBeWasted';\nimport { useEventItemLoadingDisplay } from 'src/hooks/useEventItemLoadingDisplay';\nimport { CancellableFormFooter } from 'src/modals/common';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { modalDetails } from 'src/modals/common/Modals.css';\nimport { Summary } from 'src/modals/common/Summary';\nimport { SaleWasteInfo } from 'src/modals/ListingDetails/components/WasteUnsoldTickets/SaleWasteInfo';\nimport { ModalBody, ModalFooter, ModalProps } from 'src/modals/Modal';\nimport { ModalBodyHeaderContainer } from 'src/modals/Modal/Modal.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n ApiException,\n ListingDetails,\n SaleClient,\n SaleDetails,\n} from 'src/WebApiController';\nimport * as styles from './WasteUnsoldTickets.css';\n\ntype WasteUnsoldTicketsProps = {\n cancelTo?: ModalProps;\n onWastedSuccess: (saleId: number) => void;\n};\n\nexport const WasteUnsoldTickets = ({\n cancelTo,\n onWastedSuccess,\n}: WasteUnsoldTicketsProps) => {\n const { posEntity, event, posEntityDisplayId, posEntityId } =\n useActivePosEntityContext();\n const listing =\n posEntity?.entityType === ActionOutboxEntityType.Listing\n ? (posEntity as ListingDetails)\n : undefined;\n const [isLoading, setIsLoading] = useState(false);\n\n const canBeWastedQuery = useListingCanBeWasted(listing?.id);\n const { item1: canBeWasted, item2: ticketsToWaste } =\n canBeWastedQuery.data ?? {};\n\n const { showErrorDialog, genericError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { setModal, closeModal } = useContext(ModalContext);\n\n const { isLoading: entityIsLoading, loadingState } =\n useEventItemLoadingDisplay(\n FormatContentId.LoadingSaleId,\n FormatContentId.SearchingForSaleId,\n FormatContentId.CouldNotFindSaleId,\n posEntityDisplayId ?? posEntityId?.toString()\n );\n\n const onSubmit = useCallback(async () => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n if (!listing || !canBeWasted) {\n return null;\n }\n const client = new SaleClient(activeAccountWebClientConfig);\n\n const r = await client.wasteListingTickets({\n listingId: listing.id,\n });\n\n if (isSuccess(r) && r.entityId) {\n onWastedSuccess(r.entityId);\n if (cancelTo) {\n setModal(cancelTo);\n } else {\n closeModal(true);\n }\n } else {\n showErrorDialog(\n 'SaleClient.mergePosManagedMarketplaceSale',\n {\n message: r.message ?? genericError,\n status: r.status!,\n } as ApiException,\n {\n trackErrorData: {\n listing: listing?.id,\n },\n }\n );\n }\n },\n (error) => {\n showErrorDialog('SaleClient.mergePosManagedMarketplaceSale', error, {\n trackErrorData: {\n listing: listing?.id,\n },\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n }, [\n activeAccountWebClientConfig,\n canBeWasted,\n cancelTo,\n closeModal,\n genericError,\n listing,\n onWastedSuccess,\n setModal,\n showErrorDialog,\n ]);\n\n return (\n <>\n \n \n \n \n }\n />\n \n\n \n
    \n {event && listing && (\n \n \n \n )}\n {entityIsLoading ||\n !listing ||\n !event ||\n isLoading ||\n canBeWastedQuery.isFetching ? (\n \n ) : (\n
    \n \n
    \n )}\n
    \n
    \n\n \n \n \n \n \n \n );\n};\n","import { ComponentProps, useCallback, useContext } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { vars } from 'src/core/themes';\nimport { WasteUnsoldTickets } from 'src/modals/ListingDetails/components/WasteUnsoldTickets/WasteUnsoldTickets';\nimport { ClockTrashIcon } from 'src/svgs/ClockTrashIcon';\nimport { IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport { ActionOutboxEntityType, ListingDetails } from 'src/WebApiController';\n\ntype WasteUnsoldTicketsProps = Omit<\n ComponentProps,\n 'event' | 'venue'\n> & {\n onWastedSuccess: (saleId: number) => void;\n};\n\nexport const LaunchWasteUnsoldTickets = ({\n cancelTo,\n onWastedSuccess,\n}: WasteUnsoldTicketsProps) => {\n const { posEntity } = useActivePosEntityContext();\n const listing =\n posEntity?.entityType === ActionOutboxEntityType.Listing\n ? (posEntity as ListingDetails)\n : undefined;\n const { setModal } = useContext(ModalContext);\n\n const listingId = listing?.id;\n\n const launchWasteUnsoldTickets = useCallback(() => {\n setModal({\n children: (\n \n ),\n clickOutsideToClose: true,\n size: 'slide-in',\n deepLinkValue: listingId,\n trackViewEntityType: ActionOutboxEntityType.Listing,\n });\n }, [setModal, cancelTo, onWastedSuccess, listingId]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n launchWasteUnsoldTickets();\n },\n [launchWasteUnsoldTickets]\n );\n\n return (\n \n }\n onClick={onLaunchDialog}\n />\n );\n};\n","import { useCallback, useContext } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { Button, Stack } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { DeleteIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { ApiException, ListingClient, Permission } from 'src/WebApiController';\n\nexport const LaunchDeleteSeatSaver = ({\n listingId,\n disabled,\n setIsLoading,\n}: {\n listingId: number;\n disabled?: boolean;\n setIsLoading?: (isLoading: boolean) => void;\n}) => {\n const { closeModal } = useContext(ModalContext);\n const { showErrorDialog, genericError } = useErrorBoundaryContext();\n const hasSeatSaverPermission = useUserHasAnyOfPermissions(\n Permission.Inventory_ManageSeatSaver,\n Permission.Inventory_ManageSeatSaverCreatedBy\n );\n const {\n refreshCatalog,\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const dialogProps = useBasicDialog();\n\n const onDeleteSeatSaver = useCallback(async () => {\n setIsLoading?.(true);\n dialogProps.closeDialog();\n\n await tryInvokeApi(\n async () => {\n const r = await new ListingClient(\n activeAccountWebClientConfig\n ).deleteSeatSaver(listingId);\n\n if (isSuccess(r)) {\n await refreshExpandedListItems(); // Because we're deleting - this will need to be cleared from the table\n refreshCatalog();\n closeModal(true);\n } else {\n showErrorDialog(\n 'ListingClient.deleteSeatSaver',\n {\n message: r.message ?? genericError,\n status: r.status!,\n } as ApiException,\n {\n trackErrorData: {\n listingId,\n },\n }\n );\n }\n },\n (error) => {\n showErrorDialog('ListingClient.deleteSeatSaver', error);\n },\n () => setIsLoading?.(false)\n );\n }, [\n activeAccountWebClientConfig,\n closeModal,\n dialogProps,\n genericError,\n listingId,\n refreshCatalog,\n refreshExpandedListItems,\n setIsLoading,\n showErrorDialog,\n ]);\n\n if (!hasSeatSaverPermission) {\n return null;\n }\n\n return (\n <>\n dialogProps.launchDialog()}\n disabled={disabled}\n >\n \n \n \n \n \n }\n bodyText={}\n {...dialogProps.dialogProps}\n centered\n disabled={disabled}\n onOkay={onDeleteSeatSaver}\n onClosed={dialogProps.closeDialog}\n onCancel={dialogProps.closeDialog}\n />\n \n );\n};\n","import { ConnectedComparableListings } from 'src/components/Listings/ConnectedComparableListings';\nimport { CompListing, ListingDetails } from 'src/WebApiController';\n\nexport const ViewCompsBody = ({\n listing,\n compListings,\n ...rest\n}: {\n listing?: ListingDetails | null;\n compListings?: CompListing[] | null;\n}) => {\n return (\n \n );\n};\n","import { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { useEventItemLoadingDisplay } from 'src/hooks/useEventItemLoadingDisplay';\nimport { useGetCompListings } from 'src/hooks/useGetCompListings';\nimport { CancellableFormFooter } from 'src/modals/common';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalBody, ModalFooter, ModalProps } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { ListingDetails } from 'src/WebApiController';\n\nimport { ViewCompsBody } from './ViewCompsBody';\n\nexport const ViewCompsModal = ({ cancelTo }: { cancelTo?: ModalProps }) => {\n const { loadingState } = useEventItemLoadingDisplay(\n FormatContentId.LoadingListingId,\n FormatContentId.SearchingForListingId,\n FormatContentId.CouldNotFindListingId\n );\n\n const { event, posEntity: listing } =\n useActivePosEntityContext();\n\n const { compListingsQuery } = useGetCompListings(\n event,\n listing?.id,\n listing?.currency\n );\n\n if (loadingState) return loadingState;\n\n return (\n <>\n \n }\n />\n \n\n {compListingsQuery.isLoading ? (\n
    \n \n
    \n ) : (\n \n \n \n )}\n\n \n \n \n \n );\n};\n","import { ComponentProps, useCallback, useContext } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { vars } from 'src/core/themes';\nimport { ButtonProps } from 'src/core/ui';\nimport { ViewCompsModal } from 'src/modals/ViewCompsModal';\nimport { DollarIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n ListingDetailDataField,\n ListingDetails,\n} from 'src/WebApiController';\n\nexport const LaunchViewComps = ({\n listingId,\n marketplaceListingId,\n cancelTo,\n variant,\n ...buttonProps\n}: {\n listingId: number;\n marketplaceListingId?: string | null;\n variant?: ButtonProps['variant'];\n disabled?: boolean;\n} & ComponentProps) => {\n const { setModal } = useContext(ModalContext);\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const viewComps = useCallback(() => {\n setModal({\n children: ,\n clickOutsideToClose: true,\n size: 'slide-in',\n deepLinkValue: listingId,\n trackViewEntityType: ActionOutboxEntityType.Listing,\n });\n }, [setModal, cancelTo, listingId]);\n\n const onLaunchDialog = useCallback(\n async (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setActivePosEntity(listingId, marketplaceListingId, true, [\n ListingDetailDataField.Basic,\n ListingDetailDataField.Pricing,\n ListingDetailDataField.AutoPricing,\n ]);\n viewComps();\n },\n [setActivePosEntity, listingId, marketplaceListingId, viewComps]\n );\n\n return (\n }\n />\n );\n};\n","import { useCallback, useContext } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { ReloadButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { useHasWasteSaleFeature } from 'src/hooks/features/useHasWasteSaleFeature';\nimport { useUserCanSetPrice } from 'src/hooks/useUserHasListingPermissions';\nimport { LaunchWasteUnsoldTickets } from 'src/modals/ListingDetails/actions/LaunchWasteUnsoldTickets';\nimport { ModalFooter } from 'src/modals/Modal/Modal.styled';\nimport { IconsFill, MoreIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getListingActionButtons,\n getListingDetailsModalConfigWithDeepLink,\n} from 'src/utils/inventoryUtils';\nimport { getSaleDetailsRelativeUrl } from 'src/utils/saleUtils';\nimport {\n ListingActionType,\n ListingDetailDataField,\n ListingDetails,\n} from 'src/WebApiController';\n\nimport { LaunchDeleteSeatSaver } from './actions/LaunchDeleteSeatSaver';\nimport { LaunchViewComps } from './actions/LaunchViewComps';\n\nexport const ListingDetailsFooter = ({\n onSubmit,\n disabled,\n setIsLoading,\n}: {\n onSubmit?: () => void;\n disabled?: boolean;\n setIsLoading?: (isLoading: boolean) => void;\n}) => {\n const hasWasteSaleFeature = useHasWasteSaleFeature();\n const { closeModal } = useContext(ModalContext);\n const navigate = useNavigate();\n\n const {\n event,\n posEntity: listing,\n isLoading,\n errorInfo,\n setActivePosEntity,\n } = useActivePosEntityContext();\n const cancelTo = getListingDetailsModalConfigWithDeepLink(listing?.id);\n\n const onReload = useCallback(() => {\n if (listing) {\n setActivePosEntity(\n listing.id,\n listing.idOnMkp,\n true,\n [ListingDetailDataField.Basic],\n true\n );\n }\n }, [listing, setActivePosEntity]);\n\n const canSetPrice = useUserCanSetPrice(listing, false);\n\n const navigateToWastedSale = useCallback(\n (saleId: number) => {\n navigate(getSaleDetailsRelativeUrl(saleId));\n },\n [navigate]\n );\n\n if (errorInfo) {\n return ;\n }\n\n if (!listing) {\n return null;\n }\n\n const mainActions: { key: string; action: JSX.Element | null }[] = [\n {\n key: 'Refresh',\n action: (\n \n ),\n },\n ];\n\n const uiActions: { key: string; action: JSX.Element | null }[] = [\n ...(canSetPrice\n ? [\n {\n key: 'ViewComps',\n action: (\n \n ),\n },\n ]\n : []),\n ];\n\n const actions: { key: string; action: JSX.Element | null }[] = [\n ...uiActions,\n ...listing.actions\n .filter(\n (a) =>\n a !== ListingActionType.FullySoldNoAction &&\n a !== ListingActionType.Waste\n )\n .map((a, i) => ({\n key: a,\n action:\n getListingActionButtons(\n false /* for table */,\n listing,\n [a],\n event,\n a === ListingActionType.Broadcast ||\n a === ListingActionType.Unbroadcast\n ? 'regular'\n : a === ListingActionType.DownloadUserDocuments\n ? 'outline'\n : 'text',\n false,\n cancelTo,\n disabled || isLoading\n )?.[0] ?? null,\n })),\n ];\n\n const mainAction = actions.find((a) =>\n [\n ListingActionType.Broadcast,\n ListingActionType.Unbroadcast,\n ListingActionType.DownloadUserDocuments,\n ].includes(a.key as ListingActionType)\n );\n if (mainAction) {\n mainActions.push(mainAction);\n }\n if (onSubmit) {\n mainActions.push({\n key: 'Submit',\n action: (\n \n ),\n });\n }\n\n const subActions = actions.filter(\n (a) =>\n ![\n ListingActionType.Broadcast,\n ListingActionType.Unbroadcast,\n ListingActionType.DownloadUserDocuments,\n ].includes(a.key as ListingActionType)\n );\n\n if (hasWasteSaleFeature) {\n const hasWasteListingAction = listing.actions.includes(\n ListingActionType.Waste\n );\n if (hasWasteListingAction) {\n subActions.push({\n key: 'WasteTickets',\n action: (\n \n ),\n });\n }\n }\n\n return listing ? (\n \n \n \n {listing.isSeatSaver && (\n \n )}\n \n \n {listing?.isDeleted ? (\n \n ) : (\n <>\n {mainActions.map((a) => (\n
    {a.action}
    \n ))}\n {subActions.length > 0 ? (\n \n }\n triggerProps={{ disabled: disabled || isLoading }}\n align=\"end\"\n >\n {subActions\n .toSorted((a, b) => a.key.localeCompare(b.key))\n .map((a) => (\n \n {a.action}\n \n ))}\n \n ) : null}\n \n )}\n
    \n \n
    \n ) : null;\n};\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useListingGroupPricingSettings } from 'src/hooks/api/useListingGroupPricingSettings';\nimport { useGetAccountAutoPricingSettings } from 'src/hooks/useGetAccountAutoPricingSettings';\nimport { useGetListingAutoPricingSettings } from 'src/hooks/useGetListingAutoPricingSettings';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { safeParseJson } from 'src/utils/inventoryUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n AutoPricingCompListingMode,\n AutoPricingInputs,\n AutoPricingOutlierMode,\n AutoPricingUndercutMode,\n Feature,\n Listing,\n ListingClient,\n ListingDetails,\n ListingDetailsAutoPricingSectionUpdates,\n} from 'src/WebApiController';\n\n// TODO: this need to be clean up as IntelligibleAutoPricingSettings is GA'ed\nconst getListingDetailsAutoPricingInput = (\n listing: Listing | null | undefined,\n accountPricingSettings?: AutoPricingInputs | null,\n groupPricingSettings?: AutoPricingInputs | null,\n listingPricingSettings?: ListingDetailsAutoPricingSectionUpdates | null,\n hasIntelligibleAutoPricingSettingsFeature?: boolean | null,\n allowSeatScoreCompListingMode?: boolean | null\n): ListingDetailsAutoPricingSectionUpdates | undefined => {\n if (hasIntelligibleAutoPricingSettingsFeature) {\n // We take care of fallbacks and defaults on the server-side now\n return listingPricingSettings ?? undefined;\n }\n\n const quantityScoreOverrideJson = safeParseJson(listing?.compQtyScrAdjJson);\n\n // Listing is totally null for bulk updates\n const defaultQuantityScoreOverrideJson =\n listing == null\n ? null\n : JSON.stringify({\n ...quantityScoreOverrideJson,\n quantityFilter: null,\n });\n // If SectionId or RowId filters are set, make sure we alwayws set compListingOnlyForSelectedSectionsEnabled to true\n // If a user decides to disable this setting, we need to make it known that the selected sections are not being used\n const defaultCompListingOnlyForSelectedSectionsEnabled =\n !!listing?.compSectionSettings?.sectionIdFilter?.length;\n\n const defaultCompListingMode = allowSeatScoreCompListingMode\n ? AutoPricingCompListingMode.QualityScore\n : AutoPricingCompListingMode.SameEvent;\n\n return {\n id: listing?.id ?? 0,\n rowVersion: null,\n netProceedsFloor: listing?.procsFloor ?? null,\n netProceedsCeiling: listing?.procsCeil ?? null,\n currencyCode: listing?.currency ?? null,\n autoPricingEnabled: listing?.isAutoPrc ?? null,\n\n compListingFloor:\n listing?.compFloor ??\n groupPricingSettings?.compListingFloor ??\n accountPricingSettings?.compListingFloor ??\n 1,\n compListingCeiling:\n listing?.compCeil ??\n groupPricingSettings?.compListingCeiling ??\n accountPricingSettings?.compListingCeiling ??\n 6,\n compListingMode:\n listing?.compMode ??\n groupPricingSettings?.compListingMode ??\n accountPricingSettings?.compListingMode ??\n defaultCompListingMode,\n compListingOnlyForSameZoneEnabled:\n listing?.isCompForSameZone ??\n groupPricingSettings?.compListingOnlyForSameZoneEnabled ??\n accountPricingSettings?.compListingOnlyForSameZoneEnabled ??\n !defaultCompListingOnlyForSelectedSectionsEnabled, // Default to false if we have selected sections enabled\n compListingOnlyForSelectedSectionsEnabled:\n listing?.isCompSelectedSections ??\n groupPricingSettings?.compListingOnlyForSelectedSectionsEnabled ??\n accountPricingSettings?.compListingOnlyForSelectedSectionsEnabled ??\n defaultCompListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory:\n listing?.compExclFanInv ??\n groupPricingSettings?.compListingExcludeFanInventory ??\n accountPricingSettings?.compListingExcludeFanInventory ??\n null,\n compListingExcludeDefects:\n listing?.compExclDefects ??\n groupPricingSettings?.compListingExcludeDefects ??\n accountPricingSettings?.compListingExcludeDefects ??\n null,\n compListingQuantityScoreAdjustmentEnabled:\n listing?.isCompQtyScrAdj ??\n groupPricingSettings?.compListingQuantityScoreAdjustmentEnabled ??\n accountPricingSettings?.compListingQuantityScoreAdjustmentEnabled ??\n null,\n compListingQuantityScoreAdjustmentOverrideJson:\n listing?.compQtyScrAdjJson ??\n groupPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson ??\n defaultQuantityScoreOverrideJson,\n compListingSelectedSectionSettings:\n listing?.compSectionSettings ??\n groupPricingSettings?.compListingSelectedSectionSettings ??\n accountPricingSettings?.compListingSelectedSectionSettings ??\n null,\n undercutMode:\n listing?.undMode ??\n groupPricingSettings?.undercutMode ??\n accountPricingSettings?.undercutMode ??\n AutoPricingUndercutMode.Simple,\n undercutAbsoluteAmount:\n listing?.undAbsAmt ??\n groupPricingSettings?.undercutAbsoluteAmount ??\n accountPricingSettings?.undercutAbsoluteAmount ??\n 0.01,\n undercutRelativeAmount:\n listing?.undRelAmt ??\n groupPricingSettings?.undercutRelativeAmount ??\n accountPricingSettings?.undercutRelativeAmount ??\n 0,\n circuitBreakerMaxDiscountVelocityPercent:\n listing?.cirBrMaxDiscVelocPercent ??\n groupPricingSettings?.circuitBreakerMaxDiscountVelocityPercent ??\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityPercent ??\n 0.8,\n circuitBreakerMaxDiscountVelocityTicksInHours:\n listing?.cirBrMaxDiscVelocTicksInHrs ??\n groupPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours ??\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours ??\n 6,\n circuitBreakerMinCompListingCount:\n listing?.cirBrMinCompCount ??\n groupPricingSettings?.circuitBreakerMinCompListingCount ??\n accountPricingSettings?.circuitBreakerMinCompListingCount ??\n 10,\n circuitBreakerRelativeCeiling:\n listing?.cirBrRelCeil ??\n groupPricingSettings?.circuitBreakerRelativeCeiling ??\n accountPricingSettings?.circuitBreakerRelativeCeiling ??\n 100,\n circuitBreakerRelativeFloor:\n listing?.cirBrRelFloor ??\n groupPricingSettings?.circuitBreakerRelativeFloor ??\n accountPricingSettings?.circuitBreakerRelativeFloor ??\n 1,\n outlierMode:\n listing?.outMode ??\n groupPricingSettings?.outlierMode ??\n accountPricingSettings?.outlierMode ??\n AutoPricingOutlierMode.StandardDeviations,\n outlierStandardDeviations:\n listing?.outlStdDev ??\n groupPricingSettings?.outlierStandardDeviations ??\n accountPricingSettings?.outlierStandardDeviations ??\n 3,\n outlierKthLowestLimit:\n listing?.outKthLowestLim ??\n groupPricingSettings?.outlierKthLowestLimit ??\n accountPricingSettings?.outlierKthLowestLimit ??\n null,\n outlierKthLowestLimitRelativeSpacing:\n listing?.outKthLowestLimRelSpc ??\n groupPricingSettings?.outlierKthLowestLimitRelativeSpacing ??\n accountPricingSettings?.outlierKthLowestLimitRelativeSpacing ??\n null,\n outlierKthLowestLimitAbsoluteSpacing:\n listing?.outKthLowestLimAbsSpc ??\n groupPricingSettings?.outlierKthLowestLimitAbsoluteSpacing ??\n accountPricingSettings?.outlierKthLowestLimitAbsoluteSpacing ??\n null,\n\n // If listing id is null, we're creating the default input for bulk edit - default to skipping everything\n skipAdvancePricing: !listing?.id,\n skipAutoPricing: !listing?.id,\n skipCompListing: !listing?.id,\n skipUndercut: !listing?.id,\n\n autoPriceFrequency: null,\n compListingQuantityFilters: null,\n compListingQuantityScoreAdjustmentOverrides: null,\n scoreModel: null,\n autoPricingDefaultQuantityFiltersJson: null,\n venueZoneOverrideId: null,\n venueZoneConfigType: null,\n };\n};\n\nexport const useAutoPricingForm = (\n listing: Listing | null | undefined,\n onSubmitStart: () => void,\n onSubmitDone: (success?: boolean) => Promise\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const { event } = useActivePosEntityContext();\n const {\n pricingSettings: listingPricingSettings,\n loaded: listingSettingLoaded,\n } = useGetListingAutoPricingSettings(listing, event);\n const { pricingSettings: groupPricingSettings, loaded: groupSettingLoaded } =\n useListingGroupPricingSettings(listing?.ltGrpId, event);\n const {\n pricingSettings: accountPricingSettings,\n loaded: accountSettingLoaded,\n } = useGetAccountAutoPricingSettings();\n const hasAllowSeatScoreCompListingModeFeature = useUserHasFeature(\n Feature.AllowSeatScoreCompListingMode\n );\n\n const methods = useForm({\n defaultValues: getListingDetailsAutoPricingInput(\n listing,\n accountPricingSettings,\n groupPricingSettings,\n listingPricingSettings,\n true,\n hasAllowSeatScoreCompListingModeFeature\n ),\n });\n\n useEffect(() => {\n if (groupSettingLoaded || accountSettingLoaded || listingSettingLoaded) {\n methods.reset(\n getListingDetailsAutoPricingInput(\n listing,\n accountPricingSettings,\n groupPricingSettings,\n listingPricingSettings,\n true,\n hasAllowSeatScoreCompListingModeFeature\n )\n );\n }\n }, [\n groupSettingLoaded,\n accountSettingLoaded,\n methods,\n listing,\n accountPricingSettings,\n groupPricingSettings,\n listingPricingSettings,\n listingSettingLoaded,\n hasAllowSeatScoreCompListingModeFeature,\n ]);\n\n const onSubmitHandler = useCallback(\n async (autoPricingSectionForm: ListingDetailsAutoPricingSectionUpdates) => {\n tryInvokeApi(\n async () => {\n onSubmitStart();\n const result = await new ListingClient(\n activeAccountWebClientConfig\n ).updateListingAutoPricingSection(autoPricingSectionForm);\n\n if (isSuccess(result)) {\n // Reset the form to latest changed\n methods.reset(autoPricingSectionForm);\n await onSubmitDone();\n } else {\n showErrorDialog(\n 'ListingClient.updateListingAutoPricingSection',\n { message: result.message, status: result.status },\n {\n trackErrorData: {\n autoPricingSectionForm,\n },\n }\n );\n }\n },\n (error) => {\n showErrorDialog(\n 'ListingClient.updateListingAutoPricingSection',\n error,\n {\n trackErrorData: autoPricingSectionForm,\n }\n );\n },\n () => {\n onSubmitDone(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n methods,\n onSubmitDone,\n onSubmitStart,\n showErrorDialog,\n ]\n );\n\n const onSubmit = useCallback(() => {\n methods.handleSubmit(onSubmitHandler)();\n }, [methods, onSubmitHandler]);\n\n const onReset = useCallback(() => {\n methods.reset(\n getListingDetailsAutoPricingInput(\n listing,\n accountPricingSettings,\n groupPricingSettings,\n listingPricingSettings,\n undefined,\n hasAllowSeatScoreCompListingModeFeature\n )\n );\n }, [\n accountPricingSettings,\n groupPricingSettings,\n hasAllowSeatScoreCompListingModeFeature,\n listing,\n listingPricingSettings,\n methods,\n ]);\n\n const input = methods.watch();\n\n const hasChanges = useMemo(() => {\n const defaultValues = methods.formState.defaultValues;\n return (\n input.netProceedsFloor !== defaultValues?.netProceedsFloor ||\n input.netProceedsCeiling !== defaultValues?.netProceedsCeiling ||\n input.currencyCode !== defaultValues?.currencyCode ||\n input.autoPricingEnabled !== defaultValues?.autoPricingEnabled ||\n input.compListingFloor !== defaultValues?.compListingFloor ||\n input.compListingCeiling !== defaultValues?.compListingCeiling ||\n input.compListingMode !== defaultValues?.compListingMode ||\n input.compListingOnlyForSameZoneEnabled !==\n defaultValues?.compListingOnlyForSameZoneEnabled ||\n input.compListingOnlyForSelectedSectionsEnabled !==\n defaultValues?.compListingOnlyForSelectedSectionsEnabled ||\n input.compListingExcludeFanInventory !==\n defaultValues?.compListingExcludeFanInventory ||\n input.compListingExcludeDefects !==\n defaultValues?.compListingExcludeDefects ||\n input.compListingQuantityScoreAdjustmentEnabled !==\n defaultValues?.compListingQuantityScoreAdjustmentEnabled ||\n input.compListingQuantityScoreAdjustmentOverrideJson !==\n defaultValues?.compListingQuantityScoreAdjustmentOverrideJson ||\n input.undercutMode !== defaultValues?.undercutMode ||\n input.undercutAbsoluteAmount !== defaultValues?.undercutAbsoluteAmount ||\n input.undercutRelativeAmount !== defaultValues?.undercutRelativeAmount ||\n input.circuitBreakerMaxDiscountVelocityPercent !==\n defaultValues?.circuitBreakerMaxDiscountVelocityPercent ||\n input.circuitBreakerMaxDiscountVelocityTicksInHours !==\n defaultValues?.circuitBreakerMaxDiscountVelocityTicksInHours ||\n input.circuitBreakerMinCompListingCount !==\n defaultValues?.circuitBreakerMinCompListingCount ||\n input.circuitBreakerRelativeCeiling !==\n defaultValues?.circuitBreakerRelativeCeiling ||\n input.circuitBreakerRelativeFloor !==\n defaultValues?.circuitBreakerRelativeFloor ||\n input.outlierMode !== defaultValues?.outlierMode ||\n input.outlierStandardDeviations !==\n defaultValues?.outlierStandardDeviations ||\n input.outlierKthLowestLimit !== defaultValues?.outlierKthLowestLimit ||\n input.outlierKthLowestLimitRelativeSpacing !==\n defaultValues?.outlierKthLowestLimitRelativeSpacing ||\n input.outlierKthLowestLimitAbsoluteSpacing !==\n defaultValues?.outlierKthLowestLimitAbsoluteSpacing ||\n input.skipAdvancePricing !== defaultValues?.skipAdvancePricing ||\n input.skipAutoPricing !== defaultValues?.skipAutoPricing ||\n input.skipCompListing !== defaultValues?.skipCompListing ||\n input.skipUndercut !== defaultValues?.skipUndercut ||\n !isEqual(\n input.compListingSelectedSectionSettings,\n defaultValues?.compListingSelectedSectionSettings\n ) ||\n !isEqual(\n input.compListingQuantityFilters,\n defaultValues?.compListingQuantityFilters\n )\n );\n }, [input, methods.formState.defaultValues]);\n\n return {\n hasChanges,\n methods,\n onSubmit,\n onReset,\n };\n};\n","import { useFormContext } from 'react-hook-form';\nimport { useToggle } from 'react-use';\nimport { Content } from 'src/contexts/ContentContext';\nimport { HorizontalTextList } from 'src/core/POS/HorizontalTextList';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { AddAdminHoldNoteModal } from 'src/modals/AddNote';\nimport { Detail, DetailSection } from 'src/modals/common';\nimport { EditIcon, IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ListingDetailsBroadcastSectionUpdates,\n Permission,\n} from 'src/WebApiController';\n\nimport * as styles from './AdminHoldNotes.css';\n\nexport const AdminHoldNotesSection = ({ disabled }: { disabled?: boolean }) => {\n const { watch } = useFormContext();\n const adminHoldNotes = watch('adminHoldNotes');\n\n const hasPermission = useUserHasAnyOfPermissions(\n Permission.SellerAccount_Admin\n );\n\n const [isAddNoteModalOpen, toggleAddNoteModal] = useToggle(false);\n\n const onSubmit = () => {\n toggleAddNoteModal();\n };\n\n if (!hasPermission) {\n return null;\n }\n\n return (\n }>\n {isAddNoteModalOpen && (\n \n )}\n \n }\n detail={\n \n {adminHoldNotes ? (\n
    \n \n
    \n ) : null}\n \n {adminHoldNotes ? (\n \n ) : (\n \n )}\n \n \n
    \n }\n />\n
    \n
    \n );\n};\n","import { useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { MarketplaceLogo } from 'src/components/common/MarketplaceLogo';\nimport { getSeatDisplayText } from 'src/components/common/SeatingInfo';\nimport { AdminHoldBadge } from 'src/components/Listings/AdminHoldBadge';\nimport {\n RowSelector,\n SectionSelector,\n} from 'src/components/Selectors/SectionRowSelector';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport {\n Content,\n getContent,\n useContentContext,\n useFormattedContent,\n} from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { ErrorIconMessage } from 'src/core/POS/ErrorIconMessage';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Popover, SimpleTable, Stack } from 'src/core/ui';\nimport { TooltipPopover } from 'src/core/ui/TooltipPopover';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { CrossIcon, WarningOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n BROADCAST_ERROR_CODE_TO_CID,\n LISTING_STATUS_TO_CID,\n PENDING_PROOF_STATE_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { getListingBroadcastIcon } from 'src/utils/inventoryUtils';\nimport {\n Feature,\n ListingBroadcastStatus,\n ListingDetails,\n ListingDetailsBroadcastSectionUpdates,\n ListingStatus,\n Marketplace,\n MarketplaceListing,\n PendingProofState,\n QualityControlState,\n} from 'src/WebApiController';\n\nimport * as styles from './MarketplaceDisplay.css';\nimport { MarketplaceFailure } from './useGetMarketplaceFailures';\nexport const MarketplaceDisplay = ({\n marketplaceListing: ml,\n formIndex,\n status,\n setListingStatus,\n isUKEvent,\n isViagogo,\n isDeleted,\n disabled,\n onListingBroadcastToggle,\n error,\n qcState,\n}: {\n marketplaceListing: MarketplaceListing;\n formIndex: number;\n status: ListingStatus;\n setListingStatus: (\n marketplace: Marketplace,\n newListingStatus: ListingStatus\n ) => void;\n isUKEvent?: boolean;\n isViagogo?: boolean;\n isDeleted?: boolean;\n disabled?: boolean;\n onListingBroadcastToggle: (\n isBroadcasting: boolean,\n marketplace: Marketplace\n ) => void;\n error?: MarketplaceFailure | null;\n qcState?: QualityControlState | null;\n}) => {\n const alwaysShowAsDelisted =\n isUKEvent && ml.mkp === Marketplace.StubHub && !isViagogo;\n const { event, posEntity: listing } =\n useActivePosEntityContext();\n const noListingQty = listing ? listing.availQty === 0 : true;\n\n const contentContext = useContentContext();\n const { venueMapQuery } = useEventMapContext();\n\n const { register, watch, setValue } =\n useFormContext();\n\n const marketplaceSeatOverrides = watch('marketplaceSeatOverrides');\n\n const { overrideSection, overrideRow, overrideSeats } =\n marketplaceSeatOverrides[formIndex] ?? {};\n\n const { selectedSection, selectedRow } = useMemo(() => {\n const section = venueMapQuery.data?.sections.find(\n (s) => s.name === overrideSection\n );\n const row = section?.rows.find((r) => r.name === overrideRow);\n\n return { selectedSection: section, selectedRow: row };\n }, [overrideRow, overrideSection, venueMapQuery.data?.sections]);\n\n const isListed = !alwaysShowAsDelisted && status === ListingStatus.Listed;\n\n const isChecked =\n !alwaysShowAsDelisted &&\n (status === ListingStatus.Listed ||\n status === ListingStatus.ListingPending ||\n status === ListingStatus.DelistingFailed ||\n ml.brdcstStatus === ListingBroadcastStatus.BroadcastWithError);\n\n const hasBroadcastErrors =\n ml.status === ListingStatus.ListingFailed ||\n ml.status === ListingStatus.DelistingFailed;\n\n const { iconComponent: ListingBroadcastIcon, contentId } =\n getListingBroadcastIcon(\n alwaysShowAsDelisted\n ? ListingStatus.Delisted // We always show Delisted for StubHub when event is in UK\n : status,\n qcState,\n false,\n true,\n listing?.isUndeliv,\n ml.brdcstStatus,\n ml.pendProofState\n );\n\n const disabledDueToPendingQC =\n ml.status !== ListingStatus.Listed &&\n qcState === QualityControlState.Pending;\n\n const pendingProofErrorMessage = useFormattedContent(\n FormatContentId.ProofOfPurchasedRequiredDetailMessage,\n [isViagogo ? 'Viagogo' : ml.mkp]\n ) as string;\n\n const hasUseSelectedRowIdFeature = useUserHasFeature(\n Feature.UseSelectedRowIdForMarketplaceSeatingOverride\n );\n\n const listingStatusCID = useMemo(() => {\n if (listing?.isAdminHold) {\n return ContentId.OnHoldBroadcastDisabled;\n }\n\n if (disabledDueToPendingQC) {\n return contentId ?? ContentId.PendingQC;\n }\n\n if (listing?.isUndeliv) {\n return contentId ?? ContentId.Undeliverable;\n }\n\n if (\n ml.pendProofState === PendingProofState.PendingProof ||\n ml.pendProofState === PendingProofState.PendingReview\n ) {\n return PENDING_PROOF_STATE_TO_CID[ml.pendProofState];\n }\n\n if (ml.brdcstStatus === ListingBroadcastStatus.BroadcastWithError) {\n return ContentId.ListedSyncFailed;\n }\n if (ml.brdcstStatus === ListingBroadcastStatus.UnbroadcastWithError) {\n return ContentId.Delisted;\n }\n\n const santitizedStatus =\n ml.errMsgs != null && ml.errMsgs.length > 0\n ? status\n : alwaysShowAsDelisted\n ? status === ListingStatus.Disabled\n ? status\n : ListingStatus.Delisted // We always show Delisted for StubHub when event is in UK\n : status;\n return LISTING_STATUS_TO_CID[santitizedStatus];\n }, [\n alwaysShowAsDelisted,\n contentId,\n disabledDueToPendingQC,\n listing?.isAdminHold,\n listing?.isUndeliv,\n ml.brdcstStatus,\n ml.errMsgs,\n ml.pendProofState,\n status,\n ]);\n\n const listingStatusCell = (\n <>\n {listing?.isAdminHold ? (\n \n ) : (\n \n )}\n \n \n \n \n );\n\n const hasVenueMapInfo = useMemo(() => {\n if (listing?.seating?.rowId) {\n return true;\n }\n\n const foundSection = venueMapQuery.data?.sections.find(\n (s) => s.name === listing?.seating.section\n );\n\n if (foundSection) {\n return true;\n }\n\n const foundOverrideSection = venueMapQuery.data?.sections.find(\n (s) => s.name === overrideSection\n );\n\n if (foundOverrideSection) {\n return true;\n }\n\n return false;\n }, [\n listing?.seating?.rowId,\n listing?.seating.section,\n overrideSection,\n venueMapQuery.data?.sections,\n ]);\n\n const errorMessages = useMemo(() => {\n let errorMessages: string[] = [];\n\n // Collect all the error messages if there are supposed to be errors\n if (hasBroadcastErrors) {\n errorMessages = error?.messages?.filter((m) => m)?.map((m) => m!) ?? [];\n\n if (ml.errCodes) {\n ml.errCodes.forEach((err) => {\n const message = getContent(\n BROADCAST_ERROR_CODE_TO_CID[err],\n contentContext\n );\n errorMessages.push(message);\n });\n }\n\n errorMessages = [...new Set(errorMessages)]; // filter out dups\n }\n\n if (\n ml.pendProofState === PendingProofState.PendingProof ||\n ml.pendProofState === PendingProofState.PendingReview\n ) {\n errorMessages.push(pendingProofErrorMessage);\n }\n\n return errorMessages;\n }, [\n contentContext,\n error?.messages,\n hasBroadcastErrors,\n ml.errCodes,\n ml.pendProofState,\n pendingProofErrorMessage,\n ]);\n\n return (\n \n \n \n \n \n {\n if (ml && !isDeleted) {\n const newStatus = isChecked\n ? ListingStatus.DelistingPending\n : ListingStatus.ListingPending;\n setListingStatus(ml.mkp!, newStatus);\n onListingBroadcastToggle(!isChecked, ml.mkp!);\n }\n }}\n />\n \n \n
    \n {errorMessages.length ? (\n \n \n {errorMessages.map((m, i) => (\n {m}\n ))}\n \n \n ) : (\n listingStatusCell\n )}\n
    \n
    \n\n \n \n {ml.mkp === Marketplace.StubHub &&\n Boolean(venueMapQuery.data?.sections?.length) &&\n !hasVenueMapInfo && (\n \n }\n >\n \n \n )}\n \n \n {overrideSection || listing?.seating.section || (\n \n )}\n \n \n }\n >\n {venueMapQuery.data?.sections?.length ? (\n {\n const id = parseInt(selectedSectionId);\n const section = venueMapQuery.data?.sections?.find(\n (s) => s.id === id\n );\n\n setValue(\n `marketplaceSeatOverrides.${formIndex}.overrideSection`,\n section?.name ?? selectedSectionId\n );\n\n if (section?.id) {\n setValue(\n `marketplaceSeatOverrides.${formIndex}.overrideSectionId`,\n section?.id\n );\n }\n\n if (hasUseSelectedRowIdFeature && overrideRow) {\n const row = section?.rows?.find(\n (r) => r.name === overrideRow\n );\n if (row?.id) {\n setValue(\n `marketplaceSeatOverrides.${formIndex}.overrideRowId`,\n row?.id\n );\n }\n }\n }}\n />\n ) : (\n \n \n \n }\n />\n )}\n \n \n \n \n \n {overrideRow || listing?.seating.row || (\n \n )}\n \n }\n >\n {selectedSection?.rows?.length ? (\n {\n const id = parseInt(rowId);\n const row = selectedSection?.rows?.find((r) => r.id === id);\n\n setValue(\n `marketplaceSeatOverrides.${formIndex}.overrideRow`,\n (row?.isSpeculative ? '' : row?.name) ?? rowId\n );\n\n if (row?.id) {\n setValue(\n `marketplaceSeatOverrides.${formIndex}.overrideRowId`,\n row?.id\n );\n }\n }}\n />\n ) : (\n \n \n \n }\n />\n )}\n \n \n \n \n {overrideSeats ||\n getSeatDisplayText({\n seatFr: listing?.seating.seatFr,\n seatTo: listing?.seating.seatTo,\n compact: true,\n }) || }\n \n }\n >\n \n \n \n }\n />\n \n \n\n \n {isListed && ml.mkpListingId ? (\n ml.mkpListingId\n ) : (\n \n )}\n \n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { SimpleTable } from 'src/core/ui';\nimport { useGetEventFullInfo } from 'src/hooks/useGetEventFullInfo';\nimport { useUserCanBroadcast } from 'src/hooks/useUserHasListingPermissions';\nimport { UK_COUNTRY_CODES } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n compareMarketplace,\n getIsInternationalEvent,\n} from 'src/utils/eventWithDataUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ListingClient,\n ListingDetails,\n ListingMetrics,\n ListingStatus,\n Marketplace,\n MarketplaceListingStatusInfo,\n} from 'src/WebApiController';\n\nimport { MarketplaceDisplay } from './MarketplaceDisplay';\nimport * as styles from './MarketplaceDisplay.css';\nimport { MarketplaceFailure } from './useGetMarketplaceFailures';\n\nexport const MarketplaceTable = ({\n listing,\n disabled,\n marketplaceFailures,\n marketplaceListingStatus,\n setMarketplaceListingStatus,\n}: {\n listing: ListingDetails;\n disabled?: boolean;\n marketplaceFailures: MarketplaceFailure[];\n marketplaceListingStatus: Record;\n setMarketplaceListingStatus: React.Dispatch<\n React.SetStateAction>\n >;\n}) => {\n const { setActivePosEntity, updateActivePosEntityInfo } =\n useActivePosEntityContext();\n\n const { event, venue } = useGetEventFullInfo();\n\n const isUKEvent = Boolean(\n venue?.country?.code &&\n UK_COUNTRY_CODES.includes(venue.country.code.toUpperCase())\n );\n const isInternationalEvent = getIsInternationalEvent(venue?.country?.code);\n\n const { refreshMetrics } = useCatalogMetricsContext();\n\n const [isLoading, setIsLoading] = useState(false);\n\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog, trackError } = useErrorBoundaryContext();\n\n const { mkpListings } = listing;\n\n const marketplaceFailuresByMarketplace = useMemo(\n () =>\n marketplaceFailures.reduce(\n (r, c) => {\n r[c.marketplace] = c;\n return r;\n },\n {} as Record\n ),\n [marketplaceFailures]\n );\n\n // Only when the marketling-listing changed should we try to refresh the local states with it\n useEffect(() => {\n const newStatuses = mkpListings\n ?.filter((ml) => ml.mkp)\n .reduce(\n (ml, cur) => {\n ml[cur.mkp!] = cur.status;\n return ml;\n },\n {} as Record\n );\n\n if (newStatuses && !isEqual(newStatuses, marketplaceListingStatus)) {\n setMarketplaceListingStatus(newStatuses);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mkpListings]); // We only want to run this when mkpListings changed - not the other things\n\n const onSetMarketplaceListingStatus = useCallback(\n (marketplace: Marketplace, status: ListingStatus) => {\n const newStatues = {\n ...marketplaceListingStatus,\n [marketplace]: status,\n };\n setMarketplaceListingStatus(newStatues);\n },\n [marketplaceListingStatus, setMarketplaceListingStatus]\n );\n\n const onListingBroadcastToggle = useCallback(\n (isBroadcasting: boolean, marketPlace: Marketplace) => {\n tryInvokeApi(\n async () => {\n setIsLoading(true);\n\n if (isBroadcasting) {\n await new ListingClient(\n activeAccountWebClientConfig\n ).createMarketplaceListings(listing.id, [marketPlace]);\n } else {\n await new ListingClient(\n activeAccountWebClientConfig\n ).deleteMarketplaceListings(listing.id, [marketPlace]);\n }\n },\n (error) => {\n showErrorDialog(\n isBroadcasting\n ? 'ListingClient.createMarketplaceListings'\n : 'ListingClient.deleteMarketplaceListings',\n error,\n {\n trackErrorData: {\n listingId: listing.id,\n marketPlaces: [marketPlace],\n },\n }\n );\n },\n () => setIsLoading(false)\n );\n },\n [activeAccountWebClientConfig, listing, showErrorDialog]\n );\n\n const canBroadcast = useUserCanBroadcast(listing, false);\n\n useEffect(() => {\n // If we have any Marketplace listing pending status - we need to poll to get the latest status\n const statusChecking = setInterval(async () => {\n const marketplacesInPending = Object.keys(\n marketplaceListingStatus\n ).filter(\n (marketplace) =>\n marketplaceListingStatus[marketplace as Marketplace] ===\n ListingStatus.ListingPending ||\n marketplaceListingStatus[marketplace as Marketplace] ===\n ListingStatus.DelistingPending\n );\n\n if (marketplacesInPending.length > 0 && !isLoading) {\n await tryInvokeApi(\n async () => {\n setIsLoading(true);\n\n const client = new ListingClient(activeAccountWebClientConfig);\n\n const newListing = await client.getListingStatusByListingId(\n listing.id\n );\n\n if (newListing) {\n const newMarketplaceStatuses = {} as Record<\n Marketplace,\n ListingStatus\n >;\n\n // We we get back a listing from server, it may or may not have finished the job\n // So we just have to assume the status is flowing in one direct only, ie, if we set something to pending,\n // we expect it to either finish or failed (but not reversed)\n const newMarketplaceListings = newListing.mkpListings;\n newMarketplaceListings.forEach((ml) => {\n if (ml.mkp) {\n if (\n marketplaceListingStatus[ml.mkp!] ===\n ListingStatus.DelistingPending\n ) {\n // If we are delisting-pending, set if the new status is either Delisted or DelistingFailed\n if (\n ml.status === ListingStatus.Disabled ||\n ml.status === ListingStatus.Delisted ||\n ml.status === ListingStatus.DelistingFailed\n ) {\n newMarketplaceStatuses[ml.mkp] = ml.status;\n }\n } else if (\n marketplaceListingStatus[ml.mkp!] ===\n ListingStatus.ListingPending\n ) {\n // If we are listing-pending, set if the new status is either Listed or ListedFailed\n if (\n ml.status === ListingStatus.Disabled ||\n ml.status === ListingStatus.Listed ||\n ml.status === ListingStatus.ListingFailed\n ) {\n newMarketplaceStatuses[ml.mkp] = ml.status;\n }\n }\n }\n });\n\n // Only if we do get status changes shall we try to actually update the active-item\n // provider with the latest states, or else the toggle will jump back and forth due\n // to the useEffect earlier (since we modified the active listing)\n if (Object.keys(newMarketplaceStatuses).length > 0) {\n const newStatus = {\n ...marketplaceListingStatus,\n ...newMarketplaceStatuses,\n };\n setMarketplaceListingStatus(newStatus);\n\n // Use the calculated status on the new listing obj\n newListing.mkpListings.forEach((ml) => {\n if (ml.mkp) {\n ml.status = newStatus[ml.mkp!];\n }\n });\n\n // Only stop running this if all the status is no longer pending\n clearInterval(statusChecking);\n\n let updatedListing = newListing as ListingDetails;\n\n const newMkpListings = newListing.mkpListings.reduce(\n (r, c) => {\n r[c.mkp] = c;\n return r;\n },\n {} as Record\n );\n\n updatedListing = {\n ...listing,\n ...newListing,\n // for marketplaces, we also need to merge since the MarketplaceListingStatusInfo is just a subset of the MarketplaceListing\n mkpListings:\n listing.mkpListings?.map((mkp) => ({\n ...mkp,\n ...(newMkpListings[mkp.mkp] ?? {}),\n })) ?? null,\n } as ListingDetails;\n\n refreshMetrics?.();\n updateActivePosEntityInfo({\n event: event,\n posEntity: updatedListing,\n posEntityId: newListing.id,\n posEntityDisplayId: newListing.idOnMkp,\n });\n }\n }\n },\n (error) => {\n // Because this is a background process - we don't want to show error dialog\n trackError('ListingClient.getListingByListingId', error, {\n listingId: listing.id,\n });\n },\n () => setIsLoading(false)\n );\n }\n }, 2000 /* 2 sec */);\n\n return () => clearInterval(statusChecking);\n }, [\n activeAccountWebClientConfig,\n event,\n listing,\n listing.id,\n listing.idOnMkp,\n marketplaceListingStatus,\n mkpListings,\n refreshMetrics,\n setActivePosEntity,\n updateActivePosEntityInfo,\n trackError,\n isLoading,\n setMarketplaceListingStatus,\n ]);\n\n const isDisabled = disabled || !canBroadcast;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n {mkpListings\n ?.filter((ml) => ml.mkp && ml.mkp !== Marketplace.Offline)\n .toSorted((a, b) => compareMarketplace(a.mkp, b.mkp))\n .flatMap((ml, i) => {\n const mpListingStatus = marketplaceListingStatus[ml.mkp!];\n\n // When the UnitNetProceeds value is 0, we should prevent broadcasting\n const isDisabledWithPriceCheck =\n isDisabled ||\n (mpListingStatus === ListingStatus.Delisted &&\n listing.listPrice === 0 &&\n (ml.netProcs == null || ml.netProcs === 0));\n\n if (ml.mkp === Marketplace.StubHub) {\n return [\n {\n window.open('/redirect-uk', '_blank');\n onListingBroadcastToggle(listing, marketplace);\n }\n : onListingBroadcastToggle\n }\n error={marketplaceFailuresByMarketplace[Marketplace.StubHub]}\n qcState={listing.qcState}\n />,\n ,\n ];\n }\n\n return !isInternationalEvent\n ? [\n // We only show other marketplaces when the Event is US\n ,\n ]\n : [];\n })}\n \n \n );\n};\n","import { debounce } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { normalizeActivityLogMessage } from 'src/utils/activityLogUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n ActionType,\n ActivityLog,\n ActivityLogClient,\n ListingDetails,\n ListingStatus,\n Marketplace,\n MarketplaceOperationResultState,\n} from 'src/WebApiController';\n\nexport type MarketplaceFailure = {\n marketplace: Marketplace;\n messages?: (string | null | undefined)[];\n};\n\nexport const useGetMarketplaceFailures = (\n listing: ListingDetails\n): MarketplaceFailure[] => {\n const hasBroadcastErrors = listing.mkpListings?.filter(\n (ml) =>\n ml.status === ListingStatus.ListingFailed ||\n ml.status === ListingStatus.DelistingFailed ||\n (ml.errMsgs != null && ml.errMsgs.length > 0)\n );\n const { activeAccountWebClientConfig } = useAppContext();\n const [isLoading, setIsLoading] = useState(false);\n const [activities, setActivities] = useState(\n undefined\n );\n const { trackError } = useErrorBoundaryContext();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const getBroadcastErrorsForListings = useCallback(\n debounce(() => {\n tryInvokeApi(\n async () => {\n setIsLoading(true);\n\n const activities = await new ActivityLogClient(\n activeAccountWebClientConfig\n ).getActivityLogByFilter({\n entityId: listing.id,\n entityType: ActionOutboxEntityType.Listing,\n actionTypes: [\n ActionType.ListingBroadcast,\n ActionType.ListingUnbroadcast,\n ActionType.ListingMarketplaceInsert,\n ActionType.ListingMarketplaceUpdate,\n ActionType.ListingMarketplaceDelete,\n ActionType.BroadcastMarketplaceListing,\n ActionType.UnbroadcastMarketplaceListing,\n ],\n auditActionTypes: null,\n userId: '00000000-0000-0000-0000-000000000000', // we only want System\n impersonatedUserId: null,\n includeUserOnly: false,\n // This used to be 10, but sometimes if it's just one marketplace broadcast failed, and all others didn't,\n // top 10 may be all the successful ones, so to find a failure one we need at least 100\n take: 100,\n skip: 0,\n tagName: null,\n });\n\n if (activities?.length) {\n setActivities(activities);\n }\n },\n (error) => {\n trackError('ActivityLogClient.getActivityLogByFilter', error, {\n trackErrorData: {\n listingId: listing.id,\n },\n });\n },\n () => setIsLoading(false)\n );\n }, 3000),\n [activeAccountWebClientConfig, listing.id, trackError]\n );\n\n useEffect(() => {\n if (activities === undefined && hasBroadcastErrors?.length && !isLoading) {\n getBroadcastErrorsForListings();\n }\n }, [\n activities,\n getBroadcastErrorsForListings,\n hasBroadcastErrors?.length,\n isLoading,\n ]);\n\n const failuresByMarketplaces = useMemo(() => {\n let failureMessages: MarketplaceFailure[] = [];\n if (activities?.length) {\n const additionalInfos = activities.map(\n (a) => a.additionalInfo['MarketplaceSyncResult']\n );\n\n failureMessages = additionalInfos\n .filter(\n (a) =>\n a?.message?.state &&\n a.message.state !== MarketplaceOperationResultState.Succeeded\n )\n .map(\n (a) =>\n ({\n marketplace: a.message.mkp as Marketplace,\n messages: normalizeActivityLogMessage(a.message.message),\n }) as MarketplaceFailure\n );\n }\n\n if (hasBroadcastErrors?.length) {\n const broadcastErrorMessages = hasBroadcastErrors\n .filter((error) => error.errMsgs != null && error.errMsgs.length > 0)\n .map(\n (error) =>\n ({\n marketplace: error.mkp as Marketplace,\n messages: error.errMsgs,\n }) as MarketplaceFailure\n );\n failureMessages = [...failureMessages, ...broadcastErrorMessages];\n }\n\n return failureMessages;\n }, [activities, hasBroadcastErrors]);\n\n return failuresByMarketplaces;\n};\n","import { useState } from 'react';\nimport { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { MultiDetailSection } from 'src/modals/common';\nimport { DuplicateListingSection } from 'src/modals/ListingDetails/components/DuplicateListingSection/DuplicateListingSection';\nimport { EnableNativeSyncSection } from 'src/modals/ListingDetails/components/EnableNativeSyncSection/EnableNativeSyncSection';\nimport { ProofOfPurchaseSection } from 'src/modals/ListingDetails/components/ProofOfPurchaseSection/ProofOfPurchaseSection';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ListingDetails,\n ListingStatus,\n Marketplace,\n} from 'src/WebApiController';\nimport { Feature, ListingClient } from 'src/WebApiController';\n\nimport { MarketplaceTable } from './MarketplaceTable';\nimport { useGetMarketplaceFailures } from './useGetMarketplaceFailures';\n\nexport const MarketplaceBroadcastSection = ({\n listing,\n disabled,\n setLoading,\n}: {\n listing: ListingDetails;\n disabled?: boolean;\n setLoading: (nextValue: boolean) => void;\n}) => {\n const [ignoreDup, setIgnoreDup] = useState(listing?.ignoreDup ?? false);\n\n const { showErrorDialog } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const marketplaceFailures = useGetMarketplaceFailures(listing);\n const hasIgnoreDupFeature = useUserHasFeature(Feature.IgnoreDuplicate);\n\n // We need to keep a local state of the listing status so we can use this to reflect the listing toggle and status when user clicks\n // otherwise we have to wait until the status is updated in the server before the UI shows the updates\n // However, mainting this local state in sync with the server is a bit nuanced - do be care of changing this logic\n const [marketplaceListingStatus, setMarketplaceListingStatus] = useState<\n Record\n >(\n // Initialized this state to what the current market listing status is\n listing.mkpListings\n ?.filter((ml) => ml.mkp)\n .reduce(\n (ml, cur) => {\n ml[cur.mkp!] = cur.status;\n return ml;\n },\n {} as Record\n ) ?? ({} as Record)\n );\n\n const handleIgnoreDuplicateClick = useCallback(\n async (isChecked: boolean) => {\n setLoading(true);\n setIgnoreDup(isChecked);\n tryInvokeApi(\n async () => {\n const client = new ListingClient(activeAccountWebClientConfig);\n const success = await client.updateListingIgnoreDuplicate(\n listing?.id,\n isChecked\n );\n\n if (!success) {\n setIgnoreDup(!isChecked);\n } else if (listing) {\n refreshExpandedListItems();\n\n const unbroadcastResult = await client.deleteMarketplaceListings(\n listing.id,\n []\n );\n if (unbroadcastResult) {\n const newStatuses = Object.keys(marketplaceListingStatus).reduce(\n (acc, marketplace) => {\n acc[marketplace as Marketplace] = ListingStatus.Delisted;\n return acc;\n },\n {} as Record\n );\n setMarketplaceListingStatus(newStatuses);\n }\n }\n },\n (error) => {\n showErrorDialog('ListingClient.updateListingIgnoreDuplicate', error, {\n trackErrorData: { ListingId: listing?.id },\n });\n },\n () => {\n setLoading(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n listing,\n marketplaceListingStatus,\n refreshExpandedListItems,\n setLoading,\n showErrorDialog,\n ]\n );\n\n const isDuplicate =\n !!listing?.dupListingId && (!hasIgnoreDupFeature || !ignoreDup);\n\n const isDisabled = disabled || isDuplicate;\n\n const sections = [\n ,\n ,\n ,\n ];\n\n return (\n <>\n }\n extraContent={sections}\n >\n \n \n \n );\n};\n","import { FormProvider } from 'react-hook-form';\nimport { ListingDetails } from 'src/WebApiController';\n\nimport { useListingDetailsContext } from '../../ListingDetailsModalV2Context';\nimport { AdminHoldNotesSection } from './AdminHoldNotes';\nimport { MarketplaceBroadcastSection } from './MarketplaceBroadcastSection';\n\ntype ListingDetailsBroadcastFormProps = {\n listing: ListingDetails;\n};\n\nexport const ListingDetailsBroadcastForm: React.FC<\n ListingDetailsBroadcastFormProps\n> = ({ listing }) => {\n const { methods, isLoading, setLoading } = useListingDetailsContext();\n\n return (\n \n \n {listing?.isAdminHold && }\n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { compareMarketplace } from 'src/utils/eventWithDataUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingDetailsBroadcastSectionUpdates,\n Marketplace,\n} from 'src/WebApiController';\n\nconst getListingDetailsBroadcastInput = (\n listing: ListingDetails | null | undefined\n): ListingDetailsBroadcastSectionUpdates => {\n return {\n id: listing?.id ?? 0,\n rowVersion: null,\n adminHoldNotes: listing?.adminHoldNotes ?? null,\n enableNativeSync: listing?.enableNativeSync ?? null,\n marketplaceSeatOverrides:\n listing?.mkpListings\n ?.filter((m) => m.mkp && m.mkp !== Marketplace.Offline)\n ?.toSorted((a, b) => compareMarketplace(a.mkp, b.mkp))\n ?.map((m) => ({\n marketplace: m.mkp,\n overrideSection: m.overrideSection,\n overrideRow: m.overrideRow,\n overrideSeats: m.overrideSeats,\n overrideRowId: m.overrideRowId,\n overrideSectionId: m.overrideSectionId,\n })) ?? [],\n };\n};\n\nexport const useBroadcastForm = (\n listing: ListingDetails | null | undefined,\n onSubmitStart: () => void,\n onSubmitDone: (success?: boolean) => Promise\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const methods = useForm({\n defaultValues: listing?.dataIsLoaded[ListingDetailDataField.Basic]\n ? getListingDetailsBroadcastInput(listing)\n : undefined,\n });\n\n useEffect(() => {\n if (\n methods.formState.defaultValues == null &&\n listing?.dataIsLoaded[ListingDetailDataField.Basic]\n ) {\n methods.reset(getListingDetailsBroadcastInput(listing));\n }\n }, [methods, listing]);\n\n const onSubmitHandler = useCallback(\n async (broadcastSectionForm: ListingDetailsBroadcastSectionUpdates) => {\n tryInvokeApi(\n async () => {\n onSubmitStart();\n const result = await new ListingClient(\n activeAccountWebClientConfig\n ).updateListingBroadcastSection(broadcastSectionForm);\n\n if (isSuccess(result)) {\n // Reset the form to latest changed\n methods.reset(broadcastSectionForm);\n await onSubmitDone();\n } else {\n showErrorDialog(\n 'ListingClient.updateListingBroadcastSection',\n { message: result.message, status: result.status },\n {\n trackErrorData: {\n broadcastSectionForm,\n },\n }\n );\n }\n },\n (error) => {\n showErrorDialog(\n 'ListingClient.updateListingBroadcastSection',\n error,\n {\n trackErrorData: broadcastSectionForm,\n }\n );\n },\n () => {\n onSubmitDone(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n methods,\n onSubmitDone,\n onSubmitStart,\n showErrorDialog,\n ]\n );\n\n const onSubmit = useCallback(() => {\n methods.handleSubmit(onSubmitHandler)();\n }, [methods, onSubmitHandler]);\n\n const onReset = useCallback(() => {\n methods.reset(getListingDetailsBroadcastInput(listing));\n }, [listing, methods]);\n\n const input = methods.watch();\n\n const hasChanges = useMemo(() => {\n const defaultValues = methods.formState.defaultValues;\n return (\n input.adminHoldNotes !== defaultValues?.adminHoldNotes ||\n input.enableNativeSync !== defaultValues?.enableNativeSync ||\n !isEqual(\n input.marketplaceSeatOverrides,\n defaultValues?.marketplaceSeatOverrides\n )\n );\n }, [input, methods.formState.defaultValues]);\n\n return {\n hasChanges,\n methods,\n onSubmit,\n onReset,\n };\n};\n","export enum KnownVendors {\n StubHub = 'StubHub',\n Ticketmaster = 'TicketMaster',\n TicketmasterCa = 'Ticketmaster CA',\n Axs = 'AXS',\n Eventbrite = 'Eventbrite',\n Livenation = 'Livenation',\n BroadwayDotCom = 'broadway.com',\n Telecharge = 'Telecharge',\n Ticketon = 'Ticketon',\n Seetickets = 'Seetickets',\n Etix = 'Etix',\n Tixr = 'Tixr',\n Festicket = 'Festicket',\n Insomniac = 'Insomniac',\n DiceImport = 'Dice Import',\n MgmResorts = 'MGM Resorts',\n Tickeri = 'Tickeri',\n SmithCenterImport = 'Smith Center Import',\n Stubwire = 'Stubwire',\n Computicket = 'Computicket',\n}\n","import { vars } from 'src/core/themes';\nimport { Marketplace } from 'src/WebApiController';\n\nimport { KnownVendors } from './knownVendors';\n\nexport const MARKETPLACE_TO_BACKGROUND_COLOR: Record = {\n [Marketplace.StubHub]: vars.color.marketplaceBackgroundStubhub,\n [Marketplace.AXS]: vars.color.marketplaceBackgroundAxs,\n [Marketplace.SeatGeek]: vars.color.marketplaceBackgroundSeatgeek,\n [Marketplace.VividSeats]: vars.color.marketplaceBackgroundVivid,\n [Marketplace.Ticketmaster]: vars.color.marketplaceBackgroundTicketMaster,\n [Marketplace.TickPick]: vars.color.marketplaceBackgroundTickPick,\n [Marketplace.Offline]: vars.color.marketplaceBackgroundOffline,\n [Marketplace.FanXchange]: vars.color.marketplaceBackgroundFanXchange,\n [Marketplace.Gametime]: vars.color.marketplaceBackgroundGametime,\n [Marketplace.TicketEvolution]:\n vars.color.marketplaceBackgroundTicketEvolution,\n [Marketplace.TicketNetwork]: vars.color.marketplaceBackgroundTicketNetwork,\n [Marketplace.Automatiq]: vars.color.marketplaceBackgroundAutomatiq,\n};\n\nexport const MARKETPLACE_TO_TEXT_COLOR: Record = {\n [Marketplace.SeatGeek]: vars.color.marketplaceTextSeatgeek,\n [Marketplace.FanXchange]: vars.color.marketplaceTextFanXchange,\n [Marketplace.Automatiq]: vars.color.marketplaceTextAutomatiq,\n};\n\nexport const KNOWNVENDOR_TO_BACKGROUND_COLOR: Record = {\n [KnownVendors.TicketmasterCa]: vars.color.marketplaceBackgroundTicketmasterCa,\n [KnownVendors.Eventbrite]: vars.color.marketplaceBackgroundEventbrite,\n [KnownVendors.Livenation]: vars.color.marketplaceBackgroundLivenation,\n [KnownVendors.BroadwayDotCom]: vars.color.marketplaceBackgroundBroadwayDotCom,\n [KnownVendors.Telecharge]: vars.color.marketplaceBackgroundTelecharge,\n [KnownVendors.Ticketon]: vars.color.marketplaceBackgroundTicketon,\n [KnownVendors.Seetickets]: vars.color.marketplaceBackgroundSeetickets,\n [KnownVendors.Etix]: vars.color.marketplaceBackgroundEtix,\n [KnownVendors.Tixr]: vars.color.marketplaceBackgroundTixr,\n [KnownVendors.Festicket]: vars.color.marketplaceBackgroundFesticket,\n [KnownVendors.Insomniac]: vars.color.marketplaceBackgroundInsomniac,\n [KnownVendors.DiceImport]: vars.color.marketplaceBackgroundDiceImport,\n [KnownVendors.MgmResorts]: vars.color.marketplaceBackgroundMgmResorts,\n [KnownVendors.Tickeri]: vars.color.marketplaceBackgroundTickeri,\n [KnownVendors.SmithCenterImport]:\n vars.color.marketplaceBackgroundSmithCenterImport,\n [KnownVendors.Stubwire]: vars.color.marketplaceBackgroundStubwire,\n [KnownVendors.Computicket]: vars.color.marketplaceBackgroundComputicket,\n};\n\nexport const KNOWNVENDOR_TO_TEXT_COLOR: Record = {\n [KnownVendors.Eventbrite]: vars.color.marketplaceTextEventbrite,\n [KnownVendors.Livenation]: vars.color.marketplaceTextLivenation,\n [KnownVendors.Ticketon]: vars.color.marketplaceTextTicketon,\n [KnownVendors.Etix]: vars.color.marketplaceTextEtix,\n [KnownVendors.Festicket]: vars.color.marketplaceTextFesticket,\n [KnownVendors.MgmResorts]: vars.color.marketplaceTextMgmResorts,\n [KnownVendors.Tickeri]: vars.color.marketplaceTextTickeri,\n [KnownVendors.Stubwire]: vars.color.marketplaceTextStubwire,\n};\n\n/**\n * Function to map brand names to background colors.\n * If we have pre-defined color mappings for brands in `MARKETPLACE_TO_BACKGROUND_COLOR`,\n * simply return the corresponding color.\n * If we don't have a mapping for the brand name, we convert the string to a\n * certain hash and get the corresponding color. Hashing ensures that we get the\n * same color for the same brand name (case insensitive)\n * @param str name for brand\n * @returns color string for the brand\n */\nexport function mapBrandNameToBackgroundcolor(\n str: string | Marketplace | KnownVendors\n): string {\n const marketplaceValue = Object.values(Marketplace).find(\n (m) => m.toString().toLocaleLowerCase() === str.toLocaleLowerCase()\n );\n\n if (marketplaceValue) {\n if (MARKETPLACE_TO_BACKGROUND_COLOR[marketplaceValue] != null) {\n return MARKETPLACE_TO_BACKGROUND_COLOR[marketplaceValue];\n }\n }\n\n const knownVendorValue = Object.values(KnownVendors).find(\n (m) => m.toString().toLocaleLowerCase() === str.toLocaleLowerCase()\n );\n\n if (knownVendorValue) {\n if (KNOWNVENDOR_TO_BACKGROUND_COLOR[knownVendorValue] != null) {\n return KNOWNVENDOR_TO_BACKGROUND_COLOR[knownVendorValue];\n }\n }\n\n // Fallback for colors without a mapping.\n // For missing color for brands, we need to ask Design for a new color\n if (str.length === 0) return vars.color.textBrand;\n str = str.toLocaleLowerCase();\n\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\n hash = hash & hash;\n }\n let color = '#';\n for (let i = 0; i < 3; i++) {\n // Using value [0, 128] to ensure color is dark\n const value = (hash >> (i * 8)) & (255 / 2);\n color += ('00' + value.toString(16)).slice(-2);\n }\n return color;\n}\n\nexport function mapBrandNameToTextcolor(\n str: string | Marketplace | KnownVendors\n): string {\n const marketplaceValue = Object.values(Marketplace).find(\n (m) => m.toString().toLocaleLowerCase() === str.toLocaleLowerCase()\n );\n\n if (marketplaceValue) {\n if (MARKETPLACE_TO_TEXT_COLOR[marketplaceValue] != null) {\n return MARKETPLACE_TO_TEXT_COLOR[marketplaceValue];\n }\n }\n\n const knownVendorValue = Object.values(KnownVendors).find(\n (m) => m.toString().toLocaleLowerCase() === str.toLocaleLowerCase()\n );\n\n if (knownVendorValue) {\n if (KNOWNVENDOR_TO_TEXT_COLOR[knownVendorValue] != null) {\n return KNOWNVENDOR_TO_TEXT_COLOR[knownVendorValue];\n }\n }\n\n return vars.color.marketplaceTextDefault;\n}\n","import { useQuery } from '@tanstack/react-query';\nimport * as Highcharts from 'highcharts';\nimport HighchartsReact from 'highcharts-react-official';\nimport { useMemo, useRef } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { vars } from 'src/core/themes';\nimport { MARKETPLACE_TO_BACKGROUND_COLOR } from 'src/utils/constants/colorMaps';\nimport { DATA_REFRESH_RATE_IN_MILLIS_FAST } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ListingClient,\n ListingDetails,\n ListingStatus,\n Marketplace,\n} from 'src/WebApiController';\n\nimport * as styles from './HistoricalPricingGraph.css';\n\nexport const HistoricalPricingGraph = ({\n listing,\n}: {\n listing: ListingDetails;\n}) => {\n const { mkpListings, id: listingId } = listing;\n\n const historicalPricingText = useContent(ContentId.HistoricalPricing);\n const priceText = useContent(ContentId.Price);\n const { trackError } = useErrorBoundaryContext();\n\n const containerRef = useRef(null);\n\n const { activeAccountWebClientConfig } = useAppContext();\n\n const historicalPricingResult = useQuery({\n queryKey: ['ListingClient.getPriceHistoryByListingId', listingId],\n queryFn: () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return new ListingClient(\n activeAccountWebClientConfig\n ).getPriceHistoryByListingId({\n item1: listingId,\n item2: 1,\n });\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n staleTime: Infinity, // Since we're always refetching on an interval, we don't want query to calculate whether the data is stale\n refetchOnWindowFocus: false,\n networkMode: 'offlineFirst',\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('ListingClient.getPriceHistoryByListingId', error, {\n listingId,\n });\n },\n },\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_FAST,\n });\n\n const marketplacesBroadcasted = useMemo(\n () =>\n mkpListings\n ?.filter((ml) => ml.mkp && ml.status === ListingStatus.Listed)\n .map((ml) => ml.mkp!),\n [mkpListings]\n );\n\n const currencyCode = useMemo(() => {\n const { data } = historicalPricingResult;\n if (!data) return;\n return data[0]?.unitNetProceeds.currency;\n }, [historicalPricingResult]);\n\n const { getUiCurrency } = useLocalizationContext();\n const uiCurrency = getUiCurrency(currencyCode);\n\n const dataAsTuples = useMemo(() => {\n const { data } = historicalPricingResult;\n if (!data) return;\n\n const massagedData = data.reduce<{\n [marketplace: string]: Highcharts.SeriesOptionsType & {\n data: [number, number][];\n };\n }>((acc, current) => {\n const { marketplace, priceDate, unitNetProceeds } = current;\n if (!marketplace) return acc;\n\n const marketplaceColor = MARKETPLACE_TO_BACKGROUND_COLOR[marketplace];\n const isListed = marketplacesBroadcasted?.includes(marketplace);\n const item = acc[marketplace] ?? {\n data: [],\n type: 'line',\n name: marketplace,\n color: marketplaceColor,\n opacity: isListed ? 1 : 0.35,\n marker: {\n lineColor: marketplaceColor,\n },\n visible: marketplace === Marketplace.StubHub,\n };\n item.data.push([new Date(priceDate).getTime(), unitNetProceeds.amt]);\n acc[marketplace] = item;\n return acc;\n }, {});\n\n return Object.values(massagedData);\n }, [historicalPricingResult, marketplacesBroadcasted]);\n\n const options: Highcharts.Options = {\n chart: {\n zooming: { type: 'x' },\n width: 0.9 * (containerRef.current?.clientWidth ?? 500),\n },\n title: {\n text: historicalPricingText,\n align: 'left',\n },\n xAxis: { type: 'datetime' },\n yAxis: {\n title: { text: priceText },\n labels: { format: `${uiCurrency.sym}{text}` },\n },\n legend: { enabled: true },\n plotOptions: {\n line: {\n color: vars.color.backgroundBrandActive,\n marker: {\n radius: 4,\n lineColor: vars.color.backgroundBrandHover,\n fillColor: '#fff',\n lineWidth: 2,\n },\n lineWidth: 2,\n threshold: null,\n },\n series: {\n animation: false,\n },\n },\n series: dataAsTuples,\n // Watermark\n credits: { enabled: false },\n };\n\n const chartComponentRef = useRef(null);\n\n return dataAsTuples?.length ? (\n
    \n \n
    \n ) : null;\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { DetailGroup, DetailSection, SectionContent } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ListingDetails } from 'src/WebApiController';\n\nimport { HistoricalPricingGraph } from './HistoricalPricingGraph/HistoricalPricingGraph';\n\nexport const HistoricalPricingGraphSection = ({\n listing,\n}: {\n listing: ListingDetails;\n}) => {\n return (\n }>\n \n \n \n \n \n \n );\n};\n","import { ChangeEvent, useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState } from 'src/core/POS/PosTextField';\nimport { Radio, RadioGroup } from 'src/core/ui';\nimport { Stack } from 'src/core/ui';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { DetailGroup, DetailSection, SectionContent } from 'src/modals/common';\nimport {\n PRICE_FLOOR_CEILING_MODE_OPTIONS,\n PriceFloorCeilingMode,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getAllInPriceFromListPrice,\n getListPriceFromAllinPrice,\n} from 'src/utils/inventoryUtils';\nimport {\n AutoPricingCompListingMode,\n ListingDetails,\n ListingDetailsAutoPricingSectionUpdates,\n Marketplace,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { useAutoPricingSettings } from '../useAutoPricingSettings';\nimport * as styles from './PricingSection.css';\n\nexport const PricingProtection = ({\n listing,\n disabled,\n}: {\n listing?: ListingDetails | null;\n disabled?: boolean;\n}) => {\n const { setValue, watch, clearErrors, formState } =\n useFormContext();\n\n const { loginContext } = useAppContext();\n const stubHubMkpSettings =\n loginContext?.user?.activeAccount?.marketplaceSettings?.find(\n (m) => m.mkp === Marketplace.StubHub\n );\n\n const netProceedsFloor = watch('netProceedsFloor');\n const netProceedsCeiling = watch('netProceedsCeiling');\n\n const floorError = formState.errors.netProceedsFloor?.message;\n const ceilingError = formState.errors.netProceedsCeiling?.message;\n\n const { canSetPrice, autoPricingEnabled, uiCurrency, compListingMode } =\n useAutoPricingSettings(listing);\n\n const priceProtectionDisabled =\n disabled ||\n listing?.isDeleted ||\n !canSetPrice ||\n Boolean(\n autoPricingEnabled &&\n compListingMode === AutoPricingCompListingMode.ParentListing\n );\n\n const { value: priceFloorMode, setUserSetting: setPriceFloorMode } =\n useServerUserSetting({\n id: UserSetting.PriceFloorCeilingMode,\n currentLoginUserOnly: true,\n });\n\n const onPriceFloorChange = useCallback(\n (e: ChangeEvent) => {\n const v = parseFloat(e.target.value);\n if (v >= 0 && v < Number.MAX_VALUE) {\n if (netProceedsCeiling && v < netProceedsCeiling) {\n clearErrors('netProceedsFloor');\n }\n\n let newV = v;\n if (priceFloorMode === PriceFloorCeilingMode.Website) {\n // If we're editing in WebSite mode, we need to convert it to proceeds\n newV = getListPriceFromAllinPrice(\n v,\n listing,\n stubHubMkpSettings?.sellerFee\n )!;\n }\n\n setValue('netProceedsFloor', newV);\n } else {\n setValue('netProceedsFloor', null);\n }\n },\n [\n clearErrors,\n netProceedsCeiling,\n priceFloorMode,\n setValue,\n listing,\n stubHubMkpSettings?.sellerFee,\n ]\n );\n\n const onPriceCeilingChange = useCallback(\n (e: ChangeEvent) => {\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n if (netProceedsFloor && v > netProceedsFloor) {\n clearErrors('netProceedsCeiling');\n }\n\n let newV = v;\n if (priceFloorMode === PriceFloorCeilingMode.Website) {\n // If we're editing in WebSite mode, we need to convert it to proceeds\n newV = getListPriceFromAllinPrice(\n v,\n listing,\n stubHubMkpSettings?.sellerFee\n )!;\n }\n\n setValue('netProceedsCeiling', newV);\n } else {\n setValue('netProceedsCeiling', null);\n }\n },\n [\n clearErrors,\n netProceedsFloor,\n priceFloorMode,\n setValue,\n listing,\n stubHubMkpSettings?.sellerFee,\n ]\n );\n\n return (\n <>\n }>\n \n \n }>\n \n \n {PRICE_FLOOR_CEILING_MODE_OPTIONS.map((m) => (\n \n ))}\n \n \n \n \n\n \n \n
    \n \n
    \n \n \n \n
    \n \n
    \n \n \n \n
    \n
    \n
    \n
    \n \n );\n};\n","import { formatInTimeZone } from 'date-fns-tz';\nimport { createRef, useCallback, useEffect, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { MarketplaceLogo } from 'src/components/common/MarketplaceLogo';\nimport { ListingPriceInput } from 'src/components/Input/ListingPriceInput';\nimport { SellerAccountEmployeeSelector } from 'src/components/Selectors/SellerAccountEmployeeSelector';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { SimpleTable } from 'src/core/ui';\nimport {\n Alert,\n AlertWithSuppressionDialog,\n useManualPriceDisableAutoPricingDialog,\n} from 'src/dialogs/AlertWithSuppressionDialog';\nimport { useManualPriceAdjustFloorOrCeilingDialog } from 'src/dialogs/AlertWithSuppressionDialog/useManualPriceAdjustFloorOrCeilingDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useGetEventFullInfo } from 'src/hooks/useGetEventFullInfo';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserCanSetPrice } from 'src/hooks/useUserHasListingPermissions';\nimport {\n Detail,\n DetailGroup,\n DetailSection,\n SectionContent,\n} from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isDatePassedHours } from 'src/utils/dateTimeUtils';\nimport {\n compareMarketplace,\n getIsInternationalEvent,\n} from 'src/utils/eventWithDataUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingDetailsPricingSectionUpdates,\n ListingMetrics,\n ListingStatus,\n Marketplace,\n Permission,\n} from 'src/WebApiController';\n\nimport * as styles from './EconomicsSection.css';\n\ntype EconomicsSectionProps = {\n listing?: ListingDetails | null;\n disabled?: boolean;\n};\n\nexport const EconomicsSection = ({\n listing,\n disabled,\n}: EconomicsSectionProps) => {\n const { timeZone } = useSiteTimezoneContext();\n const isListed =\n listing?.status === ListingStatus.Listed ||\n listing?.status === ListingStatus.ListingPending;\n\n const { activeAccountWebClientConfig, loginContext } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const { getUiCurrency } = useLocalizationContext();\n const uiCurrency = useMemo(\n () =>\n getUiCurrency(\n listing?.currency ??\n loginContext?.user?.activeAccount?.currencyCode ??\n 'USD'\n ),\n [\n getUiCurrency,\n listing?.currency,\n loginContext?.user?.activeAccount?.currencyCode,\n ]\n );\n const canChangePricer = useUserHasAnyOfPermissions(\n Permission.Inventory_SetPrice\n );\n const { refreshMetrics } = useCatalogMetricsContext();\n\n const { watch, setValue, register, getValues, formState } =\n useFormContext();\n\n const listPrice = watch('listPrice');\n const marketplacePriceUpdates = watch('marketplacePriceUpdates');\n const autoPricingEnabled = watch('autoPricingEnabled');\n const netProceedsFloor = watch('netProceedsFloor');\n const netProceedsCeiling = watch('netProceedsCeiling');\n const pricerSellerUserId = watch('pricerSellerUserId');\n const canSetPrice = useUserCanSetPrice(listing, false);\n\n const onUnbroadcast = useCallback(() => {\n if (!listing) {\n return;\n }\n tryInvokeApi(\n async () => {\n const client = new ListingClient(activeAccountWebClientConfig);\n\n const result = await client.deleteMarketplaceListings(listing.id, []);\n if (result) {\n refreshMetrics?.();\n\n // Refresh the active data so the SaleDetail dialog and table will have the new content\n await setActivePosEntity(listing.id, listing.idOnMkp, true, [\n ListingDetailDataField.Basic,\n ]);\n }\n },\n (error) => {\n showErrorDialog('ListingClient.deleteMarketplaceListings', error, {\n trackErrorData: {\n listingId: listing.id,\n marketplaceListingID: listing.idOnMkp,\n },\n });\n }\n );\n }, [\n activeAccountWebClientConfig,\n listing,\n refreshMetrics,\n setActivePosEntity,\n showErrorDialog,\n ]);\n\n const thirdPartyMPs = (\n listing?.mkpListings?.map(\n ({ mkp, markup, sellerAccountDefaultMarkup, sellerFee }) => ({\n mkp,\n markup,\n sellerAccountDefaultMarkup:\n sellerAccountDefaultMarkup != null\n ? roundToPrecision(sellerAccountDefaultMarkup * 100, 2)\n : null,\n sellerFee,\n })\n ) ??\n loginContext?.user?.activeAccount?.marketplaceSettings?.map(\n ({ mkp, markup, sellerFee }) => ({\n mkp,\n markup,\n sellerAccountDefaultMarkup: markup,\n sellerFee,\n })\n ) ??\n []\n )\n .filter((ml) => ml.mkp)\n .reduce(\n (r, m) => {\n r[m.mkp!] = m;\n return r;\n },\n {} as Record<\n Marketplace,\n {\n mkp: Marketplace;\n markup: number | null;\n sellerAccountDefaultMarkup: number | null;\n sellerFee: number | null;\n }\n >\n );\n const stubHubMarketplace = thirdPartyMPs[Marketplace.StubHub];\n\n const isDisabled = useMemo(() => {\n if (disabled || !canSetPrice) return true;\n // Bulk edit mode should not disable the section\n if (!listing) return false;\n if (listing.isDeleted) return true;\n\n return false;\n }, [disabled, canSetPrice, listing]);\n\n const { event, venue } = useGetEventFullInfo(null);\n\n const isInternationalEvent = getIsInternationalEvent(venue?.country?.code);\n\n const warningDialog = useBasicDialog();\n\n const manualPriceDisableAutoPricingProps =\n useManualPriceDisableAutoPricingDialog(() => {\n setValue('autoPricingEnabled', false);\n });\n\n const marketplacePrices = marketplacePriceUpdates\n .filter((m) => m.priceByMarketplace)\n .map((m) => m.listPrice);\n const allListPrices = useMemo(() => {\n const p = [listPrice, ...marketplacePrices]\n .filter((n) => n != null)\n .map((n) => n!);\n\n return p;\n }, [listPrice, marketplacePrices]);\n\n const smallestListPrice = useMemo(\n () => Math.min(...allListPrices.filter((l) => l > 0)),\n [allListPrices]\n );\n const largestListPrice = useMemo(\n () => Math.max(...allListPrices.filter((l) => l > 0)),\n [allListPrices]\n );\n const manualPriceAdjustFloorProps = useManualPriceAdjustFloorOrCeilingDialog(\n smallestListPrice,\n netProceedsFloor,\n netProceedsCeiling,\n () => {\n if (smallestListPrice < (netProceedsFloor ?? Number.MIN_VALUE)) {\n setValue('netProceedsFloor', smallestListPrice);\n }\n },\n () => {\n if (\n listPrice != null &&\n listPrice > 0 &&\n listPrice < (netProceedsFloor ?? Number.MIN_VALUE)\n ) {\n setValue('listPrice', netProceedsFloor);\n }\n\n marketplacePriceUpdates.forEach((m, i) => {\n if (m.priceByMarketplace && m.listPrice != null && m.listPrice > 0) {\n if (m.listPrice < (netProceedsFloor ?? 0)) {\n setValue(\n `marketplacePriceUpdates.${i}.listPrice`,\n netProceedsFloor\n );\n }\n }\n });\n }\n );\n\n const manualPriceAdjustCeilingProps =\n useManualPriceAdjustFloorOrCeilingDialog(\n largestListPrice,\n netProceedsFloor,\n netProceedsCeiling,\n () => {\n if (largestListPrice > (netProceedsCeiling ?? Number.MAX_VALUE)) {\n setValue('netProceedsCeiling', largestListPrice);\n }\n },\n () => {\n if (\n listPrice != null &&\n listPrice > 0 &&\n listPrice > (netProceedsCeiling ?? Number.MAX_VALUE)\n ) {\n setValue('listPrice', netProceedsCeiling);\n }\n\n marketplacePriceUpdates.forEach((m, i) => {\n if (m.priceByMarketplace && m.listPrice != null && m.listPrice > 0) {\n if (m.listPrice > (netProceedsCeiling ?? Number.MAX_VALUE)) {\n setValue(\n `marketplacePriceUpdates.${i}.listPrice`,\n netProceedsCeiling\n );\n }\n }\n });\n }\n );\n\n const [alerts, setAlerts] = useState([]);\n const rowsCount = marketplacePriceUpdates.length + 1;\n const [inputRefsArray] = useState(() =>\n Array.from({ length: rowsCount }, () => createRef())\n );\n const [focusedInputIndex, setFocusedInputIndex] = useState(0);\n\n const getFloorAlerts = useCallback((): Alert[] => {\n if (smallestListPrice < (netProceedsFloor ?? Number.MIN_VALUE)) {\n if (isDatePassedHours(manualPriceAdjustFloorProps.lastTimeStamp, 1)) {\n return [manualPriceAdjustFloorProps];\n }\n }\n return [];\n }, [manualPriceAdjustFloorProps, netProceedsFloor, smallestListPrice]);\n\n const getCeilingAlerts = useCallback((): Alert[] => {\n if (largestListPrice > (netProceedsCeiling ?? Number.MAX_VALUE)) {\n if (isDatePassedHours(manualPriceAdjustCeilingProps.lastTimeStamp, 1)) {\n return [manualPriceAdjustCeilingProps];\n }\n }\n return [];\n }, [largestListPrice, manualPriceAdjustCeilingProps, netProceedsCeiling]);\n const getAutoPriceAlerts = useCallback((): Alert[] => {\n if (\n autoPricingEnabled &&\n isDatePassedHours(manualPriceDisableAutoPricingProps.lastTimeStamp, 1)\n ) {\n return [manualPriceDisableAutoPricingProps];\n }\n return [];\n }, [autoPricingEnabled, manualPriceDisableAutoPricingProps]);\n\n const onPriceChanged = useCallback(() => {\n if (listPrice === formState?.defaultValues?.listPrice) {\n return;\n }\n const newAlerts = [\n ...getFloorAlerts(),\n ...getCeilingAlerts(),\n ...getAutoPriceAlerts(),\n ];\n\n if (newAlerts.length) {\n setAlerts(newAlerts);\n warningDialog.launchDialog();\n }\n }, [\n listPrice,\n formState?.defaultValues?.listPrice,\n getFloorAlerts,\n getCeilingAlerts,\n getAutoPriceAlerts,\n warningDialog,\n ]);\n\n const onPriceEdit = useCallback(\n (newPrice: number, priceByMarketplaceEnabled: boolean, idx: number) => {\n if (listPrice) {\n const newMarkup = (newPrice - listPrice) / listPrice;\n\n if (priceByMarketplaceEnabled) {\n setValue(\n `marketplacePriceUpdates.${idx}.markup`,\n roundToPrecision(newMarkup * 100, 2)\n );\n onPriceChanged();\n }\n }\n },\n [listPrice, onPriceChanged, setValue]\n );\n\n const handleEnter = (index: number) => {\n let nextIndex = 0;\n for (let i = index + 1; i < rowsCount; i++) {\n // find next enabled\n if (marketplacePriceUpdates[i - 1]?.priceByMarketplace) {\n nextIndex = i;\n break;\n }\n }\n const nextInput = inputRefsArray?.[nextIndex]?.current;\n if (nextInput) {\n nextInput.focus();\n setFocusedInputIndex(() => nextIndex);\n }\n onPriceChanged();\n };\n\n useEffect(() => {\n if (isDisabled) return;\n const nextInput = inputRefsArray?.[focusedInputIndex]?.current;\n if (nextInput) {\n setTimeout(() => {\n nextInput.focus();\n nextInput.select();\n }, 100);\n }\n }, [isDisabled, focusedInputIndex, inputRefsArray]);\n\n return (\n }>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n onPriceChanged()}\n onEnter={() => handleEnter(0)}\n />\n \n \n onPriceChanged()}\n onEnter={() => handleEnter(0)}\n />\n \n \n {!isInternationalEvent &&\n // We only show other marketplaces when the Event is US\n marketplacePriceUpdates\n .filter((mp) => mp.marketplace !== Marketplace.StubHub)\n .toSorted((a, b) =>\n compareMarketplace(a.marketplace, b.marketplace)\n )\n .map((mp, i) => {\n const ml = thirdPartyMPs[mp.marketplace!];\n\n const priceByMarketplaceEnabled = getValues(\n `marketplacePriceUpdates.${i}.priceByMarketplace`\n );\n\n return (\n \n \n \n \n \n handleEnter(i + 1)}\n onChange={(val) => {\n onPriceEdit(val, priceByMarketplaceEnabled, i);\n }}\n />\n \n \n {\n onPriceEdit(val, priceByMarketplaceEnabled, i);\n }}\n onEnter={() => handleEnter(i + 1)}\n />\n \n \n \n \n \n \n\n \n {\n const newMode = !mp.priceByMarketplace;\n setValue(\n `marketplacePriceUpdates.${i}.priceByMarketplace`,\n newMode\n );\n if (!newMode) {\n // If this is false, set the value to listValue\n const mpListPrice = roundToPrecision(\n (listPrice ?? 0) * (1 + (ml.markup ?? 0)),\n uiCurrency.dec\n );\n setValue(\n `marketplacePriceUpdates.${i}.listPrice`,\n mpListPrice\n );\n }\n\n setValue(\n `marketplacePriceUpdates.${i}.markup`,\n null\n );\n }}\n />\n \n \n );\n })}\n \n \n <>\n \n }\n style={{ width: '100%' }}\n >\n {\n if (newId !== pricerSellerUserId) {\n setValue('pricerSellerUserId', newId);\n }\n }}\n onClick={(e) => e.stopPropagation()}\n />\n \n \n\n {listing && (\n \n {listing.lastPrcUpdOn && (\n }\n detail={\n \n {listing.lastPrcUpdOn\n ? formatInTimeZone(\n new Date(listing.lastPrcUpdOn),\n timeZone,\n 'MMM d, yyyy',\n {\n locale: getLocaleFromLanguageOrCurrent(),\n }\n )\n : ''}\n \n }\n />\n )}\n \n )}\n \n \n\n }\n size=\"md\"\n {...warningDialog.dialogProps}\n alerts={alerts}\n onOkay={() => warningDialog.closeDialog()}\n onCancel={() => warningDialog.closeDialog()}\n />\n \n );\n};\n","import { FormProvider } from 'react-hook-form';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Feature, ListingDetails } from 'src/WebApiController';\n\nimport { HistoricalPricingGraphSection } from '../../components/HistoricalPricingGraphSection';\nimport { useListingDetailsContext } from '../../ListingDetailsModalV2Context';\nimport { PricingProtection } from '../AutoPricingForm/Sections/PricingProtection';\nimport { EconomicsSection } from './EconomicsSection/EconomicsSection';\n\ntype ListingDetailsPricingFormProps = {\n listing: ListingDetails;\n};\n\nexport const ListingDetailsPricingForm = ({\n listing,\n}: ListingDetailsPricingFormProps) => {\n const { methods, isLoading } = useListingDetailsContext();\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n\n return (\n \n \n {hasAutoPricingFeature && (\n \n )}\n \n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { EMPTY_SELLER_USER_ID } from 'src/utils/constants/constants';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { compareMarketplace } from 'src/utils/eventWithDataUtils';\nimport { getAllInPriceFromListPriceForListing } from 'src/utils/inventoryUtils';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingDetailsPricingSectionUpdates,\n ListingMarketplacePriceUpdateInput,\n Marketplace,\n} from 'src/WebApiController';\n\nconst getListingDetailPricingInput = (\n listing: ListingDetails | null | undefined\n): ListingDetailsPricingSectionUpdates => {\n const marketplacePriceUpdates = listing?.mkpListings\n ? listing.mkpListings\n ?.filter((m) => m.mkp !== Marketplace.StubHub)\n ?.toSorted((a, b) => compareMarketplace(a.mkp, b.mkp))\n ?.map((x) => {\n const listPriceMarkup = x.markup ?? x.sellerAccountDefaultMarkup ?? 0;\n\n return {\n allInPrice: x.isPriceByMkp\n ? (x.webPrice ?? listing?.allInPrice)\n : null,\n listPrice: x.isPriceByMkp\n ? (x.netProcs ?? listing?.listPrice)\n : (listing?.listPrice ?? 0) * (1 + listPriceMarkup),\n priceByMarketplace: x.isPriceByMkp,\n marketplace: x.mkp,\n markup:\n x.markup != null ? roundToPrecision(x.markup * 100, 2) : null,\n } as ListingMarketplacePriceUpdateInput;\n })\n : [];\n return {\n id: listing?.id ?? 0,\n rowVersion: null,\n listPrice: listing?.listPrice ?? null,\n allInPrice: getAllInPriceFromListPriceForListing(listing, null) ?? null,\n netProceedsFloor: listing?.procsFloor ?? -1,\n netProceedsCeiling: listing?.procsCeil ?? -1,\n autoPricingEnabled: listing?.isAutoPrc ?? null,\n marketplacePriceUpdates,\n pricerSellerUserId: listing?.pricerId ?? EMPTY_SELLER_USER_ID,\n buyerUserId: null,\n currencyCode: listing?.currency ?? null,\n };\n};\n\nexport const usePricingForm = (\n listing: ListingDetails | null | undefined,\n onSubmitStart: () => void,\n onSubmitDone: (success?: boolean) => Promise\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const methods = useForm({\n defaultValues: listing?.dataIsLoaded[ListingDetailDataField.Pricing]\n ? getListingDetailPricingInput(listing)\n : undefined,\n });\n\n useEffect(() => {\n if (\n methods.formState.defaultValues == null &&\n listing?.dataIsLoaded[ListingDetailDataField.Pricing]\n ) {\n methods.reset(getListingDetailPricingInput(listing));\n }\n }, [methods, listing]);\n\n const onSubmitHandler = useCallback(\n async (pricingSectionForm: ListingDetailsPricingSectionUpdates) => {\n tryInvokeApi(\n async () => {\n onSubmitStart();\n const result = await new ListingClient(\n activeAccountWebClientConfig\n ).updateListingPricingSection(pricingSectionForm);\n\n if (isSuccess(result)) {\n // Reset the form to latest changed\n methods.reset(pricingSectionForm);\n await onSubmitDone();\n } else {\n showErrorDialog(\n 'ListingClient.updateListingPricingSection',\n { message: result.message, status: result.status },\n {\n trackErrorData: {\n pricingSectionForm,\n },\n }\n );\n }\n },\n (error) => {\n showErrorDialog('ListingClient.updateListingPricingSection', error, {\n trackErrorData: pricingSectionForm,\n });\n },\n () => {\n onSubmitDone(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n methods,\n onSubmitDone,\n onSubmitStart,\n showErrorDialog,\n ]\n );\n\n const onSubmit = useCallback(() => {\n methods.handleSubmit(onSubmitHandler)();\n }, [methods, onSubmitHandler]);\n\n const onReset = useCallback(() => {\n methods.reset(getListingDetailPricingInput(listing));\n }, [listing, methods]);\n\n const input = methods.watch();\n\n const hasChanges = useMemo(() => {\n const defaultValues = methods.formState.defaultValues;\n return (\n input.listPrice !== defaultValues?.listPrice ||\n input.allInPrice !== defaultValues?.allInPrice ||\n input.netProceedsFloor !== defaultValues?.netProceedsFloor ||\n input.netProceedsCeiling !== defaultValues?.netProceedsCeiling ||\n input.autoPricingEnabled !== defaultValues?.autoPricingEnabled ||\n input.pricerSellerUserId !== defaultValues?.pricerSellerUserId ||\n input.buyerUserId !== defaultValues?.buyerUserId ||\n input.currencyCode !== defaultValues?.currencyCode ||\n !isEqual(\n input.marketplacePriceUpdates,\n defaultValues?.marketplacePriceUpdates\n )\n );\n }, [input, methods.formState.defaultValues]);\n\n return {\n hasChanges,\n methods,\n onSubmit,\n onReset,\n };\n};\n","import { useFormContext } from 'react-hook-form';\nimport { TagsFormBodyV2 } from 'src/components/TagsFormBody';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserCanUpdateListingTags } from 'src/hooks/useUserHasListingPermissions';\nimport { DetailSection } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n ListingDetails,\n ListingDetailsTagsSectionUpdates,\n Permission,\n} from 'src/WebApiController';\n\ntype TagsTabProp = {\n listing: ListingDetails | null;\n disabled?: boolean;\n isBulkEdit?: boolean;\n};\n\nexport const TagsSection: React.FC = ({\n listing,\n disabled,\n isBulkEdit = false,\n}) => {\n const { setValue, watch } =\n useFormContext();\n const tags = watch('tags') ?? [];\n\n const canCreateTage = useUserHasAnyOfPermissions(\n Permission.Inventory_AddTagType\n );\n const canEditTags = useUserCanUpdateListingTags(listing, isBulkEdit);\n\n return (\n }>\n {\n setValue('tags', tags);\n }}\n disabled={disabled}\n entityType={ActionOutboxEntityType.Listing}\n />\n \n );\n};\n","import { FormProvider } from 'react-hook-form';\nimport { ListingDetails } from 'src/WebApiController';\n\nimport { useListingDetailsContext } from '../../ListingDetailsModalV2Context';\nimport { TagsSection } from './TagsSection';\n\ntype ListingDetailsTagsFormProps = {\n listing: ListingDetails | null;\n};\n\nexport const ListingDetailsTagsForm: React.FC = ({\n listing,\n}) => {\n const { methods, isLoading } = useListingDetailsContext();\n return (\n \n \n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingDetailsTagsSectionUpdates,\n} from 'src/WebApiController';\n\nconst getListingDetailTagsInput = (\n listing: ListingDetails | null | undefined\n): ListingDetailsTagsSectionUpdates => {\n return {\n id: listing?.id ?? 0,\n rowVersion: null,\n tags: listing?.tags ?? null,\n };\n};\n\nexport const useTagsForm = (\n listing: ListingDetails | null | undefined,\n onSubmitStart: () => void,\n onSubmitDone: (success?: boolean) => Promise\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const methods = useForm({\n defaultValues: listing?.dataIsLoaded[ListingDetailDataField.Tags]\n ? getListingDetailTagsInput(listing)\n : undefined,\n });\n\n useEffect(() => {\n if (\n methods.formState.defaultValues == null &&\n listing?.dataIsLoaded[ListingDetailDataField.Tags]\n ) {\n methods.reset(getListingDetailTagsInput(listing));\n }\n }, [methods, listing]);\n\n const onSubmitHandler = useCallback(\n async (tagsSectionForm: ListingDetailsTagsSectionUpdates) => {\n tryInvokeApi(\n async () => {\n onSubmitStart();\n const result = await new ListingClient(\n activeAccountWebClientConfig\n ).updateListingTagSection(tagsSectionForm);\n\n if (isSuccess(result)) {\n // Reset the form to latest changed\n methods.reset(tagsSectionForm);\n await onSubmitDone();\n } else {\n showErrorDialog(\n 'ListingClient.updateListingTagSection',\n { message: result.message, status: result.status },\n {\n trackErrorData: {\n tagsSectionForm,\n },\n }\n );\n }\n },\n (error) => {\n showErrorDialog('ListingClient.updateListingTagSection', error, {\n trackErrorData: tagsSectionForm,\n });\n },\n () => {\n onSubmitDone(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n methods,\n onSubmitDone,\n onSubmitStart,\n showErrorDialog,\n ]\n );\n\n const onSubmit = useCallback(() => {\n methods.handleSubmit(onSubmitHandler)();\n }, [methods, onSubmitHandler]);\n\n const onReset = useCallback(() => {\n methods.reset(getListingDetailTagsInput(listing));\n }, [listing, methods]);\n\n const input = methods.watch();\n\n const hasChanges = useMemo(() => {\n const defaultValues = methods.formState.defaultValues;\n return !isEqual(input.tags, defaultValues?.tags);\n }, [input.tags, methods.formState.defaultValues]);\n\n return {\n hasChanges,\n methods,\n onSubmit,\n onReset,\n };\n};\n","import { useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useUserCanUpdateListing } from 'src/hooks/useUserHasListingPermissions';\nimport { ListingNotesSection } from 'src/modals/common';\nimport {\n Listing,\n ListingDetailsUpdateInput,\n ListingNote,\n} from 'src/WebApiController';\n\nexport const NotesSection = ({\n listing,\n disabled,\n isBulkEdit,\n}: {\n listing?: Listing | null;\n disabled?: boolean;\n isBulkEdit?: boolean;\n}) => {\n const { watch, setValue } = useFormContext();\n const internalNotes = watch('internalNotes');\n const seatTraits = watch('seatTraits');\n\n const canUpdate = useUserCanUpdateListing(listing, false);\n\n const onListingNotesChanged = useCallback(\n (listingNotes?: ListingNote[] | null) => {\n setValue('seatTraits', listingNotes ?? null);\n },\n [setValue]\n );\n\n const onInternalNotesChanged = useCallback(\n (notes?: string | null) => {\n setValue('internalNotes', notes ?? null);\n },\n [setValue]\n );\n\n if (isBulkEdit) {\n return null;\n }\n\n return (\n \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { TicketTypePriorityInput } from 'src/components/common/TicketTypePriorityInput';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { Detail, DetailGroup } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {DeliveryType, Feature, ListingDetailsUpdateInput} from 'src/WebApiController';\nimport {useUserHasFeature} from \"src/hooks/useUserHasFeature\";\n\nexport const TicketTypePrioritySection = ({\n deliveryType,\n disabled,\n confirmUpdateSales,\n}: {\n deliveryType: DeliveryType | null;\n disabled: boolean;\n confirmUpdateSales: () => void;\n}) => {\n const { watch, setValue } = useFormContext();\n const isMobile = useMatchMedia('mobile');\n const ticketTypeRules = watch('ticketTypeRules');\n const hasBackfillTicketTypeOverrideToSaleFeature = useUserHasFeature(\n Feature.BackfillListingTicketTypeOverrideToSale\n );\n\n return (\n \n }\n style={{ flex: 1 }}\n detail={\n <>\n {\n setValue('ticketTypeRules', newRules);\n \n if (hasBackfillTicketTypeOverrideToSaleFeature) {\n confirmUpdateSales();\n }\n }}\n disabled={disabled}\n />\n \n }\n />\n \n );\n};\n","import { isEqual } from 'date-fns';\nimport { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { InHandDateDisplay } from 'src/components/common/InHandDateDisplay';\nimport { InHandDateInput } from 'src/components/Input/InHandDateInput';\nimport { DeliveryTypeSelector } from 'src/components/Selectors/DeliveryTypeSelector';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Stack, Switch } from 'src/core/ui';\nimport { AlertWithSuppressionDialog } from 'src/dialogs/AlertWithSuppressionDialog';\nimport { useDeliveryInfoChangeDialog } from 'src/dialogs/AlertWithSuppressionDialog/useDeliveryInfoChangeDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useAnyMarketplaceHandledByProcessor } from 'src/hooks/useMarketplaceHandledByProcessor';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n useUserCanSetDeliveryStrategy,\n useUserCanUpdateListing,\n useUserCanViewPredelivery,\n} from 'src/hooks/useUserHasListingPermissions';\nimport {\n Detail,\n DetailGroup,\n DetailSection,\n SectionContent,\n} from 'src/modals/common';\nimport { ViewTickets } from 'src/modals/ViewTickets';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { DELIVERY_OPTIONS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { isDatePassedHours } from 'src/utils/dateTimeUtils';\nimport { getListingDetailsModalConfigWithDeepLink } from 'src/utils/inventoryUtils';\nimport { getDeliveryTypeIcon } from 'src/utils/ticketTypeUtils';\nimport {\n Event,\n Feature,\n ListingDetails,\n ListingDetailsTicketSectionUpdates,\n PreDeliveryState,\n} from 'src/WebApiController';\n\nimport { TicketTypePrioritySection } from './TicketTypePrioritySection';\n\nexport const DeliverySection = ({\n listing,\n disabled: externalDisabled,\n event,\n isBulkEdit,\n}: {\n event?: Event | null;\n listing?: ListingDetails | null;\n disabled?: boolean;\n isBulkEdit?: boolean;\n}) => {\n const hasAutoFulfillFeature = useUserHasFeature(Feature.AutoFulfillSetting);\n const isAnyHandledByProcessor = useAnyMarketplaceHandledByProcessor();\n\n const { watch, setValue } =\n useFormContext();\n\n const isMobile = useMatchMedia('mobile');\n const inHandAt = watch('inHandDate');\n const isNoFulfill = watch('isNoFulfill');\n const updateSalesOfListings = watch('updateSalesOfListings');\n\n const deliveryType = watch('delivType');\n\n const ticketsSold = useMemo(\n () => (listing?.tickets?.filter((t) => t.saleId) ?? []).length,\n [listing?.tickets]\n );\n\n const hasUpdateSalesOfListingsFeature = useUserHasFeature(\n Feature.UpdateSalesOfListingsDeliveryInfo\n );\n\n const hasAnySales = ticketsSold > 0;\n\n const warningDialog = useBasicDialog();\n const deliveryInfoChangeHookProps = useDeliveryInfoChangeDialog(\n () => {\n setValue('updateSalesOfListings', true);\n },\n () => {\n // set don't change back\n setValue('updateSalesOfListings', false);\n }\n );\n\n const { preDelivState, isUndeliv } = listing ?? {};\n const predeliveryArtifactTypes = listing?.availArtTypes ?? [];\n const cancelTo = listing?.id\n ? getListingDetailsModalConfigWithDeepLink(listing.id)\n : undefined;\n const inHandDate = inHandAt\n ? new Date(inHandAt)\n : isBulkEdit\n ? undefined\n : new Date();\n\n const canUpdate = useUserCanUpdateListing(listing, isBulkEdit);\n const canSetDeliveryStrategy = useUserCanSetDeliveryStrategy(\n listing,\n isBulkEdit\n );\n const canViewFulfillmentArtifacts = useUserCanViewPredelivery(\n listing,\n isBulkEdit\n );\n const disabled = externalDisabled || !canUpdate;\n\n const icon = getDeliveryTypeIcon(listing?.delivType);\n\n const confirmUpdateSales = useCallback(() => {\n if (\n hasAnySales &&\n hasUpdateSalesOfListingsFeature &&\n // only ask once per form\n updateSalesOfListings == null\n ) {\n if (isDatePassedHours(deliveryInfoChangeHookProps.lastTimeStamp, 1)) {\n // Show warning if it has passed 1 hr or not suppressed\n warningDialog.launchDialog();\n } else {\n // If suppressed, assumed it's true (since the current alert suppression only save for Yes answer)\n setValue('updateSalesOfListings', true);\n }\n }\n }, [\n deliveryInfoChangeHookProps.lastTimeStamp,\n hasAnySales,\n hasUpdateSalesOfListingsFeature,\n setValue,\n updateSalesOfListings,\n warningDialog,\n ]);\n\n return (\n <>\n }>\n \n {!isBulkEdit && listing && (\n \n }\n style={{ flex: 1 }}\n detail={\n listing?.isSeatSaver ? (\n {\n if (newD !== deliveryType) {\n setValue('delivType', newD);\n\n confirmUpdateSales();\n }\n }}\n />\n ) : (\n \n {icon}\n \n \n )\n }\n />\n \n )}\n {!isBulkEdit && listing && (\n \n \n }\n style={{ flex: 1 }}\n detail={\n \n \n \n }\n />\n\n {canViewFulfillmentArtifacts &&\n cancelTo &&\n canViewFulfillmentArtifacts &&\n predeliveryArtifactTypes.map((predeliveryArtifactType) => (\n \n ))}\n \n \n )}\n {!isBulkEdit && hasAutoFulfillFeature && isAnyHandledByProcessor && (\n \n \n }\n style={{ flex: 1 }}\n detail={\n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n setValue('isNoFulfill', !isChecked);\n\n confirmUpdateSales();\n }}\n />\n }\n />\n \n \n )}\n \n }\n style={{ flex: 1 }}\n detail={\n \n {!isBulkEdit && }\n {\n if (date) {\n if (!inHandDate || !isEqual(date, inHandDate)) {\n setValue('inHandDate', date.toISOString());\n }\n\n setValue('daysBeforeEvent', daysBeforeEvent ?? null);\n\n confirmUpdateSales();\n } else {\n if (isBulkEdit) {\n setValue('inHandDate', null);\n }\n }\n }}\n value={inHandAt}\n targetDate={\n event?.dates?.start\n ? new Date(event?.dates?.start)\n : new Date()\n }\n />\n \n }\n />\n \n {!isBulkEdit && listing && (\n \n )}\n \n \n }\n size=\"md\"\n {...warningDialog.dialogProps}\n alerts={[deliveryInfoChangeHookProps]}\n onOkay={() => {\n warningDialog.closeDialog();\n }}\n okText={ContentId.Yes}\n cancelText={ContentId.No}\n onCancel={() => warningDialog.closeDialog()}\n />\n \n );\n};\n","import { Fragment, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { NavigateFunction, useNavigate } from 'react-router-dom';\nimport { VenueRowInput } from 'src/components/Input/VenueRowInput';\nimport { VenueSectionInput } from 'src/components/Input/VenueSectionInput';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { useGetSectionRowFromVenueMapConfig } from 'src/contexts/EventMapContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Colors } from 'src/core/themes/constants/colors';\nimport { Button } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useUserCanUpdateListing } from 'src/hooks/useUserHasListingPermissions';\nimport {\n Detail,\n DetailGroup,\n DetailSection,\n SectionContent,\n} from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SPLIT_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { getListingDetailsModalConfigWithDeepLink } from 'src/utils/inventoryUtils';\nimport { INT_MAX_VALUE } from 'src/utils/numberFormatter';\nimport { getSaleDetailsRelativeUrl } from 'src/utils/saleUtils';\nimport {\n Feature,\n ListingDetails,\n ListingDetailsTicketSectionUpdates,\n SplitType,\n Ticket,\n} from 'src/WebApiController';\n\nimport { LaunchViewAllSeats } from '../../actions/LaunchViewAllSeats';\n\nconst MAX_SEATS_DISPLAY = 10;\n\nexport const getSeatDisplay = (ticket: Ticket, navigate?: NavigateFunction) => {\n const { saleId, seat, ord } = ticket;\n\n if (ticket.saleId) {\n return (\n \n navigate ? navigate(getSaleDetailsRelativeUrl(saleId!)) : null\n }\n >\n {seat ? (\n <>{seat}\n ) : (\n \n )}\n \n );\n } else {\n return seat ? (\n <>{seat}\n ) : (\n \n );\n }\n};\n\nexport const TicketsSection = ({\n listing,\n disabled,\n isBulkEdit,\n}: {\n listing?: ListingDetails | undefined;\n disabled?: boolean;\n isBulkEdit?: boolean;\n}) => {\n const navigate = useNavigate();\n const {\n setValue,\n watch,\n clearErrors,\n formState: { defaultValues, errors },\n } = useFormContext();\n\n const userHasWasteSaleFeature = useUserHasFeature(Feature.WasteSale);\n\n const { loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n const uiCurrency = useMemo(\n () =>\n getUiCurrency(\n listing?.currency ??\n loginContext?.user?.activeAccount?.currencyCode ??\n 'USD'\n ),\n [\n getUiCurrency,\n listing?.currency,\n loginContext?.user?.activeAccount?.currencyCode,\n ]\n );\n\n const splitType = watch('splitType');\n const hideSeats = watch('hideSeatsFromMarketplace');\n const manualMaxDisplayQuantity = watch('manualMaxDisplayQuantity');\n const cancelTo = getListingDetailsModalConfigWithDeepLink(listing?.id);\n\n const isMobile = useMatchMedia('mobile');\n\n const { tickets, ticketCnt, seating } = listing ?? {};\n\n const availableSeats = useMemo(() => {\n if (!tickets?.length || !listing) {\n return [];\n }\n const ticketsAvailable = tickets.filter((t) => !t.saleId);\n\n const ticketsElement = ticketsAvailable\n .slice(0, MAX_SEATS_DISPLAY)\n .map((t) => {getSeatDisplay(t)})\n .flatMap((value, index, array) =>\n array.length - 1 !== index\n ? [value, {', '}]\n : value\n );\n\n if (ticketsAvailable.length > MAX_SEATS_DISPLAY) {\n ticketsElement.push(\n \n {' ... '}\n \n \n );\n }\n return ticketsElement;\n }, [tickets, listing, cancelTo]);\n\n const soldSeats = useMemo(() => {\n if (!tickets?.length || !listing) {\n return [];\n }\n const ticketsSold = tickets.filter((t) => t.saleId && !t.isWasted);\n\n const ticketsElement = ticketsSold\n .slice(0, MAX_SEATS_DISPLAY)\n .map((t) => {getSeatDisplay(t, navigate)})\n .flatMap((value, index, array) =>\n array.length - 1 !== index\n ? [value, {', '}]\n : value\n );\n\n if (ticketsSold.length > MAX_SEATS_DISPLAY) {\n ticketsElement.push(\n \n {' ... '}\n \n \n );\n }\n return ticketsElement;\n }, [tickets, listing, navigate, cancelTo]);\n\n const wastedTickets = useMemo(() => {\n if (!tickets?.length || !listing || !userHasWasteSaleFeature) {\n return [];\n }\n const wastedTickets = tickets.filter((t) => !!t.saleId && t.isWasted);\n\n const wastedTicketsElements = wastedTickets\n .slice(0, MAX_SEATS_DISPLAY)\n .map((t) => {getSeatDisplay(t, navigate)})\n .flatMap((value, index, array) =>\n array.length - 1 !== index\n ? [value, {', '}]\n : value\n );\n if (wastedTicketsElements.length > MAX_SEATS_DISPLAY) {\n wastedTicketsElements.push(\n \n {' ... '}\n \n \n );\n }\n return wastedTicketsElements;\n }, [cancelTo, listing, navigate, tickets, userHasWasteSaleFeature]);\n\n const canUpdate = useUserCanUpdateListing(listing, isBulkEdit);\n\n const isDisabled = disabled || listing?.isDeleted || !canUpdate;\n\n const onShownQuantityChange = (\n changeEvent: React.ChangeEvent\n ) => {\n const newValue = parseInt(changeEvent?.target?.value);\n if (newValue > 0 && newValue < INT_MAX_VALUE) {\n const validatedValue = Math.min(newValue, listing?.availQty ?? 0) || null;\n setValue('manualMaxDisplayQuantity', validatedValue);\n } else {\n setValue('manualMaxDisplayQuantity', null);\n }\n };\n\n const section = watch('section');\n const sectionId = watch('sectionId');\n const row = watch('row');\n const rowId = watch('rowId');\n const faceValueCost = watch('faceValue');\n\n const { section: selectedSection, row: selectedRow } =\n useGetSectionRowFromVenueMapConfig(rowId, sectionId, section, row);\n\n return (\n }>\n \n \n }\n detail={\n {\n if (newSplitType !== splitType) {\n setValue(\n 'splitType',\n newSplitType || isBulkEdit\n ? newSplitType\n : SplitType.AvoidOne\n );\n }\n }}\n />\n }\n />\n \n \n }\n detail={\n {\n const newHideSeats = e.target.checked;\n if (newHideSeats !== hideSeats) {\n setValue('hideSeatsFromMarketplace', newHideSeats);\n }\n }}\n />\n }\n />\n \n {!isBulkEdit && listing && seating && (\n <>\n \n }\n detail={\n \n }\n style={{\n width: '8em',\n }}\n />\n \n \n }\n detail={{listing.unsoldQty}}\n />\n \n \n }\n detail={{ticketCnt}}\n />\n \n \n }\n errors={errors.section?.message}\n >\n {!listing.isSeatSaver ? (\n {section}\n ) : (\n {\n clearErrors('section');\n if (section) {\n setValue('section', section.name);\n setValue('sectionId', section.id);\n\n if (section.specRow?.id) {\n // Setting the section automatically set the speculative row id\n setValue('rowId', section.specRow?.id);\n setValue('row', '');\n }\n } else {\n setValue('section', sectionName ?? '');\n setValue('sectionId', null);\n\n // Free-text section do not have speculative row info\n setValue('rowId', null);\n setValue('row', '');\n }\n }}\n />\n )}\n \n \n \n }>\n {!listing.isSeatSaver ? (\n {row}\n ) : (\n {\n clearErrors('row');\n if (row) {\n setValue('row', row.isSpeculative ? '' : row.name);\n setValue('rowId', row.id);\n } else {\n // If we can't find the row - that mean they typed it in\n // so just keep with they type as the row\n setValue('row', rowName ?? '');\n setValue('rowId', null);\n }\n }}\n />\n )}\n \n \n \n }\n detail={\n <>\n
    \n \n \n {': '}\n \n {availableSeats}\n
    \n
    \n \n \n {': '}\n \n {soldSeats}\n
    \n {userHasWasteSaleFeature && (\n
    \n \n \n {': '}\n \n {wastedTickets}\n
    \n )}\n \n }\n />\n
    \n\n {listing?.isSeatSaver && (\n \n }>\n {\n const v = parseFloat(e.target.value) || 0;\n if (v >= 0 && v <= Number.MAX_VALUE) {\n setValue('faceValue', v);\n } else {\n setValue('faceValue', null);\n }\n }}\n />\n \n \n )}\n \n )}\n
    \n
    \n );\n};\n","import { FormProvider } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DetailSection } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Event, ListingDetails } from 'src/WebApiController';\n\nimport { NotesSection } from '../../components/NotesSection';\nimport { useListingDetailsContext } from '../../ListingDetailsModalV2Context';\nimport { DeliverySection } from './DeliverySection/DeliverySection';\nimport { TicketsSection } from './TicketsSection';\n\ntype ListingDetailsTicketsFormProps = {\n event: Event | null | undefined;\n listing: ListingDetails;\n isLoading?: boolean;\n};\n\nexport const ListingDetailsTicketsForm: React.FC<\n ListingDetailsTicketsFormProps\n> = ({ event, listing, isLoading }) => {\n const { methods } = useListingDetailsContext();\n return (\n \n \n }>\n \n \n \n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingDetailsTicketSectionUpdates,\n} from 'src/WebApiController';\n\nconst getListingDetailsTicketsInput = (\n listing: ListingDetails | null | undefined\n): ListingDetailsTicketSectionUpdates => {\n return {\n id: listing?.id ?? 0,\n rowVersion: null,\n splitType: listing?.splitType ?? null,\n hideSeatsFromMarketplace: listing?.hideSeats ?? null,\n inHandDate: listing?.inHandAt ?? null,\n isNoFulfill: listing?.isNoFulfill ?? null,\n delivType: listing?.delivType ?? null,\n seatTraits: listing?.seatTraits ?? null,\n section: listing?.seating?.section ?? null,\n sectionId: listing?.seating?.sectionId ?? null,\n row: listing?.seating?.row ?? null,\n rowId: listing?.seating?.rowId ?? null,\n faceValue: listing?.faceValue?.amt ?? null,\n manualMaxDisplayQuantity:\n listing?.manMaxDispQty ?? listing?.maxDispQty ?? null,\n internalNotes: listing?.privNotes ?? null,\n daysBeforeEvent: null,\n ticketTypeRules: listing?.tktTypeRules ?? null,\n updateSalesOfListings: null,\n updatePredeliveryETicketArtifacts: null,\n };\n};\n\nexport const useTicketsForm = (\n listing: ListingDetails | null | undefined,\n onSubmitStart: () => void,\n onSubmitDone: (success?: boolean) => Promise\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const methods = useForm({\n defaultValues: listing?.dataIsLoaded[ListingDetailDataField.Tickets]\n ? getListingDetailsTicketsInput(listing)\n : undefined,\n });\n\n useEffect(() => {\n if (\n methods.formState.defaultValues == null &&\n listing?.dataIsLoaded[ListingDetailDataField.Tickets]\n ) {\n methods.reset(getListingDetailsTicketsInput(listing));\n }\n }, [methods, listing]);\n\n const onSubmitHandler = useCallback(\n async (ticketsSectionForm: ListingDetailsTicketSectionUpdates) => {\n tryInvokeApi(\n async () => {\n onSubmitStart();\n const result = await new ListingClient(\n activeAccountWebClientConfig\n ).updateListingTicketSection(ticketsSectionForm);\n\n if (isSuccess(result)) {\n // Reset the form to latest changed\n methods.reset(ticketsSectionForm);\n await onSubmitDone();\n } else {\n showErrorDialog(\n 'ListingClient.updateListingTicketSection',\n { message: result.message, status: result.status },\n {\n trackErrorData: {\n ticketsSectionForm,\n },\n }\n );\n }\n },\n (error) => {\n showErrorDialog('ListingClient.updateListingTicketSection', error, {\n trackErrorData: ticketsSectionForm,\n });\n },\n () => {\n onSubmitDone(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n methods,\n onSubmitDone,\n onSubmitStart,\n showErrorDialog,\n ]\n );\n\n const onSubmit = useCallback(() => {\n methods.handleSubmit(onSubmitHandler)();\n }, [methods, onSubmitHandler]);\n\n const onReset = useCallback(() => {\n methods.reset(getListingDetailsTicketsInput(listing));\n }, [listing, methods]);\n\n const input = methods.watch();\n\n const hasChanges = useMemo(() => {\n const defaultValues = methods.formState.defaultValues;\n return (\n input.splitType !== defaultValues?.splitType ||\n input.hideSeatsFromMarketplace !==\n defaultValues?.hideSeatsFromMarketplace ||\n input.inHandDate !== defaultValues?.inHandDate ||\n input.isNoFulfill !== defaultValues?.isNoFulfill ||\n input.delivType !== defaultValues?.delivType ||\n input.section !== defaultValues?.section ||\n input.sectionId !== defaultValues?.sectionId ||\n input.row !== defaultValues?.row ||\n input.rowId !== defaultValues?.rowId ||\n input.faceValue !== defaultValues?.faceValue ||\n input.manualMaxDisplayQuantity !==\n defaultValues?.manualMaxDisplayQuantity ||\n input.internalNotes !== defaultValues?.internalNotes ||\n input.daysBeforeEvent !== defaultValues?.daysBeforeEvent ||\n !isEqual(input.ticketTypeRules, defaultValues?.ticketTypeRules ?? null) ||\n input.updateSalesOfListings !== defaultValues?.updateSalesOfListings ||\n !isEqual(input.seatTraits, defaultValues?.seatTraits ?? null)\n );\n }, [input, methods.formState.defaultValues]);\n\n return {\n hasChanges,\n methods,\n onSubmit,\n onReset,\n };\n};\n","import { ListingDetails } from 'src/WebApiController';\n\nimport { useAutoPricingForm } from './ListingForms/AutoPricingForm/AutoPricingForm.hooks';\nimport { useBroadcastForm } from './ListingForms/BroadcastForm';\nimport { usePricingForm } from './ListingForms/PricingForm';\nimport { useTagsForm } from './ListingForms/TagsForm';\nimport { useTicketsForm } from './ListingForms/TicketsForm';\n\nexport const useListingDetailsMethods = (\n listing: ListingDetails | null | undefined,\n onSubmitStart: () => void,\n onSubmitDone: (success?: boolean) => Promise\n) => {\n const {\n hasChanges: broadcastHasChanges,\n methods: broadcastMethods,\n onSubmit: onSubmitBroadcast,\n onReset: onResetBroadcast,\n } = useBroadcastForm(listing, onSubmitStart, onSubmitDone);\n const {\n hasChanges: ticketsHasChanges,\n methods: ticketsMethods,\n onSubmit: onSubmitTickets,\n onReset: onResetTickets,\n } = useTicketsForm(listing, onSubmitStart, onSubmitDone);\n const {\n hasChanges: tagsHasChanges,\n methods: tagsMethods,\n onSubmit: onSubmitTags,\n onReset: onResetTags,\n } = useTagsForm(listing, onSubmitStart, onSubmitDone);\n const {\n hasChanges: pricingHasChanges,\n methods: pricingMethods,\n onSubmit: onSubmitPricing,\n onReset: onResetPricing,\n } = usePricingForm(listing, onSubmitStart, onSubmitDone);\n const {\n hasChanges: autoPricingHasChanges,\n methods: autoPricingMethods,\n onSubmit: onSubmitAutoPricing,\n onReset: onResetAutoPricing,\n } = useAutoPricingForm(listing, onSubmitStart, onSubmitDone);\n\n return {\n updated: {\n broadcast: broadcastHasChanges,\n tickets: ticketsHasChanges,\n tags: tagsHasChanges,\n pricing: pricingHasChanges,\n autoPricing: autoPricingHasChanges,\n },\n methods: {\n broadcast: broadcastMethods,\n tickets: ticketsMethods,\n tags: tagsMethods,\n pricing: pricingMethods,\n autoPricing: autoPricingMethods,\n },\n onSubmits: {\n broadcast: onSubmitBroadcast,\n tickets: onSubmitTickets,\n tags: onSubmitTags,\n pricing: onSubmitPricing,\n autoPricing: onSubmitAutoPricing,\n },\n onResets: {\n broadcast: onResetBroadcast,\n tickets: onResetTickets,\n tags: onResetTags,\n pricing: onResetPricing,\n autoPricing: onResetAutoPricing,\n },\n };\n};\n","import { head, uniqBy } from 'lodash-es';\nimport { useCallback, useMemo } from 'react';\nimport { EventVenueMap } from 'src/components/Events/VenueMap/EventVenueMap';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { shared, vars } from 'src/core/themes';\nimport { getSectionInfoDisplay } from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { filterSectionByZone } from 'src/utils/venueConfigUtils';\nimport { SectionInfo } from 'src/WebApiController';\n\nexport type SectionSelectorProps = {\n sectionIds: number[];\n disabledSectionIds?: number[];\n onSelectedSectionsChange: (selectedSections: SectionInfo[]) => void;\n};\n\nexport const SectionSelector = ({\n sectionIds,\n disabledSectionIds,\n onSelectedSectionsChange,\n}: SectionSelectorProps) => {\n const { venueMapInfo } = useEventMapContext();\n\n const selectedSections = useMemo(() => {\n if (venueMapInfo) {\n return venueMapInfo.sections\n .filter((section) => sectionIds.includes(section.id))\n .toSorted((a, b) => a.name.localeCompare(b.name));\n }\n return [];\n }, [sectionIds, venueMapInfo]);\n\n const selectedSectionIds = useMemo(() => {\n return selectedSections.map((s) => s.id);\n }, [selectedSections]);\n\n const getColor = useCallback(\n (info: {\n sectionId: number;\n rowId?: number;\n sectionName?: string;\n ticketClassId: number;\n isSelected: boolean;\n }) => {\n const isSectionDisabled = disabledSectionIds?.includes(info.sectionId);\n return {\n stroke: isSectionDisabled\n ? vars.color.backgroundDisabled\n : vars.color.textBrand,\n fill: isSectionDisabled\n ? vars.color.backgroundDisabled\n : info.isSelected\n ? vars.color.backgroundBrandSeatmap\n : vars.color.backgroundPrimary,\n textColor: isSectionDisabled\n ? vars.color.textDisabled\n : vars.color.textStrong,\n };\n },\n [disabledSectionIds]\n );\n\n const onSectionHovered = useCallback(\n (hoveredSection: SectionInfo) => {\n if (disabledSectionIds?.includes(hoveredSection.id)) {\n return null;\n }\n\n return getSectionInfoDisplay(\n hoveredSection,\n [],\n venueMapInfo?.sectionScores\n );\n },\n [disabledSectionIds, venueMapInfo?.sectionScores]\n );\n\n const onShiftSelect = useCallback(\n (section: SectionInfo) => {\n // We are using the ticketClassId to group the sections\n const selectedClassId = head(\n section?.rows\n ?.map(({ tktClass: ticketClass }) => ticketClass?.id)\n .filter((id) => !!id)\n );\n const classSections =\n venueMapInfo?.sections?.filter(filterSectionByZone(selectedClassId)) ||\n [];\n\n const classSectionIds = classSections.map(({ id }) => id);\n if (selectedSections.findIndex(({ id }) => id === section.id) > -1) {\n const updated = selectedSections.filter(\n ({ id }) => !classSectionIds.includes(id)\n );\n onSelectedSectionsChange(updated);\n } else {\n const updated = uniqBy(\n selectedSections.concat(classSections),\n 'id'\n ).toSorted((a, b) => a.name.localeCompare(b.name));\n onSelectedSectionsChange(updated);\n }\n },\n [onSelectedSectionsChange, selectedSections, venueMapInfo?.sections]\n );\n\n const onSingleSelect = useCallback(\n (section: SectionInfo) => {\n if (disabledSectionIds?.includes(section.id)) {\n return;\n }\n\n const idx = selectedSections.findIndex(({ id }) => id === section.id);\n\n const selectedSectionsNew =\n idx === -1\n ? [...selectedSections, section]\n : selectedSections.filter(({ id }) => id !== section.id);\n onSelectedSectionsChange(\n selectedSectionsNew.toSorted((a, b) => a.name.localeCompare(b.name))\n );\n },\n [disabledSectionIds, onSelectedSectionsChange, selectedSections]\n );\n\n const onSectionSelected = useCallback(\n (e: MouseEvent, section: SectionInfo) => {\n e.preventDefault();\n e.stopPropagation();\n if (e.shiftKey) {\n onShiftSelect(section);\n return;\n }\n onSingleSelect(section);\n },\n [onSingleSelect, onShiftSelect]\n );\n\n const onToggleMirrors = useCallback(\n (mirrors: SectionInfo[], exclude?: boolean) => {\n if (exclude) {\n const idsToExclude = mirrors.map(({ id }) => id);\n const updated = uniqBy(\n selectedSections.filter(({ id }) => !idsToExclude.includes(id)),\n 'id'\n ).toSorted((a, b) => a.name.localeCompare(b.name));\n onSelectedSectionsChange(updated);\n } else {\n const updated = uniqBy(selectedSections.concat(mirrors), 'id').toSorted(\n (a, b) => a.name.localeCompare(b.name)\n );\n onSelectedSectionsChange(updated);\n }\n },\n [onSelectedSectionsChange, selectedSections]\n );\n\n return (\n <>\n \n \n \n
    \n \n
    \n \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { Button, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionInfo } from 'src/WebApiController';\n\nimport * as styles from './SectionSelectionPanel.css';\nimport { SectionSelector } from './SectionSelector';\n\nexport type SectionSelectorProps = {\n sectionIds: number[];\n disabledSectionIds?: number[];\n onSelectedSectionsChange: (selectedSections: SectionInfo[]) => void;\n};\n\nexport const SectionSelectorPanel = ({\n sectionIds,\n disabledSectionIds,\n onSelectedSectionsChange,\n}: SectionSelectorProps) => {\n return (\n
    \n \n {sectionIds.length > 0 && (\n \n onSelectedSectionsChange([])}\n >\n \n \n \n )}\n
    \n );\n};\n","import { useMemo } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { MapWithCompListingsPreview } from 'src/components/Listings/MapWithCompListingsPreview';\nimport { useAutoPricingPreview } from 'src/components/Listings/MapWithCompListingsPreview/MapWithCompListingsPreview.hooks';\nimport { Stack } from 'src/core/ui';\nimport { useComparableListingsVenueMapColor } from 'src/hooks/useComparableListingsVenueMapColor';\nimport { useGetCompListings } from 'src/hooks/useGetCompListings';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n Event,\n ListingDetails,\n ListingDetailsAutoPricingSectionUpdates,\n ListingDetailsPricingUpdates,\n} from 'src/WebApiController';\n\nimport { useAutoPricingSidePanelContext } from '.';\nimport * as styles from './AutoPricingSidePanel.css';\nimport { SectionSelectorPanel } from './SectionSelectionPanel/SectionSelectionPanel';\n\nexport const AutoPricingSidePanel = ({\n event,\n listing,\n listingInput,\n}: {\n event: Event;\n listing: ListingDetails;\n listingInput?: ListingDetailsAutoPricingSectionUpdates;\n}) => {\n const { contentType, onCloseSidePanel, metadata } =\n useAutoPricingSidePanelContext();\n\n const showComparables =\n contentType === 'comparables' && listing && event?.viagId != null;\n\n const showSectionSelector = contentType === 'sectionSelection' && listing;\n\n const sanitizedListingInput = useMemo((): ListingDetailsPricingUpdates => {\n const {\n netProceedsFloor,\n netProceedsCeiling,\n autoPricingEnabled,\n currencyCode,\n\n compListingFloor,\n compListingCeiling,\n compListingMode,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n compListingSelectedSectionSettings,\n compListingQuantityFilters,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n } = listingInput ?? {};\n\n return {\n netProceedsFloor,\n netProceedsCeiling,\n autoPricingEnabled,\n currencyCode,\n\n compListingFloor,\n compListingCeiling,\n compListingMode,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n compListingSelectedSectionSettings,\n compListingQuantityFilters,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n } as ListingDetailsPricingUpdates;\n }, [listingInput]);\n\n const { priceCalcQuery } = useAutoPricingPreview(\n event.viagId,\n listing?.id,\n sanitizedListingInput\n );\n const { compListingsQuery } = useGetCompListings(\n event,\n listing?.id,\n listing?.currency\n );\n\n const getColor = useComparableListingsVenueMapColor(\n listing ? [listing] : [],\n priceCalcQuery.data?.compListings,\n compListingsQuery.data ?? undefined\n );\n\n if (!showComparables && !showSectionSelector) return null;\n\n return (\n \n
    \n }\n onClick={onCloseSidePanel}\n textContentId={ContentId.Close}\n />\n
    \n \n {showComparables && (\n \n )}\n {showSectionSelector && (\n \n )}\n
    \n \n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isEqual } from 'lodash-es';\nimport {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useState,\n} from 'react';\nimport {\n ListingDetailsAutoPricingSectionUpdates,\n SectionInfo,\n} from 'src/WebApiController';\n\ntype PanelContentType = 'comparables' | 'sectionSelection' | 'none';\ntype PanelMetadata = {\n sectionIds: number[];\n disabledSectionIds: number[];\n input: ListingDetailsAutoPricingSectionUpdates;\n onSelectedSectionsChange: (sections: SectionInfo[]) => void;\n};\n\ntype AutoPricingSidePanelContextType = {\n contentType: PanelContentType;\n onCloseSidePanel: () => void;\n onShowContent: (\n newContentType: PanelContentType,\n e?: React.MouseEvent\n ) => void;\n metadata: PanelMetadata;\n updateMetadata: (data: PanelMetadata) => void;\n};\n\nconst AutoPricingSidePanelContext =\n createContext({\n contentType: 'none',\n onCloseSidePanel: () => {},\n onShowContent: () => {},\n metadata: {\n sectionIds: [],\n disabledSectionIds: [],\n input: {} as ListingDetailsAutoPricingSectionUpdates,\n onSelectedSectionsChange: () => void 0,\n },\n updateMetadata: () => void 0,\n });\n\ntype AutoPricingSidePanelContextProviderProps = {\n children: ReactNode;\n};\n\nexport const AutoPricingSidePanelContextProvider = ({\n children,\n}: AutoPricingSidePanelContextProviderProps) => {\n const [contentType, setContentType] = useState('none');\n const [metadata, setMetadata] = useState({\n sectionIds: [],\n disabledSectionIds: [],\n input: {} as ListingDetailsAutoPricingSectionUpdates,\n onSelectedSectionsChange: () => void 0,\n });\n\n const onCloseSidePanel = useCallback(() => {\n if (contentType !== 'none') {\n setContentType('none');\n }\n }, [contentType]);\n\n const onShowContent = useCallback(\n (\n newContentType: PanelContentType,\n e?: React.MouseEvent\n ) => {\n e?.stopPropagation();\n e?.preventDefault();\n\n if (contentType !== newContentType) {\n setContentType(newContentType);\n } else if (contentType !== 'none') {\n setContentType('none');\n }\n },\n [contentType, setContentType]\n );\n\n const updateMetadata = useCallback(\n (data: any) => {\n const { onSelectedSectionsChange: onSelectedSectionsChange, ...rest } =\n data;\n const {\n onSelectedSectionsChange: newOnSelectedSectionsChange,\n ...newRest\n } = metadata;\n if (!isEqual(rest, newRest)) {\n setMetadata(data);\n }\n },\n [metadata, setMetadata]\n );\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAutoPricingSidePanelContext = () =>\n useContext(AutoPricingSidePanelContext);\n","import { useQuery } from '@tanstack/react-query';\nimport { useMemo, useState } from 'react';\nimport { useDebounce } from 'react-use';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n ListingClient,\n ListingDetailsPricingUpdates,\n} from 'src/WebApiController';\n\nimport { useAutoPricingSidePanelContext } from '../../../AutoPricingSidePanel';\n\ntype AutoPricingPreviewQueryKeyType =\n | {\n listingId: number | undefined;\n eventId: number | null;\n priceUpdates: ListingDetailsPricingUpdates;\n }\n | undefined;\n\nexport const useAutoPricingPreview = (\n viagogoEventId: number | null,\n listingId?: number | undefined\n) => {\n const { metadata } = useAutoPricingSidePanelContext();\n\n const priceUpdates = useMemo(() => {\n const {\n netProceedsFloor,\n netProceedsCeiling,\n autoPricingEnabled,\n currencyCode,\n\n compListingFloor,\n compListingCeiling,\n compListingMode,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n compListingSelectedSectionSettings,\n compListingQuantityFilters,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n } = metadata.input ?? {};\n\n return {\n netProceedsFloor,\n netProceedsCeiling,\n autoPricingEnabled,\n currencyCode,\n\n compListingFloor,\n compListingCeiling,\n compListingMode,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n compListingSelectedSectionSettings,\n compListingQuantityFilters,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n } as ListingDetailsPricingUpdates;\n }, [metadata.input]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n\n const [queryKey, setQueryKey] =\n useState(undefined);\n\n useDebounce(\n () =>\n setQueryKey({\n eventId: viagogoEventId,\n listingId,\n priceUpdates: priceUpdates,\n }),\n 300,\n [viagogoEventId, listingId, JSON.stringify(priceUpdates)]\n );\n\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const shouldQuery = Boolean(\n activeAccountWebClientConfig.activeAccountId != null &&\n queryKey?.eventId &&\n queryKey?.listingId &&\n queryKey?.priceUpdates\n );\n\n const priceCalcQuery = useQuery({\n queryKey: ['ListingClient.getListingPriceCalculation', queryKey],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n const r = await new ListingClient(\n activeAccountWebClientConfig\n ).getListingPriceCalculation(\n queryKey?.eventId ?? undefined,\n queryKey?.listingId ?? undefined,\n queryKey?.priceUpdates!\n );\n return r;\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n networkMode: 'offlineFirst',\n meta: {\n persist: false,\n onError: (error: ErrorTypes) => {\n trackError(\n 'ListingClient.getListingPriceCalculation',\n error,\n priceUpdates\n );\n },\n },\n });\n\n return { priceCalcQuery, priceUpdates };\n};\n","import { AutoPriceResultDisplay } from 'src/components/Listings/AutoPriceResultDisplay';\nimport { Content } from 'src/contexts/ContentContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { Button, Stack } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { AutoPricingResultType } from 'src/WebApiController';\n\nimport { useAutoPricingSidePanelContext } from '../../../AutoPricingSidePanel';\nimport * as styles from './AutoPricePreview.css';\nimport { useAutoPricingPreview } from './useAutoPricePreview';\n\nexport const AutoPricePreview = ({\n viagogoEventId,\n listingId,\n}: {\n listingId: number;\n viagogoEventId: number;\n}) => {\n const { priceCalcQuery } = useAutoPricingPreview(viagogoEventId, listingId);\n const isMobile = useMatchMedia('mobile');\n const { onShowContent } = useAutoPricingSidePanelContext();\n\n return (\n onShowContent('comparables', e)} // undefined is for toggle\n >\n \n \n \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n {priceCalcQuery.data?.autoPricingResultType && // show when result type is not null and\n priceCalcQuery.data?.autoPricingResultType !==\n AutoPricingResultType.PriceSuccess && // is not success result and\n (priceCalcQuery.data?.autoPricingResultType !==\n AutoPricingResultType.None || // is not none or there's no price display (we show N/A when there's no price indicating we can't even call the endpoint)\n !priceCalcQuery.data?.websitePrice?.disp) && (\n \n )}\n {priceCalcQuery.data?.websitePrice?.disp}\n
    \n
    \n \n
    \n \n \n
    \n {priceCalcQuery.data?.compListings?.length ?? '0'}\n
    \n
    \n \n
    \n \n onShowContent('comparables', e)}\n style={isMobile ? { width: '100%' } : undefined}\n >\n \n \n \n {priceCalcQuery.data?.errorMessage && (\n \n )}\n \n \n );\n};\n","import { useMemo } from 'react';\nimport { FilterPillList } from 'src/components/common/FilterPill/FilterPillList';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { Listing } from 'src/WebApiController';\n\nimport { useAutoPricingSettings } from '../useAutoPricingSettings';\n\n/**\n * @deprecated - Do not use\n */\nexport const AutoPricingSectionRowIdFilter = ({\n listing,\n disabled,\n}: {\n listing?: Listing | null;\n disabled?: boolean;\n}) => {\n const { venueMapQuery } = useEventMapContext();\n const {\n onCompListingChange,\n onCompListingSectionIdFilterChange,\n compListingSelectedSectionSettings,\n } = useAutoPricingSettings(listing);\n\n const selectedSections = useMemo(() => {\n const formSectionFilterIds =\n compListingSelectedSectionSettings?.sectionIdFilter ?? [];\n return (\n venueMapQuery.data?.sections.filter((section) => {\n return formSectionFilterIds.includes(section.id);\n }) ?? []\n );\n }, [\n compListingSelectedSectionSettings?.sectionIdFilter,\n venueMapQuery.data?.sections,\n ]);\n\n const rowIdFilters = useMemo(() => {\n return compListingSelectedSectionSettings?.rowIdFilter ?? [];\n }, [compListingSelectedSectionSettings]);\n\n const sectionRowIdFilters = useMemo(() => {\n return compListingSelectedSectionSettings?.sectionRowIdFilter ?? {};\n }, [compListingSelectedSectionSettings]);\n\n const applyCompListingChanges = (\n rowIdFilters: number[],\n sectionRowIdFilters: { [x: string]: string }\n ) => {\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter:\n compListingSelectedSectionSettings?.sectionIdFilter ?? [],\n rowIdFilter: Array.from(new Set(rowIdFilters)),\n sectionRowIdFilter: sectionRowIdFilters,\n };\n\n onCompListingChange({\n compListingSelectedSectionSettingsNew,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n });\n };\n\n return (\n
    \n \n
    \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { getTextFieldState } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { useCompQuantitiesFilter } from 'src/hooks/useCompQuantitiesFilter';\nimport { useUndercutAmountSettings } from 'src/hooks/useUndercutAmountSettings';\nimport { DetailGroup } from 'src/modals/common';\nimport {\n UNDERCUT_PRICE_MODE_OPTIONS,\n UndercutPriceSettingsMode,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n AutoPricingUndercutMode,\n Listing,\n ListingDetailsAutoPricingSectionUpdates,\n} from 'src/WebApiController';\n\nimport { useAutoPricingSettings } from '../useAutoPricingSettings';\nimport { AutoPricingSectionRowIdFilter } from './AutoPricingSectionRowIdFilter';\nimport * as styles from './SimplifiedAutopricingGuidedPrice.css';\n\ntype SimplifiedAutopricingGuidedPriceProps = {\n listing?: Listing | null;\n listingHasParent?: boolean;\n disabled?: boolean;\n isMarketListingsView?: boolean;\n};\n\n/**\n * @deprecated - Do not use\n */\nexport const SimplifiedAutopricingGuidedPrice = ({\n listing,\n disabled,\n isMarketListingsView,\n}: SimplifiedAutopricingGuidedPriceProps) => {\n const { clearErrors, formState } =\n useFormContext();\n\n const {\n canAutoPrice,\n uiCurrency,\n eventPricingSettings,\n accountPricingSettings,\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n onUndercutChange,\n skipUndercut,\n compListingQuantityScoreAdjustmentOverrideJson,\n onCompListingChange,\n } = useAutoPricingSettings(listing);\n\n const {\n quantitiesFilterOptions,\n quantitiesFilterValue,\n onUpdateQuantitiesFilter,\n } = useCompQuantitiesFilter(\n compListingQuantityScoreAdjustmentOverrideJson,\n onCompListingChange\n );\n\n const autopricingSettingsAvailable = canAutoPrice || isMarketListingsView;\n\n const parsedQuantityOverridesJson = JSON.parse(\n compListingQuantityScoreAdjustmentOverrideJson || 'null'\n );\n\n const quantityFilterValue = parsedQuantityOverridesJson?.quantityFilter;\n\n const { undercutAbsoluteAmountMode, setUndercutAbsoluteAmountMode } =\n useUndercutAmountSettings(undercutAbsoluteAmount, undercutRelativeAmount);\n\n const isDealScoreMode =\n (undercutMode ??\n eventPricingSettings?.undercutMode ??\n accountPricingSettings?.undercutMode) === AutoPricingUndercutMode.Deal;\n const undercutAbsoluteAmountError =\n formState.errors.undercutAbsoluteAmount?.message;\n\n return (\n <>\n {isDealScoreMode && (\n
    \n \n
    \n )}\n\n \n {canAutoPrice && (\n \n {\n if (!value) return;\n\n const mode = value as UndercutPriceSettingsMode;\n setUndercutAbsoluteAmountMode(mode);\n\n if (undercutAbsoluteAmount) {\n const curAmountAbs = Math.abs(undercutAbsoluteAmount);\n onUndercutChange(\n undefined,\n mode == UndercutPriceSettingsMode.Premium\n ? -curAmountAbs\n : curAmountAbs\n );\n }\n }}\n />\n
    \n \n
    \n \n {\n clearErrors('undercutAbsoluteAmount');\n clearErrors('undercutRelativeAmount');\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n if (\n undercutAbsoluteAmountMode ===\n UndercutPriceSettingsMode.Premium\n ) {\n onUndercutChange(undefined, -v);\n } else {\n onUndercutChange(undefined, v);\n }\n } else {\n onUndercutChange(undefined, null);\n }\n }}\n />\n \n
    \n )}\n\n {autopricingSettingsAvailable && listing && (\n \n
    \n \n
    \n \n\n \n
    \n )}\n
    \n \n );\n};\n","import { ChangeEvent } from 'react';\nimport { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { Slider } from 'src/core/ui/Slider';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { useAvailableAutopricingModes } from 'src/hooks/useAvailableAutopricingModes';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { DetailGroup, DetailSection, SectionContent } from 'src/modals/common';\nimport { ResetIcon } from 'src/svgs/Viagogo';\nimport {\n OUTLIER_MODE_KTH_LOWEST_STRATEGY,\n OutlierModeKthLowestStrategy,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { STANDARD_DEVIATIONS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { getCompleteEventConfigScoreOverrides } from 'src/utils/seatScoreUtils';\nimport {\n AutoPricingCompListingMode,\n AutoPricingOutlierMode,\n Feature,\n ListingDetails,\n ListingDetailsAutoPricingSectionUpdates,\n} from 'src/WebApiController';\n\nimport { useAutoPricingSettings } from '../useAutoPricingSettings';\nimport * as styles from './PricingSection.css';\n\nexport const AdvancePricingSettings = ({\n listing,\n disabled: externalDisabled,\n}: {\n listing?: ListingDetails;\n disabled?: boolean;\n}) => {\n const { clearErrors } =\n useFormContext();\n const [outlierKthLowestStrategy, setKthLowestOutlierStrategy] = useState<\n OutlierModeKthLowestStrategy | undefined\n >(OutlierModeKthLowestStrategy.Relative);\n\n const {\n canSetPrice,\n onResetAdvanceSettings,\n\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n\n compListingMode,\n compListingQuantityScoreAdjustmentEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacing,\n\n onCompListingChange,\n onCircuitBreakerChange,\n onOutlierChange,\n\n skipAdvancePricing,\n } = useAutoPricingSettings(listing);\n\n const { activeConfigOverride, venueMapQuery } = useEventMapContext();\n const hasExcludeFanInventoryFeature = useUserHasFeature(\n Feature.ExcludeFanInventory\n );\n const hasExcludeDefectsFeature = useUserHasFeature(Feature.ExcludeDefects);\n\n const scores = getCompleteEventConfigScoreOverrides(\n venueMapQuery.data?.sectionScores,\n activeConfigOverride?.scoreOverrides,\n false\n );\n\n const { outlierModes, outlierModesDisabled } = useAvailableAutopricingModes(\n true,\n null,\n null,\n Boolean(scores?.some((s) => s.score))\n );\n\n const disabled = externalDisabled || Boolean(skipAdvancePricing);\n\n return (\n }\n >\n \n {skipAdvancePricing ? null : (\n <>\n {compListingMode === AutoPricingCompListingMode.QualityScore && (\n \n \n }\n >\n ) =>\n e.stopPropagation()\n }\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (\n isChecked !== compListingQuantityScoreAdjustmentEnabled\n ) {\n onCompListingChange({\n compListingQuantityScoreAdjustmentEnabledNew:\n isChecked,\n });\n }\n }}\n />\n \n \n )}\n {hasExcludeFanInventoryFeature && (\n \n }\n >\n ) =>\n e.stopPropagation()\n }\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (isChecked !== compListingExcludeFanInventory) {\n onCompListingChange({\n compListingExcludeFanInventoryNew: isChecked,\n });\n }\n }}\n />\n \n \n )}\n {/*\n * [NOTE]\n * Exclude defects feature was built first before product changed their mind for the\n * UI to instead show the opposite, \"Include Defects\" with a default value of false.\n * Originally, the requirement was \"Exclude Defects\" with a default value of true.\n * The DB columns and pricer backend has already been finished with logic revolving\n * around the \"Exclude Defect\" verbiage, with the logic gates predicating busisness logic\n * off of \"exclude\". The UI will now show the copy \"Include Defects\" and invert the value\n * being read/written from the database, but the rest of the backend (pricer + site) will remain\n * unchanged.\n */}\n {hasExcludeDefectsFeature && (\n \n }>\n ) =>\n e.stopPropagation()\n }\n onChange={(e) => {\n const compListingExcludeDefectsNew = !e.target.checked;\n if (\n compListingExcludeDefectsNew !==\n compListingExcludeDefects\n ) {\n onCompListingChange({\n compListingExcludeDefectsNew:\n compListingExcludeDefectsNew,\n });\n }\n }}\n />\n \n \n )}\n \n }\n >\n {\n onCircuitBreakerChange(\n undefined,\n undefined,\n undefined,\n undefined,\n Math.round(count)\n );\n }}\n />\n \n \n \n }>\n e.stopPropagation()}\n onChange={(v) => {\n onOutlierChange({\n outlierModeNew: v as AutoPricingOutlierMode,\n });\n }}\n />\n \n \n {outlierMode == AutoPricingOutlierMode.StandardDeviations ? (\n \n }\n >\n e.stopPropagation()}\n onChange={(v) => {\n const value = parseInt(v ?? '');\n if (value != null && !isNaN(value)) {\n onOutlierChange({\n outlierModeNew:\n AutoPricingOutlierMode.StandardDeviations,\n outlierStandardDeviationsNew: value,\n });\n } else {\n onOutlierChange({\n outlierModeNew:\n AutoPricingOutlierMode.StandardDeviations,\n outlierStandardDeviationsNew: null,\n });\n }\n }}\n />\n \n \n ) : outlierMode == AutoPricingOutlierMode.KthLowest ? (\n \n \n \n {\n const v = parseInt(e.target.value);\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: v,\n });\n }}\n />\n \n {outlierKthLowestStrategy ==\n OutlierModeKthLowestStrategy.Relative ? (\n {\n let v = parseInt(e.target.value);\n if (v < 0) {\n v = 0;\n } else if (v > 100) {\n v = 100;\n }\n\n if (!isNaN(v)) {\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: undefined,\n outlierKthLowestLimitAbsoluteSpacingNew: null,\n outlierKthLowestLimitRelativeSpacingNew: v,\n });\n }\n }}\n />\n ) : (\n {\n const v = parseInt(e.target.value);\n onOutlierChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: undefined,\n outlierKthLowestLimitAbsoluteSpacingNew: v,\n outlierKthLowestLimitRelativeSpacingNew: null,\n });\n }}\n />\n )}\n {\n if (!value) {\n return;\n }\n\n const strat = value as OutlierModeKthLowestStrategy;\n setKthLowestOutlierStrategy(strat);\n }}\n />\n \n \n \n ) : null}\n \n \n \n {\n clearErrors('circuitBreakerMaxDiscountVelocityPercent');\n const v = parseFloat(e.target.value) / 100;\n onCircuitBreakerChange(\n undefined,\n undefined,\n v,\n undefined,\n undefined\n );\n }}\n />\n \n {\n const v = parseInt(e.target.value);\n onCircuitBreakerChange(\n undefined,\n undefined,\n undefined,\n v,\n undefined\n );\n }}\n />\n \n \n \n \n }\n textContentId={ContentId.ResetSettings}\n onClick={onResetAdvanceSettings}\n />\n \n \n )}\n \n \n );\n};\n","export enum RestrictSelectionType {\n SameZone = 'SameZone',\n SpecificSections = 'SpecificSections',\n SameSection = 'SameSection',\n}\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { isEqual, pickBy } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useCompListingDisabledSections } from 'src/hooks/useCompListingDisabledSections';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getMatchingSectionRow,\n getSectionsSameZone,\n} from 'src/utils/seatScoreUtils';\nimport {\n Listing,\n ListingDetailsAutoPricingSectionUpdates,\n} from 'src/WebApiController';\n\nimport { useAutoPricingSettings } from '../useAutoPricingSettings';\nimport { RestrictSelectionType } from './AutoPricingSection.types';\n\nexport const useRestrictSelection = (\n listing: Listing | undefined,\n defaultRestrictSelectionType: RestrictSelectionType,\n restrictSelectionTypes: Record\n) => {\n const {\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingSelectedSectionSettings,\n onCompListingChange,\n } = useAutoPricingSettings(listing);\n\n const { clearErrors } =\n useFormContext();\n const { venueMapQuery } = useEventMapContext();\n\n const matchingSectionRow = useMemo(() => {\n if (listing && venueMapQuery.data) {\n return getMatchingSectionRow(\n listing.seating,\n venueMapQuery.data.sections\n );\n }\n return null;\n }, [listing, venueMapQuery]);\n\n const { disabledSectionIds } = useCompListingDisabledSections(\n listing,\n false,\n compListingMode,\n compListingFloor,\n compListingCeiling\n );\n\n useEffect(() => {\n if (\n !disabledSectionIds.length ||\n !compListingSelectedSectionSettings?.sectionIdFilter\n ) {\n return;\n }\n\n const sectionIdFilterNew =\n compListingSelectedSectionSettings.sectionIdFilter.filter(\n (sid) => !disabledSectionIds.includes(sid)\n );\n\n if (\n !isEqual(\n sectionIdFilterNew,\n compListingSelectedSectionSettings.sectionIdFilter\n )\n ) {\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter: sectionIdFilterNew,\n };\n onCompListingChange({ compListingSelectedSectionSettingsNew });\n }\n }, [disabledSectionIds]);\n\n const [restrictSelectionType, setRestrictSelectionType] =\n useState(defaultRestrictSelectionType);\n\n const updateToSameZone = useCallback((): void => {\n if (\n listing &&\n venueMapQuery.data &&\n Object.keys(restrictSelectionTypes).includes(\n RestrictSelectionType.SpecificSections\n )\n ) {\n // Display all sections in the same zone\n const sectionsSameZone = getSectionsSameZone(\n listing.seating,\n venueMapQuery.data.sections\n )?.filter((s) => !disabledSectionIds.includes(s.id));\n if (sectionsSameZone) {\n const sectionIdFilter = sectionsSameZone\n .toSorted((a, b) => a.name.localeCompare(b.name))\n .map((s) => s.id);\n const rowIdFilter = (sectionsSameZone ?? [])\n .flatMap(({ rows }) => rows)\n .map(({ id }) => id);\n const sectionRowIdFilter = pickBy(\n Object.assign(\n {},\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {}\n ),\n (_, key) => sectionIdFilter.includes(parseInt(key))\n );\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter,\n rowIdFilter,\n sectionRowIdFilter,\n };\n onCompListingChange({\n compListingSelectedSectionSettingsNew,\n compListingOnlyForSameZoneEnabledNew: true,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n }\n }\n }, [\n compListingSelectedSectionSettings,\n disabledSectionIds,\n listing,\n onCompListingChange,\n restrictSelectionTypes,\n venueMapQuery.data,\n ]);\n\n const updateToSameSection = useCallback((): void => {\n const sectionIdFilter = matchingSectionRow?.section?.id\n ? [matchingSectionRow.section.id]\n : [];\n const rowIdFilter = compListingSelectedSectionSettings?.rowIdFilter ?? [];\n const sectionRowIdFilter = pickBy(\n Object.assign(\n {},\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {}\n ),\n (_, key) => sectionIdFilter.includes(parseInt(key))\n );\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter,\n rowIdFilter,\n sectionRowIdFilter,\n };\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n compListingSelectedSectionSettingsNew,\n });\n }, []);\n\n useEffect(() => {\n if (\n compListingOnlyForSelectedSectionsEnabled &&\n restrictSelectionType !== RestrictSelectionType.SameSection &&\n RestrictSelectionType.SpecificSections in restrictSelectionTypes\n ) {\n setRestrictSelectionType(RestrictSelectionType.SpecificSections);\n } else if (\n compListingOnlyForSameZoneEnabled &&\n restrictSelectionType !== RestrictSelectionType.SameZone &&\n RestrictSelectionType.SameZone in restrictSelectionTypes\n ) {\n setRestrictSelectionType(RestrictSelectionType.SameZone);\n }\n }, [\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n restrictSelectionTypes,\n ]);\n\n const onRestrictSelectionTypeChange = useCallback(\n (type: RestrictSelectionType | null) => {\n clearErrors('compListingFloor');\n setRestrictSelectionType(type ?? defaultRestrictSelectionType);\n if (type === RestrictSelectionType.SameZone) {\n return updateToSameZone();\n } else if (type === RestrictSelectionType.SpecificSections) {\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n });\n return;\n } else {\n // Same section\n updateToSameSection();\n }\n },\n [\n clearErrors,\n setRestrictSelectionType,\n updateToSameZone,\n onCompListingChange,\n updateToSameSection,\n ]\n );\n\n return {\n restrictSelectionType,\n disabledSectionIds,\n onRestrictSelectionTypeChange,\n };\n};\n","import { ChangeEvent, useCallback, useEffect, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { Slider } from 'src/core/ui/Slider';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { SectionSelectDialog } from 'src/dialogs/SectionSelectDialog';\nimport { useAvailableAutopricingModes } from 'src/hooks/useAvailableAutopricingModes';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useCompQuantitiesFilter } from 'src/hooks/useCompQuantitiesFilter';\nimport { useAllInPriceFromListPrice } from 'src/hooks/useListAndAllInPrice';\nimport { useUndercutAmountSettings } from 'src/hooks/useUndercutAmountSettings';\nimport { Detail, DetailGroup } from 'src/modals/common';\nimport { EditIcon, IconsFill, PlusIcon, ResetIcon } from 'src/svgs/Viagogo';\nimport {\n convertSliderValueFromServer,\n convertSliderValueToServer,\n getUndercutPriceRepresentingMode,\n SLIDER_MAX,\n SLIDER_MIN,\n UNDERCUT_PRICE_MODE_OPTIONS,\n UndercutPriceSettingsMode,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { AUTO_PRICING_RESULT_TYPES_OPTIONS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { getCompleteEventConfigScoreOverrides } from 'src/utils/seatScoreUtils';\nimport {\n AutoPricingCompListingMode,\n AutoPricingUndercutMode,\n Listing,\n ListingDetailsAutoPricingSectionUpdates,\n} from 'src/WebApiController';\n\nimport { useAutoPricingSidePanelContext } from '../../AutoPricingSidePanel';\nimport { AutoPricingSectionRowIdFilter } from '../components/AutoPricingSectionRowIdFilter';\nimport { useAutoPricingSettings } from '../useAutoPricingSettings';\nimport { RestrictSelectionType } from './AutoPricingSection.types';\nimport { useRestrictSelection } from './AutoPricingSettingsSection.hook';\nimport * as styles from './PricingSection.css';\n\n/**\n * @deprecated - Do not use\n */\nexport const AutoPricingSettingsSection = ({\n listing,\n disabled,\n listingHasParent,\n}: {\n listing?: Listing;\n disabled?: boolean;\n listingHasParent: boolean;\n}) => {\n const autoPricingResultStateContent = (\n AUTO_PRICING_RESULT_TYPES_OPTIONS_TO_CID as Record<\n string,\n string | undefined\n >\n )[listing?.autoPrcResult ?? ''];\n\n const { setValue, clearErrors, formState } =\n useFormContext();\n\n const sectionSelectDialog = useBasicDialog();\n\n const { contentType, onShowContent, onCloseSidePanel } =\n useAutoPricingSidePanelContext();\n\n const {\n canSetPrice,\n showAutoPricingSettings,\n uiCurrency,\n currencyNumberFormat,\n\n onResetSettings,\n eventPricingSettings,\n accountPricingSettings,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingSelectedSectionSettings,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n\n onUndercutChange,\n onCompListingChange,\n onCompListingModeChange,\n\n skipCompListing,\n skipUndercut,\n } = useAutoPricingSettings(listing);\n\n const {\n undercutAbsoluteAmountMode,\n setUndercutAbsoluteAmountMode,\n undercutRelativeAmountMode,\n setUndercutRelativeAmountMode,\n } = useUndercutAmountSettings(undercutAbsoluteAmount, undercutRelativeAmount);\n\n const {\n quantitiesFilterOptions,\n quantitiesFilterValue,\n onUpdateQuantitiesFilter,\n } = useCompQuantitiesFilter(\n compListingQuantityScoreAdjustmentOverrideJson,\n onCompListingChange\n );\n\n const compListingFloorError = formState.errors.compListingFloor?.message;\n const compListingSelectedSectionError =\n formState.errors.compListingSelectedSectionSettings?.message;\n\n const parsedQuantityOverridesJson = JSON.parse(\n compListingQuantityScoreAdjustmentOverrideJson || 'null'\n );\n\n const quantityFilterValue: number | null =\n parsedQuantityOverridesJson?.quantityFilter;\n\n const undercutAbsoluteAmountError =\n formState.errors.undercutAbsoluteAmount?.message;\n const undercutRelativeAmountError =\n formState.errors.undercutRelativeAmount?.message;\n\n const { activeConfigOverride, venueMapsByScoreModelQuery } =\n useEventMapContext();\n\n const defaultScoreOverrides = useMemo(() => {\n // In the backend, if AVG scores are missing, then we always fallback to MVG, even if AVG is explicitly selected\n return (\n venueMapsByScoreModelQuery?.data?.AdvancedVenueGeometry?.sectionScores ??\n venueMapsByScoreModelQuery?.data?.MergedVenueGeometry?.sectionScores ??\n venueMapsByScoreModelQuery?.data?.VenueGeometry?.sectionScores\n );\n }, [\n venueMapsByScoreModelQuery?.data?.AdvancedVenueGeometry?.sectionScores,\n venueMapsByScoreModelQuery?.data?.MergedVenueGeometry?.sectionScores,\n venueMapsByScoreModelQuery?.data?.VenueGeometry?.sectionScores,\n ]);\n\n const scores = getCompleteEventConfigScoreOverrides(\n defaultScoreOverrides,\n activeConfigOverride?.scoreOverrides,\n false\n );\n\n const {\n compListingModes,\n compListingModesDisabled,\n undercutModes,\n undercutModesDisabled,\n defaultRestrictSelectionType,\n restrictSelectionTypes,\n } = useAvailableAutopricingModes(\n true,\n undercutMode,\n compListingMode,\n Boolean(scores?.some((s) => s.score)),\n listingHasParent,\n false,\n compListingOnlyForSelectedSectionsEnabled\n );\n\n if (\n compListingMode == AutoPricingCompListingMode.QualityScore &&\n compListingModesDisabled[AutoPricingCompListingMode.QualityScore] != null\n ) {\n setValue('compListingMode', AutoPricingCompListingMode.SameEvent);\n setValue('compListingOnlyForSameZoneEnabled', false);\n }\n\n const {\n restrictSelectionType,\n onRestrictSelectionTypeChange,\n disabledSectionIds,\n } = useRestrictSelection(\n listing,\n defaultRestrictSelectionType as RestrictSelectionType,\n restrictSelectionTypes\n );\n\n const isDealScoreMode =\n (undercutMode ??\n eventPricingSettings?.undercutMode ??\n accountPricingSettings?.undercutMode) === AutoPricingUndercutMode.Deal;\n\n const isParentListingMode =\n (compListingMode ??\n eventPricingSettings?.compListingMode ??\n accountPricingSettings?.compListingMode) ===\n AutoPricingCompListingMode.ParentListing;\n\n const showCompListingSettingsDetails = !(\n !compListingMode ||\n compListingMode === AutoPricingCompListingMode.SameZone ||\n compListingMode === AutoPricingCompListingMode.SameEvent ||\n compListingMode === AutoPricingCompListingMode.ParentListing\n );\n\n const showCompListingRestictSelectionDetails =\n compListingMode != null && Object.values(restrictSelectionTypes).length > 0;\n\n const hasAnyActiveRestrictionApplied = useMemo(() => {\n let applied = false;\n const restirctSelectionTypes = Object.keys(restrictSelectionTypes);\n restirctSelectionTypes.forEach((type) => {\n if (type === RestrictSelectionType.SameZone) {\n applied = applied || compListingOnlyForSameZoneEnabled === true;\n }\n if (\n type === RestrictSelectionType.SpecificSections ||\n type === RestrictSelectionType.SameSection\n ) {\n applied = applied || compListingOnlyForSelectedSectionsEnabled === true;\n }\n });\n\n return applied;\n }, [\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n restrictSelectionTypes,\n ]);\n\n const isCompListingAmountDisabled =\n disabled ||\n listing?.isDeleted ||\n !canSetPrice ||\n !compListingMode ||\n compListingMode === AutoPricingCompListingMode.SameZone ||\n compListingMode === AutoPricingCompListingMode.SameEvent ||\n compListingMode === AutoPricingCompListingMode.ParentListing;\n\n useEffect(() => {\n if (\n contentType === 'sectionSelection' &&\n (!showCompListingRestictSelectionDetails ||\n !hasAnyActiveRestrictionApplied)\n ) {\n onCloseSidePanel();\n }\n }, [\n showCompListingRestictSelectionDetails,\n hasAnyActiveRestrictionApplied,\n contentType,\n onShowContent,\n onCloseSidePanel,\n ]);\n\n const onLaunchSectionSelection = useCallback(\n (e: React.MouseEvent) => {\n if (listing?.id) {\n onShowContent('sectionSelection', e);\n } else {\n sectionSelectDialog.launchDialog();\n }\n },\n [listing?.id, onShowContent, sectionSelectDialog]\n );\n\n const marketPrice = useAllInPriceFromListPrice(listing?.undNewPrice, listing);\n\n if (!showAutoPricingSettings) return null;\n\n return (\n <>\n {skipCompListing ? null : (\n <>\n \n \n \n \n \n
    \n \n
    \n e.stopPropagation()}\n onChange={onCompListingModeChange}\n />\n
    \n
    \n {showCompListingSettingsDetails && (\n <>\n \n \n
    \n \n
    \n \n {\n const v = parseFloat(e.target.value);\n if (!isNaN(v)) {\n if (\n v >= SLIDER_MIN * 100 &&\n v <= SLIDER_MAX * 100 &&\n convertSliderValueToServer(v) < compListingCeiling\n ) {\n onCompListingChange({\n compListingFloorNew:\n convertSliderValueToServer(v),\n });\n }\n }\n }}\n postfixDisplay=\"%\"\n placeholder={\n compListingMode == null\n ? eventPricingSettings?.compListingFloor?.toString() ??\n accountPricingSettings?.compListingFloor?.toString() ??\n undefined\n : undefined\n }\n />\n \n
    \n \n
    \n \n {\n const v = parseFloat(e.target.value);\n if (!isNaN(v)) {\n if (\n v >= SLIDER_MIN * 100 &&\n v <= SLIDER_MAX * 100 &&\n convertSliderValueToServer(v) > compListingFloor\n ) {\n onCompListingChange({\n compListingCeilingNew:\n convertSliderValueToServer(v),\n });\n }\n }\n }}\n postfixDisplay=\"%\"\n placeholder={\n compListingMode == null\n ? eventPricingSettings?.compListingCeiling?.toString() ??\n accountPricingSettings?.compListingCeiling?.toString() ??\n undefined\n : undefined\n }\n />\n \n
    \n \n
    \n
    \n
    \n \n {!isCompListingAmountDisabled && (\n \n (\n \n {roundToPrecision(val, 0)}%\n \n )}\n onValueChange={([floor, ceil]) => {\n onCompListingChange({\n compListingFloorNew:\n convertSliderValueToServer(floor),\n compListingCeilingNew:\n convertSliderValueToServer(ceil),\n });\n }}\n />\n
    \n \n
    \n
    \n \n )}\n \n \n )}\n {showCompListingRestictSelectionDetails && (\n \n }\n style={{ width: '100%' }}\n >\n \n \n\n }\n style={{ width: '100%' }}\n >\n ) => e.stopPropagation()}\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (isChecked) {\n if (!hasAnyActiveRestrictionApplied) {\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew:\n defaultRestrictSelectionType ===\n RestrictSelectionType.SameZone,\n compListingOnlyForSelectedSectionsEnabledNew:\n defaultRestrictSelectionType ===\n RestrictSelectionType.SpecificSections,\n });\n }\n } else {\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n compListingSelectedSectionSettingsNew: null,\n });\n }\n }}\n />\n \n {hasAnyActiveRestrictionApplied && (\n \n
    \n \n
    \n e.stopPropagation()}\n onChange={onRestrictSelectionTypeChange}\n />\n
    \n )}\n {hasAnyActiveRestrictionApplied && (\n \n \n {compListingSelectedSectionSettings?.sectionIdFilter\n ?.length ? (\n <>\n \n \n \n }\n textContentId={ContentId.EditSections}\n onClick={onLaunchSectionSelection}\n disabled={disabled}\n style={{ paddingLeft: 0, paddingRight: 0 }}\n />\n \n ) : (\n \n }\n textContentId={ContentId.SelectSections}\n onClick={onLaunchSectionSelection}\n disabled={disabled}\n style={{ padding: 0 }}\n />\n )}\n \n \n )}\n \n )}\n \n )}\n\n {skipUndercut ? null : (\n <>\n \n \n \n {isParentListingMode ? (\n
    \n \n
    \n ) : (\n <>\n \n \n
    \n \n
    \n e.stopPropagation()}\n onChange={(v) => {\n clearErrors('undercutAbsoluteAmount');\n clearErrors('undercutRelativeAmount');\n if (v) {\n onUndercutChange(v as AutoPricingUndercutMode);\n } else {\n onUndercutChange(null, null, null);\n }\n }}\n />\n
    \n \n
    \n
    \n
    \n {isDealScoreMode && (\n
    \n \n
    \n )}\n \n )}\n \n \n {\n if (!value) return;\n\n const mode = value as UndercutPriceSettingsMode;\n setUndercutRelativeAmountMode(mode);\n\n if (undercutRelativeAmount) {\n const curAmountAbs = Math.abs(undercutRelativeAmount);\n onUndercutChange(\n undefined,\n undefined,\n getUndercutPriceRepresentingMode(curAmountAbs, mode)\n );\n }\n }}\n />\n\n
    \n \n
    \n\n \n {\n clearErrors('undercutAbsoluteAmount');\n clearErrors('undercutRelativeAmount');\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n const relativeValue = Math.min(v, 100) / 100;\n if (\n undercutRelativeAmountMode ===\n UndercutPriceSettingsMode.Premium\n ) {\n onUndercutChange(undefined, undefined, -relativeValue);\n } else {\n onUndercutChange(undefined, undefined, relativeValue);\n }\n } else {\n onUndercutChange(undefined, undefined, null);\n }\n }}\n />\n \n
    \n \n
    \n {\n if (!value) return;\n\n const mode = value as UndercutPriceSettingsMode;\n setUndercutAbsoluteAmountMode(mode);\n\n if (undercutAbsoluteAmount) {\n const curAmountAbs = Math.abs(undercutAbsoluteAmount);\n onUndercutChange(\n undefined,\n getUndercutPriceRepresentingMode(curAmountAbs, mode)\n );\n }\n }}\n />\n
    \n \n
    \n \n {\n clearErrors('undercutAbsoluteAmount');\n clearErrors('undercutRelativeAmount');\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n if (\n undercutAbsoluteAmountMode ===\n UndercutPriceSettingsMode.Premium\n ) {\n onUndercutChange(undefined, -v);\n } else {\n onUndercutChange(undefined, v);\n }\n } else {\n onUndercutChange(undefined, null);\n }\n }}\n />\n \n
    \n
    \n \n )}\n {autoPricingResultStateContent && (\n \n \n }\n detail={\n \n \n \n }\n />\n {marketPrice != null && (\n }\n detail={{currencyNumberFormat.format(marketPrice)}}\n />\n )}\n \n \n )}\n \n }\n textContentId={ContentId.ResetSettings}\n onClick={onResetSettings}\n />\n \n {\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter: selectedSections.map((s) => s.id),\n rowIdFilter: compListingSelectedSectionSettings?.rowIdFilter ?? [],\n sectionRowIdFilter:\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {},\n };\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n compListingSelectedSectionSettingsNew,\n });\n sectionSelectDialog.closeDialog();\n clearErrors('compListingSelectedSectionSettings');\n }}\n onClosed={sectionSelectDialog.closeDialog}\n />\n \n );\n};\n","import { useCallback, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { Button, Stack, Switch } from 'src/core/ui';\nimport { useListingHasVenueMapInfo } from 'src/hooks/useListingHasVenueMapInfo';\nimport { DetailGroup, DetailSection, SectionContent } from 'src/modals/common';\nimport { ListingTab } from 'src/modals/ListingDetails/components/listingDetailsUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n Listing,\n ListingDetails,\n ListingDetailsAutoPricingSectionUpdates,\n} from 'src/WebApiController';\n\nimport { AutoPricePreview } from '../components/AutoPricePreview';\nimport { SimplifiedAutopricingGuidedPrice } from '../components/SimplifiedAutopricingGuidedPrice';\nimport { useAutoPricingSettings } from '../useAutoPricingSettings';\nimport { AdvancePricingSettings } from './AdvancePricingSection';\nimport { AutoPricingSettingsSection } from './AutoPricingSettingsSection';\nimport { AutoPricingStrategySection } from './AutoPricingStrategySection';\nimport { PricingProtection } from './PricingProtection';\n\n/**\n * @deprecated This component is deprecated and will be removed in a future version.\n * Please use ListingAutoPricingSettingsFormContentWrapper instead\n */\nexport const AutoPricingSection = ({\n listing,\n disabled,\n onSwitchToTab,\n}: {\n listing?: Listing | null;\n disabled?: boolean;\n onSwitchToTab?: (tabName: ListingTab) => void;\n}) => {\n const { setValue } =\n useFormContext();\n\n const {\n canSetPrice,\n canAutoPrice,\n autoPricingEnabled,\n setAutoPricingDefaults,\n showAutoPricingSettings,\n skipAutoPricing,\n event,\n } = useAutoPricingSettings(listing);\n\n const [showDetailedSettings, setShowDetailedSettings] = useState(false);\n\n const turnOffSkipSetting = useCallback(\n () => setValue('skipAutoPricing', false),\n [setValue]\n );\n\n const { mapExists, hasVenueMapInfo } = useListingHasVenueMapInfo(listing);\n\n if (!canSetPrice || !canAutoPrice) {\n return null;\n }\n\n return (\n <>\n }>\n \n {hasVenueMapInfo && canAutoPrice ? (\n <>\n \n \n \n }\n style={{ width: 'auto' }}\n >\n \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n turnOffSkipSetting();\n if (isChecked !== autoPricingEnabled) {\n setValue('autoPricingEnabled', isChecked);\n\n if (isChecked) {\n // If enabled, set defaults where necessary\n setAutoPricingDefaults();\n }\n }\n }}\n />\n
    \n \n \n
    \n }\n >\n \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n setShowDetailedSettings(isChecked);\n }}\n />\n \n \n \n
    \n\n {showDetailedSettings ? (\n <>\n {event?.viagId && listing?.id && (\n \n \n \n )}\n \n \n ) : (\n <>\n \n {event?.viagId && listing?.id && (\n \n \n \n )}\n \n )}\n \n ) : (\n \n \n {!canAutoPrice ? (\n \n ) : mapExists && !hasVenueMapInfo ? (\n <>\n \n\n onSwitchToTab?.(ListingTab.Broadcast)}\n style={{ width: 'max-content', padding: '0' }}\n >\n \n \n \n ) : (\n \n )}\n \n \n )}\n \n \n {showDetailedSettings && (\n \n )}\n {showDetailedSettings && hasVenueMapInfo && showAutoPricingSettings && (\n \n )}\n \n );\n};\n","import { isEmpty, pickBy } from 'lodash-es';\nimport { useCallback, useEffect } from 'react';\nimport { FormProvider, useFormContext } from 'react-hook-form';\nimport { useCompListingDisabledSections } from 'src/hooks/useCompListingDisabledSections';\nimport { useUserHasAutopricingFeature } from 'src/hooks/useUserHasAutopricingFeature';\nimport {\n Feature,\n ListingDetails,\n ListingDetailsAutoPricingSectionUpdates,\n SectionInfo,\n} from 'src/WebApiController';\n\nimport { ListingTab } from '../../components/listingDetailsUtils';\nimport { useListingDetailsContext } from '../../ListingDetailsModalV2Context';\nimport { useAutoPricingSidePanelContext } from '../AutoPricingSidePanel';\nimport { ListingAutoPricingSettingsFormContentWrapper } from './components/ListingAutoPricingSettingsFormContentWrapper/ListingAutoPricingSettingsFormContentWrapper';\nimport { AutoPricingSection } from './Sections/AutoPricingSection';\nimport { useAutoPricingSettings } from './useAutoPricingSettings';\n\ntype ListingDetailsAutoPricingFormProps = {\n listing: ListingDetails;\n};\n\nexport const ListingDetailsAutoPricingForm: React.FC<\n ListingDetailsAutoPricingFormProps\n> = ({ listing }) => {\n const { methods, isLoading, onTabChange } = useListingDetailsContext();\n\n return (\n \n \n \n );\n};\n\ntype ListingAutoPricingSettingsFormWrapperProps = {\n listing: ListingDetails;\n isLoading: boolean;\n onTabChange: (v: ListingTab) => void;\n};\n\nconst ListingAutoPricingSettingsFormWrapper: React.FC<\n ListingAutoPricingSettingsFormWrapperProps\n> = ({ listing, isLoading, onTabChange }) => {\n const hasIntelligibleAutoPricingSettingsFeature =\n useUserHasAutopricingFeature(Feature.IntelligibleAutoPricingSettings);\n const { watch } = useFormContext();\n const { updateMetadata } = useAutoPricingSidePanelContext();\n\n const input = watch();\n\n const {\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingSelectedSectionSettings,\n onCompListingChange,\n } = useAutoPricingSettings(listing);\n\n const { disabledSectionIds } = useCompListingDisabledSections(\n listing,\n false,\n compListingMode,\n compListingFloor,\n compListingCeiling\n );\n\n const onSelectedSectionsChange = useCallback(\n (selectedSections: SectionInfo[]) => {\n // Restructure the id filters.\n const sectionIdFilter = selectedSections.map((s) => s.id);\n const selectedRowIds = selectedSections\n .flatMap(({ rows }) => rows)\n .map(({ id }) => id);\n const rowIdFilter = [];\n if (isEmpty(compListingSelectedSectionSettings?.rowIdFilter)) {\n rowIdFilter.push(...selectedRowIds);\n } else {\n rowIdFilter.push(\n ...(compListingSelectedSectionSettings?.rowIdFilter?.filter((rowId) =>\n selectedRowIds.includes(rowId)\n ) ?? [])\n );\n }\n const sectionRowIdFilter = pickBy(\n Object.assign(\n {},\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {}\n ),\n (_, key) => sectionIdFilter.includes(parseInt(key))\n );\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter,\n rowIdFilter,\n sectionRowIdFilter,\n };\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n compListingSelectedSectionSettingsNew,\n });\n },\n [compListingSelectedSectionSettings, onCompListingChange]\n );\n\n useEffect(() => {\n updateMetadata({\n input,\n sectionIds: compListingSelectedSectionSettings?.sectionIdFilter ?? [],\n disabledSectionIds,\n onSelectedSectionsChange,\n });\n }, [\n compListingSelectedSectionSettings?.sectionIdFilter,\n disabledSectionIds,\n onSelectedSectionsChange,\n input,\n updateMetadata,\n ]);\n\n return (\n <>\n {hasIntelligibleAutoPricingSettingsFeature ? (\n \n ) : (\n \n )}\n \n );\n};\n","import { useSyncCenterSettings } from 'src/hooks/api/useSyncCenterSetting';\nimport { PurchaseInfoSection } from 'src/modals/common/PurchaseInfoSection';\nimport { ListingDetails } from 'src/WebApiController';\n\ntype ListingDetailsPurchaseFormProps = {\n listing?: ListingDetails | null;\n};\n\nexport const ListingDetailsPurchaseForm: React.FC<\n ListingDetailsPurchaseFormProps\n> = ({ listing }) => {\n const settings = useSyncCenterSettings();\n const isAutoPoQualityControlled =\n settings.data?.isAutoPoQualityControlled ?? false;\n\n return (\n \n );\n};\n","import { Fragment } from 'react';\nimport { LinkAndCopy } from 'src/components/common/LinkAndCopy';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { SaleMarketplaceIdDisplay } from 'src/components/Sales/SaleMarketplaceIdDisplay';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { Detail, DetailSection, SectionContent } from 'src/modals/common';\nimport * as styles from 'src/modals/ListingDetails/ListingForms/SalesForm/SalesForm.css';\nimport { SeatIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getSaleDetailsRelativeUrl,\n getSaleStatusDisplayContentId,\n} from 'src/utils/saleUtils';\nimport { SaleDisplayInfo, Seating, Ticket } from 'src/WebApiController';\n\ninterface SalesDetailsSectionProps {\n ticketsBySalesId: Record | undefined;\n saleInfos: SaleDisplayInfo[] | undefined;\n seating?: Seating | null;\n sectionName: ContentId;\n}\n\nexport const SalesDetailsSection = ({\n ticketsBySalesId,\n seating,\n saleInfos,\n sectionName,\n}: SalesDetailsSectionProps) => {\n return (\n }>\n \n {saleInfos?.map((s) => {\n const { id, externalId, idOnMkp, mkp, stat } = s;\n const saleTickets = ticketsBySalesId?.[id];\n\n return (\n \n }\n detail={\n \n }\n />\n }\n />\n }\n detail={\n
    \n \n
    \n }\n />\n }\n detail={\n
    \n {saleTickets?.map((ticket) => {\n return (\n \n \n \n \n );\n })}\n
    \n }\n />\n
    \n );\n })}\n
    \n
    \n );\n};\n","import { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { SalesDetailsSection } from 'src/modals/ListingDetails/ListingForms/SalesForm/SalesDetailsSection';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n Feature,\n ListingDetails,\n PointOfSaleSaleStatus,\n Ticket,\n} from 'src/WebApiController';\n\ntype ListingDetailsSalesFormProps = {\n listing?: ListingDetails | null;\n};\n\nexport const ListingDetailsSalesForm: React.FC<\n ListingDetailsSalesFormProps\n> = ({ listing }) => {\n const hasWasteSaleFeature = useUserHasFeature(Feature.WasteSale);\n const { tickets = [] } = listing ?? {};\n const ticketsWithSales = tickets?.filter((ticket) => ticket.id);\n\n const ticketsBySalesId = ticketsWithSales?.reduce>(\n (acc, curr) => {\n if (!curr.id) return acc;\n const sale = acc[curr.id] ?? [];\n return { ...acc, [curr.id]: [...sale, curr] };\n },\n {}\n );\n\n const wastedSales = listing?.saleInfos?.filter(\n (saleInfo) => saleInfo.stat === PointOfSaleSaleStatus.Wasted\n );\n\n const nonWastedSales = listing?.saleInfos?.filter(\n (saleInfo) => saleInfo.stat !== PointOfSaleSaleStatus.Wasted\n );\n\n return (\n <>\n \n {hasWasteSaleFeature && (\n \n )}\n \n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n PropsWithChildren,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react';\nimport { createContext } from 'react';\nimport { UseFormReturn } from 'react-hook-form';\nimport { useToggle } from 'react-use';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventHubContext } from 'src/contexts/EventHubContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { SpinnerWrapper } from 'src/core/POS/PosSpinner/PosSpinner.styled';\nimport { TabItem } from 'src/core/ui/TabPanel/TabPanel.types';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n Event,\n Feature,\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingDetailsAutoPricingSectionUpdates,\n ListingDetailsBroadcastSectionUpdates,\n ListingDetailsPricingSectionUpdates,\n ListingDetailsTagsSectionUpdates,\n ListingDetailsTicketSectionUpdates,\n} from 'src/WebApiController';\n\nimport {\n getListingDataFieldsForTab,\n ListingTab,\n} from './components/listingDetailsUtils';\nimport { useHasListingPricePermissions } from './components/useHasListingPricePermissions';\nimport { useListingDetailsMethods } from './ListingDetailsModalV2.hooks';\nimport { ListingDetailsAutoPricingForm } from './ListingForms/AutoPricingForm';\nimport { useAutoPricingSidePanelContext } from './ListingForms/AutoPricingSidePanel';\nimport { ListingDetailsBroadcastForm } from './ListingForms/BroadcastForm';\nimport { ListingDetailsPricingForm } from './ListingForms/PricingForm';\nimport { ListingDetailsPurchaseForm } from './ListingForms/PurchaseForm';\nimport { ListingDetailsSalesForm } from './ListingForms/SalesForm';\nimport { ListingDetailsTagsForm } from './ListingForms/TagsForm';\nimport { ListingDetailsTicketsForm } from './ListingForms/TicketsForm';\n\ntype ModalMethods = {\n broadcast: UseFormReturn<\n ListingDetailsBroadcastSectionUpdates,\n any,\n undefined\n >;\n tickets: UseFormReturn;\n tags: UseFormReturn;\n pricing: UseFormReturn;\n autoPricing: UseFormReturn<\n ListingDetailsAutoPricingSectionUpdates,\n any,\n undefined\n >;\n};\n\ntype ListingDetailsModalContextType = {\n event: Event | null | undefined;\n listing: ListingDetails | null | undefined;\n tabs: TabItem[];\n isLoading: boolean;\n hasChanges: boolean;\n activeTabIndex: number;\n setLoading: (nextValue: boolean) => void;\n onTabChange: (v: ListingTab) => void;\n setActiveTabIndex: React.Dispatch>;\n onSubmit: () => void;\n onReset: (tabIndex: number) => void;\n methods: ModalMethods;\n};\n\nconst ListingDetailsModalContext =\n createContext({\n event: null,\n listing: null,\n tabs: [],\n isLoading: false,\n hasChanges: false,\n activeTabIndex: 0,\n setLoading: (_: boolean) => void 0,\n onTabChange: (_: ListingTab) => void 0,\n setActiveTabIndex: (_) => void 0,\n onSubmit: () => void 0,\n onReset: (_: number) => void 0,\n methods: {} as ModalMethods,\n });\n\nexport const ListingDetailsModalContextProvider = ({\n children,\n}: PropsWithChildren) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const {\n event,\n posEntity: listing,\n setActivePosEntity,\n updateActivePosEntityInfo,\n } = useActivePosEntityContext();\n const { onUpdateListing } = useEventHubContext();\n\n const { onShowContent, onCloseSidePanel } = useAutoPricingSidePanelContext();\n\n const hasSectionalLoadDataFeature = useUserHasFeature(\n Feature.ListingLoadBySection\n );\n\n const [isLoading, setLoading] = useToggle(false);\n const [activeTabIndex, setActiveTabIndex] = useState(0);\n\n const onSaveCompleted = useCallback(\n async (success = true) => {\n if (listing?.id && success) {\n if (hasSectionalLoadDataFeature) {\n // Since update can have rippling affect through the whole listing, we need to get the whole thing and\n // update it in both the active entity and the catalog event context\n const updatedListing = await new ListingClient(\n activeAccountWebClientConfig\n ).getListingByListingId(listing.id, undefined, undefined);\n\n if (updatedListing) {\n updateActivePosEntityInfo({\n event,\n posEntity: updatedListing,\n posEntityId: updatedListing.id,\n posEntityDisplayId: updatedListing.idOnMkp,\n });\n }\n } else {\n // Old - we shouldn't use this to update listing\n onUpdateListing(listing.id);\n }\n }\n setLoading(false);\n },\n [\n activeAccountWebClientConfig,\n event,\n hasSectionalLoadDataFeature,\n listing?.id,\n onUpdateListing,\n setLoading,\n updateActivePosEntityInfo,\n ]\n );\n\n const onSaveStart = useCallback(() => {\n setLoading(true);\n }, [setLoading]);\n\n const { updated, methods, onSubmits, onResets } = useListingDetailsMethods(\n listing,\n onSaveStart,\n onSaveCompleted\n );\n\n const { canSetPrice, canAutoPrice } = useHasListingPricePermissions(listing);\n\n const tabs: TabItem[] = useMemo(() => {\n if (listing == null) {\n return [];\n }\n\n const spinner = (\n \n \n \n );\n\n const listingTabs = [\n {\n value: ListingTab.Broadcast,\n title: ,\n content:\n !hasSectionalLoadDataFeature ||\n listing?.dataIsLoaded[ListingDetailDataField.Basic] ? (\n \n ) : (\n spinner\n ),\n },\n {\n value: ListingTab.Tickets,\n title: ,\n content:\n !hasSectionalLoadDataFeature ||\n listing?.dataIsLoaded[ListingDetailDataField.Tickets] ? (\n \n ) : (\n spinner\n ),\n },\n ];\n\n if (canSetPrice) {\n listingTabs.push({\n value: ListingTab.Pricing,\n title: ,\n content:\n !hasSectionalLoadDataFeature ||\n listing?.dataIsLoaded[ListingDetailDataField.Pricing] ? (\n \n ) : (\n spinner\n ),\n });\n }\n\n if (canAutoPrice) {\n listingTabs.push({\n value: ListingTab.AutoPricing,\n title: ,\n // AutoPricing does it's only load logic so it doesn't use the ListingDetailDataField check/load\n content: ,\n });\n }\n\n listingTabs.push(\n ...[\n {\n value: ListingTab.Sales,\n title: ,\n content:\n !hasSectionalLoadDataFeature ||\n listing?.dataIsLoaded[ListingDetailDataField.Sales] ? (\n \n ) : (\n spinner\n ),\n },\n {\n value: ListingTab.Purchase,\n title: ,\n content:\n !hasSectionalLoadDataFeature ||\n listing?.dataIsLoaded[ListingDetailDataField.Purchase] ? (\n \n ) : (\n spinner\n ),\n },\n {\n value: ListingTab.Tags,\n title: ,\n content:\n !hasSectionalLoadDataFeature ||\n listing?.dataIsLoaded[ListingDetailDataField.Tags] ? (\n \n ) : (\n spinner\n ),\n },\n ]\n );\n return listingTabs;\n }, [canAutoPrice, canSetPrice, event, hasSectionalLoadDataFeature, listing]);\n\n const loadDataForTab = useCallback(\n (tab: ListingTab) => {\n if (!hasSectionalLoadDataFeature || listing?.id == null) {\n // main listing not even loaded, can't get partial data\n return;\n }\n\n switch (tab) {\n case ListingTab.Broadcast:\n {\n const dataField = getListingDataFieldsForTab(ListingTab.Broadcast);\n if (\n dataField.some(\n (f) => !listing?.dataIsLoaded[f as ListingDetailDataField]\n )\n ) {\n setActivePosEntity(\n listing.id,\n listing.idOnMkp,\n false,\n getListingDataFieldsForTab(ListingTab.Broadcast)\n );\n }\n }\n break;\n case ListingTab.Tickets:\n {\n const dataField = getListingDataFieldsForTab(ListingTab.Tickets);\n if (\n dataField.some(\n (f) => !listing?.dataIsLoaded[f as ListingDetailDataField]\n )\n ) {\n setActivePosEntity(\n listing.id,\n listing.idOnMkp,\n false,\n getListingDataFieldsForTab(ListingTab.Tickets)\n );\n }\n }\n break;\n case ListingTab.Pricing:\n {\n const dataField = getListingDataFieldsForTab(ListingTab.Pricing);\n if (\n dataField.some(\n (f) => !listing?.dataIsLoaded[f as ListingDetailDataField]\n )\n ) {\n if (!listing?.mkpListings?.length) {\n setActivePosEntity(\n listing.id,\n listing.idOnMkp,\n false,\n getListingDataFieldsForTab(ListingTab.Pricing)\n );\n }\n }\n }\n break;\n case ListingTab.AutoPricing:\n {\n const dataField = getListingDataFieldsForTab(\n ListingTab.AutoPricing\n );\n if (\n dataField.some(\n (f) => !listing?.dataIsLoaded[f as ListingDetailDataField]\n )\n ) {\n setActivePosEntity(\n listing.id,\n listing.idOnMkp,\n false,\n getListingDataFieldsForTab(ListingTab.AutoPricing)\n );\n }\n }\n break;\n case ListingTab.Tags:\n {\n const dataField = getListingDataFieldsForTab(ListingTab.Tags);\n if (\n dataField.some(\n (f) => !listing?.dataIsLoaded[f as ListingDetailDataField]\n )\n ) {\n setActivePosEntity(\n listing.id,\n listing.idOnMkp,\n false,\n getListingDataFieldsForTab(ListingTab.Tags)\n );\n }\n }\n break;\n case ListingTab.Sales:\n {\n const dataField = getListingDataFieldsForTab(ListingTab.Sales);\n if (\n dataField.some(\n (f) => !listing?.dataIsLoaded[f as ListingDetailDataField]\n )\n ) {\n setActivePosEntity(\n listing.id,\n listing.idOnMkp,\n false,\n getListingDataFieldsForTab(ListingTab.Sales)\n );\n }\n }\n break;\n case ListingTab.Purchase:\n {\n const dataField = getListingDataFieldsForTab(ListingTab.Purchase);\n if (\n dataField.some(\n (f) => !listing?.dataIsLoaded[f as ListingDetailDataField]\n )\n ) {\n setActivePosEntity(\n listing.id,\n listing.idOnMkp,\n false,\n getListingDataFieldsForTab(ListingTab.Purchase)\n );\n }\n }\n break;\n default:\n break;\n }\n },\n [\n hasSectionalLoadDataFeature,\n listing?.dataIsLoaded,\n listing?.id,\n listing?.idOnMkp,\n listing?.mkpListings?.length,\n setActivePosEntity,\n ]\n );\n\n const onReset = useCallback(\n (tabIndex: number) => {\n if (tabIndex >= tabs.length) {\n return;\n }\n switch (tabs[tabIndex].value) {\n case ListingTab.Broadcast:\n onResets.broadcast();\n break;\n case ListingTab.Tickets:\n onResets.tickets();\n break;\n case ListingTab.Pricing:\n onResets.pricing();\n break;\n case ListingTab.AutoPricing:\n onResets.autoPricing();\n break;\n case ListingTab.Tags:\n onResets.tags();\n break;\n default:\n break;\n }\n },\n [onResets, tabs]\n );\n const onTabChange = useCallback(\n (value: ListingTab) => {\n if (value === ListingTab.AutoPricing) {\n onShowContent('comparables');\n } else {\n onCloseSidePanel();\n }\n\n const tabIndex = tabs.findIndex((t) => t.value === value);\n if (tabIndex !== activeTabIndex) {\n onReset(activeTabIndex);\n\n loadDataForTab(value);\n setActiveTabIndex(tabIndex ?? 0);\n }\n },\n [\n tabs,\n activeTabIndex,\n onShowContent,\n onCloseSidePanel,\n onReset,\n loadDataForTab,\n ]\n );\n\n const onSubmit = useCallback(() => {\n if (activeTabIndex >= tabs.length) {\n return;\n }\n switch (tabs[activeTabIndex].value) {\n case ListingTab.Broadcast:\n onSubmits.broadcast();\n break;\n case ListingTab.Tickets:\n onSubmits.tickets();\n break;\n case ListingTab.Pricing:\n onSubmits.pricing();\n break;\n case ListingTab.AutoPricing:\n onSubmits.autoPricing();\n break;\n case ListingTab.Tags:\n onSubmits.tags();\n break;\n default:\n break;\n }\n }, [activeTabIndex, onSubmits, tabs]);\n\n const hasChanges = useMemo(() => {\n if (activeTabIndex >= tabs.length) {\n return false;\n }\n switch (tabs[activeTabIndex].value) {\n case ListingTab.Broadcast:\n return updated.broadcast;\n case ListingTab.Tickets:\n return updated.tickets;\n case ListingTab.Pricing:\n return updated.pricing;\n case ListingTab.AutoPricing:\n return updated.autoPricing;\n case ListingTab.Tags:\n return updated.tags;\n default:\n return false;\n }\n }, [activeTabIndex, tabs, updated]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useListingDetailsContext = () =>\n useContext(ListingDetailsModalContext);\n","import { KeyboardEventHandler, useCallback, useMemo } from 'react';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { EventMapContextProvider } from 'src/contexts/EventMapContext';\nimport { Stack } from 'src/core/ui';\nimport { onTabPanelKeyDown, TabPanel } from 'src/core/ui/TabPanel';\nimport { useEventItemLoadingDisplay } from 'src/hooks/useEventItemLoadingDisplay';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalBody } from 'src/modals/Modal';\nimport { createInventoryEventUrl } from 'src/navigations/Routes/InventoryEvent/InventoryEvent.utils';\nimport { InventoryDeeplinkQueryParam } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { getDeepLinkIdFromUrl } from 'src/utils/deepLinkUtils';\nimport { ListingDetails } from 'src/WebApiController';\n\nimport { modalDetails } from '../common/Modals.css';\nimport { Summary } from '../common/Summary';\nimport {\n ModalBodyDataContainer,\n ModalBodyHeaderContainer,\n} from '../Modal/Modal.styled';\nimport { ListingTab } from './components/listingDetailsUtils';\nimport { ListingDetailsFooter } from './ListingDetailsFooter';\nimport {\n ListingDetailsModalContextProvider,\n useListingDetailsContext,\n} from './ListingDetailsModalV2Context';\nimport {\n AutoPricingSidePanel,\n AutoPricingSidePanelContextProvider,\n useAutoPricingSidePanelContext,\n} from './ListingForms/AutoPricingSidePanel';\n\nexport const ListingDetailsModalV2 = () => {\n const activeId = getDeepLinkIdFromUrl(\n InventoryDeeplinkQueryParam,\n window.location.href\n );\n\n const { isLoading: listingIsLoading, loadingState } =\n useEventItemLoadingDisplay(\n FormatContentId.LoadingListingId,\n FormatContentId.SearchingForListingId,\n FormatContentId.CouldNotFindListingId,\n activeId\n );\n\n const { posEntity: listing } = useActivePosEntityContext();\n\n if (!listing) {\n return loadingState;\n }\n\n if (!listingIsLoading && loadingState) return loadingState;\n\n return ;\n};\n\nconst ListingDetailsModalWrapper = () => {\n const { event } = useActivePosEntityContext();\n\n return (\n \n \n \n \n \n \n \n );\n};\n\nconst ListingDetailsModalContent = () => {\n const {\n isLoading,\n hasChanges,\n event,\n listing,\n activeTabIndex,\n tabs,\n setActiveTabIndex,\n onTabChange,\n setLoading,\n onSubmit,\n } = useListingDetailsContext();\n const { metadata } = useAutoPricingSidePanelContext();\n\n const onKeyDown: KeyboardEventHandler = useCallback(\n (e) => {\n onTabPanelKeyDown(e, setActiveTabIndex, tabs.length);\n },\n [setActiveTabIndex, tabs.length]\n );\n\n const inventoryEventPageUrl = useMemo(() => {\n if (event) {\n const includeAllSearchParams = true;\n const queryParamOverride = undefined;\n const queryParamsToRemove = [InventoryDeeplinkQueryParam];\n return createInventoryEventUrl(\n event.viagVirtualId,\n includeAllSearchParams,\n false, // useEventV2\n queryParamOverride,\n queryParamsToRemove\n );\n }\n return undefined;\n }, [event]);\n\n return (\n \n {event && listing && (\n \n )}\n \n \n \n \n {listing!.isDeleted && (\n <>\n {' ('}\n \n {')'}\n \n )}\n \n }\n />\n \n\n \n \n \n \n
    \n \n onTabChange(v as ListingTab)}\n />\n \n
    \n
    \n\n \n
    \n \n );\n};\n","import { InventoryDeeplinkQueryParam } from 'src/utils/constants/constants';\n\nimport { ListingDetailsModalV2 } from './ListingDetailsModalV2';\n\nexport const ListingDetailsModalConfig = {\n children: ,\n clickOutsideToClose: true,\n deepLinkKey: InventoryDeeplinkQueryParam,\n deepLinkValue: undefined,\n size: 'slide-in-full',\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const PendingQCIcon = (props: PosIconProps) => {\n const fillColor = props.fill || '#87909A';\n return (\n \n \n \n \n \n \n );\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { ButtonWithIcon, IconButton } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { vars } from 'src/core/themes';\nimport { ButtonProps } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { SignalIcon } from 'src/svgs';\nimport { DuplicateOutlinedIcon } from 'src/svgs/DuplicateOutlinedIcon';\nimport { PendingQCIcon } from 'src/svgs/PendingQC';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getListingBroadcastIcon,\n getListingGroupForListing,\n} from 'src/utils/inventoryUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n Event,\n Feature,\n Listing,\n ListingClient,\n ListingDetails,\n ListingGroupClient,\n ListingMetrics,\n ListingStatus,\n Marketplace,\n MarketplaceListingStatusInfo,\n QualityControlState,\n} from 'src/WebApiController';\n\nexport const LaunchBroadcastListing = ({\n forTable,\n listing,\n event,\n variant,\n iconOnlyMode,\n disabled,\n lockListingGroupFromEdits,\n}: {\n forTable: boolean;\n listing: Listing;\n event?: Event | null;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n disabled?: boolean;\n lockListingGroupFromEdits?: (lock: boolean) => void;\n}) => {\n const [isLoading, setIsLoading] = useState(false);\n const { showErrorDialog, trackError } = useErrorBoundaryContext();\n const { posEntity, updateActivePosEntityInfo } =\n useActivePosEntityContext();\n\n const { activeAccountWebClientConfig } = useAppContext();\n const {\n updateItemInEvent,\n eventsExpansion: { refreshExpandedListItems },\n eventsTransformed,\n } = useCatalogDataContext();\n const { refreshMetrics } = useCatalogMetricsContext();\n\n const hasIgnoreDupFeature = useUserHasFeature(Feature.IgnoreDuplicate);\n const isDuplicate =\n !!listing?.dupListingId && (!hasIgnoreDupFeature || !listing?.ignoreDup);\n\n const isNotListed =\n listing.status !== ListingStatus.Listed &&\n listing.status !== ListingStatus.ListingPending;\n\n useEffect(() => {\n // We're only polling in this for the table, because the modal has the MarketplaceBroadcastSection polling already\n if (forTable) {\n // If we have any Marketplace listing pending status - we need to poll to get the latest status\n const statusChecking = setInterval(async () => {\n const needChecking =\n listing.status === ListingStatus.ListingPending ||\n listing.status === ListingStatus.DelistingPending;\n\n if (\n needChecking &&\n !isLoading &&\n activeAccountWebClientConfig.activeAccountId\n ) {\n await tryInvokeApi(\n async () => {\n setIsLoading(true);\n\n const client = new ListingClient(activeAccountWebClientConfig);\n\n const newListing = await client.getListingStatusByListingId(\n listing.id\n );\n\n if (newListing) {\n // We we get back a listing from server, it may or may not have finished the job\n // So we just have to assume the status is flowing in one direct only, ie, if we set something to pending,\n // we expect it to either finish or failed (but not reversed)\n let newStatus: ListingStatus | undefined = undefined;\n if (listing.status === ListingStatus.DelistingPending) {\n // If we are delisting-pending, set if the new status is either Delisted or DelistingFailed\n if (\n newListing.status === ListingStatus.Disabled ||\n newListing.status === ListingStatus.Delisted ||\n newListing.status === ListingStatus.DelistingFailed\n ) {\n newStatus = newListing.status;\n }\n } else if (listing.status === ListingStatus.ListingPending) {\n // If we are listing-pending, set if the new status is either Listed or ListedFailed\n if (\n newListing.status === ListingStatus.Disabled ||\n newListing.status === ListingStatus.Listed ||\n newListing.status === ListingStatus.ListingFailed\n ) {\n newStatus = newListing.status;\n }\n }\n\n let updatedListing = newListing as ListingDetails;\n\n const newMkpListings = newListing.mkpListings.reduce(\n (r, c) => {\n r[c.mkp] = c;\n return r;\n },\n {} as Record\n );\n\n updatedListing = {\n ...(posEntity ?? listing),\n ...newListing,\n // for marketplaces, we also need to merge since the MarketplaceListingStatusInfo is just a subset of the MarketplaceListing\n mkpListings: (posEntity ?? listing).mkpListings?.map(\n (mkp) => ({\n ...mkp,\n ...(newMkpListings[mkp.mkp] ?? {}),\n })\n ),\n } as ListingDetails;\n\n // Only if we do get status changes shall we try to actually update the active-item\n // provider with the latest states, or else the toggle will jump back and forth due\n // to the useEffect earlier (since we modified the active listing)\n if (newStatus) {\n // Only stop running this if all the status is no longer pending\n clearInterval(statusChecking);\n\n refreshMetrics?.();\n updateItemInEvent(\n updatedListing,\n ActionOutboxEntityType.Listing\n );\n if (posEntity && updatedListing.id === posEntity.id) {\n updateActivePosEntityInfo({\n posEntity: updatedListing,\n posEntityId: updatedListing!.id,\n posEntityDisplayId: updatedListing!.idOnMkp,\n });\n }\n }\n }\n },\n (error) => {\n // Because this is a background process - we don't want to show error dialog\n trackError(\n 'LaunchBroadcastListing.getListingStatusByListingId',\n error,\n {\n listingId: listing.id,\n }\n );\n },\n () => setIsLoading(false)\n );\n }\n }, 2000 /* 2 sec */);\n\n return () => clearInterval(statusChecking);\n }\n }, [\n activeAccountWebClientConfig,\n listing,\n listing.id,\n listing.idOnMkp,\n refreshMetrics,\n trackError,\n updateItemInEvent,\n forTable,\n posEntity,\n updateActivePosEntityInfo,\n isLoading,\n ]);\n\n const onBroadcastClick = useCallback(async () => {\n setIsLoading(true);\n\n // Update the intention so the UI is changed immediately to the pending state\n const newStatus = isNotListed\n ? ListingStatus.ListingPending\n : ListingStatus.DelistingPending;\n\n if (forTable) {\n if (listing.ltGrpId) {\n listing.ltGrpActive = newStatus === ListingStatus.ListingPending;\n\n const listingGroup = getListingGroupForListing(\n event?.viagId,\n listing.ltGrpId,\n eventsTransformed\n );\n\n if (listingGroup) {\n listingGroup.isLockedFromEdits = true;\n\n updateItemInEvent(listingGroup, ActionOutboxEntityType.Listing);\n }\n }\n\n updateItemInEvent(\n { ...listing, status: newStatus },\n ActionOutboxEntityType.Listing\n );\n } else {\n updateActivePosEntityInfo({\n posEntity: {\n ...posEntity!,\n status: newStatus,\n mkpListings:\n posEntity!.mkpListings?.map((ml) => ({\n ...ml,\n status:\n isNotListed && !(ml.isEnabled ?? true) ? ml.status : newStatus,\n })) ?? null,\n },\n posEntityId: posEntity!.id,\n posEntityDisplayId: posEntity!.idOnMkp,\n });\n }\n\n await tryInvokeApi(\n async () => {\n const client = new ListingClient(activeAccountWebClientConfig);\n\n let result = false;\n if (isNotListed) {\n result = await client.createMarketplaceListings(listing.id, []);\n } else {\n if (listing.ltGrpId) {\n // if this is part of the group, reduce active listing count of the group first\n await new ListingGroupClient(\n activeAccountWebClientConfig\n ).setListingActiveInGroup(listing.ltGrpId, listing.id, false);\n }\n\n result = await client.deleteMarketplaceListings(listing.id, []);\n }\n\n await refreshExpandedListItems();\n return result;\n },\n (error) => {\n showErrorDialog(\n isNotListed\n ? 'ListingClient.createMarketplaceListings'\n : 'ListingClient.deleteMarketplaceListings',\n error,\n {\n trackErrorData: {\n listingId: listing.id,\n idOnMkp: listing.idOnMkp,\n },\n }\n );\n },\n () => {\n setIsLoading(false);\n if (listing.ltGrpId) {\n lockListingGroupFromEdits?.(false);\n }\n }\n );\n }, [\n isNotListed,\n forTable,\n listing,\n updateItemInEvent,\n event?.viagId,\n eventsTransformed,\n updateActivePosEntityInfo,\n posEntity,\n activeAccountWebClientConfig,\n refreshExpandedListItems,\n showErrorDialog,\n lockListingGroupFromEdits,\n ]);\n\n const { iconComponent: ListingBroadcastIcon, contentId } =\n getListingBroadcastIcon(\n listing.status,\n listing.qcState,\n false,\n true,\n listing.isUndeliv,\n listing.brdcstStatus,\n listing.pendProofState\n );\n\n if (\n listing.qcState === QualityControlState.Pending &&\n listing.status !== ListingStatus.Listed\n ) {\n return iconOnlyMode ? (\n \n }\n titleContentId={ContentId.PendingQC}\n />\n ) : null;\n }\n\n if (isDuplicate) {\n return iconOnlyMode ? (\n }\n titleContentId={ContentId.DuplicatedListing}\n />\n ) : null;\n }\n\n return (\n \n ) : (\n \n )\n }\n variant={variant}\n iconOnlyMode={iconOnlyMode}\n />\n );\n};\n","import { useMemo } from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { DetailGroup, DetailSection, SectionContent } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { MARKET_PLACE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { Marketplace, MarketplaceSaleInput } from 'src/WebApiController';\n\ntype MarketplaceSaleInputBuyer = Pick;\n\nexport const MarketplaceSection = ({ disabled }: { disabled?: boolean }) => {\n const { loginContext } = useAppContext();\n const requiredMsg = useContent(ContentId.Required);\n\n const {\n formState: { errors },\n control,\n } = useFormContext();\n\n const marketplaceOptionsContent = useMemo(\n () =>\n (\n loginContext?.user?.activeAccount?.marketplaceSettings\n ?.filter((m) => m.isSyncHandledByProcessor)\n .map((m) => m.mkp) ?? []\n ).reduce(\n (cur, m) => {\n cur[m] = MARKET_PLACE_TO_CID[m];\n return cur;\n },\n {} as Record\n ),\n [loginContext?.user?.activeAccount?.marketplaceSettings]\n );\n\n return (\n }>\n \n \n (\n }\n errors={errors.marketplace?.message}\n >\n \n \n )}\n />\n \n \n \n );\n};\n","import { ListingDetails } from 'src/WebApiController';\n\nimport { BuyerSection } from '../ManagedMarketplaceSale/components/BuyerSection';\nimport { MarketplaceSaleInfoSection } from '../ManagedMarketplaceSale/components/MarketplaceSaleInfoSection';\nimport { TicketSection } from '../ManagedMarketplaceSale/components/TicketSection';\nimport { ModalBodyDataContainer } from '../Modal/Modal.styled';\nimport { MarketplaceSection } from './components/MarketplaceSection';\n\nexport const MarketplaceSaleBody = ({\n listing,\n disabled,\n}: {\n listing?: ListingDetails;\n disabled?: boolean;\n}) => {\n return (\n \n \n \n \n \n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport {\n ComponentProps,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useNavigate } from 'react-router-dom';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport {\n getMarketplaceSaleInputFromListing,\n getSaleDetailsRelativeUrl,\n} from 'src/utils/saleUtils';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n ApiException,\n Event,\n ListingDetails,\n MarketplaceSaleInput,\n SaleClient,\n} from 'src/WebApiController';\n\nimport { CancellableFormFooter } from '../common';\nimport { CancellableFormHeader } from '../common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from '../common/EventEntityHeader';\nimport { modalDetails } from '../common/Modals.css';\nimport { Summary } from '../common/Summary';\nimport { ModalProps } from '../Modal';\nimport {\n ModalBody,\n ModalBodyHeaderContainer,\n ModalFooter,\n} from '../Modal/Modal.styled';\nimport { MarketplaceSaleBody } from './MarketplaceSaleBody';\n\ntype MarketplaceSaleProps = {\n cancelTo?: ModalProps;\n};\n\nexport const MarketplaceSale = ({ cancelTo }: MarketplaceSaleProps) => {\n const { posEntity, event } =\n useActivePosEntityContext();\n const listing =\n posEntity?.entityType === ActionOutboxEntityType.Listing\n ? (posEntity as ListingDetails)\n : undefined;\n\n const methods = useForm({\n defaultValues:\n listing?.tickets?.length && event\n ? getMarketplaceSaleInputFromListing(listing, event)\n : undefined,\n });\n\n useEffect(() => {\n if (\n methods.formState.defaultValues === undefined &&\n listing?.tickets?.length &&\n event\n ) {\n methods.reset(getMarketplaceSaleInputFromListing(listing, event));\n }\n }, [methods, event, listing]);\n\n return (\n \n \n \n );\n};\n\nexport const SaleContent = ({\n listing,\n event,\n cancelTo,\n formState,\n handleSubmit,\n watch,\n getValues,\n setError,\n}: Omit<\n ComponentProps>,\n 'children'\n> &\n MarketplaceSaleProps & {\n listing?: ListingDetails;\n event?: Event | null;\n }) => {\n const { showErrorDialog, genericError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { setModal, closeModal } = useContext(ModalContext);\n\n const [isLoading, setIsLoading] = useState(false);\n const navigate = useNavigate();\n\n const onSubmit = useCallback(\n async (saleFormValue: MarketplaceSaleInput) => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const client = new SaleClient(activeAccountWebClientConfig);\n\n const r = await client.createMarketplaceSale(saleFormValue);\n\n if (isSuccess(r)) {\n if (r.entityId) {\n navigate(getSaleDetailsRelativeUrl(r.entityId));\n }\n if (cancelTo) {\n setModal(cancelTo);\n } else {\n closeModal(true);\n }\n } else {\n showErrorDialog(\n 'SaleClient.createMarketplaceSale',\n {\n message: r.message ?? genericError,\n status: r.status!,\n } as ApiException,\n {\n trackErrorData: saleFormValue,\n }\n );\n }\n },\n (error) => {\n showErrorDialog('SaleClient.createMarketplaceSale', error, {\n trackErrorData: saleFormValue,\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n cancelTo,\n closeModal,\n genericError,\n navigate,\n setModal,\n showErrorDialog,\n ]\n );\n\n const requiredMsg = useContent(ContentId.Required);\n const inhandDateMustBeforeEventDate = useContent(\n ContentId.InHandDateMustBeBeforeEventDate\n );\n\n const onSubmitHandler = useCallback(() => {\n const formValues = getValues();\n if (isEqual(formValues, formState.defaultValues)) return;\n\n if (!formValues.saleDate) {\n setError('saleDate', { message: requiredMsg }, { shouldFocus: true });\n }\n\n if (!formValues.totalNetProceeds?.value) {\n formValues.totalNetProceeds = posChangedField(0);\n }\n\n if (!formValues.inHandDate?.value) {\n setError('inHandDate', { message: requiredMsg }, { shouldFocus: true });\n } else if (\n new Date(formValues.inHandDate.value) >= new Date(event!.dates.start!)\n ) {\n setError(\n 'inHandDate',\n { message: inhandDateMustBeforeEventDate },\n { shouldFocus: true }\n );\n }\n if ((formValues.quantitySold?.value ?? 0) <= 0) {\n setError('quantitySold', { message: requiredMsg }, { shouldFocus: true });\n }\n\n if (listing?.tickets?.find((t) => !!t.seat)) {\n // If the listing tickets has seats - so better the sale\n if (!formValues.seatFrom?.value || !formValues.seatTo?.value) {\n setError('seatFrom', { message: requiredMsg }, { shouldFocus: true });\n }\n }\n\n handleSubmit(onSubmit)();\n }, [\n getValues,\n formState.defaultValues,\n event,\n listing?.tickets,\n handleSubmit,\n onSubmit,\n setError,\n requiredMsg,\n inhandDateMustBeforeEventDate,\n ]);\n\n const formValues = watch();\n\n const formHasChanges = useMemo(() => {\n return !isEqual(formValues, formState.defaultValues);\n }, [formState.defaultValues, formValues]);\n\n return (\n <>\n \n \n \n \n }\n />\n \n\n \n
    \n {event && listing && (\n \n \n \n )}\n {!listing ? (\n \n ) : (\n \n )}\n
    \n
    \n\n \n \n \n \n \n \n );\n};\n","import { ComponentProps, useCallback, useContext } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { vars } from 'src/core/themes';\nimport { MarketplaceSale } from 'src/modals/MarketplaceSale/MarketplaceSale';\nimport { MoneyIcon } from 'src/svgs';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n ListingDetailDataField,\n ListingDetails,\n} from 'src/WebApiController';\n\nexport const LaunchCreateMarketplaceSale = ({\n listingId,\n marketplaceListingId,\n cancelTo,\n ...buttonProps\n}: Omit<\n ComponentProps,\n 'onClick' | 'textContentId' | 'icon' | 'iconProps'\n> &\n Omit, 'event' | 'venue'> & {\n listingId: number;\n marketplaceListingId?: string | null;\n }) => {\n const { setModal } = useContext(ModalContext);\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const createOfflineSale = useCallback(() => {\n setModal({\n children: ,\n clickOutsideToClose: true,\n size: 'slide-in',\n deepLinkValue: listingId,\n trackViewEntityType: ActionOutboxEntityType.Listing,\n });\n }, [setModal, cancelTo, listingId]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setActivePosEntity(listingId, marketplaceListingId, true, [\n ListingDetailDataField.Basic,\n ListingDetailDataField.Tickets,\n ]);\n createOfflineSale();\n },\n [createOfflineSale, listingId, marketplaceListingId, setActivePosEntity]\n );\n\n return (\n }\n />\n );\n};\n","import { ComponentProps, useCallback, useContext } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { vars } from 'src/core/themes';\nimport { ManagedMarketplaceSale } from 'src/modals/ManagedMarketplaceSale';\nimport { MoneyIcon } from 'src/svgs';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n ListingDetailDataField,\n ListingDetails,\n} from 'src/WebApiController';\n\nexport const LaunchCreateOfflineSale = ({\n listingId,\n marketplaceListingId,\n cancelTo,\n ...buttonProps\n}: Omit<\n ComponentProps,\n 'onClick' | 'textContentId' | 'icon' | 'iconProps'\n> &\n Omit, 'event' | 'venue'> & {\n listingId: number;\n marketplaceListingId?: string | null;\n }) => {\n const { setModal } = useContext(ModalContext);\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const createOfflineSale = useCallback(() => {\n setModal({\n children: ,\n clickOutsideToClose: true,\n size: 'slide-in',\n deepLinkValue: listingId,\n trackViewEntityType: ActionOutboxEntityType.Listing,\n });\n }, [setModal, cancelTo, listingId]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setActivePosEntity(listingId, marketplaceListingId, true, [\n ListingDetailDataField.Basic,\n ListingDetailDataField.Tickets,\n ]);\n createOfflineSale();\n },\n [createOfflineSale, listingId, marketplaceListingId, setActivePosEntity]\n );\n\n return (\n }\n />\n );\n};\n","import { ComponentProps, useCallback, useState } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { vars } from 'src/core/themes';\nimport { ButtonProps } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { SplitListingModal } from 'src/modals/SplitListing';\nimport { DownloadIcon, ProcessingIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { downloadFileFromBlob } from 'src/utils/fileUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { ListingClient } from 'src/WebApiController';\n\nexport const LaunchDownloadUserDocuments = ({\n listingId,\n variant,\n iconOnlyMode,\n disabled,\n ...buttonProps\n}: {\n listingId: number;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n disabled?: boolean;\n} & ComponentProps) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const onDownload = useCallback(async () => {\n setIsLoading(true);\n return await tryInvokeApi(\n async () => {\n const result = await new ListingClient(\n activeAccountWebClientConfig\n ).downloadMergedUserDocumentsPdf(listingId);\n if (result.data) {\n downloadFileFromBlob(result.fileName ?? 'tickets.pdf', result.data);\n }\n },\n (error) => {\n showErrorDialog('ListingClient.downloadMergedUserDocumentsPdf', error);\n },\n () => setIsLoading(false)\n );\n }, [activeAccountWebClientConfig, listingId, showErrorDialog]);\n\n const onClickHandler = useCallback(\n (e: React.MouseEvent) => {\n onDownload();\n },\n [onDownload]\n );\n\n const iconFill =\n iconOnlyMode || (variant && variant !== 'regular')\n ? vars.color.textBrand\n : vars.color.textInverted;\n\n return (\n \n \n \n ) : (\n \n )\n }\n />\n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const MainLabel = styled.div`\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('title4')};\n margin-bottom: ${() => vars.spacing.sm};\n`;\n\nexport const SplitListQuickOptionsContainer = styled.div`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: ${() => vars.spacing.lg};\n & > div {\n flex: 1;\n display: flex;\n gap: ${() => vars.spacing.xxs};\n align-items: center;\n }\n`;\nexport const SplitListingTableContainer = styled.table`\n border-collapse: collapse;\n margin-top: ${() => vars.spacing.lg};\n width: 100%;\n max-width: 690px;\n border-radius: ${() => vars.spacing.xxs};\n border: 1px solid ${(props) => props.theme.colors.borderPrimary};\n table-layout: fixed;\n\n thead {\n background-color: ${(props) => props.theme.colors.backgroundPrimary};\n\n .header {\n ${(props) => props.theme.typography.getStyles('body2', 'regular')}\n color: ${(props) => props.theme.colors.textPrimary};\n background-color: ${(props) => props.theme.colors.backgroundSecondary};\n }\n }\n\n tr {\n &.even {\n background-color: ${(props) => props.theme.colors.backgroundSecondary};\n }\n }\n\n td,\n th {\n border: 1px solid transparent;\n background-clip: padding-box;\n vertical-align: middle;\n padding: ${() => `${vars.spacing.xxs} ${vars.spacing.sm}`};\n }\n\n tr > td + td,\n tr > th + th {\n border-left-width: ${() => vars.spacing.m};\n }\n\n tr + tr > td {\n border-top-width: 8px;\n }\n`;\n\nexport const SoldTicketContainer = styled.div`\n color: ${(props) => props.theme.colors.textDisabled};\n text-align: center;\n`;\n","import { range } from 'lodash-es';\nimport { useCallback, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { TableVirtuoso } from 'react-virtuoso';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { SimpleTable, Stack, TooltipPopover } from 'src/core/ui';\nimport { FieldError } from 'src/modals/common/Purchase';\nimport { InfoOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { SplitListingInput } from 'src/WebApiController';\n\nimport { ModalBodyDataContainer } from '../Modal/Modal.styled';\nimport * as styles from './SplitListing.css';\nimport {\n MainLabel,\n SoldTicketContainer,\n SplitListQuickOptionsContainer,\n} from './SplitListing.styled';\n\nexport const SplitListingBody = () => {\n const { watch, setValue, formState, clearErrors } =\n useFormContext();\n const numOfListings = watch('numOfListings');\n const ticketsByListingNumber = watch('ticketsByListingNumber');\n\n const [allowManualSplitSoldTickets, setAllowManualSplitSoldTickets] =\n useState(false);\n\n const regenerateListingTicketIds = (numOfListings: number) => {\n // for every ticket who's list index is greater than numOfListings, set it to numOfListings\n const newListingsTickets = ticketsByListingNumber.map((t) => {\n if (t.listingNumber > numOfListings) {\n t.listingNumber = numOfListings;\n }\n\n return t;\n });\n\n clearErrors('numOfListings');\n setValue('numOfListings', numOfListings);\n setValue('ticketsByListingNumber', newListingsTickets);\n };\n\n const assignListingNumberToTicket = useCallback(\n (newListingNum: number, ticketIndex: number) => {\n ticketsByListingNumber[ticketIndex].listingNumber = newListingNum;\n\n // To keep all the contiguous tickets in the same listing\n // All tickets above ticketIndex but listing-num greater than it has to be set to the same num\n for (let i = ticketIndex - 1; i >= 0; i--) {\n if (ticketsByListingNumber[i].listingNumber > newListingNum) {\n ticketsByListingNumber[i].listingNumber = newListingNum;\n }\n }\n // And all tickets below ti but listing-num less than it also has to be set to the same num\n for (let i = ticketIndex + 1; i < ticketsByListingNumber.length; i++) {\n if (ticketsByListingNumber[i].listingNumber < newListingNum) {\n ticketsByListingNumber[i].listingNumber = newListingNum;\n }\n }\n\n clearErrors('ticketsByListingNumber');\n setValue('ticketsByListingNumber', [...ticketsByListingNumber]);\n },\n [clearErrors, setValue, ticketsByListingNumber]\n );\n\n return (\n \n \n \n \n \n
    \n :\n
    \n {\n const newNum = parseInt(e.target.value);\n if (newNum !== numOfListings) {\n regenerateListingTicketIds(\n Math.min(Math.max(2, newNum), ticketsByListingNumber.length)\n );\n }\n }}\n />\n
    \n
    \n
    \n {' '}\n \n }\n >\n \n \n \n \n \n \n \n \n \n :\n {\n if (value.target.checked !== allowManualSplitSoldTickets) {\n setAllowManualSplitSoldTickets(value.target.checked);\n }\n }}\n />\n {formState.errors.numOfListings?.message && (\n {formState.errors.numOfListings?.message}\n )}\n
    \n
    \n
    \n (\n \n \n \n \n \n \n \n \n \n \n \n #\n \n \n )}\n itemContent={(ti, t) => (\n <>\n \n \n \n \n {t.ticket.seat}\n \n \n {t.ticket.unitCost?.disp}\n \n \n {t.ticket.saleId && !allowManualSplitSoldTickets ? (\n \n \n \n ) : (\n {\n if (newListingNumber) {\n const newListingNum = parseInt(newListingNumber);\n assignListingNumberToTicket(newListingNum, ti);\n }\n }}\n valueOptionsContent={range(numOfListings).reduce(\n (r, i) => {\n r[(i + 1).toString()] = (i + 1).toString();\n return r;\n },\n {} as Record\n )}\n />\n )}\n \n \n )}\n />\n
    \n
    \n );\n};\n","import { range } from 'lodash-es';\nimport {\n ComponentProps,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { ConfirmButton } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useEventItemLoadingDisplay } from 'src/hooks/useEventItemLoadingDisplay';\nimport { CancellableFormFooter } from 'src/modals/common';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport { ModalBody, ModalFooter, ModalProps } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ListingClient,\n ListingDetails,\n ListingMetrics,\n SplitListingInput,\n} from 'src/WebApiController';\n\nimport { Summary } from '../common/Summary';\nimport { ModalBodyHeaderContainer } from '../Modal/Modal.styled';\nimport { SplitListingBody } from './SplitListingBody';\n\nexport const SplitListingModal = ({ cancelTo }: { cancelTo?: ModalProps }) => {\n const { posEntity: listing } = useActivePosEntityContext();\n\n const methods = useForm({\n defaultValues: {\n sourceListingId: listing?.id,\n numOfListings: 2,\n ticketsByListingNumber: (listing?.tickets ?? []).map((t) => ({\n ticket: t,\n listingNumber: 1,\n })),\n alwaysUnbroadcastListing: false,\n useOriginalTicketGroupInfoForNewListings: false,\n },\n });\n\n useEffect(() => {\n if (\n methods.formState.defaultValues?.ticketsByListingNumber !==\n listing?.tickets?.length\n ) {\n methods.reset({\n sourceListingId: listing?.id,\n numOfListings: 2,\n ticketsByListingNumber: (listing?.tickets ?? []).map((t) => ({\n ticket: t,\n listingNumber: 1,\n })),\n alwaysUnbroadcastListing: false,\n useOriginalTicketGroupInfoForNewListings: false,\n });\n }\n }, [listing?.id, listing?.tickets, methods]);\n\n return (\n \n \n \n );\n};\n\nconst SplitListingModalContent = ({\n cancelTo,\n formState,\n handleSubmit,\n setError,\n}: {\n cancelTo?: ModalProps;\n} & Omit<\n ComponentProps>,\n 'children'\n>) => {\n const { loadingState } = useEventItemLoadingDisplay(\n FormatContentId.LoadingListingId,\n FormatContentId.SearchingForListingId,\n FormatContentId.CouldNotFindListingId\n );\n\n const { closeModal } = useContext(ModalContext);\n const { activeAccountWebClientConfig } = useAppContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { refreshMetrics } = useCatalogMetricsContext();\n\n const needToSplitToTwoOrMoreListingsError = useContent(\n ContentId.NeedToSplitToTwoOrMoreListings\n );\n const listingNumberUsedError = useContent(\n ContentId.ListingNumberUsedRequired\n );\n\n const [isLoading, setIsLoading] = useState(false);\n const { isDirty, isSubmitting } = formState;\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const onSubmit = useCallback(\n async (formData: SplitListingInput) => {\n if (formData.numOfListings < 2) {\n setError('numOfListings', {\n message: needToSplitToTwoOrMoreListingsError,\n });\n return;\n }\n\n const listingNumberMap = range(1, formData.numOfListings + 1).reduce(\n (r, i) => {\n r[i.toString()] = false;\n return r;\n },\n {} as Record\n );\n\n formData.ticketsByListingNumber.forEach((t) => {\n listingNumberMap[t.listingNumber.toString()] = true;\n });\n\n if (Object.values(listingNumberMap).includes(false)) {\n setError('ticketsByListingNumber', {\n message:\n listingNumberUsedError +\n ' ' +\n Object.keys(listingNumberMap)\n .filter((n) => !listingNumberMap[n])\n .join(', '),\n });\n return;\n }\n\n // If this is called, there are no form errors (else onSubmit is never called)\n setIsLoading(true);\n\n return await tryInvokeApi(\n async () => {\n const result = await new ListingClient(\n activeAccountWebClientConfig\n ).splitListings(formData);\n if (result) {\n await refreshExpandedListItems();\n refreshMetrics?.();\n\n // After we split - the original listing is gone - so we don't want to cancel back to it\n // so we just close the main modal\n closeModal(true);\n }\n },\n (error) => {\n showErrorDialog('ListingClient.splitListings', error, {\n trackErrorData: formData,\n });\n },\n () => setIsLoading(false)\n );\n },\n [\n activeAccountWebClientConfig,\n closeModal,\n listingNumberUsedError,\n needToSplitToTwoOrMoreListingsError,\n refreshExpandedListItems,\n refreshMetrics,\n setError,\n showErrorDialog,\n ]\n );\n\n const { event, posEntity: listing } =\n useActivePosEntityContext();\n\n if (loadingState) return loadingState;\n\n return (\n <>\n \n }\n />\n \n\n \n {isLoading ? (\n \n ) : (\n <>\n \n
    \n \n \n \n )}\n \n \n \n \n \n \n \n );\n};\n","import { ComponentProps, useCallback, useContext } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { vars } from 'src/core/themes';\nimport { ButtonProps } from 'src/core/ui';\nimport { SplitListingModal } from 'src/modals/SplitListing';\nimport { SplitIcon } from 'src/svgs/SplitIcon';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n ListingDetailDataField,\n ListingDetails,\n} from 'src/WebApiController';\n\nexport const LaunchSplitListing = ({\n listingId,\n marketplaceListingId,\n cancelTo,\n variant,\n iconOnlyMode,\n ...buttonProps\n}: {\n listingId: number;\n marketplaceListingId?: string | null;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n disabled?: boolean;\n} & ComponentProps) => {\n const { setModal } = useContext(ModalContext);\n const { setActivePosEntity } = useActivePosEntityContext();\n\n const splitListing = useCallback(() => {\n setModal({\n children: ,\n clickOutsideToClose: true,\n size: 'slide-in',\n deepLinkValue: listingId,\n trackViewEntityType: ActionOutboxEntityType.Listing,\n });\n }, [setModal, cancelTo, listingId]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setActivePosEntity(listingId, marketplaceListingId, false, [\n ListingDetailDataField.Basic,\n ListingDetailDataField.Tickets,\n ]);\n splitListing();\n },\n [setActivePosEntity, listingId, marketplaceListingId, splitListing]\n );\n\n return (\n \n }\n />\n );\n};\n","import {\n ListingDetails,\n SplitListingInput,\n TicketByListingNumber,\n} from 'src/WebApiController';\n\nexport function getSplitListingToOriginalInput(\n listing: ListingDetails | null | undefined\n): SplitListingInput | null {\n if (!listing?.tickets?.length) {\n return null;\n }\n\n const ticketsByListingNumber: TicketByListingNumber[] = [];\n\n (listing.tickets ?? []).forEach((t) => {\n if (ticketsByListingNumber.length === 0) {\n ticketsByListingNumber.push({ ticket: t, listingNumber: 1 });\n } else {\n const prev = ticketsByListingNumber[ticketsByListingNumber.length - 1];\n if (prev.ticket.tgId !== t.tgId) {\n ticketsByListingNumber.push({\n ticket: t,\n listingNumber: prev.listingNumber + 1,\n });\n } else {\n ticketsByListingNumber.push({\n ticket: t,\n listingNumber: prev.listingNumber,\n });\n }\n }\n });\n\n if (ticketsByListingNumber.length < 2) {\n return null;\n }\n\n const numOfListings =\n ticketsByListingNumber[ticketsByListingNumber.length - 1].listingNumber;\n\n return {\n sourceListingId: listing.id,\n numOfListings: numOfListings,\n ticketsByListingNumber: ticketsByListingNumber,\n alwaysUnbroadcastListing: true,\n useOriginalTicketGroupInfoForNewListings: true,\n };\n}\n","import { isEqual } from 'lodash-es';\nimport { ComponentProps, useEffect, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Button, SimpleTable, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ListingDetails, SplitListingInput } from 'src/WebApiController';\n\nimport { getSplitListingToOriginalInput } from './SplitListingToOriginal.util';\n\nexport type SplitListingToOriginalDialogProps = ComponentProps<\n typeof RSModal\n> & {\n onOkay: (splitListingInput: SplitListingInput) => Promise;\n onCancel: () => void;\n};\n\nexport function SplitListingToOriginalDialog({\n onOkay,\n onCancel,\n ...rest\n}: SplitListingToOriginalDialogProps) {\n const { posEntity: listing, isLoading: isDataLoading } =\n useActivePosEntityContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const [isLoading, setIsLoading] = useState(false);\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const [splitListingInput, setSplitListingInput] =\n useState();\n\n useEffect(() => {\n if (listing?.tickets) {\n // Only do this if there are tickets\n const newInput = getSplitListingToOriginalInput(listing);\n if (newInput && !isEqual(newInput, splitListingInput)) {\n setSplitListingInput(newInput);\n }\n }\n }, [\n activeAccountWebClientConfig,\n listing,\n showErrorDialog,\n splitListingInput,\n ]);\n\n return (\n }\n onOpened={() => {\n setSplitListingInput(undefined);\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n footer={\n <>\n {\n onCancel();\n }}\n disabled={isLoading || isDataLoading}\n >\n \n \n\n {\n setIsLoading(true);\n await onOkay(splitListingInput!);\n setIsLoading(false);\n }}\n >\n \n \n \n }\n onCancel={isLoading || isDataLoading ? undefined : onCancel}\n >\n \n {isLoading || isDataLoading || !splitListingInput ? (\n \n ) : (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {(splitListingInput?.ticketsByListingNumber ?? []).map(\n (ticketListingNumber) => {\n return (\n \n \n {ticketListingNumber.ticket.row}\n \n \n {ticketListingNumber.ticket.seat}\n \n \n {ticketListingNumber.listingNumber}\n \n \n );\n }\n )}\n \n \n \n )}\n \n \n );\n}\n","import { ComponentProps, useCallback, useContext } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { vars } from 'src/core/themes';\nimport { ButtonProps } from 'src/core/ui';\nimport { SplitListingToOriginalDialog } from 'src/dialogs/SplitListingToOriginalDialog';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { SplitListingModal } from 'src/modals/SplitListing';\nimport { SplitIcon } from 'src/svgs/SplitIcon';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n Feature,\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n SplitListingInput,\n} from 'src/WebApiController';\n\nexport const LaunchSplitListingToOriginal = ({\n listingId,\n cancelTo,\n variant,\n disabled,\n iconOnlyMode,\n ...buttonProps\n}: {\n listingId: number;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n disabled?: boolean;\n} & ComponentProps) => {\n const hasSplitListingToOriginalFeature = useUserHasFeature(\n Feature.SplitListingToOriginal\n );\n const { closeModal } = useContext(ModalContext);\n const { posEntity: listing, setActivePosEntity } =\n useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { openDialog, closeDialog } = useDialog(\n DialogId.Confirm,\n SplitListingToOriginalDialog\n );\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const splitListing = useCallback(\n async (splitListingInput: SplitListingInput) => {\n return await tryInvokeApi(\n async () => {\n const result = await new ListingClient(\n activeAccountWebClientConfig\n ).splitListings(splitListingInput!);\n\n if (result) {\n refreshExpandedListItems();\n\n // After we split - the original listing is gone - so we don't want to cancel back to it\n // so we just close the main modal\n closeModal(true);\n }\n },\n (error) => {\n showErrorDialog('ListingClient.splitListings', error);\n },\n () => {\n closeDialog();\n }\n );\n },\n [\n activeAccountWebClientConfig,\n closeDialog,\n closeModal,\n refreshExpandedListItems,\n showErrorDialog,\n ]\n );\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (!listing?.tickets?.length) {\n // If we haven't pulled tickets, pull it\n setActivePosEntity(listingId, null, false, [\n ListingDetailDataField.Basic,\n ListingDetailDataField.Tickets,\n ]);\n }\n\n openDialog({\n onOkay: async (splitListingInput) => {\n await splitListing(splitListingInput);\n closeDialog();\n },\n onCancel: () => {\n closeDialog();\n },\n });\n },\n [\n listing?.tickets?.length,\n openDialog,\n setActivePosEntity,\n listingId,\n splitListing,\n closeDialog,\n ]\n );\n\n if (!hasSplitListingToOriginalFeature) {\n return null;\n }\n\n return (\n \n }\n />\n );\n};\n","import { ComponentProps, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { Content } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { AddAdminHoldInput } from './AddAdminHoldInput';\n\nexport type AddAdminHoldDialogProps = ComponentProps & {\n isLoading?: boolean;\n onOkay: (\n adminHoldExpirationDate: Date | null,\n adminHoldNotes: string | null\n ) => void;\n onCancel: () => void;\n};\n\nexport function AddAdminHoldDialog({\n isLoading,\n onOkay,\n onCancel,\n ...rest\n}: AddAdminHoldDialogProps) {\n const [adminHoldExpirationDate, setAdminHoldExpirationDate] =\n useState(null);\n const [adminHoldNotes, setAdminHoldNotes] = useState(null);\n\n return (\n }\n onOpened={() => {\n setAdminHoldExpirationDate(null);\n setAdminHoldNotes(null);\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n footer={\n <>\n {\n onCancel();\n }}\n >\n \n \n\n {\n onOkay(adminHoldExpirationDate, adminHoldNotes);\n }}\n >\n \n \n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n );\n}\n","import { ComponentProps, useCallback, useState } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { vars } from 'src/core/themes';\nimport { ButtonProps } from 'src/core/ui';\nimport { AddAdminHoldDialog } from 'src/dialogs/AddAdminHoldDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { SplitListingModal } from 'src/modals/SplitListing';\nimport { AdminHoldIcon } from 'src/svgs/AdminHoldIcon';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SQL_MAX_DATEITME } from 'src/utils/dateTimeUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingMetrics,\n} from 'src/WebApiController';\n\nexport const LaunchUpdateAdminHold = ({\n listingId,\n isAddHold,\n variant,\n iconOnlyMode,\n ...buttonProps\n}: {\n listingId: number;\n isAddHold?: boolean;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n disabled?: boolean;\n} & ComponentProps) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { refreshMetrics } = useCatalogMetricsContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const { posEntity: listing, setActivePosEntity } =\n useActivePosEntityContext();\n\n const adminHoldDialog = useBasicDialog();\n const [isLoading, setIsLoading] = useState(false);\n\n const onAddHold = useCallback(\n async (\n adminHoldExpirationDate: Date | null,\n adminHoldNotes: string | null\n ) => {\n setIsLoading(true);\n return await tryInvokeApi(\n async () => {\n const result = await new ListingClient(\n activeAccountWebClientConfig\n ).updateListingAdminHold(\n listingId,\n (adminHoldExpirationDate ?? SQL_MAX_DATEITME).toISOString(),\n adminHoldNotes\n );\n if (result) {\n refreshExpandedListItems();\n refreshMetrics?.();\n if (listing) {\n await setActivePosEntity(listing.id, listing.idOnMkp, true, [\n ListingDetailDataField.Basic,\n ]);\n }\n }\n },\n (error) => {\n showErrorDialog('ListingClient.updateListingAdminHold', error);\n },\n () => {\n setIsLoading(false);\n adminHoldDialog.closeDialog();\n }\n );\n },\n [\n activeAccountWebClientConfig,\n adminHoldDialog,\n listing,\n listingId,\n refreshExpandedListItems,\n refreshMetrics,\n setActivePosEntity,\n showErrorDialog,\n ]\n );\n\n const onRemoveHold = useCallback(async () => {\n return await tryInvokeApi(\n async () => {\n const result = await new ListingClient(\n activeAccountWebClientConfig\n ).updateListingAdminHold(listingId, null, null);\n if (result) {\n refreshExpandedListItems();\n refreshMetrics?.();\n if (listing) {\n await setActivePosEntity(listing.id, listing.idOnMkp, true, [\n ListingDetailDataField.Basic,\n ]);\n }\n }\n },\n (error) => {\n showErrorDialog('ListingClient.updateListingAdminHold', error);\n }\n );\n }, [\n activeAccountWebClientConfig,\n listing,\n listingId,\n refreshExpandedListItems,\n refreshMetrics,\n setActivePosEntity,\n showErrorDialog,\n ]);\n\n const onClickHandler = useCallback(\n (e: React.MouseEvent) => {\n if (isAddHold) {\n e.preventDefault();\n e.stopPropagation();\n adminHoldDialog.launchDialog();\n } else {\n onRemoveHold();\n }\n },\n [adminHoldDialog, isAddHold, onRemoveHold]\n );\n\n return (\n <>\n \n }\n />\n \n \n );\n};\n","import { useCallback, useContext } from 'react';\nimport { UploadButton } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { ButtonProps } from 'src/core/ui';\nimport {\n UploadExternalIdProps,\n UploadExternalIds,\n} from 'src/modals/UploadExternalIds';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport { ListingActionType, SaleActionType } from 'src/WebApiController';\n\nexport const LaunchUploadExternalIds = ({\n entityId,\n idOnMkp,\n variant,\n iconOnlyMode,\n dropdownItemMode,\n disabled,\n action,\n ...modalProps\n}: UploadExternalIdProps & {\n entityId: number;\n idOnMkp?: string | null;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n dropdownItemMode?: boolean;\n disabled?: boolean;\n action:\n | ListingActionType.PredeliverExternalIds\n | ListingActionType.RedeliverExternalIds\n | SaleActionType.Fulfill\n | SaleActionType.Refulfill;\n}) => {\n const { setModal } = useContext(ModalContext);\n const { setActivePosEntity } =\n useActivePosEntityContext();\n\n const uploadExternalIds = useCallback(() => {\n setModal({\n children: ,\n clickOutsideToClose: true,\n size: 'slide-in',\n });\n }, [setModal, modalProps]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setActivePosEntity(entityId, idOnMkp);\n uploadExternalIds();\n },\n [setActivePosEntity, entityId, idOnMkp, uploadExternalIds]\n );\n\n if (dropdownItemMode) {\n return (\n \n \n \n );\n }\n\n return (\n \n );\n};\n","import { useCallback, useContext } from 'react';\nimport { UploadButton } from 'src/components/Buttons';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { ButtonProps } from 'src/core/ui';\nimport {\n UploadTicketUrlProps,\n UploadTicketUrls,\n} from 'src/modals/UploadTicketUrls';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EntityWithRealTickets } from 'src/utils/ticketUtils';\nimport { ListingActionType, SaleActionType } from 'src/WebApiController';\n\nexport const LaunchUploadTicketUrls = ({\n entityId,\n idOnMkp,\n variant,\n iconOnlyMode,\n dropdownItemMode,\n disabled,\n action,\n ...modalProps\n}: UploadTicketUrlProps & {\n entityId: number;\n idOnMkp?: string | null;\n variant?: ButtonProps['variant'];\n iconOnlyMode?: boolean;\n dropdownItemMode?: boolean;\n disabled?: boolean;\n action:\n | ListingActionType.PredeliverTicketUrls\n | ListingActionType.RedeliverTicketUrls\n | SaleActionType.Fulfill\n | SaleActionType.Refulfill;\n}) => {\n const { setModal } = useContext(ModalContext);\n const { setActivePosEntity } =\n useActivePosEntityContext();\n\n const uploadTicketUrls = useCallback(() => {\n setModal({\n children: ,\n clickOutsideToClose: true,\n size: 'slide-in',\n });\n }, [setModal, modalProps]);\n\n const onLaunchDialog = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n setActivePosEntity(entityId, idOnMkp);\n uploadTicketUrls();\n },\n [setActivePosEntity, entityId, idOnMkp, uploadTicketUrls]\n );\n\n if (dropdownItemMode) {\n return (\n \n \n \n );\n }\n\n return (\n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport {\n FieldValues,\n Path,\n UseFormClearErrors,\n UseFormSetValue,\n} from 'react-hook-form';\nimport {\n ButtonWithIcon,\n IconButton,\n UploadButton,\n} from 'src/components/Buttons';\nimport { AdminHoldBadge } from 'src/components/Listings/AdminHoldBadge';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { ButtonProps } from 'src/core/ui';\nimport { ListingDetailsModalConfig } from 'src/modals/ListingDetails';\nimport { LaunchBroadcastListing } from 'src/modals/ListingDetails/actions/LaunchBroadcastListing';\nimport { LaunchCreateMarketplaceSale } from 'src/modals/ListingDetails/actions/LaunchCreateMarketplaceSale';\nimport { LaunchCreateOfflineSale } from 'src/modals/ListingDetails/actions/LaunchCreateOfflineSale';\nimport { LaunchDownloadUserDocuments } from 'src/modals/ListingDetails/actions/LaunchDownloadUserDocuments';\nimport { LaunchSplitListing } from 'src/modals/ListingDetails/actions/LaunchSplitListing';\nimport { LaunchSplitListingToOriginal } from 'src/modals/ListingDetails/actions/LaunchSplitListingToOriginal';\nimport { LaunchUpdateAdminHold } from 'src/modals/ListingDetails/actions/LaunchUpdateAdminHold';\nimport { ModalProps } from 'src/modals/Modal';\nimport { LaunchUploadBarcodes } from 'src/modals/UploadBarcodes/LaunchUploadBarcodes';\nimport { LaunchUploadETickets } from 'src/modals/UploadETickets/LaunchUploadETickets';\nimport { LaunchUploadExternalIds } from 'src/modals/UploadExternalIds/LaunchUploadExternalIds';\nimport { LaunchUploadTicketUrls } from 'src/modals/UploadTicketUrls/LaunchUploadTicketUrls';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport { BroadcastIcon, UnbroadcastIcon } from 'src/svgs';\nimport { AnimatedBroadcastIcon } from 'src/svgs/AnimatedBroadcastIcon';\nimport { AnimatedUnbroadcastIcon } from 'src/svgs/AnimatedUnbroadcastIcon';\nimport { BroadcastFailedIcon } from 'src/svgs/BroadcastFailedIcon';\nimport { BroadcastWithErrorIcon } from 'src/svgs/BroadcastWithErrorIcon';\nimport { DuplicateOutlinedIcon } from 'src/svgs/DuplicateOutlinedIcon';\nimport { FullySoldIcon } from 'src/svgs/FullySoldIcon';\nimport { PendingQCIcon } from 'src/svgs/PendingQC';\nimport { PosIconProps } from 'src/svgs/SvgWrapper';\nimport { ClockIcon } from 'src/svgs/Viagogo';\nimport {\n EMPTY_SELLER_USER_ID,\n InventoryDeeplinkQueryParam,\n REACT_APP_STUBHUB_BASE_URL,\n REACT_APP_VIAGOGO_BASE_URL,\n SuspiciousPriceChangeThreshold,\n} from 'src/utils/constants/constants';\nimport {\n ActionOutboxEntityType,\n AutoPricingCompListingMode,\n AutoPricingInputs,\n AutoPricingOutlierMode,\n AutoPricingUndercutMode,\n DocumentProcessorClient,\n DocumentUploadInfo,\n Event,\n EventWithData,\n FileParameter,\n GroupType,\n Listing,\n ListingActionType,\n ListingBroadcastStatus,\n ListingClient,\n ListingDetailsUpdateInput,\n ListingGroup,\n ListingMarketplacePriceUpdateInput,\n ListingStatus,\n Marketplace,\n MarketplaceAccountSetting,\n PendingProofState,\n PosClientConfig,\n QualityControlState,\n Tag,\n TicketBarcode,\n TicketExternalId,\n TicketType,\n TicketUrl,\n UiCurrency,\n UserDocument,\n} from 'src/WebApiController';\n\nimport { ContentId } from './constants/contentId';\nimport { LISTING_STATUS_WITH_ACTION_TO_CID } from './constants/contentIdMaps';\nimport { FormatContentId } from './constants/formatContentId';\nimport { getFullUrl, getPathFromMainRoute } from './deepLinkUtils';\nimport { compareMarketplace } from './eventWithDataUtils';\nimport { roundToPrecision } from './numberFormatter';\nimport { tagHasChanges } from './tagUtils';\n\nexport const getListingDetailsModalConfigWithDeepLink = (\n deepLinkId?: string | number,\n doTrackView = false\n) => {\n return {\n ...ListingDetailsModalConfig,\n deepLinkValue: deepLinkId,\n trackViewEntityType: doTrackView\n ? ActionOutboxEntityType.Listing\n : undefined,\n };\n};\n\nexport const ListingCatalogQueryKey = 'CatalogClient.getCatalogForListing';\nexport const ListingCatalogMetricsQueryKey =\n 'CatalogClient.getCatalogListingMetrics';\n\nexport const getListingDetailsDeepLinkUrl = (deepLinkId?: string | number) => {\n return getFullUrl(\n MainRoute.Inventory,\n InventoryDeeplinkQueryParam,\n deepLinkId\n );\n};\n\nexport const getListingDetailsRelativeUrl = (deepLinkId?: string | number) => {\n const navigateUrl = `${getPathFromMainRoute(\n MainRoute.Inventory\n )}?${InventoryDeeplinkQueryParam}=${deepLinkId}`;\n\n return navigateUrl;\n};\n\n/**\n * Get all listing ids excluding listing groups\n * @param listings\n * @returns\n */\nexport const getFlattenedListingIds = (listings: Listing[]) => {\n return [\n ...listings.filter((n) => !n.isLtGrp).map((l) => l.id),\n ...listings\n .filter((n) => n.isLtGrp)\n .flatMap((g) =>\n (g as ListingGroup).groupItems\n .filter((gi) => !(gi as ListingGroup).groupItems)\n .map((gi) => gi.id)\n ),\n // this is the second level group\n ...listings\n .filter((n) => n.isLtGrp)\n .flatMap((g) =>\n (g as ListingGroup).groupItems\n .filter((gi) => (gi as ListingGroup).groupItems)\n .flatMap((gi) => (gi as ListingGroup).groupItems.map((gi2) => gi2.id))\n ),\n ];\n};\n\nconst getListingUploadDropdownItems = (\n listing: Listing,\n actions: ListingActionType[],\n variant?: ButtonProps['variant'],\n cancelTo?: ModalProps,\n disabled?: boolean\n) => {\n const dropdownItems = [];\n\n const barcodeAction = actions.find(\n (a) =>\n a === ListingActionType.PredeliverBarcodes ||\n a === ListingActionType.RedeliverBarcodes\n ) as\n | ListingActionType.PredeliverBarcodes\n | ListingActionType.RedeliverBarcodes\n | undefined;\n\n if (barcodeAction) {\n dropdownItems.push(\n \n new ListingClient(clientConfig).updateBarcodesForListing(\n listingId,\n barcodes\n )\n }\n dropdownItemMode={true}\n action={barcodeAction}\n entityId={listing.id}\n idOnMkp={listing.idOnMkp}\n iconOnlyMode={false}\n cancelTo={cancelTo}\n variant={variant}\n loadingContentId={FormatContentId.LoadingListingId}\n errorContentId={FormatContentId.CouldNotFindListingId}\n searchingContentId={FormatContentId.SearchingForListingId}\n />\n );\n }\n\n const ticketUrlAction = actions.find(\n (a) =>\n a === ListingActionType.PredeliverTicketUrls ||\n a === ListingActionType.RedeliverTicketUrls\n ) as\n | ListingActionType.PredeliverTicketUrls\n | ListingActionType.RedeliverTicketUrls\n | undefined;\n if (ticketUrlAction) {\n dropdownItems.push(\n \n new ListingClient(clientConfig).updateTicketUrlsForListing(\n listingId,\n ticketUrls\n )\n }\n dropdownItemMode={true}\n action={ticketUrlAction}\n entityId={listing.id}\n idOnMkp={listing.idOnMkp}\n iconOnlyMode={false}\n cancelTo={cancelTo}\n variant={variant}\n loadingContentId={FormatContentId.LoadingListingId}\n errorContentId={FormatContentId.CouldNotFindListingId}\n searchingContentId={FormatContentId.SearchingForListingId}\n />\n );\n }\n\n const externalIdAction = actions.find(\n (a) =>\n a === ListingActionType.PredeliverExternalIds ||\n a === ListingActionType.RedeliverExternalIds\n ) as\n | ListingActionType.PredeliverExternalIds\n | ListingActionType.RedeliverExternalIds\n | undefined;\n if (externalIdAction) {\n dropdownItems.push(\n \n new ListingClient(clientConfig).updateExternalIdsForListing(\n listingId,\n externalIds\n )\n }\n dropdownItemMode={true}\n action={externalIdAction}\n entityId={listing.id}\n idOnMkp={listing.idOnMkp}\n iconOnlyMode={false}\n cancelTo={cancelTo}\n variant={variant}\n loadingContentId={FormatContentId.LoadingListingId}\n errorContentId={FormatContentId.CouldNotFindListingId}\n searchingContentId={FormatContentId.SearchingForListingId}\n />\n );\n }\n\n const createEticketDropdown = (\n ticketType: TicketType.ETicket | TicketType.QRCode,\n action:\n | ListingActionType.PredeliverETickets\n | ListingActionType.RedeliverETickets\n | ListingActionType.PredeliverQRCode\n | ListingActionType.RedeliverQRCode\n ) => {\n dropdownItems.push(\n \n ticketType === TicketType.ETicket\n ? new ListingClient(clientConfig).updateETicketsForListing(\n entityId,\n etickets\n )\n : new ListingClient(clientConfig).updateMobileQRCodesForListing(\n entityId,\n etickets\n )\n }\n onUploadDocuments={(\n client: DocumentProcessorClient,\n docUploadInfo: DocumentUploadInfo,\n file: FileParameter\n ) =>\n client.uploadDocumentForListing(\n docUploadInfo.entityId,\n ActionOutboxEntityType.Listing,\n docUploadInfo.documentType,\n docUploadInfo.blobName,\n docUploadInfo.documentId,\n docUploadInfo.contentType,\n file\n )\n }\n loadingContentId={FormatContentId.LoadingListingId}\n errorContentId={FormatContentId.CouldNotFindListingId}\n searchingContentId={FormatContentId.SearchingForListingId}\n />\n );\n };\n\n const eticketAction = actions.find(\n (a) =>\n a === ListingActionType.PredeliverETickets ||\n a === ListingActionType.RedeliverETickets\n ) as\n | ListingActionType.PredeliverETickets\n | ListingActionType.RedeliverETickets\n | undefined;\n if (eticketAction) {\n createEticketDropdown(TicketType.ETicket, eticketAction);\n }\n\n const qrCodeAction = actions.find(\n (a) =>\n a === ListingActionType.PredeliverQRCode ||\n a === ListingActionType.RedeliverQRCode\n ) as\n | ListingActionType.PredeliverQRCode\n | ListingActionType.RedeliverQRCode\n | undefined;\n if (qrCodeAction) {\n createEticketDropdown(TicketType.QRCode, qrCodeAction);\n }\n\n return dropdownItems;\n};\n\nexport const getListingActionButtons = (\n forTable: boolean,\n listing: Listing,\n actions: ListingActionType[],\n event?: Event | null,\n variant?: ButtonProps['variant'],\n iconOnlyMode?: boolean,\n cancelTo?: ModalProps,\n disabled?: boolean,\n lockListingGroupFromEdits?: (lock: boolean) => void,\n onSetListingActiveInGroup?: () => void\n) => {\n const actionElements: JSX.Element[] = [];\n\n const dropdownItems = [];\n\n if (iconOnlyMode) {\n if (!actions.includes(ListingActionType.DownloadUserDocuments)) {\n dropdownItems.push(\n ...getListingUploadDropdownItems(\n listing,\n actions,\n variant,\n cancelTo,\n disabled\n )\n );\n }\n const hasNoBroadcastActions =\n !listing.actions.includes(ListingActionType.Broadcast) &&\n !listing.actions.includes(ListingActionType.Unbroadcast);\n\n if (listing.isAdminHold) {\n actionElements.push(\n \n }\n />\n );\n } else if (hasNoBroadcastActions && !listing.isAdminHold) {\n const { iconComponent: ListingBroadcastIcon, contentId } =\n getListingBroadcastIcon(\n listing.status,\n listing.qcState,\n !!listing.dupListingId,\n !!listing.ignoreDup,\n listing.isUndeliv,\n listing.brdcstStatus,\n listing.pendProofState\n );\n actionElements.push(\n }\n titleContentId={contentId}\n />\n );\n } else if (\n listing.ltGrpId &&\n !listing.ltGrpActive &&\n !listing.isAdminHold\n ) {\n actionElements.push(\n \n }\n disabled={disabled}\n onClick={onSetListingActiveInGroup}\n titleContentId={ContentId.SetActiveInGroup}\n />\n );\n }\n }\n\n actions.forEach((action) => {\n switch (action) {\n case ListingActionType.FullySoldNoAction:\n actionElements.push(\n }\n variant={variant}\n iconOnlyMode={iconOnlyMode}\n />\n );\n break;\n case ListingActionType.Broadcast:\n case ListingActionType.Unbroadcast:\n actionElements.push(\n \n );\n break;\n case ListingActionType.Split:\n actionElements.push(\n \n );\n break;\n case ListingActionType.SplitToOriginal:\n actionElements.push(\n \n );\n break;\n\n case ListingActionType.AddOfflineSale:\n actionElements.push(\n \n );\n break;\n\n case ListingActionType.AddMarketplaceSale:\n actionElements.push(\n \n );\n break;\n case ListingActionType.PredeliverBarcodes:\n case ListingActionType.RedeliverBarcodes:\n // Show a dropdown to select different upload types if iconOnlyMode is true\n if (\n iconOnlyMode &&\n (dropdownItems.length > 1 ||\n actions.includes(ListingActionType.DownloadUserDocuments))\n )\n break;\n actionElements.push(\n \n new ListingClient(clientConfig).updateBarcodesForListing(\n listingId,\n barcodes\n )\n }\n action={action}\n entityId={listing.id}\n idOnMkp={listing.idOnMkp}\n iconOnlyMode={iconOnlyMode}\n cancelTo={cancelTo}\n variant={variant}\n loadingContentId={FormatContentId.LoadingListingId}\n errorContentId={FormatContentId.CouldNotFindListingId}\n searchingContentId={FormatContentId.SearchingForListingId}\n />\n );\n break;\n case ListingActionType.PredeliverTicketUrls:\n case ListingActionType.RedeliverTicketUrls:\n // Show a dropdown to select different upload types if iconOnlyMode is true\n if (\n iconOnlyMode &&\n (dropdownItems.length > 1 ||\n actions.includes(ListingActionType.DownloadUserDocuments))\n )\n break;\n actionElements.push(\n \n new ListingClient(clientConfig).updateTicketUrlsForListing(\n listingId,\n ticketUrls\n )\n }\n action={action}\n entityId={listing.id}\n idOnMkp={listing.idOnMkp}\n iconOnlyMode={iconOnlyMode}\n cancelTo={cancelTo}\n variant={variant}\n loadingContentId={FormatContentId.LoadingListingId}\n errorContentId={FormatContentId.CouldNotFindListingId}\n searchingContentId={FormatContentId.SearchingForListingId}\n />\n );\n break;\n case ListingActionType.PredeliverExternalIds:\n case ListingActionType.RedeliverExternalIds:\n // Show a dropdown to select different upload types if iconOnlyMode is true\n if (\n iconOnlyMode &&\n (dropdownItems.length > 1 ||\n actions.includes(ListingActionType.DownloadUserDocuments))\n )\n break;\n actionElements.push(\n \n new ListingClient(clientConfig).updateExternalIdsForListing(\n listingId,\n externalIds\n )\n }\n action={action}\n entityId={listing.id}\n idOnMkp={listing.idOnMkp}\n iconOnlyMode={iconOnlyMode}\n cancelTo={cancelTo}\n variant={variant}\n loadingContentId={FormatContentId.LoadingListingId}\n errorContentId={FormatContentId.CouldNotFindListingId}\n searchingContentId={FormatContentId.SearchingForListingId}\n />\n );\n break;\n case ListingActionType.PredeliverETickets:\n case ListingActionType.RedeliverETickets:\n case ListingActionType.PredeliverQRCode:\n case ListingActionType.RedeliverQRCode: {\n // Show a dropdown to select different upload types if iconOnlyMode is true\n if (\n iconOnlyMode &&\n (dropdownItems.length > 1 ||\n actions.includes(ListingActionType.DownloadUserDocuments))\n )\n break;\n const ticketType =\n action === ListingActionType.PredeliverETickets ||\n action === ListingActionType.RedeliverETickets\n ? TicketType.ETicket\n : TicketType.QRCode;\n\n actionElements.push(\n \n ticketType === TicketType.ETicket\n ? new ListingClient(clientConfig).updateETicketsForListing(\n entityId,\n etickets\n )\n : new ListingClient(clientConfig).updateMobileQRCodesForListing(\n entityId,\n etickets\n )\n }\n onUploadDocuments={(\n client: DocumentProcessorClient,\n docUploadInfo: DocumentUploadInfo,\n file: FileParameter\n ) =>\n client.uploadDocumentForListing(\n docUploadInfo.entityId,\n ActionOutboxEntityType.Listing,\n docUploadInfo.documentType,\n docUploadInfo.blobName,\n docUploadInfo.documentId,\n docUploadInfo.contentType,\n file\n )\n }\n loadingContentId={FormatContentId.LoadingListingId}\n errorContentId={FormatContentId.CouldNotFindListingId}\n searchingContentId={FormatContentId.SearchingForListingId}\n />\n );\n break;\n }\n\n case ListingActionType.AddAdminHold:\n case ListingActionType.RemoveAdminHold:\n actionElements.push(\n \n );\n break;\n case ListingActionType.DownloadUserDocuments:\n actionElements.unshift(\n \n );\n break;\n default:\n break;\n }\n });\n\n if (dropdownItems.length > 1) {\n // Insert upload actions always at the beginning\n actionElements.unshift(\n \n }\n align=\"end\"\n triggerProps={{ disabled: disabled }}\n >\n {dropdownItems}\n \n );\n }\n\n if (actionElements.length) {\n return actionElements;\n } else {\n return null;\n }\n};\n\ntype IconComponent = (props: Omit) => JSX.Element;\n\nconst BROADCAST_STATE_TO_ICON: Partial> = {\n [ListingStatus.FullySold]: FullySoldIcon,\n [ListingStatus.Listed]: BroadcastIcon,\n [ListingStatus.ListingPending]: AnimatedBroadcastIcon,\n [ListingStatus.DelistingPending]: AnimatedUnbroadcastIcon,\n [ListingStatus.ListingFailed]: BroadcastFailedIcon,\n [ListingStatus.DelistingFailed]: BroadcastWithErrorIcon,\n [ListingStatus.Delisted]: UnbroadcastIcon,\n};\nconst PENDING_QC_ICON = {\n iconComponent: PendingQCIcon,\n contentId: ContentId.PendingQC,\n};\n\n/**\n * Gets the applicable icon for a listing status (and optionally a QC state), along with its contentId\n * @param status\n * @param qcState\n * @returns\n */\nexport const getListingBroadcastIcon = (\n status?: ListingStatus,\n qcState?: QualityControlState | null,\n isDuplicate?: boolean,\n ignoreDuplicate?: boolean,\n isUndeliverable?: boolean | null,\n broadcastStatus?: ListingBroadcastStatus | null,\n pendingProofState?: PendingProofState | null\n): {\n iconComponent: IconComponent;\n contentId?: ContentId;\n} => {\n const isPendingQc = qcState === QualityControlState.Pending;\n const isListed = status === ListingStatus.Listed;\n\n if (isDuplicate && !ignoreDuplicate) {\n return {\n iconComponent: DuplicateOutlinedIcon,\n contentId: ContentId.DuplicatedListing,\n };\n }\n\n if (!isListed && isPendingQc) return PENDING_QC_ICON;\n\n if (!status) {\n return {\n iconComponent: UnbroadcastIcon,\n contentId: ContentId.Unbroadcasted,\n };\n }\n\n if (broadcastStatus === ListingBroadcastStatus.BroadcastWithError) {\n return {\n iconComponent: BroadcastWithErrorIcon,\n contentId: ContentId.SyncFailedClickToDelist,\n };\n }\n\n if (broadcastStatus === ListingBroadcastStatus.UnbroadcastWithError) {\n return {\n iconComponent: UnbroadcastIcon,\n contentId: ContentId.DelistedClickToRelist,\n };\n }\n\n const contentId = LISTING_STATUS_WITH_ACTION_TO_CID[status];\n const iconComponent = BROADCAST_STATE_TO_ICON[status] || UnbroadcastIcon;\n\n if (status === ListingStatus.Listed && isUndeliverable) {\n return {\n iconComponent: BroadcastWithErrorIcon,\n contentId: ContentId.Undeliverable,\n };\n }\n\n if (\n status === ListingStatus.Listed &&\n pendingProofState === PendingProofState.PendingProof\n ) {\n return {\n iconComponent: BroadcastWithErrorIcon,\n contentId,\n };\n }\n\n return { iconComponent, contentId };\n};\n\nexport const getAllInPriceFromListPrice = (\n listPrice?: number | null,\n listing?: Listing | null,\n fallbackFee?: number | null,\n uiCurrency?: UiCurrency | null\n) => {\n if (listPrice == null) {\n return listPrice;\n }\n const stubHubMarketplace = listing?.mkpListings?.find(\n (m) => m.mkp === Marketplace.StubHub\n );\n\n const fee =\n stubHubMarketplace?.sellerFee != null\n ? stubHubMarketplace.sellerFee\n : fallbackFee;\n\n const allInRatio = 1 / (1 - (fee ?? 0));\n\n return roundToPrecision(listPrice * allInRatio, uiCurrency?.dec ?? 4);\n};\n\nexport const getListPriceFromAllinPrice = (\n allInPrice?: number | null,\n listing?: Listing | null,\n fallbackFee?: number | null\n) => {\n if (allInPrice == null) {\n return allInPrice;\n }\n const stubHubMarketplace = listing?.mkpListings?.find(\n (m) => m.mkp === Marketplace.StubHub\n );\n\n const fee =\n stubHubMarketplace?.sellerFee != null\n ? stubHubMarketplace.sellerFee\n : fallbackFee;\n\n const listRatio = 1 - (fee ?? 0);\n\n return roundToPrecision(allInPrice * listRatio, 4);\n};\n\nexport const getAllInPriceFromListPriceForListing = (\n listing?: Listing | null,\n uiCurrency?: UiCurrency | null\n) => {\n return listing?.listPrice\n ? getAllInPriceFromListPrice(listing.listPrice, listing, null, uiCurrency)\n : listing?.allInPrice;\n};\n\nexport const getListingDetailsUpdateInput = (\n listing?: Listing | null,\n uiCurrency?: UiCurrency | null,\n accountMarketplaces?: MarketplaceAccountSetting[],\n accountPricingSettings?: AutoPricingInputs | null,\n groupPricingSettings?: AutoPricingInputs | null,\n isBulkEdit?: boolean,\n listingPricingSettings?: AutoPricingInputs | null,\n allowSeatScoreCompListingMode?: boolean\n) => {\n const marketplacePriceUpdates = listing?.mkpListings\n ? listing.mkpListings\n ?.filter((m) => m.mkp !== Marketplace.StubHub)\n ?.toSorted((a, b) => compareMarketplace(a.mkp, b.mkp))\n ?.map((x) => {\n const listPriceMarkup = x.markup ?? x.sellerAccountDefaultMarkup ?? 0;\n\n return {\n allInPrice: x.isPriceByMkp\n ? (x.webPrice ?? listing?.allInPrice)\n : null,\n listPrice: x.isPriceByMkp\n ? (x.netProcs ?? listing?.listPrice)\n : (listing?.listPrice ?? 0) * (1 + listPriceMarkup),\n priceByMarketplace: x.isPriceByMkp,\n marketplace: x.mkp,\n markup:\n x.markup != null ? roundToPrecision(x.markup * 100, 2) : null,\n } as ListingMarketplacePriceUpdateInput;\n })\n : accountMarketplaces\n ? accountMarketplaces\n ?.filter((m) => m.mkp !== Marketplace.StubHub)\n ?.toSorted((a, b) => compareMarketplace(a.mkp, b.mkp))\n ?.map(\n (x) =>\n ({\n allInPrice: null,\n listPrice: null,\n priceByMarketplace: false,\n marketplace: x.mkp,\n }) as ListingMarketplacePriceUpdateInput\n )\n : [];\n\n const quantityScoreOverrideJson = safeParseJson(listing?.compQtyScrAdjJson);\n\n // Listing is totally null for bulk updates\n const defaultQuantityScoreOverrideJson =\n listing == null\n ? null\n : JSON.stringify({\n ...quantityScoreOverrideJson,\n quantityFilter: null,\n });\n\n // If SectionId or RowId filters are set, make sure we alwayws set compListingOnlyForSelectedSectionsEnabled to true\n // If a user decides to disable this setting, we need to make it known that the selected sections are not being used\n const defaultCompListingOnlyForSelectedSectionsEnabled =\n !!listing?.compSectionSettings?.sectionIdFilter?.length;\n\n const defaultCurrencyCode = listing?.currency ?? uiCurrency?.code;\n\n const defaultCompListingMode = allowSeatScoreCompListingMode\n ? AutoPricingCompListingMode.QualityScore\n : AutoPricingCompListingMode.SameEvent;\n\n return {\n id: listing?.id,\n rowVersion: listing?.rowVer,\n splitType: listing?.splitType,\n hideSeatsFromMarketplace: listing?.hideSeats,\n pricerSellerUserId:\n listing == null ? EMPTY_SELLER_USER_ID : listing?.pricerId,\n currencyCode: defaultCurrencyCode,\n\n inHandDate: listing?.inHandAt,\n isNoFulfill: listing?.isNoFulfill,\n enableNativeSync: listing?.enableNativeSync,\n\n delivType: listing?.delivType,\n seatTraits: listing?.seatTraits,\n\n section: listing?.seating?.section,\n sectionId: listing?.seating?.sectionId,\n row: listing?.seating?.row,\n rowId: listing?.seating?.rowId,\n\n listPrice: listing?.listPrice,\n allInPrice: getAllInPriceFromListPriceForListing(listing, uiCurrency),\n faceValue: listing?.faceValue?.amt,\n manualMaxDisplayQuantity: listing?.manMaxDispQty ?? listing?.maxDispQty,\n\n marketplacePriceUpdates,\n\n marketplaceSeatOverrides:\n listing?.mkpListings\n ?.filter((m) => m.mkp && m.mkp !== Marketplace.Offline)\n ?.toSorted((a, b) => compareMarketplace(a.mkp, b.mkp))\n ?.map((m) => ({\n marketplace: m.mkp,\n overrideSection: m.overrideSection,\n overrideRow: m.overrideRow,\n overrideSeats: m.overrideSeats,\n overrideRowId: m.overrideRowId,\n overrideSectionId: m.overrideSectionId,\n })) ?? [],\n\n tags: listing?.tags,\n internalNotes: listing?.privNotes,\n\n netProceedsFloor: listing == null ? -1 : listing?.procsFloor,\n netProceedsCeiling: listing == null ? -1 : listing?.procsCeil,\n\n autoPricingEnabled: listing?.isAutoPrc ?? (isBulkEdit ? true : false),\n\n compListingFloor:\n listingPricingSettings?.compListingFloor ??\n listing?.compFloor ??\n groupPricingSettings?.compListingFloor ??\n accountPricingSettings?.compListingFloor ??\n 1,\n compListingCeiling:\n listingPricingSettings?.compListingCeiling ??\n listing?.compCeil ??\n groupPricingSettings?.compListingCeiling ??\n accountPricingSettings?.compListingCeiling ??\n 6,\n compListingMode:\n listingPricingSettings?.compListingMode ??\n listing?.compMode ??\n groupPricingSettings?.compListingMode ??\n accountPricingSettings?.compListingMode ??\n defaultCompListingMode,\n compListingOnlyForSameZoneEnabled:\n listingPricingSettings?.compListingOnlyForSameZoneEnabled ??\n listing?.isCompForSameZone ??\n groupPricingSettings?.compListingOnlyForSameZoneEnabled ??\n accountPricingSettings?.compListingOnlyForSameZoneEnabled ??\n !defaultCompListingOnlyForSelectedSectionsEnabled, // Default to false if we have selected sections enabled\n compListingOnlyForSelectedSectionsEnabled:\n listingPricingSettings?.compListingOnlyForSelectedSectionsEnabled ??\n listing?.isCompSelectedSections ??\n groupPricingSettings?.compListingOnlyForSelectedSectionsEnabled ??\n accountPricingSettings?.compListingOnlyForSelectedSectionsEnabled ??\n defaultCompListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory:\n listingPricingSettings?.compListingExcludeFanInventory ??\n listing?.compExclFanInv ??\n groupPricingSettings?.compListingExcludeFanInventory ??\n accountPricingSettings?.compListingExcludeFanInventory ??\n null,\n compListingExcludeDefects:\n listingPricingSettings?.compListingExcludeDefects ??\n listing?.compExclDefects ??\n groupPricingSettings?.compListingExcludeDefects ??\n accountPricingSettings?.compListingExcludeDefects ??\n null,\n compListingQuantityScoreAdjustmentEnabled:\n listingPricingSettings?.compListingQuantityScoreAdjustmentEnabled ??\n listing?.isCompQtyScrAdj ??\n groupPricingSettings?.compListingQuantityScoreAdjustmentEnabled ??\n accountPricingSettings?.compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson:\n listingPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson ??\n listing?.compQtyScrAdjJson ??\n groupPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson ??\n defaultQuantityScoreOverrideJson,\n compListingSelectedSectionSettings:\n listingPricingSettings?.compListingSelectedSectionSettings ??\n listing?.compSectionSettings ??\n groupPricingSettings?.compListingSelectedSectionSettings ??\n accountPricingSettings?.compListingSelectedSectionSettings,\n compListingQuantityFilters:\n listingPricingSettings?.compListingQuantityFilters ??\n groupPricingSettings?.compListingQuantityFilters ??\n accountPricingSettings?.compListingQuantityFilters,\n undercutMode:\n listingPricingSettings?.undercutMode ??\n listing?.undMode ??\n groupPricingSettings?.undercutMode ??\n accountPricingSettings?.undercutMode ??\n AutoPricingUndercutMode.Simple,\n undercutAbsoluteAmount:\n listingPricingSettings?.undercutAbsoluteAmount ??\n listing?.undAbsAmt ??\n groupPricingSettings?.undercutAbsoluteAmount ??\n accountPricingSettings?.undercutAbsoluteAmount ??\n 0.01,\n undercutRelativeAmount:\n listingPricingSettings?.undercutRelativeAmount ??\n listing?.undRelAmt ??\n groupPricingSettings?.undercutRelativeAmount ??\n accountPricingSettings?.undercutRelativeAmount ??\n 0,\n circuitBreakerMaxDiscountVelocityPercent:\n listingPricingSettings?.circuitBreakerMaxDiscountVelocityPercent ??\n listing?.cirBrMaxDiscVelocPercent ??\n groupPricingSettings?.circuitBreakerMaxDiscountVelocityPercent ??\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityPercent ??\n 0.8,\n circuitBreakerMaxDiscountVelocityTicksInHours:\n listingPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours ??\n listing?.cirBrMaxDiscVelocTicksInHrs ??\n groupPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours ??\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours ??\n 6,\n circuitBreakerMinCompListingCount:\n listingPricingSettings?.circuitBreakerMinCompListingCount ??\n listing?.cirBrMinCompCount ??\n groupPricingSettings?.circuitBreakerMinCompListingCount ??\n accountPricingSettings?.circuitBreakerMinCompListingCount ??\n 10,\n circuitBreakerRelativeCeiling:\n listingPricingSettings?.circuitBreakerRelativeCeiling ??\n listing?.cirBrRelCeil ??\n groupPricingSettings?.circuitBreakerRelativeCeiling ??\n accountPricingSettings?.circuitBreakerRelativeCeiling ??\n 100,\n circuitBreakerRelativeFloor:\n listingPricingSettings?.circuitBreakerRelativeFloor ??\n listing?.cirBrRelFloor ??\n groupPricingSettings?.circuitBreakerRelativeFloor ??\n accountPricingSettings?.circuitBreakerRelativeFloor ??\n 1,\n outlierMode:\n listingPricingSettings?.outlierMode ??\n listing?.outMode ??\n groupPricingSettings?.outlierMode ??\n accountPricingSettings?.outlierMode ??\n AutoPricingOutlierMode.StandardDeviations,\n outlierStandardDeviations:\n listingPricingSettings?.outlierStandardDeviations ??\n listing?.outlStdDev ??\n groupPricingSettings?.outlierStandardDeviations ??\n accountPricingSettings?.outlierStandardDeviations ??\n 3,\n outlierKthLowestLimit:\n listingPricingSettings?.outlierKthLowestLimit ??\n listing?.outKthLowestLim ??\n groupPricingSettings?.outlierKthLowestLimit ??\n accountPricingSettings?.outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing:\n listingPricingSettings?.outlierKthLowestLimitRelativeSpacing ??\n listing?.outKthLowestLimRelSpc ??\n groupPricingSettings?.outlierKthLowestLimitRelativeSpacing ??\n accountPricingSettings?.outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing:\n listingPricingSettings?.outlierKthLowestLimitAbsoluteSpacing ??\n listing?.outKthLowestLimAbsSpc ??\n groupPricingSettings?.outlierKthLowestLimitAbsoluteSpacing ??\n accountPricingSettings?.outlierKthLowestLimitAbsoluteSpacing,\n\n adminHoldNotes: listing?.adminHoldNotes,\n adminHoldExpirationDate: listing?.adminHoldExpiredOn,\n ticketTypeRules: listing?.tktTypeRules,\n\n // If listing id is null, we're creating the default input for bulk edit - default to skipping everything\n skipAdvancePricing: !listing?.id,\n skipAutoPricing: !listing?.id,\n skipCompListing: !listing?.id,\n skipPriceProtection: !listing?.id,\n skipUndercut: !listing?.id,\n } as ListingDetailsUpdateInput;\n};\n\nexport const isListingDetailsInputChanged = (\n input: ListingDetailsUpdateInput,\n initial?: ListingDetailsUpdateInput,\n tagsMetadata?: Tag[] | null\n) => {\n const hasChanged =\n initial?.splitType !== input.splitType ||\n initial?.hideSeatsFromMarketplace !== input.hideSeatsFromMarketplace ||\n initial?.delivType !== input.delivType ||\n !isEqual(initial?.seatTraits, input.seatTraits) ||\n initial?.isNoFulfill !== input.isNoFulfill ||\n initial?.inHandDate !== input.inHandDate ||\n initial?.allInPrice !== input.allInPrice ||\n initial?.listPrice !== input.listPrice ||\n !isEqual(\n initial?.marketplacePriceUpdates,\n input?.marketplacePriceUpdates\n ) ||\n !isEqual(\n initial?.marketplaceSeatOverrides,\n input?.marketplaceSeatOverrides\n ) ||\n initial?.pricerSellerUserId !== input.pricerSellerUserId ||\n initial?.autoPricingEnabled !== input.autoPricingEnabled ||\n initial?.netProceedsFloor !== input.netProceedsFloor ||\n initial?.netProceedsCeiling !== input.netProceedsCeiling ||\n initial?.compListingMode !== input.compListingMode ||\n initial?.compListingFloor !== input.compListingFloor ||\n initial?.compListingCeiling !== input.compListingCeiling ||\n initial?.compListingQuantityScoreAdjustmentEnabled !==\n input.compListingQuantityScoreAdjustmentEnabled ||\n initial?.compListingQuantityScoreAdjustmentOverrideJson !==\n input.compListingQuantityScoreAdjustmentOverrideJson ||\n initial?.compListingOnlyForSameZoneEnabled !==\n input.compListingOnlyForSameZoneEnabled ||\n initial?.compListingOnlyForSelectedSectionsEnabled !==\n input.compListingOnlyForSelectedSectionsEnabled ||\n initial?.compListingExcludeFanInventory !==\n input.compListingExcludeFanInventory ||\n initial?.compListingExcludeDefects !== input.compListingExcludeDefects ||\n !isEqual(\n initial?.compListingSelectedSectionSettings,\n input?.compListingSelectedSectionSettings\n ) ||\n initial?.undercutMode !== input.undercutMode ||\n initial?.undercutAbsoluteAmount !== input.undercutAbsoluteAmount ||\n initial?.undercutRelativeAmount !== input.undercutRelativeAmount ||\n initial?.circuitBreakerMaxDiscountVelocityPercent !==\n input.circuitBreakerMaxDiscountVelocityPercent ||\n initial?.circuitBreakerMaxDiscountVelocityTicksInHours !==\n input.circuitBreakerMaxDiscountVelocityTicksInHours ||\n initial?.circuitBreakerMinCompListingCount !==\n input.circuitBreakerMinCompListingCount ||\n initial?.circuitBreakerRelativeCeiling !==\n input.circuitBreakerRelativeCeiling ||\n initial?.circuitBreakerRelativeFloor !==\n input.circuitBreakerRelativeFloor ||\n initial?.outlierMode !== input.outlierMode ||\n initial?.outlierStandardDeviations !== input.outlierStandardDeviations ||\n initial?.adminHoldNotes !== input.adminHoldNotes ||\n initial?.enableNativeSync !== input.enableNativeSync ||\n tagHasChanges(\n (initial?.tags ?? []) as Tag[],\n input.tags,\n tagsMetadata ?? []\n ) ||\n initial?.internalNotes !== input.internalNotes ||\n !isEqual(initial?.ticketTypeRules, input?.ticketTypeRules) ||\n initial?.manualMaxDisplayQuantity !== input.manualMaxDisplayQuantity ||\n initial?.section != input.section ||\n initial?.row != input.row ||\n initial?.rowId != input.rowId ||\n initial?.sectionId != input.sectionId ||\n initial?.allInPrice != input.allInPrice ||\n initial?.faceValue != input.faceValue ||\n initial?.buyerUserId != input.buyerUserId;\n\n return hasChanged;\n};\n\nexport const onPriceFieldChange = (\n newValue: number,\n field: Path,\n fieldPrice: number | null,\n otherField: Path,\n otherFieldPrice: number | null,\n /* This multiplier is used to get the other value due to this field value's newValue */\n otherToFieldRatio: number,\n clearErrors: UseFormClearErrors,\n setValue: UseFormSetValue\n): void => {\n if (Number.isNaN(newValue)) {\n newValue = 0;\n } else if (newValue > Infinity) {\n newValue = Number.MAX_VALUE;\n }\n\n if (newValue >= 0 && newValue <= Number.MAX_VALUE) {\n clearErrors(field);\n clearErrors(otherField);\n\n if (newValue !== fieldPrice) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setValue(field, newValue as any);\n }\n\n const newOtherValue = newValue * otherToFieldRatio;\n if (newOtherValue !== otherFieldPrice) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setValue(otherField, newOtherValue as any);\n }\n }\n};\n\nexport const isSuspiciousPriceChange = (\n newListPrice: number | null | undefined,\n oldListPrice: number | null | undefined\n) => {\n let result = false;\n if (oldListPrice && newListPrice && oldListPrice !== newListPrice) {\n // if both of these are non-zeros, check their change\n if (isSuspiciousPriceChangeHelper(newListPrice, oldListPrice)) {\n result = true;\n }\n }\n\n return result;\n};\n\nconst isSuspiciousPriceChangeHelper = (\n newPrice: number | null | undefined,\n oldPrice: number | null | undefined\n) => {\n if (!newPrice || !oldPrice) {\n // If either are null or 0, return false, zero has it's own validations\n return false;\n }\n\n const diff = Math.abs(newPrice - oldPrice);\n const percentChange = (diff / oldPrice) * 100;\n\n return percentChange >= SuspiciousPriceChangeThreshold;\n};\n\nexport const getStubhubEventWithPricingUrl = (\n eventId?: number | null,\n isInternationalEvent?: boolean\n) => {\n const baseUrl = isInternationalEvent\n ? REACT_APP_VIAGOGO_BASE_URL\n : REACT_APP_STUBHUB_BASE_URL;\n\n if (eventId) {\n // If we could not get anything, just go to the event vanilla page\n return new URL(`/E-${eventId}?multi=true`, baseUrl);\n } else {\n return new URL(baseUrl ?? '.');\n }\n};\n\nexport const getListingGroupForListing = (\n viagogoEventId?: number | null,\n ltGrpId?: string | null,\n events?: EventWithData[] | null\n) => {\n if (!ltGrpId || !viagogoEventId) {\n return null;\n }\n\n const eventData = events?.find((ev) => ev.event.viagId === viagogoEventId);\n const listingGroup = eventData?.entities?.listings?.find(\n (l) => l.isLtGrp && l.ltGrpId === ltGrpId\n ) as ListingGroup;\n\n return listingGroup;\n};\n\nexport const getListingGroupItemCount = (lg: ListingGroup) => {\n let count = lg.groupItems.length ?? 0;\n\n lg.groupItems.forEach((l) => {\n if (l.isLtGrp) {\n count--; // take out the count that is this listing-group and add in the sub-counts instead\n count += getListingGroupItemCount(l as ListingGroup);\n }\n });\n\n return count;\n};\n\nexport const isListingGroupLeader = (listing?: Listing | null) => {\n return (listing as ListingGroup)?.groupType === GroupType.Leader;\n};\n\nexport const DefaultQuantityFilterOption = 'Default';\n\nexport const getMinQuantityOptions = () =>\n [\n DefaultQuantityFilterOption,\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '10',\n ].reduce(\n (r, c) => {\n r[c] = c;\n return r;\n },\n {} as Record\n );\n\nexport const getCompQuantitiesOptions = () => {\n return ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10+'].reduce(\n (r, c) => {\n r[c] = c;\n return r;\n },\n {} as Record\n );\n};\n\nexport const safeParseJson = (jsonString: string | null | undefined) => {\n try {\n return JSON.parse(jsonString ?? 'null');\n } catch (error) {\n return null;\n }\n};\n","import { QueryObserverResult } from '@tanstack/react-query';\nimport { createContext, PropsWithChildren } from 'react';\nimport { IListExpansion } from 'src/hooks/useListExpansion';\nimport {\n ActionOutboxEntityType,\n CatalogClient,\n CatalogResults,\n EventWithData,\n Listing,\n PurchaseOrderTicketGroup,\n Sale,\n} from 'src/WebApiController';\n\nexport const EmptyCatalogResults: CatalogResults = {\n events: {},\n performers: {},\n venues: {},\n venueCfgs: {},\n viagIdToLatestIdLookup: {},\n posIdToViagIdLookup: {},\n purchaseCount: 0,\n};\n\nexport type EventWithDataMap = Record;\n\nexport type ItemIdWithRowVersion = {\n id: number;\n rowVer: number;\n};\n\nexport enum ExpandedCallbackStatus {\n Pending,\n InProgress,\n Done,\n}\n\nexport type CatalogDataContextProviderProps = PropsWithChildren<{\n queryKey: string;\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Sale\n | ActionOutboxEntityType.TicketGroup\n | ActionOutboxEntityType.Purchase;\n getCatalogData: (\n client: CatalogClient,\n filterQuery: TQuery\n ) => Promise;\n getCatalogDataExpanded?: (\n ids: string[],\n filterQuery: TQuery\n ) => Promise;\n onCatalogDataExpanded?: (\n ids: string[],\n filterQuery: TQuery,\n data?: ExpandedEventData\n ) => Promise;\n transformEventData: (\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Sale\n | ActionOutboxEntityType.TicketGroup\n | ActionOutboxEntityType.Purchase,\n data: EventWithData[],\n expandedEventData?: ExpandedEventData | null,\n isExpandedDataLoading?: boolean,\n filterZeroCounts?: boolean\n ) => EventWithData[];\n disabled?: boolean;\n disableAutoRefresh?: boolean;\n ignoreMaxCount?: boolean;\n}>;\n\nexport type ICatalogDataContext = {\n isLoading: boolean;\n isItemsLoading: boolean;\n data?: CatalogResults;\n errorInfo?: { errorHeader: React.ReactNode; errorMessage: React.ReactNode };\n eventsTransformed?: EventWithData[];\n allEventIds?: {\n viagVirtualId: string;\n performerId: number | null;\n venueId: number;\n }[];\n refreshCatalog: () => Promise;\n eventsExpansion: IListExpansion;\n updateItemInEvent: (\n item: Listing | Sale | PurchaseOrderTicketGroup,\n entityType: ActionOutboxEntityType\n ) => void;\n updateExpandedListItems: (updatedListingsByEvent: {\n [key: string]: Listing[];\n }) => void;\n refreshEventForItems: (\n itemIds: ItemIdWithRowVersion[],\n entityType: ActionOutboxEntityType\n ) => void;\n /**\n * Only used for Purchase Flattened View Currently\n * Can be transformed to something more general such as `totalEntityCount` if needed\n */\n totalPurchaseCount?: number;\n};\n\nexport type ExpandedEventData = {\n [key: string]: {\n sales: Sale[] | null;\n listings: Listing[] | null;\n ticketGroups: PurchaseOrderTicketGroup[] | null;\n failedToRetrieveData: boolean;\n };\n};\nconst emptyContext: ICatalogDataContext = {\n isLoading: false,\n isItemsLoading: false,\n data: undefined,\n eventsTransformed: undefined,\n allEventIds: undefined,\n refreshCatalog: () =>\n Promise.resolve({} as QueryObserverResult),\n updateItemInEvent: () => {},\n eventsExpansion: {\n expandedListItems: [],\n setExpandedListItems: () => {},\n toggleListItemExpansion: () => false,\n refreshExpandedListItems: () => Promise.resolve(),\n setListItemExpansion: () => {},\n },\n updateExpandedListItems: () => {},\n refreshEventForItems: () => {},\n totalPurchaseCount: undefined,\n};\n\nexport const CatalogDataContextV1 =\n createContext(emptyContext);\n\nexport const CatalogDataContextV2 =\n createContext(emptyContext);\n","import {\n useQueries,\n useQueryClient,\n UseQueryResult,\n} from '@tanstack/react-query';\nimport { cloneDeep, merge } from 'lodash-es';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport isEqual from 'react-fast-compare';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { useListExpansion } from 'src/hooks/useListExpansion';\nimport {\n DATA_REFRESH_RATE_IN_MILLIS_LONG,\n DATA_REFRESH_RATE_IN_MILLIS_SHORT,\n MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS,\n} from 'src/utils/constants/constants';\nimport { getErrorInfoFromStatusCode } from 'src/utils/errorUtils';\nimport {\n EmptyEntityWithTicketsQuery,\n QueryWithViewMode,\n} from 'src/utils/eventQueryUtils';\nimport { searchEvents, sortEvents } from 'src/utils/eventWithDataUtils';\nimport { getFlattenedListingIds } from 'src/utils/inventoryUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n CatalogClient,\n CatalogCounts,\n CatalogResults,\n EntityWithTicketsQuery,\n EventEntityCounts,\n EventWithData,\n InventoryViewMode,\n Listing,\n ListingGroup,\n ListingQuery,\n PurchaseOrderQuery,\n PurchaseOrderTicketGroup,\n Sale,\n SaleQuery,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useFilterQueryContext } from '../FilterQueryContext';\nimport { NO_GROUP_ID } from '../MultiSelectionContext';\nimport {\n CatalogDataContextProviderProps,\n CatalogDataContextV2,\n ExpandedCallbackStatus,\n ExpandedEventData,\n ItemIdWithRowVersion,\n} from './CatalogDataContext.types';\nimport {\n getEventsWithNonZeroCounts,\n hasEventsWithFullLoadedData,\n} from './CatalogDataContext.utils';\n\nexport function CatalogDataContextV2Provider<\n TQuery extends EntityWithTicketsQuery & QueryWithViewMode,\n>({\n queryKey,\n entityType,\n getCatalogDataExpanded,\n onCatalogDataExpanded,\n transformEventData,\n children,\n disabled,\n disableAutoRefresh,\n ignoreMaxCount,\n}: CatalogDataContextProviderProps) {\n const queryClient = useQueryClient();\n\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n\n const { filterQuery, isQueryInitialized } = useFilterQueryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const eventsExpansion = useListExpansion();\n const { expandedListItems } = eventsExpansion;\n\n const [errorInfo, setErrorInfo] = useState<{\n errorHeader: React.ReactNode;\n errorMessage: React.ReactNode;\n }>();\n\n // Flags to track the status of the expanded callback\n const [expandedCallbackStatus, setExpandedCallbackStatus] = useState<\n Record\n >({});\n const onExpandedCallbackStatusUpdate = useCallback(\n (stringQueryKey: string, status: ExpandedCallbackStatus) =>\n setExpandedCallbackStatus((prev) => ({\n ...prev,\n [stringQueryKey]: status,\n })),\n []\n );\n\n const {\n searchText,\n sortBy,\n isSortDescending,\n performerIds,\n venueIds,\n viewMode, // this is not used for server and keeping it in this cause refresh to happen 2x\n ...serverSideFilterQuery // Don't use it because it's a new object on every render\n } = filterQuery;\n\n const countFilterQuery = useMemo(() => {\n const query = Object.fromEntries(\n Object.entries(serverSideFilterQuery).filter(([_, v]) => v != null)\n );\n return {\n ...query,\n timezoneOffsetMins:\n query.timezoneOffsetMins ??\n EmptyEntityWithTicketsQuery.timezoneOffsetMins,\n } as TQuery;\n }, [serverSideFilterQuery]);\n\n const [catalogResults, setCatalogResults] = useState();\n const eventsFullyLoaded = useMemo(() => {\n if (catalogResults?.events == null) {\n return false; // we haven't loaded the events yet\n }\n\n const allEvents = Object.values(catalogResults.events);\n\n if (allEvents.length === 0) {\n // We've loaded the events, but there are none\n return true;\n }\n\n // at least 1 has both events and counts\n const result = hasEventsWithFullLoadedData(entityType, allEvents);\n\n return result;\n }, [catalogResults?.events, entityType]);\n\n /* Arguments for the catalog queries */\n\n const eventIdsNeedingData = useMemo(() => {\n const eventCountsMissingDataIds = Object.values(\n catalogResults?.events ?? {}\n )\n .filter((ev) => ev.event == null && ev.counts.viagVirtId != null)\n .map((ev) => ev.counts.viagVirtId);\n\n const customEventIds =\n countFilterQuery.eventOrMappingIds?.filter(\n (id) => !catalogResults?.events[id]\n ) ?? [];\n\n return Array.from(\n new Set([...eventCountsMissingDataIds, ...customEventIds])\n ).toSorted();\n }, [catalogResults, countFilterQuery.eventOrMappingIds]);\n\n /* QueryKey for the catalog queries */\n\n const catalogCountQueryKey = useMemo(\n () => [queryKey + 'Count', entityType, countFilterQuery],\n [entityType, queryKey, countFilterQuery]\n );\n\n const catalogDataQueryKey = useMemo(\n () => [queryKey + 'Data', eventIdsNeedingData],\n [eventIdsNeedingData, queryKey]\n );\n\n /* Conditions for the catalog queries */\n\n const shouldQueryCounts = useMemo(\n () => activeAccountWebClientConfig.activeAccountId != null && !disabled,\n [activeAccountWebClientConfig.activeAccountId, disabled]\n );\n\n const shouldQueryEventData = useMemo(\n () =>\n Boolean(eventIdsNeedingData.length) &&\n activeAccountWebClientConfig.activeAccountId != null &&\n isQueryInitialized &&\n !disabled,\n [\n activeAccountWebClientConfig.activeAccountId,\n disabled,\n eventIdsNeedingData.length,\n isQueryInitialized,\n ]\n );\n\n const mergeCatalogCounts = useCallback(\n (newResults: CatalogResults, counts?: CatalogCounts | null) => {\n if (!counts) {\n return undefined;\n }\n\n newResults.purchaseCount = counts.purchaseCount;\n\n // Reset all the counts first\n Object.values(newResults.events).forEach((ev) => {\n ev.counts = {\n listCnt: 0,\n listGrpCnt: 0,\n ungrListCnt: 0,\n salesCnt: 0,\n pricedListCnt: 0,\n tktGrpsCnt: 0,\n poCnt: 0,\n } as EventEntityCounts;\n });\n\n Object.entries(counts.entityCnts).forEach(([id, cnts]) => {\n const ev = newResults.events[id] ?? ({} as EventWithData);\n ev.counts = cnts;\n\n newResults.events[id] = ev;\n });\n\n return newResults;\n },\n []\n );\n\n const combine = useCallback(\n (results: UseQueryResult[]) => {\n const eventQuery = results[0] as UseQueryResult;\n const countsQuery = results[1] as UseQueryResult;\n\n if (\n (shouldQueryEventData && eventQuery.isLoading) ||\n (shouldQueryCounts && countsQuery.isLoading)\n ) {\n return;\n }\n\n const failureReason =\n (shouldQueryEventData && eventQuery.failureReason) ||\n (shouldQueryCounts && countsQuery.failureReason);\n\n if (failureReason) {\n const { headerDisplay, messageDisplay } = getErrorInfoFromStatusCode(\n null,\n failureReason?.toString()\n );\n setErrorInfo({\n errorHeader: headerDisplay,\n errorMessage: messageDisplay,\n });\n } else if (errorInfo) {\n setErrorInfo(undefined);\n }\n\n if (!eventQuery.data && !countsQuery.data) {\n return;\n }\n\n const newCatalogResults =\n cloneDeep(catalogResults) ??\n ({\n events: {},\n performers: {},\n venues: {},\n venueCfgs: {},\n viagIdToLatestIdLookup: {},\n posIdToViagIdLookup: {},\n purchaseCount: 0,\n } as CatalogResults);\n if (eventQuery.data) {\n merge(newCatalogResults, eventQuery.data);\n }\n\n if (countsQuery.data) {\n mergeCatalogCounts(newCatalogResults, countsQuery.data);\n\n if (newCatalogResults && !isEqual(catalogResults, newCatalogResults)) {\n setCatalogResults(newCatalogResults);\n console.debug('setCatalogResults updated with counts data');\n }\n }\n },\n [\n catalogResults,\n errorInfo,\n mergeCatalogCounts,\n shouldQueryCounts,\n shouldQueryEventData,\n ]\n );\n\n /* The catalog queries */\n\n const refetchIntervalLong = !disableAutoRefresh\n ? DATA_REFRESH_RATE_IN_MILLIS_LONG\n : false;\n\n const catalogQueries = useMemo(\n () => ({\n queries: [\n {\n queryKey: catalogDataQueryKey,\n queryFn: async (): Promise => {\n setErrorInfo(undefined);\n\n if (!shouldQueryEventData) {\n return null;\n }\n\n return tryInvokeApi(\n async () => {\n const data = await new CatalogClient(\n activeAccountWebClientConfig\n ).getCatalog(eventIdsNeedingData);\n\n return data;\n },\n (error) => {\n const { headerDisplay, messageDisplay } =\n getErrorInfoFromStatusCode(error?.status, error?.message);\n setErrorInfo({\n errorHeader: headerDisplay,\n errorMessage: messageDisplay,\n });\n trackError('CatalogClient.getCatalog', error);\n }\n );\n },\n enabled: shouldQueryEventData,\n staleTime: Infinity, // Since we're always refetching on an interval, we don't want query to calculate whether the data is stale\n refetchOnWindowFocus: false,\n refetchInterval: refetchIntervalLong as number | false,\n meta: {\n persist: false, // we do not want to persist the catalog data, we just need the count persisted, the catalog are obtained in C# cache (no SQL)\n },\n },\n {\n queryKey: catalogCountQueryKey,\n queryFn: async (): Promise => {\n setErrorInfo(undefined);\n\n if (!shouldQueryCounts) {\n return null;\n }\n\n return tryInvokeApi(\n async () => {\n const client = new CatalogClient(activeAccountWebClientConfig);\n\n if (entityType === ActionOutboxEntityType.Listing) {\n const counts = await client.getCatalogCountForListings(\n countFilterQuery as unknown as ListingQuery\n );\n\n return counts;\n } else if (entityType === ActionOutboxEntityType.Sale) {\n const counts = await client.getCatalogCountForSales(\n countFilterQuery as unknown as SaleQuery\n );\n\n return counts;\n }\n if (\n entityType === ActionOutboxEntityType.TicketGroup ||\n entityType === ActionOutboxEntityType.Purchase\n ) {\n const counts = await client.getCatalogCountForPurchaseOrders(\n countFilterQuery as unknown as PurchaseOrderQuery\n );\n\n return counts;\n }\n\n return null;\n },\n (error) => {\n const { headerDisplay, messageDisplay } =\n getErrorInfoFromStatusCode(error?.status, error?.message);\n setErrorInfo({\n errorHeader: headerDisplay,\n errorMessage: messageDisplay,\n });\n trackError(\n queryKey + 'Count: ' + entityType,\n error,\n countFilterQuery\n );\n }\n );\n },\n enabled: shouldQueryCounts,\n staleTime: Infinity, // Since we're always refetching on an interval, we don't want query to calculate whether the data is stale\n refetchOnWindowFocus: false,\n refetchOnMount: true,\n refetchInterval: refetchIntervalLong as number | false,\n },\n ],\n }),\n [\n activeAccountWebClientConfig,\n catalogCountQueryKey,\n catalogDataQueryKey,\n entityType,\n eventIdsNeedingData,\n queryKey,\n refetchIntervalLong,\n countFilterQuery,\n shouldQueryCounts,\n shouldQueryEventData,\n trackError,\n ]\n );\n\n // Use the extracted variable in the useQueries hook\n const catalogResultsFromHook = useQueries(catalogQueries);\n\n useEffect(() => {\n combine(catalogResultsFromHook);\n }, [catalogResultsFromHook, combine]);\n\n const eventIdsToGetItemsFor = useMemo(() => {\n if (!catalogResults) {\n return [] as [string][];\n }\n let listingCount = 0;\n let salesCount = 0;\n\n const eventsToGetItemsFor = getEventsWithNonZeroCounts(\n entityType,\n searchEvents(catalogResults, searchText, performerIds, venueIds),\n true\n )\n .map((ev) => {\n if (ev) {\n const evCount = ev?.counts;\n listingCount += evCount?.listCnt ?? 0;\n salesCount += evCount?.salesCnt ?? 0;\n return ev;\n }\n })\n .filter((ev) => ev)\n .map((ev) => ev!);\n\n let isTooManyItems = false;\n if (!ignoreMaxCount && viewMode === InventoryViewMode.FlattenedView) {\n // Only one of these are non-zero\n if (listingCount) {\n isTooManyItems = listingCount > MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS;\n } else if (salesCount) {\n isTooManyItems = salesCount > MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS;\n }\n }\n const results =\n viewMode === InventoryViewMode.FlattenedView\n ? isTooManyItems &&\n // If the catalog shows a count of way too many items and we're actually not filtering to the individual items, don't query at all\n !countFilterQuery.entityIds?.length &&\n !countFilterQuery.marketplaceEntityIds?.length\n ? []\n : // For flatten view - we know we're gonna get all of them at once, so just bundle all the event ids in 1 array\n [eventsToGetItemsFor?.map((ev) => ev.event.viagVirtualId)]\n : // For tile view, we only want 1 event per query\n expandedListItems.map((id) => [id]);\n\n // Finally, we need to include the PosEventIds with all the ids, because in some cases\n // the ViagogoVirtualIds do not resolve properly due to the outdated cache, and missing items are returned\n // for merged events\n return results.map((idArray) => {\n const allEvents = eventsToGetItemsFor\n .filter((ev) => idArray.includes(ev.event.viagVirtualId))\n .flatMap((ev) => ev.event.posIds.map((posId) => `old:${posId}`));\n return idArray.concat(allEvents);\n });\n }, [\n catalogResults,\n entityType,\n searchText,\n performerIds,\n venueIds,\n ignoreMaxCount,\n viewMode,\n countFilterQuery.entityIds?.length,\n countFilterQuery.marketplaceEntityIds?.length,\n expandedListItems,\n ]);\n\n const realExpandedDataItemsQueryKey = useMemo(\n () => [queryKey + 'Expanded', countFilterQuery],\n [queryKey, countFilterQuery]\n );\n\n const shouldQueryExpandedItems = useMemo(\n () =>\n activeAccountWebClientConfig.activeAccountId != null &&\n countFilterQuery != null &&\n !disabled,\n [activeAccountWebClientConfig.activeAccountId, disabled, countFilterQuery]\n );\n\n const refreshInterval = !disableAutoRefresh\n ? DATA_REFRESH_RATE_IN_MILLIS_SHORT\n : false;\n\n const onCatalogDataExpandedCallbackCheck = useCallback(\n async (\n queryResults: UseQueryResult<\n ExpandedEventData | null | undefined,\n Error\n >[]\n ) => {\n if (!onCatalogDataExpanded) {\n return;\n }\n const queryIds = eventIdsToGetItemsFor ?? [];\n for (let index = 0; index < queryIds.length; index++) {\n const ids = queryIds[index];\n const queryKey = [...realExpandedDataItemsQueryKey, ...ids.toSorted()];\n const stringQueryKey = queryKey.toString();\n const queryResult = queryResults[index];\n if (\n expandedCallbackStatus[stringQueryKey] ===\n ExpandedCallbackStatus.Pending\n ) {\n onExpandedCallbackStatusUpdate(\n stringQueryKey,\n ExpandedCallbackStatus.InProgress\n );\n const newData = await onCatalogDataExpanded(\n ids,\n countFilterQuery as TQuery,\n queryResult?.data ?? undefined\n );\n queryClient.setQueryData(queryKey, newData);\n onExpandedCallbackStatusUpdate(\n stringQueryKey,\n ExpandedCallbackStatus.Done\n );\n }\n }\n },\n [\n eventIdsToGetItemsFor,\n expandedCallbackStatus,\n onCatalogDataExpanded,\n onExpandedCallbackStatusUpdate,\n queryClient,\n realExpandedDataItemsQueryKey,\n countFilterQuery,\n ]\n );\n\n const expandedItemsQueryOptions = useMemo(\n () => ({\n queries: (eventIdsToGetItemsFor ?? []).map((ids) => {\n const queryKey = [...realExpandedDataItemsQueryKey, ...ids.toSorted()];\n return {\n queryKey: queryKey,\n queryFn: async () => {\n if (!shouldQueryExpandedItems) {\n return null;\n }\n\n return tryInvokeApi(\n async () => {\n const data = await getCatalogDataExpanded?.(\n ids[0] === NO_GROUP_ID ? [] : ids,\n countFilterQuery as TQuery\n );\n if (onCatalogDataExpanded) {\n onExpandedCallbackStatusUpdate(\n queryKey.toString(),\n ExpandedCallbackStatus.Pending\n );\n }\n return data;\n },\n (error: ErrorTypes) => {\n showErrorDialog('CatalogClient.getCatalogDataExpanded', error, {\n trackErrorData: {\n eventIds: ids,\n filterQuery,\n },\n });\n }\n );\n },\n enabled: shouldQueryExpandedItems,\n staleTime: Infinity, // Since we're always refetching on an interval, we don't want query to calculate whether the data is stale\n refetchOnWindowFocus: false,\n refetchInterval: refreshInterval as number | false,\n };\n }),\n combine: (\n results: UseQueryResult[]\n ) => {\n onCatalogDataExpandedCallbackCheck(results);\n\n return results;\n },\n }),\n [\n eventIdsToGetItemsFor,\n filterQuery,\n getCatalogDataExpanded,\n onCatalogDataExpanded,\n onCatalogDataExpandedCallbackCheck,\n onExpandedCallbackStatusUpdate,\n realExpandedDataItemsQueryKey,\n refreshInterval,\n countFilterQuery,\n shouldQueryExpandedItems,\n showErrorDialog,\n ]\n );\n\n const queryWithExpandedItems = useQueries(expandedItemsQueryOptions);\n\n const [eventsTransformed, setEventsTransformed] = useState();\n\n // This to apply client-side filtering before transformation of the data\n useEffect(() => {\n if (!eventsFullyLoaded) {\n console.debug('eventsTransformed skipped due no complete event data');\n return;\n }\n\n const newExpandedData = merge(\n {},\n ...queryWithExpandedItems.map((r) => r.data ?? {})\n ) as ExpandedEventData;\n\n const newExpandedEvents = transformEventData(\n entityType,\n searchEvents(catalogResults!, searchText, performerIds, venueIds),\n newExpandedData,\n queryWithExpandedItems.some((q) => q.isLoading),\n true\n );\n\n const transformed = sortEvents(\n catalogResults!,\n newExpandedEvents,\n sortBy,\n isSortDescending\n );\n\n if (transformed && !isEqual(transformed, eventsTransformed)) {\n setEventsTransformed(transformed);\n console.debug(\n 'eventsTransformed updated with transformed: ' + transformed.length\n );\n }\n }, [\n catalogResults,\n entityType,\n eventsFullyLoaded,\n eventsTransformed,\n isSortDescending,\n performerIds,\n queryWithExpandedItems,\n searchText,\n sortBy,\n transformEventData,\n venueIds,\n ]);\n\n const refreshCatalog = useCallback(async () => {\n await queryClient.invalidateQueries({\n queryKey: [queryKey + 'Count'],\n refetchType: 'active',\n });\n return await queryClient.invalidateQueries({\n queryKey: [queryKey + 'Data'],\n refetchType: 'active',\n });\n }, [queryClient, queryKey]);\n\n const refreshExpandedListItems = useCallback(() => {\n queryClient.invalidateQueries({\n queryKey: [queryKey + 'Expanded'],\n refetchType: 'none', // we don't want to refetch any, we'll manually refetch the active\n });\n\n return queryClient.invalidateQueries({\n queryKey: realExpandedDataItemsQueryKey,\n });\n }, [queryClient, queryKey, realExpandedDataItemsQueryKey]);\n\n /**\n * Refreshes the event data for a specific item\n */\n const refreshEventForItems = useCallback(\n (itemIds: ItemIdWithRowVersion[], entityType: ActionOutboxEntityType) => {\n const eventIds = eventsTransformed\n ?.filter((ev) => {\n if (entityType === ActionOutboxEntityType.Listing) {\n return ev.entities.listings?.some((l) =>\n itemIds.some((i) => i.id === l.id && i.rowVer > l.rowVer)\n );\n } else if (entityType === ActionOutboxEntityType.Sale) {\n return ev.entities.sales?.some((s) =>\n itemIds.some((i) => i.id === s.id && i.rowVer > s.rowVer)\n );\n } else if (entityType === ActionOutboxEntityType.Purchase) {\n return ev.entities.ticketGroups?.some((t) =>\n itemIds.some((i) => i.id === t.id && i.rowVer > t.rowVer)\n );\n }\n return false;\n })\n ?.map((ev) => ev.counts?.viagVirtId ?? ev.event?.viagVirtualId);\n\n if (eventIds?.length) {\n if (viewMode === InventoryViewMode.FlattenedView) {\n queryClient.invalidateQueries({\n queryKey: realExpandedDataItemsQueryKey,\n });\n } else {\n for (const eventId of eventIds) {\n queryClient.invalidateQueries({\n queryKey: [...realExpandedDataItemsQueryKey, eventId],\n });\n }\n }\n }\n },\n [eventsTransformed, queryClient, realExpandedDataItemsQueryKey, viewMode]\n );\n\n const updateExpandedListItems = useCallback(\n (updatedListingsByEvent: { [key: string]: Listing[] }) => {\n const newDatas = queryClient.setQueriesData(\n {\n queryKey: [queryKey + 'Expanded'],\n },\n (oldData: ExpandedEventData | undefined) => {\n if (!oldData) {\n return oldData;\n }\n const newData = { ...oldData };\n Object.entries(updatedListingsByEvent).forEach(([key, value]) => {\n const oldListingsByIds =\n newData[key]?.listings?.reduce(\n (r, l) => {\n r[l.id] = l;\n return r;\n },\n {} as Record\n ) ?? {};\n\n // Filter all the new ones that have row version < the old one\n const newListings = [\n ...value.filter((l) => {\n const oldListing = oldListingsByIds[l.id];\n if (oldListing && oldListing.rowVer > l.rowVer) {\n return false;\n }\n\n return true;\n }),\n ];\n const newListingIdsFlattened = getFlattenedListingIds(newListings);\n\n // Retain listings that are not updated\n newData[key]?.listings?.forEach((originalListing) => {\n let shouldKeep = true;\n if (!originalListing.isLtGrp) {\n if (newListingIdsFlattened.includes(originalListing.id))\n shouldKeep = false;\n } else {\n // If `originalListing` is a listing group\n // there will only be two cases\n // 1. No one listing in `newListingIdsFlattened` show up in the group (keep the group), or\n // 2. All listings in `newListingIdsFlattened` show up in the group (don't keep it, group has been edited or removed)\n const originalListingIdsFlattened = getFlattenedListingIds([\n originalListing,\n ]);\n if (\n originalListingIdsFlattened.some((l) =>\n newListingIdsFlattened.includes(l)\n )\n ) {\n shouldKeep = false;\n }\n }\n\n if (shouldKeep) {\n newListings.push(originalListing);\n }\n });\n\n newData[key] = {\n sales: null,\n listings: newListings,\n ticketGroups: null,\n failedToRetrieveData: false,\n };\n });\n return newData;\n }\n );\n\n // We should only check at first 2 query keys [PrimaryKey, QueryObject]\n const newData = newDatas.find((qk) =>\n isEqual((qk[0] ?? []).slice(0, 2), realExpandedDataItemsQueryKey)\n );\n if (catalogResults && newData) {\n const transformed = sortEvents(\n catalogResults,\n transformEventData(\n entityType,\n searchEvents(catalogResults, searchText, performerIds, venueIds),\n newData[1] as ExpandedEventData,\n false,\n true\n ),\n sortBy,\n isSortDescending\n );\n\n setEventsTransformed(transformed);\n console.debug(\n 'eventsTransformed updated with updateExpandedListItems transformed: ' +\n transformed.length\n );\n }\n },\n [\n entityType,\n isSortDescending,\n performerIds,\n catalogResults,\n queryClient,\n queryKey,\n realExpandedDataItemsQueryKey,\n searchText,\n sortBy,\n transformEventData,\n venueIds,\n ]\n );\n\n const updateExpandedSaleItems = useCallback(\n (updatedListingsByEvent: { [key: string]: Sale[] }) => {\n const newDatas = queryClient.setQueriesData(\n {\n queryKey: [queryKey + 'Expanded'],\n },\n (oldData: ExpandedEventData | undefined) => {\n if (!oldData) {\n return oldData;\n }\n const newData = { ...oldData };\n Object.entries(updatedListingsByEvent).forEach(([key, value]) => {\n const oldSalesByIds =\n newData[key]?.sales?.reduce(\n (r, s) => {\n r[s.id] = s;\n return r;\n },\n {} as Record\n ) ?? {};\n\n // Filter all the new ones that have row version < the old one\n const newSales = [\n ...value.filter((s) => {\n const oldSale = oldSalesByIds[s.id];\n if (oldSale && oldSale.rowVer > s.rowVer) {\n return false;\n }\n\n return true;\n }),\n ];\n const newSaleIds = newSales.map((s) => s.id);\n\n // Retain sales that are not in the newSales\n newData[key]?.sales?.forEach((originalSale) => {\n if (!newSaleIds.includes(originalSale.id)) {\n // new sales doesn't have the original sale, keep it\n newSales.push(originalSale);\n }\n });\n\n newData[key] = {\n sales: newSales,\n listings: null,\n ticketGroups: null,\n failedToRetrieveData: false,\n };\n });\n return newData;\n }\n );\n\n const newData = newDatas.find((qk) =>\n isEqual((qk[0] ?? []).slice(0, 2), realExpandedDataItemsQueryKey)\n );\n if (catalogResults && newData) {\n const transformed = sortEvents(\n catalogResults,\n transformEventData(\n entityType,\n searchEvents(catalogResults, searchText, performerIds, venueIds),\n newData[1] as ExpandedEventData,\n false,\n true\n ),\n sortBy,\n isSortDescending\n );\n\n setEventsTransformed(transformed);\n console.debug(\n 'eventsTransformed updated with updateExpandedSaleItems transformed: ' +\n transformed.length\n );\n }\n },\n [\n entityType,\n isSortDescending,\n performerIds,\n catalogResults,\n queryClient,\n queryKey,\n realExpandedDataItemsQueryKey,\n searchText,\n sortBy,\n transformEventData,\n venueIds,\n ]\n );\n\n const updateExpandedTicketGroupItems = useCallback(\n (updatedTgsByEvent: { [key: string]: PurchaseOrderTicketGroup[] }) => {\n const newDatas = queryClient.setQueriesData(\n {\n queryKey: [queryKey + 'Expanded'],\n },\n (oldData: ExpandedEventData | undefined) => {\n if (!oldData) {\n return oldData;\n }\n const newData = { ...oldData };\n Object.entries(updatedTgsByEvent).forEach(([key, value]) => {\n const oldTgsByIds =\n newData[key]?.ticketGroups?.reduce(\n (r, t) => {\n r[t.tgId!] = t;\n return r;\n },\n {} as Record\n ) ?? {};\n\n // Filter all the new ones that have row version < the old one\n const newTgs = [\n ...value.filter((t) => {\n const oldTg = oldTgsByIds[t.tgId!];\n if (oldTg && oldTg.rowVer > t.rowVer) {\n return false;\n }\n\n return true;\n }),\n ];\n const newTgIds = newTgs.map((s) => s.tgId!);\n\n // Retain tgs that are not in the newTgs\n newData[key]?.ticketGroups?.forEach((originalTg) => {\n if (!newTgIds.includes(originalTg.tgId!)) {\n // new sales doesn't have the original sale, keep it\n newTgs.push(originalTg);\n }\n });\n\n newData[key] = {\n sales: null,\n listings: null,\n ticketGroups: newTgs,\n failedToRetrieveData: false,\n };\n });\n return newData;\n }\n );\n\n const newData = newDatas.find((qk) =>\n isEqual(qk[0], realExpandedDataItemsQueryKey)\n );\n if (catalogResults && newData) {\n const transformed = sortEvents(\n catalogResults,\n transformEventData(\n entityType,\n searchEvents(catalogResults, searchText, performerIds, venueIds),\n newData[1] as ExpandedEventData,\n false,\n true\n ),\n sortBy,\n isSortDescending\n );\n\n setEventsTransformed(transformed);\n console.debug(\n 'eventsTransformed updated with updateExpandedTicketGroupItems transformed: ' +\n transformed.length\n );\n }\n },\n [\n entityType,\n isSortDescending,\n performerIds,\n catalogResults,\n queryClient,\n queryKey,\n realExpandedDataItemsQueryKey,\n searchText,\n sortBy,\n transformEventData,\n venueIds,\n ]\n );\n\n const updateItemInEvent = useCallback(\n async (\n item: Listing | Sale | PurchaseOrderTicketGroup,\n entityType: ActionOutboxEntityType\n ) => {\n // Now that we got the listing details, try to get the Event from existing data\n const catalogIdKey = item.viagVirtualId!;\n const eventQuery = queryWithExpandedItems.find(\n (r) => r.data?.[catalogIdKey]\n );\n\n // If we can't find it, go fetch it\n if (eventQuery?.data != null) {\n const event = eventQuery.data[catalogIdKey];\n\n // NOTE - after each refresh - the row version will be zero\n // and direct cache-update will trigger the row-version change until the next refresh\n // this is to make sure async updates to multiple listings/sales of an event do not overwrite each other\n if (entityType === ActionOutboxEntityType.Listing && event.listings) {\n // Because we're manually updating, set all rowVer here to be min 1, and the item to be updated to be min 2\n event.listings.forEach((l) => (l.rowVer = l.rowVer || 1));\n\n // If the event in the catalog has the listings expanded, we'll want to update it\n // with the latest info from the listing details above (this will help update state changes or seat allocations, etc.)\n const index = event.listings.findIndex(\n (s) =>\n s.id === item.id ||\n (s as ListingGroup).groupItems?.some(\n (l) =>\n l.id === item.id ||\n // this is the second level group\n (l as ListingGroup).groupItems?.some(\n (l2) => l2.id === item.id\n )\n )\n );\n\n const oldItem = event.listings[index];\n const lg = oldItem as ListingGroup;\n\n if (oldItem.id === item.id) {\n item.rowVer = oldItem.rowVer + 1; // Increase rowVer to indicate that we updated this recently\n event.listings[index] = { ...oldItem, ...item } as Listing;\n } else if (lg.groupItems != null) {\n // The item is a listing under a group\n const groupListingIndex = lg.groupItems.findIndex(\n (s) => s.id === item.id\n );\n\n if (groupListingIndex < 0) {\n for (const subGroup of lg.groupItems) {\n if (subGroup.isLtGrp) {\n const listingIndex = (\n subGroup as ListingGroup\n ).groupItems.findIndex((s) => s.id === item.id);\n\n if (listingIndex >= 0) {\n const oldItemInGroup = (subGroup as ListingGroup)\n .groupItems[listingIndex];\n item.rowVer = oldItemInGroup.rowVer + 1; // Increase rowVer to indicate that we updated this recently\n\n (subGroup as ListingGroup).groupItems[listingIndex] = {\n ...oldItem,\n ...item,\n } as Listing;\n }\n }\n }\n } else {\n const oldItemInGroup = lg.groupItems[groupListingIndex];\n item.rowVer = oldItemInGroup.rowVer + 1; // Increase rowVer to indicate that we updated this recently\n\n lg.groupItems[groupListingIndex] = {\n ...oldItem,\n ...item,\n } as Listing;\n }\n }\n\n event.listings = [...event.listings]; // this so the table will forced to be re-rendered\n updateExpandedListItems({ [catalogIdKey]: event.listings });\n } else if (entityType === ActionOutboxEntityType.Sale && event.sales) {\n // Because we're manually updating, set all rowVer here to be min 1, and the item to be updated to be min 2\n event.sales.forEach((s) => (s.rowVer = s.rowVer || 1));\n\n // If the event in the catalog has the sales expanded, we'll want to update it\n // with the latest info from the sale details above (this will help update state changes or seat allocations, etc.)\n const index = event.sales.findIndex((s) => s.id === item.id);\n const oldItem = event.sales[index];\n item.rowVer = oldItem.rowVer + 1; // Increase rowVer to indicate that we updated this recently\n\n event.sales[index] = { ...oldItem, ...item } as Sale;\n event.sales = [...event.sales]; // this so the table will forced to be re-rendered\n\n updateExpandedSaleItems({ [catalogIdKey]: event.sales });\n } else if (\n entityType === ActionOutboxEntityType.Purchase &&\n event.ticketGroups\n ) {\n // Because we're manually updating, set all rowVer here to be min 1, and the item to be updated to be min 2\n event.ticketGroups.forEach((s) => (s.rowVer = s.rowVer || 1));\n\n // If the event in the catalog has the sales expanded, we'll want to update it\n // with the latest info from the sale details above (this will help update state changes or seat allocations, etc.)\n const index = event.ticketGroups.findIndex(\n (t) => t.tgId === (item as PurchaseOrderTicketGroup).tgId\n );\n const oldItem = event.ticketGroups[index];\n item.rowVer = oldItem.rowVer + 1; // Increase rowVer to indicate that we updated this recently\n\n event.ticketGroups[index] = {\n ...oldItem,\n ...item,\n } as PurchaseOrderTicketGroup;\n event.ticketGroups = [...event.ticketGroups]; // this so the table will forced to be re-rendered\n\n updateExpandedTicketGroupItems({\n [catalogIdKey]: event.ticketGroups,\n });\n }\n }\n },\n [\n queryWithExpandedItems,\n updateExpandedListItems,\n updateExpandedSaleItems,\n updateExpandedTicketGroupItems,\n ]\n );\n\n const allEventIds = useMemo(\n () =>\n eventsTransformed?.map((ev) => ({\n viagVirtualId: ev.counts?.viagVirtId ?? ev.event?.viagVirtualId,\n performerId: ev.counts?.perfId ?? ev.event?.perfId,\n venueId: ev.counts?.venId ?? ev.event?.venueId,\n })) ?? [],\n [eventsTransformed]\n );\n\n return (\n r.isLoading) || // queries are loading\n !eventsFullyLoaded || // event data is not fully loaded\n eventsTransformed == null, // queries are fetching and prev there is no data\n isItemsLoading:\n queryWithExpandedItems.some((r) => r.isLoading) ||\n !eventsTransformed?.length, // whether the query to get items are loading\n data: catalogResults ?? undefined,\n errorInfo,\n eventsTransformed,\n allEventIds,\n refreshCatalog,\n updateItemInEvent,\n eventsExpansion: {\n ...eventsExpansion,\n refreshExpandedListItems,\n },\n updateExpandedListItems,\n refreshEventForItems,\n totalPurchaseCount: catalogResults?.purchaseCount,\n }}\n >\n {children}\n \n );\n}\n","import {\n useQueries,\n useQuery,\n useQueryClient,\n UseQueryResult,\n} from '@tanstack/react-query';\nimport { differenceInDays } from 'date-fns';\nimport { isEqual, merge } from 'lodash-es';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { useListExpansion } from 'src/hooks/useListExpansion';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n DATA_REFRESH_RATE_IN_MILLIS_LONG,\n DATA_REFRESH_RATE_IN_MILLIS_SHORT,\n MAX_DATE,\n MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS,\n MIN_DATE,\n} from 'src/utils/constants/constants';\nimport { getErrorInfoFromStatusCode } from 'src/utils/errorUtils';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\nimport { searchEvents, sortEvents } from 'src/utils/eventWithDataUtils';\nimport { getFlattenedListingIds } from 'src/utils/inventoryUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n CatalogClient,\n EntityWithTicketsQuery,\n EventTimeFrameFilter,\n EventWithData,\n Feature,\n InventoryViewMode,\n Listing,\n ListingGroup,\n PurchaseOrderTicketGroup,\n Sale,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useFilterQueryContext } from '../FilterQueryContext';\nimport { NO_GROUP_ID } from '../MultiSelectionContext';\nimport {\n CatalogDataContextProviderProps,\n CatalogDataContextV1,\n ExpandedCallbackStatus,\n ExpandedEventData,\n ItemIdWithRowVersion,\n} from './CatalogDataContext.types';\nimport { updateCatalogResults } from './CatalogDataContext.utils';\nimport { CatalogDataContextV2Provider } from './CatalogDataContextV2';\n\nexport function CatalogDataContextV1Provider<\n TQuery extends EntityWithTicketsQuery & QueryWithViewMode,\n>({\n entityType,\n queryKey,\n getCatalogData,\n getCatalogDataExpanded,\n onCatalogDataExpanded,\n transformEventData,\n children,\n disabled,\n disableAutoRefresh,\n ignoreMaxCount,\n}: CatalogDataContextProviderProps) {\n const queryClient = useQueryClient();\n\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n\n const { filterQuery, isQueryInitialized } = useFilterQueryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const eventsExpansion = useListExpansion();\n const { expandedListItems } = eventsExpansion;\n\n const [errorInfo, setErrorInfo] = useState<{\n errorHeader: React.ReactNode;\n errorMessage: React.ReactNode;\n }>();\n\n // Flags to track the status of the expanded callback\n const [expandedCallbackStatus, setExpandedCallbackStatus] = useState<\n Record\n >({});\n const onExpandedCallbackStatusUpdate = useCallback(\n (stringQueryKey: string, status: ExpandedCallbackStatus) =>\n setExpandedCallbackStatus((prev) => ({\n ...prev,\n [stringQueryKey]: status,\n })),\n []\n );\n\n const {\n searchText,\n sortBy,\n isSortDescending,\n performerIds,\n venueIds,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n viewMode, // this is not used for server and keeping it in this cause refresh to happen 2x\n ...rest // Don't use it because it's a new object on every render\n } = filterQuery;\n\n const transformedQuery = useMemo(() => {\n const {\n searchText,\n sortBy,\n isSortDescending,\n performerIds,\n venueIds,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n viewMode, // this is not used for server and keeping it in this cause refresh to happen 2x\n ...rest\n } = filterQuery;\n return rest as TQuery;\n }, [filterQuery]);\n\n const realQueryKey = useMemo(\n () => [\n queryKey,\n transformedQuery,\n activeAccountWebClientConfig.activeAccountId,\n ],\n [queryKey, transformedQuery, activeAccountWebClientConfig.activeAccountId]\n );\n\n // The result for the catalog query can be tremedously huge -\n // this is an arbitrary rule to decide whether or not to keep this around\n // in the cache long or only for rendering\n const shouldBeCachedNormally =\n !transformedQuery.eventNotReviewedSinceDate &&\n (transformedQuery.eventTimeFrameFilter === EventTimeFrameFilter.Future ||\n // If difference in days is less than 1 year\n differenceInDays(\n transformedQuery.eventDates?.start == null\n ? MIN_DATE\n : new Date(transformedQuery.eventDates.start),\n transformedQuery.eventDates?.end == null\n ? MAX_DATE\n : new Date(transformedQuery.eventDates.end)\n ) < 365);\n\n const shouldQuery =\n transformedQuery != null &&\n activeAccountWebClientConfig.activeAccountId != null &&\n isQueryInitialized &&\n !disabled;\n\n const query = useQuery({\n queryKey: realQueryKey,\n queryFn: async () => {\n setErrorInfo(undefined);\n\n if (!shouldQuery) {\n return null;\n }\n\n return tryInvokeApi(\n async () => {\n const data = await getCatalogData(\n new CatalogClient(activeAccountWebClientConfig),\n transformedQuery\n );\n\n return data;\n },\n (error) => {\n const { headerDisplay, messageDisplay } = getErrorInfoFromStatusCode(\n error?.status,\n error?.message\n );\n setErrorInfo({\n errorHeader: headerDisplay,\n errorMessage: messageDisplay,\n });\n trackError('CatalogClient.getCatalogData', error, transformedQuery);\n }\n );\n },\n\n enabled: shouldQuery,\n staleTime: shouldBeCachedNormally ? Infinity : 0, // Since we're always refetching on an interval, we don't want query to calculate whether the data is stale\n gcTime: shouldBeCachedNormally ? undefined /* use default */ : 0,\n refetchOnWindowFocus: false,\n networkMode: 'offlineFirst',\n refetchInterval:\n shouldBeCachedNormally && !disableAutoRefresh\n ? DATA_REFRESH_RATE_IN_MILLIS_LONG\n : false, // disable refetch if event timespan is over a year in the past\n });\n const catalogResults = query.data;\n\n const eventIdsToGetItemsFor = useMemo(() => {\n if (transformedQuery.entityIds?.length) {\n return [[NO_GROUP_ID]];\n }\n\n if (!catalogResults) {\n return [] as [string][];\n }\n\n const eventsToGetItemsFor = searchEvents(\n catalogResults,\n searchText,\n performerIds,\n venueIds\n );\n\n let listingCount = 0;\n let salesCount = 0;\n\n (eventsToGetItemsFor ?? []).forEach((ev) => {\n listingCount += ev.counts.listCnt ?? 0;\n salesCount += ev.counts.salesCnt ?? 0;\n });\n\n let isTooManyItems = false;\n if (!ignoreMaxCount && viewMode === InventoryViewMode.FlattenedView) {\n // Only one of these are non-zero\n if (listingCount) {\n isTooManyItems = listingCount > MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS;\n } else if (salesCount) {\n isTooManyItems = salesCount > MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS;\n }\n }\n const results =\n viewMode === InventoryViewMode.FlattenedView\n ? isTooManyItems &&\n // If the catalog shows a count of way too many items and we're actually not filtering to the individual items, don't query at all\n !rest.entityIds?.length &&\n !rest.marketplaceEntityIds?.length\n ? []\n : // For flatten view - we know we're gonna get all of them at once, so just bundle all the event ids in 1 array\n [eventsToGetItemsFor?.map((ev) => ev.event.viagVirtualId)]\n : // For tile view, we only want 1 event per query\n expandedListItems.map((id) => [id]);\n\n // Finally, we need to include the PosEventIds with all the ids, because in some cases\n // the ViagogoVirtualIds do not resolve properly due to the outdated cache, and missing items are returned\n // for merged events\n return results.map((idArray) => {\n const allEvents = eventsToGetItemsFor\n .filter((ev) => idArray.includes(ev.event.viagVirtualId))\n .flatMap((ev) => ev.event.posIds.map((posId) => `old:${posId}`));\n\n return idArray.concat(allEvents);\n });\n }, [\n transformedQuery.entityIds?.length,\n catalogResults,\n searchText,\n performerIds,\n venueIds,\n ignoreMaxCount,\n viewMode,\n rest.entityIds?.length,\n rest.marketplaceEntityIds?.length,\n expandedListItems,\n ]);\n\n const realExpandedDataItemsQueryKey = useMemo(\n () => [queryKey + 'Expanded', transformedQuery],\n [queryKey, transformedQuery]\n );\n\n const shouldQuery2 =\n activeAccountWebClientConfig.activeAccountId != null &&\n transformedQuery != null &&\n !disabled;\n\n const [queryWithExpandedItems, setQueryWithExpandedItems] = useState<\n UseQueryResult[]\n >([]);\n\n const refreshInterval = !disableAutoRefresh\n ? DATA_REFRESH_RATE_IN_MILLIS_SHORT\n : false;\n\n const queryWithExpandedItemsFromHook = useQueries({\n queries: (eventIdsToGetItemsFor ?? []).map((ids) => {\n const queryKey = [...realExpandedDataItemsQueryKey, ...ids.toSorted()];\n return {\n queryKey: queryKey,\n queryFn: async () => {\n if (!shouldQuery2) {\n return null;\n }\n\n return tryInvokeApi(\n async () => {\n const data = await getCatalogDataExpanded?.(\n ids[0] === NO_GROUP_ID ? [] : ids,\n transformedQuery\n );\n if (onCatalogDataExpanded) {\n onExpandedCallbackStatusUpdate(\n queryKey.toString(),\n ExpandedCallbackStatus.Pending\n );\n }\n return data;\n },\n (error: ErrorTypes) => {\n showErrorDialog('CatalogClient.getCatalogDataExpanded', error, {\n trackErrorData: {\n eventIds: ids,\n filterQuery,\n },\n });\n }\n );\n },\n enabled: shouldQuery2,\n staleTime: Infinity, // Since we're always refetching on an interval, we don't want query to calculate whether the data is stale\n refetchOnWindowFocus: false,\n refetchInterval: refreshInterval as number | false,\n };\n }),\n });\n\n const onCatalogDataExpandedCallbackCheck = useCallback(\n async (\n queryResults: UseQueryResult<\n ExpandedEventData | null | undefined,\n Error\n >[]\n ) => {\n if (!onCatalogDataExpanded) {\n return;\n }\n const queryIds = eventIdsToGetItemsFor ?? [];\n for (let index = 0; index < queryIds.length; index++) {\n const ids = queryIds[index];\n const queryKey = [...realExpandedDataItemsQueryKey, ...ids.toSorted()];\n const stringQueryKey = queryKey.toString();\n const queryResult = queryResults[index];\n if (\n expandedCallbackStatus[stringQueryKey] ===\n ExpandedCallbackStatus.Pending\n ) {\n onExpandedCallbackStatusUpdate(\n stringQueryKey,\n ExpandedCallbackStatus.InProgress\n );\n const newData = await onCatalogDataExpanded(\n ids,\n transformedQuery,\n queryResult?.data ?? undefined\n );\n queryClient.setQueryData(queryKey, newData);\n onExpandedCallbackStatusUpdate(\n stringQueryKey,\n ExpandedCallbackStatus.Done\n );\n }\n }\n },\n [\n eventIdsToGetItemsFor,\n expandedCallbackStatus,\n onCatalogDataExpanded,\n onExpandedCallbackStatusUpdate,\n queryClient,\n realExpandedDataItemsQueryKey,\n transformedQuery,\n ]\n );\n\n /**\n * IMPORTANT: This is needed because queryWithExpandedItemsFromHook from useQueries\n * is not a memoized object, so on every render it returns a new array with queryWithExpandedItems,\n * causing the app to re-render.\n */\n useEffect(() => {\n if (!isEqual(queryWithExpandedItems, queryWithExpandedItemsFromHook)) {\n setQueryWithExpandedItems(queryWithExpandedItemsFromHook);\n onCatalogDataExpandedCallbackCheck(queryWithExpandedItemsFromHook);\n return;\n }\n }, [\n onCatalogDataExpandedCallbackCheck,\n queryWithExpandedItems,\n queryWithExpandedItemsFromHook,\n ]);\n\n useEffect(() => {\n if (!catalogResults) {\n return;\n }\n\n const expandedEventsWithData: ExpandedEventData[] = (\n queryWithExpandedItems ?? []\n ).map((r) => r.data ?? {});\n\n const updatedCatalaogResult = updateCatalogResults(\n catalogResults,\n expandedEventsWithData\n );\n if (!isEqual(catalogResults, updatedCatalaogResult)) {\n queryClient.setQueryData(realQueryKey, updatedCatalaogResult);\n }\n }, [queryWithExpandedItems, catalogResults, queryClient, realQueryKey]);\n\n const [eventsTransformed, setEventsTransformed] = useState();\n\n // This to apply client-side filtering before transformation of the data\n useEffect(() => {\n if (catalogResults) {\n const newExpandedData = merge(\n {},\n ...queryWithExpandedItems.map((r) => r.data ?? {})\n ) as ExpandedEventData;\n const transformed = sortEvents(\n catalogResults,\n transformEventData(\n entityType,\n searchEvents(catalogResults, searchText, performerIds, venueIds),\n newExpandedData,\n queryWithExpandedItems.some((q) => q.isLoading)\n ),\n sortBy,\n isSortDescending\n );\n\n if (!isEqual(transformed, eventsTransformed)) {\n setEventsTransformed(transformed);\n }\n }\n }, [\n isSortDescending,\n searchText,\n sortBy,\n transformEventData,\n queryWithExpandedItems,\n eventsTransformed,\n catalogResults,\n performerIds,\n venueIds,\n query.isPending,\n entityType,\n ]);\n\n const refreshCatalog = useCallback(() => {\n queryClient.invalidateQueries({\n queryKey: [queryKey],\n refetchType: 'none', // we don't want to refetch any, we'll manually refetch the active\n });\n return query.refetch();\n }, [query, queryClient, queryKey]);\n\n const refreshExpandedListItems = useCallback(() => {\n queryClient.invalidateQueries({\n queryKey: [queryKey + 'Expanded'],\n refetchType: 'none', // we don't want to refetch any, we'll manually refetch the active\n });\n\n return queryClient.invalidateQueries({\n queryKey: realExpandedDataItemsQueryKey,\n });\n }, [queryClient, queryKey, realExpandedDataItemsQueryKey]);\n\n /**\n * Refreshes the event data for a specific item\n */\n const refreshEventForItems = useCallback(\n (itemIds: ItemIdWithRowVersion[], entityType: ActionOutboxEntityType) => {\n const eventIds = eventsTransformed\n ?.filter((ev) => {\n if (entityType === ActionOutboxEntityType.Listing) {\n return ev.entities.listings?.some((l) =>\n itemIds.some((i) => i.id === l.id && i.rowVer > l.rowVer)\n );\n } else if (entityType === ActionOutboxEntityType.Sale) {\n return ev.entities.sales?.some((s) =>\n itemIds.some((i) => i.id === s.id && i.rowVer > s.rowVer)\n );\n } else if (entityType === ActionOutboxEntityType.Purchase) {\n return ev.entities.ticketGroups?.some((t) =>\n itemIds.some((i) => i.id === t.id && i.rowVer > t.rowVer)\n );\n }\n return false;\n })\n ?.map((ev) => ev.event.viagVirtualId);\n\n if (eventIds?.length) {\n if (viewMode === InventoryViewMode.FlattenedView) {\n queryClient.invalidateQueries({\n queryKey: realExpandedDataItemsQueryKey,\n });\n } else {\n for (const eventId of eventIds) {\n queryClient.invalidateQueries({\n queryKey: [...realExpandedDataItemsQueryKey, eventId],\n });\n }\n }\n }\n },\n [eventsTransformed, queryClient, realExpandedDataItemsQueryKey, viewMode]\n );\n\n const updateExpandedListItems = useCallback(\n (updatedListingsByEvent: { [key: string]: Listing[] }) => {\n const newDatas = queryClient.setQueriesData(\n {\n queryKey: [queryKey + 'Expanded'],\n },\n (oldData: ExpandedEventData | undefined) => {\n if (!oldData) {\n return oldData;\n }\n const newData = { ...oldData };\n Object.entries(updatedListingsByEvent).forEach(([key, value]) => {\n const oldListingsByIds =\n newData[key]?.listings?.reduce(\n (r, l) => {\n r[l.id] = l;\n return r;\n },\n {} as Record\n ) ?? {};\n\n // Filter all the new ones that have row version < the old one\n const newListings = [\n ...value.filter((l) => {\n const oldListing = oldListingsByIds[l.id];\n if (oldListing && oldListing.rowVer > l.rowVer) {\n return false;\n }\n\n return true;\n }),\n ];\n const newListingIdsFlattened = getFlattenedListingIds(newListings);\n\n // Retain listings that are not updated\n newData[key]?.listings?.forEach((originalListing) => {\n let shouldKeep = true;\n if (!originalListing.isLtGrp) {\n if (newListingIdsFlattened.includes(originalListing.id))\n shouldKeep = false;\n } else {\n // If `originalListing` is a listing group\n // there will only be two cases\n // 1. No one listing in `newListingIdsFlattened` show up in the group (keep the group), or\n // 2. All listings in `newListingIdsFlattened` show up in the group (don't keep it, group has been edited or removed)\n const originalListingIdsFlattened = getFlattenedListingIds([\n originalListing,\n ]);\n if (\n originalListingIdsFlattened.some((l) =>\n newListingIdsFlattened.includes(l)\n )\n ) {\n shouldKeep = false;\n }\n }\n\n if (shouldKeep) {\n newListings.push(originalListing);\n }\n });\n\n newData[key] = {\n sales: null,\n listings: newListings,\n ticketGroups: null,\n failedToRetrieveData: false,\n };\n });\n return newData;\n }\n );\n\n // We should only check at first 2 query keys [PrimaryKey, QueryObject]\n const newData = newDatas.find((qk) =>\n isEqual((qk[0] ?? []).slice(0, 2), realExpandedDataItemsQueryKey)\n );\n if (catalogResults && newData) {\n const transformed = sortEvents(\n catalogResults,\n transformEventData(\n entityType,\n searchEvents(catalogResults, searchText, performerIds, venueIds),\n newData[1] as ExpandedEventData,\n false\n ),\n sortBy,\n isSortDescending\n );\n\n setEventsTransformed(transformed);\n }\n },\n [\n queryClient,\n queryKey,\n catalogResults,\n realExpandedDataItemsQueryKey,\n transformEventData,\n entityType,\n searchText,\n performerIds,\n venueIds,\n sortBy,\n isSortDescending,\n ]\n );\n\n const updateExpandedSaleItems = useCallback(\n (updatedListingsByEvent: { [key: string]: Sale[] }) => {\n const newDatas = queryClient.setQueriesData(\n {\n queryKey: [queryKey + 'Expanded'],\n },\n (oldData: ExpandedEventData | undefined) => {\n if (!oldData) {\n return oldData;\n }\n const newData = { ...oldData };\n Object.entries(updatedListingsByEvent).forEach(([key, value]) => {\n const oldSalesByIds =\n newData[key]?.sales?.reduce(\n (r, s) => {\n r[s.id] = s;\n return r;\n },\n {} as Record\n ) ?? {};\n\n // Filter all the new ones that have row version < the old one\n const newSales = [\n ...value.filter((s) => {\n const oldSale = oldSalesByIds[s.id];\n if (oldSale && oldSale.rowVer > s.rowVer) {\n return false;\n }\n\n return true;\n }),\n ];\n const newSaleIds = newSales.map((s) => s.id);\n\n // Retain sales that are not in the newSales\n newData[key]?.sales?.forEach((originalSale) => {\n if (!newSaleIds.includes(originalSale.id)) {\n // new sales doesn't have the original sale, keep it\n newSales.push(originalSale);\n }\n });\n\n newData[key] = {\n sales: newSales,\n listings: null,\n ticketGroups: null,\n failedToRetrieveData: false,\n };\n });\n return newData;\n }\n );\n\n const newData = newDatas.find((qk) =>\n isEqual((qk[0] ?? []).slice(0, 2), realExpandedDataItemsQueryKey)\n );\n if (catalogResults && newData) {\n const transformed = sortEvents(\n catalogResults,\n transformEventData(\n entityType,\n searchEvents(catalogResults, searchText, performerIds, venueIds),\n newData[1] as ExpandedEventData,\n false\n ),\n sortBy,\n isSortDescending\n );\n\n setEventsTransformed(transformed);\n }\n },\n [\n queryClient,\n queryKey,\n catalogResults,\n realExpandedDataItemsQueryKey,\n transformEventData,\n entityType,\n searchText,\n performerIds,\n venueIds,\n sortBy,\n isSortDescending,\n ]\n );\n\n const updateExpandedTicketGroupItems = useCallback(\n (updatedTgsByEvent: { [key: string]: PurchaseOrderTicketGroup[] }) => {\n const newDatas = queryClient.setQueriesData(\n {\n queryKey: [queryKey + 'Expanded'],\n },\n (oldData: ExpandedEventData | undefined) => {\n if (!oldData) {\n return oldData;\n }\n const newData = { ...oldData };\n Object.entries(updatedTgsByEvent).forEach(([key, value]) => {\n const oldTgsByIds =\n newData[key]?.ticketGroups?.reduce(\n (r, t) => {\n r[t.tgId!] = t;\n return r;\n },\n {} as Record\n ) ?? {};\n\n // Filter all the new ones that have row version < the old one\n const newTgs = [\n ...value.filter((t) => {\n const oldTg = oldTgsByIds[t.tgId!];\n if (oldTg && oldTg.rowVer > t.rowVer) {\n return false;\n }\n\n return true;\n }),\n ];\n const newTgIds = newTgs.map((s) => s.tgId!);\n\n // Retain tgs that are not in the newTgs\n newData[key]?.ticketGroups?.forEach((originalTg) => {\n if (!newTgIds.includes(originalTg.tgId!)) {\n // new sales doesn't have the original sale, keep it\n newTgs.push(originalTg);\n }\n });\n\n newData[key] = {\n sales: null,\n listings: null,\n ticketGroups: newTgs,\n failedToRetrieveData: false,\n };\n });\n return newData;\n }\n );\n\n const newData = newDatas.find((qk) =>\n isEqual(qk[0], realExpandedDataItemsQueryKey)\n );\n if (catalogResults && newData) {\n const transformed = sortEvents(\n catalogResults,\n transformEventData(\n entityType,\n searchEvents(catalogResults, searchText, performerIds, venueIds),\n newData[1] as ExpandedEventData,\n false\n ),\n sortBy,\n isSortDescending\n );\n\n setEventsTransformed(transformed);\n }\n },\n [\n queryClient,\n queryKey,\n catalogResults,\n realExpandedDataItemsQueryKey,\n transformEventData,\n entityType,\n searchText,\n performerIds,\n venueIds,\n sortBy,\n isSortDescending,\n ]\n );\n\n const updateItemInEvent = useCallback(\n async (\n item: Listing | Sale | PurchaseOrderTicketGroup,\n entityType: ActionOutboxEntityType\n ) => {\n // Now that we got the listing details, try to get the Event from existing data\n const catalogIdKey = item.viagVirtualId!;\n const eventQuery = queryWithExpandedItems.find(\n (r) => r.data?.[catalogIdKey]\n );\n\n // If we can't find it, go fetch it\n if (eventQuery?.data != null) {\n const event = eventQuery.data[catalogIdKey];\n\n // NOTE - after each refresh - the row version will be zero\n // and direct cache-update will trigger the row-version change until the next refresh\n // this is to make sure async updates to multiple listings/sales of an event do not overwrite each other\n if (entityType === ActionOutboxEntityType.Listing && event.listings) {\n // Because we're manually updating, set all rowVer here to be min 1, and the item to be updated to be min 2\n event.listings.forEach((l) => (l.rowVer = l.rowVer || 1));\n\n // If the event in the catalog has the listings expanded, we'll want to update it\n // with the latest info from the listing details above (this will help update state changes or seat allocations, etc.)\n const index = event.listings.findIndex(\n (s) =>\n s.id === item.id ||\n (s as ListingGroup).groupItems?.some(\n (l) =>\n l.id === item.id ||\n // this is the second level group\n (l as ListingGroup).groupItems?.some(\n (l2) => l2.id === item.id\n )\n )\n );\n\n const oldItem = event.listings[index];\n const lg = oldItem as ListingGroup;\n\n if (oldItem.id === item.id) {\n item.rowVer = oldItem.rowVer + 1; // Increase rowVer to indicate that we updated this recently\n event.listings[index] = { ...oldItem, ...item } as Listing;\n } else if (lg.groupItems != null) {\n // The item is a listing under a group\n const groupListingIndex = lg.groupItems.findIndex(\n (s) => s.id === item.id\n );\n\n if (groupListingIndex < 0) {\n for (const subGroup of lg.groupItems) {\n if (subGroup.isLtGrp) {\n const listingIndex = (\n subGroup as ListingGroup\n ).groupItems.findIndex((s) => s.id === item.id);\n\n if (listingIndex >= 0) {\n const oldItemInGroup = (subGroup as ListingGroup)\n .groupItems[listingIndex];\n item.rowVer = oldItemInGroup.rowVer + 1; // Increase rowVer to indicate that we updated this recently\n\n (subGroup as ListingGroup).groupItems[listingIndex] = {\n ...oldItem,\n ...item,\n } as Listing;\n }\n }\n }\n } else {\n const oldItemInGroup = lg.groupItems[groupListingIndex];\n item.rowVer = oldItemInGroup.rowVer + 1; // Increase rowVer to indicate that we updated this recently\n\n lg.groupItems[groupListingIndex] = {\n ...oldItem,\n ...item,\n } as Listing;\n }\n }\n\n event.listings = [...event.listings]; // this so the table will forced to be re-rendered\n updateExpandedListItems({ [catalogIdKey]: event.listings });\n } else if (entityType === ActionOutboxEntityType.Sale && event.sales) {\n // Because we're manually updating, set all rowVer here to be min 1, and the item to be updated to be min 2\n event.sales.forEach((s) => (s.rowVer = s.rowVer || 1));\n\n // If the event in the catalog has the sales expanded, we'll want to update it\n // with the latest info from the sale details above (this will help update state changes or seat allocations, etc.)\n const index = event.sales.findIndex((s) => s.id === item.id);\n const oldItem = event.sales[index];\n item.rowVer = oldItem.rowVer + 1; // Increase rowVer to indicate that we updated this recently\n\n event.sales[index] = { ...oldItem, ...item } as Sale;\n event.sales = [...event.sales]; // this so the table will forced to be re-rendered\n\n updateExpandedSaleItems({ [catalogIdKey]: event.sales });\n } else if (\n entityType === ActionOutboxEntityType.Purchase &&\n event.ticketGroups\n ) {\n // Because we're manually updating, set all rowVer here to be min 1, and the item to be updated to be min 2\n event.ticketGroups.forEach((s) => (s.rowVer = s.rowVer || 1));\n\n // If the event in the catalog has the sales expanded, we'll want to update it\n // with the latest info from the sale details above (this will help update state changes or seat allocations, etc.)\n const index = event.ticketGroups.findIndex(\n (t) => t.tgId === (item as PurchaseOrderTicketGroup).tgId\n );\n const oldItem = event.ticketGroups[index];\n item.rowVer = oldItem.rowVer + 1; // Increase rowVer to indicate that we updated this recently\n\n event.ticketGroups[index] = {\n ...oldItem,\n ...item,\n } as PurchaseOrderTicketGroup;\n event.ticketGroups = [...event.ticketGroups]; // this so the table will forced to be re-rendered\n\n updateExpandedTicketGroupItems({\n [catalogIdKey]: event.ticketGroups,\n });\n }\n }\n },\n [\n queryWithExpandedItems,\n updateExpandedListItems,\n updateExpandedSaleItems,\n updateExpandedTicketGroupItems,\n ]\n );\n\n const allEventIds = useMemo(\n () =>\n eventsTransformed?.map((ev) => ({\n viagVirtualId: ev.event.viagVirtualId,\n performerId: ev.event.perfId,\n venueId: ev.event.venueId,\n })),\n [eventsTransformed]\n );\n\n useEffect(() => {\n if (query.failureReason) {\n const { headerDisplay, messageDisplay } = getErrorInfoFromStatusCode(\n null,\n query.failureReason?.toString()\n );\n setErrorInfo({\n errorHeader: headerDisplay,\n errorMessage: messageDisplay,\n });\n } else if (errorInfo) {\n setErrorInfo(undefined);\n }\n }, [errorInfo, query.failureReason]);\n\n return (\n r.isLoading), // whether the query to get items are loading\n data: catalogResults ?? undefined,\n errorInfo,\n eventsTransformed,\n allEventIds,\n refreshCatalog,\n updateItemInEvent,\n eventsExpansion: {\n ...eventsExpansion,\n refreshExpandedListItems,\n },\n updateExpandedListItems,\n refreshEventForItems,\n totalPurchaseCount: catalogResults?.purchaseCount,\n }}\n >\n {children}\n \n );\n}\n\nexport function CatalogDataContextProvider<\n TQuery extends EntityWithTicketsQuery & QueryWithViewMode,\n>(props: CatalogDataContextProviderProps) {\n const hasCatalogV2Feature = useUserHasFeature(Feature.CatalogCacheStrategyV2);\n\n return hasCatalogV2Feature ? (\n \n ) : (\n \n );\n}\n","import { useContext } from 'react';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Feature } from 'src/WebApiController';\n\nimport {\n CatalogDataContextV1,\n CatalogDataContextV2,\n} from './CatalogDataContext.types';\n\nexport const useCatalogDataContext = () => {\n const hasCatalogV2Feature = useUserHasFeature(Feature.CatalogCacheStrategyV2);\n\n return useContext(\n hasCatalogV2Feature ? CatalogDataContextV2 : CatalogDataContextV1\n );\n};\n","import { ComponentProps, useCallback, useMemo, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { DownloadIcon, IconsFill, ProcessingIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n Feature,\n ListingClient,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport { useFilterQueryState } from '../MainFilterBar/useFilterQueryState';\nimport { ButtonWithIcon } from './ButtonWithIcon';\n\nexport const ExportInventoryButton = ({\n textContentId,\n iconOnlyMode,\n textOnly,\n variant,\n ...props\n}: {\n textContentId?: ContentId;\n iconOnlyMode?: boolean;\n textOnly?: boolean;\n variant?: string;\n} & Omit, 'icon' | 'onClick'>) => {\n const { eventsTransformed } = useCatalogDataContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const { filterQuery } = useFilterQueryContext();\n const { filterQueryWithEventIds } = useFilterQueryState(\n ActionOutboxEntityType.Listing\n );\n const [isLoading, setIsLoading] = useState(false);\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n const isButtonDisabled = isLoading || eventsTransformed == null;\n\n const onExportButtonClicked = useCallback(async () => {\n setIsLoading(true);\n await tryInvokeApi(\n async () => {\n const result = await new ListingClient(\n activeAccountWebClientConfig\n ).exportListings({\n item1: filterQueryWithEventIds,\n item2: {\n hasAutoPricingFeature,\n },\n });\n\n if (result.data) {\n const url = URL.createObjectURL(result.data);\n const a = document.createElement('a');\n a.setAttribute('href', url);\n a.setAttribute('download', result.fileName ?? '');\n a.click();\n URL.revokeObjectURL(url);\n a.remove();\n }\n },\n (error) => {\n showErrorDialog('ListingClient.exportListings', error, {\n trackErrorData: { filterQuery },\n });\n },\n () => setIsLoading(false)\n );\n }, [\n activeAccountWebClientConfig,\n filterQuery,\n filterQueryWithEventIds,\n hasAutoPricingFeature,\n showErrorDialog,\n ]);\n\n const iconFill = useMemo(\n () =>\n props.disabled\n ? IconsFill.textDisabled\n : iconOnlyMode || (variant ?? 'text') !== 'regular'\n ? IconsFill.textBrand\n : IconsFill.textInverted,\n [iconOnlyMode, props.disabled, variant]\n );\n return (\n \n \n \n ) : (\n \n )\n ) : null\n }\n iconOnlyMode={iconOnlyMode}\n variant={variant ?? 'text'}\n textContentId={textContentId || ContentId.Export}\n />\n );\n};\n","import { ComponentProps, useCallback, useMemo, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { DownloadIcon, IconsFill, ProcessingIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { downloadFileFromBlob } from 'src/utils/fileUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { PurchaseClient, PurchaseOrderQuery } from 'src/WebApiController';\n\nimport { ButtonWithIcon } from './ButtonWithIcon';\n\nexport const ExportPurchasesButton = ({\n filterQuery,\n textContentId,\n iconOnlyMode,\n textOnly,\n variant,\n isEventView,\n ...props\n}: {\n filterQuery: PurchaseOrderQuery;\n textContentId?: ContentId;\n iconOnlyMode?: boolean;\n textOnly?: boolean;\n variant?: string;\n isEventView: boolean;\n} & Omit, 'icon' | 'onClick'>) => {\n const { eventsTransformed } = useCatalogDataContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const [isLoading, setIsLoading] = useState(false);\n const isButtonDisabled = isLoading || eventsTransformed == null;\n\n const onExportButtonClicked = useCallback(async () => {\n setIsLoading(true);\n await tryInvokeApi(\n async () => {\n const result = await new PurchaseClient(\n activeAccountWebClientConfig\n ).exportPurchases(filterQuery, isEventView);\n\n if (result.data) {\n downloadFileFromBlob(result.fileName ?? 'purchase.csv', result.data);\n }\n },\n (error) => {\n showErrorDialog('PurchaseClient.exportPurchases', error, {\n trackErrorData: { filterQuery, isEventView },\n });\n },\n () => setIsLoading(false)\n );\n }, [activeAccountWebClientConfig, filterQuery, isEventView, showErrorDialog]);\n\n const iconFill = useMemo(\n () =>\n props.disabled\n ? IconsFill.textDisabled\n : iconOnlyMode || (variant ?? 'text') !== 'regular'\n ? IconsFill.textBrand\n : IconsFill.textInverted,\n [iconOnlyMode, props.disabled, variant]\n );\n return (\n \n \n \n ) : (\n \n )\n ) : null\n }\n iconOnlyMode={iconOnlyMode}\n variant={variant ?? 'text'}\n textContentId={textContentId || ContentId.Export}\n />\n );\n};\n","import { ComponentProps, useCallback, useMemo, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { DownloadIcon, IconsFill, ProcessingIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n SaleClient,\n SaleQuery,\n} from 'src/WebApiController';\n\nimport { useFilterQueryState } from '../MainFilterBar/useFilterQueryState';\nimport { ButtonWithIcon } from './ButtonWithIcon';\n\nexport const ExportSalesButton = ({\n textContentId,\n textOnly,\n iconOnlyMode,\n variant,\n ...props\n}: Omit, 'icon' | 'onClick'> & {\n textOnly?: boolean;\n}) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const { filterQueryWithEventIds } = useFilterQueryState(\n ActionOutboxEntityType.Sale\n );\n const [isLoading, setIsLoading] = useState(false);\n\n const onExportButtonClicked = useCallback(async () => {\n setIsLoading(true);\n await tryInvokeApi(\n async () => {\n const result = await new SaleClient(\n activeAccountWebClientConfig\n ).exportSales(filterQueryWithEventIds);\n\n if (result.data) {\n const url = URL.createObjectURL(result.data);\n const a = document.createElement('a');\n a.setAttribute('href', url);\n a.setAttribute('download', result.fileName ?? '');\n a.click();\n URL.revokeObjectURL(url);\n a.remove();\n }\n },\n (error) => {\n showErrorDialog('SaleClient.exportSales', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => setIsLoading(false)\n );\n }, [activeAccountWebClientConfig, filterQueryWithEventIds, showErrorDialog]);\n\n const iconFill = useMemo(\n () =>\n props.disabled\n ? IconsFill.textDisabled\n : iconOnlyMode || (variant ?? 'text') !== 'regular'\n ? IconsFill.textBrand\n : IconsFill.textInverted,\n [iconOnlyMode, props.disabled, variant]\n );\n return (\n \n \n \n ) : (\n \n )\n ) : null\n }\n iconOnlyMode={iconOnlyMode}\n variant={variant ?? 'text'}\n textContentId={textContentId || ContentId.Export}\n />\n );\n};\n","import { ComponentProps } from 'react';\nimport { vars } from 'src/core/themes';\nimport { ReloadIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { ButtonWithIcon } from './ButtonWithIcon';\n\nexport const ReloadButton = ({\n textContentId,\n ...props\n}: Omit, 'icon'>) => {\n return (\n }\n textContentId={textContentId || ContentId.Reload}\n />\n );\n};\n","import { ComponentProps } from 'react';\nimport { vars } from 'src/core/themes';\nimport {\n IconsFill,\n MobileTicketIcon,\n MobileTransferIcon,\n} from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { ButtonWithIcon } from './ButtonWithIcon';\n\nexport const TransferButton = ({\n textContentId,\n iconOnlyMode,\n variant,\n eTicketUrlOnly,\n ...props\n}: Omit, 'icon'> & {\n eTicketUrlOnly?: boolean;\n}) => {\n const Icon = eTicketUrlOnly ? MobileTicketIcon : MobileTransferIcon;\n return (\n \n }\n iconOnlyMode={iconOnlyMode}\n variant={variant}\n textContentId={\n textContentId ||\n (eTicketUrlOnly ? ContentId.AddUrl : ContentId.Transfer)\n }\n />\n );\n};\n","import { ComponentProps } from 'react';\nimport { vars } from 'src/core/themes';\nimport { IconsFill, UploadIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { ButtonWithIcon } from './ButtonWithIcon';\n\nexport const UploadButton = ({\n textContentId,\n iconOnlyMode,\n variant,\n ...props\n}: Omit, 'icon'>) => {\n return (\n \n }\n iconOnlyMode={iconOnlyMode}\n variant={variant}\n textContentId={textContentId || ContentId.Upload}\n />\n );\n};\n","import * as Sentry from '@sentry/react';\nimport { ColumnDef } from '@tanstack/react-table';\nimport { useCallback } from 'react';\nimport { Link, useLocation, useNavigate } from 'react-router-dom';\nimport { IconButton } from 'src/components/Buttons';\nimport { EventDateDisplay } from 'src/components/Events/EventInfo';\nimport {\n COLUMN_DEFAULT_SIZE_BASE,\n COLUMN_DEFAULT_SIZE_L,\n COLUMN_DEFAULT_SIZE_SM,\n COLUMN_DEFAULT_SIZE_XL,\n COLUMN_DEFAULT_SIZE_XXL,\n COLUMN_MAX_SIZE,\n COLUMN_MIN_SIZE,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { vars } from 'src/core/themes';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { useColumnUserSetting } from 'src/hooks/useColumnUserSetting';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { FormatOption } from 'src/modals/EditTableColumns';\nimport { FullPageIcon } from 'src/svgs';\nimport { EventDisplayCell } from 'src/tables/EventsTable/configs/EventDisplayCell';\nimport { LocationDisplayCell } from 'src/tables/EventsTable/configs/LocationDisplayCell';\nimport { VenueDisplayCell } from 'src/tables/EventsTable/configs/VenueDisplayCell';\nimport { TableShimmeringDiv } from 'src/tables/Table';\nimport {\n DemandDashboardEventIdQueryParam,\n DemandDashboardIsOnSaleEventQueryParam,\n} from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ON_SALE_EVENT_TABLE_COLUMN_ID_CONTENT_ID } from 'src/utils/constants/contentIdMaps';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport {\n compareEventsByDate,\n compareEventsByDateStr,\n compareEventsByLocation,\n compareEventsByName,\n compareEventsByVenue,\n getFormattedEventName,\n} from 'src/utils/eventWithDataUtils';\nimport {\n getGroupingLabelForString,\n getGroupLabelForDates,\n getGroupLabelForNumber,\n} from 'src/utils/groupingUtils';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\nimport { sortMoney } from 'src/utils/tableUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { DateTimeRange, Event, Feature, UiMoney } from 'src/WebApiController';\n\nimport {\n OnSaleEventsTableColumnId,\n OnSaleEventWithMetrics,\n} from './OnSaleEventView.types';\n\nconst QUANTITY_COLUMN_MIN_SIZE = 50;\nconst QUANTITY_COLUMN_MAX_SIZE = 80;\nconst COST_COLUMN_MIN_SIZE = 50;\nconst COST_COLUMN_MAX_SIZE = 80;\n\nexport const ON_SALE_EVENTS_TABLE_COLUMNS_CONFIG: Partial<\n Record>\n> = {\n [OnSaleEventsTableColumnId.Checkbox]: {\n id: OnSaleEventsTableColumnId.Checkbox,\n header: '',\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_DEFAULT_SIZE_SM,\n maxSize: COLUMN_DEFAULT_SIZE_SM,\n enableSorting: false,\n enableResizing: false,\n cell: function Cell({ row: { original, getIsSelected } }) {\n const { setShiftKeyGroupSelectionState } = useMultiSelectionContext();\n const isSelected = getIsSelected();\n\n if (!original?.event) {\n return ;\n }\n\n return (\n \n {\n setShiftKeyGroupSelectionState(original.event.viagVirtualId);\n }}\n />\n \n );\n },\n },\n [OnSaleEventsTableColumnId.Event]: {\n id: OnSaleEventsTableColumnId.Event,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_XXL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => data,\n cell: function Cell({ getValue, row: { original } }) {\n const { metrics, ...rest } = getValue();\n if (!original?.event) {\n return ;\n }\n\n return ;\n },\n sortingFn: compareEventsByName,\n getGroupingValue: (row) => {\n const eventName = getFormattedEventName({\n event: row?.event,\n performer: row?.performer,\n venue: row?.venue,\n useShortName: true,\n }).join(' ');\n return getGroupingLabelForString(eventName);\n },\n },\n\n [OnSaleEventsTableColumnId.Venue]: {\n id: OnSaleEventsTableColumnId.Venue,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => data,\n cell: function Cell({ getValue, row: { original } }) {\n const { metrics, ...rest } = getValue();\n if (!original?.event) {\n return ;\n }\n return ;\n },\n sortingFn: compareEventsByVenue,\n getGroupingValue: (item: OnSaleEventWithMetrics | null) =>\n getGroupingLabelForString(item?.venue?.name ?? ''),\n },\n [OnSaleEventsTableColumnId.Location]: {\n id: OnSaleEventsTableColumnId.Location,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => data,\n cell: function Cell({ getValue, row: { original } }) {\n const { metrics, ...rest } = getValue();\n if (!original?.event) {\n return ;\n }\n return ;\n },\n sortingFn: compareEventsByLocation,\n getGroupingValue: (item: OnSaleEventWithMetrics | null) =>\n getGroupingLabelForString(item?.venue?.descr ?? ''),\n },\n [OnSaleEventsTableColumnId.OnSaleDate]: {\n id: OnSaleEventsTableColumnId.OnSaleDate,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_L,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.event?.rawOnSaleDate,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n\n const value = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_Month_DD_YY_Time } =\n useColumnUserSetting(columnId, SectionType.OnSaleEvents);\n\n if (!original?.event) {\n return ;\n }\n\n const date = applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n isDateTime: true,\n }) as string;\n\n return (\n \n {userDefinedPrecision === FormatOption.DateTime_MonthDD_Time ? (\n \n ) : (\n
    {date}
    \n )}\n
    \n );\n },\n sortingFn: compareEventsByDateStr,\n getGroupingValue: (item: OnSaleEventWithMetrics | null) =>\n getGroupLabelForDates(item?.event.rawOnSaleDate),\n },\n [OnSaleEventsTableColumnId.Date]: {\n id: OnSaleEventsTableColumnId.Date,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_L,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.event?.dates,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n\n const value = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_Month_DD_YY_Time } =\n useColumnUserSetting(columnId, SectionType.OnSaleEvents);\n\n if (!original?.event) {\n return ;\n }\n\n const date = applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value?.start,\n isDateTime: true,\n }) as string;\n\n return (\n \n {userDefinedPrecision === FormatOption.DateTime_MonthDD_Time ? (\n \n ) : (\n
    {date}
    \n )}\n
    \n );\n },\n sortingFn: compareEventsByDate,\n getGroupingValue: (item: OnSaleEventWithMetrics | null) =>\n getGroupLabelForDates(item?.event.dates.start),\n },\n [OnSaleEventsTableColumnId.RawPreSaleDate]: {\n id: OnSaleEventsTableColumnId.RawPreSaleDate,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_L,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.event?.rawPreSaleDate,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n\n const value = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_Month_DD_YY_Time } =\n useColumnUserSetting(columnId, SectionType.OnSaleEvents);\n\n if (!original?.event) {\n return ;\n }\n\n const date = applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n isDateTime: true,\n }) as string;\n\n return (\n \n {userDefinedPrecision === FormatOption.DateTime_MonthDD_Time ? (\n \n ) : (\n
    {date}
    \n )}\n
    \n );\n },\n sortingFn: compareEventsByDateStr,\n getGroupingValue: (item: OnSaleEventWithMetrics | null) =>\n getGroupLabelForDates(item?.event.rawPreSaleDate),\n },\n [OnSaleEventsTableColumnId.ListingCount]: {\n id: OnSaleEventsTableColumnId.ListingCount,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n minSize: QUANTITY_COLUMN_MIN_SIZE,\n maxSize: QUANTITY_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.listingCount,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.OnSaleEvents\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n })}\n \n );\n },\n getGroupingValue: (item: OnSaleEventWithMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.listingCount ?? 0),\n },\n [OnSaleEventsTableColumnId.TicketCount]: {\n id: OnSaleEventsTableColumnId.TicketCount,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n minSize: QUANTITY_COLUMN_MIN_SIZE,\n maxSize: QUANTITY_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.ticketCount,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.OnSaleEvents\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n })}\n \n );\n },\n getGroupingValue: (item: OnSaleEventWithMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.ticketCount ?? 0),\n },\n [OnSaleEventsTableColumnId.UnitNetProceedsMin]: {\n id: OnSaleEventsTableColumnId.UnitNetProceedsMin,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.unitNetProceedsUsdMin,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.OnSaleEvents\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value?.amt,\n currencyCode: value?.currency,\n })}\n \n );\n },\n sortingFn: sortMoney,\n getGroupingValue: (item: OnSaleEventWithMetrics | null) =>\n getGroupLabelForNumber(\n item?.metrics?.unitNetProceedsUsdMin?.amt ?? 0,\n item?.metrics?.unitNetProceedsUsdMin?.disp ?? '$'\n ),\n },\n [OnSaleEventsTableColumnId.UnitNetProceedsP25]: {\n id: OnSaleEventsTableColumnId.UnitNetProceedsP25,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.unitNetProceedsUsdP25,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.Events\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value?.amt,\n currencyCode: value?.currency,\n })}\n \n );\n },\n sortingFn: sortMoney,\n getGroupingValue: (item: OnSaleEventWithMetrics | null) =>\n getGroupLabelForNumber(\n item?.metrics?.unitNetProceedsUsdP25?.amt ?? 0,\n item?.metrics?.unitNetProceedsUsdP25?.disp ?? '$'\n ),\n },\n [OnSaleEventsTableColumnId.UnitNetProceedsP50]: {\n id: OnSaleEventsTableColumnId.UnitNetProceedsP50,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n minSize: COST_COLUMN_MIN_SIZE,\n maxSize: COST_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.unitNetProceedsUsdP50,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.OnSaleEvents\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value?.amt,\n currencyCode: value?.currency,\n })}\n \n );\n },\n sortingFn: sortMoney,\n getGroupingValue: (item: OnSaleEventWithMetrics | null) =>\n getGroupLabelForNumber(\n item?.metrics?.unitNetProceedsUsdP50?.amt ?? 0,\n item?.metrics?.unitNetProceedsUsdP50?.disp ?? '$'\n ),\n },\n [OnSaleEventsTableColumnId.VisitsLastHour]: {\n id: OnSaleEventsTableColumnId.VisitsLastHour,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n minSize: QUANTITY_COLUMN_MIN_SIZE,\n maxSize: QUANTITY_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.eventVisits?.lastHour,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.OnSaleEvents\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n })}\n \n );\n },\n getGroupingValue: (item: OnSaleEventWithMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.eventVisits?.lastHour ?? 0),\n },\n [OnSaleEventsTableColumnId.VisitsLastDay]: {\n id: OnSaleEventsTableColumnId.VisitsLastDay,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n minSize: QUANTITY_COLUMN_MIN_SIZE,\n maxSize: QUANTITY_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.eventVisits?.lastDay,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.OnSaleEvents\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n })}\n \n );\n },\n getGroupingValue: (item: OnSaleEventWithMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.eventVisits?.lastDay ?? 0),\n },\n [OnSaleEventsTableColumnId.VisitsLast3Days]: {\n id: OnSaleEventsTableColumnId.VisitsLast3Days,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n minSize: QUANTITY_COLUMN_MIN_SIZE,\n maxSize: QUANTITY_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.eventVisits?.lastThreeDays,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.OnSaleEvents\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n })}\n \n );\n },\n getGroupingValue: (item: OnSaleEventWithMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.eventVisits?.lastThreeDays ?? 0),\n },\n [OnSaleEventsTableColumnId.VisitsLast7Days]: {\n id: OnSaleEventsTableColumnId.VisitsLast7Days,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n minSize: QUANTITY_COLUMN_MIN_SIZE,\n maxSize: QUANTITY_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.eventVisits?.lastSevenDays,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.OnSaleEvents\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n })}\n \n );\n },\n getGroupingValue: (item: OnSaleEventWithMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.eventVisits?.lastSevenDays ?? 0),\n },\n\n [OnSaleEventsTableColumnId.TransactionsLastHour]: {\n id: OnSaleEventsTableColumnId.TransactionsLastHour,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n minSize: QUANTITY_COLUMN_MIN_SIZE,\n maxSize: QUANTITY_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.eventTransactions?.lastHour,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.OnSaleEvents\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n })}\n \n );\n },\n getGroupingValue: (item: OnSaleEventWithMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.eventTransactions?.lastHour ?? 0),\n },\n [OnSaleEventsTableColumnId.TransactionsLastDay]: {\n id: OnSaleEventsTableColumnId.TransactionsLastDay,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n minSize: QUANTITY_COLUMN_MIN_SIZE,\n maxSize: QUANTITY_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.eventTransactions?.lastDay,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.OnSaleEvents\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n })}\n \n );\n },\n getGroupingValue: (item: OnSaleEventWithMetrics | null) =>\n getGroupLabelForNumber(item?.metrics?.eventTransactions?.lastDay ?? 0),\n },\n [OnSaleEventsTableColumnId.TransactionsLast3Days]: {\n id: OnSaleEventsTableColumnId.TransactionsLast3Days,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n minSize: QUANTITY_COLUMN_MIN_SIZE,\n maxSize: QUANTITY_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.eventTransactions?.lastThreeDays,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.OnSaleEvents\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n })}\n \n );\n },\n getGroupingValue: (item: OnSaleEventWithMetrics | null) =>\n getGroupLabelForNumber(\n item?.metrics?.eventTransactions?.lastThreeDays ?? 0\n ),\n },\n [OnSaleEventsTableColumnId.TransactionsLast7Days]: {\n id: OnSaleEventsTableColumnId.TransactionsLast7Days,\n header: ({ column: { id: columnId } }) => (\n \n \n \n ),\n minSize: QUANTITY_COLUMN_MIN_SIZE,\n maxSize: QUANTITY_COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.metrics?.eventTransactions?.lastSevenDays,\n cell: function Cell({ getValue, row: { original }, column }) {\n const columnId = column.id;\n const value = getValue();\n const { userDefinedPrecision } = useColumnUserSetting(\n columnId,\n SectionType.OnSaleEvents\n );\n if (!original?.metrics) {\n return ;\n }\n return (\n \n {applyNumberFormatting({\n precision: userDefinedPrecision,\n inputNumber: value,\n })}\n \n );\n },\n getGroupingValue: (item: OnSaleEventWithMetrics | null) =>\n getGroupLabelForNumber(\n item?.metrics?.eventTransactions?.lastSevenDays ?? 0\n ),\n },\n [OnSaleEventsTableColumnId.Action]: {\n id: OnSaleEventsTableColumnId.Action,\n enableSorting: false,\n enableResizing: true,\n header: function Cell() {\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n\n if (hasTablePinActionColumnFeature) {\n return null;\n }\n\n return (\n \n \n \n );\n },\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n accessorFn: (data) => data?.event ?? null,\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue();\n if (!original?.event) {\n return ;\n }\n return ;\n },\n },\n};\n\nexport const OnSaleEventActionsCell = ({ event }: { event: Event }) => {\n const navigate = useNavigate();\n const location = useLocation();\n\n const eventUrlV2 = `/inventory/event/v2?${DemandDashboardEventIdQueryParam}=${event.viagVirtualId}&${DemandDashboardIsOnSaleEventQueryParam}=true`;\n\n const onViewClick = useCallback(\n (eventUrl: string) => {\n if (event) {\n const span = Sentry.startSpan(\n { name: 'Event Discovery', op: 'event_clicked' },\n (span: Sentry.Span) => {\n span.setAttribute('event_id', event.viagId ?? 0);\n return span;\n }\n );\n span.end();\n window.location.replace(`#${event.viagVirtualId}`);\n setTimeout(() => {\n navigate(eventUrl, {\n state: {\n returnUrl: `${location.pathname}${location.search}#${event.viagVirtualId}`,\n },\n });\n }, 10);\n }\n },\n [event, navigate, location.pathname, location.search]\n );\n\n return (\n \n {\n if (e.button === 0 && e.getModifierState('Control') === false) {\n // Perform like a button click when it's a left-click (and no Ctrl)\n // Else the click will be whatever
    does\n e.preventDefault();\n e.stopPropagation();\n\n onViewClick(eventUrlV2);\n }\n }}\n >\n \n }\n titleContentId={ContentId.OpenEventPageV2InDevelopment}\n />\n \n \n );\n};\n","import { ColumnDef } from '@tanstack/react-table';\nimport { ON_SALE_EVENTS_TABLE_COLUMNS_CONFIG } from 'src/navigations/Routes/OnSaleEvent/OnSaleEventView.constants';\nimport {\n OnSaleEventsTableColumnId,\n OnSaleEventWithMetrics,\n} from 'src/navigations/Routes/OnSaleEvent/OnSaleEventView.types';\nimport {\n customColumnDef as customColumnDefEvent,\n EVENTS_TABLE_COLUMNS_CONFIG,\n EventWithDataAndMetrics,\n} from 'src/tables/EventsTable/configs/EventsTableColumnsConfig';\nimport {\n customColumnDef as customColumnDefListingReport,\n LISTING_REPORT_TABLE_COLUMNS_CONFIG,\n tagColumnDef as tagColumnDefListingReport,\n} from 'src/tables/ListingTable/configs/ListingReportTableColumnsConfig';\nimport {\n customColumnDef as customColumnDefListing,\n getListingTableColumnConfigs,\n tagColumnDef as tagColumnDefListing,\n} from 'src/tables/ListingTable/configs/ListingTableColumnsConfig';\nimport { LISTING_TABLE_FLATTENED_COLUMNS_CONFIG } from 'src/tables/ListingTable/configs/ListingTableFlattenedColumnsConfig';\nimport { ListingWithEvent } from 'src/tables/ListingTable/ListingTable.types';\nimport { PURCHASE_TABLE_COLUMNS_CONFIG } from 'src/tables/PurchaseTable/configs/PurchaseTableColumnsConfig';\nimport {\n customColumnDef as customColumnDefSaleReport,\n SALE_REPORT_TABLE_COLUMNS_CONFIG,\n tagColumnDef as tagColumnDefSaleReport,\n} from 'src/tables/SalesTable/configs/SaleReportTableColumnsConfig';\nimport {\n customColumnDef as customColumnDefSale,\n SALE_TABLE_COLUMNS_CONFIG,\n tagColumnDef as tagColumnDefSale,\n} from 'src/tables/SalesTable/configs/SaleTableColumnsConfig';\nimport { SALE_TABLE_FLATTENED_COLUMNS_CONFIG } from 'src/tables/SalesTable/configs/SaleTableFlattenedColumnsConfig';\nimport { SaleWithEvent } from 'src/tables/SalesTable/SalesTable.type';\nimport { EventsTableColumnId } from 'src/utils/columns/events/eventsColumnUtils.types';\nimport {\n GROUP_BY_TO_PRIMARY_COLUMN_ID as GROUP_BY_TO_PRIMARY_COLUMN_ID_LISTING,\n GROUP_BY_TO_VISIBLE_COLUMN_IDS as GROUP_BY_TO_VISIBLE_COLUMN_IDS_LISTINGS,\n NON_METRIC_LISTING_REPORT_TABLE_COLUMN_IDS,\n} from 'src/utils/columns/inventory/inventoryColumnUtils.constants';\nimport { CustomMarketplacePaymentsColumn } from 'src/utils/columns/payments/paymentsCustomColumnUtils.types';\nimport { PurchasesTableColumnId } from 'src/utils/columns/purchases/purchasesColumnUtils.types';\nimport { CustomPurchasesColumn } from 'src/utils/columns/purchases/purchasesCustomColumnUtils.types';\nimport {\n SalesReportTableColumnId,\n SalesTableColumnId,\n SalesTableFlattenedColumnId,\n} from 'src/utils/columns/sales/salesColumnUtils.types';\nimport {\n GROUP_BY_TO_PRIMARY_COLUMN_ID as GROUP_BY_TO_PRIMARY_COLUMN_ID_SALES,\n GROUP_BY_TO_VISIBLE_COLUMN_IDS as GROUP_BY_TO_VISIBLE_COLUMN_IDS_SALES,\n NON_METRIC_SALES_REPORT_TABLE_COLUMN_IDS,\n} from 'src/utils/columns/sales/salesReportColumnUtils.constants';\nimport {\n AdCampaignEntity,\n AdGroup,\n FeatureDetail,\n MarketplaceSalePayment,\n PurchaseOrder,\n ReportGroupBy,\n Tag,\n UserDetail,\n} from 'src/WebApiController';\n\nimport {\n ListingReportMetricsWithGroupBy,\n SaleReportMetricsWithGroupBy,\n} from '../reportsUtils';\nimport { SectionType } from '../types/sectionType';\nimport { hasFeatures } from '../userUtils';\nimport { AdCampaignsListingsColumn as CustomAdCampaignsColumn } from './adCampaigns/adCampaignsCustomColumnUtils.types';\nimport { AdGroupsListingsColumn as CustomAdGroupsColumn } from './adGroups/adGroupsCustomColumnUtils.types';\nimport { getColumnPersonalization } from './columnPersonalizationUtils';\nimport {\n ColumnPersonalizationFlags,\n GetListingColumnConfigById,\n} from './columnUtils.types';\nimport {\n CustomEventsColumn,\n CustomOnSaleEventsColumn,\n} from './events/eventsCustomColumnUtils.types';\nimport {\n ListingReportTableColumnId,\n ListingTableColumnId,\n ListingTableFlattenedColumnId,\n} from './inventory/inventoryColumnUtils.types';\nimport { CustomListingColumn } from './inventory/inventoryCustomColumnUtils.types';\nimport { CustomSalesColumn } from './sales/salesCustomColumnUtils.types';\n\nexport const getColumnConfigById = ({\n id,\n customColumns,\n sectionType,\n reportingTags,\n}: {\n id: string;\n sectionType: SectionType;\n customColumns?: (\n | CustomSalesColumn\n | CustomListingColumn\n | CustomEventsColumn\n | CustomPurchasesColumn\n | CustomAdCampaignsColumn\n | CustomAdGroupsColumn\n | CustomMarketplacePaymentsColumn\n | CustomOnSaleEventsColumn\n )[];\n reportingTags?: Tag[];\n}): {\n personalization: ColumnPersonalizationFlags;\n definition:\n | ColumnDef\n | ColumnDef\n | ColumnDef\n | ColumnDef\n | ColumnDef\n | ColumnDef\n | ColumnDef\n | ColumnDef\n | ColumnDef\n | ColumnDef\n | undefined;\n} => {\n const matchingCustomColumn = (customColumns ?? []).find((c) => c.id === id);\n const matchingTag = (reportingTags ?? []).find((t) => t.key === id);\n\n const tableColumns = getListingTableColumnConfigs();\n\n const { customColumnDef, tagColumnDef, tableColumnsConfig } =\n sectionType === SectionType.Listings\n ? {\n customColumnDef: customColumnDefListing,\n tagColumnDef: tagColumnDefListing,\n tableColumnsConfig: tableColumns[id as ListingTableColumnId],\n }\n : sectionType === SectionType.ListingsFlattened\n ? {\n customColumnDef: customColumnDefListing,\n tagColumnDef: tagColumnDefListing,\n tableColumnsConfig:\n tableColumns[id as ListingTableColumnId] ||\n LISTING_TABLE_FLATTENED_COLUMNS_CONFIG[\n id as ListingTableFlattenedColumnId\n ],\n }\n : sectionType === SectionType.ListingsReport\n ? {\n customColumnDef: customColumnDefListingReport,\n tagColumnDef: tagColumnDefListingReport,\n tableColumnsConfig:\n LISTING_REPORT_TABLE_COLUMNS_CONFIG[\n id as ListingReportTableColumnId\n ],\n }\n : sectionType === SectionType.Sales\n ? {\n customColumnDef: customColumnDefSale,\n tagColumnDef: tagColumnDefSale,\n tableColumnsConfig:\n SALE_TABLE_COLUMNS_CONFIG[id as SalesTableColumnId],\n }\n : sectionType === SectionType.SalesFlattened\n ? {\n customColumnDef: customColumnDefSale,\n tagColumnDef: tagColumnDefSale,\n tableColumnsConfig:\n SALE_TABLE_COLUMNS_CONFIG[id as SalesTableColumnId] ||\n SALE_TABLE_FLATTENED_COLUMNS_CONFIG[\n id as SalesTableFlattenedColumnId\n ],\n }\n : sectionType === SectionType.SalesReport\n ? {\n customColumnDef: customColumnDefSaleReport,\n tagColumnDef: tagColumnDefSaleReport,\n tableColumnsConfig:\n SALE_REPORT_TABLE_COLUMNS_CONFIG[id as SalesReportTableColumnId],\n }\n : sectionType === SectionType.OnSaleEvents\n ? {\n customColumnDef: customColumnDefEvent,\n tagColumnDef: undefined,\n tableColumnsConfig:\n ON_SALE_EVENTS_TABLE_COLUMNS_CONFIG[\n id as OnSaleEventsTableColumnId\n ],\n }\n : {\n // SectionType.Event\n customColumnDef: customColumnDefEvent,\n tagColumnDef: undefined,\n tableColumnsConfig:\n EVENTS_TABLE_COLUMNS_CONFIG[id as EventsTableColumnId],\n };\n\n const definition = matchingCustomColumn\n ? customColumnDef(id)\n : matchingTag\n ? tagColumnDef?.(matchingTag.key)\n : tableColumnsConfig;\n\n const personalization = getColumnPersonalization({\n id,\n sectionType,\n matchingCustomColumn,\n matchingTag,\n });\n\n return {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n definition: definition as any, // FIXME: type\n personalization,\n };\n};\n\nexport const filterColumnsByFeatures = (\n columns: string[],\n sectionType: SectionType,\n customColumns?: (\n | CustomSalesColumn\n | CustomListingColumn\n | CustomEventsColumn\n | CustomPurchasesColumn\n | CustomAdCampaignsColumn\n | CustomAdGroupsColumn\n | CustomMarketplacePaymentsColumn\n | CustomOnSaleEventsColumn\n )[],\n user?: UserDetail | null,\n featureDetails?: FeatureDetail[] | null,\n reportingTags?: Tag[],\n groupBy?: ReportGroupBy,\n viewMode?: string\n) => {\n return columns.filter((c) => {\n if (reportingTags?.find((t) => t.key === c) != null) {\n return true;\n }\n const customColumn = customColumns?.find((col) => col.id === c);\n if (customColumn) {\n const dependentColumns = customColumn.dependency;\n if (!dependentColumns) return true;\n\n // Inherit required features from dependent preset columns\n return (dependentColumns as string[]).every((d) => {\n const columnDef = getColumnPersonalization({ id: d, sectionType });\n const hasFeatureForColumn =\n columnDef.requiredFeatures.length === 0 ||\n hasFeatures(user, featureDetails, columnDef.requiredFeatures);\n return hasFeatureForColumn;\n });\n }\n\n if (groupBy) {\n if (sectionType === SectionType.SalesReport) {\n if (\n NON_METRIC_SALES_REPORT_TABLE_COLUMN_IDS.includes(\n c as SalesReportTableColumnId\n ) &&\n !GROUP_BY_TO_VISIBLE_COLUMN_IDS_SALES[groupBy]?.includes(\n c as SalesReportTableColumnId\n ) &&\n GROUP_BY_TO_PRIMARY_COLUMN_ID_SALES[groupBy] !== c\n ) {\n return false;\n }\n } else if (sectionType === SectionType.ListingsReport) {\n if (\n NON_METRIC_LISTING_REPORT_TABLE_COLUMN_IDS.includes(\n c as ListingReportTableColumnId\n ) &&\n !GROUP_BY_TO_VISIBLE_COLUMN_IDS_LISTINGS[groupBy]?.includes(\n c as ListingReportTableColumnId\n ) &&\n GROUP_BY_TO_PRIMARY_COLUMN_ID_LISTING[groupBy] !== c\n ) {\n return false;\n }\n }\n }\n\n const columnDef = getColumnPersonalization({ id: c, sectionType });\n const hasFeatureForColumn =\n columnDef.requiredFeatures.length === 0 ||\n hasFeatures(user, featureDetails, columnDef.requiredFeatures);\n\n const visibleInCurrentViewMode =\n viewMode == null ||\n columnDef.visibleViewModes.length === 0 ||\n columnDef.visibleViewModes.includes(viewMode);\n\n return hasFeatureForColumn && visibleInCurrentViewMode;\n });\n};\n\nexport const getListingColumnConfigById = (\n id: string,\n customColumns?: CustomListingColumn[],\n reportingTags?: Tag[]\n): GetListingColumnConfigById => {\n return getColumnConfigById({\n id,\n sectionType: SectionType.Listings,\n customColumns,\n reportingTags,\n }) as GetListingColumnConfigById;\n};\n\nexport const getListingFlattenedColumnConfigById = (\n id: string,\n customColumns?: CustomListingColumn[],\n reportingTags?: Tag[]\n): GetListingColumnConfigById => {\n return getColumnConfigById({\n id,\n sectionType: SectionType.ListingsFlattened,\n customColumns,\n reportingTags,\n }) as GetListingColumnConfigById;\n};\n\ntype GetListingReportColumnConfigById = {\n personalization: ColumnPersonalizationFlags;\n definition: ColumnDef | undefined;\n};\n\nexport const getListingReportColumnConfigById = (\n id: string,\n customColumns?: CustomListingColumn[],\n reportingTags?: Tag[]\n): GetListingReportColumnConfigById => {\n return getColumnConfigById({\n id,\n sectionType: SectionType.ListingsReport,\n customColumns,\n reportingTags,\n }) as GetListingReportColumnConfigById;\n};\n\ntype GetSaleColumnConfigById = {\n personalization: ColumnPersonalizationFlags;\n definition: ColumnDef;\n};\n\nexport const getSaleColumnConfigById = (\n id: string,\n customColumns?: CustomSalesColumn[],\n reportingTags?: Tag[]\n): GetSaleColumnConfigById => {\n return getColumnConfigById({\n id,\n sectionType: SectionType.Sales,\n customColumns,\n reportingTags,\n }) as GetSaleColumnConfigById;\n};\n\nexport const getSaleFlattenedColumnConfigById = (\n id: string,\n customColumns?: CustomSalesColumn[],\n reportingTags?: Tag[]\n): GetSaleColumnConfigById => {\n return getColumnConfigById({\n id,\n sectionType: SectionType.SalesFlattened,\n customColumns,\n reportingTags,\n }) as GetSaleColumnConfigById;\n};\n\ntype GetSaleReportColumnConfigById = {\n personalization: ColumnPersonalizationFlags;\n definition: ColumnDef;\n};\n\nexport const getSaleReportColumnConfigById = (\n id: string,\n customColumns?: CustomSalesColumn[],\n reportingTags?: Tag[]\n): GetSaleReportColumnConfigById => {\n return getColumnConfigById({\n id,\n sectionType: SectionType.SalesReport,\n customColumns,\n reportingTags,\n }) as GetSaleReportColumnConfigById;\n};\n\ntype GetEventsColumnConfigById = {\n personalization: ColumnPersonalizationFlags;\n definition: ColumnDef;\n};\ntype GetOnSaleEventsColumnConfigById = {\n personalization: ColumnPersonalizationFlags;\n definition: ColumnDef;\n};\n\nexport const getEventsColumnConfigById = (\n id: string,\n customColumns?: CustomEventsColumn[]\n): GetEventsColumnConfigById => {\n return getColumnConfigById({\n id,\n sectionType: SectionType.Events,\n customColumns,\n reportingTags: undefined,\n }) as GetEventsColumnConfigById;\n};\n\nexport const getOnSaleEventsColumnConfigById = (\n id: string,\n customColumns?: CustomOnSaleEventsColumn[]\n): GetOnSaleEventsColumnConfigById => {\n return getColumnConfigById({\n id,\n sectionType: SectionType.OnSaleEvents,\n customColumns,\n reportingTags: undefined,\n }) as GetOnSaleEventsColumnConfigById;\n};\n\ntype GetPurchasesColumnConfigById = {\n personalization: ColumnPersonalizationFlags;\n definition: ColumnDef;\n};\n\nexport const getPurchasesColumnConfigById = (\n id: string,\n customColumns?: CustomPurchasesColumn[]\n): GetPurchasesColumnConfigById => {\n return getColumnConfigById({\n id,\n sectionType: SectionType.Purchases,\n customColumns,\n reportingTags: undefined,\n }) as GetPurchasesColumnConfigById;\n};\n\nexport const defaultListingColumnsConfig = Object.values(\n getListingTableColumnConfigs()\n)\n .filter((item) => {\n const columnConfig = getListingColumnConfigById(\n item.id as ListingTableColumnId\n );\n return (\n !columnConfig.personalization.isHiddenByDefault &&\n (columnConfig.personalization.isConfigurable ||\n columnConfig.personalization.isRequired)\n );\n })\n .map((column) => column.id as ListingTableColumnId);\n\nconst DEFAULT_LISTING_FLATTENED_COLUMNS_FROM_LISTING_COLUMNS = [\n ListingTableColumnId.Seating,\n ListingTableColumnId.TicketCount,\n ListingTableColumnId.UnsoldQuantity,\n ListingTableColumnId.UnitCost,\n ListingTableColumnId.ListPrice,\n ListingTableColumnId.AllInPrice,\n ListingTableColumnId.DeliveryType,\n ListingTableColumnId.InHandDate,\n ListingTableColumnId.Actions,\n];\n\nexport const defaultListingFlattenedColumnsConfig = [\n ...Object.values(LISTING_TABLE_FLATTENED_COLUMNS_CONFIG)\n .filter((item) => {\n const columnConfig = getListingFlattenedColumnConfigById(\n item.id as string\n );\n return (\n !columnConfig.personalization.isHiddenByDefault &&\n (columnConfig.personalization.isConfigurable ||\n columnConfig.personalization.isRequired)\n );\n })\n .map((column) => column.id as ListingTableColumnId),\n ...DEFAULT_LISTING_FLATTENED_COLUMNS_FROM_LISTING_COLUMNS,\n];\n\nexport const defaultSalesColumnsConfig = Object.values(\n SALE_TABLE_COLUMNS_CONFIG\n)\n .filter((item) => {\n const columnConfig = getSaleColumnConfigById(item.id as SalesTableColumnId);\n return (\n !columnConfig.personalization.isHiddenByDefault &&\n (columnConfig.personalization.isConfigurable ||\n columnConfig.personalization.isRequired)\n );\n })\n .map((column) => column.id as SalesTableColumnId);\n\nconst DEFAULT_SALES_FLATTENED_COLUMNS_FROM_SALES_COLUMNS = [\n SalesTableColumnId.Seating,\n SalesTableColumnId.OrderDate,\n SalesTableColumnId.QuantitySold,\n SalesTableColumnId.Proceeds,\n SalesTableColumnId.Status,\n SalesTableColumnId.TicketType,\n SalesTableColumnId.InHandDate,\n SalesTableColumnId.Actions,\n];\n\nexport const defaultSalesFlattenedColumnsConfig = [\n ...Object.values(SALE_TABLE_FLATTENED_COLUMNS_CONFIG)\n .filter((item) => {\n const columnConfig = getSaleFlattenedColumnConfigById(item.id as string);\n return (\n !columnConfig.personalization.isHiddenByDefault &&\n (columnConfig.personalization.isConfigurable ||\n columnConfig.personalization.isRequired)\n );\n })\n .map((column) => column.id as SalesTableColumnId),\n ...DEFAULT_SALES_FLATTENED_COLUMNS_FROM_SALES_COLUMNS,\n];\n\nexport const defaultEventsColumnsConfig = Object.values(\n EVENTS_TABLE_COLUMNS_CONFIG\n)\n .filter((item) => {\n const columnConfig = getEventsColumnConfigById(\n item.id as EventsTableColumnId\n );\n return (\n !columnConfig.personalization.isHiddenByDefault &&\n (columnConfig.personalization.isConfigurable ||\n columnConfig.personalization.isRequired)\n );\n })\n .map((column) => column.id as EventsTableColumnId);\n\nexport const defaultPurchasesColumnsConfig = Object.values(\n PURCHASE_TABLE_COLUMNS_CONFIG\n)\n .filter((item) => {\n const columnConfig = getPurchasesColumnConfigById(\n item.id as PurchasesTableColumnId\n );\n return (\n !columnConfig.personalization.isHiddenByDefault &&\n (columnConfig.personalization.isConfigurable ||\n columnConfig.personalization.isRequired)\n );\n })\n .map((column) => column.id as PurchasesTableColumnId);\n\nexport const defaultOnSaleEventsColumnsConfig = Object.values(\n ON_SALE_EVENTS_TABLE_COLUMNS_CONFIG\n)\n .filter((item) => {\n const columnConfig = getOnSaleEventsColumnConfigById(\n item.id as OnSaleEventsTableColumnId\n );\n return (\n !columnConfig.personalization.isHiddenByDefault &&\n (columnConfig.personalization.isConfigurable ||\n columnConfig.personalization.isRequired)\n );\n })\n .map((column) => column.id as OnSaleEventsTableColumnId);\n\nexport const defaultPurchaseEventEnabledColumnsConfig = [\n PurchasesTableColumnId.VendorOrderId,\n PurchasesTableColumnId.Seating,\n PurchasesTableColumnId.Tickets,\n PurchasesTableColumnId.Shipment,\n PurchasesTableColumnId.Cost,\n PurchasesTableColumnId.Actions,\n];\n\ntype GetMarketplacePaymentColumnConfigById = {\n personalization: ColumnPersonalizationFlags;\n definition: ColumnDef;\n};\n\nexport const getMarketplacePaymentColumnConfigById = (\n id: string,\n customColumns?: CustomMarketplacePaymentsColumn[],\n reportingTags?: Tag[]\n): GetMarketplacePaymentColumnConfigById => {\n return getColumnConfigById({\n id,\n sectionType: SectionType.MarketplacePaymentsTable,\n customColumns,\n reportingTags,\n }) as GetMarketplacePaymentColumnConfigById;\n};\n","import { Updater } from '@tanstack/react-table';\nimport { debounce, once } from 'lodash-es';\nimport React, {\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { getColumnConfigById } from 'src/utils/columns/columnUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { UserSetting } from 'src/WebApiController';\n\nimport { useServerUserSetting } from '../../hooks/useUserSetting';\nimport {\n ColumnResizingContextType,\n CustomColumnWidthsType,\n} from './ColumnResizingContext.types';\n\nexport const createColumnResizingContext = once(() =>\n React.createContext({} as ColumnResizingContextType)\n);\n\nexport function useColumnResizingContext() {\n return useContext(createColumnResizingContext());\n}\n\nconst USER_SETTING_TO_SECTION_TYPE = {\n [UserSetting.InventoryColumnWidths]: SectionType.Listings,\n [UserSetting.SaleColumnWidths]: SectionType.Sales,\n [UserSetting.PurchaseColumnWidths]: SectionType.Purchases,\n [UserSetting.PurchaseEventColumnWidths]: SectionType.PurchaseEvent,\n [UserSetting.InventoryReportColumnWidths]: SectionType.ListingsReport,\n [UserSetting.SaleReportColumnWidths]: SectionType.SalesReport,\n [UserSetting.EventsColumnWidths]: SectionType.Events,\n [UserSetting.MarketplacePaymentsColumnsWidth]:\n SectionType.MarketplacePaymentsTable,\n [UserSetting.OnSaleEventColumnsWidths]: SectionType.OnSaleEvents,\n};\n\nexport const ColumnResizingContextProvider = ({\n userSettingId,\n children,\n}: {\n userSettingId?:\n | UserSetting.InventoryColumnWidths\n | UserSetting.SaleColumnWidths\n | UserSetting.PurchaseColumnWidths\n | UserSetting.PurchaseEventColumnWidths\n | UserSetting.InventoryReportColumnWidths\n | UserSetting.SaleReportColumnWidths\n | UserSetting.EventsColumnWidths\n | UserSetting.MarketplacePaymentsColumnsWidth\n | UserSetting.OnSaleEventColumnsWidths;\n children: ReactNode;\n}) => {\n const ColumnResizingContext = createColumnResizingContext();\n const sectionType =\n userSettingId != null\n ? USER_SETTING_TO_SECTION_TYPE[userSettingId]\n : undefined;\n\n const isInitializedRef = useRef(false);\n\n const {\n value: serverCustomColumnWidths,\n setUserSetting: setServerCustomColumnWidths,\n } = useServerUserSetting({\n id: userSettingId,\n });\n\n const [customColumnWidths, setCustomColumnWidths] =\n useState({});\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedSetServerColumnWidths = useCallback(\n debounce(\n (newWidth: Record) =>\n setServerCustomColumnWidths(newWidth),\n 1000\n ),\n [setServerCustomColumnWidths]\n );\n\n const onColumnSizingChange = (\n updaterOrValue: Updater\n ) => {\n if (!(updaterOrValue instanceof Function)) return;\n\n const state = updaterOrValue({});\n if (!Object.keys(state).length) return;\n\n const [key, width] = Object.entries(\n state as Record\n )[0];\n const definition =\n sectionType != null\n ? getColumnConfigById({\n id: key,\n sectionType,\n }).definition\n : null;\n\n const minSize = definition?.minSize ?? 0;\n const maxSize = definition?.maxSize;\n const currentSize = customColumnWidths[key] ?? 0;\n let updatedSize = Math.max(width, minSize);\n if (maxSize != null) {\n updatedSize = Math.min(updatedSize, maxSize);\n }\n\n if (updatedSize === currentSize) return;\n\n const newWidths = {\n ...customColumnWidths,\n [key]: updatedSize,\n };\n\n setCustomColumnWidths(newWidths);\n debouncedSetServerColumnWidths(newWidths);\n };\n\n useEffect(() => {\n if (isInitializedRef.current || !serverCustomColumnWidths) return;\n isInitializedRef.current = true;\n\n const serverCustomColumnWidthsWithoutZeroValues = Object.entries(\n serverCustomColumnWidths\n ).reduce(\n (acc, [key, value]) => {\n if (!value) return acc;\n return { ...acc, [key]: value };\n },\n {} as Record\n );\n setCustomColumnWidths(serverCustomColumnWidthsWithoutZeroValues);\n }, [serverCustomColumnWidths]);\n\n return (\n \n {children}\n \n );\n};\n","import { Column } from '@tanstack/react-table';\nimport { CSSProperties } from 'react';\n\nexport const itemSizeDefault = (el: HTMLElement) =>\n el.getBoundingClientRect().height;\n\nexport const getCommonPinningStyles = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n column: Column\n): CSSProperties => {\n const isPinned = column.getIsPinned();\n return {\n left: isPinned === 'left' ? `${column.getStart('left')}px` : undefined,\n right: isPinned === 'right' ? `${column.getAfter('right')}px` : undefined,\n position: isPinned ? 'sticky' : 'relative',\n zIndex: 0,\n background: isPinned ? 'inherit' : undefined,\n };\n};\n","import clsx from 'clsx';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\n\nimport {\n gradient,\n gradientDark,\n gradientLight,\n wrapper,\n} from './PinnedCellGradient.css';\n\ninterface PinnedCellGradientProps {\n height: string | number;\n}\n\nexport const PinnedCellGradient = ({ height }: PinnedCellGradientProps) => {\n const { isDarkMode } = useSiteTheme();\n\n return (\n
    \n
    \n \n );\n};\n","import { Cell } from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport { CSSProperties, ReactNode, useRef } from 'react';\nimport { vars } from 'src/core/themes';\nimport { PosTableData } from 'src/tables/Table';\nimport { pinnedCell, tableTd } from 'src/tables/Table/components/TableTd.css';\nimport { PosGroupingTableTd } from 'src/tables/Table/Table.css';\nimport { getCommonPinningStyles } from 'src/tables/Table/Table.utils';\nimport { PinnedCellGradient } from 'src/tables/Table/TableCells/PinnedCellGradient';\n\ninterface TableTdProps {\n cell: Cell;\n tableCellStyle?: CSSProperties;\n children: ReactNode;\n isLargeDesktop?: boolean;\n isResizeEnabled?: boolean;\n isGrouping?: boolean;\n classNames?: string;\n}\n\nexport const TableTd = ({\n children,\n tableCellStyle,\n cell,\n isLargeDesktop,\n isResizeEnabled,\n isGrouping,\n classNames,\n ...props\n}: TableTdProps) => {\n const isPinned = cell.column.getIsPinned();\n const cellRef = useRef(null);\n\n return (\n \n {isPinned && (\n \n )}\n {children}\n \n );\n};\n","import { forwardRef, RefObject } from 'react';\nimport { Components } from 'react-virtuoso';\n\nimport * as styles from '../Table.css';\n\nexport const PosGroupedVirtuosoGroup: Components['Group'] = forwardRef(\n function GroupedVirtuosoGroup({ context, children, ...props }, ref) {\n return (\n
    } {...props}>\n \n \n {children}\n \n
    \n
    \n );\n }\n);\n","import { RowData } from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport { useEffect, useRef } from 'react';\nimport { useActiveFocusContext } from 'src/contexts/ActiveFocusContext/ActiveFocusContext';\nimport { PosVirtuosoTableRowProps } from 'src/tables/Table/PosVirtuosoTableComponent/PosVirtuosoTableContext';\n\nimport * as styles from '../Table.css';\n\nexport const PosVirtuosoTableRow = ({\n context,\n children,\n ...props\n}: PosVirtuosoTableRowProps) => {\n const {\n tableRowStyle,\n tableRows,\n rowWrapper,\n RowComponent,\n onRowShiftSelect,\n } = context || {};\n const inputRef = useRef(null);\n const { activeItem, onKeyDownHandler } = useActiveFocusContext();\n\n useEffect(() => {\n if (activeItem?.id && inputRef.current && activeItem.id === props.item.id) {\n inputRef.current.focus();\n inputRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n inputRef.current.focus();\n }\n }, [activeItem, props.item.id]);\n\n const rowProps = {\n className: clsx(styles.tableRow, {\n [styles.isSelectedRow]: props.item.getIsSelected(),\n [styles.isSubRow]: props.item.depth > 0,\n }),\n style: {\n ...tableRowStyle,\n width: '99%',\n },\n ref: inputRef,\n key: props.item.id,\n onClick: (e: React.MouseEvent) => {\n e.stopPropagation();\n props.item.toggleSelected();\n onRowShiftSelect?.(tableRows, props.item, props['data-item-index']);\n },\n onKeyDown:\n activeItem != null\n ? (e: React.KeyboardEvent) =>\n onKeyDownHandler(e, props['data-index'], tableRows)\n : undefined,\n tabIndex:\n activeItem != null\n ? props.item.getIsSelected() || props.item.id === activeItem?.id\n ? 0\n : -1\n : undefined,\n ...props,\n };\n\n children = rowWrapper\n ? rowWrapper(props.item.original, children, props['data-index'])\n : children;\n\n if (RowComponent) {\n return (\n \n {children}\n \n );\n }\n\n return {children};\n};\n","import { forwardRef, RefObject } from 'react';\nimport { Components } from 'react-virtuoso';\nimport { PosTableData } from 'src/tables/Table';\nimport { PosGroupedVirtuosoContext } from 'src/tables/Table/GroupedVirtuosoTable/PosGroupedVirtuosoContext';\nimport { PosVirtuosoTableRow } from 'src/tables/Table/PosVirtuosoTableComponent/PosVirtuosoTableRow';\n\nimport * as styles from '../Table.css';\n\nexport const PosGroupedVirtuosoItem: Components['Item'] = forwardRef(\n function GroupedVirtuosoItem({ context, children, item, ...props }, ref) {\n const { tableRows } = context as PosGroupedVirtuosoContext;\n const itemIndex = props['data-item-index'];\n const row = tableRows[itemIndex];\n return (\n
    } {...props}>\n \n \n \n {children}\n \n \n
    \n
    \n );\n }\n);\n","import { vars } from 'src/core/themes';\nimport { ArrowDownIcon, ArrowUpIcon } from 'src/svgs/Viagogo';\n\nimport * as styles from './SortButton.css';\nimport {\n ArrowType,\n getNextSortStatus,\n SortButtonProps,\n SortStatus,\n} from './SortButton.utils';\n\ntype GetIconClass = (\n arrow: ArrowType,\n disabled: boolean,\n status: SortStatus\n) => string;\nconst getIconClass: GetIconClass = (arrow, disabled, status) => {\n if (!disabled) {\n // If asc order, up arrow is active state\n if (status === SortStatus.ASC && arrow === ArrowType.UP) {\n return styles.sortActive;\n }\n\n // If desc order, down arrow is active state\n if (status === SortStatus.DESC && arrow === ArrowType.DOWN) {\n return styles.sortActive;\n }\n }\n\n return styles.sortInactive;\n};\n\nexport function SortButton({\n onClick,\n sortStatus,\n disabled = false,\n allowUnsorted = true,\n}: SortButtonProps) {\n const upArrowClass = getIconClass(ArrowType.UP, disabled, sortStatus);\n const downArrowClass = getIconClass(ArrowType.DOWN, disabled, sortStatus);\n\n return (\n {\n !disabled && onClick?.(getNextSortStatus(sortStatus, allowUnsorted));\n }}\n className={styles.sortIconContainer}\n >\n \n \n \n );\n}\n","import { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { Colors } from 'src/core/themes/constants/colors';\n\nimport { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function TableSortingIcon({\n width,\n height,\n isActive,\n ...props\n}: PosIconProps & {\n isActive?: boolean;\n}) {\n const { isDarkMode } = useSiteTheme();\n const fill = isDarkMode\n ? isActive\n ? Colors.indigo600\n : Colors.neutral075\n : isActive\n ? Colors.indigo100\n : Colors.neutral500;\n\n const stroke = isDarkMode\n ? isActive\n ? Colors.neutral025\n : Colors.neutral100\n : isActive\n ? Colors.white\n : Colors.neutral100;\n\n return (\n \n \n \n \n );\n}\n","import clsx from 'clsx';\nimport { vars } from 'src/core/themes';\nimport { TableSortingIcon } from 'src/svgs/TableSortingIcon';\n\nimport * as styles from './SortButton.css';\nimport {\n getNextSortStatus,\n SortButtonProps,\n SortStatus,\n} from './SortButton.utils';\n\nexport function SortButtonV2({\n onClick,\n sortStatus,\n disabled = false,\n allowUnsorted = true,\n}: SortButtonProps) {\n return (\n {\n !disabled && onClick?.(getNextSortStatus(sortStatus, allowUnsorted));\n }}\n className={styles.sortIconContainerV2}\n >\n \n \n );\n}\n","import { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { Colors } from 'src/core/themes/constants/colors';\n\nimport { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function TableFilterIcon({\n width,\n height,\n isActive,\n ...props\n}: PosIconProps & {\n isActive?: boolean;\n}) {\n const { isDarkMode } = useSiteTheme();\n\n const fill = isDarkMode\n ? isActive\n ? Colors.indigo600\n : Colors.neutral075\n : isActive\n ? Colors.indigo100\n : Colors.neutral500;\n\n const stroke = isDarkMode\n ? isActive\n ? Colors.neutral025\n : Colors.neutral100\n : isActive\n ? Colors.white\n : Colors.neutral100;\n return (\n \n \n \n \n \n \n );\n}\n","import { useState } from 'react';\nimport { vars } from 'src/core/themes';\nimport { TableFilterIcon } from 'src/svgs/TableFilterIcon';\n\nexport function ColumnFilterButton({ isActive }: { isActive?: boolean }) {\n const [isPressed, setIsPressed] = useState(false);\n\n return (\n setIsPressed(true)}\n onMouseUp={() => {\n setIsPressed(false);\n }}\n />\n );\n}\n","import { Header } from '@tanstack/react-table';\nimport type { Table } from '@tanstack/table-core';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { ListingNote, Seating } from 'src/WebApiController';\n\nexport const useColumnFilter = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n table: Table,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header: Header\n) => {\n const canColumnFilter = header.column.getCanFilter();\n const columnFilterVariant = header.column.columnDef.meta?.columnFilterVariant;\n const uniqueValueVariant = header.column.columnDef.meta?.uniqueValueVariant;\n\n const canMultiSelect = columnFilterVariant == null;\n\n const { setSelectionMode, selectionMode } = useMultiSelectionContext();\n\n const tableFlatRows = table.getCoreRowModel().flatRows;\n\n // Values from PosSelect have to be string - so if comparing against number values we need weak equality\n const columnFilterOptionsContent = useMemo(() => {\n if (!canColumnFilter || !canMultiSelect) {\n // No need to calculate anything here\n return {};\n }\n\n let uniqueValues: [string, string][] = [];\n\n if (uniqueValueVariant == 'seatingSection') {\n const values = new Set();\n tableFlatRows.forEach((row) => {\n // If the row has subrows, skip\n if (row.getLeafRows().length == 0) {\n const value = row.getValue(header.column.id);\n if (value) {\n const { seating } = value as { seating: Seating };\n if (seating) {\n values.add(seating.section);\n }\n }\n }\n });\n uniqueValues = Array.from(values).map((value) => [value, value]);\n } else if (uniqueValueVariant == 'seatTraits') {\n const values: ListingNote[] = [];\n tableFlatRows.forEach((row) => {\n // If the row has subrows, skip\n if (row.getLeafRows().length == 0) {\n const value = row.getValue(header.column.id);\n if (value) {\n const listingNotes = value as ListingNote[] | null | undefined;\n if (listingNotes) {\n listingNotes.forEach((note) => {\n if (\n !values.some((v) => v.listingNoteId === note.listingNoteId)\n ) {\n values.push(note);\n }\n });\n }\n }\n }\n });\n uniqueValues = values.map((value) => [\n value.listingNoteId.toString(),\n value.listingNoteText,\n ]);\n } else {\n const values: string[] = [];\n tableFlatRows.forEach((row) => {\n // If the row has subrows, skip\n if (row.getLeafRows().length == 0) {\n const value = row.getValue(header.column.id);\n if (\n value &&\n values.every(\n (v) =>\n v.toLocaleLowerCase() !== value.toString().toLocaleLowerCase()\n )\n ) {\n values.push(value.toString());\n }\n }\n });\n\n uniqueValues = values\n .filter((value) => !!value?.trim())\n .map((value) => [value, value]);\n }\n\n return uniqueValues.reduce(\n (acc, value) => {\n if (value) {\n acc[value[0]] = value[1];\n }\n return acc;\n },\n {} as Record\n );\n }, [\n canColumnFilter,\n canMultiSelect,\n header.column,\n tableFlatRows,\n uniqueValueVariant,\n ]);\n\n const filterValue = header.column.getFilterValue();\n\n const isColumnFilterActive = useMemo(() => {\n if (!filterValue) {\n return false;\n }\n\n if (canMultiSelect) {\n return !!(filterValue as unknown[]).length;\n } else {\n return (\n (filterValue as [number, number])?.[0] != null ||\n (filterValue as [number, number])?.[1] != null\n );\n }\n }, [canMultiSelect, filterValue]);\n\n const setFilterValueWrapper = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (updater: any) => {\n // Clear the selection\n setSelectionMode(selectionMode);\n header.column.setFilterValue(updater);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [header.column]\n );\n\n // Consolidate filter value to undefined - no need to keep invalid values like [null, null]\n // Makes it easy for any potential consumers to check if the filter is active on a table level\n useEffect(() => {\n if (!isColumnFilterActive && filterValue != null) {\n header.column.setFilterValue(undefined);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filterValue, isColumnFilterActive]);\n\n return {\n columnFilterOptionsContent,\n canMultiSelect,\n isColumnFilterActive,\n setColumnFilterValue: setFilterValueWrapper,\n filterValue,\n };\n};\n","import { Content, useContent } from 'src/contexts/ContentContext';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, Popover, Stack } from 'src/core/ui';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './ColumnHeader.css';\n\nexport const ColumnRangeFilterInput = ({\n filterValue,\n setFilterValue,\n}: {\n filterValue: [number | undefined, number | undefined] | undefined;\n setFilterValue: (\n value: [number | undefined, number | undefined] | undefined\n ) => void;\n}) => {\n const hasFilterValue = filterValue?.[0] != null || filterValue?.[1] != null;\n const minText = useContent(ContentId.Min);\n const maxText = useContent(ContentId.Max);\n\n return (\n e.stopPropagation()}\n >\n \n {\n const v = parseInt(e.target.value);\n const oldValue = filterValue;\n\n const newMinValue = e.target.value ? v : undefined;\n const newMaxValue =\n oldValue?.[1] != null\n ? e.target.value\n ? Math.max(v, oldValue[1])\n : oldValue[1]\n : undefined;\n\n setFilterValue([newMinValue, newMaxValue]);\n }}\n placeholder={minText}\n onClick={(e) => e.stopPropagation()}\n />\n {\n const v = parseInt(e.target.value);\n\n const newMaxValue = e.target.value ? v : undefined;\n const newMinValue =\n filterValue?.[0] != null\n ? e.target.value\n ? Math.min(v, filterValue[0])\n : filterValue[0]\n : undefined;\n\n setFilterValue([newMinValue, newMaxValue]);\n }}\n placeholder={maxText}\n onClick={(e) => e.stopPropagation()}\n />\n \n\n \n {\n setFilterValue(undefined);\n }}\n disabled={!hasFilterValue}\n >\n \n \n\n \n \n \n \n \n );\n};\n","import { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { TooltipPopover } from 'src/core/ui';\nimport { ColumnFilterButton } from 'src/core/ui/ColumnFilterButton';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { useColumnFilter } from '../hooks/useColumnFilter';\nimport { TableHeaderProps } from './ColumnHeader.types';\nimport { ColumnRangeFilterInput } from './ColumnRangeFilterInput';\n\nexport const ColumnHeaderFilter = ({ table, header }: TableHeaderProps) => {\n const {\n isColumnFilterActive,\n columnFilterOptionsContent,\n canMultiSelect,\n filterValue,\n setColumnFilterValue,\n } = useColumnFilter(table, header);\n\n return (\n <>\n {canMultiSelect ? (\n setColumnFilterValue(values)}\n onClick={(e) => e.stopPropagation()}\n enableEmptySelection\n valueOptionsContent={columnFilterOptionsContent}\n showSelectedOptionsFirst\n childrenAsTrigger\n placeholderText={ContentId.All}\n searchable={Object.keys(columnFilterOptionsContent).length > 10}\n >\n \n \n ) : (\n \n }\n >\n \n \n )}\n \n );\n};\n","import { flexRender } from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport React, { useRef, useState } from 'react';\nimport { useColumnResizingContext } from 'src/contexts/ColumnResizingContext/ColumnResizingContext';\nimport { vars } from 'src/core/themes';\nimport { SortButton, SortButtonV2 } from 'src/core/ui/SortButton';\nimport { SortStatus } from 'src/core/ui/SortButton/SortButton.utils';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { pinnedCell } from 'src/tables/Table/components/TableTd.css';\nimport { PinnedCellGradient } from 'src/tables/Table/TableCells/PinnedCellGradient';\nimport { Feature } from 'src/WebApiController';\nimport styled from 'styled-components/macro';\n\nimport { getCommonPinningStyles } from '../Table.utils';\nimport * as styles from './ColumnHeader.css';\nimport { resizerWidth } from './ColumnHeader.css';\nimport { TableHeaderProps } from './ColumnHeader.types';\nimport { ColumnHeaderFilter } from './ColumnHeaderFilter';\n\nfunction getSortStatus(canSort: boolean, sortOrder: string | boolean) {\n if (!canSort || !sortOrder) {\n return SortStatus.UNSORTED;\n }\n\n return sortOrder === 'asc' ? SortStatus.ASC : SortStatus.DESC;\n}\n\nexport const ColumnHeader = ({ table, header, style }: TableHeaderProps) => {\n const headerRef = useRef(null);\n const canSort = header.column.getCanSort();\n const canColumnFilter = header.column.getCanFilter();\n const sortStatus = getSortStatus(canSort, header.column.getIsSorted());\n const isLargeDesktop = useMatchMedia('largeDesktop');\n const { isResizeEnabled } = useColumnResizingContext();\n const isColumnSorted = Boolean(header.column.getIsSorted());\n const isPinned = header.column.getIsPinned();\n const hasCleanupWhiteSpaceFeature = useUserHasFeature(\n Feature.CleanupWhiteSpace\n );\n const hasTableColumnFilterFeature = useUserHasFeature(\n Feature.TableColumnFilter\n );\n const [isHovered, setIsHovered] = useState(false);\n\n const showSortIcon =\n (hasTableColumnFilterFeature && isHovered) || isColumnSorted;\n\n return (\n setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n {...{\n onClick: () => {\n if (canSort) {\n header.column.toggleSorting();\n }\n\n const canGroup = !!header.column.columnDef.getGroupingValue;\n\n if (!canGroup || header.column.getIsGrouped()) {\n return;\n }\n\n // If it's already grouped by this column, then return;\n if (table.getState().grouping?.includes(header.column.id)) {\n return;\n }\n\n // Reset grouping state to group by the new column\n table.resetGrouping();\n\n // toggle grouping\n header.column.toggleGrouping();\n },\n }}\n {...(canSort ? { cursor: 'pointer' } : {})}\n {...{\n paddingLeft: isLargeDesktop\n ? header.column.columnDef.meta?.paddingLeftLargeDesktop\n : header.column.columnDef.meta?.paddingLeft,\n // This is needed for text overflow to work\n width: header.getSize(),\n minWidth: isResizeEnabled\n ? header.getSize()\n : header.column.columnDef.minSize,\n maxWidth: isResizeEnabled\n ? header.getSize()\n : header.column.columnDef.maxSize,\n styleOverrides: {\n ...getCommonPinningStyles(header.column),\n ...header.column.columnDef.meta?.styleOverrides,\n },\n }}\n {...style}\n >\n {isPinned && (\n \n )}\n \n \n {flexRender(header.column.columnDef.header, header.getContext())}\n \n \n\n {hasTableColumnFilterFeature ? (\n \n {canColumnFilter && (\n \n )}\n {canSort && (\n \n \n \n )}\n \n ) : (\n <>\n {canSort && (\n \n \n \n )}\n \n )}\n\n {isResizeEnabled && header.column.getCanResize() ? (\n e.stopPropagation(),\n onMouseDown: header.getResizeHandler(),\n onTouchStart: header.getResizeHandler(),\n className: `${styles.resizer} ${\n header.column.getIsResizing() ? styles.resizing : ''\n }`,\n }}\n />\n ) : null}\n \n );\n};\n\nconst HeaderActionWrapper = styled.div<{\n hasCleanupWhiteSpaceFeature: boolean;\n}>`\n right: ${({ hasCleanupWhiteSpaceFeature }) =>\n hasCleanupWhiteSpaceFeature ? 0 : resizerWidth};\n top: 0;\n height: 100%;\n padding: 0 2px;\n position: absolute;\n display: flex;\n flex-direction: row;\n`;\n\nconst IconWrapperV2 = styled.span<{\n showSortIcon: boolean;\n}>`\n height: 100%;\n padding: 0 2px;\n ${({ showSortIcon }) => ({\n display: showSortIcon ? 'flex' : 'none',\n alignItems: 'center',\n })};\n\n > div {\n height: 18px;\n }\n`;\n\nconst IconWrapper = styled.span<{\n showSortIcon: boolean;\n hasCleanupWhiteSpaceFeature: boolean;\n}>`\n right: ${({ hasCleanupWhiteSpaceFeature }) =>\n hasCleanupWhiteSpaceFeature ? 0 : resizerWidth};\n top: 0;\n height: 100%;\n padding: 0 2px;\n position: absolute;\n ${({ showSortIcon }) => ({\n display: showSortIcon ? 'flex' : 'none',\n alignItems: 'center',\n })};\n\n > div {\n height: 18px;\n }\n`;\n\nconst ColumnHeaderTh = styled.th.attrs(\n (props: {\n paddingLeft?: string;\n paddingTop?: string;\n paddingBottom?: string;\n fontSize?: string;\n fontWeight?: number;\n width?: number;\n minWidth?: number;\n maxWidth?: number;\n cursor?: string;\n styleOverrides?: React.CSSProperties;\n }) => ({\n style: {\n paddingLeft: props.paddingLeft?.toString(),\n paddingTop: props.paddingTop?.toString(),\n paddingBottom: props.paddingBottom?.toString(),\n fontSize: props.fontSize?.toString(),\n fontWeight: props.fontWeight?.toString(),\n width: props.width ? `${props.width}px` : 'auto',\n minWidth: props.minWidth ? `${props.minWidth}px` : 'auto',\n maxWidth: props.maxWidth ? `${props.maxWidth}px` : 'auto',\n cursor: props.cursor,\n ...props.styleOverrides,\n },\n })\n)<{ isSorted: boolean; hasCleanupWhiteSpaceFeature: boolean }>`\n user-select: none;\n position: ${({ hasCleanupWhiteSpaceFeature }) =>\n hasCleanupWhiteSpaceFeature ? 'relative' : 'static'};\n &:hover ${IconWrapper} {\n display: flex;\n align-items: center;\n background-color: ${vars.color.backgroundSecondary};\n }\n`;\n\nconst LabelWrapper = styled.span<{\n showSortIcon: boolean;\n showFilterIcon: boolean;\n hasCleanupWhiteSpaceFeature: boolean;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n padding-right: ${({\n hasCleanupWhiteSpaceFeature,\n showSortIcon,\n showFilterIcon,\n }) =>\n hasCleanupWhiteSpaceFeature\n ? '0px'\n : showSortIcon && showFilterIcon\n ? '26px'\n : '12px'};\n`;\n\nconst HeaderContentWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n","import { Table } from '@tanstack/react-table';\nimport {\n ChangeEvent,\n MutableRefObject,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Button } from 'src/core/ui';\nimport { PosTablePaginationFooterHeight } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport styled from 'styled-components/macro';\n\nimport * as styles from './PaginationFooter.css';\n\ntype PaginationFooterProps = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n table: Table;\n tableWrapperRef: MutableRefObject;\n showPageSizeOptions?: boolean;\n};\n\nconst PAGE_SIZE_OPTIONS = [10, 25, 50, 100, 250, 500];\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const PaginationFooter = ({\n table,\n tableWrapperRef,\n showPageSizeOptions,\n}: PaginationFooterProps) => {\n const paginationWrapperRef = useRef(null);\n const [isPageIndexEmpty, setIsPageIndexEmpty] = useState(false);\n const previousPageSize = table.options.state.pagination?.pageSize ?? 10;\n\n const onPaginationChange = (e: ChangeEvent) => {\n const pageSize = parseInt(e.currentTarget.value);\n if (!pageSize) return;\n table.setPageSize(() => pageSize);\n };\n\n const displayedPageCountOptions = PAGE_SIZE_OPTIONS.includes(previousPageSize)\n ? PAGE_SIZE_OPTIONS\n : [...PAGE_SIZE_OPTIONS, previousPageSize].toSorted((a, b) => a - b);\n\n const footerHeight = paginationWrapperRef.current?.offsetHeight ?? 0;\n useLayoutEffect(() => {\n tableWrapperRef.current?.style.setProperty(\n PosTablePaginationFooterHeight,\n `${footerHeight}px`\n );\n }, [tableWrapperRef, footerHeight]);\n\n return (\n \n {showPageSizeOptions ? (\n
    \n \n :\n \n \n {displayedPageCountOptions.map((value) => (\n \n ))}\n \n
    \n ) : null}\n
    \n table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n {'<<'}\n \n table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n {'<'}\n \n
    \n {\n const val = e.target?.value;\n if (val === '') {\n setIsPageIndexEmpty(true);\n return;\n } else {\n setIsPageIndexEmpty(false);\n }\n const page = val ? Number(val) - 1 : 0;\n table.setPageIndex(page);\n }}\n />\n \n of {table.getPageCount()}\n \n
    \n table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n {'>'}\n \n table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n {'>>'}\n \n
    \n
    \n );\n};\n\nconst Pagination = styled.div`\n position: sticky;\n left: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n ${({\n theme: {\n typography: { size },\n },\n }) => size(1)};\n background: ${(props) => props.theme.colors.backgroundSecondary};\n`;\n","import { forwardRef, useMemo } from 'react';\nimport { Components } from 'react-virtuoso';\nimport { ColumnHeader } from 'src/tables/Table/components';\nimport { PosGroupedVirtuosoContext } from 'src/tables/Table/GroupedVirtuosoTable/PosGroupedVirtuosoContext';\nimport * as styles from 'src/tables/Table/Table.css';\n\nimport { PosTableData } from '../Table';\n\ntype C = Components<\n any,\n PosGroupedVirtuosoContext\n>['List'];\n\nexport const PosGroupedVirtuosoList: Components['List'] = forwardRef(\n function GroupedVirtuosoList({ context, children, ...props }, ref) {\n const { table } = context! as PosGroupedVirtuosoContext;\n const headerGroups = table.getHeaderGroups();\n\n const tableHeaderCmp = useMemo(() => {\n return (\n \n \n {headerGroups.map((headerGroup) => (\n \n {headerGroup.headers.map((header) => (\n \n ))}\n \n ))}\n \n
    \n );\n }, [headerGroups, table]);\n\n return (\n
    \n
    {tableHeaderCmp}
    \n {children}\n
    \n );\n }\n);\n","import { forwardRef } from 'react';\nimport { Components } from 'react-virtuoso';\nimport { scrollerWrapper } from 'src/tables/Table/GroupedVirtuosoTable/PosGroupedVirtuosoTable.css';\n\nexport const PosGroupedVirtuosoScroller: Components['Scroller'] = forwardRef(\n function GroupedVirtuosoScroller({ context, children, ...props }, ref) {\n return (\n
    \n
    \n {children}\n
    \n
    \n );\n }\n);\n","import { Row, Table as ReactTable } from '@tanstack/react-table';\nimport { useMemo } from 'react';\nimport { PosTableData } from 'src/tables/Table';\n\ninterface UseGetVirtuosoDataProps {\n table: ReactTable;\n}\n\ninterface VirtuosoGroupData {\n allSingleRows: Row[]; // No grouped rows, just single rows with data\n rowHeaderGroups: Row[]; // Just grouped rows\n\n // Array of numbers where each number represents the amount of rows\n // in a group\n groupCounts: number[];\n}\n\nexport const useGetVirtuosoGroups = ({\n table,\n}: UseGetVirtuosoDataProps) => {\n // Only use it for getting the arrays of single rows and\n // the array of header rows\n const groupedTableRows = table.getRowModel().rows;\n\n return useMemo>(() => {\n const rowGroups: Row[][] = [];\n const rowHeaderGroups: Row[] = [];\n const groupCounts: number[] = [];\n\n // Use it for accessing current rendering single row\n const allSingleRows: Row[] = [];\n\n const map: Record[]> = {};\n for (const row of groupedTableRows) {\n // id: grouping row ID (when it's parent, parentId is undefined)\n // parentId: single row parent ID\n const { id, parentId, groupingValue } = row;\n\n const groupingId = parentId || id;\n map[groupingId] = map[groupingId] || [];\n const localRowGroups: Row[] = map[groupingId];\n\n const isSingleRow = !row.getIsGrouped();\n\n // Only keep\n if (isSingleRow) {\n localRowGroups.push(row);\n allSingleRows.push(row);\n } else {\n rowHeaderGroups.push(row);\n }\n\n if (!rowGroups.includes(localRowGroups)) {\n rowGroups.push(localRowGroups);\n }\n }\n\n for (const group of rowGroups) {\n groupCounts.push(group.length);\n }\n\n return { groupCounts, rowHeaderGroups, allSingleRows };\n }, [groupedTableRows]);\n};\n","import { Row } from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport { MutableRefObject, ReactNode, useCallback, useMemo } from 'react';\nimport { GroupedVirtuoso, ListItem } from 'react-virtuoso';\nimport { PageSection } from 'src/components/common/PageSection';\nimport { useColumnResizingContext } from 'src/contexts/ColumnResizingContext/ColumnResizingContext';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { TableTd } from 'src/tables/Table/components/TableTd';\nimport { PosGroupedVirtuosoContext } from 'src/tables/Table/GroupedVirtuosoTable/PosGroupedVirtuosoContext';\nimport { PosGroupedVirtuosoGroup } from 'src/tables/Table/GroupedVirtuosoTable/PosGroupedVirtuosoGroup';\nimport { PosGroupedVirtuosoItem } from 'src/tables/Table/GroupedVirtuosoTable/PosGroupedVirtuosoItem';\nimport { PosGroupedVirtuosoList } from 'src/tables/Table/GroupedVirtuosoTable/PosGroupedVirtuosoList';\nimport { PosGroupedVirtuosoScroller } from 'src/tables/Table/GroupedVirtuosoTable/PosGroupedVirtuosoScroller';\nimport { groupedVirtuosoWrapper } from 'src/tables/Table/GroupedVirtuosoTable/PosGroupedVirtuosoTable.css';\nimport { useGetVirtuosoGroups } from 'src/tables/Table/GroupedVirtuosoTable/useGetVirtuosoGroups';\nimport {\n cellNoWrapStyle,\n groupRow,\n groupRowFirstCell,\n groupValue,\n} from 'src/tables/Table/GroupRow.css';\n\nimport { PosTableData } from '../Table';\n\ninterface GroupedVirtuosoTableProps {\n context: PosGroupedVirtuosoContext;\n renderRowContent: (row: Row) => ReactNode;\n scrollRef?: MutableRefObject;\n itemsRendered?: (rows: Row[]) => void;\n}\n\nconst groupedVirtuosoComponents = {\n List: PosGroupedVirtuosoList,\n Group: PosGroupedVirtuosoGroup,\n Item: PosGroupedVirtuosoItem,\n Scroller: PosGroupedVirtuosoScroller,\n};\n\nexport const PosGroupedVirtuosoTable = ({\n context,\n renderRowContent,\n scrollRef,\n itemsRendered,\n}: GroupedVirtuosoTableProps) => {\n const { table } = context;\n const isGrouping = table.getState().grouping.length > 0;\n const isLargeDesktop = useMatchMedia('largeDesktop');\n const { isResizeEnabled } = useColumnResizingContext();\n\n const { groupCounts, rowHeaderGroups, allSingleRows } = useGetVirtuosoGroups({\n table,\n });\n\n const groupedContext = useMemo>(\n () => ({\n ...context,\n tableRows: allSingleRows,\n }),\n [allSingleRows, context]\n );\n\n const groupContentRenderer = useCallback(\n (groupIndex: number) => {\n const rowsGroup: Row = rowHeaderGroups[groupIndex];\n\n // Used when there is no grouping applied\n if (!rowHeaderGroups.length) {\n return ;\n }\n\n return (\n <>\n {rowsGroup.getVisibleCells().map((cell, index) => {\n const isFirstCell = index === 0;\n return (\n \n \n {isFirstCell ? (\n \n {rowsGroup.groupingValue as string}\n \n ) : null}\n \n \n );\n })}\n \n );\n },\n [isGrouping, isLargeDesktop, isResizeEnabled, rowHeaderGroups]\n );\n\n const itemContentRenderer = useCallback(\n (globalIndex: number) => {\n return renderRowContent(allSingleRows[globalIndex]);\n },\n [allSingleRows, renderRowContent]\n );\n\n const setScrollerRef = useCallback(\n (el: unknown) => {\n if (el instanceof HTMLElement && scrollRef) {\n scrollRef.current = el;\n }\n },\n [scrollRef]\n );\n\n const onItemsRendered = useCallback(\n (items: ListItem[]) => {\n if (!itemsRendered) return;\n const renderedRows = items\n .map(({ index }) =>\n allSingleRows.length > index ? allSingleRows[index] : null\n )\n .filter((row: Row | null): row is Row => row != null);\n itemsRendered(renderedRows);\n },\n [allSingleRows, itemsRendered]\n );\n\n return (\n \n );\n};\n","import { Cell, Header, Row, Table as ReactTable } from '@tanstack/react-table';\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport { ReactNode, useCallback } from 'react';\n\nexport const useColumnVirtualizer = (\n table: ReactTable,\n scrollRef: React.MutableRefObject,\n renderColumnHeader: (header: Header) => ReactNode,\n renderCell: (cell: Cell) => ReactNode\n) => {\n const visibleColumns = table.getVisibleFlatColumns();\n\n //we are using a slightly different virtualization strategy for columns (compared to virtual rows) in order to support dynamic row heights\n const columnVirtualizer = useVirtualizer({\n count: visibleColumns.length,\n estimateSize: (index) => visibleColumns[index].getSize(), //estimate width of each column for accurate scrollbar dragging\n getScrollElement: () => scrollRef.current,\n horizontal: true,\n overscan: 3, //how many columns to render on each side off screen each way (adjust this for performance)\n });\n\n const virtualColumns = columnVirtualizer.getVirtualItems();\n\n //different virtualization strategy for columns - instead of absolute and translateY, we add empty columns to the left and right\n let virtualPaddingLeft: number | undefined;\n let virtualPaddingRight: number | undefined;\n\n if (columnVirtualizer && virtualColumns?.length) {\n virtualPaddingLeft = virtualColumns[0]?.start ?? 0;\n virtualPaddingRight =\n columnVirtualizer.getTotalSize() -\n (virtualColumns[virtualColumns.length - 1]?.end ?? 0);\n }\n\n const renderHeaderRow = useCallback(() => {\n const headerGroups = table.getHeaderGroups();\n\n return (\n <>\n {headerGroups.map((headerGroup) => (\n <>\n {virtualPaddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n \n ) : null}\n {virtualColumns.map((vc) => {\n const header = headerGroup.headers[vc.index];\n return header.column.getIsPinned()\n ? null\n : renderColumnHeader(header); // we alway render the pinned columns as below\n })}\n {virtualPaddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n \n ) : null}\n {headerGroup.headers\n .filter((h) => h.column.getIsPinned())\n .map((h) => renderColumnHeader(h))}\n \n ))}\n \n );\n }, [\n renderColumnHeader,\n table,\n virtualColumns,\n virtualPaddingLeft,\n virtualPaddingRight,\n ]);\n\n const renderRowContent = useCallback(\n (row: Row) => {\n const visibleCells = row.getVisibleCells();\n return (\n <>\n {virtualPaddingLeft ? (\n //fake empty column to the left for virtualization scroll padding\n \n ) : null}\n {virtualColumns.map((vc) => {\n const cell = visibleCells[vc.index];\n return cell.column.getIsPinned() ? null : renderCell(cell); // we alway render the pinned columns as below\n })}\n {virtualPaddingRight ? (\n //fake empty column to the right for virtualization scroll padding\n \n ) : null}\n {visibleCells\n .filter((c) => c.column.getIsPinned())\n .map((c) => renderCell(c))}\n \n );\n },\n [renderCell, virtualColumns, virtualPaddingLeft, virtualPaddingRight]\n );\n\n return { renderHeaderRow, renderRowContent };\n};\n","import { RowData } from '@tanstack/react-table';\nimport { PosVirtuosoTableProps } from 'src/tables/Table/PosVirtuosoTableComponent/PosVirtuosoTableContext';\nimport * as styles from 'src/tables/Table/Table.css';\n\nexport const PosVirtuosoTable = ({\n children,\n context,\n ...props\n}: PosVirtuosoTableProps) => (\n \n {children}\n \n);\n","import { RowData } from '@tanstack/react-table';\nimport { clsx } from 'clsx';\nimport { PosVirtuosoTableProps } from 'src/tables/Table/PosVirtuosoTableComponent/PosVirtuosoTableContext';\nimport { PosTableFooterSticky } from 'src/tables/Table/Table.css';\n\nexport const PosVirtuosoTableFooter = ({\n children,\n context,\n}: PosVirtuosoTableProps) => (\n \n {children}\n \n);\n","import { RowData } from '@tanstack/react-table';\nimport { PosVirtuosoTableProps } from 'src/tables/Table/PosVirtuosoTableComponent/PosVirtuosoTableContext';\nimport * as styles from 'src/tables/Table/Table.css';\n\nexport const PosVirtuosoTableHead = ({\n children,\n context,\n}: PosVirtuosoTableProps) => (\n \n {children}\n \n);\n","import { Row, RowData, Table as ReactTable } from '@tanstack/react-table';\nimport { isEmpty, min, size, uniq } from 'lodash-es';\nimport { useCallback } from 'react';\nimport { useHotkeys } from 'react-hotkeys-hook';\nimport { useBulkEditHubContext } from 'src/contexts/BulkEditHubContext';\nimport { useGenericDialogContext } from 'src/contexts/GenericDialogContext/GenericDialogContext';\n\nimport { PosTableData } from './Table';\n\nexport const useTableHotkeys = (\n enabled: boolean,\n table: ReactTable,\n onRowSelection?: (row: Row) => void\n) => {\n const { mainDialogOpened } = useBulkEditHubContext();\n const { isDialogOpen } = useGenericDialogContext();\n const selectRow = useCallback(\n (id: number) => {\n table.setRowSelection((prev) => {\n for (const key in prev) {\n prev[key] = false;\n }\n return {\n ...prev,\n [id]: true,\n };\n });\n },\n [table]\n );\n const onArrowUp = useCallback(() => {\n if (!enabled || mainDialogOpened || isDialogOpen) {\n return;\n }\n const { rowsById } = table.getSelectedRowModel();\n const { rows } = table.getRowModel();\n const selectedRows = Object.values(rowsById);\n\n // Select the last row when no selection\n if (isEmpty(selectedRows) && size(rows) > 0) {\n selectRow(parseInt(rows[rows.length - 1].id));\n return;\n }\n\n const parent = getParentRow(selectedRows);\n if (parent) {\n const sanitizedId = parseInt(parent.id);\n selectRow(sanitizedId);\n return;\n }\n\n const selectedIds = selectedRows.map((row) => row.id);\n let minIndex = Number.MAX_VALUE;\n rows.forEach((row, index) => {\n if (selectedIds.includes(row.id)) {\n minIndex = Math.min(index, minIndex);\n }\n });\n\n if (minIndex > 0) {\n const sanitizedId = parseInt(rows[minIndex - 1].id);\n selectRow(sanitizedId);\n }\n }, [enabled, isDialogOpen, mainDialogOpened, selectRow, table]);\n\n const onArrowDown = useCallback(\n (event: KeyboardEvent) => {\n event.preventDefault();\n if (!enabled || mainDialogOpened || isDialogOpen) {\n return;\n }\n const { rowsById } = table.getSelectedRowModel();\n const { rows } = table.getRowModel();\n const selectedRows = Object.values(rowsById);\n\n // Select the frist row when no selection\n if (isEmpty(selectedRows) && size(rows) > 0) {\n selectRow(parseInt(rows[0].id));\n return;\n }\n\n const parent = getParentRow(selectedRows);\n if (parent) {\n const sanitizedId = parseInt(parent.id);\n selectRow(sanitizedId);\n return;\n }\n\n const selectedIds = selectedRows.map((row) => row.id);\n let maxIndex = Number.MIN_VALUE;\n rows.forEach((row, index) => {\n if (selectedIds.includes(row.id)) {\n maxIndex = Math.max(index, maxIndex);\n }\n });\n\n if (maxIndex + 1 < rows.length) {\n const sanitizedId = parseInt(rows[maxIndex + 1].id);\n selectRow(sanitizedId);\n }\n },\n [enabled, isDialogOpen, mainDialogOpened, selectRow, table]\n );\n\n const onEnter = useCallback(\n (event: KeyboardEvent) => {\n event.preventDefault();\n if (!enabled || mainDialogOpened || isDialogOpen) {\n return;\n }\n const { rowsById } = table.getSelectedRowModel();\n const selectedRows = Object.values(rowsById);\n\n if (isEmpty(selectedRows)) {\n return;\n }\n const parent = getParentRow(selectedRows);\n if (parent) {\n parent.toggleExpanded(!parent.getIsExpanded());\n return;\n }\n\n const row = selectedRows[0];\n if (!isEmpty(row.subRows)) {\n row.toggleExpanded(!row.getIsExpanded());\n } else {\n onRowSelection && onRowSelection(row);\n }\n },\n [enabled, isDialogOpen, mainDialogOpened, onRowSelection, table]\n );\n\n useHotkeys('down', onArrowDown, { keydown: true }, [onArrowDown]);\n useHotkeys('up', onArrowUp, { keydown: true }, [onArrowUp]);\n useHotkeys('enter', onEnter, { keydown: true }, [onEnter]);\n};\n\nconst getParentRow = (rows: Row[]) => {\n const depths = uniq(rows.map(({ depth }) => depth));\n if (depths.length === 1) {\n return null;\n }\n const parentDepth = min(depths);\n return rows.find((row) => row.depth === parentDepth);\n};\n","import {\n Cell,\n flexRender,\n getCoreRowModel,\n getExpandedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getGroupedRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n Header,\n HeaderGroup,\n Row,\n RowData,\n SortingFn,\n Table as ReactTable,\n TableOptions,\n useReactTable,\n} from '@tanstack/react-table';\nimport { getFacetedRowModel } from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport React, {\n ComponentType,\n CSSProperties,\n MutableRefObject,\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n} from 'react';\nimport { useScroll } from 'react-use';\nimport { State } from 'react-use/lib/useScroll';\nimport { SizeFunction, TableVirtuoso } from 'react-virtuoso';\nimport { useActiveFocusContext } from 'src/contexts/ActiveFocusContext/ActiveFocusContext';\nimport { useColumnResizingContext } from 'src/contexts/ColumnResizingContext/ColumnResizingContext';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { FormatOptionEntries } from 'src/modals/EditTableColumns';\nimport { TableTd } from 'src/tables/Table/components/TableTd';\nimport { PosGroupedVirtuosoTable } from 'src/tables/Table/GroupedVirtuosoTable/PosGroupedVirtuosoTable';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { Feature } from 'src/WebApiController';\n\nimport { ColumnHeader, PaginationFooter } from './components';\nimport { useColumnVirtualizer } from './hooks/useColumnVirtualizer';\nimport { PosVirtuosoTable } from './PosVirtuosoTableComponent/PosVirtuosoTable';\nimport { PosVirtuosoTableContext } from './PosVirtuosoTableComponent/PosVirtuosoTableContext';\nimport { PosVirtuosoTableFooter } from './PosVirtuosoTableComponent/PosVirtuosoTableFooter';\nimport { PosVirtuosoTableHead } from './PosVirtuosoTableComponent/PosVirtuosoTableHead';\nimport { PosVirtuosoTableRow } from './PosVirtuosoTableComponent/PosVirtuosoTableRow';\nimport * as styles from './Table.css';\nimport { useTableHotkeys } from './Table.hooks';\nimport { RowComponentWithRowData, RowWrapper } from './Table.types';\nimport { itemSizeDefault } from './Table.utils';\n\nconst virtuosoTableOverscan = { main: 500, reverse: 500 };\nconst virtuosoTableStyle = { width: '100%', height: '100%' };\nconst MIN_COLUMN_COUNT_TO_USE_VIRTUOSO = 20;\n\nexport interface VirtuosoScrollEvent {\n scrollState: State;\n element: HTMLElement;\n}\n\ndeclare module '@tanstack/table-core' {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ColumnMeta {\n paddingLeft?: string;\n paddingLeftLargeDesktop?: string;\n styleOverrides?: React.CSSProperties;\n /**\n * If not specified, the default should handled as multi select\n * 'seatRange' needs to be used with filterSeatRangeFn from tableUtils.tsx as custom filter function\n */\n columnFilterVariant?: 'seatRange';\n /**\n * See filter functions defined in tableUtils.tsx for actual expected data shape\n *\n * 'seatingSection'\n * Cell value expected: { seating: Seating }\n * Filter function: filterSeatingSectionFn\n *\n * 'seatTraits'\n * Cell value expected: ListingNote[]\n * Filter function: filterSeatTraitsFn\n *\n */\n uniqueValueVariant?: 'seatingSection' | 'seatTraits';\n }\n\n interface TableMeta {\n summaryData?: TData | null | undefined;\n sectionType?: SectionType;\n rowSupportsAccordion?: boolean;\n formatOptionOverrides?: FormatOptionEntries;\n showSelectAllCheckbox?: boolean;\n }\n\n // Used to use sortingFns (custom sorting) in columnDef\n // (because it doesn't other strings but the table definition does)\n interface SortingFns {\n [key: string]: SortingFn;\n }\n}\n\ntype CustomTrProps = Omit<\n React.DetailedHTMLProps<\n React.HTMLAttributes,\n HTMLTableRowElement\n >,\n 'ref'\n>;\n\nexport type TableLayout = 'fixed' | 'auto';\n\nexport type PosTableData = RowData;\n\nexport type TableProps = {\n tableLayout?: TableLayout;\n options: Partial>;\n /**\n * Custom row wrapper to wrap row content *inside* tr element\n */\n rowWrapper?: RowWrapper;\n /**\n * Custom row component to render each row to *replace tr element* totally\n */\n RowComponent?: ComponentType>;\n style?: CSSProperties;\n tableStyle?: CSSProperties;\n tableHeadStyle?: CSSProperties;\n tableHeadCellStyle?: {\n paddingTop?: string | null;\n paddingBottom?: string | null;\n fontSize?: string | null;\n fontWeight?: number | null;\n };\n tableCellStyle?: CSSProperties;\n tableRowStyle?: CSSProperties;\n roundBorders?: boolean;\n showPageSizeOptions?: boolean;\n withOuterPadding?: boolean;\n className?: string;\n useVirtuoso?: boolean;\n onVirtuosoTableScroll?: (virtuosoScrollEvent: VirtuosoScrollEvent) => void;\n useStickyFooter?: boolean;\n virtuosoItemSize?: SizeFunction;\n resizeDisabled?: boolean;\n usePaginationFooter?: boolean;\n /**\n * Use this to enable column filters\n * Tanstack makes the default value true\n * But most our columns don't need it yet, so we make it false by default\n * If any column of a table needs it, it can be enabled by setting this prop to true\n */\n enableColumnFilters?: boolean;\n\n // Grouping\n useDataGrouping?: boolean;\n // Table hotkeys\n useTableNavKeys?: boolean;\n onRowSelect?: (row: Row) => void;\n onRowShiftSelect?: (\n tableRows: Row[] | undefined,\n row: Row,\n index: number\n ) => void;\n onVirtuosoEndReached?: (lastItemIndex?: number) => void;\n onFilteredRowsChange?: (filteredRows: Row[] | undefined) => void;\n footerEl?: ReactNode;\n itemsRendered?: (items: Row[]) => void;\n disableColumnVirtualization?: boolean;\n};\n\nexport const Table = ({\n tableLayout,\n options,\n rowWrapper,\n RowComponent,\n tableStyle,\n tableHeadStyle,\n tableHeadCellStyle,\n tableCellStyle,\n tableRowStyle,\n showPageSizeOptions,\n withOuterPadding,\n className,\n useVirtuoso,\n onVirtuosoTableScroll,\n useStickyFooter,\n virtuosoItemSize,\n resizeDisabled,\n usePaginationFooter = true,\n useDataGrouping,\n useTableNavKeys = false,\n onRowSelect,\n onRowShiftSelect,\n onVirtuosoEndReached,\n onFilteredRowsChange,\n footerEl,\n roundBorders,\n enableColumnFilters = false,\n itemsRendered,\n disableColumnVirtualization,\n}: TableProps) => {\n let rowIndex = 0;\n const isLargeDesktop = useMatchMedia('largeDesktop');\n const tableWrapperRef = useRef(null);\n const { isResizeEnabled, customColumnWidths, onColumnSizingChange } =\n useColumnResizingContext();\n const { activeItem, onKeyDownHandler } = useActiveFocusContext();\n\n const hasTableColumnFilterFeature = useUserHasFeature(\n Feature.TableColumnFilter\n );\n\n const table: ReactTable = useReactTable({\n autoResetPageIndex: false,\n enableColumnResizing: isResizeEnabled && !resizeDisabled,\n columnResizeMode: 'onChange',\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getGroupedRowModel: useDataGrouping ? getGroupedRowModel() : undefined,\n getExpandedRowModel: getExpandedRowModel(),\n getPaginationRowModel: usePaginationFooter ? getPaginationRowModel() : null,\n getFilteredRowModel: getFilteredRowModel(),\n getFacetedRowModel: options.getFacetedRowModel ?? getFacetedRowModel(),\n getFacetedUniqueValues:\n options.getFacetedUniqueValues ?? getFacetedUniqueValues(),\n onColumnSizingChange: onColumnSizingChange,\n // This is default turned on, but we want to turn it off in most cases\n enableRowSelection: false,\n // This is default turned on, but we want to turn it off in most cases\n enableMultiRowSelection: false,\n enableColumnFilters: hasTableColumnFilterFeature\n ? enableColumnFilters\n : false,\n filterFromLeafRows: hasTableColumnFilterFeature\n ? enableColumnFilters\n : false,\n filterFns: {},\n\n // Leave this in false to not reorder columns when grouping\n groupedColumnMode: false,\n ...options,\n state: {\n ...options.state,\n columnSizing: customColumnWidths ?? {},\n },\n } as TableOptions);\n\n const isGrouping = table.getState().grouping?.length > 0;\n const tableRows = table.getRowModel().rows;\n const footerRow = table.getFooterGroups();\n const hasFooterDef = footerRow.some((row: HeaderGroup) =>\n row.headers.some(\n (header: Header) => header.column.columnDef.footer != null\n )\n );\n\n // Listen to filtered rows change and trigger callback\n useEffect(() => {\n if (onFilteredRowsChange == null) return;\n\n const hasColumnFilterApplied = table\n .getAllColumns()\n .some((column) => column.getFilterValue() != null);\n\n // Make it undefined when no filter is applied\n const filteredRows = hasColumnFilterApplied\n ? table.getFilteredRowModel().flatRows\n : undefined;\n\n onFilteredRowsChange(filteredRows);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [table.getFilteredRowModel().flatRows]);\n\n useTableHotkeys(useTableNavKeys, table, onRowSelect);\n\n useEffect(() => {\n if (!activeItem) return;\n tableRows[activeItem.index]?.toggleSelected(\n Array.from(activeItem.id)[0] !== '-'\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tableRows, activeItem]);\n\n const scrollRef = useRef(null);\n const scrollState = useScroll(scrollRef);\n\n const renderRowCell = useCallback(\n (cell: Cell) => {\n return (\n \n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n \n );\n },\n [isGrouping, isLargeDesktop, isResizeEnabled, tableCellStyle]\n );\n\n const renderRowContent = useCallback(\n (row: Row) => {\n return (\n <>\n {row.getVisibleCells().map((cell) => {\n return renderRowCell(cell);\n })}\n \n );\n },\n [renderRowCell]\n );\n\n const renderHeader = useCallback(\n (header: Header) => (\n \n ),\n [table, tableHeadCellStyle]\n );\n\n const { renderHeaderRow, renderRowContent: renderRowContentVirtualized } =\n useColumnVirtualizer(table, scrollRef, renderHeader, renderRowCell);\n\n useEffect(() => {\n if ((useVirtuoso || useDataGrouping) && scrollRef.current) {\n onVirtuosoTableScroll?.({\n scrollState,\n element: scrollRef.current,\n });\n }\n }, [onVirtuosoTableScroll, scrollState, useDataGrouping, useVirtuoso]);\n\n const useColumnVirtualization =\n useVirtuoso &&\n table.getVisibleLeafColumns().length >= MIN_COLUMN_COUNT_TO_USE_VIRTUOSO &&\n !disableColumnVirtualization;\n\n // We cannot used fixed layout if we're using column virtualization\n if (useColumnVirtualization) {\n tableLayout = 'auto';\n }\n\n return (\n \n {useDataGrouping ? (\n \n ) : useVirtuoso ? (\n , PosVirtuosoTableContext>\n style={virtuosoTableStyle}\n data={tableRows}\n overscan={virtuosoTableOverscan}\n context={{\n tableLayout,\n tableStyle,\n tableHeadStyle,\n tableRowStyle,\n tableRows,\n rowWrapper,\n RowComponent,\n useStickyFooter,\n onRowShiftSelect,\n }}\n scrollerRef={(el) => {\n if (el instanceof HTMLElement) scrollRef.current = el;\n }}\n endReached={onVirtuosoEndReached}\n itemSize={virtuosoItemSize ?? itemSizeDefault}\n // Always use components declared outside a rendering component\n // or new elements are created causing to lose state\n // https://virtuoso.dev/customize-structure/\n components={{\n Table: PosVirtuosoTable,\n TableHead: PosVirtuosoTableHead,\n TableRow: PosVirtuosoTableRow,\n TableFoot: PosVirtuosoTableFooter,\n }}\n fixedHeaderContent={() => {\n return useColumnVirtualization ? (\n renderHeaderRow()\n ) : (\n <>\n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => (\n \n ))}\n \n ))}\n \n );\n }}\n fixedFooterContent={() => (\n <>\n {footerEl}\n {hasFooterDef &&\n footerRow.map((row, index) => {\n const tableRow = (customProps?: CustomTrProps) => (\n {\n e.stopPropagation();\n }}\n onKeyDown={\n activeItem != null\n ? (e) => onKeyDownHandler(e, index, tableRows)\n : undefined\n }\n {...customProps}\n style={tableRowStyle}\n >\n {row.headers.map((cell) => (\n \n {flexRender(\n cell.column.columnDef.footer,\n cell.getContext()\n )}\n \n ))}\n \n );\n\n return tableRow();\n })}\n \n )}\n itemContent={(index, row) =>\n useColumnVirtualization\n ? renderRowContentVirtualized(row)\n : renderRowContent(row)\n }\n />\n ) : (\n }\n >\n \n \n {useColumnVirtualization\n ? renderHeaderRow()\n : table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => (\n \n ))}\n \n ))}\n \n \n {tableRows.map((row, index) => {\n const rowProps = {\n className: clsx(styles.tableRow, {\n [styles.isSelectedRow]: row.getIsSelected(),\n [styles.isSubRow]: row.depth > 0,\n }),\n key: row.id,\n onClick: (e: React.MouseEvent) => {\n e.stopPropagation();\n row.toggleSelected();\n onRowShiftSelect?.(tableRows, row, index);\n },\n onKeyDown: activeItem\n ? (e: React.KeyboardEvent) =>\n onKeyDownHandler(e, index, tableRows)\n : undefined,\n tabIndex:\n activeItem && activeItem.id === row.id\n ? 0\n : row.getIsSelected()\n ? 0\n : -1,\n style: tableRowStyle,\n };\n const rowContent = useColumnVirtualization\n ? renderRowContentVirtualized(row)\n : renderRowContent(row);\n\n const children = rowWrapper\n ? rowWrapper(row.original, rowContent, rowIndex++)\n : rowContent;\n\n const tableRow = RowComponent ? (\n \n {children}\n \n ) : (\n {children}\n );\n\n return tableRow;\n })}\n {hasFooterDef &&\n footerRow.map((row, index) => {\n const tableRow = (customProps?: CustomTrProps) => (\n {\n e.stopPropagation();\n }}\n onKeyDown={\n activeItem != null\n ? (e) => onKeyDownHandler(e, index, tableRows)\n : undefined\n }\n {...customProps}\n style={tableRowStyle}\n >\n {row.headers.map((cell) => (\n \n {flexRender(\n cell.column.columnDef.footer,\n cell.getContext()\n )}\n \n ))}\n \n );\n\n return tableRow();\n })}\n {footerEl}\n \n \n \n )}\n {usePaginationFooter && table.getPageCount() > 1 && (\n \n )}\n \n );\n};\n\nexport default Table;\n","import { useContent } from 'src/contexts/ContentContext';\nimport { getActivityLogChangeDisplay } from 'src/utils/activityLogUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ActivityLogAdditionalInformationDictionaryOfActivityLogValueChange } from 'src/WebApiController';\n\nimport {\n activityAdditionalInfoItem,\n activityAdditionalInfoList,\n} from './ActivityLog.css';\n\nexport const ActivityLogAdditionalInfo = (\n additionalInfo: ActivityLogAdditionalInformationDictionaryOfActivityLogValueChange\n) => {\n const entries = Object.entries(additionalInfo);\n const removedContent = useContent(ContentId.Empty);\n return (\n
    \n {entries.map(([k, v]) => (\n
    \n {getActivityLogChangeDisplay(k, v, removedContent, true)}\n
    \n ))}\n
    \n );\n};\n","import styled from 'styled-components/macro';\n\nexport const ActivityLogDateCellDiv = styled.div`\n text-transform: 'none';\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n ${({\n theme: {\n typography: { size },\n },\n }) => size(1)};\n`;\n","import { formatInTimeZone } from 'date-fns-tz';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { ActivityLogDateCellDiv } from '../ActivityLogTable.styled';\n\nexport function ActivityLogDateCell({ date }: { date: Date | null }) {\n const { timeZone } = useSiteTimezoneContext();\n const formattedDate = date ? (\n <>\n {formatInTimeZone(date, timeZone, 'LLL do yyyy')}\n {formatInTimeZone(date, timeZone, 'hh:mm:ss aa')}\n \n ) : (\n \n );\n return {formattedDate};\n}\n","import { formatInTimeZone } from 'date-fns-tz';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { ActivityLogDateCellDiv } from '../ActivityLogTable.styled';\n\nexport function ActivityLogDateRangeCell({\n dateFrom,\n dateTo,\n}: {\n dateFrom: Date | null;\n dateTo: Date | null;\n}) {\n const { timeZone } = useSiteTimezoneContext();\n\n const formatDate = (date: Date | null) =>\n date ? (\n {formatInTimeZone(date, timeZone, 'LLL do yyyy')}\n ) : (\n \n );\n\n if (dateFrom?.toDateString() === dateTo?.toDateString()) {\n const date = dateFrom || dateTo;\n return {formatDate(date)};\n }\n\n return (\n \n {formatDate(dateFrom)}\n {formatDate(dateTo)}\n \n );\n}\n","import { ColumnDef } from '@tanstack/react-table';\nimport { GroupedActivityLog } from 'src/components/ActivityLog';\nimport { ActivityLogAdditionalInfo } from 'src/components/ActivityLog/ActivityLogAdditionalInfo';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { CountBadge, Stack } from 'src/core/ui';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { ExpandIcon, ForwardIcon } from 'src/svgs/Viagogo';\nimport { TableShimmeringDiv } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { stringToUtcDate } from 'src/utils/dateTimeUtils';\nimport {\n ActivityLogAdditionalInformationDictionaryOfActivityLogValueChange,\n ActivityLogInitiatedByUser,\n} from 'src/WebApiController';\n\nimport { ActivityLogDateCell } from './ActivityLogDateCell';\nimport { ActivityLogDateRangeCell } from './ActivityLogDateRangeCell';\n\nexport const ACTIVITY_LOG_GROUPED_TABLE_COLUMNS_CONFIG: ColumnDef[] =\n [\n {\n id: 'accordionToggle',\n header: '',\n minSize: 24,\n maxSize: 40,\n meta: {\n styleOverrides: { padding: 0 },\n },\n cell: ({\n row: { original, toggleExpanded, getCanExpand, getIsExpanded },\n }) => {\n const canExpand = true; // getCanExpand();\n const isExpanded = getIsExpanded();\n const Icon = isExpanded ? ExpandIcon : ForwardIcon;\n if ((original && original?.activityLogs.length < 2) || !original) {\n return null;\n }\n\n return (\n \n {canExpand && (\n \n \n {\n e.stopPropagation();\n e.preventDefault();\n toggleExpanded(!isExpanded);\n }}\n />\n \n )}\n \n );\n },\n },\n {\n id: 'actionDate',\n header: () => (\n \n \n \n ),\n maxSize: 90,\n accessorFn: (data) => (data ? data.actionDate || '' : null),\n cell: ({\n getValue,\n row: { original, getCanExpand },\n table: { getState },\n }) => {\n const canExpand = getCanExpand();\n\n const value = getValue() as string;\n if (!original) {\n return ;\n }\n\n if (canExpand) {\n const sortState = getState().sorting.find(\n (s) => s.id === 'actionDate'\n );\n const activityLogs = original?.activityLogs;\n const firstDate = activityLogs[0].actionDate;\n const lastDate = activityLogs[activityLogs.length - 1].actionDate;\n\n const [dateFrom, dateTo] = [firstDate, lastDate].toSorted((a, b) => {\n return sortState?.desc ? b.localeCompare(a) : a.localeCompare(b);\n });\n\n return (\n \n \n \n );\n }\n\n return (\n \n \n \n );\n },\n sortingFn: 'datetime',\n },\n {\n id: 'actionType',\n header: () => (\n \n \n \n ),\n enableSorting: false,\n accessorFn: (data) => (data ? data.actionTypeDisplay : null),\n cell: ({ getValue, row: { original } }) => {\n const actionTypeDisplay = getValue() as string;\n if (!original) {\n return ;\n }\n return (\n \n {actionTypeDisplay}\n \n );\n },\n },\n {\n id: 'initiatedBy',\n header: () => (\n \n \n \n ),\n enableSorting: false,\n accessorFn: (data) => data?.initiatedBy,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as ActivityLogInitiatedByUser;\n if (!original) {\n return ;\n }\n return (\n \n {value?.username}\n \n );\n },\n },\n {\n id: 'additionalInfo',\n header: () => (\n \n \n \n ),\n enableSorting: false,\n accessorFn: (data) => (data ? data.additionalInfo : null),\n cell: ({ getValue, row: { original, getCanExpand } }) => {\n const canExpand = getCanExpand();\n\n const value =\n getValue() as ActivityLogAdditionalInformationDictionaryOfActivityLogValueChange;\n if (!original) {\n return ;\n }\n\n if (canExpand) {\n return null;\n }\n return (\n \n \n \n );\n },\n },\n ];\n","import { ColumnDef } from '@tanstack/react-table';\nimport { ActivityLogAdditionalInfo } from 'src/components/ActivityLog/ActivityLogAdditionalInfo';\nimport { Content } from 'src/contexts/ContentContext';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { TableShimmeringDiv } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { stringToUtcDate } from 'src/utils/dateTimeUtils';\nimport {\n ActivityLog,\n ActivityLogAdditionalInformationDictionaryOfActivityLogValueChange,\n} from 'src/WebApiController';\n\nimport { ActivityLogDateCell } from './ActivityLogDateCell';\n\nexport const ACTIVITY_LOG_TABLE_COLUMNS_CONFIG: ColumnDef[] =\n [\n {\n id: 'actionDate',\n header: () => (\n \n \n \n ),\n maxSize: 90,\n accessorFn: (data) => (data ? data.actionDate || '' : null),\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as string;\n if (!original) {\n return ;\n }\n return (\n \n \n \n );\n },\n sortingFn: 'datetime',\n },\n {\n id: 'actionType',\n header: () => (\n \n \n \n ),\n enableSorting: false,\n accessorFn: (data) => (data ? data.actionTypeDisplay : null),\n cell: ({ getValue, row: { original } }) => {\n const actionTypeDisplay = getValue() as string;\n if (!original) {\n return ;\n }\n return (\n \n {actionTypeDisplay}\n \n );\n },\n },\n {\n id: 'initiatedBy',\n header: () => (\n \n \n \n ),\n enableSorting: false,\n accessorFn: (data) => data,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as ActivityLog;\n if (!original) {\n return ;\n }\n return (\n \n {value?.initiatedBy?.username}\n {value?.initiatedByImpersonated?.username\n ? ` (impersonating ${value.initiatedByImpersonated.username})`\n : ''}\n \n );\n },\n },\n {\n id: 'additionalInfo',\n header: () => (\n \n \n \n ),\n enableSorting: false,\n accessorFn: (data) => (data ? data.additionalInfo : null),\n cell: ({ getValue, row: { original } }) => {\n const value =\n getValue() as ActivityLogAdditionalInformationDictionaryOfActivityLogValueChange;\n if (!original) {\n return ;\n }\n return (\n \n \n \n );\n },\n },\n ];\n","import {\n getExpandedRowModel,\n InitialTableState,\n PaginationState,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useEffect, useMemo, useState } from 'react';\nimport { GroupedActivityLog } from 'src/components/ActivityLog';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { NoData, Table } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { generateShimmeringRows } from 'src/utils/dataTableUtils';\nimport { SomethingWentWrong } from 'src/views';\nimport { ActivityLog, Feature } from 'src/WebApiController';\n\nimport { ACTIVITY_LOG_GROUPED_TABLE_COLUMNS_CONFIG } from './configs/ActivityLogGroupedTableColumnsConfig';\nimport { ACTIVITY_LOG_TABLE_COLUMNS_CONFIG } from './configs/ActivityLogTableColumnsConfig';\n\nexport type ActivityLogTableDataProps = {\n activityLogs?: ActivityLog[];\n groupedActivityLogs?: GroupedActivityLog[];\n count: number;\n failedToRetrieveData: boolean;\n};\n\ntype ActivityLogTableProps = ActivityLogTableDataProps & {\n failedToRetrieveData: boolean;\n onMount?: () => void;\n onUnmount?: (state: object) => void;\n initState?: InitialTableState;\n};\n\nconst PAGE_SIZE = 20;\n\nexport function ActivityLogTable({\n activityLogs,\n groupedActivityLogs,\n count,\n failedToRetrieveData,\n onMount,\n onUnmount,\n initState,\n}: ActivityLogTableProps) {\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const [sorting, setSorting] = useState(\n initState?.sorting || [{ id: 'actionDate', desc: true }]\n );\n const [{ pageIndex, pageSize }, setPagination] = useState({\n pageIndex: initState?.pagination?.pageIndex || 0,\n pageSize: PAGE_SIZE,\n });\n\n const hasGroupedActivityLog = useUserHasFeature(Feature.GroupedActivityLog);\n\n const pagination = useMemo(\n () => ({\n pageIndex,\n pageSize,\n }),\n [pageIndex, pageSize]\n );\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n const flatActivityLogData = useMemo(\n () => activityLogs || (generateShimmeringRows(count) as null[]),\n [count, activityLogs]\n );\n\n const data = useMemo(\n () => groupedActivityLogs || (generateShimmeringRows(count) as null[]),\n [count, groupedActivityLogs]\n );\n\n const flatActivityLogOptions: Partial> =\n useMemo(\n () => ({\n data: flatActivityLogData,\n columns: ACTIVITY_LOG_TABLE_COLUMNS_CONFIG,\n state: {\n pagination,\n sorting,\n },\n onPaginationChange: setPagination,\n onSortingChange: setSorting,\n }),\n [flatActivityLogData, pagination, sorting]\n );\n\n const options: Partial> = useMemo(\n () => ({\n data,\n columns: ACTIVITY_LOG_GROUPED_TABLE_COLUMNS_CONFIG,\n state: {\n pagination,\n sorting,\n },\n onPaginationChange: setPagination,\n onSortingChange: setSorting,\n getRowCanExpand: (row) =>\n (row.original?.activityLogs && row.original?.activityLogs.length > 2) ||\n false,\n getExpandedRowModel: (table) => getExpandedRowModel()(table),\n getSubRows: (originalRow) => {\n if (originalRow?.activityLogs && originalRow.activityLogs.length < 2) {\n return [];\n }\n const activityLogs = originalRow?.activityLogs.map((activityLog) => ({\n ...activityLog,\n activityLogs: [activityLog], // Make each ActivityLog into a GroupedActivityLog\n }));\n return activityLogs ?? [];\n },\n }),\n [data, pagination, sorting]\n );\n\n return failedToRetrieveData ? (\n }\n />\n ) : data?.length > 0 ? (\n hasGroupedActivityLog ? (\n \n ) : (\n
    \n )\n ) : (\n \n \n \n );\n}\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const ActivityLogTitleTextSpan = styled.span`\n align-items: center;\n font-size: ${() => vars.typography.fontSize['2xl']};\n font-weight: 700;\n color: ${(props) => props.theme.colors.textBrand};\n padding-top: ${(props) => (props.onClick ? '2px' : vars.spacing.sm)};\n padding-bottom: 2px;\n`;\n","import clsx from 'clsx';\nimport { debounce } from 'lodash-es';\nimport {\n CSSProperties,\n useCallback,\n useDeferredValue,\n useMemo,\n useState,\n} from 'react';\nimport {\n FilterDropdownItem,\n FilterToolbarGroup,\n SelectedFilters,\n} from 'src/components/Filters';\nimport {\n AddFilterButtonPlain,\n dropdownGroupContainer,\n dropdownItemParentLabel,\n notFoundOption,\n searchDropdownItem,\n} from 'src/components/FilterToolbar/FilterDialogV2/FiltersDropdown/FiltersDropdown.css';\nimport {\n Content,\n getContent,\n useContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { PosSearchBox } from 'src/core/POS/PosSearchBox';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature } from 'src/WebApiController';\n\ninterface FiltersDropdownProps {\n filters: FilterToolbarGroup[];\n selectedDropdownItems: SelectedFilters;\n onFilterSelected: (filterDropdownItem: FilterDropdownItem[]) => void;\n}\n\nconst triggerStyles: CSSProperties = {\n width: '100%',\n};\n\nexport const FiltersDropdown = ({\n filters,\n selectedDropdownItems,\n onFilterSelected,\n}: FiltersDropdownProps) => {\n const hasFiltersApplied = Object.keys(selectedDropdownItems).length > 0;\n const [searchText, setSearchText] = useState('');\n const searchPlaceholder = useContent(ContentId.Search);\n const contentContext = useContentContext();\n const hasMetricsV2Feature = useUserHasFeature(Feature.CatalogMetricsV2);\n\n // NOTE:\n // This is a wishy-washy way to do this, we already have debounce - so this should be be needed\n // but since this has been working - let's keep it like this\n // If the search drop-down ever not respond to text search - remove this line\n const searchDeferredValue = useDeferredValue(searchText);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks,react-hooks/exhaustive-deps\n const updateSearchText = useCallback(\n debounce((value: string) => {\n setSearchText(value);\n }, 200),\n []\n );\n\n const filteredFilters = useMemo(() => {\n if (!searchDeferredValue) {\n return filters;\n }\n const lowercaseSearchText = searchDeferredValue.toLocaleLowerCase();\n return filters\n .map((filter) => {\n const items = filter.items.filter((filterItem) => {\n const labelValue = getContent(\n filterItem.labelContentId,\n contentContext\n );\n return (\n labelValue.toLocaleLowerCase().indexOf(lowercaseSearchText) !== -1\n );\n });\n return {\n ...filter,\n items,\n };\n })\n .filter((filter) => filter.items.length > 0);\n }, [contentContext, filters, searchDeferredValue]);\n\n const clearSearch = useCallback(() => {\n setSearchText('');\n }, []);\n\n return (\n \n \n \n \n }\n triggerProps={{\n style: triggerStyles,\n }}\n align=\"start\"\n >\n \n \n \n\n {filteredFilters.flatMap((filtersToolbarGroup, i) => {\n const items = filtersToolbarGroup.items.map((filterItem) => {\n return (\n {\n onFilterSelected([\n {\n filterId: filterItem.filterId,\n titleContentId: filtersToolbarGroup.titleContentId,\n },\n ]);\n }}\n >\n {filterItem.postfixIcon && hasMetricsV2Feature ? (\n \n \n {filterItem.postfixIcon}\n \n ) : (\n \n )}\n \n );\n });\n return [\n
    \n
    \n \n \n \n {items}\n
    \n
    ,\n ];\n })}\n\n {filteredFilters.length === 0 && (\n \n \n \n )}\n \n );\n};\n","import { cloneElement, useMemo } from 'react';\nimport { FilterToolbarItem } from 'src/components/Filters';\nimport {\n filterItemLabel,\n filterItemWrapper,\n} from 'src/components/FilterToolbar/FilterDialogV2/FiltersList/FiltersList.css';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { IconsFill, LockIcon } from 'src/svgs/Viagogo';\nimport {\n DEFAULT_REPORT_FILTER_EDITABILITY,\n ReportFilterEditability,\n} from 'src/utils/reportsFilterUtils';\n\nimport { FiltersListProp } from './FiltersList.types';\n\nconst FILTER_ITEM_WIDTH = '190px';\n\nexport const FiltersListEmbedded = ({\n filters,\n selectedDropdownItems,\n performerVenueFilter,\n embeddedResetButton,\n}: FiltersListProp) => {\n const filterItemsToShow = useMemo(() => {\n const selectedFilters = filters.filter(\n (filterToolbarGroup) =>\n filterToolbarGroup.titleContentId &&\n !!selectedDropdownItems[filterToolbarGroup.titleContentId]\n );\n\n return selectedFilters.flatMap((filterToolbarGroup) => {\n const dropdownFilterIds = selectedDropdownItems[\n filterToolbarGroup.titleContentId!\n ].map((dropdownFilter) => dropdownFilter.filterId);\n\n return filterToolbarGroup.items.filter(\n (filterItem) =>\n dropdownFilterIds.includes(filterItem.filterId) &&\n (filterItem.reportFilterEditability ??\n DEFAULT_REPORT_FILTER_EDITABILITY) !==\n ReportFilterEditability.Hidden\n );\n });\n }, [filters, selectedDropdownItems]);\n\n return (\n \n \n {performerVenueFilter != null && (\n 0}>\n {performerVenueFilter}\n \n )}\n {filterItemsToShow.map((item, i) => (\n \n ))}\n \n {(performerVenueFilter != null || filterItemsToShow.length > 0) && (\n 0}>\n {embeddedResetButton}\n \n )}\n \n );\n};\n\nconst FilterToolbarListItemEmbedded = ({\n item,\n}: {\n item: FilterToolbarItem;\n}) => {\n const disabled =\n item.reportFilterEditability !== ReportFilterEditability.Edit;\n\n const filterItem = disabled\n ? cloneElement(item.filterItem, { disabled })\n : item.filterItem;\n\n return (\n \n \n \n \n \n \n {filterItem}\n \n {disabled && (\n \n \n \n )}\n \n \n );\n};\n\nconst FilterToolBarButtonWrapper = ({\n lineBreak,\n children,\n}: {\n /**\n * This prop is used to add a line break before the children to align with FilterToolbarListItemEmbedded\n */\n lineBreak?: boolean;\n children: React.ReactNode;\n}) => {\n return (\n
    \n {lineBreak &&
    }
    \n \n \n {children}\n \n \n
    \n );\n};\n","import { FilterToolbarItemId } from 'src/components/Filters';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { shared, vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport {\n REPORT_FILTER_EDITABILITY_TO_CID,\n REPORT_FILTER_EDITABILITY_TO_DESC_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport {\n DEFAULT_REPORT_FILTER_EDITABILITY,\n ReportFilterEditability,\n} from 'src/utils/reportsFilterUtils';\n\nexport const ReportFilterEditabilityDropdown = ({\n filterId,\n reportFilterEditability,\n onEditabilityChange,\n disabled,\n}: {\n filterId: FilterToolbarItemId;\n reportFilterEditability?: ReportFilterEditability;\n onEditabilityChange: (\n filterId: FilterToolbarItemId,\n editability: ReportFilterEditability\n ) => void;\n disabled?: boolean;\n}) => {\n const handleEditabilityChange = (editability: string) => {\n onEditabilityChange(filterId, editability as ReportFilterEditability);\n };\n\n const title = useContent(\n REPORT_FILTER_EDITABILITY_TO_DESC_CID[\n reportFilterEditability ?? DEFAULT_REPORT_FILTER_EDITABILITY\n ]\n );\n\n return (\n \n \n \n }\n triggerProps={{\n disabled: disabled,\n }}\n align=\"start\"\n >\n {Object.values(ReportFilterEditability).map((editability) => (\n handleEditabilityChange(editability)}\n >\n \n \n \n \n \n \n \n \n \n ))}\n \n );\n};\n","import { FilterToolbarGroup, FilterToolbarItem } from 'src/components/Filters';\nimport {\n filterGroupHeader,\n filterItemLabel,\n filterItemWrapper,\n RemoveFilterButton,\n} from 'src/components/FilterToolbar/FilterDialogV2/FiltersList/FiltersList.css';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport { Feature } from 'src/WebApiController';\n\nimport { FiltersListProp } from './FiltersList.types';\nimport { FiltersListEmbedded } from './FiltersListEmbedded';\nimport { ReportFilterEditabilityDropdown } from './ReportFilterEditabilityDropdown';\n\nexport const FiltersList = (props: FiltersListProp) => {\n if (props.embeddedDisplayOnly) {\n return ;\n }\n if (props.listView) {\n return ;\n }\n\n return ;\n};\n\nconst FiltersListListView = ({\n filters,\n selectedDropdownItems,\n ...props\n}: FiltersListProp) => {\n return (\n \n {filters\n .filter(\n (filterToolbarGroup) =>\n filterToolbarGroup.titleContentId &&\n !!selectedDropdownItems[filterToolbarGroup.titleContentId]\n )\n .map((filterToolbarGroup, i) => (\n \n ))}\n \n );\n};\n\nconst FiltersListDefault = ({\n filters,\n selectedDropdownItems,\n ...props\n}: FiltersListProp) => {\n return (\n \n {filters\n .filter(\n (filterToolbarGroup) =>\n filterToolbarGroup.titleContentId &&\n !!selectedDropdownItems[filterToolbarGroup.titleContentId]\n )\n .map((filterToolbarGroup, i) => (\n \n ))}\n \n );\n};\n\nconst FilterToolbarGroupListItem = ({\n filterToolbarGroup,\n selectedDropdownItems,\n tempQuery,\n filtersMap,\n mandatoryFiltersToShow,\n onEditabilityChange,\n ...props\n}: Omit & {\n filterToolbarGroup: FilterToolbarGroup;\n}) => {\n const titleContentId = filterToolbarGroup.titleContentId ?? '';\n const dropdownFilterIds = selectedDropdownItems[titleContentId].map(\n (dropdownFilter) => dropdownFilter.filterId\n );\n const itemsToShow = filterToolbarGroup.items.filter((filterItem) =>\n dropdownFilterIds.includes(filterItem.filterId)\n );\n return (\n \n {titleContentId && (\n
    \n \n
    \n )}\n \n {itemsToShow.map((item, itemIndex) => (\n \n ))}\n \n
    \n );\n};\n\nconst FilterToolbarListItem = ({\n filterToolbarGroup,\n item,\n itemIndex,\n selectedDropdownItems,\n onFilterRemoved,\n onEditabilityChange,\n mandatoryFiltersToShow,\n}: Omit & {\n filterToolbarGroup: FilterToolbarGroup;\n item: FilterToolbarItem;\n itemIndex: number;\n}) => {\n const titleContentId = filterToolbarGroup.titleContentId ?? '';\n const hasMetricsV2Feature = useUserHasFeature(Feature.CatalogMetricsV2);\n const canBeRemoved = !mandatoryFiltersToShow.includes(item.filterId);\n\n const showEditabilityDropdown = onEditabilityChange != null;\n\n const onRemoveFilterHandler = () => {\n const filterDropdownItem = selectedDropdownItems[titleContentId].find(\n (filterDropdownItem) => filterDropdownItem.filterId === item.filterId\n );\n if (filterDropdownItem) {\n onFilterRemoved(filterDropdownItem);\n }\n };\n\n return (\n \n \n \n {item.postfixIcon && hasMetricsV2Feature ? (\n \n \n {item.postfixIcon}\n \n ) : (\n \n )}\n \n \n {item.filterItem}\n {canBeRemoved && (\n \n \n \n )}\n {showEditabilityDropdown && (\n \n )}\n \n \n \n );\n};\n","import { ReactNode, useCallback, useMemo, useState } from 'react';\nimport {\n FilterDropdownItem,\n FilterToolbarGroup,\n FilterToolbarItem,\n FilterToolbarItemId,\n mapFiltersToFiltersState,\n SelectedFilters,\n useFilterFiltersByPermission,\n} from 'src/components/Filters';\nimport {\n FilterDialogV2Body,\n FilterDialogV2Footer,\n FilterDialogV2Header,\n FilterDialogV2Wrapper,\n saveFiltersButton,\n} from 'src/components/FilterToolbar/FilterDialogV2/FilterDialogV2.css';\nimport { FiltersDropdown } from 'src/components/FilterToolbar/FilterDialogV2/FiltersDropdown/FiltersDropdown';\nimport { FiltersList } from 'src/components/FilterToolbar/FilterDialogV2/FiltersList/FiltersList';\nimport { Content } from 'src/contexts/ContentContext';\nimport { CrossIconContainer } from 'src/core/interim/dialogs/GenericDialog/GenericDialog.styled';\nimport { vars } from 'src/core/themes';\nimport { Button, Popover, Stack } from 'src/core/ui';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n DEFAULT_REPORT_FILTER_EDITABILITY,\n ReportFilterEditability,\n} from 'src/utils/reportsFilterUtils';\n\nexport interface FilterDialogV2Props {\n filters: FilterToolbarGroup[];\n onResetAll: () => void;\n onSubmitFilter?: () => void;\n appliedFilterIds: FilterToolbarItemId[];\n onSaveQuickFilter?: () => void;\n resetTempQuery?: (keys?: FilterToolbarItemId[]) => void;\n tempQuery?: Partial>;\n initialQuery?: Partial>;\n mandatoryFiltersToShow: FilterToolbarItemId[];\n filterAppliedMessage?: ReactNode;\n\n onEditabilityChange?: (\n filterId: FilterToolbarItemId | FilterToolbarItemId[],\n editability: ReportFilterEditability\n ) => void;\n embeddedDisplayOnly?: boolean;\n listView?: boolean;\n performerVenueFilter?: JSX.Element;\n}\n\nexport const FilterDialogV2 = ({\n filters,\n onResetAll,\n onSubmitFilter,\n appliedFilterIds,\n onSaveQuickFilter,\n resetTempQuery,\n tempQuery = {},\n initialQuery = {},\n mandatoryFiltersToShow,\n filterAppliedMessage,\n onEditabilityChange,\n embeddedDisplayOnly,\n listView,\n performerVenueFilter,\n}: FilterDialogV2Props) => {\n const filtersMap = useMemo<\n Partial>\n >(() => {\n const filtersMap: Partial> =\n {};\n filters.forEach((filterGroup) => {\n filterGroup.items.forEach((filterItem) => {\n filtersMap[filterItem.filterId] = filterItem;\n });\n });\n return filtersMap;\n }, [filters]);\n\n const filteredByPermissionsFilters = useFilterFiltersByPermission({\n filters,\n });\n\n const nonHiddenFilterIds = useMemo(\n () =>\n onEditabilityChange\n ? filteredByPermissionsFilters\n .flatMap((group) => group.items)\n .filter(\n (item) =>\n (item.reportFilterEditability ??\n DEFAULT_REPORT_FILTER_EDITABILITY) !==\n ReportFilterEditability.Hidden\n )\n .map((item) => item.filterId)\n : [],\n [filteredByPermissionsFilters, onEditabilityChange]\n );\n\n const appliedFilterIdsWithNonHidden = useMemo(\n () => Array.from(new Set([...appliedFilterIds, ...nonHiddenFilterIds])),\n [appliedFilterIds, nonHiddenFilterIds]\n );\n\n const [selectedFilters, setSelectedFilters] = useState(() =>\n mapFiltersToFiltersState({\n filters: filteredByPermissionsFilters,\n appliedFilterIds: appliedFilterIdsWithNonHidden,\n mandatoryFiltersToShow,\n })\n );\n\n const hasFiltersApplied = useMemo(\n () => Object.keys(selectedFilters).length > 0,\n [selectedFilters]\n );\n\n const clearAll = useCallback(() => {\n // Clear all and keep the mandatory fields\n const cleanSelectedFilters: SelectedFilters = {};\n for (const key in selectedFilters) {\n selectedFilters[key].forEach((dropdownItem) => {\n if (\n mandatoryFiltersToShow.includes(dropdownItem.filterId) ||\n nonHiddenFilterIds.includes(dropdownItem.filterId) ||\n initialQuery[dropdownItem.filterId] != null\n ) {\n cleanSelectedFilters[key] = cleanSelectedFilters[key] ?? [];\n cleanSelectedFilters[key].push(dropdownItem);\n }\n });\n }\n setSelectedFilters(cleanSelectedFilters);\n resetTempQuery?.();\n onResetAll();\n }, [\n initialQuery,\n mandatoryFiltersToShow,\n nonHiddenFilterIds,\n onResetAll,\n resetTempQuery,\n selectedFilters,\n ]);\n\n const onFilterRemoved = useCallback(\n (removedFilterDropdownItem: FilterDropdownItem) => {\n const titleContentId = removedFilterDropdownItem.titleContentId as string;\n\n const filterToolbarGroup = filters.find(\n (group) => group.titleContentId === titleContentId\n );\n\n if (!filterToolbarGroup) {\n return;\n }\n\n const filtersToRemove = filterToolbarGroup.items.filter(\n (filter) => filter.filterId === removedFilterDropdownItem.filterId\n );\n\n const filterIdsToRemove = filtersToRemove.map((f) => f.filterId);\n const filteredDropdownItems = (\n selectedFilters[titleContentId] ?? []\n ).filter(\n (dropdownItem) => !filterIdsToRemove.includes(dropdownItem.filterId)\n );\n\n const updatedSelectedFilters = { ...selectedFilters };\n if (filteredDropdownItems.length > 0) {\n updatedSelectedFilters[titleContentId] = filteredDropdownItems;\n } else {\n delete updatedSelectedFilters[titleContentId];\n }\n\n // all keys to remove from tempQuery\n const filterQueryKeysToRemove = filtersToRemove.flatMap(\n (f) => f.filterQueryKeys ?? []\n );\n\n resetTempQuery?.(filterQueryKeysToRemove);\n setSelectedFilters(updatedSelectedFilters);\n onEditabilityChange?.(\n filtersToRemove.map((f) => f.filterId),\n ReportFilterEditability.Hidden\n );\n },\n [filters, onEditabilityChange, resetTempQuery, selectedFilters]\n );\n\n if (embeddedDisplayOnly) {\n return (\n \n \n \n }\n />\n );\n }\n\n if (listView) {\n return (\n <>\n \n {\n let updatedSelectedFilters: SelectedFilters = {\n ...selectedFilters,\n };\n\n filterDropdownItems.forEach((filterDropdownItem) => {\n const titleContentId =\n filterDropdownItem.titleContentId as string;\n updatedSelectedFilters = {\n ...updatedSelectedFilters,\n [titleContentId]: [\n ...(updatedSelectedFilters[titleContentId] ?? []),\n filterDropdownItem,\n ],\n };\n });\n\n setSelectedFilters(updatedSelectedFilters);\n }}\n />\n \n );\n }\n\n return (\n
    \n
    \n \n \n \n \n \n \n
    \n
    \n \n {\n let updatedSelectedFilters: SelectedFilters = {\n ...selectedFilters,\n };\n\n filterDropdownItems.forEach((filterDropdownItem) => {\n const titleContentId =\n filterDropdownItem.titleContentId as string;\n updatedSelectedFilters = {\n ...updatedSelectedFilters,\n [titleContentId]: [\n ...(updatedSelectedFilters[titleContentId] ?? []),\n filterDropdownItem,\n ],\n };\n });\n\n setSelectedFilters(updatedSelectedFilters);\n }}\n />\n
    \n {hasFiltersApplied && (\n
    {filterAppliedMessage}
    \n )}\n \n {hasFiltersApplied && onSaveQuickFilter && (\n {\n onSubmitFilter?.();\n onSaveQuickFilter?.();\n }}\n className={saveFiltersButton}\n >\n \n \n )}\n \n \n \n \n \n \n \n
    \n );\n};\n","import { clsx } from 'clsx';\nimport { ComponentProps, forwardRef, ReactNode } from 'react';\n\nimport * as styles from './ToolbarButton.css';\n\nexport type ToolbarButtonProps = ComponentProps<'div'> & {\n disabled?: boolean;\n isSelected?: boolean;\n children?: ReactNode;\n};\n\nexport const ToolbarButton = forwardRef(\n function ToolbarButton(\n { isSelected, children, className, disabled, ...buttonProps },\n ref\n ) {\n return (\n \n {children}\n \n );\n }\n);\n","import { DndContext } from '@dnd-kit/core';\nimport { SortableContext, useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { ToolbarButton } from 'src/core/POS/ToolbarButton';\nimport { vars } from 'src/core/themes';\nimport { Button, Popover } from 'src/core/ui';\nimport { DeleteIcon, EditIcon, IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ListIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport {\n CustomFilterIconsContainer,\n CustomFilterItem,\n CustomFilterPopoverContainer,\n CustomFilterPopoverTitle,\n} from '../FilterToolbar.styled';\nimport { QuickFilterToolbarItem } from '../QuickFilterToolbarItem';\nimport * as styles from './CustomFilterButton.css';\n\nexport type CustomFilterButtonProps = {\n quickFilters: QuickFilterToolbarItem[];\n onToggleQuickFilter?: (id: string, isShown: boolean) => void;\n onMoveQuickFilter?: (id: string, overId: string) => void;\n onCreateCustomQuickFilter?: () => void;\n onDeleteCustomQuickFilter?: (id: string) => void;\n onUpdateCustomQuickFilter?: (id: string) => void;\n};\n\nexport function CustomFilterButton({\n quickFilters,\n onToggleQuickFilter,\n onMoveQuickFilter,\n onCreateCustomQuickFilter,\n onDeleteCustomQuickFilter,\n onUpdateCustomQuickFilter,\n}: CustomFilterButtonProps) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {quickFilters?.map((item) => (\n {\n onToggleQuickFilter?.(item.id, isShown);\n }}\n onEdit={() => {\n onUpdateCustomQuickFilter?.(item.id);\n }}\n onDelete={() => {\n onDeleteCustomQuickFilter?.(item.id);\n }}\n />\n ))}\n \n \n\n \n {\n onCreateCustomQuickFilter?.();\n }}\n >\n \n \n \n \n \n \n \n \n \n );\n}\n\nexport type SortableCustomFilterItemProps = QuickFilterToolbarItem & {\n onToggle?: (isShown: boolean) => void;\n onEdit?: () => void;\n onDelete?: () => void;\n};\n\nexport function SortableCustomFilterItem({\n id,\n name,\n isCustomFilter,\n isHidden,\n onToggle,\n onEdit,\n onDelete,\n}: SortableCustomFilterItemProps) {\n const { attributes, listeners, setNodeRef, transform, transition } =\n useSortable({ id });\n\n return (\n \n {\n onToggle?.(e.target.checked);\n }}\n />\n \n {isCustomFilter && (\n <>\n {\n onEdit?.();\n }}\n />\n {\n onDelete?.();\n }}\n />\n \n )}\n
    \n \n
    \n
    \n \n );\n}\n","import { ComponentProps, ReactNode } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { useContent, useFormattedContent } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { CloseButton } from 'src/modals/Modal';\nimport { CrossIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\n\nexport type CustomFilterDialogFieldValues = {\n filterName: string;\n};\n\nexport type CustomFilterDialogProps = {\n headerTitle?: ReactNode;\n defaultValues?: CustomFilterDialogFieldValues;\n validateIsFilterUnique: (name: string) => boolean;\n onSave?: (data: CustomFilterDialogFieldValues) => void;\n} & ComponentProps;\n\nexport const CustomFilterDialog = ({\n headerTitle,\n defaultValues = { filterName: '' },\n validateIsFilterUnique,\n onSave,\n onCancel,\n ...rest\n}: CustomFilterDialogProps) => {\n const requiredMsg = useContent(ContentId.Required);\n const nameText = useContent(ContentId.Name);\n const notUniqueMsg = useFormattedContent(FormatContentId.NotUnique, nameText);\n const { formState, register, handleSubmit } =\n useForm({ defaultValues });\n\n return (\n \n
    {headerTitle}
    \n \n \n \n \n }\n footer={\n <>\n \n \n }\n >\n \n \n validateIsFilterUnique(val) || (notUniqueMsg as string),\n })}\n />\n \n \n );\n};\n","import * as styles from 'src/core/POS/ToolbarButton/ToolbarButton.css';\nimport { Select } from 'src/core/ui';\n\nimport { QuickFilterToolbarItem } from './QuickFilterToolbarItem';\n\nexport const MobileFilterToolbar = ({\n filters,\n defaultValue,\n isSideTable,\n}: {\n filters?: QuickFilterToolbarItem[];\n defaultValue?: string;\n isSideTable?: boolean;\n}) => {\n if (!filters) return null;\n\n return (\n {\n // Find the filter that matches the value and call its onClick handler\n filters.find((f) => f.id === value)?.onClick();\n }}\n defaultValue={defaultValue}\n >\n \n \n \n \n {filters.map(({ id, name, isHidden }) => {\n if (isHidden) {\n return null;\n }\n return (\n \n {name}\n \n );\n })}\n \n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { useMemo, useState } from 'react';\nimport {\n FilterDialogV2,\n FilterDialogV2Props,\n} from 'src/components/FilterToolbar/FilterDialogV2/FilterDialogV2';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { ToolbarButton } from 'src/core/POS/ToolbarButton';\nimport { vars } from 'src/core/themes';\nimport { Popover } from 'src/core/ui';\nimport { ScrollableToolbar } from 'src/core/ui/ScrollableToolbar';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { FilterIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { hasAnyOfPermissions } from 'src/utils/userPermissionUtils';\n\nimport {\n FilterToolbarGroup,\n FilterToolbarItemId,\n} from '../Filters/Filter.types';\nimport {\n CustomFilterButton,\n CustomFilterButtonProps,\n} from './CustomFilterButton';\nimport { CustomFilterDialog } from './CustomFilterButton/CustomFilterDialog';\nimport { FilterDialog } from './FilterDialog';\nimport * as styles from './FilterToolbar.css';\nimport { FilterCount, FilterToolbarContainer } from './FilterToolbar.styled';\nimport { MobileFilterToolbar } from './MobileFilterToolbar';\nimport { QuickFilterToolbarItem } from './QuickFilterToolbarItem';\n\nexport type FilterToolbarProps = {\n filters: FilterToolbarGroup[];\n quickFilters?: QuickFilterToolbarItem[];\n /**\n * Whether the \"All\" quick filter is currently selected.\n */\n isAllSelected?: boolean;\n onResetAll: () => void;\n resetTempQuery?: (keys?: FilterToolbarItemId[]) => void; // TODO: make this not optional\n tempQuery?: Partial>;\n onSubmitFilter?: () => void;\n filterAppliedCounts: number;\n filterAppliedIds?: FilterToolbarItemId[];\n mandatoryFiltersToShow?: FilterToolbarItemId[];\n allContentId?: ContentId;\n\n showAllButton?: boolean;\n showCustomFilterButton?: boolean;\n onCreateCustomQuickFilter?: (filter: { name: string }) => void;\n onUpdateCustomQuickFilter?: (\n id: string,\n updatedFilter: { name: string }\n ) => void;\n filterAppliedMessage?: React.ReactNode;\n\n alwaysShowAllFilters?: boolean;\n} & Pick<\n CustomFilterButtonProps,\n 'onToggleQuickFilter' | 'onMoveQuickFilter' | 'onDeleteCustomQuickFilter'\n> &\n Pick<\n FilterDialogV2Props,\n | 'onEditabilityChange'\n | 'embeddedDisplayOnly'\n | 'performerVenueFilter'\n | 'listView'\n >;\n\nexport function FilterToolbar({\n filters,\n quickFilters,\n isAllSelected,\n allContentId,\n onResetAll,\n onSubmitFilter,\n filterAppliedCounts,\n showAllButton = true,\n showCustomFilterButton = true,\n onCreateCustomQuickFilter,\n onUpdateCustomQuickFilter,\n filterAppliedIds,\n resetTempQuery,\n tempQuery,\n mandatoryFiltersToShow = [],\n alwaysShowAllFilters,\n embeddedDisplayOnly = false,\n performerVenueFilter,\n filterAppliedMessage,\n onEditabilityChange,\n listView,\n ...customFilterButtonProps\n}: FilterToolbarProps) {\n const customFilterDialog = useBasicDialog();\n // the quick filter currently being edited\n const [currQuickFilterId, setCurrQuickFilterId] = useState(\n null\n );\n const currQuickFilter = quickFilters?.find(\n ({ id }) => id === currQuickFilterId\n );\n\n const isMobile = useMatchMedia('mobile');\n const allFilter = useMemo(\n () =>\n showAllButton\n ? [\n {\n id: 'all',\n name: ,\n isHidden: false,\n isSelected: isAllSelected,\n onClick: onResetAll,\n isCustomFilter: false,\n },\n ]\n : [],\n [allContentId, isAllSelected, onResetAll, showAllButton]\n );\n\n const mergedFilters = useMemo(\n () => (quickFilters ? [...allFilter, ...quickFilters] : allFilter),\n [allFilter, quickFilters]\n );\n\n const { initialQuery } = useFilterQueryContext();\n\n const hasFiltersApplied = useMemo(\n () => !isEqual(tempQuery, initialQuery),\n [initialQuery, tempQuery]\n );\n\n const onSaveQuickFilter = useMemo(\n () =>\n showCustomFilterButton\n ? () => {\n customFilterDialog.launchDialog();\n }\n : undefined,\n [customFilterDialog, showCustomFilterButton]\n );\n\n if (embeddedDisplayOnly || listView) {\n return (\n \n );\n }\n\n return (\n \n {isMobile && }\n {filters.length > 0 && (\n {\n if (!alwaysShowAllFilters && !isOpen) {\n resetTempQuery?.();\n }\n }}\n >\n \n
    \n \n
    \n \n
    \n {hasFiltersApplied && filterAppliedCounts > 0 && (\n {filterAppliedCounts}\n )}\n
    \n
    \n \n {!alwaysShowAllFilters ? (\n \n ) : (\n \n )}\n \n \n )}\n {!isMobile && (\n \n {mergedFilters?.map(({ id, name, isHidden, isSelected, onClick }) => {\n if (isHidden) {\n return null;\n }\n return (\n \n {name}\n \n );\n })}\n \n )}\n {showCustomFilterButton && (\n <>\n {\n customFilterDialog.launchDialog();\n }}\n onUpdateCustomQuickFilter={(id) => {\n setCurrQuickFilterId(id);\n customFilterDialog.launchDialog();\n }}\n />\n {customFilterDialog.dialogProps.isOpen && (\n \n ) : (\n \n )\n }\n defaultValues={\n currQuickFilter && currQuickFilter.isCustomFilter\n ? {\n filterName: currQuickFilter.name as string,\n }\n : undefined\n }\n validateIsFilterUnique={(val) => {\n if (currQuickFilterId && val === currQuickFilterId) {\n return true;\n }\n return (\n quickFilters === undefined ||\n !quickFilters.some(({ id }) => id === val)\n );\n }}\n onSave={(data) => {\n if (currQuickFilterId) {\n onUpdateCustomQuickFilter?.(currQuickFilterId, {\n name: data.filterName,\n });\n } else {\n onCreateCustomQuickFilter?.({ name: data.filterName });\n }\n setCurrQuickFilterId(null);\n customFilterDialog.closeDialog();\n }}\n onCancel={() => {\n setCurrQuickFilterId(null);\n customFilterDialog.closeDialog();\n }}\n />\n )}\n \n )}\n
    \n );\n}\n","import { isEqual } from 'lodash-es';\nimport { useMemo } from 'react';\nimport { DateRangeSelector } from 'src/core/POS/DateRangeSelector';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { DateRangePresetName } from 'src/utils/dateTimeUtils';\nimport {\n ActionType,\n AuditActionType,\n DateTimeRangeWithRelative,\n} from 'src/WebApiController';\n\nimport { FilterToolbarItemId } from '../Filters';\nimport { FilterToolbar } from '../FilterToolbar';\nimport * as styles from './ActivityLog.css';\n\nexport type ActivityLogFilterQuery = {\n date?: DateTimeRangeWithRelative | null;\n actionTypes: ActionType[];\n auditActionTypes: AuditActionType[];\n initiatedBy: string[];\n};\n\nexport type ActivityLogFilterProps = {\n currentFilter: ActivityLogFilterQuery;\n onCurrentFilterUpdated: (settings: ActivityLogFilterQuery) => void;\n allActionTypes?:\n | {\n actionType: ActionType;\n auditActionType?: AuditActionType | null;\n display: string;\n }[]\n | undefined;\n allUsers: (string | null)[] | undefined;\n};\n\nexport function ActivityLogFilter({\n currentFilter,\n onCurrentFilterUpdated,\n allActionTypes,\n allUsers,\n}: ActivityLogFilterProps) {\n const getAppliedFilterCounts = () => {\n let count = 0;\n\n if (currentFilter.date != null) {\n count++;\n }\n // Two filters are combined into one in UI\n if (\n currentFilter.actionTypes.length > 0 ||\n currentFilter.auditActionTypes.length > 0\n ) {\n count++;\n }\n if (currentFilter.initiatedBy.length > 0) {\n count++;\n }\n\n return count;\n };\n\n const availableUsers = useMemo(\n () =>\n (allUsers ?? [])\n ?.filter((x) => x != null)\n .toSorted((a, b) =>\n a == null || b == null\n ? 1\n : a.localeCompare(b, undefined, {\n sensitivity: 'base',\n })\n )\n .reduce(\n (acc, item) => {\n acc[item!] = item!;\n return acc;\n },\n {} as Record\n ),\n [allUsers]\n );\n\n const availableActionTypesWithAudit = useMemo(\n () =>\n (allActionTypes ?? [])\n .toSorted((a, b) =>\n a == null || b == null\n ? 1\n : a.toString().localeCompare(b.toString(), undefined, {\n sensitivity: 'base',\n })\n )\n .reduce(\n (acc, item) => {\n if (item.auditActionType) {\n acc[item.auditActionType] = item.display;\n } else {\n acc[item.actionType] = item.display;\n }\n return acc;\n },\n {} as Record\n ),\n [allActionTypes]\n );\n\n const defaultFilter = {\n actionTypes: [],\n auditActionTypes: [],\n initiatedBy: [],\n };\n return (\n
    \n onCurrentFilterUpdated(defaultFilter)}\n filterAppliedCounts={getAppliedFilterCounts()}\n alwaysShowAllFilters\n filters={[\n {\n items: [\n {\n filterId: 'date' as FilterToolbarItemId,\n labelContentId: ContentId.Date,\n filterQueryKeys: ['date'] as FilterToolbarItemId[],\n filterItem: (\n \n onCurrentFilterUpdated({\n ...currentFilter,\n date: newValue ?? null,\n })\n }\n />\n ),\n },\n {\n filterId: 'auditActionTypes' as FilterToolbarItemId,\n labelContentId: ContentId.ActivityLogActionType,\n filterQueryKeys: [\n 'actionTypes',\n 'auditActionTypes',\n ] as FilterToolbarItemId[],\n filterItem: (\n 10\n }\n onChange={(newValues) => {\n if (newValues) {\n const actionTypes = newValues.filter((x) =>\n Object.keys(ActionType).includes(x)\n );\n const auditActionTypes = newValues.filter((x) =>\n Object.keys(AuditActionType).includes(x)\n );\n onCurrentFilterUpdated({\n ...currentFilter,\n actionTypes: actionTypes as ActionType[],\n auditActionTypes:\n auditActionTypes as AuditActionType[],\n });\n } else {\n onCurrentFilterUpdated({\n ...currentFilter,\n actionTypes: [],\n auditActionTypes: [],\n });\n }\n }}\n valueOptionsContent={availableActionTypesWithAudit}\n />\n ),\n },\n {\n filterId: 'initiatedBy' as FilterToolbarItemId,\n labelContentId: ContentId.ActivityLogInitiatedBy,\n filterQueryKeys: ['initiatedBy'] as FilterToolbarItemId[],\n filterItem: (\n 10}\n onChange={(newValues) => {\n if (newValues.length) {\n onCurrentFilterUpdated({\n ...currentFilter,\n initiatedBy: newValues,\n });\n } else {\n onCurrentFilterUpdated({\n ...currentFilter,\n initiatedBy: [],\n });\n }\n }}\n valueOptionsContent={availableUsers}\n />\n ),\n },\n ],\n },\n ]}\n />\n
    \n );\n}\n","import { useMemo, useState } from 'react';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n ActivityLogTable,\n ActivityLogTableDataProps,\n} from 'src/tables/ActivityLogTable';\nimport type { ActivityLog } from 'src/WebApiController';\nimport { ActionType, Feature } from 'src/WebApiController';\nimport styled from 'styled-components/macro';\n\nimport * as styles from './ActivityLog.css';\nimport {} from './ActivityLog.styled';\nimport { ActivityLogFilter, ActivityLogFilterQuery } from './ActivityLogFilter';\n\ntype ActivityLogUiProps = ActivityLogTableDataProps & object;\n\nexport interface GroupedActivityLog extends ActivityLog {\n activityLogs: ActivityLog[];\n}\n\nexport function ActivityLog({\n activityLogs,\n count,\n failedToRetrieveData,\n}: ActivityLogUiProps) {\n const [filter, setFilter] = useState({\n actionTypes: [],\n auditActionTypes: [],\n initiatedBy: [],\n });\n\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n\n const filteredData = useMemo(() => {\n return activityLogs?.filter((activityLog) => {\n let allow = true;\n allow =\n filter?.date?.start == null ||\n new Date(filter.date?.start) <= new Date(activityLog.actionDate);\n allow &&=\n filter?.date?.end == null ||\n new Date(filter.date?.end) >= new Date(activityLog.actionDate);\n allow &&=\n ((filter?.actionTypes == null || filter?.actionTypes.length === 0) &&\n (filter?.auditActionTypes == null ||\n filter?.auditActionTypes.length === 0)) ||\n filter.actionTypes.includes(activityLog.actionType) ||\n (activityLog.auditActionType != null &&\n filter.auditActionTypes.includes(activityLog.auditActionType));\n allow &&=\n filter?.initiatedBy == null ||\n filter?.initiatedBy.length === 0 ||\n (activityLog.initiatedBy != null &&\n activityLog.initiatedBy.username != null &&\n filter.initiatedBy.includes(activityLog.initiatedBy.username)) ||\n (activityLog.initiatedByImpersonated != null &&\n activityLog.initiatedByImpersonated.username != null &&\n filter.initiatedBy.includes(\n activityLog.initiatedByImpersonated.username\n ));\n allow &&=\n hasAutoPricingFeature ||\n activityLog.actionType !== ActionType.ListingAutoPricingConfig;\n return allow;\n });\n }, [filter, activityLogs, hasAutoPricingFeature]);\n\n const groupedData: GroupedActivityLog[] = useMemo(() => {\n if (!filteredData) {\n return [];\n }\n\n const result: GroupedActivityLog[] = [];\n let currentGroup: GroupedActivityLog | null = null;\n\n const sortedFilteredData = filteredData.toSorted((a, b) =>\n a.actionDate.localeCompare(b.actionDate)\n );\n sortedFilteredData.forEach((activityLog) => {\n if (\n currentGroup &&\n currentGroup.actionTypeDisplay === activityLog.actionTypeDisplay &&\n currentGroup.initiatedBy.userId === activityLog.initiatedBy.userId\n ) {\n currentGroup.activityLogs.push(activityLog);\n } else {\n currentGroup = {\n ...activityLog,\n actionTypeDisplay: activityLog.actionTypeDisplay,\n initiatedBy: activityLog.initiatedBy,\n activityLogs: [activityLog],\n };\n result.push(currentGroup);\n }\n });\n\n return result;\n }, [filteredData]);\n\n return (\n
    \n {count > 0 && (\n
    \n \n ({\n actionType: log.actionType,\n auditActionType: log.auditActionType,\n display: log.actionTypeDisplay,\n }))}\n allUsers={activityLogs\n ?.filter((log) => log.initiatedBy?.username && true)\n .map((log) => log.initiatedBy?.username ?? null)}\n />\n \n
    \n )}\n \n
    \n );\n}\n\nconst StyledDiv = styled.span`\n float: left;\n`;\n","import { formatInTimeZone } from 'date-fns-tz';\nimport { useNavigate } from 'react-router-dom';\nimport { ConnectedEventInfo } from 'src/components/Events/ConnectedEventInfo';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { TooltipPopover } from 'src/core/ui/TooltipPopover';\nimport { OpenLinkIcon } from 'src/svgs/OpenLinkIcon';\nimport { getActivityLogChangeDisplay } from 'src/utils/activityLogUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getTimeAgoString, stringToUtcDate } from 'src/utils/dateTimeUtils';\nimport { getListingDetailsRelativeUrl } from 'src/utils/inventoryUtils';\nimport { getPurchaseOrderRelativeUrl } from 'src/utils/purchaseUtils';\nimport { getSaleDetailsRelativeUrl } from 'src/utils/saleUtils';\nimport {\n ActionOutboxEntityType,\n ActivityLog,\n ActivityLogValueChange,\n MarketplaceOperationResultState,\n} from 'src/WebApiController';\n\nimport * as styles from './ActivityLogDisplay.css';\n\n/**\n * Maximum number of lines we will show for additional info.\n *\n * If there are more than this value, 1 less will be shown and the rest will be hidden in a see\n * more.\n */\nconst MAX_ADDITIONAL_INFO_LINES = 3;\n\nexport type ActivityLogDisplayProps = {\n activityLog: ActivityLog;\n};\n\nexport function ActivityLogDisplay({\n activityLog: {\n actionTypeDisplay,\n actionDate: actionDateStr,\n entityId,\n entityType,\n additionalInfo,\n initiatedBy: initiatedByUser,\n initiatedByImpersonated,\n event,\n performer,\n venue,\n },\n}: ActivityLogDisplayProps) {\n const { timeZone } = useSiteTimezoneContext();\n const actionDate = new Date(stringToUtcDate(actionDateStr));\n const removedContent = useContent(ContentId.Empty);\n const navigate = useNavigate();\n\n const entityUrl = (() => {\n switch (entityType) {\n case ActionOutboxEntityType.Sale:\n return getSaleDetailsRelativeUrl(entityId);\n\n case ActionOutboxEntityType.Listing:\n return getListingDetailsRelativeUrl(entityId);\n\n case ActionOutboxEntityType.Purchase:\n return getPurchaseOrderRelativeUrl(entityId);\n\n case ActionOutboxEntityType.SellerSupportCase:\n return new URL(\n 'http://add-deep-link-to-support-case-view-when-its-created'\n );\n\n case ActionOutboxEntityType.Document:\n return null;\n }\n })();\n const timeAgo = getTimeAgoString(actionDate);\n const additionalInfoKeys = Object.keys(additionalInfo);\n const actionTypeIntent = (() => {\n for (const entry of Object.values(additionalInfo)) {\n if (\n entry.message?.state &&\n entry.message.state !== MarketplaceOperationResultState.Succeeded\n ) {\n return 'error';\n }\n }\n return 'success';\n })();\n\n const initiatedBy = (\n \n by {initiatedByUser?.username}\n {initiatedByImpersonated?.username\n ? ` (impersonating ${initiatedByImpersonated.username})`\n : ''}\n \n );\n return (\n \n \n
    \n
    \n \n {actionTypeDisplay}\n \n {timeAgo && (\n <>\n   •  \n \n {timeAgo}\n \n \n )}\n
    \n {additionalInfoKeys.length === 0\n ? initiatedBy\n : (additionalInfoKeys.length <= MAX_ADDITIONAL_INFO_LINES\n ? additionalInfoKeys\n : additionalInfoKeys.slice(0, MAX_ADDITIONAL_INFO_LINES - 1)\n ).map((key, i) => (\n
    \n \n {getActivityLogChangeDisplay(\n key,\n additionalInfo[key],\n removedContent\n )}\n \n {i === 0 && <> {initiatedBy}}\n
    \n ))}\n {additionalInfoKeys.length > MAX_ADDITIONAL_INFO_LINES && (\n }\n >\n {additionalInfoKeys.slice(2).map((key) => (\n
    \n {getActivityLogChangeDisplay(\n key,\n additionalInfo[key],\n removedContent\n )}\n
    \n ))}\n \n )}\n
    \n {entityUrl && (\n {\n navigate(entityUrl.toString());\n }}\n >\n \n \n )}\n
    \n \n
    \n );\n}\n","import { createContext, ReactNode, useContext } from 'react';\nimport { useToggle } from 'react-use';\n\ntype MenuContextType = {\n isMenuOpened: boolean;\n toggleIsMenuOpened: (nextValue?: boolean) => void;\n};\n\nconst MenuContext = createContext({\n isMenuOpened: false,\n toggleIsMenuOpened: () => void 0,\n});\n\ntype MenuContextProviderProps = { children: ReactNode };\n\nexport const MenuContextProvider = ({ children }: MenuContextProviderProps) => {\n const [isMenuOpened, toggleIsMenuOpened] = useToggle(false);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useMenuState = () => useContext(MenuContext);\n","import { useCallback } from 'react';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { ErrorTypes } from 'src/contexts/ErrorBoundaryContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { LoginClient, LoginContext } from 'src/WebApiController';\n\nexport const useFetchLoginContext = () => {\n const loginErrorMessage = useContent(\n ContentId.Error_Unauthorized_GenericMessage\n );\n const fetchLoginContext = useCallback(\n (\n onSuccess: (loginContext: LoginContext) => void,\n onError?: (error: ErrorTypes) => void\n ) => {\n tryInvokeApi(\n () =>\n new LoginClient({})\n .getLoginContext(window.location.pathname)\n .then((loginContext) => {\n if (\n loginContext.isSuccess &&\n loginContext?.user?.activeAccount?.id != null\n ) {\n onSuccess(loginContext);\n } else {\n onError?.({\n status: 401,\n message: loginErrorMessage,\n response: JSON.stringify(loginContext),\n });\n }\n }),\n (error) => {\n onError?.(error);\n }\n );\n },\n [loginErrorMessage]\n );\n\n return {\n fetchLoginContext,\n };\n};\n","import { useAppContext } from 'src/contexts/AppContext';\nimport { getHasAccessToRoutes } from 'src/utils/userUtils';\n\nexport const useMainAccessibleRoute = () => {\n const { loginContext, appContext } = useAppContext();\n const mainAccessibleRoutes = getHasAccessToRoutes(\n loginContext?.user,\n appContext?.features\n );\n\n return mainAccessibleRoutes.length ? mainAccessibleRoutes[0] : undefined;\n};\n","import signalR, {\n HubConnection,\n HubConnectionBuilder,\n HubConnectionState,\n} from '@microsoft/signalr';\nimport {\n createContext,\n ReactNode,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Feature } from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { SignalRLogger } from '../NotificationsContext';\n\nexport type IListingNotificationContext = {\n hubConnection?: HubConnection;\n};\n\nexport const ListingNotificationContext =\n createContext({\n hubConnection: undefined,\n });\n\nexport const useListingNotificationContext = () =>\n useContext(ListingNotificationContext);\n\nexport function ListingNotificationContextProvider({\n children,\n}: {\n children: ReactNode;\n}) {\n const hasHandlingListingSignalRFeature = useUserHasFeature(\n Feature.HandlingListingSignalR\n );\n const { activeAccountWebClientConfig } = useAppContext();\n const [hubConnection, setHubConnection] = useState();\n\n useEffect(() => {\n // Only attempt to connect to signal R when there is a login\n if (\n activeAccountWebClientConfig.activeAccountId &&\n hasHandlingListingSignalRFeature\n ) {\n if (\n !hubConnection ||\n hubConnection.state === HubConnectionState.Disconnected ||\n hubConnection.state === HubConnectionState.Disconnecting\n ) {\n const newHubConnection = new HubConnectionBuilder()\n .withUrl('/hubs/listingnotification')\n .withAutomaticReconnect()\n .configureLogging(new SignalRLogger())\n .build();\n\n setHubConnection(newHubConnection);\n\n newHubConnection\n .start()\n .then(() => {\n console.debug(\n `ListingNotification connection ready with id: ${newHubConnection.connectionId}`\n );\n })\n .catch((err) => {\n console.warn(\n 'ListingNotification could not be started at this time: ' + err\n );\n });\n\n newHubConnection.onclose((err) => {\n console.debug('ListingNotification connection closed', err);\n });\n }\n }\n\n return () => {\n if (\n hubConnection &&\n !(\n hubConnection.state === HubConnectionState.Disconnected ||\n hubConnection.state === HubConnectionState.Disconnecting\n )\n ) {\n console.debug(\n `Stopping ListingNotification connection (state: ${hubConnection.state}) with id: ${hubConnection.connectionId}`\n );\n hubConnection.stop();\n setHubConnection(undefined);\n }\n };\n }, [\n activeAccountWebClientConfig.activeAccountId,\n hubConnection,\n hasHandlingListingSignalRFeature,\n ]);\n\n return (\n \n {children}\n \n );\n}\n","import { debounce } from 'lodash-es';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport {\n ItemIdWithRowVersion,\n useCatalogDataContext,\n} from 'src/contexts/CatalogDataContext';\nimport { useListingNotificationContext } from 'src/contexts/ListingNotificationContext';\nimport { entityTypeNumberToEntityTypeEnum } from 'src/utils/activityLogUtils';\nimport { ActionOutboxEntityType, Listing } from 'src/WebApiController';\n\nexport const useRefreshListingOnNotification = () => {\n const { hubConnection } = useListingNotificationContext();\n\n const { refreshEventForItems } = useCatalogDataContext();\n const { setActivePosEntity, posEntityId, posEntity } =\n useActivePosEntityContext();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedSetActivePosEntity = useCallback(\n debounce((posEntityId: number) => {\n setActivePosEntity(posEntityId, undefined, true);\n }, 3000),\n []\n );\n\n const [_, setItemsIdsToRefresh] = useState([]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedSetItemsIdsToRefresh = useCallback(\n debounce((ids: ItemIdWithRowVersion[]) => {\n refreshEventForItems(ids, ActionOutboxEntityType.Listing);\n setItemsIdsToRefresh((prev) => []);\n }, 5000),\n [refreshEventForItems]\n );\n\n useEffect(() => {\n const messageHandler = async (message: string) => {\n try {\n const messageList = JSON.parse(message);\n for (const m of messageList) {\n console.debug(\n 'useRefreshListingOnNotification - got new notification',\n m,\n hubConnection\n );\n\n // Refresh relevant listing\n if (m.EntityId === posEntityId && posEntityId) {\n if (\n posEntity?.rowVer &&\n m.RowVersion &&\n m.RowVersion > posEntity?.rowVer\n ) {\n debouncedSetActivePosEntity(posEntityId);\n }\n }\n const entityType = entityTypeNumberToEntityTypeEnum(m.EntityType);\n if (\n entityType === ActionOutboxEntityType.Listing &&\n m.EntityId &&\n m.RowVersion\n ) {\n setItemsIdsToRefresh((prev) => {\n const existingRowVer = prev.find((i) => i.id === m.EntityId)\n ?.rowVer;\n if (existingRowVer && m.RowVersion <= existingRowVer) {\n return prev;\n }\n\n const newIds: ItemIdWithRowVersion[] = [\n ...prev.filter((i) => i.id !== m.EntityId),\n { id: m.EntityId, rowVer: m.RowVersion },\n ];\n debouncedSetItemsIdsToRefresh(newIds);\n return newIds;\n });\n }\n }\n } catch (e) {\n console.error(\n 'useRefreshListingOnNotification - malformed SignalR Message: ' +\n message\n );\n }\n };\n\n if (hubConnection) {\n hubConnection.on('new', messageHandler);\n }\n\n return () => {\n if (hubConnection) {\n hubConnection.off('new', messageHandler);\n }\n };\n }, [\n debouncedSetActivePosEntity,\n debouncedSetItemsIdsToRefresh,\n hubConnection,\n posEntity?.rowVer,\n posEntityId,\n ]);\n};\n","import React, { ComponentProps, ReactNode, useState } from 'react';\nimport { useDebounce } from 'react-use';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosSearchBox } from 'src/core/POS/PosSearchBox';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Button, Stack } from 'src/core/ui';\nimport { SearchOutlineIcon } from 'src/svgs/Viagogo';\n\nimport * as styles from './SearchResultPickerDialog.css';\n\nexport type SearchResultPickerDialogProps = {\n header: JSX.Element;\n resultItems: T[];\n isLoading?: boolean;\n renderItem?: (item: T) => React.ReactElement;\n onResultItemPicked: (item: T) => void;\n onCancel?: () => void;\n} & ComponentProps;\n\nexport function SearchResultPickerDialog({\n header,\n resultItems,\n isLoading,\n renderItem,\n onResultItemPicked,\n onResultItemSearched,\n onCancel,\n ...rest\n}: SearchResultPickerDialogProps) {\n const [textSearch, setTextSearch] = useState('');\n useDebounce(\n () => {\n onResultItemSearched?.(textSearch);\n },\n 300,\n [textSearch]\n );\n\n return (\n }\n includeCloseButton={true}\n >\n {isLoading ? (\n \n ) : (\n \n {onResultItemSearched && (\n }\n value={textSearch}\n onSearchChange={setTextSearch}\n />\n )}\n {resultItems?.map((ri, i) => (\n onResultItemPicked(ri)}\n >\n {renderItem?.(ri) || (ri as ReactNode)}\n \n ))}\n \n )}\n \n );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { Permission, SellerUserClient } from 'src/WebApiController';\n\nimport { useUserHasAnyOfPermissions } from './useUserHasAnyOfPermissions';\n\nexport const HAS_RELEASE_NOTES_UNREAD_QUERY_KEY =\n 'SellerUserClient.getHasReleaseNotesUnread';\n\nexport const useHasReleaseNotesUnread = ({\n currentLoginUserOnly,\n disabled,\n}: {\n /* whether to use the active account's user or the login user (which includes impersonating user) Id */\n currentLoginUserOnly?: boolean;\n disabled?: boolean;\n}) => {\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const canViewReleaseNotes = useUserHasAnyOfPermissions(\n Permission.General_ViewReleaseNotes\n );\n const shouldQuery =\n activeAccountWebClientConfig.activeAccountId != null &&\n !disabled &&\n canViewReleaseNotes;\n\n const hasReleaseNotesUnreadQuery = useQuery({\n queryKey: [\n HAS_RELEASE_NOTES_UNREAD_QUERY_KEY,\n activeAccountWebClientConfig.activeAccountId,\n currentLoginUserOnly,\n shouldQuery,\n ],\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n return new SellerUserClient(\n activeAccountWebClientConfig\n ).getHasReleaseNotesUnread(currentLoginUserOnly ?? false);\n },\n\n enabled: shouldQuery,\n staleTime: Infinity, // seldom change data and we invalidate on reload\n refetchOnWindowFocus: false,\n meta: {\n persist: false,\n onError: (error: ErrorTypes) => {\n trackError('SellerUserClient.getHasReleaseNotesUnread', error, {\n currentLoginUserOnly,\n });\n },\n },\n });\n\n return {\n hasReleaseNotesUnread: hasReleaseNotesUnreadQuery.data ?? false,\n };\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useEffect, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { SellerUserClient } from 'src/WebApiController';\n\nexport const useGetReleaseNoteHtml = ({\n releaseNoteIds,\n currentLoginUserOnly,\n disabled,\n}: {\n releaseNoteIds?: number[];\n currentLoginUserOnly?: boolean;\n disabled?: boolean;\n}) => {\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const [releaseNoteHtmlByReleaseNoteId, setReleaseNoteHtmlByReleaseNoteId] =\n useState>({});\n\n const shouldQuery =\n activeAccountWebClientConfig.activeAccountId != null &&\n !disabled &&\n !!releaseNoteIds?.length;\n\n const releaseNoteIdsSorted = releaseNoteIds?.toSorted((a, b) => a - b);\n\n const releaseNoteHtmlQuery = useQuery({\n queryKey: [\n 'SellerUserClient.getAvailableReleaseNotes',\n activeAccountWebClientConfig.activeAccountId,\n currentLoginUserOnly,\n releaseNoteIdsSorted,\n ],\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n return new SellerUserClient(\n activeAccountWebClientConfig\n ).getReleaseNoteHtmlByReleaseNoteIds(\n currentLoginUserOnly ?? false,\n releaseNoteIdsSorted ?? []\n );\n },\n\n enabled: shouldQuery,\n staleTime: Infinity, // seldom change data and we invalidate on reload\n refetchOnWindowFocus: false,\n meta: {\n persist: false,\n onError: (error: ErrorTypes) => {\n trackError(\n 'SellerUserClient.getReleaseNoteHtmlByReleaseNoteIds',\n error,\n { currentLoginUserOnly, releaseNoteIdsSorted }\n );\n },\n },\n });\n\n useEffect(() => {\n // Accumulate release note html\n if (releaseNoteHtmlQuery.data != null) {\n const alreadyContainsAllReleaseNoteIds = releaseNoteHtmlQuery.data.every(\n (r) => !!releaseNoteHtmlByReleaseNoteId[r.id]\n );\n\n if (!alreadyContainsAllReleaseNoteIds) {\n setReleaseNoteHtmlByReleaseNoteId((prev) => {\n return {\n ...prev,\n ...releaseNoteHtmlQuery.data!.reduce(\n (acc, curr) => {\n acc[curr.id] = curr.descriptionHtml ?? '';\n return acc;\n },\n {} as Record\n ),\n };\n });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [releaseNoteHtmlQuery.data]);\n\n return {\n releaseNoteHtmlByReleaseNoteId: releaseNoteHtmlByReleaseNoteId,\n isLoading: releaseNoteHtmlQuery.isLoading,\n };\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n Permission,\n ReleaseNote,\n SellerUserClient,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { HAS_RELEASE_NOTES_UNREAD_QUERY_KEY } from './useHasReleaseNotesUnread';\nimport { useUserHasAnyOfPermissions } from './useUserHasAnyOfPermissions';\nimport { useServerUserSetting } from './useUserSetting';\n\nexport const useReleaseNotes = ({\n getUnreadOnly,\n currentLoginUserOnly,\n disabled,\n}: {\n getUnreadOnly?: boolean;\n /* whether to use the active account's user or the login user (which includes impersonating user) Id */\n currentLoginUserOnly?: boolean;\n disabled?: boolean;\n}) => {\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const queryClient = useQueryClient();\n\n const canViewReleaseNotes = useUserHasAnyOfPermissions(\n Permission.General_ViewReleaseNotes\n );\n\n const { value: releaseNoteIdsRead, setUserSetting } = useServerUserSetting<\n number[]\n >({\n id: UserSetting.ReleaseNoteIdsRead,\n currentLoginUserOnly: currentLoginUserOnly ?? false,\n });\n\n const shouldQuery =\n activeAccountWebClientConfig.activeAccountId != null &&\n !disabled &&\n canViewReleaseNotes;\n\n const mainQueryKey = [\n 'SellerUserClient.getAvailableReleaseNoteInfos',\n activeAccountWebClientConfig.activeAccountId,\n currentLoginUserOnly,\n shouldQuery,\n ];\n\n const unreadQueryKey = [...mainQueryKey, true /* getUnreadOnly */];\n\n const releaseNotesQuery = useQuery({\n queryKey: [...mainQueryKey, getUnreadOnly],\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n return new SellerUserClient(\n activeAccountWebClientConfig\n ).getAvailableReleaseNoteInfos(\n currentLoginUserOnly ?? false,\n getUnreadOnly ?? false\n );\n },\n\n enabled: shouldQuery,\n staleTime: Infinity, // seldom change data and we invalidate on reload\n refetchOnWindowFocus: false,\n meta: {\n persist: false,\n onError: (error: ErrorTypes) => {\n trackError('SellerUserClient.getAvailableReleaseNoteInfos', error, {\n currentLoginUserOnly,\n getUnreadOnly,\n });\n },\n },\n });\n\n // Mutation to update release note id and refresh related queries\n const setReleaseNoteIdsReadMutation = useMutation({\n mutationFn: async ({ value }: { value: number[] }) => {\n return await setUserSetting(value);\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n onMutate: ({ value }) => {\n queryClient.cancelQueries({ queryKey: unreadQueryKey });\n const prevValue = queryClient.getQueryData(\n unreadQueryKey\n );\n\n const newValue = prevValue?.filter((p) => !value.includes(p.id));\n\n queryClient.setQueryData(unreadQueryKey, newValue);\n return { prevValue };\n },\n onError: (err: ErrorTypes, { value }, context) => {\n queryClient.setQueryData(unreadQueryKey, context?.prevValue);\n trackError('SellerUserClient.getAvailableReleaseNoteInfos', err, {\n value,\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey: unreadQueryKey });\n queryClient.invalidateQueries({\n queryKey: [HAS_RELEASE_NOTES_UNREAD_QUERY_KEY],\n });\n },\n });\n\n return {\n releaseNoteInfos: releaseNotesQuery.data,\n isLoading: releaseNotesQuery.isPending,\n releaseNoteIdsRead,\n setReleaseNoteIdsRead: async (noteIds: number[]) => {\n return await setReleaseNoteIdsReadMutation.mutateAsync({\n value: noteIds,\n });\n },\n };\n};\n","import clsx from 'clsx';\nimport { debounce } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n Content,\n FormatContent,\n useContent,\n} from 'src/contexts/ContentContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useGetReleaseNoteHtml } from 'src/hooks/api/useGetReleaseNoteHtml';\nimport { useReleaseNotes } from 'src/hooks/useReleaseNotes';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { NoData } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { ReleaseNote, ReleaseNoteType } from 'src/WebApiController';\n\nimport { MainRoute } from '../MainRoute';\nimport * as reportsStyles from '../Reports/Reports.css';\nimport * as styles from './ReleaseNotes.css';\n\nexport function ReleaseNotes() {\n const whatsNewTitle = useContent(ContentId.WhatsNew);\n const releaseNotesText = useContent(ContentId.ReleaseNotes);\n\n const {\n releaseNoteInfos,\n releaseNoteIdsRead,\n setReleaseNoteIdsRead,\n isLoading,\n } = useReleaseNotes({});\n\n const isReleaseNoteRead = useCallback(\n (releaseNoteId: number) => {\n return releaseNoteIdsRead?.includes(releaseNoteId);\n },\n [releaseNoteIdsRead]\n );\n\n const markReleaseNoteAsRead = useCallback(\n async (releaseNoteId: number) => {\n if (isReleaseNoteRead(releaseNoteId)) {\n return;\n }\n\n await setReleaseNoteIdsRead([\n ...(releaseNoteIdsRead ?? []),\n releaseNoteId,\n ]);\n },\n [isReleaseNoteRead, setReleaseNoteIdsRead, releaseNoteIdsRead]\n );\n\n const releaseNotesSortedByType = useMemo(() => {\n if (!releaseNoteInfos) {\n return releaseNoteInfos;\n }\n\n const newFeatures = releaseNoteInfos.filter(\n (releaseNote) =>\n releaseNote.releaseNoteType === ReleaseNoteType.NewFeature\n );\n\n const bugFixes = releaseNoteInfos.filter(\n (releaseNote) => releaseNote.releaseNoteType === ReleaseNoteType.BugFix\n );\n\n return [...newFeatures, ...bugFixes];\n }, [releaseNoteInfos]);\n\n const [activeReleaseNote, setActiveReleaseNote] =\n useState(null);\n\n const { releaseNoteHtmlByReleaseNoteId = {}, isLoading: htmlIsLoading } =\n useGetReleaseNoteHtml({\n releaseNoteIds: activeReleaseNote ? [activeReleaseNote.id] : [],\n });\n\n useEffect(() => {\n if (activeReleaseNote == null) {\n if (releaseNotesSortedByType?.length) {\n setActiveReleaseNote(releaseNotesSortedByType[0]);\n debounce(() => {\n markReleaseNoteAsRead(releaseNotesSortedByType[0].id);\n }, 600)();\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [releaseNotesSortedByType]);\n\n return (\n \n
    \n

    \n \n

    \n\n
    \n {isLoading ? (\n \n ) : (\n <>\n {releaseNotesSortedByType?.length ? (\n <>\n \n {releaseNotesSortedByType?.map((releaseNote) => {\n return (\n {\n setActiveReleaseNote(releaseNote);\n markReleaseNoteAsRead(releaseNote.id);\n }}\n className={clsx(\n reportsStyles.navTitle,\n styles.flexRow,\n reportsStyles.textPrimary,\n {\n [reportsStyles.navTitleActive]:\n activeReleaseNote?.id === releaseNote.id,\n }\n )}\n title={releaseNote.title}\n >\n {releaseNote.title}\n {isReleaseNoteRead(releaseNote.id) ? null : (\n \n )}\n
    \n );\n })}\n
    \n {activeReleaseNote ? (\n
    \n {htmlIsLoading ? (\n \n ) : (\n \n )}\n
    \n ) : null}\n \n ) : (\n \n \n \n )}\n \n )}\n \n \n \n );\n}\n\nexport const UnreadDot = ({ fill = 'red' }: { fill?: string }) => (\n
    \n
    \n
    \n);\n","export default \"__VITE_ASSET__b13a0c23__\"","import { clsx } from 'clsx';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport StarburstLogo from 'src/images/StarburstLogo.png';\nimport { StubHubProLogo } from 'src/svgs';\nimport { TicketUtilLogo } from 'src/svgs/TicketUtilLogo';\nimport { CoBrandId } from 'src/WebApiController';\n\nimport * as styles from './ProLogo.css';\n\nexport const logoAreaDimensions = { height: '40px', width: 'auto' };\n\nexport type ProLogoProps = {\n className?: string;\n};\n\nexport function ProLogo({ className }: ProLogoProps) {\n const { isDarkMode } = useSiteTheme();\n\n const { appContext, cobrandId, overrideCoBrandId } = useAppContext();\n\n const onLogoClicked = () => {\n if (appContext?.isDevelopment) {\n let newCobrandId = cobrandId;\n switch (cobrandId) {\n case CoBrandId.StubHub:\n newCobrandId = CoBrandId.TicketUtil;\n break;\n case CoBrandId.TicketUtil:\n newCobrandId = CoBrandId.Starburst;\n break;\n case CoBrandId.Starburst:\n default:\n newCobrandId = CoBrandId.StubHub;\n break;\n }\n overrideCoBrandId(newCobrandId);\n }\n };\n\n return (\n
    \n {!appContext ? null : cobrandId === CoBrandId.TicketUtil ? (\n \n ) : cobrandId === CoBrandId.Starburst ? (\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n \n ) : (\n \n )}\n
    \n );\n}\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const SellerAccountInfoContainer = styled.div<{ isCurrent: boolean }>`\n display: flex;\n align-items: center;\n gap: ${() => vars.spacing.sm};\n width: 100%;\n cursor: ${(props) => (props.isCurrent ? 'default' : 'inherit')};\n`;\n\nexport const SellerAccountNameContainer = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: ${() => vars.spacing.sm};\n`;\n\nexport const AccountTypeDiv = styled.div<{ isCurrent: boolean }>`\n color: ${(props) =>\n props.isCurrent\n ? props.theme.colors.textSuccess\n : props.theme.colors.textPrimary};\n`;\n\nexport const AccountNameDiv = styled.div<{ isCurrent: boolean }>`\n font-weight: ${(props) => (props.isCurrent ? 700 : 500)};\n color: ${(props) => props.theme.colors.textBrand};\n`;\n\nexport const ImpersonatedAccountNameDiv = styled.div`\n padding-left: ${() => vars.spacing.xxs};\n color: ${(props) => props.theme.colors.textPrimary};\n`;\n","import { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SellerAccount } from 'src/WebApiController';\n\nimport {\n AccountNameDiv,\n AccountTypeDiv,\n ImpersonatedAccountNameDiv,\n SellerAccountInfoContainer,\n SellerAccountNameContainer,\n} from './SellerAccountBasicInfo.style';\n\nexport const SellerAccountBasicInfo = ({\n account,\n isCurrent,\n}: {\n account: SellerAccount;\n isCurrent: boolean;\n}) => {\n return (\n \n \n \n {account.impersonatedUsername ? (\n \n ) : (\n \n )}\n :\n \n \n {account.accountName}\n \n \n {account.impersonatedUsername\n ? `(${account.impersonatedUsername})`\n : ''}\n \n \n \n );\n};\n","import { CoBrandId } from 'src/WebApiController';\nimport styled from 'styled-components/macro';\n\nexport const UserInfoDisplayContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.lg,\n `\n align-items: flex-end;\n `\n )}`}\n`;\nexport const ActiveAccountDisplay = styled.div<{ cobrandId?: CoBrandId }>`\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('body1')};\n text-overflow: ellipsis;\n width: 100%;\n overflow: hidden;\n white-space: nowrap;\n color: ${(props) =>\n props.cobrandId === CoBrandId.TicketUtil\n ? props.theme.colors.textInverted\n : props.theme.colors.textPrimary};\n\n @media ${({ theme: { media } }) => media.desktop} {\n text-align: end;\n }\n`;\n\nexport const ActiveUserDisplay = styled.div`\n text-overflow: ellipsis;\n width: 100%;\n overflow: hidden;\n white-space: nowrap;\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.lg,\n `\n text-align: end;\n `\n )}`}\n`;\n","import { UserDetail } from 'src/WebApiController';\n\nimport {\n ActiveAccountDisplay,\n ActiveUserDisplay,\n UserInfoDisplayContainer,\n} from './UserInfoDisplay.styled';\n\nexport const UserInfoDisplay = ({\n userInfo,\n showUserName = true,\n}: {\n userInfo?: UserDetail | null;\n showUserName?: boolean;\n}) => {\n const fullUserName = `${userInfo?.displayName}${\n userInfo?.impersonatorDisplayName\n ? ` (${userInfo?.impersonatorDisplayName})`\n : ''\n }`;\n\n const accountName = userInfo?.activeAccount?.accountName || '';\n return (\n \n {accountName}\n {showUserName && (\n \n {fullUserName}\n \n )}\n \n );\n};\n","import clsx from 'clsx';\nimport { ReactNode } from 'react';\nimport { CoBrandId } from 'src/WebApiController';\n\nimport * as styles from './MainNavTopBar.css';\n\ntype NavTitleProps = {\n children: ReactNode;\n cobrandId?: CoBrandId;\n isActive?: boolean;\n};\n\nexport const NavTitle = ({ children, cobrandId, isActive }: NavTitleProps) => {\n return (\n \n {children}\n \n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const HeaderWrapperDiv = styled.div`\n background-color: ${(props) => props.theme.colors.backgroundPrimary};\n color: ${(props) => props.theme.colors.textPrimary};\n width: 100%;\n padding: 0;\n border-top: 1px solid ${(props) => props.theme.colors.borderPrimary};\n border-bottom: 1px solid ${(props) => props.theme.colors.borderPrimary};\n`;\n\nexport const Header = styled.header`\n display: grid;\n grid-template-columns: 12% 1fr 8%;\n align-items: center;\n align-self: center;\n padding: ${() => `0 ${vars.spacing.sm}`};\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n grid-template-columns: 20% 1fr 20%;\n padding: 0 ${vars.spacing.xl};\n }`\n )}`};\n`;\n\nexport const HeaderLeftAreaDiv = styled.div`\n display: flex;\n align-self: flex-start;\n align-items: stretch;\n align-self: center;\n padding: ${() => `${vars.spacing.sm} 0`};\n\n .brand-logo {\n display: flex;\n align-items: center;\n padding-inline-end: ${() => vars.spacing.xxs};\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `padding-inline-end: ${vars.spacing.lg};`\n )}`}\n }\n`;\n\nexport const ProfileDiv = styled.div<{ loggedIn: boolean }>`\n display: flex;\n flex-direction: column-reverse;\n align-items: center;\n color: ${({ loggedIn, theme }) =>\n loggedIn ? theme.colors.textBrand : theme.colors.textPrimary};\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n flex-direction: row;\n `\n )}`}\n\n svg {\n margin-inline-start: ${() => vars.spacing.sm};\n }\n`;\n\nexport const DropdownLabel = styled.strong`\n display: none;\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n display: block;\n `\n )}`}\n`;\n\nexport const DropdownDivider = styled.div`\n border-bottom: 1px solid ${(props) => props.theme.colors.borderPrimary};\n width: 100%;\n`;\n\nexport const DesktopNavTitleSale = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: ${() => vars.spacing.sm};\n padding: 0 1px;\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n font-weight: 500;\n font-size: ${() => vars.typography.fontSize['lg']};\n line-height: 24px;\n text-align: center;\n `\n )}\n `}\n\n &.active {\n font-weight: 600;\n color: ${(props) => props.theme.colors.textBrand};\n\n border-top-color: ${(props) => props.theme.colors.backgroundBrandActive};\n ${({ theme: { media, colors } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `border-bottom-color: ${colors.backgroundBrandActive};\n border-top-color: transparent;\n `\n )}`}\n\n &:hover {\n color: ${(props) => props.theme.colors.textBrandHover};\n border-bottom-color: ${(props) =>\n props.theme.colors.backgroundBrandHover};\n }\n }\n`;\n\nexport const NavTitleSaleCheck = styled.span`\n svg {\n fill: ${(props) => props.theme.colors.accent100};\n }\n`;\n","import { useCallback, useState } from 'react';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { NavLink } from 'reactstrap';\nimport { AppRouteConfigs } from 'src/app/AppRoutes';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { SearchResultPickerDialog } from 'src/dialogs/SearchResultPickerDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useHasReleaseNotesUnread } from 'src/hooks/useHasReleaseNotesUnread';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { UnreadDot } from 'src/navigations/Routes/ReleaseNotes';\nimport {\n IconsFill,\n ProfileOutlineIcon,\n SigninIcon,\n SignoutIcon,\n} from 'src/svgs/Viagogo';\nimport { REACT_APP_REPORTS_BRIDGE_URL } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { hasAccessToRoute, sortSellerAccount } from 'src/utils/userUtils';\nimport {\n Feature,\n LoginClient,\n Permission,\n SellerAccount,\n SellerAccountClient,\n} from 'src/WebApiController';\n\nimport { ProLogo } from '../../../components/common/ProLogo';\nimport { SellerAccountBasicInfo } from '../../../components/SellerAccountBasicInfo';\nimport { UserInfoDisplay } from '../UserInfoDisplay';\nimport { NavTitle } from './MainNavTitle';\nimport * as styles from './MainNavTopBar.css';\nimport {\n DropdownDivider,\n DropdownLabel,\n Header,\n HeaderLeftAreaDiv,\n HeaderWrapperDiv,\n} from './MainNavTopBar.styled';\n\nexport function MainNavTopBar() {\n const {\n appContext,\n cobrandId,\n mainRoute,\n loginContext,\n activeAccountWebClientConfig,\n } = useAppContext();\n\n const navigate = useNavigate();\n const signInText = useContent(ContentId.SignIn);\n const myAccountText = useContent(ContentId.MyAccount);\n const menuText = loginContext ? myAccountText : signInText;\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const [sellerAccounts, setSellerAccounts] = useState([]);\n const { closeDialog, launchDialog, dialogProps } = useBasicDialog();\n const [isSellerAccountLoading, setIsSellerAccountLoading] = useState(false);\n const hasKBFeature = useUserHasFeature(Feature.KnowledgePortalPage);\n\n const canViewReleaseNotes = useUserHasAnyOfPermissions(\n Permission.General_ViewReleaseNotes\n );\n const canViewNotifications = useUserHasAnyOfPermissions(\n Permission.General_ViewNotifications\n );\n const canViewStubhubPayments = useUserHasAnyOfPermissions(\n Permission.Accounting_ViewStubhubPayments\n );\n\n const allowedRoutes = Object.values(AppRouteConfigs).filter(\n (r) =>\n r.view != null &&\n hasAccessToRoute(loginContext?.user, appContext?.features, r.view)\n );\n\n const { hasReleaseNotesUnread } = useHasReleaseNotesUnread({});\n\n const onSwitchAccountClicked = useCallback(async () => {\n const accounts = await tryInvokeApi(\n async () => {\n setIsSellerAccountLoading(true);\n return await new SellerAccountClient(\n activeAccountWebClientConfig\n ).getCurrentUserSellerAccounts();\n },\n (error) => {\n showErrorDialog(\n 'SellerAccountClient.getCurrentUserSellerAccounts',\n error\n );\n },\n () => setIsSellerAccountLoading(false)\n );\n if (accounts) {\n setSellerAccounts(sortSellerAccount(accounts));\n launchDialog();\n }\n }, [activeAccountWebClientConfig, launchDialog, showErrorDialog]);\n\n const onSellerAccountPicked = useCallback(\n async (account: SellerAccount) => {\n if (account.id === activeAccountWebClientConfig.activeAccountId) {\n return;\n }\n\n await tryInvokeApi(\n async () => {\n setIsSellerAccountLoading(true);\n await new LoginClient(activeAccountWebClientConfig).setActiveAccount(\n account.id,\n account.impersonatedUserId\n );\n // We need to reload so all the data is reload with the new login context\n window.location.reload();\n closeDialog();\n },\n (error) => {\n showErrorDialog('LoginClient.setActiveAccount', error, {\n trackErrorData: account,\n });\n },\n () => setIsSellerAccountLoading(false)\n );\n },\n [activeAccountWebClientConfig, closeDialog, showErrorDialog]\n );\n\n const openInNewTab = (url: string) => {\n window.open(url, '_blank', 'noreferrer');\n };\n\n return (\n <>\n \n
    \n \n
    \n \n
    \n
    \n
    \n {allowedRoutes.map(({ view, label, path, icon: Icon }, index) => (\n \n \n {Icon && (\n \n )}\n {label || view}\n \n \n ))}\n
    \n
    \n } align=\"end\">\n {loginContext ? (\n <>\n \n {loginContext ? (\n \n ) : (\n {menuText}\n )}\n \n \n\n {loginContext?.user?.hasManyAccounts && (\n \n \n \n )}\n\n {canViewReleaseNotes && (\n navigate('/release-notes')}>\n
    \n \n {hasReleaseNotesUnread ? : null}\n
    \n
    \n )}\n\n {hasKBFeature && (\n navigate('/help')}>\n
    \n \n
    \n
    \n )}\n {canViewNotifications && (\n navigate('/notifications')}>\n \n \n )}\n\n {canViewStubhubPayments && (\n \n openInNewTab(REACT_APP_REPORTS_BRIDGE_URL!)\n }\n >\n \n \n )}\n\n navigate('/messages')}>\n \n \n\n navigate('/settings')}>\n \n \n\n \n navigate('/logout')}>\n \n \n \n \n \n \n ) : (\n navigate('/login')}>\n \n \n \n \n \n )}\n
    \n
    \n
    \n
    \n }\n resultItems={sellerAccounts || []}\n isLoading={isSellerAccountLoading}\n renderItem={(account: SellerAccount) => (\n \n )}\n onResultItemPicked={onSellerAccountPicked}\n onCancel={closeDialog}\n />\n \n );\n}\n","import { ProLogo } from '../../../components/common/ProLogo';\nimport {\n Header,\n HeaderLeftAreaDiv,\n HeaderWrapperDiv,\n} from './MainNavTopBar.styled';\n\nexport function MainNavTopBarEmpty() {\n return (\n \n
    \n \n \n \n
    \n
    \n );\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SomethingWentWrong } from 'src/views';\n\nimport * as styles from './OfflineWrapper.css';\n\nexport const Offline = () => {\n return (\n
    \n }\n message={\n \n }\n />\n
    \n );\n};\n","import clsx from 'clsx';\nimport { Link } from 'react-router-dom';\nimport { IconsFill, IconsProps } from 'src/svgs/Viagogo';\n\nimport * as styles from './MenuItem.css';\n\ntype MenuItemProps = {\n isActive?: boolean;\n textContent: string | JSX.Element;\n path: string;\n icon: (props: IconsProps) => JSX.Element;\n onClick: (e: React.MouseEvent) => void;\n};\n\nexport const MenuItem = ({\n isActive = false,\n textContent,\n icon: Icon,\n path,\n onClick,\n}: MenuItemProps) => {\n return (\n
    \n \n
    \n \n
    \n {textContent}\n \n
    \n );\n};\n","import { useMemo } from 'react';\nimport { AppRouteConfigs } from 'src/app/AppRoutes';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { hasAccessToRoute } from 'src/utils/userUtils';\n\nimport { MenuItem } from '../MenuItem/MenuItem';\nimport * as styles from './MainMenu.css';\n\nexport const MainMenu = ({ toggleClose }: { toggleClose: () => void }) => {\n const { loginContext, appContext, mainRoute } = useAppContext();\n\n const user = loginContext?.user;\n const features = appContext?.features;\n const allowedRoutes = useMemo(\n () =>\n Object.values(AppRouteConfigs)\n .filter(\n (r) => r.view != null && hasAccessToRoute(user, features, r.view)\n )\n .map(({ view, label, path, icon }, index) => (\n \n )),\n [features, user, mainRoute, toggleClose]\n );\n\n return
    {allowedRoutes}
    ;\n};\n","import { useCallback, useState } from 'react';\nimport { useNavigate } from 'react-router';\nimport { MenuItems } from 'src/app/AppRoutes';\nimport { SellerAccountBasicInfo } from 'src/components/SellerAccountBasicInfo';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { SearchResultPickerDialog } from 'src/dialogs/SearchResultPickerDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useHasReleaseNotesUnread } from 'src/hooks/useHasReleaseNotesUnread';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n DropdownDivider,\n DropdownLabel,\n} from 'src/navigations/MainNav/MainNavTopBar/MainNavTopBar.styled';\nimport { UserInfoDisplay } from 'src/navigations/MainNav/UserInfoDisplay';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport { UnreadDot } from 'src/navigations/Routes/ReleaseNotes';\nimport { ProfileOutlineIcon, SigninIcon, SignoutIcon } from 'src/svgs/Viagogo';\nimport { REACT_APP_REPORTS_BRIDGE_URL } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { sortSellerAccount } from 'src/utils/userUtils';\nimport {\n Feature,\n LoginClient,\n Permission,\n SellerAccount,\n SellerAccountClient,\n} from 'src/WebApiController';\n\nimport { MenuItem } from '../MenuItem/MenuItem';\nimport {\n icon,\n menuItem,\n menuText,\n releaseNoteOptionContainer,\n} from '../MenuItem/MenuItem.css';\n\nconst menuItems = [MainRoute.Settings] as const;\n\nexport const UserMenu = ({ toggleClose }: { toggleClose: () => void }) => {\n const { mainRoute } = useAppContext();\n return (\n
    \n \n {menuItems.map((item, index) => {\n const { view, path, label, icon } = MenuItems[item];\n return (\n \n );\n })}\n
    \n );\n};\n\nconst MyAccountMenuItem = () => {\n const { loginContext } = useAppContext();\n const userDisplayName = loginContext?.user?.activeAccount.accountName;\n return (\n <>\n
    \n
    \n \n
    \n \n {userDisplayName ?? }\n \n
    \n \n );\n};\n\nconst Dropdown = ({ toggleClose }: { toggleClose: () => void }) => {\n const { loginContext, activeAccountWebClientConfig } = useAppContext();\n const signInText = useContent(ContentId.SignIn);\n const navigate = useNavigate();\n const [sellerAccounts, setSellerAccounts] = useState([]);\n const [filteredSellerAccounts, setFilteredSellerAccounts] = useState<\n SellerAccount[]\n >([]);\n const [isSellerAccountLoading, setIsSellerAccountLoading] = useState(false);\n\n const { showErrorDialog } = useErrorBoundaryContext();\n const { closeDialog, launchDialog, dialogProps } = useBasicDialog();\n const myAccountText = useContent(ContentId.MyAccount);\n const menuText = loginContext ? myAccountText : signInText;\n\n const { hasReleaseNotesUnread } = useHasReleaseNotesUnread({});\n const hasKBFeature = useUserHasFeature(Feature.KnowledgePortalPage);\n const canViewReleaseNotes = useUserHasAnyOfPermissions(\n Permission.General_ViewReleaseNotes\n );\n const canViewNotifications = useUserHasAnyOfPermissions(\n Permission.General_ViewNotifications\n );\n const canViewStubhubPayments = useUserHasAnyOfPermissions(\n Permission.Accounting_ViewStubhubPayments\n );\n\n const onFilterSellerAccount = useCallback(\n (text: string) => {\n text = text.toLocaleUpperCase();\n const filtered = sellerAccounts.filter(\n (sa) =>\n sa.accountName.toLocaleUpperCase().includes(text) ||\n sa.impersonatedUsername?.toLocaleUpperCase()?.includes(text) ||\n sa.id.toLocaleUpperCase().includes(text)\n );\n setFilteredSellerAccounts(filtered);\n },\n [sellerAccounts]\n );\n\n const openInNewTab = (url: string) => {\n window.open(url, '_blank', 'noreferrer');\n };\n\n const onSwitchAccountClicked = useCallback(async () => {\n const accounts = await tryInvokeApi(\n async () => {\n setIsSellerAccountLoading(true);\n return await new SellerAccountClient(\n activeAccountWebClientConfig\n ).getCurrentUserSellerAccounts();\n },\n (error) => {\n showErrorDialog(\n 'SellerAccountClient.getCurrentUserSellerAccounts',\n error\n );\n },\n () => setIsSellerAccountLoading(false)\n );\n if (accounts) {\n const sorted = sortSellerAccount(accounts);\n setSellerAccounts(sorted);\n setFilteredSellerAccounts(sorted);\n launchDialog();\n }\n }, [activeAccountWebClientConfig, launchDialog, showErrorDialog]);\n\n const onSellerAccountPicked = useCallback(\n async (account: SellerAccount) => {\n if (account.id === activeAccountWebClientConfig.activeAccountId) {\n return;\n }\n\n await tryInvokeApi(\n async () => {\n setIsSellerAccountLoading(true);\n await new LoginClient(activeAccountWebClientConfig).setActiveAccount(\n account.id,\n account.impersonatedUserId\n );\n // We need to reload so all the data is reload with the new login context\n window.location.reload();\n closeDialog();\n },\n (error) => {\n showErrorDialog('LoginClient.setActiveAccount', error, {\n trackErrorData: account,\n });\n },\n () => setIsSellerAccountLoading(false)\n );\n },\n [activeAccountWebClientConfig, closeDialog, showErrorDialog]\n );\n\n return (\n <>\n {loginContext ? (\n }\n align=\"start\"\n triggerProps={{ style: { width: '100%' } }}\n >\n <>\n \n {loginContext ? (\n \n ) : (\n {menuText}\n )}\n \n \n {loginContext?.user?.hasManyAccounts && (\n {\n onSwitchAccountClicked();\n toggleClose();\n }}\n >\n \n \n )}\n {canViewStubhubPayments && (\n {\n openInNewTab(REACT_APP_REPORTS_BRIDGE_URL!);\n toggleClose();\n }}\n >\n \n \n )}\n\n {canViewReleaseNotes && (\n {\n navigate('/release-notes');\n toggleClose();\n }}\n >\n
    \n \n {hasReleaseNotesUnread ? : null}\n
    \n \n )}\n\n {hasKBFeature && (\n {\n navigate('/help');\n toggleClose();\n }}\n >\n
    \n \n
    \n \n )}\n\n {canViewNotifications && (\n {\n navigate('/notifications');\n toggleClose();\n }}\n >\n \n \n )}\n\n \n {\n navigate('/logout');\n toggleClose();\n }}\n >\n \n \n \n \n \n \n \n ) : (\n }\n path={'/login'}\n icon={SigninIcon}\n onClick={toggleClose}\n />\n )}\n }\n resultItems={filteredSellerAccounts ?? []}\n isLoading={isSellerAccountLoading}\n renderItem={(account: SellerAccount) => (\n \n )}\n onResultItemSearched={onFilterSellerAccount}\n onResultItemPicked={onSellerAccountPicked}\n onCancel={closeDialog}\n />\n \n );\n};\n","import clsx from 'clsx';\nimport { debounce } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { MenuItems } from 'src/app/AppRoutes';\nimport { ProLogo } from 'src/components/common/ProLogo';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport { isInFullPageEventView } from 'src/utils/deepLinkUtils';\nimport { hasAccessToRoute } from 'src/utils/userUtils';\nimport { Feature } from 'src/WebApiController';\n\nimport { MainMenu } from './MainMenu/MainMenu';\nimport * as styles from './MainNavSideBar.css';\nimport { MenuItem } from './MenuItem/MenuItem';\nimport { UserMenu } from './UserMenu/UserMenu';\n\ntype MainNavSideBarProps = {\n toggleMenu: (value?: boolean) => void;\n isExpanded: boolean;\n};\n\nconst OPEN_MENU_MOUSE_EVENT = 'mouseenter';\nconst CLOSE_MENU_MOUSE_EVENT = 'mouseleave';\n\nexport const MainNavSideBar = ({\n toggleMenu,\n isExpanded,\n}: MainNavSideBarProps) => {\n const isMobile = useMatchMedia('mobile');\n const { loginContext, appContext, mainRoute } = useAppContext();\n\n const delayedOpen = useMemo(() => {\n return debounce(() => {\n toggleMenu(true);\n }, 300);\n }, [toggleMenu]);\n\n const toggleClose = useCallback(() => {\n delayedOpen.cancel();\n toggleMenu(false);\n }, [delayedOpen, toggleMenu]);\n\n const mainSideBarRef = useRef(null);\n\n // Used to avoid the effect to unsubscribe and subscribe again to DOM events\n // when using a callback that depends on this.\n const useRefExpanded = useRef(isExpanded);\n useRefExpanded.current = isExpanded;\n\n const handleOnMouseEnter = useCallback(\n (e: MouseEvent) => {\n const isExpanded = useRefExpanded.current;\n if (!isExpanded) {\n delayedOpen();\n }\n },\n [delayedOpen]\n );\n\n const handleOnMouseLeave = useCallback(\n (e: MouseEvent) => {\n // Only close the menu if the target event is fired\n // from the main parent div\n if (mainSideBarRef.current === e?.target) {\n toggleClose();\n }\n },\n [toggleClose]\n );\n\n useEffect(() => {\n const sideBar = mainSideBarRef.current;\n sideBar?.addEventListener(OPEN_MENU_MOUSE_EVENT, handleOnMouseEnter);\n return () => {\n sideBar?.removeEventListener(OPEN_MENU_MOUSE_EVENT, handleOnMouseEnter);\n };\n }, [handleOnMouseEnter]);\n\n useEffect(() => {\n const sideBar = mainSideBarRef.current;\n sideBar?.addEventListener(CLOSE_MENU_MOUSE_EVENT, handleOnMouseLeave);\n return () => {\n sideBar?.removeEventListener(CLOSE_MENU_MOUSE_EVENT, handleOnMouseLeave);\n };\n }, [handleOnMouseLeave]);\n\n const hasHideNavAndFilterBarsFeature = useUserHasFeature(\n Feature.HideNavAndFilterBars\n );\n\n if (hasHideNavAndFilterBarsFeature && isInFullPageEventView(mainRoute)) {\n return null;\n }\n\n return (\n \n
    \n {isMobile && (\n
    \n \n
    \n )}\n
    \n
    \n \n
    \n \n {hasAccessToRoute(\n loginContext?.user,\n appContext?.features,\n MainRoute.Email\n ) && }\n
    \n
    \n
    \n \n
    \n
    \n \n );\n};\n\nconst MessagesItem = ({ toggleClose }: { toggleClose: () => void }) => {\n const { icon, label, path, view } = MenuItems[MainRoute.Email];\n\n const { mainRoute } = useAppContext();\n\n return (\n \n );\n};\n","import { ProLogo } from 'src/components/common/ProLogo';\nimport { HamburgerMenuIcon } from 'src/svgs';\n\nimport * as styles from './MobileTopBar.css';\n\ntype MobileTopBarProps = {\n toggleMenu: () => void;\n};\n\nexport const MobileTopBar = ({ toggleMenu }: MobileTopBarProps) => {\n return (\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const NavBarContainer = styled.div`\n background-color: ${(props) => props.theme.colors.backgroundPrimary};\n color: ${(props) => props.theme.colors.textPrimary};\n z-index: 100;\n padding: 0;\n width: 100%;\n`;\n\nexport const BottomNavBarContainer = styled(NavBarContainer)`\n position: fixed;\n bottom: 0;\n justify-content: space-around;\n\n @media ${({ theme: { media } }) => `${media.phone}`} {\n display: none;\n }\n`;\n\nexport const UnauthorizedAccessMessageContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n margin: ${() => `${vars.spacing['5xl']} auto`};\n`;\n","import { useMemo } from 'react';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport {\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n TAB_EVENT_IDS_2_QUERY_PARAM,\n TAB_EVENT_IDS_QUERY_PARAM,\n} from 'src/navigations/Routes/InventoryEvent/InventoryEvent.constants';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport { BackIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { CoBrandId } from 'src/WebApiController';\n\nimport * as styles from './BackSection.css';\n\nexport const BackSection = ({\n returnUrl,\n state,\n}: {\n returnUrl: string;\n state?: unknown;\n}) => {\n const navigate = useNavigate();\n const { cobrandId, mainRoute } = useAppContext();\n\n const [searchParams] = useSearchParams();\n\n const activeEventIds1 = searchParams.get(ACTIVE_EVENT_IDS_QUERY_PARAM);\n const tabEventIds1 = searchParams.get(TAB_EVENT_IDS_QUERY_PARAM);\n const activeEventIds2 = searchParams.get(ACTIVE_EVENT_IDS_2_QUERY_PARAM);\n const tabEventIds2 = searchParams.get(TAB_EVENT_IDS_2_QUERY_PARAM);\n\n const isCatchupMode = useMemo(\n () =>\n mainRoute === MainRoute.InventoryEvent &&\n ((activeEventIds1 && tabEventIds1) || (activeEventIds2 && tabEventIds2)),\n [mainRoute, activeEventIds1, tabEventIds1, activeEventIds2, tabEventIds2]\n );\n\n return (\n
    \n {\n navigate(returnUrl, { state });\n }}\n >\n \n \n \n \n \n
    \n );\n};\n","import { ReactNode } from 'react';\nimport { BackSection } from 'src/components/common/BackSection';\nimport { Stack } from 'src/core/ui';\n\nimport * as styles from './LayoutContent.css';\n\nexport const LayoutContentHeader = ({\n routeTitle,\n centerContent,\n rightContent,\n returnUrl,\n}: {\n routeTitle: ReactNode;\n centerContent?: ReactNode;\n rightContent?: ReactNode;\n returnUrl?: string;\n}) => {\n return (\n \n \n {returnUrl && }\n

    \n {routeTitle}\n

    \n
    \n \n {centerContent ??
     
    }\n
    \n \n {rightContent ??
     
    }\n
    \n \n );\n};\n","import { PropsWithChildren, ReactNode, useEffect } from 'react';\nimport { Helmet } from 'react-helmet';\nimport { useNavigate } from 'react-router-dom';\nimport { useMeasure } from 'react-use';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContentContext } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useMenuState } from 'src/contexts/MenuContext/MenuContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Button, Stack } from 'src/core/ui';\nimport { useFetchLoginContext } from 'src/hooks/useFetchLoginContext';\nimport { useMainAccessibleRoute } from 'src/hooks/useMainAccessibleRoute';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useNetworkState } from 'src/hooks/useNetworkState';\nimport { useRefreshListingOnNotification } from 'src/hooks/useRefreshListingOnNotification';\nimport { MainNavTopBar } from 'src/navigations/MainNav/MainNavTopBar';\nimport { Offline } from 'src/navigations/Routes/Offline';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { navigateToMainRoute } from 'src/utils/deepLinkUtils';\nimport { hasAccessToRoute } from 'src/utils/userUtils';\nimport { CoBrandId } from 'src/WebApiController';\n\nimport { MainNavSideBar, MobileTopBar } from '../MainNav';\nimport { MainRoute } from '../Routes/MainRoute';\nimport * as styles from './LayoutContent.css';\nimport {\n BottomNavBarContainer,\n UnauthorizedAccessMessageContainer,\n} from './LayoutContent.styled';\nimport { LayoutContentHeader } from './LayoutContentHeader';\n\nconst OFFLINE_TIMEOUT_MS = 15 * 1000;\n\nexport function LayoutContent({\n children,\n mainRoute,\n routeTitle,\n centerContent,\n rightContent,\n returnUrl,\n}: PropsWithChildren<{\n mainRoute: MainRoute;\n routeTitle?: string;\n centerContent?: ReactNode;\n rightContent?: ReactNode;\n returnUrl?: string;\n}>) {\n const { appContext, cobrandId, loginContext, setLoginContext, setMainRoute } =\n useAppContext();\n const { isLoading } = useContentContext();\n const { isMenuOpened, toggleIsMenuOpened } = useMenuState();\n const isOnline = useNetworkState(OFFLINE_TIMEOUT_MS);\n const navigate = useNavigate();\n const { showErrorDialog } = useErrorBoundaryContext();\n const { fetchLoginContext } = useFetchLoginContext();\n const isMobile = useMatchMedia('mobile');\n const [bottomNavbarRef, { height: bottomNavbarHeight }] =\n useMeasure();\n useRefreshListingOnNotification();\n\n // Set what view we're in\n useEffect(() => {\n setMainRoute(mainRoute);\n if (\n // Only get login context if the route is not one of the login/logout ones\n ![\n MainRoute.Login,\n MainRoute.LoginCallback,\n MainRoute.LoginFailure,\n MainRoute.Logout,\n ].includes(mainRoute)\n ) {\n fetchLoginContext(setLoginContext, (error) => {\n showErrorDialog('LoginClient.getLoginContext', error, {\n onDismissError: () => {\n navigate(`/login`, {\n state: { returnUrl: window.location.pathname },\n });\n },\n trackErrorData: {\n returnUrl: window.location.pathname,\n mainRoute,\n loginContext,\n },\n });\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const hasAccess = hasAccessToRoute(\n loginContext?.user,\n appContext?.features,\n mainRoute\n );\n\n const mainRouteAccess = useMainAccessibleRoute();\n\n if (!hasAccess) {\n if (loginContext?.user) {\n // If the user doesn't have access\n // Find the first route he has access to and direct him to that\n if (mainRouteAccess) {\n navigateToMainRoute(mainRouteAccess, navigate);\n }\n } else {\n // If the user is null, the login may not complete so just wait\n // until the login user is not null\n return isOnline ? (\n
    \n \n
    \n ) : (\n \n );\n }\n }\n\n let routeTitleDefault;\n switch (cobrandId) {\n case CoBrandId.TicketUtil:\n routeTitleDefault = 'TicketUtils';\n break;\n case CoBrandId.Starburst:\n routeTitleDefault = 'Starburst Pro';\n break;\n case CoBrandId.StubHub:\n default:\n routeTitleDefault = 'StubHub Pro';\n }\n\n return (\n
    \n {(!isMobile || isMenuOpened) && (\n \n )}\n\n
    \n {(appContext?.version ?? '') < (loginContext?.version ?? '') && (\n // Using < so in case the client has higher version than the server\n // (when deploy happens client bits from SVC2 may be hitting api from SVC3, should be very rare)\n // To test this locally, change the < to <= to see the message/button\n \n }\n />\n \n \n )}\n {routeTitle ? (\n \n \n {routeTitleDefault} - {routeTitle}\n \n \n ) : (\n \n {routeTitleDefault}\n \n )}\n {isLoading ? (\n isOnline ? (\n
    \n \n
    \n ) : (\n \n )\n ) : hasAccess ? (\n <>\n {isMobile && (\n toggleIsMenuOpened(true)} />\n )}\n {!isMobile &&\n [\n MainRoute.Home,\n MainRoute.Inventory,\n MainRoute.InventoryEvent,\n MainRoute.InventorySearch,\n MainRoute.Sales,\n MainRoute.SalesEvent,\n MainRoute.SalesSearch,\n MainRoute.Purchases,\n MainRoute.PurchasesEvent,\n MainRoute.PurchaseSearch,\n MainRoute.Payments,\n MainRoute.Reports,\n MainRoute.ReportsV2,\n MainRoute.SponsoredListings,\n MainRoute.Settings,\n MainRoute.Discovery,\n MainRoute.HelpCenter,\n ].includes(mainRoute) &&\n routeTitle && (\n \n )}\n {children}\n \n ) : (\n loginContext?.user && (\n \n \n \n )\n )}\n {isMobile && (\n <>\n \n \n \n \n \n )}\n
    \n
    \n );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { Dispatch, SetStateAction, useMemo, useState } from 'react';\nimport { Components, Virtuoso } from 'react-virtuoso';\nimport { ActivityLogDisplay } from 'src/components/ActivityLog';\nimport {\n ActivityLogFilter,\n ActivityLogFilterQuery,\n} from 'src/components/ActivityLog/ActivityLogFilter';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Card } from 'src/core/ui';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { ErrorSolidIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ActivityLog, ActivityLogClient } from 'src/WebApiController';\n\nimport IconBulletList from '~icons/pos/bulletList';\n\nimport { MainRoute } from '../MainRoute';\nimport * as styles from './Activity.css';\n\n/**\n * Number of items to fetch\n */\nconst ACTIVITY_LOG_ITEM_COUNT = 1000;\n\ntype VirtuosoContext = {\n isLoading?: boolean;\n isError?: boolean;\n filter: ActivityLogFilterQuery;\n setFilter: Dispatch>;\n data?: ActivityLog[];\n};\n\nconst EmptyPlaceholder: Components<\n unknown,\n VirtuosoContext\n>['EmptyPlaceholder'] = ({ context }: { context?: VirtuosoContext }) => {\n if (context?.isLoading) {\n return ;\n }\n if (context?.isError) {\n return (\n \n }\n >\n \n \n \n \n );\n }\n return (\n }>\n \n \n );\n};\n\nconst Header: Components['Header'] = ({\n context,\n}: {\n context?: VirtuosoContext;\n}) => {\n const { filter, setFilter, data } = context ?? {};\n return (\n
    \n

    \n \n

    \n {filter && setFilter && (\n
    \n ({\n actionType: log.actionType,\n display: log.actionTypeDisplay,\n }))}\n allUsers={data\n ?.filter((log) => log.initiatedBy?.username && true)\n .map((log) => log.initiatedBy?.username ?? null)}\n />\n
    \n )}\n
    \n );\n};\n\n// XXX hack to prevent margin collapse on last element\nconst Footer = () => {\n return
    ;\n};\n\nexport function Activity() {\n const routeTitle = useContent(ContentId.Activity);\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const activityLogResult = useQuery({\n queryKey: [\n 'ActivityLogClient.getRecentActivityLog',\n activeAccountWebClientConfig.activeAccountId,\n ACTIVITY_LOG_ITEM_COUNT,\n ],\n queryFn: () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return new ActivityLogClient(\n activeAccountWebClientConfig\n ).getRecentActivityLog(ACTIVITY_LOG_ITEM_COUNT, true);\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n meta: {\n persist: false,\n onError: (error: ErrorTypes) => {\n trackError('ActivityLogClient.getRecentActivityLog', error, {\n ACTIVITY_LOG_ITEM_COUNT,\n });\n },\n },\n });\n\n const [filter, setFilter] = useState({\n actionTypes: [],\n auditActionTypes: [],\n initiatedBy: [],\n });\n const filteredData = useMemo(() => {\n return activityLogResult.data?.filter((activityLog) => {\n let allow = true;\n allow =\n filter?.date?.start == null ||\n new Date(filter.date?.start) <= new Date(activityLog.actionDate);\n allow &&=\n filter?.date?.end == null ||\n new Date(filter.date?.end) >= new Date(activityLog.actionDate);\n allow &&=\n ((filter?.actionTypes == null || filter?.actionTypes.length === 0) &&\n (filter?.auditActionTypes == null ||\n filter?.auditActionTypes.length === 0)) ||\n filter.actionTypes.includes(activityLog.actionType) ||\n (activityLog.auditActionType != null &&\n filter.auditActionTypes.includes(activityLog.auditActionType));\n allow &&=\n filter?.initiatedBy == null ||\n filter?.initiatedBy.length === 0 ||\n (activityLog.initiatedBy != null &&\n activityLog.initiatedBy.username != null &&\n filter.initiatedBy.includes(activityLog.initiatedBy.username)) ||\n (activityLog.initiatedByImpersonated != null &&\n activityLog.initiatedByImpersonated.username != null &&\n filter.initiatedBy.includes(\n activityLog.initiatedByImpersonated.username\n ));\n return allow;\n });\n }, [filter, activityLogResult.data]);\n\n return (\n \n {\n return (\n
    \n \n \n \n
    \n );\n }}\n />\n
    \n );\n}\n","import {\n QueryObserverResult,\n useQuery,\n useQueryClient,\n UseQueryResult,\n} from '@tanstack/react-query';\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react';\nimport { DATA_REFRESH_RATE_IN_MILLIS_LONG } from 'src/utils/constants/constants';\nimport { getErrorInfoFromStatusCode } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { AdGroup, CampaignManagerClient } from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useErrorBoundaryContext } from '../ErrorBoundaryContext';\n\nexport type IAdGroupsDataContext = {\n adGroupsDataQuery: UseQueryResult;\n adGroupsData: AdGroup[] | null | undefined;\n errorInfo?: { errorHeader: React.ReactNode; errorMessage: React.ReactNode };\n refreshData: (\n adCampaignId?: string,\n adGroupId?: string\n ) => Promise;\n};\n\nexport const AdGroupsDataContext = createContext({\n adGroupsDataQuery: {} as UseQueryResult,\n adGroupsData: [],\n refreshData: () => Promise.resolve({} as QueryObserverResult),\n});\n\nexport const useAdGroupsDataContext = () => useContext(AdGroupsDataContext);\n\nexport const AdGroupsDataContextProvider = ({\n adCampaignId,\n adGroupId,\n children,\n}: {\n adCampaignId: string | undefined;\n adGroupId: string | undefined;\n children: React.ReactNode;\n}) => {\n const [errorInfo, setErrorInfo] = useState<{\n errorHeader: React.ReactNode;\n errorMessage: React.ReactNode;\n }>();\n\n const {\n adGroupsDataQuery: adGroupsDataQuery,\n adGroupsData,\n refreshData,\n } = useGetAdGroupsDataQuery(adCampaignId, adGroupId, setErrorInfo);\n\n return (\n \n {children}\n \n );\n};\n\nconst useGetAdGroupsDataQuery = (\n adCampaignId: string | undefined,\n adGroupId: string | undefined,\n setErrorInfo: (\n value: React.SetStateAction<\n | {\n errorHeader: React.ReactNode;\n errorMessage: React.ReactNode;\n }\n | undefined\n >\n ) => void\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError } = useErrorBoundaryContext();\n\n const ADGROUP_DATA_QUERY_KEY = 'CampaignManagerClient.retrieveAdGroups';\n const queryKey = useMemo(\n () => [\n ADGROUP_DATA_QUERY_KEY,\n activeAccountWebClientConfig.activeAccountId,\n adCampaignId,\n adGroupId,\n ],\n [activeAccountWebClientConfig.activeAccountId, adCampaignId, adGroupId]\n );\n\n const shouldQuery =\n activeAccountWebClientConfig.activeAccountId != null &&\n (adCampaignId != null || adGroupId != null);\n\n const adGroupsDataQuery = useQuery({\n queryKey: queryKey,\n queryFn: async () => {\n setErrorInfo(undefined);\n\n if (!shouldQuery) {\n return null;\n }\n\n return tryInvokeApi(\n async () => {\n const client = new CampaignManagerClient(\n activeAccountWebClientConfig\n );\n const data = await client.retrieveAdGroups(\n adCampaignId ?? undefined,\n adGroupId ?? undefined\n );\n return data;\n },\n (error) => {\n const { headerDisplay, messageDisplay } = getErrorInfoFromStatusCode(\n error?.status,\n error?.message\n );\n setErrorInfo({\n errorHeader: headerDisplay,\n errorMessage: messageDisplay,\n });\n trackError(ADGROUP_DATA_QUERY_KEY, error, {\n adCampaignId: adCampaignId,\n adGroupId: adGroupId,\n });\n }\n );\n },\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n staleTime: Infinity, // Since we're always refetching on an interval, we don't want query to calculate whether the data is stale\n refetchOnWindowFocus: false,\n networkMode: 'offlineFirst',\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_LONG,\n });\n\n const queryClient = useQueryClient();\n\n const refreshData = useCallback(async () => {\n queryClient.invalidateQueries({\n queryKey: queryKey,\n });\n\n return await adGroupsDataQuery.refetch();\n }, [adGroupsDataQuery, queryClient, queryKey]);\n\n return {\n adGroupsDataQuery: adGroupsDataQuery,\n adGroupsData: adGroupsDataQuery.data,\n refreshData: refreshData,\n };\n};\n","import {\n QueryObserverResult,\n useQuery,\n useQueryClient,\n} from '@tanstack/react-query';\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { DATA_REFRESH_RATE_IN_MILLIS_LONG } from 'src/utils/constants/constants';\nimport { getErrorInfoFromStatusCode } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n AdPlatformCatalogClient,\n AdPlatformCatalogResults,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\n\nexport const EmptyAdPlatformCatalogResults: AdPlatformCatalogResults = {\n events: {},\n performers: {},\n venues: {},\n listingsByExternalId: {},\n venueMapByEventId: {},\n};\n\nexport type IAdPlatformCatalogDataContext = {\n isLoading: boolean;\n isItemsLoading: boolean;\n data?: AdPlatformCatalogResults;\n errorInfo?: { errorHeader: React.ReactNode; errorMessage: React.ReactNode };\n refreshCatalog: () => Promise;\n};\n\nexport const AdPlatformCatalogDataContext =\n createContext({\n isLoading: false,\n isItemsLoading: false,\n refreshCatalog: () => Promise.resolve({} as QueryObserverResult),\n });\n\nexport const useAdPlatformCatalogDataContext = () =>\n useContext(AdPlatformCatalogDataContext);\n\nexport const AdPlatformCatalogDataContextProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const [errorInfo, setErrorInfo] = useState<{\n errorHeader: React.ReactNode;\n errorMessage: React.ReactNode;\n }>();\n\n const { adPlatformCatalogDataQuery, refreshData } =\n useGetAdPlatformCatalogDataQuery(setErrorInfo);\n\n return (\n \n {children}\n \n );\n};\n\nconst useGetAdPlatformCatalogDataQuery = (\n setErrorInfo: (\n value: React.SetStateAction<\n | {\n errorHeader: React.ReactNode;\n errorMessage: React.ReactNode;\n }\n | undefined\n >\n ) => void\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError } = useErrorBoundaryContext();\n\n const ADPLATFORMCATALOG_DATA_QUERY_KEY = 'AdPlatformCatalogDataQuery';\n const queryKey = useMemo(\n () => [\n ADPLATFORMCATALOG_DATA_QUERY_KEY,\n activeAccountWebClientConfig.activeAccountId,\n ],\n [activeAccountWebClientConfig.activeAccountId]\n );\n\n const shouldQuery = activeAccountWebClientConfig.activeAccountId != null;\n\n const query = useQuery({\n queryKey: queryKey,\n queryFn: async () => {\n setErrorInfo(undefined);\n\n if (!shouldQuery) {\n return null;\n }\n\n return tryInvokeApi(\n async () => {\n const client = new AdPlatformCatalogClient(\n activeAccountWebClientConfig\n );\n const data = await client.getCatalogForSeller();\n return data;\n },\n (error) => {\n const { headerDisplay, messageDisplay } = getErrorInfoFromStatusCode(\n error?.status,\n error?.message\n );\n setErrorInfo({\n errorHeader: headerDisplay,\n errorMessage: messageDisplay,\n });\n trackError(ADPLATFORMCATALOG_DATA_QUERY_KEY, error, {});\n }\n );\n },\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n staleTime: Infinity, // Since we're always refetching on an interval, we don't want query to calculate whether the data is stale\n refetchOnWindowFocus: false,\n networkMode: 'offlineFirst',\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_LONG,\n });\n\n const queryClient = useQueryClient();\n\n const refreshData = useCallback(async () => {\n queryClient.invalidateQueries({\n queryKey: queryKey,\n });\n\n return await query.refetch();\n }, [query, queryClient, queryKey]);\n\n return {\n adPlatformCatalogDataQuery: query,\n adPlatformCatalogData: query.data,\n refreshData: refreshData,\n };\n};\n","import { useQuery, useQueryClient } from '@tanstack/react-query';\nimport { createContext, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { DATA_REFRESH_RATE_IN_MILLIS_LONG } from 'src/utils/constants/constants';\nimport { getErrorInfoFromStatusCode } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n AdPlatformReportingClient,\n AdPlatformTransactionAgg,\n TransactionAggType,\n} from 'src/WebApiController';\n\nexport type IAdPlatformReportingContext = {\n reportData: AdPlatformTransactionAgg[] | null | undefined;\n errorInfo?: { errorHeader: React.ReactNode; errorMessage: React.ReactNode };\n // TODO: Re-enable after CPC support\n //refreshData: (\n // aggType: TransactionAggType,\n // adCampaignId?: string\n //) => Promise>;\n};\n\nconst REPORTING_DATA_QUERY_KEY =\n 'AdPlatformReportingClient.getTransactionReport';\n\nexport const AdPlatformReportingContext =\n createContext({\n reportData: [],\n //refreshData: () =>\n // Promise.resolve({} as QueryObserverResult),\n });\n\nexport const AdPlatformReportingContextProvider = ({\n aggType,\n adCampaignId,\n children,\n}: {\n aggType: TransactionAggType;\n adCampaignId: string | undefined;\n children: React.ReactNode;\n}) => {\n const [errorInfo, setErrorInfo] = useState<{\n errorHeader: React.ReactNode;\n errorMessage: React.ReactNode;\n }>();\n\n // TODO: Re-enable after CPC support\n //const { reportQuery } = useGetAdPlatformReportingQuery(\n // aggType,\n // adCampaignId,\n // setErrorInfo\n //);\n const reportData: AdPlatformTransactionAgg[] = [];\n\n const { activeAccountWebClientConfig } = useAppContext();\n const queryClient = useQueryClient();\n\n // const refreshData = useCallback(\n // async (aggType: TransactionAggType, campaignId?: string) => {\n // queryClient.invalidateQueries({\n // queryKey: [\n // REPORTING_DATA_QUERY_KEY,\n // activeAccountWebClientConfig,\n // aggType,\n // campaignId,\n // ],\n // });\n // return reportQuery.refetch();\n // },\n // [activeAccountWebClientConfig, queryClient]\n // );\n\n return (\n \n {children}\n \n );\n};\n\nconst useGetAdPlatformReportingQuery = (\n aggType: TransactionAggType,\n adCampaignId: string | undefined,\n setErrorInfo: (\n value: React.SetStateAction<\n | {\n errorHeader: React.ReactNode;\n errorMessage: React.ReactNode;\n }\n | undefined\n >\n ) => void\n) => {\n const { activeAccountWebClientConfig, loginContext } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const { getUiCurrency } = useLocalizationContext();\n\n const uiCurrency = getUiCurrency(\n loginContext?.user?.activeAccount?.currencyCode\n );\n\n const shouldQuery = activeAccountWebClientConfig.activeAccountId != null;\n\n const reportQuery = useQuery({\n queryKey: [\n REPORTING_DATA_QUERY_KEY,\n activeAccountWebClientConfig.activeAccountId,\n aggType,\n adCampaignId,\n ],\n queryFn: async () => {\n setErrorInfo(undefined);\n\n if (!shouldQuery) {\n return null;\n }\n\n return tryInvokeApi(\n async () => {\n const client = new AdPlatformReportingClient(\n activeAccountWebClientConfig\n );\n const data = await client.getTransactionReport(\n uiCurrency.code,\n aggType,\n adCampaignId,\n undefined\n );\n return data;\n },\n (error) => {\n const { headerDisplay, messageDisplay } = getErrorInfoFromStatusCode(\n error?.status,\n error?.message\n );\n setErrorInfo({\n errorHeader: headerDisplay,\n errorMessage: messageDisplay,\n });\n trackError(REPORTING_DATA_QUERY_KEY, error, {\n aggType: aggType,\n adCampaignId: adCampaignId,\n });\n }\n );\n },\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n networkMode: 'offlineFirst',\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_LONG,\n });\n return { reportQuery, reportData: reportQuery.data };\n};\n","export const SHIMMERING_DIV_HEIGHT_SINGLE_ADGROUPS = '40px';\n","import { AdGroupListingsQueryParam } from './constants/constants';\n\nexport const getAdGroupListingsUrl = (\n adGroupId: string,\n includeSearchParams = true\n): string => {\n let searchParams = '';\n if (includeSearchParams) {\n const url = new URL(window.location.href);\n url.searchParams.set(AdGroupListingsQueryParam, adGroupId);\n searchParams = `?${url.searchParams.toString()}`;\n }\n return `/sponsoredlistings/adgrouplistings${searchParams}`;\n};\n","import { useCallback } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { IconsFill, MoreIcon } from 'src/svgs/Viagogo';\nimport { getAdGroupListingsUrl } from 'src/utils/adGroupListingsUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const AdGroupActionsCell = ({ adGroupId }: { adGroupId: string }) => {\n const navigate = useNavigate();\n\n const onViewClick = useCallback(\n (url: string) => {\n setTimeout(() => {\n navigate(url, {\n state: {\n returnUrl: `${location.pathname}${location.search}`,\n },\n });\n }, 10);\n },\n [navigate]\n );\n\n return (\n \n \n \n
    \n }\n align=\"end\"\n >\n {\n if (e.button === 0 && e.getModifierState('Control') === false) {\n // Perform like a button click when it's a left-click (and no Ctrl)\n // Else the click will be whatever does\n e.preventDefault();\n e.stopPropagation();\n\n onViewClick(getAdGroupListingsUrl(adGroupId));\n }\n }}\n >\n \n \n \n \n );\n};\n","import { ColumnDef, createColumnHelper } from '@tanstack/react-table';\nimport { VenueNameDisplay } from 'src/components/Events/EventInfo';\nimport { ListingDisplay } from 'src/components/Listings/ListingDisplay';\nimport {\n COLUMN_DEFAULT_SIZE_LG,\n COLUMN_MAX_SIZE,\n COLUMN_MIN_SIZE,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { TableShimmeringDiv } from 'src/tables/Table';\nimport { AdGroupsTableColumnId } from 'src/utils/columns/adGroups/adGroupsColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ADGROUPS_TABLE_COLUMN_ID_TO_CONTENT_ID } from 'src/utils/constants/contentIdMaps';\nimport { getEventDisplayText } from 'src/utils/eventWithDataUtils';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\nimport { sortMoney } from 'src/utils/tableUtils';\nimport {\n AdGroupState,\n EventWithData,\n Listing,\n MoneyType,\n Performer,\n RowInfo,\n SectionInfo,\n TicketClassInfo,\n TopLevelCategory,\n UiMoney,\n Venue,\n} from 'src/WebApiController';\n\nimport { SHIMMERING_DIV_HEIGHT_SINGLE_ADGROUPS } from '../AdGroupsTable.type';\nimport { AdGroupActionsCell } from './AdGroupsActionsCell';\n\nexport type AdGroupRow = {\n id: string;\n name: string;\n state: AdGroupState;\n campaignId: string;\n baseBid: MoneyType;\n maxBid: MoneyType;\n dailyBudget: MoneyType;\n genre?: TopLevelCategory;\n performer?: Performer;\n venue?: Venue;\n event?: EventWithData;\n ticketClass?: TicketClassInfo;\n section?: SectionInfo;\n row?: RowInfo;\n listing?: Listing;\n bidModifier?: number;\n adSpend: UiMoney | null | undefined;\n salesProceeds: UiMoney | null | undefined;\n qtySold: number | null | undefined;\n};\n\nconst columnHelper = createColumnHelper();\n\nexport const ADGROUPS_TABLE_COLUMNS_CONFIG: ColumnDef<\n AdGroupRow | null,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any\n>[] = [\n columnHelper.accessor((data) => (data ? data.name || '' : null), {\n id: AdGroupsTableColumnId.Name,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n if (!original) {\n return (\n \n );\n }\n\n return {getValue()};\n },\n }),\n\n columnHelper.accessor((data) => (data ? data.state || '' : null), {\n id: AdGroupsTableColumnId.State,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n // TODO\n const value = getValue();\n\n if (!original) {\n return (\n \n );\n }\n\n return {value};\n },\n }),\n\n columnHelper.accessor((data) => (data ? data.baseBid : null), {\n id: AdGroupsTableColumnId.BaseBid,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue }) => {\n const value = getValue()?.amount;\n if (value == null) {\n return (\n \n );\n }\n return {value};\n },\n sortingFn: sortMoney, // TODO: Use UiMoney\n }),\n\n columnHelper.accessor((data) => (data ? data.maxBid : null), {\n id: AdGroupsTableColumnId.MaxBid,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue }) => {\n const value = getValue()?.amount;\n if (value == null) {\n return (\n \n );\n }\n return {value};\n },\n sortingFn: sortMoney, // TODO: Use UiMoney\n }),\n\n columnHelper.accessor((data) => (data ? data.dailyBudget : null), {\n id: AdGroupsTableColumnId.DailyBudget,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue }) => {\n const value = getValue()?.amount;\n if (value == null) {\n return (\n \n );\n }\n return {value};\n },\n sortingFn: sortMoney, // TODO: Use UiMoney\n }),\n\n columnHelper.accessor((data) => (data ? data.genre : null), {\n id: AdGroupsTableColumnId.Genre,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue();\n\n if (!original) {\n return (\n \n );\n }\n\n return {value};\n },\n }),\n\n columnHelper.accessor((data) => (data ? data.performer : null), {\n id: AdGroupsTableColumnId.Performer,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue()?.name;\n\n if (!original) {\n return (\n \n );\n }\n\n return {value};\n },\n }),\n\n columnHelper.accessor((data) => (data ? data.venue : null), {\n id: AdGroupsTableColumnId.Venue,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const venue = getValue();\n\n if (!original) {\n return (\n \n );\n }\n\n return (\n \n \n \n );\n },\n }),\n\n columnHelper.accessor((data) => (data ? data.event : null), {\n id: AdGroupsTableColumnId.Event,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const event = getValue()?.event;\n const eventDisplayText = event ? getEventDisplayText(event) : '';\n\n if (!original) {\n return (\n \n );\n }\n\n return {eventDisplayText};\n },\n }),\n\n columnHelper.accessor((data) => (data ? data.ticketClass : null), {\n id: AdGroupsTableColumnId.TicketClass,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue()?.name;\n\n if (!original) {\n return (\n \n );\n }\n\n return {value};\n },\n }),\n\n columnHelper.accessor((data) => (data ? data.section : null), {\n id: AdGroupsTableColumnId.Section,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue()?.name;\n\n if (!original) {\n return (\n \n );\n }\n\n return {value};\n },\n }),\n\n columnHelper.accessor((data) => (data ? data.listing : null), {\n id: AdGroupsTableColumnId.Listing,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue();\n\n if (!original) {\n return (\n \n );\n }\n\n return <>{value ? : <>};\n },\n }),\n\n columnHelper.accessor((data) => (data ? data.adSpend : null), {\n id: AdGroupsTableColumnId.AdSpend,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue();\n const { getUiCurrency } = useLocalizationContext();\n const currency = getUiCurrency(value?.currency);\n\n if (!original || value === undefined) {\n return (\n \n );\n }\n\n if (value === null) return ;\n\n return (\n \n {applyNumberFormatting({\n inputNumber: value.amt,\n currencyCode: currency.code,\n currencyDecimalDigits: currency.dec,\n })}\n \n );\n },\n }),\n columnHelper.accessor((data) => (data ? data.salesProceeds : null), {\n id: AdGroupsTableColumnId.SoldProceeds,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue();\n const { getUiCurrency } = useLocalizationContext();\n const currency = getUiCurrency(value?.currency);\n\n if (!original || value === undefined) {\n return (\n \n );\n }\n\n if (value === null) return ;\n\n return (\n \n {applyNumberFormatting({\n inputNumber: value.amt,\n currencyCode: currency.code,\n currencyDecimalDigits: currency.dec,\n })}\n \n );\n },\n }),\n columnHelper.accessor((data) => (data ? data.qtySold : null), {\n id: AdGroupsTableColumnId.SoldQty,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue();\n if (!original || value === undefined) {\n return (\n \n );\n }\n\n if (value === null) return ;\n\n return {value};\n },\n }),\n\n columnHelper.accessor((data) => (data ? data.bidModifier : null), {\n id: AdGroupsTableColumnId.BidModifier,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue()?.value ?? getValue();\n\n if (!original) {\n return (\n \n );\n }\n\n return {value};\n },\n }),\n\n columnHelper.display({\n id: AdGroupsTableColumnId.Actions,\n enableSorting: false,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ row: { original } }) => {\n return !original ? (\n \n ) : (\n \n );\n },\n }),\n];\n","import { ColumnDef } from '@tanstack/react-table';\nimport { useMemo } from 'react';\nimport {\n AdGroupRow,\n ADGROUPS_TABLE_COLUMNS_CONFIG,\n} from 'src/tables/AdGroupsTable/configs/AdGroupsTableColumnConfig';\nimport { AdGroupsTableColumnId } from 'src/utils/columns/adGroups/adGroupsColumnUtils.types';\n\nexport const useGetAdGroupsTableColumns = () => {\n return useMemo(() => {\n // TODO: Filter out reporting columns until we enabled this on AdCampaign side\n const columns = ADGROUPS_TABLE_COLUMNS_CONFIG.filter(\n (item) =>\n ![\n AdGroupsTableColumnId.AdSpend,\n AdGroupsTableColumnId.SoldProceeds,\n AdGroupsTableColumnId.SoldQty,\n ].includes(item.id as AdGroupsTableColumnId)\n ).map((item) => item.id as AdGroupsTableColumnId);\n\n return Array.from(columns).reduce[]>(\n (acc, columnId) => {\n const columnConfig = Object.values(ADGROUPS_TABLE_COLUMNS_CONFIG).find(\n (column) => column.id === columnId\n );\n if (columnConfig) {\n acc.push(columnConfig);\n }\n return acc;\n },\n []\n );\n }, []);\n};\n","import {\n InitialTableState,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useEffect, useMemo, useState } from 'react';\nimport {\n Content,\n FormatContent,\n useContent,\n} from 'src/contexts/ContentContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { NoData, Table, TableProps } from 'src/tables/Table';\nimport { MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { generateShimmeringRows } from 'src/utils/dataTableUtils';\nimport { SomethingWentWrong } from 'src/views';\n\nimport { usePaginationSettings } from '../Table/hooks/usePaginationSettings';\nimport { AdGroupRow } from './configs/AdGroupsTableColumnConfig';\nimport { useGetAdGroupsTableColumns } from './useGetAdGroupsTableColumns';\n\nexport type AdGroupsTableDataProps = {\n adGroupEntities?: AdGroupRow[] | null;\n failedToRetrieveData: boolean;\n disablePagination?: boolean;\n useVirtuoso?: boolean;\n};\n\ntype AdGroupsTableProps = AdGroupsTableDataProps & {\n failedToRetrieveData: boolean;\n onMount?: () => void;\n onUnmount?: (state: object) => void;\n initState?: InitialTableState;\n isFlattenedView?: boolean;\n isItemsLoading?: boolean;\n rowSupportsAccordion?: boolean;\n} & Pick, 'RowComponent' | 'virtuosoItemSize'>;\n\nconst PAGE_SIZE = 10;\n\nconst getRowId = (originalRow: AdGroupRow | null, index: number) =>\n (originalRow?.id ?? index).toString();\n\nexport function AdGroupsTable({\n adGroupEntities,\n failedToRetrieveData,\n onMount,\n onUnmount,\n initState,\n disablePagination,\n isItemsLoading,\n RowComponent,\n rowSupportsAccordion,\n virtuosoItemSize,\n}: AdGroupsTableProps) {\n const adGroupsText = useContent(ContentId.AdGroups);\n\n const [sorting, setSorting] = useState(\n initState?.sorting || [{ id: 'name', desc: true }]\n );\n\n const { pagination, setPagination } = usePaginationSettings(\n adGroupEntities?.length ?? 0,\n -1,\n PAGE_SIZE,\n disablePagination,\n initState\n );\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n const { data, hasNoDataLoad } = useMemo(() => {\n const data = adGroupEntities?.length\n ? adGroupEntities\n : adGroupEntities == null || isItemsLoading\n ? (generateShimmeringRows(0) as null[])\n : adGroupEntities;\n\n const hasNoDataLoad =\n adGroupEntities == null\n ? true\n : adGroupEntities.length > MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS;\n\n return { data, hasNoDataLoad };\n }, [isItemsLoading, adGroupEntities]);\n\n const columns = useGetAdGroupsTableColumns();\n\n const options = useMemo>>(\n () => ({\n data,\n columns: columns,\n state: {\n pagination,\n sorting,\n },\n meta: {\n rowSupportsAccordion,\n },\n enableRowSelection: false,\n enableMultiRowSelection: false,\n enableSubRowSelection: false,\n getRowId: getRowId,\n onPaginationChange: setPagination,\n onSortingChange: setSorting,\n }),\n [data, columns, pagination, sorting, rowSupportsAccordion, setPagination]\n );\n\n return failedToRetrieveData ? (\n }\n />\n ) : hasNoDataLoad ? (\n \n \n }\n />\n \n ) : data?.length > 0 ? (\n \n ) : isItemsLoading ? (\n \n ) : (\n \n \n \n );\n}\n","import { getSeatDisplayText } from 'src/components/common/SeatingInfo';\nimport { Listing, TopLevelCategory } from 'src/WebApiController';\n\nconst TopLevelCategoryMap: { [key in TopLevelCategory]: number } = {\n [TopLevelCategory.Theatre]: 1,\n [TopLevelCategory.Sports]: 2,\n [TopLevelCategory.Concert]: 3,\n [TopLevelCategory.Festival]: 1023,\n};\n\nexport const getTopLevelCategoryId = (name: string): number => {\n const category = TopLevelCategory[name as keyof typeof TopLevelCategory];\n return TopLevelCategoryMap[category];\n};\n\nexport const getTopLevelCategoryName = (id: number): TopLevelCategory => {\n return (\n Object.keys(TopLevelCategoryMap) as Array\n ).find((key) => TopLevelCategoryMap[key] === id) as TopLevelCategory;\n};\n\nexport const EmptySelectionKey = 'empty';\n\nexport const getListingDisplaytext = (\n listing: Listing,\n sectionText: string,\n rowText: string,\n seatText: string,\n seatsText: string\n): string => {\n const section = listing.seating.section;\n const seatFr = listing.seating.seatFr;\n const seatTo = listing.seating.seatTo;\n const hasSeats = !!(seatFr || seatTo);\n const isSingleSeat = hasSeats && (seatFr === seatTo || !seatTo);\n\n let seatingText = '';\n if (hasSeats) {\n const seatDisplayText = getSeatDisplayText({\n seatFr: listing.seating.seatFr,\n seatTo: listing.seating.seatTo,\n });\n if (seatDisplayText) {\n seatingText = `${isSingleSeat ? seatText : seatsText} ${seatDisplayText}`;\n }\n }\n\n return `${sectionText} ${section} ${rowText} ${listing.seating.row} ${seatingText}`;\n};\n","import { ReactNode, useCallback, useContext, useEffect, useState } from 'react';\nimport { AdGroupsDataContext } from 'src/contexts/AdGroupsDataContext/AdGroupsDataContext';\nimport { useAdPlatformCatalogDataContext } from 'src/contexts/AdPlatformCatalogDataContext';\nimport { AdPlatformReportingContext } from 'src/contexts/AdPlatformReportingContext/AdPlatformReportingContext';\nimport { Stack } from 'src/core/ui';\nimport { AdGroupsTable } from 'src/tables/AdGroupsTable';\nimport { AdGroupRow } from 'src/tables/AdGroupsTable/configs/AdGroupsTableColumnConfig';\nimport { getTopLevelCategoryName } from 'src/utils/adGroupUtils';\nimport {\n AdGroup,\n AdPlatformTransactionAgg,\n Listing,\n RowInfo,\n SectionInfo,\n TicketClassInfo,\n VenueMapInfo,\n} from 'src/WebApiController';\n\ntype AdGroupsFlattenedViewProps = {\n before?: ReactNode;\n topListItemBefore?: ReactNode;\n};\n\nexport const AdGroupsFlattenedView = ({\n before,\n topListItemBefore,\n}: AdGroupsFlattenedViewProps) => {\n const { adGroupsDataQuery, adGroupsData } = useContext(AdGroupsDataContext);\n const { reportData, errorInfo: reportingErrorInfo } = useContext(\n AdPlatformReportingContext\n );\n const { data: catalogData } = useAdPlatformCatalogDataContext();\n\n const getListingById = useCallback(\n (listingId: string) => {\n if (catalogData == null) {\n return undefined;\n }\n return catalogData.listingsByExternalId[listingId];\n },\n [catalogData]\n );\n\n const listingExternalIdLookup = useCallback(\n (key: string) => {\n return getListingById(key);\n },\n [getListingById]\n );\n\n const venueMapLookup = useCallback(\n (eventId?: number) => {\n if (!catalogData || !eventId) {\n return undefined;\n }\n return catalogData.venueMapByEventId[eventId];\n },\n [catalogData]\n );\n\n const ticketClassInfoLookupForMap = useCallback(\n (key: number, venueMap: VenueMapInfo | undefined) => {\n const rowInfo = venueMap?.sections\n .flatMap((section) => section.rows)\n .find((row) => row.tktClass?.id == key);\n return rowInfo?.tktClass ?? undefined;\n },\n []\n );\n\n const ticketClassInfoLookup = useCallback(\n async (ticketClassId: number, eventId: number) => {\n const venueMap = await venueMapLookup(eventId);\n return ticketClassInfoLookupForMap(ticketClassId, venueMap);\n },\n [ticketClassInfoLookupForMap, venueMapLookup]\n );\n\n const sectionInfoLookupForMap = useCallback(\n (sectionId: number | undefined, venueMap: VenueMapInfo | undefined) => {\n if (!sectionId) return;\n return venueMap?.sections.find((section) => section.id == sectionId);\n },\n []\n );\n\n const sectionInfoLookup = useCallback(\n async (sectionId: number, eventId: number) => {\n const venueMap = await venueMapLookup(eventId);\n return sectionInfoLookupForMap(sectionId, venueMap);\n },\n [sectionInfoLookupForMap, venueMapLookup]\n );\n\n const rowInfoLookupForMap = useCallback(\n (rowId: number | undefined, venueMap: VenueMapInfo | undefined) => {\n if (!rowId) return;\n const result = venueMap?.sections.reduce<{\n section: SectionInfo | undefined;\n row: RowInfo | undefined;\n }>(\n (acc, section) => {\n const row = section.rows.find((row) => row.id == rowId);\n if (row) {\n return { section, row };\n }\n return acc;\n },\n { section: undefined, row: undefined }\n );\n\n return result;\n },\n []\n );\n\n const rowInfoLookup = useCallback(\n async (rowId: number, eventId: number) => {\n const venueMap = await venueMapLookup(eventId);\n\n return rowInfoLookupForMap(rowId, venueMap);\n },\n [rowInfoLookupForMap, venueMapLookup]\n );\n\n const populateBaseProperties = useCallback(\n (\n adGroup: AdGroup,\n reportDataByAdGroupId:\n | { [key: string]: AdPlatformTransactionAgg }\n | undefined\n ) => {\n const metric = reportDataByAdGroupId?.[adGroup.adGroupId];\n return {\n id: adGroup.adGroupId,\n state: adGroup.state,\n name: adGroup.name,\n campaignId: adGroup.campaignId,\n baseBid: adGroup.baseBid,\n maxBid: adGroup.maxBid,\n dailyBudget: adGroup.dailyBudget,\n adSpend:\n metric?.adSpend ??\n (reportDataByAdGroupId || reportingErrorInfo ? null : undefined),\n salesProceeds:\n metric?.salesProceeds ??\n (reportDataByAdGroupId || reportingErrorInfo ? null : undefined),\n qtySold:\n metric?.qtySold ??\n (reportDataByAdGroupId || reportingErrorInfo ? null : undefined),\n };\n },\n [reportingErrorInfo]\n );\n\n const processExternalIds = useCallback(\n async (\n adGroup: AdGroup,\n reportDataByAdGroupId:\n | { [key: string]: AdPlatformTransactionAgg }\n | undefined\n ) => {\n return Promise.all(\n adGroup.bidModifiers\n .filter((b) => b.key.externalId != null)\n .map(async (b) => {\n const baseProperties = populateBaseProperties(\n adGroup,\n reportDataByAdGroupId\n );\n const listing = listingExternalIdLookup(b.key.externalId!) as\n | Listing\n | undefined;\n\n if (listing) {\n const venueMap = venueMapLookup(listing.viagEvId ?? undefined);\n\n const ticketClass = venueMap?.sections\n .flatMap((section) => section.rows)\n .find((row) => row.id === listing.seating.rowId)?.tktClass;\n\n const section = sectionInfoLookupForMap(\n listing.seating.sectionId ?? undefined,\n venueMap\n );\n\n const event = listing.viagEvId\n ? catalogData?.events[listing.viagEvId]\n : undefined;\n\n const venue = event\n ? catalogData?.venues[event.event.venueId.toString()]\n : undefined;\n\n const performer = event?.event.perfId\n ? catalogData?.performers[event.event.perfId.toString()]\n : undefined;\n\n const genre = event?.event.genre?.toString();\n\n return {\n ...baseProperties,\n listing: listing,\n ticketClass: ticketClass,\n section: section,\n event: event,\n venue: venue,\n performer: performer,\n genre: genre,\n } as AdGroupRow;\n }\n\n return null;\n })\n );\n },\n [\n catalogData?.events,\n catalogData?.performers,\n catalogData?.venues,\n listingExternalIdLookup,\n populateBaseProperties,\n sectionInfoLookupForMap,\n venueMapLookup,\n ]\n );\n\n const processRowInfos = useCallback(\n async (\n adGroup: AdGroup,\n reportDataByAdGroupId:\n | { [key: string]: AdPlatformTransactionAgg }\n | undefined\n ) => {\n return Promise.all(\n adGroup.bidModifiers\n .filter((b) => b.key.rowId != null && b.key.eventId != null)\n .map(async (b) => {\n const baseProperties = populateBaseProperties(\n adGroup,\n reportDataByAdGroupId\n );\n\n const eventId = b.key.eventId!;\n const rowAndSectionInfo = await rowInfoLookup(\n b.key.rowId!,\n eventId\n );\n if (rowAndSectionInfo) {\n const event = eventId ? catalogData?.events[eventId] : undefined;\n const venue = event\n ? catalogData?.venues[event.event.venueId.toString()]\n : undefined;\n const performer = event?.event.perfId\n ? catalogData?.performers[event.event.perfId.toString()]\n : undefined;\n const genre = event?.event.genre.toString();\n return {\n ...baseProperties,\n row: rowAndSectionInfo.row,\n section: rowAndSectionInfo.section,\n ticketClass: rowAndSectionInfo.row?.tktClass,\n event: event,\n venue: venue,\n performer: performer,\n genre: genre,\n } as AdGroupRow;\n }\n return null;\n })\n );\n },\n [\n catalogData?.events,\n catalogData?.performers,\n catalogData?.venues,\n populateBaseProperties,\n rowInfoLookup,\n ]\n );\n\n const processTicketClassInfos = useCallback(\n async (\n adGroup: AdGroup,\n reportDataByAdGroupId:\n | { [key: string]: AdPlatformTransactionAgg }\n | undefined\n ) => {\n return Promise.all(\n adGroup.bidModifiers\n .filter((b) => b.key.ticketClassId != null && b.key.eventId != null)\n .map(async (b) => {\n const baseProperties = populateBaseProperties(\n adGroup,\n reportDataByAdGroupId\n );\n\n const eventId = b.key.eventId!;\n const ticketClass = (await ticketClassInfoLookup(\n b.key.ticketClassId!,\n eventId!\n )) as TicketClassInfo | undefined;\n if (ticketClass) {\n const event = eventId ? catalogData?.events[eventId] : undefined;\n const venue = event\n ? catalogData?.venues[event.event.venueId.toString()]\n : undefined;\n const performer = event?.event.perfId\n ? catalogData?.performers[event.event.perfId.toString()]\n : undefined;\n const genre = event?.event.genre.toString();\n return {\n ...baseProperties,\n ticketClass: ticketClass,\n event: event,\n venue: venue,\n performer: performer,\n genre: genre,\n } as AdGroupRow;\n }\n return null;\n })\n );\n },\n [\n catalogData?.events,\n catalogData?.performers,\n catalogData?.venues,\n populateBaseProperties,\n ticketClassInfoLookup,\n ]\n );\n\n const processSectionInfos = useCallback(\n async (\n adGroup: AdGroup,\n reportDataByAdGroupId:\n | { [key: string]: AdPlatformTransactionAgg }\n | undefined\n ) => {\n return Promise.all(\n adGroup.bidModifiers\n .filter((b) => b.key.sectionId != null && b.key.eventId != null)\n .map(async (b) => {\n const baseProperties = populateBaseProperties(\n adGroup,\n reportDataByAdGroupId\n );\n\n const eventId = b.key.eventId!;\n const sectionInfo = await sectionInfoLookup(\n b.key.sectionId!,\n eventId\n );\n if (sectionInfo) {\n const venueMapTicketClass = sectionInfo.specRow?.tktClass;\n const ticketClass: TicketClassInfo | undefined =\n venueMapTicketClass\n ? {\n id: venueMapTicketClass?.ticketClassId,\n name: venueMapTicketClass?.ticketClassName,\n color: venueMapTicketClass?.color,\n cssPostFix: venueMapTicketClass?.cssPostFix,\n }\n : undefined;\n const event = eventId ? catalogData?.events[eventId] : undefined;\n const venue = event\n ? catalogData?.venues[event.event.venueId.toString()]\n : undefined;\n const performer = event?.event.perfId\n ? catalogData?.performers[event.event.perfId.toString()]\n : undefined;\n const genre = event?.event.genre.toString();\n return {\n ...baseProperties,\n section: sectionInfo,\n ticketClass: ticketClass,\n event: event,\n venue: venue,\n performer: performer,\n genre: genre,\n } as AdGroupRow;\n }\n return null;\n })\n );\n },\n [\n catalogData?.events,\n catalogData?.performers,\n catalogData?.venues,\n populateBaseProperties,\n sectionInfoLookup,\n ]\n );\n\n const processEvents = useCallback(\n async (\n adGroup: AdGroup,\n reportDataByAdGroupId:\n | { [key: string]: AdPlatformTransactionAgg }\n | undefined\n ) => {\n return Promise.all(\n adGroup.bidModifiers\n .filter(\n (b) =>\n b.key.eventId != null &&\n b.key.ticketClassId == null &&\n b.key.sectionId == null &&\n b.key.rowId == null &&\n b.key.externalId == null\n )\n .map(async (b) => {\n const baseProperties = populateBaseProperties(\n adGroup,\n reportDataByAdGroupId\n );\n\n const eventId = b.key.eventId!;\n const event = eventId ? catalogData?.events[eventId] : undefined;\n const venue = event\n ? catalogData?.venues[event.event.venueId.toString()]\n : undefined;\n const performer = event?.event.perfId\n ? catalogData?.performers[event.event.perfId.toString()]\n : undefined;\n const genre = event?.event.genre.toString();\n return {\n ...baseProperties,\n event: event,\n venue: venue,\n performer: performer,\n genre: genre,\n } as AdGroupRow;\n })\n );\n },\n [\n catalogData?.events,\n catalogData?.performers,\n catalogData?.venues,\n populateBaseProperties,\n ]\n );\n\n const processLeafCategories = useCallback(\n async (\n adGroup: AdGroup,\n reportDataByAdGroupId:\n | { [key: string]: AdPlatformTransactionAgg }\n | undefined\n ) => {\n return Promise.all(\n adGroup.bidModifiers\n .filter((b) => b.key.leafCategoryId != null)\n .map(async (b) => {\n const baseProperties = populateBaseProperties(\n adGroup,\n reportDataByAdGroupId\n );\n\n const leafCategoryId = b.key.leafCategoryId!;\n const performer = leafCategoryId\n ? catalogData?.performers[leafCategoryId]\n : undefined;\n\n const genre = performer?.categ.at(0);\n return {\n ...baseProperties,\n performer: performer,\n genre: genre,\n } as AdGroupRow;\n })\n );\n },\n [catalogData?.performers, populateBaseProperties]\n );\n\n const processTopLevelCategories = useCallback(\n async (\n adGroup: AdGroup,\n reportDataByAdGroupId:\n | { [key: string]: AdPlatformTransactionAgg }\n | undefined\n ) => {\n return Promise.all(\n adGroup.bidModifiers\n .filter((b) => b.key.topLevelCategoryId != null)\n .map(async (b) => {\n const baseProperties = populateBaseProperties(\n adGroup,\n reportDataByAdGroupId\n );\n\n const genre = getTopLevelCategoryName(b.key.topLevelCategoryId!);\n return {\n ...baseProperties,\n genre: genre,\n } as AdGroupRow;\n })\n );\n },\n [populateBaseProperties]\n );\n\n const resolveAndFlattenAdGroups = useCallback(\n async ({\n adGroups,\n reportDataByAdGroupId,\n }: {\n adGroups: AdGroup[];\n reportDataByAdGroupId:\n | { [key: string]: AdPlatformTransactionAgg }\n | undefined;\n }): Promise => {\n return adGroups.reduce>(\n async (accPromise, adGroup) => {\n const acc = await accPromise;\n\n const newRows = await Promise.all([\n processExternalIds(adGroup, reportDataByAdGroupId),\n processRowInfos(adGroup, reportDataByAdGroupId),\n processSectionInfos(adGroup, reportDataByAdGroupId),\n processTicketClassInfos(adGroup, reportDataByAdGroupId),\n processEvents(adGroup, reportDataByAdGroupId),\n processLeafCategories(adGroup, reportDataByAdGroupId),\n processTopLevelCategories(adGroup, reportDataByAdGroupId),\n ]);\n\n // Flatten the results and filter out null values\n return acc.concat(\n newRows\n .flat()\n .filter(\n (row): row is AdGroupRow => row !== null && row !== undefined\n )\n );\n },\n Promise.resolve([])\n );\n },\n [\n processEvents,\n processExternalIds,\n processLeafCategories,\n processRowInfos,\n processSectionInfos,\n processTicketClassInfos,\n processTopLevelCategories,\n ]\n );\n\n const [adGroupRows, setAdGroupRows] = useState([]);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n const getAdGroupRows = async () => {\n if (!adGroupsData || !catalogData) {\n return [];\n }\n\n setIsLoading(true);\n\n // TODO: Rather than building a dictionary here, we should get the data pre-indexed by id.\n const reportDataByAdGroupId = reportData?.reduce<{\n [key: string]: AdPlatformTransactionAgg;\n }>((acc, entity) => {\n if (entity.adGroupId) {\n acc[entity.adGroupId] = entity;\n }\n return acc;\n }, {});\n\n const adGroupRows = await resolveAndFlattenAdGroups({\n adGroups: adGroupsData,\n reportDataByAdGroupId: reportDataByAdGroupId,\n });\n\n setAdGroupRows(adGroupRows);\n setIsLoading(false);\n };\n getAdGroupRows();\n }, [adGroupsData, catalogData, reportData, resolveAndFlattenAdGroups]);\n\n return (\n \n {before}\n {topListItemBefore}\n \n \n );\n};\n","import { once } from 'lodash-es';\nimport React, { useContext, useState } from 'react';\n\nexport type IAdCampaignIdContext = {\n setAdCampaignId: (adCampaignId: string | undefined) => void;\n adCampaignId: string | undefined;\n};\n\nexport const createAdCampaignIdContext = once(() => {\n return React.createContext({} as IAdCampaignIdContext);\n});\n\nexport const useAdCampaignIdContext = () =>\n useContext(createAdCampaignIdContext());\n\nexport const AdCampaignIdProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const [campaignId, setCampaignId] = useState(undefined);\n\n const setAdCampaignId = (adCampaignId: string | undefined) => {\n setCampaignId(adCampaignId);\n };\n\n const AdCampaignIdContext = createAdCampaignIdContext();\n\n return (\n \n {children}\n \n );\n};\n","import {\n QueryObserverResult,\n useQuery,\n useQueryClient,\n UseQueryResult,\n} from '@tanstack/react-query';\nimport { createContext, useCallback, useMemo, useState } from 'react';\nimport { DATA_REFRESH_RATE_IN_MILLIS_LONG } from 'src/utils/constants/constants';\nimport { getErrorInfoFromStatusCode } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { AdCampaignEntity, CampaignManagerClient } from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useErrorBoundaryContext } from '../ErrorBoundaryContext';\n\nexport type IAdCampaignsDataContext = {\n adCampaignsDataQuery: UseQueryResult;\n allCampaignData: AdCampaignEntity[] | null | undefined;\n errorInfo?: { errorHeader: React.ReactNode; errorMessage: React.ReactNode };\n refreshData: (adCampaignId?: string) => Promise;\n};\n\nexport const AdCampaignsDataContext = createContext({\n adCampaignsDataQuery: {} as UseQueryResult,\n allCampaignData: [],\n refreshData: () => Promise.resolve({} as QueryObserverResult),\n});\n\nexport const AdCampaignsDataContextProvider = ({\n adCampaignId,\n children,\n}: {\n adCampaignId: string | undefined;\n children: React.ReactNode;\n}) => {\n const [errorInfo, setErrorInfo] = useState<{\n errorHeader: React.ReactNode;\n errorMessage: React.ReactNode;\n }>();\n\n const { campaignDataQuery, allCampaignData, refreshData } =\n useGetCampaignDataQuery(adCampaignId, setErrorInfo);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useGetCampaignDataQuery = (\n adCampaignId: string | undefined,\n setErrorInfo: (\n value: React.SetStateAction<\n | {\n errorHeader: React.ReactNode;\n errorMessage: React.ReactNode;\n }\n | undefined\n >\n ) => void\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const CAMPAIGN_DATA_QUERY_KEY = 'CampaignManagerClient.getCampaignData';\n\n const queryKey = useMemo(\n () => [\n CAMPAIGN_DATA_QUERY_KEY,\n activeAccountWebClientConfig.activeAccountId,\n adCampaignId,\n ],\n [activeAccountWebClientConfig.activeAccountId, adCampaignId]\n );\n\n const shouldQuery = activeAccountWebClientConfig.activeAccountId != null;\n\n const campaignDataQuery = useQuery({\n queryKey: [\n CAMPAIGN_DATA_QUERY_KEY,\n activeAccountWebClientConfig,\n adCampaignId,\n ],\n queryFn: async () => {\n setErrorInfo(undefined);\n\n if (!shouldQuery) {\n return null;\n }\n\n return tryInvokeApi(\n async () => {\n const client = new CampaignManagerClient(\n activeAccountWebClientConfig\n );\n const data = await client.retrieveCampaigns(adCampaignId ?? null);\n return data;\n },\n (error) => {\n const { headerDisplay, messageDisplay } = getErrorInfoFromStatusCode(\n error?.status,\n error?.message\n );\n setErrorInfo({\n errorHeader: headerDisplay,\n errorMessage: messageDisplay,\n });\n trackError(CAMPAIGN_DATA_QUERY_KEY, error, { adCampaignId });\n }\n );\n },\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n networkMode: 'offlineFirst',\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_LONG,\n });\n\n const queryClient = useQueryClient();\n\n const refreshData = useCallback(async () => {\n queryClient.invalidateQueries({\n queryKey: queryKey,\n });\n\n return await campaignDataQuery.refetch();\n }, [campaignDataQuery, queryClient, queryKey]);\n\n return {\n campaignDataQuery,\n allCampaignData: campaignDataQuery.data,\n refreshData: refreshData,\n };\n};\n","import { EventIdQueryParam } from 'src/utils/constants/constants';\nimport { UserSetting } from 'src/WebApiController';\n\nexport const queryIdSearchParam = 'queryId';\n\nexport const INVENTORY_USER_SETTINGS = [\n UserSetting.InventoryDefaultTab,\n UserSetting.InventoryV2DefaultTab,\n UserSetting.QuickFiltersStateInventory,\n UserSetting.InventoryColumnNumberPrecision,\n UserSetting.InventoryColumnEditability,\n UserSetting.SuspiciousPriceChange,\n UserSetting.InventoryColumnWidths,\n UserSetting.InventoryColumnOrder,\n UserSetting.InventoryColumnsEnabled,\n UserSetting.InventoryPageViewMode,\n UserSetting.InventoryFlattenedColumnOrder,\n UserSetting.InventoryFlattenedColumnsEnabled,\n UserSetting.InventoryFlattenedColumnNumberPrecision,\n UserSetting.InventoryFlattenedColumnEditability,\n UserSetting.InventorySideTableColumnNumberPrecision,\n UserSetting.InventorySideTableColumnEditability,\n UserSetting.InventorySideTableColumnOrder,\n UserSetting.InventorySideTableColumnsEnabled,\n UserSetting.InventoryCustomColumns,\n UserSetting.EventsColumnWidths,\n UserSetting.EventsColumnOrder,\n UserSetting.EventsColumnEditability,\n UserSetting.EventsColumnNumberPrecision,\n UserSetting.EventsColumnsEnabled,\n UserSetting.EventsCustomColumns,\n];\n\nexport const getDefaultReturnUrl = (viagVirtualId?: string | null) => {\n const queryParams = new URLSearchParams(location.search);\n\n queryParams.delete(EventIdQueryParam);\n queryParams.delete('queryId'); // TODO - this is obsolete and no longer use, but it could still exists\n\n return `/inventory?${queryParams.toString()}${\n viagVirtualId ? `#${viagVirtualId}` : ''\n }`;\n};\n","import { useMemo } from 'react';\nimport { useAdPlatformCatalogDataContext } from 'src/contexts/AdPlatformCatalogDataContext';\nimport { PosSelect, PosSelectProps } from 'src/core/POS/PosSelect';\nimport { EmptySelectionKey } from 'src/utils/adGroupUtils';\nimport {\n getEventDisplayText,\n getPerformerAndVenueForEvent,\n} from 'src/utils/eventWithDataUtils';\nimport { EventWithData } from 'src/WebApiController';\n\ntype AdGroupEventSelectorProps = Omit & {\n filterCallback: (event?: EventWithData) => boolean;\n};\n\nexport const AdGroupEventSelector = ({\n filterCallback,\n placeholderText,\n ...props\n}: AdGroupEventSelectorProps) => {\n const { data: catalogData } = useAdPlatformCatalogDataContext();\n\n const allEvents = useMemo(() => {\n if (!catalogData?.events) return {};\n const events = catalogData.events;\n\n const results = Object.values(events).reduce(\n (acc, event) => {\n if (event.event.viagId && filterCallback(event)) {\n const { venue } = getPerformerAndVenueForEvent(\n event?.event,\n catalogData\n );\n\n acc[event.event.viagId.toString()] = getEventDisplayText(\n event.event,\n venue\n );\n }\n return acc;\n },\n {} as Record\n );\n\n if (Object.values(results).length == 0) {\n results[EmptySelectionKey] = 'N/A';\n }\n return results;\n }, [catalogData, filterCallback]);\n\n return (\n 10\n }\n loading={catalogData == null}\n placeholderText={placeholderText}\n valueOptionsContent={allEvents}\n />\n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components';\n\nexport const StyledAdGroupCreateBody = styled.div`\n height: 100%;\n display: grid;\n grid-template-rows: auto 1fr auto;\n\n @supports (-webkit-touch-callout: none) {\n max-height: -webkit-fill-available;\n }\n`;\n\nexport const HeaderRightGroup = styled.div<{ editMode?: boolean }>`\n display: flex;\n flex-direction: column;\n width: 100%;\n\n ${({ editMode, theme: { media, spacing } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n text-align: ${editMode ? 'left' : 'right'};\n max-width: calc(50% - ${spacing(4)});\n align-items: ${editMode ? 'flex-start' : 'flex-end'};\n `\n )}`}\n`;\n\nexport const HeaderLeftGroup = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n\n ${({ theme: { media, spacing } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n max-width: calc(50% - ${spacing(4)});\n `\n )}`}\n`;\n\nexport const HeaderContainer = styled.div`\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('title4')};\n padding-block-end: ${(props) => props.theme.spacing(4)};\n\n width: 100%;\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\nexport const BodySectionTitle = styled.div`\n ${(props) => props.theme.typography.getStyles('subtitle1')};\n color: ${(props) => props.theme.colors.textBrand};\n text-transform: uppercase;\n margin: 0;\n padding-block-end: ${() => vars.spacing.lg};\n`;\n\nexport const BodySectionBody = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: space-between;\n width: 100%;\n padding-block-end: ${() => vars.spacing.sm};\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('subtitle1', 'regular')};\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n padding-block-end: ${vars.spacing.lg};\n `\n )}`}\n`;\n","import * as styles from './AdGroupCreate.css';\ninterface AdGroupSelectErrorProps {\n error?: string;\n}\n\nexport const AdGroupSelectError = ({ error }: AdGroupSelectErrorProps) => {\n return (\n <>\n {error && (\n
    \n
    {error}
    \n
    \n )}\n \n );\n};\n","import { ComponentProps, useCallback, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { CancelButton } from 'src/components/Buttons';\nimport { AdGroupEventSelector } from 'src/components/Selectors/AdGroupEventSelector';\nimport { useAdPlatformCatalogDataContext } from 'src/contexts/AdPlatformCatalogDataContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { PillList } from 'src/core/ui/PillList';\nimport { PillItemProps } from 'src/core/ui/PillList/PillItem';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { EventIcon } from 'src/svgs/EventIcon';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport {\n EmptySelectionKey,\n getTopLevelCategoryName,\n} from 'src/utils/adGroupUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getEventDisplayText,\n getPerformerAndVenueForEvent,\n} from 'src/utils/eventWithDataUtils';\nimport { EventWithData } from 'src/WebApiController';\n\nimport { BodySectionTitle, FieldWrapper } from '../common';\nimport * as styles from './AdGroupCreate.css';\nimport { BodySectionBody } from './AdGroupCreate.styled';\nimport { AdGroupSelectError } from './AdGroupSelectError';\n\nexport type EventSectionInput = {\n event: EventWithData | null | undefined;\n};\n\nexport interface EventSectionProps {\n onSelectEvent: (event: EventWithData | null | undefined) => void;\n performerId?: number;\n genreId?: number;\n event: EventWithData | null | undefined;\n error?: string;\n}\n\nexport const EventSection = ({\n onSelectEvent,\n performerId,\n genreId,\n event,\n error,\n}: EventSectionProps) => {\n const addEventDialog = useBasicDialog();\n\n const onAddEventSave = useCallback(\n (event: EventWithData | null | undefined) => {\n onSelectEvent(event);\n addEventDialog.closeDialog();\n },\n [onSelectEvent, addEventDialog]\n );\n\n const onAddEventCancel = useCallback(() => {\n addEventDialog.closeDialog();\n }, [addEventDialog]);\n\n const onAddEvent = useCallback(() => {\n addEventDialog.launchDialog();\n }, [addEventDialog]);\n\n const { data: catalogData } = useAdPlatformCatalogDataContext();\n\n const contentNA = useContent(ContentId.NA);\n\n const pills = useMemo(() => {\n const pills = [] as PillItemProps[];\n if (event !== undefined) {\n const { venue } = getPerformerAndVenueForEvent(event?.event, catalogData);\n\n pills.push({\n value: 'event',\n display: event ? getEventDisplayText(event.event, venue) : contentNA,\n icon: ,\n onDelete: () => {\n onSelectEvent(undefined);\n },\n });\n }\n\n return pills;\n }, [catalogData, contentNA, event, onSelectEvent]);\n\n return (\n <>\n
    \n \n \n \n {event !== undefined ? (\n \n \n \n ) : (\n \n \n \n \n )}\n
    \n {addEventDialog.dialogProps.isOpen && (\n \n )}\n \n );\n};\n\nexport type AddEventFieldValues = {\n event: EventWithData | null | undefined;\n};\n\nexport type AddEventDialogProps = Omit<\n ComponentProps,\n 'header' | 'footer'\n> & {\n onSave: (event: EventWithData | null | undefined) => void;\n onCancel: () => void;\n performerId?: number;\n genreId?: number;\n};\n\nexport const AddEventDialog = ({\n onSave,\n onCancel,\n performerId,\n genreId,\n ...genericDialogProps\n}: AddEventDialogProps) => {\n const addEventForm = useForm({\n defaultValues: {\n event: undefined,\n },\n });\n\n const { data: catalogData } = useAdPlatformCatalogDataContext();\n\n const setEvent = useCallback(\n (eventId: string) => {\n if (!catalogData) {\n return;\n }\n const event =\n eventId == EmptySelectionKey\n ? null\n : catalogData.events[parseInt(eventId, 10)];\n addEventForm.clearErrors('event');\n addEventForm.setValue('event', event);\n },\n [addEventForm, catalogData]\n );\n\n const event = addEventForm.watch('event');\n\n const onSubmit = useCallback(() => {\n onSave(event);\n }, [event, onSave]);\n\n const handleEventFilter = (event: EventWithData | null | undefined) => {\n if (performerId && event?.event.perfId != performerId) {\n return false;\n }\n if (genreId && event?.event.genre != getTopLevelCategoryName(genreId)) {\n return false;\n }\n return true;\n };\n\n return (\n }\n footer={\n <>\n \n \n \n \n \n }\n onClosed={() => {\n addEventForm.reset();\n }}\n {...genericDialogProps}\n onCancel={onCancel}\n >\n \n }>\n {\n setEvent(eventId);\n }}\n style={{ width: '100%' }}\n />\n \n \n \n );\n};\n","import categoryIconManifest from 'src/assets/categoryIconManifest.json';\nimport categoryOverrideMappings from 'src/assets/categoryIconOverrideMappings.json';\nimport { Performer, TopLevelCategory } from 'src/WebApiController';\n\nconst isCategoryOverrideMappingKey = (\n key: string\n): key is keyof typeof categoryOverrideMappings =>\n key in categoryOverrideMappings;\n\nconst isCategoryIconManifestKey = (\n key: string\n): key is keyof typeof categoryIconManifest => key in categoryIconManifest;\n\nconst getCategoryIconFilename = (categoryId: string) => {\n if (isCategoryOverrideMappingKey(categoryId)) {\n categoryId = categoryOverrideMappings[categoryId];\n }\n return isCategoryIconManifestKey(categoryId)\n ? categoryIconManifest[categoryId]\n : undefined;\n};\n\nexport type PerformerCategoryIconProps = {\n performer: Performer;\n /**\n * Size in px\n */\n size?: number;\n};\n\nexport function PerformerCategoryIcon({\n performer,\n size = 16,\n}: PerformerCategoryIconProps) {\n const iconFilename =\n performer.genreId != null\n ? getCategoryIconFilename(performer.genreId.toString())\n : undefined;\n const iconFilepath = iconFilename\n ? `/icons/category/${iconFilename}#category-icon-svg`\n : getTopLevelCategoryIconFilepath(\n (() => {\n if (performer.categ) {\n const category = performer.categ[0];\n if (category) {\n return category;\n }\n }\n return performer.descr as TopLevelCategory;\n })()\n );\n return (\n \n \n \n );\n}\n\nfunction getTopLevelCategoryIconFilepath(topLevelCategory: TopLevelCategory) {\n switch (topLevelCategory) {\n case TopLevelCategory.Concert:\n return `/icons/category/concert.svg#category-icon-svg`;\n\n case TopLevelCategory.Sports:\n return `/icons/category/sports.svg#category-icon-svg`;\n\n case TopLevelCategory.Theatre:\n return `/icons/category/theater.svg#category-icon-svg`;\n\n case TopLevelCategory.Festival:\n return `/icons/category/music.svg#category-icon-svg`;\n\n default:\n return `/icons/category/music.svg#category-icon-svg`;\n }\n}\n","import { PosSelect, PosSelectProps } from 'src/core/POS/PosSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { TopLevelCategory } from 'src/WebApiController';\n\nexport const topLevelCategories: Record = {\n [TopLevelCategory.Concert]: ContentId.Concert,\n [TopLevelCategory.Festival]: ContentId.Festival,\n [TopLevelCategory.Sports]: ContentId.Sports,\n [TopLevelCategory.Theatre]: ContentId.Theatre,\n};\n\nexport const AdGroupGenreSelector = ({\n placeholderText,\n ...props\n}: Omit) => {\n return (\n 10\n }\n placeholderText={placeholderText}\n valueOptionsContent={topLevelCategories}\n />\n );\n};\n","import { ComponentProps, useCallback, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { CancelButton } from 'src/components/Buttons';\nimport { PerformerCategoryIcon } from 'src/components/common/PerformerCategoryIcon';\nimport { AdGroupGenreSelector } from 'src/components/Selectors/AdGroupGenreSelector';\nimport { Content } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { PillList } from 'src/core/ui/PillList';\nimport { PillItemProps } from 'src/core/ui/PillList/PillItem';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport {\n getTopLevelCategoryId,\n getTopLevelCategoryName,\n} from 'src/utils/adGroupUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Performer } from 'src/WebApiController';\n\nimport { BodySectionTitle, FieldWrapper } from '../common';\nimport * as styles from './AdGroupCreate.css';\nimport { BodySectionBody } from './AdGroupCreate.styled';\nimport { AdGroupSelectError } from './AdGroupSelectError';\n\nexport interface GenreSectionProps {\n onSelectGenre: (genre?: number) => void;\n genreId?: number;\n error?: string;\n}\n\nexport const GenreSection = ({\n onSelectGenre,\n genreId,\n error,\n}: GenreSectionProps) => {\n const addGenreDialog = useBasicDialog();\n\n const onAddGenreSave = useCallback(\n (genreId?: number) => {\n onSelectGenre(genreId);\n addGenreDialog.closeDialog();\n },\n [onSelectGenre, addGenreDialog]\n );\n\n const onAddGenreCancel = useCallback(() => {\n addGenreDialog.closeDialog();\n }, [addGenreDialog]);\n\n const onAddGenre = useCallback(() => {\n addGenreDialog.launchDialog();\n }, [addGenreDialog]);\n\n const pills = useMemo(() => {\n const pills = [] as PillItemProps[];\n if (genreId) {\n pills.push({\n value: 'genreId',\n display: getTopLevelCategoryName(genreId),\n icon: (\n \n ),\n onDelete: () => {\n onSelectGenre(undefined);\n },\n });\n }\n\n return pills;\n }, [genreId, onSelectGenre]);\n\n return (\n <>\n
    \n \n \n \n {genreId ? (\n \n \n \n ) : (\n \n \n \n \n )}\n
    \n {addGenreDialog.dialogProps.isOpen && (\n \n )}\n \n );\n};\n\nexport type AddGenreFieldValues = {\n genreId?: number;\n};\n\nexport type AddGenreDialogProps = Omit<\n ComponentProps,\n 'header' | 'footer'\n> & {\n onSave: (genreId?: number) => void;\n onCancel: () => void;\n};\n\nexport const AddGenreDialog = ({\n onSave,\n onCancel,\n ...genericDialogProps\n}: AddGenreDialogProps) => {\n const addGenreForm = useForm({\n defaultValues: {\n genreId: undefined,\n },\n });\n\n const setGenre = useCallback(\n (genreId: number) => {\n addGenreForm.clearErrors('genreId');\n addGenreForm.setValue('genreId', genreId);\n },\n [addGenreForm]\n );\n\n const genreId = addGenreForm.watch('genreId');\n\n const onSubmit = useCallback(() => {\n onSave(genreId);\n }, [genreId, onSave]);\n\n return (\n }\n footer={\n <>\n \n \n \n \n \n }\n onClosed={() => {\n addGenreForm.reset();\n }}\n {...genericDialogProps}\n onCancel={onCancel}\n >\n \n }>\n {\n setGenre(getTopLevelCategoryId(genreId));\n }}\n style={{ width: '100%' }}\n />\n \n \n \n );\n};\n","import { useMemo } from 'react';\nimport { useAdPlatformCatalogDataContext } from 'src/contexts/AdPlatformCatalogDataContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { PosSelect, PosSelectProps } from 'src/core/POS/PosSelect';\nimport {\n EmptySelectionKey,\n getListingDisplaytext,\n} from 'src/utils/adGroupUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getPerformerAndVenueForEvent } from 'src/utils/eventWithDataUtils';\nimport { Listing } from 'src/WebApiController';\n\ntype Listings = {\n listingsData: Record | null | undefined;\n};\n\nexport type ListingsSelectorProps = PosSelectProps & Listings;\n\nexport const AdGroupListingSelector = ({\n listingsData,\n placeholderText,\n ...props\n}: Omit) => {\n const { data: catalogData } = useAdPlatformCatalogDataContext();\n\n const rowText = useContent(ContentId.Row);\n const seatText = useContent(ContentId.Seat);\n const seatsText = useContent(ContentId.Seats);\n const sectionText = useContent(ContentId.Section);\n\n const listings: Record = useMemo(() => {\n if (!listingsData) {\n return {};\n }\n const results =\n Object.values(listingsData)\n ?.map((l) => {\n const event = l.viagEvId\n ? catalogData?.events?.[l.viagEvId]\n : undefined;\n const { performer, venue } = getPerformerAndVenueForEvent(\n event?.event,\n catalogData\n );\n if (event) {\n return { event: event.event, listing: l, performer, venue };\n }\n\n return null;\n })\n ?.filter((l) => l != null)\n ?.map((l) => l!)\n ?.reduce(\n (acc, l) => {\n acc[l?.listing.idOnMkp!] = getListingDisplaytext(\n l?.listing,\n sectionText,\n rowText,\n seatText,\n seatsText\n );\n return acc;\n },\n {} as Record\n ) ?? {};\n\n if (Object.values(results).length == 0) {\n results[EmptySelectionKey] = 'N/A';\n }\n return results;\n }, [catalogData, listingsData, rowText, seatText, seatsText, sectionText]);\n\n return (\n 10\n }\n loading={listingsData == null}\n placeholderText={placeholderText}\n valueOptionsContent={listings}\n />\n );\n};\n","import { ComponentProps, useCallback, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { CancelButton } from 'src/components/Buttons';\nimport { AdGroupListingSelector } from 'src/components/Selectors/AdGroupListingSelector';\nimport { useAdPlatformCatalogDataContext } from 'src/contexts/AdPlatformCatalogDataContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { EventMapContextProvider } from 'src/contexts/EventMapContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { PillList } from 'src/core/ui/PillList';\nimport { PillItemProps } from 'src/core/ui/PillList/PillItem';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ListingIcon } from 'src/svgs';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport {\n EmptySelectionKey,\n getListingDisplaytext,\n} from 'src/utils/adGroupUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getMatchingSectionRow } from 'src/utils/seatScoreUtils';\nimport { Listing, Seating, TicketClassInfo } from 'src/WebApiController';\n\nimport { BodySectionTitle, FieldWrapper } from '../common';\nimport * as styles from './AdGroupCreate.css';\nimport { BodySectionBody } from './AdGroupCreate.styled';\nimport { AdGroupSelectError } from './AdGroupSelectError';\n\nexport type ListingSectionInput = {\n listing: Listing | null | undefined;\n};\n\nexport interface ListingSectionProps {\n onSelectListing: (\n listing: Listing | null | undefined,\n seating: Seating | null | undefined,\n ticketClass: TicketClassInfo | null | undefined\n ) => void;\n eventId?: number;\n ticketClass?: TicketClassInfo;\n seating?: Seating;\n listing: Listing | null | undefined;\n error?: string;\n}\n\nexport const ListingSection = ({\n onSelectListing,\n eventId,\n ticketClass,\n seating,\n listing,\n error,\n}: ListingSectionProps) => {\n const addListingDialog = useBasicDialog();\n const { data: catalogData } = useAdPlatformCatalogDataContext();\n\n const event = useMemo(() => {\n if (!eventId || !catalogData?.events?.[eventId.toString()]) {\n return undefined;\n }\n\n return catalogData.events[eventId.toString()].event;\n }, [catalogData, eventId]);\n\n const onAddListingSave = useCallback(\n (\n listing: Listing | null | undefined,\n seating: Seating | null | undefined,\n ticketClass: TicketClassInfo | null | undefined\n ) => {\n onSelectListing(listing, seating, ticketClass);\n addListingDialog.closeDialog();\n },\n [onSelectListing, addListingDialog]\n );\n\n const onAddListingCancel = useCallback(() => {\n addListingDialog.closeDialog();\n }, [addListingDialog]);\n\n const onAddListing = useCallback(() => {\n addListingDialog.launchDialog();\n }, [addListingDialog]);\n\n const contentNA = useContent(ContentId.NA);\n const sectionText = useContent(ContentId.Section);\n const rowText = useContent(ContentId.Row);\n const seatText = useContent(ContentId.Seat);\n const seatsText = useContent(ContentId.Seats);\n\n const pills = useMemo(() => {\n const pills = [] as PillItemProps[];\n if (listing !== undefined) {\n let listingDisplayText = undefined;\n\n if (listing) {\n listingDisplayText = getListingDisplaytext(\n listing,\n sectionText,\n rowText,\n seatText,\n seatsText\n );\n }\n\n pills.push({\n value: 'listing',\n display: listingDisplayText ?? contentNA,\n icon: ,\n onDelete: () => {\n onSelectListing(undefined, undefined, undefined);\n },\n });\n }\n\n return pills;\n }, [\n listing,\n contentNA,\n sectionText,\n rowText,\n seatText,\n seatsText,\n onSelectListing,\n ]);\n\n const enableButton = event;\n\n return (\n <>\n
    \n \n \n \n {listing !== undefined ? (\n \n \n \n ) : (\n \n \n \n \n \n \n \n )}\n
    \n {addListingDialog.dialogProps.isOpen && (\n \n \n \n )}\n \n );\n};\n\nexport type AddListingFieldValues = {\n listing: Listing | null | undefined;\n ticketClass: TicketClassInfo | null | undefined;\n seating: Seating | null | undefined;\n};\n\nexport type AddListingDialogProps = Omit<\n ComponentProps,\n 'header' | 'footer'\n> & {\n onSave: (\n listing: Listing | null | undefined,\n seating: Seating | null | undefined,\n ticketClass: TicketClassInfo | null | undefined\n ) => void;\n onCancel: () => void;\n eventId?: number;\n ticketClass?: TicketClassInfo;\n seating?: Seating;\n};\n\nexport const AddListingDialog = ({\n onSave,\n onCancel,\n eventId,\n ticketClass,\n seating,\n ...genericDialogProps\n}: AddListingDialogProps) => {\n const addListingForm = useForm({\n defaultValues: {\n listing: undefined,\n },\n });\n\n const listing = addListingForm.watch('listing');\n\n const onSubmit = useCallback(() => {\n onSave(\n listing,\n addListingForm.getValues('seating'),\n addListingForm.getValues('ticketClass')\n );\n }, [addListingForm, listing, onSave]);\n\n const { data: catalogData } = useAdPlatformCatalogDataContext();\n\n const getListingsForEvent = useCallback(\n (eventId: number | undefined) => {\n if (eventId == null || catalogData == null) {\n return undefined;\n }\n return catalogData?.events[eventId]?.entities?.listings;\n },\n [catalogData]\n );\n\n const getSectionsForEvent = useCallback(\n (eventId: number | undefined) => {\n if (eventId == null || catalogData == null) {\n return undefined;\n }\n return catalogData?.venueMapByEventId[eventId].sections;\n },\n [catalogData]\n );\n\n const listingsData = getListingsForEvent(eventId);\n const sectionsData = getSectionsForEvent(eventId);\n\n const listings = useMemo(() => {\n if (!listingsData) {\n return null;\n }\n\n return (\n listingsData.reduce(\n (acc, listing) => {\n let match = false;\n if (seating) {\n // Filter by section\n if (seating?.sectionId == listing.seating.sectionId) {\n match = true;\n }\n } else if (ticketClass) {\n // Filter by ticket class\n const row = getMatchingSectionRow(listing.seating, sectionsData);\n\n const ticketClassId = row.section?.specRow?.tktClass?.ticketClassId;\n if (ticketClassId == ticketClass.id) {\n match = true;\n }\n } else {\n match = true;\n }\n\n if (match) {\n acc[listing.idOnMkp!] = listing;\n }\n return acc;\n },\n {} as Record\n ) ?? []\n );\n }, [listingsData, seating, sectionsData, ticketClass]);\n\n const setListing = useCallback(\n (listingId: string) => {\n if (!listings) {\n return;\n }\n\n const listing =\n listingId == EmptySelectionKey ? null : listings[listingId];\n\n addListingForm.setValue('seating', null);\n addListingForm.setValue('ticketClass', null);\n\n if (listing?.seating.sectionId) {\n addListingForm.setValue('seating', listing.seating);\n\n const row = getMatchingSectionRow(listing.seating, sectionsData);\n\n const ticketClass = row.section?.specRow?.tktClass;\n if (ticketClass) {\n addListingForm.setValue('ticketClass', {\n id: ticketClass?.ticketClassId,\n name: ticketClass?.ticketClassName,\n color: ticketClass?.color,\n cssPostFix: ticketClass?.cssPostFix,\n });\n }\n }\n\n addListingForm.clearErrors('listing');\n addListingForm.setValue('listing', listing);\n },\n [addListingForm, listings, sectionsData]\n );\n\n return (\n }\n footer={\n <>\n \n \n \n \n \n }\n onClosed={() => {\n addListingForm.reset();\n }}\n {...genericDialogProps}\n onCancel={onCancel}\n >\n \n }>\n {\n setListing(listingId);\n }}\n style={{ width: '100%' }}\n />\n \n \n \n );\n};\n","import { useMemo } from 'react';\nimport { useAdPlatformCatalogDataContext } from 'src/contexts/AdPlatformCatalogDataContext';\nimport { PosSelect, PosSelectProps } from 'src/core/POS/PosSelect';\nimport { EmptySelectionKey } from 'src/utils/adGroupUtils';\nimport { Performer } from 'src/WebApiController';\n\ntype AdGroupPerformerSelectorProps = Omit<\n PosSelectProps,\n 'valueOptionsContent'\n> & {\n filterCallback: (performer?: Performer) => boolean;\n};\n\nexport const AdGroupPerformerSelector = ({\n filterCallback,\n placeholderText,\n ...props\n}: AdGroupPerformerSelectorProps) => {\n const { data: catalogData } = useAdPlatformCatalogDataContext();\n\n const allPerformers = useMemo(() => {\n if (!catalogData?.performers) return {};\n const performers = catalogData.performers;\n\n const results = Object.values(performers).reduce(\n (acc, performer) => {\n if (performer.viagId && filterCallback(performer)) {\n acc[performer.viagId.toString()] = performer.name;\n }\n return acc;\n },\n {} as Record\n );\n\n if (Object.values(results).length == 0) {\n results[EmptySelectionKey] = 'N/A';\n }\n\n return results;\n }, [catalogData?.performers, filterCallback]);\n\n return (\n 10\n }\n loading={catalogData == null}\n placeholderText={placeholderText}\n valueOptionsContent={allPerformers}\n />\n );\n};\n","import { ComponentProps, useCallback, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { CancelButton } from 'src/components/Buttons';\nimport { PerformerCategoryIcon } from 'src/components/common/PerformerCategoryIcon';\nimport { AdGroupPerformerSelector } from 'src/components/Selectors/AdGroupPerformerSelector';\nimport { useAdPlatformCatalogDataContext } from 'src/contexts/AdPlatformCatalogDataContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { PillList } from 'src/core/ui/PillList';\nimport { PillItemProps } from 'src/core/ui/PillList/PillItem';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport {\n EmptySelectionKey,\n getTopLevelCategoryId,\n getTopLevelCategoryName,\n} from 'src/utils/adGroupUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Performer, TopLevelCategory } from 'src/WebApiController';\n\nimport { BodySectionTitle, FieldWrapper } from '../common';\nimport * as styles from './AdGroupCreate.css';\nimport { BodySectionBody } from './AdGroupCreate.styled';\nimport { AdGroupSelectError } from './AdGroupSelectError';\n\nexport interface PerformerSectionProps {\n onSelectPerformer: (performer: Performer | null | undefined) => void;\n genreId?: number;\n performer: Performer | null | undefined;\n error?: string;\n}\n\nexport const PerformerSection = ({\n onSelectPerformer,\n genreId,\n performer,\n error,\n}: PerformerSectionProps) => {\n const addPerformerDialog = useBasicDialog();\n\n const onAddPerformerSave = useCallback(\n (performer: Performer | null | undefined) => {\n onSelectPerformer(performer);\n addPerformerDialog.closeDialog();\n },\n [onSelectPerformer, addPerformerDialog]\n );\n\n const onAddPerformerCancel = useCallback(() => {\n addPerformerDialog.closeDialog();\n }, [addPerformerDialog]);\n\n const onAddPerformer = useCallback(() => {\n addPerformerDialog.launchDialog();\n }, [addPerformerDialog]);\n\n const contentNA = useContent(ContentId.NA);\n\n const pills = useMemo(() => {\n const pills = [] as PillItemProps[];\n let performerRef = performer;\n if (performer !== undefined) {\n if (!performer) {\n performerRef = {\n genreId: getTopLevelCategoryId(TopLevelCategory.Concert),\n name: contentNA,\n } as Performer;\n }\n\n pills.push({\n value: 'performer',\n display: performerRef!.name,\n icon: ,\n onDelete: () => {\n onSelectPerformer(undefined);\n },\n });\n }\n\n return pills;\n }, [performer, contentNA, onSelectPerformer]);\n\n return (\n <>\n
    \n \n \n \n {performer !== undefined ? (\n \n \n \n ) : (\n \n \n \n \n )}\n
    \n {addPerformerDialog.dialogProps.isOpen && (\n \n )}\n \n );\n};\n\nexport type AddPerformerFieldValues = {\n performer: Performer | null | undefined;\n};\n\nexport type AddPerformerDialogProps = Omit<\n ComponentProps,\n 'header' | 'footer'\n> & {\n onSave: (performer: Performer | null | undefined) => void;\n onCancel: () => void;\n genreId?: number;\n};\n\nexport const AddPerformerDialog = ({\n onSave,\n onCancel,\n genreId,\n ...genericDialogProps\n}: AddPerformerDialogProps) => {\n const addPerformerForm = useForm({\n defaultValues: {\n performer: undefined,\n },\n });\n\n const { data: catalogData } = useAdPlatformCatalogDataContext();\n\n const setPerformer = useCallback(\n (performerId: string) => {\n if (!catalogData) {\n return;\n }\n\n const performer =\n performerId == EmptySelectionKey\n ? null\n : catalogData.performers[parseInt(performerId, 10)];\n\n addPerformerForm.clearErrors('performer');\n addPerformerForm.setValue('performer', performer);\n },\n [addPerformerForm, catalogData]\n );\n\n const performer = addPerformerForm.watch('performer');\n\n const topLevelCategory = genreId\n ? getTopLevelCategoryName(genreId)\n : undefined;\n\n const onSubmit = useCallback(() => {\n onSave(performer);\n }, [performer, onSave]);\n\n const handleEventFilter = (performer: Performer | null | undefined) => {\n if (\n !performer ||\n !topLevelCategory ||\n performer.categ.some((tlc) => tlc == topLevelCategory)\n ) {\n return true;\n }\n return false;\n };\n\n return (\n }\n footer={\n <>\n \n \n \n \n \n }\n onClosed={() => {\n addPerformerForm.reset();\n }}\n {...genericDialogProps}\n onCancel={onCancel}\n >\n \n }>\n {\n setPerformer(performerId);\n }}\n style={{ width: '100%' }}\n />\n \n \n \n );\n};\n","import { useMemo } from 'react';\nimport { useAdPlatformCatalogDataContext } from 'src/contexts/AdPlatformCatalogDataContext';\nimport { PosSelect, PosSelectProps } from 'src/core/POS/PosSelect';\nimport { EmptySelectionKey } from 'src/utils/adGroupUtils';\nimport { AdPlatformCatalogResults, Seating } from 'src/WebApiController';\n\nexport type ListingsSelectorProps = PosSelectProps & {\n seatings: Record | null | undefined;\n};\n\nexport const AdGroupSectionSelector = ({\n seatings,\n placeholderText,\n ...props\n}: Omit) => {\n const { data: catalogData } = useAdPlatformCatalogDataContext();\n\n return (\n \n );\n};\n\nexport const SelectionBody = ({\n catalogData,\n seatings,\n placeholderText,\n ...props\n}: {\n catalogData: AdPlatformCatalogResults | undefined;\n seatings: Record | null | undefined;\n placeholderText: string | undefined;\n} & Omit) => {\n const sectionsData: Record = useMemo(() => {\n if (!seatings) {\n return {};\n }\n\n const results =\n Object.values(seatings).reduce(\n (acc, seating) => {\n const sectionId = seating.sectionId;\n const sectionName = seating.section;\n if (sectionId && sectionName) {\n acc[sectionId.toString()] = sectionName;\n }\n return acc;\n },\n {} as Record\n ) ?? {};\n\n if (Object.values(results).length == 0) {\n results[EmptySelectionKey] = 'N/A';\n }\n\n return results;\n }, [seatings]);\n\n return (\n 10\n }\n loading={seatings == null}\n placeholderText={placeholderText}\n valueOptionsContent={sectionsData}\n />\n );\n};\n","import { ComponentProps, useCallback, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { CancelButton } from 'src/components/Buttons';\nimport { AdGroupSectionSelector } from 'src/components/Selectors/AdGroupSectionSelector';\nimport { useAdPlatformCatalogDataContext } from 'src/contexts/AdPlatformCatalogDataContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { EventMapContextProvider } from 'src/contexts/EventMapContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { PillList } from 'src/core/ui/PillList';\nimport { PillItemProps } from 'src/core/ui/PillList/PillItem';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { IconsFill, PlusIcon, SeatIcon } from 'src/svgs/Viagogo';\nimport { EmptySelectionKey } from 'src/utils/adGroupUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getMatchingSectionRow } from 'src/utils/seatScoreUtils';\nimport { Seating, TicketClassInfo } from 'src/WebApiController';\n\nimport { BodySectionTitle, FieldWrapper } from '../common';\nimport * as styles from './AdGroupCreate.css';\nimport { BodySectionBody } from './AdGroupCreate.styled';\nimport { AdGroupSelectError } from './AdGroupSelectError';\n\nexport type SeatingSectionInput = {\n seating: Seating | null | undefined;\n};\n\nexport interface SeatingSectionProps {\n onSelectSeating: (\n seating: Seating | null | undefined,\n ticketClass: TicketClassInfo | null | undefined\n ) => void;\n eventId?: number;\n ticketClass?: TicketClassInfo;\n seating: Seating | null | undefined;\n error?: string;\n}\n\nexport const SeatingSection = ({\n onSelectSeating,\n eventId,\n ticketClass,\n seating,\n error,\n}: SeatingSectionProps) => {\n const addSeatingDialog = useBasicDialog();\n const { data: catalogData } = useAdPlatformCatalogDataContext();\n\n const event = useMemo(() => {\n if (!eventId || !catalogData?.events?.[eventId.toString()]) {\n return undefined;\n }\n\n return catalogData.events[eventId.toString()].event;\n }, [catalogData, eventId]);\n\n const onAddSeatingSave = useCallback(\n (\n seating: Seating | null | undefined,\n ticketClass: TicketClassInfo | null | undefined\n ) => {\n onSelectSeating(seating, ticketClass);\n addSeatingDialog.closeDialog();\n },\n [onSelectSeating, addSeatingDialog]\n );\n\n const onAddSeatingCancel = useCallback(() => {\n addSeatingDialog.closeDialog();\n }, [addSeatingDialog]);\n\n const onAddSeating = useCallback(() => {\n addSeatingDialog.launchDialog();\n }, [addSeatingDialog]);\n\n const contentNA = useContent(ContentId.NA);\n\n const pills = useMemo(() => {\n const pills = [] as PillItemProps[];\n if (seating !== undefined) {\n pills.push({\n value: 'seating',\n display: seating?.section ?? contentNA,\n icon: ,\n onDelete: () => {\n onSelectSeating(undefined, undefined);\n },\n });\n }\n\n return pills;\n }, [seating, contentNA, onSelectSeating]);\n\n const enableButton = event;\n\n return (\n <>\n
    \n \n \n \n {seating !== undefined ? (\n \n \n \n ) : (\n \n \n \n \n \n \n \n )}\n
    \n {addSeatingDialog.dialogProps.isOpen && (\n \n \n \n )}\n \n );\n};\n\nexport type AddSeatingFieldValues = {\n seating: Seating | null | undefined;\n ticketClass: TicketClassInfo | null | undefined;\n};\n\nexport type AddSeatingDialogProps = Omit<\n ComponentProps,\n 'header' | 'footer'\n> & {\n onSave: (\n seating: Seating | null | undefined,\n ticketClass: TicketClassInfo | null | undefined\n ) => void;\n onCancel: () => void;\n eventId?: number;\n ticketClass?: TicketClassInfo;\n};\n\nexport const AddSeatingDialog = ({\n onSave,\n onCancel,\n eventId,\n ticketClass,\n ...genericDialogProps\n}: AddSeatingDialogProps) => {\n const addSeatingForm = useForm({\n defaultValues: {\n seating: undefined,\n },\n });\n\n const seating = addSeatingForm.watch('seating');\n\n const onSubmit = useCallback(() => {\n onSave(seating, addSeatingForm.getValues('ticketClass'));\n }, [onSave, seating, addSeatingForm]);\n\n const { data: catalogData } = useAdPlatformCatalogDataContext();\n\n const getListingsForEvent = useCallback(\n (eventId: number | undefined) => {\n if (eventId == null || catalogData == null) {\n return undefined;\n }\n return catalogData?.events[eventId]?.entities?.listings;\n },\n [catalogData]\n );\n\n const getSectionsForEvent = useCallback(\n (eventId: number | undefined) => {\n if (eventId == null || catalogData == null) {\n return undefined;\n }\n return catalogData?.venueMapByEventId[eventId].sections;\n },\n [catalogData]\n );\n\n const listingsData = getListingsForEvent(eventId);\n const sectionsData = getSectionsForEvent(eventId);\n\n const seatings = useMemo(() => {\n if (!listingsData) {\n return null;\n }\n\n return (\n listingsData.reduce(\n (acc, listing) => {\n const seating = listing.seating;\n const sectionId = listing.seating.sectionId;\n\n if (seating != null && sectionId != null) {\n if (ticketClass) {\n // Filter by ticket class id if needed\n const row = getMatchingSectionRow(listing.seating, sectionsData);\n\n const ticketClassId =\n row.section?.specRow?.tktClass?.ticketClassId;\n if (ticketClassId == ticketClass.id) {\n acc[sectionId] = listing.seating;\n }\n } else {\n acc[sectionId] = listing.seating;\n }\n }\n\n return acc;\n },\n {} as Record\n ) ?? {}\n );\n }, [listingsData, sectionsData, ticketClass]);\n\n const setSeating = useCallback(\n (seatingId: string) => {\n if (!seatings) {\n return;\n }\n\n const seating =\n seatingId == EmptySelectionKey\n ? null\n : seatings[parseInt(seatingId, 10)];\n addSeatingForm.clearErrors('seating');\n addSeatingForm.setValue('seating', seating);\n addSeatingForm.setValue('ticketClass', null);\n\n if (seating) {\n const row = getMatchingSectionRow(seating, sectionsData);\n\n const ticketClass = row.section?.specRow?.tktClass;\n if (ticketClass) {\n addSeatingForm.setValue('ticketClass', {\n id: ticketClass?.ticketClassId,\n name: ticketClass?.ticketClassName,\n color: ticketClass?.color,\n cssPostFix: ticketClass?.cssPostFix,\n });\n }\n }\n },\n [addSeatingForm, seatings, sectionsData]\n );\n\n return (\n }\n footer={\n <>\n \n \n \n \n \n }\n onClosed={() => {\n addSeatingForm.reset();\n }}\n {...genericDialogProps}\n onCancel={onCancel}\n >\n \n }>\n {\n setSeating(seatingId);\n }}\n style={{ width: '100%' }}\n />\n \n \n \n );\n};\n","import { useMemo } from 'react';\nimport { useAdPlatformCatalogDataContext } from 'src/contexts/AdPlatformCatalogDataContext';\nimport { PosSelect, PosSelectProps } from 'src/core/POS/PosSelect';\nimport { EmptySelectionKey } from 'src/utils/adGroupUtils';\nimport {\n AdPlatformCatalogResults,\n TicketClassInfo,\n} from 'src/WebApiController';\n\nexport type TicketClassSelectorProps = PosSelectProps & {\n ticketClasses: Record | null | undefined;\n};\n\nexport const AdGroupTicketClassSelector = ({\n ticketClasses,\n placeholderText,\n ...props\n}: Omit) => {\n const { data: catalogData } = useAdPlatformCatalogDataContext();\n\n return (\n \n );\n};\n\nexport const SelectionBody = ({\n catalogData,\n ticketClasses,\n placeholderText,\n ...props\n}: {\n catalogData: AdPlatformCatalogResults | undefined;\n ticketClasses: Record | null | undefined;\n placeholderText: string | undefined;\n} & Omit) => {\n const ticketClassesData = useMemo(() => {\n if (!ticketClasses) {\n return {};\n }\n\n const results =\n Object.values(ticketClasses).reduce(\n (acc, ticketClass) => {\n const ticketClassId = ticketClass.id;\n const ticketClassName = ticketClass.name;\n if (ticketClassId != null && ticketClassName != null) {\n acc[ticketClassId.toString()] = ticketClassName;\n }\n return acc;\n },\n {} as Record\n ) ?? {};\n if (Object.values(results).length == 0) {\n results[EmptySelectionKey] = 'N/A';\n }\n\n return results;\n }, [ticketClasses]);\n return (\n 10\n : false\n }\n loading={ticketClasses == null}\n placeholderText={placeholderText}\n valueOptionsContent={ticketClassesData}\n />\n );\n};\n","import { ComponentProps, useCallback, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { CancelButton } from 'src/components/Buttons';\nimport { AdGroupTicketClassSelector } from 'src/components/Selectors/AdGroupTicketClassSelector';\nimport { useAdPlatformCatalogDataContext } from 'src/contexts/AdPlatformCatalogDataContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { EventMapContextProvider } from 'src/contexts/EventMapContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { PillList } from 'src/core/ui/PillList';\nimport { PillItemProps } from 'src/core/ui/PillList/PillItem';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { IconsFill, PlusIcon, SeatIcon } from 'src/svgs/Viagogo';\nimport { EmptySelectionKey } from 'src/utils/adGroupUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getMatchingSectionRow } from 'src/utils/seatScoreUtils';\nimport { TicketClassInfo } from 'src/WebApiController';\n\nimport { BodySectionTitle, FieldWrapper } from '../common';\nimport * as styles from './AdGroupCreate.css';\nimport { BodySectionBody } from './AdGroupCreate.styled';\nimport { AdGroupSelectError } from './AdGroupSelectError';\n\nexport type TicketClassSectionInput = {\n ticketClass: TicketClassInfo | null | undefined;\n};\n\nexport interface TicketClassSectionProps {\n onSelectTicketClass: (\n ticketClass: TicketClassInfo | null | undefined\n ) => void;\n eventId?: number;\n ticketClass: TicketClassInfo | null | undefined;\n error?: string;\n}\n\nexport const TicketClassSection = ({\n onSelectTicketClass,\n eventId,\n ticketClass,\n error,\n}: TicketClassSectionProps) => {\n const addTicketClassDialog = useBasicDialog();\n const { data: catalogData } = useAdPlatformCatalogDataContext();\n\n const event = useMemo(() => {\n if (!eventId || !catalogData?.events?.[eventId.toString()]) {\n return undefined;\n }\n\n return catalogData.events[eventId.toString()].event;\n }, [catalogData, eventId]);\n\n const onAddTicketClassSave = useCallback(\n (ticketClass: TicketClassInfo | null | undefined) => {\n onSelectTicketClass(ticketClass);\n addTicketClassDialog.closeDialog();\n },\n [onSelectTicketClass, addTicketClassDialog]\n );\n\n const onAddTicketClassCancel = useCallback(() => {\n addTicketClassDialog.closeDialog();\n }, [addTicketClassDialog]);\n\n const onAddTicketClass = useCallback(() => {\n addTicketClassDialog.launchDialog();\n }, [addTicketClassDialog]);\n\n const contentNA = useContent(ContentId.NA);\n\n const pills = useMemo(() => {\n const pills = [] as PillItemProps[];\n if (ticketClass !== undefined) {\n pills.push({\n value: 'ticketClass',\n display: ticketClass?.name ?? contentNA,\n icon: ,\n onDelete: () => {\n onSelectTicketClass(undefined);\n },\n });\n }\n\n return pills;\n }, [ticketClass, contentNA, onSelectTicketClass]);\n\n const enableButton = event;\n\n return (\n <>\n
    \n \n \n \n {ticketClass !== undefined ? (\n \n \n \n ) : (\n \n \n \n \n \n \n \n )}\n
    \n {addTicketClassDialog.dialogProps.isOpen && (\n \n \n \n )}\n \n );\n};\n\nexport type AddTicketClassFieldValues = {\n ticketClass: TicketClassInfo | null | undefined;\n};\n\nexport type AddTicketClassDialogProps = Omit<\n ComponentProps,\n 'header' | 'footer'\n> & {\n onSave: (ticketClass: TicketClassInfo | null | undefined) => void;\n onCancel: () => void;\n eventId?: number;\n};\n\nexport const AddTicketClassDialog = ({\n onSave,\n onCancel,\n eventId,\n ...genericDialogProps\n}: AddTicketClassDialogProps) => {\n const addTicketClassForm = useForm({\n defaultValues: {\n ticketClass: undefined,\n },\n });\n\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n const ticketClass = addTicketClassForm.watch('ticketClass');\n\n const onSubmit = useCallback(() => {\n onSave(ticketClass);\n }, [ticketClass, onSave]);\n\n const { data: catalogData } = useAdPlatformCatalogDataContext();\n\n const getListingsForEvent = useCallback(\n (eventId: number | undefined) => {\n if (eventId == null || catalogData == null) {\n return undefined;\n }\n return catalogData?.events[eventId]?.entities?.listings;\n },\n [catalogData]\n );\n\n const getSectionsForEvent = useCallback(\n (eventId: number | undefined) => {\n if (eventId == null || catalogData == null) {\n return undefined;\n }\n return catalogData?.venueMapByEventId[eventId].sections;\n },\n [catalogData]\n );\n\n const listingsData = getListingsForEvent(eventId);\n const sectionsData = getSectionsForEvent(eventId);\n\n const ticketClasses = useMemo(() => {\n if (!listingsData) {\n return null;\n }\n\n return (\n listingsData.reduce(\n (acc, listing) => {\n const row = getMatchingSectionRow(listing.seating, sectionsData);\n const ticketClass = row.section?.specRow?.tktClass;\n const ticketClassId = ticketClass?.ticketClassId;\n if (ticketClass != null && ticketClassId != null) {\n acc[ticketClassId] = {\n id: ticketClass.ticketClassId,\n name: ticketClass.ticketClassName,\n color: ticketClass.color,\n cssPostFix: ticketClass.cssPostFix,\n } as TicketClassInfo;\n }\n return acc;\n },\n {} as Record\n ) ?? {}\n );\n }, [listingsData, sectionsData]);\n\n const setTicketClass = useCallback(\n (ticketClassId: string) => {\n if (!ticketClasses) {\n return;\n }\n\n const ticketClass =\n ticketClassId == EmptySelectionKey\n ? null\n : ticketClasses[parseInt(ticketClassId, 10)];\n addTicketClassForm.clearErrors('ticketClass');\n addTicketClassForm.setValue('ticketClass', ticketClass);\n },\n [addTicketClassForm, ticketClasses]\n );\n\n return (\n }\n footer={\n <>\n \n \n \n \n \n }\n onClosed={() => {\n addTicketClassForm.reset();\n }}\n {...genericDialogProps}\n onCancel={onCancel}\n >\n \n }>\n {\n setTicketClass(ticketClassId);\n }}\n style={{ width: '100%' }}\n />\n \n \n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport {\n ComponentProps,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react';\nimport { FormProvider, useForm, useFormContext } from 'react-hook-form';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { AdCampaignsDataContext } from 'src/contexts/AdCampaignsDataContext/AdCampaignsDataContext';\nimport { AdGroupsDataContext } from 'src/contexts/AdGroupsDataContext/AdGroupsDataContext';\nimport { useAdPlatformCatalogDataContext } from 'src/contexts/AdPlatformCatalogDataContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { getTopLevelCategoryId } from 'src/utils/adGroupUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getPerformerAndVenueForEvent } from 'src/utils/eventWithDataUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n AdGroupBidModifierKey,\n AdGroupState,\n CampaignManagerClient,\n CreateAdGroupBidModifierValue,\n CreateAdGroupRequest,\n EventWithData,\n Listing,\n Performer,\n Seating,\n TicketClassInfo,\n Venue,\n} from 'src/WebApiController';\n\nimport { CancellableFormFooter, FieldWrapper } from '../common';\nimport { CancellableFormHeader } from '../common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from '../common/EventEntityHeader';\nimport { modalDetails } from '../common/Modals.css';\nimport { ModalBody } from '../Modal';\nimport { ModalBodyDataContainer, ModalFooter } from '../Modal/Modal.styled';\nimport { EventSection } from './AdGroupSelectEventSection';\nimport { GenreSection } from './AdGroupSelectGenreSection';\nimport { ListingSection } from './AdGroupSelectListingSection';\nimport { PerformerSection } from './AdGroupSelectPerformerSection';\nimport { SeatingSection } from './AdGroupSelectSeatingSection';\nimport { TicketClassSection } from './AdGroupSelectTicketClassSection';\n\ntype AdGroupCreateInput = {\n genreId?: number;\n performer: Performer | null | undefined;\n event: EventWithData | null | undefined;\n venue: Venue | null | undefined;\n ticketClass: TicketClassInfo | null | undefined;\n seating: Seating | null | undefined;\n listing: Listing | null | undefined;\n name: string;\n baseBid: number;\n maxBid: number;\n dailyBudget: number;\n};\n\nexport const AdGroupCreateForm = () => {\n const defaultValues = useMemo(() => {\n return {\n name: '',\n baseBid: 0,\n maxBid: 0,\n dailyBudget: 0,\n } as AdGroupCreateInput;\n }, []);\n\n const methods = useForm({\n defaultValues,\n });\n\n return (\n \n \n \n );\n};\n\nexport const AdGroupCreateModal = {\n children: ,\n clickOutsideToClose: true,\n size: 'slide-in',\n};\n\nexport function AdGroupCreateFormContent({\n formState,\n handleSubmit,\n watch,\n setError,\n clearErrors,\n}: Omit<\n ComponentProps>,\n 'children'\n>) {\n const curFormValues = watch();\n\n const { closeModal } = useContext(ModalContext);\n\n const { allCampaignData } = useContext(AdCampaignsDataContext);\n\n const adCampaignEntity = allCampaignData ? allCampaignData[0] : null;\n\n const { showErrorDialog } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { refreshData } = useContext(AdGroupsDataContext);\n\n const [isLoading, setIsLoading] = useState(false);\n\n const onSubmit = useCallback(\n async (adGroupCreateInput: AdGroupCreateInput) => {\n setIsLoading(true);\n\n if (!adCampaignEntity) {\n return;\n }\n\n const currencyCode = adCampaignEntity?.currencyCode;\n\n tryInvokeApi(\n async () => {\n setIsLoading(true);\n\n const client = new CampaignManagerClient(\n activeAccountWebClientConfig\n );\n\n const createAdGroupClientRequest: CreateAdGroupRequest = {\n name: adGroupCreateInput.name,\n state: AdGroupState.Active,\n campaignId: adCampaignEntity!.campaignId,\n baseBid: {\n currencyCode: currencyCode,\n amount: adGroupCreateInput.baseBid,\n },\n maxBid: {\n currencyCode: currencyCode,\n amount: adGroupCreateInput.maxBid,\n },\n dailyBudget: {\n currencyCode: currencyCode,\n amount: adGroupCreateInput.dailyBudget,\n },\n bidModifiers: [],\n };\n\n const bidModifierValue: CreateAdGroupBidModifierValue = {\n isManaged: false,\n value: 1.0,\n };\n\n const baseKey: AdGroupBidModifierKey = {\n topLevelCategoryId: null,\n leafCategoryId: null,\n venueId: null,\n eventId: null,\n ticketClassId: null,\n sectionId: null,\n rowId: null,\n externalId: null,\n };\n\n // Add specific bid modifier, based on hierarchy\n if (adGroupCreateInput.listing) {\n createAdGroupClientRequest.bidModifiers.push({\n key: {\n ...baseKey,\n eventId: adGroupCreateInput.event!.event.viagId,\n externalId: adGroupCreateInput.listing.idOnMkp!,\n },\n value: bidModifierValue,\n });\n } else if (adGroupCreateInput.seating) {\n createAdGroupClientRequest.bidModifiers.push({\n key: {\n ...baseKey,\n eventId: adGroupCreateInput.event!.event.viagId,\n sectionId: adGroupCreateInput.seating.sectionId,\n },\n value: bidModifierValue,\n });\n } else if (adGroupCreateInput.ticketClass) {\n createAdGroupClientRequest.bidModifiers.push({\n key: {\n ...baseKey,\n eventId: adGroupCreateInput.event!.event.viagId,\n ticketClassId: adGroupCreateInput.ticketClass.id,\n },\n value: bidModifierValue,\n });\n } else if (adGroupCreateInput.event) {\n createAdGroupClientRequest.bidModifiers.push({\n key: {\n ...baseKey,\n eventId: adGroupCreateInput.event!.event.viagId!,\n },\n value: bidModifierValue,\n });\n } else if (adGroupCreateInput.venue) {\n createAdGroupClientRequest.bidModifiers.push({\n key: {\n ...baseKey,\n venueId: adGroupCreateInput.venue.viagId,\n },\n value: bidModifierValue,\n });\n } else if (adGroupCreateInput.performer) {\n createAdGroupClientRequest.bidModifiers.push({\n key: {\n ...baseKey,\n leafCategoryId: adGroupCreateInput.performer.viagId,\n },\n value: bidModifierValue,\n });\n } else if (adGroupCreateInput.genreId) {\n createAdGroupClientRequest.bidModifiers.push({\n key: {\n ...baseKey,\n topLevelCategoryId: adGroupCreateInput.genreId,\n },\n value: bidModifierValue,\n });\n }\n const response = await client.createAdGroup(\n createAdGroupClientRequest\n );\n\n if (response.success) {\n await refreshData(adCampaignEntity.campaignId, undefined);\n } else {\n const errorMessage = 'Failed to create Ad Group';\n\n showErrorDialog(\n 'CampaignManagerClient.createAdGroup',\n { message: errorMessage, status: 500 },\n {\n trackErrorData: adGroupCreateInput,\n }\n );\n return;\n }\n\n closeModal(true);\n },\n (error) => {\n showErrorDialog('CampaignManagerClient.createAdGroup', error, {\n trackErrorData: adGroupCreateInput,\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n adCampaignEntity,\n closeModal,\n refreshData,\n showErrorDialog,\n ]\n );\n\n const hasChanges = useCallback(\n (form: AdGroupCreateInput) => {\n return (\n !isEqual(formState.defaultValues?.name, form.name) ||\n !isEqual(formState.defaultValues?.baseBid, form.baseBid) ||\n !isEqual(formState.defaultValues?.maxBid, form.maxBid) ||\n !isEqual(formState.defaultValues?.dailyBudget, form.dailyBudget) ||\n !isEqual(formState.defaultValues?.genreId, form.genreId) ||\n !isEqual(formState.defaultValues?.performer, form.performer) ||\n !isEqual(formState.defaultValues?.venue, form.venue) ||\n !isEqual(formState.defaultValues?.event, form.event) ||\n !isEqual(formState.defaultValues?.ticketClass, form.ticketClass) ||\n !isEqual(formState.defaultValues?.seating, form.seating) ||\n !isEqual(formState.defaultValues?.listing, form.listing)\n );\n },\n [\n formState.defaultValues?.name,\n formState.defaultValues?.baseBid,\n formState.defaultValues?.maxBid,\n formState.defaultValues?.dailyBudget,\n formState.defaultValues?.genreId,\n formState.defaultValues?.performer,\n formState.defaultValues?.venue,\n formState.defaultValues?.event,\n formState.defaultValues?.ticketClass,\n formState.defaultValues?.seating,\n formState.defaultValues?.listing,\n ]\n );\n\n const requiredMsg = useContent(ContentId.Required);\n const maxBidLessThanBaseBidMsg = useContent(\n ContentId.MaxBidLessThanBaseBidMsg\n );\n const dailyBudgetLessThanMaxBidMsg = useContent(\n ContentId.DailyBudgetLessThanMaxBidMsg\n );\n\n const validateForm = useCallback(() => {\n let hasErrors = false;\n\n clearErrors('name');\n if (!curFormValues.name) {\n setError('name', { message: requiredMsg }, { shouldFocus: true });\n hasErrors = true;\n }\n\n clearErrors('baseBid');\n if (!curFormValues.baseBid) {\n setError('baseBid', { message: requiredMsg }, { shouldFocus: true });\n hasErrors = true;\n }\n\n clearErrors('maxBid');\n if (!curFormValues.maxBid) {\n setError('maxBid', { message: requiredMsg }, { shouldFocus: true });\n hasErrors = true;\n }\n\n if (curFormValues.maxBid < curFormValues.baseBid) {\n setError(\n 'maxBid',\n { message: maxBidLessThanBaseBidMsg },\n { shouldFocus: true }\n );\n hasErrors = true;\n }\n\n clearErrors('dailyBudget');\n if (!curFormValues.dailyBudget) {\n setError('dailyBudget', { message: requiredMsg }, { shouldFocus: true });\n hasErrors = true;\n }\n\n if (curFormValues.dailyBudget < curFormValues.maxBid) {\n setError(\n 'dailyBudget',\n { message: dailyBudgetLessThanMaxBidMsg },\n { shouldFocus: true }\n );\n hasErrors = true;\n }\n\n // Require at least genre to be specified\n clearErrors('genreId');\n if (!curFormValues.genreId) {\n setError('genreId', { message: requiredMsg }, { shouldFocus: true });\n hasErrors = true;\n }\n\n return !hasErrors;\n }, [\n clearErrors,\n curFormValues.baseBid,\n curFormValues.dailyBudget,\n curFormValues.genreId,\n curFormValues.maxBid,\n curFormValues.name,\n dailyBudgetLessThanMaxBidMsg,\n maxBidLessThanBaseBidMsg,\n requiredMsg,\n setError,\n ]);\n\n const onSubmitHandler = useCallback(() => {\n if (!hasChanges(curFormValues)) return;\n\n if (!validateForm()) {\n return;\n }\n\n handleSubmit(onSubmit)();\n }, [hasChanges, curFormValues, validateForm, handleSubmit, onSubmit]);\n\n const formHasChanges = hasChanges(curFormValues);\n\n return (\n <>\n \n }\n />\n \n\n \n
    \n \n \n \n
    \n
    \n\n \n \n \n \n \n \n );\n}\n\nexport const AdGroupCreateFormBody = () => {\n const { setValue, watch, formState, clearErrors } =\n useFormContext();\n\n const namePlaceholder = useContent(ContentId.EnterAdGroupName);\n\n const { getUiCurrency } = useLocalizationContext();\n const { loginContext } = useAppContext();\n\n const uiCurrency = getUiCurrency(\n loginContext?.user?.activeAccount?.currencyCode\n );\n\n const name = watch('name');\n const baseBid = watch('baseBid');\n const maxBid = watch('maxBid');\n const dailyBudget = watch('dailyBudget');\n\n const setName = useCallback(\n (name: string) => {\n clearErrors('name');\n setValue('name', name);\n },\n [clearErrors, setValue]\n );\n\n const setBaseBid = useCallback(\n (baseBid: number) => {\n if (baseBid >= 0 && baseBid <= Number.MAX_VALUE) {\n clearErrors('baseBid');\n setValue('baseBid', baseBid);\n }\n },\n [clearErrors, setValue]\n );\n\n const setMaxBid = useCallback(\n (maxBid: number) => {\n if (maxBid >= 0 && maxBid <= Number.MAX_VALUE) {\n clearErrors('maxBid');\n setValue('maxBid', maxBid);\n }\n },\n [clearErrors, setValue]\n );\n\n const setDailyBudget = useCallback(\n (dailyBudget: number) => {\n if (dailyBudget >= 0 && dailyBudget <= Number.MAX_VALUE) {\n clearErrors('dailyBudget');\n setValue('dailyBudget', dailyBudget);\n }\n },\n [clearErrors, setValue]\n );\n\n return (\n <>\n \n }\n >\n {\n setName(e.target.value);\n }}\n />\n \n \n \n \n }\n >\n {\n const v = parseFloat(e.target.value) || 0;\n setBaseBid(v);\n }}\n />\n \n \n \n }\n >\n {\n const v = parseFloat(e.target.value) || 0;\n setMaxBid(v);\n }}\n />\n \n \n \n }\n >\n {\n const v = parseFloat(e.target.value) || 0;\n setDailyBudget(v);\n }}\n />\n \n \n \n );\n};\n\nexport const AdGroupCreateFormHierarchy = () => {\n const { setValue, watch, clearErrors, formState } =\n useFormContext();\n\n const genreId = watch('genreId');\n const performer = watch('performer');\n const venue = watch('venue');\n const event = watch('event');\n const ticketClass = watch('ticketClass');\n const seating = watch('seating');\n const listing = watch('listing');\n\n const { data: catalogData } = useAdPlatformCatalogDataContext();\n\n const onSelectGenre = (genreId?: number, clearChildren = true): void => {\n clearErrors('genreId');\n setValue('genreId', genreId);\n\n if (clearChildren) {\n setValue('performer', undefined);\n setValue('venue', undefined);\n setValue('event', undefined);\n setValue('ticketClass', undefined);\n setValue('seating', undefined);\n setValue('listing', undefined);\n }\n };\n\n const onSelectPerformer = (\n performer: Performer | null | undefined,\n clearChildren = true\n ): void => {\n clearErrors('performer');\n setValue('performer', performer);\n\n if (performer && performer.categ?.length > 0 && genreId === undefined) {\n const genreId = getTopLevelCategoryId(performer.categ[0]);\n onSelectGenre(genreId, false);\n }\n\n if (clearChildren) {\n setValue('venue', undefined);\n setValue('event', undefined);\n setValue('ticketClass', undefined);\n setValue('seating', undefined);\n setValue('listing', undefined);\n }\n };\n\n const onSelectVenue = (\n venue: Venue | null | undefined,\n clearChildren = true\n ): void => {\n clearErrors('venue');\n setValue('venue', venue);\n\n if (clearChildren) {\n setValue('event', undefined);\n setValue('ticketClass', undefined);\n setValue('seating', undefined);\n setValue('listing', undefined);\n }\n };\n\n const onSelectEvent = (\n event: EventWithData | null | undefined,\n clearChildren = true\n ): void => {\n clearErrors('event');\n setValue('event', event);\n\n if (clearChildren) {\n setValue('ticketClass', undefined);\n setValue('seating', undefined);\n setValue('listing', undefined);\n }\n\n // TODO: Also handle onSelectVenue() when we enable this\n\n if (catalogData && event && performer === undefined) {\n const { performer: performerForEvent } = getPerformerAndVenueForEvent(\n event.event,\n catalogData\n );\n\n if (performerForEvent) {\n onSelectPerformer(performerForEvent, false);\n }\n }\n };\n\n const onSelectTicketClass = (\n ticketClass: TicketClassInfo | null | undefined,\n clearChildren = true\n ): void => {\n clearErrors('ticketClass');\n setValue('ticketClass', ticketClass);\n\n if (clearChildren) {\n setValue('seating', undefined);\n setValue('listing', undefined);\n }\n };\n\n const onSelectSeating = (\n seating: Seating | null | undefined,\n parentTicketClass: TicketClassInfo | null | undefined,\n clearChildren = true\n ): void => {\n clearErrors('seating');\n setValue('seating', seating);\n\n if (ticketClass === undefined) {\n onSelectTicketClass(parentTicketClass, false);\n }\n\n if (clearChildren) {\n setValue('listing', undefined);\n }\n };\n\n const onSelectListing = (\n listing: Listing | null | undefined,\n parentSeating: Seating | null | undefined,\n parentTicketClass: TicketClassInfo | null | undefined\n ): void => {\n clearErrors('listing');\n setValue('listing', listing);\n\n if (seating === undefined) {\n onSelectSeating(parentSeating, parentTicketClass, false);\n }\n };\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n );\n};\n","import styled from 'styled-components/macro';\n\nexport const AdGroupsToolbarDiv = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid ${(props) => props.theme.colors.borderPrimary};\n padding: ${(props) => props.theme.spacing(2, 4, 2, 3)};\n\n ${({ theme: { media, spacing } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `padding: ${spacing(2, 8, 2, 6)};`\n )}`}\n\n .add-adGroup {\n white-space: nowrap;\n width: fit-content;\n }\n`;\n\nexport const FilterBarLeftSide = styled.div`\n display: flex;\n flex-grow: 1;\n align-items: center;\n gap: 8px;\n\n > div {\n flex-grow: 1;\n }\n`;\n\nexport const FilterBarRightSide = styled.div`\n display: flex;\n align-items: center;\n padding-inline-start: ${(props) => props.theme.spacing(2)};\n\n ${({ theme: { media, spacing } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `padding-inline-start: ${spacing(4)};`\n )}`}\n`;\n","import { MouseEvent, useContext } from 'react';\nimport { BackSection } from 'src/components/common/BackSection';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { Button } from 'src/core/ui';\nimport { AdGroupCreateModal } from 'src/modals/AdGroupCreate/AdGroupCreate';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './AdGroupsToolbar.css';\nimport {\n AdGroupsToolbarDiv,\n FilterBarLeftSide,\n FilterBarRightSide,\n} from './AdGroupsToolbar.styled';\n\nexport type AdGroupsToolbarType = {\n disabled?: boolean;\n onColumnSettingButtonClickHandler?: (\n e: MouseEvent\n ) => void;\n};\n\nexport function AdGroupsToolbar({\n returnUrl,\n}: {\n returnUrl: string | undefined;\n}) {\n const { setModal } = useContext(ModalContext);\n\n return (\n \n \n {returnUrl && }\n \n \n setModal(AdGroupCreateModal)}\n >\n \n \n \n \n );\n}\n","import { useMemo } from 'react';\nimport { useLocation, useSearchParams } from 'react-router-dom';\nimport { AdGroupsFlattenedView } from 'src/components/AdGroupsFlattenedView/AdGroupsFlattenedView';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { AdCampaignIdProvider } from 'src/contexts/AdCampaignIdContext/AdCampaignIdContext';\nimport { AdCampaignsDataContextProvider } from 'src/contexts/AdCampaignsDataContext/AdCampaignsDataContext';\nimport {\n AdGroupsDataContextProvider,\n useAdGroupsDataContext,\n} from 'src/contexts/AdGroupsDataContext/AdGroupsDataContext';\nimport {\n AdPlatformCatalogDataContextProvider,\n useAdPlatformCatalogDataContext,\n} from 'src/contexts/AdPlatformCatalogDataContext';\nimport { AdPlatformReportingContextProvider } from 'src/contexts/AdPlatformReportingContext/AdPlatformReportingContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { SellerUserSettingsProvider } from 'src/contexts/SellerUserSettingsContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { SearchSolidIcon } from 'src/svgs/Viagogo';\nimport { AdCampaignQueryParam } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { removeDeepLinkUrlPartsFromRelativeUrl } from 'src/utils/deepLinkUtils';\nimport { SomethingWentWrong } from 'src/views';\nimport { TransactionAggType, UserSetting } from 'src/WebApiController';\n\nimport { getDefaultReturnUrl } from '../InventoryEvent/constants';\nimport { MainRoute } from '../MainRoute';\nimport { AdGroupsToolbar } from '../SponsoredListings/AdGroupsToolbar/AdGroupsToolbar';\n\nconst SPONSOREDLISTINGS_USER_SETTINGS: UserSetting[] = [];\n\nexport const AdCampaign = () => {\n const [searchParams] = useSearchParams();\n const adCampaignId = searchParams.get(AdCampaignQueryParam);\n\n if (!adCampaignId) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport const AdGroupsContent = ({ adCampaignId }: { adCampaignId: string }) => {\n const location = useLocation();\n\n const returnUrl = useMemo(() => {\n const relativeUrl =\n (location.state as { returnUrl?: string })?.returnUrl ||\n getDefaultReturnUrl(adCampaignId);\n\n return removeDeepLinkUrlPartsFromRelativeUrl(relativeUrl, [\n AdCampaignQueryParam,\n ]);\n }, [adCampaignId, location.state]);\n\n const {\n adGroupsDataQuery,\n adGroupsData,\n errorInfo: errorInfoAdGroups,\n } = useAdGroupsDataContext();\n\n const { errorInfo: errorInfoCatalog } = useAdPlatformCatalogDataContext();\n\n const errorInfo = errorInfoAdGroups ?? errorInfoCatalog;\n\n return (\n \n \n \n \n {errorInfo == null &&\n (adGroupsDataQuery.isLoading ||\n adGroupsDataQuery.data == null) && }\n {errorInfo && (\n \n )\n }\n />\n )}\n {!(adGroupsDataQuery.isLoading || adGroupsDataQuery.data == null) &&\n !errorInfo && (\n <>\n \n {adGroupsData?.length ? (\n \n ) : (\n \n \n \n }\n >\n \n \n \n \n \n \n \n )}\n \n )}\n \n \n \n \n );\n};\n","import clsx from 'clsx';\nimport { collapsableButton } from 'src/components/common/CollapsableContent/ExpandCollapsableContentButton.css';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\n\ninterface ExpandCollapsableContentButton {\n onClick: () => void;\n className?: string;\n}\n\nexport const ExpandCollapsableContentButton = ({\n onClick,\n className,\n}: ExpandCollapsableContentButton) => {\n return (\n \n \n \n );\n};\n","import clsx from 'clsx';\nimport {\n MouseEvent,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { useToggle } from 'react-use';\nimport { ExpandCollapsableContentButton } from 'src/components/common/CollapsableContent/ExpandCollapsableContentButton';\nimport { collapsedRow } from 'src/components/Events/EventListing/InventoryEventListing/InventoryFlattenedView.css';\nimport { AdGroupsDataContext } from 'src/contexts/AdGroupsDataContext/AdGroupsDataContext';\nimport { useAdPlatformCatalogDataContext } from 'src/contexts/AdPlatformCatalogDataContext';\nimport { useCollapsableViewContext } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { InputPriceFocusProvider } from 'src/contexts/InputPriceFocusContext/InputPriceFocusContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { LayoutIcon } from 'src/svgs';\nimport { ListingWithEvent } from 'src/tables/ListingTable/ListingTable.types';\nimport { ListingTableFlattened } from 'src/tables/ListingTable/ListingTableFlattened';\nimport { getTopLevelCategoryName } from 'src/utils/adGroupUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getEventPerformerVenue } from 'src/utils/eventWithDataUtils';\nimport { EventWithData, Listing } from 'src/WebApiController';\n\nimport * as styles from './AdGroupListingsFlattenedView.css';\n\ntype AdGroupListingsFlattenedViewProps = {\n before?: ReactNode;\n};\n\nexport const AdGroupListingsFlattenedView = ({\n before,\n}: AdGroupListingsFlattenedViewProps) => {\n const [isColumnModalOpen, toggleColumnModal] = useToggle(false);\n const [isLoading, setIsLoading] = useState(true);\n const { isCollapsedView, setIsCollapsedView } = useCollapsableViewContext();\n\n const { data: catalog } = useAdPlatformCatalogDataContext();\n\n const { adGroupsData } = useContext(AdGroupsDataContext);\n const adGroup = adGroupsData ? adGroupsData[0] : null;\n\n const onColumnSettingButtonClickHandler = (\n e: MouseEvent\n ) => {\n e.stopPropagation();\n if (!isColumnModalOpen) toggleColumnModal(true);\n };\n\n const getListingById = useCallback(\n (listingId: string) => {\n if (catalog == null) {\n return undefined;\n }\n return catalog.listingsByExternalId[listingId];\n },\n [catalog]\n );\n\n const getListingsForEvents = useCallback(\n (eventIds: number[]) => {\n if (catalog == null) {\n return undefined;\n }\n return Object.values(catalog.events).flatMap(\n (event) => event.entities.listings ?? []\n );\n },\n [catalog]\n );\n\n const listingExternalIdLookup = useCallback(\n (key: string) => {\n return getListingById(key);\n },\n [getListingById]\n );\n\n const venueMapLookup = useCallback(\n (eventId?: number) => {\n if (!catalog || !eventId) {\n return undefined;\n }\n return catalog.venueMapByEventId[eventId];\n },\n [catalog]\n );\n\n const resolveListings = useCallback(async () => {\n if (!adGroup || !catalog) {\n return undefined;\n }\n\n const listingsArray: Listing[] = [];\n\n // Get explicit listings\n const listingPromises = adGroup.bidModifiers\n .filter((b) => b.key.externalId != null)\n .map((b) => {\n const listing = listingExternalIdLookup(b.key.externalId!);\n if (listing) {\n listingsArray.push(listing);\n }\n });\n await Promise.all(listingPromises);\n\n // Get listings for ticket class\n const ticketClassPromises = adGroup.bidModifiers\n .filter((b) => b.key.ticketClassId != null && b.key.eventId != null)\n .map(async (b) => {\n const eventId = b.key.eventId!;\n const venueMap = venueMapLookup(eventId);\n const rows = venueMap?.sections\n .flatMap((section) => section.rows)\n .filter(\n (row) =>\n row?.tktClass?.id.toString() == b.key.ticketClassId?.toString()\n );\n\n const event = catalog?.events[eventId.toString()];\n if (event && rows) {\n const listings = getListingsForEvents([eventId]);\n const filteredListings = Object.values(listings ?? [])\n .flat()\n .filter((l) => rows.some((row) => l.seating.rowId == row.id));\n listingsArray.push(...filteredListings);\n }\n });\n await Promise.all(ticketClassPromises);\n\n // Get listings for section\n const sectionPromises = adGroup.bidModifiers\n .filter((b) => b.key.sectionId != null && b.key.eventId != null)\n .map(async (b) => {\n const eventId = b.key.eventId!;\n const venueMap = venueMapLookup(eventId);\n const sections = venueMap?.sections.filter(\n (section) => section.id.toString() == b.key.sectionId?.toString()\n );\n const event = catalog?.events[eventId.toString()];\n if (sections && event) {\n const listings = getListingsForEvents([eventId]);\n const filteredListings = Object.values(listings ?? [])\n .flat()\n .filter((l) =>\n sections.some((section) => l.seating.sectionId == section.id)\n );\n listingsArray.push(...filteredListings);\n }\n });\n await Promise.all(sectionPromises);\n\n // Get explicit events\n const explicitEvents = adGroup.bidModifiers\n .filter(\n (b) =>\n b.key.eventId != null &&\n b.key.sectionId == null &&\n b.key.ticketClassId == null &&\n b.key.externalId == null\n )\n .reduce((acc, b) => {\n const event = catalog?.events[b.key.eventId!];\n if (event) {\n acc.push(event);\n }\n return acc;\n }, []);\n\n // Get events for venue\n const eventsForVenues = adGroup.bidModifiers\n .filter((b) => b.key.venueId != null)\n .reduce((acc, b) => {\n const matchedEvents = Object.values(catalog?.events || {}).filter(\n (e) => e.event.venueId.toString() == b.key.venueId?.toString()\n );\n return acc.concat(matchedEvents);\n }, []);\n\n // Get events for performer\n const eventsForPerformer = adGroup.bidModifiers\n .filter((b) => b.key.leafCategoryId != null)\n .reduce((acc, b) => {\n const matchedEvents = Object.values(catalog?.events || {}).filter(\n (e) => e.event.perfId?.toString() == b.key.leafCategoryId?.toString()\n );\n return acc.concat(matchedEvents);\n }, []);\n\n // Get events for genre\n const eventsForGenre = adGroup.bidModifiers\n .filter((b) => b.key.topLevelCategoryId != null)\n .reduce((acc, b) => {\n const matchedEvents = Object.values(catalog?.events || {}).filter(\n (e) =>\n e.event.genre?.toString() ==\n getTopLevelCategoryName(b.key.topLevelCategoryId!)\n );\n return acc.concat(matchedEvents);\n }, []);\n\n // Concat all events\n const allEvents: Set = [\n explicitEvents,\n eventsForVenues,\n eventsForPerformer,\n eventsForGenre,\n ].reduce((set, events) => {\n events.forEach((event) => set.add(event));\n return set;\n }, new Set());\n\n // Retrieve listings for events\n const listingsMapForEvents = getListingsForEvents(\n [...allEvents]\n .map((event) => event.event.viagId)\n .filter(\n (viagId): viagId is number => viagId !== null && viagId !== undefined\n )\n );\n\n listingsArray.push(...Object.values(listingsMapForEvents ?? []).flat());\n\n return listingsArray\n ?.map((l) => {\n const { event, performer, venue } = getEventPerformerVenue(\n l.viagVirtualId,\n {\n ...catalog,\n viagIdToLatestIdLookup: {},\n posIdToViagIdLookup: {},\n }\n );\n if (event) {\n return {\n event: event.event,\n listing: l,\n performer,\n venue,\n eventWithData: event,\n };\n }\n\n return null;\n })\n .filter((l) => l != null)\n .map((l) => l!);\n }, [\n adGroup,\n catalog,\n getListingsForEvents,\n listingExternalIdLookup,\n venueMapLookup,\n ]);\n\n const [processedListings, setProcessedListings] = useState<\n (ListingWithEvent & { eventWithData: EventWithData })[]\n >([]);\n\n useEffect(() => {\n const processAdGroup = async () => {\n if (!adGroupsData || !catalog) {\n return [];\n }\n\n setIsLoading(true);\n const listings = await resolveListings();\n setProcessedListings(\n listings?.map((l) => ({\n event: l.event,\n performer: l.performer ?? undefined,\n venue: l.venue ?? undefined,\n eventWithData: l.eventWithData,\n })) ?? []\n );\n setIsLoading(false);\n };\n processAdGroup();\n }, [adGroupsData, catalog, resolveListings]);\n\n const { listingCount, ungroupedListingCount, listingGroupCount } =\n useMemo(() => {\n let listingCount = 0;\n let ungroupedListingCount = 0;\n let listingGroupCount = 0;\n\n (processedListings ?? []).forEach(({ eventWithData }) => {\n listingCount += eventWithData.counts.listCnt ?? 0;\n listingGroupCount += eventWithData.counts.listGrpCnt ?? 0;\n ungroupedListingCount += eventWithData.counts.ungrListCnt ?? 0;\n });\n\n return { listingCount, ungroupedListingCount, listingGroupCount };\n }, [processedListings]);\n\n return (\n \n \n {before}\n \n \n {isCollapsedView && (\n setIsCollapsedView(false)}\n />\n )}\n \n \n \n {isLoading ? (\n \n ) : (\n \n )}\n \n \n );\n};\n","import { useMemo } from 'react';\nimport { useLocation, useSearchParams } from 'react-router-dom';\nimport { AdGroupListingsFlattenedView } from 'src/components/AdGroupsFlattenedView/AdGroupListingsFlattenedView';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport {\n AdGroupsDataContextProvider,\n useAdGroupsDataContext,\n} from 'src/contexts/AdGroupsDataContext/AdGroupsDataContext';\nimport { AdPlatformCatalogDataContextProvider } from 'src/contexts/AdPlatformCatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalProvider } from 'src/contexts/ModalContext';\nimport { SellerUserSettingsProvider } from 'src/contexts/SellerUserSettingsContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { SearchSolidIcon } from 'src/svgs/Viagogo';\nimport {\n AdCampaignQueryParam,\n AdGroupListingsQueryParam,\n} from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { removeDeepLinkUrlPartsFromRelativeUrl } from 'src/utils/deepLinkUtils';\nimport { SomethingWentWrong } from 'src/views';\nimport { UserSetting } from 'src/WebApiController';\n\nimport { getDefaultReturnUrl } from '../InventoryEvent/constants';\nimport { MainRoute } from '../MainRoute';\nimport { AdGroupsToolbar } from '../SponsoredListings/AdGroupsToolbar/AdGroupsToolbar';\nimport * as styles from './AdGroupListings.css';\n\nconst SPONSOREDLISTINGS_USER_SETTINGS: UserSetting[] = [];\n\nexport const AdGroupListings = () => {\n const [searchParams] = useSearchParams();\n const adCampaignId = searchParams.get(AdCampaignQueryParam);\n const adGroupId = searchParams.get(AdGroupListingsQueryParam);\n\n const location = useLocation();\n\n const returnUrl = useMemo(() => {\n const relativeUrl =\n (location.state as { returnUrl?: string })?.returnUrl ||\n getDefaultReturnUrl(adGroupId);\n\n return removeDeepLinkUrlPartsFromRelativeUrl(relativeUrl, [\n AdGroupListingsQueryParam,\n ]);\n }, [adGroupId, location.state]);\n\n if (!adGroupId) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n
    \n \n
    \n \n
    \n
    \n
    \n \n );\n};\n\nexport const AdGroupListingsContent = ({\n adGroupId,\n}: {\n adGroupId: string;\n}) => {\n const { adGroupsDataQuery, adGroupsData, errorInfo } =\n useAdGroupsDataContext();\n\n return (\n
    \n {(adGroupsDataQuery.isLoading || adGroupsDataQuery.data == null) && (\n \n )}\n {errorInfo && (\n \n )\n }\n />\n )}\n {!(adGroupsDataQuery.isLoading || adGroupsDataQuery.data == null) &&\n !errorInfo && (\n <>\n {adGroupsData?.length ? (\n \n \n \n ) : (\n \n \n \n }\n >\n \n \n \n \n \n \n \n )}\n \n )}\n
    \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { AutoPoClient } from 'src/WebApiController';\n\nexport function useGetInboundEmailSellerGuidIds() {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n return useQuery({\n queryKey: [\n 'getInboundEmailSellerGuidIds',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return tryInvokeApi(\n () => {\n return new AutoPoClient(\n activeAccountWebClientConfig\n ).getInboundEmailSellerGuidIds();\n },\n (error) => {\n trackError('AutoPoClient.getInboundEmailSellerGuidIds', error);\n }\n );\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n });\n}\n","import { useState } from 'react';\nimport { CancelButton } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport * as Tooltip from 'src/core/ui';\nimport { useGetInboundEmailSellerGuidIds } from 'src/hooks/api/useGetInboundEmailSellerGuidIds';\nimport { CopyIcon } from 'src/svgs';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport AddMessageSourceIcon from '~icons/pos/addMessageSource';\n\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '../Modal';\nimport * as styles from './MessagesAddSourceModal.css';\n\nexport type MessagesAddSourceModalProps = {\n isOpen?: boolean;\n onClose?: () => void;\n};\n\nexport function MessagesAddSourceModal({\n isOpen,\n onClose,\n}: MessagesAddSourceModalProps) {\n const guidsQuery = useGetInboundEmailSellerGuidIds();\n const [showCopiedText, setShowCopiedText] = useState(false);\n return (\n \n \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n \n
    \n \n
    \n
      \n
    1. \n \n
    2. \n
    3. \n
      \n \n
      \n {guidsQuery.data?.map((id) => {\n const email = `${id}@ticketoutbox.com`;\n return (\n
      \n {email}\n \n {\n if (!open) {\n setShowCopiedText(false);\n }\n }}\n >\n \n
      \n {\n e.stopPropagation(); // stops the tooltip from disappearing on click\n\n navigator.clipboard.writeText(email);\n setShowCopiedText(true);\n }}\n />\n
      \n
      \n {\n e.preventDefault(); // stops the tooltip from disappearing on click\n }}\n >\n {showCopiedText ? (\n \n ) : (\n \n )}\n \n \n
      \n
      \n );\n })}\n
    4. \n
    5. \n \n
    6. \n
    \n
    \n
    \n \n \n \n
    \n );\n}\n","import { ReactNode } from 'react';\n\nimport { CountBadge } from '../CountBadge';\nimport { Stack } from '../Stack';\nimport * as styles from './Badge.css';\n\nexport function Badge({ children }: { children?: ReactNode }) {\n return
    {children}
    ;\n}\n\nexport function BadgeWithCounts({\n count,\n children,\n title,\n}: {\n count: number;\n children?: ReactNode;\n title?: string;\n}) {\n return (\n \n {children} \n \n );\n}\n","import { useNavigate } from 'react-router-dom';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ToolbarButton } from 'src/core/POS/ToolbarButton';\nimport { vars } from 'src/core/themes';\nimport { Badge } from 'src/core/ui/Badge';\nimport { ScrollableToolbar } from 'src/core/ui/ScrollableToolbar';\nimport { CalendarOutlineIcon, ChatIcon, MailIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport type EmailNavPageName =\n | 'inbox'\n | 'uncategorized'\n | 'recentlyCategorized';\n\nexport const EMAIL_NAV_PAGE_NAME_MAP: { [pageName in EmailNavPageName]: true } =\n {\n inbox: true,\n uncategorized: true,\n recentlyCategorized: true,\n };\n\ntype EmailNavToolbarProps = {\n pageName: EmailNavPageName;\n uncategorizedEmailsCount?: number | null;\n};\n\nexport function EmailNavToolbar({\n pageName,\n uncategorizedEmailsCount,\n}: EmailNavToolbarProps) {\n const navigate = useNavigate();\n return (\n \n navigate('/messages')}\n >\n \n \n \n \n \n navigate('/messages/uncategorized')}\n >\n \n \n \n \n {uncategorizedEmailsCount != null && (\n {uncategorizedEmailsCount}\n )}\n \n navigate('/messages/recently-categorized')}\n >\n \n \n \n \n \n \n );\n}\n","import { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ErrorIconMessage } from 'src/core/POS/ErrorIconMessage';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isMarketplaceActive } from 'src/utils/userUtils';\n\nimport { notificationContainer } from './AccountDisabledNotification.css';\n\nexport const AccountDisabledNotification = () => {\n const { loginContext } = useAppContext();\n const accountEnabledForBroadcast = useMemo(\n () =>\n Boolean(\n loginContext?.user?.activeAccount?.marketplaceSettings?.filter((m) =>\n isMarketplaceActive(m)\n )?.length\n ),\n [loginContext?.user?.activeAccount?.marketplaceSettings]\n );\n\n if (accountEnabledForBroadcast) {\n return null;\n }\n return (\n
    \n \n \n \n
    \n );\n};\n","import { useMemo } from 'react';\nimport { useContent } from 'src/contexts/ContentContext';\nimport {\n mapBrandNameToBackgroundcolor,\n mapBrandNameToTextcolor,\n} from 'src/utils/constants/colorMaps';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Marketplace } from 'src/WebApiController';\n\nimport { usePurchaseVendorSelector } from '../../Selectors/PurchaseVendorSelector/usePurchaseVendorSelector';\nimport * as styles from './MerchantColorBadge.css';\n\nexport const MerchantColorBadge = ({\n vendorId,\n name,\n}: {\n vendorId?: number | null;\n name?: Marketplace | string | null;\n}) => {\n const { availableVendors } = usePurchaseVendorSelector({});\n const vendor = useMemo(() => {\n if (vendorId == null) {\n return null;\n }\n\n return availableVendors[vendorId];\n }, [availableVendors, vendorId]);\n\n const directOfflineContent = useContent(ContentId.DirectOffline);\n\n const displayName = useMemo(() => {\n return vendor?.name ?? name ?? directOfflineContent;\n }, [directOfflineContent, name, vendor]);\n\n return (\n \n {displayName}\n \n );\n};\n","import { createContext, ReactNode, useCallback } from 'react';\nimport { useRef } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n PurchaseClient,\n PurchaseOrderDetails,\n SaleClient,\n SaleDetails,\n} from 'src/WebApiController';\n\nimport { useErrorBoundaryContext } from '../ErrorBoundaryContext';\n\ntype IConversationDataContext = {\n getPurchaseOrderDetails: (\n purchaseId: number\n ) => Promise;\n getSaleDetails: (saleId: number) => Promise;\n};\n\nexport const ConversationDataContext = createContext({\n getPurchaseOrderDetails: async () => null,\n getSaleDetails: async () => null,\n});\n\nexport const ConversationDataContextProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const purchaseLookup = useRef<\n Record\n >({});\n const getPurchaseOrderDetails = useCallback(\n async (purchaseId: number) => {\n let purchase = purchaseLookup.current[purchaseId];\n if (purchase == null) {\n purchase =\n (await tryInvokeApi(\n async () => {\n return await new PurchaseClient(\n activeAccountWebClientConfig\n ).getPurchaseOrderByPurchaseOrderId(purchaseId, true);\n },\n (error) => {\n trackError(\n 'ConversationDataContext.PurchaseClient.getPurchaseOrderByPurchaseOrderId',\n error,\n { purchaseId }\n );\n }\n )) ?? undefined;\n if (purchase != null) {\n purchaseLookup.current[purchaseId] = purchase;\n }\n }\n return purchase ?? null;\n },\n [activeAccountWebClientConfig, purchaseLookup, trackError]\n );\n\n const saleLookup = useRef>({});\n const getSaleDetails = useCallback(\n async (saleId: number) => {\n let sale = saleLookup.current[saleId];\n if (sale == null) {\n sale =\n (await tryInvokeApi(\n async () => {\n return await new SaleClient(\n activeAccountWebClientConfig\n ).getSaleBySaleId(saleId);\n },\n (error) => {\n trackError('SaleClient.getSaleBySaleId', error, { saleId });\n }\n )) ?? undefined;\n if (sale != null) {\n saleLookup.current[saleId] = sale;\n }\n }\n return sale ?? null;\n },\n [activeAccountWebClientConfig, saleLookup, trackError]\n );\n\n return (\n \n {children}\n \n );\n};\n","import clsx from 'clsx';\nimport { formatInTimeZone } from 'date-fns-tz';\nimport {\n ComponentProps,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport { MerchantColorBadge } from 'src/components/common/MerchantColorBadge';\nimport { useContent, useContentContext } from 'src/contexts/ContentContext';\nimport { ConversationDataContext } from 'src/contexts/ConversationDataContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { HorizontalTextList } from 'src/core/POS/HorizontalTextList';\nimport { vars } from 'src/core/themes';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { DotIcon } from 'src/svgs/DotIcon';\nimport { MailIcon } from 'src/svgs/MailIcon';\nimport { PurchaseIcon } from 'src/svgs/PurchaseIcon';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { formatDate } from 'src/utils/dateTimeUtils';\nimport { getEventPerformerVenue } from 'src/utils/eventWithDataUtils';\nimport { getListingNoteIcon } from 'src/utils/listingNotesUtils';\nimport {\n AutoPoInboundEmail,\n AutoPoInboundEmailClassificationType,\n Feature,\n ListingNote,\n Marketplace,\n SellerSupportCase,\n} from 'src/WebApiController';\n\nimport * as styles from './ConversationListItem.css';\n\n// TODO Probably this will be moved to mvc layer when integrating\nexport enum ConversationType {\n Purchase = 'Purchase',\n Sale = 'Sale',\n Transfer = 'Transfer',\n Private = 'Private',\n Junk = 'Junk',\n Uncategorized = 'Uncategorized',\n}\n\nconst EMAIL_CLASSIFICATION_TYPE_TO_CONVERSATION_TYPE: Record<\n AutoPoInboundEmailClassificationType,\n ConversationType\n> = {\n [AutoPoInboundEmailClassificationType.ExistingPurchaseOrder]:\n ConversationType.Purchase,\n [AutoPoInboundEmailClassificationType.NewPurchaseOrder]:\n ConversationType.Purchase,\n [AutoPoInboundEmailClassificationType.Junk]: ConversationType.Junk,\n [AutoPoInboundEmailClassificationType.OneTimePass]: ConversationType.Private,\n [AutoPoInboundEmailClassificationType.Password]: ConversationType.Private,\n [AutoPoInboundEmailClassificationType.TicketsAvailable]:\n ConversationType.Purchase,\n [AutoPoInboundEmailClassificationType.PurchaseCancelled]:\n ConversationType.Purchase,\n [AutoPoInboundEmailClassificationType.EventCancelled]:\n ConversationType.Purchase,\n [AutoPoInboundEmailClassificationType.EventPostponed]:\n ConversationType.Purchase,\n [AutoPoInboundEmailClassificationType.EnjoyTheEvent]:\n ConversationType.Purchase,\n [AutoPoInboundEmailClassificationType.TransferSent]:\n ConversationType.Transfer,\n [AutoPoInboundEmailClassificationType.TransferAccepted]:\n ConversationType.Transfer,\n [AutoPoInboundEmailClassificationType.TransferExpired]:\n ConversationType.Transfer,\n [AutoPoInboundEmailClassificationType.NewSale]: ConversationType.Sale,\n [AutoPoInboundEmailClassificationType.ConfirmationDeadline]:\n ConversationType.Sale,\n [AutoPoInboundEmailClassificationType.ShippingDeadline]:\n ConversationType.Sale,\n [AutoPoInboundEmailClassificationType.SaleCancelled]: ConversationType.Sale,\n [AutoPoInboundEmailClassificationType.OtherMarketplaceContact]:\n ConversationType.Sale,\n};\n\nexport const convertEmailClassificationTypeToConversationType = (\n classificationType?: AutoPoInboundEmailClassificationType | null\n) =>\n classificationType\n ? EMAIL_CLASSIFICATION_TYPE_TO_CONVERSATION_TYPE[classificationType]\n : ConversationType.Uncategorized;\n\nexport const convertConversationTypeToEmailClassificationTypes = (\n conversationTypes: ConversationType[]\n) => {\n const entries = Object.entries(\n EMAIL_CLASSIFICATION_TYPE_TO_CONVERSATION_TYPE\n );\n return entries\n .filter(([, type]) => conversationTypes.includes(type))\n .map(([key]) => key as AutoPoInboundEmailClassificationType);\n};\n\nexport type ConversationInfo = {\n vendorId?: number | null;\n merchantName?: string | null;\n title?: string | null;\n datetime?: Date | null;\n unread?: boolean | null;\n conversationType?: ConversationType;\n sellerSupportCase?: SellerSupportCase;\n inboundEmail?: AutoPoInboundEmail;\n onEmailClassified?: (inboundEmailId: number) => void;\n};\n\nexport type ConversationListItemProps = ConversationInfo &\n Omit, 'title' | 'content'> & {\n isActive: boolean;\n subtitle?: string | null;\n content?: string | null;\n listingNotes?: ListingNote[] | null;\n };\n\nexport function ConversationListItem({\n vendorId,\n merchantName,\n title,\n conversationType,\n datetime,\n unread,\n inboundEmail,\n sellerSupportCase,\n ...props\n}: ConversationListItemProps) {\n const { getPurchaseOrderDetails, getSaleDetails } = useContext(\n ConversationDataContext\n );\n const [subtitle, setSubtitle] = useState();\n const [content, setContent] = useState();\n const [listingNotes, setListingNotes] = useState();\n const [merchant, setMerchant] = useState(\n merchantName\n );\n\n const supportCaseIdContent = useContent(ContentId.SupportCaseId);\n const orderIdContent = useContent(ContentId.ExternalPurchaseId);\n const sectionContent = useContent(ContentId.Section);\n const rowContent = useContent(ContentId.Row);\n const seatsContent = useContent(ContentId.Seats);\n const ticketsContent = useContent(ContentId.Tickets);\n\n const fetchDisplayContent = useCallback(async () => {\n let merchant, content, subtitle;\n\n if (conversationType === ConversationType.Purchase) {\n if (inboundEmail?.purchaseOrderId) {\n const purchaseOrder = await getPurchaseOrderDetails(\n inboundEmail.purchaseOrderId\n );\n if (purchaseOrder) {\n subtitle = `${orderIdContent}: ${purchaseOrder.vendOrdId}`;\n merchant = purchaseOrder.vendor?.name;\n\n const catalog = purchaseOrder.miniCatalog;\n\n // Example of formatted content using the following code:\n // Section {S}, Row {R}, Seats {F}-{T} • {N} Tickets\n // {Venue}, {City} • {EventDate}\n content = '';\n const tg = purchaseOrder.ticketGroups[0];\n if (tg) {\n const { event, performer, venue } = getEventPerformerVenue(\n tg.viagVirtualId,\n catalog\n );\n\n content += `${sectionContent} ${tg.seating.section}`;\n if (tg.seating.row) {\n content += `, ${rowContent} ${tg.seating.row}`;\n }\n if (tg.seating.seatFr) {\n content += `, ${seatsContent} ${tg.seating.seatFr}`;\n if (tg.seating.seatTo) {\n content += `-${tg.seating.seatTo}`;\n }\n }\n content += ` • ${tg.ticketCnt} ${ticketsContent}`;\n if (venue?.name || event?.event?.dates.start) {\n content += '\\n';\n if (venue?.name) {\n content += `${venue.name}`;\n if (venue?.city) {\n content += `, ${venue.city}`;\n }\n if (event?.event?.dates.start) {\n content += ' • ';\n }\n }\n if (event?.event?.dates.start) {\n content += formatDate(event.event.dates.start);\n }\n }\n setListingNotes(tg.seatTraits);\n }\n }\n }\n } else if (conversationType === ConversationType.Sale) {\n if (inboundEmail?.saleId) {\n const sale = await getSaleDetails(inboundEmail.saleId);\n if (sale) {\n const { idOnMkp, id, mkp, seating, ticketCnt } = sale;\n\n subtitle = `${orderIdContent}: ${idOnMkp ?? id}`;\n merchant = mkp;\n content = [\n [\n `${sectionContent} ${seating.section}`,\n seating.row ? `${rowContent} ${seating.row}` : undefined,\n seating.seatFr\n ? `${seatsContent} ${seating.seatFr}` +\n (seating.seatTo ? `-${seating.seatTo}` : '')\n : undefined,\n ]\n .filter((s) => Boolean(s))\n .join(', '),\n `${ticketCnt} ${ticketsContent}`,\n ]\n .filter((s) => Boolean(s))\n .join(' • ');\n }\n }\n } else if (sellerSupportCase != null) {\n merchant = Marketplace.StubHub;\n subtitle = `${supportCaseIdContent}: ${sellerSupportCase?.sellerSupportCaseId}`;\n }\n\n setSubtitle(subtitle);\n setMerchant(merchant);\n setContent(content);\n }, [\n conversationType,\n getPurchaseOrderDetails,\n getSaleDetails,\n inboundEmail?.purchaseOrderId,\n inboundEmail?.saleId,\n orderIdContent,\n rowContent,\n seatsContent,\n sectionContent,\n sellerSupportCase,\n supportCaseIdContent,\n ticketsContent,\n ]);\n\n useEffect(() => {\n fetchDisplayContent();\n }, [fetchDisplayContent, inboundEmail, sellerSupportCase]);\n\n return (\n \n );\n}\n\nfunction ConversationListItemDisplay({\n vendorId,\n merchantName,\n title,\n subtitle,\n content,\n datetime,\n unread,\n listingNotes,\n conversationType,\n isActive = false,\n sellerSupportCase,\n ...props\n}: ConversationListItemProps) {\n const contentContext = useContentContext();\n const hasListingNotesAdditionalInfoFeature = useUserHasFeature(\n Feature.ListingNotesAdditionalInfo\n );\n\n const { timeZone } = useSiteTimezoneContext();\n return (\n \n
    \n {sellerSupportCase != null && (\n
    \n \n
    \n )}\n {conversationType === ConversationType.Purchase && (\n
    \n \n
    \n )}\n
    \n
    \n
    \n
    \n {(vendorId || merchantName) && (\n \n )}\n
    \n
    \n {datetime && (\n
    \n {formatInTimeZone(datetime, timeZone, 'LLL dd yyyy, h:mm a')}\n
    \n )}\n
    \n {unread === true && (\n \n )}\n
    \n
    \n
    \n\n {title &&
    {title}
    }\n {subtitle &&
    {subtitle}
    }\n {content &&
    {content}
    }\n {listingNotes?.length ? (\n n.listingNoteText)}\n maxTextsToShowOnHover={listingNotes.length}\n />\n ) : null}\n
    \n \n );\n}\n","import { DownloadButton } from 'src/components/Buttons/DownloadButton';\nimport { FormatContent } from 'src/contexts/ContentContext';\nimport { shared, vars } from 'src/core/themes';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { stringToUtcDate } from 'src/utils/dateTimeUtils';\nimport { getCurrentLanguage } from 'src/utils/localeUtils';\nimport { AutoPoInboundEmailThreadEmail } from 'src/WebApiController';\n\nimport { EmailRenderer } from '../EmailBody';\nimport * as styles from './EmailThreadItem.css';\n\nconst dateFormatter = new Intl.DateTimeFormat(getCurrentLanguage(), {\n dateStyle: 'long',\n timeStyle: 'short',\n});\n\nexport function EmailThreadItem({\n email: {\n subject,\n receiveDate,\n fromEmailAddress,\n toEmailAddress,\n htmlBody,\n textBody,\n attachments,\n },\n}: {\n email: AutoPoInboundEmailThreadEmail;\n}) {\n return (\n
    \n
    \n
    \n
    {subject && subject}
    \n {receiveDate && (\n
    \n {dateFormatter.format(stringToUtcDate(receiveDate))}\n
    \n )}\n
    \n
    \n
    \n {fromEmailAddress && (\n \n {fromEmailAddress}}\n />\n \n )}\n {fromEmailAddress && toEmailAddress &&
    }\n {toEmailAddress && (\n \n {toEmailAddress}}\n />\n \n )}\n
    \n
    \n
    \n {attachments && attachments.length > 0 && (\n
    \n {attachments.map((attachment, index) => (\n
    \n window.open(attachment.downloadUri, '_blank')}\n />\n
    \n ))}\n
    \n )}\n {(htmlBody || textBody) && (\n
    \n \n
    \n )}\n
    \n );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport {\n ConversationType,\n convertEmailClassificationTypeToConversationType,\n} from 'src/components/Messages/ConversationSidePanel/ConversationListItem/ConversationListItem';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { SomethingWentWrong } from 'src/views';\nimport {\n AutoPoClient,\n AutoPoInboundEmailClassificationType,\n} from 'src/WebApiController';\n\nimport * as styles from './EmailThread.css';\nimport { EmailThreadItem } from './EmailThreadItem';\n\nexport type EmailThreadRequest = {\n inboundEmailId: number;\n purchaseOrderId: number | null;\n saleId: number | null;\n toEmailAddress: string | null;\n classificationType: AutoPoInboundEmailClassificationType | null;\n};\n\nexport type EmailThreadProps = EmailThreadRequest & {\n // other UI only props here\n};\n\nexport function EmailThread(request: EmailThreadProps) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const threadQuery = useQuery({\n queryKey: ['emailThread', request],\n queryFn() {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return tryInvokeApi(\n async () => {\n const {\n inboundEmailId,\n purchaseOrderId,\n saleId,\n toEmailAddress,\n classificationType,\n } = request;\n if (purchaseOrderId) {\n return new AutoPoClient(\n activeAccountWebClientConfig\n ).getPurchaseInboundEmailThread(purchaseOrderId, true);\n }\n if (saleId) {\n return new AutoPoClient(\n activeAccountWebClientConfig\n ).getSaleInboundEmailThread(saleId, true);\n }\n if (\n classificationType &&\n convertEmailClassificationTypeToConversationType(\n classificationType\n ) === ConversationType.Private &&\n toEmailAddress\n ) {\n return new AutoPoClient(\n activeAccountWebClientConfig\n ).getPrivateInboundEmailThread(\n toEmailAddress,\n classificationType,\n true\n );\n }\n return new AutoPoClient(\n activeAccountWebClientConfig\n ).getSingleInboundEmailThread(inboundEmailId);\n },\n (error) => {\n trackError('AutoPoClient.getSingleInboundEmailThread', error, {\n request: JSON.stringify(request),\n });\n }\n );\n },\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n });\n\n if (threadQuery.isLoading) {\n return ;\n }\n if (threadQuery.isError) {\n return ; // TODO\n }\n return (\n
    \n {threadQuery.data?.map((email) => {\n return (\n
    \n \n
    \n );\n })}\n
    \n );\n}\n","import { createContext, ReactNode, useCallback, useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { SellerAccountClient, SellerUser } from 'src/WebApiController';\n\ntype ISellerSupportCaseDataContext = {\n getSellerUserDetails: (sellerUserId: string) => Promise;\n};\n\nexport const SellerSupportCaseDataContext =\n createContext({\n getSellerUserDetails: () => Promise.resolve(null),\n });\n\nexport const SellerSupportCaseDataContextProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const userDetailsLookup: Record = useMemo(() => {\n return {};\n }, []);\n\n const getSellerUserDetails = useCallback(\n async (sellerUserId: string) => {\n if (sellerUserId == null) {\n return null;\n }\n\n if (!Object.keys(userDetailsLookup).includes(sellerUserId)) {\n const userDetails = await tryInvokeApi(\n async () => {\n return await new SellerAccountClient(\n activeAccountWebClientConfig\n ).getSellerUser(sellerUserId);\n },\n (error) => {\n trackError('SellerAccountClient.getSellerUser', error);\n }\n );\n if (userDetails != null) {\n userDetailsLookup[sellerUserId] = userDetails;\n }\n }\n return userDetailsLookup[sellerUserId];\n },\n [activeAccountWebClientConfig, trackError, userDetailsLookup]\n );\n\n return (\n \n {children}\n \n );\n};\n","import clsx from 'clsx';\nimport { useCallback, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { DetailSection, SectionContent } from 'src/modals/common';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { downloadFile } from 'src/utils/fileUtils';\nimport { getFormattedBytesSize } from 'src/utils/format';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n SellerSupportCaseAttachmentRequest,\n SellerSupportCaseClient,\n} from 'src/WebApiController';\n\nimport * as styles from './AttachmentsPanel.css';\n\nexport type AttachmentInfo = {\n attachmentId: string;\n name: string;\n size?: number;\n content?: string;\n contentType?: string;\n};\n\nexport type AttachmentsPanelProps = {\n attachments: AttachmentInfo[];\n showDelete?: boolean;\n onDeleteClicked?: (attachment: AttachmentInfo) => void;\n isDownloadable?: boolean;\n};\n\nexport const AttachmentDisplay = ({\n attachmentInfo,\n showDelete,\n onDeleteClicked,\n isDownloadable,\n}: {\n attachmentInfo: AttachmentInfo;\n showDelete: boolean;\n onDeleteClicked?: (attachment: AttachmentInfo) => void;\n isDownloadable: boolean | undefined;\n}) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const [isLoading, setIsLoading] = useState(false);\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const handleDownloadFile = useCallback(async () => {\n setIsLoading(true);\n const downloadedFiles = await tryInvokeApi(\n async () => {\n const requests: SellerSupportCaseAttachmentRequest[] = [\n {\n id: attachmentInfo.attachmentId,\n contentType: attachmentInfo.contentType ?? '',\n name: attachmentInfo.name,\n },\n ];\n return await new SellerSupportCaseClient(\n activeAccountWebClientConfig\n ).retrieveSellerSupportCaseNoteAttachments(requests, true);\n },\n (error) => {\n showErrorDialog('retrieveSellerSupportCaseNoteAttachments', error);\n }\n );\n\n if (downloadedFiles) {\n if (downloadedFiles.length > 0 && downloadedFiles[0].content != null) {\n const fileToDownload = downloadedFiles[0];\n downloadFile(\n fileToDownload.name,\n fileToDownload.content ?? '',\n fileToDownload.contentType,\n true\n );\n }\n }\n\n setIsLoading(false);\n }, [\n activeAccountWebClientConfig,\n attachmentInfo.attachmentId,\n attachmentInfo.contentType,\n attachmentInfo.name,\n showErrorDialog,\n ]);\n\n return (\n {\n if (!isLoading && isDownloadable && attachmentInfo.size) {\n handleDownloadFile();\n }\n }}\n >\n {isLoading ? (\n \n ) : (\n <>\n
    \n
    {attachmentInfo.name}
    \n {attachmentInfo.size != null && (\n
    \n {getFormattedBytesSize(attachmentInfo.size, 2, false)}\n
    \n )}\n
    \n <>\n {showDelete && (\n
    \n onDeleteClicked?.(attachmentInfo)}\n />\n
    \n )}\n \n \n )}\n \n );\n};\n\nexport const AttachmentsPanel = ({\n attachments,\n showDelete,\n onDeleteClicked,\n isDownloadable,\n}: AttachmentsPanelProps) => {\n const isMobile = useMatchMedia('mobile');\n\n return (\n }>\n \n {attachments.map((a: AttachmentInfo) => {\n return (\n
    \n 0}\n />\n
    \n );\n })}\n
    \n
    \n );\n};\n","import { formatInTimeZone } from 'date-fns-tz';\nimport {\n ComponentProps,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { SellerSupportCaseDataContext } from 'src/contexts/SellerSupportCaseDataContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n AttachmentResource,\n SellerSupportCaseAttachmentRequest,\n SellerSupportCaseClient,\n SellerUser,\n} from 'src/WebApiController';\n\nimport { AttachmentInfo, AttachmentsPanel } from '../AttachmentsPanel';\nimport * as styles from './SupportCaseNoteDisplay.css';\n\nexport type SupportCaseNoteDisplayProps = {\n createdByUserId?: string | null;\n noteDate?: Date;\n noteContent?: string | null;\n attachments?: AttachmentResource[] | null;\n} & ComponentProps<'div'>;\n\nexport const SupportCaseNoteDisplay = ({\n createdByUserId,\n noteDate,\n noteContent,\n attachments,\n ...props\n}: SupportCaseNoteDisplayProps) => {\n const { timeZone } = useSiteTimezoneContext();\n const { getSellerUserDetails } = useContext(SellerSupportCaseDataContext);\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const [userDetails, setUserDetails] = useState();\n const [attachmentsInfo, setAttachmentsInfo] = useState([]);\n\n const getUserDetails = useCallback(\n async (sellerUserId: string | null | undefined) => {\n const details =\n sellerUserId && getSellerUserDetails\n ? await getSellerUserDetails(sellerUserId)\n : null;\n setUserDetails(details);\n },\n [getSellerUserDetails]\n );\n\n useEffect(() => {\n getUserDetails(createdByUserId);\n }, [createdByUserId, getUserDetails]);\n\n const fetchAttachmentMetadata = useCallback(async () => {\n const requests: SellerSupportCaseAttachmentRequest[] =\n attachments?.map((a) => {\n return {\n id: a.id,\n contentType: a.content_type,\n name: a.name,\n };\n }) ?? [];\n\n const attachmentsResult = await tryInvokeApi(\n async () => {\n return await new SellerSupportCaseClient(\n activeAccountWebClientConfig\n ).retrieveSellerSupportCaseNoteAttachments(requests, false);\n },\n (error) => {\n trackError(\n 'SellerSupportCaseClient.retrieveSellerSupportCaseNoteAttachments',\n error,\n { requests: JSON.stringify(requests) }\n );\n }\n );\n\n if (attachmentsResult == null) {\n return;\n }\n\n if (attachmentsResult?.length === attachments?.length) {\n const info: AttachmentInfo[] = [];\n for (let i = 0; i < attachmentsResult.length; i++) {\n info.push({\n attachmentId: attachments[i].id,\n name: attachmentsResult[i].fileName,\n size: attachmentsResult[i].length,\n // We aren't fetching content here. Actual content will be fetched if user\n // downloads the file\n content: undefined,\n contentType: attachmentsResult[i].contentType,\n });\n }\n setAttachmentsInfo(info);\n }\n }, [activeAccountWebClientConfig, attachments, trackError]);\n\n useEffect(() => {\n fetchAttachmentMetadata();\n }, [attachments, fetchAttachmentMetadata]);\n\n return (\n
    \n
    \n
    \n
    \n {userDetails?.sellerDisplayName}\n
    \n {userDetails?.email && (\n
    \n {userDetails.email}\n
    \n )}\n
    \n
    \n {noteDate &&\n formatInTimeZone(noteDate, timeZone, 'LLL dd yyyy, h:mm')}\n
    \n
    \n
    {noteContent}
    \n {attachments && attachments.length > 0 && (\n \n )}\n
    \n );\n};\n","import { ComponentProps, useCallback, useRef, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useWindowSize } from 'react-use';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PosTextArea } from 'src/core/POS/PosTextArea';\nimport { Button } from 'src/core/ui';\nimport { AddFileIcon } from 'src/svgs/AddFileIcon';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n FileParameter,\n Marketplace,\n SellerSupportCaseClient,\n} from 'src/WebApiController';\n\nimport { ButtonWithIcon } from '../../Buttons';\nimport { AttachmentInfo, AttachmentsPanel } from '../AttachmentsPanel';\nimport * as styles from './SupportCaseBody.css';\n\ntype UploadAttachmentInfo = {\n id: string;\n fileName: string;\n file?: File;\n};\n\ntype SupportCaseReplyFieldValues = {\n attachmentInfo: UploadAttachmentInfo[];\n noteContent: string;\n};\n\n// 2^31-1 (2GB) is technically the maximum size allowed\n// to be stored in DB. Change this if there are other\n// explicit limits on content length.\nconst CONTENT_MAX_SIZE = Math.pow(2, 31) - 1;\n\nexport const SupportCaseReplyInput = ({\n sellerSupportCaseId,\n sellerSupportCaseNotesIsLoading,\n onReply,\n ...props\n}: ComponentProps<'div'> & {\n sellerSupportCaseId: number;\n sellerSupportCaseNotesIsLoading: boolean;\n onReply?: () => void;\n}) => {\n const { height: windowHeight } = useWindowSize();\n\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const [isLoading, setLoading] = useState(false);\n const requiredMsg = useContent(ContentId.Required);\n\n const defaultValues = { attachmentInfo: [], noteContent: '' };\n\n const { register, handleSubmit, watch, setValue, reset } =\n useForm({\n defaultValues,\n });\n\n const sendReply = async (\n noteContent: string,\n attachments: FileParameter[] | null\n ) => {\n tryInvokeApi(\n async () => {\n await new SellerSupportCaseClient(\n activeAccountWebClientConfig\n ).createSellerSupportCaseReply(\n sellerSupportCaseId,\n noteContent,\n Marketplace.StubHub,\n attachments\n );\n\n onReply?.();\n },\n (error) => {\n showErrorDialog('createSellerSupportCaseReply', error);\n }\n );\n };\n\n const noteContent = watch('noteContent');\n const attachments = watch('attachmentInfo');\n\n const inputRef = useRef(null);\n\n const onDeleteAttachment = useCallback(\n (attachmentToDelete: AttachmentInfo) => {\n const newAttachments = attachments.filter(\n (a) => a.id !== attachmentToDelete.attachmentId\n );\n setValue('attachmentInfo', newAttachments);\n },\n [attachments, setValue]\n );\n\n const onUploadFileClick = useCallback(() => {\n // trigger the hidden input\n inputRef?.current?.click();\n }, []);\n\n const onNewFileSelected = (file: File) => {\n if (attachments.every((e) => e.fileName !== file.name)) {\n const newAttachments = [\n ...attachments,\n {\n id: file.name,\n fileName: file.name,\n file: file,\n } as UploadAttachmentInfo,\n ];\n setValue('attachmentInfo', newAttachments);\n }\n };\n\n const onSubmit = async (data: SupportCaseReplyFieldValues) => {\n setLoading(true);\n const attachmentsContent: FileParameter[] = data.attachmentInfo\n .filter((att) => att.file)\n .map((att) => {\n return { data: att.file!, fileName: att.fileName };\n });\n\n await sendReply(data.noteContent, attachmentsContent);\n\n reset(defaultValues);\n setLoading(false);\n };\n\n return (\n
    \n
    \n \n
    \n
    \n {\n const newFiles = e.target?.files;\n if (newFiles?.[0]) {\n onNewFileSelected(newFiles[0]);\n }\n }}\n />\n }\n disabled={sellerSupportCaseNotesIsLoading || isLoading}\n onClick={onUploadFileClick}\n />\n
    \n handleSubmit(onSubmit)()}\n >\n \n \n
    \n
    \n {attachments && attachments.length > 0 && (\n {\n return {\n attachmentId: a.id,\n name: a.fileName,\n };\n })}\n showDelete\n onDeleteClicked={onDeleteAttachment}\n />\n )}\n
    \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { ComponentPropsWithRef } from 'react';\nimport { Components, Virtuoso } from 'react-virtuoso';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { clearIDBCache } from 'src/core/utils/createIndexDBPersister';\nimport { ErrorSolidIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { stringToUtcDate } from 'src/utils/dateTimeUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n SellerSupportCaseClient,\n SellerSupportCaseNote,\n} from 'src/WebApiController';\n\nimport IconBulletList from '~icons/pos/bulletList';\n\nimport { SupportCaseNoteDisplay } from '../SupportCaseNoteDisplay/SupportCaseNoteDisplay';\nimport * as styles from './SupportCaseBody.css';\nimport { SupportCaseReplyInput } from './SupportCaseReplyInput';\n\ntype VirtuosoContext = {\n isLoading?: boolean;\n isError?: boolean;\n};\n\nconst EmptyPlaceholder: Components<\n unknown,\n VirtuosoContext\n>['EmptyPlaceholder'] = ({ context }: { context?: VirtuosoContext }) => {\n if (context?.isLoading) {\n return ;\n }\n if (context?.isError) {\n return (\n \n }\n >\n \n \n \n {\n clearIDBCache(); // delete the cache storage before reloading\n window.location.reload();\n }}\n >\n \n \n \n );\n }\n return (\n }>\n \n \n );\n};\n\nconst Item: Components['Item'] = ({\n children,\n ...rest\n}: ComponentPropsWithRef<'div'>) => {\n return (\n
    \n {children}\n
    \n );\n};\n\n// XXX hack to prevent margin collapse on last element\nconst Footer = () => {\n return
    ;\n};\n\nexport function SupportCaseBody({\n sellerSupportCaseId,\n}: {\n sellerSupportCaseId: number;\n}) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n activeAccountWebClientConfig.activeAccountId != null &&\n sellerSupportCaseId != null;\n\n const sellerSupportCaseNoteQuery = useQuery({\n queryKey: [\n 'SellerSupportCaseClient.getSellerSupportCaseNotesByCaseId',\n activeAccountWebClientConfig.activeAccountId,\n sellerSupportCaseId,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n return tryInvokeApi(\n () => {\n return new SellerSupportCaseClient(\n activeAccountWebClientConfig\n ).getSellerSupportCaseNotesByCaseId(\n sellerSupportCaseId,\n null,\n null,\n true\n );\n },\n (error) => {\n trackError(\n 'SellerSupportCaseClient.getSellerSupportCaseNotesByCaseId',\n error,\n { sellerSupportCaseId }\n );\n }\n );\n },\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n });\n\n const supportNoteData = sellerSupportCaseNoteQuery.data;\n return (\n
    \n {\n return (\n \n );\n }}\n />\n\n {\n sellerSupportCaseNoteQuery.refetch();\n }}\n />\n
    \n );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n CatalogClient,\n CatalogResults,\n SaleClient,\n SaleDetails,\n} from 'src/WebApiController';\n\nexport function useGetSaleWithCatalogData(saleId?: number | null) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n return useQuery({\n queryKey: ['getSaleWithCatalogData', saleId],\n async queryFn() {\n if (!saleId) return null;\n\n let sale: SaleDetails;\n let catalog: CatalogResults;\n try {\n sale = await new SaleClient(\n activeAccountWebClientConfig\n ).getSaleBySaleId(saleId);\n } catch (err: unknown) {\n trackError('SaleClient.getSaleBySaleId', err as ErrorTypes, {\n saleId,\n });\n throw err;\n }\n try {\n catalog = await new CatalogClient(\n activeAccountWebClientConfig\n ).getCatalogForSaleBySaleId(sale.id);\n } catch (err: unknown) {\n trackError(\n 'CatalogClient.getCatalogForSaleBySaleId',\n err as ErrorTypes,\n {\n saleId,\n }\n );\n throw err;\n }\n return { sale, catalog };\n },\n refetchOnWindowFocus: false,\n });\n}\n","import { ComponentProps } from 'react';\nimport { vars } from 'src/core/themes';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { ChevronLeftIcon, ChevronRightIcon } from 'src/svgs/Viagogo';\nimport Swiper from 'swiper';\nimport { useSwiper } from 'swiper/react';\n\nimport { expandButton } from './SidePanelButton/SidePanelButton.css';\n\ntype SwiperButtonProps = { dir: 'left' | 'right' } & Pick<\n ComponentProps<'div'>,\n 'onClick'\n> & {\n swiperRef?: React.MutableRefObject;\n };\n\nexport function SwiperButton({ dir, onClick, swiperRef }: SwiperButtonProps) {\n const mobile = useMatchMedia('mobile');\n const swiper = useSwiper();\n const ExpandIcon = dir === 'left' ? ChevronRightIcon : ChevronLeftIcon;\n\n if (!mobile) {\n return null;\n }\n\n return (\n {\n onClick?.(e);\n dir === 'left'\n ? swiperRef?.current\n ? swiperRef?.current.slidePrev()\n : swiper?.slidePrev()\n : swiperRef?.current\n ? swiperRef?.current.slideNext()\n : swiper?.slideNext();\n }}\n >\n \n
    \n );\n}\n","import { ReactNode } from 'react';\n\nimport * as styles from './HotkeyDisplay.css';\n\nexport type HotkeyDisplayProps = {\n children?: ReactNode;\n};\n\nexport function HotkeyDisplay({ children }: HotkeyDisplayProps) {\n return
    {children}
    ;\n}\n","import { debounce } from 'lodash-es';\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { Feature, UserSetting } from 'src/WebApiController';\n\nexport enum SidePanelPage {\n General = 'General', // The default\n InventoryEvent = 'InventoryEvent',\n SaleEvent = 'SaleEvent',\n PurchaseEvent = 'PurchaseEvent',\n}\n\nexport type ISidePanelContext = {\n isCollapsed: boolean;\n\n // Show small/big panel content\n setCollapsed: (val: boolean) => void;\n\n // Show/hide the panel\n isHidden: boolean;\n setHidden: (val: boolean) => void;\n\n // Sidepanel widths\n sidePanelWidths: Record | null;\n onUpdateSidePanelWidth: (page: SidePanelPage, width: number) => void;\n};\n\nexport const createResizablePanelContext =\n React.createContext({} as ISidePanelContext);\n\nexport const useSidePanelContext = () =>\n React.useContext(createResizablePanelContext);\n\ntype SidePanelType = 'content' | 'flyover';\n\ntype SidePanelPersistedState = Pick<\n ISidePanelContext,\n 'isCollapsed' | 'isHidden'\n>;\n\nconst defaultSidePanelState: SidePanelPersistedState = {\n isCollapsed: false,\n isHidden: false,\n};\n\nconst getSidePanelKey = (sidePanelId: string): string => {\n return `${SIDE_PANEL_STORAGE_KEY}-${sidePanelId}`;\n};\n\nconst SIDE_PANEL_STORAGE_KEY = 'sidePanelState';\n\nconst persistSidePanelState = (\n sidePanelId: string,\n sidePanelState: SidePanelPersistedState\n) => {\n localStorage.setItem(\n getSidePanelKey(sidePanelId),\n JSON.stringify(sidePanelState)\n );\n};\n\nconst isFlyoverPanel = (panel?: SidePanelType): boolean => {\n return panel === 'flyover';\n};\n\nconst getSidePanelState = (sidePanelId: string): SidePanelPersistedState => {\n const stringifiedSidePanelState = localStorage.getItem(\n getSidePanelKey(sidePanelId)\n );\n\n if (!stringifiedSidePanelState) {\n return defaultSidePanelState;\n }\n\n try {\n return {\n ...defaultSidePanelState,\n ...JSON.parse(stringifiedSidePanelState),\n };\n } catch (e) {\n return defaultSidePanelState;\n }\n};\n\nexport const SidePanelProvider = ({\n sidePanelId,\n children,\n initialOpened,\n panelType,\n}: {\n sidePanelId: string;\n children: React.ReactNode;\n initialOpened?: boolean;\n panelType?: SidePanelType;\n}) => {\n const sidePanelType: SidePanelType = panelType || 'content';\n\n const [state, setState] = useState(() => {\n const loadedState = getSidePanelState(sidePanelId);\n if (isFlyoverPanel(panelType)) {\n loadedState.isHidden = true;\n }\n\n if (initialOpened) {\n loadedState.isHidden = false;\n }\n return loadedState;\n });\n\n const { value: sidePanelWidthsSetting, setUserSetting } =\n useServerUserSetting>({\n id: UserSetting.SidePanelWidths,\n });\n const hasSidePanelWidthsFeature = useUserHasFeature(Feature.SidePanelWidths);\n\n const stateRef = useRef(state);\n stateRef.current = state;\n\n useEffect(() => {\n if (isFlyoverPanel(sidePanelType)) {\n setState({\n ...stateRef.current,\n isHidden: true,\n });\n }\n }, [sidePanelType]);\n\n useEffect(() => {\n // Don't persist panel state for flyover panel\n if (isFlyoverPanel(sidePanelType)) {\n return;\n }\n persistSidePanelState(sidePanelId, state);\n }, [sidePanelType, sidePanelId, state]);\n\n const setCollapsed = useCallback((isCollapsed: boolean) => {\n setState({\n ...stateRef.current,\n isCollapsed,\n });\n }, []);\n\n const setHidden = useCallback((isHidden: boolean) => {\n setState({\n ...stateRef.current,\n isHidden,\n });\n }, []);\n\n const sidePanelWidths = useMemo((): Record | null => {\n if (!hasSidePanelWidthsFeature) {\n return null;\n }\n return sidePanelWidthsSetting ?? null;\n }, [hasSidePanelWidthsFeature, sidePanelWidthsSetting]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const onUpdateSidePanelWidth = useCallback(\n debounce((page: SidePanelPage, width: number) => {\n if (!hasSidePanelWidthsFeature) {\n return;\n }\n const updatedWidths = {\n ...(sidePanelWidths ?? ({} as Record)),\n [page]: width.toFixed(4),\n };\n setUserSetting(updatedWidths);\n }, 500),\n [setUserSetting, sidePanelWidths, hasSidePanelWidthsFeature]\n );\n\n return (\n \n {children}\n \n );\n};\n","import { useMemo } from 'react';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const useGetNoSelectedItemsLabel = (): string => {\n const selectedText = useContent(ContentId.Selected);\n\n return useMemo(() => {\n return `0 ${selectedText}`.toLocaleLowerCase();\n }, [selectedText]);\n};\n","import { useMemo } from 'react';\nimport { useGetNoSelectedItemsLabel } from 'src/components/common/MultiSelect/useGetNoSelectedItemsLabel';\nimport { useContent } from 'src/contexts/ContentContext';\nimport {\n MultiSelectScope,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\ninterface UseInventorySelectedLegendProps {\n singleElementLabel: string;\n multipleElementsLabel: string;\n}\n\nexport const useEventsAccordionSelectedLegend = ({\n singleElementLabel,\n multipleElementsLabel,\n}: UseInventorySelectedLegendProps): string => {\n const {\n selectionMode,\n getSelection,\n getGroupSelectableGroupMetadata,\n totalItemsSelected,\n } = useMultiSelectionContext();\n\n // How to read selection:\n // {\n // isSingleGroupMultiSelect: false,\n // groupIds: ['152176600'], // Full selected groupIds\n // items: { // Partially selected groupIds and items\n // negative items mean subgroups. Don't count them\n // itemIds: ['65300', '65843', '-1984169708', '-1984169705'],\n // groupIds: ['152159378'],\n // },\n // };\n\n const eventText = useContent(ContentId.Event);\n const eventsText = useContent(ContentId.Events);\n const selectedText = useContent(ContentId.Selected);\n const selectedFromText = useContent(ContentId.SelectedFrom);\n const noItemsSelected = useGetNoSelectedItemsLabel();\n const isAllGroupsMode = selectionMode?.mode === MultiSelectScope.AllGroups;\n\n return useMemo(() => {\n if (!totalItemsSelected) {\n return noItemsSelected;\n }\n\n const selection = getSelection();\n\n const eventsCount = new Set([\n ...selection.groupIds,\n ...selection.items.groupIds,\n ]).size;\n\n let listingsCount = 0;\n\n const singleSelectedItems = new Set(\n selection.items.itemIds.filter((itemId) => parseInt(itemId) > 0) ?? []\n );\n\n listingsCount += singleSelectedItems.size;\n\n selection.groupIds.forEach((groupId) => {\n const g = getGroupSelectableGroupMetadata(groupId);\n listingsCount += g?.itemCount ?? 0;\n });\n\n const selectedEventsLabel = eventsCount === 1 ? eventText : eventsText;\n\n const selectedListingsLabel =\n listingsCount === 1 ? singleElementLabel : multipleElementsLabel;\n\n return (\n isAllGroupsMode\n ? `${listingsCount} ${selectedListingsLabel} ${selectedFromText} ${eventsCount} ${selectedEventsLabel}`\n : `${listingsCount} ${selectedListingsLabel} ${selectedText}`\n ).toLocaleLowerCase();\n }, [\n totalItemsSelected,\n getSelection,\n eventText,\n eventsText,\n singleElementLabel,\n multipleElementsLabel,\n isAllGroupsMode,\n selectedFromText,\n selectedText,\n noItemsSelected,\n getGroupSelectableGroupMetadata,\n ]);\n};\n","import { ReactNode, useEffect } from 'react';\nimport { useEventsAccordionSelectedLegend } from 'src/components/Events/EventListing/useEventsAccordionSelectedLegend';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\ninterface SetInventoryEventAccordionSelectionCountLabelProps {\n children: ReactNode;\n}\n\nexport const SetInventoryEventAccordionSelectionCountLabel = ({\n children,\n}: SetInventoryEventAccordionSelectionCountLabelProps) => {\n const listingText = useContent(ContentId.Listing);\n const listingsText = useContent(ContentId.Listings);\n const { setSelectedCountLabel, setUsingCustomSelectedCountLabel } =\n useMultiSelectionContext();\n\n useEffect(() => {\n setUsingCustomSelectedCountLabel(true);\n }, [setUsingCustomSelectedCountLabel]);\n\n const selectedLegend = useEventsAccordionSelectedLegend({\n singleElementLabel: listingText,\n multipleElementsLabel: listingsText,\n });\n\n useEffect(() => {\n setSelectedCountLabel(selectedLegend);\n }, [selectedLegend, setSelectedCountLabel]);\n\n return <>{children};\n};\n","import { ReactNode, useEffect, useMemo } from 'react';\nimport { useGetNoSelectedItemsLabel } from 'src/components/common/MultiSelect/useGetNoSelectedItemsLabel';\nimport { useContent } from 'src/contexts/ContentContext';\nimport {\n MultiSelectScope,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EventWithData } from 'src/WebApiController';\n\ninterface SetInventoryMetricsSelectionCountLabelProps {\n children: ReactNode;\n events: EventWithData[];\n}\n\nexport const SetInventoryMetricsSelectionCountLabel = ({\n children,\n events,\n}: SetInventoryMetricsSelectionCountLabelProps) => {\n const {\n itemSelection,\n selectionMode,\n totalItemsSelected,\n setSelectedCountLabel,\n setUsingCustomSelectedCountLabel,\n } = useMultiSelectionContext();\n const isAllGroupsMode = selectionMode?.mode === MultiSelectScope.AllGroups;\n\n const listingText = useContent(ContentId.Listing);\n const listingsText = useContent(ContentId.Listings);\n const eventText = useContent(ContentId.Event);\n const eventsText = useContent(ContentId.Events);\n const selectedFromText = useContent(ContentId.SelectedFrom);\n const noItemsSelected = useGetNoSelectedItemsLabel();\n\n useEffect(() => {\n setUsingCustomSelectedCountLabel(true);\n }, [setUsingCustomSelectedCountLabel]);\n\n const eventsMap = useMemo>(() => {\n const map: Record = {};\n events.map((e) => {\n const eventId = e.event.viagVirtualId;\n map[eventId] = e;\n });\n return map;\n }, [events]);\n\n const selectedLabel = useMemo(() => {\n if (!totalItemsSelected || !isAllGroupsMode) {\n return noItemsSelected;\n }\n\n const selectedEventsIds = Object.keys(itemSelection);\n const eventsCount = selectedEventsIds.length;\n\n let listingsCount = 0;\n selectedEventsIds.forEach((id) => {\n listingsCount += eventsMap[id]?.counts?.listCnt ?? 0;\n });\n\n const selectedEventsLabel = eventsCount === 1 ? eventText : eventsText;\n\n const selectedListingsLabel =\n listingsCount === 1 ? listingText : listingsText;\n\n return `${listingsCount} ${selectedListingsLabel} ${selectedFromText} ${eventsCount} ${selectedEventsLabel}`.toLocaleLowerCase();\n }, [\n eventText,\n eventsMap,\n eventsText,\n isAllGroupsMode,\n itemSelection,\n listingText,\n listingsText,\n noItemsSelected,\n selectedFromText,\n totalItemsSelected,\n ]);\n\n useEffect(() => {\n setSelectedCountLabel(selectedLabel);\n }, [selectedLabel, setSelectedCountLabel]);\n\n return <>{children};\n};\n","import { useCallback } from 'react';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { BulkEditBroadcastSettingsDialog } from 'src/dialogs/BulkEdits/BulkEditBroadcastSettingsDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { lookupEventInCatalog } from 'src/utils/eventWithDataUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditListingClient,\n BulkEditPreview,\n BulkEditPreviewWithDetails,\n Listing,\n ListingActionType,\n ListingDetails,\n ListingGroup,\n ListingQuery,\n ListingStatus,\n Marketplace,\n} from 'src/WebApiController';\n\nimport { INVENTORY_BULK_BROADCAST_LISTINGS_KEY } from '../../InventoryActionDropdown.constants';\n\nexport const useBulkEditBroadcastGlobalSettingsAction = ({\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n}: {\n filterQueryWithEventIds: ListingQuery;\n setIsLoading: (v: boolean) => void;\n isLoading?: boolean;\n}) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const {\n data,\n updateItemInEvent,\n eventsExpansion: { expandedListItems, refreshExpandedListItems },\n } = useCatalogDataContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const { getGroupToggleState } = useMultiSelectionContext();\n\n const { showErrorDialog } = useErrorBoundaryContext();\n const {\n openDialog: openBulkEditBroadcastSettingsDialog,\n closeDialog: closeBulkEditBroadcastSettingsDialog,\n } = useDialog(\n DialogId.BulkEditBroadcastSettings,\n BulkEditBroadcastSettingsDialog\n );\n\n const {\n openDialog: openBulkEditUnbroadcastSettingsDialog,\n closeDialog: closeBulkEditUnbroadcastSettingsDialog,\n } = useDialog(\n DialogId.BulkEditBroadcastSettings,\n BulkEditBroadcastSettingsDialog\n );\n\n const onSubmitEditBroadcastSettings = useCallback(\n async (\n marketplacesToBroadcast: Marketplace[] | null,\n marketplacesToUnbroadcast: Marketplace[] | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreview\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n tryInvokeApi(\n async () => {\n const client = new BulkEditListingClient(\n activeAccountWebClientConfig\n );\n\n const preview = await client.bulkBroadcastListingsPreview(\n filterQueryWithEventIds\n );\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkBroadcastListingsPreview', error, {\n trackErrorData: {\n filterQueryWithEventIds,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (marketplacesToBroadcast && marketplacesToUnbroadcast) {\n await tryInvokeApi(\n async () => {\n // Find all listings whose event is expanded - we want to update their state immediately\n expandedListItems.forEach((viagVirtualId) => {\n const eventWithData = lookupEventInCatalog(data, viagVirtualId);\n if (eventWithData?.entities?.listings?.length) {\n const affectedListings =\n eventWithData.entities.listings.flatMap((l) => [\n l,\n // We only need to update broadcast state for top-level listings (they are the active ones)\n ...((l as ListingGroup)?.groupItems ?? []),\n ]);\n\n const eventToggleState = getGroupToggleState(viagVirtualId);\n\n if (marketplacesToUnbroadcast.length) {\n affectedListings\n .filter(\n (listing) =>\n ((listing as Listing).actions.includes(\n ListingActionType.Unbroadcast\n ) &&\n eventToggleState.isGroupSelected) ||\n eventToggleState.items.includes(String(listing.id))\n )\n .forEach((l) =>\n updateItemInEvent(\n {\n ...(l as Listing),\n status: ListingStatus.DelistingPending,\n },\n ActionOutboxEntityType.Listing\n )\n );\n }\n if (marketplacesToBroadcast.length) {\n affectedListings\n .filter(\n (listing) =>\n ((listing as Listing).actions.includes(\n ListingActionType.Broadcast\n ) &&\n eventToggleState.isGroupSelected) ||\n eventToggleState.items.includes(String(listing.id))\n )\n .forEach((l) =>\n updateItemInEvent(\n {\n ...(l as Listing),\n status: ListingStatus.ListingPending,\n },\n ActionOutboxEntityType.Listing\n )\n );\n }\n }\n });\n\n const succeeded = await new BulkEditListingClient(\n activeAccountWebClientConfig\n ).bulkBroadcastListings(\n {\n item1: preview!,\n item2: marketplacesToBroadcast,\n item3: marketplacesToUnbroadcast,\n },\n INVENTORY_BULK_BROADCAST_LISTINGS_KEY,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n // It's ok to close both, cuz only 1 can be opened anyway\n closeBulkEditBroadcastSettingsDialog();\n closeBulkEditUnbroadcastSettingsDialog();\n\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on listingDetails\n // we force re-loading the listing and newest broadcast state can be displayed\n setActivePosEntity(0);\n await refreshExpandedListItems();\n }\n }\n },\n (error) => {\n showErrorDialog('onSubmitEditBroadcastSettings', error, {\n trackErrorData: {\n preview,\n marketplacesToBroadcast,\n marketplacesToUnbroadcast,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeBulkEditBroadcastSettingsDialog,\n closeBulkEditUnbroadcastSettingsDialog,\n data,\n expandedListItems,\n filterQueryWithEventIds,\n getGroupToggleState,\n refreshExpandedListItems,\n setActivePosEntity,\n setIsLoading,\n showErrorDialog,\n updateItemInEvent,\n ]\n );\n\n const openBulkEditBroadcastSettingsDialogWithEvent = useCallback(() => {\n openBulkEditBroadcastSettingsDialog({\n event: undefined,\n updateKey: INVENTORY_BULK_BROADCAST_LISTINGS_KEY,\n filterQuery: filterQueryWithEventIds,\n marketplaceBroadcastSelectionMode: 'all',\n onOkay: onSubmitEditBroadcastSettings,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkEditBroadcastSettingsDialog,\n });\n }, [\n closeBulkEditBroadcastSettingsDialog,\n filterQueryWithEventIds,\n onSubmitEditBroadcastSettings,\n openBulkEditBroadcastSettingsDialog,\n setIsLoading,\n ]);\n\n const openBulkEditUnbroadcastSettingsDialogWithEvent = useCallback(() => {\n openBulkEditUnbroadcastSettingsDialog({\n event: undefined,\n updateKey: INVENTORY_BULK_BROADCAST_LISTINGS_KEY,\n filterQuery: filterQueryWithEventIds,\n marketplaceBroadcastSelectionMode: 'none',\n onOkay: onSubmitEditBroadcastSettings,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkEditUnbroadcastSettingsDialog,\n });\n }, [\n closeBulkEditUnbroadcastSettingsDialog,\n filterQueryWithEventIds,\n onSubmitEditBroadcastSettings,\n openBulkEditUnbroadcastSettingsDialog,\n setIsLoading,\n ]);\n\n const onBroadcastAllClick = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n openBulkEditBroadcastSettingsDialogWithEvent();\n },\n [openBulkEditBroadcastSettingsDialogWithEvent]\n );\n\n const onUnbroadcastAllClick = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n openBulkEditUnbroadcastSettingsDialogWithEvent();\n },\n [openBulkEditUnbroadcastSettingsDialogWithEvent]\n );\n\n return {\n dropDown: (\n <>\n \n \n \n \n \n \n \n ),\n };\n};\n","import { useState } from 'react';\nimport { useBulkBroadcastActionsPermission } from 'src/components/common/BulkActions/BulkBroadcastActions/useBulkBroadcastActionsPermission';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { useBulkAddHoldAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkAddHoldAction';\nimport { useBulkEditBroadcastGlobalSettingsAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkEditBroadcastSettingsAction/useBulkEditBroadcastGlobalSettingsAction';\nimport { useBulkRemoveHoldAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkRemoveHoldAction';\nimport { useBulkUngroupListings } from 'src/components/Listings/InventoryActionDropdown/components/LaunchUngroupListingsAction';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { useInventoryEventBulkActionsState } from '../../InventoryEventBulkActions/useInventoryEventBulkActionsState';\n\nexport const BroadcastActions = () => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n const [isLoading, setIsLoading] = useState(false);\n const { hasBroadcastPermission } = useBulkBroadcastActionsPermission();\n\n const { filterQueryWithEventIds } = useInventoryEventBulkActionsState();\n\n const bulkAddHold = useBulkAddHoldAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkRemoveHold = useBulkRemoveHoldAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkUngroupListings = useBulkUngroupListings(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkEditBroadcastSettings = useBulkEditBroadcastGlobalSettingsAction({\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n });\n\n return (\n <>\n \n \n \n \n }\n align=\"end\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {hasBroadcastPermission && bulkEditBroadcastSettings.dropDown}\n {bulkAddHold.dropDown}\n {bulkRemoveHold.dropDown}\n {bulkUngroupListings.dropDown}\n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useFilterQueryState } from 'src/components/MainFilterBar/useFilterQueryState';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Button } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n TAB_EVENT_IDS_2_QUERY_PARAM,\n TAB_EVENT_IDS_SEPARATOR,\n} from 'src/navigations/Routes/InventoryEvent/InventoryEvent.constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n Feature,\n ListingQuery,\n} from 'src/WebApiController';\n\nexport const CatchUpAction = () => {\n const hasPricingCatchupFeature = useUserHasFeature(Feature.PricingCatchup);\n const navigate = useNavigate();\n const { selectedViagogoVirtualIds } = useFilterQueryState(\n ActionOutboxEntityType.Listing\n );\n\n const onCatchUp = useCallback(() => {\n const tabEventIds = selectedViagogoVirtualIds?.join(\n TAB_EVENT_IDS_SEPARATOR\n );\n\n const activeEventId = selectedViagogoVirtualIds?.[0];\n const catchUpEventUrl = `/inventory/event?${ACTIVE_EVENT_IDS_2_QUERY_PARAM}=${activeEventId}&${TAB_EVENT_IDS_2_QUERY_PARAM}=${tabEventIds}`;\n navigate(catchUpEventUrl);\n }, [navigate, selectedViagogoVirtualIds]);\n\n if (!hasPricingCatchupFeature) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n","import { useState } from 'react';\nimport { useBulkPricingActionsPermissions } from 'src/components/common/BulkActions/BulkPricingActions/useBulkPricingActionsPermissions';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { useBulkChangeListingPriceAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkChangeListingPriceAction';\nimport { useBulkUpdateMarketplacePrices } from 'src/components/Listings/InventoryActionDropdown/components/BulkChangeMarketplacePriceAction/indext';\nimport { useBulkEditAutoPricingSettings } from 'src/components/Listings/InventoryActionDropdown/components/BulkEditAutoPricingSettingsAction';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { useBulkChangeFloorCeilingActions } from 'src/hooks/useBulkChangeFloorCeilingActions';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { useInventoryEventBulkActionsState } from '../../InventoryEventBulkActions/useInventoryEventBulkActionsState';\n\nexport const PricingActions = () => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n\n const { affectedVisibleListingIds, filterQueryWithEventIds } =\n useInventoryEventBulkActionsState();\n\n const [isLoading, setIsLoading] = useState(false);\n\n const { hasEditPricingPermission } = useBulkPricingActionsPermissions();\n\n const bulkUpdateListingPrice = useBulkChangeListingPriceAction(\n filterQueryWithEventIds,\n\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkEditAutoPricingSettingsV2 = useBulkEditAutoPricingSettings(\n filterQueryWithEventIds,\n affectedVisibleListingIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkChangeFloorCeilingActions = useBulkChangeFloorCeilingActions({\n setIsLoading,\n isLoading,\n filterQueryWithEventIds,\n });\n\n const bulkUpdateMarketplacePrices = useBulkUpdateMarketplacePrices(\n filterQueryWithEventIds,\n affectedVisibleListingIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n return (\n <>\n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {bulkUpdateListingPrice.dropDown}\n {hasEditPricingPermission && bulkChangeFloorCeilingActions.dropDown}\n {bulkEditAutoPricingSettingsV2.dropDown}\n {bulkUpdateMarketplacePrices.dropDown}\n \n \n );\n};\n","import { useState } from 'react';\nimport { ExportInventoryButton } from 'src/components/Buttons/ExportInventoryButton';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { useBulkChangeTicketTypeRuleAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkChangeTicketTypeRuleAction';\nimport { useBulkEditCommissionAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkEditCommissionAction/useBulkEditCommissionAction';\nimport { useBulkEditMarketplaceSeatingAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkEditMarketplaceSeating';\nimport { useBulkRemovePredelivery } from 'src/components/Listings/InventoryActionDropdown/components/BulkRemovePredeliveryAction';\nimport { useBulkUpdateAutoFulfillAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkUpdateAutoFulfillAction';\nimport { useBulkUpdateDeliveryType } from 'src/components/Listings/InventoryActionDropdown/components/BulkUpdateDeliveryType';\nimport { useBulkUpdateInternalNotesAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkUpdateInternalNotesAction';\nimport { useBulkUpdateListingSettings } from 'src/components/Listings/InventoryActionDropdown/components/BulkUpdateListingSettingsAction';\nimport { useBulkUpdateSeatTraits } from 'src/components/Listings/InventoryActionDropdown/components/BulkUpdateSeatTraits';\nimport { useBulkWasteTicketsAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkWasteTicketsAction';\nimport { useBulkDeleteSeatSavers } from 'src/components/Listings/InventoryActionDropdown/components/LaunchDeleteSeatSaversAction';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature } from 'src/WebApiController';\n\nimport { useInventoryEventBulkActionsState } from '../../InventoryEventBulkActions/useInventoryEventBulkActionsState';\n\nexport const SettingsActions = () => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n const hasExportInventoryFeature = useUserHasFeature(Feature.ExportInventory);\n\n const [isLoading, setIsLoading] = useState(false);\n const { affectedVisibleListingIds, filterQueryWithEventIds } =\n useInventoryEventBulkActionsState();\n\n const bulkRemovePredelivery = useBulkRemovePredelivery(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkEditListingSettings = useBulkUpdateListingSettings(\n 'general',\n filterQueryWithEventIds,\n affectedVisibleListingIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkUpdateInternalNotes = useBulkUpdateInternalNotesAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkUpdateAutoFulfill = useBulkUpdateAutoFulfillAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkChangeTicketTypeRule = useBulkChangeTicketTypeRuleAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkEditMarketplaceSeating = useBulkEditMarketplaceSeatingAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkDeleteSeatSavers = useBulkDeleteSeatSavers(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkEditDeliverType = useBulkUpdateDeliveryType(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n const bulkEditSeatTraits = useBulkUpdateSeatTraits(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkEditCommissionAction = useBulkEditCommissionAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkWasteTicketsAction = useBulkWasteTicketsAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n return (\n <>\n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {bulkEditListingSettings.dropDown}\n {bulkUpdateInternalNotes.dropDown}\n {bulkUpdateAutoFulfill.dropDown}\n {bulkRemovePredelivery.dropDown}\n {bulkChangeTicketTypeRule.dropDown}\n {bulkDeleteSeatSavers.dropDown}\n {bulkEditDeliverType.dropDown}\n {bulkEditSeatTraits.dropDown}\n {bulkEditMarketplaceSeating.dropDown}\n {bulkEditCommissionAction.dropDown}\n {hasExportInventoryFeature && (\n \n \n \n )}\n {bulkWasteTicketsAction.dropDown}\n \n \n );\n};\n","import { useState } from 'react';\nimport { BulkEditTagsActionPermissionsHandler } from 'src/components/common/BulkActions/BulkEditTagsAction/BulkEditTagsActionPermissionsHandler';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { useBulkEditTagsAction } from 'src/components/Listings/InventoryActionDropdown/components/BulkEditTagsAction';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ActionOutboxEntityType } from 'src/WebApiController';\n\nimport { useInventoryEventBulkActionsState } from '../../InventoryEventBulkActions/useInventoryEventBulkActionsState';\n\nexport const TagsActions = () => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n const { filterQueryWithEventIds } = useInventoryEventBulkActionsState();\n const [isLoading, setIsLoading] = useState(false);\n\n const bulkUpdateTags = useBulkEditTagsAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n return (\n \n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {bulkUpdateTags.dropDown}\n \n \n );\n};\n","import { MultiSelectActionsContainer } from 'src/components/common/MultiSelect/MultiSelectActionsContainer';\n\nimport { BroadcastActions } from './Actions/BroadcastActions';\nimport { CatchUpAction } from './Actions/CatchUpAction';\nimport { PricingActions } from './Actions/PricingActions';\nimport { SettingsActions } from './Actions/SettingsActions';\nimport { TagsActions } from './Actions/TagsActions';\n\nexport const InventoryGlobalBulkActions = () => {\n return (\n \n \n \n \n \n \n \n );\n};\n","import {\n ColumnDef,\n functionalUpdate,\n GroupingState,\n InitialTableState,\n PaginationState,\n RowSelectionState,\n SortingState,\n TableOptions,\n Updater,\n} from '@tanstack/react-table';\nimport {\n CSSProperties,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport {\n Content,\n FormatContent,\n useContent,\n} from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport {\n MultiSelectScope,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { useClearShiftSelectionOnSortingChange } from 'src/contexts/MultiSelectionContext/useClearShiftSelectionOnSortingChange';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { NoData, Table, VirtuosoScrollEvent } from 'src/tables/Table';\nimport {\n defaultEventsColumnsConfig,\n filterColumnsByFeatures,\n getEventsColumnConfigById,\n} from 'src/utils/columns/columnUtils';\nimport { EventsTableColumnId } from 'src/utils/columns/events/eventsColumnUtils.types';\nimport { CustomEventsColumn } from 'src/utils/columns/events/eventsCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\nimport { getPerformerAndVenueForEvent } from 'src/utils/eventWithDataUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { hasFeatures } from 'src/utils/userUtils';\nimport { SomethingWentWrong } from 'src/views';\nimport {\n ActionOutboxEntityType,\n EntityWithTicketsQuery,\n EventWithData,\n Feature,\n ListingDetailedMetrics,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { isCustomEventsColumn } from '../../utils/columns/events/eventsCustomColumnUtils';\nimport {\n customColumnDef,\n EVENTS_TABLE_COLUMNS_CONFIG,\n EventWithDataAndMetrics,\n tagColumnDef,\n} from './configs/EventsTableColumnsConfig';\n\nexport type EventsTableProps = {\n events: EventWithData[];\n highlightedId?: string;\n failedToRetrieveData: boolean;\n onMount?: () => void;\n onUnmount?: (state: object) => void;\n initState?: InitialTableState;\n useVirtuoso?: boolean;\n usePagination?: boolean;\n useDataGrouping?: boolean;\n withOuterPadding?: boolean;\n onScroll?: (virtuosoScrollEvent: VirtuosoScrollEvent) => void;\n tableHeadStyle?: CSSProperties;\n};\n\nconst PAGE_SIZE = 100;\n\nconst getRowId = (originalRow: EventWithDataAndMetrics | null): string => {\n return (originalRow as EventWithDataAndMetrics)?.event.viagVirtualId ?? '';\n};\n\nexport const EventsTable = ({\n events,\n highlightedId,\n failedToRetrieveData,\n onMount,\n onUnmount,\n initState,\n useVirtuoso,\n usePagination = true,\n useDataGrouping,\n withOuterPadding,\n onScroll,\n tableHeadStyle,\n}: EventsTableProps) => {\n const eventsText = useContent(ContentId.Events);\n const { appContext, loginContext } = useAppContext();\n const { getSelection, selectionMode, setGroupStates } =\n useMultiSelectionContext();\n const listingSelection = getSelection();\n const { filterQuery } = useFilterQueryContext<\n EntityWithTicketsQuery & QueryWithViewMode\n >();\n const { eventDetailedMetrics: detailedMetrics } = useCatalogMetricsContext();\n\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n\n const { data: catalogData } = useCatalogDataContext();\n\n const singlePerformer = filterQuery.performerIds?.length === 1;\n\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const [sorting, setSorting] = useState(\n initState?.sorting || []\n );\n const [pagination, setPagination] = useState({\n pageIndex: initState?.pagination?.pageIndex || 0,\n pageSize: PAGE_SIZE,\n });\n const [grouping, setGrouping] = useState(\n initState?.grouping || []\n );\n\n useClearShiftSelectionOnSortingChange({ sortingState: sorting });\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n const data = useMemo(\n () =>\n events.map((event) => {\n const metrics = detailedMetrics?.[\n event.event.viagVirtualId\n ] as ListingDetailedMetrics;\n const { performer, venue } = getPerformerAndVenueForEvent(\n event.event,\n catalogData\n );\n return {\n ...event,\n performer,\n venue,\n isSinglePerformerView: singlePerformer,\n metrics,\n };\n }),\n [catalogData, detailedMetrics, events, singlePerformer]\n );\n\n // TODO: handle main columns filter\n const { value: storedEventsColumnOrderSetting = defaultEventsColumnsConfig } =\n useServerUserSetting({\n id: UserSetting.EventsColumnOrder,\n });\n const { value: storedEventsColumnsEnabledSetting } = useServerUserSetting<\n string[]\n >({\n id: UserSetting.EventsColumnsEnabled,\n });\n const { value: customEventsColumns = [] } = useServerUserSetting<\n CustomEventsColumn[]\n >({\n id: UserSetting.EventsCustomColumns,\n });\n\n const { tagsMetadata } = useTagsForEntityType(\n ActionOutboxEntityType.SellerEvent,\n true\n );\n\n const displayedColumnsConfig = useMemo(() => {\n const eventsColumnOrder = storedEventsColumnOrderSetting.filter(\n // If storedEventsColumnsEnabledSetting has never been set, default to true\n (c) => storedEventsColumnsEnabledSetting?.includes(c) ?? true\n );\n\n if (\n !hasTablePinActionColumnFeature &&\n !eventsColumnOrder.includes(EventsTableColumnId.Action)\n ) {\n eventsColumnOrder.push(EventsTableColumnId.Action);\n }\n const columns = new Set([\n // Add unconfigurable columns first\n ...Object.values(EVENTS_TABLE_COLUMNS_CONFIG)\n .filter((column) => {\n const columnDef = getEventsColumnConfigById(\n column.id as EventsTableColumnId\n ).personalization;\n const hasFeatureForColumn =\n columnDef.requiredFeatures.length === 0 ||\n hasFeatures(\n loginContext?.user,\n appContext?.features,\n columnDef.requiredFeatures\n );\n\n let isConfigurable = columnDef.isConfigurable;\n if (\n !hasTablePinActionColumnFeature &&\n column.id === EventsTableColumnId.Action\n ) {\n isConfigurable = true;\n }\n\n return !isConfigurable && hasFeatureForColumn;\n })\n .map((item) => item.id as EventsTableColumnId),\n // Add user defined columns next\n ...filterColumnsByFeatures(\n eventsColumnOrder,\n SectionType.Events,\n customEventsColumns,\n loginContext?.user,\n appContext?.features\n ),\n ]);\n\n return Array.from(columns).reduce<\n ColumnDef[]\n >((acc, columnId) => {\n if (tagsMetadata?.find((t) => t.key === columnId)) {\n acc.push(tagColumnDef(columnId));\n } else if (isCustomEventsColumn(columnId)) {\n acc.push(\n customColumnDef(\n columnId,\n customEventsColumns.find((c) => c.id === columnId)?.formula\n )\n );\n } else {\n const columnConfig = Object.values(EVENTS_TABLE_COLUMNS_CONFIG).find(\n (column) => column.id === columnId\n );\n if (columnConfig) acc.push(columnConfig);\n }\n\n return acc;\n }, []);\n }, [\n appContext?.features,\n customEventsColumns,\n hasTablePinActionColumnFeature,\n loginContext?.user,\n storedEventsColumnOrderSetting,\n storedEventsColumnsEnabledSetting,\n tagsMetadata,\n ]);\n\n const rowSelection = useMemo(() => {\n if (!selectionMode && highlightedId) {\n return {\n [highlightedId]: true,\n };\n }\n return listingSelection.groupIds.reduce>(\n (acc, eventId) => {\n acc[eventId] = true;\n return acc;\n },\n {}\n );\n }, [highlightedId, listingSelection.groupIds, selectionMode]);\n\n const onRowSelectionChanged = useCallback(\n (updater: Updater) => {\n const newSelections =\n typeof updater === 'function' ? updater(rowSelection) : updater;\n const newSelectedIds = Object.keys(newSelections).filter(\n (r) => newSelections[r] === true\n );\n if (!selectionMode) {\n newSelectedIds.forEach((id) => {\n if (rowSelection[id] && newSelections[id]) {\n // if both of these are the same value and is true, we need to set it to false\n newSelections[id] = false;\n }\n });\n }\n setGroupStates(newSelections);\n },\n [rowSelection, selectionMode, setGroupStates]\n );\n\n const showCheckbox = selectionMode?.mode === MultiSelectScope.AllGroups;\n\n const options: Partial> =\n useMemo(\n () => ({\n data,\n columns: displayedColumnsConfig,\n state: {\n expanded: useDataGrouping ? true : undefined,\n grouping,\n pagination: usePagination ? pagination : undefined,\n sorting,\n rowSelection,\n columnVisibility: {\n checkbox: showCheckbox,\n },\n columnPinning: {\n right: hasTablePinActionColumnFeature\n ? [EventsTableColumnId.Action]\n : undefined,\n },\n },\n onGroupingChange: setGrouping,\n getRowId: getRowId,\n onRowSelectionChange: onRowSelectionChanged,\n onPaginationChange: usePagination ? setPagination : undefined,\n onSortingChange: (sortingUpdaterFn: any) => {\n const newSortVal = functionalUpdate(sortingUpdaterFn, sorting);\n setSorting(newSortVal);\n },\n enableRowSelection: showCheckbox,\n enableMultiRowSelection: showCheckbox,\n enableGrouping: !!useDataGrouping,\n }),\n [\n data,\n displayedColumnsConfig,\n useDataGrouping,\n grouping,\n usePagination,\n pagination,\n sorting,\n rowSelection,\n showCheckbox,\n hasTablePinActionColumnFeature,\n onRowSelectionChanged,\n ]\n );\n\n return failedToRetrieveData ? (\n }\n />\n ) : data?.length > 0 ? (\n \n ) : (\n // We should never see this - because the events are filtered to only those that has sales\n // So this is to prevent a crash - but this should be looked at\n \n \n \n );\n};\n","import clsx from 'clsx';\nimport { CSSProperties, ReactNode } from 'react';\nimport { ExpandCollapsableContentButton } from 'src/components/common/CollapsableContent/ExpandCollapsableContentButton';\nimport * as styles from 'src/components/Events/EventListing/InventoryEventListing/InventoryFlattenedView.css';\nimport { collapsedRow } from 'src/components/Events/EventListing/InventoryEventListing/InventoryFlattenedView.css';\nimport { useCollapsableViewContext } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { Stack } from 'src/core/ui';\nimport { EventsTable } from 'src/tables/EventsTable/EventsTable';\nimport { EventsTableColumnId } from 'src/utils/columns/events/eventsColumnUtils.types';\nimport { ActionOutboxEntityType, EventWithData } from 'src/WebApiController';\n\nimport { header } from './EventsTableWithInnerGrouping.css';\n\ninterface EventsTableWithInnerGroupingProps {\n before?: ReactNode;\n topListItemBefore?: ReactNode;\n events: EventWithData[];\n columnSettingButton?: ReactNode;\n tableHeadStyle?: CSSProperties;\n highlightEvent?: string; // Event UUID\n}\n\nconst posTableHeadStyle: CSSProperties = {\n position: 'sticky',\n top: '0',\n};\n\nexport const EventsTableWithInnerGrouping = ({\n events,\n before,\n topListItemBefore,\n columnSettingButton,\n highlightEvent,\n}: EventsTableWithInnerGroupingProps) => {\n const { isCollapsedView, setIsCollapsedView } = useCollapsableViewContext();\n const { onScroll } = useCollapsableViewContext();\n\n return (\n \n \n {before}\n \n {topListItemBefore}\n \n {isCollapsedView && (\n setIsCollapsedView(false)}\n />\n )}\n {columnSettingButton}\n \n \n \n );\n};\n","import { MouseEvent, ReactNode } from 'react';\nimport { useToggle } from 'react-use';\nimport { ActiveSortTableColumnProvider } from 'src/contexts/ActiveSortTableColumnContext';\nimport { CollapsableViewProvider } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { ColumnResizingContextProvider } from 'src/contexts/ColumnResizingContext/ColumnResizingContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { ColumnSettingsModal } from 'src/modals/ColumnSettings/ColumnSettings';\nimport { LayoutIcon } from 'src/svgs';\nimport { EventsTableWithInnerGrouping } from 'src/tables/EventsTable/EventsTableWithInnerGrouping';\nimport { CustomEventsColumn } from 'src/utils/columns/events/eventsCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport {\n ActionOutboxEntityType,\n EventWithData,\n UserSetting,\n} from 'src/WebApiController';\n\ntype InventoryDetailedEventViewProps = {\n before?: ReactNode;\n topListItemBefore?: ReactNode;\n items?: EventWithData[];\n highlightEvent?: string; // Event UUID\n /**\n * If provided, the list will scroll to the month containing the event with the given viagogo virtual id\n */\n scrollToEventId?: string;\n};\n\nexport const InventoryDetailedEventView = ({\n items,\n highlightEvent,\n scrollToEventId,\n ...rest\n}: InventoryDetailedEventViewProps) => {\n const [isColumnModalOpen, toggleColumnModal] = useToggle(false);\n const onColumnSettingButtonClickHandler = (\n e: MouseEvent\n ) => {\n e.stopPropagation();\n if (!isColumnModalOpen) toggleColumnModal(true);\n };\n\n return (\n \n \n {isColumnModalOpen ? (\n \n onClose={toggleColumnModal}\n sectionType={SectionType.Events}\n />\n ) : null}\n\n \n \n \n \n \n }\n />\n \n \n \n );\n};\n","import { ComponentProps, ReactNode } from 'react';\nimport { ContentPlaceholder } from 'src/core/POS/ContentPlaceholder';\nimport { mergeProps } from 'src/core/utils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\n\nimport * as styles from './SummaryTile.css';\n\ntype RootProps = Pick, 'style' | 'className'> & {\n children?: ReactNode;\n};\n\nexport function Root({ children, ...props }: RootProps) {\n return (\n
    {children}
    \n );\n}\n\nexport function DateDisplay({ date }: { date: Date }) {\n const currentLocale = getLocaleFromLanguageOrCurrent();\n const month = date.toLocaleString(currentLocale.code, { month: 'long' });\n const day = date.toLocaleString(currentLocale.code, { day: '2-digit' });\n const dayOfWeek = date.toLocaleString(currentLocale.code, {\n weekday: 'short',\n });\n return (\n
    \n
    {month}
    \n
    {day}
    \n
    \n
    {dayOfWeek}
    \n
    \n );\n}\n\nexport function Body({ children }: { children?: ReactNode }) {\n return
    {children}
    ;\n}\n\nexport function Title({ children }: { children?: ReactNode }) {\n return
    {children}
    ;\n}\n\nexport function Description({ children }: { children?: ReactNode }) {\n return
    {children}
    ;\n}\n\nexport function MetricGroup({\n children,\n ...props\n}: { children?: ReactNode } & Pick<\n ComponentProps<'div'>,\n 'style' | 'className'\n>) {\n return (\n
    \n {children}\n
    \n );\n}\n\nexport function Metric({\n showLoadingPlaceholders = false,\n name,\n children,\n}: {\n /**\n * Whether to show a placeholder if the metric value is `undefined`.\n */\n showLoadingPlaceholders?: boolean;\n name?: ReactNode;\n children?: ReactNode;\n}) {\n return (\n
    \n
    {name}
    \n
    \n {showLoadingPlaceholders && children === undefined ? (\n \n ) : (\n children\n )}\n
    \n
    \n );\n}\n","import { MetricTile } from 'src/components/Metrics';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { InventorySummaryListingMetricsDisplayStrings } from 'src/utils/ticketMetricUtils';\n\nimport * as styles from './InventorySummaryWidgets.css';\n\nexport const AverageTicketPriceDisplay = ({\n formattedTotalMetrics,\n}: {\n formattedTotalMetrics:\n | InventorySummaryListingMetricsDisplayStrings\n | undefined\n | null;\n}) => {\n return (\n \n \n \n \n
    \n \n {formattedTotalMetrics?.formattedAverageSalePrice}\n \n {/* Placeholder div with the same height as the metric visual to center the\n text in the same way */}\n
    \n
    \n \n );\n};\n","import { MetricTile } from 'src/components/Metrics';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { InventorySummaryListingMetricsDisplayStrings } from 'src/utils/ticketMetricUtils';\n\nimport * as styles from './InventorySummaryWidgets.css';\n\nexport const SalesAndMarginDisplay = ({\n formattedTotalMetrics,\n}: {\n formattedTotalMetrics:\n | InventorySummaryListingMetricsDisplayStrings\n | undefined\n | null;\n}) => {\n return (\n \n \n \n \n
    \n \n {formattedTotalMetrics?.formattedTotalGrossMargin}\n \n \n {formattedTotalMetrics?.formattedTotalNetProceeds}\n \n
    \n
    \n );\n};\n","import { MetricTile } from 'src/components/Metrics';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { InventorySummaryListingMetricsDisplayStrings } from 'src/utils/ticketMetricUtils';\n\nimport * as styles from './InventorySummaryWidgets.css';\n\nexport const TicketsListedAndSoldDisplay = ({\n formattedTotalMetrics,\n}: {\n formattedTotalMetrics:\n | InventorySummaryListingMetricsDisplayStrings\n | undefined\n | null;\n}) => {\n return (\n \n \n \n \n
    \n \n {formattedTotalMetrics?.formattedTotalSoldPercentage}\n \n \n \n \n
    \n
    \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useMemo } from 'react';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { DATA_REFRESH_RATE_IN_MILLIS_LONG } from 'src/utils/constants/constants';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { CatalogClient } from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useCatalogDataContext } from '../CatalogDataContext';\nimport { useCatalogMetricsContext } from './useCatalogMetricsContext';\n\nexport function useGeSummaryMetricsQuery<\n TMetrics extends { currency: string | null },\n>(\n queryKey: string,\n performerIds: number[] | null | undefined,\n venueIds: number[] | null | undefined,\n mergeCatalogMetrics: (metrics: TMetrics[]) => TMetrics[],\n getCatalogSummaryMetrics?: (\n client: CatalogClient,\n allMetrics: TMetrics[],\n mergeCatalogMetrics: (metrics: TMetrics[]) => TMetrics[]\n ) => Promise,\n disabled?: boolean\n) {\n const { trackError } = useErrorBoundaryContext();\n const { eventsTransformed } = useCatalogDataContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const eventIdsToGetSummaryMetricsFor = useMemo(\n () =>\n (eventsTransformed ?? [])\n .map((ev) => ({\n eventId: ev.event.viagVirtualId,\n performerId: ev.event.perfId,\n venueId: ev.event.venueId,\n }))\n .toSorted((ev1, ev2) => ev1.eventId.localeCompare(ev2.eventId)),\n [eventsTransformed]\n );\n\n const { eventDetailedMetrics, eventMetrics } =\n useCatalogMetricsContext();\n\n const metricsToSummarize = useMemo(() => {\n const detailedMetrics = Object.entries(eventDetailedMetrics ?? {});\n const normalMetrics = Object.entries(eventMetrics ?? {});\n const metrics = (\n detailedMetrics.length ? detailedMetrics : normalMetrics\n ).map(([evId, evMetrics]) => {\n if (performerIds?.length) {\n if (\n eventIdsToGetSummaryMetricsFor.find(\n (eid) =>\n eid.eventId === evId &&\n eid.performerId != null &&\n performerIds.includes(eid.performerId)\n )\n ) {\n return evMetrics;\n }\n } else if (venueIds?.length) {\n if (\n eventIdsToGetSummaryMetricsFor.find(\n (eid) => eid.eventId === evId && venueIds.includes(eid.venueId)\n )\n ) {\n return evMetrics;\n }\n } else {\n return evMetrics;\n }\n\n return null;\n });\n\n return mergeCatalogMetrics(metrics.filter((m) => m != null).map((m) => m!));\n }, [\n eventDetailedMetrics,\n eventIdsToGetSummaryMetricsFor,\n eventMetrics,\n mergeCatalogMetrics,\n performerIds,\n venueIds,\n ]);\n\n const shouldQuery =\n !(\n !getCatalogSummaryMetrics || !activeAccountWebClientConfig.activeAccountId\n ) &&\n metricsToSummarize.length > 0 &&\n !disabled;\n\n const summaryMetricsQuery = useQuery({\n queryKey: [\n `${queryKey}-summary`,\n metricsToSummarize,\n activeAccountWebClientConfig,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n return tryInvokeApi(\n () =>\n getCatalogSummaryMetrics!(\n new CatalogClient(activeAccountWebClientConfig),\n metricsToSummarize,\n mergeCatalogMetrics\n ),\n (error) => {\n // Since this is just loading metrics, we have the data so we'll just ignore that metrics error\n trackError(\n `${CatalogClient.name}.${CatalogClient.prototype.getSummaryMetricsForListings.name}`,\n error,\n {\n eventIds: eventIdsToGetSummaryMetricsFor,\n metricsToSummarize: metricsToSummarize,\n }\n );\n }\n );\n },\n\n enabled: shouldQuery,\n staleTime: Infinity, // Since we're always refetching on an interval, we don't want query to calculate whether the data is stale\n refetchOnWindowFocus: false,\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_LONG,\n });\n\n return {\n summaryMetrics: summaryMetricsQuery.data ?? undefined,\n isLoading: summaryMetricsQuery.isLoading,\n refreshMetrics: () => summaryMetricsQuery.refetch(),\n };\n}\n","import { useCallback } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { logToServer } from 'src/utils/clientLogUtils';\nimport { LoginClient, LogLevel } from 'src/WebApiController';\n\nexport const useGetActiveAccountClientConfig = (requestName: string) => {\n const { activeAccountWebClientConfig, setLoginContext } = useAppContext();\n\n const navigate = useNavigate();\n\n const getActiveAccountClientConfig = useCallback(async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n logToServer(\n LogLevel.Warning,\n requestName,\n 'Null activeAccountId - repulling loginContext',\n { activeAccountWebClientConfig }\n );\n\n const newLogin = await new LoginClient({}).getLoginContext(\n window.location.pathname\n );\n if (!newLogin.isSuccess || newLogin.user?.activeAccount.id == null) {\n logToServer(\n LogLevel.Error,\n requestName,\n 'Null activeAccountId - unable to repull loginContext - reload to refresh login',\n { newLogin }\n );\n navigate(`/login`, {\n state: { returnUrl: window.location.pathname },\n });\n } else {\n logToServer(\n LogLevel.Information,\n requestName,\n 'Null activeAccountId - repull loginContext successful - updating loginContext in app',\n { newLogin }\n );\n setLoginContext(newLogin);\n activeAccountWebClientConfig.activeAccountId =\n newLogin.user.activeAccount.id;\n }\n }\n\n return activeAccountWebClientConfig;\n }, [activeAccountWebClientConfig, navigate, requestName, setLoginContext]);\n\n return getActiveAccountClientConfig;\n};\n","export const EVENT_DETAILED_METRICS_QUERY_KEY =\n 'EventTable.getDetailedMetricsQuery';\n","import { isEmpty } from 'lodash-es';\nimport { FilterToolbarItemId } from 'src/components/Filters';\nimport { ExpandedEventData } from 'src/contexts/CatalogDataContext';\nimport { ErrorTypes } from 'src/contexts/ErrorBoundaryContext';\nimport {\n filterAndflattenListingGroup,\n flattenListingGroup,\n} from 'src/modals/GroupListings/components/groupingUtils';\nimport {\n getPresetFromUiDateTimeRange,\n getUiDateTimeRangeFromPreset,\n InhandDateRangePresetNames,\n} from 'src/utils/dateTimeUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n CatalogClient,\n DateTimeRange,\n GroupType,\n IListingGroupItem,\n Listing,\n ListingClient,\n ListingDetailDataField,\n ListingGroup,\n ListingMetrics,\n ListingMetricsInput,\n ListingQuery,\n PosClientConfig,\n SectionalListingsForEventsInput,\n} from 'src/WebApiController';\n\nexport const getCatalogData = async (\n client: CatalogClient,\n filterQuery: ListingQuery,\n includeCounts: boolean\n) => {\n return await client.getCatalogForListing(filterQuery, includeCounts);\n};\n\n// Don't load sectional data for listing in invisible groups\nconst filterInvisibleGroups = (l: IListingGroupItem): boolean => {\n if (l == null) {\n return false;\n }\n if (l.isLtGrp) {\n return (l as ListingGroup).groupType !== GroupType.Invisible;\n }\n return true;\n};\n\nconst deepOverrideListing = (\n listing: Listing,\n overrides: Record,\n dataToOverride: ListingDetailDataField[]\n) => {\n const groupItems = (listing as ListingGroup).groupItems;\n if (!isEmpty(groupItems)) {\n Object.assign(listing, {\n groupItems: groupItems.map((item) =>\n deepOverrideListing(item as Listing, overrides, dataToOverride)\n ),\n });\n return listing;\n }\n const override = overrides[listing.id];\n if (override) {\n if (\n dataToOverride.includes(ListingDetailDataField.Purchase) &&\n override.dataIsLoaded?.[ListingDetailDataField.Purchase]\n ) {\n Object.assign(listing, {\n isCurUserPo: override.isCurUserPo,\n poBys: override.poBys,\n poCreatedBys: override.poCreatedBys,\n poDate: override.poDate,\n poId: override.poId,\n poOrderId: override.poOrderId,\n poVendAccEmail: override.poVendAccEmail,\n dataIsLoaded: {\n ...listing.dataIsLoaded,\n [ListingDetailDataField.Purchase]: true,\n },\n } as Partial);\n }\n\n if (\n dataToOverride.includes(ListingDetailDataField.Tags) &&\n override.dataIsLoaded?.[ListingDetailDataField.Tags]\n ) {\n Object.assign(listing, {\n tags: override.tags,\n dataIsLoaded: {\n ...listing.dataIsLoaded,\n [ListingDetailDataField.Tags]: true,\n },\n } as Partial);\n }\n }\n return listing;\n};\n\nconst mergeCatalogListings = (\n listings: Listing[],\n overrides: Listing[],\n dataToOverride: ListingDetailDataField[]\n) => {\n if (overrides.length === 0 || dataToOverride.length === 0) {\n return listings;\n }\n\n const overrideById = overrides\n .flatMap(flattenListingGroup)\n .map((listing) => listing as Listing)\n .reduce(\n (map, listing) => {\n map[listing.id] = listing;\n return map;\n },\n {} as Record\n );\n\n return listings.map((listing) =>\n deepOverrideListing(listing, overrideById, dataToOverride)\n );\n};\n\nexport const getCatalogSectionalDataExpanded = async (\n viagogoVirtualIds: string[],\n filterQuery: ListingQuery,\n dataToInclude: ListingDetailDataField[],\n {\n activeAccountWebClientConfig,\n onError,\n }: {\n activeAccountWebClientConfig: PosClientConfig;\n onError?: (error: ErrorTypes) => void;\n },\n currentData?: ExpandedEventData\n) => {\n const emptyResults = viagogoVirtualIds.reduce((results, id) => {\n results[id] = {\n sales: null,\n listings: null,\n ticketGroups: null,\n failedToRetrieveData: false,\n };\n return results;\n }, {} as ExpandedEventData);\n const result = await tryInvokeApi(async () => {\n // Only process listing group when basic data is included\n const processListingGroup = dataToInclude.includes(\n ListingDetailDataField.Basic\n );\n // No current data, we are loading for the first time\n if (currentData == null) {\n const input: SectionalListingsForEventsInput = {\n listingQuery: {\n ...filterQuery,\n // Is is to support the legacy event ID urls\n oldPosEventIds: viagogoVirtualIds\n .filter((id) => id.startsWith('old:'))\n .map((id) => id.substring(4)),\n eventOrMappingIds: viagogoVirtualIds.filter(\n (id) => !id.startsWith('old:')\n ),\n },\n curListings: null,\n };\n // Listing groups will be loaded in the first call\n // TODO: we should add guard to make sure basic data is loaded the first time\n const allListings = await new ListingClient(\n activeAccountWebClientConfig\n ).getListingsSectionalDataForEvents(\n input,\n dataToInclude,\n processListingGroup\n );\n return Promise.resolve(\n Object.entries(allListings).reduce((results, [id, listings]) => {\n results[id] = {\n sales: null,\n listings: listings,\n ticketGroups: null,\n failedToRetrieveData: false,\n };\n return results;\n }, emptyResults)\n );\n } else {\n const curListings = Object.entries(currentData ?? {})\n .flatMap(([_, data]) => data.listings ?? [])\n .flatMap(filterAndflattenListingGroup(filterInvisibleGroups))\n .map((listing) => listing as Listing)\n .map(\n (listing) =>\n ({\n id: listing.id,\n actions: listing.actions,\n seating: listing.seating,\n currency: listing.currency,\n viagVirtualId: listing.viagVirtualId,\n vldPurQty: listing.vldPurQty,\n }) as Listing\n );\n const input: SectionalListingsForEventsInput = {\n listingQuery: {\n ...filterQuery,\n // Is is to support the legacy event ID urls\n oldPosEventIds: viagogoVirtualIds\n .filter((id) => id.startsWith('old:'))\n .map((id) => id.substring(4)),\n eventOrMappingIds: viagogoVirtualIds.filter(\n (id) => !id.startsWith('old:')\n ),\n },\n curListings,\n };\n // Skip processing listing group in the follow up sectional calls\n const overrideListings = await new ListingClient(\n activeAccountWebClientConfig\n ).getListingsSectionalDataForEvents(\n input,\n dataToInclude,\n processListingGroup\n );\n return Promise.resolve(\n Object.entries(currentData).reduce((results, [id, data]) => {\n const override = overrideListings?.[id] ?? [];\n results[id] = {\n ...data,\n listings: mergeCatalogListings(\n data.listings ?? [],\n override,\n dataToInclude\n ),\n };\n return results;\n }, emptyResults)\n );\n }\n }, onError);\n\n if (result) {\n return Promise.resolve(result);\n }\n\n return Promise.resolve(\n viagogoVirtualIds.reduce((results, id) => {\n results[id] = {\n failedToRetrieveData: true,\n sales: null,\n listings: null,\n ticketGroups: null,\n };\n return results;\n }, {} as ExpandedEventData)\n );\n};\n\nexport const getCatalogDataExpanded = async (\n viagogoVirtualIds: string[],\n filterQuery: ListingQuery,\n {\n activeAccountWebClientConfig,\n onError,\n }: {\n activeAccountWebClientConfig: PosClientConfig;\n onError?: (error: ErrorTypes) => void;\n },\n useReadonlyDB = false,\n doNotProcessListingGroups = false\n) => {\n const result = await tryInvokeApi(async () => {\n const allListings = await new ListingClient(\n activeAccountWebClientConfig\n ).getListingsForEvents(\n {\n ...filterQuery,\n // Is is to support the legacy event ID urls\n oldPosEventIds: viagogoVirtualIds\n .filter((id) => id.startsWith('old:'))\n .map((id) => id.substring(4)),\n eventOrMappingIds: viagogoVirtualIds.filter(\n (id) => !id.startsWith('old:')\n ),\n },\n useReadonlyDB,\n doNotProcessListingGroups\n );\n\n const emptyResults = viagogoVirtualIds.reduce((results, id) => {\n results[id] = {\n sales: null,\n listings: null,\n ticketGroups: null,\n failedToRetrieveData: false,\n };\n return results;\n }, {} as ExpandedEventData);\n\n return Promise.resolve(\n Object.entries(allListings).reduce((results, [id, listings]) => {\n results[id] = {\n sales: null,\n listings: listings,\n ticketGroups: null,\n failedToRetrieveData: false,\n };\n return results;\n }, emptyResults)\n );\n }, onError);\n\n if (result) {\n return Promise.resolve(result);\n }\n\n return Promise.resolve(\n viagogoVirtualIds.reduce((results, id) => {\n results[id] = {\n failedToRetrieveData: true,\n sales: null,\n listings: null,\n ticketGroups: null,\n };\n return results;\n }, {} as ExpandedEventData)\n );\n};\n\nexport const getCatalogMetrics = (\n client: CatalogClient,\n filterQuery: ListingQuery,\n rowVersion?: number | null,\n hasMetricsV2Feature?: boolean\n) => {\n return hasMetricsV2Feature\n ? client.getCatalogMetricsForListings(filterQuery, rowVersion ?? undefined)\n : client.getCatalogListingMetrics(filterQuery);\n};\n\nexport const getCatalogSummaryMetrics = (\n client: CatalogClient,\n metrics: ListingMetrics[],\n mergeCatalogMetrics: (metrics: ListingMetrics[]) => ListingMetrics[]\n) => {\n const resultMetrics = mergeCatalogMetrics(metrics);\n if (resultMetrics?.length === 1) {\n return Promise.resolve(resultMetrics[0]);\n }\n return client.getSummaryMetricsForListings(\n resultMetrics.map(\n (m) =>\n ({\n totalTicketQuantity: m.tktQty,\n totalSoldQuantity: m.soldQty,\n totalUnsoldQuantity: m.unsoldQty,\n totalListedQuantity: m.listQty,\n totalUnlistedQuantity: m.unlistQty,\n currencyCode: m.currency,\n /** Total cost of all tickets */\n totalCost: {\n amount: m.ttlCst.amt,\n currencyCode: m.ttlCst.currency ?? m.currency,\n decimalDigits: m.ttlCst.dec,\n display: m.ttlCst.disp,\n },\n /** Total cost of sold tickets */\n totalSoldCost: {\n amount: m.soldCst.amt,\n currencyCode: m.soldCst.currency ?? m.currency ?? m.currency,\n decimalDigits: m.soldCst.dec,\n display: m.soldCst.disp,\n },\n /** Total cost of unsold tickets */\n totalUnsoldCost: {\n amount: m.unsoldCst.amt,\n currencyCode: m.unsoldCst.currency ?? m.currency,\n decimalDigits: m.unsoldCst.dec,\n display: m.unsoldCst.disp,\n },\n /** Total list price of all tickets */\n totalListPrice: {\n amount: m.ttlListPrc.amt,\n currencyCode: m.ttlListPrc.currency ?? m.currency,\n decimalDigits: m.ttlListPrc.dec,\n display: m.ttlListPrc.disp,\n },\n /** Total value of all listed tickets */\n // This is un-used and only exists for backward compatibility\n totalListedValue: {\n amount: 0,\n currencyCode: m.currency,\n decimalDigits: 2,\n display: '',\n },\n /** Total list price of unsold tickets */\n totalUnsoldListPrice: {\n amount: m.ttlUnsoldListPrc.amt,\n currencyCode: m.ttlUnsoldListPrc.currency ?? m.currency,\n decimalDigits: m.ttlUnsoldListPrc.dec,\n display: m.ttlUnsoldListPrc.disp,\n },\n /** Total net proceeds of sold tickets */\n totalNetProceeds: {\n amount: m.netProcs.amt,\n currencyCode: m.netProcs.currency ?? m.currency,\n decimalDigits: m.netProcs.dec,\n display: m.netProcs.disp,\n },\n /** Total gross profit of sold tickets */\n totalGrossProfit: {\n amount: m.pandL.amt,\n currencyCode: m.pandL.currency ?? m.currency,\n decimalDigits: m.pandL.dec,\n display: m.pandL.disp,\n },\n }) as ListingMetricsInput\n )\n );\n};\n\nexport const getEventDetailedMetrics = (\n client: CatalogClient,\n filterQuery: ListingQuery,\n rowVersion?: number | null,\n hasMetricsV2Feature?: boolean\n) =>\n hasMetricsV2Feature\n ? client.getCatalogDetailedMetricsForListings(filterQuery, rowVersion)\n : client.getEventDetailedListingMetrics(filterQuery);\n\nexport const listingQueryValueTransformFromUrl = (\n key: string,\n value: string\n) => {\n if (!value) {\n return value;\n }\n\n const listingsKey = key as keyof ListingQuery;\n if (listingsKey === 'inHandDates') {\n const preset = getUiDateTimeRangeFromPreset(\n value,\n InhandDateRangePresetNames\n );\n if (preset) {\n return preset;\n }\n }\n\n return value;\n};\n\nexport const listingQueryValueTransformToUrl = (\n key: FilterToolbarItemId,\n value: unknown\n) => {\n if (!value) {\n return value;\n }\n\n const listingsKey = key as keyof ListingQuery;\n\n if (listingsKey === 'inHandDates') {\n const preset = getPresetFromUiDateTimeRange(value as DateTimeRange);\n if (preset && InhandDateRangePresetNames.includes(preset.name)) {\n return preset.name;\n }\n }\n\n return value;\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const PerformerVenueDisplayContainer = styled.div`\n padding: ${() =>\n `${vars.spacing.sm} ${vars.spacing.lg} 0 ${vars.spacing.lg}`};\n`;\n","import clsx from 'clsx';\nimport { useMemo } from 'react';\nimport { PerformerCategoryIcon } from 'src/components/common/PerformerCategoryIcon';\nimport {\n MetricsDisplay,\n MetricsDisplayPlaceholder,\n} from 'src/components/Metrics';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useSidePanelContext } from 'src/contexts/SidePanelContext';\nimport { vars } from 'src/core/themes';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport {\n getInventoryListingMetrics,\n getSalesSaleMetrics,\n} from 'src/utils/ticketMetricUtils';\nimport {\n CatalogEntity,\n ListingMetrics,\n Performer,\n SaleMetrics,\n} from 'src/WebApiController';\n\nimport * as styles from './PerformerVenueDisplay.css';\nimport { PerformerVenueDisplayContainer } from './PerformerVenueDisplay.styled';\n\nconst GROUPING_METRICS_PLACEHOLDER_DIMS = { width: '50px' };\n\nexport function PerformerVenueDisplay({\n grouping,\n isSelected,\n onPerformerVenueClicked,\n metricsData,\n hideMetrics,\n disabled,\n}: {\n grouping: CatalogEntity;\n isSelected: boolean;\n onPerformerVenueClicked: (group: CatalogEntity) => void;\n metricsData: Record | undefined;\n hideMetrics?: boolean;\n disabled?: boolean;\n}) {\n const { isCollapsed } = useSidePanelContext();\n const { mainRoute } = useAppContext();\n const { loginContext } = useAppContext();\n const displayMetrics = useMemo(() => {\n if (!metricsData) {\n return null;\n }\n return mainRoute === MainRoute.Sales\n ? getSalesSaleMetrics(\n metricsData[grouping.viagId!] as SaleMetrics,\n false,\n true,\n false\n )\n : getInventoryListingMetrics(\n metricsData[grouping.viagId!] as ListingMetrics,\n loginContext?.user?.activeAccount?.currencyCode\n );\n }, [\n grouping.viagId,\n loginContext?.user?.activeAccount?.currencyCode,\n mainRoute,\n metricsData,\n ]);\n\n const hasCategory = useMemo(() => {\n return (grouping as Performer).categ;\n }, [grouping]);\n\n const mainMetrics = useMemo(\n () => (mainRoute === MainRoute.Sales ? null : displayMetrics?.mainMetrics),\n [displayMetrics?.mainMetrics, mainRoute]\n );\n\n return (\n \n {\n if (!disabled) {\n onPerformerVenueClicked(grouping);\n }\n }}\n title={`${grouping.name} - ${grouping.descr}`}\n className={clsx(styles.mainGroupingDisplayDiv, {\n [styles.mainGroupingDisplaySelected]: isSelected,\n [styles.mainGroupingDisplayCollapsed]: isCollapsed,\n [styles.mainGroupingDisplayDivActive]: !disabled,\n })}\n >\n
    \n
    \n
    \n \n
    {grouping.name}
    \n
    \n {mainMetrics}\n
    \n
    \n\n
    \n \n {hasCategory && (\n \n \n \n )}\n {/* TODO remove this in POS-1218 after the responsiveness of these tiles is fixed*/}\n {grouping.descr?.replace(/ Music$/, '')}\n
    \n {!hideMetrics && (\n \n {displayMetrics == null ? (\n \n ) : (\n \n )}\n \n )}\n
    \n
    \n
    \n
    \n \n \n );\n}\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const PerformerVenueFilterBarDiv = styled.div<{ isCollapsed: boolean }>`\n display: flex;\n gap: ${() => vars.spacing.sm};\n padding: ${() => `${vars.spacing.lg} ${vars.spacing.xl}`};\n justify-content: ${(props) =>\n props.isCollapsed ? 'flex-end' : 'space-between'};\n align-items: center;\n border-bottom: 0;\n position: relative;\n`;\n\nexport const SortButtonContainer = styled.div`\n padding-inline-start: ${() => vars.spacing.sm};\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `padding-inline-start: ${vars.spacing.lg};`\n )}`}\n`;\n","import { debounce } from 'lodash-es';\nimport { useCallback, useMemo } from 'react';\nimport { SwiperButton } from 'src/components/Buttons/SwiperButton';\nimport { ReportFilterEditabilityDropdown } from 'src/components/FilterToolbar/FilterDialogV2/FiltersList/ReportFilterEditabilityDropdown';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useSidePanelContext } from 'src/contexts/SidePanelContext';\nimport { PosSelectableSearchBox } from 'src/core/POS/PosSearchBox/PosSelectableSearchBox';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EVENT_GROUPING_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n DEFAULT_REPORT_FILTER_EDITABILITY,\n ReportFilterEditability,\n ReportPerformerVenueFilterItemId,\n} from 'src/utils/reportsFilterUtils';\nimport { EventGroupingType } from 'src/WebApiController';\n\nimport { PerformerVenueFilterBarDiv } from './PerformerVenueFilterBar.styled';\nimport type { PerformerVenueFilterBarProps } from './PerformerVenueFilterBar.types';\n\nexport function PerformerVenueFilterBar({\n groupingQuery,\n onGroupingQueryChanged,\n onEditabilityChange,\n performerFilterEditability,\n venueFilterEditability,\n embeddedDisplayOnly,\n swiperRef,\n}: PerformerVenueFilterBarProps) {\n const searchPlaceholderText = useContent(ContentId.Search);\n const { isCollapsed } = useSidePanelContext();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedOnSearchChange = useCallback(\n debounce((text: string) => {\n if (text !== groupingQuery.searchText) {\n onGroupingQueryChanged({\n ...groupingQuery,\n searchText: text || null,\n });\n }\n }, 200),\n [groupingQuery]\n );\n\n const onSearchChange = useCallback(\n (searchText: string) => debouncedOnSearchChange(searchText),\n [debouncedOnSearchChange]\n );\n\n const onSelectorChange = useCallback(\n (groupingType: EventGroupingType | null) => {\n if (groupingType !== groupingQuery.groupingType) {\n onGroupingQueryChanged({\n ...groupingQuery,\n groupingType: groupingType!, // null is not a selectable option for this enum filter\n });\n }\n },\n [groupingQuery, onGroupingQueryChanged]\n );\n\n const activeReportFilterId = useMemo(() => {\n return groupingQuery.groupingType === EventGroupingType.Performer\n ? ReportPerformerVenueFilterItemId.PerformerIds\n : ReportPerformerVenueFilterItemId.VenueIds;\n }, [groupingQuery.groupingType]);\n\n const activeEditability = useMemo(() => {\n return groupingQuery.groupingType === EventGroupingType.Performer\n ? performerFilterEditability\n : venueFilterEditability;\n }, [\n groupingQuery.groupingType,\n performerFilterEditability,\n venueFilterEditability,\n ]);\n\n const activeValueOptionsContent = useMemo(() => {\n if (!embeddedDisplayOnly) {\n return EVENT_GROUPING_TO_CID;\n }\n\n return Object.entries(EVENT_GROUPING_TO_CID).reduce(\n (acc, [key, value]) => {\n if (\n key === EventGroupingType.Performer &&\n (performerFilterEditability ?? DEFAULT_REPORT_FILTER_EDITABILITY) !==\n ReportFilterEditability.Hidden\n ) {\n acc[key as EventGroupingType] = value;\n }\n if (\n key === EventGroupingType.Venue &&\n (venueFilterEditability ?? DEFAULT_REPORT_FILTER_EDITABILITY) !==\n ReportFilterEditability.Hidden\n ) {\n acc[key as EventGroupingType] = value;\n }\n return acc;\n },\n {} as Record\n );\n }, [embeddedDisplayOnly, performerFilterEditability, venueFilterEditability]);\n\n const selectorProps = useMemo(\n () => ({\n value: groupingQuery.groupingType || EventGroupingType.Performer,\n defaultValue: EventGroupingType.Performer,\n onChange: onSelectorChange,\n valueOptionsContent: activeValueOptionsContent,\n }),\n [activeValueOptionsContent, groupingQuery.groupingType, onSelectorChange]\n );\n\n return (\n \n {!isCollapsed && (\n \n \n {!embeddedDisplayOnly && onEditabilityChange != null && (\n \n )}\n \n )}\n \n \n );\n}\n","import styled from 'styled-components/macro';\n\nexport const SelectedPerformerVenueContainer = styled.div`\n position: absolute;\n overflow: hidden;\n width: 100%;\n z-index: 2;\n box-shadow: 0px 10px 10px -5px ${(props) => props.theme.colors.textPrimary};\n`;\n","import styled from 'styled-components/macro';\n\nexport const SelectedPerformerVenueListContainer = styled.div<{\n isOpen: boolean;\n}>`\n display: flex;\n flex-direction: column;\n width: 100%;\n max-height: ${(props) => (props.isOpen ? 'calc(40vh - 41px)' : '0')};\n overflow: auto;\n background: ${(props) => props.theme.colors.backgroundSecondary};\n transition: max-height 0.5s;\n`;\n","import { CatalogEntity } from 'src/WebApiController';\n\nimport { PerformerVenueDisplay } from '../PerformerVenueDisplay';\nimport { SelectedPerformerVenueListContainer } from './SelectedPerformerVenueList.styled';\n\nexport const SelectedPerformerVenueList = ({\n selectedPerformerVenues,\n isOpen,\n onPerformerVenueClicked,\n metricsData,\n disabled,\n}: {\n selectedPerformerVenues: CatalogEntity[];\n isOpen: boolean;\n onPerformerVenueClicked: (g: CatalogEntity) => void;\n metricsData: Record | undefined;\n disabled?: boolean;\n}) => {\n return (\n \n {selectedPerformerVenues.map((mg) => (\n \n ))}\n \n );\n};\n","import clsx from 'clsx';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ChevronDownIcon, ChevronUpIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './SelectedPerformerVenueListDivider.css';\n\nexport const SelectedPerformerVenuesDivider = ({\n selectedCount,\n totalCount,\n isOpened,\n onClick,\n}: {\n selectedCount: number;\n totalCount: number;\n isOpened?: boolean;\n onClick?: () => void;\n}) => {\n const clickable = Boolean(onClick);\n const upIcon = isOpened ? : ;\n return (\n \n
    \n {clickable && upIcon}\n
    \n {selectedCount} / {totalCount} \n
    \n {clickable && upIcon}\n
    \n
    \n );\n};\n","import { debounce, isEqual } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { ListItem, Virtuoso } from 'react-virtuoso';\nimport removeAccents from 'remove-accents';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { PerformerVenueDisplay } from 'src/components/Events/PerformerVenueList/PerformerVenueDisplay/PerformerVenueDisplay';\nimport { PerformerVenueFilterBar } from 'src/components/Events/PerformerVenueList/PerformerVenueFilterBar/PerformerVenueFilterBar';\nimport { SelectedPerformerVenueContainer } from 'src/components/Events/PerformerVenueList/PerformerVenueList.styled';\nimport { SelectedPerformerVenueList } from 'src/components/Events/PerformerVenueList/SelectedPerformerVenueList';\nimport { SelectedPerformerVenuesDivider } from 'src/components/Events/PerformerVenueList/SelectedPerformerVenueListDivider';\nimport { FilterToolbarItemId } from 'src/components/Filters';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { getEventsWithNonZeroCounts } from 'src/contexts/CatalogDataContext/CatalogDataContext.utils';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { SearchSolidIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n DefaultEventGroupingQuery,\n QueryWithViewMode,\n} from 'src/utils/eventQueryUtils';\nimport { compareLocaleLowercased } from 'src/utils/localeUtils';\nimport {\n DEFAULT_REPORT_FILTER_EDITABILITY,\n ReportFilterEditability,\n} from 'src/utils/reportsFilterUtils';\nimport { SomethingWentWrong } from 'src/views';\nimport {\n ActionOutboxEntityType,\n CatalogEntity,\n EntityWithTicketsQuery,\n EventGroupingQuery,\n EventGroupingType,\n Feature,\n Performer,\n Venue,\n} from 'src/WebApiController';\n\nimport { PerformerVenueFilterBarProps } from './PerformerVenueFilterBar/PerformerVenueFilterBar.types';\nimport * as styles from './PerformerVenueList.css';\n\ntype PerformerVenueListingItem =\n | { entity: CatalogEntity; isSelected: boolean }\n | number;\n\ntype CatalogEntitiesWithGroupingType = {\n entities: CatalogEntity[];\n groupingType: EventGroupingType;\n};\n\nexport type PerformerVenueListProps = {\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Sale\n | ActionOutboxEntityType.TicketGroup;\n onItemsRendered?: (\n items: CatalogEntity[],\n itemType: EventGroupingType\n ) => void;\n hideMetrics?: boolean;\n updateTempQuery?: boolean;\n onEditabilityChange?: (\n filterId: FilterToolbarItemId,\n editability: ReportFilterEditability\n ) => void;\n} & Pick<\n PerformerVenueFilterBarProps,\n | 'onEditabilityChange'\n | 'performerFilterEditability'\n | 'venueFilterEditability'\n | 'embeddedDisplayOnly'\n | 'swiperRef'\n>;\n\nexport function PerformerVenueList({\n entityType,\n onItemsRendered,\n hideMetrics,\n updateTempQuery,\n embeddedDisplayOnly,\n performerFilterEditability,\n venueFilterEditability,\n ...props\n}: PerformerVenueListProps) {\n const defaultGroupingQuery = useMemo(() => {\n return {\n ...DefaultEventGroupingQuery,\n groupingType:\n !embeddedDisplayOnly ||\n (performerFilterEditability ?? DEFAULT_REPORT_FILTER_EDITABILITY) !==\n ReportFilterEditability.Hidden\n ? EventGroupingType.Performer\n : EventGroupingType.Venue,\n };\n }, [embeddedDisplayOnly, performerFilterEditability]);\n\n const [groupingQuery, setGroupingQuery] =\n useState(defaultGroupingQuery);\n const [debouncedGroupingQuery, setDebouncedGroupingQuery] =\n useState(groupingQuery);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debounceWrapper = useCallback(\n debounce((f: EventGroupingQuery) => {\n setDebouncedGroupingQuery(f);\n }, 200),\n []\n );\n\n const handleFilterChange = useCallback(\n (f: EventGroupingQuery) => {\n setGroupingQuery(f);\n debounceWrapper(f);\n },\n [debounceWrapper]\n );\n\n const [selectedPerformerVenuesWithType, setSelectedPerformerVenuesWithType] =\n useState([]);\n const [selectedDividerIsVisibleInList, setSelectedDividerIsVisibleInList] =\n useState(false);\n const [\n selectedDividerButtonShouldBeVisible,\n setSelectedDividerButtonShouldBeVisible,\n ] = useState(false);\n const [showSelectedList, setShowSelectedList] = useState(false);\n\n const { filterQuery, setFilterQuery, setTempQuery } = useFilterQueryContext<\n EntityWithTicketsQuery & QueryWithViewMode\n >();\n const { isLoading, data, errorInfo } = useCatalogDataContext();\n const { performerMetrics, venueMetrics } = useCatalogMetricsContext();\n\n const selectedPerformerVenues: CatalogEntity[] = useMemo(\n () =>\n selectedPerformerVenuesWithType.find(\n (s) => s.groupingType === groupingQuery.groupingType\n )?.entities ?? [],\n [groupingQuery.groupingType, selectedPerformerVenuesWithType]\n );\n\n const updateSelectedPerformerVenues = useCallback(\n (newSelectedPerformerVenues: CatalogEntitiesWithGroupingType[]): void => {\n if (newSelectedPerformerVenues.length) {\n // We want to retain the selected main groupings of other type than currently selected\n // So what when switching back the main grouping type, they won't get cleared\n const selectedPerformerVenuesOtherType =\n selectedPerformerVenuesWithType.filter(\n (s) =>\n !newSelectedPerformerVenues.some(\n (n) => n.groupingType === s.groupingType\n )\n );\n setSelectedPerformerVenuesWithType([\n ...selectedPerformerVenuesOtherType,\n ...newSelectedPerformerVenues,\n ]);\n } else {\n setSelectedPerformerVenuesWithType([]);\n }\n\n const newFilterQuery = { ...filterQuery };\n const performerGroupings = newSelectedPerformerVenues.find(\n (s) => s.groupingType === EventGroupingType.Performer\n );\n const venueGroupings = newSelectedPerformerVenues.find(\n (s) => s.groupingType === EventGroupingType.Venue\n );\n if (performerGroupings) {\n newFilterQuery.performerIds = performerGroupings.entities.length\n ? performerGroupings.entities.map((mg) => mg.viagId!).toSorted()\n : null;\n }\n if (venueGroupings) {\n newFilterQuery.venueIds = venueGroupings.entities.length\n ? venueGroupings.entities.map((mg) => mg.viagId!).toSorted()\n : null;\n }\n\n if (performerGroupings || venueGroupings) {\n if (updateTempQuery) {\n setTempQuery(newFilterQuery);\n }\n setFilterQuery(newFilterQuery);\n }\n },\n [\n filterQuery,\n selectedPerformerVenuesWithType,\n updateTempQuery,\n setTempQuery,\n setFilterQuery,\n ]\n );\n\n const filterPerformerVenues = useCallback(\n (\n groupings: CatalogEntity[] | undefined,\n selectedPerformerVenues: CatalogEntity[]\n ) => {\n if (!groupings) return undefined;\n\n let filteredGroups = [...groupings];\n\n if (selectedPerformerVenues?.length) {\n const curSelectedIds = selectedPerformerVenues.map((mg) => mg.viagId);\n // Any performer id or venue id in the query that is no longer in the result list should be removed (unselected)\n const newAllIds = filteredGroups.map((mg) => mg.viagId);\n const updateSelectedIds = curSelectedIds?.filter((id) =>\n newAllIds.includes(id)\n );\n if (!isEqual(curSelectedIds, updateSelectedIds)) {\n const newSelectedPerformerVenues = selectedPerformerVenues.filter(\n (mg) => updateSelectedIds.includes(mg.viagId)\n );\n\n updateSelectedPerformerVenues([\n {\n entities: newSelectedPerformerVenues,\n groupingType: groupingQuery.groupingType,\n },\n ]);\n }\n }\n\n const searchText = removeAccents(\n debouncedGroupingQuery?.searchText?.toUpperCase() || ''\n );\n if (searchText.length > 0) {\n filteredGroups = filteredGroups.filter((g) => {\n const isSelected = selectedPerformerVenues.some(\n (mg2) => mg2.viagId === g.viagId\n );\n const entity = removeAccents(g.name.toUpperCase());\n const searchTerms = searchText.split(/\\s/); // any whitespace\n\n const isMatchingSearch = searchTerms.every((term) =>\n entity.includes(term)\n );\n // We always keep the selected around\n return isSelected || isMatchingSearch;\n });\n }\n\n // NOTE - For main-grouping, we will sort in-memory because the list is not paged,\n // but if it is paged, we will need to sort server side\n filteredGroups = filteredGroups.toSorted((a, b) => {\n const result = compareLocaleLowercased(a.name, b.name);\n return debouncedGroupingQuery?.isSortDescending ? -1 * result : result;\n });\n\n return filteredGroups;\n },\n [\n debouncedGroupingQuery?.isSortDescending,\n debouncedGroupingQuery?.searchText,\n groupingQuery.groupingType,\n updateSelectedPerformerVenues,\n ]\n );\n\n const onPerformerVenueClicked = useCallback(\n (g: CatalogEntity) => {\n // Clicking will toggle the display\n const newSelectedPerformerVenues =\n selectedPerformerVenues.findIndex((sg) => sg.viagId === g.viagId) >= 0\n ? selectedPerformerVenues.filter((sg) => sg.viagId !== g.viagId)\n : [...selectedPerformerVenues, g];\n\n if (\n newSelectedPerformerVenues.length > 0 &&\n !selectedDividerIsVisibleInList\n ) {\n setSelectedDividerButtonShouldBeVisible(true);\n }\n\n updateSelectedPerformerVenues([\n {\n entities: newSelectedPerformerVenues,\n groupingType: groupingQuery.groupingType,\n },\n ]);\n },\n [\n groupingQuery.groupingType,\n selectedDividerIsVisibleInList,\n selectedPerformerVenues,\n updateSelectedPerformerVenues,\n ]\n );\n\n const selectedPerformerVenuesMap = selectedPerformerVenues.reduce<\n Record\n >((result, cur) => {\n result[cur.viagId!] = cur;\n return result;\n }, {});\n\n const getNonEmptyPerformersAndVenues = useCallback(\n (filterZeroCounts?: boolean) => {\n if (!data?.events) {\n return {};\n }\n\n let events = Object.values(data.events);\n const perfs: Record = {};\n const venues: Record = {};\n events = filterZeroCounts\n ? getEventsWithNonZeroCounts(entityType, events, true)\n : events;\n\n events.forEach((ev) => {\n const p = ev.event.perfId\n ? data?.performers[ev.event.perfId]\n : undefined;\n if (p) {\n perfs[ev.event.perfId!] = p;\n }\n const v = data?.venues[ev.event.venueId];\n if (v) {\n venues[ev.event.venueId!] = v;\n }\n });\n\n return { perfs: Object.values(perfs), venues: Object.values(venues) };\n },\n [data, entityType]\n );\n\n const hasCatalogV2Feature = useUserHasFeature(Feature.CatalogCacheStrategyV2);\n\n const filteredData = useMemo(() => {\n const { perfs, venues } =\n getNonEmptyPerformersAndVenues(hasCatalogV2Feature);\n\n return filterPerformerVenues(\n groupingQuery.groupingType === EventGroupingType.Performer\n ? perfs?.length\n ? perfs\n : undefined\n : venues?.length\n ? venues\n : undefined,\n selectedPerformerVenues\n );\n }, [\n filterPerformerVenues,\n getNonEmptyPerformersAndVenues,\n groupingQuery.groupingType,\n hasCatalogV2Feature,\n selectedPerformerVenues,\n ]);\n\n useEffect(() => {\n // Currently we only need to update `selectedPerformerVenues` according to `filterQuery`\n // When:\n // 1. loading from a url that contains non-empty performerIds/venueIds query params\n // 2. filterQuery has been reset\n if (data === undefined) {\n return;\n }\n\n if (!selectedPerformerVenues.length) {\n const newSelectedPerformerVenues: CatalogEntitiesWithGroupingType[] = [];\n if (filterQuery.performerIds?.length) {\n const groupings = Object.values(data?.performers ?? {}) || [];\n const performerGroupings = groupings.filter(\n (mg) => mg.viagId && filterQuery.performerIds?.includes(mg.viagId)\n );\n\n if (groupingQuery.groupingType !== EventGroupingType.Performer) {\n handleFilterChange({\n ...groupingQuery,\n groupingType: EventGroupingType.Performer,\n });\n // Assigning state directly because `updateSelectedPerformerVenues`\n // Needs to use the state immediately\n groupingQuery.groupingType = EventGroupingType.Performer;\n }\n\n newSelectedPerformerVenues.push({\n entities: performerGroupings,\n groupingType: EventGroupingType.Performer,\n });\n }\n\n if (filterQuery.venueIds?.length) {\n const groupings = Object.values(data?.venues ?? {}) || [];\n const venueGroupings = groupings.filter(\n (mg) => mg.viagId && filterQuery.venueIds?.includes(mg.viagId)\n );\n\n if (!filterQuery.performerIds?.length) {\n if (groupingQuery.groupingType !== EventGroupingType.Venue) {\n handleFilterChange({\n ...groupingQuery,\n groupingType: EventGroupingType.Venue,\n });\n }\n }\n\n newSelectedPerformerVenues.push({\n entities: venueGroupings,\n groupingType: EventGroupingType.Venue,\n });\n }\n\n if (newSelectedPerformerVenues.length) {\n updateSelectedPerformerVenues(newSelectedPerformerVenues);\n }\n }\n\n if (!filterQuery.performerIds?.length && !filterQuery.venueIds?.length) {\n updateSelectedPerformerVenues([]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filterQuery.performerIds, filterQuery.venueIds, data]);\n\n const isSelected = useCallback(\n (mg: CatalogEntity) => {\n const isSelected = selectedPerformerVenuesMap[mg.viagId!];\n return Boolean(isSelected);\n },\n [selectedPerformerVenuesMap]\n );\n\n const getItemsToDisplay = useCallback((): {\n items: PerformerVenueListingItem[];\n indexOfDivider: number;\n } => {\n const { selected, unselected } = (filteredData || []).reduce(\n ({ selected, unselected }, mg) => {\n if (isSelected(mg)) {\n selected.push(mg);\n } else {\n unselected.push(mg);\n }\n return { unselected, selected };\n },\n { unselected: [], selected: [] } as {\n unselected: CatalogEntity[];\n selected: CatalogEntity[];\n }\n );\n\n const items: PerformerVenueListingItem[] = selected.map((mg) => {\n return { entity: mg, isSelected: true };\n });\n\n let indexOfDivider = -1;\n if (selected.length) {\n indexOfDivider = items.length;\n items.push(selected.length);\n }\n\n unselected.forEach((mg) => {\n items.push({ entity: mg, isSelected: false });\n });\n\n return { items, indexOfDivider };\n }, [filteredData, isSelected]);\n\n const { items, indexOfDivider } = getItemsToDisplay();\n\n const onItemsRenderedHandler = (\n items: ListItem[]\n ) => {\n onItemsRendered?.(\n items\n .filter((i) => i.data != null)\n .map((i) => (typeof i.data === 'number' ? undefined : i.data!.entity))\n .filter((i) => i != null)\n .map((i) => i!),\n groupingQuery.groupingType\n );\n\n if (indexOfDivider >= 0 && items.length) {\n // if there is a divider and the divider is not hidden to the top\n const dividerInView = indexOfDivider >= items[0].index;\n\n if (dividerInView) {\n if (!selectedDividerIsVisibleInList)\n setSelectedDividerIsVisibleInList(true);\n if (selectedDividerButtonShouldBeVisible)\n setSelectedDividerButtonShouldBeVisible(false);\n if (showSelectedList) setShowSelectedList(false);\n } else {\n // divider is out of view\n if (selectedDividerIsVisibleInList)\n setSelectedDividerIsVisibleInList(false);\n if (!selectedDividerButtonShouldBeVisible)\n setSelectedDividerButtonShouldBeVisible(true);\n }\n } else {\n if (selectedDividerIsVisibleInList)\n setSelectedDividerIsVisibleInList(false);\n if (selectedDividerButtonShouldBeVisible)\n setSelectedDividerButtonShouldBeVisible(false);\n if (showSelectedList) setShowSelectedList(false);\n }\n };\n\n const showSelectedPerformerVenuesList = () => {\n setShowSelectedList(!showSelectedList);\n };\n\n const NoMatchingContent = useMemo(() => {\n if (groupingQuery.groupingType === EventGroupingType.Performer) {\n return ;\n }\n return ;\n }, [groupingQuery]);\n\n const activeEditability = useMemo(() => {\n return groupingQuery.groupingType === EventGroupingType.Performer\n ? performerFilterEditability\n : venueFilterEditability;\n }, [\n groupingQuery.groupingType,\n performerFilterEditability,\n venueFilterEditability,\n ]);\n\n return (\n
    \n \n
    \n {isLoading && }\n {errorInfo && (\n }\n />\n )}\n {!isLoading && !errorInfo && (\n
    \n {selectedDividerButtonShouldBeVisible &&\n selectedPerformerVenues.length > 0 && (\n \n \n \n \n )}\n {items?.length > 0 && (\n {\n if (typeof d === 'number') {\n return (\n \n );\n } else {\n return (\n \n );\n }\n }}\n />\n )}\n {items?.length === 0 && (\n \n \n \n }\n >\n \n \n \n \n {NoMatchingContent}\n \n \n )}\n
    \n )}\n
    \n
    \n );\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport { useBulkEditHubContext } from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Popover, Stack } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { parseBulkEditMethodName } from 'src/hooks/useBulkEditHub';\nimport { CrossIcon, IconsFill, LoadingIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { BulkEditStep } from 'src/WebApiController';\n\nimport {\n BulkEditStatus,\n BulkEditStatusProps,\n} from '../BulkEditStatus/BulkEditStatus';\nimport {\n ActionOutboxEntityTypeForBulkEdit,\n getTitleForMethod,\n} from '../BulkEditStatus/bulkEditUtils';\nimport * as styles from './BulkEditStatusPopover.css';\n\nexport const BulkEditStatusPopoverContent = ({\n titleContentId,\n ...rest\n}: BulkEditStatusProps & { titleContentId: ContentId }) => {\n return (\n \n \n \n \n );\n};\n\nexport const BulkEditStatusPopover = ({\n entityType,\n}: {\n entityType: ActionOutboxEntityTypeForBulkEdit;\n}) => {\n const [isPopoverOpen, setIsPopoverOpen] = useState(false);\n const [showSpinner, setShowSpinner] = useState(false);\n\n const {\n progress,\n setProgress,\n errors,\n warnings,\n mainDialogOpened,\n setPreview,\n setCurJob,\n ...rest\n } = useBulkEditHubContext();\n\n const isDone =\n progress?.step === BulkEditStep.Done ||\n progress?.step === BulkEditStep.Cancelled;\n\n useEffect(() => {\n if (!showSpinner && !isDone) {\n setShowSpinner(true);\n }\n if (isDone && !isPopoverOpen && !mainDialogOpened) {\n setIsPopoverOpen(true);\n }\n }, [isDone, isPopoverOpen, mainDialogOpened, showSpinner]);\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { refreshData } = usePurchaseDataContext();\n\n const onRefreshDoneData = useCallback(async () => {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n // Depending whether it's Listing, Sales, or Purchase\n // the context would be different here\n if (refreshData) {\n await refreshData(true);\n }\n if (refreshExpandedListItems) {\n await refreshExpandedListItems();\n }\n\n setIsRefreshing(false);\n }, [refreshData, refreshExpandedListItems, setActivePosEntity]);\n\n if ((!isPopoverOpen && !showSpinner) || progress == null) {\n return null;\n }\n\n return (\n {\n if (\n open == false && // closing\n progress?.step === BulkEditStep.Done // progress is done\n ) {\n await onRefreshDoneData();\n\n setShowSpinner(false);\n setProgress(undefined);\n setCurJob(undefined);\n }\n\n setIsPopoverOpen(open);\n }}\n >\n \n \n \n \n
    \n \n {\n if (isDone) {\n await onRefreshDoneData();\n\n setShowSpinner(false);\n setProgress(undefined);\n setCurJob(undefined);\n }\n setIsPopoverOpen(false);\n }}\n />\n \n {progress && (\n \n )}\n {isDone && (\n \n {\n setProgress(undefined);\n setPreview(undefined);\n setIsPopoverOpen(false);\n\n await onRefreshDoneData();\n\n setShowSpinner(false);\n setCurJob(undefined);\n }}\n >\n \n \n \n )}\n
    \n
    \n \n );\n};\n","import { useCallback } from 'react';\nimport { SelectAllHotkeys } from 'src/components/common/MultiSelect/Toggle/contants';\nimport { MultiSelectionToggle } from 'src/components/common/MultiSelect/Toggle/MultiSelectionToggle';\nimport {\n MultiSelectScope,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { PosHotkeys } from 'src/core/POS/PosHotkeys';\n\nexport const MultiSelectionToggleGlobal = () => {\n const { selectionMode, setSelectionMode } = useMultiSelectionContext();\n\n const onMultiSelectListingClick = useCallback(() => {\n setSelectionMode(\n selectionMode?.mode !== MultiSelectScope.AllGroups\n ? { mode: MultiSelectScope.AllGroups }\n : undefined\n );\n }, [selectionMode, setSelectionMode]);\n\n const isChecked = selectionMode?.mode === MultiSelectScope.AllGroups;\n\n return (\n \n \n \n );\n};\n","import { useMemo } from 'react';\nimport {\n FilterToolbarGroup,\n FilterToolbarItemId,\n} from 'src/components/Filters';\nimport { getAppliedFilters } from 'src/utils/eventQueryUtils';\n\ninterface FiltersHelpersProps {\n filters: FilterToolbarGroup[];\n initialQuery: TQuery;\n activeQuery: TQuery;\n mandatoryFiltersToShow: FilterToolbarItemId[];\n}\n\ninterface UseFiltersHelpers {\n ignoredKeys: FilterToolbarItemId[];\n appliedFilters: FilterToolbarItemId[];\n}\n\nexport const useFiltersHelpers = ({\n filters,\n initialQuery,\n activeQuery,\n}: FiltersHelpersProps): UseFiltersHelpers => {\n /**\n * Gets the filters keys that are not shown in the UI.\n * For example, sortBy\n */\n const ignoredKeys = useMemo(() => {\n const allVisualFiltersIds = filters.flatMap((filterGroup) =>\n filterGroup.items.map((filter) => filter.filterId)\n );\n const allQueryIds = Object.keys(initialQuery) as FilterToolbarItemId[];\n\n return allQueryIds.filter(\n (filterId) => !allVisualFiltersIds.includes(filterId)\n );\n }, [filters, initialQuery]);\n\n const appliedFilters = useMemo(() => {\n return getAppliedFilters(activeQuery, initialQuery, ignoredKeys, filters);\n }, [filters, ignoredKeys, initialQuery, activeQuery]);\n\n return {\n ignoredKeys,\n appliedFilters,\n };\n};\n","import clsx from 'clsx';\nimport endOfDay from 'date-fns/endOfDay';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n DateRange as ReactDateRange,\n DateRangePickerProps,\n} from 'react-date-range';\nimport {\n Content,\n getContent,\n useContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport {\n DateRange,\n DateRangePresets,\n} from 'src/core/POS/DateRangeSelector/DateRangePresets';\nimport { DateRangeRelativePresets } from 'src/core/POS/DateRangeSelector/DateRangePresets/DateRangeRelativePresets';\nimport {\n CustomDateRangeButton,\n DateErrorContainer,\n DateRangePickerContainer,\n DateRangeTrigger,\n DateRangeTriggerContent,\n IconContainer,\n} from 'src/core/POS/DateRangeSelector/DateRangeSelector.styled';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { DividerLine, Popover, Stack, TooltipPopover } from 'src/core/ui';\nimport {\n CalendarIcon,\n CheckIcon,\n CrossIcon,\n ExpandIcon,\n IconsFill,\n WarningOutlineIcon,\n} from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EVENT_TIME_FRAME_FILTER_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n formatDate,\n getEventTimeFrameFromDateTimeRange,\n NextDateRangePresetNames,\n PastDateRangePresetNames,\n tryGetDateRangePresetSuggestionText,\n tryGetDateRangeRelativePresetSuggestionText,\n validateDate,\n} from 'src/utils/dateTimeUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport {\n DateTimeRangeWithRelative,\n EventTimeFrameFilter,\n} from 'src/WebApiController';\n\nimport * as styles from './EventDateSelector.css';\n\nexport type EventDateSelectorProps = {\n disabled?: boolean;\n eventTimeFrame?: EventTimeFrameFilter | null;\n value?: DateTimeRangeWithRelative | null;\n onChange?: (\n timeFrame?: EventTimeFrameFilter | null,\n value?: DateTimeRangeWithRelative | null\n ) => void;\n useRelativePresets?: boolean;\n /**\n * If true, the site's timezone will be applied to the date being displayed.\n * the underlying date value (value, data, onDateChange) will not be changed.\n */\n useSiteTimeZone?: boolean;\n timeFrameLabelRecord?: Record;\n allEventsLabel?: ContentId;\n} & Omit;\n\nexport const EventDateSelector = ({\n eventTimeFrame,\n value,\n startDatePlaceholder,\n endDatePlaceholder,\n className,\n dateDisplayFormat = 'MM/dd/yyyy',\n retainEndDateOnFirstSelection = true,\n rangeColors = [vars.color.backgroundHighlight],\n locale = getLocaleFromLanguageOrCurrent(),\n onChange,\n disabled,\n useRelativePresets,\n useSiteTimeZone = true,\n onPreviewChange,\n timeFrameLabelRecord = EVENT_TIME_FRAME_FILTER_TO_CID,\n allEventsLabel = ContentId.AllEvents,\n}: EventDateSelectorProps) => {\n const { toZonedTime, fromZonedTime } = useSiteTimezoneContext();\n const contentContext = useContentContext();\n\n const currentLocale = getLocaleFromLanguageOrCurrent();\n const [showDatePicker, setShowDatePicker] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n const [dateValue, setDateValue] = useState({\n start: formatDate(value?.start || '', currentLocale.code),\n end: formatDate(value?.end || '', currentLocale.code),\n });\n const [dateErrors, setDateErrors] = useState([]);\n\n const defaultDateRangeDisplayText = useContent(\n ContentId.DateRangeDisplayText\n );\n const defaultFromlabel = useContent(ContentId.FromDate);\n const defaultToLabel = useContent(ContentId.ToDate);\n const endDateBeforeStartDate = useContent(ContentId.EndDateBeforeStartDate);\n const invalidEndDate = useContent(ContentId.InvalidEndDate);\n const invalidStartDate = useContent(ContentId.InvalidStartDate);\n const dateErrorConfig = useMemo(\n () => ({\n endDateBeforeStartDate,\n invalidEndDate,\n invalidStartDate,\n }),\n [endDateBeforeStartDate, invalidEndDate, invalidStartDate]\n );\n\n const highlightDropBox = !(\n value?.start == null &&\n value?.end == null &&\n value?.relativeStartSecs == null &&\n value?.relativeEndSecs == null\n );\n\n const getDisplayText = useCallback(() => {\n if (\n !value?.start &&\n !value?.end &&\n value?.relativeStartSecs == null &&\n value?.relativeEndSecs == null\n ) {\n return eventTimeFrame == null\n ? getContent(allEventsLabel, contentContext)\n : getContent(timeFrameLabelRecord[eventTimeFrame], contentContext);\n }\n\n const suggestionText = tryGetDateRangePresetSuggestionText(\n value,\n useSiteTimeZone ? toZonedTime : undefined\n );\n\n if (suggestionText) {\n return suggestionText;\n }\n\n const suggestionTextRelative =\n tryGetDateRangeRelativePresetSuggestionText(value);\n\n if (suggestionTextRelative) {\n return suggestionTextRelative;\n }\n\n const { end, start } = dateValue;\n if (value && start) {\n if (useSiteTimeZone && value.start && value.end) {\n const startZoned = formatDate(\n toZonedTime(new Date(value.start)).toISOString(),\n currentLocale.code\n );\n const endZoned = formatDate(\n toZonedTime(new Date(value.end)).toISOString(),\n currentLocale.code\n );\n\n return `${startZoned} - ${endZoned}`;\n }\n return `${start} - ${end}`;\n }\n\n return defaultDateRangeDisplayText;\n }, [\n allEventsLabel,\n contentContext,\n currentLocale.code,\n dateValue,\n defaultDateRangeDisplayText,\n eventTimeFrame,\n timeFrameLabelRecord,\n toZonedTime,\n useSiteTimeZone,\n value,\n ]);\n\n const onDateRangePickerChange = useCallback(\n (\n from: Date | undefined,\n to: Date | undefined,\n timeFrame?: EventTimeFrameFilter | null\n ) => {\n if (!from && !to) {\n onChange?.(EventTimeFrameFilter.Future, null);\n setDateValue({\n start: formatDate('', currentLocale.code),\n end: formatDate('', currentLocale.code),\n });\n }\n\n timeFrame = timeFrame ?? getEventTimeFrameFromDateTimeRange(from, to);\n const newValue: DateTimeRangeWithRelative = value\n ? { ...value }\n : {\n start: null,\n end: null,\n relativeStartSecs: null,\n relativeEndSecs: null,\n roundingMode: null,\n };\n\n if (from == null) {\n newValue.start = null;\n } else {\n newValue.start = from.toISOString();\n }\n if (to == null) {\n newValue.end = null;\n } else {\n newValue.end = to.toISOString();\n }\n\n newValue.relativeStartSecs = null;\n newValue.relativeEndSecs = null;\n\n onChange?.(timeFrame, newValue);\n setDateValue({\n start: formatDate(newValue.start || '', currentLocale.code),\n end: formatDate(newValue.end || '', currentLocale.code),\n });\n },\n [currentLocale.code, onChange, value]\n );\n\n const onEventTimeFrameChanged = useCallback(\n (timeFrame?: EventTimeFrameFilter | null) => {\n onChange?.(timeFrame, null);\n setDateValue({\n start: formatDate('', currentLocale.code),\n end: formatDate('', currentLocale.code),\n });\n },\n [currentLocale.code, onChange]\n );\n\n const onClear = useCallback(() => {\n onDateRangePickerChange(undefined, undefined);\n }, [onDateRangePickerChange]);\n\n const onSuggestionClick = useCallback(\n (range: DateRange, timeRange: EventTimeFrameFilter) => {\n // All the available time-frames are in the past\n onDateRangePickerChange(range.from, range.to, timeRange);\n setIsOpen(false);\n },\n [onDateRangePickerChange]\n );\n\n const onSuggestionRelativeClick = useCallback(\n (range: DateTimeRangeWithRelative) => {\n onChange?.(null, range);\n setDateValue({\n start: formatDate('', currentLocale.code),\n end: formatDate('', currentLocale.code),\n });\n setIsOpen(false);\n },\n [currentLocale.code, onChange]\n );\n\n useEffect(() => {\n const dateErrors = validateDate(dateValue, currentLocale, dateErrorConfig);\n setDateErrors(dateErrors);\n }, [dateValue, dateErrorConfig, currentLocale]);\n\n const isCustomDateRangeSelected = !value?.start || !value?.end;\n\n return (\n {\n setIsOpen(isOpen);\n if (!isOpen) {\n setShowDatePicker(false);\n }\n }}\n >\n \n \n \n
    {getDisplayText()}
    \n
    \n {!disabled &&\n (!!dateValue.start || !!value) &&\n highlightDropBox && (\n \n \n \n )}\n \n
    \n \n
    \n
    \n \n \n onEventTimeFrameChanged(EventTimeFrameFilter.Future)}\n >\n \n {eventTimeFrame === EventTimeFrameFilter.Future &&\n isCustomDateRangeSelected && (\n \n )}\n \n {useRelativePresets ? (\n \n ) : (\n onSuggestionClick(r, EventTimeFrameFilter.Future)}\n selectedDateRange={value}\n hideSuggestionTitle\n useSiteTimeZone={useSiteTimeZone}\n />\n )}\n {useRelativePresets ? (\n \n ) : (\n onSuggestionClick(r, EventTimeFrameFilter.Past)}\n selectedDateRange={value}\n hideSuggestionTitle\n />\n )}\n onEventTimeFrameChanged(EventTimeFrameFilter.Past)}\n >\n \n \n \n }\n >\n \n \n \n {eventTimeFrame === EventTimeFrameFilter.Past &&\n isCustomDateRangeSelected && (\n \n )}\n \n onEventTimeFrameChanged(null)}\n >\n \n \n \n }\n >\n \n \n \n {eventTimeFrame == null &&\n value?.relativeEndSecs == null &&\n value?.relativeStartSecs == null &&\n isCustomDateRangeSelected && (\n \n )}\n \n
    \n \n
    \n setShowDatePicker((val) => !val)}\n >\n
    \n \n
    {' '}\n \n \n {showDatePicker && (\n <>\n
    \n \n {dateErrors.map((err) => (\n
  • {err}
  • \n ))}\n
    \n {\n const startDate =\n range.range.startDate && useSiteTimeZone\n ? fromZonedTime(range.range.startDate)\n : range.range.startDate;\n const endDate = range.range.endDate\n ? useSiteTimeZone\n ? fromZonedTime(endOfDay(range.range.endDate))\n : endOfDay(range.range.endDate)\n : undefined;\n onDateRangePickerChange(startDate, endDate);\n }}\n rangeColors={rangeColors}\n locale={locale}\n />\n \n )}\n \n \n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { useMemo } from 'react';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { OnSaleEventQuery } from 'src/WebApiController';\n\nimport { EventDateSelector } from '../Events/EventDateSelector/EventDateSelector';\nimport { FilterToolbarGroup, FilterToolbarItemId } from '../Filters';\n\nexport const listingsMandatoryFiltersToShow: FilterToolbarItemId[] = [\n 'eventDates',\n];\n\nexport function useDiscoveryFilters() {\n const { tempQuery, setTempQuery } = useFilterQueryContext();\n\n const eventFilter = useMemo(\n () => ({\n titleContentId: ContentId.Events,\n type: 'row',\n items: [\n {\n labelContentId: ContentId.OnSaleDate,\n filterId: 'onSaleDates',\n filterQueryKeys: ['onSaleDates'],\n filterItem: (\n {\n if (!isEqual(dateRange, tempQuery.onSaleDates)) {\n setTempQuery({\n ...tempQuery,\n onSaleDates: dateRange ?? null,\n });\n }\n }}\n />\n ),\n },\n ],\n }),\n [tempQuery, setTempQuery]\n );\n\n const filters = useMemo(\n () => [eventFilter].filter((f) => f).map((f) => f!),\n [eventFilter]\n );\n\n return { filters };\n}\n","import { arrayMove } from '@dnd-kit/sortable';\nimport { castDraft, produce } from 'immer';\nimport { isEmpty, isEqual } from 'lodash-es';\nimport { nanoid } from 'nanoid';\nimport { ReactNode, useCallback, useMemo } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { FilterToolbarProps } from 'src/components/FilterToolbar';\nimport {\n CustomQuickFilterOfListingQuery,\n CustomQuickFilterOfMarketplacePaymentQuery,\n CustomQuickFilterOfOnSaleEventQuery,\n CustomQuickFilterOfPurchaseOrderQuery,\n CustomQuickFilterOfSaleQuery,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { useServerUserSetting, UseUserSettingHook } from './useUserSetting';\n\ntype QuickFiltersState = {\n [id: string]: {\n /**\n * Whether to hide the filter in the quick filter bar.\n */\n isHidden?: boolean;\n order?: number;\n };\n};\n\n/**\n * Map quick filter settings to their data types.\n *\n * Add to this type if new settings are added.\n */\ntype CustomQuickFilterMap = {\n [UserSetting.QuickFiltersCustomInventory]: CustomQuickFilterOfListingQuery;\n [UserSetting.QuickFiltersCustomSales]: CustomQuickFilterOfSaleQuery;\n [UserSetting.QuickFiltersCustomPurchases]: CustomQuickFilterOfPurchaseOrderQuery;\n [UserSetting.QuickFiltersCustomMarketplacePayments]: CustomQuickFilterOfMarketplacePaymentQuery;\n [UserSetting.QuickFiltersCustomOnSaleEvent]: CustomQuickFilterOfOnSaleEventQuery;\n};\n\ntype CustomQuickFilterUserSetting = keyof CustomQuickFilterMap;\n\ntype CustomQuickFilterData =\n CustomQuickFilterMap[S]['data'];\n\n// TODO add test to confirm that the server types are assignable to this\ntype CustomQuickFilter = {\n // This should always match `schemaVersion` from server\n schemaVersion: '2';\n id: string;\n name: string;\n data: D;\n};\n\nexport type DefaultQuickFilter = Omit<\n CustomQuickFilter,\n 'schemaVersion' | 'name'\n> & {\n name: ReactNode;\n};\n\n/**\n * `QuickFilter` augmented with extra fields. This is the type that is returned from the\n * `useQuickFilters` hook.\n */\nexport type ProcessedQuickFilter = (\n | DefaultQuickFilter\n | Omit, 'schemaVersion'>\n) & {\n isCustomFilter: boolean;\n isHidden: boolean;\n};\n\n/**\n * Helper type for consumers of this hook to use for typing default quick filters more easily.\n *\n * Do not use this within the `useQuickFilters` hook.\n */\nexport type QuickFilter = Omit<\n CustomQuickFilterMap[S],\n 'schemaVersion' | 'name'\n> & {\n name: ReactNode;\n};\n\n// Remove eventIds from quick filters\nconst cleanCustomFilters = (\n data: CustomQuickFilterData\n): CustomQuickFilterData => {\n if ('eventIds' in data) {\n return {\n ...data,\n eventIds: null,\n };\n }\n if ('eventDates' in data && !('eventTimeFrameFilter' in data)) {\n // if the filter has eventDates but not eventTimeFrameFilter, we need to add eventTimeFrameFilter=null\n return {\n ...data,\n eventTimeFrameFilter: null,\n };\n }\n\n return data;\n};\n\nexport type UseQuickFiltersOptions<\n S extends CustomQuickFilterUserSetting,\n D = CustomQuickFilterData,\n> = {\n /**\n * Id used to store quick filter state.\n *\n * This will be in the form `UserSetting.QuickFiltersState`.\n *\n * eg. `UserSetting.QuickFiltersStateInventory`\n *\n * **NOTE**: This id cannot be changed or else saved user data for the page will be lost.\n */\n quickFiltersStateSetting:\n | UserSetting.QuickFiltersStateOnSaleEvent\n | UserSetting.QuickFiltersStateInventory\n | UserSetting.QuickFiltersStateSales\n | UserSetting.QuickFiltersStatePurchases\n | UserSetting.QuickFiltersStateMarketplacePayments;\n /**\n * Id used to store custom quick filters.\n *\n * This will be in the form `UserSetting.QuickFiltersCustom`.\n *\n * eg. `UserSetting.QuickFiltersCustomInventory`\n *\n * **NOTE**: This id cannot be changed or else saved user data for the page will be lost.\n */\n customQuickFiltersSetting: S;\n /**\n * Array of default quick filters that cannot be deleted.\n */\n defaultQuickFilters: DefaultQuickFilter[];\n useUserSetting?: UseUserSettingHook;\n};\n\n/**\n * Hook to help with implementing quick filters.\n * @param options\n * @returns\n */\nexport function useQuickFilters<\n S extends CustomQuickFilterUserSetting,\n D = CustomQuickFilterData,\n>({\n quickFiltersStateSetting,\n customQuickFiltersSetting,\n defaultQuickFilters,\n useUserSetting = useServerUserSetting,\n}: UseQuickFiltersOptions) {\n const defaultQuickFiltersState = useMemo(() => ({}), []);\n const {\n value: quickFiltersState = defaultQuickFiltersState,\n setUserSetting: setQuickFiltersState,\n } = useUserSetting({ id: quickFiltersStateSetting });\n\n const defaultCustomQuickFilters = useMemo[]>(\n () => [],\n []\n );\n const {\n value: _customQuickFilters = defaultCustomQuickFilters,\n setUserSetting: setCustomQuickFilters,\n } = useUserSetting[]>({\n id: customQuickFiltersSetting,\n });\n const customQuickFilters = _customQuickFilters.filter((filter) => {\n // XXX POS-1317 skip filters from the old version\n return filter.schemaVersion === '2';\n });\n\n const quickFilters = useMemo[]>(() => {\n const processFilter = (\n isCustomFilter: boolean,\n { id, name, data }: DefaultQuickFilter | CustomQuickFilter\n ): ProcessedQuickFilter => {\n return {\n id,\n name,\n isCustomFilter,\n isHidden: quickFiltersState[id]?.isHidden ?? false,\n data: cleanCustomFilters(data as CustomQuickFilterData) as D,\n };\n };\n\n // merge default and custom quick filters\n const filterSortKeys: {\n order: number;\n originalIndex: number;\n id: string;\n }[] = [];\n const filterMap: { [id: string]: ProcessedQuickFilter } = {};\n defaultQuickFilters.forEach((filter, i) => {\n filterMap[filter.id] = processFilter(false, filter);\n filterSortKeys.push({\n // we default to negative infinity because we want default quick filters to show at the\n // beginning if it has no order set\n order: quickFiltersState[filter.id]?.order ?? Number.NEGATIVE_INFINITY,\n originalIndex: i,\n id: filter.id,\n });\n });\n customQuickFilters.forEach((filter, i) => {\n filterMap[filter.id] = processFilter(true, filter);\n filterSortKeys.push({\n // we default to positive infinity because we want default quick filters to show at the\n // end if it has no order set\n order: quickFiltersState[filter.id]?.order ?? Number.POSITIVE_INFINITY,\n originalIndex: i,\n id: filter.id,\n });\n });\n\n return filterSortKeys\n .toSorted((a, b) => {\n if (a.order === b.order) {\n return a.originalIndex - b.originalIndex;\n }\n return a.order - b.order;\n })\n .map(({ id }) => filterMap[id]);\n }, [quickFiltersState, defaultQuickFilters, customQuickFilters]);\n\n type CustomQuickFilterInput = Omit<\n CustomQuickFilter,\n 'schemaVersion' | 'id'\n >;\n return {\n quickFilters,\n /**\n * Show or hide quick filter within the toolbar.\n * @param id\n * @param isShown\n */\n toggleQuickFilter: (id: string, isShown: boolean) => {\n const newState = produce(quickFiltersState, (draftState) => {\n if (!draftState[id]) {\n draftState[id] = {};\n }\n if (isShown) {\n delete draftState[id].isHidden;\n if (isEmpty(draftState[id])) {\n delete draftState[id];\n }\n } else {\n draftState[id].isHidden = true;\n }\n });\n\n setQuickFiltersState(newState);\n },\n /**\n * @param id The id of the quick filter that was moved.\n * @param overId The id of the quick filter that the moved quick filter should be placed into\n * the location of.\n */\n moveQuickFilter: (id: string, overId: string) => {\n if (id === overId) {\n return;\n }\n\n const ids = quickFilters.map(({ id }) => id);\n const oldIndex = ids.indexOf(id);\n const newIndex = ids.indexOf(overId);\n const movedIds = arrayMove(ids, oldIndex, newIndex);\n const newState = produce(quickFiltersState, (draftState) => {\n movedIds.forEach((id, i) => {\n if (!draftState[id]) {\n draftState[id] = {};\n }\n draftState[id].order = i;\n });\n });\n\n setQuickFiltersState(newState);\n },\n createCustomQuickFilter: ({ name, data }: CustomQuickFilterInput) => {\n const cleanData = cleanCustomFilters(\n data as CustomQuickFilterData\n ) as D;\n\n setCustomQuickFilters(\n produce(customQuickFilters, (draftState) => {\n draftState.push(\n castDraft({\n schemaVersion: '2',\n id: nanoid(),\n name,\n data: cleanData,\n })\n );\n })\n );\n },\n deleteCustomQuickFilter: (id: string) => {\n setCustomQuickFilters(\n customQuickFilters.filter((filter) => filter.id !== id)\n );\n },\n updateCustomQuickFilter: (\n id: string,\n updatedFilter: Partial\n ) => {\n setCustomQuickFilters(\n produce(customQuickFilters, (draftState) => {\n const idx = draftState.findIndex((filter) => filter.id === id);\n if (idx !== -1) {\n if (updatedFilter.name != null) {\n draftState[idx].name = updatedFilter.name;\n }\n if (updatedFilter.data != null) {\n draftState[idx].data = castDraft(updatedFilter.data);\n }\n }\n })\n );\n },\n };\n}\n\nconst QUICK_FILTER_SEARCH_PARAM_KEY = 'quickFilterId';\n\nexport function useQuickFilterSearchParam() {\n const [searchParams] = useSearchParams();\n return searchParams.get(QUICK_FILTER_SEARCH_PARAM_KEY);\n}\n\nexport type UseFilterToolbarQuickFiltersOptions<\n S extends CustomQuickFilterUserSetting,\n TQuery = CustomQuickFilterData,\n> = UseQuickFiltersOptions & {\n currentQuery: TQuery;\n initialQuery: TQuery;\n onSelect: ({ id, query }: { id: string; query: TQuery }) => void;\n};\n\nexport type UseFilterToolbarQuickFiltersReturn = Pick<\n FilterToolbarProps,\n | 'quickFilters'\n | 'isAllSelected'\n | 'onResetAll'\n | 'onToggleQuickFilter'\n | 'onMoveQuickFilter'\n | 'onCreateCustomQuickFilter'\n | 'onDeleteCustomQuickFilter'\n | 'onUpdateCustomQuickFilter'\n>;\n\n/**\n * Hook specifically for use with `FilterToolbar`.\n * @param param0\n * @param param1\n * @returns\n */\nexport function useFilterToolbarQuickFilters<\n S extends CustomQuickFilterUserSetting,\n TQuery = CustomQuickFilterData,\n>({\n currentQuery,\n initialQuery,\n onSelect,\n ...useQuickFiltersOptions\n}: UseFilterToolbarQuickFiltersOptions<\n S,\n TQuery\n>): UseFilterToolbarQuickFiltersReturn {\n const [searchParams, setSearchParams] = useSearchParams();\n const selectedQuickFilterId = searchParams.get(QUICK_FILTER_SEARCH_PARAM_KEY);\n\n const setQuickFilterParam = useCallback(\n (id: string) => {\n setSearchParams((params) => {\n params.set(QUICK_FILTER_SEARCH_PARAM_KEY, id);\n return params;\n });\n },\n [setSearchParams]\n );\n const resetQuickFilterParam = useCallback(() => {\n setSearchParams((params) => {\n params.delete(QUICK_FILTER_SEARCH_PARAM_KEY);\n return params;\n });\n }, [setSearchParams]);\n\n const {\n quickFilters,\n toggleQuickFilter,\n moveQuickFilter,\n createCustomQuickFilter,\n deleteCustomQuickFilter,\n updateCustomQuickFilter,\n } = useQuickFilters(useQuickFiltersOptions);\n const finalQuickFilters = useMemo(() => {\n return quickFilters.map(\n ({ id, name, isCustomFilter, isHidden, data: query }) => {\n return {\n id,\n name,\n isCustomFilter,\n isHidden,\n isSelected: selectedQuickFilterId === id,\n onClick: () => {\n setQuickFilterParam(id);\n onSelect?.({ id, query });\n },\n };\n }\n );\n }, [quickFilters, selectedQuickFilterId, onSelect, setQuickFilterParam]);\n\n return {\n quickFilters: finalQuickFilters,\n isAllSelected:\n selectedQuickFilterId == null && isEqual(currentQuery, initialQuery),\n onToggleQuickFilter: toggleQuickFilter,\n onMoveQuickFilter: moveQuickFilter,\n onCreateCustomQuickFilter: ({ name }) => {\n createCustomQuickFilter({ name, data: currentQuery });\n },\n onDeleteCustomQuickFilter: deleteCustomQuickFilter,\n onUpdateCustomQuickFilter: updateCustomQuickFilter,\n onResetAll: () => {\n resetQuickFilterParam();\n onSelect?.({ id: 'all', query: initialQuery });\n },\n };\n}\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const MetricViewIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n","import { Dispatch, SetStateAction } from 'react';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { PosSearchBox } from 'src/core/POS/PosSearchBox';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const EventEntitySearchBox = ({\n onIdLookup,\n onEventSearch,\n minWidth = 250,\n maxWidth,\n disabled,\n searchText,\n setSearchText,\n clearSearchEntity,\n placeholderContentId = ContentId.SearchEventOrLookupId,\n disableSearchMode,\n}: {\n onIdLookup: (id: string) => void;\n onEventSearch: (searchText: string) => void;\n minWidth?: number | string;\n maxWidth?: number | string;\n disabled?: boolean;\n searchText: string;\n setSearchText: Dispatch>;\n clearSearchEntity?: () => void;\n placeholderContentId?: ContentId;\n disableSearchMode?: boolean;\n}) => {\n const searchPlaceholder = useContent(placeholderContentId);\n return (\n {\n setSearchText(searchText);\n\n if (!searchText && clearSearchEntity) {\n clearSearchEntity();\n } else if (!disableSearchMode) {\n onEventSearch(searchText);\n }\n }}\n onEnterKeyPressed={(curValue) => {\n onIdLookup(curValue);\n\n // If user press enter - they're interested in look-up, not text-search, so clear the search\n // tex so the tables doesn't get empty while the modal opens\n // But only if it's a single-id lookup, if multiple, we keep the search filter because\n // the table needs to display the result set\n if (!curValue.includes(',')) {\n onEventSearch('');\n }\n }}\n />\n );\n};\n","import { debounce, noop } from 'lodash-es';\nimport { useCallback, useEffect, useState } from 'react';\nimport { EventEntitySearchBox } from 'src/components/Accordions/EventEntitySearchBox';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { OnSaleEventQuery } from 'src/WebApiController';\n\nexport function OnSaleEventSearchBox() {\n const [searchText, setSearchText] = useState('');\n\n const {\n filterQuery: onSaleEventQuery,\n tempQuery,\n setFilterQuery,\n } = useFilterQueryContext();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedOnSearchChange = useCallback(\n debounce((text: string) => {\n if (text !== onSaleEventQuery.searchText) {\n setFilterQuery({\n ...onSaleEventQuery,\n searchText: text || null,\n });\n }\n }, 200),\n [onSaleEventQuery]\n );\n\n const clearSearchEntity = useCallback(() => {\n const newQuery = {\n ...tempQuery,\n searchText: null,\n };\n setFilterQuery(newQuery);\n }, [tempQuery, setFilterQuery]);\n\n useEffect(() => {\n setSearchText(onSaleEventQuery.searchText ?? '');\n }, [onSaleEventQuery.searchText]);\n\n return (\n debouncedOnSearchChange(value)}\n searchText={searchText}\n setSearchText={setSearchText}\n clearSearchEntity={clearSearchEntity}\n />\n );\n}\n","import { useMemo } from 'react';\nimport { FormatContent } from 'src/contexts/ContentContext';\nimport { QuickFilter } from 'src/hooks/useQuickFilters';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { getNextDateRange } from 'src/utils/dateTimeUtils';\nimport {\n DateTimeRangeWithRelative,\n OnSaleEventQuery,\n OnSaleEventViewMode,\n UserSetting,\n} from 'src/WebApiController';\n\nexport const useDefaultOnSaleEventFilter = ({\n initialQuery,\n}: {\n initialQuery: OnSaleEventQuery;\n}) => {\n const defaultQuickFilters = useMemo(() => {\n const next7DaysRange = getNextDateRange({ days: 7 }, new Date());\n const next30DaysRange = getNextDateRange({ days: 30 }, new Date());\n const filters: QuickFilter[] = [\n {\n id: 'in7Days',\n name: ,\n data: {\n ...initialQuery,\n viewMode: OnSaleEventViewMode.MetricView,\n onSaleDates: {\n start: next7DaysRange.start.toISOString(),\n end: next7DaysRange.end.toISOString(),\n } as DateTimeRangeWithRelative,\n },\n },\n {\n id: 'in30Days',\n name: ,\n data: {\n ...initialQuery,\n viewMode: OnSaleEventViewMode.MetricView,\n onSaleDates: {\n start: next30DaysRange.start.toISOString(),\n end: next30DaysRange.end.toISOString(),\n } as DateTimeRangeWithRelative,\n },\n },\n ];\n return filters;\n }, [initialQuery]);\n\n return defaultQuickFilters;\n};\n","import { ReactNode, useEffect } from 'react';\nimport { FilterToolbar } from 'src/components/FilterToolbar';\nimport { useFiltersHelpers } from 'src/components/FilterToolbar/useFiltersHelpers';\nimport { ViewModeSelector } from 'src/components/MainFilterBar';\nimport { useDiscoveryFilters } from 'src/components/MainFilterBar/useDiscoveryFilters';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useFilterToolbarQuickFilters } from 'src/hooks/useQuickFilters';\nimport { MetricViewIcon } from 'src/svgs/MetricViewIcon';\nimport { IconsFill } from 'src/svgs/Viagogo';\nimport { ON_SALE_EVENT_VIEW_MODE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n OnSaleEventQuery,\n OnSaleEventViewMode,\n UserSetting,\n} from 'src/WebApiController';\n\nimport * as styles from '../../MainFilterBar/MainFilterBar.css';\nimport { OnSaleEventSearchBox } from '../OnSaleEventSearchBox';\nimport { useDefaultOnSaleEventFilter } from './hooks/useDefaultOnSaleEventFilter';\n\nexport const DISCOVERY_VIEW_MODE_TO_ICON: Record = {\n [OnSaleEventViewMode.MetricView]: (\n \n ),\n};\n\nexport function OnSaleEventFilterBar() {\n const isMobile = useMatchMedia('mobile');\n const { filters } = useDiscoveryFilters();\n\n const {\n filterQuery: onSaleEventQuery,\n initialQuery,\n tempQuery,\n setFilterQuery,\n setTempQuery,\n resetTempQuery,\n } = useFilterQueryContext();\n\n const defaultQuickFilters = useDefaultOnSaleEventFilter({\n initialQuery,\n });\n\n useEffect(() => {\n setTempQuery(onSaleEventQuery);\n }, [onSaleEventQuery, setTempQuery]);\n\n const filterToolbarProps = useFilterToolbarQuickFilters({\n quickFiltersStateSetting: UserSetting.QuickFiltersStateOnSaleEvent,\n customQuickFiltersSetting: UserSetting.QuickFiltersCustomOnSaleEvent,\n defaultQuickFilters,\n currentQuery: onSaleEventQuery,\n initialQuery,\n onSelect: ({ query }) => {\n setFilterQuery(query);\n },\n });\n\n const { appliedFilters } = useFiltersHelpers({\n filters,\n activeQuery: onSaleEventQuery,\n mandatoryFiltersToShow: ['onSaleDates'],\n initialQuery,\n });\n\n const filterToolbar = onSaleEventQuery && (\n setFilterQuery(tempQuery)}\n filters={filters}\n resetTempQuery={resetTempQuery}\n tempQuery={tempQuery}\n showCustomFilterButton={false}\n alwaysShowAllFilters={false}\n />\n );\n\n return (\n
    \n {isMobile ? (\n filterToolbar\n ) : (\n <>\n
    \n
    {filterToolbar}
    \n
    \n
    \n
    \n \n {/* */}\n \n
    \n
    \n \n )}\n
    \n );\n}\n","import { Fragment } from 'react';\nimport {\n FilterToolbarGroup,\n FilterToolbarItemId,\n} from 'src/components/Filters';\nimport {\n EventTagInfoFilter,\n TagInfoFilter,\n useEventTagFilters,\n useTagFilters,\n} from 'src/components/MainFilterBar';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ActionOutboxEntityType } from 'src/WebApiController';\n\nexport type MergedTagFilters = TagInfoFilter & EventTagInfoFilter;\n\ninterface UseMergedTagFiltersProps {\n query: TFilter;\n setQuery: (query: TFilter) => void;\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Purchase\n | ActionOutboxEntityType.Sale;\n includeEventTags?: boolean;\n}\n\nexport const useMergedTagFilters = ({\n query,\n setQuery,\n entityType,\n includeEventTags = true,\n}: UseMergedTagFiltersProps): FilterToolbarGroup[] => {\n const tagFilters = useTagFilters(query, setQuery, entityType);\n const eventTagFilters = useEventTagFilters(query, setQuery);\n\n const tagsFilterGroup: FilterToolbarGroup = {\n titleContentId: ContentId.Tags,\n type: 'row',\n items: [\n // tags\n {\n filterId: 'tagName' as const,\n labelContentId: tagFilters.titleContentId!,\n filterQueryKeys: tagFilters.items\n .map((filterToolbarItem) => filterToolbarItem.filterQueryKeys)\n .flat() as FilterToolbarItemId[],\n filterItem: (\n \n {tagFilters.items.map((filterToolbarItem) => (\n \n {filterToolbarItem.filterItem}\n \n ))}\n \n ),\n },\n ],\n };\n\n if (includeEventTags) {\n tagsFilterGroup.items.push(\n // event tags\n {\n filterId: 'eventTagName' as const,\n labelContentId: eventTagFilters.titleContentId!,\n filterQueryKeys: eventTagFilters.items\n .map((filterToolbarItem) => filterToolbarItem.filterQueryKeys)\n .flat() as FilterToolbarItemId[],\n filterItem: (\n \n {eventTagFilters.items.map((filterToolbarItem) => (\n \n {filterToolbarItem.filterItem}\n \n ))}\n \n ),\n }\n );\n }\n\n return [tagsFilterGroup];\n};\n","import {\n Dispatch,\n SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { usePurchaseVendorAccountSelector } from 'src/components/Selectors/PurchaseVendorAccountSelector/usePurchaseVendorAccountSelector';\nimport { usePurchaseVendorSelector } from 'src/components/Selectors/PurchaseVendorSelector/usePurchaseVendorSelector';\nimport { PosMultiSelectProps } from 'src/core/POS/PosMultiSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PurchaseVendor, PurchaseVendorAccount } from 'src/WebApiController';\n\ninterface AccountSelectorOptions {\n disabled: boolean;\n multiSelectOptions: PosMultiSelectProps['valueOptionsContent'];\n purchaseVendorAccountsByVendorIds: Record;\n availableVendorAccounts: Record;\n onSearchTextChange?: Dispatch>;\n isFetchingNextPage: boolean;\n hasNextPage: boolean;\n fetchNextPage: () => void;\n}\n\nexport const useStandalonePurchaseVendorAccountSelector = ({\n vendorAccountIds,\n}: {\n vendorAccountIds?: string[];\n}): AccountSelectorOptions => {\n const [purchaseVendorAccountsMap, setPurchaseVendorAccountsMap] = useState<\n Record\n >({});\n const { query: purchaseVendorQuery, availableVendors } =\n usePurchaseVendorSelector({});\n\n const [searchText, setSearchText] = useState(undefined);\n const vendorIds = useMemo(() => {\n let vendorIds: number[] = [];\n if (purchaseVendorQuery && !purchaseVendorQuery.isFetching) {\n if (purchaseVendorQuery.data?.length) {\n vendorIds = (purchaseVendorQuery.data ?? []).map(\n (vendor: PurchaseVendor) => vendor.id\n );\n }\n }\n return vendorIds;\n }, [purchaseVendorQuery]);\n\n const noVendorIds = !vendorIds.length;\n\n const onPurchaseVendorAccountsListChange = useCallback(\n (purchaseVendorAccounts: PurchaseVendorAccount[]) => {\n const pvaMap: Record = {};\n purchaseVendorAccounts\n .filter((pva) => availableVendors[pva.vendorId])\n .forEach((purchaseVendorAccount) => {\n const email =\n purchaseVendorAccount.email || purchaseVendorAccount.name;\n if (!email) {\n return;\n }\n const purchaseVendorAccountsList = pvaMap[email] ?? [];\n purchaseVendorAccountsList.push(purchaseVendorAccount);\n pvaMap[email] = purchaseVendorAccountsList;\n });\n setPurchaseVendorAccountsMap(pvaMap);\n },\n [availableVendors]\n );\n\n const multiSelectOptions = useMemo(() => {\n return Object.keys(purchaseVendorAccountsMap).reduce<\n Record\n >((map, email) => {\n map[email] = email;\n return map;\n }, {});\n }, [purchaseVendorAccountsMap]);\n\n const {\n query: purchaseVendorAccountsQuery,\n sortedVendorAccounts,\n availableVendorAccounts,\n } = usePurchaseVendorAccountSelector({\n vendorId: vendorIds,\n disabled: noVendorIds,\n placeholderText: ContentId.AllVendorAccounts,\n searchText,\n vendorAccountIds,\n });\n\n const { isFetchingNextPage, hasNextPage, fetchNextPage } =\n purchaseVendorAccountsQuery;\n\n const purchaseVendorAccounts = sortedVendorAccounts;\n\n useEffect(() => {\n onPurchaseVendorAccountsListChange(purchaseVendorAccounts ?? []);\n }, [onPurchaseVendorAccountsListChange, purchaseVendorAccounts]);\n\n return {\n disabled: noVendorIds || purchaseVendorAccountsQuery.isFetching,\n multiSelectOptions,\n purchaseVendorAccountsByVendorIds: purchaseVendorAccountsMap,\n availableVendorAccounts,\n isFetchingNextPage,\n onSearchTextChange: setSearchText,\n hasNextPage,\n fetchNextPage,\n };\n};\n","import { isEqual } from 'lodash-es';\nimport { useEffect, useMemo, useState } from 'react';\nimport { PurchaseInfoFilter } from 'src/components/MainFilterBar/usePurchaseInfoFilters';\nimport { useStandalonePurchaseVendorAccountSelector } from 'src/components/Selectors/PurchaseVendorAccountSelector/StandaloneMultiplePurchaseVendorAccountSelector/useStandalonePurchaseVendorAccountSelector';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { removeDuplicates } from 'src/utils/miscUtils';\nimport { PurchaseVendorAccount } from 'src/WebApiController';\n\nconst triggerStyles = { style: { width: '100%' } };\n\ninterface StandalonePurchaseVendorAccountsSelectorProps<\n TFilter extends PurchaseInfoFilter,\n> {\n query: TFilter;\n setQuery: (query: TFilter) => void;\n}\n\nexport const StandalonePurchaseVendorAccountsSelector = <\n TFilter extends PurchaseInfoFilter,\n>({\n query,\n setQuery,\n}: StandalonePurchaseVendorAccountsSelectorProps) => {\n const { purchaseVendorAccountIds } = query;\n\n const {\n disabled,\n purchaseVendorAccountsByVendorIds: purchaseVendorAccountsMap,\n isFetchingNextPage,\n hasNextPage,\n fetchNextPage,\n onSearchTextChange,\n } = useStandalonePurchaseVendorAccountSelector({\n vendorAccountIds: purchaseVendorAccountIds || undefined,\n });\n\n const [selectedPurchaseVendorAccounts, setSelectedPurchaseVendorAccounts] =\n useState>({});\n\n // Combines the purchaseVendorAccountsMap that gets updated after search with the selectedPurchaseVendorAccounts\n const purchaseVendorAccountsMapWithSelected = useMemo(() => {\n return {\n ...purchaseVendorAccountsMap,\n ...selectedPurchaseVendorAccounts,\n };\n }, [purchaseVendorAccountsMap, selectedPurchaseVendorAccounts]);\n\n const multiSelectOptions = useMemo(() => {\n return Object.keys(purchaseVendorAccountsMapWithSelected).reduce<\n Record\n >((map, email) => {\n map[email] = email;\n return map;\n }, {});\n }, [purchaseVendorAccountsMapWithSelected]);\n\n const selectedPurchaseVendorAccountEmails = useMemo(() => {\n return Object.keys(selectedPurchaseVendorAccounts);\n }, [selectedPurchaseVendorAccounts]);\n\n useEffect(() => {\n const allPurchaseVendorAccounts = Object.values(\n purchaseVendorAccountsMapWithSelected\n ).flat();\n\n // Get all emails from accountIds\n const emailAccounts =\n (purchaseVendorAccountIds\n ?.map((purchaseVendorAccountId) => {\n return allPurchaseVendorAccounts.find(\n (purchaseVendorAccount) =>\n purchaseVendorAccount.id === purchaseVendorAccountId\n );\n })\n .map((account) => account?.email)\n .filter((email) => !!email) as string[]) ?? [];\n\n const cleanEmailAccounts = removeDuplicates(emailAccounts);\n if (isEqual(cleanEmailAccounts, selectedPurchaseVendorAccountEmails)) {\n return;\n }\n\n const cleanPurchaseVendorAccounts = Object.entries(\n purchaseVendorAccountsMapWithSelected\n ).reduce(\n (acc, [key, value]) => {\n if (cleanEmailAccounts.includes(key)) {\n acc[key] = value;\n }\n return acc;\n },\n {} as { [x: string]: PurchaseVendorAccount[] }\n );\n\n setSelectedPurchaseVendorAccounts(cleanPurchaseVendorAccounts);\n }, [\n purchaseVendorAccountIds,\n purchaseVendorAccountsMapWithSelected,\n selectedPurchaseVendorAccountEmails,\n ]);\n\n return (\n {\n const purchaseVendorAccounts = purchaseVendorAccountEmails.flatMap(\n (email) => purchaseVendorAccountsMapWithSelected[email]\n );\n const purchaseVendorAccountIds = purchaseVendorAccounts.map(\n (purchaseVendorAccount) => purchaseVendorAccount.id\n );\n const cleanPurchaseVendorAccountIds = removeDuplicates(\n purchaseVendorAccountIds\n );\n setQuery({\n ...query,\n purchaseVendorAccountIds:\n cleanPurchaseVendorAccountIds.length > 0\n ? cleanPurchaseVendorAccountIds\n : null,\n });\n\n const adaptPurchaseVendorAccountsToPurchaseVendorAccountsMap =\n purchaseVendorAccounts.reduce<\n Record\n >((acc, purchaseVendorAccount) => {\n const email = purchaseVendorAccount.email;\n\n if (!acc[email]) {\n acc[email] = [];\n }\n\n acc[email].push(purchaseVendorAccount);\n\n return acc;\n }, {});\n\n setSelectedPurchaseVendorAccounts(\n adaptPurchaseVendorAccountsToPurchaseVendorAccountsMap\n );\n }}\n onSearchTextChange={onSearchTextChange}\n valueOptionsContent={multiSelectOptions}\n enableEmptySelection\n placeholderText={ContentId.AllVendorAccounts}\n disabled={disabled}\n isFetchingNextPage={isFetchingNextPage}\n hasNextPage={hasNextPage}\n fetchNextPage={fetchNextPage}\n showSelectedOptionsFirst={true}\n includeSelectedInSearch={true}\n sortMode={'none'}\n />\n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const MetricsIcon = (props: Omit) => {\n return (\n \n \n \n );\n};\n","import { useQuery, UseQueryResult } from '@tanstack/react-query';\nimport { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PosSelectProps } from 'src/core/POS/PosSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { AccessControlProvider, PurchaseClient } from 'src/WebApiController';\n\nexport type UseVendorAccessControlProvidersSelectorProps = {\n disabled?: boolean;\n additionalOptions?: Record;\n additionalOptionsPosition?: 'top' | 'bottom';\n placeholderText?: string | ContentId;\n};\n\nexport const useVendorAccessControlProvidersSelector = ({\n disabled,\n additionalOptions,\n additionalOptionsPosition = 'bottom',\n placeholderText,\n}: UseVendorAccessControlProvidersSelectorProps): {\n query: UseQueryResult;\n posSelectProps: Pick<\n PosSelectProps,\n 'placeholderText' | 'valueOptionsContent'\n >;\n} => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n !disabled && activeAccountWebClientConfig.activeAccountId != null;\n const query = useQuery({\n queryKey: [\n 'getAccessibleAccessControlProviders',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n return tryInvokeApi(\n () => {\n return new PurchaseClient(\n activeAccountWebClientConfig\n ).getAccessibleAccessControlProviders();\n },\n (error) => {\n trackError(\n 'PurchaseClient.getAccessibleAccessControlProviders',\n error\n );\n }\n );\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n });\n\n const availableAccessControlProviders = useMemo(() => {\n const dataSorted = query.data?.toSorted(\n (a: AccessControlProvider, b: AccessControlProvider) =>\n a.name.localeCompare(b.name)\n );\n\n const results = dataSorted?.reduce(\n (r, cur) => {\n r[cur.id] = cur.name;\n return r;\n },\n (additionalOptions && additionalOptionsPosition === 'top'\n ? additionalOptions\n : {}) as Record\n );\n\n return {\n ...(additionalOptionsPosition === 'top' ? additionalOptions : {}),\n ...(results ?? {}),\n ...(additionalOptionsPosition === 'bottom' ? additionalOptions : {}),\n };\n }, [query.data, additionalOptions, additionalOptionsPosition]);\n\n return {\n query,\n posSelectProps: {\n placeholderText: placeholderText ?? ContentId.VendorGroup,\n valueOptionsContent: availableAccessControlProviders,\n },\n };\n};\n","import { PosSelect, PosSelectProps } from 'src/core/POS/PosSelect';\n\nimport {\n useVendorAccessControlProvidersSelector,\n UseVendorAccessControlProvidersSelectorProps,\n} from './useVendorAccessControlProvidersSelector';\n\nexport const VendorAccessControlProvidersSelector = ({\n disabled,\n additionalOptions,\n additionalOptionsPosition,\n placeholderText,\n ...props\n}: Omit &\n UseVendorAccessControlProvidersSelectorProps) => {\n const {\n query: { isLoading },\n posSelectProps,\n } = useVendorAccessControlProvidersSelector({\n additionalOptions,\n additionalOptionsPosition,\n placeholderText,\n });\n\n return (\n \n );\n};\n","import {\n FilterToolbarGroup,\n FilterToolbarItem,\n FilterToolbarItemId,\n} from 'src/components/Filters';\nimport { StandalonePurchaseVendorAccountsSelector } from 'src/components/Selectors/PurchaseVendorAccountSelector';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { DateRangeSelector } from 'src/core/POS/DateRangeSelector';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { vars } from 'src/core/themes';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { MetricsIcon } from 'src/svgs/MetricsIcon';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { YES_ENUM_FILTER_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { PurchaseDateRangePresetNames } from 'src/utils/dateTimeUtils';\nimport { FromYesNoEnum, ToYesNoEnum } from 'src/utils/eventQueryUtils';\nimport { ReportTypes } from 'src/utils/reportsUtils';\nimport { DateTimeRangeWithRelative, Feature } from 'src/WebApiController';\n\nimport { usePurchaseVendorAccountSelector } from '../Selectors/PurchaseVendorAccountSelector/usePurchaseVendorAccountSelector';\nimport { PurchaseVendorSelector } from '../Selectors/PurchaseVendorSelector';\nimport { SellerAccountEmployeeSelector } from '../Selectors/SellerAccountEmployeeSelector';\nimport { VendorAccessControlProvidersSelector } from '../Selectors/VendorAccessControlProvidersSelector/VendorAccessControlProvidersSelector';\n\nexport type PurchaseInfoFilter = {\n purchaseVendorId?: number | null;\n purchaseVendorAccountIds?: string[] | null;\n purchaseBuyerId?: string | null;\n purchaseOrderCreatedBy?: string | null;\n purchaseDates?: DateTimeRangeWithRelative | null;\n purchaseCommissionUserId?: string | null;\n purchaseCancellationDates?: DateTimeRangeWithRelative | null;\n purchaseCancelledOnly?: boolean | null;\n vendorAccessControlProviderId?: number | null;\n};\n\nexport const usePurchaseInfoFilters = ({\n query,\n setQuery,\n reportType,\n showCommissionerFilter,\n showMetricsIndicationOnFilters,\n}: {\n query: TFilter;\n setQuery: (query: TFilter) => void;\n reportType?: ReportTypes;\n showCommissionerFilter?: boolean;\n showMetricsIndicationOnFilters?: boolean;\n}): FilterToolbarGroup => {\n const isReportPage = reportType != null;\n const useRelativePresets = isReportPage;\n\n const hasFilterByCommissionUserFeature = useUserHasFeature(\n Feature.ReportFilterByCommissionUser\n );\n\n const { query: vendorAccountQuery } = usePurchaseVendorAccountSelector({\n vendorId: query.purchaseVendorId,\n });\n\n const metricsIconNote = useContent(ContentId.ThisFilterWillChangeMetrics);\n\n return {\n titleContentId: ContentId.Purchase,\n type: 'row',\n items: [\n {\n filterId: 'purchaseVendorId' as const,\n labelContentId: ContentId.Vendor,\n filterQueryKeys: ['purchaseVendorId'] as FilterToolbarItemId[],\n filterItem: (\n {\n const purchaseVendorId = newId ? +newId : null;\n if (purchaseVendorId !== query?.purchaseVendorId) {\n setQuery({\n ...query,\n purchaseVendorId,\n purchaseVendorAccountIds: null, // changing vendor should reset the vendor-account selection filter\n });\n vendorAccountQuery.refetch();\n }\n }}\n />\n ),\n },\n {\n filterId: 'purchaseVendorAccountIds' as const,\n labelContentId: ContentId.VendorAccount,\n filterQueryKeys: ['purchaseVendorAccountIds'] as FilterToolbarItemId[],\n filterItem: (\n \n ),\n },\n !reportType\n ? {\n filterId: 'vendorAccessControlProviderId' as const,\n labelContentId: ContentId.VendorGroup,\n filterQueryKeys: [\n 'vendorAccessControlProviderId',\n ] as FilterToolbarItemId[],\n filterItem: (\n {\n if (vendorAccessControlProviderId) {\n setQuery({\n ...query,\n vendorAccessControlProviderId: Number(\n vendorAccessControlProviderId\n ),\n });\n }\n }}\n />\n ),\n }\n : null,\n {\n filterId: 'purchaseBuyerId' as const,\n labelContentId: ContentId.PurchasedBy,\n filterQueryKeys: ['purchaseBuyerId'] as FilterToolbarItemId[],\n postfixIcon: showMetricsIndicationOnFilters ? (\n \n ) : undefined,\n filterItem: (\n {\n if (purchaseBuyerId !== query.purchaseBuyerId) {\n setQuery({\n ...query,\n purchaseBuyerId,\n });\n }\n }}\n />\n ),\n },\n {\n filterId: 'purchaseDates' as const,\n labelContentId: ContentId.PurchaseDate,\n filterQueryKeys: ['purchaseDates'] as FilterToolbarItemId[],\n filterItem: (\n \n setQuery({\n ...query,\n purchaseDates: value,\n })\n }\n useRelativePresets={useRelativePresets}\n />\n ),\n },\n {\n filterId: 'purchaseOrderCreatedBy' as const,\n labelContentId: ContentId.CreatedBy,\n filterQueryKeys: ['purchaseOrderCreatedBy'] as FilterToolbarItemId[],\n postfixIcon: showMetricsIndicationOnFilters ? (\n \n ) : undefined,\n filterItem: (\n {\n if (purchaseOrderCreatedBy !== query.purchaseOrderCreatedBy) {\n setQuery({\n ...query,\n purchaseOrderCreatedBy,\n });\n }\n }}\n />\n ),\n },\n ...(hasFilterByCommissionUserFeature &&\n (isReportPage || showCommissionerFilter)\n ? [\n {\n filterId: 'purchaseCommissionUserId' as FilterToolbarItemId,\n labelContentId: ContentId.Commissioner,\n filterQueryKeys: [\n 'purchaseCommissionUserId',\n ] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n purchaseCommissionUserId !==\n query.purchaseCommissionUserId\n ) {\n setQuery({\n ...query,\n purchaseCommissionUserId,\n });\n }\n }}\n />\n ),\n },\n ]\n : []),\n ...(reportType === ReportTypes.Inventory\n ? [\n {\n filterId: 'purchaseCancellationDates' as FilterToolbarItemId,\n labelContentId: ContentId.CancellationDate,\n filterQueryKeys: [\n 'purchaseCancellationDates',\n ] as FilterToolbarItemId[],\n filterItem: (\n \n setQuery({\n ...query,\n purchaseCancellationDates: value,\n })\n }\n useRelativePresets={useRelativePresets}\n />\n ),\n },\n {\n filterId: 'purchaseCancelledOnly' as FilterToolbarItemId,\n labelContentId: ContentId.Cancelled,\n filterQueryKeys: [\n 'purchaseCancelledOnly',\n ] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !==\n ToYesNoEnum(query.purchaseCancelledOnly)\n ) {\n setQuery({\n ...query,\n purchaseCancelledOnly: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ]\n : []),\n ].filter((f) => f!) as FilterToolbarItem[],\n };\n};\n","import { ComponentPropsWithRef } from 'react';\n\nimport { PosMultiSelect } from './PosMultiSelect';\n\nexport function PosEnumMultiSelect({\n values,\n defaultValue,\n onChange,\n valueOptionsContent,\n ...rest\n}: {\n values: EnumType[];\n defaultValue?: EnumType | null;\n valueOptionsContent: Record;\n onChange: (newValues: EnumType[]) => void;\n} & Omit<\n ComponentPropsWithRef,\n 'values' | 'valueOptionsContent' | 'onChange' | 'defaultValue'\n>) {\n return (\n v as string)}\n defaultValue={\n defaultValue === undefined\n ? undefined\n : defaultValue === null\n ? ''\n : defaultValue\n }\n onChange={(newValues: string[]) => {\n onChange(newValues.map((v) => v as EnumType));\n }}\n valueOptionsContent={valueOptionsContent}\n {...rest}\n />\n );\n}\n","import { useMemo } from 'react';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport {\n PosMultiSelect,\n PosMultiSelectProps,\n} from 'src/core/POS/PosMultiSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getEventDisplayText,\n getPerformerAndVenueForEvent,\n} from 'src/utils/eventWithDataUtils';\nimport { EventWithData } from 'src/WebApiController';\n\ntype EventSelectorProps = Omit & {\n filterCallback?: (event?: EventWithData) => boolean;\n};\n\nexport const EventSelector = ({\n filterCallback,\n placeholderText,\n ...props\n}: EventSelectorProps) => {\n // TODO - remove all these logic once Catalog v2 feature is available\n const { data: catalogData, isLoading } = useCatalogDataContext();\n\n const allEvents = useMemo(() => {\n if (!catalogData?.events) return {};\n\n const events = catalogData?.events;\n\n const results = Object.values(events!).reduce(\n (acc, event) => {\n if (\n event.event.viagVirtualId &&\n (filterCallback == null || filterCallback(event))\n ) {\n const { venue, performer } = getPerformerAndVenueForEvent(\n event?.event,\n catalogData\n );\n\n const name = getEventDisplayText(event.event, venue, performer, true);\n\n acc[event.event.viagVirtualId] = name;\n }\n return acc;\n },\n {} as Record\n );\n\n return results;\n }, [catalogData, filterCallback]);\n\n const hasNoEvent = Object.values(allEvents).length == 0;\n\n return (\n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { FilterToolbarItem } from 'src/components/Filters';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { PosEnumMultiSelect } from 'src/core/POS/PosMultiSelect/PosEnumMultiSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EVENT_STATUS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\nimport { EntityWithTicketsQuery } from 'src/WebApiController';\n\nexport const useEventStateFilters = (): FilterToolbarItem[] => {\n const { tempQuery, setTempQuery } = useFilterQueryContext<\n EntityWithTicketsQuery & QueryWithViewMode\n >();\n\n return [\n {\n filterId: 'eventStatuses',\n labelContentId: ContentId.EventState,\n filterQueryKeys: ['eventStatuses'],\n filterItem: (\n {\n const isChanged = !isEqual(eventStatuses, tempQuery.eventStatuses);\n\n setTempQuery({\n ...tempQuery,\n eventStatuses: isChanged ? eventStatuses : [],\n });\n }}\n valueOptionsContent={EVENT_STATUS_TO_CID}\n />\n ),\n },\n ];\n};\n","import { isEqual } from 'lodash-es';\nimport {\n FilterToolbarGroup,\n FilterToolbarItem,\n FilterToolbarItemId,\n useLocationFilter,\n} from 'src/components/Filters';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { PosEnumMultiSelect } from 'src/core/POS/PosMultiSelect/PosEnumMultiSelect';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n PARENT_CATEGORY_TO_CID,\n TOP_LEVEL_CATEGORY_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\nimport {\n EntityWithTicketsQuery,\n EventTimeFrameFilter,\n Feature,\n TopLevelCategory,\n} from 'src/WebApiController';\n\nimport { EventDateSelector } from '../Events/EventDateSelector/EventDateSelector';\nimport { EventSelector } from '../Selectors/EventSelector';\nimport { useEventStateFilters } from './useEventStateFilters';\n\nexport type CommonEventFilter = {\n eventTimeFrameFilter: null;\n eventDates: null;\n countryCodes: null;\n stateProvinceIds: null;\n cityIds: null;\n topLevelCategories: null;\n parentCategories: null;\n eventStatuses: null;\n\n // there are only for the search-views\n eventOrMappingIds: null;\n performerIds: null;\n venueIds: null;\n};\n\nexport const useCommonEventFilters = ({\n showCatalogFilters,\n additionalFilters,\n}: {\n showCatalogFilters?: boolean;\n additionalFilters?: FilterToolbarItem[];\n}): FilterToolbarGroup => {\n const { tempQuery, initialQuery, setTempQuery } = useFilterQueryContext<\n EntityWithTicketsQuery & QueryWithViewMode\n >();\n\n const hasCatalogFilters = useUserHasFeature(Feature.EventSelectorFilter);\n\n const locationFilters = useLocationFilter();\n const eventStateFilters = useEventStateFilters();\n\n const hideCatalogFilters = !showCatalogFilters || !hasCatalogFilters;\n\n return {\n titleContentId: ContentId.Events,\n items: [\n {\n filterId: 'eventDates' as FilterToolbarItemId,\n labelContentId: ContentId.EventDate,\n filterQueryKeys: [\n 'eventDates',\n 'eventTimeFrameFilter',\n ] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n eventTimeFrameFilter !== tempQuery.eventTimeFrameFilter ||\n !isEqual(dateRange, tempQuery.eventDates)\n ) {\n let isSortDescending = tempQuery.isSortDescending;\n if (eventTimeFrameFilter !== EventTimeFrameFilter.Future) {\n // When sorting by past or by all - we do not want to sort by date asc (as that would put the oldest event first)\n // Changing this to desc\n isSortDescending = true;\n } else {\n isSortDescending = initialQuery.isSortDescending;\n }\n\n setTempQuery({\n ...tempQuery,\n eventTimeFrameFilter: eventTimeFrameFilter ?? null,\n eventDates: dateRange ?? null,\n isSortDescending,\n });\n }\n }}\n />\n ),\n },\n ...(hideCatalogFilters\n ? []\n : [\n {\n filterId: 'eventOrMappingIds' as FilterToolbarItemId,\n labelContentId: ContentId.Event,\n filterQueryKeys: ['eventOrMappingIds'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (!isEqual(values, tempQuery.eventOrMappingIds)) {\n setTempQuery({\n ...tempQuery,\n eventOrMappingIds: values ?? null,\n });\n }\n }}\n />\n ),\n },\n ]),\n ...locationFilters,\n {\n filterId: 'topLevelCategories' as FilterToolbarItemId,\n filterQueryKeys: ['topLevelCategories'] as FilterToolbarItemId[],\n labelContentId: ContentId.Genre,\n filterItem: (\n {\n const isChanged = !isEqual(\n topLevelCategories,\n tempQuery.topLevelCategories\n );\n\n setTempQuery({\n ...tempQuery,\n topLevelCategories: isChanged ? topLevelCategories : [],\n });\n }}\n valueOptionsContent={TOP_LEVEL_CATEGORY_TO_CID}\n />\n ),\n },\n {\n filterId: 'parentCategories' as FilterToolbarItemId,\n labelContentId: ContentId.SubGenre,\n filterQueryKeys: ['parentCategories'] as FilterToolbarItemId[],\n filterItem: (\n String(c))\n : []\n }\n onChange={(newValues: string[]) => {\n setTempQuery({\n ...tempQuery,\n parentCategories:\n newValues.length > 0\n ? newValues.map((value) => Number(value))\n : null,\n });\n }}\n searchable={true}\n valueOptionsContent={PARENT_CATEGORY_TO_CID}\n />\n ),\n },\n ...eventStateFilters,\n ...(additionalFilters ?? []),\n ],\n };\n};\n","import { isEqual } from 'lodash';\nimport { useMemo } from 'react';\nimport { FilterToolbarItemId } from 'src/components/Filters';\nimport { useInternalNotesFilter } from 'src/components/Filters/InternalNotesFilter';\nimport { useMergedTagFilters } from 'src/components/MainFilterBar/Tags/useMergedTagFilters';\nimport { usePurchaseInfoFilters } from 'src/components/MainFilterBar/usePurchaseInfoFilters';\nimport { DeliveryTypeSelector } from 'src/components/Selectors/DeliveryTypeSelector';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { DateRangeSelector } from 'src/core/POS/DateRangeSelector';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { Slider } from 'src/core/ui/Slider';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { PurchasePaymentMethodSelectionInput } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n PAYMENT_METHOD_TYPE_TO_CID,\n PURCHASE_PAYMENT_STATUS_TO_CID,\n YES_NO_ENUM_FILTER_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { StandardDateRangePresetNames } from 'src/utils/dateTimeUtils';\nimport { FromYesNoEnum, ToYesNoEnum } from 'src/utils/eventQueryUtils';\nimport { formatNumber } from 'src/utils/numberFormatter';\nimport {\n ActionOutboxEntityType,\n Feature,\n PurchaseOrderQuery,\n PurchaseOrderState,\n} from 'src/WebApiController';\n\nimport {\n CurrencyFilterMultiSelector,\n CurrencyFilterSelector,\n} from '../Selectors/CurrencyFilterSelector';\nimport { useCommonEventFilters } from './useCommonEventFilters';\n\nexport const purchaseMandatoryFiltersToShow: FilterToolbarItemId[] = [\n 'purchaseDates',\n];\n\ninterface PurchaseFiltersParams {\n isHorizontalLayout?: boolean;\n showCommissionerFilter?: boolean;\n showConsignmentFilter?: boolean;\n showCatalogFilters?: boolean;\n showMetricsIndicationOnFilters?: boolean;\n}\n\nexport const usePurchaseFilters = ({\n isHorizontalLayout,\n showCommissionerFilter,\n showConsignmentFilter,\n showCatalogFilters,\n showMetricsIndicationOnFilters,\n}: PurchaseFiltersParams) => {\n const hasFilterByCurrencyCodeMultiFeature = useUserHasFeature(\n Feature.FilterByCurrencyCodeMulti\n );\n const hasFilterByCurrencyCodeFeature = !hasFilterByCurrencyCodeMultiFeature;\n const hasFilterByPaymentCurrencyCodeMultiFeature = useUserHasFeature(\n Feature.FilterByPaymentCurrencyCodeMulti\n );\n const hasFilterPOByPaymentMethodIdFeature = useUserHasFeature(\n Feature.FilterPOByPaymentMethodId\n );\n\n const internalNotesFilter = useInternalNotesFilter({\n entityType: ActionOutboxEntityType.Purchase,\n isHorizontalLayout,\n });\n\n const { initialQuery, tempQuery, setTempQuery } =\n useFilterQueryContext();\n\n const reportType = undefined;\n const purchaseInfoFilters = usePurchaseInfoFilters({\n query: tempQuery,\n setQuery: setTempQuery,\n reportType,\n showCommissionerFilter,\n showMetricsIndicationOnFilters,\n });\n\n const tagsFilter = useMergedTagFilters({\n query: tempQuery,\n setQuery: setTempQuery,\n entityType: ActionOutboxEntityType.Purchase,\n includeEventTags: false,\n });\n\n const eventFilter = useCommonEventFilters({ showCatalogFilters });\n\n return useMemo(() => {\n const costHandle: [number, number] = [\n tempQuery.totalCostLow || 0,\n tempQuery.totalCostHigh || 50000,\n ];\n\n return [\n {\n titleContentId: ContentId.WhenWhereWho,\n type: 'row',\n items: [\n ...purchaseInfoFilters.items,\n ...(showConsignmentFilter\n ? [\n {\n filterId: 'isConsignment' as FilterToolbarItemId,\n labelContentId: ContentId.Consignment,\n filterQueryKeys: ['isConsignment'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !== ToYesNoEnum(tempQuery.isSeatSaver)\n ) {\n setTempQuery({\n ...tempQuery,\n isConsignment: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ]\n : []),\n ],\n },\n {\n titleContentId: ContentId.Payments,\n type: 'row',\n items: [\n {\n filterId: 'paymentDates' as FilterToolbarItemId,\n labelContentId: ContentId.PaymentDate,\n filterQueryKeys: ['paymentDates'] as FilterToolbarItemId[],\n filterItem: (\n \n setTempQuery({\n ...tempQuery,\n paymentDates: value,\n })\n }\n />\n ),\n },\n {\n filterId: 'paymentStatus' as FilterToolbarItemId,\n labelContentId: ContentId.PaymentState,\n filterQueryKeys: ['paymentStatus'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (paymentStatus !== tempQuery.paymentStatus) {\n setTempQuery({\n ...tempQuery,\n paymentStatus: paymentStatus,\n });\n }\n }}\n valueOptionsContent={PURCHASE_PAYMENT_STATUS_TO_CID}\n />\n ),\n },\n {\n filterId: 'paymentMethod' as FilterToolbarItemId,\n labelContentId: ContentId.PaymentType,\n filterQueryKeys: ['paymentMethod'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (paymentMethod !== tempQuery.paymentMethod) {\n setTempQuery({\n ...tempQuery,\n paymentMethod: paymentMethod,\n });\n }\n }}\n valueOptionsContent={PAYMENT_METHOD_TYPE_TO_CID}\n />\n ),\n },\n ...(hasFilterByPaymentCurrencyCodeMultiFeature\n ? [\n {\n filterId: 'paymentCurrencyCodes' as FilterToolbarItemId,\n labelContentId: ContentId.PaymentCurrency,\n filterQueryKeys: [\n 'paymentCurrencyCodes',\n ] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n !isEqual(\n tempQuery.paymentCurrencyCodes,\n newPaymentCurrencyCodes\n )\n ) {\n setTempQuery({\n ...tempQuery,\n paymentCurrencyCodes:\n newPaymentCurrencyCodes?.length\n ? newPaymentCurrencyCodes\n : null,\n });\n }\n }}\n />\n ),\n },\n ]\n : []),\n ...(hasFilterPOByPaymentMethodIdFeature\n ? [\n {\n filterId: 'paymentMethodId' as FilterToolbarItemId,\n labelContentId: ContentId.PaymentMethodUsed,\n filterQueryKeys: ['paymentMethodId'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n paymentMethodId !==\n tempQuery.paymentMethodId?.toString()\n ) {\n setTempQuery({\n ...tempQuery,\n paymentMethodId: paymentMethodId?.length\n ? parseInt(paymentMethodId)\n : null,\n });\n }\n }}\n />\n ),\n },\n ]\n : []),\n ],\n },\n eventFilter,\n {\n titleContentId: ContentId.Delivery,\n type: 'row',\n items: [\n {\n filterId: 'deliveryType' as FilterToolbarItemId,\n labelContentId: ContentId.Delivery,\n filterQueryKeys: ['deliveryType'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (deliveryType !== tempQuery.deliveryType) {\n setTempQuery({\n ...tempQuery,\n deliveryType: deliveryType,\n });\n }\n }}\n allowCustomDeliveryType\n />\n ),\n },\n ],\n },\n {\n titleContentId: ContentId.Status,\n type: 'row',\n items: [\n {\n filterId: 'purchaseOrderState' as FilterToolbarItemId,\n labelContentId: ContentId.ShowVoidCancelledPurchases,\n filterQueryKeys: ['purchaseOrderState'] as FilterToolbarItemId[],\n filterItem: (\n {\n const showCancelledAndVoided = e.target.checked;\n const newPurchaseOrderState = showCancelledAndVoided\n ? null\n : PurchaseOrderState.Active;\n\n if (newPurchaseOrderState !== tempQuery.purchaseOrderState) {\n setTempQuery({\n ...tempQuery,\n purchaseOrderState: newPurchaseOrderState,\n });\n }\n }}\n labelPosition=\"right\"\n label={\n isHorizontalLayout ? undefined : (\n \n )\n }\n />\n ),\n },\n ],\n },\n {\n titleContentId: ContentId.Cost,\n items: [\n {\n filterId: 'totalCostHigh' as FilterToolbarItemId,\n labelContentId: ContentId.TotalCost,\n filterQueryKeys: [\n 'totalCostLow',\n 'totalCostHigh',\n ] as FilterToolbarItemId[],\n filterItem: (\n (\n {formatNumber(n)}\n )}\n onValueChange={([low, high]: [number, number]) => {\n if (\n low !== (tempQuery.totalCostLow || 0) ||\n high !== tempQuery.totalCostHigh\n ) {\n const newQuery = {\n ...tempQuery,\n totalCostLow: low === 0 ? null : low,\n totalCostHigh: high === 50000 ? null : high,\n };\n setTempQuery(newQuery);\n }\n }}\n />\n ),\n },\n ...(hasFilterByCurrencyCodeFeature\n ? [\n {\n filterId: 'currencyCode' as FilterToolbarItemId,\n labelContentId: ContentId.Currency,\n filterQueryKeys: ['currencyCode'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (tempQuery.currencyCode !== newCurrencyCode) {\n setTempQuery({\n ...tempQuery,\n currencyCode: newCurrencyCode?.length\n ? newCurrencyCode\n : null,\n });\n }\n }}\n enableEmptySelection\n />\n ),\n },\n ]\n : []),\n ...(hasFilterByCurrencyCodeMultiFeature\n ? [\n {\n filterId: 'currencyCodes' as FilterToolbarItemId,\n labelContentId: ContentId.Currency,\n filterQueryKeys: ['currencyCodes'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n !isEqual(tempQuery.currencyCodes, newCurrencyCodes)\n ) {\n setTempQuery({\n ...tempQuery,\n currencyCodes: newCurrencyCodes?.length\n ? newCurrencyCodes\n : null,\n });\n }\n }}\n enableEmptySelection\n />\n ),\n },\n ]\n : []),\n ],\n },\n ...tagsFilter,\n ...(internalNotesFilter ? [internalNotesFilter] : []),\n ];\n }, [\n tempQuery,\n purchaseInfoFilters.items,\n showConsignmentFilter,\n initialQuery.paymentDates,\n hasFilterByPaymentCurrencyCodeMultiFeature,\n hasFilterPOByPaymentMethodIdFeature,\n eventFilter,\n isHorizontalLayout,\n hasFilterByCurrencyCodeFeature,\n hasFilterByCurrencyCodeMultiFeature,\n tagsFilter,\n internalNotesFilter,\n setTempQuery,\n ]);\n};\n","import { ReactNode } from 'react';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { Permission } from 'src/WebApiController';\n\ninterface PurchaseGlobalActionsPermissionsWrapperProps {\n children: ReactNode;\n showBulkUpload?: boolean;\n}\n\nexport const PurchaseGlobalActionsPermissionsWrapper = ({\n children,\n showBulkUpload,\n}: PurchaseGlobalActionsPermissionsWrapperProps) => {\n const hasPurchaseUpdatePermission = useUserHasAnyOfPermissions(\n Permission.Purchases_Edit,\n Permission.Purchases_EditOwned\n );\n\n if (!showBulkUpload && !hasPurchaseUpdatePermission) {\n return null;\n }\n\n return <>{children};\n};\n","import { useMemo } from 'react';\nimport { usePurchaseVendorSelector } from 'src/components/Selectors/PurchaseVendorSelector/usePurchaseVendorSelector';\nimport { Content } from 'src/contexts/ContentContext';\nimport { QuickFilter } from 'src/hooks/useQuickFilters';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { KnownVendors } from 'src/utils/constants/knownVendors';\nimport {\n PurchaseOrderQuery,\n PurchasePaymentStatus,\n UserSetting,\n} from 'src/WebApiController';\n\nexport const useDefaultPurchaseFilters = ({\n purchaseQuery,\n initialQuery,\n}: {\n purchaseQuery: PurchaseOrderQuery;\n initialQuery: PurchaseOrderQuery;\n}) => {\n const {\n posSelectProps: { valueOptionsContent: purchaseVendors },\n } = usePurchaseVendorSelector({});\n\n const ticketmasterVendorId = useMemo(\n () =>\n Object.keys(purchaseVendors).find(\n (key) => purchaseVendors[key] === KnownVendors.Ticketmaster\n ),\n [purchaseVendors]\n );\n const defaultQuickFilters = useMemo(() => {\n const filters: QuickFilter[] = [\n {\n id: 'unpaid',\n name: ,\n data: {\n ...initialQuery,\n paymentStatus: PurchasePaymentStatus.Unpaid,\n },\n },\n {\n id: 'refundNeeded',\n name: ,\n data: {\n ...initialQuery,\n paymentStatus: PurchasePaymentStatus.RefundNeeded,\n },\n },\n ];\n if (ticketmasterVendorId) {\n filters.push({\n id: 'ticketmaster',\n name: KnownVendors.Ticketmaster,\n data: {\n ...initialQuery,\n purchaseVendorId: Number(ticketmasterVendorId),\n purchaseVendorAccountIds: null, // changing vendor should reset the vendor-account selection filter\n },\n });\n }\n\n // Default filters aren't supposed to change view mode\n filters.forEach(\n (f: QuickFilter) => {\n f.data.viewMode = purchaseQuery.viewMode;\n }\n );\n return filters;\n }, [initialQuery, purchaseQuery.viewMode, ticketmasterVendorId]);\n\n return defaultQuickFilters;\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const TileViewIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n );\n};\n","import { ReactNode } from 'react';\nimport { FlattenedViewIcon } from 'src/svgs/FlattenedViewIcon';\nimport { TileViewIcon } from 'src/svgs/TileViewIcon';\nimport { IconsFill } from 'src/svgs/Viagogo';\nimport { PurchaseViewMode } from 'src/WebApiController';\n\nexport const PURCHASE_VIEW_MODE_TO_ICON: Record = {\n [PurchaseViewMode.TileView]: (\n \n ),\n [PurchaseViewMode.FlattenedView]: (\n \n ),\n [PurchaseViewMode.EventTileView]: (\n \n ),\n};\n","import { useContent } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PurchaseOrderDetails } from 'src/WebApiController';\n\nimport * as styles from './PurchaseOrderBasicInfo.css';\n\nexport const PurchaseOrderBasicInfo = ({\n purchaseOrder,\n}: {\n purchaseOrder: PurchaseOrderDetails;\n}) => {\n const purchaseOrderIdLabel = useContent(ContentId.UniqueId);\n const vendorLabel = useContent(ContentId.Vendor);\n const vendorAccountNameLabel = useContent(ContentId.VendorAccount);\n const purchaseDateLabel = useContent(ContentId.PurchaseDate);\n\n return (\n
    \n {purchaseOrderIdLabel}\n {purchaseOrder.id}\n\n {vendorLabel}\n {purchaseOrder.vendor?.name}\n\n {vendorAccountNameLabel}\n \n {purchaseOrder.vendAcc?.email || purchaseOrder.vendAcc?.name}\n \n\n {purchaseDateLabel}\n {purchaseOrder.poDate}\n
    \n );\n};\n","import { debounce } from 'lodash-es';\nimport { useCallback, useContext, useEffect, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { EventEntitySearchBox } from 'src/components/Accordions/EventEntitySearchBox';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { FormatContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { SearchResultPickerDialog } from 'src/dialogs/SearchResultPickerDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { PurchaseDeeplinkQueryParam } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { getDeepLinkIdFromUrl } from 'src/utils/deepLinkUtils';\nimport {\n DefaultPurchaseQuery,\n getQueryFromUrl,\n} from 'src/utils/eventQueryUtils';\nimport {\n combineWithTicketGroupIdSimple,\n getPurchaseOrderDetailsModalConfigWithDeepLink,\n splitOutTicketGroupId,\n} from 'src/utils/purchaseUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n Feature,\n PurchaseClient,\n PurchaseOrder,\n PurchaseOrderDetails,\n PurchaseOrderQuery,\n PurchaseViewMode,\n} from 'src/WebApiController';\n\nimport { PurchaseOrderBasicInfo } from '../PurchaseOrderBasicInfo';\n\nexport const PurchaseSearchBox = ({\n isEventPage,\n}: {\n isEventPage?: boolean;\n}) => {\n const hasFullPageEventViewEntitySelection = useUserHasFeature(\n Feature.FullPageEventViewEntitySelection\n );\n const { showErrorDialog } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { setModal, isModalOpen } = useContext(ModalContext);\n const [searchText, setSearchText] = useState('');\n\n const { closeDialog, launchDialog, dialogProps } = useBasicDialog();\n\n const [searchId, setSearchId] = useState();\n const [searchResults, setSearchResults] = useState();\n const [isLoadingSearch, setIsLoadingSearch] = useState(false);\n const { posEntity: purchase, setActivePosEntity } =\n useActivePosEntityContext();\n\n const {\n filterQuery: purchaseQuery,\n initialQuery,\n tempQuery,\n setFilterQuery,\n } = useFilterQueryContext();\n\n const clearSearchEntity = useCallback(() => {\n const newQuery = {\n ...tempQuery,\n searchText: null,\n entityIds: null,\n marketplaceEntityIds: null,\n };\n setFilterQuery(newQuery);\n }, [tempQuery, setFilterQuery]);\n\n const onLookupById = useCallback(\n async (idText: string, isSearching: boolean) => {\n const { id, ticketGroupId } = splitOutTicketGroupId(idText);\n const idNum = Number(id);\n const idStr = String(id);\n if (\n !id &&\n tempQuery.marketplaceEntityIds &&\n hasFullPageEventViewEntitySelection\n ) {\n const newQuery = {\n ...tempQuery,\n entityIds: null,\n marketplaceEntityIds: null,\n };\n setFilterQuery({ ...newQuery });\n return;\n }\n\n if (id && !isLoadingSearch) {\n if (purchase?.vendOrdId === idStr || purchase?.id === idNum) {\n // If the id hasn't changed, check that if it's open, if it's not, open it\n if (!isModalOpen) {\n setModal(\n getPurchaseOrderDetailsModalConfigWithDeepLink(\n combineWithTicketGroupIdSimple(purchase.id, ticketGroupId)\n )\n );\n }\n\n // Else, just don't do anything\n return;\n }\n\n if (hasFullPageEventViewEntitySelection) {\n const matchedIds = idStr\n .split(',')\n .filter((s) => s.trim())\n .map((s) => s.trim()); // split by commas and remove all empty ones\n\n if (matchedIds.length > 1) {\n const newQuery = {\n ...DefaultPurchaseQuery,\n marketplaceEntityIds: matchedIds,\n viewMode: PurchaseViewMode.FlattenedView,\n };\n setFilterQuery(newQuery);\n return;\n } else if (tempQuery.marketplaceEntityIds) {\n const newQuery = {\n ...tempQuery,\n marketplaceEntityIds: null,\n };\n\n setFilterQuery(newQuery);\n }\n }\n\n setSearchId(idStr);\n setIsLoadingSearch(true);\n\n try {\n // when user enter a text here, we don't know whether they entered the order id or unique id\n // since 99% of the time they'll be entering a order id, we try to lookup by that first\n const purchaseOrders = isSearching\n ? await tryInvokeApi(\n () =>\n new PurchaseClient(\n activeAccountWebClientConfig\n ).getPurchaseOrdersByVendorOrderId(idStr),\n (error) => {\n showErrorDialog(\n 'PurchaseClient.getPurchaseOrdersByVendorOrderId',\n error,\n { trackErrorData: { saleId: id } }\n );\n }\n )\n : null;\n\n if (!purchaseOrders || purchaseOrders.length === 0) {\n if (isNaN(idNum)) {\n // If we can't find by either PO external id or internal id, just launch empty search result dialog\n launchDialog();\n return false;\n }\n\n // If we didn't find any POs by vendor-order-id, assume this is a unique id search\n setActivePosEntity(idNum, undefined, true);\n setModal(\n getPurchaseOrderDetailsModalConfigWithDeepLink(\n combineWithTicketGroupIdSimple(idNum, ticketGroupId)\n )\n );\n\n return true;\n } else {\n // We have POs using the vendor order id\n // If there is duplicate vendor order id (which is rare)\n // we need to present to the user and ask them what they want\n if (purchaseOrders.length === 1) {\n const poInfo = purchaseOrders[0];\n // happy path\n setActivePosEntity(poInfo.id, poInfo.vendOrdId, true);\n setModal(\n getPurchaseOrderDetailsModalConfigWithDeepLink(\n combineWithTicketGroupIdSimple(poInfo.id, ticketGroupId)\n )\n );\n\n return true;\n } else {\n setSearchResults(\n purchaseOrders.toSorted((a, b) => {\n return a.poDate && b.poDate\n ? a.poDate < b.poDate\n ? 1\n : -1\n : 0;\n })\n );\n launchDialog();\n }\n }\n } finally {\n setIsLoadingSearch(false);\n }\n }\n\n return false;\n },\n [\n activeAccountWebClientConfig,\n hasFullPageEventViewEntitySelection,\n isLoadingSearch,\n isModalOpen,\n launchDialog,\n purchase?.id,\n purchase?.vendOrdId,\n setActivePosEntity,\n setFilterQuery,\n setModal,\n showErrorDialog,\n tempQuery,\n ]\n );\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedOnSearchChange = useCallback(\n debounce((text: string) => {\n if (text !== purchaseQuery.searchText) {\n setFilterQuery({\n ...purchaseQuery,\n searchText: text || null,\n });\n }\n }, 200),\n [purchaseQuery]\n );\n\n const onResultItemPicked = useCallback(\n (purchaseOrder: PurchaseOrder) => {\n setActivePosEntity(purchaseOrder.id, purchaseOrder.vendOrdId, true);\n setModal(\n getPurchaseOrderDetailsModalConfigWithDeepLink(purchaseOrder.id)\n );\n\n // We do not want to close the search dialog as users may want to click each one\n // We'll let them close the search dialog manually\n },\n [setActivePosEntity, setModal]\n );\n\n const location = useLocation();\n\n const activeId = getDeepLinkIdFromUrl(\n PurchaseDeeplinkQueryParam,\n window.location.href\n );\n\n useEffect(() => {\n if (activeId?.length) {\n onLookupById(activeId, false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeId]);\n\n useEffect(() => {\n if (!hasFullPageEventViewEntitySelection) {\n return;\n }\n\n // Since we only support id searching in flattened view for Purchases, reset filters when view mode changes\n if (\n purchaseQuery.viewMode !== PurchaseViewMode.FlattenedView &&\n !isEventPage &&\n purchaseQuery.marketplaceEntityIds\n ) {\n setFilterQuery({\n ...purchaseQuery,\n marketplaceEntityIds: null,\n searchText: null,\n });\n setSearchText('');\n }\n }, [\n purchaseQuery.marketplaceEntityIds,\n purchaseQuery.viewMode,\n isEventPage,\n purchaseQuery,\n setFilterQuery,\n hasFullPageEventViewEntitySelection,\n ]);\n\n useEffect(() => {\n if (\n purchaseQuery.marketplaceEntityIds &&\n hasFullPageEventViewEntitySelection\n ) {\n return;\n }\n setSearchText(purchaseQuery.searchText ?? '');\n }, [\n hasFullPageEventViewEntitySelection,\n purchaseQuery.marketplaceEntityIds,\n purchaseQuery.searchText,\n ]);\n\n useEffect(() => {\n if (!hasFullPageEventViewEntitySelection) {\n return;\n }\n\n const queryFromUrl = getQueryFromUrl(\n initialQuery,\n location.search\n );\n\n if (\n Array.isArray(queryFromUrl?.marketplaceEntityIds) &&\n queryFromUrl?.marketplaceEntityIds.length\n ) {\n setSearchText(() =>\n queryFromUrl?.marketplaceEntityIds\n ? queryFromUrl?.marketplaceEntityIds.join(',')\n : ''\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hasFullPageEventViewEntitySelection, initialQuery, setFilterQuery]);\n\n return (\n <>\n onLookupById(value, true)}\n onEventSearch={(value) => debouncedOnSearchChange(value)}\n searchText={searchText}\n setSearchText={setSearchText}\n clearSearchEntity={clearSearchEntity}\n disableSearchMode={isEventPage}\n />\n \n }\n resultItems={searchResults || []}\n renderItem={(purchaseOrder: PurchaseOrderDetails) => (\n \n )}\n onResultItemPicked={onResultItemPicked}\n onCancel={closeDialog}\n />\n \n );\n};\n","import { useContext, useEffect } from 'react';\nimport { useToggle } from 'react-use';\nimport { BackSection } from 'src/components/common/BackSection';\nimport { BulkEditStatusPopover } from 'src/components/common/BulkActions/BulkEditStatusPopover';\nimport { MultiSelectionToggleGlobal } from 'src/components/common/MultiSelect/Toggle/MultiSelectionToggleGlobal';\nimport { FilterToolbar } from 'src/components/FilterToolbar';\nimport { useFiltersHelpers } from 'src/components/FilterToolbar/useFiltersHelpers';\nimport { ViewModeSelector } from 'src/components/MainFilterBar';\nimport * as styles from 'src/components/MainFilterBar/MainFilterBar.css';\nimport {\n purchaseMandatoryFiltersToShow,\n usePurchaseFilters,\n} from 'src/components/MainFilterBar/usePurchaseFilters';\nimport { PurchaseGlobalActionsPermissionsWrapper } from 'src/components/Purchases/PurchaseFilterBar/PurchaseGlobalActionsPermissionsWrapper';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { LaunchBulkUploadPurchaseDialog } from 'src/dialogs/BulkEdits/BulkUploadPurchaseDialog';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useFilterToolbarQuickFilters } from 'src/hooks/useQuickFilters';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { MessagesAddSourceModal } from 'src/modals/MessagesAddSourceModal/MessagesAddSourceModal';\nimport { PurchaseWizardModalConfig } from 'src/modals/PurchaseWizard/PurchaseWizardModalConfig';\nimport { IconsFill, SettingsIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PURCHASE_VIEW_MODE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n ActionOutboxEntityType,\n Feature,\n Permission,\n PurchaseOrderDetails,\n PurchaseOrderQuery,\n PurchaseViewMode,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { PurchaseGlobalActionDropdown } from '../PurchaseActionDropdown';\nimport { useDefaultPurchaseFilters } from './hooks/useDefaultPurchaseFilters';\nimport { PURCHASE_VIEW_MODE_TO_ICON } from './PurchaseFilterBar.types';\nimport { PurchaseSearchBox } from './PurchaseSearchBox';\n\nexport function PurchaseFilterBar({\n isEventPage = false,\n returnUrl,\n posEventId,\n}: {\n isEventPage?: boolean;\n returnUrl?: string;\n posEventId?: string;\n}) {\n const { setModal } = useContext(ModalContext);\n const { selectionMode, setSelectionMode } = useMultiSelectionContext();\n const [isAddSourceModalOpen, setIsAddSourceModalOpen] = useToggle(false);\n const { setActivePosEntity } =\n useActivePosEntityContext();\n\n const hasCreatePermission = useUserHasAnyOfPermissions(\n Permission.Purchases_Create\n );\n\n const hasBulkEditInPurchaseEventFeature = useUserHasFeature(\n Feature.BulkEditInPurchaseEvent\n );\n\n const hasNewSearchFeature = useUserHasFeature(Feature.SearchView_Purchase);\n\n const {\n filterQuery: purchaseQuery,\n initialQuery,\n tempQuery,\n setFilterQuery,\n setTempQuery,\n resetTempQuery,\n } = useFilterQueryContext();\n\n const onCloseAddSourceModal = () => {\n setIsAddSourceModalOpen(false);\n };\n\n useEffect(() => {\n setTempQuery(purchaseQuery);\n }, [purchaseQuery, setTempQuery]);\n\n const defaultQuickFilters = useDefaultPurchaseFilters({\n purchaseQuery,\n initialQuery,\n });\n\n const { value: defaultViewModeUserSetting, setUserSetting } =\n useServerUserSetting({\n id: UserSetting.PurchasePageViewMode,\n currentLoginUserOnly: true,\n });\n\n const filterToolbarProps = useFilterToolbarQuickFilters({\n quickFiltersStateSetting: UserSetting.QuickFiltersStatePurchases,\n customQuickFiltersSetting: UserSetting.QuickFiltersCustomPurchases,\n defaultQuickFilters,\n currentQuery: purchaseQuery,\n initialQuery,\n onSelect: ({ id, query }) => {\n if (query.viewMode != null) {\n // We need to update initialQuery, otherwise the quick filter \"All\"\n // may change the current view mode\n if (query.viewMode !== initialQuery.viewMode) {\n initialQuery.viewMode = query.viewMode;\n }\n }\n setFilterQuery(query);\n\n // This needs to happen after to reduce re-rendering\n if (query.viewMode != null) {\n // Update user setting view mode too so it won't revert the filter query viewMode\n if (query.viewMode !== defaultViewModeUserSetting) {\n setUserSetting(query.viewMode);\n }\n }\n },\n });\n\n const isMobile = useMatchMedia('mobile');\n\n const onAddPurchase = () => {\n setActivePosEntity(0);\n setModal(PurchaseWizardModalConfig);\n };\n\n const purchaseFilters = usePurchaseFilters({\n showMetricsIndicationOnFilters: true,\n });\n\n const { appliedFilters } = useFiltersHelpers({\n filters: purchaseFilters,\n activeQuery: purchaseQuery,\n mandatoryFiltersToShow: purchaseMandatoryFiltersToShow,\n initialQuery,\n });\n\n useEffect(() => {\n if (\n purchaseQuery.viewMode === PurchaseViewMode.EventTileView &&\n selectionMode &&\n !hasBulkEditInPurchaseEventFeature\n ) {\n setSelectionMode(undefined);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [purchaseQuery.viewMode]);\n\n return (\n <>\n
    \n
    \n
    \n {isEventPage && (\n \n )}\n {purchaseQuery && (\n {\n setFilterQuery(tempQuery);\n }}\n mandatoryFiltersToShow={purchaseMandatoryFiltersToShow}\n filters={purchaseFilters}\n filterAppliedIds={appliedFilters}\n resetTempQuery={resetTempQuery}\n tempQuery={tempQuery}\n />\n )}\n
    \n
    \n
    \n
    \n {!isMobile && (\n <>\n {!isEventPage && (\n <>\n \n \n {(purchaseQuery.viewMode !==\n PurchaseViewMode.EventTileView ||\n hasBulkEditInPurchaseEventFeature) && (\n \n \n \n )}\n \n )}\n\n {(!hasNewSearchFeature || isEventPage) && (\n \n )}\n \n )}\n
    \n
    \n
    \n {isMobile && (\n
    \n
    \n
    \n \n {hasCreatePermission && (\n <>\n \n \n \n\n {!isMobile && (\n \n )}\n\n {!isMobile && (\n <>\n \n \n \n \n\n \n \n )}\n \n )}\n \n\n \n \n \n \n \n \n \n\n \n \n
    \n
    \n
    \n )}\n \n );\n}\n","import { useMemo } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { QuickFilter } from 'src/hooks/useQuickFilters';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n DateRangePresetName,\n getDateRangePresets,\n} from 'src/utils/dateTimeUtils';\nimport {\n DateTimeRangeWithRelative,\n SaleQuery,\n UserSetting,\n} from 'src/WebApiController';\n\nexport const useDefaultSaleFilters = ({\n saleQuery,\n initialQuery,\n}: {\n saleQuery: SaleQuery;\n initialQuery: SaleQuery;\n}) => {\n const defaultQuickFilters = useMemo(() => {\n const [last30DaysPreset] = getDateRangePresets([\n DateRangePresetName.Last30Days,\n ]);\n const filters = [\n {\n id: 'recentlySold',\n name: ,\n data: {\n ...initialQuery,\n eventTimeFrameFilter: null,\n saleDates: {\n start: last30DaysPreset.range.start.toISOString(),\n end: last30DaysPreset.range.end.toISOString(),\n } as DateTimeRangeWithRelative,\n },\n },\n ];\n\n // Default filters aren't supposed to change view mode\n filters.forEach((f: QuickFilter) => {\n f.data.viewMode = saleQuery.viewMode;\n });\n return filters;\n }, [initialQuery, saleQuery.viewMode]);\n\n return defaultQuickFilters;\n};\n","import { ReactNode } from 'react';\nimport { FlattenedViewIcon } from 'src/svgs/FlattenedViewIcon';\nimport { TileViewIcon } from 'src/svgs/TileViewIcon';\nimport { IconsFill } from 'src/svgs/Viagogo';\nimport { SalesViewMode } from 'src/WebApiController';\n\nexport const SALE_VIEW_MODE_TO_ICON: Record = {\n [SalesViewMode.TileView]: (\n \n ),\n [SalesViewMode.FlattenedView]: (\n \n ),\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const SaleIdContainer = styled.div`\n display: flex;\n align-items: baseline;\n flex-wrap: wrap;\n color: ${({ theme: { colors } }) => colors.textPrimary};\n`;\n\nexport const AttrLabel = styled.span`\n vertical-align: baseline;\n text-transform: uppercase;\n ${({ theme: { typography } }) => typography.getStyles('caption2', 'regular')}\n`;\n\nexport const AttrValue = styled.span`\n margin: ${() => `0 ${vars.spacing.xxs}`};\n font-size: ${() => vars.typography.fontSize['sm']};\n font-weight: 400;\n line-height: 20px;\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n font-size: ${() => vars.typography.fontSize['lg']};\n line-height: 24px;\n }`\n )}`}\n`;\n","import { MerchantDisplay } from 'src/components/common/MerchantDisplay';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Sale } from 'src/WebApiController';\n\nimport * as styles from './SaleBasicInfo.css';\nimport { AttrLabel, AttrValue, SaleIdContainer } from './SaleBasicInfo.styled';\n\nexport const SaleBasicInfo = ({ sale }: { sale: Sale }) => {\n const saleIdLabel = useContent(ContentId.SaleId);\n const marketplaceLabel = useContent(ContentId.Merchant);\n\n return (\n /* TODO - search by sale id being mainly used with marketplace sale id (which can yield multiple results if we have multiple marketplaces that use the same ids)\n We are displaying Sale info without the Event's info, but there is several reason we don't need to show the Event info right now, mainly...\n 1 - Event info currently is expensive to get (calling catalog API) - when we bring catalog API info in-house, we can add it performantly\n 2 - We don't need Event info yet, because currently all our sales are from StubHub, and so NO user will see this dialog\n 3 - This might actually be replaced with the Universal Search anyway (when we have both catalog in-house and the search index).\n */\n
    \n \n {saleIdLabel}\n {sale.idOnMkp || sale.id}\n {marketplaceLabel}\n \n \n \n \n \n
    \n );\n};\n","import { debounce } from 'lodash-es';\nimport { useCallback, useContext, useEffect, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { EventEntitySearchBox } from 'src/components/Accordions/EventEntitySearchBox';\nimport { SaleBasicInfo } from 'src/components/Sales/SaleBasicInfo';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { FormatContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { SearchResultPickerDialog } from 'src/dialogs/SearchResultPickerDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { SaleDeeplinkQueryParam } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { getDeepLinkIdFromUrl } from 'src/utils/deepLinkUtils';\nimport { DefaultSaleQuery, getQueryFromUrl } from 'src/utils/eventQueryUtils';\nimport { getSaleDetailsModalConfigWithDeepLink } from 'src/utils/saleUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n Feature,\n Sale,\n SaleClient,\n SaleDetails,\n SaleQuery,\n SalesViewMode,\n} from 'src/WebApiController';\n\nexport function SaleSearchBox({ isEventPage }: { isEventPage?: boolean }) {\n const { posEntity: sale, setActivePosEntity } =\n useActivePosEntityContext();\n const { closeDialog, launchDialog, dialogProps } = useBasicDialog();\n const { setModal, isModalOpen } = useContext(ModalContext);\n const { activeAccountWebClientConfig } = useAppContext();\n\n const [searchId, setSearchId] = useState();\n const [searchResults, setSearchResults] = useState();\n const [isLoadingSearch, setIsLoadingSearch] = useState(false);\n const [searchText, setSearchText] = useState('');\n\n const { showErrorDialog } = useErrorBoundaryContext();\n const hasFullPageEventViewEntitySelection = useUserHasFeature(\n Feature.FullPageEventViewEntitySelection\n );\n\n const {\n filterQuery: saleQuery,\n initialQuery,\n tempQuery,\n setFilterQuery,\n } = useFilterQueryContext();\n\n const location = useLocation();\n\n useEffect(() => {\n if (!hasFullPageEventViewEntitySelection) {\n return;\n }\n\n const queryFromUrl = getQueryFromUrl(\n initialQuery,\n location.search\n );\n\n if (\n Array.isArray(queryFromUrl?.entityIds) &&\n queryFromUrl?.entityIds.length\n ) {\n setSearchText((prev) =>\n queryFromUrl?.entityIds ? queryFromUrl?.entityIds.join(',') : prev\n );\n } else if (\n Array.isArray(queryFromUrl?.marketplaceEntityIds) &&\n queryFromUrl?.marketplaceEntityIds.length\n ) {\n setSearchText((prev) =>\n queryFromUrl?.marketplaceEntityIds\n ? queryFromUrl?.marketplaceEntityIds.join(',')\n : prev\n );\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [initialQuery, hasFullPageEventViewEntitySelection]);\n\n const { marketplaceEntityIds, searchText: saleQuerySearchText } = saleQuery;\n useEffect(() => {\n if (marketplaceEntityIds && hasFullPageEventViewEntitySelection) {\n return;\n }\n\n if (saleQuerySearchText) {\n setSearchText(saleQuerySearchText);\n } else if (marketplaceEntityIds && Array.isArray(marketplaceEntityIds)) {\n const ids = marketplaceEntityIds.join(',');\n if (ids.length > 0) {\n setSearchText(ids);\n }\n }\n }, [\n hasFullPageEventViewEntitySelection,\n marketplaceEntityIds,\n saleQuerySearchText,\n ]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedOnSearchChange = useCallback(\n debounce((text: string) => {\n if (text !== saleQuery.searchText) {\n setFilterQuery({\n ...saleQuery,\n searchText: text || null,\n });\n }\n }, 200),\n [saleQuery]\n );\n\n const activeDeepLinkSaleId = getDeepLinkIdFromUrl(\n SaleDeeplinkQueryParam,\n window.location.href\n );\n\n const onLookupById = useCallback(\n async (id: string, isSearching: boolean) => {\n if (!id && (tempQuery.entityIds || tempQuery.marketplaceEntityIds)) {\n const newQuery = {\n ...tempQuery,\n entityIds: null,\n marketplaceEntityIds: null,\n };\n setFilterQuery({ ...newQuery });\n return;\n }\n if (id && !isLoadingSearch) {\n if (\n sale?.idOnMkp === id ||\n String(sale?.id) === id ||\n activeDeepLinkSaleId === id\n ) {\n // If the id hasn't changed, check that if it's open, if it's not, open it\n if (!isModalOpen) {\n if (activeDeepLinkSaleId) {\n setActivePosEntity(\n Number(activeDeepLinkSaleId),\n undefined,\n false\n );\n }\n setModal(getSaleDetailsModalConfigWithDeepLink(sale?.id));\n }\n\n // Else, just don't do anything\n return;\n }\n\n const matchedIds = id\n .split(',')\n .filter((s) => s.trim())\n .map((s) => s.trim()); // split by commas and remove all empty ones\n\n if (matchedIds.length > 1) {\n const newQuery = {\n ...DefaultSaleQuery,\n entityIds: null,\n marketplaceEntityIds: matchedIds,\n viewMode: SalesViewMode.FlattenedView,\n };\n setFilterQuery(newQuery);\n return;\n } else if (tempQuery.entityIds || tempQuery.marketplaceEntityIds) {\n const newQuery = {\n ...tempQuery,\n entityIds: null,\n marketplaceEntityIds: null,\n };\n setFilterQuery(newQuery);\n }\n\n setSearchId(id);\n setIsLoadingSearch(true);\n\n try {\n // when user enter a text here, we don't know whether they entered the sale id or unique id\n // since 99% of the time they'll be entering a sale id, we try to lookup by that first\n const sales = isSearching\n ? await tryInvokeApi(\n () =>\n new SaleClient(\n activeAccountWebClientConfig\n ).getSalesByMarketplaceSaleId(id),\n (error) => {\n showErrorDialog(\n 'SaleClient.getSalesByMarketplaceSaleId',\n error,\n { trackErrorData: { saleId: id } }\n );\n }\n )\n : null;\n\n if (!sales || sales.length === 0) {\n const idNum = Number(id);\n if (isNaN(idNum)) {\n // If we can't find by either PO external id or internal id, just launch empty search result dialog\n launchDialog();\n return false;\n }\n\n // If we didn't find any sales by market-place-sale-id, assume this is a unique id search\n setActivePosEntity(idNum, undefined, true);\n setModal(getSaleDetailsModalConfigWithDeepLink(idNum));\n\n return true;\n } else {\n // We have sales using the market place id\n // 99% of the time, the id should be unique, but if we support more than 1 marketplaces\n // the ids may collide and return more than one result, therefore we need to present to the user and ask them what they want\n if (sales.length === 1) {\n const saleInfo = sales[0];\n // happy path\n setActivePosEntity(saleInfo.id, saleInfo.idOnMkp, true);\n setModal(\n getSaleDetailsModalConfigWithDeepLink(saleInfo.id, true)\n );\n\n return true;\n } else {\n setSearchResults(sales);\n launchDialog();\n }\n }\n } finally {\n setIsLoadingSearch(false);\n }\n }\n\n return false;\n },\n [\n activeAccountWebClientConfig,\n activeDeepLinkSaleId,\n isLoadingSearch,\n isModalOpen,\n launchDialog,\n sale,\n setActivePosEntity,\n setFilterQuery,\n setModal,\n showErrorDialog,\n tempQuery,\n ]\n );\n\n const clearSearchEntity = useCallback(() => {\n const newQuery = {\n ...tempQuery,\n searchText: null,\n entityIds: null,\n marketplaceEntityIds: null,\n };\n setFilterQuery(newQuery);\n }, [tempQuery, setFilterQuery]);\n\n const onResultItemPicked = useCallback(\n (sale: Sale) => {\n setActivePosEntity(sale.id, sale.idOnMkp, true);\n setModal(getSaleDetailsModalConfigWithDeepLink(sale.id, true));\n\n // We do not want to close the search dialog as users may want to click each one\n // We'll let them close the search dialog manually\n },\n [setActivePosEntity, setModal]\n );\n\n useEffect(() => {\n if (activeDeepLinkSaleId?.length) {\n onLookupById(activeDeepLinkSaleId, false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeDeepLinkSaleId]);\n\n return (\n <>\n onLookupById(value, true)}\n onEventSearch={(value) => debouncedOnSearchChange(value)}\n searchText={searchText}\n setSearchText={setSearchText}\n clearSearchEntity={clearSearchEntity}\n disableSearchMode={isEventPage}\n />\n\n \n }\n resultItems={searchResults || []}\n renderItem={(sale: Sale) => }\n onResultItemPicked={onResultItemPicked}\n onCancel={closeDialog}\n />\n \n );\n}\n","import { useEffect } from 'react';\nimport { BackSection } from 'src/components/common/BackSection';\nimport { BulkEditStatusPopover } from 'src/components/common/BulkActions/BulkEditStatusPopover';\nimport { MultiSelectionToggleGlobal } from 'src/components/common/MultiSelect/Toggle/MultiSelectionToggleGlobal';\nimport { FilterToolbar } from 'src/components/FilterToolbar';\nimport { useFiltersHelpers } from 'src/components/FilterToolbar/useFiltersHelpers';\nimport {\n saleMandatoryFiltersToShow,\n useSaleFilters,\n ViewModeSelector,\n} from 'src/components/MainFilterBar';\nimport * as styles from 'src/components/MainFilterBar/MainFilterBar.css';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useFilterToolbarQuickFilters } from 'src/hooks/useQuickFilters';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { SALES_VIEW_MODE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n ActionOutboxEntityType,\n Feature,\n SaleQuery,\n SalesViewMode,\n UserSetting,\n} from 'src/WebApiController';\nimport Swiper from 'swiper';\n\nimport { SwiperButton } from '../../Buttons/SwiperButton';\nimport { SalesGlobalActionDropdown } from '../SalesActionDropdown';\nimport { useDefaultSaleFilters } from './hooks/useDefaultSaleFilters';\nimport { SALE_VIEW_MODE_TO_ICON } from './SaleFilterBar.types';\nimport { SaleSearchBox } from './SaleSearchBox';\n\nexport function SaleFilterBar({\n isSearchOnly,\n isEventPage = false,\n returnUrl,\n posEventId,\n swiperRef,\n}: {\n isSearchOnly?: boolean;\n isEventPage?: boolean;\n returnUrl?: string;\n posEventId?: string;\n swiperRef?: React.MutableRefObject;\n}) {\n const hasNewSearchFeature = useUserHasFeature(Feature.SearchView_Sale);\n\n const {\n filterQuery: saleQuery,\n initialQuery,\n tempQuery,\n setFilterQuery,\n setTempQuery,\n resetTempQuery,\n } = useFilterQueryContext();\n\n useEffect(() => {\n setTempQuery(saleQuery);\n }, [saleQuery, setTempQuery]);\n\n const defaultQuickFilters = useDefaultSaleFilters({\n saleQuery,\n initialQuery,\n });\n\n const { value: defaultViewModeUserSetting, setUserSetting } =\n useServerUserSetting({\n id: UserSetting.SalePageViewMode,\n currentLoginUserOnly: true,\n });\n\n const filterToolbarProps = useFilterToolbarQuickFilters({\n quickFiltersStateSetting: UserSetting.QuickFiltersStateSales,\n customQuickFiltersSetting: UserSetting.QuickFiltersCustomSales,\n defaultQuickFilters,\n currentQuery: saleQuery,\n initialQuery,\n onSelect: ({ query }) => {\n if (query.viewMode != null) {\n // We need to update initialQuery, otherwise the quick filter \"All\"\n // may change the current view mode\n if (query.viewMode !== initialQuery.viewMode) {\n initialQuery.viewMode = query.viewMode;\n }\n }\n setFilterQuery(query);\n\n // This needs to happen after to reduce re-rendering\n if (query.viewMode != null) {\n // Update user setting view mode too so it won't revert the filter query viewMode\n if (query.viewMode !== defaultViewModeUserSetting) {\n setUserSetting(query.viewMode);\n }\n }\n },\n });\n\n const { filters: saleFilters } = useSaleFilters({\n showMetricsIndicationOnFilters: true,\n });\n\n const isMobile = useMatchMedia('mobile');\n\n const { appliedFilters } = useFiltersHelpers({\n filters: saleFilters,\n activeQuery: saleQuery,\n mandatoryFiltersToShow: saleMandatoryFiltersToShow,\n initialQuery,\n });\n\n const filterToolbar = saleQuery && (\n {\n setFilterQuery(tempQuery);\n }}\n filters={saleFilters}\n mandatoryFiltersToShow={saleMandatoryFiltersToShow}\n resetTempQuery={resetTempQuery}\n tempQuery={tempQuery}\n />\n );\n\n return isSearchOnly ? (\n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n {!isEventPage && (\n <>\n \n {!isMobile && (\n \n )}\n \n \n\n \n \n )}\n
    \n
    \n
    \n ) : (\n
    \n {isMobile ? (\n filterToolbar\n ) : (\n <>\n
    \n
    \n {isEventPage && (\n \n )}\n {filterToolbar}\n
    \n
    \n
    \n
    \n {!isEventPage && (\n <>\n \n \n \n \n \n )}\n\n {(!hasNewSearchFeature || isEventPage) && (\n \n )}\n
    \n
    \n \n )}\n
    \n );\n}\n","import { ReactNode } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport { isInFullPageEventView } from 'src/utils/deepLinkUtils';\nimport { Feature } from 'src/WebApiController';\nimport Swiper from 'swiper';\n\nimport { ListingFilterBar } from '../Listings/ListingFilterBar';\nimport { OnSaleEventFilterBar } from '../OnSaleEvent/OnSaleEventFilterBar';\nimport { PurchaseFilterBar } from '../Purchases/PurchaseFilterBar/PurchaseFilterBar';\nimport { SaleFilterBar } from '../Sales/SaleFilterBar';\nimport * as styles from './MainFilterBar.css';\n\nexport function MainFilterBar(props: {\n isEventPage?: boolean;\n returnUrl?: string;\n posEventId?: string;\n swiperRef?: React.MutableRefObject;\n}) {\n const { isEventPage, returnUrl, posEventId, swiperRef, ...sharedProps } =\n props;\n const { mainRoute } = useAppContext();\n\n const hasHideNavAndFilterBarsFeature = useUserHasFeature(\n Feature.HideNavAndFilterBars\n );\n\n if (hasHideNavAndFilterBarsFeature && isInFullPageEventView(mainRoute)) {\n return null;\n }\n\n return mainRoute === MainRoute.Inventory ||\n mainRoute === MainRoute.InventoryEvent ? (\n \n ) : mainRoute == MainRoute.Discovery ? (\n \n ) : mainRoute === MainRoute.Purchases ||\n mainRoute === MainRoute.PurchasesEvent ? (\n \n ) : (\n \n );\n}\n\ntype MainFilterBarDivProps = { children: ReactNode };\nexport const MainFilterBarDiv = ({ children }: MainFilterBarDivProps) => {\n return
    {children}
    ;\n};\n","import { formatInTimeZone } from 'date-fns-tz';\nimport { PurchaseVendorSelector } from 'src/components/Selectors/PurchaseVendorSelector';\nimport { SellerAccountEmployeeSelector } from 'src/components/Selectors/SellerAccountEmployeeSelector';\nimport { UserGroupSelector } from 'src/components/Selectors/UserGroupSelector';\nimport { TOTAL_VALUE_LENGTH_LIMIT } from 'src/components/TagsFormBody/TagValueCell';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { DatePickerInput } from 'src/core/POS/DateSelector';\nimport { PosEnumSelect, PosSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n BOOLEAN_OPTIONS_CONTENT,\n MARKET_PLACE_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { ToMarketplaceEnum } from 'src/utils/tagUtils';\nimport { Marketplace, TagsValueType } from 'src/WebApiController';\n\nexport type TagInfoFilter = {\n tagName: string | null;\n tagValue: string | null;\n};\n\nexport const TagValueFilterInput = ({\n value,\n valueType,\n onChange,\n disabled,\n}: {\n disabled?: boolean;\n value: string;\n valueType?: TagsValueType | null;\n onChange: (newValue: string) => void;\n}) => {\n const { timeZone, timezoneOffsetMins } = useSiteTimezoneContext();\n return (\n <>\n {valueType === TagsValueType.Date ? (\n \n {\n const newDate = value ? new Date(value) : new Date();\n newDate.setFullYear(date.getFullYear());\n newDate.setMonth(date.getMonth());\n newDate.setDate(date.getDate());\n\n // Setting to yyyy-MM-dd format to match ISO format\n onChange(formatInTimeZone(newDate, timeZone, 'yyyy-MM-dd'));\n }}\n disabled={disabled}\n />\n \n ) : valueType === TagsValueType.Marketplace ? (\n {\n onChange(Marketplace[value as keyof typeof Marketplace]);\n }}\n disabled={disabled}\n valueOptionsContent={MARKET_PLACE_TO_CID}\n />\n ) : valueType === TagsValueType.Boolean ? (\n \n ) : valueType === TagsValueType.POSUser ? (\n \n ) : valueType === TagsValueType.UserGroup ? (\n \n ) : valueType === TagsValueType.Vendor ? (\n \n ) : (\n {\n const newValue = e.target.value ?? null;\n onChange(newValue);\n }}\n maxLength={TOTAL_VALUE_LENGTH_LIMIT}\n />\n )}\n \n );\n};\n","import { useMemo } from 'react';\nimport {\n FilterToolbarGroup,\n FilterToolbarItemId,\n} from 'src/components/Filters';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ActionOutboxEntityType } from 'src/WebApiController';\n\nimport { TagValueFilterInput } from './TagValueFilterInput';\n\nexport type EventTagInfoFilter = {\n eventTagName: string | null;\n eventTagValue: string | null;\n};\n\nexport const useEventTagFilters = (\n query: TFilter,\n setQuery: (query: TFilter) => void\n): FilterToolbarGroup => {\n const { tagsMetadata: existingTagsMetadata = [] } = useTagsForEntityType(\n ActionOutboxEntityType.SellerEvent\n );\n\n const noTagsMsg = useContent(ContentId.NoTagsExist);\n\n const selectedTagMetadata = useMemo(() => {\n return (existingTagsMetadata ?? []).find(\n (r) => r.key === query.eventTagName\n );\n }, [existingTagsMetadata, query.eventTagName]);\n\n const keyOptionsContent = useMemo(() => {\n const keyOptions = (existingTagsMetadata ?? [])\n .toSorted((r1, r2) => r1.key.localeCompare(r2.key))\n .reduce(\n (re, r) => {\n re[r.key] = r.key;\n return re;\n },\n {} as Record\n );\n\n return keyOptions ?? {};\n }, [existingTagsMetadata]);\n\n const noTagsExist = useMemo(() => {\n return existingTagsMetadata?.length === 0;\n }, [existingTagsMetadata]);\n\n return {\n titleContentId: ContentId.EventTag,\n type: 'row',\n items: [\n {\n filterId: 'eventTagName' as const,\n labelContentId: ContentId.Name,\n filterQueryKeys: ['eventTagName'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (query.eventTagName !== newValue) {\n setQuery({\n ...query,\n eventTagName: newValue,\n eventTagValue: null,\n });\n }\n }}\n value={query.eventTagName ?? ''}\n displayText={noTagsExist ? noTagsMsg : (query.eventTagName ?? '')}\n searchable\n disabled={noTagsExist}\n valueOptionsContent={keyOptionsContent}\n placeholderText={ContentId.None}\n enableEmptySelection\n />\n ),\n },\n {\n filterId: 'eventTagValue' as const,\n labelContentId: ContentId.Value,\n filterQueryKeys: ['eventTagValue'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (query.eventTagValue !== newValue) {\n setQuery({\n ...query,\n eventTagValue: newValue,\n });\n }\n }}\n />\n ),\n },\n ].filter((f) => f!),\n };\n};\n","import { useMemo } from 'react';\nimport {\n FilterToolbarGroup,\n FilterToolbarItemId,\n} from 'src/components/Filters';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ActionOutboxEntityType } from 'src/WebApiController';\n\nimport { TagValueFilterInput } from './TagValueFilterInput';\n\nexport type TagInfoFilter = {\n tagName: string | null;\n tagValue: string | null;\n};\n\nexport const useTagFilters = (\n query: TFilter,\n setQuery: (query: TFilter) => void,\n entityType:\n | ActionOutboxEntityType.Listing\n | ActionOutboxEntityType.Purchase\n | ActionOutboxEntityType.Sale\n): FilterToolbarGroup => {\n const { tagsMetadata: existingTagsMetadata = [] } =\n useTagsForEntityType(entityType);\n\n const noTagsMsg = useContent(ContentId.NoTagsExist);\n\n const selectedTagMetadata = useMemo(() => {\n return (existingTagsMetadata ?? []).find((r) => r.key === query.tagName);\n }, [existingTagsMetadata, query.tagName]);\n\n const keyOptionsContent = useMemo(() => {\n const keyOptions = (existingTagsMetadata ?? [])\n .toSorted((r1, r2) => r1.key.localeCompare(r2.key))\n .reduce(\n (re, r) => {\n re[r.key] = r.key;\n return re;\n },\n {} as Record\n );\n\n return keyOptions ?? {};\n }, [existingTagsMetadata]);\n\n const noTagsExist = useMemo(() => {\n return (existingTagsMetadata ?? []).length === 0;\n }, [existingTagsMetadata]);\n\n const titleContentId =\n entityType === ActionOutboxEntityType.Listing\n ? ContentId.InventoryTag\n : entityType === ActionOutboxEntityType.Sale\n ? ContentId.SaleTag\n : ContentId.PurchaseTag;\n\n return {\n titleContentId: titleContentId,\n type: 'row',\n items: [\n {\n filterId: 'tagName' as const,\n labelContentId: ContentId.Name,\n filterQueryKeys: ['tagName'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (query.tagName !== newValue) {\n setQuery({\n ...query,\n tagName: newValue,\n tagValue: null,\n });\n }\n }}\n value={query.tagName ?? ''}\n displayText={noTagsExist ? noTagsMsg : (query.tagName ?? '')}\n searchable\n disabled={noTagsExist}\n valueOptionsContent={keyOptionsContent}\n placeholderText={ContentId.None}\n enableEmptySelection\n shape=\"rectFull\"\n />\n ),\n },\n {\n filterId: 'tagValue' as const,\n labelContentId: ContentId.Value,\n filterQueryKeys: ['tagValue'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (query.tagValue !== newValue) {\n setQuery({\n ...query,\n tagValue: newValue,\n });\n }\n }}\n />\n ),\n },\n ].filter((f) => f!),\n };\n};\n","import { FilterToolbarItem, FilterToolbarItemId } from 'src/components/Filters';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { DateRangeSelector } from 'src/core/POS/DateRangeSelector';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getDisabledDatesForTimeFrameFilter,\n StandardDateRangePresetNames,\n} from 'src/utils/dateTimeUtils';\nimport { Feature, ListingQuery } from 'src/WebApiController';\n\nexport const useEventLastReviewedFilters = (): FilterToolbarItem[] => {\n const { initialQuery, tempQuery, setTempQuery } =\n useFilterQueryContext();\n\n return [\n {\n filterId: 'eventNotReviewedSinceDate' as FilterToolbarItemId,\n labelContentId: ContentId.EventNotReviewedSince,\n filterQueryKeys: ['eventNotReviewedSinceDate'] as FilterToolbarItemId[],\n filterItem: (\n \n setTempQuery({\n ...tempQuery,\n eventNotReviewedSinceDate: value,\n })\n }\n disabledDay={(d) =>\n getDisabledDatesForTimeFrameFilter(\n d,\n tempQuery.eventTimeFrameFilter\n )\n }\n />\n ),\n },\n ];\n};\n","import { isEqual } from 'lodash-es';\nimport { useMemo } from 'react';\nimport { useInternalNotesFilter } from 'src/components/Filters/InternalNotesFilter';\nimport { useMergedTagFilters } from 'src/components/MainFilterBar/Tags/useMergedTagFilters';\nimport { SellerAccountEmployeeSelector } from 'src/components/Selectors/SellerAccountEmployeeSelector';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { DateRangeSelector } from 'src/core/POS/DateRangeSelector';\nimport { PosEnumMultiSelect } from 'src/core/POS/PosMultiSelect/PosEnumMultiSelect';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { vars } from 'src/core/themes';\nimport { Slider } from 'src/core/ui/Slider';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { MetricsIcon } from 'src/svgs/MetricsIcon';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n AUTO_PRICING_RESULT_TYPES_OPTIONS_TO_CID,\n EVENT_MAPPING_STATE_FILTER_TO_CID,\n EVENT_PRICED_STATUS_TO_CID,\n TICKET_TYPE_TO_CID,\n YES_NO_ENUM_FILTER_TO_CID,\n YES_NO_INVERTED_ENUM_FILTER_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { InhandDateRangePresetNames } from 'src/utils/dateTimeUtils';\nimport {\n EventMappingStateFilter,\n FromEventMappingStateFilter,\n FromYesNoEnum,\n ToEventMappingStateFilter,\n ToYesNoEnum,\n} from 'src/utils/eventQueryUtils';\nimport { formatNumber } from 'src/utils/numberFormatter';\nimport { ReportTypes } from 'src/utils/reportsUtils';\nimport {\n ActionOutboxEntityType,\n Feature,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport {\n FilterToolbarGroup,\n FilterToolbarItem,\n FilterToolbarItemId,\n} from '../Filters';\nimport { RowFilter } from '../Filters/RowFilter';\nimport { SectionFilter } from '../Filters/SectionFilter';\nimport { PriceUpdatedDateStackedFilter } from '../Filters/StackedFilter/PriceUpdatedDateStackedFilter';\nimport { SaleDateStackedFilter } from '../Filters/StackedFilter/SaleDateStackedFilter';\nimport {\n CurrencyFilterMultiSelector,\n CurrencyFilterSelector,\n} from '../Selectors/CurrencyFilterSelector';\nimport { DeliveryTypeSelector } from '../Selectors/DeliveryTypeSelector';\nimport { useCommonEventFilters } from './useCommonEventFilters';\nimport { useEventLastReviewedFilters } from './useEventLastReviewedFilter';\nimport { usePurchaseInfoFilters } from './usePurchaseInfoFilters';\n\nconst MAX_NUMBER_OF_TICKETS_HELD = 100_000;\n\nexport const listingsMandatoryFiltersToShow: FilterToolbarItemId[] = [\n 'eventDates',\n];\n\nexport function useListingFilters({\n isEventPage,\n isReportsPage,\n isHorizontalLayout,\n showCatalogFilters,\n showMetricsIndicationOnFilters,\n}: {\n isEventPage?: boolean;\n isReportsPage?: boolean;\n isHorizontalLayout?: boolean;\n showCatalogFilters?: boolean;\n showMetricsIndicationOnFilters?: boolean;\n}) {\n const { initialQuery, tempQuery, setTempQuery } =\n useFilterQueryContext();\n\n const purchaseInfoFilters = usePurchaseInfoFilters({\n query: tempQuery,\n setQuery: setTempQuery,\n reportType: isReportsPage ? ReportTypes.Inventory : undefined,\n showMetricsIndicationOnFilters: showMetricsIndicationOnFilters,\n });\n\n const tagsFilter = useMergedTagFilters({\n query: tempQuery,\n setQuery: setTempQuery,\n entityType: ActionOutboxEntityType.Listing,\n });\n\n const eventLastReviewedFilters = useEventLastReviewedFilters();\n\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n\n const hasFilterByCurrencyCodeMultiFeature = useUserHasFeature(\n Feature.FilterByCurrencyCodeMulti\n );\n const hasFilterByCurrencyCodeFeature = !hasFilterByCurrencyCodeMultiFeature;\n\n const hasAutoFulfillSetting = useUserHasFeature(Feature.AutoFulfillSetting);\n\n const autoPricingFilter = useMemo(\n () => [\n {\n filterId: 'isAutoPricingEnabled',\n labelContentId: ContentId.AutoPricingEnabled,\n filterQueryKeys: ['isAutoPricingEnabled'],\n filterItem: (\n {\n if (\n yesNoEnumValue !== ToYesNoEnum(tempQuery.isAutoPricingEnabled)\n ) {\n setTempQuery({\n ...tempQuery,\n isAutoPricingEnabled: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ...[\n {\n filterId: 'autoPricingResultTypes' as FilterToolbarItemId,\n labelContentId: ContentId.AutoPricingResultType,\n filterQueryKeys: ['autoPricingResultTypes'] as FilterToolbarItemId[],\n filterItem: (\n {\n // TODO: We should have it such that if they click on the placeholder, it could clear out the options\n // This should not be default though because sometimes the placeholder really is just a placeholder.\n const isChanged = !isEqual(\n autoPricingResultTypes,\n tempQuery.autoPricingResultTypes\n );\n setTempQuery({\n ...tempQuery,\n autoPricingResultTypes: isChanged\n ? autoPricingResultTypes\n : [],\n });\n }}\n valueOptionsContent={AUTO_PRICING_RESULT_TYPES_OPTIONS_TO_CID}\n />\n ),\n },\n ],\n ],\n [setTempQuery, tempQuery]\n );\n\n const adminHoldFilter = useMemo(\n () =>\n [\n {\n filterId: 'isAdminHold',\n labelContentId: ContentId.Hold,\n filterQueryKeys: ['isAdminHold'],\n filterItem: (\n {\n if (yesNoEnumValue !== ToYesNoEnum(tempQuery.isAdminHold)) {\n setTempQuery({\n ...tempQuery,\n isAdminHold: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ] as FilterToolbarItem[],\n [setTempQuery, tempQuery]\n );\n\n const seatingFilters = useMemo(\n () => ({\n titleContentId: ContentId.Seating,\n type: 'row',\n items: [\n {\n filterId: 'sectionContains',\n labelContentId: ContentId.Section,\n filterQueryKeys: [\n 'sectionEquals',\n 'sectionContains',\n 'sectionNotContains',\n ],\n filterItem: (\n \n ),\n },\n {\n filterId: 'rowContains',\n labelContentId: ContentId.Row,\n filterQueryKeys: ['rowEquals', 'rowContains', 'rowNotContains'],\n filterItem: (\n \n ),\n },\n ],\n }),\n [isHorizontalLayout, setTempQuery, tempQuery]\n );\n\n const additionalEventFilters = useMemo(\n () =>\n [\n ...eventLastReviewedFilters,\n {\n filterId: 'eventHasUnsoldTickets' as FilterToolbarItemId,\n labelContentId: ContentId.HasUnsoldListings,\n filterQueryKeys: ['eventHasUnsoldTickets'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !==\n ToYesNoEnum(tempQuery.eventHasUnsoldTickets)\n ) {\n setTempQuery({\n ...tempQuery,\n eventHasUnsoldTickets: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n {\n filterId: 'noSaleDates',\n labelContentId: ContentId.SaleDateFilterTitle,\n filterQueryKeys: ['lastSaleDates', 'noSaleDates'],\n filterItem: ,\n },\n {\n filterId: 'numberOfTicketsHeld',\n labelContentId: ContentId.NumberOfTicketsHeld,\n filterQueryKeys: ['numberOfTicketsHeld'],\n filterItem: (\n (\n {formatNumber(n)}\n )}\n onValueChange={([start, end]: [number, number]) => {\n if (\n start !== (tempQuery.numberOfTicketsHeld?.start || 0) ||\n end !== tempQuery.numberOfTicketsHeld?.end\n ) {\n const newQuery = {\n ...tempQuery,\n numberOfTicketsHeld: {\n start: start === 0 ? null : start,\n end: end === MAX_NUMBER_OF_TICKETS_HELD ? null : end,\n },\n };\n setTempQuery(newQuery);\n }\n }}\n />\n ),\n },\n {\n filterId: 'isMapped' as FilterToolbarItemId,\n labelContentId: ContentId.RequestState,\n filterQueryKeys: [\n 'isMapped',\n 'isMappingRejected',\n ] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n filterEnumValue !==\n ToEventMappingStateFilter(\n tempQuery.isMapped,\n tempQuery.isMappingRejected\n )\n ) {\n const [isMapped, isMappingRejected] =\n FromEventMappingStateFilter(\n filterEnumValue ?? EventMappingStateFilter.All\n );\n setTempQuery({\n ...tempQuery,\n isMapped,\n isMappingRejected,\n });\n }\n }}\n valueOptionsContent={EVENT_MAPPING_STATE_FILTER_TO_CID}\n />\n ),\n },\n {\n filterId: 'eventUnpricedStatus' as FilterToolbarItemId,\n labelContentId: ContentId.HasUnpricedListings,\n filterQueryKeys: ['eventUnpricedStatus'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (eventUnpricedStatus !== tempQuery.eventUnpricedStatus) {\n setTempQuery({\n ...tempQuery,\n eventUnpricedStatus,\n });\n }\n }}\n valueOptionsContent={EVENT_PRICED_STATUS_TO_CID}\n />\n ),\n },\n ] as FilterToolbarItem[],\n [eventLastReviewedFilters, setTempQuery, tempQuery]\n );\n\n const eventFilters = useCommonEventFilters({\n showCatalogFilters,\n additionalFilters: additionalEventFilters,\n });\n const eventFilter = isEventPage ? undefined : eventFilters;\n\n const notesFilters = useInternalNotesFilter({\n entityType: ActionOutboxEntityType.Listing,\n isHorizontalLayout,\n });\n\n const metricsIconNote = useContent(ContentId.ThisFilterWillChangeMetrics);\n\n const filters = useMemo(\n () =>\n [\n eventFilter,\n {\n titleContentId: ContentId.Pricing,\n type: 'row',\n items: [\n {\n filterId: 'pricerSellerUserId' as FilterToolbarItemId,\n filterQueryKeys: ['pricerSellerUserId'] as FilterToolbarItemId[],\n labelContentId: ContentId.PricedBy,\n postfixIcon: showMetricsIndicationOnFilters ? (\n \n ) : undefined,\n filterItem: (\n {\n if (newId !== tempQuery.pricerSellerUserId) {\n setTempQuery({\n ...tempQuery,\n pricerSellerUserId: newId,\n });\n }\n }}\n />\n ),\n },\n ...(hasAutoPricingFeature ? autoPricingFilter : []),\n\n {\n filterId: 'isPricedAboveZero' as FilterToolbarItemId,\n labelContentId: ContentId.Priced,\n filterQueryKeys: ['isPricedAboveZero'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !==\n ToYesNoEnum(tempQuery.isPricedAboveZero)\n ) {\n setTempQuery({\n ...tempQuery,\n isPricedAboveZero: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n {\n filterId: 'lastPriceUpdateDates' as FilterToolbarItemId,\n filterQueryKeys: [\n 'lastPriceUpdateDates',\n 'lastPriceNoUpdateDates',\n ] as FilterToolbarItemId[],\n labelContentId: ContentId.PriceDateFilterTitle,\n filterItem: ,\n },\n\n {\n labelContentId: ContentId.IsPricedByMarketplace,\n filterId: 'isPricedByMarketplace' as FilterToolbarItemId,\n filterQueryKeys: [\n 'isPricedByMarketplace',\n ] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !==\n ToYesNoEnum(tempQuery.isPricedByMarketplace)\n ) {\n setTempQuery({\n ...tempQuery,\n isPricedByMarketplace: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n\n ...(hasFilterByCurrencyCodeFeature\n ? [\n {\n filterId: 'currencyCode' as FilterToolbarItemId,\n labelContentId: ContentId.Currency,\n filterQueryKeys: ['currencyCode'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (tempQuery.currencyCode !== newCurrencyCode) {\n setTempQuery({\n ...tempQuery,\n currencyCode: newCurrencyCode?.length\n ? newCurrencyCode\n : null,\n });\n }\n }}\n enableEmptySelection\n />\n ),\n },\n ]\n : []),\n ...(hasFilterByCurrencyCodeMultiFeature\n ? [\n {\n filterId: 'currencyCodes' as FilterToolbarItemId,\n labelContentId: ContentId.Currency,\n filterQueryKeys: ['currencyCodes'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n !isEqual(tempQuery.currencyCodes, newCurrencyCodes)\n ) {\n setTempQuery({\n ...tempQuery,\n currencyCodes: newCurrencyCodes?.length\n ? newCurrencyCodes\n : null,\n });\n }\n }}\n enableEmptySelection\n />\n ),\n },\n ]\n : []),\n ],\n },\n\n {\n titleContentId: ContentId.Broadcast,\n type: 'row',\n items: [\n {\n filterId: 'isListed' as FilterToolbarItemId,\n labelContentId: ContentId.Broadcasted,\n filterQueryKeys: ['isListed'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (yesNoEnumValue !== ToYesNoEnum(tempQuery.isListed)) {\n setTempQuery({\n ...tempQuery,\n isListed: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n {\n filterId: 'hasBroadcastError' as FilterToolbarItemId,\n labelContentId: ContentId.HasBroadcastError,\n filterQueryKeys: ['hasBroadcastError'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !==\n ToYesNoEnum(tempQuery.hasBroadcastError)\n ) {\n setTempQuery({\n ...tempQuery,\n hasBroadcastError: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ...adminHoldFilter,\n {\n filterId: 'isDuplicate' as FilterToolbarItemId,\n labelContentId: ContentId.IsDuplicate,\n filterQueryKeys: ['isDuplicate'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (yesNoEnumValue !== ToYesNoEnum(tempQuery.isDuplicate)) {\n setTempQuery({\n ...tempQuery,\n isDuplicate: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n\n {\n filterId: 'isPendingProof' as FilterToolbarItemId,\n labelContentId: ContentId.ProofOfPurchasedRequired,\n filterQueryKeys: ['isPendingProof'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !== ToYesNoEnum(tempQuery.isPendingProof)\n ) {\n setTempQuery({\n ...tempQuery,\n isPendingProof: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ],\n },\n {\n titleContentId: ContentId.Fulfillment,\n type: 'row',\n items: [\n {\n filterId: 'isPredelivered' as FilterToolbarItemId,\n labelContentId: ContentId.PreDelivered,\n type: 'row',\n filterQueryKeys: ['isPredelivered'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !== ToYesNoEnum(tempQuery.isPredelivered)\n ) {\n setTempQuery({\n ...tempQuery,\n isPredelivered: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n {\n filterId: 'deliveryType' as FilterToolbarItemId,\n labelContentId: ContentId.Delivery,\n filterQueryKeys: ['deliveryType'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (deliveryType !== tempQuery.deliveryType) {\n setTempQuery({\n ...tempQuery,\n deliveryType: deliveryType,\n });\n }\n }}\n allowCustomDeliveryType\n />\n ),\n },\n {\n filterId: 'ticketType' as FilterToolbarItemId,\n labelContentId: ContentId.TicketType,\n filterQueryKeys: ['ticketType'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (ticketType !== tempQuery.ticketType) {\n setTempQuery({\n ...tempQuery,\n ticketType: ticketType || null,\n });\n }\n }}\n valueOptionsContent={TICKET_TYPE_TO_CID}\n />\n ),\n },\n ...(hasAutoFulfillSetting\n ? [\n {\n filterId: 'isNoFulfill' as FilterToolbarItemId,\n labelContentId: ContentId.AutoFulfill,\n type: 'row',\n filterQueryKeys: ['isNoFulfill'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !==\n ToYesNoEnum(\n // the ui is the inverse of isNoFulfil\n tempQuery.isNoFulfill == null\n ? null\n : !tempQuery.isNoFulfill\n )\n ) {\n const v = FromYesNoEnum(yesNoEnumValue);\n setTempQuery({\n ...tempQuery,\n isNoFulfill: v == null ? null : !v, // the ui is the inverse of isNoFulfil\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ]\n : []),\n {\n filterId: 'hasUnsoldTickets' as FilterToolbarItemId,\n labelContentId: ContentId.HasUnsoldTickets,\n filterQueryKeys: ['hasUnsoldTickets'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !== ToYesNoEnum(tempQuery.hasUnsoldTickets)\n ) {\n setTempQuery({\n ...tempQuery,\n hasUnsoldTickets: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n {\n filterId: 'inHandDates' as const,\n labelContentId: ContentId.InHand,\n filterQueryKeys: ['inHandDates'] as FilterToolbarItemId[],\n filterItem: (\n \n setTempQuery({\n ...tempQuery,\n inHandDates: value,\n })\n }\n />\n ),\n },\n {\n filterId: 'isSeatSaver' as const,\n labelContentId: ContentId.Placeholder,\n filterQueryKeys: ['isSeatSaver'] as FilterToolbarItemId[],\n postfixIcon: showMetricsIndicationOnFilters ? (\n \n ) : undefined,\n filterItem: (\n {\n if (yesNoEnumValue !== ToYesNoEnum(tempQuery.isSeatSaver)) {\n setTempQuery({\n ...tempQuery,\n isSeatSaver: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ],\n },\n {\n titleContentId: ContentId.Mappings,\n type: 'row',\n items: [\n {\n filterId: 'isMapped' as FilterToolbarItemId,\n labelContentId: ContentId.EventMapped,\n filterQueryKeys: ['isMapped'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (yesNoEnumValue !== ToYesNoEnum(tempQuery.isMapped)) {\n setTempQuery({\n ...tempQuery,\n isMapped: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n {\n filterId: 'isSeatingUnmapped' as FilterToolbarItemId,\n labelContentId: ContentId.SeatingMapped,\n filterQueryKeys: ['isSeatingUnmapped'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !==\n ToYesNoEnum(tempQuery.isSeatingUnmapped)\n ) {\n setTempQuery({\n ...tempQuery,\n isSeatingUnmapped: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_INVERTED_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ],\n },\n seatingFilters,\n purchaseInfoFilters,\n notesFilters,\n ...tagsFilter,\n ]\n .filter((f) => f)\n .map((f) => f!),\n [\n eventFilter,\n showMetricsIndicationOnFilters,\n metricsIconNote,\n tempQuery,\n hasAutoPricingFeature,\n autoPricingFilter,\n hasFilterByCurrencyCodeFeature,\n hasFilterByCurrencyCodeMultiFeature,\n adminHoldFilter,\n hasAutoFulfillSetting,\n initialQuery.inHandDates,\n seatingFilters,\n purchaseInfoFilters,\n notesFilters,\n tagsFilter,\n setTempQuery,\n ]\n );\n\n return { filters };\n}\n","import { isEqual } from 'lodash-es';\nimport { useMemo } from 'react';\nimport {\n FilterToolbarGroup,\n FilterToolbarItemId,\n} from 'src/components/Filters';\nimport { useInternalNotesFilter } from 'src/components/Filters/InternalNotesFilter';\nimport { useMergedTagFilters } from 'src/components/MainFilterBar/Tags/useMergedTagFilters';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { DateRangeSelector } from 'src/core/POS/DateRangeSelector';\nimport { PosEnumMultiSelect } from 'src/core/POS/PosMultiSelect/PosEnumMultiSelect';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Slider } from 'src/core/ui/Slider';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { MetricsIcon } from 'src/svgs/MetricsIcon';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n MARKET_PLACE_TO_CID,\n MARKETPLACE_SALE_PAYMENT_STATE_TO_CID,\n SALES_STATUS_TO_CID,\n TICKET_TYPE_TO_CID,\n YES_NO_ENUM_FILTER_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport {\n getDisabledDatesForTimeFrameFilter,\n InhandDateRangePresetNames,\n SaleDateRangeRelativePresetNames,\n StandardDateRangePresetNames,\n} from 'src/utils/dateTimeUtils';\nimport { FromYesNoEnum, ToYesNoEnum } from 'src/utils/eventQueryUtils';\nimport { formatNumber } from 'src/utils/numberFormatter';\nimport { ReportTypes } from 'src/utils/reportsUtils';\nimport {\n ActionOutboxEntityType,\n Feature,\n Marketplace,\n Permission,\n SaleQuery,\n} from 'src/WebApiController';\n\nimport { RowFilter } from '../Filters/RowFilter';\nimport { SectionFilter } from '../Filters/SectionFilter';\nimport {\n CurrencyFilterMultiSelector,\n CurrencyFilterSelector,\n} from '../Selectors/CurrencyFilterSelector';\nimport { SellerAccountEmployeeSelector } from '../Selectors/SellerAccountEmployeeSelector';\nimport { useCommonEventFilters } from './useCommonEventFilters';\nimport { usePurchaseInfoFilters } from './usePurchaseInfoFilters';\n\nconst MAX_NUMBER_OF_TICKETS_HELD = 100_000;\n\nexport const saleMandatoryFiltersToShow: FilterToolbarItemId[] = [\n 'eventDates',\n 'saleStatuses',\n];\n\nexport function useSaleFilters({\n isReportsPage,\n isHorizontalLayout,\n showCatalogFilters,\n showMetricsIndicationOnFilters,\n}: {\n isReportsPage?: boolean;\n isHorizontalLayout?: boolean;\n showCatalogFilters?: boolean;\n showMetricsIndicationOnFilters?: boolean;\n}) {\n const { loginContext } = useAppContext();\n\n const hasFilterByCurrencyCodeMultiFeature = useUserHasFeature(\n Feature.FilterByCurrencyCodeMulti\n );\n const hasFilterByCurrencyCodeFeature = !hasFilterByCurrencyCodeMultiFeature;\n const metricsIconNote = useContent(ContentId.ThisFilterWillChangeMetrics);\n const hasAutoFulfillSetting = useUserHasFeature(Feature.AutoFulfillSetting);\n const hasHideSalePaymentReceivedFilterFeature = useUserHasFeature(\n Feature.HideSalePaymentReceivedFilter\n );\n\n const { initialQuery, tempQuery, setTempQuery } =\n useFilterQueryContext();\n\n const purchaseInfoFiltersBase = usePurchaseInfoFilters({\n query: tempQuery,\n setQuery: setTempQuery,\n reportType: isReportsPage ? ReportTypes.Sale : undefined,\n showMetricsIndicationOnFilters: showMetricsIndicationOnFilters,\n });\n\n const tagsFilter = useMergedTagFilters({\n query: tempQuery,\n setQuery: setTempQuery,\n entityType: ActionOutboxEntityType.Sale,\n });\n\n const purchaseInfoFilters = useMemo(() => {\n return {\n ...purchaseInfoFiltersBase,\n items: [\n ...purchaseInfoFiltersBase.items,\n {\n filterId: 'purchaseVendorOrderId' as FilterToolbarItemId,\n labelContentId: ContentId.ExternalPurchaseId,\n filterQueryKeys: ['purchaseVendorOrderId'] as FilterToolbarItemId[],\n filterItem: (\n {\n const newValue = e.target.value?.length\n ? e.target.value.trim()\n : null;\n if (tempQuery.purchaseVendorOrderId !== newValue) {\n setTempQuery({\n ...tempQuery,\n purchaseVendorOrderId: newValue,\n });\n }\n }}\n maxLength={200}\n />\n ),\n },\n ],\n };\n }, [purchaseInfoFiltersBase, setTempQuery, tempQuery]);\n\n const notesFilters = useInternalNotesFilter({\n entityType: ActionOutboxEntityType.Sale,\n isHorizontalLayout,\n });\n\n const seatingFilters = useMemo(\n () => ({\n titleContentId: ContentId.Seating,\n type: 'row',\n items: [\n {\n filterId: 'sectionContains',\n labelContentId: ContentId.Section,\n filterQueryKeys: [\n 'sectionEquals',\n 'sectionContains',\n 'sectionNotContains',\n ],\n filterItem: (\n \n ),\n },\n {\n filterId: 'rowContains',\n labelContentId: ContentId.Row,\n filterQueryKeys: ['rowEquals', 'rowContains', 'rowNotContains'],\n filterItem: (\n \n ),\n },\n ],\n }),\n [isHorizontalLayout, setTempQuery, tempQuery]\n );\n\n const eventFilters = useCommonEventFilters({\n showCatalogFilters,\n additionalFilters: [\n {\n filterId: 'lastSaleDates' as FilterToolbarItemId,\n labelContentId: ContentId.LastSaleDates,\n filterQueryKeys: ['lastSaleDates'] as FilterToolbarItemId[],\n filterItem: (\n \n setTempQuery({\n ...tempQuery,\n lastSaleDates: value,\n })\n }\n disabledDay={(d) =>\n getDisabledDatesForTimeFrameFilter(\n d,\n tempQuery.eventTimeFrameFilter\n )\n }\n />\n ),\n },\n {\n filterId: 'numberOfTicketsHeld' as FilterToolbarItemId,\n labelContentId: ContentId.NumberOfTicketsHeld,\n filterQueryKeys: ['numberOfTicketsHeld'] as FilterToolbarItemId[],\n filterItem: (\n (\n {formatNumber(n)}\n )}\n onValueChange={([start, end]: [number, number]) => {\n if (\n start !== (tempQuery.numberOfTicketsHeld?.start || 0) ||\n end !== tempQuery.numberOfTicketsHeld?.end\n ) {\n const newQuery = {\n ...tempQuery,\n numberOfTicketsHeld: {\n start: start === 0 ? null : start,\n end: end === MAX_NUMBER_OF_TICKETS_HELD ? null : end,\n },\n };\n setTempQuery(newQuery);\n }\n }}\n />\n ),\n },\n ],\n });\n\n return {\n filters: [\n eventFilters,\n {\n titleContentId: ContentId.Fulfillment,\n items: [\n {\n filterId: 'saleStatuses' as FilterToolbarItemId,\n labelContentId: ContentId.Status,\n filterQueryKeys: ['saleStatuses'] as FilterToolbarItemId[],\n filterItem: (\n {\n setTempQuery({\n ...tempQuery,\n saleStatuses,\n });\n }}\n />\n ),\n },\n {\n filterId: 'inHandDates' as FilterToolbarItemId,\n labelContentId: ContentId.InHand,\n filterQueryKeys: ['inHandDates'] as FilterToolbarItemId[],\n filterItem: (\n \n setTempQuery({\n ...tempQuery,\n inHandDates: value,\n })\n }\n />\n ),\n },\n {\n filterId: 'ticketType' as FilterToolbarItemId,\n labelContentId: ContentId.TicketType,\n filterQueryKeys: ['ticketType'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (ticketType !== tempQuery.ticketType) {\n setTempQuery({\n ...tempQuery,\n ticketType: ticketType,\n });\n }\n }}\n valueOptionsContent={TICKET_TYPE_TO_CID}\n />\n ),\n },\n {\n filterId: 'fulfillerSellerUserId' as FilterToolbarItemId,\n labelContentId: ContentId.FulfilledBy,\n filterQueryKeys: ['fulfillerSellerUserId'] as FilterToolbarItemId[],\n postfixIcon: showMetricsIndicationOnFilters ? (\n \n ) : undefined,\n filterItem: (\n {\n if (newId !== tempQuery.fulfillerSellerUserId) {\n setTempQuery({\n ...tempQuery,\n fulfillerSellerUserId: newId,\n });\n }\n }}\n />\n ),\n },\n {\n filterId: 'isSeatSaver' as FilterToolbarItemId,\n labelContentId: ContentId.Placeholder,\n filterQueryKeys: ['isSeatSaver'] as FilterToolbarItemId[],\n postfixIcon: showMetricsIndicationOnFilters ? (\n \n ) : undefined,\n filterItem: (\n {\n if (yesNoEnumValue !== ToYesNoEnum(tempQuery.isSeatSaver)) {\n setTempQuery({\n ...tempQuery,\n isSeatSaver: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n {\n filterId: 'fulfillmentDates' as FilterToolbarItemId,\n labelContentId: ContentId.FulfillmentDate,\n filterQueryKeys: ['fulfillmentDates'] as FilterToolbarItemId[],\n filterItem: (\n \n setTempQuery({\n ...tempQuery,\n fulfillmentDates: value,\n })\n }\n />\n ),\n },\n ...(hasAutoFulfillSetting\n ? [\n {\n filterId: 'isNoFulfill' as FilterToolbarItemId,\n labelContentId: ContentId.AutoFulfill,\n type: 'row',\n filterQueryKeys: ['isNoFulfill'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !==\n ToYesNoEnum(\n // the ui is the inverse of isNoFulfil\n tempQuery.isNoFulfill == null\n ? null\n : !tempQuery.isNoFulfill\n )\n ) {\n const v = FromYesNoEnum(yesNoEnumValue);\n setTempQuery({\n ...tempQuery,\n isNoFulfill: v == null ? null : !v, // the ui is the inverse of isNoFulfil\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ]\n : []),\n {\n filterId: 'cancellationDates' as FilterToolbarItemId,\n labelContentId: ContentId.CancellationDate,\n filterQueryKeys: ['cancellationDates'] as FilterToolbarItemId[],\n filterItem: (\n \n setTempQuery({\n ...tempQuery,\n cancellationDates: value,\n })\n }\n />\n ),\n },\n ],\n },\n {\n titleContentId: ContentId.WhenAndWhere,\n type: 'row',\n items: [\n {\n filterId: 'soldOnMarketplace' as FilterToolbarItemId,\n labelContentId: ContentId.Marketplace,\n filterQueryKeys: ['soldOnMarketplace'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (soldOnMarketplace !== tempQuery.soldOnMarketplace) {\n setTempQuery({\n ...tempQuery,\n soldOnMarketplace,\n });\n }\n }}\n valueOptionsContent={(\n loginContext?.user?.activeAccount?.marketplaceSettings?.map(\n (m) => m.mkp\n ) ?? [Marketplace.StubHub]\n )\n .concat(Marketplace.Offline)\n .reduce(\n (cur, m) => {\n cur[m] = MARKET_PLACE_TO_CID[m];\n return cur;\n },\n {} as Record\n )}\n />\n ),\n },\n {\n filterId: 'saleDates' as FilterToolbarItemId,\n labelContentId: ContentId.SaleDate,\n filterQueryKeys: ['saleDates'] as FilterToolbarItemId[],\n filterItem: (\n {\n setTempQuery({\n ...tempQuery,\n saleDates: value,\n });\n }}\n useRelativePresets\n />\n ),\n },\n {\n filterId: 'listingInsertBy' as FilterToolbarItemId,\n labelContentId: ContentId.OriginatedBy,\n filterQueryKeys: ['listingInsertBy'] as FilterToolbarItemId[],\n postfixIcon: showMetricsIndicationOnFilters ? (\n \n ) : undefined,\n filterItem: (\n {\n if (newId !== tempQuery.listingInsertBy) {\n setTempQuery({\n ...tempQuery,\n listingInsertBy: newId,\n });\n }\n }}\n />\n ),\n },\n ],\n },\n {\n titleContentId: ContentId.Payment,\n requiredPermissions: [Permission.Sales_ViewPaymentState],\n type: 'row',\n items: [\n {\n filterId: 'marketplacePaymentState' as FilterToolbarItemId,\n labelContentId: ContentId.Payment,\n filterQueryKeys: [\n 'marketplacePaymentState',\n ] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n marketplacePaymentState !==\n tempQuery.marketplacePaymentState\n ) {\n setTempQuery({\n ...tempQuery,\n marketplacePaymentState: marketplacePaymentState,\n });\n }\n }}\n valueOptionsContent={MARKETPLACE_SALE_PAYMENT_STATE_TO_CID}\n />\n ),\n },\n {\n filterId: 'paymentDates' as FilterToolbarItemId,\n labelContentId: ContentId.PaymentDate,\n filterQueryKeys: ['paymentDates'] as FilterToolbarItemId[],\n filterItem: (\n \n setTempQuery({\n ...tempQuery,\n paymentDates: value,\n })\n }\n />\n ),\n },\n // POS-5575: We want to deprecate the paymentReceived filter\n // so it's intentional to NOT show it when the feature flag is enabled\n ...(hasHideSalePaymentReceivedFilterFeature\n ? []\n : [\n {\n filterId: 'paymentReceived' as FilterToolbarItemId,\n labelContentId: ContentId.PaymentReceived,\n filterQueryKeys: ['paymentReceived'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !==\n ToYesNoEnum(tempQuery.paymentReceived)\n ) {\n setTempQuery({\n ...tempQuery,\n paymentReceived: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ]),\n {\n filterId: 'paymentReferenceId' as FilterToolbarItemId,\n labelContentId: ContentId.PaymentReference,\n filterQueryKeys: ['paymentReferenceId'] as FilterToolbarItemId[],\n filterItem: (\n {\n const newValue = e.target.value ?? null;\n if (tempQuery.paymentReferenceId !== newValue) {\n setTempQuery({\n ...tempQuery,\n paymentReferenceId: newValue,\n });\n }\n }}\n maxLength={200}\n />\n ),\n },\n ...(hasFilterByCurrencyCodeFeature\n ? [\n {\n filterId: 'currencyCode' as FilterToolbarItemId,\n labelContentId: ContentId.Currency,\n filterQueryKeys: ['currencyCode'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (tempQuery.currencyCode !== newCurrencyCode) {\n setTempQuery({\n ...tempQuery,\n currencyCode: newCurrencyCode?.length\n ? newCurrencyCode\n : null,\n });\n }\n }}\n enableEmptySelection\n />\n ),\n },\n ]\n : []),\n ...(hasFilterByCurrencyCodeMultiFeature\n ? [\n {\n filterId: 'currencyCodes' as FilterToolbarItemId,\n labelContentId: ContentId.Currency,\n filterQueryKeys: ['currencyCodes'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n !isEqual(tempQuery.currencyCodes, newCurrencyCodes)\n ) {\n setTempQuery({\n ...tempQuery,\n currencyCodes: newCurrencyCodes?.length\n ? newCurrencyCodes\n : null,\n });\n }\n }}\n enableEmptySelection\n />\n ),\n },\n ]\n : []),\n ],\n },\n seatingFilters,\n purchaseInfoFilters,\n ...(notesFilters ? [notesFilters] : []),\n ...tagsFilter,\n ],\n };\n}\n","import { debounce } from 'lodash-es';\nimport { ReactNode, useCallback, useMemo } from 'react';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\nimport { UserSetting } from 'src/WebApiController';\n\nexport const ViewModeSelector = ({\n query,\n initialQuery,\n setFilterQuery,\n viewModeSettingsId,\n viewModeCidMap,\n viewModeIconMap,\n}: {\n query: TQuery;\n initialQuery: TQuery;\n setFilterQuery: (newQuery: TQuery) => void;\n viewModeSettingsId:\n | UserSetting.InventoryPageViewMode\n | UserSetting.SalePageViewMode\n | UserSetting.PurchasePageViewMode;\n viewModeCidMap: Record;\n viewModeIconMap: Record;\n}) => {\n const {\n setUserSetting: setViewModeUserSetting,\n value: defaultViewModeUserSetting,\n } = useServerUserSetting({\n id: viewModeSettingsId,\n currentLoginUserOnly: true,\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedOnViewModeChange = useCallback(\n debounce((selectedViewMode?: string | null) => {\n if (selectedViewMode) {\n if (selectedViewMode !== query.viewMode) {\n setFilterQuery({\n ...query,\n viewMode: selectedViewMode,\n });\n }\n // We need to update initialQuery, otherwise the quick filter \"All\"\n // may change the current view mode\n if (selectedViewMode !== initialQuery.viewMode) {\n initialQuery.viewMode = selectedViewMode;\n }\n\n if (selectedViewMode !== defaultViewModeUserSetting) {\n setViewModeUserSetting(selectedViewMode);\n }\n }\n }, 200),\n [query]\n );\n\n const effectiveViewMode = useMemo(() => {\n const viewMode =\n query.viewMode ||\n defaultViewModeUserSetting ||\n Object.keys(viewModeCidMap)[0];\n\n return viewMode;\n }, [query.viewMode, defaultViewModeUserSetting, viewModeCidMap]);\n\n if (Object.keys(viewModeCidMap).length < 2) {\n return null;\n }\n\n return (\n \n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const ContainerStyledDiv = styled.div<{\n isHorizontal: boolean;\n}>`\n position: relative;\n display: flex;\n flex-grow: 0;\n align-items: stretch;\n\n ${(props) => (props.isHorizontal ? 'width: auto' : 'height: auto')};\n ${(props) => (props.isHorizontal ? 'height: 100%' : 'width: 100%')};\n`;\n\nexport const ContentStyledDiv = styled.div.attrs(\n (props: { isHorizontal: boolean; size: number }) => ({\n style: props.isHorizontal\n ? {\n width: `${props.size}px`,\n }\n : {\n height: `${props.size}px`,\n },\n })\n)<{\n isHorizontal: boolean;\n size: number;\n shouldAnimateContent: boolean;\n}>`\n flex-grow: 1;\n align-self: stretch;\n display: flex;\n flex-flow: ${(props) => (props.isHorizontal ? 'row' : 'column')};\n transition: ${(props) => (props.shouldAnimateContent ? 'all 0.3s' : 'none')};\n margin-left: ${vars.spacing.xs};\n`;\n\nexport const DividerContainer = styled.div<{\n isHorizontal: boolean;\n}>`\n width: ${() => vars.iconSize.l};\n right: -8px;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n cursor: ${(props) => (props.isHorizontal ? 'ew-resize' : 'ns-resize')};\n\n &:hover {\n .divider {\n ${(props) => (props.isHorizontal ? 'width: 4px' : 'width: 4px')};\n padding: 0;\n background-color: ${(props) => props.theme.colors.backgroundBrandHover};\n }\n }\n\n .divider {\n ${(props) => (props.isHorizontal ? 'width: 2px' : 'height: 2px')};\n transition: all 0.2s;\n position: relative;\n margin-right: -2px;\n background-color: ${(props) => props.theme.colors.borderPrimary};\n z-index: 2;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n`;\n","import React, {\n PropsWithChildren,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { DraggableCore, DraggableData, DraggableEvent } from 'react-draggable';\nimport { SidePanelButton } from 'src/components/Buttons/SidePanelButton';\nimport {\n SidePanelPage,\n useSidePanelContext,\n} from 'src/contexts/SidePanelContext';\n\nimport {\n ContainerStyledDiv,\n ContentStyledDiv,\n DividerContainer,\n} from './ResizablePanel.styled';\n\nconst MIN_PANEL_SIZE = 120; // enough to show grouping info\nconst MAX_PANEL_SIZE = 420;\n\nexport enum ResizeEdge {\n North,\n South,\n East,\n West,\n}\n\nexport type ResizablePanelProps = {\n direction: ResizeEdge;\n sidePanelPage?: SidePanelPage;\n initialSize?: number;\n disabled?: boolean;\n onResize?: (curSize: number) => void;\n autoHide?: boolean;\n minPanelSize?: number;\n maxPanelSize?: number;\n minPanelPercent?: number;\n maxPanelPercent?: number;\n defaultRatio?: number;\n showExpandButton?: boolean;\n};\n\nexport function ResizablePanel({\n children,\n direction,\n initialSize,\n disabled,\n onResize,\n sidePanelPage,\n autoHide = true,\n minPanelSize = MIN_PANEL_SIZE,\n maxPanelSize = MAX_PANEL_SIZE,\n minPanelPercent,\n maxPanelPercent,\n defaultRatio = 0.25,\n showExpandButton,\n}: PropsWithChildren) {\n const {\n isHidden,\n setCollapsed,\n setHidden,\n sidePanelWidths,\n onUpdateSidePanelWidth,\n } = useSidePanelContext();\n const [disableAnimation, setDisabledAnimation] = useState(false);\n\n const isHorizontal =\n direction === ResizeEdge.East || direction === ResizeEdge.West;\n\n const contentRef = useRef(null);\n const wrapperRef = useRef(null);\n const lastHandleRect = useRef(null);\n\n const getMaxSize = useCallback(() => {\n const parentBound =\n wrapperRef.current?.parentElement?.getBoundingClientRect();\n\n const parentSize = isHorizontal ? parentBound?.width : parentBound?.height;\n return maxPanelPercent && parentSize\n ? maxPanelPercent * parentSize\n : maxPanelSize;\n }, [isHorizontal, maxPanelPercent, maxPanelSize]);\n\n const [size, setSize] = useState(isHidden ? 0 : getMaxSize());\n\n const getMinSize = useCallback(() => {\n const parentBound =\n wrapperRef.current?.parentElement?.getBoundingClientRect();\n const parentSize = isHorizontal ? parentBound?.width : parentBound?.height;\n return minPanelPercent && parentSize\n ? minPanelPercent * parentSize\n : minPanelSize;\n }, [isHorizontal, minPanelPercent, minPanelSize]);\n\n const updateSize = useCallback(\n (size: number) => {\n if (isHidden) {\n return;\n }\n const minSize = getMinSize();\n const maxSize = getMaxSize();\n let actualSize = size;\n if (actualSize < minSize) {\n actualSize = minSize;\n }\n actualSize = Math.max(minSize, actualSize);\n actualSize = Math.min(actualSize, maxSize);\n setCollapsed(actualSize <= minSize);\n if (actualSize <= minSize && autoHide) {\n setHidden(true);\n } else {\n setSize(actualSize);\n onResize?.(actualSize);\n if (sidePanelPage) {\n onUpdateSidePanelWidth(sidePanelPage, actualSize);\n }\n }\n },\n [\n isHidden,\n getMinSize,\n getMaxSize,\n setCollapsed,\n autoHide,\n setHidden,\n onResize,\n sidePanelPage,\n onUpdateSidePanelWidth,\n ]\n );\n\n useEffect(() => {\n const content = contentRef.current;\n const parent = wrapperRef.current?.parentElement;\n if (!content || !parent) {\n return;\n }\n\n const actualContent = content.children[0];\n if (sidePanelPage && sidePanelWidths?.[sidePanelPage]) {\n setSize(sidePanelWidths[sidePanelPage]);\n } else if (initialSize != null) {\n updateSize(initialSize);\n } else if (size === 0) {\n const bound = actualContent.getBoundingClientRect();\n // !!Importatnt, assigned the current rect bound to record the last visited position\n lastHandleRect.current = bound;\n const parentBound =\n wrapperRef.current?.parentElement?.getBoundingClientRect();\n const parentSize = isHorizontal\n ? parentBound?.width\n : parentBound?.height;\n\n let proposedSize = isHorizontal ? bound.width : bound.height;\n proposedSize = proposedSize || defaultRatio * parentSize;\n\n // Initialize the size value based on the content's current size\n updateSize(proposedSize);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [initialSize]);\n\n useEffect(() => {\n if (isHidden) {\n setSize(0);\n onResize?.(0);\n return;\n }\n const defaultSize =\n (sidePanelPage && sidePanelWidths?.[sidePanelPage]) ?? getMaxSize();\n setSize(defaultSize);\n onResize?.(defaultSize);\n setCollapsed(false);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isHidden, sidePanelPage, sidePanelWidths]);\n\n const onDrag = useCallback(\n (_: DraggableEvent, data: DraggableData) => {\n const handleRect = contentRef.current?.getBoundingClientRect();\n if (!handleRect) {\n return;\n }\n let { deltaX, deltaY } = data;\n // Calculate the deltas from the relative positions between the current rect and the last handled rect\n if (lastHandleRect.current) {\n deltaX += handleRect.left - lastHandleRect.current.left;\n deltaY += handleRect.top - lastHandleRect.current.top;\n }\n // !!Importatnt, assigned the current rect bound to record the last visited position\n lastHandleRect.current = handleRect;\n // modify the size based on the drag delta\n const delta = isHorizontal ? deltaX : deltaY;\n\n const factor = [ResizeEdge.East, ResizeEdge.South].includes(direction)\n ? -1\n : 1;\n updateSize(Math.max(10, size - delta * factor));\n\n if (isHidden) {\n if (deltaX > 0 && direction === ResizeEdge.East) {\n setHidden(false);\n } else if (deltaX < 0 && direction === ResizeEdge.West) {\n setHidden(false);\n } else if (deltaY > 0 && direction === ResizeEdge.South) {\n setHidden(false);\n } else if (deltaY < 0 && direction === ResizeEdge.North) {\n setHidden(false);\n }\n }\n },\n [direction, isHidden, isHorizontal, setHidden, size, updateSize]\n );\n\n const divider = disabled ? null : (\n setDisabledAnimation(true)}\n onStop={() => setDisabledAnimation(false)}\n disabled={disabled}\n grid={\n initialSize == null\n ? undefined\n : [isHorizontal ? initialSize : 0, !isHorizontal ? initialSize : 0]\n }\n >\n \n {showExpandButton && }\n
    \n \n \n );\n const isHandleInFront =\n direction === ResizeEdge.West || direction === ResizeEdge.North;\n return (\n \n {isHandleInFront && divider}\n \n {\n // this ensure that children is only 1 element\n React.Children.only(children)\n }\n \n {!isHandleInFront && divider}\n \n );\n}\n","import { useMemo } from 'react';\nimport { useSidePanelContext } from 'src/contexts/SidePanelContext';\nimport { vars } from 'src/core/themes';\nimport { ResizeEdge } from 'src/core/ui/ResizablePanel/ResizablePanel';\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronUpIcon,\n} from 'src/svgs/Viagogo';\n\nimport { expandButton } from './SidePanelButton.css';\n\nexport function SidePanelButton({\n direction = ResizeEdge.East,\n position = 'absolute',\n}: {\n direction?: ResizeEdge;\n position?: 'relative' | 'absolute';\n}) {\n const { isHidden, setHidden } = useSidePanelContext();\n const ExpandIcon = useMemo(() => {\n if (direction === ResizeEdge.East) {\n return isHidden ? ChevronRightIcon : ChevronLeftIcon;\n } else if (direction === ResizeEdge.West) {\n return isHidden ? ChevronLeftIcon : ChevronRightIcon;\n } else if (direction === ResizeEdge.South) {\n return isHidden ? ChevronDownIcon : ChevronUpIcon;\n } else {\n return isHidden ? ChevronUpIcon : ChevronDownIcon;\n }\n }, [direction, isHidden]);\n\n return (\n setHidden(!isHidden)}\n className={expandButton}\n style={\n position === 'relative' ? { position: 'relative', top: 0 } : undefined\n }\n >\n \n
    \n );\n}\n","import { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { QuickFilter } from 'src/hooks/useQuickFilters';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getNextDateRange } from 'src/utils/dateTimeUtils';\nimport {\n DateTimeRangeWithRelative,\n EventTimeFrameFilter,\n ListingQuery,\n UserSetting,\n} from 'src/WebApiController';\n\nexport const useDefaultListingFilter = ({\n initialQuery,\n listingQuery,\n}: {\n initialQuery: ListingQuery;\n listingQuery: ListingQuery;\n}) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const defaultQuickFilters = useMemo(() => {\n const next2WeeksRange = getNextDateRange({ weeks: 2 }, new Date());\n const filters: QuickFilter[] = [\n {\n id: 'unsoldTickets',\n name: ,\n data: {\n ...initialQuery,\n eventHasUnsoldTickets: true,\n },\n },\n {\n id: 'next2Weeks',\n name: ,\n data: {\n ...initialQuery,\n eventTimeFrameFilter: EventTimeFrameFilter.Future,\n eventDates: {\n start: next2WeeksRange.start.toISOString(),\n end: next2WeeksRange.end.toISOString(),\n } as DateTimeRangeWithRelative,\n },\n },\n ];\n if (activeAccountWebClientConfig.activeAccountId) {\n filters.push({\n id: 'imPricing',\n name: ,\n data: {\n ...initialQuery,\n pricerSellerUserId: activeAccountWebClientConfig.activeAccountId,\n },\n });\n }\n filters.push({\n id: 'broadcastError',\n name: ,\n data: {\n ...initialQuery,\n hasBroadcastError: true,\n },\n });\n\n // Default filters aren't supposed to change view mode\n filters.forEach(\n (f: QuickFilter) => {\n f.data.viewMode = listingQuery.viewMode;\n }\n );\n return filters;\n }, [initialQuery, listingQuery, activeAccountWebClientConfig]);\n\n return defaultQuickFilters;\n};\n","import { ReactNode } from 'react';\nimport { FlattenedViewIcon } from 'src/svgs/FlattenedViewIcon';\nimport { MetricViewIcon } from 'src/svgs/MetricViewIcon';\nimport { TileViewIcon } from 'src/svgs/TileViewIcon';\nimport { IconsFill } from 'src/svgs/Viagogo';\nimport { InventoryViewMode } from 'src/WebApiController';\n\nexport const INVENTORY_VIEW_MODE_TO_ICON: Record = {\n [InventoryViewMode.TileView]: (\n \n ),\n [InventoryViewMode.MetricView]: (\n \n ),\n [InventoryViewMode.FlattenedView]: (\n \n ),\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const SaleIdContainer = styled.div`\n display: flex;\n align-items: baseline;\n flex-wrap: wrap;\n color: ${({ theme: { colors } }) => colors.textPrimary};\n`;\n\nexport const AttrLabel = styled.span`\n vertical-align: baseline;\n text-transform: uppercase;\n ${({ theme: { typography } }) => typography.getStyles('caption2', 'regular')}\n`;\n\nexport const AttrValue = styled.span`\n margin: ${() => `0 ${vars.spacing.xxs}`};\n font-size: ${() => vars.typography.fontSize['sm']};\n font-weight: 400;\n line-height: 20px;\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n font-size: ${() => vars.typography.fontSize['lg']};\n line-height: 24px;\n }`\n )}`}\n`;\n","import { MerchantDisplay } from 'src/components/common/MerchantDisplay';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Listing } from 'src/WebApiController';\n\nimport * as styles from './ListingBasicInfo.css';\nimport {\n AttrLabel,\n AttrValue,\n SaleIdContainer,\n} from './ListingBasicInfo.styled';\n\nexport const ListingBasicInfo = ({ listing }: { listing: Listing }) => {\n const listingIdLabel = useContent(ContentId.ListingId);\n const marketplaceLabel = useContent(ContentId.Merchant);\n\n return (\n /* TODO - search by sale id being mainly used with marketplace sale id (which can yield multiple results if we have multiple marketplaces that use the same ids)\n We are displaying Sale info without the Event's info, but there is several reason we don't need to show the Event info right now, mainly...\n 1 - Event info currently is expensive to get (calling catalog API) - when we bring catalog API info in-house, we can add it performantly\n 2 - We don't need Event info yet, because currently all our sales are from StubHub, and so NO user will see this dialog\n 3 - This might actually be replaced with the Universal Search anyway (when we have both catalog in-house and the search index).\n */\n
    \n \n {listingIdLabel}\n {listing.idOnMkp || listing.id}\n {marketplaceLabel}\n \n \n \n \n \n
    \n );\n};\n","import { debounce } from 'lodash-es';\nimport { useCallback, useContext, useEffect, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { EventEntitySearchBox } from 'src/components/Accordions/EventEntitySearchBox';\nimport { ListingBasicInfo } from 'src/components/Listings/ListingBasicInfo';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { FormatContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { SearchResultPickerDialog } from 'src/dialogs/SearchResultPickerDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { InventoryDeeplinkQueryParam } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { getDeepLinkIdFromUrl } from 'src/utils/deepLinkUtils';\nimport {\n DefaultListingQuery,\n getQueryFromUrl,\n} from 'src/utils/eventQueryUtils';\nimport { getListingDetailsModalConfigWithDeepLink } from 'src/utils/inventoryUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n Feature,\n InventoryViewMode,\n Listing,\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingQuery,\n} from 'src/WebApiController';\n\nexport function ListingSearchBox({\n isEventPage = false,\n}: {\n isEventPage?: boolean;\n}) {\n const activeId = getDeepLinkIdFromUrl(\n InventoryDeeplinkQueryParam,\n window.location.href\n );\n\n const [searchId, setSearchId] = useState();\n\n const [searchResults, setSearchResults] = useState();\n const [isLoadingSearch, setIsLoadingSearch] = useState(false);\n const [searchText, setSearchText] = useState('');\n\n const { closeDialog, launchDialog, dialogProps } = useBasicDialog();\n const { setModal, isModalOpen } = useContext(ModalContext);\n const { showErrorDialog } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const hasFullPageEventViewEntitySelection = useUserHasFeature(\n Feature.FullPageEventViewEntitySelection\n );\n\n const { posEntity: listing, setActivePosEntity } =\n useActivePosEntityContext();\n\n const {\n filterQuery: listingQuery,\n initialQuery,\n tempQuery,\n setFilterQuery,\n } = useFilterQueryContext();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedOnSearchChange = useCallback(\n debounce((text: string) => {\n if (text !== listingQuery.searchText) {\n setFilterQuery({\n ...listingQuery,\n searchText: text || null,\n });\n }\n }, 200),\n [listingQuery]\n );\n\n const clearSearchEntity = useCallback(() => {\n const newQuery = {\n ...tempQuery,\n searchText: null,\n entityIds: null,\n marketplaceEntityIds: null,\n };\n setFilterQuery(newQuery);\n }, [tempQuery, setFilterQuery]);\n\n const location = useLocation();\n\n useEffect(() => {\n if (!hasFullPageEventViewEntitySelection) {\n return;\n }\n\n // Since we only support id searching in flattened view for Listings, reset filters when view mode changes\n if (\n listingQuery.viewMode !== InventoryViewMode.FlattenedView &&\n !isEventPage &&\n listingQuery.marketplaceEntityIds\n ) {\n setFilterQuery({\n ...listingQuery,\n marketplaceEntityIds: null,\n searchText: null,\n });\n setSearchText('');\n }\n }, [\n listingQuery.marketplaceEntityIds,\n listingQuery.viewMode,\n isEventPage,\n listingQuery,\n setFilterQuery,\n hasFullPageEventViewEntitySelection,\n ]);\n\n useEffect(() => {\n if (!hasFullPageEventViewEntitySelection) {\n return;\n }\n\n const queryFromUrl = getQueryFromUrl(\n initialQuery,\n location.search\n );\n\n if (\n Array.isArray(queryFromUrl?.marketplaceEntityIds) &&\n queryFromUrl?.marketplaceEntityIds.length\n ) {\n setSearchText((prev) =>\n queryFromUrl?.marketplaceEntityIds\n ? queryFromUrl?.marketplaceEntityIds.join(',')\n : prev\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hasFullPageEventViewEntitySelection, initialQuery, setFilterQuery]);\n\n const onLookupById = useCallback(\n async (id: string, isSearching: boolean) => {\n if (\n !id &&\n tempQuery.marketplaceEntityIds &&\n hasFullPageEventViewEntitySelection\n ) {\n const newQuery = {\n ...tempQuery,\n entityIds: null,\n marketplaceEntityIds: null,\n };\n setFilterQuery({ ...newQuery });\n return;\n }\n\n if (id && !isLoadingSearch) {\n if (listing?.idOnMkp === id || listing?.id === Number(id)) {\n // If the id hasn't changed, check that if it's open, if it's not, open it\n if (!isModalOpen) {\n setModal(getListingDetailsModalConfigWithDeepLink(listing.id));\n }\n\n // Else, just don't do anything\n return;\n }\n\n if (hasFullPageEventViewEntitySelection) {\n const matchedIds = id\n .split(',')\n .filter((s) => s.trim())\n .map((s) => s.trim()); // split by commas and remove all empty strings\n\n if (matchedIds.length > 1) {\n const newQuery = {\n ...DefaultListingQuery,\n entityIds: null,\n marketplaceEntityIds: matchedIds,\n viewMode: InventoryViewMode.FlattenedView,\n };\n setFilterQuery(newQuery);\n return;\n } else if (tempQuery.marketplaceEntityIds) {\n const newQuery = {\n ...tempQuery,\n entityIds: null,\n marketplaceEntityIds: null,\n };\n setFilterQuery(newQuery);\n }\n }\n\n setSearchId(id);\n setIsLoadingSearch(true);\n\n try {\n // when user enter a text here, we don't know whether they entered the listing id or unique id\n // since 99% of the time they'll be entering a listing id, we try to lookup by that first\n const listings = isSearching\n ? await tryInvokeApi(\n () =>\n new ListingClient(\n activeAccountWebClientConfig\n ).getListingByMarketplaceListingId(id),\n (error) => {\n showErrorDialog(\n 'ListingClient.getListingByMarketplaceListingId',\n error,\n { trackErrorData: { listingId: id } }\n );\n }\n )\n : null;\n\n if (!listings || listings.length === 0) {\n const idNum = Number(id);\n\n if (isNaN(idNum)) {\n // If we can't find by either PO external id or internal id, just launch empty search result dialog\n launchDialog();\n return false;\n }\n\n // If we didn't find any listings by market-place-listing-id, assume this is a unique id search\n setActivePosEntity(idNum, undefined, true, [\n ListingDetailDataField.Basic,\n ]);\n setModal(getListingDetailsModalConfigWithDeepLink(idNum));\n\n return true;\n } else {\n // We have listings using the market place id\n // 99% of the time, the id should be unique, but if we support more than 1 marketplaces\n // the ids may collide and return more than one result, therefore we need to present to the user and ask them what they want\n if (listings.length === 1) {\n const listingInfo = listings[0];\n // happy path\n setActivePosEntity(listingInfo.id, listingInfo.idOnMkp, true, [\n ListingDetailDataField.Basic,\n ]);\n setModal(\n getListingDetailsModalConfigWithDeepLink(listingInfo.id, true)\n );\n\n return true;\n } else {\n setSearchResults(listings);\n launchDialog();\n }\n }\n } finally {\n setIsLoadingSearch(false);\n }\n }\n\n return false;\n },\n [\n activeAccountWebClientConfig,\n hasFullPageEventViewEntitySelection,\n isLoadingSearch,\n isModalOpen,\n launchDialog,\n listing?.id,\n listing?.idOnMkp,\n setActivePosEntity,\n setFilterQuery,\n setModal,\n showErrorDialog,\n tempQuery,\n ]\n );\n\n const onResultItemPicked = useCallback(\n (listing: Listing) => {\n setActivePosEntity(listing.id, listing.idOnMkp, true, [\n ListingDetailDataField.Basic,\n ]);\n setModal(getListingDetailsModalConfigWithDeepLink(listing.id, true));\n\n // We do not want to close the search dialog as users may want to click each one\n // We'll let them close the search dialog manually\n },\n [setActivePosEntity, setModal]\n );\n\n useEffect(() => {\n if (\n listingQuery.marketplaceEntityIds &&\n hasFullPageEventViewEntitySelection\n ) {\n return;\n }\n setSearchText(listingQuery.searchText ?? '');\n }, [\n hasFullPageEventViewEntitySelection,\n listingQuery.marketplaceEntityIds,\n listingQuery.searchText,\n ]);\n\n useEffect(() => {\n if (activeId?.length) {\n onLookupById(activeId, false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeId]);\n\n return (\n <>\n onLookupById(value, true)}\n onEventSearch={(value) => debouncedOnSearchChange(value)}\n searchText={searchText}\n setSearchText={setSearchText}\n clearSearchEntity={clearSearchEntity}\n disableSearchMode={isEventPage}\n />\n\n \n }\n resultItems={searchResults || []}\n renderItem={(listing: Listing) => (\n \n )}\n onResultItemPicked={onResultItemPicked}\n onCancel={closeDialog}\n />\n \n );\n}\n","import { useEffect } from 'react';\nimport { BulkEditStatusPopover } from 'src/components/common/BulkActions/BulkEditStatusPopover';\nimport { MultiSelectionToggleGlobal } from 'src/components/common/MultiSelect/Toggle/MultiSelectionToggleGlobal';\nimport { FilterToolbar } from 'src/components/FilterToolbar';\nimport { useFiltersHelpers } from 'src/components/FilterToolbar/useFiltersHelpers';\nimport { InventoryGlobalActionDropdown } from 'src/components/Listings/InventoryActionDropdown';\nimport {\n listingsMandatoryFiltersToShow,\n ViewModeSelector,\n} from 'src/components/MainFilterBar';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useFilterToolbarQuickFilters } from 'src/hooks/useQuickFilters';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { INVENTORY_VIEW_MODE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n ActionOutboxEntityType,\n Feature,\n InventoryViewMode,\n ListingQuery,\n UserSetting,\n} from 'src/WebApiController';\nimport Swiper from 'swiper';\n\nimport { SidePanelButton } from '../../Buttons/SidePanelButton';\nimport { SwiperButton } from '../../Buttons/SwiperButton';\nimport { BackSection } from '../../common/BackSection';\nimport { useListingFilters } from '../../MainFilterBar';\nimport * as styles from '../../MainFilterBar/MainFilterBar.css';\nimport { useDefaultListingFilter } from './hooks/useDefaultListingFilter';\nimport { INVENTORY_VIEW_MODE_TO_ICON } from './ListingFilterBar.types';\nimport { ListingSearchBox } from './ListingSearchBox';\n\nexport function ListingFilterBar({\n isSearchOnly,\n isEventPage = false,\n returnUrl,\n posEventId,\n swiperRef,\n}: {\n isSearchOnly?: boolean;\n isEventPage?: boolean;\n returnUrl?: string;\n posEventId?: string;\n swiperRef?: React.MutableRefObject;\n}) {\n const isMobile = useMatchMedia('mobile');\n const { filters } = useListingFilters({\n isEventPage,\n showMetricsIndicationOnFilters: true,\n });\n\n const hasNewSearchFeature = useUserHasFeature(Feature.SearchView_Inventory);\n\n const {\n filterQuery: listingQuery,\n initialQuery,\n tempQuery,\n setFilterQuery,\n setTempQuery,\n resetTempQuery,\n } = useFilterQueryContext();\n\n const defaultQuickFilters = useDefaultListingFilter({\n initialQuery,\n listingQuery,\n });\n\n useEffect(() => {\n setTempQuery(listingQuery);\n }, [listingQuery, setTempQuery]);\n\n const { value: defaultViewModeUserSetting, setUserSetting } =\n useServerUserSetting({\n id: UserSetting.InventoryPageViewMode,\n currentLoginUserOnly: true,\n });\n\n const filterToolbarProps = useFilterToolbarQuickFilters({\n quickFiltersStateSetting: UserSetting.QuickFiltersStateInventory,\n customQuickFiltersSetting: UserSetting.QuickFiltersCustomInventory,\n defaultQuickFilters,\n currentQuery: listingQuery,\n initialQuery,\n onSelect: ({ query }) => {\n if (query.viewMode != null) {\n // We need to update initialQuery, otherwise the quick filter \"All\"\n // may change the current view mode\n if (query.viewMode !== initialQuery.viewMode) {\n initialQuery.viewMode = query.viewMode;\n }\n }\n\n setFilterQuery(query);\n\n // This needs to happen after to reduce re-rendering\n if (query.viewMode != null) {\n // Update user setting view mode too so it won't revert the filter query viewMode\n if (query.viewMode !== defaultViewModeUserSetting) {\n setUserSetting(query.viewMode);\n }\n }\n },\n });\n\n const { appliedFilters } = useFiltersHelpers({\n filters,\n activeQuery: listingQuery,\n mandatoryFiltersToShow: listingsMandatoryFiltersToShow,\n initialQuery,\n });\n\n const filterToolbar = listingQuery && (\n setFilterQuery(tempQuery)}\n filters={filters}\n resetTempQuery={resetTempQuery}\n tempQuery={tempQuery}\n mandatoryFiltersToShow={listingsMandatoryFiltersToShow}\n />\n );\n\n return isSearchOnly ? (\n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n {!isMobile && (\n \n )}\n \n {!isEventPage && (\n <>\n \n\n \n \n )}\n
    \n
    \n
    \n ) : (\n
    \n {isMobile ? (\n filterToolbar\n ) : (\n <>\n
    \n
    \n {isEventPage && (\n \n )}\n {listingQuery.viewMode === InventoryViewMode.MetricView && (\n \n )}\n {filterToolbar}\n
    \n
    \n
    \n
    \n {!isEventPage && (\n <>\n \n \n \n \n \n )}\n {(!hasNewSearchFeature || isEventPage) && (\n \n )}\n
    \n
    \n \n )}\n
    \n );\n}\n","import { ReactNode, useCallback, useEffect, useState } from 'react';\nimport { useSidePanelContext } from 'src/contexts/SidePanelContext';\nimport { Modal, ModalHeader } from 'src/modals/Modal';\nimport styled from 'styled-components/macro';\n\nexport function FlyoverPanel({ children }: { children: ReactNode | null }) {\n const { setHidden, isHidden } = useSidePanelContext();\n\n // Workaround: Modal from Reactstrap only initializes properly when\n // `isOpen` set to true, so only mount the modal when `isOpen` is true.\n //\n // Not using conditional render here {!isHidden && } because we\n // want to keep the state of the children across opening/closing modal\n const [componentDidInit, setComponentInit] = useState(false);\n\n useEffect(() => {\n if (!componentDidInit && !isHidden) {\n setComponentInit(true);\n }\n }, [isHidden, componentDidInit]);\n\n const closeModal = useCallback(() => {\n setHidden(true);\n }, [setHidden]);\n\n return (\n <>\n {componentDidInit && (\n \n \n \n \n {children}\n \n )}\n \n );\n}\n\nconst ModalHeaderContent = styled.div`\n min-height: 40px;\n`;\n","import 'swiper/swiper.min.css';\n\nimport { PropsWithChildren, ReactNode, useRef } from 'react';\nimport { FlyoverPanel } from 'src/core/POS/FlyoverPanel/FlyoverPanel';\nimport {\n ResizablePanel,\n ResizablePanelProps,\n ResizeEdge,\n} from 'src/core/ui/ResizablePanel/ResizablePanel';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport Swiper, { Scrollbar } from 'swiper';\nimport { Swiper as SwiperComponent, SwiperSlide } from 'swiper/react';\n\nimport * as styles from './ExplorerLayout.css';\n\nexport function ExplorerLayout({\n leftPanelContent,\n leftPanelFlyover,\n rightPanelContent,\n rightPanelFlyover,\n autoHide,\n children,\n initialSlide,\n swiperRef,\n ...rest\n}: PropsWithChildren<\n Omit & {\n leftPanelContent?: ReactNode;\n leftPanelFlyover?: boolean;\n rightPanelContent?: ReactNode;\n rightPanelFlyover?: boolean;\n initialSlide?: number;\n swiperRef?: React.MutableRefObject;\n }\n>) {\n const mainRef = useRef(null);\n const mobile = useMatchMedia('mobile');\n\n if (mobile) {\n return (\n
    \n {\n if (swiperRef) {\n swiperRef.current = swiper;\n }\n }}\n allowTouchMove={false}\n initialSlide={initialSlide ?? leftPanelContent ? 1 : 0}\n touchReleaseOnEdges\n slidesPerView={'auto'}\n scrollbar={{\n hide: true,\n snapOnRelease: true,\n }}\n focusableElements=\"input, select, option, textarea, button, video, label, span\"\n modules={[Scrollbar]}\n className={styles.swiper}\n >\n {leftPanelContent && (\n \n
    {leftPanelContent}
    \n
    \n )}\n \n
    {children}
    \n
    \n {rightPanelContent && (\n \n
    {rightPanelContent}
    \n
    \n )}\n \n
    \n );\n }\n\n const subPanel = (\n
    \n {leftPanelContent ?? rightPanelContent}\n
    \n );\n\n return (\n
    \n {leftPanelContent &&\n (leftPanelFlyover ? (\n {subPanel}\n ) : (\n \n {subPanel}\n \n ))}\n\n
    {children}
    \n\n {rightPanelContent &&\n (rightPanelFlyover ? (\n {subPanel}\n ) : (\n \n {subPanel}\n \n ))}\n
    \n );\n}\n","import { SearchResultIdQueryParam } from './constants/constants';\nimport { removeFilters } from './eventQueryUtils';\n\nexport const createPurchaseSearchPageUrl = (\n searchResultId?: string,\n queryParamsToRemove?: string[] // queryParams to remove from final URL\n): string => {\n let searchParams = '';\n const url = new URL(window.location.href);\n\n if (searchResultId) {\n url.searchParams.set(SearchResultIdQueryParam, searchResultId);\n }\n (queryParamsToRemove ?? []).forEach((param) =>\n url.searchParams.delete(param)\n );\n searchParams = `?${removeFilters(url.searchParams.toString(), [\n 'searchText',\n ])}`;\n return `/purchases/search${searchParams}`;\n};\n\nexport const createSaleSearchPageUrl = (\n searchResultId?: string,\n queryParamsToRemove?: string[] // queryParams to remove from final URL\n): string => {\n let searchParams = '';\n const url = new URL(window.location.href);\n\n if (searchResultId) {\n url.searchParams.set(SearchResultIdQueryParam, searchResultId);\n }\n (queryParamsToRemove ?? []).forEach((param) =>\n url.searchParams.delete(param)\n );\n searchParams = `?${removeFilters(url.searchParams.toString(), [\n 'searchText',\n ])}`;\n return `/sales/search${searchParams}`;\n};\n\nexport const createInventorySearchPageUrl = (\n searchResultId?: string,\n queryParamsToRemove?: string[] // queryParams to remove from final URL\n): string => {\n let searchParams = '';\n const url = new URL(window.location.href);\n\n if (searchResultId) {\n url.searchParams.set(SearchResultIdQueryParam, searchResultId);\n }\n (queryParamsToRemove ?? []).forEach((param) =>\n url.searchParams.delete(param)\n );\n searchParams = `?${removeFilters(url.searchParams.toString(), [\n 'searchText',\n ])}`;\n return `/inventory/search${searchParams}`;\n};\n","import { useCallback, useRef } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { EventAccordionItemProps } from 'src/components/Accordions';\nimport { AccountDisabledNotification } from 'src/components/common/AccountDisabledNotification';\nimport { EventListing } from 'src/components/Events/EventListing';\nimport { PerformerVenueList } from 'src/components/Events/PerformerVenueList';\nimport { ListingFilterBar } from 'src/components/Listings/ListingFilterBar';\nimport { ListingSearchBox } from 'src/components/Listings/ListingFilterBar/ListingSearchBox';\nimport { MainFilterBar } from 'src/components/MainFilterBar';\nimport { CatalogMultiSelectionContextProvider } from 'src/contexts/CatalogMultiSelectionContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { MultiSelectionContextProvider } from 'src/contexts/MultiSelectionContext';\nimport { ExplorerLayout } from 'src/core/layouts';\nimport { Button, Stack } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { createInventorySearchPageUrl } from 'src/utils/advancedSearchUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n CatalogEntity,\n Event,\n EventGroupingType,\n Feature,\n InventoryViewMode,\n Listing,\n ListingQuery,\n} from 'src/WebApiController';\nimport Swiper from 'swiper';\n\nimport { MainRoute } from '../MainRoute';\n\nexport function InventoryEventsExplorer({\n onPerformerVenueRendered,\n onEventsRendered,\n}: {\n onPerformerVenueRendered?: (\n items: CatalogEntity[],\n itemType: EventGroupingType\n ) => void;\n onEventsRendered?: (items: Event[]) => void;\n}) {\n const routeTitle = useContent(ContentId.Inventory);\n const { filterQuery } = useFilterQueryContext();\n\n const onItemsRendered = (items: EventAccordionItemProps[]) => {\n onEventsRendered?.(items.flatMap((i) => i?.event ?? []));\n };\n\n const swiperRef = useRef();\n const mobile = useMatchMedia('mobile');\n\n const hasNewSearchFeature = useUserHasFeature(Feature.SearchView_Inventory);\n\n const navigate = useNavigate();\n\n const onAdvancePurchaseSearch = useCallback(() => {\n const searchUrl = createInventorySearchPageUrl();\n\n setTimeout(() => {\n navigate(searchUrl, {\n state: {\n returnUrl: `${location.pathname}${location.search}`,\n },\n });\n }, 10);\n }, [navigate]);\n\n return (\n \n \n \n \n \n \n \n )\n }\n >\n \n \n \n }\n leftPanelFlyover={\n filterQuery.viewMode === InventoryViewMode.MetricView\n }\n >\n \n {mobile && (\n \n )}\n \n \n \n \n \n \n \n );\n}\n","import { useCallback } from 'react';\nimport { ActivePosEntityProvider } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n CatalogDataContextProvider,\n ExpandedEventData,\n} from 'src/contexts/CatalogDataContext';\nimport { CatalogMetricsContextProvider } from 'src/contexts/CatalogMetricsContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport {\n FilterQueryContextProvider,\n useFilterQueryContext,\n} from 'src/contexts/FilterQueryContext';\nimport { ListingNotificationContextProvider } from 'src/contexts/ListingNotificationContext';\nimport { SellerUserSettingsProvider } from 'src/contexts/SellerUserSettingsContext';\nimport { SidePanelProvider } from 'src/contexts/SidePanelContext';\nimport { useGetActiveAccountClientConfig } from 'src/hooks/useGetActiveAccountClientConfig';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { EVENT_DETAILED_METRICS_QUERY_KEY } from 'src/tables/EventsTable/EventsTable.constants';\nimport {\n DefaultListingQuery,\n EmptyListingQuery,\n} from 'src/utils/eventQueryUtils';\nimport { transformData } from 'src/utils/eventWithDataUtils';\nimport {\n ListingCatalogMetricsQueryKey,\n ListingCatalogQueryKey,\n} from 'src/utils/inventoryUtils';\nimport { addListingMetrics } from 'src/utils/ticketMetricUtils';\nimport {\n ActionOutboxEntityType,\n Feature,\n InventoryViewMode,\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingMetrics,\n ListingQuery,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { INVENTORY_USER_SETTINGS } from '../InventoryEvent/constants';\nimport {\n getCatalogData,\n getCatalogDataExpanded,\n getCatalogMetrics,\n getCatalogSectionalDataExpanded,\n getEventDetailedMetrics,\n listingQueryValueTransformFromUrl,\n listingQueryValueTransformToUrl,\n} from './Inventory.utils';\nimport { InventoryEventsExplorer } from './InventoryEventsExplorer';\n\nexport function Inventory() {\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const hasSectionalLoadInListingTable = useUserHasFeature(\n Feature.SectionalLoadInListingTable\n );\n\n const getCatalogDataExpandedCallback = useCallback(\n (ids: string[], filterQuery: ListingQuery) => {\n if (hasSectionalLoadInListingTable) {\n return getCatalogSectionalDataExpanded(\n ids,\n filterQuery,\n [\n ListingDetailDataField.Basic,\n ListingDetailDataField.Pricing,\n ListingDetailDataField.AutoPricing,\n ],\n {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError(\n 'ListingClient.getListingsSectionalDataForEvents',\n error,\n {\n ...filterQuery,\n eventIds: ids,\n }\n );\n },\n }\n );\n }\n return getCatalogDataExpanded(ids, filterQuery, {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError('ListingClient.getListingsForEvents', error, {\n ...filterQuery,\n eventIds: ids,\n });\n },\n });\n },\n [activeAccountWebClientConfig, hasSectionalLoadInListingTable, trackError]\n );\n\n const onCatalogDataExpandedCallback = useCallback(\n (\n ids: string[],\n filterQuery: ListingQuery,\n currentData?: ExpandedEventData\n ) =>\n getCatalogSectionalDataExpanded(\n ids,\n filterQuery,\n [ListingDetailDataField.Purchase, ListingDetailDataField.Tags],\n {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError('ListingClient.getCatalogSectionalDataExpanded', error, {\n ...filterQuery,\n eventIds: ids,\n });\n },\n },\n currentData\n ),\n [activeAccountWebClientConfig, trackError]\n );\n\n return (\n \n \n initialQuery={DefaultListingQuery}\n emptyQuery={EmptyListingQuery}\n viewModeSettingId={UserSetting.InventoryPageViewMode}\n queryValueTransformToUrl={listingQueryValueTransformToUrl}\n queryValueTransformFromUrl={listingQueryValueTransformFromUrl}\n saveQueryInUrl\n >\n \n entityType={ActionOutboxEntityType.Listing}\n queryKey={ListingCatalogQueryKey}\n getCatalogData={(c, f) => getCatalogData(c, f, true)}\n getCatalogDataExpanded={getCatalogDataExpandedCallback}\n onCatalogDataExpanded={\n hasSectionalLoadInListingTable\n ? onCatalogDataExpandedCallback\n : undefined\n }\n transformEventData={transformData}\n >\n \n \n \n \n );\n}\n\nconst ListingRouteBody = () => {\n const { filterQuery } = useFilterQueryContext();\n const getActClientCfg = useGetActiveAccountClientConfig(\n 'Inventory.ListingClient.getListingByListingId'\n );\n\n const hasSectionalLoadDataFeature = useUserHasFeature(\n Feature.ListingLoadBySection\n );\n\n const getActivePosEntity = useCallback(\n async (\n posEntityId: number,\n curEntity?: ListingDetails | null,\n dataToGet?: string[] | null\n ) => {\n const activeClientCf = await getActClientCfg();\n\n const listingDetail = await new ListingClient(\n activeClientCf\n ).getListingByListingId(\n posEntityId,\n hasSectionalLoadDataFeature ? curEntity ?? undefined : undefined,\n hasSectionalLoadDataFeature\n ? dataToGet?.map((s) => s as ListingDetailDataField) ?? []\n : undefined\n );\n\n if (listingDetail) {\n return {\n posEntityId: listingDetail.id,\n posEntity: listingDetail,\n posEntityDisplayId: listingDetail.idOnMkp,\n };\n }\n\n return {};\n },\n [getActClientCfg, hasSectionalLoadDataFeature]\n );\n\n const isSidePanelFlyover =\n filterQuery.viewMode === InventoryViewMode.MetricView;\n\n const hasMetricsV2Feature = useUserHasFeature(Feature.CatalogMetricsV2);\n\n return (\n \n queryKey={\n isSidePanelFlyover\n ? EVENT_DETAILED_METRICS_QUERY_KEY\n : ListingCatalogMetricsQueryKey\n }\n entityType={ActionOutboxEntityType.Listing}\n isDetailed={isSidePanelFlyover}\n getCatalogMetrics={(c, f, r) =>\n isSidePanelFlyover\n ? getEventDetailedMetrics(c, f, r, hasMetricsV2Feature)\n : getCatalogMetrics(c, f, r, hasMetricsV2Feature)\n }\n addCatalogMetrics={addListingMetrics}\n >\n \n entityType={ActionOutboxEntityType.Listing}\n getActivePosEntity={getActivePosEntity}\n >\n \n \n \n \n \n \n \n );\n};\n","import { useMemo } from 'react';\nimport { PerformerCategoryIcon } from 'src/components/common/PerformerCategoryIcon';\nimport { SummaryTile } from 'src/components/common/SummaryTile';\nimport {\n AverageTicketPriceDisplay,\n SalesAndMarginDisplay,\n TicketsListedAndSoldDisplay,\n} from 'src/components/Listings/InventorySummaryWidgets';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { groupAndAggregateMetrics } from 'src/contexts/CatalogMetricsContext/CatalogMetrics.utils';\nimport { useGeSummaryMetricsQuery } from 'src/contexts/CatalogMetricsContext/useGetSummaryMetricsQuery';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { hideMobile } from 'src/core/themes/shared.css';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { getCatalogSummaryMetrics } from 'src/navigations/Routes/Inventory';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n addListingMetrics,\n getInventorySummaryListingMetricsDisplayStrings,\n} from 'src/utils/ticketMetricUtils';\nimport {\n Feature,\n ListingMetrics,\n ListingQuery,\n Performer,\n} from 'src/WebApiController';\n\nimport * as styles from './InventoryEventListing.css';\n\nconst mergeCatalogMetrics = (metrics: ListingMetrics[]) =>\n groupAndAggregateMetrics(metrics, addListingMetrics);\n\nexport const InventoryEventSummaryMetrics = () => {\n const { data } = useCatalogDataContext();\n const hasBlockInventorySummaryStatsFeature = useUserHasFeature(\n Feature.BlockInventorySummaryStats\n );\n\n const { filterQuery } = useFilterQueryContext();\n const { loginContext } = useAppContext();\n\n const { summaryMetrics } = useGeSummaryMetricsQuery(\n 'ListingMetrics',\n filterQuery.performerIds,\n filterQuery.venueIds,\n mergeCatalogMetrics,\n getCatalogSummaryMetrics\n );\n\n const currencyCode = loginContext?.user?.activeAccount?.currencyCode;\n const formattedTotalMetrics = useMemo(() => {\n return summaryMetrics\n ? getInventorySummaryListingMetricsDisplayStrings(\n summaryMetrics,\n currencyCode\n )\n : null;\n }, [currencyCode, summaryMetrics]);\n\n const selectedEntity = (() => {\n const { performerIds, venueIds } = filterQuery;\n const selectedPerformersCount = performerIds?.length ?? 0;\n const selectedVenuesCount = venueIds?.length ?? 0;\n // return if only 1 entity is selected\n if (selectedPerformersCount + selectedVenuesCount === 1) {\n if (performerIds?.length === 1) {\n return data?.performers[performerIds[0]];\n }\n if (venueIds?.length === 1) {\n return data?.venues[venueIds[0]];\n }\n }\n })();\n\n if (hasBlockInventorySummaryStatsFeature) {\n return null;\n }\n\n return (\n
    \n \n \n \n {selectedEntity?.name ?? }\n {selectedEntity && (\n \n {(selectedEntity as Performer).categ && (\n <>\n \n  \n \n )}\n {selectedEntity?.descr}\n \n )}\n \n \n }\n showLoadingPlaceholders={!formattedTotalMetrics}\n >\n {formattedTotalMetrics?.formattedTotalListPrice}\n \n \n \n \n \n \n \n \n \n
    \n );\n};\n","import { useMemo } from 'react';\nimport { useGetNoSelectedItemsLabel } from 'src/components/common/MultiSelect/useGetNoSelectedItemsLabel';\nimport { useContent } from 'src/contexts/ContentContext';\nimport {\n MultiSelectScope,\n NO_GROUP_ID,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\ninterface UseInventoryFlattedViewSelectedLegendProps {\n singleElementLabel: string;\n multipleElementsLabel: string;\n}\n\nexport const useEventFlattedViewSelectedLegend = ({\n singleElementLabel,\n multipleElementsLabel,\n}: UseInventoryFlattedViewSelectedLegendProps) => {\n const { selectionMode, totalItemsSelected, itemSelection } =\n useMultiSelectionContext();\n const selectedText = useContent(ContentId.Selected);\n\n const isAllGroupsMode = selectionMode?.mode === MultiSelectScope.AllGroups;\n const isNoGroupSelection = !!itemSelection?.[NO_GROUP_ID];\n const noItemsSelected = useGetNoSelectedItemsLabel();\n\n return useMemo(() => {\n if (!isAllGroupsMode || !totalItemsSelected || !isNoGroupSelection) {\n return noItemsSelected;\n }\n\n const listingCount = itemSelection[NO_GROUP_ID].items.filter(\n (itemId) => Number(itemId) > 0\n ).length;\n\n const selectedListingsLabel = `${listingCount} ${\n listingCount === 1 ? singleElementLabel : multipleElementsLabel\n }`;\n\n return `${selectedListingsLabel} ${selectedText}`.toLocaleLowerCase();\n }, [\n isAllGroupsMode,\n totalItemsSelected,\n isNoGroupSelection,\n itemSelection,\n singleElementLabel,\n multipleElementsLabel,\n selectedText,\n noItemsSelected,\n ]);\n};\n","import { ReactNode, useEffect } from 'react';\nimport { useEventFlattedViewSelectedLegend } from 'src/components/Events/EventListing/useEventFlattedViewSelectedLegend';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\ninterface SetInventoryFlattenedViewSelectionCountLabelProps {\n children: ReactNode;\n}\n\nexport const SetInventoryFlattenedViewSelectionCountLabel = ({\n children,\n}: SetInventoryFlattenedViewSelectionCountLabelProps) => {\n const listingText = useContent(ContentId.Listing);\n const listingsText = useContent(ContentId.Listings);\n const { setSelectedCountLabel, setUsingCustomSelectedCountLabel } =\n useMultiSelectionContext();\n\n useEffect(() => {\n setUsingCustomSelectedCountLabel(true);\n }, [setUsingCustomSelectedCountLabel]);\n\n const selectedLegend = useEventFlattedViewSelectedLegend({\n singleElementLabel: listingText,\n multipleElementsLabel: listingsText,\n });\n\n useEffect(() => {\n setSelectedCountLabel(selectedLegend);\n }, [selectedLegend, setSelectedCountLabel]);\n\n return <>{children};\n};\n","import clsx from 'clsx';\nimport { MouseEvent, ReactNode, useMemo } from 'react';\nimport { useToggle } from 'react-use';\nimport { ExpandCollapsableContentButton } from 'src/components/common/CollapsableContent/ExpandCollapsableContentButton';\nimport { MultiSelectActionBar } from 'src/components/common/MultiSelect/MultiSelectActionBar';\nimport { collapsedRow } from 'src/components/Events/EventListing/InventoryEventListing/InventoryFlattenedView.css';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCollapsableViewContext } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { InputPriceFocusProvider } from 'src/contexts/InputPriceFocusContext/InputPriceFocusContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { ColumnSettingsModal } from 'src/modals/ColumnSettings/ColumnSettings';\nimport { LayoutIcon } from 'src/svgs';\nimport {\n ListingTableFlattened,\n ListingTableFlattenedProps,\n} from 'src/tables/ListingTable/ListingTableFlattened';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getEventPerformerVenue } from 'src/utils/eventWithDataUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\n\nimport { bulkToolbarContainer } from '../EventListing.css';\nimport { InventoryGlobalBulkActions } from './BulkActions';\nimport * as styles from './InventoryFlattenedView.css';\nimport { SetInventoryFlattenedViewSelectionCountLabel } from './SetInventoryFlattenedViewSelectionCountLabel';\n\ntype InventoryFlattenedViewProps = {\n before?: ReactNode;\n topListItemBefore?: ReactNode;\n /**\n * If provided, the list will scroll to the month containing the event with the given posEventId\n */\n scrollToEventId?: string;\n doNotShowToolbar?: boolean;\n} & Pick<\n ListingTableFlattenedProps,\n | 'alwaysShowCheckbox'\n | 'showSelectAllOnHeader'\n | 'enableColumnFilters'\n | 'ignoreMaxCount'\n>;\n\nexport const InventoryFlattenedView = ({\n before,\n topListItemBefore,\n doNotShowToolbar,\n ...rest\n}: InventoryFlattenedViewProps) => {\n const [isColumnModalOpen, toggleColumnModal] = useToggle(false);\n\n const { isCollapsedView, setIsCollapsedView } = useCollapsableViewContext();\n\n const onColumnSettingButtonClickHandler = (\n e: MouseEvent\n ) => {\n e.stopPropagation();\n if (!isColumnModalOpen) toggleColumnModal(true);\n };\n\n const { data: catalog, eventsTransformed } = useCatalogDataContext();\n const { listingCount, ungroupedListingCount, listingGroupCount } =\n useMemo(() => {\n let listingCount = 0;\n let ungroupedListingCount = 0;\n let listingGroupCount = 0;\n\n (eventsTransformed ?? []).forEach((ev) => {\n listingCount += ev.counts.listCnt ?? 0;\n listingGroupCount += ev.counts.listGrpCnt ?? 0;\n ungroupedListingCount += ev.counts.ungrListCnt ?? 0;\n });\n\n return { listingCount, ungroupedListingCount, listingGroupCount };\n }, [eventsTransformed]);\n\n const listings = useMemo(() => {\n const listingsArray = eventsTransformed?.every(\n (ev) => ev.entities.listings == null\n )\n ? null\n : eventsTransformed?.flatMap((ev) => ev.entities.listings);\n return listingsArray\n ?.map((l) => {\n const { event, performer, venue } = getEventPerformerVenue(\n l?.viagVirtualId,\n catalog\n );\n\n if (event) {\n return { event: event.event, listing: l, performer, venue };\n }\n\n return null;\n })\n .filter((l) => l != null)\n .map((l) => l!);\n }, [catalog, eventsTransformed]);\n\n return (\n \n {isColumnModalOpen ? (\n \n onClose={toggleColumnModal}\n sectionType={SectionType.ListingsFlattened}\n />\n ) : null}\n \n {before}\n
    \n {topListItemBefore}\n {!doNotShowToolbar && (\n \n \n \n \n \n \n {isCollapsedView && (\n setIsCollapsedView(false)}\n />\n )}\n \n \n \n \n \n )}\n \n \n \n \n );\n};\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n EventAccordionItemProps,\n InventoryEventsAccordion,\n translateEventToInventoryAccordionItem,\n} from 'src/components/Accordions';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { MultiSelectActionBar } from 'src/components/common/MultiSelect/MultiSelectActionBar';\nimport { SetInventoryEventAccordionSelectionCountLabel } from 'src/components/Events/EventListing/InventoryEventListing/SetInventoryEventAccordionSelectionCountLabel';\nimport { SetInventoryMetricsSelectionCountLabel } from 'src/components/Events/EventListing/InventoryEventListing/SetInventoryMetricsViewSelectionCountLabel';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { CollapsableViewProvider } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport {\n NO_GROUP_ID,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { SearchSolidIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SomethingWentWrong } from 'src/views';\nimport { InventoryViewMode, Listing, ListingQuery } from 'src/WebApiController';\n\nimport * as styles from '../EventListing.css';\nimport { InventoryGlobalBulkActions } from './BulkActions';\nimport { InventoryDetailedEventView } from './InventoryDetailedEventView';\nimport { InventoryEventSummaryMetrics } from './InventoryEventSummaryMetrics';\nimport { InventoryFlattenedView } from './InventoryFlattenedView';\n\nexport function InventoryEventListing({\n onItemsRendered,\n}: {\n onItemsRendered?: (items: EventAccordionItemProps[]) => void;\n}) {\n const {\n isLoading,\n errorInfo,\n eventsTransformed,\n eventsExpansion: { expandedListItems, toggleListItemExpansion },\n } = useCatalogDataContext();\n const { filterQuery } = useFilterQueryContext();\n const location = useLocation();\n\n const onInventoryEventExpanded = useCallback(\n async (viagVirtualId: string) => {\n toggleListItemExpansion([viagVirtualId]);\n },\n [toggleListItemExpansion]\n );\n\n const [returningFromViagogoEventId, setReturningFromViagogoEventId] =\n useState();\n\n useEffect(() => {\n const fromViagogoEventId = (\n location.state as { fromViagogoEventId?: string }\n )?.fromViagogoEventId;\n if (fromViagogoEventId) {\n setReturningFromViagogoEventId(fromViagogoEventId);\n }\n }, [location.state]);\n\n const scrollToItemIndex = useMemo(() => {\n if (returningFromViagogoEventId == null || eventsTransformed == null) {\n return undefined;\n }\n\n const scrollToIndex = eventsTransformed.findIndex(\n (e) => e.event.viagVirtualId === returningFromViagogoEventId\n );\n // Not found means the event is not in the list, so we don't want to scroll to it any more\n if (scrollToIndex === -1) {\n setReturningFromViagogoEventId(undefined);\n }\n\n return scrollToIndex === -1 ? undefined : scrollToIndex;\n }, [eventsTransformed, returningFromViagogoEventId]);\n\n const eventIdFromHash =\n location.hash.length === 37 ? location.hash.substring(1) : undefined; // UUID 36 chars\n\n useEffect(() => {\n if (eventIdFromHash) {\n toggleListItemExpansion([eventIdFromHash]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [eventIdFromHash]);\n\n const { setAllGroupsIds, clearShiftKeySelection, setSelectionMode } =\n useMultiSelectionContext();\n\n useEffect(() => {\n clearShiftKeySelection();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filterQuery.viewMode]);\n\n const listingItems = useMemo(() => {\n return (\n eventsTransformed?.map((e, i) =>\n translateEventToInventoryAccordionItem(e, i)\n ) || []\n );\n }, [eventsTransformed]);\n\n useEffect(() => {\n if (filterQuery.viewMode === InventoryViewMode.FlattenedView) {\n setAllGroupsIds([NO_GROUP_ID]);\n } else {\n const groupIds = listingItems.map((listingItem) => listingItem.itemId);\n setAllGroupsIds(groupIds);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [listingItems, filterQuery.viewMode]);\n\n // Reset and close selection mode when changing view\n useEffect(() => {\n setSelectionMode();\n }, [filterQuery.viewMode, setSelectionMode]);\n\n return (\n <>\n {isLoading && }\n {errorInfo && (\n }\n />\n )}\n {!isLoading &&\n !errorInfo &&\n (eventsTransformed && eventsTransformed.length > 0 ? (\n
    \n {filterQuery.viewMode === InventoryViewMode.MetricView ? (\n }\n topListItemBefore={\n \n \n \n \n \n }\n items={eventsTransformed}\n highlightEvent={eventIdFromHash}\n scrollToEventId={returningFromViagogoEventId}\n />\n ) : filterQuery.viewMode === InventoryViewMode.FlattenedView ? (\n \n }\n enableColumnFilters\n />\n \n ) : (\n }\n topListItemBefore={\n \n \n \n \n \n }\n items={listingItems}\n disablePagination\n scrollToItemIndex={scrollToItemIndex}\n selectedIds={expandedListItems}\n onSelect={onInventoryEventExpanded}\n onItemsRendered={onItemsRendered}\n />\n )}\n
    \n ) : (\n \n \n \n }\n >\n \n \n \n \n \n \n \n ))}\n \n );\n}\n","import { ReactNode, useEffect } from 'react';\nimport { useEventsAccordionSelectedLegend } from 'src/components/Events/EventListing/useEventsAccordionSelectedLegend';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\ninterface SetSalesEventAccordionSelectionCountLabelProps {\n children: ReactNode;\n}\n\nexport const SetSalesEventAccordionSelectionCountLabel = ({\n children,\n}: SetSalesEventAccordionSelectionCountLabelProps) => {\n const saleText = useContent(ContentId.Sale);\n const salesText = useContent(ContentId.Sales);\n const { setSelectedCountLabel, setUsingCustomSelectedCountLabel } =\n useMultiSelectionContext();\n\n useEffect(() => {\n setUsingCustomSelectedCountLabel(true);\n }, [setUsingCustomSelectedCountLabel]);\n\n const selectedLegend = useEventsAccordionSelectedLegend({\n singleElementLabel: saleText,\n multipleElementsLabel: salesText,\n });\n\n useEffect(() => {\n setSelectedCountLabel(selectedLegend);\n }, [selectedLegend, setSelectedCountLabel]);\n\n return <>{children};\n};\n","import { ReactNode, useEffect } from 'react';\nimport { useEventFlattedViewSelectedLegend } from 'src/components/Events/EventListing/useEventFlattedViewSelectedLegend';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\ninterface SetSalesFlattenedViewSelectionCountLabelProps {\n children: ReactNode;\n}\n\nexport const SetSalesFlattenedViewSelectionCountLabel = ({\n children,\n}: SetSalesFlattenedViewSelectionCountLabelProps) => {\n const listingText = useContent(ContentId.Sale);\n const listingsText = useContent(ContentId.Sales);\n const { setSelectedCountLabel, setUsingCustomSelectedCountLabel } =\n useMultiSelectionContext();\n\n useEffect(() => {\n setUsingCustomSelectedCountLabel(true);\n }, [setUsingCustomSelectedCountLabel]);\n\n const selectedLegend = useEventFlattedViewSelectedLegend({\n singleElementLabel: listingText,\n multipleElementsLabel: listingsText,\n });\n\n useEffect(() => {\n setSelectedCountLabel(selectedLegend);\n }, [selectedLegend, setSelectedCountLabel]);\n\n return <>{children};\n};\n","import { useState } from 'react';\nimport { ExportSalesButton } from 'src/components/Buttons/ExportSalesButton';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { useUpdatePurchasesPermissions } from 'src/components/Purchases/BulkActions/useUpdatePurchasesPermissions';\nimport { useBulkEditCommissionAction } from 'src/components/Sales/SalesActionDropdown/components/BulkEditCommissionAction';\nimport { useBulkMarkSaleAsPaid } from 'src/components/Sales/SalesActionDropdown/components/BulkMarkSaleAsPaid';\nimport { useBulkUpdateInternalNotesAction } from 'src/components/Sales/SalesActionDropdown/components/BulkUpdateInternalNotesAction';\nimport { useBulkUpdateSalesSettings } from 'src/components/Sales/SalesActionDropdown/components/BulkUpdateSalesGeneralSettings';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { useSalesBulkActionsState } from '../../useSalesBulkActionsState';\nimport { useUpdateSalesSettingsPermissions } from '../../useUpdateSalesSettingsPermissions';\n\nexport const SettingsActions = () => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n const [isLoading, setIsLoading] = useState(false);\n const { filterQueryWithEventIds } = useSalesBulkActionsState();\n\n const bulkUpdateGeneralSettings = useBulkUpdateSalesSettings(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkUpdateInternalNotes = useBulkUpdateInternalNotesAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkEditCommissionAction = useBulkEditCommissionAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkMarkSaleAsPaid = useBulkMarkSaleAsPaid(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const { hasUpdateSalesSettingsPermission } =\n useUpdateSalesSettingsPermissions();\n const {\n hasUpdatePurchasesPermission,\n hasPurchaseUpdateCommissionPermission,\n } = useUpdatePurchasesPermissions();\n\n if (\n !hasUpdateSalesSettingsPermission &&\n !hasUpdatePurchasesPermission &&\n !hasPurchaseUpdateCommissionPermission\n ) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {bulkUpdateGeneralSettings.dropDown}\n {bulkUpdateInternalNotes.dropDown}\n {bulkEditCommissionAction.dropDown}\n {bulkMarkSaleAsPaid.dropDown}\n \n \n \n \n \n );\n};\n","import { useState } from 'react';\nimport { BulkEditTagsActionPermissionsHandler } from 'src/components/common/BulkActions/BulkEditTagsAction/BulkEditTagsActionPermissionsHandler';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { useBulkEditTagsAction } from 'src/components/Sales/SalesActionDropdown/components/BulkEditTagsAction';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ActionOutboxEntityType } from 'src/WebApiController';\n\nimport { useSalesBulkActionsState } from '../../useSalesBulkActionsState';\n\nexport const TagsActions = () => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n const [isLoading, setIsLoading] = useState(false);\n const { filterQueryWithEventIds } = useSalesBulkActionsState();\n const bulkUpdateTags = useBulkEditTagsAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n return (\n \n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {bulkUpdateTags.dropDown}\n \n \n );\n};\n","import { MultiSelectActionsContainer } from 'src/components/common/MultiSelect/MultiSelectActionsContainer';\nimport { FulfillmentActions } from 'src/components/Sales/BulkActions/SalesGlobalBulkActions/Actions/FulfillmentActions';\nimport { SettingsActions } from 'src/components/Sales/BulkActions/SalesGlobalBulkActions/Actions/SettingsActions';\nimport { TagsActions } from 'src/components/Sales/BulkActions/SalesGlobalBulkActions/Actions/TagsActions';\n\nexport const SalesGlobalBulkActions = () => {\n return (\n \n \n \n \n \n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components';\n\nexport const SubfilterContainer = styled.div<{ isSelected?: boolean }>`\n display: flex;\n flex-direction: column;\n row-gap: ${() => vars.spacing['sm']};\n flex-grow: 1;\n background: ${(props) =>\n props.isSelected ? '#f1ebfa' : props.theme.colors.backgroundSecondary};\n border: ${(props) =>\n props.isSelected ? '1px solid #3F1D75' : '1px solid transparent'};\n border-radius: ${() => vars.borderRadius.m};\n padding: ${() => vars.spacing['3xl']};\n cursor: pointer;\n &:hover {\n background: #f1ebfa;\n border-color: ${(props) => (props.isSelected ? undefined : '#f1ebfa')};\n }\n`;\n","import { ReactNode } from 'react';\n\nimport * as styles from './SubfilterGroup.css';\nimport { SubfilterContainer } from './SubfilterGroup.styled';\n\nexport type SubfilterGroupItemProps = {\n name: ReactNode;\n count?: ReactNode;\n isSelected?: boolean;\n onClick?: () => void;\n};\n\nexport function SubfilterGroupItem({\n name,\n count,\n isSelected,\n onClick,\n}: SubfilterGroupItemProps) {\n return (\n \n
    {name}
    \n {count &&
    {count}
    }\n
    See All >
    \n
    \n );\n}\n\nexport const SubfilterGroup = Object.assign(\n function SubfilterGroup({ children }: { children?: ReactNode }) {\n return
    {children}
    ;\n },\n {\n Item: SubfilterGroupItem,\n }\n);\n","import { ReactNode } from 'react';\nimport { useQuickFilterSearchParam } from 'src/hooks/useQuickFilters';\n\nexport type Subfilter = {\n id: string;\n name: ReactNode | string;\n data: D;\n};\n\nexport type UseQuickSubfiltersOptions = {\n quickSubfilters: { [parentQuickFilterId: string]: Subfilter[] };\n initialQuery: D;\n};\n\nexport function useQuickSubfilters({\n quickSubfilters,\n}: UseQuickSubfiltersOptions) {\n const currentQuickFilterId = useQuickFilterSearchParam();\n const filteredQuickSubfilters =\n currentQuickFilterId != null\n ? quickSubfilters[currentQuickFilterId] ?? []\n : [];\n return {\n quickSubfilters: filteredQuickSubfilters,\n };\n}\n","import { ReactNode, useMemo } from 'react';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { Stack } from 'src/core/ui';\nimport {\n SalesTableFlattened,\n SalesTableFlattenedProps,\n} from 'src/tables/SalesTable/SalesTableFlattened';\nimport { SaleQuery } from 'src/WebApiController';\n\ntype SalesFlattenedViewProps = {\n before?: ReactNode;\n topListItemBefore?: ReactNode;\n /**\n * If provided, the list will scroll to the month containing the event with the given posEventId\n */\n scrollToEventId?: string;\n} & Pick<\n SalesTableFlattenedProps,\n | 'alwaysShowCheckbox'\n | 'showSelectAllOnHeader'\n | 'enableColumnFilters'\n | 'ignoreMaxCount'\n>;\n\nexport const SalesFlattenedView = ({\n before,\n topListItemBefore,\n ...rest\n}: SalesFlattenedViewProps) => {\n const { filterQuery } = useFilterQueryContext();\n const { eventsTransformed } = useCatalogDataContext();\n const { salesCount } = useMemo(() => {\n let salesCount = 0;\n\n (eventsTransformed ?? []).forEach((ev) => {\n salesCount += ev.counts.salesCnt ?? 0;\n });\n\n return { salesCount };\n }, [eventsTransformed]);\n\n const sales = useMemo(\n () =>\n eventsTransformed?.every((ev) => ev.entities.sales == null)\n ? null\n : eventsTransformed\n ?.flatMap((ev) => ev.entities.sales)\n ?.filter((s) => s != null)\n ?.map((s) => s!),\n [eventsTransformed]\n );\n\n return (\n \n {before}\n {topListItemBefore}\n\n s != null).map((s) => s!)}\n failedToRetrieveData={false}\n />\n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { MouseEvent, useCallback, useEffect, useMemo } from 'react';\nimport { useToggle } from 'react-use';\nimport {\n EventAccordionItemProps,\n SaleEventsEmpty,\n SalesEventsAccordion,\n translateEventToSaleAccordionItem,\n} from 'src/components/Accordions';\nimport { MultiSelectActionBar } from 'src/components/common/MultiSelect/MultiSelectActionBar';\nimport { SetSalesEventAccordionSelectionCountLabel } from 'src/components/Events/EventListing/SalesEventListing/SetSalesEventAccordionSelectionCountLabel';\nimport { SetSalesFlattenedViewSelectionCountLabel } from 'src/components/Events/EventListing/SalesEventListing/SetSalesFlattenedViewSelectionCountLabel';\nimport { SalesBulkActionsPermissions } from 'src/components/Sales/BulkActions/SalesBulkActionsPermissions';\nimport { SalesGlobalBulkActions } from 'src/components/Sales/BulkActions/SalesGlobalBulkActions/SalesGlobalBulkActions';\nimport { SubfilterGroup } from 'src/components/SubfilterGroup';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport {\n NO_GROUP_ID,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useQuickSubfilters } from 'src/hooks/useQuickSubfilters';\nimport { ColumnSettingsModal } from 'src/modals/ColumnSettings/ColumnSettings';\nimport { LayoutIcon } from 'src/svgs';\nimport { CustomSalesColumn } from 'src/utils/columns/sales/salesCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n DateRangePresetName,\n getDateRangePresets,\n} from 'src/utils/dateTimeUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { SomethingWentWrong } from 'src/views';\nimport {\n DateTimeRangeWithRelative,\n Sale,\n SaleQuery,\n SalesViewMode,\n} from 'src/WebApiController';\n\nimport * as styles from '../EventListing.css';\nimport { SalesFlattenedView } from './SalesFlattenedView';\n\nexport function SalesEventListing({\n onItemsRendered,\n}: {\n onItemsRendered?: (items: EventAccordionItemProps[]) => void;\n}) {\n const {\n isLoading,\n errorInfo,\n eventsTransformed,\n eventsExpansion: { expandedListItems, toggleListItemExpansion },\n } = useCatalogDataContext();\n\n const onSalesEventExpanded = useCallback(\n async (viagVirtualId: string) => {\n toggleListItemExpansion([viagVirtualId]);\n },\n [toggleListItemExpansion]\n );\n const { filterQuery, initialQuery, setFilterQuery } =\n useFilterQueryContext();\n\n const [isColumnModalOpen, toggleColumnModal] = useToggle(false);\n\n const onColumnSettingButtonClickHandler = (\n e: MouseEvent\n ) => {\n e.stopPropagation();\n if (!isColumnModalOpen) toggleColumnModal(true);\n };\n\n const quickSubfiltersInit = useMemo(() => {\n const [todayPreset] = getDateRangePresets([DateRangePresetName.Today]);\n const [last7DaysPreset] = getDateRangePresets([\n DateRangePresetName.Last7Days,\n ]);\n const [last30DaysPreset] = getDateRangePresets([\n DateRangePresetName.Last30Days,\n ]);\n return {\n recentlySold: [\n {\n id: 'soldToday',\n name: ,\n data: {\n ...initialQuery,\n eventTimeFrameFilter: null,\n saleDates: {\n start: todayPreset.range.start.toISOString(),\n end: todayPreset.range.end.toISOString(),\n } as DateTimeRangeWithRelative,\n },\n },\n {\n id: 'soldLast7Days',\n name: ,\n data: {\n ...initialQuery,\n eventTimeFrameFilter: null,\n saleDates: {\n start: last7DaysPreset.range.start.toISOString(),\n end: last7DaysPreset.range.end.toISOString(),\n } as DateTimeRangeWithRelative,\n },\n },\n {\n id: 'soldLast30Days',\n name: ,\n data: {\n ...initialQuery,\n eventTimeFrameFilter: null,\n saleDates: {\n start: last30DaysPreset.range.start.toISOString(),\n end: last30DaysPreset.range.end.toISOString(),\n } as DateTimeRangeWithRelative,\n },\n },\n ],\n };\n }, [initialQuery]);\n const { quickSubfilters } = useQuickSubfilters({\n quickSubfilters: quickSubfiltersInit,\n initialQuery,\n });\n\n function Subfilters() {\n if (quickSubfilters.length <= 0) {\n return null;\n }\n return (\n \n {quickSubfilters.map(({ id, name, data: query }) => (\n {\n setFilterQuery(query);\n }}\n />\n ))}\n \n );\n }\n\n const { setAllGroupsIds, clearShiftKeySelection, setSelectionMode } =\n useMultiSelectionContext();\n\n const salesItems = useMemo(() => {\n return (\n eventsTransformed?.map((e, i) =>\n translateEventToSaleAccordionItem(e, i)\n ) || []\n );\n }, [eventsTransformed]);\n\n useEffect(() => {\n if (filterQuery.viewMode === SalesViewMode.FlattenedView) {\n setAllGroupsIds([NO_GROUP_ID]);\n } else {\n setAllGroupsIds(salesItems.map((saleItem) => saleItem.itemId));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [salesItems, filterQuery.viewMode]);\n\n useEffect(() => {\n clearShiftKeySelection();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filterQuery.viewMode]);\n\n // Reset and close selection mode when changing view\n useEffect(() => {\n setSelectionMode();\n }, [filterQuery.viewMode, setSelectionMode]);\n\n return (\n <>\n \n {isLoading && }\n {errorInfo && (\n }\n />\n )}\n {!isLoading &&\n !errorInfo &&\n (eventsTransformed && eventsTransformed.length > 0 ? (\n
    \n {filterQuery.viewMode === SalesViewMode.FlattenedView ? (\n \n
    \n \n \n \n \n \n \n \n
    \n \n \n \n \n \n }\n enableColumnFilters\n />\n ) : (\n \n \n \n \n \n \n \n }\n disablePagination\n items={salesItems}\n selectedIds={expandedListItems}\n onSelect={onSalesEventExpanded}\n onItemsRendered={onItemsRendered}\n tableActions={\n \n \n \n \n }\n />\n )}\n
    \n ) : (\n \n ))}\n {isColumnModalOpen ? (\n \n sectionType={\n filterQuery.viewMode === SalesViewMode.FlattenedView\n ? SectionType.SalesFlattened\n : SectionType.Sales\n }\n onClose={toggleColumnModal}\n />\n ) : null}\n \n );\n}\n","import { EventAccordionItemProps } from 'src/components/Accordions';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport { Listing, Sale } from 'src/WebApiController';\n\nimport * as styles from './EventListing.css';\nimport { InventoryEventListing } from './InventoryEventListing';\nimport { SalesEventListing } from './SalesEventListing';\n\nexport function EventListing({\n onItemsRendered,\n}: {\n onItemsRendered?: (items: EventAccordionItemProps[]) => void;\n}) {\n const { mainRoute } = useAppContext();\n\n return (\n
    \n {mainRoute === MainRoute.Inventory ? (\n \n onItemsRendered?.(items as unknown as EventAccordionItemProps[])\n }\n />\n ) : (\n \n onItemsRendered?.(items as unknown as EventAccordionItemProps[])\n }\n />\n )}\n
    \n );\n}\n","import { useCallback, useRef } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { EventAccordionItemProps } from 'src/components/Accordions';\nimport { AccountDisabledNotification } from 'src/components/common/AccountDisabledNotification';\nimport { EventListing } from 'src/components/Events/EventListing';\nimport { PerformerVenueList } from 'src/components/Events/PerformerVenueList';\nimport { MainFilterBar } from 'src/components/MainFilterBar';\nimport { SaleFilterBar } from 'src/components/Sales/SaleFilterBar';\nimport { SaleSearchBox } from 'src/components/Sales/SaleFilterBar/SaleSearchBox';\nimport { CatalogMultiSelectionContextProvider } from 'src/contexts/CatalogMultiSelectionContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { MultiSelectionContextProvider } from 'src/contexts/MultiSelectionContext';\nimport { ExplorerLayout } from 'src/core/layouts';\nimport { Button, Stack } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { createSaleSearchPageUrl } from 'src/utils/advancedSearchUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n CatalogEntity,\n Event,\n EventGroupingType,\n Feature,\n Sale,\n SalesViewMode,\n} from 'src/WebApiController';\nimport Swiper from 'swiper';\n\nimport { MainRoute } from '../MainRoute';\n\nexport function SalesEventsExplorer({\n onPerformerVenueRendered,\n onEventsRendered,\n}: {\n onPerformerVenueRendered?: (\n items: CatalogEntity[],\n itemType: EventGroupingType\n ) => void;\n onEventsRendered?: (items: Event[]) => void;\n}) {\n const routeTitle = useContent(ContentId.Sales);\n const onItemsRendered = (items: EventAccordionItemProps[]) => {\n onEventsRendered?.(items.flatMap((i) => i?.event ?? []));\n };\n\n const { filterQuery } = useFilterQueryContext();\n\n const swiperRef = useRef();\n const mobile = useMatchMedia('mobile');\n\n const hasNewSearchFeature = useUserHasFeature(Feature.SearchView_Sale);\n\n const navigate = useNavigate();\n\n const onAdvancePurchaseSearch = useCallback(() => {\n const searchUrl = createSaleSearchPageUrl();\n\n setTimeout(() => {\n navigate(searchUrl, {\n state: {\n returnUrl: `${location.pathname}${location.search}`,\n },\n });\n }, 10);\n }, [navigate]);\n\n return (\n \n \n \n \n \n \n \n )\n }\n >\n \n \n \n }\n >\n \n {mobile && }\n \n \n \n \n \n \n \n );\n}\n","import { ReactNode, useCallback } from 'react';\nimport { ActivePosEntityProvider } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n CatalogDataContextProvider,\n ExpandedEventData,\n} from 'src/contexts/CatalogDataContext';\nimport { CatalogMetricsContextProvider } from 'src/contexts/CatalogMetricsContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { FilterQueryContextProvider } from 'src/contexts/FilterQueryContext';\nimport { SellerUserSettingsProvider } from 'src/contexts/SellerUserSettingsContext';\nimport { SidePanelProvider } from 'src/contexts/SidePanelContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n getPresetFromUiDateTimeRange,\n getUiDateTimeRangeFromPreset,\n InhandDateRangePresetNames,\n StandardDateRangePresetNames,\n} from 'src/utils/dateTimeUtils';\nimport { DefaultSaleQuery, EmptySaleQuery } from 'src/utils/eventQueryUtils';\nimport { transformData } from 'src/utils/eventWithDataUtils';\nimport { addSaleMetrics } from 'src/utils/ticketMetricUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n CatalogClient,\n DateTimeRange,\n Feature,\n PosClientConfig,\n SaleClient,\n SaleDetails,\n SaleMetrics,\n SaleQuery,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { SalesEventsExplorer } from './SalesEventsExplorer';\n\nexport const getCatalogData = async (\n client: CatalogClient,\n filterQuery: SaleQuery,\n includeCounts: boolean\n) => {\n return await client.getCatalogForSales(filterQuery, includeCounts);\n};\n\nexport const SALE_USER_SETTINGS = [\n UserSetting.SaleColumnEditability,\n UserSetting.SaleColumnNumberPrecision,\n UserSetting.SaleColumnOrder,\n UserSetting.SaleColumnsEnabled,\n UserSetting.SaleCustomColumns,\n UserSetting.SaleFlattenedColumnEditability,\n UserSetting.SaleFlattenedColumnNumberPrecision,\n UserSetting.SaleFlattenedColumnOrder,\n UserSetting.SaleFlattenedColumnsEnabled,\n UserSetting.QuickFiltersStateSales,\n UserSetting.SaleColumnWidths,\n UserSetting.SalePageViewMode,\n UserSetting.SalesDefaultTab,\n];\n\nexport const getCatalogDataExpanded = async (\n viagogoVirtualIds: string[],\n filterQuery: SaleQuery,\n useReadonlyDB: boolean,\n {\n activeAccountWebClientConfig,\n onError,\n }: {\n activeAccountWebClientConfig: PosClientConfig;\n onError?: (error: ErrorTypes) => void;\n }\n) => {\n const result = await tryInvokeApi(async () => {\n const allSales = await new SaleClient(\n activeAccountWebClientConfig\n ).getSalesForEvents(\n {\n ...filterQuery,\n // Is is to support the legacy event ID urls\n oldPosEventIds: viagogoVirtualIds\n .filter((id) => id.startsWith('old:'))\n .map((id) => id.substring(4)),\n eventOrMappingIds: viagogoVirtualIds.filter(\n (id) => !id.startsWith('old:')\n ),\n },\n true,\n useReadonlyDB\n );\n\n const emptyResults = viagogoVirtualIds.reduce((results, id) => {\n results[id] = {\n sales: null,\n listings: null,\n ticketGroups: null,\n failedToRetrieveData: false,\n };\n return results;\n }, {} as ExpandedEventData);\n\n return Promise.resolve(\n Object.entries(allSales).reduce((results, [id, sales]) => {\n results[id] = {\n sales: sales,\n listings: null,\n ticketGroups: null,\n failedToRetrieveData: false,\n };\n return results;\n }, emptyResults)\n );\n }, onError);\n\n if (result) {\n return Promise.resolve(result);\n }\n\n return Promise.resolve(\n viagogoVirtualIds.reduce((results, id) => {\n results[id] = {\n failedToRetrieveData: true,\n sales: null,\n listings: null,\n ticketGroups: null,\n };\n return results;\n }, {} as ExpandedEventData)\n );\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const salesQueryValueTransformToUrl = (key: string, value: any) => {\n if (!value) {\n return value;\n }\n\n const salesKey = key as keyof SaleQuery;\n if (salesKey === 'saleDates') {\n const preset = getPresetFromUiDateTimeRange(value as DateTimeRange);\n if (preset && StandardDateRangePresetNames.includes(preset.name)) {\n return preset.name;\n }\n }\n\n if (salesKey === 'inHandDates') {\n const preset = getPresetFromUiDateTimeRange(value as DateTimeRange);\n if (preset && InhandDateRangePresetNames.includes(preset.name)) {\n return preset.name;\n }\n }\n\n return value;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const salesQueryValueTransformFromUrl = (key: string, value: any) => {\n if (!value) {\n return value;\n }\n\n const salesKey = key as keyof SaleQuery;\n if (salesKey === 'saleDates') {\n const preset = getUiDateTimeRangeFromPreset(\n value,\n StandardDateRangePresetNames\n );\n if (preset) {\n return preset;\n }\n } else if (salesKey === 'inHandDates') {\n const preset = getUiDateTimeRangeFromPreset(\n value,\n InhandDateRangePresetNames\n );\n if (preset) {\n return preset;\n }\n }\n\n return value;\n};\n\nexport function SaleContextProvider({\n saveQueryInUrl,\n children,\n}: {\n saveQueryInUrl?: boolean;\n children?: ReactNode;\n}) {\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const getCatalogDataExpandedCallback = useCallback(\n (ids: string[], filterQuery: SaleQuery) =>\n getCatalogDataExpanded(ids, filterQuery, false, {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError('SaleClient.getSalesForEvents', error, {\n ...filterQuery,\n eventIds: ids,\n });\n },\n }),\n [activeAccountWebClientConfig, trackError]\n );\n\n return (\n \n \n initialQuery={DefaultSaleQuery}\n emptyQuery={EmptySaleQuery}\n saveQueryInUrl={saveQueryInUrl}\n viewModeSettingId={UserSetting.SalePageViewMode}\n queryValueTransformToUrl={salesQueryValueTransformToUrl}\n queryValueTransformFromUrl={salesQueryValueTransformFromUrl}\n >\n \n entityType={ActionOutboxEntityType.Sale}\n queryKey=\"getCatalogForSales\"\n getCatalogData={(c, f) => getCatalogData(c, f, true)}\n getCatalogDataExpanded={getCatalogDataExpandedCallback}\n transformEventData={transformData}\n >\n {children}\n \n \n \n );\n}\n\nexport function Sales() {\n return (\n \n \n \n );\n}\n\nexport const getCatalogMetrics = (\n client: CatalogClient,\n filterQuery: SaleQuery,\n rowVersion?: number | null,\n hasMetricsV2Feature?: boolean\n) => {\n return hasMetricsV2Feature\n ? client.getCatalogMetricsForSales(filterQuery, rowVersion)\n : client.getCatalogSaleMetrics(filterQuery);\n};\n\nconst SalesRouteBody = () => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const getActivePosEntity = useCallback(\n async (saleId: number) => {\n const saleDetail = await new SaleClient(\n activeAccountWebClientConfig\n ).getSaleBySaleId(saleId);\n\n if (saleDetail) {\n return {\n posEntityId: saleDetail.id,\n posEntity: saleDetail,\n posEntityDisplayId: saleDetail.idOnMkp,\n };\n }\n\n return {};\n },\n [activeAccountWebClientConfig]\n );\n\n const hasMetricsV2Feature = useUserHasFeature(Feature.CatalogMetricsV2);\n\n return (\n \n queryKey=\"getCatalogSaleMetrics\"\n entityType={ActionOutboxEntityType.Sale}\n getCatalogMetrics={(c, f, r) =>\n getCatalogMetrics(c, f, r, hasMetricsV2Feature)\n }\n addCatalogMetrics={addSaleMetrics}\n >\n \n entityType={ActionOutboxEntityType.Sale}\n getActivePosEntity={getActivePosEntity}\n >\n \n \n \n \n \n );\n};\n","import { createContext, useContext } from 'react';\nimport {\n EventAccordionItemBodyComponentType,\n EventAccordionItemProps,\n MinRowsForUsingVirtuoso,\n SaleEventsEmpty,\n SalesEventsAccordion,\n} from 'src/components/Accordions';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport {\n EventItemHeader,\n EventItemHeaderType,\n} from 'src/components/Events/EventItemHeader';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Button, Stack } from 'src/core/ui';\nimport { useGetEventFullInfo } from 'src/hooks/useGetEventFullInfo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SomethingWentWrong } from 'src/views';\nimport { EventWithData } from 'src/WebApiController';\nimport { Sale } from 'src/WebApiController';\n\nimport * as styles from './SaleSearchAccordionList.css';\n\nconst SaleSearchAccordionListContext = createContext<{\n onSelectSale?: (sale: Sale) => void;\n}>({});\n\n/**\n * Component for displaying sales in ClassifyEmail modal when classifying sales.\n * @param props\n * @returns\n */\nexport function SaleSearchAccordionList({\n onSelectSale,\n}: {\n onSelectSale?: (sale: Sale) => void;\n}) {\n const {\n isLoading,\n errorInfo,\n eventsTransformed,\n eventsExpansion: { expandedListItems, toggleListItemExpansion },\n } = useCatalogDataContext();\n if (isLoading) {\n return ;\n }\n if (errorInfo) {\n return (\n }\n />\n );\n }\n const items = eventsTransformed?.map(translateEventToSaleAccordionItem) ?? [];\n return (\n \n {items.length > 0 ? (\n toggleListItemExpansion([id])}\n disablePagination\n />\n ) : (\n \n )}\n \n );\n}\n\nfunction translateEventToSaleAccordionItem(\n props: EventWithData,\n index: number\n): EventAccordionItemProps {\n return {\n index,\n itemId: props.event.viagVirtualId,\n HeaderComponent: SaleAccordionItemHeader,\n BodyComponent: SaleAccordionItemBody,\n usingVirtuoso: (props.counts.salesCnt ?? 0) > MinRowsForUsingVirtuoso,\n ...props,\n entities: props.entities.sales ?? [],\n entityCount: props.counts.salesCnt ?? 0,\n };\n}\n\nfunction SaleAccordionItemHeader({ event, ...rest }: EventItemHeaderType) {\n const { performer, venue } = useGetEventFullInfo(event);\n\n return (\n \n );\n}\n\nfunction SaleAccordionItemBody({\n entities: sales,\n}: EventAccordionItemBodyComponentType) {\n const { onSelectSale } = useContext(SaleSearchAccordionListContext);\n return (\n
    \n {sales?.map((sale) => (\n \n \n {\n onSelectSale?.(sale);\n }}\n >\n \n \n \n ))}\n
    \n );\n}\n","import { debounce } from 'lodash-es';\nimport { useCallback } from 'react';\nimport { useContent, useFormattedContent } from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { PosSearchBox } from 'src/core/POS/PosSearchBox';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { SaleQuery } from 'src/WebApiController';\n\n/**\n * Search box for filtering sales on ClassifyEmail modal when classifying sales.\n * @returns\n */\nexport function SaleSearchBox() {\n const eventsText = useContent(ContentId.Events);\n const searchPlaceholderText = useFormattedContent(\n FormatContentId.SearchItem,\n eventsText\n ) as string;\n\n const { filterQuery: saleQuery, setFilterQuery } =\n useFilterQueryContext();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedOnSearchChange = useCallback(\n debounce((text: string) => {\n if (text !== saleQuery.searchText) {\n setFilterQuery({\n ...saleQuery,\n searchText: text || null,\n });\n }\n }, 200),\n [saleQuery, setFilterQuery]\n );\n\n return (\n \n );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { pickBy } from 'lodash-es';\nimport { useContext, useEffect, useState } from 'react';\nimport { Controller, useForm } from 'react-hook-form';\nimport { useDebounce } from 'react-use';\nimport {\n ConversationType,\n convertEmailClassificationTypeToConversationType,\n} from 'src/components/Messages/ConversationSidePanel/ConversationListItem/ConversationListItem';\nimport { EmailBody } from 'src/components/Messages/EmailBody';\nimport { PurchaseVendorSelector } from 'src/components/Selectors/PurchaseVendorSelector';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n Content,\n FormatContent,\n useContent,\n} from 'src/contexts/ContentContext';\nimport { EmailPurchaseOrderContext } from 'src/contexts/EmailPurchaseOrderContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, ScrollArea } from 'src/core/ui';\nimport { SaleContextProvider } from 'src/navigations/Routes/Sales';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { AUTO_PO_INBOUND_EMAIL_CLASSIFICATION_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { getPurchaseOrderDetailsModalConfigWithDeepLink } from 'src/utils/purchaseUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n AutoPoClient,\n AutoPoInboundEmailClassificationType,\n PurchaseClient,\n PurchasingIdInUseResultType,\n} from 'src/WebApiController';\n\nimport * as styles from './ClassifyEmail.css';\nimport { SaleSearchAccordionList } from './SaleSearchAccordionList';\nimport { SaleSearchBox } from './SaleSearchBox';\n\nfunction getClassificationTypeToCid(\n conversationType: ConversationType\n): Record {\n return pickBy(AUTO_PO_INBOUND_EMAIL_CLASSIFICATION_TYPE_TO_CID, (_, key) => {\n return (\n convertEmailClassificationTypeToConversationType(\n key as AutoPoInboundEmailClassificationType\n ) === conversationType\n );\n });\n}\n\ntype ClassifyEmailFieldValues = {\n classificationType?: AutoPoInboundEmailClassificationType;\n orderId?: string;\n purchaseOrderVendorId?: number;\n saleId?: number;\n};\n\nexport type ClassifyEmailProps = {\n conversationType: ConversationType;\n inboundEmailId: number;\n onEmailClassified?: (inboundEmailId: number) => void;\n};\n\nexport function ClassifyEmail({\n conversationType,\n inboundEmailId,\n onEmailClassified,\n}: ClassifyEmailProps) {\n // XXX hack to fix breaking of this message since it uses non-breaking space for some reason\n const orderIdInUseMessage = useContent(ContentId.OrderIdInUse).replaceAll(\n '\\u00a0',\n ' '\n );\n const orderIdInUseSameVendorMessage = useContent(\n ContentId.OrderIdInUseSameVendor\n );\n const orderIdDoesNotExistMessage = useContent(ContentId.OrderIdDoesNotExist);\n const orderIdDoesNotExistForVendorMessage = useContent(\n ContentId.OrderIdDoesNotExistForVendor\n );\n\n const classificationTypeToCid = getClassificationTypeToCid(conversationType);\n const defaultClassificationType = Object.keys(\n classificationTypeToCid\n )[0] as AutoPoInboundEmailClassificationType;\n\n const {\n control,\n formState: { errors },\n register,\n handleSubmit,\n watch,\n setValue,\n setError,\n clearErrors,\n } = useForm({\n defaultValues: {\n classificationType: defaultClassificationType,\n orderId: undefined, // TODO use orderId from partialpurchaseorder\n },\n });\n\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n\n const { setModal, closeModal } = useContext(ModalContext);\n const {\n setOrderId,\n setClassificationType,\n reset: resetEmailPurchaseOrderContext,\n } = useContext(EmailPurchaseOrderContext);\n\n const watchedClassificationType = watch('classificationType');\n const [debouncedOrderId, setDebouncedOrderId] = useState();\n useDebounce(\n () => {\n if (\n watchedClassificationType &&\n convertEmailClassificationTypeToConversationType(\n watchedClassificationType\n ) === ConversationType.Purchase\n ) {\n setDebouncedOrderId(watch('orderId'));\n }\n },\n 200, // lower delay since the api call is relatively cheap\n [watchedClassificationType, watch('orderId')]\n );\n const watchedPurchaseOrderVendorId = watch('purchaseOrderVendorId');\n const orderIdInUseQuery = useQuery({\n queryKey: [\n 'PurchaseClient.getIsPurchasingIdsInUse',\n activeAccountWebClientConfig.activeAccountId,\n conversationType,\n watchedPurchaseOrderVendorId,\n debouncedOrderId,\n ],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n if (conversationType !== ConversationType.Purchase || !debouncedOrderId) {\n return PurchasingIdInUseResultType.NoneMatching;\n }\n\n const orderId = debouncedOrderId.toString().trim();\n return await new PurchaseClient(\n activeAccountWebClientConfig\n ).getIsPurchasingIdsInUse(orderId, watchedPurchaseOrderVendorId);\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n meta: {\n onError(err: ErrorTypes) {\n trackError('PurchaseClient.getIsPurchasingIdsInUse', err, {\n orderId: debouncedOrderId,\n purchaseOrderVendorId: watchedPurchaseOrderVendorId,\n });\n },\n },\n });\n const orderIdUsedByPurchaseOrderIdsResult = useQuery({\n queryKey: [\n 'PurchaseClient.getPurchaseOrderIdsUsingOrderId',\n activeAccountWebClientConfig.activeAccountId,\n conversationType,\n debouncedOrderId,\n ],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n if (conversationType !== ConversationType.Purchase || !debouncedOrderId) {\n return [];\n }\n const orderId = debouncedOrderId.toString().trim();\n const purchaseOrderIds = await new PurchaseClient(\n activeAccountWebClientConfig\n ).getPurchaseOrderIdsUsingOrderId(orderId);\n return purchaseOrderIds;\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n meta: {\n onError(err: ErrorTypes) {\n trackError('PurchaseClient.getPurchaseOrderIdsUsingOrderId', err, {\n orderId: debouncedOrderId,\n });\n },\n },\n });\n\n useEffect(() => {\n const purchaseOrderIds = orderIdUsedByPurchaseOrderIdsResult.data;\n if (\n conversationType !== ConversationType.Purchase ||\n !purchaseOrderIds ||\n !debouncedOrderId\n ) {\n return;\n }\n\n if (\n watchedClassificationType ===\n AutoPoInboundEmailClassificationType.NewPurchaseOrder\n ) {\n if (orderIdInUseQuery.data === PurchasingIdInUseResultType.SameOrderId) {\n setError('orderId', {\n type: 'existingOrderId',\n message: orderIdInUseMessage,\n });\n } else if (\n orderIdInUseQuery.data ===\n PurchasingIdInUseResultType.SameOrderIdAndVendorId\n ) {\n setError('orderId', {\n type: 'existingOrderId',\n message: orderIdInUseSameVendorMessage,\n });\n }\n } else {\n if (orderIdInUseQuery.data === PurchasingIdInUseResultType.NoneMatching) {\n setError('orderId', {\n type: 'existingOrderId',\n message: orderIdDoesNotExistMessage,\n });\n } else if (\n orderIdInUseQuery.data === PurchasingIdInUseResultType.SameOrderId\n ) {\n setError('orderId', {\n type: 'existingOrderId',\n message: orderIdDoesNotExistForVendorMessage,\n });\n }\n }\n }, [\n conversationType,\n watchedClassificationType,\n debouncedOrderId,\n orderIdInUseQuery.data,\n orderIdUsedByPurchaseOrderIdsResult.data,\n setError,\n orderIdInUseMessage,\n orderIdInUseSameVendorMessage,\n orderIdDoesNotExistMessage,\n orderIdDoesNotExistForVendorMessage,\n ]);\n\n // if marked as new order, but the order id and vendor already exist,\n // suggest that the user classifies as an existing order\n const classifyNewOrderAsExistingOrder =\n conversationType === ConversationType.Purchase &&\n watchedClassificationType &&\n orderIdInUseQuery.isSuccess &&\n watchedClassificationType ===\n AutoPoInboundEmailClassificationType.NewPurchaseOrder &&\n orderIdInUseQuery.data ===\n PurchasingIdInUseResultType.SameOrderIdAndVendorId;\n // if marked as an existing order, but the order id and vendor combo does not exist,\n // send the user to the create purchase order modal first before classifying\n const createNewOrderForExistingOrder =\n conversationType === ConversationType.Purchase &&\n watchedClassificationType &&\n orderIdInUseQuery.isSuccess &&\n watchedClassificationType !==\n AutoPoInboundEmailClassificationType.NewPurchaseOrder &&\n orderIdInUseQuery.data !==\n PurchasingIdInUseResultType.SameOrderIdAndVendorId;\n\n const onSubmit = handleSubmit(async (data) => {\n if (classifyNewOrderAsExistingOrder) {\n clearErrors(['orderId']);\n setValue(\n 'classificationType',\n AutoPoInboundEmailClassificationType.ExistingPurchaseOrder\n );\n } else if (\n createNewOrderForExistingOrder ||\n data.classificationType ===\n AutoPoInboundEmailClassificationType.NewPurchaseOrder\n ) {\n setOrderId(data.orderId);\n setClassificationType(data.classificationType);\n setModal({\n ...getPurchaseOrderDetailsModalConfigWithDeepLink(),\n onExit: () => {\n resetEmailPurchaseOrderContext();\n },\n });\n } else {\n const purchaseOrderId =\n orderIdUsedByPurchaseOrderIdsResult.data?.[0] ?? null;\n await tryInvokeApi(\n async () => {\n await new AutoPoClient(\n activeAccountWebClientConfig\n ).classifyInboundEmail(\n inboundEmailId,\n data.classificationType,\n purchaseOrderId,\n data.saleId\n );\n onEmailClassified?.(inboundEmailId);\n },\n (error) => {\n showErrorDialog('AutoPoClient.classifyInboundEmail', error, {\n trackErrorData: {\n inboundEmailId,\n },\n });\n }\n );\n\n resetEmailPurchaseOrderContext();\n closeModal();\n }\n });\n\n return (\n
    \n \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n }>\n (\n {\n if (value) {\n const conversationType =\n convertEmailClassificationTypeToConversationType(value);\n if (conversationType !== ConversationType.Purchase) {\n setValue('orderId', undefined);\n }\n if (\n conversationType !== ConversationType.Sale &&\n conversationType !== ConversationType.Transfer\n ) {\n setValue('saleId', undefined);\n }\n }\n clearErrors('orderId');\n onChange(value);\n }}\n {...props}\n />\n )}\n />\n \n {conversationType === ConversationType.Purchase ? (\n <>\n }\n errors={errors.purchaseOrderVendorId?.message}\n >\n (\n {\n clearErrors('orderId');\n onChange(value ? parseInt(value) : undefined);\n }}\n {...props}\n />\n )}\n />\n \n }\n {...(errors.orderId?.message === orderIdInUseMessage\n ? { warnings: errors.orderId?.message }\n : { errors: errors.orderId?.message })}\n >\n \n \n \n ) : conversationType === ConversationType.Sale ||\n conversationType === ConversationType.Transfer ? (\n <>\n }\n warnings={errors.saleId?.message}\n >\n \n \n \n ) : null}\n
    \n \n {classifyNewOrderAsExistingOrder ? (\n }\n />\n ) : createNewOrderForExistingOrder ? (\n \n ) : (\n \n )}\n \n
    \n
    \n {(conversationType === ConversationType.Sale ||\n conversationType === ConversationType.Transfer) && (\n \n
    \n \n
    \n
    \n {\n setValue('saleId', sale.id);\n }}\n />\n
    \n
    \n )}\n
    \n
    \n );\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { EventEntityHeader } from '../common/EventEntityHeader';\nimport { ModalProps } from '../Modal';\nimport { ClassifyEmail, ClassifyEmailProps } from './ClassifyEmail';\n\nexport * from './ClassifyEmail';\n\nexport const getClassifyEmailModalConfig = (\n props: ClassifyEmailProps\n): ModalProps => ({\n Header: (\n } />\n ),\n Body: ,\n clickOutsideToClose: true,\n size: 'fullscreen',\n});\n","import {\n PropsWithChildren,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport { useHotkeys } from 'react-hotkeys-hook';\nimport { Link } from 'react-router-dom';\nimport { SwiperButton } from 'src/components/Buttons/SwiperButton';\nimport { MerchantColorBadge } from 'src/components/common/MerchantColorBadge';\nimport { ConversationType } from 'src/components/Messages/ConversationSidePanel/ConversationListItem/ConversationListItem';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { EmailPurchaseOrderContext } from 'src/contexts/EmailPurchaseOrderContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { HotkeyDisplay } from 'src/core/POS/HotkeyDisplay';\nimport { vars } from 'src/core/themes';\nimport { Button, DropdownMenu } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { getClassifyEmailModalConfig } from 'src/modals/ClassifyEmail';\nimport { IconsFill, MoreIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getListingDetailsRelativeUrl } from 'src/utils/inventoryUtils';\nimport { getPurchaseOrderRelativeUrl } from 'src/utils/purchaseUtils';\nimport { getSaleDetailsRelativeUrl } from 'src/utils/saleUtils';\nimport { AutoPoClient, AutoPoInboundEmail } from 'src/WebApiController';\nimport { UAParser } from 'ua-parser-js';\n\nimport * as styles from '../ConversationMainPanel.css';\n\nconst HOTKEY_LETTER_MAP = {\n purchase: 'p',\n sale: 's',\n transfer: 'x',\n private: 'r',\n junk: 'j',\n};\n\nexport type ConversationHeaderDisplayProps = PropsWithChildren<{\n inboundEmail?: AutoPoInboundEmail;\n conversationTitle?: string | null;\n entityId?: ReactNode;\n fromEmailAddress?: string;\n toEmailAddress?: string;\n merchantName?: string | null;\n vendorId?: number | null;\n saleId?: number;\n inventoryId?: string;\n purchaseOrderId?: number;\n showClassifyOptions?: boolean;\n onEmailClassified?: (inboundEmailId: number) => void;\n}>;\n\nexport const ConversationHeaderDisplay = ({\n inboundEmail,\n conversationTitle,\n entityId,\n fromEmailAddress,\n toEmailAddress,\n merchantName,\n vendorId,\n saleId,\n inventoryId,\n purchaseOrderId,\n children,\n showClassifyOptions,\n onEmailClassified,\n}: ConversationHeaderDisplayProps) => {\n const isLargeDesktop = useMatchMedia('largeDesktop');\n\n const { activeAccountWebClientConfig } = useAppContext();\n const { setModal } = useContext(ModalContext);\n const { setPartialPurchaseOrderKey, setInboundEmailId } = useContext(\n EmailPurchaseOrderContext\n );\n\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [canReprocessEmail, setCanReprocessEmail] = useState(false);\n\n const [showReprocessConfirmDialog, setShowReprocessConfirmDialog] =\n useState(false);\n\n useEffect(() => {\n new AutoPoClient(activeAccountWebClientConfig)\n .canReprocessEmail(\n inboundEmail?.inboundEmailId!,\n inboundEmail?.purchaseOrderId\n )\n .then((canReprocess) => {\n setCanReprocessEmail(canReprocess);\n });\n }, [activeAccountWebClientConfig, inboundEmail]);\n\n const onClassifyPurchase = useCallback(async () => {\n setPartialPurchaseOrderKey({\n partialPurchaseOrderId: inboundEmail?.partialPurchaseOrderId,\n toEmailAddress: inboundEmail?.toEmailAddress ?? undefined,\n purchaseOrderVendorId: inboundEmail?.purchaseOrderVendorId,\n });\n setInboundEmailId(inboundEmail?.inboundEmailId);\n setModal(\n getClassifyEmailModalConfig({\n inboundEmailId: inboundEmail?.inboundEmailId!,\n conversationType: ConversationType.Purchase,\n onEmailClassified,\n })\n );\n }, [\n inboundEmail,\n onEmailClassified,\n setInboundEmailId,\n setModal,\n setPartialPurchaseOrderKey,\n ]);\n\n const onClassifySale = useCallback(async () => {\n setModal(\n getClassifyEmailModalConfig({\n inboundEmailId: inboundEmail?.inboundEmailId!,\n conversationType: ConversationType.Sale,\n onEmailClassified,\n })\n );\n }, [inboundEmail, onEmailClassified, setModal]);\n\n const onClassifyTransfer = useCallback(async () => {\n setModal(\n getClassifyEmailModalConfig({\n inboundEmailId: inboundEmail?.inboundEmailId!,\n conversationType: ConversationType.Transfer,\n onEmailClassified,\n })\n );\n }, [inboundEmail, onEmailClassified, setModal]);\n\n const onClassifyPrivate = useCallback(async () => {\n setModal(\n getClassifyEmailModalConfig({\n inboundEmailId: inboundEmail?.inboundEmailId!,\n conversationType: ConversationType.Private,\n onEmailClassified,\n })\n );\n }, [inboundEmail, onEmailClassified, setModal]);\n\n const onClassifyJunk = useCallback(async () => {\n setModal(\n getClassifyEmailModalConfig({\n inboundEmailId: inboundEmail?.inboundEmailId!,\n conversationType: ConversationType.Junk,\n onEmailClassified,\n })\n );\n }, [inboundEmail, onEmailClassified, setModal]);\n\n const onReprocessEmail = () => {\n setShowReprocessConfirmDialog(true);\n };\n const onConfirmReprocessEmail = async () => {\n await new AutoPoClient(activeAccountWebClientConfig).unclassifyInboundEmail(\n inboundEmail?.inboundEmailId!,\n inboundEmail?.purchaseOrderId\n );\n setShowReprocessConfirmDialog(false);\n };\n\n const [userAgent] = useState(() => new UAParser(navigator.userAgent));\n const hotkeyPrefixText =\n userAgent.getOS().name === 'Mac OS' || userAgent.getOS().name === 'iOS'\n ? '⌘'\n : 'ctrl';\n\n useHotkeys(\n `ctrl+${HOTKEY_LETTER_MAP.purchase}, meta+${HOTKEY_LETTER_MAP.purchase}`,\n () => {\n setIsDropdownOpen(false);\n onClassifyPurchase();\n },\n { preventDefault: true },\n [onClassifyPurchase]\n );\n useHotkeys(\n `ctrl+${HOTKEY_LETTER_MAP.sale}, meta+${HOTKEY_LETTER_MAP.sale}`,\n () => {\n setIsDropdownOpen(false);\n onClassifySale();\n },\n { preventDefault: true },\n [onClassifySale]\n );\n useHotkeys(\n `ctrl+${HOTKEY_LETTER_MAP.transfer}, meta+${HOTKEY_LETTER_MAP.transfer}`,\n () => {\n setIsDropdownOpen(false);\n onClassifyTransfer();\n },\n { preventDefault: true },\n [onClassifyTransfer]\n );\n useHotkeys(\n `ctrl+${HOTKEY_LETTER_MAP.private}, meta+${HOTKEY_LETTER_MAP.private}`,\n () => {\n setIsDropdownOpen(false);\n onClassifyPrivate();\n },\n { preventDefault: true },\n [onClassifyPrivate]\n );\n useHotkeys(\n `ctrl+${HOTKEY_LETTER_MAP.junk}, meta+${HOTKEY_LETTER_MAP.junk}`,\n () => {\n setIsDropdownOpen(false);\n onClassifyJunk();\n },\n { preventDefault: true },\n [onClassifyJunk]\n );\n\n const hasEntityId = !!saleId || !!inventoryId || !!purchaseOrderId;\n\n const menuContent = [];\n\n if (showClassifyOptions) {\n menuContent.push(\n \n \n \n {hotkeyPrefixText} + {HOTKEY_LETTER_MAP.purchase}\n \n \n );\n menuContent.push(\n \n \n \n {hotkeyPrefixText} + {HOTKEY_LETTER_MAP.sale}\n \n \n );\n menuContent.push(\n \n \n \n {hotkeyPrefixText} + {HOTKEY_LETTER_MAP.transfer}\n \n \n );\n menuContent.push(\n \n \n \n {hotkeyPrefixText} + {HOTKEY_LETTER_MAP.private}\n \n \n );\n menuContent.push(\n \n \n \n {hotkeyPrefixText} + {HOTKEY_LETTER_MAP.junk}\n \n \n );\n }\n\n if (canReprocessEmail) {\n menuContent.push(\n \n \n \n );\n }\n\n return (\n
    \n {!isLargeDesktop && (\n
    \n \n
    \n )}\n\n
    \n
    {conversationTitle}
    \n
    \n {entityId && (\n
    \n {entityId}\n
    \n )}\n
    \n {(merchantName || vendorId) && (\n \n )}\n
    \n {menuContent.length > 0 && (\n
    \n \n \n \n \n \n {menuContent}\n \n \n
    \n )}\n
    \n
    \n {children}\n {fromEmailAddress && (\n
    \n \n : {fromEmailAddress}\n \n
    \n )}\n {toEmailAddress && (\n
    \n \n : {toEmailAddress}\n \n
    \n )}\n {hasEntityId && (\n
    \n {saleId && (\n \n \n \n )}\n {inventoryId && (\n \n \n \n )}\n {purchaseOrderId && (\n \n \n \n )}\n
    \n )}\n }\n bodyText={}\n onOkay={onConfirmReprocessEmail}\n onCancel={() => setShowReprocessConfirmDialog(false)}\n />\n
    \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { Fragment, useCallback, useContext, useEffect, useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { SeatingInfo } from 'src/components/common/SeatingInfo';\nimport { ConnectedEventInfo } from 'src/components/Events/ConnectedEventInfo';\nimport { EmailThread } from 'src/components/Messages/EmailThread';\nimport { SupportCaseBody } from 'src/components/Messages/SupportCaseBody';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport {\n Content,\n useContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport { ConversationDataContext } from 'src/contexts/ConversationDataContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { SellerSupportCaseDataContext } from 'src/contexts/SellerSupportCaseDataContext';\nimport { HorizontalTextList } from 'src/core/POS/HorizontalTextList';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useGetSaleWithCatalogData } from 'src/hooks/api/useGetSaleWithCatalogData';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getEventPerformerVenue,\n lookupEventInCatalog,\n} from 'src/utils/eventWithDataUtils';\nimport { getListingNoteIcon } from 'src/utils/listingNotesUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n AutoPoClient,\n AutoPoInboundEmail,\n Event,\n Feature,\n ListingNote,\n Marketplace,\n Performer,\n Seating,\n SellerSupportCase,\n SellerSupportCaseClient,\n Venue,\n} from 'src/WebApiController';\n\nimport {\n ConversationType,\n convertEmailClassificationTypeToConversationType,\n} from '../ConversationSidePanel/ConversationListItem/ConversationListItem';\nimport { ConversationHeaderDisplay } from './ConversationHeaderDisplay';\nimport * as styles from './ConversationMainPanel.css';\n\nexport const ConversationMainPanel = ({\n onEmailClassified,\n}: {\n onEmailClassified?: (inboundEmailId: number) => void;\n}) => {\n const { inboundEmailId, sellerSupportCaseId } = useParams();\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n activeAccountWebClientConfig.activeAccountId != null &&\n sellerSupportCaseId != null;\n\n const sellerSupportCaseQuery = useQuery({\n queryKey: [\n 'SellerSupportCaseClient.getSellerSupportCases',\n activeAccountWebClientConfig.activeAccountId,\n sellerSupportCaseId,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n return tryInvokeApi(\n async () => {\n const sellerSupportCases = await new SellerSupportCaseClient(\n activeAccountWebClientConfig\n ).getSellerSupportCases(\n {\n isMostRecent: null,\n sellerSupportCaseIds: [Number(sellerSupportCaseId)],\n },\n null,\n null\n );\n return sellerSupportCases[0] ?? null;\n },\n (error) => {\n trackError('SellerSupportCaseClient.getSellerSupportCases', error, {\n sellerSupportCaseId,\n });\n }\n );\n },\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n });\n\n const shouldQuery2 =\n activeAccountWebClientConfig.activeAccountId != null &&\n inboundEmailId != null;\n const inboundEmailQuery = useQuery({\n queryKey: [\n 'AutoPoClient.getInboundEmails',\n activeAccountWebClientConfig.activeAccountId,\n inboundEmailId,\n ],\n queryFn: async () => {\n if (!shouldQuery2) {\n return null;\n }\n return tryInvokeApi(\n async () => {\n const inboundEmails = await new AutoPoClient(\n activeAccountWebClientConfig\n ).getInboundEmails(\n {\n inboundEmailIds: [Number(inboundEmailId)],\n },\n null,\n null\n );\n return inboundEmails[0] ?? null;\n },\n (error) => {\n trackError('AutoPoClient.getInboundEmails', error, {\n inboundEmailId,\n });\n }\n );\n },\n\n enabled: shouldQuery2,\n refetchOnWindowFocus: false,\n });\n\n if (sellerSupportCaseQuery.isLoading || inboundEmailQuery.isLoading) {\n return ;\n }\n return (\n
    \n {sellerSupportCaseQuery.data && (\n \n )}\n {inboundEmailQuery.data && (\n \n )}\n \n
    \n );\n};\n\nconst EmailHeaderDisplay = ({\n inboundEmail,\n onEmailClassified,\n}: {\n inboundEmail: AutoPoInboundEmail;\n onEmailClassified?: (inboundEmailId: number) => void;\n}) => {\n const conversationType = convertEmailClassificationTypeToConversationType(\n inboundEmail.classificationType\n );\n\n const { getPurchaseOrderDetails } = useContext(ConversationDataContext);\n const [orderId, setOrderId] = useState();\n const [merchantName, setMerchantName] = useState();\n\n type EventInfo = {\n event: Event;\n venue: Venue | null;\n performer: Performer | null;\n seatings: Seating[];\n listingNotes?: ListingNote[] | null;\n };\n const [eventInfos, setEventInfos] = useState([]);\n const { data } = useCatalogDataContext();\n\n const fetchDisplayContent = useCallback(async () => {\n let orderId: string | undefined;\n let merchantName: string | undefined;\n let eventInfos: EventInfo[] = [];\n\n if (conversationType === ConversationType.Purchase) {\n if (inboundEmail.purchaseOrderId) {\n const purchaseOrder = await getPurchaseOrderDetails(\n inboundEmail.purchaseOrderId\n );\n if (purchaseOrder) {\n orderId = purchaseOrder.vendOrdId ?? undefined;\n merchantName = purchaseOrder.vendor?.name;\n\n const eventInfoMap: Record = {};\n for (const tg of purchaseOrder.ticketGroups) {\n const { event, venue, performer } = getEventPerformerVenue(\n tg.viagVirtualId,\n data\n );\n if (event?.event) {\n if (!(event.event.viagVirtualId in eventInfoMap)) {\n eventInfoMap[event.event.viagVirtualId] = {\n event: event.event,\n venue: venue ?? null,\n performer: performer ?? null,\n seatings: [],\n listingNotes: tg.seatTraits,\n };\n }\n eventInfoMap[event.event.viagVirtualId].seatings.push(tg.seating);\n }\n }\n eventInfos = Object.values(eventInfoMap).toSorted((a, b) => {\n if (a.event.dates.start && b.event.dates.start) {\n return (\n new Date(a.event.dates.start).getTime() -\n new Date(b.event.dates.start).getTime()\n );\n }\n return a.event.name.localeCompare(b.event.name);\n });\n }\n }\n }\n\n setOrderId(orderId);\n setMerchantName(merchantName);\n setEventInfos(eventInfos);\n }, [\n conversationType,\n inboundEmail.purchaseOrderId,\n getPurchaseOrderDetails,\n data,\n ]);\n\n useEffect(() => {\n fetchDisplayContent();\n }, [inboundEmail, fetchDisplayContent]);\n\n const messageSaleDataQuery = useGetSaleWithCatalogData(inboundEmail.saleId);\n const { sale } = messageSaleDataQuery.data ?? {};\n\n useEffect(() => {\n const { sale, catalog: saleCatalog } = messageSaleDataQuery.data ?? {};\n if (sale && saleCatalog) {\n if (sale.mkp) {\n setMerchantName(sale.mkp);\n }\n const event = lookupEventInCatalog(\n saleCatalog,\n sale.viagVirtualId,\n sale.posEvId\n )?.event;\n if (event) {\n setEventInfos([\n {\n event,\n venue: saleCatalog.venues[event.venueId],\n performer: event.perfId\n ? saleCatalog.performers[event.perfId]\n : null,\n seatings: [sale.seating],\n },\n ]);\n }\n }\n }, [messageSaleDataQuery.data]);\n\n const contentContext = useContentContext();\n const hasListingNotesAdditionalInfoFeature = useUserHasFeature(\n Feature.ListingNotesAdditionalInfo\n );\n\n return (\n \n : {orderId}\n \n ) : sale ? (\n <>\n : {sale.idOnMkp}\n \n ) : undefined\n }\n merchantName={merchantName}\n vendorId={inboundEmail.purchaseOrderVendorId}\n fromEmailAddress={inboundEmail.fromEmailAddress ?? undefined}\n toEmailAddress={inboundEmail.toEmailAddress ?? undefined}\n showClassifyOptions={conversationType === ConversationType.Uncategorized}\n onEmailClassified={onEmailClassified}\n >\n {eventInfos.map(({ event, venue, performer, seatings, listingNotes }) => {\n return (\n \n \n {seatings.map((seating, i) => (\n \n ))}\n {listingNotes?.length ? (\n n.listingNoteText)}\n maxTextsToShowOnHover={listingNotes.length}\n />\n ) : null}\n \n );\n })}\n \n );\n};\n\nconst SupportCaseHeaderDisplay = ({\n sellerSupportCase,\n}: {\n sellerSupportCase: SellerSupportCase;\n}) => {\n const generalMessageContent = useContent(ContentId.GeneralMessage);\n const { getSellerUserDetails } = useContext(SellerSupportCaseDataContext);\n\n const [displayEmail, setDisplayEmail] = useState();\n\n useEffect(() => {\n (async function fetchDisplayEmail() {\n const sellerUserId =\n sellerSupportCase?.impersonatedUserId ??\n sellerSupportCase?.createByUserId;\n\n if (sellerUserId) {\n const sellerUser = await getSellerUserDetails(sellerUserId);\n setDisplayEmail(sellerUser?.email);\n }\n })();\n }, [sellerSupportCase, getSellerUserDetails]);\n\n return (\n \n );\n};\n\nconst ConversationMainDisplay = ({\n sellerSupportCase,\n inboundEmail,\n}: {\n sellerSupportCase?: SellerSupportCase | null;\n inboundEmail?: AutoPoInboundEmail | null;\n}) => {\n return (\n
    \n {sellerSupportCase && (\n \n )}\n {inboundEmail && (\n \n )}\n
    \n );\n};\n","import { useInfiniteQuery } from '@tanstack/react-query';\nimport { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { DATA_REFRESH_RATE_IN_MILLIS_FAST } from 'src/utils/constants/constants';\nimport {\n AutoPoClient,\n AutoPoInboundEmail,\n AutoPoInboundEmailClassificationType,\n} from 'src/WebApiController';\n\nconst NUM_TAKE = 500;\n\nexport function useClassifiedInboundEmails(\n classificationTypes?: AutoPoInboundEmailClassificationType[],\n isSortDescending?: boolean | null\n) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const inboundEmailsClassifiedQuery = useInfiniteQuery({\n queryKey: [\n 'AutoPoClient.getClassifiedInboundEmails',\n activeAccountWebClientConfig.activeAccountId,\n classificationTypes,\n isSortDescending,\n ],\n queryFn: async ({ pageParam: skip = 0 }) => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n\n if (classificationTypes != null && classificationTypes.length === 0) {\n return {\n results: [],\n skip,\n totalCount: 0,\n };\n }\n\n const results = await new AutoPoClient(\n activeAccountWebClientConfig\n ).getClassifiedInboundEmails(\n classificationTypes ?? [],\n NUM_TAKE,\n skip ?? 0,\n isSortDescending\n );\n\n const totalCount = await new AutoPoClient(\n activeAccountWebClientConfig\n ).getClassifiedInboundEmailsCount(classificationTypes ?? []);\n\n if (results.length === 0) {\n return null;\n }\n return {\n results,\n skip,\n totalCount,\n };\n },\n getNextPageParam: (lastPage) => {\n return lastPage?.results.length\n ? lastPage.skip + lastPage.results.length\n : undefined;\n },\n meta: {\n onError(err: ErrorTypes) {\n trackError('AutoPoClient.getClassifiedInboundEmails', err);\n },\n },\n initialPageParam: 0,\n staleTime: Infinity, // we already do refresh interval\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: true,\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_FAST,\n });\n\n const flattenedData = useMemo(() => {\n const flattenedData: AutoPoInboundEmail[] = [];\n if (inboundEmailsClassifiedQuery.data) {\n for (const page of inboundEmailsClassifiedQuery.data.pages) {\n if (page) {\n for (const email of page?.results ?? []) {\n flattenedData.push(email);\n }\n }\n }\n }\n return flattenedData;\n }, [inboundEmailsClassifiedQuery.data]);\n\n return {\n ...inboundEmailsClassifiedQuery,\n inboundEmailsClassified: flattenedData,\n inboundEmailsTotalCount:\n inboundEmailsClassifiedQuery.data?.pages[0]?.totalCount,\n isLoading:\n inboundEmailsClassifiedQuery.isLoading ||\n inboundEmailsClassifiedQuery.isFetchingNextPage,\n isError:\n inboundEmailsClassifiedQuery.isError ||\n (inboundEmailsClassifiedQuery.isLoading &&\n inboundEmailsClassifiedQuery.isPaused),\n };\n}\n","import { useNavigate } from 'react-router-dom';\nimport { FilterToolbar } from 'src/components/FilterToolbar';\nimport { QuickFilterToolbarItem } from 'src/components/FilterToolbar/QuickFilterToolbarItem';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { ConversationType } from './ConversationListItem/ConversationListItem';\nimport * as styles from './ConversationSidePanel.css';\n\nexport type ConversationFilterQuery = {\n isUnread?: boolean | undefined;\n isSortDescending: boolean | null;\n};\n\nexport type ConversationFilterProps = {\n category: string | null;\n currentFilter: ConversationFilterQuery;\n setFilter: (settings: ConversationFilterQuery) => void;\n};\n\nexport const defaultConversationFilter: ConversationFilterQuery = {\n isSortDescending: true,\n};\n\nconst CONVERSATION_FILTER_TYPES_MAP = {\n support: [] as ConversationType[],\n purchases: [ConversationType.Purchase],\n sales: [ConversationType.Sale, ConversationType.Transfer],\n private: [ConversationType.Private],\n junk: [ConversationType.Junk],\n};\n\nexport function getCategoryConversationTypes(category: string | null) {\n if (!category) {\n return [];\n }\n return (\n CONVERSATION_FILTER_TYPES_MAP[\n category as keyof typeof CONVERSATION_FILTER_TYPES_MAP\n ] ?? []\n );\n}\n\nfunction createConversationSearchParam(\n category: keyof typeof CONVERSATION_FILTER_TYPES_MAP\n) {\n return new URLSearchParams({ category });\n}\n\nexport function ConversationFilter({\n category,\n currentFilter,\n setFilter,\n}: ConversationFilterProps) {\n const conversationTypes = getCategoryConversationTypes(category);\n const supportCaseOnly = category === 'support';\n\n const navigate = useNavigate();\n const quickFilters: QuickFilterToolbarItem[] = [\n {\n id: 'support',\n name: ,\n isCustomFilter: false,\n isSelected: supportCaseOnly,\n onClick: () => {\n navigate(\n { search: `?${createConversationSearchParam('support')}` },\n { relative: 'path' }\n );\n },\n },\n {\n id: 'purchases',\n name: ,\n isCustomFilter: false,\n isSelected: conversationTypes.includes(ConversationType.Purchase),\n onClick: () => {\n navigate(\n { search: `?${createConversationSearchParam('purchases')}` },\n { relative: 'path' }\n );\n },\n },\n {\n id: 'sale',\n name: ,\n isCustomFilter: false,\n isSelected:\n conversationTypes.includes(ConversationType.Sale) ||\n conversationTypes.includes(ConversationType.Transfer),\n onClick: () => {\n navigate(\n { search: `?${createConversationSearchParam('sales')}` },\n { relative: 'path' }\n );\n },\n },\n {\n id: 'private',\n name: ,\n isCustomFilter: false,\n isSelected: conversationTypes.includes(ConversationType.Private),\n onClick: () => {\n navigate(\n { search: `?${createConversationSearchParam('private')}` },\n { relative: 'path' }\n );\n },\n },\n {\n id: 'junk',\n name: ,\n isCustomFilter: false,\n isSelected: conversationTypes.includes(ConversationType.Junk),\n onClick: () => {\n navigate(\n { search: `?${createConversationSearchParam('junk')}` },\n { relative: 'path' }\n );\n },\n },\n ];\n\n return (\n
    \n {\n navigate({ search: '' }, { relative: 'path' });\n setFilter({\n ...defaultConversationFilter,\n isSortDescending: currentFilter.isSortDescending,\n });\n }}\n filterAppliedCounts={0}\n filters={[]}\n />\n
    \n );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport {\n ComponentPropsWithRef,\n Dispatch,\n SetStateAction,\n useMemo,\n useState,\n} from 'react';\nimport { useNavigate, useParams, useSearchParams } from 'react-router-dom';\nimport { Components, Virtuoso } from 'react-virtuoso';\nimport { SwiperButton } from 'src/components/Buttons/SwiperButton';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { clearIDBCache } from 'src/core/utils/createIndexDBPersister';\nimport { useClassifiedInboundEmails } from 'src/hooks/api/useClassifiedInboundEmails';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { ErrorSolidIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { CONVERSATION_SORT_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { stringToUtcDate } from 'src/utils/dateTimeUtils';\nimport {\n EventUiSort,\n getEventSort,\n getEventUiSort,\n} from 'src/utils/eventQueryUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n AutoPoInboundEmail,\n EventSort,\n Marketplace,\n SellerSupportCase,\n SellerSupportCaseClient,\n} from 'src/WebApiController';\nimport { useSwiper } from 'swiper/react';\n\nimport IconBulletList from '~icons/pos/bulletList';\n\nimport {\n ConversationFilter,\n ConversationFilterQuery,\n defaultConversationFilter,\n getCategoryConversationTypes,\n} from './ConversationFilter';\nimport {\n ConversationInfo,\n ConversationListItem,\n ConversationType,\n convertConversationTypeToEmailClassificationTypes,\n convertEmailClassificationTypeToConversationType,\n} from './ConversationListItem/ConversationListItem';\nimport * as styles from './ConversationSidePanel.css';\n\ntype VirtuosoContext = {\n isLoading?: boolean;\n isError?: boolean;\n filter: ConversationFilterQuery;\n setFilter: Dispatch>;\n allCount?: number;\n unreadCount?: number;\n isFetchingNextPage: boolean;\n};\n\nconst UnreadFilter = ({\n context,\n}: {\n context: VirtuosoContext | undefined;\n}) => {\n const { filter, setFilter, allCount, unreadCount } = context ?? {};\n\n if (filter == null || setFilter == null) {\n return null;\n }\n\n return (\n
    \n
    \n {\n setFilter({ ...filter, isUnread: undefined });\n }}\n >\n \n {allCount != null && ` (${allCount})`}\n
    \n {\n setFilter({ ...filter, isUnread: true });\n }}\n >\n \n {unreadCount != null && ` (${unreadCount})`}\n
    \n
    \n {\n const [, isSortDescending] = getEventSort(sort);\n if (isSortDescending !== filter?.isSortDescending) {\n setFilter({\n ...filter,\n isSortDescending,\n });\n }\n }}\n valueOptionsContent={CONVERSATION_SORT_TO_CID}\n />\n \n );\n};\n\nconst Header: Components['Header'] = ({\n context,\n}: {\n context?: VirtuosoContext;\n}) => {\n const { filter, setFilter } = context ?? {};\n const { inboundEmailId, sellerSupportCaseId } = useParams();\n\n const isLargeDesktop = useMatchMedia('largeDesktop');\n\n const [searchParams] = useSearchParams();\n\n return (\n
    \n {!isLargeDesktop && (inboundEmailId || sellerSupportCaseId) && (\n
    \n \n
    \n )}\n

    \n \n

    \n {filter && setFilter && (\n
    \n \n \n
    \n )}\n
    \n );\n};\n\nconst Item: Components['Item'] = ({\n children,\n ...rest\n}: ComponentPropsWithRef<'div'>) => {\n return (\n
    \n {children}\n
    \n );\n};\n\nconst EmptyPlaceholder: Components<\n unknown,\n VirtuosoContext\n>['EmptyPlaceholder'] = ({ context }: { context?: VirtuosoContext }) => {\n if (context?.isError) {\n return (\n \n }\n >\n \n \n \n {\n clearIDBCache(); // delete the cache storage before reloading\n window.location.reload();\n }}\n >\n \n \n \n );\n }\n if (context?.isLoading) {\n return ;\n }\n return (\n }>\n \n \n );\n};\n\nconst Footer: Components['Footer'] = ({\n context,\n}: {\n context?: VirtuosoContext;\n}) => {\n if (context?.isFetchingNextPage) {\n return ;\n }\n // XXX hack to prevent margin collapse on last element\n\n return
    ;\n};\n\nconst sellerSupportCaseToConversationData = (\n supportCase: SellerSupportCase\n): ConversationInfo => {\n return {\n datetime: stringToUtcDate(supportCase.lastNoteDate),\n merchantName: Marketplace.StubHub,\n conversationType:\n supportCase.entityType === ActionOutboxEntityType.Sale\n ? ConversationType.Sale\n : undefined,\n unread: supportCase.unreadNoteCount > 0,\n sellerSupportCase: supportCase,\n };\n};\n\nconst inboundEmailToConversationData = (\n inboundEmail: AutoPoInboundEmail\n): ConversationInfo => {\n const conversationType = convertEmailClassificationTypeToConversationType(\n inboundEmail.classificationType\n );\n\n return {\n datetime: stringToUtcDate(\n inboundEmail.receiveDate ?? inboundEmail.createDate\n ),\n title: inboundEmail.subject,\n vendorId: inboundEmail.purchaseOrderVendorId,\n unread: false,\n conversationType,\n inboundEmail,\n };\n};\n\nexport function ConversationSidePanel() {\n const {\n inboundEmailId: activeInboundEmailId,\n sellerSupportCaseId: activeSellerSupportCaseId,\n } = useParams();\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const [filter, setFilter] = useState(\n defaultConversationFilter\n );\n const swiper = useSwiper();\n const isLargeDesktop = useMatchMedia('largeDesktop');\n\n const sellerSupportCaseQuery = useQuery({\n queryKey: [\n 'SellerSupportCaseClient.getSellerSupportCases',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return tryInvokeApi(\n async () => {\n return await new SellerSupportCaseClient(\n activeAccountWebClientConfig\n ).getSellerSupportCases(\n {\n isMostRecent: null,\n sellerSupportCaseIds: null,\n },\n null,\n null\n );\n },\n (error) => {\n trackError('SellerSupportCaseClient.getSellerSupportCases', error);\n }\n );\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n });\n const sellerSupportCases = sellerSupportCaseQuery.data;\n const sellerSupportCasesIsLoading = sellerSupportCaseQuery.isLoading;\n const sellerSupportCasesIsError = sellerSupportCaseQuery.isError;\n\n const generalMessageContent = useContent(ContentId.GeneralMessage);\n\n const [searchParams] = useSearchParams();\n const category = searchParams.get('category');\n const supportCaseOnly = category === 'support';\n const filteredConversationTypes = getCategoryConversationTypes(category);\n\n const {\n isLoading: classifiedEmailIsLoading,\n isError: classifiedEmailIsError,\n inboundEmailsTotalCount,\n inboundEmailsClassified,\n fetchNextPage,\n hasNextPage,\n isFetchingNextPage,\n } = useClassifiedInboundEmails(\n category\n ? convertConversationTypeToEmailClassificationTypes(\n filteredConversationTypes as ConversationType[]\n )\n : undefined,\n filter.isSortDescending\n );\n\n const conversationData = useMemo(() => {\n if (sellerSupportCases == null || inboundEmailsClassified == null) {\n return [];\n }\n\n const supportCasesMapped = sellerSupportCases\n .map(sellerSupportCaseToConversationData)\n .map((c) => {\n c.title = generalMessageContent;\n return c;\n });\n\n const inboundEmailsMapped = inboundEmailsClassified.map(\n inboundEmailToConversationData\n );\n\n return supportCasesMapped.concat(inboundEmailsMapped);\n }, [generalMessageContent, sellerSupportCases, inboundEmailsClassified]);\n\n const filteredDataByType = useMemo(\n () =>\n conversationData.filter(\n (conversation) =>\n (filteredConversationTypes.length === 0 ||\n filteredConversationTypes.includes(\n conversation.conversationType ?? ConversationType.Uncategorized\n )) &&\n (!supportCaseOnly || conversation.sellerSupportCase != null)\n ),\n [conversationData, filteredConversationTypes, supportCaseOnly]\n );\n\n const allCount = useMemo(() => {\n const supportCaseCount = filteredDataByType.filter(\n (d) => d.sellerSupportCase != null\n ).length;\n\n return supportCaseCount + (inboundEmailsTotalCount ?? 0);\n }, [filteredDataByType, inboundEmailsTotalCount]);\n\n // TODO these filters will be eventually passed to the API as query params\n // POS-2210\n const filteredData = useMemo(\n () =>\n conversationData\n .filter(\n (conversation) =>\n (filteredConversationTypes.length === 0 ||\n filteredConversationTypes.includes(\n conversation.conversationType ?? ConversationType.Uncategorized\n )) &&\n (!supportCaseOnly || conversation.sellerSupportCase != null) &&\n (filter.isUnread === undefined ||\n (conversation.unread ?? false) === filter.isUnread)\n )\n .toSorted((a, b) => {\n if (a.datetime == null || b.datetime == null) {\n return 0;\n }\n const cmpResult = a.datetime < b.datetime ? -1 : 1;\n return filter.isSortDescending ? -cmpResult : cmpResult;\n }),\n [\n conversationData,\n filteredConversationTypes,\n filter.isSortDescending,\n filter.isUnread,\n supportCaseOnly,\n ]\n );\n\n const navigate = useNavigate();\n const onConversationClicked = (conversationInfo: ConversationInfo) => {\n if (!isLargeDesktop) {\n swiper?.slideNext();\n }\n\n if (conversationInfo.inboundEmail?.inboundEmailId != null) {\n navigate(\n {\n pathname: `${conversationInfo.inboundEmail.inboundEmailId}`,\n search: window.location.search,\n },\n { relative: 'route' }\n );\n } else if (\n conversationInfo.sellerSupportCase?.sellerSupportCaseId != null\n ) {\n navigate(\n {\n pathname: `support/${conversationInfo.sellerSupportCase.sellerSupportCaseId}`,\n search: window.location.search,\n },\n { relative: 'route' }\n );\n }\n };\n\n return (\n
    \n m.unread === true)\n .length,\n isError: sellerSupportCasesIsError || classifiedEmailIsError,\n isLoading: sellerSupportCasesIsLoading || classifiedEmailIsLoading,\n isFetchingNextPage,\n }}\n endReached={() => !isFetchingNextPage && hasNextPage && fetchNextPage()}\n itemContent={(i, conversationInfo) => {\n const {\n vendorId,\n merchantName,\n title,\n datetime,\n unread,\n conversationType,\n inboundEmail,\n sellerSupportCase,\n } = conversationInfo;\n return (\n onConversationClicked(conversationInfo)}\n />\n );\n }}\n />\n
    \n );\n}\n","import { ReactNode } from 'react';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { shared } from 'src/core/themes';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { getCurrentLanguage } from 'src/utils/localeUtils';\n\nimport { MerchantColorBadge } from '../../common/MerchantColorBadge';\nimport * as styles from './PurchaseEmailDisplay.css';\n\nconst dateFormatter = new Intl.DateTimeFormat(getCurrentLanguage(), {\n dateStyle: 'long',\n});\n\nexport type PurchaseEmailDisplayProps = {\n vendorId?: number | null;\n subject?: ReactNode;\n toEmailAddress?: ReactNode;\n fromEmailAddress?: ReactNode;\n emailDate?: Date;\n orderId?: ReactNode;\n order?: ReactNode;\n orderDate?: Date;\n faceValue?: ReactNode;\n};\n\nexport function PurchaseEmailDisplay({\n vendorId,\n subject,\n toEmailAddress,\n fromEmailAddress,\n emailDate,\n ...purchaseOrderDetails\n}: PurchaseEmailDisplayProps) {\n const { orderId, order, orderDate, faceValue } = purchaseOrderDetails;\n return (\n
    \n
    \n {vendorId && }\n
    \n {emailDate && dateFormatter.format(emailDate)}\n
    \n
    \n
    \n
    {subject}
    \n
    \n
    \n
    \n {fromEmailAddress && (\n \n {fromEmailAddress}}\n />\n \n )}\n {fromEmailAddress && toEmailAddress &&
    }\n {toEmailAddress && (\n \n {toEmailAddress}}\n />\n \n )}\n
    \n
    \n {Object.values(purchaseOrderDetails).some((val) => val != null) && (\n
    \n {orderId && (\n }\n >\n {orderId}\n \n )}\n {order && (\n }>\n {order}\n \n )}\n {orderDate && (\n }\n >\n {dateFormatter.format(orderDate)}\n \n )}\n {faceValue && (\n }>\n {faceValue}\n \n )}\n
    \n )}\n
    \n );\n}\n\nfunction PurchaseOrderDetail({\n label,\n children,\n}: {\n label: ReactNode;\n children: ReactNode;\n}) {\n return (\n
    \n
    {label}
    \n
    {children}
    \n
    \n );\n}\n","import { useInfiniteQuery } from '@tanstack/react-query';\nimport { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n AutoPoClient,\n AutoPoInboundEmailPartialPurchaseOrderQuery,\n AutoPoPartialPurchaseOrderInboundEmail,\n} from 'src/WebApiController';\n\nconst NUM_TAKE = 100;\n\nexport function usePartialPurchaseOrderInboundEmails({\n query,\n}: {\n query: AutoPoInboundEmailPartialPurchaseOrderQuery;\n}) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n const queryResult = useInfiniteQuery({\n queryKey: [\n 'AutoPoClient.getPartialPurchaseOrderInboundEmails',\n activeAccountWebClientConfig.activeAccountId,\n query,\n ],\n async queryFn({ pageParam: skip = 0 }) {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n\n const results = await new AutoPoClient(\n activeAccountWebClientConfig\n ).getPartialPurchaseOrderInboundEmails(query, NUM_TAKE, skip);\n if (results.length === 0) {\n return;\n }\n return {\n results,\n skip,\n totalCount: results[0].totalCount,\n };\n },\n getNextPageParam(lastPage) {\n return lastPage && lastPage.skip < lastPage.totalCount\n ? lastPage.skip + NUM_TAKE\n : undefined;\n },\n meta: {\n onError(err: ErrorTypes) {\n trackError('AutoPoClient.getPartialPurchaseOrderInboundEmails', err, {\n query,\n });\n },\n },\n initialPageParam: 0,\n staleTime: 0,\n gcTime: 0,\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n });\n const flattenedData = useMemo(() => {\n const flattenedData: AutoPoPartialPurchaseOrderInboundEmail[] = [];\n if (queryResult.data) {\n for (const page of queryResult.data.pages) {\n if (page) {\n for (const email of page?.results ?? []) {\n flattenedData.push(email);\n }\n }\n }\n }\n return flattenedData;\n }, [queryResult.data]);\n return {\n flattenedData,\n ...queryResult,\n };\n}\n","import clsx from 'clsx';\nimport { useMatches, useNavigate, useParams } from 'react-router-dom';\nimport { Components, Virtuoso } from 'react-virtuoso';\nimport { SwiperButton } from 'src/components/Buttons/SwiperButton';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { PurchaseEmailDisplay } from 'src/components/Purchases/PurchaseEmailDisplay';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { usePartialPurchaseOrderInboundEmails } from 'src/hooks/api/usePartialPurchaseOrderInboundEmails';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { getErrorInfoFromStatusCode } from 'src/utils/errorUtils';\nimport { SomethingWentWrong } from 'src/views';\nimport {\n ApiException,\n AutoPoInboundEmailPartialPurchaseOrderQuery,\n} from 'src/WebApiController';\nimport { useSwiper } from 'swiper/react';\n\nimport IconBulletList from '~icons/pos/bulletList';\n\nimport * as styles from './EmailList.css';\n\ntype VirtuosoContext = {\n isLoading: boolean;\n isError: boolean;\n error: unknown;\n isFetchingNextPage: boolean;\n};\n\nconst Header: Components['Header'] = () => {\n const { inboundEmailId, sellerSupportCaseId } = useParams();\n\n const isLargeDesktop = useMatchMedia('largeDesktop');\n\n return (\n
    \n {!isLargeDesktop && (inboundEmailId || sellerSupportCaseId) && (\n
    \n \n
    \n )}\n
    \n );\n};\n\nconst EmptyPlaceholder: Components<\n unknown,\n VirtuosoContext\n>['EmptyPlaceholder'] = ({ context }: { context?: VirtuosoContext }) => {\n if (context?.isLoading) {\n return ;\n }\n if (context?.isError) {\n const errorInfo = getErrorInfoFromStatusCode(\n (context?.error as ApiException)?.status\n );\n return (\n }\n />\n );\n }\n return (\n }>\n \n \n );\n};\n\nconst Footer: Components['Footer'] = ({\n context,\n}: {\n context?: VirtuosoContext;\n}) => {\n if (context?.isFetchingNextPage) {\n return ;\n }\n // XXX hack to prevent margin collapse on last element\n return
    ;\n};\n\nexport function EmailList({\n classifiedInboundEmailIds,\n query,\n}: {\n classifiedInboundEmailIds: Set;\n query: AutoPoInboundEmailPartialPurchaseOrderQuery;\n}) {\n const swiper = useSwiper();\n const isLargeDesktop = useMatchMedia('largeDesktop');\n\n const { inboundEmailId: activeInboundEmailId } = useParams();\n const navigate = useNavigate();\n const matches = useMatches();\n\n const {\n flattenedData,\n isLoading,\n isError,\n error,\n fetchNextPage,\n hasNextPage,\n isFetching,\n isFetchingNextPage,\n } = usePartialPurchaseOrderInboundEmails({ query });\n\n return (\n
    \n \n !classifiedInboundEmailIds.has(inboundEmailId)\n )\n : flattenedData\n }\n context={{\n isLoading: isLoading,\n isError,\n error,\n isFetchingNextPage,\n }}\n components={{ Footer, Header, EmptyPlaceholder }}\n endReached={() => !isFetching && hasNextPage && fetchNextPage()}\n itemContent={(_, partialPurchaseOrderInboundEmail) => {\n const {\n inboundEmailId,\n subject,\n toEmailAddress,\n fromEmailAddress,\n createDate,\n orderId,\n quantity,\n purchaseOrderDate,\n faceValue,\n purchaseOrderVendorId,\n } = partialPurchaseOrderInboundEmail;\n return (\n {\n if (!isLargeDesktop) {\n swiper?.slideNext();\n }\n\n const parentMatch = matches.at(-2);\n navigate({\n pathname: `${parentMatch?.pathname}/${inboundEmailId}`,\n search: window.location.search,\n });\n }}\n >\n
    \n \n ) : undefined\n }\n orderDate={\n purchaseOrderDate ? new Date(purchaseOrderDate) : undefined\n }\n // TODO add currency for faceValue\n faceValue={faceValue}\n />\n
    \n
    \n );\n }}\n />\n
    \n );\n}\n","import { useCallback } from 'react';\nimport { useMatches, useNavigate } from 'react-router-dom';\nimport { useSet } from 'react-use';\nimport { AccountDisabledNotification } from 'src/components/common/AccountDisabledNotification';\nimport { ConversationMainPanel } from 'src/components/Messages/ConversationMainPanel';\nimport { ConversationSidePanel } from 'src/components/Messages/ConversationSidePanel';\nimport { ConversationDataContextProvider } from 'src/contexts/ConversationDataContext';\nimport { SellerSupportCaseDataContextProvider } from 'src/contexts/SellerSupportCaseDataContext';\nimport { SidePanelProvider } from 'src/contexts/SidePanelContext';\nimport { ExplorerLayout } from 'src/core/layouts';\nimport { AutoPoInboundEmailPartialPurchaseOrderQuery } from 'src/WebApiController';\n\nimport { EmailList } from './EmailList';\nimport { EmailNavPageName } from './EmailNavToolbar';\nimport * as styles from './MessagesExplorer.css';\n\nexport function MessagesExplorer({\n query,\n pageName,\n}: {\n query?: AutoPoInboundEmailPartialPurchaseOrderQuery;\n pageName: EmailNavPageName;\n}) {\n // const { inboundEmailId: activeInboundEmailId } = useParams();\n const navigate = useNavigate();\n const matches = useMatches();\n\n const [classifiedInboundEmailIds, { add: addClassifiedInboundEmailId }] =\n useSet();\n const onEmailClassified = useCallback(\n (inboundEmailId: number) => {\n addClassifiedInboundEmailId(inboundEmailId);\n const parentMatch = matches.at(-2);\n parentMatch && navigate(parentMatch.pathname);\n },\n [addClassifiedInboundEmailId, navigate, matches]\n );\n\n return (\n \n \n \n \n \n ) : (\n \n )\n }\n autoHide={false}\n initialSlide={0}\n >\n
    \n \n
    \n \n
    \n
    \n
    \n );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { sub } from 'date-fns';\nimport { debounce } from 'lodash-es';\nimport { useEffect, useMemo, useState } from 'react';\nimport { Navigate, useMatches } from 'react-router-dom';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { PosSearchBox } from 'src/core/POS/PosSearchBox';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { MessagesAddSourceModal } from 'src/modals/MessagesAddSourceModal/MessagesAddSourceModal';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n AutoPoClient,\n AutoPoInboundEmailClassificationType,\n AutoPoInboundEmailPartialPurchaseOrderQuery,\n} from 'src/WebApiController';\n\nimport { MainRoute } from '../MainRoute';\nimport * as styles from './Email.css';\nimport { EmailNavPageNameHandle } from './Email.types';\nimport { EMAIL_NAV_PAGE_NAME_MAP, EmailNavToolbar } from './EmailNavToolbar';\nimport { MessagesExplorer } from './MessagesExplorer';\n\nconst SEARCH_DELAY_MS = 1000;\n\nconst DEFAULT_QUERY: AutoPoInboundEmailPartialPurchaseOrderQuery = {\n classificationTypes: null,\n includeUnclassified: null,\n subjectSearchText: null,\n fromEmailAddress: null,\n toEmailAddress: null,\n textBodySearchText: null,\n classificationTypeUpdateDateFrom: null,\n classificationTypeUpdateDateTo: null,\n};\n\n/**\n * Classification types to include in the \"Recently Categorized\" page\n */\nconst RECENTLY_CATEGORIZED_CLASSIFICATION_TYPES = Object.values(\n AutoPoInboundEmailClassificationType\n).filter((type) => type !== AutoPoInboundEmailClassificationType.Junk);\n\nfunction isPageNameHandle(handle: unknown): handle is EmailNavPageNameHandle {\n return (\n handle != null &&\n typeof handle === 'object' &&\n 'pageName' in handle &&\n typeof handle.pageName === 'string' &&\n handle.pageName in EMAIL_NAV_PAGE_NAME_MAP\n );\n}\n\nexport function Email() {\n const matches = useMatches();\n const pageName = matches\n .map(({ handle }) => handle)\n .find(isPageNameHandle)?.pageName;\n\n const messagesText = useContent(ContentId.Messages);\n const searchForMessagePlaceholderText = useContent(\n ContentId.SearchForMessagePlaceholder\n );\n\n const [query, setQuery] =\n useState(DEFAULT_QUERY);\n const setQueryDebounced = useMemo(\n () => debounce(setQuery, SEARCH_DELAY_MS),\n []\n );\n useEffect(() => {\n if (pageName === 'uncategorized') {\n setQuery((prev) => ({\n ...DEFAULT_QUERY,\n subjectSearchText: prev.subjectSearchText,\n textBodySearchText: prev.textBodySearchText,\n classificationTypes: null,\n includeUnclassified: true,\n }));\n } else if (pageName === 'recentlyCategorized') {\n setQuery((prev) => ({\n ...DEFAULT_QUERY,\n subjectSearchText: prev.subjectSearchText,\n textBodySearchText: prev.textBodySearchText,\n classificationTypes: RECENTLY_CATEGORIZED_CLASSIFICATION_TYPES,\n classificationTypeUpdateDateFrom: sub(new Date(), {\n weeks: 1,\n }).toISOString(),\n }));\n } else {\n setQuery(DEFAULT_QUERY);\n }\n }, [pageName]);\n\n const { activeAccountWebClientConfig } = useAppContext();\n const uncategorizedEmailsCountQuery = useQuery({\n queryKey: ['uncategorizedEmailsCount'],\n queryFn() {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return new AutoPoClient(\n activeAccountWebClientConfig\n ).getPartialPurchaseOrderInboundEmailsCount({\n ...DEFAULT_QUERY,\n includeUnclassified: true,\n });\n },\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n });\n\n const [isAddSourceModalOpen, setIsAddSourceModalOpen] = useState(false);\n\n if (pageName == null) {\n return ;\n }\n return (\n \n
    \n
    \n
    \n \n
    \n {pageName !== 'inbox' && (\n
    \n {\n const searchText = e.currentTarget.value;\n setQueryDebounced((prev) => ({\n ...prev,\n subjectSearchText: searchText,\n }));\n }}\n />\n
    \n )}\n
    \n
    \n \n {\n setIsAddSourceModalOpen(true);\n }}\n >\n \n \n \n
    \n
    \n \n
    \n
    \n {\n setIsAddSourceModalOpen(false);\n }}\n />\n
    \n );\n}\n","import { RenderTreeNodePayload, Tree, TreeNodeData } from '@mantine/core';\nimport clsx from 'clsx';\nimport React, { ComponentPropsWithoutRef, forwardRef, ReactNode } from 'react';\nimport { vars } from 'src/core/themes';\nimport { mergeProps } from 'src/core/utils';\nimport { ChevronDownIcon, ChevronRightIcon, MinusIcon } from 'src/svgs/Viagogo';\n\nimport { Stack } from '../Stack';\nimport * as styles from './DocumentTree.css';\n\nexport const DocumentTree = forwardRef<\n typeof Tree,\n ComponentPropsWithoutRef & {\n onNodeClick?: (e: React.MouseEvent, value: TreeNodeData) => void;\n }\n>(function Trigger({ onNodeClick, ...props }, ref) {\n const renderNode = ({\n node,\n expanded,\n hasChildren,\n elementProps,\n }: RenderTreeNodePayload): ReactNode => {\n return (\n {\n elementProps.onClick(e);\n onNodeClick?.(e, node);\n }}\n >\n {!hasChildren ? (\n \n \n \n ) : !expanded ? (\n \n ) : (\n \n )}\n {node.label}\n \n );\n };\n\n return (\n \n );\n});\n","import { useQuery } from '@tanstack/react-query';\nimport { useCallback, useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { SellerUserClient } from 'src/WebApiController';\n\nexport const useGetHelpData = () => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const shouldQueryAvailableData = useMemo(\n () => activeAccountWebClientConfig.activeAccountId != null,\n [activeAccountWebClientConfig.activeAccountId]\n );\n\n const allAvailableData = useQuery({\n queryKey: ['allAvailableData'],\n queryFn: async () => {\n if (!shouldQueryAvailableData) {\n return null;\n }\n return tryInvokeApi(\n async () => {\n const client = new SellerUserClient(activeAccountWebClientConfig);\n const data = await client.getAllTutorialItems(true);\n\n return data;\n },\n (error) => {\n showErrorDialog('SellerUserClient.getAllTutorialItems', error, {\n trackErrorData: {\n activeAccountWebClientConfig,\n },\n });\n }\n );\n },\n staleTime: 0, // we will refetch on mount\n refetchOnWindowFocus: false,\n enabled: shouldQueryAvailableData,\n });\n\n const getDataContent = useCallback(\n (itemId: number) => {\n if (!allAvailableData.data) {\n return null;\n }\n\n const existingItem = allAvailableData.data.find(\n (i) => i.tutorialItemId === itemId\n );\n\n if (!existingItem) {\n return null;\n }\n\n return tryInvokeApi(\n async () => {\n const client = new SellerUserClient(activeAccountWebClientConfig);\n const data = await client.getTutorialItemContents([itemId]);\n\n return data[0];\n },\n (error) => {\n showErrorDialog('SellerUserClient.getTutorialItemContents', error, {\n trackErrorData: { activeAccountWebClientConfig, itemId },\n });\n }\n );\n },\n [activeAccountWebClientConfig, allAvailableData.data, showErrorDialog]\n );\n\n return {\n isLoading: allAvailableData.isLoading,\n allAvailableKbs: allAvailableData.data,\n refreshData: allAvailableData.refetch,\n getDataContent,\n };\n};\n","import { TreeNodeData, useTree } from '@mantine/core';\nimport { useCallback, useMemo, useState } from 'react';\nimport {\n FormatContent,\n useContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport { PosSearchBox } from 'src/core/POS/PosSearchBox';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { DocumentTree } from 'src/core/ui/DocumentTree';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { NoData } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ContentIds } from 'src/utils/constants/contentIdDataMap';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport {\n TutorialItem,\n TutorialItemContent,\n TutorialItemType,\n} from 'src/WebApiController';\n\nimport { MainRoute } from '../MainRoute';\nimport * as styles from './HelpCenter.css';\nimport { useGetHelpData } from './useGetHelpData';\n\ntype TutorialItemTreeNode = TreeNodeData & {\n meta: TutorialItem;\n content?: TutorialItemContent;\n};\n\nexport function HelpCenter() {\n const helpCenterText = useContent(ContentId.HelpCenter);\n\n const { isLoading, allAvailableKbs, getDataContent } = useGetHelpData();\n const { contentResolver } = useContentContext();\n\n const [treeContent, setTreeContent] = useState<\n Record\n >({});\n const [displayContentIsLoading, setDisplayContentIsLoading] = useState(false);\n const [displayContent, setDisplayContent] = useState();\n const [searchText, setSearchText] = useState();\n\n const extractTitle = useCallback(\n (item: TutorialItem) => {\n return (\n (item.titleContentId\n ? contentResolver(\n ContentIds[`cid$#${item.titleContentId}#` as ContentId]\n )\n : undefined) || item.title\n );\n },\n [contentResolver]\n );\n\n const recursiveSearch = useCallback(\n (ti: TutorialItemTreeNode): boolean => {\n if (searchText) {\n const title = extractTitle(ti.meta);\n if (\n (title as string).toLowerCase().includes(searchText.toLowerCase())\n ) {\n return true;\n }\n\n // check children\n if (ti.children?.length) {\n return ti.children.some((child) =>\n recursiveSearch(child as TutorialItemTreeNode)\n );\n }\n\n return false;\n }\n\n return true;\n },\n [extractTitle, searchText]\n );\n\n const treeData = useMemo(() => {\n if (!allAvailableKbs) {\n return [];\n }\n\n const allTreeNodes = allAvailableKbs\n .map(\n (i) =>\n ({\n label: extractTitle(i),\n value: i.tutorialItemId.toString(),\n meta: i,\n content: treeContent[i.tutorialItemId],\n }) as TutorialItemTreeNode\n )\n .toSorted((a, b) => {\n const sortVal =\n (a.meta.tutorialItemType === TutorialItemType.Folder ? 1 : 2) -\n (b.meta.tutorialItemType === TutorialItemType.Folder ? 1 : 2);\n\n if (sortVal !== 0) {\n return sortVal;\n }\n\n return a.meta.title.localeCompare(b.meta.title);\n });\n\n const allTreeNodesMap = {} as Record;\n let tree = [] as TutorialItemTreeNode[];\n allTreeNodes.forEach((i) => {\n if (i.meta.parentTutorialItemId == null) {\n allTreeNodesMap[i.meta.tutorialItemId] = i;\n tree.push(i);\n } else if (i.meta.parentTutorialItemId) {\n if (!allTreeNodesMap[i.meta.parentTutorialItemId]) {\n const parent = allTreeNodes.find(\n (p) => i.meta.tutorialItemId === p.meta.parentTutorialItemId\n );\n if (parent) {\n allTreeNodesMap[parent.meta.tutorialItemId] = parent;\n tree.push(parent);\n\n parent.children = [...(parent.children || []), i];\n } else {\n console.error('HelpCenter: parent not found for', i);\n }\n } else {\n const parent = allTreeNodesMap[i.meta.parentTutorialItemId];\n parent.children = [...(parent.children || []), i];\n }\n }\n });\n\n tree = tree.filter((ti) => recursiveSearch(ti));\n\n return tree;\n }, [allAvailableKbs, extractTitle, recursiveSearch, treeContent]);\n\n const onDocumentClick = useCallback(\n async (_: React.MouseEvent, node: TreeNodeData) => {\n const tutorialNode = node as TutorialItemTreeNode;\n if (tutorialNode.meta) {\n let data: TutorialItemContent | null =\n treeContent[tutorialNode.meta.tutorialItemId];\n if (!data) {\n setDisplayContentIsLoading(true);\n try {\n data = await getDataContent(tutorialNode.meta.tutorialItemId);\n if (data) {\n setTreeContent((prev) => ({\n ...prev,\n [data!.tutorialItemId]: data!,\n }));\n setDisplayContent(data);\n }\n } finally {\n setDisplayContentIsLoading(false);\n }\n } else {\n setDisplayContent(data);\n }\n }\n },\n [getDataContent, treeContent]\n );\n\n const treeHook = useTree();\n\n const onSearchChange = useCallback(\n (value: string) => {\n value = value.trim();\n if (value !== searchText) {\n setSearchText(value);\n\n // Search will expand all to show the search results\n if (\n value &&\n Object.values(treeHook.expandedState).filter((b) => !b).length > 0 // there are unexpanded nodes\n ) {\n treeHook.expandAllNodes();\n } else if (\n // Clear search will collapse all\n !value &&\n Object.values(treeHook.expandedState).filter((b) => b).length > 0 // there are expanded nodes\n ) {\n treeHook.collapseAllNodes();\n }\n }\n },\n [searchText, treeHook]\n );\n\n return (\n \n }\n >\n \n {isLoading ? (\n \n ) : (\n <>\n
    \n {allAvailableKbs ? (\n \n ) : (\n \n \n \n )}\n
    \n\n
    \n {displayContent == null && displayContentIsLoading ? (\n \n ) : displayContent != null ? (\n \n ) : null}\n
    \n \n )}\n \n \n );\n}\n","import 'swiper/swiper-bundle.min.css';\n\nimport { ComponentProps, ReactElement, useMemo, useRef, useState } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { useGetReleaseNoteHtml } from 'src/hooks/api/useGetReleaseNoteHtml';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ReleaseNote, ReleaseNoteType } from 'src/WebApiController';\nimport { Pagination } from 'swiper';\nimport { Swiper, SwiperRef, SwiperSlide } from 'swiper/react';\n\nimport * as styles from './ReleaseNoteDisplayDialog.css';\n\nexport type ReleaseNoteDisplayDialogProps = Omit<\n ComponentProps,\n 'header' | 'footer'\n> & {\n releaseNoteInfos?: ReleaseNote[] | null;\n onReleaseNotesRead?: () => void;\n};\n\nexport function ReleaseNoteDisplayDialog({\n releaseNoteInfos,\n onReleaseNotesRead,\n ...genericDialogProps\n}: ReleaseNoteDisplayDialogProps): ReactElement | null {\n const newFeatures = releaseNoteInfos?.filter(\n (r) => r.releaseNoteType === ReleaseNoteType.NewFeature\n );\n const bugFixes = releaseNoteInfos?.filter(\n (r) => r.releaseNoteType === ReleaseNoteType.BugFix\n );\n\n const swiperRef = useRef(null);\n const [activeIndex, setActiveIndex] = useState(0);\n const totalSlides = useMemo(() => {\n return (newFeatures?.length ?? 0) + (bugFixes?.length ? 1 : 0);\n }, [newFeatures, bugFixes]);\n\n // We could fetch release notes individually, but it will cause the dialog swiper to jump around because\n // the height of the slides will change as the content loads\n // Sacfrice a bit of performance for a better user experience\n const { releaseNoteHtmlByReleaseNoteId = {}, isLoading: htmlIsLoading } =\n useGetReleaseNoteHtml({\n releaseNoteIds: releaseNoteInfos?.map((r) => r.id),\n });\n\n return (\n }\n footer={null}\n onClosed={() => {}}\n {...genericDialogProps}\n onCancel={\n // If user clicks cross icon, we want to mark all release notes as read\n // Otherwise they will pop up again\n // User can go to \"What's New\" page to see them again\n () => onReleaseNotesRead?.()\n }\n >\n {\n setActiveIndex(swiper.activeIndex);\n }}\n className={styles.swiper}\n >\n {newFeatures?.map((releaseNote) => {\n return (\n \n \n \n );\n })}\n\n {bugFixes?.length ? (\n \n \n \n ) : null}\n\n
    \n
    \n {activeIndex > 0 ? (\n swiperRef.current?.swiper.slidePrev()}\n >\n \n \n ) : null}\n
    \n {\n if (activeIndex + 1 === totalSlides) {\n onReleaseNotesRead?.();\n } else {\n swiperRef.current?.swiper.slideNext();\n }\n }}\n disabled={htmlIsLoading}\n >\n {activeIndex + 1 === totalSlides ? (\n \n ) : (\n \n )}\n \n
    \n \n \n );\n}\n\nexport const NewFeatureDisplay = ({\n releaseNote,\n alignLeft,\n releaseNoteHtmlByReleaseNoteId,\n isLoading,\n}: {\n releaseNote: ReleaseNote;\n alignLeft?: boolean;\n releaseNoteHtmlByReleaseNoteId: Record;\n isLoading?: boolean;\n}) => {\n return (\n \n
    \n

    {releaseNote.title}

    \n
    \n ✦ \n
    \n
    \n\n {isLoading ? (\n \n ) : (\n \n )}\n
    \n );\n};\n\nconst BugFixesDisplay = ({\n releaseNotes,\n releaseNoteHtmlByReleaseNoteId,\n isLoading,\n}: {\n releaseNotes: ReleaseNote[];\n releaseNoteHtmlByReleaseNoteId: Record;\n isLoading?: boolean;\n}) => {\n return (\n
    \n
    \n \n
    \n {releaseNotes.map((releaseNote) => {\n return (\n \n

    {releaseNote.title}

    \n\n {isLoading ? (\n \n ) : (\n \n )}\n
    \n );\n })}\n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { ActivityLogClient } from 'src/WebApiController';\n\nconst GET_RECENT_ACTIVITY_LOG_KEY = `${ActivityLogClient.name}.${ActivityLogClient.prototype.getRecentActivityLog.name}`;\nconst ACTIVITY_LOG_POLLING_INTERVAL = 10000;\n\n/**\n * Fetches activity log items on polling interval.\n * @param count Number of items to fetch\n * @returns Return from `useQuery`.\n */\nexport function useLiveActivityLog(count: number) {\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const activityLogResult = useQuery({\n queryKey: [\n GET_RECENT_ACTIVITY_LOG_KEY,\n activeAccountWebClientConfig.activeAccountId,\n count,\n ],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n\n const results = await new ActivityLogClient(\n activeAccountWebClientConfig\n ).getRecentActivityLog(count, true);\n return results\n .toSorted((a, b) => {\n return (\n new Date(b.actionDate).getTime() - new Date(a.actionDate).getTime()\n );\n })\n .slice(0, count);\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n retry: 3,\n refetchInterval: (query) =>\n query.state.status === 'error' ? false : ACTIVITY_LOG_POLLING_INTERVAL,\n refetchIntervalInBackground: false,\n refetchOnWindowFocus: false,\n meta: {\n persist: false,\n onError: (error: ErrorTypes) => {\n trackError(GET_RECENT_ACTIVITY_LOG_KEY, error, { count });\n },\n },\n });\n return activityLogResult;\n}\n","import { Link } from 'react-router-dom';\nimport { ActivityLogDisplay } from 'src/components/ActivityLog';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { PageSection } from 'src/components/common/PageSection';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Card } from 'src/core/ui';\nimport { useLiveActivityLog } from 'src/hooks/useLiveActivityLog';\nimport { ErrorSolidIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport IconBulletList from '~icons/pos/bulletList';\n\nimport * as styles from './ActivitySection.css';\n\nconst ACTIVITY_LOG_ITEM_COUNT = 6;\n\nexport function ActivitySection() {\n const activityLogResult = useLiveActivityLog(ACTIVITY_LOG_ITEM_COUNT);\n return (\n \n \n \n \n }\n >\n \n \n \n {activityLogResult.isLoading ? (\n \n \n \n ) : activityLogResult.isError ? (\n \n }\n >\n \n \n \n \n ) : activityLogResult.data?.length === 0 ? (\n }>\n \n \n ) : (\n
    \n {activityLogResult.data?.map((activityLog) => (\n \n \n
    \n ))}\n \n )}\n
    \n
    \n );\n}\n","import { Link } from 'react-router-dom';\nimport { MetricTile } from 'src/components/Metrics';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getNextDateRange } from 'src/utils/dateTimeUtils';\nimport { DateTimeRangeWithRelative, ListingQuery } from 'src/WebApiController';\n\nimport * as styles from './MetricsSection.css';\n\nexport function MetricsSection() {\n const next2WeeksRange = getNextDateRange({ weeks: 2 }, new Date());\n const metrics = [\n {\n key: 'unsoldTickets',\n title: ,\n href: {\n pathname: '/inventory',\n search: new URLSearchParams({\n quickFilterId: 'unsoldTickets',\n mainFilter: JSON.stringify({\n hasUnsoldTickets: true,\n } satisfies Partial),\n }).toString(),\n },\n },\n {\n key: 'unbroadcasted',\n title: ,\n href: {\n pathname: '/inventory',\n search: new URLSearchParams({\n mainFilter: JSON.stringify({\n isListed: false,\n } satisfies Partial),\n }).toString(),\n },\n },\n {\n key: 'next2Weeks',\n title: (\n <>\n 🔥 \n \n ),\n href: {\n pathname: '/inventory',\n search: new URLSearchParams({\n quickFilterId: 'next2Weeks',\n mainFilter: JSON.stringify({\n eventDates: {\n start: next2WeeksRange.start.toISOString(),\n end: next2WeeksRange.end.toISOString(),\n } as DateTimeRangeWithRelative,\n } satisfies Partial),\n }).toString(),\n },\n },\n {\n key: 'broadcastError',\n title: ,\n href: {\n pathname: '/inventory',\n search: new URLSearchParams({\n quickFilterId: 'broadcastError',\n mainFilter: JSON.stringify({\n hasBroadcastError: true,\n } satisfies Partial),\n }).toString(),\n },\n },\n ];\n return (\n \n {metrics.map(({ key, title, href }) => {\n return (\n \n {title}\n \n >\n \n \n );\n })}\n \n );\n}\n","import { MouseEventHandler, ReactNode } from 'react';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { Button, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\n\nimport * as styles from './NotificationDisplay.css';\n\ntype NotificationDisplayProps = {\n notificationIntent: keyof typeof styles.notificationType;\n /**\n * Type of notification.\n *\n * eg. Listing Broadcast Failed\n */\n notificationType?: ReactNode;\n /**\n * When this notification was triggered.\n *\n * eg. 1 day ago\n */\n timeAgo?: ReactNode;\n /**\n * Identifier for the entity this notification represents.\n *\n * eg. Sale #904398\n */\n entity?: ReactNode;\n entityType?: string;\n /**\n * Seating info.\n *\n * eg. 123 Row A Seats 1 - 10\n */\n seating?: ReactNode;\n /**\n * Pass the event header into here.\n */\n children?: ReactNode;\n onGoToEntity?: MouseEventHandler;\n onDismiss?: MouseEventHandler;\n};\n\n/**\n * @param props\n * @returns\n */\nexport function NotificationDisplay({\n notificationIntent,\n notificationType,\n timeAgo,\n entity,\n entityType,\n seating,\n children,\n onGoToEntity,\n onDismiss,\n}: NotificationDisplayProps) {\n return (\n \n \n
    \n {notificationType && (\n \n {notificationType}\n \n )}\n {timeAgo &&   •  {timeAgo}}\n
    \n {entity &&
    {entity}
    }\n
    \n {children}\n {seating}\n {(onGoToEntity || onDismiss) && (\n \n {onGoToEntity && entityType && (\n \n )}\n {onDismiss && (\n \n \n \n )}\n \n )}\n
    \n );\n}\n","import { useCallback, useMemo } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport {\n Content,\n FormatContent,\n isContentId,\n useContent,\n} from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ACTION_OUTBOX_ENTITY_TYPE_TO_CID,\n MARKET_PLACE_TO_CID,\n NOTIFICATION_TYPE_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { getTimeAgoString, stringToUtcDate } from 'src/utils/dateTimeUtils';\nimport { getListingDetailsRelativeUrl } from 'src/utils/inventoryUtils';\nimport { getPurchaseOrderRelativeUrl } from 'src/utils/purchaseUtils';\nimport { getSaleDetailsRelativeUrl } from 'src/utils/saleUtils';\nimport {\n ActionOutboxEntityType,\n Notification,\n NotificationType,\n} from 'src/WebApiController';\n\nimport { SeatingInfo } from '../common/SeatingInfo';\nimport { ConnectedEventInfo } from '../Events/ConnectedEventInfo';\nimport { NotificationDisplay } from './NotificationDisplay';\n\nconst NOTIFICATION_INTENT_MAP = {\n [NotificationType.SaleNew]: 'success',\n [NotificationType.SaleFulfilmentFailed]: 'error',\n [NotificationType.SaleMarketplaceCancelled]: 'warning',\n [NotificationType.ListingHideSeatsFailed]: 'error',\n [NotificationType.ListingUpdateAllInPriceFailed]: 'error',\n [NotificationType.ListingUpdateInHandDateFailed]: 'error',\n [NotificationType.ListingUpdateSplitTypeFailed]: 'error',\n [NotificationType.ListingUpdateDeliveryTypeFailed]: 'error',\n [NotificationType.ListingUpdateUnitNetProceedsFailed]: 'error',\n [NotificationType.ListingBroadcastFailed]: 'error',\n [NotificationType.ListingUnbroadcastFailed]: 'error',\n [NotificationType.ListingMergeFailed]: 'error',\n [NotificationType.ListingPriceUpdate]: 'success',\n [NotificationType.ListingSplitFailed]: 'error',\n [NotificationType.AutopriceBelowFloor]: 'error',\n [NotificationType.AutopriceInsufficientCompListings]: 'error',\n [NotificationType.AutopriceFirebrake]: 'error',\n [NotificationType.SellerSupportCaseNewReply]: 'success',\n} satisfies {\n [key in NotificationType]: 'success' | 'warning' | 'error';\n};\n\ntype ConnectedNotificationDisplayProps = {\n notification: Notification;\n onDismiss: () => void;\n};\n\n/**\n * Wrapper around `NotificationDisplay` that transforms `Notification` into props for\n * `NotificationDisplay`.\n * @param props\n * @returns\n */\nexport function ConnectedNotificationDisplay({\n notification: {\n notificationType,\n entityType,\n entityId,\n createDateTime,\n event,\n performer,\n venue,\n section,\n row,\n seatFrom,\n seatTo,\n marketplace,\n },\n onDismiss,\n}: ConnectedNotificationDisplayProps) {\n const navigate = useNavigate();\n\n const entityTypeContent = useContent(\n ACTION_OUTBOX_ENTITY_TYPE_TO_CID[entityType]\n );\n const url = useMemo(() => {\n switch (entityType) {\n case ActionOutboxEntityType.Sale:\n return getSaleDetailsRelativeUrl(entityId);\n\n case ActionOutboxEntityType.Listing:\n return getListingDetailsRelativeUrl(entityId);\n\n case ActionOutboxEntityType.Purchase:\n return getPurchaseOrderRelativeUrl(entityId);\n\n case ActionOutboxEntityType.SellerSupportCase:\n return null;\n\n case ActionOutboxEntityType.Document:\n return null;\n }\n }, [entityType, entityId]);\n\n const getNotificationTypeContent = useCallback(\n (notificationType: NotificationType) => {\n const parsedContent = NOTIFICATION_TYPE_TO_CID[notificationType];\n return isContentId(parsedContent) ? (\n \n ) : (\n \n )\n }\n />\n );\n },\n [marketplace]\n );\n\n return (\n \n {entityTypeContent} #{entityId}\n \n }\n entityType={entityTypeContent}\n seating={\n \n }\n onGoToEntity={() => {\n onDismiss();\n if (url) {\n navigate(url);\n }\n }}\n onDismiss={onDismiss}\n >\n \n \n );\n}\n","import { useMemo } from 'react';\nimport { Link } from 'react-router-dom';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { PageSection } from 'src/components/common/PageSection';\nimport { ConnectedNotificationDisplay } from 'src/components/ConnectedNotificationDisplay';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useNotificationsContext } from 'src/contexts/NotificationsContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Card } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport IconAlarmAdd from '~icons/pos/alarmAdd';\n\nimport * as styles from './NotificationsSection.css';\n\nexport function NotificationsSection() {\n const { notifications, notificationsIsInitialLoading, dismissNotification } =\n useNotificationsContext();\n const recentNotifications = useMemo(\n () => notifications.slice(0, 4),\n [notifications]\n );\n\n return (\n \n \n ({notifications.length})\n \n }\n >\n \n \n \n {notificationsIsInitialLoading ? (\n \n \n \n ) : recentNotifications.length === 0 ? (\n }\n >\n \n \n ) : (\n
    \n {recentNotifications.map((notification) => (\n \n {\n dismissNotification(notification.notificationId);\n }}\n />\n
    \n ))}\n \n )}\n
    \n
    \n );\n}\n","import { PaginationState, TableOptions } from '@tanstack/react-table';\nimport { useMemo, useState } from 'react';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useSeatingColumnSorting } from 'src/tables/common/hooks/useSeatingColumnSorting';\nimport { SALE_TABLE_COLUMNS_CONFIG } from 'src/tables/SalesTable/configs/SaleTableColumnsConfig';\nimport { SALE_TABLE_FLATTENED_COLUMNS_CONFIG } from 'src/tables/SalesTable/configs/SaleTableFlattenedColumnsConfig';\nimport { SaleWithEvent } from 'src/tables/SalesTable/SalesTable.type';\nimport { Table } from 'src/tables/Table';\nimport { RowWrapper } from 'src/tables/Table/Table.types';\nimport { defaultSalesColumnsConfig } from 'src/utils/columns/columnUtils';\nimport {\n SalesTableColumnId,\n SalesTableFlattenedColumnId,\n} from 'src/utils/columns/sales/salesColumnUtils.types';\nimport { getEventPerformerVenue } from 'src/utils/eventWithDataUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { Feature, Sale } from 'src/WebApiController';\n\nconst PAGE_SIZE = 10;\n\nconst defaultRecentSalesColumns = [\n SalesTableFlattenedColumnId.Event,\n SalesTableFlattenedColumnId.EventDate,\n SalesTableFlattenedColumnId.Venue,\n SalesTableFlattenedColumnId.Location,\n];\n\nexport const RecentSalesTable = ({\n data,\n onRowWrapper,\n}: {\n data: Sale[];\n onRowWrapper: RowWrapper;\n}) => {\n const { data: catalog } = useCatalogDataContext();\n const [pagination, setPagination] = useState({\n pageIndex: 0,\n pageSize: PAGE_SIZE,\n });\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n\n const seatingColumnSorting = useSeatingColumnSorting(\n SalesTableColumnId.Seating,\n SectionType.Sales\n );\n\n const options: Partial> = useMemo(\n () => ({\n data: data\n .map((sale) => {\n const { event, performer, venue } = getEventPerformerVenue(\n sale.viagVirtualId,\n catalog\n );\n if (event) {\n return { event: event.event, sale, performer, venue };\n }\n\n return null;\n })\n ?.filter((s) => s != null)\n ?.map((s) => s!),\n columns: Array.from(\n new Set([...defaultRecentSalesColumns, ...defaultSalesColumnsConfig])\n ).map(\n (id) =>\n SALE_TABLE_COLUMNS_CONFIG[id as SalesTableColumnId] ||\n SALE_TABLE_FLATTENED_COLUMNS_CONFIG[id as SalesTableFlattenedColumnId]\n ),\n state: {\n pagination,\n columnPinning: {\n right: hasTablePinActionColumnFeature\n ? [SalesTableColumnId.Actions]\n : undefined,\n },\n },\n onPaginationChange: setPagination,\n sortingFns: { ...seatingColumnSorting },\n }),\n [\n data,\n hasTablePinActionColumnFeature,\n pagination,\n catalog,\n seatingColumnSorting,\n ]\n );\n\n return (\n
    \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport clsx from 'clsx';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport { PageSection } from 'src/components/common/PageSection';\nimport { ActivePosEntityProvider } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { CatalogDataContextProvider } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { FilterQueryContextProvider } from 'src/contexts/FilterQueryContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { ToolbarButton } from 'src/core/POS/ToolbarButton';\nimport { Card } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { SaleWithEvent } from 'src/tables/SalesTable/SalesTable.type';\nimport { RowWrapper } from 'src/tables/Table/Table.types';\nimport { DATA_REFRESH_RATE_IN_MILLIS_SHORT } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getLastNDaysSaleQuery } from 'src/utils/eventQueryUtils';\nimport { transformData } from 'src/utils/eventWithDataUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n CatalogClient,\n Feature,\n Sale,\n SaleClient,\n SaleDetails,\n SaleQuery,\n UserSetting,\n} from 'src/WebApiController';\n\nimport * as styles from './RecentSalesSection.css';\nimport { RecentSalesTable } from './RecentSalesTable';\n\nconst PREVIOUS_DAYS_TO_PULL = 7;\nconst NEW_ROW_ACTIVE_DURATION = 5_000;\n\nexport const RecentSalesSection = () => {\n const salesFilterQuery = getLastNDaysSaleQuery(PREVIOUS_DAYS_TO_PULL);\n const { activeAccountWebClientConfig } = useAppContext();\n const previousValues = useRef>();\n const [newRows, setNewRows] = useState([]);\n const { trackError } = useErrorBoundaryContext();\n const hasUnprocessedOrdersHoldingPenFeature = useUserHasFeature(\n Feature.AutomatiqUnprocessedOrdersHoldingPen\n );\n const [activeTab, setActiveTab] = useState<\n 'recentSales' | 'unableToProcessSales'\n >('recentSales');\n\n const handleTabChange = (tab: 'recentSales' | 'unableToProcessSales') => {\n if (hasUnprocessedOrdersHoldingPenFeature) {\n setActiveTab(tab);\n }\n };\n\n const { data, isLoading, refetch } = useQuery({\n queryKey: [\n activeTab === 'recentSales'\n ? 'SaleClient.getSalesForEvents.recent'\n : 'SaleClient.getUnableToProcessSales',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n\n if (activeTab === 'recentSales') {\n return tryInvokeApi(\n async () => {\n const client = new SaleClient(activeAccountWebClientConfig);\n return await client.getSalesForEvents(\n salesFilterQuery,\n false,\n false\n );\n },\n (error: ErrorTypes) => {\n trackError('SaleClient.getSalesForEvents.recent', error);\n }\n );\n }\n\n return tryInvokeApi(\n async () => {\n const client = new SaleClient(activeAccountWebClientConfig);\n return await client.getUnableToProcessSales();\n },\n (error: ErrorTypes) => {\n trackError('SaleClient.getUnableToProcessSales', error);\n }\n );\n },\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n networkMode: 'offlineFirst',\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_SHORT,\n });\n\n const flattenedData = useMemo(() => {\n if (!data) return [];\n return Object.values(data)\n .flat()\n .filter(\n (s) =>\n (activeTab === 'recentSales' && !s.isUnprocessedOrdFromPro) ||\n (hasUnprocessedOrdersHoldingPenFeature &&\n activeTab === 'unableToProcessSales' &&\n s.isUnprocessedOrdFromPro)\n )\n .toSorted(\n (a, b) =>\n new Date(b.saleDate).valueOf() - new Date(a.saleDate).valueOf()\n );\n }, [activeTab, data, hasUnprocessedOrdersHoldingPenFeature]);\n\n useEffect(() => {\n if (!data) return;\n const isInitial = !previousValues.current;\n const prev = previousValues.current ?? new Set();\n const newValues = flattenedData\n .filter((sale) => !prev.has(sale.id))\n .map((sale) => sale.id);\n newValues.forEach((id) => prev.add(id));\n if (newValues.length && !isInitial) {\n setNewRows(newValues);\n setTimeout(() => {\n setNewRows([]);\n }, NEW_ROW_ACTIVE_DURATION);\n }\n previousValues.current = prev;\n }, [data, flattenedData]);\n\n const getCatalogData = async (\n client: CatalogClient,\n filterQuery: SaleQuery\n ) => {\n return await client.getCatalogForSales(filterQuery, false);\n };\n\n const getCatalogDataExpanded = async () => ({});\n\n const getActivePosEntity = useCallback(\n async (saleId: number) => {\n const saleDetail = await new SaleClient(\n activeAccountWebClientConfig\n ).getSaleBySaleId(saleId);\n\n if (!saleDetail) return {};\n return {\n posEntityId: saleDetail.id,\n posEntity: saleDetail,\n posEntityDisplayId: saleDetail.idOnMkp,\n };\n },\n [activeAccountWebClientConfig]\n );\n\n const onRowWrapper: RowWrapper = (\n rowData,\n tableRow\n ) => {\n const isNewRow = !!rowData?.sale.id && newRows.includes(rowData?.sale.id);\n return (\n
    \n {tableRow}\n
    \n );\n };\n\n return (\n \n \n \n \n }\n >\n {hasUnprocessedOrdersHoldingPenFeature ? (\n
    \n handleTabChange('recentSales')}\n >\n \n \n handleTabChange('unableToProcessSales')}\n >\n \n \n
    \n ) : (\n \n )}\n \n\n \n \n initialQuery={salesFilterQuery}\n emptyQuery={salesFilterQuery}\n viewModeSettingId={UserSetting.SalePageViewMode}\n >\n \n entityType={ActionOutboxEntityType.Sale}\n queryKey=\"getCatalogForSales\"\n getCatalogData={getCatalogData}\n getCatalogDataExpanded={getCatalogDataExpanded}\n transformEventData={transformData}\n >\n \n entityType={ActionOutboxEntityType.Sale}\n getActivePosEntity={getActivePosEntity}\n onSetActiveItemCompleteCallback={() => refetch()}\n >\n \n {!isLoading ? (\n \n ) : (\n \n )}\n \n \n \n \n \n
    \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport clsx from 'clsx';\nimport { useEffect } from 'react';\nimport { SummaryTile } from 'src/components/common/SummaryTile';\nimport { MetricsDisplay } from 'src/components/Metrics';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { Stack } from 'src/core/ui';\nimport { ReleaseNoteDisplayDialog } from 'src/dialogs/ReleaseNoteDisplayDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useReleaseNotes } from 'src/hooks/useReleaseNotes';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getInventoryListingMetrics,\n getInventoryListingMetricsDisplayStrings,\n} from 'src/utils/ticketMetricUtils';\nimport {\n ALL_INVENTORY_VIEW_PERMISSIONS,\n ALL_SALES_VIEW_PERMISSIONS,\n hasAccessToRoute,\n} from 'src/utils/userUtils';\nimport { CatalogClient, Feature } from 'src/WebApiController';\n\nimport { MainRoute } from '../MainRoute';\nimport { ActivitySection } from './ActivitySection';\nimport * as styles from './Home.css';\nimport { MetricsSection as MetricTilesSection } from './MetricsSection';\nimport { NotificationsSection } from './NotificationsSection';\nimport { RecentSalesSection } from './RecentSalesSection/RecentSalesSection';\n\nexport function Home() {\n const { trackError } = useErrorBoundaryContext();\n const { loginContext, appContext, activeAccountWebClientConfig } =\n useAppContext();\n const hasViewSalesPermission = useUserHasAnyOfPermissions(\n ...ALL_SALES_VIEW_PERMISSIONS\n );\n const hasViewListingsPermission = useUserHasAnyOfPermissions(\n ...ALL_INVENTORY_VIEW_PERMISSIONS\n );\n const hasNotificationsAccess = hasAccessToRoute(\n loginContext?.user,\n appContext?.features,\n MainRoute.Notifications\n );\n\n const {\n releaseNoteInfos: releaseNotesUnread,\n setReleaseNoteIdsRead,\n releaseNoteIdsRead,\n } = useReleaseNotes({ getUnreadOnly: true });\n const releaseNotesDialog = useBasicDialog();\n const metricsQuery = useQuery({\n queryKey: ['catalogHomeMetrics', activeAccountWebClientConfig],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n const metrics = await new CatalogClient(\n activeAccountWebClientConfig\n ).getCatalogHomeMetrics();\n return metrics;\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError(\n `${CatalogClient.name}.${CatalogClient.prototype.getCatalogHomeMetrics.name}`,\n error\n );\n },\n },\n });\n const formattedMetrics:\n | ReturnType\n | undefined =\n metricsQuery.isLoading || !metricsQuery.data\n ? undefined\n : getInventoryListingMetricsDisplayStrings(\n metricsQuery.data,\n loginContext?.user?.activeAccount?.currencyCode\n );\n const { mainMetrics, subMetrics } = getInventoryListingMetrics(\n metricsQuery.data,\n loginContext?.user?.activeAccount?.currencyCode\n );\n\n const hasHomePageActivityLogFeature = useUserHasFeature(\n Feature.HomePageActivityLog\n );\n\n const routeTitle = useContent(ContentId.Home);\n\n useEffect(() => {\n if (releaseNotesUnread && releaseNotesUnread.length > 0) {\n if (!releaseNotesDialog.dialogProps.isOpen) {\n releaseNotesDialog.launchDialog();\n }\n } else {\n if (releaseNotesDialog.dialogProps.isOpen) {\n releaseNotesDialog.closeDialog();\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [releaseNotesUnread]);\n\n return (\n \n \n }\n showLoadingPlaceholders={metricsQuery.isLoading}\n >\n {formattedMetrics?.formattedTotalCost}\n \n \n )\n }\n >\n \n {hasViewListingsPermission && }\n {hasViewSalesPermission && }\n\n \n {hasHomePageActivityLogFeature && (\n
    \n \n
    \n )}\n {hasNotificationsAccess && (\n
    \n \n
    \n )}\n
    \n \n {Boolean(releaseNotesUnread?.length) && (\n }\n bodyText={\n \n }\n onReleaseNotesRead={async () => {\n await setReleaseNoteIdsRead([\n ...(releaseNoteIdsRead ?? []),\n ...(releaseNotesUnread?.map((rn) => rn.id) ?? []),\n ]);\n releaseNotesDialog.closeDialog();\n }}\n />\n )}\n \n );\n}\n","import {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { useCatalogMultiSelectionContext } from 'src/contexts/CatalogMultiSelectionContext';\nimport {\n EventSessionRole,\n useEventHubContext,\n} from 'src/contexts/EventHubContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { SectionInfo } from 'src/WebApiController';\n\ntype StubHubListingsManualPricingContextType = {\n onQuantityFilterChanged: (val: number) => void;\n onSectionZoneFilterChanged: (\n sections: SectionInfo[],\n flipOnSameSections?: boolean\n ) => void;\n onSectionFilterChanged: (section: SectionInfo) => void;\n onRowFiltersChanged: (\n rowIdFiltersNew: number[],\n sectionRowIdFiltersNew: { [key: string]: string }\n ) => void;\n resetFilters: () => void;\n quantityFilter: number;\n selectedSections: SectionInfo[];\n sectionIdFilters: number[];\n rowIdFilters: number[];\n sectionRowIdFilters: {\n [key: string]: string;\n };\n hasActiveFilters: boolean;\n};\n\n/**\n * Context for managing the state of the manual pricing filters. Provides components with callbacks to invoke\n * setState functions and also returns the values of the state functions\n *\n * @context\n * @description Provides a context for managing the state of the manual pricing filters\n *\n * @param onQuantityFilterChanged - Callback function to update the quantity filter when it changes.\n * @param onSectionZoneFilterChanged - Callback function to update the section zone filter when it changes.\n * @param onSectionFilterChanged - Callback function to update the section filter when it changes.\n * @param onRowFiltersChanged - Callback function to update the row filters when they change.\n * @param resetFilters - Function to reset all filters to their initial state.\n * @param quantityFilter - The current value of the quantity filter.\n * @param selectedSections - An array of SectionInfo objects representing the currently selected sections.\n * @param sectionIdFilters - An array of numbers representing the section ID filters.\n * @param rowIdFilters - An array of numbers representing the row ID filters.\n * @param sectionRowIdFilters - An object where the keys are section IDs and the values are strings representing the max row ID filters for each section.\n * We need to keep track of this mapping because it allows the UI to render the correct max row filters for each section.\n * The sectionIdFilters and rowIdFilters are alone suffient to determine the final cardinality of listings we want to show,\n * and this mapping object should only be used by the section pills to show the mapping of section to max row filter.\n *\n */\nconst StubHubListingsManualPricingContext =\n createContext({\n onQuantityFilterChanged: () => {},\n onSectionZoneFilterChanged: () => {},\n onSectionFilterChanged: () => {},\n onRowFiltersChanged: () => {},\n resetFilters: () => {},\n quantityFilter: 2,\n selectedSections: [],\n sectionIdFilters: [],\n rowIdFilters: [],\n sectionRowIdFilters: {} as {\n [key: string]: string;\n },\n hasActiveFilters: false,\n });\n\nexport const useStubHubListingManualPricingContext = () =>\n useContext(StubHubListingsManualPricingContext);\n\ntype StubHubListingManualPricingContextProviderProps = {\n children: ReactNode;\n groupId?: string;\n};\n\nexport const StubHubListingManualPricingContextProvider = ({\n children,\n groupId,\n}: StubHubListingManualPricingContextProviderProps) => {\n const [selectedSections, setSelectedSections] = useState([]);\n const [quantityFilter, setQuantityFilter] = useState(2);\n const [rowIdFilters, setRowIdFilters] = useState([]);\n const [sectionRowIdFilters, setSectionRowIdFilters] = useState<{\n [key: string]: string;\n }>({});\n\n const { flattenedIds } = useCatalogMultiSelectionContext();\n\n const { setGroupItems } = useMultiSelectionContext();\n const { venueMapInfo } = useEventMapContext();\n\n const { sessionRole, enabled, selectedVenueMapSections, onSectionsSelected } =\n useEventHubContext();\n\n const clearGroupItems = useCallback(() => {\n if (groupId && flattenedIds) {\n setGroupItems(\n groupId,\n flattenedIds.reduce(\n (acc, id) => {\n acc[id] = false;\n return acc;\n },\n {} as Record\n )\n );\n }\n }, [flattenedIds, groupId, setGroupItems]);\n\n useEffect(() => {\n setSelectedSections([]);\n setRowIdFilters([]);\n setSectionRowIdFilters({});\n setQuantityFilter(2);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [groupId]);\n\n const onSectionZoneFilterChanged = useCallback(\n (sections: SectionInfo[], flipOnSameSections = true) => {\n setSelectedSections((prevSections) => {\n const sectionMap = new Map(\n prevSections.map((section) => [section.id, section])\n );\n\n // If every section passed in already exists in prevSections then we should remove them entirely\n const completelyOverlap = sections.every((section) =>\n sectionMap.has(section.id)\n );\n\n if (completelyOverlap && flipOnSameSections) {\n sections.forEach((section) => sectionMap.delete(section.id));\n\n // We need to remove the associated rows as well\n const rowIdsToRemove = sections\n .map((section) => section.rows.map((r) => r.id))\n .flat();\n\n setRowIdFilters((prevFilters) =>\n prevFilters.filter((id) => !rowIdsToRemove.includes(id))\n );\n\n // Update sectionRowIdFilters to remove the sections that have been removed\n setSectionRowIdFilters((prevFilters) => {\n const newFilters = { ...prevFilters };\n sections.forEach((section) => {\n if (newFilters[section.id]) {\n delete newFilters[section.id];\n }\n });\n\n return newFilters;\n });\n } else {\n // Do an upsert of the sections instead\n sections.forEach((section) => {\n if (sectionMap.has(section.id)) {\n sectionMap.set(section.id, {\n ...sectionMap.get(section.id),\n ...section,\n });\n } else {\n sectionMap.set(section.id, section);\n }\n });\n }\n\n if (enabled && sessionRole === EventSessionRole.SidePanel) {\n const sectionIds = Array.from(sectionMap.values()).map(\n ({ id }) => id\n );\n onSectionsSelected(sectionIds);\n }\n\n return Array.from(sectionMap.values());\n });\n\n clearGroupItems();\n },\n [clearGroupItems, enabled, onSectionsSelected, sessionRole]\n );\n\n const onSectionFilterChanged = useCallback(\n (section: SectionInfo) => {\n setSelectedSections((prevSections) => {\n const idx = prevSections.findIndex(({ id }) => id === section.id);\n\n if (idx === -1) {\n const updated = [section, ...prevSections];\n\n if (enabled && sessionRole === EventSessionRole.SidePanel) {\n const sectionIds = updated.map(({ id }) => id);\n onSectionsSelected(sectionIds);\n }\n return [section, ...prevSections];\n } else {\n const updatedSections = [\n ...prevSections.slice(0, idx),\n ...prevSections.slice(idx + 1),\n ];\n\n // Remove all the associated row ids for this section\n const rowIdsToRemove = section.rows.map((r) => r.id);\n setRowIdFilters((prevFilters) =>\n prevFilters.filter((id) => !rowIdsToRemove.includes(id))\n );\n\n setSectionRowIdFilters((prevFilters) => {\n const newFilters = { ...prevFilters };\n delete newFilters[section.id];\n return newFilters;\n });\n\n if (enabled && sessionRole === EventSessionRole.SidePanel) {\n const sectionIds = updatedSections.map(({ id }) => id);\n onSectionsSelected(sectionIds);\n }\n\n return updatedSections;\n }\n });\n clearGroupItems();\n },\n [clearGroupItems, enabled, onSectionsSelected, sessionRole]\n );\n\n useEffect(() => {\n if (enabled && sessionRole === EventSessionRole.Main) {\n const sections =\n venueMapInfo?.sections.filter(({ id }) =>\n selectedVenueMapSections.includes(id)\n ) ?? [];\n\n setSelectedSections(sections);\n }\n }, [\n enabled,\n onSectionZoneFilterChanged,\n JSON.stringify(selectedVenueMapSections),\n sessionRole,\n venueMapInfo?.sections,\n ]);\n\n const onRowFiltersChanged = useCallback(\n (\n rowIdFiltersNew: number[],\n sectionRowIdFiltersNew: { [key: string]: string }\n ) => {\n setRowIdFilters(rowIdFiltersNew);\n setSectionRowIdFilters(sectionRowIdFiltersNew);\n clearGroupItems();\n },\n [clearGroupItems]\n );\n\n const onQuantityFilterChanged = useCallback(\n (quantityFilterNew: number) => {\n setQuantityFilter(quantityFilterNew);\n clearGroupItems();\n },\n [clearGroupItems]\n );\n\n const resetFilters = () => {\n setSelectedSections([]);\n setRowIdFilters([]);\n setSectionRowIdFilters({});\n setQuantityFilter(2);\n };\n\n const hasActiveFilters =\n selectedSections.length > 0 ||\n rowIdFilters.length > 0 ||\n quantityFilter !== 2 ||\n Object.keys(sectionRowIdFilters).length > 0;\n\n const sectionIdFilters = useMemo(\n () => selectedSections.map((section) => section.id),\n [selectedSections]\n );\n\n return (\n \n {children}\n \n );\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { isEmpty, sortBy } from 'lodash-es';\nimport { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { DATA_REFRESH_RATE_IN_MILLIS_SHORT } from 'src/utils/constants/constants';\nimport { EventConfigClient } from 'src/WebApiController';\n\nexport const useEventLastReviewedDateTime = (viagVirtualIds: string[]) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n\n const queryClient = useQueryClient();\n const queryKey = [\n 'EventConfigClient.getLastReviewedDateTimeForEvent',\n sortBy(viagVirtualIds).join(','),\n ];\n\n const shouldQuery = Boolean(\n activeAccountWebClientConfig.activeAccountId && !isEmpty(viagVirtualIds)\n );\n const eventLastReviewedQuery = useQuery({\n queryKey,\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n const response = await new EventConfigClient(\n activeAccountWebClientConfig\n ).getLastReviewedDateTimeForEvents(viagVirtualIds);\n\n return response;\n },\n\n enabled: shouldQuery,\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_SHORT,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('EventConfigClient.getLastReviewedDateTimeForEvent', error, {\n viagVirtualIds,\n });\n },\n },\n });\n\n const mutation = useMutation({\n mutationFn: async ({\n lastReviewedDateTime,\n viagVirtualId,\n }: {\n lastReviewedDateTime: string;\n viagVirtualId: string;\n }) => {\n return await new EventConfigClient(\n activeAccountWebClientConfig\n ).updateLastReviewedDateTimeForEvent(\n viagVirtualId ?? undefined,\n lastReviewedDateTime\n );\n },\n onMutate: ({ viagVirtualId, lastReviewedDateTime }) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue: Record | undefined =\n queryClient.getQueryData(queryKey);\n if (prevValue) {\n prevValue[viagVirtualId] = lastReviewedDateTime;\n queryClient.setQueryData(queryKey, prevValue);\n } else {\n queryClient.setQueryData(queryKey, {\n [viagVirtualId]: lastReviewedDateTime,\n });\n }\n return { prevValue };\n },\n onError: (err: ErrorTypes, { lastReviewedDateTime }, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog(\n 'EventConfigClient.updateLastReviewedDateTimeForEvent',\n err,\n {\n trackErrorData: { lastReviewedDateTime },\n }\n );\n },\n onSettled: () => {\n queryClient.invalidateQueries();\n },\n });\n\n const onUpdateLastReviewedDateTime = useCallback(\n async (viagVirtualId: string | null) => {\n if (viagVirtualId) {\n await mutation.mutateAsync({\n lastReviewedDateTime: new Date().toISOString(),\n viagVirtualId,\n });\n }\n },\n [mutation]\n );\n\n return {\n eventLastReviewed: eventLastReviewedQuery.data,\n onUpdateLastReviewedDateTime,\n isLoading: eventLastReviewedQuery.isPending || mutation.isPending,\n isCompleted: mutation.isSuccess,\n loadEventLastReviewed: eventLastReviewedQuery.refetch,\n };\n};\n","import { isEmpty } from 'lodash-es';\nimport {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport { useEventLastReviewedDateTime } from 'src/hooks/api/useEventLastReviewedDateTime';\n\ntype IEventLastReviewedContext = {\n eventLastReviewed: Record;\n isLoading: boolean;\n isCompleted: boolean;\n onUpdateLastReviewedDateTime: (virtualViaId: string) => void;\n onSettingVirtualIds: (virtualViaIds: string[]) => void;\n};\n\nexport const EventLastReviewedContext =\n createContext({\n eventLastReviewed: {},\n isLoading: false,\n isCompleted: false,\n onUpdateLastReviewedDateTime: (_: string) => undefined,\n onSettingVirtualIds: (_: string[]) => undefined,\n });\n\nexport const useEventLastReviewedContext = () =>\n useContext(EventLastReviewedContext);\n\nexport const EventLastReviewedContextProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => {\n const [eventLastReviewed, setEventLastReviewedLookup] = useState<\n Record\n >({});\n const [viagogoEventIds, setViagogoEventIds] = useState([]);\n const {\n eventLastReviewed: queryData,\n isLoading,\n isCompleted,\n onUpdateLastReviewedDateTime,\n } = useEventLastReviewedDateTime(viagogoEventIds);\n\n useEffect(() => {\n if (!isEmpty(queryData)) {\n setEventLastReviewedLookup((prev) => ({ ...prev, ...queryData }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(queryData)]);\n\n const onSettingVirtualIds = useCallback(\n (virtualViaIds: string[]) => {\n const existingIds = Object.entries(eventLastReviewed)\n .filter(([_, viewedAt]) => !!viewedAt)\n .map(([id, _]) => id);\n const filtered = virtualViaIds.filter((id) => !existingIds.includes(id));\n if (!isEmpty(filtered)) {\n setViagogoEventIds(filtered);\n }\n },\n [eventLastReviewed]\n );\n\n return (\n \n {children}\n \n );\n};\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { CheckIcon, LoadingIcon } from 'src/svgs/Viagogo';\n\nimport * as styles from './LoadingButton.css';\n\nconst FadeAnimationDuration = 500;\nconst GracePeriod = 1_500;\n\ntype LoadingButtonProps = {\n isLoading: boolean;\n isCompleted: boolean;\n title?: string;\n onClick?: () => Promise;\n};\n\nexport const LoadingButton: React.FC = ({\n isLoading,\n isCompleted,\n title,\n onClick,\n}) => {\n const [animationStyle, setAnimationStyle] = useState();\n\n // Grace period to allow fade out\n const clearAnimation = useCallback(() => {\n setTimeout(() => setAnimationStyle(null), FadeAnimationDuration);\n }, []);\n\n useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let timeout: any = null;\n if (isCompleted) {\n setAnimationStyle(styles.checkBoxFadeIn);\n timeout = setTimeout(() => {\n setAnimationStyle(styles.checkBoxFadeOut);\n clearAnimation();\n }, GracePeriod);\n }\n\n return () => timeout && clearTimeout(timeout);\n }, [clearAnimation, isCompleted]);\n\n const icon = useMemo(() => {\n if (isLoading || animationStyle) {\n return ;\n }\n return ;\n }, [animationStyle, isLoading]);\n\n return (\n \n {icon}\n \n );\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { DATA_REFRESH_RATE_IN_MILLIS_SHORT } from 'src/utils/constants/constants';\nimport { EventConfigClient, SellerEventNoteResult } from 'src/WebApiController';\n\nexport const useSellerEventNote = (viagogoEventId?: number | null) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n const queryClient = useQueryClient();\n\n const queryKey = [\n 'EventConfigClient.getSellerEventNotesByViagogoEventId',\n viagogoEventId,\n ];\n\n const shouldQuery = Boolean(viagogoEventId);\n\n const notesQuery = useQuery({\n queryKey,\n queryFn: async () => {\n if (!viagogoEventId) {\n return null;\n }\n return await new EventConfigClient(\n activeAccountWebClientConfig\n ).getSellerEventNotesByViagogoEventId(viagogoEventId);\n },\n enabled: shouldQuery,\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_SHORT,\n meta: {\n onError: (error: Error) => {\n trackError(\n 'EventConfigClient.getSellerEventNotesByViagogoEventId',\n error,\n {\n viagogoEventId,\n }\n );\n },\n },\n });\n\n const addNoteMutation = useMutation({\n mutationFn: async (newNote: string) => {\n return await new EventConfigClient(\n activeAccountWebClientConfig\n ).insertSellerEventNotes(viagogoEventId ?? undefined, newNote);\n },\n onError: (error: Error, newNote: string, context: any) => {\n queryClient.setQueryData(queryKey, context?.previousNotes);\n showErrorDialog('EventConfigClient.insertSellerEventNotes', error, {\n trackErrorData: { viagogoEventId, newNote },\n });\n },\n onSuccess: (result: SellerEventNoteResult) => {\n queryClient.setQueryData(\n queryKey,\n (old: SellerEventNoteResult[] = []) => [...old, result]\n );\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n },\n });\n\n const addNote = useCallback(\n async (newNote: string) => {\n if (newNote.trim() === '') {\n return;\n }\n await addNoteMutation.mutateAsync(newNote);\n },\n [addNoteMutation]\n );\n\n return {\n notes: notesQuery.data,\n addNote,\n isLoading: notesQuery.isLoading || addNoteMutation.isPending,\n isSuccess: notesQuery.isSuccess && addNoteMutation.isSuccess,\n };\n};\n","import { IconButton } from 'src/components/Buttons';\nimport { vars } from 'src/core/themes';\nimport { ChevronLeftIcon, ChevronRightIcon } from 'src/svgs/Viagogo';\n\nimport { useCatchUpParams } from '../InventoryEventPage.hooks';\n\nexport function InventoryEventCatchUpPrevButton() {\n const { selectedIndex, numberOfEvents, onPrevClick } = useCatchUpParams();\n\n const prevButtonDisabled =\n selectedIndex == null || numberOfEvents == null || selectedIndex <= 0;\n\n return (\n \n }\n style={{ padding: vars.spacing['lg'] }}\n disabled={prevButtonDisabled}\n onClick={onPrevClick}\n />\n );\n}\n\nexport function InventoryEventCatchUpNextButton() {\n const { selectedIndex, numberOfEvents, onNextClick } = useCatchUpParams();\n\n const nextButtonDisabled =\n selectedIndex == null ||\n numberOfEvents == null ||\n selectedIndex >= numberOfEvents - 1;\n\n return (\n \n }\n style={{ padding: vars.spacing['lg'] }}\n disabled={nextButtonDisabled}\n onClick={onNextClick}\n />\n );\n}\n","import clsx from 'clsx';\nimport { useMemo } from 'react';\nimport { ConnectedEventInfo } from 'src/components/Events/ConnectedEventInfo';\nimport { MetricsDisplay } from 'src/components/Metrics';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useGetEventFullInfo } from 'src/hooks/useGetEventFullInfo';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { TagIcon } from 'src/svgs';\nimport { CheckIcon } from 'src/svgs/Viagogo';\nimport {\n getInventoryListingMetrics,\n getInventoryListingMetricsV2,\n} from 'src/utils/ticketMetricUtils';\nimport { Feature, ListingMetrics } from 'src/WebApiController';\n\nimport * as styles from './InventoryEventCatchUp.css';\nimport { InventoryEventCatchUpCardProps } from './InventoryEventCatchUpCard.types';\n\nexport function InventoryEventCatchUpCard({\n event,\n showYear,\n onClick,\n isActive,\n isReviewed,\n}: InventoryEventCatchUpCardProps) {\n const { venue, performer } = useGetEventFullInfo(event);\n const { eventMetrics } = useCatalogMetricsContext();\n const { loginContext } = useAppContext();\n const hasInventoryTileMetricV2Feature = useUserHasFeature(\n Feature.InventoryTileMetricV2\n );\n const getInventoryListingMetricsFn = hasInventoryTileMetricV2Feature\n ? getInventoryListingMetricsV2\n : getInventoryListingMetrics;\n\n const metrics = useMemo(\n () =>\n getInventoryListingMetricsFn(\n eventMetrics?.[event.viagVirtualId],\n loginContext?.user?.activeAccount?.currencyCode\n ),\n [\n getInventoryListingMetricsFn,\n eventMetrics,\n event,\n loginContext?.user?.activeAccount?.currencyCode,\n ]\n );\n\n return (\n \n \n
    \n {metrics && (\n \n {!hasInventoryTileMetricV2Feature && (\n \n )}\n {metrics.mainMetrics}\n
    \n }\n />\n )}\n \n
    \n {isReviewed && (\n \n )}\n
    \n
    \n \n \n );\n}\n","import { ConnectedEventInfo } from 'src/components/Events/ConnectedEventInfo';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { useGetEventFullInfo } from 'src/hooks/useGetEventFullInfo';\nimport { IconsFill, MoreIcon } from 'src/svgs/Viagogo';\n\nimport { InventoryEventCatchUpCardProps } from './InventoryEventCatchUpCard.types';\n\nexport function InventoryEventCatchUpDropdown({\n cardProps,\n}: {\n cardProps: InventoryEventCatchUpCardProps[];\n}) {\n return (\n \n \n \n }\n align=\"end\"\n >\n {cardProps.map((props, i) => (\n \n ))}\n \n );\n}\n\nfunction InventoryEvehtCatchUpDrodownItem({\n event,\n isActive,\n onClick,\n}: InventoryEventCatchUpCardProps) {\n const { venue, performer } = useGetEventFullInfo(event);\n\n return (\n {\n e.preventDefault();\n e.stopPropagation();\n onClick?.();\n }}\n style={{\n backgroundColor: isActive ? vars.color.backgroundHighlight : '',\n }}\n >\n \n \n );\n}\n","import { useEffect, useMemo } from 'react';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useEventLastReviewedContext } from 'src/contexts/SellerEventLastReviewContext/SellerEventLastReviewContext';\nimport { Stack } from 'src/core/ui';\nimport { useOverflowX } from 'src/hooks/useOverflowX';\nimport {\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n POS_EVENT_IDS_SEPARATOR,\n} from 'src/navigations/Routes/InventoryEvent/InventoryEvent.constants';\n\nimport { useCatchUpParams } from '../InventoryEventPage.hooks';\nimport * as styles from './InventoryEventCatchUp.css';\nimport {\n InventoryEventCatchUpNextButton,\n InventoryEventCatchUpPrevButton,\n} from './InventoryEventCatchUpBarButtons';\nimport { InventoryEventCatchUpCard } from './InventoryEventCatchUpCard';\nimport { InventoryEventCatchUpCardProps } from './InventoryEventCatchUpCard.types';\nimport { InventoryEventCatchUpDropdown } from './InventoryEventCatchUpDropdown';\n\nexport function InventoryEventCatchUpBar() {\n const { eventsTransformed } = useCatalogDataContext();\n\n const { ref, isOverflowX } = useOverflowX();\n\n const {\n viagVirtualIdsList,\n posEventIdsList,\n activeEventIds,\n activeViagVirtualId,\n setSearchParams,\n numberOfEvents,\n } = useCatchUpParams();\n\n const { eventLastReviewed, onSettingVirtualIds } =\n useEventLastReviewedContext();\n\n useEffect(() => {\n onSettingVirtualIds(viagVirtualIdsList ?? []);\n }, [onSettingVirtualIds, viagVirtualIdsList]);\n\n const selectedIndex = useMemo(() => {\n if (activeEventIds && posEventIdsList) {\n const activePosEventIds = activeEventIds.split(POS_EVENT_IDS_SEPARATOR);\n return posEventIdsList.findIndex((posEventIds) =>\n activePosEventIds.some((posEventId) => posEventIds.includes(posEventId))\n );\n } else if (activeViagVirtualId && viagVirtualIdsList) {\n return viagVirtualIdsList.findIndex(\n (viagId) => activeViagVirtualId === viagId\n );\n }\n }, [\n activeEventIds,\n activeViagVirtualId,\n posEventIdsList,\n viagVirtualIdsList,\n ]);\n\n const cardPropsOld = useMemo(() => {\n return posEventIdsList?.map((posEventIds, i) => {\n const accordionItemProps = eventsTransformed?.find((e) =>\n e.event.posIds.some((id) => posEventIds.includes(id.toLowerCase()))\n );\n\n return {\n event: accordionItemProps?.event ?? [],\n onClick: () => {\n setSearchParams((prev) => {\n prev.set(\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n accordionItemProps?.event.posIds.join(POS_EVENT_IDS_SEPARATOR) ??\n ''\n );\n return prev;\n });\n },\n isActive: i === selectedIndex,\n };\n }) as InventoryEventCatchUpCardProps[];\n }, [eventsTransformed, posEventIdsList, selectedIndex, setSearchParams]);\n\n const cardPropsNew = useMemo(() => {\n return viagVirtualIdsList?.map((viagVirtIds, i) => {\n const accordionItemProps = eventsTransformed?.find((e) =>\n viagVirtIds.includes(e.event.viagVirtualId.toLowerCase())\n );\n\n return {\n event: accordionItemProps?.event ?? [],\n onClick: () => {\n setSearchParams((prev) => {\n prev.set(\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n accordionItemProps?.event.viagVirtualId ?? ''\n );\n return prev;\n });\n },\n isActive: i === selectedIndex,\n isReviewed: eventLastReviewed?.[viagVirtIds] != null,\n };\n }) as InventoryEventCatchUpCardProps[];\n }, [\n eventLastReviewed,\n eventsTransformed,\n selectedIndex,\n setSearchParams,\n viagVirtualIdsList,\n ]);\n\n useEffect(() => {\n if (ref.current) {\n const childElements = ref.current.children;\n if (selectedIndex != null && childElements[selectedIndex]) {\n childElements[selectedIndex].scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'center',\n });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedIndex]);\n\n const cardProps = cardPropsNew ?? cardPropsOld;\n if (!cardProps) return;\n\n return (\n \n \n \n\n \n {cardProps.map((props, i) => (\n \n ))}\n \n\n \n {isOverflowX && }\n \n\n
    \n {selectedIndex != null && numberOfEvents && (\n {`${selectedIndex + 1} / ${numberOfEvents}`}\n )}\n
    \n \n );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { DATA_REFRESH_RATE_IN_MILLIS_SHORT } from 'src/utils/constants/constants';\nimport {\n EventSupplyMetricsTimePeriod,\n EventWebsiteMetricsTimePeriod,\n InventoryEventDashboardClient,\n InventoryMetricsQueryId,\n SellerEventDashboardMetricsTimePeriod,\n} from 'src/WebApiController';\n\nexport const useEventSupplyMetrics = (\n posEventId: string | null,\n viagogoEventId: number | null,\n isOnSaleEvent?: boolean,\n disabled?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const [timePeriod, setTimePeriod] = useState(\n EventSupplyMetricsTimePeriod.LastSevenDays\n );\n\n const queryKey = useMemo(\n () => [\n 'InventoryEventDashboardClient.getEventSupplyMetrics',\n posEventId,\n viagogoEventId,\n isOnSaleEvent,\n timePeriod,\n ],\n [posEventId, viagogoEventId, isOnSaleEvent, timePeriod]\n );\n\n const shouldQuery =\n !disabled &&\n !!activeAccountWebClientConfig.activeAccountId &&\n Boolean(!!posEventId || (isOnSaleEvent && !!viagogoEventId));\n const supplyMetricsQuery = useQuery({\n queryKey,\n queryFn: async () => {\n if (!shouldQuery) return null;\n\n const queryId: InventoryMetricsQueryId = {\n posEventId: posEventId,\n viagogoEventId: isOnSaleEvent ? viagogoEventId : null,\n };\n const supplyMetrics = await new InventoryEventDashboardClient(\n activeAccountWebClientConfig\n ).getEventSupplyMetrics(queryId, timePeriod);\n\n return supplyMetrics;\n },\n\n enabled: shouldQuery,\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_SHORT,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError(\n 'InventoryEventDashboardClient.getEventSupplyMetrics',\n error,\n {\n posEventId,\n }\n );\n },\n },\n });\n\n const onUpdateTimePeriod = useCallback(\n (timePeriod: EventSupplyMetricsTimePeriod | null) => {\n setTimePeriod(timePeriod ?? EventSupplyMetricsTimePeriod.LastSevenDays);\n },\n []\n );\n\n return {\n supplyMetrics: supplyMetricsQuery.data,\n isLoading: supplyMetricsQuery.isLoading,\n timePeriod,\n onUpdateTimePeriod,\n };\n};\n\nexport const useSellerEventMetrics = (\n posEventId: string | null,\n viagogoEventId: number | null,\n isOnSaleEvent?: boolean,\n disabled?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const [timePeriod, setTimePeriod] =\n useState(\n SellerEventDashboardMetricsTimePeriod.AllTime\n );\n\n const shouldQuery =\n !disabled &&\n !!activeAccountWebClientConfig.activeAccountId &&\n Boolean(!!posEventId || (isOnSaleEvent && !!viagogoEventId));\n\n const queryKey = useMemo(\n () => [\n 'InventoryEventDashboardClient.getSellerEventDashboardMetrics',\n posEventId,\n viagogoEventId,\n isOnSaleEvent,\n timePeriod,\n ],\n [posEventId, viagogoEventId, isOnSaleEvent, timePeriod]\n );\n\n const { isLoading, data: sellerPerformanceMetrics } = useQuery({\n queryKey,\n queryFn: async () => {\n if (!shouldQuery) return null;\n\n const queryId: InventoryMetricsQueryId = {\n posEventId: posEventId,\n viagogoEventId: isOnSaleEvent ? viagogoEventId : null,\n };\n const data = await new InventoryEventDashboardClient(\n activeAccountWebClientConfig\n ).getSellerEventDashboardMetrics(queryId, timePeriod);\n\n return data;\n },\n enabled: shouldQuery,\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_SHORT,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError(\n 'InventoryEventDashboardClient.getSellerEventDashboardMetrics',\n error,\n {\n posEventId,\n }\n );\n },\n },\n });\n\n const onUpdateTimePeriod = useCallback(\n (timePeriod: SellerEventDashboardMetricsTimePeriod | null) => {\n setTimePeriod(\n timePeriod ?? SellerEventDashboardMetricsTimePeriod.AllTime\n );\n },\n []\n );\n\n return {\n sellerPerformanceMetrics: sellerPerformanceMetrics,\n isLoading,\n timePeriod,\n onUpdateTimePeriod,\n };\n};\n\nexport const useCrossSellerEventMetrics = (\n posEventId: string | null,\n viagogoEventId: number | null,\n isOnSaleEvent?: boolean,\n disabled?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n !disabled &&\n !!activeAccountWebClientConfig.activeAccountId &&\n Boolean(!!posEventId || (isOnSaleEvent && !!viagogoEventId));\n\n const queryKey = useMemo(\n () => [\n 'InventoryEventDashboardClient.getBuyerEventDashboardMetrics',\n posEventId,\n viagogoEventId,\n isOnSaleEvent,\n ],\n [isOnSaleEvent, posEventId, viagogoEventId]\n );\n\n const { isLoading, data: eventPerformanceMetrics } = useQuery({\n queryKey,\n queryFn: async () => {\n if (!shouldQuery) return null;\n\n const queryId: InventoryMetricsQueryId = {\n posEventId: posEventId,\n viagogoEventId: isOnSaleEvent ? viagogoEventId : null,\n };\n const data = await new InventoryEventDashboardClient(\n activeAccountWebClientConfig\n ).getBuyerEventDashboardMetrics(queryId);\n\n return data;\n },\n enabled: shouldQuery,\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_SHORT,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError(\n 'InventoryEventDashboardClient.getBuyerEventDashboardMetrics',\n error,\n {\n posEventId,\n }\n );\n },\n },\n });\n\n return {\n eventPerformanceMetrics,\n isLoading,\n };\n};\n\nexport const useEventWebsiteMetrics = (\n posEventId: string | null,\n viagogoEventId: number | null,\n isOnSaleEvent?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const [timePeriod, setTimePeriod] = useState(\n EventWebsiteMetricsTimePeriod.OneHour\n );\n\n const queryKey = useMemo(\n () => [\n 'InventoryEventDashboardClient.getEventWebsiteMetrics',\n activeAccountWebClientConfig.activeAccountId,\n posEventId,\n viagogoEventId,\n isOnSaleEvent,\n timePeriod,\n ],\n [\n activeAccountWebClientConfig.activeAccountId,\n isOnSaleEvent,\n posEventId,\n timePeriod,\n viagogoEventId,\n ]\n );\n\n const shouldQuery =\n !!activeAccountWebClientConfig.activeAccountId &&\n Boolean(!!posEventId || (isOnSaleEvent && !!viagogoEventId));\n\n const { data: websiteMetrics, isLoading } = useQuery({\n queryKey,\n queryFn: async () => {\n const client = new InventoryEventDashboardClient(\n activeAccountWebClientConfig\n );\n const queryId: InventoryMetricsQueryId = {\n posEventId: posEventId,\n viagogoEventId: isOnSaleEvent ? viagogoEventId : null,\n };\n const data = await client.getEventWebsiteMetrics(queryId, timePeriod);\n\n return data;\n },\n enabled: shouldQuery,\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_SHORT,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError(\n 'InventoryEventDashboardClient.getEventWebsiteMetrics',\n error,\n {\n posEventId,\n }\n );\n },\n },\n });\n\n const onUpdateTimePeriod = useCallback(\n (timePeriod: EventWebsiteMetricsTimePeriod | null) => {\n setTimePeriod(timePeriod ?? EventWebsiteMetricsTimePeriod.OneHour);\n },\n []\n );\n\n return {\n websiteMetrics,\n timePeriod,\n onUpdateTimePeriod,\n isLoading,\n };\n};\n","import { sortBy } from 'lodash-es';\nimport { createContext, PropsWithChildren, useContext, useMemo } from 'react';\nimport { vars } from 'src/core/themes';\nimport {\n useCrossSellerEventMetrics,\n useEventSupplyMetrics,\n useEventWebsiteMetrics,\n useSellerEventMetrics,\n} from 'src/hooks/api/useEventMetrics';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getCurrentLanguage } from 'src/utils/localeUtils';\nimport { getInventorySummaryListingMetricsDisplayStrings } from 'src/utils/ticketMetricUtils';\nimport {\n EventSupplyMetricsTimePeriod,\n EventWebsiteMetricsTimePeriod,\n EventWithData,\n ListingMetrics,\n SellerEventDashboardMetricsTimePeriod,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useCatalogMetricsContext } from '../CatalogMetricsContext';\nimport { useContent } from '../ContentContext';\nimport {\n LineChartSeries,\n SellerEventPerformanceMetricsData,\n SupplyMetrics,\n TimeSeriesEntry,\n WebsiteMetrics,\n} from './EventMetricsContext.types';\n\ntype EventMetricsContextType = {\n supplyMetrics: SupplyMetrics;\n websiteMetrics: WebsiteMetrics;\n performanceMetrics: SellerEventPerformanceMetricsData; // The current seller\n};\n\nconst EventMetricsContext = createContext({\n supplyMetrics: {\n ticketCountSeries: [],\n ticketPricesSeries: [],\n currency: 'USD',\n timePeriod: EventSupplyMetricsTimePeriod.LastSevenDays,\n updateTimePeriod: (_: EventSupplyMetricsTimePeriod | null) => void 0,\n isLoading: false,\n today: '',\n },\n websiteMetrics: {\n metrics: null,\n timePeriod: EventWebsiteMetricsTimePeriod.OneHour,\n updateTimePeriod: (_: EventWebsiteMetricsTimePeriod | null) => void 0,\n isLoading: false,\n },\n performanceMetrics: {\n metrics: {\n marketShares: [],\n ticketPricePercentiles: {},\n },\n timePeriod: SellerEventDashboardMetricsTimePeriod.AllTime,\n updateTimePeriod: (_: SellerEventDashboardMetricsTimePeriod | null) =>\n void 0,\n isLoading: false,\n },\n});\n\nexport const EventMetricsProvider = ({\n children,\n event,\n isOnSaleEvent,\n}: PropsWithChildren & { event: EventWithData; isOnSaleEvent?: boolean }) => {\n const { loginContext } = useAppContext();\n const posId = event.event?.posIds[0];\n const viagId = event.event?.viagId;\n const {\n supplyMetrics,\n isLoading: isLoadingSupply,\n timePeriod: supplyTimePeriod,\n onUpdateTimePeriod: onUpdateSupplyTimePeriod,\n } = useEventSupplyMetrics(posId, viagId, isOnSaleEvent);\n\n const {\n sellerPerformanceMetrics,\n isLoading: isLoadingPerformance,\n timePeriod: performanceTimePeriod,\n onUpdateTimePeriod: onUpdatePeroformanceTimePeriod,\n } = useSellerEventMetrics(posId, viagId, isOnSaleEvent);\n\n const {\n websiteMetrics,\n isLoading: isLoadingWebsite,\n timePeriod: websiteTimePeriod,\n onUpdateTimePeriod: onUpdateWebsiteTimePeriod,\n } = useEventWebsiteMetrics(posId, viagId, isOnSaleEvent);\n\n const { eventPerformanceMetrics } = useCrossSellerEventMetrics(\n posId,\n viagId,\n isOnSaleEvent\n );\n\n const { eventMetrics: eventMetricsMap } =\n useCatalogMetricsContext();\n\n const eventMetrics = eventMetricsMap?.[event.event?.viagVirtualId ?? ''];\n const currencyCode =\n eventMetrics?.currency ??\n loginContext?.user?.activeAccount?.currencyCode ??\n 'USD';\n\n const formattedTotalMetrics = eventMetrics\n ? getInventorySummaryListingMetricsDisplayStrings(\n eventMetrics,\n currencyCode\n )\n : undefined;\n\n const currencyFormatter = new Intl.NumberFormat(getCurrentLanguage(), {\n style: 'currency',\n notation: 'compact',\n currency: currencyCode,\n });\n const formattedProfitAndLoss = currencyFormatter.format(\n eventMetrics?.pandL?.amt ?? 0\n );\n\n const ticketQuantity = useContent(ContentId.TicketQuantity);\n\n const supplyData = useMemo(() => {\n const today = new Date().toISOString();\n const ticketCountEntries: TimeSeriesEntry[] = [];\n const minEntries: TimeSeriesEntry[] = [];\n const p25Entries: TimeSeriesEntry[] = [];\n const p50Entries: TimeSeriesEntry[] = [];\n for (const metrics of sortBy(supplyMetrics, 'dateTime')) {\n const { dateTime: date, ticketCount, min, p25, p50, p75, max } = metrics;\n ticketCountEntries.push({ date, value: ticketCount });\n minEntries.push({ date, value: min });\n p25Entries.push({ date, value: p25 });\n p50Entries.push({ date, value: p50 });\n }\n\n // Add Current\n ticketCountEntries.push({\n date: today,\n value: websiteMetrics?.ticketsOnPlatform?.currentValue ?? 0,\n });\n minEntries.push({\n date: today,\n value: eventPerformanceMetrics?.atp?.min ?? 0,\n });\n p25Entries.push({\n date: today,\n value: eventPerformanceMetrics?.atp?.p25 ?? 0,\n });\n p50Entries.push({\n date: today,\n value: eventPerformanceMetrics?.atp?.p50 ?? 0,\n });\n\n const ticketCountSeries: LineChartSeries[] = [\n {\n name: ticketQuantity,\n color: vars.color.backgroundBrandActive,\n data: ticketCountEntries,\n },\n ];\n const ticketPricesSeries: LineChartSeries[] = [\n { name: 'min', data: minEntries },\n { name: 'p25', data: p25Entries },\n { name: 'p50', data: p50Entries },\n ];\n return {\n ticketCountSeries,\n ticketPricesSeries,\n today,\n currency: eventPerformanceMetrics?.atp?.currency ?? 'USD',\n };\n }, [\n websiteMetrics?.ticketsOnPlatform?.currentValue,\n eventPerformanceMetrics?.atp?.min,\n eventPerformanceMetrics?.atp?.p25,\n eventPerformanceMetrics?.atp?.p50,\n eventPerformanceMetrics?.atp?.currency,\n ticketQuantity,\n supplyMetrics,\n ]);\n\n const supplyMetricsData = useMemo(\n () => ({\n ...supplyData,\n timePeriod: supplyTimePeriod,\n updateTimePeriod: onUpdateSupplyTimePeriod,\n isLoading: isLoadingSupply,\n }),\n [isLoadingSupply, onUpdateSupplyTimePeriod, supplyData, supplyTimePeriod]\n );\n\n const websiteMetricsData = useMemo(\n () => ({\n metrics: websiteMetrics ?? null,\n timePeriod: websiteTimePeriod,\n updateTimePeriod: onUpdateWebsiteTimePeriod,\n isLoading: isLoadingWebsite,\n }),\n [\n isLoadingWebsite,\n onUpdateWebsiteTimePeriod,\n websiteMetrics,\n websiteTimePeriod,\n ]\n );\n\n const performanceMetricsData: SellerEventPerformanceMetricsData =\n useMemo(() => {\n return {\n metrics: {\n marketShares: sellerPerformanceMetrics?.mktShares ?? [],\n ticketPricePercentiles: sellerPerformanceMetrics?.atp ?? {},\n ...(formattedTotalMetrics ?? {}),\n formattedProfitAndLoss,\n },\n timePeriod: performanceTimePeriod,\n updateTimePeriod: onUpdatePeroformanceTimePeriod,\n isLoading: isLoadingPerformance,\n };\n }, [\n formattedProfitAndLoss,\n formattedTotalMetrics,\n isLoadingPerformance,\n onUpdatePeroformanceTimePeriod,\n performanceTimePeriod,\n sellerPerformanceMetrics?.atp,\n sellerPerformanceMetrics?.mktShares,\n ]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useEventMetrics = () => useContext(EventMetricsContext);\n","import Rainbow from 'rainbowvis.js';\nimport { useMemo } from 'react';\nimport { VenueMapContentProps } from 'src/components/Events/VenueMap/VenueMapContent';\nimport { getMedianScoreForSection } from 'src/utils/seatScoreUtils';\nimport { SectionScoreOverride } from 'src/WebApiController';\n\nexport const HeatMapColorSteps = 100; // The heat map will be normalized to values 1 to 100\nexport const HeatMapColors = ['780000', 'C80000', 'FF8200', 'FFFF8C'];\nconst HeatMapColorForNoScore = 'FFFFFF';\n\nexport function createGetColor(\n seatScores?: SectionScoreOverride[] | null\n): NonNullable {\n return ({ sectionId, rowId, useRowColor }) => {\n const rainbow = new Rainbow();\n rainbow.setNumberRange(1, HeatMapColorSteps);\n rainbow.setSpectrumByArray(HeatMapColors);\n\n if (seatScores?.length) {\n const scores = seatScores\n .filter((ss) => ss.score != null)\n .map((ss) => ss.score!);\n // We have seat scores\n const min = Math.min(...scores);\n const max = Math.max(...scores);\n if (max >= min) {\n const range = max - min;\n if (useRowColor && rowId) {\n const rowScore = seatScores.find((ss) => ss.rowId === rowId)?.score;\n if (rowScore != null) {\n const normalizedScore =\n (range === 0 ? rowScore : (rowScore - min) / range) *\n HeatMapColorSteps;\n const color = rainbow.colorAt(HeatMapColorSteps - normalizedScore);\n return { fill: `#${color}`, stroke: 'none' };\n }\n return { fill: 'white', stroke: 'none' };\n }\n\n const score = getMedianScoreForSection(sectionId, seatScores);\n if (score > 0) {\n const normalizedScore =\n (range === 0 ? score : (score - min) / range) * HeatMapColorSteps;\n // We want to flip the color band since we have the 0 as the high-quality\n const color = rainbow.colorAt(HeatMapColorSteps - normalizedScore);\n return { fill: `#${color}`, stroke: 'black' };\n } else {\n // We only use the rainbow when we actually have a score\n const color = HeatMapColorForNoScore;\n return { fill: `#${color}`, stroke: 'black' };\n }\n } else {\n console.log(`Max ${max} < Min ${min}.`);\n }\n }\n\n return { fill: 'white', stroke: 'black' };\n };\n}\n\nexport const useHeatMapColor = (sections?: SectionScoreOverride[] | null) => {\n const getColor = useMemo(() => createGetColor(sections), [sections]);\n return { getColor };\n};\n","import { ReactNode } from 'react';\nimport { PageSection } from 'src/components/common/PageSection';\n\nexport const HeaderWidgetContainer = ({\n title,\n action,\n}: {\n title: string;\n action?: ReactNode;\n}) => {\n return (\n \n {title}\n \n );\n};\n","import { Content } from \"src/contexts/ContentContext\";\nimport { Stack } from \"src/core/ui\";\nimport { ContentId } from \"src/utils/constants/contentId\";\nimport {\n EventSectionClearingPrices,\n SectionInfo,\n UiMoney,\n} from \"src/WebApiController\";\n\nimport * as styles from './EventSectionClearingPriceSectionDisplay.css';\nimport { applyNumberFormatting } from \"src/utils/numberFormatter\";\n\nconst SectionClearingPricePercentile = ({\n percentileLabel,\n percentileValue,\n}: {\n percentileLabel: string,\n percentileValue: UiMoney,\n }) => {\n const percentileDisplayValue =\n applyNumberFormatting({\n inputNumber: percentileValue.amt,\n currencyCode: percentileValue.currency,\n currencyDecimalDigits: 0,\n }) ?? undefined;\n return (\n \n
    \n {percentileLabel}\n
    \n
    \n {percentileDisplayValue}\n
    \n \n );\n};\n\nexport const EventSectionClearingPriceSectionDisplay = ({\n section,\n sectionClearingPricesBySectionId,\n}: {\n section: SectionInfo,\n sectionClearingPricesBySectionId: Record,\n }) => {\n const prices = sectionClearingPricesBySectionId[section.id];\n\n return (\n \n \n
    \n \n
    \n
    \n {section.name}\n
    \n
    \n {prices != null && (\n <>\n \n \n \n \n \n \n )}\n
    \n );\n};","import { CellContext, ColumnDef } from '@tanstack/react-table';\nimport { Content } from 'src/contexts/ContentContext';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableShimmeringDiv } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\nimport { sortByNumericPrefix } from 'src/utils/tableUtils';\nimport { EventSectionClearingPrices, UiMoney } from 'src/WebApiController';\n\nexport enum EventSectionClearingPricesTableColumnId {\n SectionName = 'sectionName',\n P01 = 'p01',\n P25 = 'p25',\n P50 = 'p50',\n P75 = 'p75',\n P99 = 'p99',\n}\n\nconst getMoneyCell = ({\n getValue,\n}: CellContext) => {\n const value = getValue();\n if (!value) {\n return ;\n }\n\n const displayValue =\n applyNumberFormatting({\n inputNumber: value.amt,\n currencyCode: value.currency,\n currencyDecimalDigits: 0,\n }) ?? undefined;\n\n return {displayValue};\n};\n\nexport type EventSectionClearingPricesTableColumnType =\n EventSectionClearingPrices | null;\n\nexport const EVENT_SECTION_CLEARING_PRICES_TABLE_COLUMNS_CONFIG: ColumnDef<\n EventSectionClearingPricesTableColumnType,\n any\n>[] = [\n {\n id: EventSectionClearingPricesTableColumnId.SectionName,\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data?.sectionName,\n cell: ({ getValue }) => (\n {getValue()}\n ),\n sortingFn: sortByNumericPrefix,\n },\n {\n id: EventSectionClearingPricesTableColumnId.P01,\n header: () => 1st,\n accessorFn: (data) => data?.p01,\n cell: getMoneyCell,\n },\n {\n id: EventSectionClearingPricesTableColumnId.P25,\n header: () => 25th,\n accessorFn: (data) => data?.p25,\n cell: getMoneyCell,\n },\n {\n id: EventSectionClearingPricesTableColumnId.P50,\n header: () => 50th,\n accessorFn: (data) => data?.p50,\n cell: getMoneyCell,\n },\n {\n id: EventSectionClearingPricesTableColumnId.P75,\n header: () => 75th,\n accessorFn: (data) => data?.p75,\n cell: getMoneyCell,\n },\n {\n id: EventSectionClearingPricesTableColumnId.P99,\n header: () => 99th,\n accessorFn: (data) => data?.p99,\n cell: getMoneyCell,\n },\n];\n","import {\n InitialTableState,\n PaginationState,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useMemo, useState } from 'react';\nimport { FormatContent, useContent } from 'src/contexts/ContentContext';\nimport { NoData, Table } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EventSectionClearingPrices } from 'src/WebApiController';\n\nimport {\n EVENT_SECTION_CLEARING_PRICES_TABLE_COLUMNS_CONFIG,\n EventSectionClearingPricesTableColumnId,\n EventSectionClearingPricesTableColumnType,\n} from './EventSectionClearingPricesTableColumnsConfig';\n\nconst PAGE_SIZE = 10;\n\nexport const EventSectionClearingPricesTable = ({\n sectionClearingPrices,\n initState,\n}: {\n sectionClearingPrices: EventSectionClearingPrices[] | undefined;\n initState?: InitialTableState;\n}) => {\n const sectionsText = useContent(ContentId.Sections);\n\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const [sorting, setSorting] = useState(\n initState?.sorting || [\n {\n id: EventSectionClearingPricesTableColumnId.SectionName.toString(),\n desc: false,\n },\n ]\n );\n const [{ pageIndex, pageSize }, setPagination] = useState({\n pageIndex: initState?.pagination?.pageIndex || 0,\n pageSize: PAGE_SIZE,\n });\n const pagination = useMemo(\n () => ({\n pageIndex,\n pageSize,\n }),\n [pageIndex, pageSize]\n );\n\n const options: Partial<\n TableOptions\n > = useMemo(\n () => ({\n data: sectionClearingPrices,\n columns: EVENT_SECTION_CLEARING_PRICES_TABLE_COLUMNS_CONFIG,\n state: {\n pagination,\n sorting,\n },\n onPaginationChange: setPagination,\n onSortingChange: setSorting,\n }),\n [sectionClearingPrices, pagination, sorting]\n );\n\n return sectionClearingPrices?.length ? (\n
    \n ) : (\n \n \n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useCallback, useMemo } from 'react';\nimport { EventVenueMap } from 'src/components/Events/VenueMap/EventVenueMap';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\nimport { useAutoCompMapSectionHandler } from 'src/hooks/useAutoCompMapSectionHandler';\nimport {\n HeatMapColors,\n HeatMapColorSteps,\n useHeatMapColor,\n} from 'src/hooks/useHeatMapColor';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n Event,\n EventSectionClearingPrices,\n InventoryEventDashboardClient,\n InventoryMetricsQueryId,\n SectionInfo,\n SectionScoreOverride,\n} from 'src/WebApiController';\n\nimport { HeaderWidgetContainer } from '../../HeaderWidgetContainer';\nimport { EventSectionClearingPriceSectionDisplay } from './EventSectionClearingPriceSectionDisplay';\nimport { EventSectionClearingPricesTable } from './EventSectionClearingPricesTable';\n\nconst reversedHeatMapColorsForALeftToRightLegend = [...HeatMapColors].reverse();\n\nexport const EventSectionClearingPricesWidgetsContainer = ({\n event,\n isOnSaleEvent,\n}: {\n event: Event | undefined;\n isOnSaleEvent?: boolean;\n}) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n const { isMapLoading } = useEventMapContext();\n\n const sectionClearingPricesText = useContent(ContentId.SectionClearingPrices);\n\n const posId = useMemo(() => {\n const posIds = event?.posIds;\n return posIds && posIds.length > 0 ? posIds[0] : undefined;\n }, [event]);\n const viagId = useMemo(() => event?.viagId ?? null, [event?.viagId]);\n\n const {\n selectedSectionIds,\n onSectionClicked,\n onToggleMirrors,\n onSelectedSectionsChange,\n } = useAutoCompMapSectionHandler(() => {});\n\n const {\n isPending,\n error,\n data: eventSectionClearingPrices,\n } = useQuery({\n queryKey: ['getEventSectionClearingPrices', posId, viagId, isOnSaleEvent],\n queryFn: () => {\n return tryInvokeApi(\n async () => {\n const client = new InventoryEventDashboardClient(\n activeAccountWebClientConfig\n );\n const queryId: InventoryMetricsQueryId = {\n posEventId: posId ?? null,\n viagogoEventId: isOnSaleEvent ? viagId : null,\n };\n const data = await client.getEventSectionClearingPrices(queryId);\n\n return data;\n },\n (error) => {\n trackError(\n 'InventoryEventDashboardClient.getEventSectionClearingPrices',\n error,\n event\n );\n }\n );\n },\n refetchOnWindowFocus: false,\n meta: {\n persist: false, // we do not want this thing persisted between sessions\n },\n });\n\n const [sectionClearingPricesBySectionId, sectionScoreOverrides] =\n useMemo(() => {\n const sectionClearingPricesBySectionId: Record<\n number,\n EventSectionClearingPrices\n > = {};\n const sectionScoreOverrides: SectionScoreOverride[] = [];\n for (const s of eventSectionClearingPrices ?? []) {\n if (s.sectionId) {\n sectionClearingPricesBySectionId[s.sectionId] = s;\n }\n\n sectionScoreOverrides.push({\n sectionId: s.sectionId,\n rowId: 0,\n score: s.normalizedScore,\n } as SectionScoreOverride);\n }\n return [sectionClearingPricesBySectionId, sectionScoreOverrides];\n }, [eventSectionClearingPrices]);\n\n const onSectionHovered = useCallback(\n (hoveredSection: SectionInfo) => (\n \n ),\n [sectionClearingPricesBySectionId]\n );\n\n const { getColor } = useHeatMapColor(sectionScoreOverrides);\n\n const filteredEventSectionClearingPrices = useMemo(\n () =>\n selectedSectionIds?.length > 0\n ? eventSectionClearingPrices?.filter(\n (s) => s.sectionId && selectedSectionIds.includes(s.sectionId)\n )\n : eventSectionClearingPrices,\n [eventSectionClearingPrices, selectedSectionIds]\n );\n\n return (\n <>\n \n \n {isPending || isMapLoading ? (\n \n ) : (\n <>\n
    \n \n
    \n
    \n \n
    \n \n )}\n
    \n \n );\n};\n","export enum TimeSeriesLineChartUnit {\n Number = 'number',\n Price = 'price',\n}\n\nexport type TimeSeriesLineChartUnitType =\n | {\n type: TimeSeriesLineChartUnit.Number;\n }\n | {\n type: TimeSeriesLineChartUnit.Price;\n currency: string;\n };\n","import { format } from 'date-fns';\nimport * as Highcharts from 'highcharts';\nimport HighchartsReact from 'highcharts-react-official';\nimport { useCallback, useMemo } from 'react';\nimport { UseMeasureRect } from 'react-use/lib/useMeasure';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { LineChartSeries } from 'src/contexts/EventMetricsContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { ContentPlaceholder } from 'src/core/POS/ContentPlaceholder';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\n\nimport * as styles from './TimeSeriesLineChart.css';\nimport {\n TimeSeriesLineChartUnit,\n TimeSeriesLineChartUnitType,\n} from './TimeSeriesLineChart.types';\n\nconst getXAxisRelativeLabel = (\n today: string | undefined,\n value: string | number,\n unit: 'hour' | 'day' | 'week'\n): number => {\n const current = today ? new Date(today) : new Date();\n const temp = new Date(value);\n const diffInMilli = current.getTime() - temp.getTime();\n if (unit === 'hour') {\n return Math.ceil(diffInMilli / (3600 * 1_000));\n }\n\n if (unit === 'day') {\n return Math.ceil(diffInMilli / (24 * 3600 * 1000));\n }\n\n return Math.ceil(diffInMilli / (7 * 24 * 3600 * 1000));\n};\n\nexport type TimeSeriesLineChartProps = {\n series: LineChartSeries[];\n labelUnit?: 'hour' | 'day' | 'week';\n today?: string;\n unitType?: TimeSeriesLineChartUnitType;\n container?: UseMeasureRect;\n isLoading?: boolean;\n};\n\nexport const TimeSeriesLineChart: React.FC = ({\n series,\n today,\n labelUnit = 'day',\n unitType = {\n type: TimeSeriesLineChartUnit.Number,\n },\n container,\n isLoading,\n}) => {\n const { getUiCurrency } = useLocalizationContext();\n const nowText = useContent(ContentId.Now);\n const hourText = useContent(ContentId.Hour);\n const hoursText = useContent(ContentId.Hours);\n const dayText = useContent(ContentId.Day);\n const daysText = useContent(ContentId.Days);\n const weekText = useContent(ContentId.Week);\n const weeksText = useContent(ContentId.Weeks);\n const agoText = useContent(ContentId.Ago);\n\n const { seriesData } = useMemo(() => {\n const colors = series.every(({ color }) => color != null)\n ? series.map(({ color }) => color!)\n : undefined;\n const seriesData = series.map(({ name, data }) => ({\n type: 'spline',\n name,\n data: data.map(({ date, value }) => [new Date(date).getTime(), value]),\n })) as Highcharts.SeriesSplineOptions[];\n return { colors, seriesData };\n }, [series]);\n\n const formatXAxisLabel = useCallback(\n (value: number) => {\n if (today && value === new Date(today).getTime()) {\n return nowText.toLowerCase();\n }\n const diff = getXAxisRelativeLabel(today, value, labelUnit);\n if (labelUnit === 'hour') {\n const unit = diff > 1 ? hoursText : hourText;\n return `${diff} ${unit} ${agoText}`.toLowerCase();\n }\n if (labelUnit === 'day') {\n const unit = diff > 1 ? daysText : dayText;\n return `${diff} ${unit} ${agoText}`.toLowerCase();\n }\n const unit = diff > 1 ? weeksText : weekText;\n return `${diff} ${unit} ${agoText}`.toLowerCase();\n },\n [\n agoText,\n dayText,\n daysText,\n hourText,\n hoursText,\n labelUnit,\n nowText,\n today,\n weekText,\n weeksText,\n ]\n );\n\n const formatYAxisLabel = useCallback(\n (value: number) => {\n if (unitType.type === TimeSeriesLineChartUnit.Price) {\n const currency = getUiCurrency(unitType.currency);\n const decimalDigits = value ?? 0 > 100 ? 0 : 2;\n return (\n applyNumberFormatting({\n inputNumber: value,\n currencyCode: currency.code,\n currencyDecimalDigits: decimalDigits,\n }) ?? ''\n );\n }\n return value.toLocaleString();\n },\n [getUiCurrency, unitType]\n );\n\n const formatTooltip = useCallback(\n ({ x, y }: Highcharts.Point) => {\n const formatter =\n labelUnit === 'hour'\n ? 'yyyy-MM-dd HH:mm:ss'\n : labelUnit === 'day'\n ? 'yyyy-MM-dd HH'\n : 'yyyy-MM-dd';\n const date = format(new Date(x), formatter);\n const value = y && formatYAxisLabel(y);\n return `${date}:\\n ${value}`;\n },\n [formatYAxisLabel, labelUnit]\n );\n\n const isMobile = useMatchMedia('mobile');\n const options: Highcharts.Options = useMemo(\n () => ({\n title: { text: undefined },\n chart: {\n width: container?.width ?? 600,\n height: (isMobile ? 300 : (container?.height ?? 300)) - 10,\n backgroundColor: 'transparent',\n type: 'spline',\n },\n plotOptions: {},\n tooltip: {\n headerFormat: '{series.name}
    ',\n pointFormatter: function () {\n return formatTooltip(this);\n },\n },\n xAxis: {\n type: 'datetime',\n dateTimeLabelFormats: {\n day: '%Y-%m-%d',\n month: '%m',\n year: '%Y',\n },\n labels: {\n enabled: true,\n formatter: function () {\n return formatXAxisLabel(this.value as number);\n },\n style: { color: vars.color.textPrimary },\n },\n },\n yAxis: {\n title: {\n text: undefined,\n },\n gridLineColor: 'transparent',\n labels: {\n enabled: true,\n formatter: function () {\n return formatYAxisLabel(this.value as number);\n },\n style: { color: vars.color.textPrimary },\n },\n },\n legend: { enabled: false },\n series: seriesData,\n credits: { enabled: false },\n }),\n [\n container?.height,\n container?.width,\n formatTooltip,\n formatXAxisLabel,\n formatYAxisLabel,\n seriesData,\n ]\n );\n\n return (\n \n {isLoading ? (\n \n ) : (\n \n )}\n \n );\n};\n","import clsx from 'clsx';\nimport { forwardRef, PropsWithChildren } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ContentPlaceholder } from 'src/core/POS/ContentPlaceholder';\n\nimport * as styles from './DashboardWidgetTile.css';\n\nexport type DashboardWidgetTileProps = {\n titleContentId: string | null | undefined;\n type?: 'chart' | 'ditribution' | 'default';\n} & PropsWithChildren;\n\nexport const DashboardWidgetTile = forwardRef<\n HTMLDivElement,\n DashboardWidgetTileProps\n>(({ titleContentId, type = 'default', children }, ref) => {\n return (\n \n
    \n {titleContentId ? (\n \n ) : (\n \n )}\n
    \n
    {children}
    \n \n );\n});\n\nDashboardWidgetTile.displayName = 'DashboardWidgetTile';\n","import { useMeasure } from 'react-use';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { DashboardWidgetTile } from '../DashboardWidgetTile/DashboardWidgetTile';\nimport {\n TimeSeriesLineChart,\n TimeSeriesLineChartProps,\n} from '../TimeSeriesLineChart';\n\ntype EventSupplyWidgetProps = {\n title: ContentId;\n} & TimeSeriesLineChartProps;\n\nexport const EventSupplyWidget: React.FC = ({\n title,\n ...rest\n}) => {\n const [measureRef, container] = useMeasure();\n return (\n \n \n \n );\n};\n","import { capitalize } from 'lodash-es';\nimport { useMemo } from 'react';\nimport { useContent, useFormattedContent } from 'src/contexts/ContentContext';\nimport { useEventMetrics } from 'src/contexts/EventMetricsContext/EventMetricsContext';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EventSupplyMetricsTimePeriod, Feature } from 'src/WebApiController';\n\nimport * as styles from '../../DashboardSection.css';\nimport { HeaderWidgetContainer } from '../../HeaderWidgetContainer';\nimport { TimeSeriesLineChartUnit } from '../TimeSeriesLineChart';\nimport { EventSupplyWidget } from './EventSupplyWidget';\n\nexport const EventSupplyWidgetsContainer = () => {\n const { supplyMetrics } = useEventMetrics();\n const supplyText = useContent(ContentId.Supply);\n\n const hasLastDaySupplyMetricsFeature = useUserHasFeature(\n Feature.DemandDashLastDaySupplyMetrics\n );\n\n const lastDay = useFormattedContent(FormatContentId.LastNDays, '1') as string;\n const lastSevenDays = useFormattedContent(\n FormatContentId.LastNDays,\n '7'\n ) as string;\n const lastNinetyDays = useFormattedContent(\n FormatContentId.LastNDays,\n '90'\n ) as string;\n const timePeriodValueOptionsContent: Record = {\n [EventSupplyMetricsTimePeriod.LastSevenDays]: capitalize(lastSevenDays),\n [EventSupplyMetricsTimePeriod.LastNinetyDays]: capitalize(lastNinetyDays),\n };\n\n if (hasLastDaySupplyMetricsFeature) {\n timePeriodValueOptionsContent[EventSupplyMetricsTimePeriod.LastDay] =\n capitalize(lastDay);\n }\n\n const labelUnit = useMemo(() => {\n const timePeriod = supplyMetrics.timePeriod;\n if (timePeriod === EventSupplyMetricsTimePeriod.LastNinetyDays) {\n return 'week';\n }\n if (timePeriod === EventSupplyMetricsTimePeriod.LastSevenDays) {\n return 'day';\n }\n return 'hour';\n }, [supplyMetrics.timePeriod]);\n\n return (\n <>\n \n supplyMetrics.updateTimePeriod(v as EventSupplyMetricsTimePeriod)\n }\n shape=\"none\"\n />\n }\n />\n \n \n \n \n \n );\n};\n","import { MetricTile } from 'src/components/Metrics';\nimport { ContentPlaceholder } from 'src/core/POS/ContentPlaceholder';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getCurrentLanguage } from 'src/utils/localeUtils';\nimport {\n EventMarketplaceWebsiteMetricOfInteger,\n EventMarketplaceWebsiteMetricOfUiMoney,\n} from 'src/WebApiController';\n\nimport { DashboardWidgetTile } from '../DashboardWidgetTile/DashboardWidgetTile';\n\nexport const EventWebsiteMetricWidget = ({\n titleContentId,\n metric,\n}: {\n titleContentId: ContentId;\n metric:\n | EventMarketplaceWebsiteMetricOfInteger\n | EventMarketplaceWebsiteMetricOfUiMoney\n | undefined;\n}) => {\n const MaybePercentageChangeMetric = () => {\n if (!metric) {\n return ;\n }\n\n const numberFormatOptions: Intl.NumberFormatOptions =\n typeof metric.currentValue === 'number'\n ? { style: 'decimal' }\n : {\n style: 'currency',\n notation: 'compact',\n currency: metric.currentValue.currency!,\n };\n const currentValue =\n typeof metric.currentValue === 'number'\n ? metric.currentValue\n : metric.currentValue.amt;\n const previousValue: number =\n typeof metric.previousValue === 'number'\n ? metric.previousValue\n : metric.previousValue.amt;\n\n const numberFormat = Intl.NumberFormat(\n getCurrentLanguage(),\n numberFormatOptions\n );\n const formattedCurrentValue = numberFormat.format(currentValue);\n return (\n \n \n \n );\n };\n\n return (\n \n \n \n );\n};\n","import { useContent, useFormattedContent } from 'src/contexts/ContentContext';\nimport { useEventMetrics } from 'src/contexts/EventMetricsContext';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EventWebsiteMetricsTimePeriod } from 'src/WebApiController';\n\nimport * as styles from '../../DashboardSection.css';\nimport { HeaderWidgetContainer } from '../../HeaderWidgetContainer';\nimport { EventWebsiteMetricWidget } from './EventWebsiteMetricWidget';\n\nexport const EventWebsiteMetricWidgetsContainer = () => {\n const {\n websiteMetrics: { metrics, timePeriod, updateTimePeriod },\n } = useEventMetrics();\n\n const rightNowText = useContent(ContentId.RightNow);\n const last1HourText = useContent(ContentId.Last1Hour);\n const last24HoursText = useFormattedContent(\n FormatContentId.LastNHours,\n '24'\n ) as string;\n const timePeriodValueOptionsContent = {\n [EventWebsiteMetricsTimePeriod.OneHour]: last1HourText,\n [EventWebsiteMetricsTimePeriod.OneDay]: last24HoursText,\n };\n\n return (\n <>\n \n }\n />\n \n \n \n \n \n \n \n );\n};\n","import * as Highcharts from 'highcharts';\nimport HighchartsReact from 'highcharts-react-official';\nimport { forwardRef, useMemo } from 'react';\nimport { UseMeasureRect } from 'react-use/lib/useMeasure';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ContentIds } from 'src/utils/constants/contentIdDataMap';\n\nimport * as styles from './DistributionPieChart.css';\nimport { DistributionEntry } from './DistributionPieChart.types';\n\nexport type DistributionWidgetProps = {\n titleContentId: ContentId;\n distributions: DistributionEntry[];\n container?: UseMeasureRect;\n};\n\nexport const DistributionPieChartWidget = forwardRef<\n HTMLDivElement,\n DistributionWidgetProps\n>(({ titleContentId, distributions, container }, ref) => {\n const data = useMemo(() => {\n const sum = distributions.reduce((res, { value }) => {\n res += value;\n return res;\n }, 0);\n return distributions\n .toSorted((a, b) => b.value - a.value)\n .map(({ label, value, color }) => ({\n name: label,\n y: (value * 100) / sum,\n color,\n }));\n }, [distributions]);\n\n const options: Highcharts.Options = useMemo(\n () => ({\n title: {\n text: '',\n align: 'left',\n },\n chart: {\n width: container?.width ?? 500,\n height: (container?.height ?? 300) - 30,\n backgroundColor: 'transparent',\n spacingBottom: 0,\n marginTop: 0,\n spacingTop: 0,\n marginBottom: 0,\n spacingRight: 0,\n spacingLeft: 28,\n },\n legend: {\n enabled: true,\n layout: 'horizontal',\n align: 'right',\n verticalAlign: 'middle',\n width: '65%',\n itemStyle: {\n width: 'fit-content' as unknown as never,\n fontSize: vars.typography.fontSize.sm,\n color: vars.color.textStrong,\n },\n itemHoverStyle: {\n color: vars.color.textStrongHover,\n },\n squareSymbol: false,\n symbolWidth: 20,\n symbolRadius: 4,\n },\n plotOptions: {\n pie: {\n dataLabels: {\n enabled: false,\n },\n borderWidth: 2,\n },\n series: {\n allowPointSelect: true,\n },\n },\n tooltip: {\n pointFormat: '{series.name}: {point.percentage:.1f}%',\n },\n series: [\n {\n showInLegend: true,\n type: 'pie',\n innerSize: '60%',\n name: ContentIds[titleContentId].defaultValue,\n data,\n },\n ],\n credits: {\n enabled: false,\n },\n }),\n [container?.height, container?.width, data, titleContentId]\n );\n return (\n \n \n \n );\n});\n\nDistributionPieChartWidget.displayName = 'DistributionPieChartWidget';\n","import { useMemo } from 'react';\nimport { useMeasure } from 'react-use';\nimport { MetricTile } from 'src/components/Metrics';\nimport { Content } from 'src/contexts/ContentContext';\nimport { SellerEventPerformanceMetrics } from 'src/contexts/EventMetricsContext';\nimport { ContentPlaceholder } from 'src/core/POS/ContentPlaceholder';\nimport { Stack } from 'src/core/ui';\nimport { MARKETPLACE_TO_BACKGROUND_COLOR } from 'src/utils/constants/colorMaps';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n Marketplace,\n MarketplaceMarketShare,\n TicketPricePercentiles,\n} from 'src/WebApiController';\n\nimport { DashboardWidgetTile } from '../DashboardWidgetTile/DashboardWidgetTile';\nimport {\n DistributionEntry,\n DistributionPieChartWidget,\n} from '../DistributionPieChart';\nimport * as styles from './SellerEventPerformanceMetricWidgetsContainer.css';\n\nconst TicketsListedAndSoldWidget = ({\n performanceMetrics,\n isLoading,\n}: {\n performanceMetrics: SellerEventPerformanceMetrics;\n isLoading: boolean;\n}) => {\n const progressBarValue = isLoading\n ? 0\n : (performanceMetrics.totalSoldPercentage ?? 0) * 100;\n const progressBarLabel = isLoading\n ? undefined\n : performanceMetrics.formattedTotalSoldPercentage;\n\n return (\n \n
    \n \n {progressBarLabel}\n \n {isLoading ? (\n \n ) : (\n \n \n \n )}\n
    \n
    \n );\n};\n\nconst SalesAndLiftWidget = ({\n performanceMetrics,\n isLoading,\n}: {\n performanceMetrics: SellerEventPerformanceMetrics;\n isLoading: boolean;\n}) => {\n const progressBarValue = isLoading\n ? 0\n : (performanceMetrics.totalGrossMargin ?? 0) * 100;\n const progressBarLabel = isLoading\n ? undefined\n : performanceMetrics.formattedTotalGrossMargin;\n\n return (\n \n
    \n \n {progressBarLabel}\n \n {isLoading ? (\n \n ) : (\n
    \n \n {performanceMetrics?.formattedTotalNetProceeds}\n \n
    \n \n {': ' + performanceMetrics?.formattedProfitAndLoss}\n
    \n
    \n )}\n
    \n
    \n );\n};\n\nconst TempAverageTicketPriceWidget = ({\n ticketPricePercentiles,\n isLoading,\n}: {\n ticketPricePercentiles: Partial;\n isLoading: boolean;\n}) => {\n return (\n \n {isLoading ? (\n \n ) : (\n \n {ticketPricePercentiles?.p50}\n \n )}\n \n );\n};\n\nconst ZERO_STUBHUB_MARKETPLACE_SHARE: MarketplaceMarketShare = {\n mktPlc: Marketplace.StubHub,\n share: 0,\n};\n\nconst MarketShareDistributionChart = ({\n marketShares,\n isLoading,\n}: {\n marketShares: MarketplaceMarketShare[];\n isLoading: boolean;\n}) => {\n const [measureRef, container] = useMeasure();\n\n const marketplaceSharesToRender = useMemo(() => {\n if (isLoading) return [];\n const shares = marketShares;\n if (!shares.map((ms) => ms.mktPlc).includes(Marketplace.StubHub)) {\n shares.push(ZERO_STUBHUB_MARKETPLACE_SHARE);\n }\n return shares;\n }, [isLoading, marketShares]);\n\n return (\n \n ((ms) => {\n return {\n label: ms.mktPlc,\n value: ms.share,\n color: MARKETPLACE_TO_BACKGROUND_COLOR[ms.mktPlc],\n };\n }) ?? []\n }\n container={container}\n />\n \n );\n};\n\nexport const SellerEventPerformanceMetricWidgetsBody = ({\n performanceMetrics,\n isLoading,\n}: {\n performanceMetrics: SellerEventPerformanceMetrics;\n isLoading: boolean;\n}) => {\n return (\n \n \n\n \n\n \n\n \n \n );\n};\n","import { useContent, useFormattedContent } from 'src/contexts/ContentContext';\nimport { useEventMetrics } from 'src/contexts/EventMetricsContext';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect/PosEnumSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { SellerEventDashboardMetricsTimePeriod } from 'src/WebApiController';\n\nimport * as dashboardStyles from '../../DashboardSection.css';\nimport { HeaderWidgetContainer } from '../../HeaderWidgetContainer';\nimport { SellerEventPerformanceMetricWidgetsBody } from './SellerEventPerformanceMetricWidgetsBody';\n\nexport const SellerEventPerformanceMetricWidgetsContainer = () => {\n const { performanceMetrics } = useEventMetrics();\n\n const yourStatsText = useContent(ContentId.YourStats);\n const allTimeText = useContent(ContentId.AllTime);\n const last7DaysText = useFormattedContent(\n FormatContentId.LastNDays,\n '7'\n ) as string;\n const timePeriodValueOptionsContent = {\n [SellerEventDashboardMetricsTimePeriod.Last7Days]: last7DaysText,\n [SellerEventDashboardMetricsTimePeriod.AllTime]: allTimeText,\n };\n\n return (\n <>\n \n }\n />\n\n \n \n );\n};\n","import { useMemo } from 'react';\nimport { EventMetricsProvider } from 'src/contexts/EventMetricsContext/EventMetricsContext';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { EventWithData, Feature } from 'src/WebApiController';\n\nimport * as styles from './DashboardSection.css';\nimport { EventSectionClearingPricesWidgetsContainer } from './Widgets/EventSectionClearingPrices';\nimport { EventSupplyWidgetsContainer } from './Widgets/EventSupply/EventSupplyContainer';\nimport { EventWebsiteMetricWidgetsContainer } from './Widgets/EventWebsiteMetric';\nimport { SellerEventPerformanceMetricWidgetsContainer } from './Widgets/SellerEventPerformanceMetric';\n\nexport const DashboardSection = ({\n event,\n isOnSaleEvent,\n}: {\n event: EventWithData;\n isOnSaleEvent?: boolean;\n}) => {\n const hasBlockInventorySummaryStatsFeature = useUserHasFeature(\n Feature.BlockInventorySummaryStats\n );\n\n const showYourStats = useMemo(() => {\n if (hasBlockInventorySummaryStatsFeature) {\n return false;\n }\n\n return !isOnSaleEvent;\n }, [hasBlockInventorySummaryStatsFeature, isOnSaleEvent]);\n\n return (\n \n \n {showYourStats && }\n \n {/* Removed \"Demand Factors\" until we have more data to populate here. See SUP-639\n \n */}\n \n \n \n \n );\n};\n","import clsx from 'clsx';\nimport { vars } from 'src/core/themes';\nimport { EventWithData } from 'src/WebApiController';\n\nimport { DashboardSection } from '../DashboardSection';\nimport * as styles from '../InventoryEventPage.css';\n\ntype InventoryEventContentProps = {\n accordionItemProps?: EventWithData;\n isOnSaleEvent?: boolean;\n};\n\nexport function InventoryEventDashboardSection({\n accordionItemProps,\n isOnSaleEvent,\n}: InventoryEventContentProps) {\n return (\n
    \n {accordionItemProps && (\n \n \n
    \n )}\n \n );\n}\n","import { useCallback, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport {\n ConfirmDialog,\n ConfirmDialogProps,\n} from 'src/core/interim/dialogs/ConfirmDialog';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useGetEventFullInfo } from 'src/hooks/useGetEventFullInfo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { Event, PricingClient } from 'src/WebApiController';\n\nimport { contentWrapper } from './ApplyHeatMapToAllEventsDialog.css';\n\nexport type ApplyHeatMapToAllEventsDialogProps = Omit<\n ConfirmDialogProps,\n 'headerText' | 'bodyText'\n> & {\n event: Event;\n eventIds: number[] | undefined | null;\n eventConfigScoreOverrideId: number | undefined;\n onClose: () => void;\n};\n\nexport const ApplyHeatMapToAllEventsDialog = ({\n event,\n eventIds,\n eventConfigScoreOverrideId,\n onClose,\n ...props\n}: ApplyHeatMapToAllEventsDialogProps) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { performer, venue } = useGetEventFullInfo(event);\n const [isLoading, setIsLoading] = useState(false);\n const { showErrorDialog } = useErrorBoundaryContext();\n const { mapConfigOverridesQuery } = useEventMapContext();\n\n const onApplyToAllEvents = useCallback(\n (eventIds: number[]) => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const client = new PricingClient(activeAccountWebClientConfig);\n\n eventIds!.forEach(\n async (eid) =>\n await client.setEventSeatMapScoreOverride(\n eid,\n eventConfigScoreOverrideId,\n null\n )\n );\n\n mapConfigOverridesQuery.refetch();\n onClose();\n },\n (error) => {\n showErrorDialog('PricingClient.setEventSeatMapScoreOverride', error, {\n trackErrorData: {\n eventIds,\n eventConfigScoreOverrideId,\n },\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n eventConfigScoreOverrideId,\n mapConfigOverridesQuery,\n onClose,\n showErrorDialog,\n ]\n );\n\n if (!eventIds?.length || !eventConfigScoreOverrideId) {\n return null;\n }\n\n return (\n }\n bodyText={\n
    \n {isLoading ? (\n \n ) : (\n \n )}\n
    \n }\n okText={ContentId.AllEvents}\n cancelText={ContentId.ThisEvent}\n {...props}\n onOkay={() => onApplyToAllEvents(eventIds)}\n onCancel={() => onApplyToAllEvents([event.viagId!])}\n />\n );\n};\n","import { forwardRef } from 'react';\nimport { useFormattedContent } from 'src/contexts/ContentContext';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { vars } from 'src/core/themes';\nimport { Colors } from 'src/core/themes/constants/colors';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\n\nimport * as styles from './RowRelativeScoreDisplay.css';\n\nexport interface RowRelativeScoreInfo {\n rowId?: number;\n rowName: string | null;\n ordinal: number | null;\n percentage?: number;\n isBase?: boolean;\n}\n\nexport type RowRelativeScoreDisplayProps = {\n rowRelativeScoreInfo: RowRelativeScoreInfo;\n graphWidthPercentage: number;\n};\n\nconst NEGATIVE_BACKGROUND_COLOR = Colors.fuchsia700;\nconst NEGATIVE_FOREGROUND_COLOR = '#d9317c';\nconst POSITIVE_BACKGROUND_COLOR = '#f1ecfa';\nconst POSITIVE_FOREGROUND_COLOR = '#3f2173';\nconst NEGATIVE_TEXT_COLOR = '#db3f84';\nconst POSITIVE_TEXT_COLOR = '#33b2b1';\n\nconst DARKMODE_NEGATIVE_BACKGROUND_COLOR = vars.color.backgroundPrimary;\nconst DARKMODE_POSITIVE_BACKGROUND_COLOR = DARKMODE_NEGATIVE_BACKGROUND_COLOR;\nconst DARKMODE_POSITIVE_FOREGROUND_COLOR = vars.color.backgroundHighlightHover;\n\nexport const RowRelativeScoreDisplay = forwardRef<\n HTMLDivElement,\n RowRelativeScoreDisplayProps\n>(function RowRelativeScoreDisplay(\n { rowRelativeScoreInfo, graphWidthPercentage },\n ref\n) {\n const {\n rowId,\n rowName,\n ordinal,\n percentage,\n isBase = false,\n } = rowRelativeScoreInfo;\n const { isDarkMode } = useSiteTheme();\n const rowOrdinalFormatText = useFormattedContent(\n FormatContentId.Row,\n ordinal?.toString() ?? rowId?.toString()\n );\n\n return (\n
    \n \n {rowName ?? rowOrdinalFormatText}\n
    \n \n \n \n \n \n 0 ? percentage : 0\n }%`,\n height: '100%',\n float: 'left',\n }}\n />\n \n \n 0\n ? POSITIVE_TEXT_COLOR\n : NEGATIVE_TEXT_COLOR,\n }}\n >{`${isBase ? 100 : percentage?.toFixed(1)}%`}\n \n );\n});\n","import { PaperScope } from 'paper';\n\nconst TEXT_COLOR = '#677383';\nconst AXIS_COLOR = '#B1BAC2';\nconst PATH_COLOR = '#3F1D75';\nconst INVALID_COLOR = 'red';\n\ntype HitResultType = 'handle-in' | 'handle-out' | 'segment' | 'stroke';\n\nfunction isHitResultType(type: string): type is HitResultType {\n return (\n type === 'handle-in' ||\n type === 'handle-out' ||\n type === 'segment' ||\n type === 'stroke'\n );\n}\n\n/**\n * Library agnostic point representation. This is used for serializing the bezier path.\n */\nexport type SerializedPoint = {\n x: number;\n y: number;\n};\n\n/**\n * Library agnostic segment representation. This is used for serializing the bezier path.\n */\nexport type SerializedSegment = {\n point: SerializedPoint;\n handleIn?: SerializedPoint;\n handleOut?: SerializedPoint;\n};\n\nexport type CalcOutputFn = (input: number) => number;\n\nexport class BezierGraphManager {\n spacing = 8;\n handleSize = 8;\n labelHeight = 12;\n hitTestOptions = {\n selected: true,\n segments: true,\n handles: true,\n stroke: true,\n tolerance: 4,\n };\n\n scope: paper.PaperScope;\n /**\n * The bounds of the plot relative to the plot.\n *\n * This will be at position (0, 0) with dimensions (100, 100). The values relative to the plot can\n * be thought of as the percentage of each dimension from 0 to 100.\n */\n localPlotBounds: paper.Rectangle;\n\n /**\n * Label for the action the user is about to perform.\n *\n * eg. add segment, delete segment\n */\n actionLabel: paper.PointText;\n verticalAxisLabel: paper.PointText;\n minLabel: paper.PointText;\n maxLabel: paper.PointText;\n midLabel: paper.PointText;\n fixedSegmentAmount: boolean;\n hideAxes: boolean;\n hideActionLabel: boolean;\n horizontalGraph: boolean;\n pathColor: string;\n deltaTransform:\n | undefined\n | ((segment: paper.Segment, delta: paper.Point) => paper.Point);\n axes: paper.Path;\n\n path: paper.Path;\n /**\n * Used to get the intersection with the `path` in order to get the y value for a given x.\n */\n verticalIntersector: paper.Path;\n plot: paper.Group;\n\n constructor(\n canvas: HTMLCanvasElement,\n {\n minLabel,\n maxLabel,\n midLabel,\n }: {\n minLabel: string;\n maxLabel: string;\n midLabel?: string;\n },\n fixedSegmentAmount: boolean,\n hideAxes: boolean,\n hideActionLabel: boolean,\n horizontalGraph: boolean,\n pathColor?: string,\n deltaTransform?: (\n segment: paper.Segment,\n delta: paper.Point\n ) => paper.Point,\n canManageControlPoints?: boolean\n ) {\n this.scope = new PaperScope();\n this.scope.setup(canvas);\n this.scope.settings.handleSize = this.handleSize;\n this.fixedSegmentAmount = fixedSegmentAmount;\n this.hideAxes = hideAxes;\n this.hideActionLabel = hideActionLabel;\n this.horizontalGraph = horizontalGraph;\n this.deltaTransform = deltaTransform;\n this.pathColor = pathColor ?? PATH_COLOR;\n\n new this.scope.Tool();\n const {\n Color,\n Group,\n Path,\n Point,\n PointText,\n Rectangle,\n Segment,\n project,\n view,\n tool,\n } = this.scope;\n\n project.currentStyle.fontFamily = 'Inter';\n project.currentStyle.fontSize = 12;\n project.currentStyle.fontWeight = 500;\n\n this.localPlotBounds = new Rectangle(0, 0, 100, 100);\n\n // initialize graph elements\n (() => {\n this.actionLabel = new PointText(new Point(0, 0));\n this.actionLabel.fillColor = new Color(TEXT_COLOR);\n\n this.verticalAxisLabel = new PointText(new Point(0, 0));\n this.verticalAxisLabel.rotation = -90;\n this.verticalAxisLabel.fillColor = new Color(TEXT_COLOR);\n this.verticalAxisLabel.content = 'VALUE';\n\n this.minLabel = new PointText(new Point(0, 0));\n this.minLabel.fillColor = new Color(TEXT_COLOR);\n this.minLabel.content = minLabel;\n\n this.maxLabel = new PointText(new Point(0, 0));\n this.maxLabel.fillColor = new Color(TEXT_COLOR);\n this.maxLabel.content = maxLabel;\n\n this.midLabel = new PointText(new Point(0, 0));\n this.midLabel.fillColor = new Color(TEXT_COLOR);\n this.midLabel.content = midLabel ?? '';\n\n this.axes = new Path();\n this.axes.strokeColor = new Color(AXIS_COLOR);\n })();\n\n // initialize path\n (() => {\n this.path = new Path();\n this.path.selectedColor = new Color(this.pathColor);\n this.path.strokeColor = new Color(this.pathColor);\n this.path.strokeWidth = 2;\n this.path.strokeScaling = false;\n\n this.verticalIntersector = new Path([\n new Segment(this.localPlotBounds.topLeft),\n new Segment(this.localPlotBounds.bottomLeft),\n ]);\n this.verticalIntersector.visible = false;\n\n this.plot = new Group([this.path, this.verticalIntersector]);\n this.plot.applyMatrix = false;\n })();\n\n let prevMouseMoveEv: paper.MouseEvent | undefined;\n let hitType: HitResultType | undefined;\n let segment: paper.Segment | undefined;\n let startMouseDownPoint: paper.Point | undefined;\n let startSegmentPoint: paper.Point | undefined;\n let startSegmentHandleIn: paper.Point | undefined;\n let startSegmentHandleOut: paper.Point | undefined;\n\n tool.onKeyDown = tool.onKeyUp = (ev: paper.ToolEvent) => {\n if (prevMouseMoveEv) {\n // simulate mouse move event with the modifiers changed\n view.onMouseMove?.({ ...prevMouseMoveEv, modifiers: ev.modifiers });\n }\n };\n\n view.onMouseMove = view.onMouseDown = (ev: paper.MouseEvent) => {\n if (ev.type === 'mousemove') {\n prevMouseMoveEv = ev;\n this.setActionLabel('');\n }\n const hitResult = project.hitTest(ev.point, this.hitTestOptions);\n if (!hitResult || !isHitResultType(hitResult.type)) return;\n\n if (ev.modifiers.shift) {\n const segment = hitResult.segment;\n if (!this.fixedSegmentAmount) {\n switch (hitResult.type) {\n case 'segment':\n // can't delete first or last segment\n if (segment.isFirst() || segment.isLast()) break;\n\n if (ev.type === 'mousemove') {\n this.setActionLabel('Delete');\n } else if (ev.type === 'mousedown') {\n segment.remove();\n }\n break;\n case 'handle-in':\n if (ev.type === 'mousemove') {\n this.setActionLabel('Delete');\n } else if (ev.type === 'mousedown') {\n segment.handleIn = new Point(0, 0);\n }\n break;\n case 'handle-out':\n if (ev.type === 'mousemove') {\n this.setActionLabel('Delete');\n } else if (ev.type === 'mousedown') {\n segment.handleOut = new Point(0, 0);\n }\n break;\n }\n }\n return;\n }\n\n switch (hitResult.type) {\n case 'stroke':\n if (canManageControlPoints === true && !this.fixedSegmentAmount) {\n if (ev.type === 'mousemove') {\n this.setActionLabel('Add');\n } else if (ev.type === 'mousedown') {\n hitType = 'segment';\n const localEvPoint = this.plot.globalToLocal(ev.point);\n\n segment = this.path.insert(\n hitResult.location.index + 1,\n localEvPoint\n );\n segment.selected = true;\n this.path.smooth({\n type: 'catmull-rom',\n factor: 0.5,\n from: segment.previous,\n to: segment.next,\n });\n }\n }\n break;\n case 'segment':\n case 'handle-in':\n case 'handle-out':\n if (ev.type === 'mousemove') {\n this.setActionLabel('Move');\n } else if (ev.type === 'mousedown') {\n hitType = hitResult.type;\n segment = hitResult.segment;\n startMouseDownPoint = ev.point.clone();\n startSegmentPoint = segment.point.clone();\n startSegmentHandleIn = segment.handleIn.clone();\n startSegmentHandleOut = segment.handleOut.clone();\n }\n break;\n }\n };\n\n view.onMouseDrag = (ev: paper.MouseEvent) => {\n if (!segment || !startMouseDownPoint) return;\n\n const localEvPoint = this.plot.globalToLocal(ev.point);\n const localStartMouseDownPoint =\n this.plot.globalToLocal(startMouseDownPoint);\n const localDelta = localEvPoint.subtract(localStartMouseDownPoint);\n switch (hitType) {\n case 'segment': {\n if (!startSegmentPoint) break;\n\n let pointDelta;\n if (this.deltaTransform != null) {\n pointDelta = this.deltaTransform(segment, localDelta);\n } else {\n pointDelta =\n segment.isFirst() || segment.isLast()\n ? new Point(0, localDelta.y)\n : localDelta;\n }\n\n const newPoint = startSegmentPoint.add(pointDelta);\n segment.point = newPoint;\n segment.point.x = Math.min(\n Math.max(\n this.localPlotBounds.left,\n newPoint.x,\n ...(segment.previous\n ? [\n segment.previous.point.x - segment.handleIn.x,\n segment.previous.point.x + segment.previous.handleOut.x,\n ]\n : [])\n ),\n this.localPlotBounds.right,\n ...(segment.next\n ? [\n segment.next.point.x - segment.handleOut.x,\n segment.next.point.x + segment.next.handleIn.x,\n ]\n : [])\n );\n segment.point.y = Math.min(\n Math.max(this.localPlotBounds.top, newPoint.y),\n this.localPlotBounds.bottom\n );\n break;\n }\n case 'handle-in': {\n if (!startSegmentHandleIn) break;\n\n const newPoint = startSegmentHandleIn.add(localDelta);\n const minX = segment.previous\n ? segment.previous.point.x - segment.point.x\n : Number.NEGATIVE_INFINITY;\n segment.handleIn.x = Math.min(Math.max(minX, newPoint.x), 0);\n segment.handleIn.y = newPoint.y;\n break;\n }\n case 'handle-out': {\n if (!startSegmentHandleOut) break;\n\n const newPoint = startSegmentHandleOut.add(localDelta);\n const maxX = segment.next\n ? segment.next.point.x - segment.point.x\n : Number.POSITIVE_INFINITY;\n segment.handleOut.x = Math.min(Math.max(0, newPoint.x), maxX);\n segment.handleOut.y = newPoint.y;\n break;\n }\n }\n\n if (!this.isPathValid()) {\n this.path.selectedColor = new Color(INVALID_COLOR);\n this.path.strokeColor = new Color(INVALID_COLOR);\n } else {\n this.path.selectedColor = new Color(this.pathColor);\n this.path.strokeColor = new Color(this.pathColor);\n }\n };\n\n view.onMouseUp = () => {\n prevMouseMoveEv = undefined;\n hitType = undefined;\n segment = undefined;\n startMouseDownPoint = undefined;\n startSegmentPoint = undefined;\n startSegmentHandleIn = undefined;\n startSegmentHandleOut = undefined;\n };\n\n view.onResize = (_ev: { size: paper.Size; delta: paper.Size }) => {\n this.onResize(_ev.size.width, _ev.size.height);\n };\n this.draw();\n }\n\n getViewSize() {\n return this.scope.view.viewSize;\n }\n\n getSegments() {\n return this.path.segments;\n }\n\n onResize(w: number, h: number) {\n const { view } = this.scope;\n view.viewSize.width = w;\n view.viewSize.height = h;\n this.draw();\n }\n\n private calcScreenCoordOutput(input: number) {\n // just return the output values for the ends in case the intersection algorithm doesn't work correctly\n if (input <= this.path.firstSegment.point.x) {\n return this.path.firstSegment.point.y;\n }\n if (input >= this.path.lastSegment.point.x) {\n return this.path.lastSegment.point.y;\n }\n\n this.verticalIntersector.position.x = input;\n const intersections = this.verticalIntersector.getIntersections(this.path);\n if (intersections.length !== 1) {\n throw new Error(\n `${intersections.length} intersection(s) found. Number of vertical insersections should be exactly 1.`\n );\n }\n return intersections[0].point.y;\n }\n\n /**\n * Treat `path` as a function on a cartesian plane and calculate the output value for a given\n * input value.\n * @param input Input value between 0 and 100 inclusive\n * @returns Output value between 0 and 100 inclusive\n */\n calcOutput(input: number) {\n // convert from screen coordinates to cartesian coordinates\n return 100 - this.calcScreenCoordOutput(input);\n }\n\n setActionLabel(text: string) {\n this.actionLabel.content = this.hideActionLabel ? '' : text;\n this.drawActionLabel();\n }\n\n setLabels({ minLabel, maxLabel }: { minLabel: string; maxLabel: string }) {\n this.minLabel.content = minLabel;\n this.maxLabel.content = maxLabel;\n this.drawLabels();\n }\n\n /**\n * Path is set on a 100x100 plane with screen coordinates (coords start from the top left).\n * @param inputSegments\n */\n setPath(inputSegments: SerializedSegment[]) {\n const { Segment } = this.scope;\n\n this.path.removeSegments();\n inputSegments.forEach(({ point, handleIn, handleOut }) => {\n this.path.add(new Segment(point, handleIn, handleOut));\n });\n this.path.fullySelected = true;\n }\n\n /**\n * Converts path segments into a form that can be serialized more easily and restored from.\n * @returns Array of `SerializedSegment`\n */\n exportPath(): SerializedSegment[] {\n return this.path.segments.map((segment) => {\n const { point, handleIn, handleOut } = segment;\n const serializedSegment: SerializedSegment = {\n point: { x: point.x, y: point.y },\n };\n if (segment.hasHandles()) {\n serializedSegment.handleIn = {\n x: handleIn.x,\n y: handleIn.y,\n };\n serializedSegment.handleOut = {\n x: handleOut.x,\n y: handleOut.y,\n };\n }\n return serializedSegment;\n });\n }\n\n /**\n * @param callback\n * @returns Handler function that can be passed in to `removeMouseUpEventListener`.\n */\n addMouseUpEventListener(\n callback: (\n ev: paper.MouseEvent,\n customEv: {\n calcOutput: CalcOutputFn;\n isPathValid: boolean;\n segments: paper.Segment[];\n }\n ) => void\n ) {\n const handler = (ev: paper.MouseEvent) => {\n callback(ev, {\n calcOutput: (input: number) => this.calcOutput(input),\n isPathValid: this.isPathValid(),\n segments: this.path.segments,\n });\n };\n this.scope.view.on('mouseup', handler);\n return handler;\n }\n\n /**\n * @param handler Pass in the return of `addMouseUpEventListener` in order to remove the listener.\n */\n removeMouseUpEventListener(handler: (ev: paper.MouseEvent) => void) {\n this.scope.view.off('mouseup', handler);\n }\n\n private isPathValid() {\n if (!this.path.isInside(this.localPlotBounds)) {\n return false;\n }\n\n for (const segment of this.path.segments) {\n const { previous, next, point, handleIn, handleOut } = segment;\n if (\n (previous && point.x + handleIn.x < previous.point.x) ||\n (next && point.x + handleOut.x > next.point.x)\n ) {\n return false;\n }\n }\n return true;\n }\n\n private getPlotBounds() {\n const { Rectangle, Point, view } = this.scope;\n\n const left = this.hideAxes ? 0 : this.labelHeight + this.spacing;\n const top = this.hideAxes ? 0 : this.handleSize / 2 + 1;\n const right =\n view.bounds.width - (this.hideAxes ? 0 : this.handleSize / 2 + 1);\n const bottom =\n view.bounds.height -\n (this.hideAxes ? 0 : this.spacing + this.labelHeight);\n return new Rectangle(new Point(left, top), new Point(right, bottom));\n }\n\n private draw() {\n if (!this.hideAxes) {\n this.drawAxes();\n }\n if (!this.hideActionLabel) {\n this.drawActionLabel();\n }\n if (!this.hideAxes) {\n this.drawLabels();\n }\n this.drawPlot();\n }\n\n private drawAxes() {\n const { Point } = this.scope;\n\n const plotBounds = this.getPlotBounds();\n\n this.axes.removeSegments();\n this.axes.add(new Point(plotBounds.left, plotBounds.top));\n this.axes.add(new Point(plotBounds.left, plotBounds.bottom));\n this.axes.add(new Point(plotBounds.left, plotBounds.bottom));\n this.axes.add(new Point(plotBounds.right, plotBounds.bottom));\n }\n\n private drawActionLabel() {\n const { Point, view } = this.scope;\n\n this.actionLabel.position = view.bounds.topRight.add(\n new Point(\n -(this.actionLabel.bounds.width / 2 + this.spacing),\n this.actionLabel.bounds.height / 2 + this.spacing\n )\n );\n }\n\n private drawLabels() {\n const { Point } = this.scope;\n\n const plotBounds = this.getPlotBounds();\n\n this.verticalAxisLabel.position = new Point(\n plotBounds.left - this.labelHeight / 2 - this.spacing,\n plotBounds.top + this.verticalAxisLabel.bounds.height / 2\n );\n\n const horizontalAxisLabelY =\n plotBounds.bottom + this.labelHeight / 2 + this.spacing;\n this.minLabel.position = new Point(\n plotBounds.left + this.minLabel.bounds.width / 2,\n horizontalAxisLabelY\n );\n this.maxLabel.position = new Point(\n plotBounds.right - this.maxLabel.bounds.width / 2,\n horizontalAxisLabelY\n );\n this.midLabel.position = new Point(\n plotBounds.center.x,\n horizontalAxisLabelY\n );\n }\n\n private drawPlot() {\n const { Point } = this.scope;\n const plotBounds = this.getPlotBounds();\n this.plot.matrix.reset();\n this.plot.translate(plotBounds.topLeft);\n this.plot.scale(\n plotBounds.width / 100,\n plotBounds.height / 100,\n plotBounds.topLeft\n );\n if (this.horizontalGraph) {\n this.plot.rotate(90, plotBounds.topLeft);\n this.plot.translate(\n new Point(plotBounds.bottomLeft.y - plotBounds.topLeft.y, 0)\n );\n this.plot.scale(\n plotBounds.width / plotBounds.height,\n plotBounds.height / plotBounds.width,\n plotBounds.topLeft\n );\n }\n }\n}\n","import {\n MutableRefObject,\n RefCallback,\n RefObject,\n useCallback,\n useEffect,\n useRef,\n} from 'react';\nimport { useMeasure } from 'react-use';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Feature } from 'src/WebApiController';\n\nimport * as styles from './BezierGraph.css';\nimport {\n BezierGraphManager,\n CalcOutputFn,\n SerializedSegment,\n} from './BezierGraphManager';\n\nexport type OnDragEndFn = (customEv: {\n calcOutput: CalcOutputFn;\n /**\n * Whether the path is valid.\n *\n * Will return `false` if path is out of bounds or if it has multiple y values for a single x\n * value.\n */\n isPathValid: boolean;\n segments: paper.Segment[];\n}) => void;\n\nexport type OnResizedFn = (resizedEv: {\n segments: paper.Segment[];\n height: number;\n width: number;\n}) => void;\n\nexport type BezierGraphProps = {\n segments: SerializedSegment[];\n minLabel: string;\n midLabel?: string;\n maxLabel: string;\n /**\n * If set to `true`, the number of segments will be fixed, i.e. disable add/remove segments.\n * Default is `false`.\n */\n fixedSegmentAmount?: boolean;\n hideAxes?: boolean;\n hideActionLabel?: boolean;\n horizontalGraph?: boolean;\n /**\n * Function to transform the delta when dragging a section.\n * @param segment segment being dragging\n * @param delta\n * @returns transformed delta\n */\n deltaTransform?: (segment: paper.Segment, delta: paper.Point) => paper.Point;\n pathColor?: string;\n parentRef?: RefObject;\n /**\n * This ref callback can be used to obtain the `calcOutput` function in case it is needed outside\n * of `onDragEnd` events.\n *\n * @see BezierGraphManager#calcOutput()\n *\n * Alternatively, `calcOutput` will also be passed into the `onDragEnd` callback. Both copies of\n * the function can be used interchangeably.\n * @param calcOutput\n */\n calcOutputRef?:\n | MutableRefObject\n | RefCallback;\n exportPathRef?:\n | MutableRefObject<(() => SerializedSegment[]) | undefined>\n | RefCallback<() => SerializedSegment[]>;\n onPathSetFromSegments?: (ev: { segments: paper.Segment[] }) => void;\n onDragEnd?: OnDragEndFn;\n onResized?: OnResizedFn;\n};\n\nexport function BezierGraph({\n segments,\n minLabel,\n midLabel,\n maxLabel,\n fixedSegmentAmount = false,\n hideAxes = false,\n hideActionLabel = false,\n horizontalGraph = false,\n deltaTransform,\n pathColor,\n calcOutputRef,\n exportPathRef,\n onPathSetFromSegments,\n onDragEnd,\n onResized,\n}: BezierGraphProps) {\n const canManageControlPoints = useUserHasFeature(\n Feature.BezierGraphControlPointsManager\n );\n const managerRef = useRef();\n const [viewportRef, { height: viewportHeight, width: viewportWidth }] =\n useMeasure();\n\n useEffect(() => {\n managerRef.current?.setPath(segments);\n if (onPathSetFromSegments && managerRef.current) {\n onPathSetFromSegments({ segments: managerRef.current.getSegments() });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [segments]);\n\n useEffect(() => {\n managerRef.current?.setLabels({ minLabel, maxLabel });\n }, [minLabel, maxLabel]);\n\n useEffect(() => {\n const manager = managerRef.current;\n if (onDragEnd && manager) {\n const handler = manager.addMouseUpEventListener((_ev, customEv) => {\n onDragEnd(customEv);\n });\n return () => manager.removeMouseUpEventListener(handler);\n }\n }, [onDragEnd]);\n\n const canvasRef = useCallback>((canvas) => {\n if (canvas && !managerRef.current) {\n // XXX Fix for `onResize` not being called when the canvas visibility is changed.\n // When the canvas is not visible in the browser viewport it seems like the dimensions are not\n // properly set. Therefore, we need to call `onResize` manually to properly rerender the\n // graph.\n // TODO this can be revaluated on whether it is still required if we either:\n // 1. Change to a different method for obtaining graph values without having to render the\n // canvas.\n // 2. Change to a different method of hiding the canvas in `SeatScoreConfigCard` that retains\n // the correct canvas size even when hidden.\n const observer = new MutationObserver(() => {\n const bounds = canvas.getBoundingClientRect();\n managerRef.current?.onResize(bounds.width, bounds.height);\n });\n if (canvas.parentElement) {\n // XXX Because viewport visibility is set in `SeatScoreConfigCard`, we pass the parent\n // element here. The correctness of this may change if the html structure of\n // `SeatScoreConfigCard` changes. For example, if the visibility control is moved to another\n // element, we will need to change this to that element.\n // TODO It may be good to change the observed element to an element controlled by this\n // component in the future.\n observer.observe(canvas.parentElement, { attributes: true });\n }\n\n const manager = new BezierGraphManager(\n canvas,\n {\n minLabel,\n midLabel,\n maxLabel,\n },\n fixedSegmentAmount,\n hideAxes,\n hideActionLabel,\n horizontalGraph,\n pathColor,\n deltaTransform,\n canManageControlPoints\n );\n managerRef.current = manager;\n\n if (calcOutputRef) {\n setRef(calcOutputRef, (input: number) => manager.calcOutput(input));\n }\n if (exportPathRef) {\n setRef(exportPathRef, () => manager.exportPath());\n }\n\n return () => {\n observer.disconnect();\n };\n }\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n if (viewportHeight && viewportWidth) {\n const currentViewSize = managerRef.current?.getViewSize();\n if (\n currentViewSize?.width === viewportWidth &&\n currentViewSize?.height === viewportHeight\n ) {\n return;\n }\n\n managerRef.current?.onResize(viewportWidth, viewportHeight);\n onResized?.({\n segments: managerRef.current?.getSegments() ?? [],\n height: viewportHeight,\n width: viewportWidth,\n });\n }\n }, [onResized, viewportHeight, viewportWidth]);\n\n return (\n
    \n \n
    \n );\n}\n\ntype Ref = MutableRefObject | RefCallback;\n\nfunction setRef(ref: Ref, val: T) {\n if (typeof ref === 'function') {\n ref(val);\n } else {\n ref.current = val;\n }\n}\n","import { Point } from 'paper';\nimport { MutableRefObject } from 'react';\nimport { RowRelativeScoreInfo } from 'src/components/Events/RowRelativeScoreDisplay';\nimport {\n BezierGraph,\n OnResizedFn,\n SerializedSegment,\n} from 'src/core/POS/BezierGraph';\nimport { CalcOutputFn } from 'src/core/POS/BezierGraph/BezierGraphManager';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\n\nimport * as styles from './ChangeRowScoreDialog.css';\n\nexport const GRAPH_WIDTH_PERCENTAGE = 60;\nexport const DEFAULT_ROW_GAP_PX = 10;\n// When the height of a single row is available, we want to set height of\n// gap to ${ROW_HEIGHT * ROW_GAP_RATIO} to keep whole graph proportional\nexport const ROW_GAP_RATIO = 0.42;\nconst PATH_COLOR = '#33b2b1';\nexport const INITIAL_ROW_SCORE_SEGMENTS: SerializedSegment[] = [\n { point: { x: 0.5, y: 50 } },\n {\n point: { x: 50, y: 50 },\n handleIn: { x: -10, y: 0 },\n handleOut: { x: 10, y: 0 },\n },\n { point: { x: 100 - 0.5, y: 50 } },\n];\n\nconst calcCoordinateForRow = (\n i: number,\n rowDataToEdit: RowRelativeScoreInfo[],\n rowHeight: number,\n gapHeight: number,\n totalDivHeight: number\n) => {\n let x;\n if (rowHeight > 0) {\n x = ((i * (gapHeight + rowHeight) + rowHeight / 2) / totalDivHeight) * 100;\n } else {\n x = ((i + 0.5) / rowDataToEdit.length) * 100;\n }\n x = Math.max(Math.min(100, x), 0);\n return x;\n};\n\nexport const calcBoundsForRow = (\n i: number,\n len: number,\n rowHeight: number,\n gapHeight: number,\n totalDivHeight: number\n) => {\n let xMin, xMax;\n if (rowHeight > 0) {\n xMin =\n ((i * (gapHeight + rowHeight) - 0.5 * gapHeight) / totalDivHeight) * 100;\n xMax =\n (((i + 1) * (gapHeight + rowHeight) - 0.5 * gapHeight) / totalDivHeight) *\n 100;\n } else {\n xMin = (i / len) * 100;\n xMax = ((i + 1) / len) * 100;\n }\n xMin = Math.max(0, xMin);\n xMax = Math.min(100, xMax);\n\n return {\n xMin,\n xMax,\n };\n};\n\nconst findRowIndexForX = (\n x: number,\n len: number,\n rowHeight: number,\n gapHeight: number,\n totalDivHeight: number\n) => {\n // Using for loop here to find the index of the row instead of math\n // for better readability\n for (let i = 0; i < len; i++) {\n const { xMin, xMax } = calcBoundsForRow(\n i,\n len,\n rowHeight,\n gapHeight,\n totalDivHeight\n );\n if (x >= xMin && x < xMax) {\n return i;\n }\n }\n return len - 1;\n};\n\nexport const getUpdatedRowData = (\n segments: paper.Segment[],\n calcScoreOutput: CalcOutputFn,\n rowDataToEdit: RowRelativeScoreInfo[],\n rowHeight: number,\n gapHeight: number\n) => {\n const totalDivHeight =\n rowDataToEdit.length * (rowHeight + gapHeight) - gapHeight;\n const baseRowSegmentX = segments[1] != null ? segments[1].point.x : undefined;\n const baseRowIdx =\n baseRowSegmentX != null\n ? findRowIndexForX(\n baseRowSegmentX,\n rowDataToEdit.length,\n rowHeight,\n gapHeight,\n totalDivHeight\n )\n : undefined;\n\n for (let i = 0; i < rowDataToEdit.length; i++) {\n // [0, 100] -> [-100, 100]\n const x = calcCoordinateForRow(\n i,\n rowDataToEdit,\n rowHeight,\n gapHeight,\n totalDivHeight\n );\n const percentage = calcScoreOutput(x) * 2 - 100;\n // Keeping actual value and display value consistent - both rounding to 1 decimal\n rowDataToEdit[i].percentage = roundToPrecision(percentage, 1);\n\n if (baseRowIdx != null) {\n rowDataToEdit[i].isBase = baseRowIdx === i;\n }\n if (baseRowIdx === i) {\n // Always override the base percentage to 0\n rowDataToEdit[i].percentage = 0;\n }\n }\n\n return [...rowDataToEdit];\n};\n\nexport const ChangeRowScoreBody = ({\n rowList,\n initialSegments,\n calcScoreOutputRef,\n exportScorePathRef,\n rowDataToEdit,\n gapHeight,\n onUpdateRowScores,\n onResized,\n}: {\n rowList: JSX.Element[];\n initialSegments: SerializedSegment[];\n calcScoreOutputRef: MutableRefObject;\n exportScorePathRef: MutableRefObject<(() => SerializedSegment[]) | undefined>;\n rowDataToEdit: RowRelativeScoreInfo[];\n gapHeight: number;\n onUpdateRowScores: (segments: paper.Segment[]) => void;\n onResized?: OnResizedFn;\n}) => {\n return (\n \n {rowList}\n \n {rowDataToEdit.length > 1 && (\n {\n if (segment.isFirst() || segment.isLast()) {\n // First and last point should only move horizontally\n return new Point(0, localDelta.y);\n }\n // Middle point should only move vertically\n return new Point(localDelta.x, 0);\n }}\n onDragEnd={({ isPathValid, segments }) => {\n if (isPathValid) {\n onUpdateRowScores(segments);\n }\n }}\n onResized={onResized}\n />\n )}\n \n \n );\n};\n","import { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useMeasure } from 'react-use';\nimport {\n RowRelativeScoreDisplay,\n RowRelativeScoreInfo,\n} from 'src/components/Events/RowRelativeScoreDisplay';\nimport { SerializedSegment } from 'src/core/POS/BezierGraph';\nimport { CalcOutputFn } from 'src/core/POS/BezierGraph/BezierGraphManager';\nimport { GraphSegments } from 'src/modals/EventSeatMapConfig/EventSeatMapConfigBody';\nimport {\n RowInfo,\n SectionInfo,\n SectionScoreOverride,\n} from 'src/WebApiController';\n\nimport {\n ChangeRowScoreBody,\n DEFAULT_ROW_GAP_PX,\n getUpdatedRowData,\n GRAPH_WIDTH_PERCENTAGE,\n INITIAL_ROW_SCORE_SEGMENTS,\n ROW_GAP_RATIO,\n} from './ChangeRowScoreBody';\nimport * as styles from './ChangeRowScoreDialog.css';\n\nexport const rowScoreFilter = ({ isSpeculative, ordinal }: RowInfo) =>\n !isSpeculative && ordinal != null;\n\nexport const rowScoreOverrideFilter =\n (speculativeRowIds: number[]) =>\n ({ rowId }: SectionScoreOverride) =>\n !speculativeRowIds.includes(rowId);\n\nexport type ChangeRowScoreBodyMultiSectionProps = {\n selectedSections: SectionInfo[];\n rowDataToEdit: RowRelativeScoreInfo[];\n setRowDataToEdit: React.Dispatch<\n React.SetStateAction\n >;\n configPayload: string | null;\n setConfigPayload: (configPayload: string | null) => void;\n initialSegmentsFromConfig: SerializedSegment[] | undefined;\n};\n\nexport const ChangeRowScoreBodyMultiSection = ({\n selectedSections,\n rowDataToEdit,\n setRowDataToEdit,\n configPayload,\n setConfigPayload,\n initialSegmentsFromConfig,\n}: ChangeRowScoreBodyMultiSectionProps) => {\n const [singleRowRef, { height: rowHeight }] = useMeasure();\n const gapHeight: number = useMemo(() => {\n if (!rowHeight) {\n return DEFAULT_ROW_GAP_PX;\n }\n return rowHeight * ROW_GAP_RATIO;\n }, [rowHeight]);\n\n const calcScoreOutputRef = useRef();\n const exportScorePathRef = useRef<() => SerializedSegment[]>();\n\n const onUpdateRowScores = useCallback(\n (segments: paper.Segment[]) => {\n const calcScoreOutput = calcScoreOutputRef.current;\n if (calcScoreOutput) {\n const newRowDataToEdit = getUpdatedRowData(\n segments,\n calcScoreOutput,\n rowDataToEdit,\n rowHeight,\n gapHeight\n );\n setRowDataToEdit(newRowDataToEdit);\n\n const configObj = configPayload\n ? (JSON.parse(configPayload) as GraphSegments)\n : {};\n\n configObj.scoreSegmentsBySection =\n configObj.scoreSegmentsBySection ?? {};\n configObj.activeRowIdsBySection = configObj.activeRowIdsBySection ?? {};\n configObj.baseRowIdBySection = configObj.baseRowIdBySection ?? {};\n\n selectedSections.forEach((s) => {\n const sectionId = s.id;\n const filteredRows = s.rows.filter(rowScoreFilter);\n\n configObj.scoreSegmentsBySection![sectionId.toString()] =\n exportScorePathRef.current?.();\n configObj.activeRowIdsBySection![sectionId.toString()] = rowDataToEdit\n .map(\n (r) => filteredRows.find((row) => row.ordinal === r.ordinal)?.id\n )\n .filter((r) => r !== undefined) as number[];\n\n const baseRowOrdinal = rowDataToEdit.find((r) => r.isBase)?.ordinal;\n const baseRowId = filteredRows.find(\n (r) => r.ordinal === baseRowOrdinal\n )?.id;\n configObj.baseRowIdBySection![sectionId.toString()] = baseRowId;\n });\n\n setConfigPayload(JSON.stringify(configObj));\n }\n },\n [\n configPayload,\n gapHeight,\n rowDataToEdit,\n rowHeight,\n selectedSections,\n setConfigPayload,\n setRowDataToEdit,\n ]\n );\n\n const rowList = rowDataToEdit.map((r, i) => (\n \n ));\n\n const initialSegments = useMemo(() => {\n return initialSegmentsFromConfig ?? INITIAL_ROW_SCORE_SEGMENTS;\n }, [initialSegmentsFromConfig]);\n\n const initializedRef = useRef();\n useEffect(() => {\n if (\n initialSegmentsFromConfig &&\n !initializedRef.current &&\n calcScoreOutputRef.current\n ) {\n onUpdateRowScores(initialSegmentsFromConfig as paper.Segment[]);\n initializedRef.current = true;\n }\n }, [initialSegmentsFromConfig, onUpdateRowScores]);\n\n return (\n
    \n \n
    \n );\n};\n","import { isEmpty } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useMeasure } from 'react-use';\nimport {\n RowRelativeScoreDisplay,\n RowRelativeScoreInfo,\n} from 'src/components/Events/RowRelativeScoreDisplay';\nimport { SerializedSegment } from 'src/core/POS/BezierGraph';\nimport { CalcOutputFn } from 'src/core/POS/BezierGraph/BezierGraphManager';\nimport { GraphSegments } from 'src/modals/EventSeatMapConfig/EventSeatMapConfigBody';\n\nimport {\n ChangeRowScoreBody,\n DEFAULT_ROW_GAP_PX,\n getUpdatedRowData,\n GRAPH_WIDTH_PERCENTAGE,\n INITIAL_ROW_SCORE_SEGMENTS,\n ROW_GAP_RATIO,\n} from './ChangeRowScoreBody';\nimport * as styles from './ChangeRowScoreDialog.css';\n\nexport type ChangeRowScoreBodySingleSectionProps = {\n sectionId: number;\n rowDataToEdit: RowRelativeScoreInfo[];\n setRowDataToEdit: React.Dispatch<\n React.SetStateAction\n >;\n configPayload: string | null;\n setConfigPayload: (configPayload: string | null) => void;\n};\n\nexport const ChangeRowScoreBodySingleSection = ({\n sectionId,\n rowDataToEdit,\n setRowDataToEdit,\n configPayload,\n setConfigPayload,\n}: ChangeRowScoreBodySingleSectionProps) => {\n const [singleRowRef, { height: rowHeight }] = useMeasure();\n const gapHeight: number = useMemo(() => {\n if (!rowHeight) {\n return DEFAULT_ROW_GAP_PX;\n }\n return rowHeight * ROW_GAP_RATIO;\n }, [rowHeight]);\n\n const calcScoreOutputRef = useRef();\n const exportScorePathRef = useRef<() => SerializedSegment[]>();\n const [isNumRowsChanged, setIsNumRowsChanged] = useState(false);\n\n const graphSegments = useMemo(() => {\n if (configPayload) {\n try {\n const obj = JSON.parse(configPayload) as GraphSegments;\n return obj;\n } catch (e) {\n console.warn(`Unable to parse as GraphSegments: ${configPayload}`);\n return {};\n }\n }\n }, [configPayload]);\n\n const onUpdateRowScores = useCallback(\n (segments: paper.Segment[]) => {\n const calcScoreOutput = calcScoreOutputRef.current;\n if (calcScoreOutput) {\n const newRowDataToEdit = getUpdatedRowData(\n segments,\n calcScoreOutput,\n rowDataToEdit,\n rowHeight,\n gapHeight\n );\n setRowDataToEdit(newRowDataToEdit);\n\n const configObj = { ...graphSegments };\n\n configObj.scoreSegmentsBySection =\n configObj.scoreSegmentsBySection ?? {};\n configObj.activeRowIdsBySection = configObj.activeRowIdsBySection ?? {};\n configObj.baseRowIdBySection = configObj.baseRowIdBySection ?? {};\n\n configObj.scoreSegmentsBySection[sectionId.toString()] =\n exportScorePathRef.current?.();\n configObj.activeRowIdsBySection[sectionId.toString()] =\n rowDataToEdit.map((r) => r.rowId!);\n configObj.baseRowIdBySection[sectionId.toString()] = rowDataToEdit.find(\n (r) => r.isBase\n )?.rowId;\n\n setConfigPayload(JSON.stringify(configObj));\n }\n },\n [\n gapHeight,\n graphSegments,\n rowDataToEdit,\n rowHeight,\n sectionId,\n setConfigPayload,\n setRowDataToEdit,\n ]\n );\n\n const rowList = rowDataToEdit.map((r, i) => (\n \n ));\n\n const initializedRef = useRef();\n useEffect(() => {\n const segmentsConfig = graphSegments?.scoreSegmentsBySection?.[sectionId];\n if (\n !isEmpty(segmentsConfig) &&\n !initializedRef.current &&\n calcScoreOutputRef.current\n ) {\n onUpdateRowScores(segmentsConfig as paper.Segment[]);\n initializedRef.current = true;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(graphSegments), sectionId, onUpdateRowScores]);\n\n return (\n
    \n {\n if (isNumRowsChanged) {\n setIsNumRowsChanged(false);\n onUpdateRowScores(segments);\n }\n }}\n />\n
    \n );\n};\n","import { max } from 'lodash-es';\nimport {\n ComponentProps,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { RowRelativeScoreInfo } from 'src/components/Events/RowRelativeScoreDisplay';\nimport { Content } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getRowRepresentingSectionMedianScore } from 'src/utils/seatScoreUtils';\nimport { compareByNumericPrefix } from 'src/utils/tableUtils';\nimport { SectionInfo, SectionScoreOverride } from 'src/WebApiController';\n\nimport { rowScoreOverrideFilter } from './ChangeRowScoreBodyMultiSection';\nimport { ChangeRowScoreBodySingleSection } from './ChangeRowScoreBodySingleSection';\nimport * as styles from './ChangeRowScoreDialog.css';\n\nexport type ChangeRowScoreDialogProps = ComponentProps & {\n selectedSection: SectionInfo | null;\n configPayload: string | null;\n scoreOverrides?: SectionScoreOverride[] | null;\n onOkay: (\n newScoreOverrides: SectionScoreOverride[],\n newConfigPayload: string | null\n ) => void;\n onCancel: () => void;\n};\n\nexport const findScoreOverrideByRowId = (\n scoreOverrides: SectionScoreOverride[] | null | undefined,\n rowId: number | undefined\n): SectionScoreOverride | undefined => {\n return scoreOverrides?.find((s) => s.rowId === rowId);\n};\n\nconst sortRowData = (rowDataArr: RowRelativeScoreInfo[]) => {\n const ordinalAvailable = rowDataArr.every((r) => r.ordinal != null);\n const nameAvailable = rowDataArr.every((r) => r.rowName != null);\n if (ordinalAvailable) {\n rowDataArr = rowDataArr.toSorted(\n (a, b) => (a.ordinal ?? 0) - (b.ordinal ?? 0)\n );\n } else if (nameAvailable) {\n rowDataArr = rowDataArr.toSorted((a, b) =>\n compareByNumericPrefix(a.rowName, b.rowName)\n );\n } else {\n rowDataArr = rowDataArr.toSorted((a, b) => (a.rowId ?? 0) - (b.rowId ?? 0));\n }\n return rowDataArr;\n};\n\nexport function ChangeRowScoreDialog({\n selectedSection,\n configPayload,\n scoreOverrides,\n onOkay,\n onCancel,\n ...rest\n}: ChangeRowScoreDialogProps) {\n const [newConfigPayload, setNewConfigPayload] = useState(configPayload);\n const [rowDataToEdit, setRowDataToEdit] = useState(\n []\n );\n\n const sectionScoreOverride = useMemo(\n () =>\n scoreOverrides?.filter(\n ({ sectionId }) => sectionId === selectedSection?.id\n ),\n [scoreOverrides, selectedSection?.id]\n );\n\n const rowToScore = useMemo(\n () =>\n (scoreOverrides ?? [])\n .filter((s) => s.sectionId === selectedSection?.id)\n .reduce(\n (map, override) => {\n map[override.rowId] = override.score;\n return map;\n },\n {} as Record\n ),\n [scoreOverrides, selectedSection]\n );\n\n const rows = useMemo(\n () =>\n sectionScoreOverride?.filter(\n rowScoreOverrideFilter([selectedSection?.specRow?.id ?? 0])\n ) ?? [],\n [sectionScoreOverride, selectedSection?.specRow?.id]\n );\n\n useEffect(() => {\n setNewConfigPayload(configPayload);\n }, [configPayload]);\n\n useEffect(() => {\n if (!selectedSection?.id) {\n setRowDataToEdit([]);\n return;\n }\n\n // Initialize the row items\n const medianRowId = getRowRepresentingSectionMedianScore(\n selectedSection.id,\n scoreOverrides ?? []\n )?.rowId;\n const baseRowScore = medianRowId ? rowToScore[medianRowId] : 0;\n\n const rowScores = rows.map((row) => {\n const isBaseRow = row.rowId === medianRowId;\n const existingRowScore = rowToScore[row.rowId];\n const percentage =\n existingRowScore && baseRowScore && baseRowScore !== 1\n ? (existingRowScore / baseRowScore - 1) * 100\n : 0;\n\n return {\n rowId: row.rowId,\n rowName: row.rowName,\n ordinal: row.rowOrdinal,\n isBaseRow,\n percentage,\n } as RowRelativeScoreInfo;\n });\n sortRowData(rowScores);\n\n const rowData = [];\n for (let i = 0; i < rowScores.length; i++) {\n rowData.push(rowScores[i]);\n }\n setRowDataToEdit(rowData);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedSection?.id, JSON.stringify(rows), JSON.stringify(rowToScore)]);\n\n const onSubmit = useCallback(() => {\n const newScoreOverrides = [...(scoreOverrides ?? [])];\n const newSectionScoreOverrides = newScoreOverrides.filter(\n (s) => s.sectionId === selectedSection?.id\n );\n\n const baseRow = rowDataToEdit.find((r) => r.isBase);\n if (!baseRow?.ordinal || !baseRow.rowId) {\n onOkay(newScoreOverrides, newConfigPayload);\n return;\n }\n\n const { rowId: baseRowId, ordinal: baseOrdinal } = baseRow;\n const baseRowScore = rowToScore[baseRowId];\n\n // all work based off this, so if this doesn't exist, nothing to do\n if (baseRowScore == null) {\n onOkay(newScoreOverrides, newConfigPayload);\n return;\n }\n\n const ordinals = (sectionScoreOverride || [])\n .filter(({ rowOrdinal }) => rowOrdinal && rowOrdinal <= baseOrdinal)\n .map(({ rowOrdinal }) => rowOrdinal);\n // Default to the max ordinal\n const sanitizedOrdinal = ordinals.includes(baseOrdinal)\n ? baseOrdinal\n : max(ordinals);\n const baseRowPercentage =\n rowDataToEdit.find(({ ordinal }) => ordinal === sanitizedOrdinal)\n ?.percentage ?? 0;\n\n for (let i = 0; i < rowDataToEdit.length; i++) {\n const rowId = rowDataToEdit[i].rowId;\n const rowScoreOverrideToEdit = newSectionScoreOverrides.find(\n (s) => s.rowId === rowId\n );\n if (\n rowScoreOverrideToEdit &&\n !rowDataToEdit[i].isBase &&\n rowDataToEdit[i]?.percentage != null\n ) {\n rowScoreOverrideToEdit.score =\n ((100 + (rowDataToEdit[i]?.percentage ?? 0)) /\n (100.0 + baseRowPercentage)) *\n baseRowScore;\n }\n }\n\n // We need to ensure all the speculative rows also set with the score (i'll be the base row score)\n newSectionScoreOverrides\n .filter((r) => r.rowId === selectedSection?.specRow?.id)\n .forEach((r) => (r.score = baseRowScore));\n\n onOkay(newScoreOverrides, newConfigPayload);\n }, [\n newConfigPayload,\n onOkay,\n rowDataToEdit,\n rowToScore,\n scoreOverrides,\n sectionScoreOverride,\n selectedSection?.id,\n selectedSection?.specRow?.id,\n ]);\n\n if (!selectedSection) {\n return null;\n }\n\n return (\n }\n onKeyUp={(e) => {\n if (e.key === 'Enter') {\n onSubmit();\n }\n }}\n footer={\n <>\n \n \n \n }\n onCancel={onCancel}\n >\n
    \n
    \n
    \n \n
    \n {selectedSection.name}\n
    \n
    \n
    \n
    \n \n
    \n
    \n \n );\n}\n","import { groupBy, isEqual, size } from 'lodash-es';\nimport {\n ComponentProps,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { RowRelativeScoreInfo } from 'src/components/Events/RowRelativeScoreDisplay';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Button } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { GraphSegments } from 'src/modals/EventSeatMapConfig/EventSeatMapConfigBody';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionInfo, SectionScoreOverride } from 'src/WebApiController';\n\nimport {\n ChangeRowScoreBodyMultiSection,\n rowScoreFilter,\n rowScoreOverrideFilter,\n} from './ChangeRowScoreBodyMultiSection';\nimport { findScoreOverrideByRowId } from './ChangeRowScoreDialog';\nimport * as styles from './ChangeRowScoreDialog.css';\n\nexport type ChangeRowScoreDialogMultiSectionProps = ComponentProps<\n typeof RSModal\n> & {\n selectedSections: SectionInfo[];\n scoreOverrides?: SectionScoreOverride[] | null;\n configPayload: string | null;\n onOkay: (\n newScoreOverrides: SectionScoreOverride[],\n newConfigPayload: string | null\n ) => void;\n onCancel: () => void;\n};\n\nexport function ChangeRowScoreDialogMultiSection({\n selectedSections,\n scoreOverrides,\n configPayload,\n onOkay,\n onCancel,\n ...rest\n}: ChangeRowScoreDialogMultiSectionProps) {\n const confirmDialog = useBasicDialog();\n\n const [newConfigPayload, setNewConfigPayload] = useState(configPayload);\n\n const [rowDataToEdit, setRowDataToEdit] = useState(\n []\n );\n const selectedSectionIds = useMemo(\n () => selectedSections.map(({ id }) => id),\n [selectedSections]\n );\n const speculativeRowIds = useMemo(\n () =>\n selectedSections\n .filter(({ specRow }) => !!specRow)\n .map(({ specRow }) => specRow!.id),\n [selectedSections]\n );\n\n const sectionScoreOverride = useMemo(\n () => groupBy(scoreOverrides, 'sectionId'),\n [scoreOverrides]\n );\n\n // Reset the initial row data, mainly the size, the default value will be reset\n // from initialSegmentsFromConfig\n useEffect(() => {\n let maxRowNumber = 0;\n for (const section of selectedSections) {\n const eligibleRows = section.rows.filter(rowScoreFilter)?.length ?? 0;\n maxRowNumber = Math.max(eligibleRows, maxRowNumber);\n }\n for (const sectionId of selectedSectionIds) {\n const eligibleRows =\n sectionScoreOverride[sectionId]?.filter(\n rowScoreOverrideFilter(speculativeRowIds)\n )?.length ?? 0;\n maxRowNumber = Math.max(eligibleRows, maxRowNumber);\n }\n\n const allRowData: RowRelativeScoreInfo[] = [];\n for (let i = 0; i < maxRowNumber; i++) {\n // here RowRelativeScoreInfo represents a row in a section\n allRowData.push({\n ordinal: i,\n isBase: i === maxRowNumber / 2,\n percentage: 0,\n } as RowRelativeScoreInfo);\n }\n setRowDataToEdit(allRowData);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedSections.length, setRowDataToEdit]);\n\n const configPayloadObj = useMemo(() => {\n if (configPayload) {\n let obj: GraphSegments | undefined = undefined;\n try {\n obj = JSON.parse(configPayload) as GraphSegments;\n } catch (e) {\n console.warn(`Unable to parse as GraphSegments: ${configPayload}`);\n }\n\n if (obj) {\n return obj;\n }\n }\n }, [configPayload]);\n\n // Should be true if all selected sections are configured together at once\n const initialSegmentsFromConfig = useMemo(() => {\n if (!configPayloadObj?.scoreSegmentsBySection) {\n return undefined;\n }\n\n const selectedScoreSegments = Object.entries(\n configPayloadObj.scoreSegmentsBySection\n )\n .filter(([key, _]) => selectedSectionIds.includes(parseInt(key)))\n .map(([_, value]) => value);\n\n if (size(selectedScoreSegments) < 1) {\n return undefined;\n }\n\n const common = selectedScoreSegments[0];\n if (selectedScoreSegments.every((section) => isEqual(section, common))) {\n return common;\n }\n return undefined;\n }, [configPayloadObj, selectedSectionIds]);\n\n const onSubmit = useCallback(() => {\n const newScoreOverrides = [...(scoreOverrides ?? [])];\n const newSectionScoreOverrides = newScoreOverrides.filter((s) =>\n selectedSections.some((ss) => ss.id === s.sectionId)\n );\n const baseRowIndex = rowDataToEdit.findIndex((r) => r.isBase);\n if (baseRowIndex < 0) {\n onOkay(newScoreOverrides, newConfigPayload);\n return;\n }\n\n for (const sectionId of selectedSectionIds) {\n const sectionRows = (sectionScoreOverride[sectionId] ?? [])\n .filter(rowScoreOverrideFilter(speculativeRowIds))\n .toSorted((a, b) => (a.rowOrdinal ?? 0) - (b.rowOrdinal ?? 0));\n const sanitizedIndex = Math.min(baseRowIndex, sectionRows.length - 1);\n\n const baseRowId = sectionRows[sanitizedIndex]?.rowId;\n const baseRowScore = findScoreOverrideByRowId(\n newSectionScoreOverrides,\n baseRowId\n )?.score;\n\n const baseRowPercentage = rowDataToEdit[sanitizedIndex]?.percentage ?? 0;\n\n if (baseRowScore) {\n // all work based off this, so if this doesn't exist, nothing to do\n for (let i = 0; i < rowDataToEdit.length; i++) {\n const rowId = sectionRows[i]?.rowId;\n\n const rowScoreOverrideToEdit = newSectionScoreOverrides.find(\n (s) => s.rowId === rowId\n );\n if (\n rowScoreOverrideToEdit &&\n !rowDataToEdit[i].isBase &&\n rowDataToEdit[i]?.percentage != null\n ) {\n rowScoreOverrideToEdit.score =\n ((100 + (rowDataToEdit[i]?.percentage ?? 0)) /\n (100.0 + baseRowPercentage)) *\n baseRowScore;\n }\n }\n\n // We need to ensure all the speculative rows also set with the score (it'll be the base row score)\n newSectionScoreOverrides\n .filter((r) => speculativeRowIds.includes(r.rowId))\n .forEach((r) => (r.score = baseRowScore));\n }\n\n onOkay(newScoreOverrides, newConfigPayload);\n }\n }, [\n newConfigPayload,\n onOkay,\n rowDataToEdit,\n scoreOverrides,\n sectionScoreOverride,\n selectedSectionIds,\n selectedSections,\n speculativeRowIds,\n ]);\n\n const sectionNameWithEllipsis = useMemo(() => {\n const maxSectionsToShow = 5;\n const sectionNames = selectedSections.map((s) => s.name);\n if (sectionNames.length > maxSectionsToShow) {\n return `${sectionNames.slice(0, maxSectionsToShow).join(', ')}...`;\n }\n return sectionNames.join(', ');\n }, [selectedSections]);\n\n if (!selectedSections.length) {\n return null;\n }\n\n return (\n <>\n }\n onKeyUp={(e) => e.key === 'Enter' && confirmDialog.launchDialog()}\n footer={\n <>\n \n \n \n }\n onCancel={onCancel}\n >\n
    \n
    \n
    \n \n s.name).join(', ')}\n >\n {sectionNameWithEllipsis}\n
    \n
    \n
    \n
    \n \n
    \n \n \n }\n bodyText={}\n onOkay={() => {\n onSubmit();\n confirmDialog.closeDialog();\n }}\n onCancel={() => confirmDialog.closeDialog()}\n />\n \n );\n}\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { isEmpty } from 'lodash-es';\nimport {\n ChangeEvent,\n ComponentProps,\n KeyboardEvent,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { Content } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { PillList } from 'src/core/ui/PillList';\nimport { PillItemProps } from 'src/core/ui/PillList/PillItem';\nimport { CheckIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport type AddSectionRowsDialogProps = ComponentProps & {\n onClose: () => void;\n onAddRows: (rows: string[]) => void;\n};\n\nexport const AddSectionRowsDialog: React.FC = ({\n onClose,\n onAddRows,\n ...rest\n}) => {\n const [rowInput, setRowInput] = useState('');\n const [rows, setRows] = useState([]);\n\n const pills = useMemo(() => {\n return rows.map((row) => ({ value: row, display: row }) as PillItemProps);\n }, [rows]);\n\n const onSubmitChange = useCallback(() => {\n onAddRows(rows);\n onClose();\n }, [rows, onAddRows]);\n\n const onRowInputChange = useCallback(\n (event: ChangeEvent) => {\n event.stopPropagation();\n setRowInput(event.target.value);\n },\n []\n );\n\n const onAddRow = useCallback(() => {\n if (!isEmpty(rowInput)) {\n setRows((prev) => {\n if (!prev.includes(rowInput)) {\n return [...prev, rowInput];\n }\n return prev;\n });\n setRowInput('');\n }\n }, [rowInput, setRows, setRowInput]);\n\n const onKeyUp = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n event.stopPropagation();\n if (!isEmpty(rowInput)) {\n setRows((prev) => {\n if (!prev.includes(rowInput)) {\n return [...prev, rowInput];\n }\n return prev;\n });\n setRowInput('');\n }\n }\n },\n [rowInput, setRows, setRowInput]\n );\n\n return (\n }\n footer={\n \n \n \n \n }\n onCancel={onClose}\n >\n \n )\n }\n />\n {rows.length > 0 && (\n \n setRows((prev) => prev.filter((v) => v !== value))\n }\n direction={'row'}\n flexWrap={'grow'}\n />\n )}\n \n );\n};\n","import { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { Cell, flexRender } from '@tanstack/react-table';\nimport { CSSProperties, forwardRef, HTMLAttributes } from 'react';\nimport { vars } from 'src/core/themes';\n\nimport { SectionRowColumnType } from './config/SectionRowTableConfig';\nimport { EnrichedScoreOrverride } from './SectionRowTableDialog.hooks';\n\ntype SortableCellProps = {\n cell: Cell;\n isLargeDesktop?: boolean;\n};\n\nexport const SortableCell: React.FC = ({ cell }) => {\n const {\n isDragging,\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n } = useSortable({ id: cell.id });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition: transition || undefined,\n paddingTop: vars.spacing['sm'],\n paddingBottom: vars.spacing['sm'],\n color: ((cell.getValue() ?? {}) as EnrichedScoreOrverride).isNew\n ? vars.color.textWarning\n : undefined,\n };\n\n return (\n \n );\n};\n\ntype CellItemProps = HTMLAttributes & {\n cell: Cell;\n draggable?: boolean;\n isDragging?: boolean;\n};\n\n// eslint-disable-next-line react/display-name\nexport const CellItem = forwardRef(\n ({ cell, draggable = true, isDragging, style, ...props }, ref) => {\n const inlineStyles: CSSProperties = {\n opacity: isDragging ? '0.5' : '1',\n transformOrigin: '50% 50%',\n cursor: draggable ? (isDragging ? 'grabbing' : 'grab') : undefined,\n ...style,\n };\n\n return (\n
    \n );\n }\n);\n","import { ColumnDef } from '@tanstack/react-table';\nimport { Content } from 'src/contexts/ContentContext';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from '../SectionRowTableDialog.css';\nimport { EnrichedScoreOrverride } from '../SectionRowTableDialog.hooks';\n\nexport const indexFromCellId = (id?: string) =>\n parseInt(id?.split('_')?.[1] || '0');\n\nexport type SectionRowColumnType = {\n section: string;\n sectionId: number;\n rows: EnrichedScoreOrverride[];\n unordered: EnrichedScoreOrverride[];\n};\n\nconst ordinalWithSuffix = (num: number) => {\n const remaining = num % 10,\n hundreds = num % 100;\n if (remaining === 1 && hundreds !== 11) {\n return num + 'st';\n }\n if (remaining === 2 && hundreds !== 12) {\n return num + 'nd';\n }\n if (remaining === 3 && hundreds !== 13) {\n return num + 'rd';\n }\n return num + 'th';\n};\n\nconst getRowColumns = (maxRowCount: number) => {\n const columns: ColumnDef[] = [];\n for (let index = 1; index <= maxRowCount; index++) {\n columns.push({\n id: `${index}`,\n header: () => (\n \n {ordinalWithSuffix(index)}\n \n ),\n accessorFn: (data) => data?.rows?.[index - 1],\n cell: ({ getValue, row: { original } }) => {\n const row = getValue() as EnrichedScoreOrverride | undefined;\n if (!original) {\n return ;\n }\n const rowName = row?.rowName ?? null;\n return (\n \n {rowName}\n \n );\n },\n enableSorting: false,\n });\n }\n\n return columns;\n};\n\nexport const getSectionColumns = (\n rowCount: number\n): ColumnDef[] => {\n return [\n {\n id: 'section',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data.section,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as string;\n if (!original) {\n return ;\n }\n return (\n \n {value}\n \n );\n },\n enableSorting: false,\n } as ColumnDef,\n ...getRowColumns(rowCount),\n {\n id: 'unordered',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data?.unordered,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as EnrichedScoreOrverride[];\n if (!original) {\n return ;\n }\n const display = value.map(({ rowName }) => rowName).join(',');\n return (\n \n {display}\n \n );\n },\n enableSorting: false,\n } as ColumnDef,\n ];\n};\n","import { Row, RowData } from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport { useRef } from 'react';\nimport { ItemProps } from 'react-virtuoso';\nimport * as styles from 'src/tables/Table/Table.css';\n\nimport { SectionRowTableContext } from './SectionRowTable';\n\ntype TableContextStyle = {\n context?: SectionRowTableContext | undefined;\n};\n\nexport type SectionRowTableRowProps = ItemProps> &\n TableContextStyle;\n\nexport const SectionRowTableRow = ({\n context,\n children,\n ...props\n}: SectionRowTableRowProps) => {\n const { tableRowStyle, onRowSelect } = context || {};\n const inputRef = useRef(null);\n\n const rowProps = {\n className: clsx(styles.tableRow, {\n [styles.isSelectedRow]: props.item.getIsSelected(),\n }),\n style: {\n ...tableRowStyle,\n width: '99%',\n },\n ref: inputRef,\n key: props.item.id,\n onClick: (e: React.MouseEvent) => {\n e.stopPropagation();\n onRowSelect?.(props.item);\n },\n ...props,\n };\n\n return {children};\n};\n","import {\n closestCenter,\n DndContext,\n DragEndEvent,\n DragOverlay,\n DragStartEvent,\n MouseSensor,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport { rectSortingStrategy, SortableContext } from '@dnd-kit/sortable';\nimport {\n Cell,\n getCoreRowModel,\n Row,\n RowData,\n Table as ReactTable,\n TableOptions,\n useReactTable,\n} from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport React, { useCallback, useRef, useState } from 'react';\nimport { State } from 'react-use/lib/useScroll';\nimport { TableVirtuoso } from 'react-virtuoso';\nimport { ColumnHeader } from 'src/tables/Table/components';\nimport { PosVirtuosoTable } from 'src/tables/Table/PosVirtuosoTableComponent/PosVirtuosoTable';\nimport { PosVirtuosoTableContext } from 'src/tables/Table/PosVirtuosoTableComponent/PosVirtuosoTableContext';\nimport { PosVirtuosoTableHead } from 'src/tables/Table/PosVirtuosoTableComponent/PosVirtuosoTableHead';\nimport * as styles from 'src/tables/Table/Table.css';\nimport { itemSizeDefault } from 'src/tables/Table/Table.utils';\nimport { SectionType } from 'src/utils/types/sectionType';\n\nimport { CellItem, SortableCell } from '../CellItem';\nimport {\n indexFromCellId,\n SectionRowColumnType,\n} from '../config/SectionRowTableConfig';\nimport { EnrichedScoreOrverride } from '../SectionRowTableDialog.hooks';\nimport { SectionRowTableRow } from './SectionRowTableRow';\n\nconst virtuosoTableOverscan = { main: 500, reverse: 500 };\nconst virtuosoTableStyle = { width: '100%', height: '100%' };\n\nexport type SectionRowTableContext =\n PosVirtuosoTableContext & {\n onRowSelect?: (row: Row) => void;\n };\n\nexport interface VirtuosoScrollEvent {\n scrollState: State;\n element: HTMLElement;\n}\n\ndeclare module '@tanstack/table-core' {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ColumnMeta {\n paddingLeft?: string;\n paddingLeftLargeDesktop?: string;\n styleOverrides?: React.CSSProperties;\n }\n\n interface TableMeta {\n summaryData?: TData | null | undefined;\n sectionType?: SectionType;\n rowSupportsAccordion?: boolean;\n }\n}\n\nexport type TableLayout = 'fixed' | 'auto';\n\nexport type PosTableData = RowData;\n\nexport type TableProps = {\n tableLayout?: TableLayout;\n options: Partial>;\n className?: string;\n onSwapCell: (\n sectionId: number,\n from: EnrichedScoreOrverride,\n to: EnrichedScoreOrverride\n ) => void;\n onSelectSections: (sectionIds: number[]) => void;\n canCustomRows: boolean;\n};\n\nexport const SectionRowTable = ({\n tableLayout,\n options,\n className,\n onSwapCell,\n onSelectSections,\n canCustomRows,\n}: TableProps) => {\n const tableWrapperRef = useRef(null);\n const sensors = useSensors(useSensor(MouseSensor));\n const [activeId, setActiveId] = useState(null);\n\n const table: ReactTable = useReactTable({\n getCoreRowModel: getCoreRowModel(),\n groupedColumnMode: false,\n getRowId: (row, index) => row?.sectionId ?? index,\n ...options,\n state: {\n ...options.state,\n },\n } as TableOptions);\n\n const tableRows = table.getRowModel().rows;\n\n const handleDragStart = useCallback((event: DragStartEvent) => {\n setActiveId(event.active.id + '');\n }, []);\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent, cells: Cell[]) => {\n const { active, over } = event;\n\n const activeIndex = indexFromCellId(active.id + '');\n const overIndex = indexFromCellId(over?.id + '');\n\n if (activeIndex !== overIndex && activeIndex < cells.length) {\n const activeCell = cells[activeIndex];\n const overCell = cells[overIndex];\n const activeRow = activeCell.getValue() as EnrichedScoreOrverride;\n const overRow = overCell?.getValue() as\n | EnrichedScoreOrverride\n | undefined;\n\n if (activeRow && overRow) {\n onSwapCell(activeRow.sectionId, activeRow, overRow);\n }\n }\n\n setActiveId(null);\n },\n [onSwapCell]\n );\n const handleDragCancel = useCallback(() => {\n setActiveId(null);\n }, []);\n\n const renderRowContent = useCallback(\n (row: Row) => {\n const items = row.getVisibleCells();\n return (\n handleDragEnd(event, items)}\n onDragCancel={handleDragCancel}\n >\n {items.length && }\n \n {items.slice(1, items.length - 1).map((cell) => {\n if (cell.getValue() == null || !canCustomRows) {\n return ;\n }\n return ;\n })}\n \n {items.length && (\n \n )}\n \n {activeId ? (\n id === activeId)!} />\n ) : null}\n \n \n );\n },\n [\n activeId,\n canCustomRows,\n handleDragCancel,\n handleDragEnd,\n handleDragStart,\n sensors,\n ]\n );\n\n const onRowSelect = useCallback(\n (row: Row) => {\n if (!canCustomRows) {\n return;\n }\n table.setRowSelection((prev) => {\n const rowId = parseInt(row.id);\n const updated = {\n ...prev,\n [rowId]: !(prev[rowId] ?? true),\n };\n const selected = Object.entries(updated)\n .filter(([_, value]) => value)\n .map(([key, _]) => key)\n .map(Number);\n onSelectSections(selected);\n\n return updated;\n });\n },\n [canCustomRows, onSelectSections, table]\n );\n\n return (\n \n ,\n SectionRowTableContext\n >\n style={virtuosoTableStyle}\n data={tableRows}\n overscan={virtuosoTableOverscan}\n context={{\n tableLayout,\n tableRows,\n onRowSelect,\n }}\n itemSize={itemSizeDefault}\n components={{\n Table: PosVirtuosoTable,\n TableHead: PosVirtuosoTableHead,\n TableRow: SectionRowTableRow,\n }}\n fixedHeaderContent={() => {\n return (\n <>\n {table.getHeaderGroups().map((headerGroup) => (\n \n {headerGroup.headers.map((header) => (\n \n ))}\n \n ))}\n \n );\n }}\n itemContent={(index, row) => renderRowContent(row)}\n />\n \n );\n};\n\nexport default SectionRowTable;\n","import { groupBy, isEmpty, keyBy } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { SectionInfo, SectionScoreOverride } from 'src/WebApiController';\n\nconst sortSectionName = (a = '', b = '') => {\n const numA = parseInt(a);\n const numB = parseInt(b);\n if (isNaN(numA) || isNaN(numB)) {\n return a.localeCompare(b);\n }\n return numA - numB;\n};\n\nexport type EnrichedScoreOrverride = SectionScoreOverride & {\n sectionName?: string;\n isNew?: boolean;\n};\n\nexport const useTableData = (\n sections: SectionInfo[],\n scoreOverrides?: SectionScoreOverride[]\n) => {\n const idToSection = useMemo(() => keyBy(sections, 'id'), [sections]);\n const sectionToZoneId = useMemo(\n () =>\n scoreOverrides?.reduce(\n (acc, override) => {\n acc[override.sectionId] = override.tkClsId;\n return acc;\n },\n {} as Record\n ) ?? {},\n [scoreOverrides]\n );\n const rowIdToName = useMemo(\n () =>\n sections.reduce(\n (acc, section) => {\n section.rows.forEach((row) => {\n acc[row.id] = row.name;\n });\n return acc;\n },\n {} as Record\n ),\n [sections]\n );\n\n // Captures the original ordinal of the row from catalog\n const rowIdToOrdinal = useMemo(\n () =>\n sections.reduce(\n (acc, section) => {\n section.rows.forEach((row) => {\n acc[row.id] = row.ordinal;\n });\n return acc;\n },\n {} as Record\n ),\n [sections]\n );\n\n const [overrides, setOverrides] = useState(\n scoreOverrides ?? []\n );\n const [selectedSectionIds, setSelectedSectionIds] = useState([]);\n\n useEffect(() => {\n if (!isEmpty(scoreOverrides)) {\n setOverrides(\n scoreOverrides?.map((override) => ({\n ...override,\n rowName: override.rowName ?? rowIdToName[override.rowId],\n })) ?? []\n );\n } else {\n setOverrides(\n sections.flatMap((section) => {\n return section.rows.map((row) => ({\n sectionId: section.id,\n sectionName: section.name,\n rowId: row.id,\n rowName: row.name,\n rowOrdinal: row.ordinal,\n tkClsId: row.tktClass?.id ?? null,\n score: row.seatQualityScore,\n scoreRaw: row.seatQualityScore,\n isManualOverride: false,\n }));\n })\n );\n }\n }, [rowIdToName, scoreOverrides, sections, rowIdToOrdinal]);\n\n const enrichedOverrides: EnrichedScoreOrverride[] = useMemo(() => {\n return overrides.map((override) => ({\n ...override,\n sectionName: idToSection[override.sectionId]?.name,\n isNew: rowIdToName[override.rowId] == null,\n }));\n }, [idToSection, overrides, rowIdToName]);\n\n const data = useMemo(() => {\n const sectionToOverrides = groupBy(enrichedOverrides, 'sectionId');\n return Object.entries(sectionToOverrides)\n .map(([sectionId, scores]) => {\n const rows = scores\n .filter(({ rowOrdinal }) => rowOrdinal != null)\n .toSorted((a, b) => a.rowOrdinal! - b.rowOrdinal!);\n const unordered = scores\n .filter(({ rowOrdinal }) => rowOrdinal == null)\n .toSorted((a, b) => (a.rowName ?? '').localeCompare(b.rowName ?? ''));\n return {\n sectionId: Number(sectionId),\n section: idToSection[sectionId]?.name ?? '',\n rows,\n unordered,\n };\n })\n .toSorted((a, b) => sortSectionName(a.section, b.section));\n }, [enrichedOverrides, idToSection]);\n\n const onAddRows = useCallback(\n (rows: string[]) => {\n setOverrides((prev) => {\n const updated = [...prev];\n let minRowId = 0;\n for (const score of updated) {\n if (minRowId > score.rowId) {\n minRowId = score.rowId;\n }\n }\n let newOverrides: SectionScoreOverride[] = [];\n for (const sectionId of selectedSectionIds) {\n newOverrides = newOverrides.concat(\n rows.map((row, index) => ({\n sectionId: sectionId,\n rowId: minRowId - rows.length + index,\n rowName: row,\n rowOrdinal: index,\n tkClsId: sectionToZoneId[sectionId] ?? null,\n score: 0,\n scoreRaw: 0,\n isManualOverride: true,\n }))\n );\n\n minRowId -= rows.length;\n updated\n .filter((override) => override.sectionId === sectionId)\n .forEach((element) => {\n element.rowOrdinal =\n element.rowOrdinal != null\n ? element.rowOrdinal + rows.length\n : null;\n element.isManualOverride = true;\n });\n }\n\n // Reset manual override if the row is moved to its original position\n const proceeds = [...updated, ...newOverrides];\n proceeds.forEach((override) => {\n if (rowIdToOrdinal[override.rowId] == override.rowOrdinal) {\n override.isManualOverride = false;\n }\n });\n\n return proceeds;\n });\n },\n [rowIdToOrdinal, sectionToZoneId, selectedSectionIds]\n );\n\n const onSwapOrdinals = useCallback(\n (\n sectionId: number,\n from: EnrichedScoreOrverride,\n to: EnrichedScoreOrverride\n ) => {\n if (\n from.rowName == null ||\n from.rowOrdinal == null ||\n to.rowOrdinal == null ||\n to.rowName == null\n ) {\n return;\n }\n if (from.rowOrdinal == to.rowOrdinal) {\n return;\n }\n\n setOverrides((prev) => {\n const sectionRows = prev\n .filter(\n (override) =>\n override.sectionId === sectionId && override.rowOrdinal != null\n )\n .toSorted((a, b) => a.rowOrdinal! - b.rowOrdinal!);\n\n const proceeds = prev.map((override) => {\n if (override.sectionId === sectionId && override.rowOrdinal != null) {\n if (override.rowOrdinal === from.rowOrdinal) {\n const isManualOverride =\n override.isManualOverride ||\n to.rowOrdinal != override.rowOrdinal;\n return {\n ...override,\n rowOrdinal: to.rowOrdinal,\n isManualOverride,\n };\n }\n const currentIndex = sectionRows.findIndex(\n (r) => r.rowName === override.rowName\n );\n if (from.rowOrdinal! < to.rowOrdinal!) {\n if (\n override.rowOrdinal > from.rowOrdinal! &&\n override.rowOrdinal <= to.rowOrdinal!\n ) {\n if (currentIndex <= 0) {\n return override;\n }\n const rowOrdinal = sectionRows[currentIndex - 1].rowOrdinal;\n const isManualOverride =\n override.isManualOverride ||\n rowOrdinal != override.rowOrdinal;\n return {\n ...override,\n rowOrdinal,\n isManualOverride,\n };\n }\n }\n\n if (from.rowOrdinal! > to.rowOrdinal!) {\n if (\n override.rowOrdinal < from.rowOrdinal! &&\n override.rowOrdinal >= to.rowOrdinal!\n ) {\n if (currentIndex <= -1 || currentIndex >= sectionRows.length) {\n return override;\n }\n const rowOrdinal = sectionRows[currentIndex + 1].rowOrdinal;\n const isManualOverride =\n override.isManualOverride ||\n rowOrdinal != override.rowOrdinal;\n return {\n ...override,\n rowOrdinal,\n isManualOverride,\n };\n }\n }\n }\n return override;\n });\n\n // Reset manual override if the row is moved to its original position\n proceeds.forEach((override) => {\n if (rowIdToOrdinal[override.rowId] == override.rowOrdinal) {\n override.isManualOverride = false;\n }\n });\n\n return proceeds;\n });\n },\n [rowIdToOrdinal]\n );\n\n return {\n data,\n overrides,\n selectedSectionIds,\n onAddRows,\n onSwapOrdinals,\n onSelectSections: setSelectedSectionIds,\n };\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { TableOptions } from '@tanstack/react-table';\nimport { isEmpty, isEqual, max } from 'lodash-es';\nimport { ComponentProps, useCallback, useMemo } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { Content } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Stack } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n Feature,\n SectionInfo,\n SectionScoreOverride,\n} from 'src/WebApiController';\n\nimport { AddSectionRowsDialog } from './components/AddSectionRowsDialog';\nimport SectionRowTable from './components/SectionRowTable';\nimport {\n getSectionColumns,\n SectionRowColumnType,\n} from './config/SectionRowTableConfig';\nimport { useTableData } from './SectionRowTableDialog.hooks';\n\nexport type SectionRowTableDialogProps = ComponentProps & {\n sections: SectionInfo[];\n scoreOverrides?: SectionScoreOverride[];\n onClose: () => void;\n onSectionRowChange: (updated: SectionScoreOverride[]) => void;\n};\n\nexport const SectionRowTableDialog: React.FC = ({\n sections,\n scoreOverrides,\n onClose,\n onSectionRowChange,\n ...rest\n}) => {\n const hasCustomVenueRowsFeature = useUserHasFeature(Feature.CustomVenueRows);\n const addRowsDialog = useBasicDialog();\n const {\n data,\n overrides,\n selectedSectionIds,\n onAddRows,\n onSelectSections,\n onSwapOrdinals,\n } = useTableData(sections, scoreOverrides);\n\n const maxLength = useMemo(() => {\n return (\n max(\n sections.map(\n (section) =>\n section.rows.filter(({ ordinal }) => ordinal != null).length\n )\n ) ?? 0\n );\n }, []);\n\n const options: Partial> = useMemo(\n () => ({\n data,\n columns: getSectionColumns(maxLength),\n }),\n [data]\n );\n\n const hasChange = useMemo(\n () => !isEqual(overrides, scoreOverrides),\n [overrides, scoreOverrides]\n );\n\n const onSubmitChange = useCallback(() => {\n onSectionRowChange(overrides);\n onClose();\n }, [overrides, onSectionRowChange, onClose]);\n\n return (\n <>\n }\n footer={\n hasCustomVenueRowsFeature ? (\n \n addRowsDialog.launchDialog()}\n disabled={isEmpty(selectedSectionIds)}\n textContentId={ContentId.AddRow}\n />\n \n \n \n \n \n ) : (\n \n \n \n \n )\n }\n onCancel={onClose}\n >\n \n \n \n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport {\n ComponentProps,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { IconButton } from 'src/components/Buttons';\nimport {\n BulkEditNumber,\n LanguagePreference,\n} from 'src/components/common/BulkActions/BulkEditNumber';\nimport { Content } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Button, SimpleTable } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { EventScoreUpdate } from 'src/modals/EventPricingSeatMap/EventPricingSeatMapBody';\nimport { CopyIcon } from 'src/svgs';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { getMedianScoreForSection } from 'src/utils/seatScoreUtils';\nimport { filterSectionByRowType } from 'src/utils/venueConfigUtils';\nimport { SectionInfo, SectionScoreOverride } from 'src/WebApiController';\n\nimport { ChangeRowScoreDialogMultiSection } from '../ChangeRowScoreDialog';\nimport { rowScoreOverrideFilter } from '../ChangeRowScoreDialog/ChangeRowScoreBodyMultiSection';\nimport * as styles from './ChangeMultiSectionsScoresDialog.css';\n\ntype SectionScoreInput = {\n sectionId: number;\n score: number | null;\n};\n\nexport type ChangeMultiSectionsScoresDialogProps = ComponentProps<\n typeof RSModal\n> & {\n selectedSections: SectionInfo[];\n scoreOverrides?: SectionScoreOverride[] | null;\n configPayload: string | null;\n onOkay: (newScores: SectionScoreInput[]) => void;\n onCancel: () => void;\n onSubmitSectionScoreChange: (updates: EventScoreUpdate) => Promise;\n};\n\nexport function ChangeMultiSectionsScoresDialog({\n selectedSections,\n scoreOverrides,\n configPayload,\n onOkay,\n onCancel,\n onSubmitSectionScoreChange,\n ...rest\n}: ChangeMultiSectionsScoresDialogProps) {\n const existingScores = useMemo(\n (): SectionScoreInput[] =>\n selectedSections.map((s) => ({\n sectionId: s.id,\n score: getMedianScoreForSection(s.id, scoreOverrides ?? []),\n })),\n [scoreOverrides, selectedSections]\n );\n\n const changeRowScoreDialog = useBasicDialog();\n\n const [scores, setScores] = useState(() => [\n ...existingScores,\n ]);\n const [isLoading, setIsLoading] = useState(false);\n\n const selectedSectionsMap = useMemo(() => {\n return selectedSections.reduce(\n (r, c) => {\n r[c.id] = c;\n return r;\n },\n {} as Record\n );\n }, [selectedSections]);\n\n useEffect(() => {\n if (scores.length !== existingScores.length) {\n setScores([...existingScores]);\n }\n }, [existingScores, scores.length]);\n\n const onRowSeatScoreChanged = useCallback(\n (\n newScoreOverrides: SectionScoreOverride[],\n newConfigPayload: string | null\n ) => {\n onSubmitSectionScoreChange({\n newScoreOverrides,\n newConfigPayload: newConfigPayload ?? undefined,\n }).then(() => {\n changeRowScoreDialog.closeDialog();\n });\n },\n [onSubmitSectionScoreChange, changeRowScoreDialog]\n );\n\n // Minimum number of configurable rows across all selected sections\n const minNumRowsSelectedSections = useMemo(() => {\n const sanitizedSections = selectedSections.filter(filterSectionByRowType);\n let min = Number.MAX_SAFE_INTEGER;\n for (const selectedSection of sanitizedSections) {\n const scoredRows =\n scoreOverrides?.filter(\n rowScoreOverrideFilter([selectedSection?.specRow?.id ?? 0])\n ) ?? [];\n min = Math.min(min, scoredRows.length);\n }\n return min;\n }, [scoreOverrides, selectedSections]);\n\n const onChangeSingleSectionScore = useCallback(\n (section: SectionScoreInput) =>\n (event: React.ChangeEvent) => {\n const value = parseFloat(event.target.value);\n if (value < 0 || value > 100) return;\n\n const index = scores.findIndex(\n (xs) => xs.sectionId === section.sectionId\n );\n scores[index] = { ...scores[index], score: value };\n setScores([...scores]);\n },\n [scores]\n );\n\n const onBulkChangeSectionScore = useCallback(\n (score: number) => setScores((prev) => prev.map((s) => ({ ...s, score }))),\n []\n );\n\n const onRelativeChangeAllScore = useCallback(\n (value: number, isRelative: boolean, isAbove: boolean) => {\n const percentageChange = 100 + (isAbove ? value : -value);\n const absoluteChange = isAbove ? value : -value;\n setScores((prev) =>\n prev.map((s) => {\n const validScore = s.score ?? 0;\n const newScore = isRelative\n ? (validScore * percentageChange) / 100\n : validScore + absoluteChange;\n const sanitizedScore = Math.min(100, Math.max(0, newScore));\n return { ...s, score: sanitizedScore };\n })\n );\n },\n []\n );\n\n if (!selectedSections.length) {\n return null;\n }\n\n return (\n <>\n }\n onOpened={() => {\n setIsLoading(false);\n setScores([]);\n }}\n footer={\n <>\n \n \n \n {minNumRowsSelectedSections > 0 && (\n {\n // We have to pick the score that was input\n if (scores.length) {\n setIsLoading(true);\n onOkay(scores);\n changeRowScoreDialog.launchDialog();\n }\n }}\n disabled={isLoading || !scores.length}\n >\n \n \n )}\n {\n if (scores.length) setIsLoading(true);\n onOkay(scores);\n }}\n >\n \n \n \n }\n onCancel={onCancel}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n {scores\n .filter((s) => selectedSectionsMap[s.sectionId])\n .toSorted((s1, s2) =>\n selectedSectionsMap[s1.sectionId].name.localeCompare(\n selectedSectionsMap[s2.sectionId].name\n )\n )\n .map((s) => (\n \n \n {selectedSectionsMap[s.sectionId].name}\n \n \n \n }\n titleContentId={ContentId.ApplyToAll}\n onClick={onBulkChangeSectionScore.bind(\n null,\n s.score ?? 0\n )}\n />\n }\n />\n \n \n ))}\n \n \n \n \n \n );\n}\n","import { isEmpty } from 'lodash-es';\nimport {\n ComponentProps,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { Content } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, SimpleTable } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { EventScoreUpdate } from 'src/modals/EventPricingSeatMap/EventPricingSeatMapBody';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { getMedianScoreForSection } from 'src/utils/seatScoreUtils';\nimport { SectionInfo, SectionScoreOverride } from 'src/WebApiController';\n\nimport { ChangeRowScoreDialog } from '../ChangeRowScoreDialog';\nimport { rowScoreOverrideFilter } from '../ChangeRowScoreDialog/ChangeRowScoreBodyMultiSection';\nimport * as styles from './ChangeSectionScoreDialog.css';\n\nexport type ChangeSectionScoreDialogProps = ComponentProps & {\n selectedSection: SectionInfo | null;\n configPayload: string | null;\n surroundingSections: SectionInfo[];\n scoreOverrides?: SectionScoreOverride[] | null;\n onOkay: (newScore: number, sectionId: number) => void;\n onCancel: () => void;\n onSubmitSectionScoreChange: (updates: EventScoreUpdate) => Promise;\n};\n\nexport function ChangeSectionScoreDialog({\n selectedSection,\n configPayload,\n surroundingSections,\n scoreOverrides,\n onOkay,\n onCancel,\n onSubmitSectionScoreChange,\n ...rest\n}: ChangeSectionScoreDialogProps) {\n const existingScore = useMemo(\n () =>\n selectedSection &&\n getMedianScoreForSection(selectedSection.id, scoreOverrides ?? []),\n [scoreOverrides, selectedSection]\n );\n\n const changeRowScoreDialog = useBasicDialog();\n\n const [score, setScore] = useState(existingScore ?? undefined);\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n if (score == null && existingScore != null) {\n setScore(existingScore);\n }\n }, [existingScore, score]);\n\n const getSurroundingSections = useCallback(() => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n {surroundingSections\n .toSorted((s1, s2) => s1.name.localeCompare(s2.name))\n .map((s, idx) => {\n const score = getMedianScoreForSection(\n s.id,\n scoreOverrides ?? []\n );\n return (\n \n {s.name}\n \n {score != null ? roundToPrecision(score, 4) : null}\n \n \n );\n })}\n \n \n );\n }, [scoreOverrides, surroundingSections]);\n\n const onRowSeatScoreChanged = useCallback(\n (\n newScoreOverrides: SectionScoreOverride[],\n newConfigPayload: string | null\n ) => {\n onSubmitSectionScoreChange({\n newScoreOverrides,\n newConfigPayload: newConfigPayload ?? undefined,\n }).then(() => {\n changeRowScoreDialog.closeDialog();\n });\n },\n [onSubmitSectionScoreChange, changeRowScoreDialog]\n );\n\n const rows = useMemo(\n () =>\n scoreOverrides?.filter(\n rowScoreOverrideFilter([selectedSection?.specRow?.id ?? 0])\n ) ?? [],\n [scoreOverrides, selectedSection?.specRow?.id]\n );\n\n if (!selectedSection) {\n return null;\n }\n\n return (\n <>\n }\n onOpened={() => {\n setIsLoading(false);\n setScore(undefined);\n }}\n onKeyUp={(e) => {\n if (!isLoading && e.key === 'Enter' && score != null) {\n setIsLoading(true);\n onOkay(score, selectedSection.id);\n }\n }}\n footer={\n <>\n \n \n \n {!isEmpty(rows) && (\n {\n // We have to pick the score that was input\n if (score != null) {\n setIsLoading(true);\n onOkay(score, selectedSection.id);\n changeRowScoreDialog.launchDialog();\n }\n }}\n disabled={isLoading || score == null}\n >\n \n \n )}\n {\n if (score != null) {\n setIsLoading(true);\n onOkay(score, selectedSection.id);\n }\n }}\n >\n \n \n \n }\n onCancel={onCancel}\n >\n
    \n \n }\n style={{ flexBasis: 'max-content' }}\n >\n
    \n {selectedSection.name}\n
    \n \n }>\n {\n const value = parseFloat(e.target.value);\n if (value < 0 || value > 100) return;\n setScore(value);\n }}\n />\n \n
    \n }\n className={styles.similarSectionsContainer}\n >\n
    \n {getSurroundingSections()}\n
    \n \n \n \n \n \n );\n}\n","import { head, uniq } from 'lodash-es';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { filterSectionByZone } from 'src/utils/venueConfigUtils';\nimport { SectionInfo } from 'src/WebApiController';\n\nexport const useEventHeatMapSectionHandler = (\n onLaunchingDialog: () => void\n) => {\n const { venueMapInfo } = useEventMapContext();\n const [selectedSection, setSectionSelected] = useState(\n null\n );\n const [surroundingSections, setSurroundingSections] = useState(\n []\n );\n const [selectedSectionIds, setSelectedSectionIds] = useState([]);\n\n const selectedSectionData = useMemo(() => {\n if (!venueMapInfo || !selectedSectionIds?.length) {\n return undefined;\n }\n\n return venueMapInfo?.sections?.filter((s: SectionInfo) =>\n selectedSectionIds.includes(s.id)\n );\n }, [selectedSectionIds, venueMapInfo]);\n\n const onResetSections = useCallback(() => setSelectedSectionIds([]), []);\n\n const onShiftSelect = useCallback(\n (sectionInfo: SectionInfo) => {\n // We are using the ticketClassId to group the sections\n const selectedClassId = head(\n sectionInfo?.rows\n ?.map(({ tktClass: ticketClass }) => ticketClass?.id)\n .filter((id) => !!id)\n );\n const updatedSectionIds = venueMapInfo?.sections\n ?.filter(filterSectionByZone(selectedClassId))\n ?.map((s: SectionInfo) => s.id);\n\n setSelectedSectionIds((prev) => {\n if (prev.includes(sectionInfo.id)) {\n return prev.filter((id) => !updatedSectionIds?.includes(id));\n }\n return uniq([...prev, ...(updatedSectionIds ?? [])]);\n });\n },\n [venueMapInfo?.sections]\n );\n\n const onCtrlSelect = useCallback(\n (sectionInfo: SectionInfo) =>\n setSelectedSectionIds((prev) => {\n if (prev.includes(sectionInfo.id)) {\n return prev.filter((id) => id !== sectionInfo.id);\n }\n return [...prev, sectionInfo.id];\n }),\n []\n );\n\n const onSingleSelect = useCallback(\n (sectionInfo: SectionInfo, surroundingSections?: SectionInfo[]) => {\n setSectionSelected(sectionInfo);\n setSurroundingSections(surroundingSections ?? []);\n onLaunchingDialog();\n },\n [onLaunchingDialog]\n );\n\n const onSectionClicked = useCallback(\n (\n e: MouseEvent,\n sectionInfo: SectionInfo,\n surroundingSections?: SectionInfo[]\n ) => {\n if (e.shiftKey) {\n onShiftSelect(sectionInfo);\n return;\n }\n if (e.ctrlKey || e.metaKey) {\n onCtrlSelect(sectionInfo);\n return;\n }\n\n onSingleSelect(sectionInfo, surroundingSections);\n },\n [onCtrlSelect, onSingleSelect, onShiftSelect]\n );\n\n const onToggleMirrors = useCallback(\n (mirrors: SectionInfo[], exclude?: boolean) => {\n setSelectedSectionIds((prev) => {\n const mirrorIds = mirrors.map(({ id }) => id);\n if (exclude) {\n return [...prev.filter((id) => !mirrorIds.includes(id))];\n } else {\n return uniq([...prev, ...mirrorIds]);\n }\n });\n },\n []\n );\n\n const onSelectedSectionsChange = useCallback((sections: SectionInfo[]) => {\n setSelectedSectionIds(sections.map(({ id }) => id));\n }, []);\n\n return {\n selectedSection,\n selectedSectionIds,\n selectedSectionData,\n surroundingSections,\n onSectionClicked,\n onResetSections,\n onToggleMirrors,\n onSelectedSectionsChange,\n };\n};\n","import { useCallback } from 'react';\nimport {\n MultiSectionsDisplay,\n SectionDisplay,\n} from 'src/components/Events/VenueMap';\nimport { EventVenueMap } from 'src/components/Events/VenueMap/EventVenueMap';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { Button, Stack } from 'src/core/ui';\nimport { ChangeMultiSectionsScoresDialog } from 'src/dialogs/ChangeMultiSectionsScoresDialog';\nimport { ChangeSectionScoreDialog } from 'src/dialogs/ChangeSectionScoreDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useEventHeatMapSectionHandler } from 'src/hooks/useEventHeatMapSectionHandler';\nimport {\n HeatMapColors,\n HeatMapColorSteps,\n useHeatMapColor,\n} from 'src/hooks/useHeatMapColor';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { EventScoreUpdate } from 'src/modals/EventPricingSeatMap/EventPricingSeatMapBody';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n updateScoreForSectionMaintainingRowScoreRatio,\n updateScoreMaintainingRowScoreRatio,\n} from 'src/utils/seatScoreUtils';\nimport {\n Feature,\n SectionInfo,\n SectionScoreOverride,\n} from 'src/WebApiController';\n\nexport const EventVenueHeatMap = ({\n scoreOverrides,\n configPayload,\n onSubmitSectionScoreChange,\n}: {\n scoreOverrides?: SectionScoreOverride[] | null;\n configPayload: string | null;\n onSubmitSectionScoreChange: (updates: EventScoreUpdate) => Promise;\n}) => {\n const { trackError } = useErrorBoundaryContext();\n\n const { getUiCurrency } = useLocalizationContext();\n const { loginContext } = useAppContext();\n const changeSectionScoreDialog = useBasicDialog();\n const changeMultiSectionsScoresDialog = useBasicDialog();\n\n const uiCurrency = getUiCurrency(\n loginContext?.user?.activeAccount?.currencyCode\n );\n const currencyDisplay = uiCurrency?.sym ?? '$';\n const { getColor } = useHeatMapColor(scoreOverrides);\n\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n\n const onSectionHovered = useCallback(\n (hoveredSection: SectionInfo) => (\n \n ),\n [scoreOverrides]\n );\n\n const onLaunchingSingleSectionDialog = useCallback(\n () => changeSectionScoreDialog.launchDialog(),\n [changeSectionScoreDialog]\n );\n\n const {\n selectedSection,\n selectedSectionIds,\n selectedSectionData,\n surroundingSections,\n onSectionClicked,\n onResetSections,\n onToggleMirrors,\n onSelectedSectionsChange,\n } = useEventHeatMapSectionHandler(onLaunchingSingleSectionDialog);\n\n const onSectionSeatScoreChanged = useCallback(\n (newScore: number, sectionId: number) => {\n const newScoreOverrides = updateScoreForSectionMaintainingRowScoreRatio(\n newScore,\n sectionId,\n scoreOverrides\n );\n\n if (newScoreOverrides?.length) {\n onSubmitSectionScoreChange({ newScoreOverrides }).then(() => {\n changeSectionScoreDialog.closeDialog();\n });\n } else {\n trackError(\n `Cannot update score for section ${sectionId} because it is not a valid section.`,\n null,\n { newScore, sectionId }\n );\n changeSectionScoreDialog.closeDialog();\n }\n },\n [\n scoreOverrides,\n onSubmitSectionScoreChange,\n changeSectionScoreDialog,\n trackError,\n ]\n );\n\n const onMultiSectionsSeatScoresChanged = useCallback(\n (newScores: { sectionId: number; score: number | null }[]) => {\n const newScoreOverrides = [...(scoreOverrides ?? [])];\n\n const notFoundSections: number[] = [];\n newScores.forEach((s) => {\n const overridesToEdit = newScoreOverrides?.filter(\n (so) => so.sectionId === s.sectionId\n );\n\n if (overridesToEdit.length) {\n if (s.score != null) {\n updateScoreMaintainingRowScoreRatio(s.score, overridesToEdit);\n }\n } else {\n notFoundSections.push(s.sectionId);\n }\n });\n\n if (notFoundSections.length === 0) {\n onSubmitSectionScoreChange({ newScoreOverrides }).then(() => {\n changeMultiSectionsScoresDialog.closeDialog();\n });\n } else {\n trackError(\n `Cannot update score for sections ${notFoundSections} because they are not valid overrides.`,\n null,\n { newScores }\n );\n changeMultiSectionsScoresDialog.closeDialog();\n }\n },\n [\n changeMultiSectionsScoresDialog,\n onSubmitSectionScoreChange,\n scoreOverrides,\n trackError,\n ]\n );\n\n return (\n <>\n \n \n changeMultiSectionsScoresDialog.launchDialog()}\n >\n \n \n \n )\n }\n infoIconContent={\n hasAutoPricingFeature ? (\n \n ) : undefined\n }\n getColor={getColor}\n useRowMap={true}\n isHeatMap={true}\n />\n \n \n \n );\n};\n","import { clsx } from 'clsx';\nimport { ReactNode } from 'react';\nimport { Card } from 'src/core/ui';\nimport { CheckIcon, CrossIcon, IconsFill } from 'src/svgs/Viagogo';\n\nimport * as styles from './SeatMapCard.css';\n\nexport const SeatMapCard = ({\n isSelected = false,\n isInteractive = false,\n isSmall = false,\n footer,\n onClick,\n onDelete,\n children,\n}: {\n isSelected?: boolean;\n isInteractive?: boolean;\n isSmall?: boolean;\n onClick?: () => void;\n onDelete?: () => void;\n footer?: ReactNode;\n children?: ReactNode;\n}) => {\n return (\n \n \n {children}\n \n \n {footer}\n \n\n {isSelected ? (\n
    \n \n
    \n ) : (\n onDelete && (\n
    \n {\n e.stopPropagation();\n e.preventDefault();\n onDelete();\n }}\n />\n
    \n )\n )}\n \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport {\n ConfirmDialog,\n ConfirmDialogProps,\n} from 'src/core/interim/dialogs/ConfirmDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { contentWrapper } from './DeleteHeatMapTemplateConfirmDialog.css';\n\nexport type DeleteHeatMapTemplateConfirmDialogProps = Omit<\n ConfirmDialogProps,\n 'headerText' | 'bodyText'\n> & {\n onConfirm: () => void;\n onCancel: () => void;\n};\n\nexport const DeleteHeatMapTemplateConfirmDialog = ({\n onConfirm,\n onCancel,\n ...props\n}: DeleteHeatMapTemplateConfirmDialogProps) => {\n return (\n }\n bodyText={\n
    \n \n
    \n }\n okText={ContentId.Confirm}\n cancelText={ContentId.Cancel}\n {...props}\n onOkay={() => onConfirm()}\n onCancel={() => onCancel()}\n />\n );\n};\n","import { isEqual } from 'lodash-es';\nimport { Point } from 'paper';\nimport { ReactNode, useEffect, useRef, useState } from 'react';\nimport { BezierGraph, SerializedSegment } from 'src/core/POS/BezierGraph';\nimport { CalcOutputFn } from 'src/core/POS/BezierGraph/BezierGraphManager';\nimport { vars } from 'src/core/themes';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\n\nimport * as styles from './RelativeScoreGraph.css';\n\nexport const ROW_HEIGHT = styles.ROW_HEIGHT;\nexport const ROW_GAP_HEIGHT = styles.ROW_GAP_HEIGHT;\n\nconst NEGATIVE_TEXT_COLOR = '#db3f84';\nconst POSITIVE_TEXT_COLOR = '#33b2b1';\n\nexport type RelativeScoreGraphProps = {\n children?: ReactNode;\n};\n\nexport function RelativeScoreGraph({ children }: RelativeScoreGraphProps) {\n return
    {children}
    ;\n}\n\nexport type RelativeScoreGraphRowProps = {\n label?: ReactNode;\n valueDisplay?: ReactNode;\n /**\n * Percentage value from 0 to 1.\n *\n * eg. `0.5` for 50%\n */\n value?: number;\n showRemoveButton?: boolean;\n onRemove?: () => void;\n};\n\nexport function RelativeScoreGraphRow({\n label,\n valueDisplay,\n value,\n showRemoveButton = false,\n onRemove,\n}: RelativeScoreGraphRowProps) {\n const isBase = value === 0;\n const negativeWidth =\n !isBase && value != null && value < 0 ? `${-value * 100}%` : 0;\n const positiveWidth =\n !isBase && value != null && value > 0 ? `${value * 100}%` : 0;\n return (\n
    \n
    {label}
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n 0\n ? POSITIVE_TEXT_COLOR\n : NEGATIVE_TEXT_COLOR,\n }}\n >\n {valueDisplay}\n
    \n
    \n {showRemoveButton && (\n
    \n \n
    \n )}\n
    \n \n );\n}\n\nconst PATH_COLOR = '#33b2b1';\n\nexport type RelativeScoreGraphBezierProps = {\n rowCount: number;\n initialSegments: SerializedSegment[];\n onChange?: (ev: { values: number[]; segments: SerializedSegment[] }) => void;\n};\n\nexport function RelativeScoreGraphBezier({\n initialSegments,\n rowCount,\n onChange,\n}: RelativeScoreGraphBezierProps) {\n const [segments, setSegments] = useState(initialSegments);\n\n useEffect(() => {\n if (!isEqual(segments, initialSegments)) {\n setSegments(initialSegments);\n }\n }, [initialSegments, segments]);\n\n const calcScoreOutputRef = useRef();\n const exportScorePathRef = useRef<() => SerializedSegment[]>();\n\n const onUpdateRowScores = (segments: paper.Segment[]) => {\n const calcScoreOutput = calcScoreOutputRef.current;\n if (calcScoreOutput) {\n const totalHeight =\n rowCount * ROW_HEIGHT + (rowCount - 1) * ROW_GAP_HEIGHT;\n const centerToCenterHeight = ROW_HEIGHT + ROW_GAP_HEIGHT;\n const isBaseRow = (x: number) => {\n const baseRowSegmentX = segments[1]?.point.x;\n if (baseRowSegmentX != null) {\n const xMin = Math.max(\n 0,\n x - (centerToCenterHeight / 2 / totalHeight) * 100\n );\n const xMax = Math.min(\n 100,\n x + (centerToCenterHeight / 2 / totalHeight) * 100\n );\n if (baseRowSegmentX >= xMin && baseRowSegmentX < xMax) {\n return true;\n }\n }\n return false;\n };\n\n const values: number[] = [];\n for (let i = 0; i < rowCount; i++) {\n const x =\n ((ROW_HEIGHT / 2 + i * centerToCenterHeight) / totalHeight) * 100;\n const y = isBaseRow(x) ? 50 : calcScoreOutput(x);\n values.push(roundToPrecision((y * 2 - 100) / 100, 3));\n }\n onChange?.({ values, segments: exportScorePathRef.current?.() ?? [] });\n }\n };\n\n return (\n
    \n {\n return segment.isFirst() || segment.isLast()\n ? new Point(0, localDelta.y)\n : new Point(localDelta.x, 0);\n }}\n onPathSetFromSegments={({ segments }) => {\n onUpdateRowScores(segments);\n }}\n onDragEnd={({ isPathValid, segments }) => {\n if (isPathValid) {\n onUpdateRowScores(segments);\n }\n }}\n />\n
    \n );\n}\n","import { useState } from 'react';\nimport { SerializedSegment } from 'src/core/POS/BezierGraph';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\n\nimport {\n RelativeScoreGraph,\n RelativeScoreGraphBezier,\n RelativeScoreGraphBezierProps,\n RelativeScoreGraphRow,\n ROW_GAP_HEIGHT,\n ROW_HEIGHT,\n} from './RelativeScoreGraph';\n\nconst ROW_COUNT = 10;\n\nexport const INITIAL_SEGMENTS: SerializedSegment[] = (() => {\n const totalHeight = ROW_COUNT * ROW_HEIGHT + (ROW_COUNT - 1) * ROW_GAP_HEIGHT;\n const firstPointX = (ROW_HEIGHT / 2 / totalHeight) * 100;\n return [\n { point: { x: firstPointX, y: 34.5 } },\n {\n point: { x: 100 - firstPointX, y: 50 },\n handleIn: { x: 0, y: -11 },\n handleOut: { x: 0, y: 5 },\n },\n { point: { x: 100 - firstPointX, y: 60 } },\n ];\n})();\n\n/**\n * Reference: https://github.com/stubhub/StubHub.PointOfSale.AutoPricing/blob/1efd01964818286fe07c14af0bec48094f91b068/src/StubHub.PointOfSale.AutoPricing/Models/Strategies/CompListingSetting.cs#L50\n */\nexport type QuantityScoreAdjustment = {\n /**\n * quantity\n */\n q: number;\n /**\n * seat score multiplier\n */\n m: number;\n};\n\nexport type SeatScoreQuantityMultiplerGraphProps = {\n initialSegments?: RelativeScoreGraphBezierProps['initialSegments'];\n onChange?: (ev: {\n overrides: QuantityScoreAdjustment[];\n segments: SerializedSegment[];\n }) => void;\n};\n\nexport function SeatScoreQuantityMultiplerGraph({\n initialSegments = INITIAL_SEGMENTS,\n onChange,\n}: SeatScoreQuantityMultiplerGraphProps) {\n const [values, setValues] = useState(() => {\n return Array(ROW_COUNT).fill(0);\n });\n return (\n \n {values.map((value, i) => (\n \n ))}\n {\n setValues(values);\n\n onChange?.({\n overrides: values.map((val, i) => ({\n q: ROW_COUNT - i,\n m: roundToPrecision(1 + val, 3),\n })),\n segments,\n });\n }}\n />\n \n );\n}\n","import { FormProvider, useForm, useFormContext } from 'react-hook-form';\nimport {\n AutoPricingSettingsFormContent,\n AutoPricingSettingsFormContentCoreProps,\n PricingSetting,\n} from 'src/components/AutoPricing/AutoPricingSettingsFormContent/AutoPricingSettingsFormContent';\nimport { useAutoPricingSettingsFormContext } from 'src/components/AutoPricing/useAutoPricingSettingsFormContext';\nimport { SeatScoreQuantityMultiplerGraph } from 'src/components/Events/RelativeScoreGraph/SeatScoreQuantityMultiplierGraph';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Switch } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EventPricingSeatMapForm } from 'src/utils/eventWithDataUtils';\nimport {\n AutoPricingCompListingMode,\n AutoPricingInputs,\n} from 'src/WebApiController';\n\ntype EventAutoPricingSettingsFormContentProps =\n AutoPricingSettingsFormContentCoreProps & {\n allowAutoPriceFrequency: boolean;\n };\n\nexport const EventAutoPricingSettingsFormContent = ({\n allowAutoPriceFrequency,\n disabled,\n ...rest\n}: EventAutoPricingSettingsFormContentProps) => {\n const { watch: outerWatch, setValue: outerSetValue } =\n useFormContext();\n\n const { eventAutoPricing, eventWideAutoPricing } = outerWatch();\n\n const innerMethods = useForm({\n defaultValues: eventAutoPricing ?? undefined,\n });\n\n const { watch: innerWatch } = innerMethods;\n\n const { compListingMode } = innerWatch();\n\n innerWatch((eventAutoPricingNew) => {\n outerSetValue('eventAutoPricing', eventAutoPricingNew as AutoPricingInputs);\n return;\n });\n\n return (\n \n <>\n }\n detail={\n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n if (isChecked !== eventWideAutoPricing) {\n outerSetValue('eventWideAutoPricing', isChecked);\n }\n }}\n />\n }\n />\n }\n priceAgainstSectionChildren={\n allowAutoPriceFrequency && (\n \n )\n }\n advancedSettingsSectionChildren={\n compListingMode == AutoPricingCompListingMode.QualityScore ? (\n \n ) : null\n }\n hideCompListingQuantityFilters={true}\n hideBaseAdvancedSettingElements={true}\n {...rest}\n />\n \n \n );\n};\n\nconst AutoPricingFrequencyInput = ({ disabled }: { disabled: boolean }) => {\n const { setValue, watch } = useAutoPricingSettingsFormContext();\n\n const { autoPriceFrequency } = watch();\n\n return (\n }\n detail={\n \n }\n value={autoPriceFrequency ?? ''}\n onChange={(e) => {\n let v = parseInt(e.target.value);\n if (!isNaN(v)) {\n if (v < 1) {\n v = 1;\n }\n setValue('autoPriceFrequency', v);\n return;\n } else {\n setValue('autoPriceFrequency', null);\n }\n }}\n disabled={disabled}\n />\n }\n />\n );\n};\n\nconst AdvancedSettingsSection = ({ disabled }: { disabled: boolean }) => {\n const { setValue, watch } = useAutoPricingSettingsFormContext();\n\n const {\n compListingMode,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n } = watch();\n\n return (\n <>\n }\n detail={\n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n const compListingQuantityScoreAdjustmentEnabledNew = isChecked;\n if (\n compListingQuantityScoreAdjustmentEnabledNew !==\n compListingQuantityScoreAdjustmentEnabled\n ) {\n setValue(\n 'compListingQuantityScoreAdjustmentEnabled',\n compListingQuantityScoreAdjustmentEnabledNew\n );\n }\n }}\n />\n }\n />\n\n }\n detail={\n {\n const compListingQuantityScoreAdjustmentOverrideJsonNew =\n JSON.stringify({ overrides, segments });\n setValue(\n 'compListingQuantityScoreAdjustmentOverrideJson',\n compListingQuantityScoreAdjustmentOverrideJsonNew\n );\n }}\n />\n }\n />\n \n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useGetAccountAutoPricingSettings } from 'src/hooks/useGetAccountAutoPricingSettings';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n DEFAULT_COMP_LISTING_FLOOR,\n DEFAULT_UNDERCUT_ABSOLUTE_AMT,\n DEFAULT_UNDERCUT_RELATIVE_AMT,\n} from 'src/utils/autoPricingUtils';\nimport { EventPricingSeatMapForm } from 'src/utils/eventWithDataUtils';\nimport { getCurrentLanguage } from 'src/utils/localeUtils';\nimport { coalesceUndefinedOnly } from 'src/utils/miscUtils';\nimport {\n mapToSelectedSectionSettings,\n SelectedSectionSettingsWithOptionals,\n} from 'src/utils/types/selectedSectionSettingsWithOptionals';\nimport {\n AutoPricingCompListingMode,\n AutoPricingOutlierMode,\n AutoPricingUndercutMode,\n Feature,\n Permission,\n} from 'src/WebApiController';\n\nexport const useEventAutoPricingSettings = () => {\n const { setValue, watch, clearErrors } =\n useFormContext();\n const hasEventPricingPermission = useUserHasAnyOfPermissions(\n Permission.Events_SetPrice\n );\n const hasAllowSeatScoreCompListingModeFeature = useUserHasFeature(\n Feature.AllowSeatScoreCompListingMode\n );\n\n const defaultCompListingMode = useMemo(() => {\n if (hasAllowSeatScoreCompListingModeFeature) {\n return AutoPricingCompListingMode.QualityScore;\n }\n return AutoPricingCompListingMode.SameEvent;\n }, [hasAllowSeatScoreCompListingModeFeature]);\n\n const canAutoPrice =\n useUserHasFeature(Feature.AutoPricing) && hasEventPricingPermission;\n\n const autoPriceFrequency = watch('eventAutoPricing.autoPriceFrequency');\n\n const undercutMode = watch('eventAutoPricing.undercutMode');\n const undercutAbsoluteAmount = watch(\n 'eventAutoPricing.undercutAbsoluteAmount'\n );\n const undercutRelativeAmount = watch(\n 'eventAutoPricing.undercutRelativeAmount'\n );\n const compListingMode = watch('eventAutoPricing.compListingMode');\n const compListingFloor = watch('eventAutoPricing.compListingFloor');\n const compListingCeiling = watch('eventAutoPricing.compListingCeiling');\n const compListingQuantityScoreAdjustmentEnabled = watch(\n 'eventAutoPricing.compListingQuantityScoreAdjustmentEnabled'\n );\n const compListingQuantityScoreAdjustmentOverrideJson = watch(\n 'eventAutoPricing.compListingQuantityScoreAdjustmentOverrideJson'\n );\n const compListingOnlyForSameZoneEnabled = watch(\n 'eventAutoPricing.compListingOnlyForSameZoneEnabled'\n );\n const compListingOnlyForSelectedSectionsEnabled = watch(\n 'eventAutoPricing.compListingOnlyForSelectedSectionsEnabled'\n );\n const compListingExcludeFanInventory = watch(\n 'eventAutoPricing.compListingExcludeFanInventory'\n );\n const compListingSelectedSectionSettings = watch(\n 'eventAutoPricing.compListingSelectedSectionSettings'\n );\n const circuitBreakerRelativeCeiling = watch(\n 'eventAutoPricing.circuitBreakerRelativeCeiling'\n );\n const circuitBreakerRelativeFloor = watch(\n 'eventAutoPricing.circuitBreakerRelativeFloor'\n );\n const circuitBreakerMaxDiscountVelocityPercent = watch(\n 'eventAutoPricing.circuitBreakerMaxDiscountVelocityPercent'\n );\n const circuitBreakerMaxDiscountVelocityTicksInHours = watch(\n 'eventAutoPricing.circuitBreakerMaxDiscountVelocityTicksInHours'\n );\n const circuitBreakerMinCompListingCount = watch(\n 'eventAutoPricing.circuitBreakerMinCompListingCount'\n );\n const outlierMode = watch('eventAutoPricing.outlierMode');\n const outlierStandardDeviations = watch(\n 'eventAutoPricing.outlierStandardDeviations'\n );\n\n const { loginContext } = useAppContext();\n\n const { getUiCurrency } = useLocalizationContext();\n\n const uiCurrency = useMemo(\n () => getUiCurrency(loginContext?.user?.activeAccount?.currencyCode),\n [getUiCurrency, loginContext?.user?.activeAccount?.currencyCode]\n );\n const currencyNumberFormat = useMemo(\n () =>\n new Intl.NumberFormat(getCurrentLanguage(), {\n style: 'currency',\n currency: uiCurrency.code,\n }),\n [uiCurrency.code]\n );\n\n const { event } = useEventMapContext();\n const { pricingSettings: accountPricingSettings } =\n useGetAccountAutoPricingSettings();\n\n const autoPricingEnabled = watch('eventWideAutoPricing');\n\n const onResetSettings = useCallback(() => {\n setValue('eventAutoPricing.undercutMode', null);\n setValue('eventAutoPricing.undercutAbsoluteAmount', null);\n setValue('eventAutoPricing.undercutRelativeAmount', null);\n\n setValue('eventAutoPricing.compListingMode', null);\n setValue('eventAutoPricing.compListingFloor', null);\n setValue('eventAutoPricing.compListingCeiling', null);\n setValue('eventAutoPricing.compListingSelectedSectionSettings', null);\n setValue(\n 'eventAutoPricing.compListingQuantityScoreAdjustmentOverrideJson',\n null\n );\n setValue('eventAutoPricing.compListingOnlyForSameZoneEnabled', null);\n setValue(\n 'eventAutoPricing.compListingOnlyForSelectedSectionsEnabled',\n null\n );\n }, [setValue]);\n\n const onResetAdvanceSettings = useCallback(() => {\n setValue(\n 'eventAutoPricing.compListingQuantityScoreAdjustmentEnabled',\n null\n );\n setValue('eventAutoPricing.compListingExcludeFanInventory', null);\n\n setValue('eventAutoPricing.circuitBreakerRelativeCeiling', null);\n setValue('eventAutoPricing.circuitBreakerRelativeFloor', null);\n setValue('eventAutoPricing.circuitBreakerMaxDiscountVelocityPercent', null);\n setValue(\n 'eventAutoPricing.circuitBreakerMaxDiscountVelocityTicksInHours',\n null\n );\n setValue('eventAutoPricing.circuitBreakerMinCompListingCount', null);\n\n setValue('eventAutoPricing.outlierMode', null);\n setValue('eventAutoPricing.outlierStandardDeviations', null);\n }, [setValue]);\n\n const circuitBreakerSettings = useMemo(() => {\n if (\n circuitBreakerMaxDiscountVelocityPercent != null ||\n circuitBreakerMaxDiscountVelocityTicksInHours != null ||\n circuitBreakerMinCompListingCount != null ||\n circuitBreakerRelativeCeiling != null ||\n circuitBreakerRelativeFloor != null\n ) {\n // if it has any of these set - use the entire area\n return {\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n };\n }\n\n // if it has any of these set - use the entire area\n return {\n circuitBreakerMaxDiscountVelocityPercent:\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityPercent ??\n null,\n circuitBreakerMaxDiscountVelocityTicksInHours:\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours ??\n null,\n circuitBreakerMinCompListingCount:\n accountPricingSettings?.circuitBreakerMinCompListingCount ?? null,\n circuitBreakerRelativeCeiling:\n accountPricingSettings?.circuitBreakerRelativeCeiling ?? null,\n circuitBreakerRelativeFloor:\n accountPricingSettings?.circuitBreakerRelativeFloor ?? null,\n };\n }, [\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityPercent,\n accountPricingSettings?.circuitBreakerMaxDiscountVelocityTicksInHours,\n accountPricingSettings?.circuitBreakerMinCompListingCount,\n accountPricingSettings?.circuitBreakerRelativeCeiling,\n accountPricingSettings?.circuitBreakerRelativeFloor,\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n ]);\n\n const undercutSettings = useMemo(() => {\n if (\n undercutMode != null ||\n undercutAbsoluteAmount != null ||\n undercutRelativeAmount != null\n ) {\n // if it has any of these set - use the entire area\n return {\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n };\n }\n\n // if it has any of these set - use the entire area\n return {\n undercutMode:\n accountPricingSettings?.undercutMode ?? AutoPricingUndercutMode.Simple,\n undercutAbsoluteAmount:\n accountPricingSettings?.undercutAbsoluteAmount ??\n DEFAULT_UNDERCUT_ABSOLUTE_AMT,\n undercutRelativeAmount:\n accountPricingSettings?.undercutRelativeAmount ??\n DEFAULT_UNDERCUT_RELATIVE_AMT,\n };\n }, [\n accountPricingSettings?.undercutAbsoluteAmount,\n accountPricingSettings?.undercutMode,\n accountPricingSettings?.undercutRelativeAmount,\n undercutAbsoluteAmount,\n undercutMode,\n undercutRelativeAmount,\n ]);\n\n const compListingSettings = useMemo(() => {\n if (\n compListingMode != null ||\n compListingFloor != null ||\n compListingCeiling != null ||\n compListingOnlyForSameZoneEnabled != null ||\n compListingOnlyForSelectedSectionsEnabled != null ||\n compListingExcludeFanInventory != null ||\n compListingSelectedSectionSettings != null ||\n compListingQuantityScoreAdjustmentEnabled != null ||\n compListingQuantityScoreAdjustmentOverrideJson != null\n ) {\n // if it has any of these set - use the entire area\n return {\n compListingMode,\n compListingFloor: compListingFloor ?? DEFAULT_COMP_LISTING_FLOOR,\n compListingCeiling:\n compListingCeiling ??\n (compListingFloor ?? DEFAULT_COMP_LISTING_FLOOR) +\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingSelectedSectionSettings,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n };\n }\n\n // if it has any of these set - use the entire area\n return {\n compListingMode:\n accountPricingSettings?.compListingMode ?? defaultCompListingMode,\n compListingFloor:\n accountPricingSettings?.compListingFloor ?? DEFAULT_COMP_LISTING_FLOOR,\n compListingCeiling:\n accountPricingSettings?.compListingCeiling ??\n (accountPricingSettings?.compListingFloor ??\n DEFAULT_COMP_LISTING_FLOOR) +\n DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR,\n compListingOnlyForSameZoneEnabled:\n accountPricingSettings?.compListingOnlyForSameZoneEnabled ?? null,\n compListingOnlyForSelectedSectionsEnabled:\n accountPricingSettings?.compListingOnlyForSelectedSectionsEnabled ??\n null,\n compListingExcludeFanInventory:\n accountPricingSettings?.compListingExcludeFanInventory ?? null,\n compListingQuantityScoreAdjustmentEnabled:\n accountPricingSettings?.compListingQuantityScoreAdjustmentEnabled ??\n null,\n compListingQuantityScoreAdjustmentOverrideJson:\n accountPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson ??\n null,\n compListingSelectedSectionSettings:\n accountPricingSettings?.compListingSelectedSectionSettings ?? null,\n };\n }, [\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingSelectedSectionSettings,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n accountPricingSettings?.compListingMode,\n accountPricingSettings?.compListingFloor,\n accountPricingSettings?.compListingCeiling,\n accountPricingSettings?.compListingOnlyForSameZoneEnabled,\n accountPricingSettings?.compListingOnlyForSelectedSectionsEnabled,\n accountPricingSettings?.compListingExcludeFanInventory,\n accountPricingSettings?.compListingQuantityScoreAdjustmentEnabled,\n accountPricingSettings?.compListingQuantityScoreAdjustmentOverrideJson,\n accountPricingSettings?.compListingSelectedSectionSettings,\n defaultCompListingMode,\n ]);\n\n const outlierSettings = useMemo(() => {\n if (outlierMode != null || outlierStandardDeviations != null) {\n // if it has any of these set - use the entire area\n return {\n outlierMode,\n outlierStandardDeviations,\n };\n }\n\n // if it has any of these set - use the entire area\n return {\n outlierMode: accountPricingSettings?.outlierMode ?? null,\n outlierStandardDeviations:\n accountPricingSettings?.outlierStandardDeviations ?? null,\n };\n }, [\n accountPricingSettings?.outlierMode,\n accountPricingSettings?.outlierStandardDeviations,\n outlierMode,\n outlierStandardDeviations,\n ]);\n\n const onUndercutChange = useCallback(\n (\n undercutModeNew?: AutoPricingUndercutMode | null,\n undercutAbsoluteAmountNew?: number | null,\n undercutRelativeAmountNew?: number | null\n ) => {\n if (\n undercutModeNew !== undefined ||\n undercutAbsoluteAmountNew !== undefined ||\n undercutRelativeAmountNew !== undefined\n ) {\n setValue(\n 'eventAutoPricing.undercutMode',\n coalesceUndefinedOnly(undercutModeNew, undercutSettings.undercutMode)!\n );\n setValue(\n 'eventAutoPricing.undercutAbsoluteAmount',\n coalesceUndefinedOnly(\n undercutAbsoluteAmountNew,\n undercutSettings.undercutAbsoluteAmount\n )!\n );\n setValue(\n 'eventAutoPricing.undercutRelativeAmount',\n coalesceUndefinedOnly(\n undercutRelativeAmountNew,\n undercutSettings.undercutRelativeAmount\n )!\n );\n }\n },\n [\n setValue,\n undercutSettings.undercutAbsoluteAmount,\n undercutSettings.undercutMode,\n undercutSettings.undercutRelativeAmount,\n ]\n );\n\n const onCompListingChange = useCallback(\n (input: {\n compListingModeNew?: AutoPricingCompListingMode | null;\n compListingFloorNew?: number | null;\n compListingCeilingNew?: number | null;\n compListingOnlyForSameZoneEnabledNew?: boolean | null;\n compListingOnlyForSelectedSectionsEnabledNew?: boolean | null;\n compListingExcludeFanInventoryNew?: boolean | null;\n compListingQuantityScoreAdjustmentEnabledNew?: boolean | null;\n compListingQuantityScoreAdjustmentOverrideJsonNew?: string | null;\n compListingSelectedSectionSettingsNew?: SelectedSectionSettingsWithOptionals | null;\n }) => {\n const {\n compListingModeNew,\n compListingFloorNew,\n compListingCeilingNew,\n compListingOnlyForSameZoneEnabledNew,\n compListingOnlyForSelectedSectionsEnabledNew,\n compListingExcludeFanInventoryNew,\n compListingQuantityScoreAdjustmentEnabledNew,\n compListingQuantityScoreAdjustmentOverrideJsonNew,\n compListingSelectedSectionSettingsNew,\n } = input;\n\n if (\n compListingModeNew !== undefined ||\n compListingFloorNew !== undefined ||\n compListingCeilingNew !== undefined ||\n compListingOnlyForSameZoneEnabledNew !== undefined ||\n compListingOnlyForSelectedSectionsEnabledNew !== undefined ||\n compListingExcludeFanInventoryNew !== undefined ||\n compListingQuantityScoreAdjustmentEnabledNew !== undefined ||\n compListingQuantityScoreAdjustmentOverrideJsonNew !== undefined ||\n compListingSelectedSectionSettingsNew !== undefined\n ) {\n const sanitizedCompListingOnlyForSameZoneEnabledNew =\n compListingOnlyForSelectedSectionsEnabledNew\n ? false\n : compListingOnlyForSameZoneEnabledNew;\n const sanitizedCompListingOnlyForSelectedSectionsEnabledNew =\n compListingOnlyForSameZoneEnabledNew\n ? false\n : compListingOnlyForSelectedSectionsEnabledNew;\n setValue(\n 'eventAutoPricing.compListingMode',\n coalesceUndefinedOnly(\n compListingModeNew,\n compListingSettings.compListingMode\n )!\n );\n setValue(\n 'eventAutoPricing.compListingFloor',\n coalesceUndefinedOnly(\n compListingFloorNew,\n compListingSettings.compListingFloor\n )!\n );\n setValue(\n 'eventAutoPricing.compListingCeiling',\n coalesceUndefinedOnly(\n compListingCeilingNew,\n compListingSettings.compListingCeiling\n )!\n );\n setValue(\n 'eventAutoPricing.compListingOnlyForSameZoneEnabled',\n coalesceUndefinedOnly(\n sanitizedCompListingOnlyForSameZoneEnabledNew,\n compListingSettings.compListingOnlyForSameZoneEnabled\n )!\n );\n setValue(\n 'eventAutoPricing.compListingOnlyForSelectedSectionsEnabled',\n coalesceUndefinedOnly(\n sanitizedCompListingOnlyForSelectedSectionsEnabledNew,\n compListingSettings.compListingOnlyForSelectedSectionsEnabled\n )!\n );\n setValue(\n 'eventAutoPricing.compListingExcludeFanInventory',\n coalesceUndefinedOnly(\n compListingExcludeFanInventoryNew,\n compListingSettings.compListingExcludeFanInventory\n )!\n );\n setValue(\n 'eventAutoPricing.compListingQuantityScoreAdjustmentEnabled',\n coalesceUndefinedOnly(\n compListingQuantityScoreAdjustmentEnabledNew,\n compListingSettings.compListingQuantityScoreAdjustmentEnabled\n )!\n );\n setValue(\n 'eventAutoPricing.compListingQuantityScoreAdjustmentOverrideJson',\n coalesceUndefinedOnly(\n compListingQuantityScoreAdjustmentOverrideJsonNew,\n compListingSettings.compListingQuantityScoreAdjustmentOverrideJson\n )!\n );\n\n setValue(\n 'eventAutoPricing.compListingSelectedSectionSettings',\n coalesceUndefinedOnly(\n mapToSelectedSectionSettings(compListingSelectedSectionSettingsNew),\n compListingSettings.compListingSelectedSectionSettings\n )!\n );\n }\n },\n [\n compListingSettings.compListingCeiling,\n compListingSettings.compListingFloor,\n compListingSettings.compListingMode,\n compListingSettings.compListingOnlyForSameZoneEnabled,\n compListingSettings.compListingOnlyForSelectedSectionsEnabled,\n compListingSettings.compListingExcludeFanInventory,\n compListingSettings.compListingQuantityScoreAdjustmentEnabled,\n compListingSettings.compListingQuantityScoreAdjustmentOverrideJson,\n compListingSettings.compListingSelectedSectionSettings,\n setValue,\n ]\n );\n\n const onCircuitBreakerChange = useCallback(\n (\n circuitBreakerRelativeCeilingNew?: number | null,\n circuitBreakerRelativeFloorNew?: number | null,\n circuitBreakerMaxDiscountVelocityPercentNew?: number | null,\n circuitBreakerMaxDiscountVelocityTicksInHoursNew?: number | null,\n circuitBreakerMinCompListingCountNew?: number | null\n ) => {\n if (\n circuitBreakerRelativeCeilingNew !== undefined ||\n circuitBreakerRelativeFloorNew !== undefined ||\n circuitBreakerMaxDiscountVelocityPercentNew !== undefined ||\n circuitBreakerMaxDiscountVelocityTicksInHoursNew !== undefined ||\n circuitBreakerMinCompListingCountNew !== undefined\n ) {\n setValue(\n 'eventAutoPricing.circuitBreakerRelativeCeiling',\n coalesceUndefinedOnly(\n circuitBreakerRelativeCeilingNew,\n circuitBreakerSettings.circuitBreakerRelativeCeiling\n ) ?? null\n );\n setValue(\n 'eventAutoPricing.circuitBreakerRelativeFloor',\n coalesceUndefinedOnly(\n circuitBreakerRelativeFloorNew,\n circuitBreakerSettings.circuitBreakerRelativeFloor\n ) ?? null\n );\n setValue(\n 'eventAutoPricing.circuitBreakerMaxDiscountVelocityPercent',\n coalesceUndefinedOnly(\n circuitBreakerMaxDiscountVelocityPercentNew,\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityPercent\n ) ?? null\n );\n setValue(\n 'eventAutoPricing.circuitBreakerMaxDiscountVelocityTicksInHours',\n coalesceUndefinedOnly(\n circuitBreakerMaxDiscountVelocityTicksInHoursNew,\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityTicksInHours\n ) ?? null\n );\n setValue(\n 'eventAutoPricing.circuitBreakerMinCompListingCount',\n coalesceUndefinedOnly(\n circuitBreakerMinCompListingCountNew,\n circuitBreakerSettings.circuitBreakerMinCompListingCount\n ) ?? null\n );\n }\n },\n [\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerSettings.circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerSettings.circuitBreakerMinCompListingCount,\n circuitBreakerSettings.circuitBreakerRelativeCeiling,\n circuitBreakerSettings.circuitBreakerRelativeFloor,\n setValue,\n ]\n );\n\n const onOutlierChange = useCallback(\n (\n outlierModeNew?: AutoPricingOutlierMode | null,\n outlierStandardDeviationsNew?: number | null\n ) => {\n if (\n outlierModeNew !== undefined ||\n outlierStandardDeviationsNew !== undefined\n ) {\n setValue(\n 'eventAutoPricing.outlierMode',\n coalesceUndefinedOnly(outlierModeNew, outlierSettings.outlierMode) ??\n null\n );\n setValue(\n 'eventAutoPricing.outlierStandardDeviations',\n coalesceUndefinedOnly(\n outlierStandardDeviationsNew,\n outlierSettings.outlierStandardDeviations\n ) ?? null\n );\n }\n },\n [\n outlierSettings.outlierMode,\n outlierSettings.outlierStandardDeviations,\n setValue,\n ]\n );\n\n const onCompListingModeChange = useCallback(\n (mode: AutoPricingCompListingMode | null) => {\n clearErrors('eventAutoPricing.compListingFloor');\n\n if (!mode) {\n onCompListingChange({\n compListingModeNew: null,\n compListingFloorNew: null,\n compListingCeilingNew: null,\n });\n return;\n }\n\n onCompListingChange({\n compListingModeNew: mode,\n // Reset flag on mode change\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n\n if (mode === AutoPricingCompListingMode.ParentListing) {\n onUndercutChange(AutoPricingUndercutMode.Simple);\n }\n },\n [clearErrors, onCompListingChange, onUndercutChange]\n );\n\n return {\n canAutoPrice,\n uiCurrency,\n currencyNumberFormat,\n showAutoPricingSettings: !(\n !autoPricingEnabled || !hasEventPricingPermission\n ),\n\n autoPriceFrequency,\n autoPricingEnabled,\n onResetSettings,\n onResetAdvanceSettings,\n accountPricingSettings,\n event,\n\n ...circuitBreakerSettings,\n ...compListingSettings,\n ...undercutSettings,\n ...outlierSettings,\n\n onUndercutChange,\n onCompListingChange,\n onCircuitBreakerChange,\n onOutlierChange,\n onCompListingModeChange,\n };\n};\n","import { ChangeEvent } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { Stack } from 'src/core/ui';\nimport { Slider } from 'src/core/ui/Slider';\nimport { DetailGroup } from 'src/modals/common';\nimport {\n convertSliderValueFromServer,\n convertSliderValueToServer,\n SLIDER_MAX,\n SLIDER_MIN,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EventPricingSeatMapForm } from 'src/utils/eventWithDataUtils';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { AutoPricingCompListingMode } from 'src/WebApiController';\n\nimport * as styles from './EventPricingSection.css';\nimport { useEventAutoPricingSettings } from './useEventAutoPricingSettings';\n\nexport const CompListingSameQualitySettings = ({\n disabled,\n}: {\n disabled?: boolean;\n}) => {\n useFormContext();\n\n const {\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingQuantityScoreAdjustmentEnabled,\n onCompListingChange,\n } = useEventAutoPricingSettings();\n\n const isCompListingAmountDisabled =\n disabled ||\n !compListingMode ||\n compListingMode === AutoPricingCompListingMode.SameZone ||\n compListingMode === AutoPricingCompListingMode.SameEvent ||\n compListingMode === AutoPricingCompListingMode.ParentListing;\n\n return (\n <>\n \n {!isCompListingAmountDisabled && (\n \n (\n {roundToPrecision(val, 0)}%\n )}\n onValueChange={([floor, ceil]) => {\n onCompListingChange({\n compListingFloorNew: convertSliderValueToServer(floor),\n compListingCeilingNew: convertSliderValueToServer(ceil),\n });\n }}\n />\n
    \n \n
    \n
    \n \n )}\n \n {compListingMode === AutoPricingCompListingMode.QualityScore && (\n \n \n }\n >\n ) => e.stopPropagation()}\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (isChecked !== compListingQuantityScoreAdjustmentEnabled) {\n onCompListingChange({\n compListingQuantityScoreAdjustmentEnabledNew: isChecked,\n });\n }\n }}\n />\n \n \n )}\n \n );\n};\n","import { ChangeEvent, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { SeatScoreQuantityMultiplerGraph } from 'src/components/Events/RelativeScoreGraph/SeatScoreQuantityMultiplierGraph';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { PillList } from 'src/core/ui/PillList';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { SectionSelectDialog } from 'src/dialogs/SectionSelectDialog';\nimport { useAvailableAutopricingModes } from 'src/hooks/useAvailableAutopricingModes';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUndercutAmountSettings } from 'src/hooks/useUndercutAmountSettings';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { DetailGroup, DetailSection, SectionContent } from 'src/modals/common';\nimport { EditIcon, IconsFill, PlusIcon, ResetIcon } from 'src/svgs/Viagogo';\nimport {\n getUndercutPriceRepresentingMode,\n SLIDER_MAX,\n SLIDER_MIN,\n UNDERCUT_PRICE_MODE_OPTIONS,\n UndercutPriceSettingsMode,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EventPricingSeatMapForm } from 'src/utils/eventWithDataUtils';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport {\n AutoPricingCompListingMode,\n AutoPricingUndercutMode,\n Feature,\n} from 'src/WebApiController';\n\nimport { RestrictSelectionType } from '../ListingDetails/components/PricingSection/AutoPricingSection.types';\nimport { CompListingSameQualitySettings } from './components/CompListingSameQualitySettings';\nimport * as styles from './components/EventPricingSection.css';\nimport { useEventAutoPricingSettings } from './components/useEventAutoPricingSettings';\n\nexport const EventAutoPricingSettings = ({\n disabled,\n hasAnyScore,\n}: {\n disabled: boolean;\n hasAnyScore: boolean;\n}) => {\n const { setValue, clearErrors, formState } =\n useFormContext();\n\n const sectionSelectDialog = useBasicDialog();\n\n const {\n canAutoPrice,\n autoPriceFrequency,\n autoPricingEnabled,\n uiCurrency,\n\n onResetSettings,\n onResetAdvanceSettings,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n compListingMode,\n compListingFloor,\n compListingCeiling,\n compListingSelectedSectionSettings,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n\n compListingQuantityScoreAdjustmentOverrideJson,\n\n onUndercutChange,\n onCompListingChange,\n onCompListingModeChange,\n } = useEventAutoPricingSettings();\n\n const hasExcludeFanInventory = useUserHasFeature(Feature.ExcludeFanInventory);\n const hasAutoPriceFrequencyFeature = useUserHasFeature(\n Feature.AutoPriceFrequency\n );\n\n const restrictSelection = Boolean(\n compListingOnlyForSameZoneEnabled ||\n compListingOnlyForSelectedSectionsEnabled\n );\n\n const {\n undercutAbsoluteAmountMode,\n setUndercutAbsoluteAmountMode,\n undercutRelativeAmountMode,\n setUndercutRelativeAmountMode,\n } = useUndercutAmountSettings(undercutAbsoluteAmount, undercutRelativeAmount);\n\n const { venueMapInfo } = useEventMapContext();\n\n const compListingFloorError =\n formState.errors.eventAutoPricing?.compListingFloor?.message;\n const compListingSelectedSectionError =\n formState.errors.eventAutoPricing?.compListingSelectedSectionSettings\n ?.message;\n\n const undercutAbsoluteAmountError =\n formState.errors.eventAutoPricing?.undercutAbsoluteAmount?.message;\n const undercutRelativeAmountError =\n formState.errors.eventAutoPricing?.undercutRelativeAmount?.message;\n\n const isMobile = useMatchMedia('mobile');\n\n const {\n compListingModes,\n compListingModesDisabled,\n undercutModes,\n undercutModesDisabled,\n restrictSelectionTypes,\n } = useAvailableAutopricingModes(\n true,\n undercutMode,\n compListingMode,\n hasAnyScore,\n false /* event config won't ever show parent listing */,\n false /* isGlobalEdit */,\n compListingOnlyForSelectedSectionsEnabled\n );\n\n const isDealScoreMode = undercutMode === AutoPricingUndercutMode.Deal;\n\n const isParentListingMode =\n compListingMode === AutoPricingCompListingMode.ParentListing;\n\n const showCompListingRestictSelectionDetails =\n compListingMode != null &&\n (compListingMode === AutoPricingCompListingMode.QualityScore ||\n compListingMode === AutoPricingCompListingMode.SameEvent ||\n compListingMode === AutoPricingCompListingMode.SameZone);\n\n const showCompListingSettingsDetails = !(\n !compListingMode ||\n compListingMode === AutoPricingCompListingMode.SameZone ||\n compListingMode === AutoPricingCompListingMode.SameEvent ||\n compListingMode === AutoPricingCompListingMode.ParentListing\n );\n\n const selectedSectionsPills = useMemo(\n () =>\n compListingSelectedSectionSettings?.sectionIdFilter\n ?.map((sectionId) => {\n const section = venueMapInfo?.sections.find(\n (section) => sectionId === section.id\n );\n return {\n value: section?.id.toString() ?? '',\n display: section?.name ?? '',\n };\n })\n .filter((info) => info.value && info.display) ?? [],\n [\n compListingSelectedSectionSettings?.sectionIdFilter,\n venueMapInfo?.sections,\n ]\n );\n\n return (\n <>\n {canAutoPrice && (\n }>\n \n \n \n \n \n \n {canAutoPrice && (\n \n }\n >\n \n ) =>\n e.stopPropagation()\n }\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (isChecked !== autoPricingEnabled) {\n setValue('eventWideAutoPricing', isChecked);\n }\n }}\n />\n
    \n \n )}\n
    \n \n
    \n \n
    \n e.stopPropagation()}\n onChange={onCompListingModeChange}\n />\n
    \n
    \n {showCompListingSettingsDetails && (\n <>\n \n \n
    \n \n
    \n \n {\n let v = parseFloat(e.target.value);\n v = parseFloat(v.toFixed(2));\n if (isNaN(v)) {\n onCompListingChange({\n compListingFloorNew: null,\n });\n return;\n }\n clearErrors('eventAutoPricing.compListingFloor');\n if (v < SLIDER_MIN) {\n onCompListingChange({\n compListingFloorNew: SLIDER_MIN,\n });\n } else if (v > SLIDER_MAX) {\n onCompListingChange({\n compListingFloorNew: SLIDER_MAX,\n });\n } else {\n onCompListingChange({ compListingFloorNew: v });\n }\n }}\n />\n \n
    \n {' '}\n \n
    \n \n {\n let v = parseFloat(e.target.value);\n v = parseFloat(v.toFixed(2));\n if (isNaN(v)) {\n onCompListingChange({\n compListingCeilingNew: null,\n });\n return;\n }\n\n clearErrors('eventAutoPricing.compListingCeiling');\n if (v < SLIDER_MIN) {\n onCompListingChange({\n compListingCeilingNew: SLIDER_MIN,\n });\n } else if (v > SLIDER_MAX) {\n onCompListingChange({\n compListingCeilingNew: SLIDER_MAX,\n });\n } else {\n onCompListingChange({ compListingCeilingNew: v });\n }\n }}\n />\n \n
    \n \n
    \n
    \n
    \n\n \n \n )}\n {showCompListingRestictSelectionDetails && (\n \n }\n >\n ) =>\n e.stopPropagation()\n }\n onChange={(e) => {\n const isChecked = e.target.checked;\n if (isChecked) {\n if (\n !compListingOnlyForSameZoneEnabled &&\n !compListingOnlyForSelectedSectionsEnabled\n ) {\n // set zone by default\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: true,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n }\n } else {\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n }\n }}\n />\n \n {restrictSelection && (\n \n
    \n \n
    \n e.stopPropagation()}\n onChange={(v) => {\n clearErrors('eventAutoPricing.compListingFloor');\n if (v === RestrictSelectionType.SameZone) {\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: true,\n compListingOnlyForSelectedSectionsEnabledNew: false,\n });\n } else {\n onCompListingChange({\n compListingOnlyForSameZoneEnabledNew: false,\n compListingOnlyForSelectedSectionsEnabledNew: true,\n });\n }\n }}\n />\n
    \n )}\n {compListingOnlyForSelectedSectionsEnabled && (\n \n \n {compListingSelectedSectionSettings?.sectionIdFilter\n ?.length ? (\n <>\n \n \n \n }\n textContentId={ContentId.EditSections}\n onClick={sectionSelectDialog.launchDialog}\n disabled={disabled}\n style={{ paddingLeft: 0, paddingRight: 0 }}\n />\n \n ) : (\n \n }\n textContentId={ContentId.SelectSections}\n onClick={sectionSelectDialog.launchDialog}\n disabled={disabled}\n style={{ padding: 0 }}\n />\n )}\n \n \n )}\n
    \n )}\n \n \n \n {isParentListingMode ? (\n
    \n \n
    \n ) : (\n <>\n \n \n
    \n \n
    \n e.stopPropagation()}\n onChange={(v) => {\n clearErrors('eventAutoPricing.undercutAbsoluteAmount');\n clearErrors('eventAutoPricing.undercutRelativeAmount');\n if (v) {\n onUndercutChange(v as AutoPricingUndercutMode);\n } else {\n onUndercutChange(null, null, null);\n }\n }}\n />\n
    \n \n
    \n
    \n
    \n {isDealScoreMode && (\n
    \n \n
    \n )}\n \n )}\n \n \n {\n if (!value) return;\n const mode = value as UndercutPriceSettingsMode;\n setUndercutRelativeAmountMode(mode);\n if (undercutRelativeAmount) {\n const curAmountAbs = Math.abs(undercutRelativeAmount);\n onUndercutChange(\n undefined,\n undefined,\n getUndercutPriceRepresentingMode(curAmountAbs, mode)\n );\n }\n }}\n />\n
    \n \n
    \n \n {\n clearErrors('eventAutoPricing.undercutAbsoluteAmount');\n clearErrors('eventAutoPricing.undercutRelativeAmount');\n const v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n let relativeValue = Math.min(v, 100) / 100;\n relativeValue = getUndercutPriceRepresentingMode(\n relativeValue,\n undercutRelativeAmountMode ??\n UndercutPriceSettingsMode.Discount\n );\n\n onUndercutChange(undefined, undefined, relativeValue);\n } else {\n onUndercutChange(undefined, undefined, null);\n }\n }}\n />\n \n
    then
    \n {\n if (!value) return;\n const mode = value as UndercutPriceSettingsMode;\n setUndercutAbsoluteAmountMode(mode);\n if (undercutAbsoluteAmount) {\n const curAmountAbs = Math.abs(undercutAbsoluteAmount);\n onUndercutChange(\n undefined,\n getUndercutPriceRepresentingMode(curAmountAbs, mode)\n );\n }\n }}\n />\n
    by
    \n \n {\n clearErrors('eventAutoPricing.undercutAbsoluteAmount');\n clearErrors('eventAutoPricing.undercutRelativeAmount');\n let v = parseFloat(e.target.value);\n if (v >= 0 && v <= Number.MAX_VALUE) {\n v = getUndercutPriceRepresentingMode(\n v,\n undercutRelativeAmountMode ??\n UndercutPriceSettingsMode.Discount\n );\n\n onUndercutChange(undefined, undefined, v);\n } else {\n onUndercutChange(undefined, null);\n }\n }}\n />\n \n
    \n
    \n {hasAutoPriceFrequencyFeature ? (\n <>\n \n \n \n \n \n \n \n \n }\n onChange={(e) => {\n let v = parseInt(e.target.value);\n if (!isNaN(v)) {\n if (v < 1) {\n v = 1;\n }\n setValue('eventAutoPricing.autoPriceFrequency', v);\n return;\n } else {\n setValue(\n 'eventAutoPricing.autoPriceFrequency',\n null\n );\n }\n }}\n />\n \n \n \n \n ) : null}\n \n \n \n \n {\n onCompListingChange({\n compListingQuantityScoreAdjustmentOverrideJsonNew:\n JSON.stringify({ overrides, segments }),\n });\n }}\n />\n \n \n }\n textContentId={ContentId.ResetSettings}\n onClick={() => {\n onResetSettings();\n onResetAdvanceSettings();\n }}\n />\n \n \n \n )}\n {\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter: selectedSections.map((s) => s.id),\n rowIdFilter: compListingSelectedSectionSettings?.rowIdFilter ?? [],\n sectionRowIdFilter:\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {},\n };\n onCompListingChange({ compListingSelectedSectionSettingsNew });\n sectionSelectDialog.closeDialog();\n clearErrors('eventAutoPricing.compListingSelectedSectionSettings');\n }}\n onClosed={sectionSelectDialog.closeDialog}\n />\n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Button, Stack } from 'src/core/ui';\nimport { ChangeRowScoreDialogMultiSection } from 'src/dialogs/ChangeRowScoreDialog';\nimport { SectionRowTableDialog } from 'src/dialogs/SectionRowTableDialog/SectionRowTableDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useGetEventAutoPricingSettings } from 'src/hooks/useGetEventAutoPricingSettings';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EventPricingSeatMapForm } from 'src/utils/eventWithDataUtils';\nimport {\n getCompleteEventConfigScoreOverrides,\n getEventConfigScoreOverride,\n} from 'src/utils/seatScoreUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n EventConfigScoreOverride,\n Feature,\n PricingClient,\n RowInfo,\n ScoreModel,\n SectionInfo,\n SectionScoreOverride,\n} from 'src/WebApiController';\n\nimport { DetailSection, SectionContent } from '../common';\nimport { EventVenueHeatMap } from '../common/EventSeatMap';\nimport { EventSeatMapSelection } from '../EventSeatMapSelection';\nimport { EventAutoPricingSettingsFormContent } from './components/EventAutoPricingSettingsFormContent/EventAutoPricingSettingsFormContent';\nimport { EventAutoPricingSettings } from './EventAutoPricingSettings';\nimport { EventPricingSeatMap } from './EventPricingSeatMap';\nimport * as styles from './EventPricingSeatMap.css';\n\nexport type EventScoreUpdate = {\n newScoreOverrides?: SectionScoreOverride[];\n newConfigPayload?: string;\n};\n\nexport const EventPricingSeatMapBody = () => {\n const [isLoading, setIsLoading] = useState(false);\n const { watch, setValue, getValues, formState } =\n useFormContext();\n\n const hasScaledSeatScoreFeature = useUserHasFeature(Feature.ScaledSeatScore);\n\n const {\n event,\n venueMapInfo,\n venueMapsByScoreModelQuery,\n activeConfigOverride,\n } = useEventMapContext();\n const { setModal } = useContext(ModalContext);\n const { activeAccountWebClientConfig, loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const uiCurrency = useMemo(\n () => getUiCurrency(loginContext?.user?.activeAccount?.currencyCode),\n [getUiCurrency, loginContext?.user?.activeAccount?.currencyCode]\n );\n\n const { pricingSettings } = useGetEventAutoPricingSettings(event!, true);\n const hasScoreSectionRowTableFeature = useUserHasFeature(\n Feature.ScoreSectionRowTable\n );\n const hasEditMapInListingTabFeature = useUserHasFeature(\n Feature.EditMapInListingTab\n );\n const hasIntelligibleAutoPricingFeature = useUserHasFeature(\n Feature.IntelligibleAutoPricingSettings\n );\n const hasAllowSeatScoreCompListingModeFeature = useUserHasFeature(\n Feature.AllowSeatScoreCompListingMode\n );\n const hasAutoPriceFrequencyFeature = useUserHasFeature(\n Feature.AutoPriceFrequency\n );\n\n const sanitizedScoreModel = useMemo(() => {\n const scoreModel = pricingSettings?.scoreModel;\n if (scoreModel) return scoreModel;\n\n const { AdvancedVenueGeometry, MergedVenueGeometry } =\n venueMapsByScoreModelQuery.data ?? {};\n if (AdvancedVenueGeometry) return ScoreModel.AdvancedVenueGeometry;\n if (MergedVenueGeometry) return ScoreModel.MergedVenueGeometry;\n return ScoreModel.VenueGeometry;\n }, [pricingSettings?.scoreModel, venueMapsByScoreModelQuery.data]);\n\n const modeledSectionScores = useMemo(() => {\n switch (sanitizedScoreModel) {\n case ScoreModel.AdvancedVenueGeometry:\n return venueMapsByScoreModelQuery.data?.AdvancedVenueGeometry;\n\n case ScoreModel.MergedVenueGeometry:\n return venueMapsByScoreModelQuery.data?.MergedVenueGeometry;\n\n default:\n return venueMapsByScoreModelQuery.data?.VenueGeometry;\n }\n }, [\n sanitizedScoreModel,\n venueMapsByScoreModelQuery.data?.AdvancedVenueGeometry,\n venueMapsByScoreModelQuery.data?.MergedVenueGeometry,\n venueMapsByScoreModelQuery.data?.VenueGeometry,\n ]);\n\n // Hook form fields\n const eventScoreOverride = watch('eventScoreOverride');\n const configPayload = watch('eventScoreOverride.cfgPayload');\n const name = watch('eventScoreOverride.name');\n const scoreOverrides =\n watch('eventScoreOverride.scoreOverrides') ??\n getCompleteEventConfigScoreOverrides(modeledSectionScores?.sectionScores);\n const scoreModel = watch('eventAutoPricing.scoreModel');\n\n useEffect(() => {\n if (sanitizedScoreModel !== scoreModel) {\n setValue('eventAutoPricing.scoreModel', sanitizedScoreModel);\n }\n }, [sanitizedScoreModel, scoreModel, setValue]);\n\n const hasAnyScore = useMemo(\n () => scoreOverrides?.some((s) => s.score),\n [scoreOverrides]\n );\n\n const newModelName = useContent(ContentId.NewModel);\n const changeRowScoreDialog = useBasicDialog();\n const sectionRowDialog = useBasicDialog();\n\n const onSectionSeatScoreChanged = useCallback(\n ({ newScoreOverrides, newConfigPayload }: EventScoreUpdate) => {\n let newOverride: EventConfigScoreOverride | undefined = undefined;\n if (eventScoreOverride) {\n newOverride = { ...eventScoreOverride };\n } else if (activeConfigOverride) {\n newOverride = { ...activeConfigOverride };\n } else {\n newOverride = getEventConfigScoreOverride(\n event!.viagId!,\n modeledSectionScores ?? venueMapInfo!,\n newModelName,\n null\n );\n }\n\n if (newScoreOverrides != null) {\n newOverride.scoreOverrides = newScoreOverrides;\n }\n if (newConfigPayload != null) {\n newOverride.cfgPayload = newConfigPayload;\n }\n\n if (newScoreOverrides != null || newConfigPayload != null) {\n setValue('eventScoreOverride', newOverride);\n }\n\n return Promise.resolve();\n },\n [\n eventScoreOverride,\n activeConfigOverride,\n event,\n modeledSectionScores,\n venueMapInfo,\n newModelName,\n setValue,\n ]\n );\n\n const onSectionRowChange = useCallback(\n (updated: SectionScoreOverride[]) => {\n let newOverride: EventConfigScoreOverride | undefined = undefined;\n if (eventScoreOverride) {\n newOverride = { ...eventScoreOverride };\n } else if (activeConfigOverride) {\n newOverride = { ...activeConfigOverride };\n } else {\n newOverride = getEventConfigScoreOverride(\n event!.viagId!,\n modeledSectionScores ?? venueMapInfo!,\n newModelName,\n null\n );\n }\n newOverride.scoreOverrides = updated;\n setValue('eventScoreOverride', newOverride);\n },\n [\n activeConfigOverride,\n event,\n eventScoreOverride,\n modeledSectionScores,\n newModelName,\n setValue,\n venueMapInfo,\n ]\n );\n\n const onRowSeatScoreChanged = useCallback(\n (\n newScoreOverrides: SectionScoreOverride[],\n newConfigPayload: string | null\n ) => {\n onSectionSeatScoreChanged({\n newScoreOverrides,\n newConfigPayload: newConfigPayload ?? undefined,\n }).then(() => {\n changeRowScoreDialog.closeDialog();\n });\n },\n [onSectionSeatScoreChanged, changeRowScoreDialog]\n );\n\n const onSavingSeatMap = useCallback(() => {\n const eventForm = getValues();\n if (\n eventForm.eventScoreOverride &&\n !isEqual(\n eventForm.eventScoreOverride,\n formState.defaultValues?.eventScoreOverride\n )\n ) {\n return tryInvokeApi(\n async () => {\n setIsLoading(true);\n\n const client = new PricingClient(activeAccountWebClientConfig);\n const newId = await client.upsertEventSeatMapScoreOverride({\n ...eventForm.eventScoreOverride!,\n scoreOverrides: getCompleteEventConfigScoreOverrides(\n modeledSectionScores?.sectionScores,\n eventForm.eventScoreOverride!.scoreOverrides,\n false,\n hasScaledSeatScoreFeature\n )!,\n });\n\n if (event?.viagId && newId !== activeConfigOverride?.id) {\n await client.setEventSeatMapScoreOverride(\n event.viagId,\n newId,\n null\n );\n }\n },\n (error) => {\n showErrorDialog(\n 'PricingClient.upsertEventSeatMapScoreOverride',\n error,\n {\n trackErrorData: { event },\n }\n );\n },\n () => {\n setIsLoading(false);\n }\n );\n }\n\n return Promise.resolve();\n }, [\n activeAccountWebClientConfig,\n activeConfigOverride?.id,\n event,\n formState.defaultValues?.eventScoreOverride,\n getValues,\n hasScaledSeatScoreFeature,\n modeledSectionScores?.sectionScores,\n showErrorDialog,\n ]);\n\n const allSections = useMemo(\n () => venueMapInfo?.sections ?? [],\n [venueMapInfo?.sections]\n );\n\n const sectionWithRowsWithOrdinal = useMemo(() => {\n const sections: SectionInfo[] = [];\n const rows: Record = {};\n allSections.forEach((s) => {\n rows[s.id] = s.rows\n .filter((r) => !r.isSpeculative && r.ordinal != null)\n .toSorted((a, b) => (a.ordinal ?? 0) - (b.ordinal ?? 0));\n });\n\n allSections.forEach((s) => {\n if (rows[s.id].length > 0) {\n sections.push(s);\n }\n });\n return sections;\n }, [allSections]);\n\n const scoreName = useMemo(() => {\n if (name) {\n return name;\n }\n\n if (sanitizedScoreModel === ScoreModel.AdvancedVenueGeometry) {\n return ;\n }\n\n if (sanitizedScoreModel === ScoreModel.MergedVenueGeometry) {\n return ;\n }\n\n if (sanitizedScoreModel === ScoreModel.VenueGeometry) {\n return ;\n }\n\n return ;\n }, [name, sanitizedScoreModel]);\n\n if (!event) {\n return null;\n }\n\n return (\n <>\n {hasIntelligibleAutoPricingFeature ? (\n \n ) : (\n \n )}\n\n {!hasEditMapInListingTabFeature && (\n <>\n }>\n \n {isLoading ? (\n \n ) : (\n \n
    \n \n
    \n
    \n
    \n {sectionWithRowsWithOrdinal.length > 0 && (\n \n \n \n \n {hasScoreSectionRowTableFeature && (\n \n \n \n )}\n \n )}\n
    \n \n
    \n {scoreName}\n {' -'}\n
    \n {\n // We need to save the seat map prior to closing the modal and launch the\n // seat map selection modal\n onSavingSeatMap().then(() =>\n setModal({\n children: (\n \n ),\n clickOutsideToClose: true,\n size: 'slide-in',\n }}\n />\n ),\n clickOutsideToClose: true,\n size: 'slide-in',\n })\n );\n }}\n >\n \n \n
    \n \n
    \n \n
    \n
  • \n \n
  • \n
  • \n \n
  • \n
    \n
    \n
    \n )}\n
    \n
    \n \n \n \n )}\n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport {\n ComponentProps,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport {\n EventMapContextProvider,\n useEventMapContext,\n} from 'src/contexts/EventMapContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { ApplyHeatMapToAllEventsDialog } from 'src/dialogs/ApplyHeatMapToAllEventsDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useGetEventAutoPricingSettings } from 'src/hooks/useGetEventAutoPricingSettings';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n EventPricingSeatMapForm,\n validateAutoPricingSettings,\n} from 'src/utils/eventWithDataUtils';\nimport { getCompleteEventConfigScoreOverrides } from 'src/utils/seatScoreUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n Event,\n EventConfigScoreOverride,\n Feature,\n ListingClient,\n PricingClient,\n} from 'src/WebApiController';\n\nimport { CancellableFormFooter } from '../common';\nimport { CancellableFormHeader } from '../common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from '../common/EventEntityHeader';\nimport { modalDetails } from '../common/Modals.css';\nimport { ModalBody, ModalFooter } from '../Modal';\nimport { ModalBodyDataContainer } from '../Modal/Modal.styled';\nimport { EventPricingSeatMapBody } from './EventPricingSeatMapBody';\n\ntype EventPricingSeatMapProps = {\n event: Event;\n};\n\nexport const EventPricingSeatMap = ({ event }: EventPricingSeatMapProps) => {\n return (\n \n \n \n );\n};\n\nexport const EventPricingSeatMapFormBody = ({\n event,\n}: EventPricingSeatMapProps) => {\n const { activeConfigOverride, mapConfigOverridesQuery, isMapLoading } =\n useEventMapContext();\n\n const { pricingSettings, allListingEnabledPricing, pricingSettingsQuery } =\n useGetEventAutoPricingSettings(event, true);\n\n const methods = useForm({\n defaultValues: {\n eventAutoPricing: pricingSettings,\n eventWideAutoPricing: allListingEnabledPricing,\n eventScoreOverride: activeConfigOverride,\n },\n });\n\n useEffect(() => {\n if (\n (activeConfigOverride &&\n !isEqual(\n methods.formState.defaultValues?.eventScoreOverride,\n activeConfigOverride\n )) ||\n (pricingSettings &&\n !isEqual(\n methods.formState.defaultValues?.eventAutoPricing,\n pricingSettings\n )) ||\n (allListingEnabledPricing != null &&\n methods.formState.defaultValues?.eventWideAutoPricing !==\n allListingEnabledPricing)\n ) {\n methods.reset({\n eventAutoPricing: pricingSettings,\n eventWideAutoPricing: allListingEnabledPricing,\n eventScoreOverride: activeConfigOverride,\n });\n }\n }, [\n activeConfigOverride,\n allListingEnabledPricing,\n methods,\n pricingSettings,\n ]);\n\n if (\n (!activeConfigOverride &&\n !pricingSettings &&\n mapConfigOverridesQuery.isLoading) ||\n isMapLoading ||\n pricingSettingsQuery.isLoading\n ) {\n return ;\n }\n\n return (\n \n pricingSettingsQuery.refetch()}\n />\n \n );\n};\n\nconst EventPricingSeatMapContent = ({\n watch,\n formState,\n handleSubmit,\n clearErrors,\n setError,\n setValue,\n refreshAutoPricingSettings,\n}: Omit<\n ComponentProps>,\n 'children'\n> & { refreshAutoPricingSettings: () => void }) => {\n const { closeModal } = useContext(ModalContext);\n const { activeAccountWebClientConfig } = useAppContext();\n const [isLoading, setIsLoading] = useState(false);\n const { showErrorDialog } = useErrorBoundaryContext();\n const { event, activeConfigOverride, venueMapInfo, mapConfigOverridesQuery } =\n useEventMapContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const hasScaledSeatScoreFeature = useUserHasFeature(Feature.ScaledSeatScore);\n\n const curFormValues = watch();\n\n const compListingFloorCeilingError = useContent(\n ContentId.CompListingFloorMustLessThanCeiling\n );\n const requiredMsg = useContent(ContentId.Required);\n\n const [applyToAllEventsForConfig, setApplyToAllEventsForConfig] = useState<\n EventConfigScoreOverride | undefined\n >();\n const { launchDialog, closeDialog, dialogProps } = useBasicDialog();\n\n const onSubmit = useCallback(\n async (eventForm: EventPricingSeatMapForm) => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const client = new PricingClient(activeAccountWebClientConfig);\n const listingClient = new ListingClient(activeAccountWebClientConfig);\n const promises: Promise[] = [];\n\n if (\n eventForm.eventWideAutoPricing !==\n formState.defaultValues?.eventWideAutoPricing\n ) {\n promises.push(\n listingClient.updateAutoPricingEnabledForEvent(\n event!.posIds,\n !!eventForm.eventWideAutoPricing\n )\n );\n }\n\n if (\n event?.viagId &&\n eventForm.eventAutoPricing &&\n !isEqual(\n eventForm.eventAutoPricing,\n formState.defaultValues?.eventAutoPricing\n )\n ) {\n promises.push(\n client.mergeEventPricingSettings(\n event.viagId,\n eventForm.eventAutoPricing!\n )\n );\n }\n\n if (promises.length) {\n await Promise.all(promises);\n setActivePosEntity(0); // This will clear any active listing so it will pick up the latest pricing change here when re-open\n refreshAutoPricingSettings();\n }\n\n if (\n event?.viagId &&\n eventForm.eventScoreOverride &&\n !isEqual(\n eventForm.eventScoreOverride,\n formState.defaultValues?.eventScoreOverride\n )\n ) {\n const newId = await client.upsertEventSeatMapScoreOverride({\n ...eventForm.eventScoreOverride,\n viagogoEventId: event.viagId,\n scoreOverrides: getCompleteEventConfigScoreOverrides(\n venueMapInfo?.sectionScores,\n eventForm.eventScoreOverride.scoreOverrides,\n false,\n hasScaledSeatScoreFeature\n )!,\n });\n\n const oldId = eventForm.eventScoreOverride?.id;\n setValue('eventScoreOverride.id', newId);\n\n const result = await mapConfigOverridesQuery.refetch();\n const newConfig = result.data?.find((ev) => ev.id === newId);\n\n if (\n newId !== activeConfigOverride?.id &&\n oldId <= 0 &&\n (newConfig?.eventIds?.length ?? 0) >= 2\n ) {\n setApplyToAllEventsForConfig(newConfig);\n launchDialog();\n return;\n }\n\n await client.setEventSeatMapScoreOverride(\n event.viagId,\n newId,\n null\n );\n }\n\n closeModal(true);\n },\n (error) => {\n showErrorDialog('PricingClient.updates', error, {\n trackErrorData: eventForm,\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n activeConfigOverride?.id,\n closeModal,\n event,\n formState.defaultValues?.eventAutoPricing,\n formState.defaultValues?.eventScoreOverride,\n formState.defaultValues?.eventWideAutoPricing,\n hasScaledSeatScoreFeature,\n launchDialog,\n mapConfigOverridesQuery,\n refreshAutoPricingSettings,\n setActivePosEntity,\n setValue,\n showErrorDialog,\n venueMapInfo?.sectionScores,\n ]\n );\n\n const hasChanges = useCallback(\n (eventForm: EventPricingSeatMapForm) => {\n // Make sure we only send back the settable props\n return (\n !isEqual(\n formState.defaultValues?.eventAutoPricing,\n eventForm.eventAutoPricing\n ) ||\n !isEqual(\n formState.defaultValues?.eventScoreOverride,\n eventForm.eventScoreOverride\n ) ||\n eventForm.eventWideAutoPricing !==\n formState.defaultValues?.eventWideAutoPricing\n );\n },\n [\n formState.defaultValues?.eventAutoPricing,\n formState.defaultValues?.eventScoreOverride,\n formState.defaultValues?.eventWideAutoPricing,\n ]\n );\n\n const onSubmitHandler = useCallback(() => {\n if (!hasChanges(curFormValues)) return;\n\n if (\n !validateAutoPricingSettings(\n clearErrors,\n setError,\n setValue,\n curFormValues,\n compListingFloorCeilingError,\n requiredMsg\n )\n ) {\n return;\n }\n\n handleSubmit(onSubmit)();\n }, [\n clearErrors,\n compListingFloorCeilingError,\n curFormValues,\n handleSubmit,\n hasChanges,\n onSubmit,\n requiredMsg,\n setError,\n setValue,\n ]);\n\n const formHasChanges = hasChanges(curFormValues);\n\n return (\n <>\n \n }\n />\n \n\n \n
    \n \n \n \n
    \n
    \n\n \n \n \n \n \n\n {\n setApplyToAllEventsForConfig(undefined);\n closeDialog();\n closeModal(true);\n }}\n />\n \n );\n};\n","import { ReactNode } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { shared, vars } from 'src/core/themes';\nimport { Button, Card } from 'src/core/ui';\nimport { IconsFill, MinusIcon, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './SeatScoreConfigCard.css';\n\nexport type SeatScoreConfigCardProps = {\n label: ReactNode;\n importance: number;\n showChildren: boolean;\n onIncrementImportance?: () => void;\n onDecrementImportance?: () => void;\n /**\n * Pass the BezierGraph as a child\n */\n children?: ReactNode;\n};\n\n/**\n * Card that shows seat score configuration graph for usage in the seat score override editing view.\n * @param props\n * @returns\n */\nexport function SeatScoreConfigCard({\n label,\n importance,\n showChildren,\n onIncrementImportance,\n onDecrementImportance,\n children,\n}: SeatScoreConfigCardProps) {\n return (\n \n
    \n
    {label}
    \n \n \n \n
    \n
    {importance}
    \n
    \n \n
    \n
    \n = 10}\n onClick={onIncrementImportance}\n >\n \n \n
    \n \n {children}\n \n
    \n );\n}\n","import { DownloadButton } from 'src/components/Buttons/DownloadButton';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DnDFileUploader } from 'src/core/POS/DnDFileUploader';\nimport { Stack } from 'src/core/ui';\nimport { WarningOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as modalHeaderStyles from '../MessagesAddSourceModal/MessagesAddSourceModal.css';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '../Modal';\n\nexport function UploadSeatScoreModal({\n isOpen,\n isLoading,\n uploadedFile,\n onDownloadTemplateClick,\n onUploadedFileChange,\n onCsvFileUploaded,\n onClose,\n}: {\n isOpen?: boolean;\n isLoading?: boolean;\n uploadedFile?: File | undefined;\n onDownloadTemplateClick: () => void;\n onUploadedFileChange: (file: File) => void;\n onCsvFileUploaded: () => void;\n onClose?: () => void;\n}) {\n return (\n \n \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n \n \n files[0] && onUploadedFileChange(files[0])\n }\n acceptedFileTypes={['.csv']}\n />\n \n \n \n \n
    \n
    \n \n onCsvFileUploaded()}\n />\n \n
    \n );\n}\n","import { isEqual } from 'lodash-es';\nimport {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useGetSet } from 'react-use';\nimport { SeatScoreConfigCard } from 'src/components/Events/SeatScoreConfigCard';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { Switch } from 'src/core/interim/Switch';\nimport { BezierGraph, SerializedSegment } from 'src/core/POS/BezierGraph';\nimport { CalcOutputFn } from 'src/core/POS/BezierGraph/BezierGraphManager';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { downloadFileFromBlob } from 'src/utils/fileUtils';\nimport {\n calcSeatScore,\n getCompleteEventConfigScoreOverrides,\n updateScoreMaintainingRowScoreRatio,\n} from 'src/utils/seatScoreUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n EventConfigScoreOverride,\n Feature,\n PricingClient,\n} from 'src/WebApiController';\n\nimport { EventVenueHeatMap } from '../common/EventSeatMap';\nimport { ModalProps } from '../Modal';\nimport { UploadSeatScoreModal } from '../UploadSeatScoreModal';\nimport * as styles from './EventSeatMapConfig.css';\n\nconst INITIAL_ANGLE_SEGMENTS: SerializedSegment[] = [\n { point: { x: 0, y: 100 - 95 } },\n {\n point: { x: 25, y: 100 - 25 },\n handleIn: { x: -20, y: -20 },\n handleOut: { x: 20, y: 20 },\n },\n { point: { x: 100, y: 100 - 5 } },\n];\nconst INITIAL_DISTANCE_SEGMENTS: SerializedSegment[] = [\n { point: { x: 0, y: 100 - 95 } },\n {\n point: { x: 25, y: 100 - 25 },\n handleIn: { x: -20, y: -20 },\n handleOut: { x: 20, y: 20 },\n },\n { point: { x: 100, y: 100 - 5 } },\n];\nconst INITIAL_HEIGHT_SEGMENTS: SerializedSegment[] = [\n { point: { x: 0, y: 100 - 95 } },\n {\n point: { x: 25, y: 100 - 25 },\n handleIn: { x: -20, y: -20 },\n handleOut: { x: 20, y: 20 },\n },\n { point: { x: 100, y: 100 - 5 } },\n];\n\nexport type GraphSegments = {\n angleImportance?: number;\n angleSegments?: SerializedSegment[];\n distanceImportance?: number;\n distanceSegments?: SerializedSegment[];\n heightImportance?: number;\n heightSegments?: SerializedSegment[];\n scoreSegmentsBySection?: Record;\n activeRowIdsBySection?: Record;\n baseRowIdBySection?: Record;\n};\n\nexport const EventSeatMapConfigBody = ({\n disabled,\n cancelTo,\n isOverrideTemplate = false,\n}: {\n disabled: boolean;\n cancelTo?: ModalProps;\n isOverrideTemplate?: boolean;\n}) => {\n const { getValues, watch, setValue, register, formState, reset } =\n useFormContext();\n\n const { setModal } = useContext(ModalContext);\n\n const eventConfigScoreOverrideId = getValues('id');\n const configId = getValues('cfgId');\n const scoreOverrides = watch('scoreOverrides');\n const configPayload = watch('cfgPayload');\n const name = watch('name');\n const isTemplate = watch('isTemplate');\n\n const nearText = useContent(ContentId.Near);\n const farText = useContent(ContentId.Far);\n const lowText = useContent(ContentId.Low);\n const highText = useContent(ContentId.High);\n\n const hasScaledSeatScoreFeature = useUserHasFeature(Feature.ScaledSeatScore);\n\n const [isAdvancedMode, setIsAdvancedMode] = useState(false);\n\n const {\n event,\n venueMapInfo,\n mapConfigOverridesQuery,\n normalizeConfigOverrideWithUiScore,\n } = useEventMapContext();\n\n const [getAngleImportance, setAngleImportance] = useGetSet(10);\n const [getDistanceImportance, setDistanceImportance] = useGetSet(8);\n const [getHeightImportance, setHeightImportance] = useGetSet(4);\n const calcAngleOutputRef = useRef();\n const calcDistanceOutputRef = useRef();\n const calcHeightOutputRef = useRef();\n\n const exportAnglePathRef = useRef<() => SerializedSegment[]>();\n const exportDistancePathRef = useRef<() => SerializedSegment[]>();\n const exportHeightPathRef = useRef<() => SerializedSegment[]>();\n\n const venueMapMaxScoreRaw = useMemo(\n () =>\n venueMapInfo?.sectionScores.reduce(\n (acc, section) => Math.max(acc, section.scoreRaw ?? 0),\n 0\n ) ?? 0,\n [venueMapInfo]\n );\n\n const graphVariables = useMemo(() => {\n const hasAngle =\n (venueMapInfo?.sections ?? []).findIndex((s) => s.angle != null) >= 0;\n const maxAngle = !hasAngle\n ? 0\n : Math.max(...(venueMapInfo?.sections?.map((s) => s.angle ?? 0) ?? []));\n\n const hasDistance =\n (venueMapInfo?.sections ?? []).findIndex((s) => s.dist != null) >= 0;\n const maxDistance = !hasDistance\n ? 0\n : Math.max(...(venueMapInfo?.sections?.map((s) => s.dist ?? 0) ?? []));\n\n const hasHeight =\n (venueMapInfo?.sections ?? []).findIndex((s) => s.height != null) >= 0;\n const maxHeight = !hasHeight\n ? 0\n : Math.max(...(venueMapInfo?.sections?.map((s) => s.height ?? 0) ?? []));\n\n return {\n hasAngle,\n maxAngle,\n hasDistance,\n maxDistance,\n hasHeight,\n maxHeight,\n };\n }, [venueMapInfo?.sections]);\n\n const graphSegments = useMemo(() => {\n if (configPayload) {\n try {\n const obj = JSON.parse(configPayload) as GraphSegments;\n\n if (\n obj.angleImportance != null &&\n obj.angleImportance !== getAngleImportance()\n )\n setAngleImportance(obj.angleImportance);\n if (\n obj.distanceImportance != null &&\n obj.distanceImportance !== getDistanceImportance()\n )\n setDistanceImportance(obj.distanceImportance);\n if (\n obj.heightImportance != null &&\n obj.heightImportance !== getHeightImportance()\n )\n setHeightImportance(obj.heightImportance);\n\n return obj;\n } catch (_error) {\n console.warn(`Unable to parse as GraphSegments: ${configPayload}`);\n\n return {};\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [configPayload]);\n\n const templateOverrideScores = useMemo(\n () =>\n getCompleteEventConfigScoreOverrides(\n venueMapInfo?.sectionScores,\n scoreOverrides,\n isOverrideTemplate,\n hasScaledSeatScoreFeature\n ),\n [\n hasScaledSeatScoreFeature,\n isOverrideTemplate,\n scoreOverrides,\n venueMapInfo?.sectionScores,\n ]\n );\n\n const onCalculateSeatScores = useCallback(() => {\n const calcAngleOutput = calcAngleOutputRef.current;\n const calcDistanceOutput = calcDistanceOutputRef.current;\n const calcHeightOutput = calcHeightOutputRef.current;\n // functions should all be defined here\n if (\n venueMapInfo?.sections &&\n (!graphVariables.hasAngle || calcAngleOutput) &&\n (!graphVariables.hasDistance || calcDistanceOutput) &&\n (!graphVariables.hasHeight || calcHeightOutput)\n ) {\n const sectionWithScoreOverrides = venueMapInfo.sections.flatMap(\n (section) => {\n // Treat nulls as zero\n const angle = section?.angle ?? 0;\n const distance = section?.dist ?? 0;\n const height = section?.height ?? 0;\n\n let seatScore =\n angle != null || distance != null || height != null\n ? calcSeatScore([\n {\n weight: getAngleImportance(),\n value:\n angle != null && calcAngleOutput\n ? calcAngleOutput(\n (angle / (graphVariables.maxAngle || 1)) * 100\n )\n : null,\n },\n {\n weight: getDistanceImportance(),\n value:\n distance != null && calcDistanceOutput\n ? calcDistanceOutput(\n (distance / (graphVariables.maxDistance || 1)) * 100\n )\n : null,\n },\n {\n weight: getHeightImportance(),\n value:\n height != null && calcHeightOutput\n ? calcHeightOutput(\n (height / (graphVariables.maxHeight || 1)) * 100\n )\n : null,\n },\n ])\n : null;\n\n if (\n hasScaledSeatScoreFeature &&\n seatScore != null &&\n venueMapMaxScoreRaw\n ) {\n // Scale back from 0-100 to 0-venueMapMaxScoreRaw\n seatScore = (seatScore / venueMapMaxScoreRaw) * 100;\n }\n\n const overridesToEdit = scoreOverrides?.filter(\n (so) => so.sectionId === section.id\n );\n\n if (!isOverrideTemplate) {\n updateScoreMaintainingRowScoreRatio(\n seatScore ?? 0,\n overridesToEdit\n );\n }\n\n return overridesToEdit;\n }\n );\n\n const configObj = configPayload\n ? (JSON.parse(configPayload) as GraphSegments)\n : {};\n configObj.angleImportance = getAngleImportance();\n configObj.angleSegments = exportAnglePathRef.current?.();\n configObj.distanceImportance = getDistanceImportance();\n configObj.distanceSegments = exportDistancePathRef.current?.();\n configObj.heightImportance = getHeightImportance();\n configObj.heightSegments = exportHeightPathRef.current?.();\n\n if (!isEqual(sectionWithScoreOverrides, scoreOverrides)) {\n setValue('scoreOverrides', sectionWithScoreOverrides);\n }\n\n const newConfigPayload = JSON.stringify(configObj);\n if (newConfigPayload !== configPayload) {\n setValue('cfgPayload', newConfigPayload);\n }\n }\n }, [\n configPayload,\n getAngleImportance,\n getDistanceImportance,\n getHeightImportance,\n graphVariables.hasAngle,\n graphVariables.hasDistance,\n graphVariables.hasHeight,\n graphVariables.maxAngle,\n graphVariables.maxDistance,\n graphVariables.maxHeight,\n hasScaledSeatScoreFeature,\n scoreOverrides,\n setValue,\n venueMapMaxScoreRaw,\n venueMapInfo?.sections,\n isOverrideTemplate,\n ]);\n\n useEffect(() => {\n const calcAngleOutput = calcAngleOutputRef.current;\n const calcDistanceOutput = calcDistanceOutputRef.current;\n const calcHeightOutput = calcHeightOutputRef.current;\n\n if (\n (!graphVariables.hasAngle || calcAngleOutput) &&\n (!graphVariables.hasDistance || calcDistanceOutput) &&\n (!graphVariables.hasHeight || calcHeightOutput)\n ) {\n if (scoreOverrides) {\n // Init the heat map when all the cal functions are initialized\n onCalculateSeatScores();\n }\n }\n });\n\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const onDownloadTemplateClick = useCallback(() => {\n if (!event?.viagId) return;\n\n tryInvokeApi(\n async () => {\n const file = await new PricingClient(\n activeAccountWebClientConfig\n ).downloadSeatScoreFile(event.viagId!);\n\n if (file) {\n downloadFileFromBlob(\n file.fileName ?? 'seat-score-template.csv',\n file.data\n );\n }\n },\n (error) => {\n showErrorDialog('PricingClient.downloadSeatScoreFile', error);\n }\n );\n }, [activeAccountWebClientConfig, event?.viagId, showErrorDialog]);\n\n const [isUploadSeatScoreModalOpen, setIsUploadSeatScoreModalOpen] =\n useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [uploadedFile, setUploadedFile] = useState();\n const onCsvFileUploaded = useCallback(() => {\n if (!uploadedFile || !event?.viagId) return;\n\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const result = await new PricingClient(\n activeAccountWebClientConfig\n ).uploadSeatScoreFile(\n event.viagId!,\n configId,\n eventConfigScoreOverrideId,\n name,\n {\n data: uploadedFile,\n fileName: uploadedFile.name,\n }\n );\n\n if (result) {\n setUploadedFile(undefined);\n cancelTo && setModal(cancelTo);\n\n // Reset the form values\n reset(normalizeConfigOverrideWithUiScore(result));\n mapConfigOverridesQuery.refetch();\n }\n },\n (error) => {\n showErrorDialog('PricingClient.uploadSeatScoreFile', error);\n },\n () => {\n setIsLoading(false);\n setIsUploadSeatScoreModalOpen(false);\n }\n );\n }, [\n activeAccountWebClientConfig,\n cancelTo,\n configId,\n event?.viagId,\n eventConfigScoreOverrideId,\n mapConfigOverridesQuery,\n name,\n normalizeConfigOverrideWithUiScore,\n reset,\n setModal,\n showErrorDialog,\n uploadedFile,\n ]);\n\n const requiredMsg = useContent(ContentId.Required);\n const configNameError = formState.errors.name?.message;\n\n if (!event) {\n return null;\n }\n\n const hasAnyPhysicalMetadata =\n graphVariables.hasAngle ||\n graphVariables.hasDistance ||\n graphVariables.hasHeight;\n\n return (\n \n {/* Instructions */}\n
    \n
    \n }\n errors={configNameError}\n >\n \n \n\n {\n \n {\n const isChecked = !isTemplate;\n setValue('isTemplate', isChecked);\n }}\n />\n \n \n }\n \n \n
    \n
    \n \n
    \n
  • \n \n
  • \n
  • \n \n
  • \n
    \n
    \n {!isOverrideTemplate && (\n
    \n \n
    \n
  • \n \n
  • \n
  • \n \n
  • \n
    \n
    \n )}\n
    \n\n {/* Bezier Graphs */}\n {!isOverrideTemplate && (\n
    \n {\n
    \n \n {\n const isChecked = e.currentTarget.checked;\n setIsAdvancedMode(isChecked);\n }}\n />\n
    \n }\n {\n setIsUploadSeatScoreModalOpen(true);\n }}\n >\n \n \n
    \n {!hasAnyPhysicalMetadata && (\n \n }\n />\n )}\n {\n \n }\n importance={getAngleImportance()}\n onDecrementImportance={() => {\n setAngleImportance((prev) => prev - 1);\n onCalculateSeatScores();\n }}\n onIncrementImportance={() => {\n setAngleImportance((prev) => prev + 1);\n onCalculateSeatScores();\n }}\n >\n {\n if (isPathValid) {\n onCalculateSeatScores();\n }\n }}\n />\n \n {!graphVariables.hasAngle && (\n }\n />\n )}\n \n }\n {\n \n }\n importance={getDistanceImportance()}\n onDecrementImportance={() => {\n setDistanceImportance((prev) => prev - 1);\n onCalculateSeatScores();\n }}\n onIncrementImportance={() => {\n setDistanceImportance((prev) => prev + 1);\n onCalculateSeatScores();\n }}\n >\n {\n if (isPathValid) {\n onCalculateSeatScores();\n }\n }}\n />\n \n {!graphVariables.hasDistance && (\n }\n />\n )}\n \n }\n {\n \n }\n importance={getHeightImportance()}\n onDecrementImportance={() => {\n setHeightImportance((prev) => prev - 1);\n onCalculateSeatScores();\n }}\n onIncrementImportance={() => {\n setHeightImportance((prev) => prev + 1);\n onCalculateSeatScores();\n }}\n >\n {\n if (isPathValid) {\n onCalculateSeatScores();\n }\n }}\n />\n \n {!graphVariables.hasHeight && (\n }\n />\n )}\n \n }\n
    \n
    \n )}\n\n {/* Seat Heatmap Graph */}\n
    \n
    \n {\n if (newScoreOverrides) {\n setValue('scoreOverrides', newScoreOverrides);\n }\n if (newConfigPayload) {\n setValue('cfgPayload', newConfigPayload);\n }\n return Promise.resolve();\n }}\n />\n
    \n
    \n {\n setUploadedFile(file);\n }}\n onCsvFileUploaded={onCsvFileUploaded}\n onClose={() => {\n setIsUploadSeatScoreModalOpen(false);\n }}\n />\n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport {\n ComponentProps,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport {\n EventMapContextProvider,\n useEventMapContext,\n} from 'src/contexts/EventMapContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getCompleteEventConfigScoreOverrides,\n getEventConfigScoreOverride,\n} from 'src/utils/seatScoreUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n Event,\n EventConfigScoreOverride,\n Feature,\n PricingClient,\n} from 'src/WebApiController';\n\nimport { CancellableFormFooter } from '../common';\nimport { CancellableFormHeader } from '../common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from '../common/EventEntityHeader';\nimport { modalDetailsMaxHeight } from '../common/Modals.css';\nimport { ModalBody, ModalFooter, ModalProps } from '../Modal';\nimport { EventSeatMapConfigBody } from './EventSeatMapConfigBody';\n\ntype EventSeatMapConfigProps = {\n event: Event;\n eventConfigScoreOverride: EventConfigScoreOverride | null;\n onSaveConfigOverride?: (\n eventConfigScoreOverride: EventConfigScoreOverride\n ) => Promise;\n cancelTo: ModalProps;\n defaultConfigPayload?: string | undefined;\n isOverrideTemplate: boolean;\n};\n\nexport const EventSeatMapConfig = ({\n event,\n eventConfigScoreOverride,\n onSaveConfigOverride,\n cancelTo,\n defaultConfigPayload,\n isOverrideTemplate,\n}: EventSeatMapConfigProps) => {\n const methods = useForm({\n defaultValues: undefined,\n });\n\n return (\n \n \n \n \n \n );\n};\n\nconst EventSeatMapConfigContent = ({\n eventConfigScoreOverride,\n onSaveConfigOverride,\n cancelTo,\n watch,\n getValues,\n formState,\n handleSubmit,\n reset,\n defaultConfigPayload,\n isOverrideTemplate,\n}: Omit<\n ComponentProps>,\n 'children'\n> &\n EventSeatMapConfigProps) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const hasScaledSeatScoreFeature = useUserHasFeature(Feature.ScaledSeatScore);\n const [isLoading, setIsLoading] = useState(false);\n const { showErrorDialog } = useErrorBoundaryContext();\n const { event, venueMapsByScoreModelQuery } = useEventMapContext();\n const { setModal, closeModal } = useContext(ModalContext);\n const newModelName = useContent(ContentId.NewModel);\n\n useEffect(() => {\n if (\n formState.defaultValues === undefined &&\n event &&\n (eventConfigScoreOverride ??\n venueMapsByScoreModelQuery.data?.AdvancedVenueGeometry)\n ) {\n reset(\n getEventConfigScoreOverride(\n event.viagId!,\n venueMapsByScoreModelQuery.data?.AdvancedVenueGeometry!,\n newModelName,\n eventConfigScoreOverride,\n false,\n undefined,\n defaultConfigPayload,\n isOverrideTemplate\n )\n );\n }\n }, [\n eventConfigScoreOverride,\n formState.defaultValues,\n newModelName,\n reset,\n venueMapsByScoreModelQuery.data?.AdvancedVenueGeometry,\n defaultConfigPayload,\n isOverrideTemplate,\n event,\n ]);\n\n const onSubmit = useCallback(\n async (eventForm: EventConfigScoreOverride) => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const client = new PricingClient(activeAccountWebClientConfig);\n\n const newConfigOverride = {\n ...eventForm,\n scoreOverrides: getCompleteEventConfigScoreOverrides(\n venueMapsByScoreModelQuery.data?.AdvancedVenueGeometry\n ?.sectionScores,\n eventForm.scoreOverrides,\n isOverrideTemplate,\n hasScaledSeatScoreFeature\n )!,\n };\n\n const newId =\n await client.upsertEventSeatMapScoreOverride(newConfigOverride);\n\n if (onSaveConfigOverride) {\n eventForm.id = newId;\n await onSaveConfigOverride(eventForm);\n }\n if (cancelTo) {\n setModal(cancelTo);\n } else {\n closeModal(true);\n }\n },\n (error) => {\n showErrorDialog('EventClient.updatePriceSettings', error, {\n trackErrorData: eventForm,\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n cancelTo,\n closeModal,\n hasScaledSeatScoreFeature,\n onSaveConfigOverride,\n setModal,\n showErrorDialog,\n isOverrideTemplate,\n venueMapsByScoreModelQuery.data?.AdvancedVenueGeometry?.sectionScores,\n ]\n );\n\n const hasChanges = useCallback(\n (eventForm: EventConfigScoreOverride) => {\n if (!isEqual(eventForm, formState.defaultValues)) return true;\n\n return false;\n },\n [formState.defaultValues]\n );\n\n const onSubmitHandler = useCallback(() => {\n const eventForm = getValues();\n if (!hasChanges(eventForm)) return;\n\n handleSubmit(onSubmit)();\n }, [getValues, handleSubmit, hasChanges, onSubmit]);\n\n const formHasChanges = hasChanges(watch());\n\n return (\n <>\n \n }\n />\n \n\n \n
    \n \n
    \n
    \n\n \n \n \n \n \n \n );\n};\n","import { formatInTimeZone } from 'date-fns-tz';\nimport { useState } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { vars } from 'src/core/themes';\nimport { Card, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EventConfigScoreOverride } from 'src/WebApiController';\n\nimport * as styles from './EventSeatMapSelection.css';\n\nexport type GlobalConfigPayloadCardProps = {\n configPayload: string;\n name: string;\n eventId: number | null;\n onClick: (\n eventConfigScoreOverride: EventConfigScoreOverride | null,\n defaultConfigPayload?: string | null\n ) => void;\n createDate: Date;\n updateDate: Date;\n};\n\nexport function GlobalConfigPayloadCard({\n configPayload,\n name,\n eventId,\n onClick,\n createDate,\n updateDate,\n}: GlobalConfigPayloadCardProps) {\n const { timeZone } = useSiteTimezoneContext();\n const [isHovered, setIsHovered] = useState(false);\n\n const createDateFormatted = formatInTimeZone(\n createDate,\n timeZone,\n 'MMM d, yyyy, h:mm a'\n );\n const updateDateFormatted = formatInTimeZone(\n updateDate,\n timeZone,\n 'MMM d, yyyy, h:mm a'\n );\n\n return (\n setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className={styles.configPayloadCard}\n >\n {\n e.preventDefault();\n e.stopPropagation();\n onClick(null, configPayload);\n }}\n >\n
    {name}
    \n\n {eventId != null ?
    {eventId}
    : undefined}\n\n \n \n \n \n\n \n {createDateFormatted}\n \n\n \n \n \n\n \n {updateDateFormatted}\n \n \n \n \n );\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EventConfigScoreOverride } from 'src/WebApiController';\n\nimport * as styles from './EventSeatMapSelection.css';\nimport { GlobalConfigPayloadCard } from './GlobalConfigPayloadCard';\n\ntype GlobalConfigPayloadSelectionProps = {\n onConfigPayloadSelection: (\n eventConfigScoreOverride: EventConfigScoreOverride | null,\n defaultConfigPayload?: string | null\n ) => void;\n eventConfigScoreOverridesForEvent: EventConfigScoreOverride[] | undefined;\n};\n\nexport function GlobalConfigPayloadSelection({\n onConfigPayloadSelection,\n eventConfigScoreOverridesForEvent,\n}: GlobalConfigPayloadSelectionProps) {\n const { sellerAccountScoreOverridesQuery } = useEventMapContext();\n const sellerConfigPayloadsFromOtherVenueConfigs =\n sellerAccountScoreOverridesQuery.data?.filter(\n (eventConfigScoreOverride) =>\n !eventConfigScoreOverridesForEvent?.some((e) => {\n return e.id == eventConfigScoreOverride.eventConfigScoreOverrideId;\n })\n ) ?? [];\n\n return sellerConfigPayloadsFromOtherVenueConfigs?.length > 0 ? (\n
    \n
    \n \n
    \n \n {sellerConfigPayloadsFromOtherVenueConfigs.map(\n (eventConfigScoreOverride) => {\n return (\n \n );\n }\n )}\n \n
    \n ) : undefined;\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { WarningOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './NewHeatmapAvailableNotification.css';\n\nexport const NewHeatmapAvailableNotification = () => {\n return (\n
    \n \n \n \n \n
    \n );\n};\n","import { useMutation } from '@tanstack/react-query';\nimport { useCallback, useContext, useEffect, useState } from 'react';\nimport { EventVenueMap } from 'src/components/Events/VenueMap/EventVenueMap';\nimport { SeatMapCard } from 'src/components/Listings/InventoryEventPage/Sections/SeatMapCard';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n EventMapContextProvider,\n useEventMapContext,\n} from 'src/contexts/EventMapContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { Stack } from 'src/core/ui';\nimport { Button } from 'src/core/ui';\nimport { ApplyHeatMapToAllEventsDialog } from 'src/dialogs/ApplyHeatMapToAllEventsDialog';\nimport { DeleteHeatMapTemplateConfirmDialog } from 'src/dialogs/DeleteHeapMapTemplateConfirmDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useGetEventAutoPricingSettings } from 'src/hooks/useGetEventAutoPricingSettings';\nimport { createGetColor } from 'src/hooks/useHeatMapColor';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n Event,\n EventConfigScoreOverride,\n PricingClient,\n ScoreModel,\n} from 'src/WebApiController';\n\nimport { CancellableFormFooter } from '../common';\nimport { CancellableFormHeader } from '../common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from '../common/EventEntityHeader';\nimport { EventPricingSeatMap } from '../EventPricingSeatMap';\nimport { EventSeatMapConfig } from '../EventSeatMapConfig';\nimport { ModalBody, ModalFooter, ModalProps } from '../Modal';\nimport * as styles from './EventSeatMapSelection.css';\nimport { GlobalConfigPayloadSelection } from './GlobalConfigPayloadSelection';\nimport { NewHeatmapAvailableNotification } from './NewHeatmapAvailableNotification';\n\ntype EventSeatMapSelectionProps = {\n event: Event;\n cancelTo?: ModalProps;\n fromTabView?: boolean;\n};\n\nexport function EventSeatMapSelection({\n event,\n cancelTo,\n fromTabView,\n}: EventSeatMapSelectionProps) {\n return (\n <>\n \n \n \n \n );\n}\n\nexport function EventSeatMapSelectionContent({\n cancelTo,\n fromTabView,\n}: {\n cancelTo?: ModalProps;\n fromTabView?: boolean;\n}) {\n const { setModal } = useContext(ModalContext);\n\n const {\n event,\n isMapLoading,\n venueMapInfo,\n venueMapsByScoreModelQuery,\n mapConfigOverridesQuery,\n sellerAccountScoreOverridesQuery,\n activeConfigOverride,\n } = useEventMapContext();\n\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const { launchDialog, closeDialog, dialogProps } = useBasicDialog();\n const {\n launchDialog: launchSelectDialog,\n closeDialog: closeSelectDialog,\n dialogProps: selectDialogProps,\n } = useBasicDialog();\n const [selectedMapIdToDelete, setSelectedMapIdToDelete] = useState<\n number | null\n >(null);\n const [applyToAllEventsForConfig, setApplyToAllEventsForConfig] = useState<\n EventConfigScoreOverride | undefined\n >();\n const venueConfigId = venueMapInfo?.venueCfgId;\n\n const { pricingSettings } = useGetEventAutoPricingSettings(event!, true);\n\n const [selectedRecommendedMap, setSelectedRecommendedMap] =\n useState(pricingSettings?.scoreModel ?? null);\n\n const performerVenueSpecific = mapConfigOverridesQuery.data?.filter(\n (o) => o.cfgId == venueConfigId\n );\n\n const venueSpecific = mapConfigOverridesQuery.data?.filter(\n (o) => o.cfgId != venueConfigId && o.categoryId != null && o.venueId != null\n );\n\n const setEventSeatMapScoreOverrideMutation = useMutation({\n mutationFn: (request: {\n eventId?: number | null;\n eventConfigScoreOverrideId?: number | null;\n scoreModel?: ScoreModel | null;\n }) => {\n if (request.eventId) {\n return new PricingClient(\n activeAccountWebClientConfig\n ).setEventSeatMapScoreOverride(\n request.eventId,\n request.eventConfigScoreOverrideId,\n request.scoreModel\n );\n }\n\n return Promise.resolve();\n },\n onError: (err: ErrorTypes, request) => {\n showErrorDialog('PricingClient.setEventSeatMapScoreOverride', err, {\n trackErrorData: request,\n });\n },\n onSettled: () => {\n mapConfigOverridesQuery.refetch();\n },\n });\n\n const deleteEventSeatMapScoreOverrideMutation = useMutation({\n mutationFn: (request: { eventConfigScoreOverrideId?: number | null }) => {\n if (request.eventConfigScoreOverrideId) {\n return new PricingClient(\n activeAccountWebClientConfig\n ).deleteEventSeatMapScoreOverride(request.eventConfigScoreOverrideId);\n }\n\n return Promise.resolve();\n },\n onError: (err: ErrorTypes, request) => {\n showErrorDialog('PricingClient.deleteEventSeatMapScoreOverride', err, {\n trackErrorData: request,\n });\n },\n onSettled: () => {\n mapConfigOverridesQuery.refetch();\n sellerAccountScoreOverridesQuery.refetch();\n },\n });\n\n const isLoading =\n isMapLoading ||\n venueMapsByScoreModelQuery.isLoading ||\n mapConfigOverridesQuery.isPending ||\n mapConfigOverridesQuery.isFetching;\n\n const initialEventConfigScoreOverrideId = isLoading\n ? undefined\n : activeConfigOverride?.id ?? null;\n\n const [\n selectedEventConfigScoreOverrideId,\n setSelectedEventConfigScoreOverrideId,\n ] = useState(initialEventConfigScoreOverrideId);\n\n useEffect(() => {\n if (\n selectedEventConfigScoreOverrideId === undefined &&\n initialEventConfigScoreOverrideId !== undefined\n ) {\n setSelectedEventConfigScoreOverrideId(initialEventConfigScoreOverrideId);\n }\n }, [initialEventConfigScoreOverrideId, selectedEventConfigScoreOverrideId]);\n\n const onSubmit = useCallback(\n (\n eventConfigScoreOverrideId: number | null,\n scoreModel: ScoreModel | null\n ) => {\n if (eventConfigScoreOverrideId) {\n const selectedConfig = mapConfigOverridesQuery.data?.find(\n ({ id }) => id === eventConfigScoreOverrideId\n );\n if (selectedConfig && (selectedConfig.eventIds?.length ?? 0) >= 2) {\n setApplyToAllEventsForConfig(selectedConfig);\n launchSelectDialog();\n return;\n }\n }\n setEventSeatMapScoreOverrideMutation.mutate({\n eventId: event!.viagId,\n eventConfigScoreOverrideId,\n scoreModel,\n });\n setSelectedEventConfigScoreOverrideId(eventConfigScoreOverrideId);\n setSelectedRecommendedMap(scoreModel);\n },\n [\n event,\n launchSelectDialog,\n mapConfigOverridesQuery.data,\n setEventSeatMapScoreOverrideMutation,\n ]\n );\n\n const onEditSeatMap = useCallback(\n (\n eventConfigScoreOverride: EventConfigScoreOverride | null,\n defaultConfigPayload?: string | null,\n isOverrideTemplate?: boolean\n ) => {\n setModal({\n children: (\n ,\n clickOutsideToClose: true,\n size: 'slide-in',\n }\n }\n />\n ),\n clickOutsideToClose: true,\n size: 'slide-in',\n }}\n isOverrideTemplate={isOverrideTemplate ?? false}\n />\n ),\n clickOutsideToClose: true,\n size: 'fullscreen',\n fullscreen: true,\n });\n },\n [event, fromTabView, setModal]\n );\n\n if (!event) {\n return null;\n }\n\n const disabledButtons =\n isLoading ||\n setEventSeatMapScoreOverrideMutation.isPending ||\n deleteEventSeatMapScoreOverrideMutation.isPending;\n\n return (\n <>\n \n }\n />\n \n \n {(pricingSettings?.scoreModel == ScoreModel.VenueGeometry ||\n pricingSettings?.scoreModel == ScoreModel.MergedVenueGeometry) && (\n \n )}\n \n
    \n \n
    \n
    \n {!!venueMapsByScoreModelQuery.data?.AdvancedVenueGeometry && (\n {\n onSubmit(null, ScoreModel.AdvancedVenueGeometry);\n }}\n footer={\n venueMapsByScoreModelQuery.data.AdvancedVenueGeometry.sectionScores?.some(\n (s) => s.score\n ) ? (\n
    \n \n
    \n ) : (\n \n )\n }\n >\n \n \n )}\n {pricingSettings?.scoreModel == ScoreModel.MergedVenueGeometry && (\n {\n onSubmit(null, ScoreModel.MergedVenueGeometry);\n }}\n footer={}\n >\n \n \n )}\n {pricingSettings?.scoreModel == ScoreModel.VenueGeometry && (\n {\n onSubmit(null, ScoreModel.VenueGeometry);\n }}\n footer={}\n >\n \n \n )}\n
    \n
    \n {\n \n
    \n \n
    \n
    \n {performerVenueSpecific?.map((eventConfigScoreOverride) => {\n return (\n {\n setSelectedEventConfigScoreOverrideId(\n eventConfigScoreOverride.id\n );\n setSelectedRecommendedMap(null);\n onSubmit(eventConfigScoreOverride.id, null);\n }}\n onDelete={\n disabledButtons\n ? undefined\n : () => {\n if (eventConfigScoreOverride.isTemplate) {\n setSelectedMapIdToDelete(\n eventConfigScoreOverride.id\n );\n launchDialog();\n } else {\n deleteEventSeatMapScoreOverrideMutation.mutate({\n eventConfigScoreOverrideId:\n eventConfigScoreOverride.id,\n });\n }\n }\n }\n footer={\n <>\n
    {eventConfigScoreOverride.name}
    \n {\n e.preventDefault();\n e.stopPropagation();\n onEditSeatMap(eventConfigScoreOverride);\n }}\n >\n \n \n \n }\n >\n \n \n );\n })}\n {\n e.preventDefault();\n e.stopPropagation();\n onEditSeatMap(null);\n }}\n >\n \n \n }\n >\n ({ fill: 'white', stroke: 'black' })}\n />\n \n
    \n
    \n \n
    \n
    \n {venueSpecific?.length == 0 ? (\n }\n >\n ({ fill: 'white', stroke: 'black' })}\n />\n \n ) : (\n venueSpecific?.map((eventConfigScoreOverride) => {\n return (\n {\n onEditSeatMap(eventConfigScoreOverride, null, true);\n }}\n footer={\n <>\n
    {eventConfigScoreOverride.name}
    \n {\n e.preventDefault();\n e.stopPropagation();\n onEditSeatMap(\n eventConfigScoreOverride,\n null,\n true\n );\n }}\n >\n \n \n \n }\n >\n \n \n );\n })\n )}\n
    \n
    \n }\n\n {!isLoading && (\n \n )}\n
    \n \n \n \n\n {\n setSelectedMapIdToDelete(null);\n closeDialog();\n }}\n onConfirm={() =>\n deleteEventSeatMapScoreOverrideMutation.mutate(\n {\n eventConfigScoreOverrideId: selectedMapIdToDelete,\n },\n {\n onSuccess: () => {\n setSelectedMapIdToDelete(null);\n closeDialog();\n },\n onError: () => {\n setSelectedMapIdToDelete(null);\n closeDialog();\n },\n }\n )\n }\n />\n\n {\n setSelectedEventConfigScoreOverrideId(applyToAllEventsForConfig?.id);\n setApplyToAllEventsForConfig(undefined);\n closeSelectDialog();\n }}\n />\n \n );\n}\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport { FormProvider, useForm, useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Button, Stack } from 'src/core/ui';\nimport { ApplyHeatMapToAllEventsDialog } from 'src/dialogs/ApplyHeatMapToAllEventsDialog';\nimport { ChangeRowScoreDialogMultiSection } from 'src/dialogs/ChangeRowScoreDialog';\nimport { SectionRowTableDialog } from 'src/dialogs/SectionRowTableDialog/SectionRowTableDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useGetEventAutoPricingSettings } from 'src/hooks/useGetEventAutoPricingSettings';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { EventVenueHeatMap } from 'src/modals/common/EventSeatMap';\nimport { EventSeatMapSelection } from 'src/modals/EventSeatMapSelection';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EventPricingSeatMapForm } from 'src/utils/eventWithDataUtils';\nimport {\n getCompleteEventConfigScoreOverrides,\n getEventConfigScoreOverride,\n} from 'src/utils/seatScoreUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n Event,\n EventConfigScoreOverride,\n Feature,\n PricingClient,\n RowInfo,\n ScoreModel,\n SectionInfo,\n SectionScoreOverride,\n} from 'src/WebApiController';\n\nimport * as styles from './InventoryEventEditMapSection.css';\n\ntype EventSeatMapFormType = Pick;\n\nexport type EventScoreUpdate = {\n newScoreOverrides?: SectionScoreOverride[];\n newConfigPayload?: string;\n};\n\ntype InventoryEventEditMapSectionProps = {\n event: Event;\n};\n\nexport const InventoryEventEditMapSection: React.FC<\n InventoryEventEditMapSectionProps\n> = ({ event }) => {\n return ;\n};\n\nexport const InventoryEventEditMapSectionBody = ({\n event,\n}: {\n event: Event;\n}) => {\n const { activeConfigOverride, mapConfigOverridesQuery, isMapLoading } =\n useEventMapContext();\n\n const methods = useForm({\n defaultValues: {\n eventScoreOverride: activeConfigOverride,\n },\n });\n\n useEffect(() => {\n if (\n activeConfigOverride !== null &&\n !isEqual(\n methods.formState.defaultValues?.eventScoreOverride,\n activeConfigOverride\n )\n ) {\n methods.reset({\n eventScoreOverride: activeConfigOverride,\n });\n }\n }, [activeConfigOverride, methods]);\n\n if (\n (!activeConfigOverride && mapConfigOverridesQuery.isLoading) ||\n isMapLoading\n ) {\n return ;\n }\n\n return (\n \n \n \n );\n};\n\nexport const InventoryEventEditMapSectionContent = ({\n event,\n}: {\n event: Event;\n}) => {\n const [isLoading, setIsLoading] = useState(false);\n const { watch, setValue, getValues, formState, handleSubmit } =\n useFormContext();\n\n const hasScaledSeatScoreFeature = useUserHasFeature(Feature.ScaledSeatScore);\n\n const {\n venueMapInfo,\n venueMapsByScoreModelQuery,\n activeConfigOverride,\n mapConfigOverridesQuery,\n } = useEventMapContext();\n const { setModal } = useContext(ModalContext);\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const { pricingSettings } = useGetEventAutoPricingSettings(event!, true);\n const hasScoreSectionRowTableFeature = useUserHasFeature(\n Feature.ScoreSectionRowTable\n );\n\n const sanitizedScoreModel = useMemo(() => {\n const scoreModel = pricingSettings?.scoreModel;\n if (scoreModel) return scoreModel;\n\n const { AdvancedVenueGeometry, MergedVenueGeometry } =\n venueMapsByScoreModelQuery.data ?? {};\n if (AdvancedVenueGeometry) return ScoreModel.AdvancedVenueGeometry;\n if (MergedVenueGeometry) return ScoreModel.MergedVenueGeometry;\n return ScoreModel.VenueGeometry;\n }, [pricingSettings?.scoreModel, venueMapsByScoreModelQuery.data]);\n\n const modeledSectionScores = useMemo(() => {\n switch (sanitizedScoreModel) {\n case ScoreModel.AdvancedVenueGeometry:\n return venueMapsByScoreModelQuery.data?.AdvancedVenueGeometry;\n\n case ScoreModel.MergedVenueGeometry:\n return venueMapsByScoreModelQuery.data?.MergedVenueGeometry;\n\n default:\n return venueMapsByScoreModelQuery.data?.VenueGeometry;\n }\n }, [\n sanitizedScoreModel,\n venueMapsByScoreModelQuery.data?.AdvancedVenueGeometry,\n venueMapsByScoreModelQuery.data?.MergedVenueGeometry,\n venueMapsByScoreModelQuery.data?.VenueGeometry,\n ]);\n\n // Hook form fields\n const eventScoreOverride = watch('eventScoreOverride');\n const configPayload = watch('eventScoreOverride.cfgPayload');\n const name = watch('eventScoreOverride.name');\n const scoreOverrides =\n watch('eventScoreOverride.scoreOverrides') ??\n getCompleteEventConfigScoreOverrides(modeledSectionScores?.sectionScores);\n\n const newModelName = useContent(ContentId.NewModel);\n const changeRowScoreDialog = useBasicDialog();\n const sectionRowDialog = useBasicDialog();\n const applyToAllDialog = useBasicDialog();\n\n const [applyToAllEventsForConfig, setApplyToAllEventsForConfig] = useState<\n EventConfigScoreOverride | undefined\n >();\n\n const onSectionSeatScoreChanged = useCallback(\n ({ newScoreOverrides, newConfigPayload }: EventScoreUpdate) => {\n let newOverride: EventConfigScoreOverride | undefined = undefined;\n if (eventScoreOverride) {\n newOverride = { ...eventScoreOverride };\n } else if (activeConfigOverride) {\n newOverride = { ...activeConfigOverride };\n } else {\n newOverride = getEventConfigScoreOverride(\n event!.viagId!,\n modeledSectionScores ?? venueMapInfo!,\n newModelName,\n null\n );\n }\n\n if (newScoreOverrides != null) {\n newOverride.scoreOverrides = newScoreOverrides;\n }\n if (newConfigPayload != null) {\n newOverride.cfgPayload = newConfigPayload;\n }\n\n if (newScoreOverrides != null || newConfigPayload != null) {\n setValue('eventScoreOverride', newOverride);\n }\n\n return Promise.resolve();\n },\n [\n eventScoreOverride,\n activeConfigOverride,\n event,\n modeledSectionScores,\n venueMapInfo,\n newModelName,\n setValue,\n ]\n );\n\n const onSectionRowChange = useCallback(\n (updated: SectionScoreOverride[]) => {\n let newOverride: EventConfigScoreOverride | undefined = undefined;\n if (eventScoreOverride) {\n newOverride = { ...eventScoreOverride };\n } else if (activeConfigOverride) {\n newOverride = { ...activeConfigOverride };\n } else {\n newOverride = getEventConfigScoreOverride(\n event!.viagId!,\n modeledSectionScores ?? venueMapInfo!,\n newModelName,\n null\n );\n }\n newOverride.scoreOverrides = updated;\n setValue('eventScoreOverride', newOverride);\n },\n [\n activeConfigOverride,\n event,\n eventScoreOverride,\n modeledSectionScores,\n newModelName,\n setValue,\n venueMapInfo,\n ]\n );\n\n const onRowSeatScoreChanged = useCallback(\n (\n newScoreOverrides: SectionScoreOverride[],\n newConfigPayload: string | null\n ) => {\n onSectionSeatScoreChanged({\n newScoreOverrides,\n newConfigPayload: newConfigPayload ?? undefined,\n }).then(() => {\n changeRowScoreDialog.closeDialog();\n });\n },\n [onSectionSeatScoreChanged, changeRowScoreDialog]\n );\n\n const allSections = useMemo(\n () => venueMapInfo?.sections ?? [],\n [venueMapInfo?.sections]\n );\n\n const sectionWithRowsWithOrdinal = useMemo(() => {\n const sections: SectionInfo[] = [];\n const rows: Record = {};\n allSections.forEach((s) => {\n rows[s.id] = s.rows\n .filter((r) => !r.isSpeculative && r.ordinal != null)\n .toSorted((a, b) => (a.ordinal ?? 0) - (b.ordinal ?? 0));\n });\n\n allSections.forEach((s) => {\n if (rows[s.id].length > 0) {\n sections.push(s);\n }\n });\n return sections;\n }, [allSections]);\n\n const scoreName = useMemo(() => {\n if (name) {\n return name;\n }\n\n if (sanitizedScoreModel === ScoreModel.AdvancedVenueGeometry) {\n return ;\n }\n\n if (sanitizedScoreModel === ScoreModel.MergedVenueGeometry) {\n return ;\n }\n\n if (sanitizedScoreModel === ScoreModel.VenueGeometry) {\n return ;\n }\n\n return ;\n }, [name, sanitizedScoreModel]);\n\n const onSubmit = useCallback(\n async (eventForm: EventSeatMapFormType) => {\n tryInvokeApi(\n async () => {\n const client = new PricingClient(activeAccountWebClientConfig);\n\n if (\n event?.viagId &&\n eventForm.eventScoreOverride &&\n !isEqual(\n eventForm.eventScoreOverride,\n formState.defaultValues?.eventScoreOverride\n )\n ) {\n setIsLoading(true);\n const newId = await client.upsertEventSeatMapScoreOverride({\n ...eventForm.eventScoreOverride,\n viagogoEventId: event.viagId,\n scoreOverrides: getCompleteEventConfigScoreOverrides(\n venueMapInfo?.sectionScores,\n eventForm.eventScoreOverride.scoreOverrides,\n false,\n hasScaledSeatScoreFeature\n )!,\n });\n\n setValue('eventScoreOverride.id', newId);\n\n const result = await mapConfigOverridesQuery.refetch();\n const newConfig = result.data?.find((ev) => ev.id === newId);\n\n const oldId = eventForm.eventScoreOverride?.id;\n if (\n newId !== activeConfigOverride?.id &&\n oldId <= 0 &&\n (newConfig?.eventIds?.length ?? 0) >= 2\n ) {\n setApplyToAllEventsForConfig(newConfig);\n applyToAllDialog.launchDialog();\n return;\n }\n\n await client.setEventSeatMapScoreOverride(\n event.viagId,\n newId,\n null\n );\n }\n },\n (error) => {\n showErrorDialog('PricingClient.updates', error, {\n trackErrorData: eventForm,\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n activeConfigOverride?.id,\n applyToAllDialog,\n event.viagId,\n formState.defaultValues?.eventScoreOverride,\n hasScaledSeatScoreFeature,\n mapConfigOverridesQuery,\n setValue,\n showErrorDialog,\n venueMapInfo?.sectionScores,\n ]\n );\n\n const hasChanges = useCallback(\n (eventForm: EventSeatMapFormType) => {\n // Make sure we only send back the settable props\n return !isEqual(\n formState.defaultValues?.eventScoreOverride,\n eventForm.eventScoreOverride\n );\n },\n [formState.defaultValues?.eventScoreOverride]\n );\n\n const onSubmitHandler = useCallback(() => {\n if (!hasChanges(getValues())) return;\n\n handleSubmit(onSubmit)();\n }, [getValues, handleSubmit, hasChanges, onSubmit]);\n\n if (!event) {\n return null;\n }\n\n if (isLoading) {\n return ;\n }\n\n return (\n <>\n \n \n
    \n \n
    \n
    \n
    \n \n {sectionWithRowsWithOrdinal.length > 0 && (\n \n \n \n )}\n {hasScoreSectionRowTableFeature && (\n \n \n \n )}\n \n
    \n \n
    \n {scoreName}\n {' -'}\n
    \n {\n // We need to save the seat map prior to closing the modal and launch the\n // seat map selection modal\n onSubmit(getValues()).then(() =>\n setModal({\n children: (\n \n ),\n clickOutsideToClose: true,\n size: 'slide-in',\n })\n );\n }}\n >\n \n \n
    \n \n
    \n \n \n
    \n
  • \n \n
  • \n
  • \n \n
  • \n
    \n
    \n \n
    \n \n \n \n
    \n \n \n\n {\n setApplyToAllEventsForConfig(undefined);\n applyToAllDialog.closeDialog();\n }}\n />\n \n );\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n EventConfigClient,\n SellerAccountEventSetting,\n} from 'src/WebApiController';\n\nexport const useSellerAccountEventSettings = (\n eventId?: number | null,\n disabled?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n\n const queryClient = useQueryClient();\n const getQueryKey = [\n 'EventConfigClient.getSellerAccountEventSettings',\n eventId,\n ];\n\n const shouldQuery =\n !disabled &&\n Boolean(activeAccountWebClientConfig.activeAccountId && eventId);\n\n const getQuery = useQuery({\n queryKey: getQueryKey,\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n const settings = await new EventConfigClient(\n activeAccountWebClientConfig\n ).getSellerAccountEventSettings(eventId!);\n\n return settings.filter((s) => s.delivType != null);\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('EventConfigClient.getSellerAccountEventSettings', error, {\n eventId,\n });\n },\n },\n });\n\n const updateMutation = useMutation({\n mutationFn: async ({\n settings,\n }: {\n settings: SellerAccountEventSetting[];\n }) => {\n return await new EventConfigClient(\n activeAccountWebClientConfig\n ).mergeSellerAccountEventSettingsForDelivery(settings, eventId!);\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n onMutate: ({ settings }) => {\n queryClient.cancelQueries({ queryKey: getQueryKey });\n const prevValue =\n queryClient.getQueryData(getQueryKey);\n\n queryClient.setQueryData(getQueryKey, settings);\n return { prevValue };\n },\n onError: (err: ErrorTypes, { settings }, context) => {\n queryClient.setQueryData(getQueryKey, context?.prevValue);\n showErrorDialog(\n 'EventConfigClient.mergeSellerAccountEventSettingsForDelivery',\n err,\n {\n trackErrorData: { settings },\n }\n );\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey: getQueryKey });\n },\n });\n\n return {\n sellerAccountEventSettings: getQuery.data,\n isLoading: getQuery.isLoading,\n async updateSellerAccountEventSettings(\n settings: SellerAccountEventSetting[]\n ) {\n await updateMutation.mutateAsync({\n settings,\n });\n },\n isMutationLoading: updateMutation.isPending,\n };\n};\n","import { useFormContext } from 'react-hook-form';\nimport { Switch } from 'src/core/ui';\n\nimport { SellerAccountEventSettingsInput } from './FulfillmentSection.types';\n\nexport const AutoFulfillCell = ({\n disabled,\n index,\n}: {\n disabled?: boolean;\n index: number;\n}) => {\n const { watch, setValue } = useFormContext();\n\n const isNoFulfill = watch(`settings.${index}.isNoFulfill`);\n\n return (\n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n setValue(`settings.${index}.isNoFulfill`, !isChecked, {\n shouldDirty: true,\n });\n }}\n />\n );\n};\n","import { subMinutes } from 'date-fns';\nimport { isEqual } from 'lodash-es';\nimport { useFormContext } from 'react-hook-form';\nimport { InHandDateInput } from 'src/components/Input/InHandDateInput';\nimport { Event } from 'src/WebApiController';\n\nimport { SellerAccountEventSettingsInput } from './FulfillmentSection.types';\n\nexport const InHandCell = ({\n event,\n disabled,\n index,\n}: {\n event?: Event;\n disabled?: boolean;\n index: number;\n}) => {\n const { watch, setValue } = useFormContext();\n\n const inHandAt = watch(`settings.${index}.inHandAt`);\n\n const inHandDate = inHandAt ? new Date(inHandAt) : new Date();\n\n return (\n {\n if (!isEqual(date, inHandDate)) {\n if (date != null) {\n // We need to take off the timezone offset from the date\n // because the InHandDateInput uses same timezome as the event\n date = subMinutes(date, date.getTimezoneOffset());\n }\n setValue(`settings.${index}.inHandAt`, date?.toISOString() ?? null, {\n shouldDirty: true,\n });\n }\n }}\n value={inHandAt}\n targetDate={\n event?.dates?.start ? new Date(event?.dates?.start) : new Date()\n }\n />\n );\n};\n","import { Content, useContent } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { TICKET_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { TicketTypePriority } from 'src/WebApiController';\n\nimport * as styles from './FulfillmentSection.css';\n\nexport const TicketTypePriorityPill = ({\n ticketTypePriority,\n}: {\n ticketTypePriority: TicketTypePriority;\n}) => {\n const isBlocked =\n ticketTypePriority.priority === -1 || ticketTypePriority.isBlocked;\n const blockedTxt = useContent(ContentId.Blocked);\n return (\n \n \n \n \n {': '}\n \n {isBlocked ? blockedTxt : ticketTypePriority.priority}\n \n \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { TicketTypePriorityInput } from 'src/components/common/TicketTypePriorityInput';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Popover, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { SellerAccountEventSettingsInput } from './FulfillmentSection.types';\nimport { TicketTypePriorityPill } from './TicketTypePriorityPill';\n\nexport const TicketTypePriorityCell = ({\n disabled,\n index,\n}: {\n disabled?: boolean;\n index: number;\n}) => {\n const { watch, setValue } = useFormContext();\n\n const delivType = watch(`settings.${index}.delivType`);\n const ticketTypeRules = watch(`settings.${index}.tktTypeRules`);\n\n const ticketTypePriorities = ticketTypeRules?.overrides.find(\n (t) => t.deliveryType === delivType\n )?.ticketTypePriorities;\n\n return (\n \n {ticketTypePriorities\n ?.toSorted((a, b) => {\n if (a.priority === -1 || a.isBlocked) return 1;\n if (b.priority === -1 || b.isBlocked) return -1;\n return a.priority - b.priority;\n })\n .map((t, i) => (\n \n ))}\n \n \n \n \n \n \n \n
    \n {\n setValue(`settings.${index}.tktTypeRules`, newRules, {\n shouldDirty: true,\n });\n }}\n disabled={disabled}\n />\n
    \n \n
    \n \n );\n};\n","import { useEffect, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { usePurchaseVendorSelector } from 'src/components/Selectors/PurchaseVendorSelector/usePurchaseVendorSelector';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { SellerAccountEventSettingsInput } from './FulfillmentSection.types';\n\nexport const VendorCell = ({\n disabled,\n index,\n}: {\n disabled?: boolean;\n index: number;\n}) => {\n const { watch, setValue, clearErrors } =\n useFormContext();\n\n const allVendorsText = useContent(ContentId.AllVendors);\n\n const settings = watch('settings');\n const vendorId = watch(`settings.${index}.vendorId`);\n\n const { posSelectProps } = usePurchaseVendorSelector({\n placeholderText: allVendorsText,\n });\n\n const availableVendorOptions = Object.entries(\n posSelectProps.valueOptionsContent\n ).reduce(\n (acc, [key, value]) => {\n if (\n !settings?.some(\n (s, i) =>\n i !== index && s.vendorId != null && s.vendorId.toString() === key\n )\n ) {\n acc[key] = value;\n }\n return acc;\n },\n {} as Record\n );\n\n const isAllVendorsSelectedInOtherRows = useMemo(\n () => settings?.some((s, i) => i !== index && s.vendorId == null),\n [index, settings]\n );\n\n useEffect(() => {\n if (\n (vendorId == null && isAllVendorsSelectedInOtherRows) ||\n (vendorId != null &&\n !Object.keys(availableVendorOptions).includes(vendorId.toString()))\n ) {\n setValue(\n `settings.${index}.vendorId`,\n Number(Object.keys(availableVendorOptions)[0]),\n {\n shouldDirty: true,\n }\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n {\n clearErrors(`settings.${index}.vendorId`);\n setValue(`settings.${index}.vendorId`, value ? Number(value) : null, {\n shouldDirty: true,\n });\n }}\n disabled={disabled}\n {...posSelectProps}\n valueOptionsContent={availableVendorOptions}\n enableEmptySelection={!isAllVendorsSelectedInOtherRows}\n />\n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { IconButton } from 'src/components/Buttons';\nimport { DeliveryTypeSelector } from 'src/components/Selectors/DeliveryTypeSelector';\nimport { vars } from 'src/core/themes';\nimport { SimpleTable } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { DeleteIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Event, Feature } from 'src/WebApiController';\n\nimport { AutoFulfillCell } from './AutoFulfillCell';\nimport { SellerAccountEventSettingsInput } from './FulfillmentSection.types';\nimport { InHandCell } from './InHandCell';\nimport { TicketTypePriorityCell } from './TicketTypePriorityCell';\nimport { VendorCell } from './VendorCell';\n\nexport const EventSettingForm = ({\n event,\n disabled,\n onDeleteSetting,\n index,\n}: {\n event?: Event;\n disabled?: boolean;\n onDeleteSetting: (index: number) => void;\n index: number;\n}) => {\n const hasAutoFulfillSettingFeature = useUserHasFeature(\n Feature.AutoFulfillSetting\n );\n\n const { watch, setValue } = useFormContext();\n\n const settings = watch('settings');\n const delivType = watch(`settings.${index}.delivType`);\n\n return (\n \n \n \n \n \n {\n if (deliveryType !== delivType) {\n setValue(`settings.${index}.delivType`, deliveryType, {\n shouldDirty: true,\n });\n setValue(`settings.${index}.tktTypeRules`, null, {\n shouldDirty: true,\n });\n }\n }}\n disabled={disabled}\n />\n \n \n \n \n {hasAutoFulfillSettingFeature && (\n \n \n \n )}\n \n \n \n \n \n }\n disabled={disabled}\n titleContentId={ContentId.Delete}\n onClick={() => onDeleteSetting(index)}\n />\n \n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { SellerAccountEventSetting } from 'src/WebApiController';\n\nexport const hasNoChangeOrIsDeleteOnly = (\n sellerAccountEventSettings: SellerAccountEventSetting[] | null | undefined,\n formValuesettings: SellerAccountEventSetting[] | null | undefined\n): boolean => {\n // Basically return true if every setting in the formValuesettings is contained within the sellerAccountEventSettings\n if (!formValuesettings?.length) {\n return true;\n }\n\n for (const formValueSetting of formValuesettings) {\n const matchingSetting = sellerAccountEventSettings?.find(\n (setting) =>\n setting.vendorId === formValueSetting.vendorId &&\n setting.delivType === formValueSetting.delivType\n );\n\n if (!matchingSetting) {\n return false;\n }\n\n if (!isEqual(matchingSetting, formValueSetting)) {\n return false;\n }\n }\n\n return true;\n};\n","import { useCallback, useEffect, useMemo } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { EventAccordionItemProps } from 'src/components/Accordions';\nimport { ButtonWithIcon, ReloadButton } from 'src/components/Buttons';\nimport { PURCHASE_BULK_BACKFILL_DELIVERY_SETTINGS_KEY } from 'src/components/Purchases/PurchaseActionDropdown';\nimport { usePurchaseVendorSelector } from 'src/components/Selectors/PurchaseVendorSelector/usePurchaseVendorSelector';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext/ErrorBoundaryContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Button, SimpleTable, Stack } from 'src/core/ui';\nimport { BulkUpdateDeliveryOverrideDialog } from 'src/dialogs/BulkEdits/BulkUpdateDeliveryOverrideDialog';\nimport { useSellerAccountEventSettings } from 'src/hooks/api/useSellerAccountEventSettings';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EmptyPurchaseQuery } from 'src/utils/eventQueryUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditPreviewWithDetails,\n BulkEditPurchaseClient,\n DeliveryType,\n EventWithData,\n Feature,\n Listing,\n PurchaseOrderQuery,\n PurchaseOrderState,\n SellerAccountEventSetting,\n} from 'src/WebApiController';\n\nimport { EventSettingForm } from '../FulfillmentSection/EventSettingForm';\nimport { SellerAccountEventSettingsInput } from '../FulfillmentSection/FulfillmentSection.types';\nimport * as styles from '../InventoryEventPage.css';\nimport * as sectionStyles from './InventoryEventFulfillmentSection.css';\nimport { hasNoChangeOrIsDeleteOnly } from './InventoryEventFulfillmentSection.utils';\n\ntype InventoryEventContentProps = {\n accordionItemProps?: EventWithData;\n inventoryAccordionItem?: EventAccordionItemProps;\n};\n\nexport function InventoryEventFulfillmentSection({\n accordionItemProps,\n inventoryAccordionItem,\n}: InventoryEventContentProps) {\n const { activeAccountWebClientConfig } = useAppContext();\n const updateKey = PURCHASE_BULK_BACKFILL_DELIVERY_SETTINGS_KEY;\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const { BodyComponent } = inventoryAccordionItem || {};\n const event = accordionItemProps?.event;\n\n const hasAutoFulfillSettingFeature = useUserHasFeature(\n Feature.AutoFulfillSetting\n );\n\n const { availableVendors } = usePurchaseVendorSelector({});\n const numVendors = Object.keys(availableVendors).length;\n\n const updateDialog = useBasicDialog();\n\n const { openDialog, closeDialog } = useDialog(\n DialogId.BulkBackfillDeliverySettings,\n BulkUpdateDeliveryOverrideDialog\n );\n\n const {\n sellerAccountEventSettings,\n isLoading,\n updateSellerAccountEventSettings,\n isMutationLoading,\n } = useSellerAccountEventSettings(event?.viagId);\n\n const methods = useForm({\n defaultValues: {\n settings: sellerAccountEventSettings ?? [],\n },\n });\n\n const {\n getValues,\n watch,\n formState: { isDirty },\n } = methods;\n\n useEffect(() => {\n methods.reset({\n settings: sellerAccountEventSettings ?? [],\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sellerAccountEventSettings]);\n\n const onSubmit = useCallback(async () => {\n const { settings } = getValues();\n await updateSellerAccountEventSettings(settings);\n }, [getValues, updateSellerAccountEventSettings]);\n\n const onReset = useCallback(() => {\n methods.setValue('settings', sellerAccountEventSettings ?? [], {\n shouldDirty: true,\n });\n }, [methods, sellerAccountEventSettings]);\n\n const settings = watch('settings');\n\n const canAddNew = (settings?.length ?? 0) < numVendors + 1;\n\n const onCreateNewSetting = useCallback(() => {\n if (!canAddNew) {\n return;\n }\n\n const newSetting: SellerAccountEventSetting = {\n vendorId: null,\n delivType: Object.values(DeliveryType)[0],\n isNoFulfill: false,\n inHandAt: null,\n tktTypeRules: {\n overrides: [],\n },\n };\n\n methods.setValue('settings', [...settings, newSetting], {\n shouldDirty: true,\n });\n }, [canAddNew, methods, settings]);\n\n const onDeleteSetting = useCallback(\n (index: number) => {\n const newSettings = [...settings];\n newSettings.splice(index, 1);\n methods.setValue('settings', newSettings, { shouldDirty: true });\n },\n [methods, settings]\n );\n\n const purchaseQuery = useMemo(() => {\n return {\n ...EmptyPurchaseQuery,\n purchaseOrderState: PurchaseOrderState.Active,\n eventOrMappingIds: [event!.viagId!.toString()],\n } as PurchaseOrderQuery;\n }, [event]);\n\n const onBulkUpdate = useCallback(\n async (\n updateSalesOfListings: boolean,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n ).bulkBackfillDeliverySettingsPreview(\n purchaseQuery,\n updateSalesOfListings,\n false\n );\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkBackfillDeliverySettingsPreview', error, {\n trackErrorData: { purchaseQuery },\n });\n }\n );\n } else {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n ).bulkBackfillDeliverySettingsListingOnly(\n preview!.preview,\n updateSalesOfListings,\n updateKey,\n supportBackgroundProcess\n );\n if (!supportBackgroundProcess) {\n closeDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkBackfillDeliverySettingsListingOnly', error, {\n trackErrorData: {\n preview,\n },\n });\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeDialog,\n purchaseQuery,\n showErrorDialog,\n updateKey,\n ]\n );\n\n const onSaveHandler = useCallback(() => {\n const { settings } = getValues();\n\n if (hasNoChangeOrIsDeleteOnly(sellerAccountEventSettings, settings)) {\n onSubmit();\n return;\n }\n\n openDialog({\n updateKey: updateKey,\n entityType: ActionOutboxEntityType.Listing,\n skipTicketGroups: true,\n ...updateDialog.dialogProps,\n onSaveOverrideSettings: onSubmit,\n onBulkUpdate: onBulkUpdate,\n onCancel: () => {\n closeDialog();\n },\n backfillDeliveryStrategyFeature:\n Feature.BackfillDeliveryStrategyInventoryEvent,\n backfillDeliveryStrategyToSaleFeature:\n Feature.BackfillDeliveryStrategyInventoryEventToSales,\n });\n }, [\n getValues,\n openDialog,\n updateKey,\n updateDialog.dialogProps,\n onSubmit,\n onBulkUpdate,\n sellerAccountEventSettings,\n closeDialog,\n ]);\n\n return (\n
    \n {BodyComponent && accordionItemProps && (\n
    \n {isLoading ? (\n \n ) : (\n \n \n {settings?.length !== 0 && (\n \n \n \n \n
    \n \n
    \n \n \n
    \n \n
    \n \n
    \n \n \n \n \n \n \n \n \n \n \n {hasAutoFulfillSettingFeature && (\n \n \n \n )}\n \n \n \n \n \n \n \n
    \n \n {settings.map((s, i) => (\n \n ))}\n \n
    \n )}\n
    \n {canAddNew && (\n \n \n }\n disabled={isMutationLoading || isLoading}\n textContentId={ContentId.AddOverride}\n onClick={() => {\n onCreateNewSetting();\n }}\n style={{ width: 'min-content', whiteSpace: 'nowrap' }}\n variant={'text'}\n />\n \n )}\n {isDirty && (\n \n \n \n \n \n \n )}\n
    \n )}\n
    \n )}\n
    \n );\n}\n","import { formatDistance } from 'date-fns';\nimport React, { useEffect, useState } from 'react';\n\nconst DefaultRefreshFrequency = 60 * 1_000; // 1 minute\n\ntype TimeDistanceProps = {\n date: Date | string | number;\n frequency?: number;\n includeSeconds?: boolean;\n addSuffix?: boolean;\n};\n\n/**\n * Simply component to count the date based of now.\n */\nexport const TimeDistance: React.FC = ({\n date,\n frequency = DefaultRefreshFrequency,\n includeSeconds = false,\n addSuffix = true,\n}) => {\n const [timeDistance, setTimeDistance] = useState('');\n\n useEffect(() => {\n const updateAgo = () => {\n setTimeDistance(\n formatDistance(new Date(date).getTime(), new Date().getTime(), {\n addSuffix,\n includeSeconds,\n })\n );\n };\n\n updateAgo();\n const interval = setInterval(updateAgo, frequency);\n\n return () => clearInterval(interval);\n }, [date, frequency, includeSeconds, addSuffix]);\n\n return {timeDistance};\n};\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TimeDistance } from 'src/components/common/TimeDistance';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventLastReviewedContext } from 'src/contexts/SellerEventLastReviewContext/SellerEventLastReviewContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { CheckIcon, LoadingIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { stringToUtcDate } from 'src/utils/dateTimeUtils';\n\nimport * as styles from './LastReviewedDisplay.css';\n\nconst FadeAnimationDuration = 1_000;\nconst GracePeriod = 3_000;\n\ntype InteractiveButtonProps = {\n isLoading: boolean;\n isCompleted: boolean;\n onClick: () => Promise;\n};\n\nconst InteractiveButton: React.FC = ({\n isLoading,\n isCompleted,\n onClick,\n}) => {\n const [animationStyle, setAnimationStyle] = useState();\n\n // Grace period to allow fade out\n const clearAnimation = useCallback(() => {\n setTimeout(() => setAnimationStyle(null), FadeAnimationDuration);\n }, []);\n\n useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let timeout: any = null;\n if (isCompleted) {\n setAnimationStyle(styles.checkBoxFadeIn);\n timeout = setTimeout(() => {\n setAnimationStyle(styles.checkBoxFadeOut);\n clearAnimation();\n }, GracePeriod);\n }\n\n return () => timeout && clearTimeout(timeout);\n }, [clearAnimation, isCompleted]);\n\n const icon = useMemo(() => {\n if (isLoading) {\n return ;\n }\n if (animationStyle) {\n return (\n \n );\n }\n return null;\n }, [isLoading, animationStyle]);\n\n return (\n \n {icon}\n {!animationStyle && !isLoading ? (\n \n ) : null}\n \n );\n};\n\nconst DateTimeRefreshFrequency = 5_000;\n\ntype LastReviewedDisplayProps = {\n viagVirtualId?: string;\n};\n\nexport const LastReviewedDisplay: React.FC = ({\n viagVirtualId,\n}) => {\n const {\n eventLastReviewed,\n isCompleted,\n isLoading,\n onSettingVirtualIds,\n onUpdateLastReviewedDateTime,\n } = useEventLastReviewedContext();\n\n useEffect(() => {\n if (viagVirtualId) {\n onSettingVirtualIds([viagVirtualId]);\n }\n }, [onSettingVirtualIds, viagVirtualId]);\n\n const lastReviewedDateTime = useMemo(() => {\n if (viagVirtualId && eventLastReviewed) {\n return eventLastReviewed[viagVirtualId];\n }\n return null;\n }, [eventLastReviewed, viagVirtualId]);\n\n const onUpdateLastReviewed = useCallback(async () => {\n if (viagVirtualId) {\n onUpdateLastReviewedDateTime(viagVirtualId);\n }\n }, [onUpdateLastReviewedDateTime, viagVirtualId]);\n\n return (\n
    \n
    \n \n
    \n
    \n {lastReviewedDateTime ? (\n \n ) : (\n \n )}\n \n
    \n
    \n );\n};\n","import clsx from 'clsx';\nimport { Dispatch, SetStateAction } from 'react';\nimport { EventAccordionItemProps } from 'src/components/Accordions';\nimport {\n AverageTicketPriceDisplay,\n SalesAndMarginDisplay,\n TicketsListedAndSoldDisplay,\n} from 'src/components/Listings/InventorySummaryWidgets';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { useCollapsableViewContext } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport {\n MultiSelectScope,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { hideMobile } from 'src/core/themes/shared.css';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { getInventorySummaryListingMetricsDisplayStrings } from 'src/utils/ticketMetricUtils';\nimport { EventWithData, Listing } from 'src/WebApiController';\nimport { Feature, ListingMetrics } from 'src/WebApiController';\n\nimport { LastReviewedDisplay } from '../../InventorySummaryWidgets/LastReviewedDisplay';\nimport * as styles from '../InventoryEventPage.css';\nimport { useCatchUpParams } from '../InventoryEventPage.hooks';\n\ntype InventoryEventContentProps = {\n accordionItemProps?: EventWithData;\n inventoryAccordionItem?: EventAccordionItemProps;\n selectedListingIds: number[];\n setSelectedListingIds: Dispatch>;\n};\n\nexport function InventoryEventInfoSection({\n accordionItemProps,\n inventoryAccordionItem,\n selectedListingIds,\n setSelectedListingIds,\n}: InventoryEventContentProps) {\n const event = accordionItemProps?.event;\n const { BodyComponent, AfterHeaderComponent } = inventoryAccordionItem || {};\n const { onScroll, isCollapsedView, isEnabled } = useCollapsableViewContext();\n\n const hasEventListingTableHotkeysFeature = useUserHasFeature(\n Feature.EventListingTableHotkeys\n );\n const hasBlockInventorySummaryStatsFeature = useUserHasFeature(\n Feature.BlockInventorySummaryStats\n );\n\n const { loginContext } = useAppContext();\n const { selectionMode } = useMultiSelectionContext();\n const isSelectionModeOn = !!selectionMode?.mode;\n\n const { isCatchupMode } = useCatchUpParams();\n\n const { eventMetrics: eventMetricsMap } =\n useCatalogMetricsContext();\n\n const eventMetrics = eventMetricsMap?.[event?.viagVirtualId ?? ''];\n const formattedTotalMetrics = eventMetrics\n ? getInventorySummaryListingMetricsDisplayStrings(\n eventMetrics,\n loginContext?.user?.activeAccount?.currencyCode\n )\n : undefined;\n\n return (\n
    \n {BodyComponent && accordionItemProps && (\n \n \n {!hasBlockInventorySummaryStatsFeature && (\n <>\n \n \n \n \n )}\n {!isCatchupMode && (\n \n )}\n \n\n
    \n {AfterHeaderComponent && }\n
    \n \n \n
    \n \n )}\n \n );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { Event, EventConfigClient } from 'src/WebApiController';\n\nconst DEFAULT_TOP_N_TRANSACTIONS = 10;\n\nexport const useGetMarketTransactionsForEvent = (\n event?: Event | null,\n topN = DEFAULT_TOP_N_TRANSACTIONS\n) => {\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const shouldQuery =\n activeAccountWebClientConfig.activeAccountId != null &&\n event?.viagId != null;\n const transactionsQuery = useQuery({\n queryKey: [\n 'EventConfigClient.getMarketTransactionsForEvent',\n activeAccountWebClientConfig,\n event?.viagId,\n ],\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n return new EventConfigClient(\n activeAccountWebClientConfig\n ).getMarketTransactionsForEvent(event!.viagId!, topN);\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('EventConfigClient.getMarketTransactionsForEvent', error, {\n trackErrorData: {\n viagogoEventId: event?.viagId,\n },\n });\n },\n },\n });\n\n return {\n transactionsQuery,\n };\n};\n","import { ColumnDef } from '@tanstack/react-table';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getAllInPriceFromListPrice } from 'src/utils/inventoryUtils';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\nimport { sortByNumericPrefix } from 'src/utils/tableUtils';\nimport { Marketplace, MarketTransaction } from 'src/WebApiController';\n\nimport * as styles from '../MarketTransactionsTable.css';\n\ntype MarketTransactionTableAdditionalInformation = {\n activeAccountUserId: string | null | undefined;\n};\nexport type MarketTransactionColumnType =\n | (MarketTransaction & MarketTransactionTableAdditionalInformation)\n | null;\n\nexport const MARKET_TRANSACTIONS_TABLE_COLUMNS_CONFIG: ColumnDef[] =\n [\n {\n id: 'yourListing',\n header: () => (\n {/** No header */}\n ),\n accessorFn: (data) => data?.sellerUserId == data?.activeAccountUserId,\n cell: ({ getValue, row: { original } }) => {\n if (!original) {\n return ;\n }\n const value = getValue() as string;\n if (!value) {\n return (\n \n );\n }\n\n return (\n \n
    \n \n
    \n
    \n );\n },\n sortingFn: sortByNumericPrefix,\n },\n {\n id: 'section',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data?.section,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as string;\n if (!original) {\n return ;\n }\n return (\n \n {value}\n \n );\n },\n sortingFn: sortByNumericPrefix,\n },\n {\n id: 'row',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data?.row,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as string;\n if (!original) {\n return ;\n }\n return (\n \n {value}\n \n );\n },\n sortingFn: sortByNumericPrefix,\n },\n {\n id: 'seat',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => {\n if (data?.seatTo) {\n return `${data.seatFrom}-${data.seatTo}`;\n }\n return data?.seatFrom;\n },\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as string;\n if (!original) {\n return ;\n }\n return (\n \n {value}\n \n );\n },\n },\n {\n id: 'quantity',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data?.quantityPurchased,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as number;\n if (!original) {\n return ;\n }\n return {value};\n },\n },\n {\n id: 'price',\n header: () => (\n \n \n \n ),\n accessorFn: (data) =>\n (data?.sellerNetProceeds ?? 0) / (data?.quantityPurchased ?? 1),\n cell: function Cell({ getValue, row: { original } }) {\n const listPrice = getValue() as number;\n const { getUiCurrency } = useLocalizationContext();\n\n const { loginContext } = useAppContext();\n if (!original) {\n return ;\n }\n\n const sellerFee =\n loginContext?.user?.activeAccount?.marketplaceSettings?.find(\n (m) => m.mkp === Marketplace.StubHub\n )?.sellerFee ?? 0;\n const currency = getUiCurrency(original.sellerCurrencyCode);\n\n const websitePrice = getAllInPriceFromListPrice(\n listPrice,\n null,\n sellerFee\n );\n\n return (\n \n {applyNumberFormatting({\n inputNumber: websitePrice,\n currencyCode: currency.code,\n currencyDecimalDigits: currency.dec,\n })}\n \n );\n },\n },\n ];\n","import {\n InitialTableState,\n PaginationState,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { FormatContent, useContent } from 'src/contexts/ContentContext';\nimport { NoData, Table } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { MarketTransaction } from 'src/WebApiController';\n\nimport {\n MARKET_TRANSACTIONS_TABLE_COLUMNS_CONFIG,\n MarketTransactionColumnType,\n} from './configs/MarketTransactionsTableColumnsConfig';\n\nexport type MarketTransactionsTableDataProps = {\n marketTransactions?: MarketTransaction[] | null;\n};\n\nexport type MarketTransactionsTableProps = MarketTransactionsTableDataProps & {\n initState?: InitialTableState;\n};\n\nexport function MarketTransactionsTable({\n marketTransactions,\n initState,\n}: MarketTransactionsTableProps) {\n const { activeAccountUserId, loginContext } = useAppContext();\n const transactionsText = useContent(ContentId.Transactions);\n\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const [sorting, setSorting] = useState(\n initState?.sorting || []\n );\n const [{ pageIndex, pageSize }, setPagination] = useState({\n pageIndex: initState?.pagination?.pageIndex || 0,\n pageSize: marketTransactions?.length ?? 0,\n });\n const pagination = useMemo(\n () => ({\n pageIndex,\n pageSize,\n }),\n [pageIndex, pageSize]\n );\n\n useEffect(() => {\n if (pagination.pageSize !== marketTransactions?.length) {\n setPagination((prevState) => ({\n ...prevState,\n pageSize: marketTransactions?.length ?? 0,\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [marketTransactions]);\n\n let data: MarketTransactionColumnType[] | undefined = undefined;\n if (marketTransactions) {\n data = marketTransactions.map((marketTransaction) => {\n return {\n ...marketTransaction,\n activeAccountUserId:\n loginContext?.user?.activeAccount?.id ?? activeAccountUserId ?? '',\n };\n });\n }\n\n const options: Partial> =\n useMemo(\n () => ({\n data,\n columns: MARKET_TRANSACTIONS_TABLE_COLUMNS_CONFIG,\n state: {\n pagination,\n sorting,\n activeAccountUserId,\n },\n onPaginationChange: setPagination,\n onSortingChange: setSorting,\n }),\n [data, activeAccountUserId, pagination, sorting]\n );\n\n return marketTransactions?.length ? (\n
    \n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n
    \n ) : (\n \n \n \n );\n}\n","import { EventAccordionItemProps } from 'src/components/Accordions';\nimport { FormatContent } from 'src/contexts/ContentContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useGetMarketTransactionsForEvent } from 'src/hooks/api/useGetMarketTransactionsForEvent';\nimport { MarketTransactionsTable } from 'src/tables/MarketTransactionsTable';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EventWithData, Listing } from 'src/WebApiController';\n\nimport * as styles from '../InventoryEventPage.css';\n\ntype InventoryEventContentProps = {\n accordionItemProps?: EventWithData;\n inventoryAccordionItem?: EventAccordionItemProps;\n};\n\nexport function InventoryEventTransactionsSection({\n accordionItemProps,\n inventoryAccordionItem,\n}: InventoryEventContentProps) {\n const { BodyComponent } = inventoryAccordionItem || {};\n\n const event = accordionItemProps?.event;\n\n const { transactionsQuery } = useGetMarketTransactionsForEvent(event);\n\n return (\n
    \n {BodyComponent && accordionItemProps && (\n
    \n {transactionsQuery.isLoading ? (\n \n ) : (\n <>\n \n {transactionsQuery.data?.length ? (\n \n ) : null}\n \n )}\n
    \n )}\n
    \n );\n}\n","import { format } from 'date-fns';\nimport { ListingExperiment } from 'src/WebApiController';\n\nexport const toExperimentName = (experiment: ListingExperiment) => {\n const formatedStartDate = format(\n new Date(experiment.startDate),\n 'MM/dd/yyyy'\n );\n const formatedEndDate = format(new Date(experiment.endDate), 'MM/dd/yyyy');\n if (experiment.discountPercentage) {\n return `${experiment.insertBy}:${experiment.discountPercentage}%-${formatedStartDate}-${formatedEndDate}`;\n }\n return `${experiment.insertBy}:${formatedStartDate}-${formatedEndDate}`;\n};\n","import { endOfDay, startOfDay } from 'date-fns';\nimport { ComponentProps, useCallback, useMemo } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { Content, useFormattedContent } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { DatePickerInput } from 'src/core/POS/DateSelector';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { FieldWrapper } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { toExperimentName } from 'src/utils/listingExperimentUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { Feature, ListingExperiment } from 'src/WebApiController';\n\nimport * as styles from './CreateExperimentDialog.css';\n\nexport type ExperimentGroupItem = {\n id: string;\n name: string;\n};\n\nexport type CreateExperimentDialogProps = ComponentProps & {\n defaultValues: ListingExperiment;\n availableGroups: ExperimentGroupItem[];\n isLoading: boolean;\n isUpdate?: boolean;\n onCreateExperiment: (experiment: ListingExperiment) => Promise;\n onUpdateExperiment: (experiment: ListingExperiment) => Promise;\n};\n\nexport const CreateExperimentDialog = ({\n defaultValues,\n ...rest\n}: CreateExperimentDialogProps) => {\n const methods = useForm({\n defaultValues,\n });\n\n return (\n \n \n \n );\n};\n\nfunction CreateExperimentDialogContent({\n defaultValues,\n availableGroups,\n isLoading,\n isUpdate = false,\n onCreateExperiment,\n onUpdateExperiment,\n onClosed,\n onCancel,\n disabled,\n control,\n formState,\n watch,\n clearErrors,\n setError,\n setValue,\n getValues,\n handleSubmit,\n reset,\n ...rest\n}: CreateExperimentDialogProps &\n Omit<\n ComponentProps>,\n 'children'\n >) {\n const onSubmitHandler = useCallback(async () => {\n if (isUpdate) {\n await handleSubmit(onUpdateExperiment)();\n } else {\n await handleSubmit(onCreateExperiment)();\n }\n onClosed && onClosed();\n }, [\n handleSubmit,\n isUpdate,\n onClosed,\n onCreateExperiment,\n onUpdateExperiment,\n ]);\n\n const startDate = watch('startDate');\n const endDate = watch('endDate');\n const discount = watch('discountPercentage');\n const listingGroupId = watch('listingGroupId');\n\n const minDiscountText = useFormattedContent(\n FormatContentId.MinDiscountContent,\n '5%'\n );\n\n const hasFlashSaleDiscountRestriction = useUserHasFeature(\n Feature.FlashSaleDiscountRestriction\n );\n\n const hasBadDiscountValue = useMemo(() => {\n return hasFlashSaleDiscountRestriction && discount && discount < 5;\n }, [discount, hasFlashSaleDiscountRestriction]);\n\n const listingGroupOptions = useMemo(() => {\n const options: Record = {};\n for (const item of availableGroups) {\n options[item.id] = item.name;\n }\n return options;\n }, [availableGroups]);\n\n return (\n <>\n }\n onKeyUp={(e) => {\n if (e.key === 'Enter') {\n onSubmitHandler();\n }\n }}\n onOpened={() => {\n reset(defaultValues);\n }}\n footer={\n \n \n {onCancel && (\n \n )}\n \n \n \n \n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n }>\n \n \n \n \n }>\n {\n setValue('listingGroupId', key == 'N/A' ? null : key);\n }}\n value={listingGroupId ?? ''}\n displayText={listingGroupOptions[listingGroupId ?? ''] ?? 'N/A'}\n disabled={disabled || isLoading || isUpdate}\n style={{ width: '100%' }}\n searchable={Object.keys(listingGroupOptions).length > 10}\n valueOptionsContent={listingGroupOptions}\n />\n \n \n\n \n }>\n {\n const value = parseInt(event.target.value ?? '0');\n if (!isNaN(value)) {\n setValue('discountPercentage', value);\n }\n }}\n spellCheck={false}\n trimOnBlur={true}\n postfixDisplay={'%'}\n disabled={isUpdate}\n />\n \n {hasBadDiscountValue && (\n
    {minDiscountText}
    \n )}\n
    \n \n }>\n {\n if (date) {\n clearErrors('startDate');\n const dateStr = startOfDay(date).toISOString();\n if (dateStr !== startDate) {\n setValue('startDate', dateStr);\n }\n }\n }}\n locale={getLocaleFromLanguageOrCurrent()}\n disabled={isUpdate}\n />\n \n \n \n }>\n {\n if (date) {\n clearErrors('endDate');\n const dateStr = endOfDay(date).toISOString();\n if (dateStr !== endDate) {\n setValue('endDate', dateStr);\n }\n }\n }}\n locale={getLocaleFromLanguageOrCurrent()}\n />\n \n \n
    \n \n \n );\n}\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useCallback, useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n ListingExperiment,\n ListingExperimentClient,\n} from 'src/WebApiController';\n\nexport function useListingExperiments(viagogoEventId: number) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const queryClient = useQueryClient();\n const queryKey = useMemo(\n () => [\n 'getListingExperimentsByViagogoEventId',\n activeAccountWebClientConfig.activeAccountId,\n viagogoEventId,\n ],\n [activeAccountWebClientConfig.activeAccountId, viagogoEventId]\n );\n\n const listingExperimentQuery = useQuery({\n queryKey,\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return await new ListingExperimentClient(\n activeAccountWebClientConfig\n ).getListingExperimentsByViagogoEventId(viagogoEventId);\n },\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n staleTime: Infinity,\n meta: {\n onError: (error: ErrorTypes) => {\n showErrorDialog(\n 'ListingExperimentClient.getListingExperimentsByViagogoEventId',\n error\n );\n },\n },\n });\n\n const createExperimentMutation = useMutation({\n mutationFn: async (experiment: ListingExperiment) => {\n return await new ListingExperimentClient(\n activeAccountWebClientConfig\n ).createListingExperiment(experiment);\n },\n onMutate: (experiment) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue: ListingExperiment[] | undefined =\n queryClient.getQueryData(queryKey);\n if (prevValue) {\n prevValue.push(experiment);\n queryClient.setQueryData(queryKey, prevValue);\n } else {\n queryClient.setQueryData(queryKey, [experiment]);\n }\n return { prevValue };\n },\n onError: (err: ErrorTypes, experiment, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('ListingExperimentClient.createListingExperiment', err, {\n trackErrorData: { experiment },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n },\n });\n\n const updateExperimentMutation = useMutation({\n mutationFn: async (experiment: ListingExperiment) => {\n return await new ListingExperimentClient(\n activeAccountWebClientConfig\n ).updateListingExperiment(experiment);\n },\n onMutate: (experiment) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue: ListingExperiment[] | undefined =\n queryClient.getQueryData(queryKey);\n if (prevValue) {\n const index = prevValue.findIndex(\n (e) =>\n e.viagogoEventId === viagogoEventId &&\n e.listingGroupId === experiment.listingGroupId\n );\n if (index >= 0) {\n prevValue[index] = experiment;\n queryClient.setQueryData(queryKey, prevValue);\n }\n }\n return { prevValue };\n },\n onError: (err: ErrorTypes, experiment, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('ListingExperimentClient.updateListingExperiment', err, {\n trackErrorData: { experiment },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n },\n });\n\n const stopExperimentMutation = useMutation({\n mutationFn: async (listingGroupId: string | null) => {\n return await new ListingExperimentClient(\n activeAccountWebClientConfig\n ).stopListingExperiment(viagogoEventId, listingGroupId);\n },\n onMutate: (listingGroupId: string | null) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue: ListingExperiment[] | undefined =\n queryClient.getQueryData(queryKey);\n if (prevValue) {\n const index = prevValue.findIndex(\n (e) =>\n e.viagogoEventId === viagogoEventId &&\n e.listingGroupId === listingGroupId\n );\n if (index >= 0) {\n const current = prevValue[index];\n prevValue[index] = {\n ...current,\n endDate: new Date().toISOString(),\n discountPercentage: null,\n };\n queryClient.setQueryData(queryKey, prevValue);\n }\n }\n return { prevValue };\n },\n onError: (err: ErrorTypes, viagogoEventId, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('ListingExperimentClient.stopListingExperiment', err, {\n trackErrorData: { viagogoEventId },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n },\n });\n\n const restartExperimentMutation = useMutation({\n mutationFn: async (experiment: ListingExperiment) => {\n return await new ListingExperimentClient(\n activeAccountWebClientConfig\n ).restartListingExperiment(experiment);\n },\n onError: (err: ErrorTypes, viagogoEventId, context) => {\n showErrorDialog('ListingExperimentClient.restartListingExperiment', err, {\n trackErrorData: { viagogoEventId },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n },\n });\n\n const onCreateExperiment = useCallback(\n async (experiment: ListingExperiment) => {\n await createExperimentMutation.mutateAsync(experiment);\n },\n [createExperimentMutation]\n );\n const onUpdateExperiment = useCallback(\n async (experiment: ListingExperiment) => {\n await updateExperimentMutation.mutateAsync(experiment);\n },\n [updateExperimentMutation]\n );\n const onStopExperiment = useCallback(\n async (listingGroupId: string | null) => {\n await stopExperimentMutation.mutateAsync(listingGroupId);\n },\n [stopExperimentMutation]\n );\n\n const onRestartExperiment = useCallback(\n async (experiment: ListingExperiment) => {\n await restartExperimentMutation.mutateAsync(experiment);\n },\n [restartExperimentMutation]\n );\n\n return {\n experiments: listingExperimentQuery.data,\n onCreateExperiment,\n onUpdateExperiment,\n onStopExperiment,\n onRestartExperiment,\n isLoading:\n listingExperimentQuery.isLoading ||\n createExperimentMutation.isPending ||\n updateExperimentMutation.isPending ||\n stopExperimentMutation.isPending,\n };\n}\n","import { useMemo } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { CheckIcon, IconsFill, MoreIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature, ListingExperiment } from 'src/WebApiController';\n\ntype ActionCellProps = {\n experiment: ListingExperiment;\n onResumeExperiment: (listingGroupId: string | null) => void;\n onRestartExperiment: (listingGroupId: string | null) => void;\n onStopExperiment: (listingGroupId: string | null) => Promise;\n};\n\nconst enum ExperimentStatus {\n Scheduled = 'scheduled',\n Running = 'running',\n Completed = 'completed',\n}\n\nconst StatusIcon = ({ status }: { status: ExperimentStatus }) => {\n switch (status) {\n case ExperimentStatus.Scheduled:\n return ;\n case ExperimentStatus.Running:\n return ;\n case ExperimentStatus.Completed:\n return ;\n default:\n return null;\n }\n};\n\nexport const ActionCell = ({\n experiment,\n onResumeExperiment,\n onRestartExperiment,\n onStopExperiment,\n}: ActionCellProps) => {\n const status = useMemo(() => {\n const { startDate, endDate } = experiment;\n const now = new Date();\n\n if (new Date(startDate.replace(' ', 'T') + 'Z') > now) {\n return ExperimentStatus.Scheduled;\n }\n if (new Date(endDate.replace(' ', 'T') + 'Z') > now) {\n return ExperimentStatus.Running;\n }\n return ExperimentStatus.Completed;\n }, [experiment]);\n\n const hasFlashSaleDiscountRestriction = useUserHasFeature(\n Feature.FlashSaleDiscountRestriction\n );\n\n return (\n \n \n \n \n \n }\n align=\"end\"\n >\n {\n e.stopPropagation();\n e.preventDefault();\n onStopExperiment(experiment.listingGroupId);\n }}\n disabled={status != ExperimentStatus.Running}\n >\n \n \n {hasFlashSaleDiscountRestriction && (\n {\n e.stopPropagation();\n e.preventDefault();\n onRestartExperiment(experiment.listingGroupId);\n }}\n >\n \n \n )}\n {\n e.stopPropagation();\n e.preventDefault();\n onResumeExperiment(experiment.listingGroupId);\n }}\n disabled={status != ExperimentStatus.Completed}\n >\n \n \n \n \n );\n};\n","import { ColumnDef } from '@tanstack/react-table';\nimport { Content } from 'src/contexts/ContentContext';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { FormatOption } from 'src/modals/EditTableColumns';\nimport { TableShimmeringDiv } from 'src/tables/Table';\nimport { DateCell } from 'src/tables/Table/TableCells';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { toExperimentName } from 'src/utils/listingExperimentUtils';\nimport { ListingExperiment, ListingGroup } from 'src/WebApiController';\n\nimport { ActionCell } from './ActionCell';\n\nexport const getTableColumnDefinitions = (\n onStopExperiment: (listingGroupId: string | null) => Promise,\n onResumeExperiment: (listingGroupId: string | null) => void,\n onRestartExperiment: (listingGroupId: string | null) => void,\n listingGroups: ListingGroup[]\n): ColumnDef[] => [\n {\n id: 'name',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as ListingExperiment;\n if (!original) {\n return ;\n }\n return (\n \n {toExperimentName(value)}\n \n );\n },\n },\n {\n id: 'listingGroupId',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data.listingGroupId,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as string | null;\n if (!original) {\n return ;\n }\n const listingGroup = listingGroups.find(\n ({ ltGrpId }) => ltGrpId === value\n );\n return (\n \n {listingGroup ? listingGroup.groupName : ''}\n \n );\n },\n },\n {\n id: 'startDate',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data.startDate,\n cell: ({ getValue, row: { original } }) => {\n if (!original) {\n return ;\n }\n const value = getValue() as string;\n const dateValue = value ? new Date(value).toISOString() : value;\n\n return (\n \n );\n },\n },\n {\n id: 'endDate',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data.endDate,\n cell: ({ getValue, row: { original } }) => {\n if (!original) {\n return ;\n }\n const value = getValue() as string;\n const dateValue = value ? new Date(value).toISOString() : value;\n\n return (\n \n );\n },\n },\n {\n id: 'carts',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data,\n cell: ({ row: { original } }) => {\n if (!original) {\n return ;\n }\n return Coming Soon;\n },\n },\n {\n id: 'sales',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data,\n cell: ({ row: { original } }) => {\n if (!original) {\n return ;\n }\n return Coming Soon;\n },\n },\n {\n id: 'discount',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data.discountPercentage,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as number;\n if (!original) {\n return ;\n }\n if (!value) {\n return null;\n }\n return {`${value}%`};\n },\n },\n {\n id: 'actions',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as ListingExperiment;\n if (!original) {\n return ;\n }\n return (\n \n \n \n );\n },\n },\n];\n","import { TableOptions } from '@tanstack/react-table';\nimport { useMemo } from 'react';\nimport { FormatContent, useContent } from 'src/contexts/ContentContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { NoData, Table } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { ListingExperiment, ListingGroup } from 'src/WebApiController';\n\nimport { getTableColumnDefinitions } from './configs/ListingExperimentTableColumnsConfig';\n\nexport type ListingExpeirmentTableProps = {\n isLoading: boolean;\n experiments: ListingExperiment[] | null | undefined;\n listingGroups: ListingGroup[];\n onStopExperiment: (listingGroupId: string | null) => Promise;\n onResumeExperiment: (listingGroupId: string | null) => void;\n onRestartExperiment: (listingGroupId: string | null) => void;\n};\n\nexport const ListingExperimentTable: React.FC = ({\n isLoading,\n experiments,\n listingGroups,\n onStopExperiment,\n onResumeExperiment,\n onRestartExperiment,\n}) => {\n const experimentsText = useContent(ContentId.Experiments);\n\n const options: Partial> = useMemo(\n () => ({\n data: experiments ?? [],\n columns: getTableColumnDefinitions(\n onStopExperiment,\n onResumeExperiment,\n onRestartExperiment,\n listingGroups\n ),\n state: {},\n }),\n [\n experiments,\n onStopExperiment,\n onResumeExperiment,\n onRestartExperiment,\n listingGroups,\n ]\n );\n\n if (isLoading) {\n return ;\n }\n\n return experiments?.length ? (\n
    \n ) : (\n \n \n \n );\n};\n","import { endOfDay, startOfDay } from 'date-fns';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n CreateExperimentDialog,\n ExperimentGroupItem,\n} from 'src/dialogs/PricingABTest/CreateExperimentDialog';\nimport { useListingExperiments } from 'src/hooks/api/useListingExperiments';\nimport { BasicDialogProps } from 'src/hooks/useBasicDialog';\nimport { ListingExperimentTable } from 'src/tables/ListingExperimentTable/ListingExperimentTable';\nimport {\n Event,\n Listing,\n ListingExperiment,\n ListingGroup,\n} from 'src/WebApiController';\n\nimport * as styles from '../InventoryEventPage.css';\n\ntype InventoryPricingABTestSectionProps = {\n event: Event;\n listings: Listing[];\n createExperimentDialog: BasicDialogProps;\n};\n\nexport const InventoryPricingABTestSection: React.FC<\n InventoryPricingABTestSectionProps\n> = ({ event, listings, createExperimentDialog }) => {\n const {\n isLoading,\n experiments,\n onUpdateExperiment,\n onCreateExperiment,\n onStopExperiment,\n onRestartExperiment: restartExperimentMutation,\n } = useListingExperiments(event.viagId!);\n\n const { loginContext } = useAppContext();\n\n const [selectedExperiment, setSelectedExperiment] =\n useState(null);\n\n const listingGroups = useMemo(() => {\n return listings.filter(({ isLtGrp }) => isLtGrp) as ListingGroup[];\n }, [listings]);\n\n const availableListingGroups = useMemo((): ExperimentGroupItem[] => {\n const candidates = listingGroups\n .map(\n (group) =>\n ({\n id: (group as ListingGroup).ltGrpId,\n name: (group as ListingGroup).groupName,\n }) as ExperimentGroupItem\n )\n .concat({ id: 'N/A', name: 'N/A' });\n\n if (selectedExperiment) {\n return candidates;\n }\n\n const usedListingGroupIds = experiments?.map(\n ({ listingGroupId }) => listingGroupId ?? 'N/A'\n );\n\n return candidates.filter(({ id }) => !usedListingGroupIds?.includes(id));\n }, [experiments, listingGroups, selectedExperiment]);\n\n const defaultValues = useMemo((): ListingExperiment => {\n if (selectedExperiment) {\n return selectedExperiment;\n }\n const current = new Date();\n const startDate = startOfDay(current).toISOString();\n current.setDate(current.getDate() + 7);\n const endDate = endOfDay(current).toISOString();\n return {\n viagogoEventId: event.viagId!,\n listingGroupId: null,\n listingGroupName: null,\n targetPercentage: null,\n discountPercentage: 10,\n startDate,\n endDate,\n insertBy: loginContext?.user?.displayName || '',\n };\n }, [event.viagId, loginContext?.user?.displayName, selectedExperiment]);\n\n const onResumeExperiment = useCallback(\n (listingGroupId: string | null) => {\n const selected = experiments?.find(\n (experiment) => experiment.listingGroupId === listingGroupId\n );\n setSelectedExperiment(selected ?? null);\n createExperimentDialog.launchDialog();\n },\n [createExperimentDialog, experiments]\n );\n\n const onRestartExperiment = useCallback(\n (listingGroupId: string | null) => {\n const exp = experiments?.find(\n (experiment) => experiment.listingGroupId === listingGroupId\n );\n\n if (exp) {\n restartExperimentMutation(exp);\n }\n },\n [restartExperimentMutation, experiments]\n );\n\n const onCloseDialog = useCallback(() => {\n setSelectedExperiment(null);\n createExperimentDialog.closeDialog();\n }, [createExperimentDialog]);\n\n return (\n <>\n
    \n \n
    \n \n \n );\n};\n","import { ROW_FILTER_MISSING } from 'src/components/common/FilterPill/FilterPillList.constants';\nimport { Listing } from 'src/WebApiController';\n\nexport const filterListingItemsBySectionRow = (\n listing: Listing,\n listingSectionId: number | null,\n sectionIdFilters: number[],\n rowIdFilters: number[],\n sectionRowIdFilters: { [key: string]: string },\n quantityFilter: number\n) => {\n const sectionId = listingSectionId ?? 0;\n const rowId = listing.seating.rowId ?? 0;\n const quantity = listing.availQty ?? 0;\n\n // filter by quantity\n if (quantity < quantityFilter) {\n return false;\n }\n\n // filter by section\n const sectionIncluded =\n sectionIdFilters.length > 0 ? sectionIdFilters.includes(sectionId) : true;\n\n if (!sectionIncluded) {\n return false;\n }\n\n // No row filters for the section, return true\n if (\n sectionRowIdFilters[sectionId] == null ||\n sectionRowIdFilters[sectionId] === ROW_FILTER_MISSING\n ) {\n return true;\n }\n\n // filter by row\n const rowIncluded =\n rowIdFilters.length > 0 ? rowIdFilters.includes(rowId) : true;\n\n return rowIncluded;\n};\n","import { useCallback, useEffect, useMemo } from 'react';\nimport { MultiSelectActionBar } from 'src/components/common/MultiSelect/MultiSelectActionBar';\nimport { InventoryEventBulkActions } from 'src/components/Events/EventListing/InventoryEventListing/BulkActions/InventoryEventBulkActions/InventoryEventBulkActions';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCollapsableViewContext } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useGetCompListings } from 'src/hooks/useGetCompListings';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { flattenListingGroup } from 'src/modals/GroupListings/components/groupingUtils';\nimport { ListingTable } from 'src/tables/ListingTable';\nimport { ListingTableColumnId } from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { getAllInPriceFromListPrice } from 'src/utils/inventoryUtils';\nimport { getMatchingSectionRow } from 'src/utils/seatScoreUtils';\nimport { EventWithData } from 'src/WebApiController';\nimport {\n IListingGroupItem,\n Listing,\n Marketplace,\n UserSetting,\n} from 'src/WebApiController';\n\nimport * as styles from '../InventoryEventPage.css';\nimport { useStubHubListingManualPricingContext } from '../MarketListings/StubHubListingsManualPricingContext';\nimport { filterListingItemsBySectionRow } from '../MarketListings/StubHubListingsManualPricingContext.utils';\nimport {\n mapCompListingToListing,\n prependTicketClassColorColumnForFirstTime,\n} from './ManualPricingSection.utils';\n\ntype ManualPricingSectionProps = {\n accordionItemProps?: EventWithData;\n};\n\nexport function ManualPricingSection({\n accordionItemProps,\n}: ManualPricingSectionProps) {\n const { onScroll } = useCollapsableViewContext();\n const { entities, event } = accordionItemProps || {};\n const ownListings = entities?.listings;\n const { compListingsQuery } = useGetCompListings(event);\n const {\n rowIdFilters,\n sectionIdFilters,\n sectionRowIdFilters,\n quantityFilter,\n } = useStubHubListingManualPricingContext();\n\n const {\n value: storedInventoryColumnsEnabledSetting,\n setUserSetting: setInventoryColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.InventoryColumnsEnabled,\n });\n\n const {\n value: storedInventoryColumnOrderSetting,\n setUserSetting: setInventoryColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.InventoryColumnOrder,\n });\n\n useEffect(() => {\n // XX Migration to add TicketClassColor column for users\n // When the column becomes available for the first time\n if (\n storedInventoryColumnOrderSetting != null &&\n storedInventoryColumnsEnabledSetting != null\n ) {\n prependTicketClassColorColumnForFirstTime(\n storedInventoryColumnOrderSetting,\n storedInventoryColumnsEnabledSetting,\n setInventoryColumnOrderSetting,\n setInventoryColumnsEnabledSetting\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [storedInventoryColumnOrderSetting, storedInventoryColumnsEnabledSetting]);\n\n const { loginContext } = useAppContext();\n const stubHubMkpSettings =\n loginContext?.user?.activeAccount?.marketplaceSettings?.find(\n (m) => m.mkp === Marketplace.StubHub\n );\n\n const { venueMapInfo } = useEventMapContext();\n\n const ticketClassIdColorMap = useMemo(() => {\n const colorMap = new Map();\n venueMapInfo?.sections.forEach((section) => {\n section.rows.forEach((row) => {\n if (row.tktClass?.id) {\n colorMap.set(row.tktClass.id, row.tktClass.color);\n }\n });\n });\n\n return colorMap;\n }, [venueMapInfo?.sections]);\n\n const filterListingItemsBySectionRowWrapper = useCallback(\n (l: Listing) => {\n const { section } = getMatchingSectionRow(\n l.seating,\n venueMapInfo?.sections\n );\n\n return filterListingItemsBySectionRow(\n l,\n section?.id ?? null,\n sectionIdFilters,\n rowIdFilters,\n sectionRowIdFilters,\n quantityFilter\n );\n },\n [\n quantityFilter,\n rowIdFilters,\n sectionIdFilters,\n sectionRowIdFilters,\n venueMapInfo?.sections,\n ]\n );\n\n const getListingTicketClassColor = useCallback(\n (listing: Listing) => {\n const { ticketClassId } = getMatchingSectionRow(\n listing.seating,\n venueMapInfo?.sections\n );\n\n return ticketClassIdColorMap.get(ticketClassId ?? 0);\n },\n [ticketClassIdColorMap, venueMapInfo?.sections]\n );\n\n const ownListingsMapped: Listing[] = useMemo(() => {\n const ownListingsFlattened =\n ownListings\n ?.flatMap(flattenListingGroup)\n .filter((l) => l.isFull)\n .map((lgi: IListingGroupItem) => {\n const listing = lgi as Listing;\n // Need to recalculate all in price to match display value\n const allInPrice = getAllInPriceFromListPrice(\n listing.listPrice,\n listing,\n stubHubMkpSettings?.sellerFee\n );\n\n return {\n ...listing,\n allInPrice,\n } as Listing;\n })\n .filter(filterListingItemsBySectionRowWrapper) || [];\n return ownListingsFlattened;\n }, [\n filterListingItemsBySectionRowWrapper,\n ownListings,\n stubHubMkpSettings?.sellerFee,\n ]);\n\n const ownListingsStubHubListingIds = useMemo(\n () =>\n ownListingsMapped\n .filter(\n (l) => l.mkpListings?.some((ml) => ml.mkp === Marketplace.StubHub)\n )\n .map(\n (l) =>\n l.mkpListings?.find((ml) => ml.mkp === Marketplace.StubHub)\n ?.mkpListingId ?? ''\n ),\n [ownListingsMapped]\n );\n\n const compListingsMapped = useMemo(\n () =>\n compListingsQuery.data\n ?.map(mapCompListingToListing)\n .filter(\n (cl) => !ownListingsStubHubListingIds.includes(cl.id.toString())\n )\n .filter(filterListingItemsBySectionRowWrapper) || [],\n [\n compListingsQuery.data,\n filterListingItemsBySectionRowWrapper,\n ownListingsStubHubListingIds,\n ]\n );\n\n const initState = useMemo(\n () => ({\n sorting: [{ id: ListingTableColumnId.AllInPrice, desc: false }],\n }),\n []\n );\n\n return (\n
    \n {accordionItemProps && (\n
    \n l.id)}\n >\n \n \n \n
    \n )}\n
    \n );\n}\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { EVENT_DETAILED_METRICS_QUERY_KEY } from 'src/tables/EventsTable/EventsTable.constants';\nimport { EventConfigClient, Tag } from 'src/WebApiController';\n\nexport const useEventTags = (\n viagVirtualId?: string | null,\n disabled?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n\n const queryClient = useQueryClient();\n const queryKey = ['EventConfigClient.getTagsForEvent', viagVirtualId];\n\n const shouldQuery =\n !disabled &&\n Boolean(activeAccountWebClientConfig.activeAccountId && viagVirtualId);\n const tagsQuery = useQuery({\n queryKey,\n queryFn: async () => {\n if (!shouldQuery) return null;\n\n const tags = await new EventConfigClient(\n activeAccountWebClientConfig\n ).getTagsForEvent(viagVirtualId!);\n\n return tags;\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('EventConfigClient.getTagsForEvent', error, {\n viagVirtualId,\n });\n },\n },\n });\n\n const mutation = useMutation({\n mutationFn: async ({\n tags,\n eventId,\n }: {\n tags: Tag[];\n eventId: string | null;\n }) => {\n const res = await new EventConfigClient(\n activeAccountWebClientConfig\n ).updateTagsForEvent(eventId ?? undefined, tags);\n return res;\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n onMutate: ({ tags }) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue = queryClient.getQueryData(queryKey);\n queryClient.setQueryData(queryKey, tags);\n return { prevValue };\n },\n onError: (err: ErrorTypes, { tags }, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('EventConfigClient.updateTagsForEvent', err, {\n trackErrorData: { tags },\n });\n },\n onSettled: (_data, _error, { tags }) => {\n queryClient.invalidateQueries({ queryKey });\n if (tags.some((t) => t.includeInReport)) {\n queryClient.invalidateQueries({\n queryKey: [`${EVENT_DETAILED_METRICS_QUERY_KEY}-detailed`],\n });\n }\n },\n });\n\n return {\n tags: tagsQuery.data,\n isLoading: tagsQuery.isLoading,\n async updateTags(tags: Tag[], eventId: string | null) {\n await mutation.mutateAsync({ tags, eventId });\n },\n };\n};\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Button } from 'src/core/ui';\nimport { useEventTags } from 'src/hooks/api/useEventTags';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { DetailSection } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tagHasChanges } from 'src/utils/tagUtils';\nimport { ActionOutboxEntityType, Permission, Tag } from 'src/WebApiController';\n\nimport { CancelButton } from '../../../Buttons';\nimport { TagsFormBodyV2 } from '../../../TagsFormBody';\nimport * as styles from '../InventoryEventPage.css';\n\ntype TagsUpdateInput = {\n tags: Tag[];\n};\n\nexport const TagsSection = ({\n eventId,\n disabled,\n}: {\n eventId: string;\n disabled?: boolean;\n}) => {\n const canCreateTage = useUserHasAnyOfPermissions(\n Permission.Events_AddTagType\n );\n const canEditTags = useUserHasAnyOfPermissions(Permission.Events_UpdateTags);\n\n const { setValue, watch, handleSubmit } = useForm();\n const tags = watch('tags') ?? [];\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const {\n tags: existingTags,\n updateTags,\n isLoading,\n } = useEventTags(eventId, disabled);\n\n const { tagsMetadata } = useTagsForEntityType(\n ActionOutboxEntityType.SellerEvent\n );\n\n const onSubmitHandler = useCallback(\n async (data: TagsUpdateInput) => {\n setIsSubmitting(true);\n await updateTags(data.tags, eventId);\n setIsSubmitting(false);\n },\n [eventId, updateTags]\n );\n\n useEffect(() => {\n if (existingTags && !isEqual(tags, existingTags)) {\n setValue('tags', existingTags);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [existingTags]);\n\n const hasChanges = tagHasChanges(tags, existingTags, tagsMetadata ?? []);\n\n if (isLoading) {\n return ;\n }\n\n return (\n
    \n }>\n {\n setValue('tags', tags);\n }}\n disabled={disabled || isSubmitting}\n entityType={ActionOutboxEntityType.SellerEvent}\n />\n\n {hasChanges && (\n
    \n {\n handleSubmit(onSubmitHandler)();\n }}\n >\n \n \n\n setValue('tags', existingTags ?? [])}\n disabled={isSubmitting || disabled}\n textContentId={ContentId.Cancel}\n />\n
    \n )}\n
    \n
    \n );\n};\n","import { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\n\nimport * as styles from './SortableZoneAreaItem.css';\n\nexport const SortableZoneAreaItem = ({\n label,\n color,\n id,\n}: {\n label: string;\n color: string;\n id: string;\n}) => {\n const { attributes, listeners, setNodeRef, transform, transition } =\n useSortable({ id: id });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n return (\n \n \n {label}\n \n );\n};\n","import { closestCenter, DndContext, DragEndEvent } from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { getContent, useContentContext } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { VENUE_ZONE_SECTION_GROUP_AREA_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { SectionSectionGroup } from 'src/WebApiController';\n\nimport { VenueZoneMapFormType } from '../InventoryEventVenueZoneMapSection';\nimport { SortableZoneAreaItem } from './SortableZoneAreaItem';\nimport * as styles from './VenueZoneSectionGroupDraggableList.css';\n\nexport const VenueZoneSectionGroupDraggableList = () => {\n const contentContext = useContentContext();\n const { setValue, watch } = useFormContext();\n\n const sectionSectionGroupLookup = watch('sectionSectionGroupLookup');\n const customSectionGroups = watch('customSectionGroups');\n\n const sectionGroups = Object.values(sectionSectionGroupLookup).reduce<{\n [key: string]: SectionSectionGroup;\n }>((acc, v) => {\n let sectionGroupName = `${v.ticketClassName}: ${v.sectionGroupAreaName}`;\n if (v.sectionGroupAreaType != null) {\n const sectionGroupAreaContentId =\n VENUE_ZONE_SECTION_GROUP_AREA_TYPE_TO_CID[v.sectionGroupAreaType];\n\n sectionGroupName = `${v.ticketClassName}: ${getContent(\n sectionGroupAreaContentId,\n contentContext\n )}`;\n }\n acc[sectionGroupName] = v;\n\n return acc;\n }, {});\n\n const sortabledSectionGroups = useMemo(() => {\n // Sort the sectionGroups by sectionGroupRank and areaRank\n const sortedSectionGroups = Object.entries(sectionGroups).map(\n ([key, value]) => ({\n id: crypto.randomUUID(),\n key,\n ...value,\n })\n );\n\n // Map over customSectionGroups and add unique IDs\n const customGroupsWithId = customSectionGroups.map((csg) => ({\n id: crypto.randomUUID(),\n key: `${csg.ticketClassName}: ${csg.sectionGroupAreaName}`,\n ...csg,\n }));\n\n // Combine the sorted section groups and custom section groups\n return sortedSectionGroups\n .concat(customGroupsWithId)\n .toSorted(\n (a, b) =>\n a.sectionGroupRank - b.sectionGroupRank || a.areaRank - b.areaRank\n );\n }, [sectionGroups, customSectionGroups]);\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event;\n\n if (over != null && active.id != over.id) {\n const oldIndex = sortabledSectionGroups.findIndex(\n (ro) => ro.id === active.id\n );\n\n const newIndex = sortabledSectionGroups.findIndex(\n (ro) => ro.id === over.id\n );\n\n const shiftedRankOverrides = arrayMove(\n sortabledSectionGroups,\n oldIndex,\n newIndex\n );\n\n // Update ranks based on new positions\n const updatedRankOverrides = shiftedRankOverrides\n .map((item, index) => ({\n ...item,\n sectionGroupRank: index,\n }))\n .reduce<{\n [key: string]: number;\n }>((acc, v) => {\n const ssgId = `${v.ticketClassName ?? ''}:${\n v.ticketClassId ?? ''\n }:${v.sectionGroupAreaName ?? ''}:${v.sectionGroupAreaType ?? ''}`;\n\n acc[ssgId] = v.sectionGroupRank;\n return acc;\n }, {});\n\n // Update the original sectionSectionGroupLookup with the new ranks\n const newSectionSectionGroupLookup = Object.entries(\n sectionSectionGroupLookup\n ).reduce<{\n [key: string]: SectionSectionGroup;\n }>((acc, [sectId, ssg]) => {\n const ssgId = `${ssg.ticketClassName ?? ''}:${\n ssg.ticketClassId ?? ''\n }:${ssg.sectionGroupAreaName ?? ''}:${\n ssg.sectionGroupAreaType ?? ''\n }`;\n\n const sgRank = updatedRankOverrides[ssgId] ?? 1;\n ssg.sectionGroupRank = sgRank;\n\n acc[sectId] = ssg;\n return acc;\n }, {});\n\n setValue('sectionSectionGroupLookup', newSectionSectionGroupLookup);\n\n const newCustomSectionGroups = customSectionGroups.reduce<\n SectionSectionGroup[]\n >((acc, ssg) => {\n const ssgId = `${ssg.ticketClassName ?? ''}:${\n ssg.ticketClassId ?? ''\n }:${ssg.sectionGroupAreaName ?? ''}:${\n ssg.sectionGroupAreaType ?? ''\n }`;\n\n const sgRank = updatedRankOverrides[ssgId] ?? 1;\n ssg.sectionGroupRank = sgRank;\n\n acc.push(ssg);\n return acc;\n }, []);\n\n setValue('customSectionGroups', newCustomSectionGroups);\n }\n },\n [\n customSectionGroups,\n sectionSectionGroupLookup,\n setValue,\n sortabledSectionGroups,\n ]\n );\n\n return (\n \n \n \n {sortabledSectionGroups.map((ssg) => (\n \n ))}\n \n \n \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { getContent, useContentContext } from 'src/contexts/ContentContext';\nimport { VENUE_ZONE_SECTION_GROUP_AREA_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { SectionSectionGroup } from 'src/WebApiController';\n\nimport { VenueZoneMapFormType } from '../InventoryEventVenueZoneMapSection';\nimport * as styles from './VenueZoneSectionGroup.css';\n\nexport const VenueZoneSectionGroupList = () => {\n const contentContext = useContentContext();\n const { watch } = useFormContext();\n\n const sectionSectionGroupLookup = watch('sectionSectionGroupLookup');\n const customSectionGroups = watch('customSectionGroups');\n\n const sectionGroups = Object.values(sectionSectionGroupLookup).reduce<{\n [key: string]: SectionSectionGroup;\n }>((acc, v) => {\n let sectionGroupName = `${v.ticketClassName}: ${v.sectionGroupAreaName}`;\n if (v.sectionGroupAreaType != null) {\n const sectionGroupAreaContentId =\n VENUE_ZONE_SECTION_GROUP_AREA_TYPE_TO_CID[v.sectionGroupAreaType];\n\n sectionGroupName = `${v.ticketClassName}: ${getContent(\n sectionGroupAreaContentId,\n contentContext\n )}`;\n }\n acc[sectionGroupName] = v;\n\n return acc;\n }, {});\n\n return (\n
    \n {Object.entries(sectionGroups)\n .toSorted(\n ([, a], [, b]) =>\n a.sectionGroupRank - b.sectionGroupRank || a.areaRank - b.areaRank\n )\n .map(([key, value]) => (\n
    \n \n {key}\n
    \n ))}\n\n {customSectionGroups.map((ssg) => (\n \n \n {`${ssg.ticketClassName}: ${ssg.sectionGroupAreaName}`}\n
    \n ))}\n \n );\n};\n","import { useCallback, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Button, Stack, Switch } from 'src/core/ui';\nimport { AddSectionGroupDialog } from 'src/dialogs/AddSectionGroupDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionSectionGroup } from 'src/WebApiController';\n\nimport { getRandomColor } from '../../../utils/colorUtils';\nimport { VenueZoneMapFormType } from '../InventoryEventVenueZoneMapSection';\nimport * as styles from './SectionGroupPanel.css';\nimport { VenueZoneSectionGroupDraggableList } from './VenueZoneSectionGroupDraggableList';\nimport { VenueZoneSectionGroupList } from './VenueZoneSectionGroupList';\n\nexport const SectionGroupPanel = () => {\n const { watch, setValue, reset } = useFormContext();\n\n const [useCustomRank, setUseCustomRank] = useState(false);\n\n const addSectionGroupDialog = useBasicDialog();\n\n const customSectionGroups = watch('customSectionGroups');\n\n const onAddSectionGroup = useCallback(\n (ticketClassName: string, sectionGroupName: string) => {\n const newCustomSectionGroup = {\n sectId: 0,\n areaRank: 1,\n sectionGroupRank: 1,\n ticketClassName: ticketClassName,\n sectionGroupAreaName: sectionGroupName,\n sectionGroupAreaType: null,\n ticketClassId: null,\n sectionGroupColor: getRandomColor(customSectionGroups.length),\n } as SectionSectionGroup;\n\n const newCustomSectionGroups = [\n ...(customSectionGroups || []),\n newCustomSectionGroup,\n ];\n setValue('customSectionGroups', newCustomSectionGroups);\n\n addSectionGroupDialog.closeDialog();\n },\n [addSectionGroupDialog, customSectionGroups, setValue]\n );\n\n return (\n
    \n \n \n \n \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n if (!isChecked) {\n reset();\n }\n\n setUseCustomRank(isChecked);\n }}\n />\n \n \n {useCustomRank ? (\n \n ) : (\n \n )}\n\n
    \n \n
    \n \n
    \n );\n};\n","import { useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport {\n Content,\n getContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport {\n PosDropdownAnimated,\n PosDropdownAnimatedItem,\n} from 'src/core/POS/PosDropdownAnimated';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { VENUE_ZONE_SECTION_GROUP_AREA_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { SectionSectionGroup } from 'src/WebApiController';\n\nimport { VenueZoneMapFormType } from '../InventoryEventVenueZoneMapSection';\nimport * as styles from './VenueZoneSectionGroupDropdownList.css';\n\nexport type VenueZoneSectionGroupDropdownListProps = {\n selectedSectionSectionGroup: SectionSectionGroup | null;\n setSelectedSectionSectionGroup: React.Dispatch<\n React.SetStateAction\n >;\n};\n\nexport const VenueZoneSectionGroupDropdownList = ({\n selectedSectionSectionGroup,\n setSelectedSectionSectionGroup,\n}: VenueZoneSectionGroupDropdownListProps) => {\n const contentContext = useContentContext();\n\n const { watch } = useFormContext();\n\n const sectionSectionGroupLookup = watch('sectionSectionGroupLookup');\n const customSectionGroups = watch('customSectionGroups');\n\n const sectionGroups = Object.values(sectionSectionGroupLookup).reduce<{\n [key: string]: SectionSectionGroup;\n }>((acc, v) => {\n let sectionGroupName = `${v.ticketClassName}: ${v.sectionGroupAreaName}`;\n if (v.sectionGroupAreaType != null) {\n const sectionGroupAreaContentId =\n VENUE_ZONE_SECTION_GROUP_AREA_TYPE_TO_CID[v.sectionGroupAreaType];\n\n sectionGroupName = `${v.ticketClassName}: ${getContent(\n sectionGroupAreaContentId,\n contentContext\n )}`;\n }\n acc[sectionGroupName] = v;\n\n return acc;\n }, {});\n\n const selectedSectionGroup = useCallback(() => {\n if (selectedSectionSectionGroup == null) {\n return ;\n }\n\n if (selectedSectionSectionGroup.sectionGroupAreaType == null) {\n return (\n <>\n \n \n {`${selectedSectionSectionGroup.ticketClassName}: ${selectedSectionSectionGroup.sectionGroupAreaName}`}\n \n \n );\n }\n\n const sectionGroupAreaContentId =\n VENUE_ZONE_SECTION_GROUP_AREA_TYPE_TO_CID[\n selectedSectionSectionGroup.sectionGroupAreaType\n ];\n\n return (\n <>\n \n \n {`${selectedSectionSectionGroup.ticketClassName}: ${getContent(\n sectionGroupAreaContentId,\n contentContext\n )}`}\n \n \n );\n }, [contentContext, selectedSectionSectionGroup]);\n\n return (\n {selectedSectionGroup()}\n }\n align=\"end\"\n >\n {Object.entries(sectionGroups)\n .toSorted(\n ([, a], [, b]) =>\n a.sectionGroupRank - b.sectionGroupRank || a.areaRank - b.areaRank\n )\n .map(([label, ssg]) => (\n {\n e.preventDefault();\n e.stopPropagation();\n setSelectedSectionSectionGroup(ssg);\n }}\n >\n \n {label}\n \n ))}\n\n {customSectionGroups.map((ssg) => (\n {\n e.preventDefault();\n e.stopPropagation();\n setSelectedSectionSectionGroup(ssg);\n }}\n >\n \n {`${ssg.ticketClassName}: ${ssg.sectionGroupAreaName}`}\n \n ))}\n \n );\n};\n","import { ComponentProps, useEffect, useMemo, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { VenueZoneSectionGroupDropdownList } from 'src/components/Listings/InventoryEventPage/Sections/VenueZoneMap/components/VenueZoneSectionGroupDropdownList';\nimport { Content } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionInfo, SectionSectionGroup } from 'src/WebApiController';\n\nimport * as styles from './ChangeZoneMapSectionGroupDialog.css';\n\nexport type ChangeZoneMapDialogProps = ComponentProps & {\n selectedSections: SectionInfo[] | undefined;\n sectionIdMapping: { [key: string]: SectionSectionGroup } | undefined;\n onOkay: (\n sectionSectionGroup: SectionSectionGroup,\n sectionIds: number[]\n ) => void;\n onCancel: () => void;\n};\n\nexport function ChangeZoneMapSectionGroupDialog({\n selectedSections,\n sectionIdMapping,\n onOkay,\n onCancel,\n ...rest\n}: ChangeZoneMapDialogProps) {\n const [selectedSectionSectionGroup, setSelectedSectionSectionGroup] =\n useState(null);\n\n const selectedSection = useMemo(() => {\n return selectedSections?.[0];\n }, [selectedSections]);\n\n useEffect(() => {\n const sectionId = selectedSection?.id;\n const sectionSectionGroup =\n sectionIdMapping && sectionId ? sectionIdMapping[sectionId] : undefined;\n\n if (sectionSectionGroup) {\n setSelectedSectionSectionGroup(sectionSectionGroup);\n }\n }, [sectionIdMapping, selectedSection?.id]);\n\n if (!selectedSections?.length || !selectedSection) {\n return null;\n }\n\n return (\n <>\n }\n footer={\n <>\n \n {\n if (selectedSectionSectionGroup != null) {\n onOkay(\n selectedSectionSectionGroup,\n selectedSections!.map((s) => s.id)\n );\n }\n }}\n >\n \n \n \n }\n onCancel={onCancel}\n >\n
    \n \n
    \n {\n \n }\n \n \n );\n}\n","import { useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { MultiSectionsDisplay } from 'src/components/Events/VenueMap';\nimport { EventVenueMap } from 'src/components/Events/VenueMap/EventVenueMap';\nimport { VenueMapContentProps } from 'src/components/Events/VenueMap/VenueMapContent';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Button, Stack } from 'src/core/ui';\nimport { ChangeZoneMapSectionGroupDialog } from 'src/dialogs/ChangeZoneMapSectionGroupDialog';\nimport { useAutoCompMapSectionHandler } from 'src/hooks/useAutoCompMapSectionHandler';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionSectionGroup } from 'src/WebApiController';\n\nimport { VenueZoneMapFormType } from '../InventoryEventVenueZoneMapSection';\nimport * as styles from './VenueZoneMap.css';\n\nexport const VenueZoneMap = ({\n createGetColor,\n}: {\n createGetColor: (\n sectionSectionGroupLookup?: {\n [key: string]: SectionSectionGroup;\n } | null\n ) => NonNullable;\n}) => {\n const changeSectionGroupDialog = useBasicDialog();\n const onLaunchingSingleSectionDialog = useCallback(\n () => changeSectionGroupDialog.launchDialog(),\n [changeSectionGroupDialog]\n );\n\n const {\n selectedSectionIds,\n selectedSectionData,\n onSectionClicked,\n onResetSections,\n onToggleMirrors,\n onSelectedSectionsChange,\n } = useAutoCompMapSectionHandler(onLaunchingSingleSectionDialog);\n\n const { watch, setValue } = useFormContext();\n const sectionSectionGroupLookup = watch('sectionSectionGroupLookup');\n\n const onSectionZoneChanged = useCallback(\n (newSectionSectionGroup: SectionSectionGroup, sectionIds: number[]) => {\n const sectionGroupIdMap = sectionSectionGroupLookup;\n\n const newSectionGroupIdMap = {\n ...sectionGroupIdMap,\n ...sectionIds.reduce(\n (acc: { [key: string]: SectionSectionGroup }, sectionId) => {\n acc[sectionId] = newSectionSectionGroup;\n return acc;\n },\n {}\n ),\n };\n\n setValue('sectionSectionGroupLookup', newSectionGroupIdMap);\n\n changeSectionGroupDialog.closeDialog();\n },\n [changeSectionGroupDialog, setValue, sectionSectionGroupLookup]\n );\n\n return (\n
    \n \n \n changeSectionGroupDialog.launchDialog()}\n >\n \n \n \n )\n }\n />\n \n
    \n );\n};\n","import { UseMutationResult, UseQueryResult } from '@tanstack/react-query';\nimport { useCallback } from 'react';\nimport { EventVenueMap } from 'src/components/Events/VenueMap/EventVenueMap';\nimport { VenueMapContentProps } from 'src/components/Events/VenueMap/VenueMapContent';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ErrorTypes } from 'src/contexts/ErrorBoundaryContext';\nimport { useAutoCompMapSectionHandler } from 'src/hooks/useAutoCompMapSectionHandler';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n Event,\n SectionSectionGroup,\n VenueMapZoneConfigInfo,\n VenueZoneConfigOverride,\n VenueZoneConfigType,\n} from 'src/WebApiController';\n\nimport { SeatMapCard } from '../../SeatMapCard';\nimport * as styles from './VenueZoneMapFooter.css';\n\nexport const VenueZoneMapFooter = ({\n event,\n selectedOverrideId,\n setSelectedOverrideId,\n selectedConfigType,\n setSelectedConfigType,\n createGetColor,\n venueZoneMapConfigInfoQuery,\n venueZoneMapConfigOverrideInfoQuery,\n setVenueZoneConfigTypeOverrideMutation,\n}: {\n event: Event;\n selectedOverrideId: number | null;\n setSelectedOverrideId: React.Dispatch>;\n selectedConfigType: VenueZoneConfigType | null;\n setSelectedConfigType: React.Dispatch<\n React.SetStateAction\n >;\n createGetColor: (\n sectionSectionGroupLookup?: {\n [key: string]: SectionSectionGroup;\n } | null\n ) => NonNullable;\n venueZoneMapConfigInfoQuery: UseQueryResult<\n VenueMapZoneConfigInfo | null,\n Error\n >;\n venueZoneMapConfigOverrideInfoQuery: UseQueryResult<\n {\n [key: string]: VenueZoneConfigOverride;\n } | null,\n Error\n >;\n setVenueZoneConfigTypeOverrideMutation: UseMutationResult<\n void,\n ErrorTypes,\n {\n eventId?: number | null;\n venueZoneOverrideId?: number | null;\n venueZoneConfigType?: VenueZoneConfigType | null;\n },\n unknown\n >;\n}) => {\n const changeSectionGroupDialog = useBasicDialog();\n const onLaunchingSingleSectionDialog = useCallback(\n () => changeSectionGroupDialog.launchDialog(),\n [changeSectionGroupDialog]\n );\n\n const { onResetSections } = useAutoCompMapSectionHandler(\n onLaunchingSingleSectionDialog\n );\n\n const onVenueZoneMapClick = useCallback(\n (\n venueZoneOverrideId: number | null,\n venueZoneConfigType: VenueZoneConfigType | null\n ) => {\n setVenueZoneConfigTypeOverrideMutation.mutate({\n eventId: event!.viagId,\n venueZoneOverrideId,\n venueZoneConfigType,\n });\n setSelectedOverrideId(venueZoneOverrideId);\n setSelectedConfigType(venueZoneConfigType);\n onResetSections();\n },\n [\n setVenueZoneConfigTypeOverrideMutation,\n event,\n setSelectedOverrideId,\n setSelectedConfigType,\n onResetSections,\n ]\n );\n\n const disabledButtons = setVenueZoneConfigTypeOverrideMutation.isPending;\n\n return (\n
    \n \n \n \n\n
    \n {\n onVenueZoneMapClick(null, VenueZoneConfigType.Amphitheater);\n }}\n footer={}\n >\n \n \n\n {\n onVenueZoneMapClick(\n null,\n VenueZoneConfigType.ConcertsSectionsBehindStage\n );\n }}\n footer={}\n >\n \n \n\n {\n onVenueZoneMapClick(\n null,\n VenueZoneConfigType.SportsOrConcertsWith360\n );\n }}\n footer={}\n >\n \n \n\n {Object.entries(venueZoneMapConfigOverrideInfoQuery.data ?? {}).map(\n ([k, v], idx) => {\n return (\n {\n onVenueZoneMapClick(Number.parseInt(k), null);\n }}\n footer={v.name}\n >\n \n \n );\n }\n )}\n
    \n
    \n );\n};\n","import { UseQueryResult } from '@tanstack/react-query';\nimport { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n getCompleteEventConfigScoreOverrides,\n getEventConfigScoreOverride,\n} from 'src/utils/seatScoreUtils';\nimport {\n AutoPricingInputs,\n Event,\n Feature,\n ScoreModel,\n SectionScoreOverride,\n VenueMapInfo,\n} from 'src/WebApiController';\n\nimport { VenueZoneMapFormType } from '../InventoryEventVenueZoneMapSection';\n\ntype UseVenueSectionRowProps = {\n event: Event;\n pricingSettingsQuery: UseQueryResult;\n};\n\nexport const useVenueSectionRow = ({\n event,\n pricingSettingsQuery,\n}: UseVenueSectionRowProps) => {\n const {\n activeConfigOverride,\n venueMapInfo,\n venueMapsByScoreModelQuery,\n mapConfigOverridesQuery,\n } = useEventMapContext();\n\n const hasScaledSeatScoreFeature = useUserHasFeature(Feature.ScaledSeatScore);\n\n const { watch, setValue } = useFormContext();\n\n const sanitizedScoreModel = useSanitizedScoreModel(\n pricingSettingsQuery.data?.scoreModel,\n venueMapsByScoreModelQuery.data\n );\n\n const modeledSectionScores = useModeledSectionScores(\n sanitizedScoreModel,\n venueMapsByScoreModelQuery.data\n );\n\n const scoreOverrides = useMemo(() => {\n const watchedOverrides = watch('eventScoreOverride.scoreOverrides');\n return (\n watchedOverrides ??\n getCompleteEventConfigScoreOverrides(modeledSectionScores?.sectionScores)\n );\n }, [watch, modeledSectionScores]);\n\n const onSectionRowChange = useCallback(\n (updated: SectionScoreOverride[]) => {\n const newOverride = getEventConfigScoreOverride(\n event.viagId!,\n modeledSectionScores ?? venueMapInfo!,\n 'New Model',\n null\n );\n newOverride.scoreOverrides = updated;\n setValue('eventScoreOverride', newOverride);\n },\n [event, modeledSectionScores, setValue, venueMapInfo]\n );\n\n return {\n mapConfigOverridesQuery,\n hasScaledSeatScoreFeature,\n sanitizedScoreModel,\n modeledSectionScores,\n scoreOverrides,\n onSectionRowChange,\n venueMapInfo,\n };\n};\n\nconst useSanitizedScoreModel = (\n scoreModel?: ScoreModel | null | undefined,\n venueMapData?:\n | {\n readonly VenueGeometry?: VenueMapInfo | undefined;\n readonly MergedVenueGeometry?: VenueMapInfo | undefined;\n readonly AdvancedVenueGeometry?: VenueMapInfo | undefined;\n }\n | null\n | undefined\n) => {\n return useMemo(() => {\n if (scoreModel) return scoreModel;\n\n const { AdvancedVenueGeometry, MergedVenueGeometry } = venueMapData ?? {};\n\n if (AdvancedVenueGeometry) return ScoreModel.AdvancedVenueGeometry;\n if (MergedVenueGeometry) return ScoreModel.MergedVenueGeometry;\n return ScoreModel.VenueGeometry;\n }, [scoreModel, venueMapData]);\n};\n\nconst useModeledSectionScores = (\n sanitizedScoreModel: ScoreModel,\n venueMapData?:\n | {\n readonly VenueGeometry?: VenueMapInfo | undefined;\n readonly MergedVenueGeometry?: VenueMapInfo | undefined;\n readonly AdvancedVenueGeometry?: VenueMapInfo | undefined;\n }\n | null\n | undefined\n) => {\n return useMemo(() => {\n switch (sanitizedScoreModel) {\n case ScoreModel.AdvancedVenueGeometry:\n return venueMapData?.AdvancedVenueGeometry;\n case ScoreModel.MergedVenueGeometry:\n return venueMapData?.MergedVenueGeometry;\n default:\n return venueMapData?.VenueGeometry;\n }\n }, [sanitizedScoreModel, venueMapData]);\n};\n","import { UseMutationResult, UseQueryResult } from '@tanstack/react-query';\nimport { isEqual } from 'lodash-es';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, Stack } from 'src/core/ui';\nimport { SectionRowTableDialog } from 'src/dialogs/SectionRowTableDialog/SectionRowTableDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getCompleteEventConfigScoreOverrides } from 'src/utils/seatScoreUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n AutoPricingInputs,\n Event,\n PricingClient,\n VenueMapZoneConfigInfo,\n VenueZoneConfigOverride,\n VenueZoneConfigType,\n} from 'src/WebApiController';\n\nimport { useVenueSectionRow } from '../hooks/useVenueSectionRow';\nimport { VenueZoneMapFormType } from '../InventoryEventVenueZoneMapSection';\nimport * as styles from './VenueZoneMapSubmitButton.css';\n\nexport const VenueZoneMapSubmitButton = ({\n event,\n pricingSettingsQuery,\n venueZoneMapConfigInfoQuery,\n venueZoneMapConfigOverrideInfoQuery,\n setVenueZoneConfigTypeOverrideMutation,\n selectedOverrideId,\n setSelectedOverrideId,\n setSelectedConfigType,\n}: {\n event: Event;\n pricingSettingsQuery: UseQueryResult;\n venueZoneMapConfigInfoQuery: UseQueryResult<\n VenueMapZoneConfigInfo | null,\n Error\n >;\n venueZoneMapConfigOverrideInfoQuery: UseQueryResult<\n {\n [key: string]: VenueZoneConfigOverride;\n } | null,\n Error\n >;\n setVenueZoneConfigTypeOverrideMutation: UseMutationResult<\n void,\n ErrorTypes,\n {\n eventId?: number | null;\n venueZoneOverrideId?: number | null;\n venueZoneConfigType?: VenueZoneConfigType | null;\n },\n unknown\n >;\n selectedOverrideId: number | null;\n setSelectedOverrideId: React.Dispatch>;\n setSelectedConfigType: React.Dispatch<\n React.SetStateAction\n >;\n}) => {\n const [isLoading, setIsLoading] = useState(false);\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const { venueZoneConfigs } = useEventMapContext();\n\n const sectionRowDialog = useBasicDialog();\n\n const { setValue, getValues, formState } =\n useFormContext();\n\n const [localName, setLocalName] = useState(null);\n const [isDirty, setIsDirty] = useState(false);\n\n useEffect(() => {\n if (venueZoneConfigs?.name) {\n setLocalName(venueZoneConfigs?.name);\n }\n }, [venueZoneConfigs, setLocalName]);\n\n const handleNameChange = useCallback(\n (newName: string) => {\n setLocalName(newName);\n setIsDirty(newName !== venueZoneConfigs?.name);\n },\n [venueZoneConfigs?.name]\n );\n\n const {\n mapConfigOverridesQuery,\n hasScaledSeatScoreFeature,\n scoreOverrides,\n onSectionRowChange,\n venueMapInfo,\n } = useVenueSectionRow({\n event,\n pricingSettingsQuery,\n });\n\n const hasChanges = useCallback(\n (eventForm: VenueZoneMapFormType) => {\n if (!formState.defaultValues?.sectionSectionGroupLookup) {\n return false;\n }\n\n return (\n !isEqual(\n formState.defaultValues?.sectionSectionGroupLookup,\n eventForm.sectionSectionGroupLookup\n ) || isDirty\n );\n },\n [formState.defaultValues?.sectionSectionGroupLookup, isDirty]\n );\n\n const hasVenueRowChanges = useCallback(\n (eventForm: VenueZoneMapFormType) => {\n const defaultValues = formState.defaultValues?.eventScoreOverride;\n if (!defaultValues) {\n return false;\n }\n\n return !isEqual(defaultValues, eventForm.eventScoreOverride);\n },\n [formState.defaultValues]\n );\n\n const onSubmit = useCallback(\n async (eventForm: VenueZoneMapFormType) => {\n tryInvokeApi(\n async () => {\n const client = new PricingClient(activeAccountWebClientConfig);\n setIsLoading(true);\n\n if (event?.viagId && hasChanges(eventForm)) {\n const newId = await client.upsertVenueZoneSectionGroupOverrides({\n viagogoEventId: event.viagId,\n venueZoneOverrideId: selectedOverrideId,\n name: localName ?? 'Default',\n sectionSectionGroupsJson: JSON.stringify({\n sectionSectionGroupLookup: eventForm.sectionSectionGroupLookup,\n }),\n saveAsNewMap: false,\n });\n\n await venueZoneMapConfigInfoQuery.refetch();\n await venueZoneMapConfigOverrideInfoQuery.refetch();\n await pricingSettingsQuery.refetch();\n\n setVenueZoneConfigTypeOverrideMutation.mutate({\n eventId: event!.viagId,\n venueZoneOverrideId: newId,\n venueZoneConfigType: null,\n });\n\n setSelectedOverrideId(newId);\n setSelectedConfigType(null);\n }\n\n if (\n event?.viagId &&\n eventForm.eventScoreOverride &&\n hasVenueRowChanges(eventForm)\n ) {\n const newId = await client.upsertEventSeatMapScoreOverride({\n ...eventForm.eventScoreOverride,\n viagogoEventId: event.viagId,\n scoreOverrides: getCompleteEventConfigScoreOverrides(\n venueMapInfo?.sectionScores,\n eventForm.eventScoreOverride.scoreOverrides,\n false,\n hasScaledSeatScoreFeature\n )!,\n });\n\n setValue('eventScoreOverride.id', newId);\n\n await mapConfigOverridesQuery.refetch();\n\n await client.setEventSeatMapScoreOverride(\n event.viagId,\n newId,\n null\n );\n }\n },\n (error) => {\n showErrorDialog(\n 'PricingClient.UpsertVenueZoneSectionGroupOverrides',\n error,\n {\n trackErrorData: eventForm,\n }\n );\n },\n async () => {\n setIsLoading(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n event,\n hasChanges,\n hasScaledSeatScoreFeature,\n hasVenueRowChanges,\n localName,\n mapConfigOverridesQuery,\n pricingSettingsQuery,\n selectedOverrideId,\n setSelectedConfigType,\n setSelectedOverrideId,\n setValue,\n setVenueZoneConfigTypeOverrideMutation,\n showErrorDialog,\n venueMapInfo?.sectionScores,\n venueZoneMapConfigInfoQuery,\n venueZoneMapConfigOverrideInfoQuery,\n ]\n );\n\n const onSubmitHandler = useCallback(() => {\n const override = { ...getValues(), overrideName: localName };\n if (!hasChanges(override)) {\n return;\n }\n\n onSubmit(override);\n }, [getValues, hasChanges, localName, onSubmit]);\n\n return (\n <>\n \n \n \n \n
    \n {\n handleNameChange(e.target.value);\n }}\n value={localName ?? ''}\n />\n
    \n {hasChanges(getValues()) && (\n \n \n \n )}\n \n \n \n );\n};\n","import { useMutation, UseQueryResult } from '@tanstack/react-query';\nimport { useEffect, useState } from 'react';\nimport { FormProvider, useForm, useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useGetVenueZoneMapConfigInfo } from 'src/contexts/EventMapContext/useGetVenueZoneMapConfigInfo';\nimport { useGetVenueZoneMapInfoOverrides } from 'src/contexts/EventMapContext/useGetVenueZoneMapConfigInfoOverrides';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\nimport { useGetEventAutoPricingSettings } from 'src/hooks/useGetEventAutoPricingSettings';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n AutoPricingInputs,\n Event,\n EventConfigScoreOverride,\n PricingClient,\n SectionSectionGroup,\n VenueMapZoneConfigInfo,\n VenueZoneConfigOverride,\n VenueZoneConfigType,\n} from 'src/WebApiController';\n\nimport { createGetColor } from '../../utils/colorUtils';\nimport { SectionGroupPanel } from './components/SectionGroupPanel';\nimport { VenueZoneMap } from './components/VenueZoneMap';\nimport { VenueZoneMapFooter } from './components/VenueZoneMapFooter';\nimport { VenueZoneMapSubmitButton } from './components/VenueZoneMapSubmitButton';\nimport * as styles from './InventoryEventVenueZoneMapSection.css';\n\nexport type VenueZoneMapFormType = {\n sectionSectionGroupLookup: { [key: string]: SectionSectionGroup };\n customSectionGroups: SectionSectionGroup[];\n eventScoreOverride?: EventConfigScoreOverride | null;\n customRank: boolean;\n};\n\ntype InventoryEventVenueZoneMapSectionProps = {\n event: Event;\n};\n\nexport const InventoryEventVenueZoneMapSection = ({\n event,\n}: InventoryEventVenueZoneMapSectionProps) => {\n return ;\n};\n\nexport const InventoryEventVenueZoneMapSectionBody = ({\n event,\n}: {\n event: Event;\n}) => {\n const { mapConfigOverridesQuery, isMapLoading } = useEventMapContext();\n const { pricingSettingsQuery } = useGetEventAutoPricingSettings(\n event!,\n false\n );\n\n const venueZoneMapConfigInfoQuery = useGetVenueZoneMapConfigInfo(\n event!.viagId,\n event!.venueCfgId\n );\n\n const venueZoneMapConfigOverrideInfoQuery = useGetVenueZoneMapInfoOverrides(\n event!.viagId,\n event!.venueCfgId\n );\n\n const methods = useForm({\n defaultValues: {\n sectionSectionGroupLookup: {},\n customSectionGroups: [],\n eventScoreOverride: null,\n customRank: false,\n },\n });\n\n if (\n mapConfigOverridesQuery.isLoading ||\n isMapLoading ||\n venueZoneMapConfigInfoQuery.isLoading ||\n venueZoneMapConfigOverrideInfoQuery.isLoading ||\n pricingSettingsQuery.isLoading\n ) {\n return ;\n }\n\n return (\n \n \n \n );\n};\n\nexport const InventoryEventZoneMapSectionContent = ({\n event,\n pricingSettingsQuery,\n venueZoneMapConfigInfoQuery,\n venueZoneMapConfigOverrideInfoQuery,\n}: {\n event: Event;\n pricingSettingsQuery: UseQueryResult;\n venueZoneMapConfigInfoQuery: UseQueryResult<\n VenueMapZoneConfigInfo | null,\n Error\n >;\n venueZoneMapConfigOverrideInfoQuery: UseQueryResult<\n {\n [key: string]: VenueZoneConfigOverride;\n } | null,\n Error\n >;\n}) => {\n const { reset } = useFormContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const { venueZoneConfigs } = useEventMapContext();\n\n const [selectedConfigType, setSelectedConfigType] =\n useState(\n pricingSettingsQuery.data?.venueZoneConfigType ??\n venueZoneMapConfigInfoQuery?.data?.defaultVenueZoneConfigType ??\n null\n );\n\n const [selectedOverrideId, setSelectedOverrideId] = useState(\n pricingSettingsQuery.data?.venueZoneOverrideId ?? null\n );\n\n useEffect(() => {\n if (venueZoneConfigs?.sectionSectionGroupLookup) {\n reset({\n sectionSectionGroupLookup: venueZoneConfigs.sectionSectionGroupLookup,\n customSectionGroups: [],\n eventScoreOverride: null,\n customRank: false,\n });\n }\n }, [reset, venueZoneConfigs]);\n\n const setVenueZoneConfigTypeOverrideMutation = useMutation({\n mutationFn: (request: {\n eventId?: number | null;\n venueZoneOverrideId?: number | null;\n venueZoneConfigType?: VenueZoneConfigType | null;\n }) => {\n if (request.eventId) {\n return new PricingClient(\n activeAccountWebClientConfig\n ).setVenueZoneSelectedConfigType(\n request.eventId,\n request.venueZoneOverrideId,\n request.venueZoneConfigType,\n false\n );\n }\n\n return Promise.resolve();\n },\n onError: (err: ErrorTypes, request) => {\n showErrorDialog('PricingClient.setVenueZoneSelectedConfigType', err, {\n trackErrorData: request,\n });\n },\n onSettled: () => {\n pricingSettingsQuery.refetch();\n },\n });\n\n if (!event) {\n return null;\n }\n\n return (\n <>\n {/* Header */}\n \n \n \n \n \n \n \n \n \n\n {/* Venue Map */}\n
    \n \n
    \n \n \n
    \n
    \n\n {/* Footer */}\n \n
    \n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { PricingClient } from 'src/WebApiController';\n\nexport const useGetEventSellThroughRates = (viagogoEventId?: number | null) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n activeAccountWebClientConfig.activeAccountId != null &&\n viagogoEventId != null;\n\n const sellThroughRatesQuery = useQuery({\n queryKey: [\n 'getEventSellThroughRates',\n activeAccountWebClientConfig.activeAccountId,\n viagogoEventId,\n ],\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n return new PricingClient(\n activeAccountWebClientConfig\n ).getEventSellThroughRates(viagogoEventId!);\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('PricingClient.getEventSellThroughRates', error, {\n viagogoEventId,\n });\n },\n },\n });\n\n return sellThroughRatesQuery;\n};\n","import * as Highcharts from 'highcharts';\nimport HighchartsReact from 'highcharts-react-official';\nimport { useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useMeasure } from 'react-use';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useGetEventSellThroughRates } from 'src/hooks/api/useGetEventSellThroughRates';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SellThroughRateHistory } from 'src/WebApiController';\n\nimport {\n EventSellThroughRateTargetsForm,\n SellThroughRateSectionProps,\n} from './SellThroughRateSection.types';\n\nexport const SellThroughRateGraphBody = ({\n event,\n}: SellThroughRateSectionProps) => {\n const sellThroughRatesQuery = useGetEventSellThroughRates(event.viagId);\n\n const targetText = useContent(ContentId.Target);\n const actualText = useContent(ContentId.Actual);\n const todayText = useContent(ContentId.Today);\n\n const { watch } = useFormContext();\n const strTargets = watch('strTargets');\n\n const [containerRef, { width: containerWidth }] =\n useMeasure();\n\n const todayDate = useMemo(() => {\n const now = new Date(Date.now());\n return new Date(now.getFullYear(), now.getMonth(), now.getDate());\n }, []);\n\n const dataAsTuples = useMemo(() => {\n const { data: sellThroughRates } = sellThroughRatesQuery;\n const sellThroughRateTargets = strTargets\n .filter((r) => r.timelineDate != null && r.sellThroughRate != null)\n .map(\n (r) =>\n ({\n timelineDate: r.timelineDate,\n sellThroughRatePercentage: r.sellThroughRate! * 0.01,\n }) as SellThroughRateHistory\n );\n\n if (!sellThroughRates?.length && !sellThroughRateTargets?.length) return;\n\n const dataMapped: {\n [key: string]: Highcharts.SeriesOptionsType & {\n data: [number, number][];\n };\n } = {};\n\n if (sellThroughRates?.length) {\n const sellThroughRatesSorted = sellThroughRates.toSorted(\n (a, b) =>\n new Date(a.timelineDate!).getTime() -\n new Date(b.timelineDate!).getTime()\n );\n\n // We want to extrapolate the most recent actual value to be shown for today's date\n // By adding a new data point with today's date and the same value\n const needsNewDataPoint =\n new Date(\n sellThroughRatesSorted[sellThroughRatesSorted.length - 1].timelineDate\n ) < todayDate;\n\n const sellThroughRatesExtrapolated = needsNewDataPoint\n ? [\n ...sellThroughRatesSorted,\n {\n ...sellThroughRatesSorted[sellThroughRatesSorted.length - 1],\n timelineDate: todayDate,\n },\n ]\n : [...sellThroughRatesSorted];\n\n const strItem: Highcharts.SeriesOptionsType & {\n data: [number, number][];\n } = {\n data: [],\n type: 'spline',\n name: actualText,\n color: vars.color.textBrand,\n opacity: 1,\n marker: {\n enabled: sellThroughRatesExtrapolated.length < 2,\n },\n visible: true,\n tooltip: {\n valueSuffix: '%',\n valueDecimals: 2,\n },\n };\n\n sellThroughRatesExtrapolated.forEach((rate) => {\n strItem.data.push([\n new Date(rate.timelineDate).getTime(),\n rate.sellThroughRatePercentage * 100,\n ]);\n });\n\n if (strItem.data.length > 0) {\n dataMapped['actual'] = strItem;\n }\n }\n\n if (sellThroughRateTargets?.length) {\n const strTargetItem: Highcharts.SeriesOptionsType & {\n data: [number, number][];\n } = {\n data: [],\n type: 'spline',\n name: targetText,\n color: vars.color.textBrand,\n opacity: 0.5,\n dashStyle: 'Dash',\n marker: {\n lineColor: vars.color.textBrand,\n fillColor: vars.color.textBrand,\n symbol: 'circle',\n },\n visible: true,\n tooltip: {\n valueSuffix: '%',\n },\n };\n\n sellThroughRateTargets\n ?.toSorted(\n (a, b) =>\n new Date(a.timelineDate!).getTime() -\n new Date(b.timelineDate!).getTime()\n )\n ?.forEach((rate) => {\n strTargetItem.data.push([\n new Date(rate.timelineDate).getTime(),\n rate.sellThroughRatePercentage * 100,\n ]);\n });\n\n if (strTargetItem.data.length > 0) {\n dataMapped['target'] = strTargetItem;\n }\n }\n\n return Object.values(dataMapped);\n }, [sellThroughRatesQuery, strTargets, todayDate, actualText, targetText]);\n\n const options: Highcharts.Options = {\n title: { text: '' },\n chart: {\n zooming: { type: 'x' },\n width: 0.9 * (containerWidth ?? 500),\n backgroundColor: 'transparent',\n },\n xAxis: {\n type: 'datetime',\n plotLines: [\n {\n // Today indicator\n color: vars.color.backgroundBrandHover,\n width: 3,\n value: todayDate.getTime(),\n label: {\n text: todayText,\n align: 'right',\n x: -10,\n y: 20,\n rotation: 0,\n style: {\n color: vars.color.textBrand,\n fontSize: vars.typography.fontSize.sm,\n },\n },\n },\n ],\n labels: {\n style: {\n color: vars.color.textPrimary,\n fontSize: vars.typography.fontSize.sm,\n },\n },\n lineColor: vars.color.textBrandActive,\n lineWidth: 1,\n tickColor: undefined,\n },\n yAxis: {\n labels: {\n format: '{text}%',\n style: {\n color: vars.color.textPrimary,\n fontSize: vars.typography.fontSize.sm,\n },\n },\n lineColor: vars.color.textBrandActive,\n lineWidth: 1,\n title: { text: '' },\n gridLineColor: undefined,\n max: 100,\n min: 0,\n },\n legend: { enabled: true, itemStyle: { color: vars.color.textPrimary } },\n plotOptions: {\n spline: {\n color: vars.color.backgroundBrandActive,\n marker: {\n radius: 4,\n lineColor: vars.color.backgroundBrandHover,\n fillColor: '#fff',\n lineWidth: 2,\n },\n lineWidth: 2,\n threshold: null,\n },\n series: {\n animation: false,\n },\n },\n series: dataAsTuples,\n // Watermark\n credits: { enabled: false },\n };\n\n return (\n <>\n {sellThroughRatesQuery?.data?.length || strTargets.length ? (\n \n \n \n ) : null}\n \n );\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n Feature,\n PricingClient,\n SellThroughRateHistory,\n} from 'src/WebApiController';\n\nimport { useUserHasFeature } from '../useUserHasFeature';\n\nexport const useSellerEventSellThroughRateTargets = (\n viagogoEventId?: number | null,\n viagogoMappingId?: string | null\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n\n const queryClient = useQueryClient();\n const queryKey = [\n 'getEventSellThroughRateTargets',\n activeAccountWebClientConfig.activeAccountId,\n viagogoEventId,\n viagogoMappingId,\n ];\n\n const shouldQuery =\n hasAutoPricingFeature &&\n activeAccountWebClientConfig.activeAccountId != null &&\n (viagogoEventId != null || viagogoMappingId != null);\n\n const sellThroughRateTargetsQuery = useQuery({\n queryKey,\n queryFn: () => {\n if (!shouldQuery) return null;\n\n return new PricingClient(\n activeAccountWebClientConfig\n ).getEventSellThroughRateTargets(viagogoEventId, viagogoMappingId);\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('PricingClient.getEventSellThroughRateTargets', error, {\n viagogoEventId,\n viagogoMappingId,\n });\n },\n },\n });\n\n const sellThroughRateTargetsMutation = useMutation({\n mutationFn: async ({ input }: { input: SellThroughRateHistory[] }) => {\n return await new PricingClient(\n activeAccountWebClientConfig\n ).setEventSellThroughRateTargets(viagogoEventId, viagogoMappingId, input);\n },\n // optimistic ui\n onMutate: ({ input }) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue = queryClient.getQueryData(queryKey);\n queryClient.setQueryData(queryKey, input);\n return { prevValue };\n },\n onError: (err: ErrorTypes, { input }, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('PricingClient.setEventSellThroughRateTargets', err, {\n trackErrorData: { input },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n },\n });\n\n return {\n sellThroughRateTargetsQuery,\n sellThroughRateTargetsMutation,\n };\n};\n","import { useCallback, useState } from 'react';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { DatePickerInput } from 'src/core/POS/DateSelector';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { shared, vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useGetEventSellThroughRates } from 'src/hooks/api/useGetEventSellThroughRates';\nimport { useSellerEventSellThroughRateTargets } from 'src/hooks/api/useSellerEventSellThroughRateTargets';\nimport { CrossIcon, EditIcon, IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { SellThroughRateHistory } from 'src/WebApiController';\n\nimport * as styles from './SellThroughRateSection.css';\nimport {\n EventSellThroughRateTargetsForm,\n SellThroughRateSectionProps,\n} from './SellThroughRateSection.types';\n\nexport const SellThroughRateTargetInput = ({\n event,\n disabled,\n}: SellThroughRateSectionProps) => {\n const requiredMsg = useContent(ContentId.Required);\n\n const sellThroughRatesQuery = useGetEventSellThroughRates(event.viagId);\n const { sellThroughRateTargetsQuery, sellThroughRateTargetsMutation } =\n useSellerEventSellThroughRateTargets(event.viagId, event.mappingId);\n\n const [isLoading, setIsLoading] = useState(false);\n const [isEditing, setIsEditing] = useState(false);\n\n const { watch, setValue, setError, clearErrors, handleSubmit } =\n useFormContext();\n\n const strTargets = watch('strTargets');\n\n const validate = useCallback(\n (formValue: EventSellThroughRateTargetsForm) => {\n clearErrors();\n\n const strTargets = formValue.strTargets;\n\n let hasError = false;\n\n strTargets.forEach((str, index) => {\n if (str.timelineDate === undefined) {\n setError(`strTargets.${index}.timelineDate`, {\n message: requiredMsg,\n });\n hasError = true;\n }\n\n if (str.sellThroughRate === undefined) {\n setError(`strTargets.${index}.sellThroughRate`, {\n message: requiredMsg,\n });\n hasError = true;\n }\n });\n\n return !hasError;\n },\n [clearErrors, requiredMsg, setError]\n );\n\n const onSubmit = useCallback(\n async (formValue: EventSellThroughRateTargetsForm) => {\n setIsLoading(true);\n\n if (!validate(formValue)) {\n setIsLoading(false);\n return;\n }\n\n const input = formValue.strTargets\n .toSorted(\n (a, b) =>\n new Date(a.timelineDate!).getTime() -\n new Date(b.timelineDate!).getTime()\n )\n .map((s) => ({\n timelineDate: s.timelineDate,\n sellThroughRatePercentage: s.sellThroughRate! * 0.01,\n })) as SellThroughRateHistory[];\n\n await sellThroughRateTargetsMutation.mutateAsync({ input });\n\n setIsLoading(false);\n setIsEditing(false);\n },\n [validate, sellThroughRateTargetsMutation]\n );\n\n const onRowRemove = useCallback(\n (index: number) => {\n const newStrTargets = [...strTargets];\n newStrTargets.splice(index, 1);\n setValue('strTargets', newStrTargets);\n },\n [setValue, strTargets]\n );\n\n const onRowAdd = useCallback(() => {\n setValue('strTargets', [\n ...strTargets,\n {\n timelineDate: undefined,\n sellThroughRate: undefined,\n },\n ]);\n }, [setValue, strTargets]);\n\n const onClearAll = useCallback(() => {\n setValue('strTargets', []);\n }, [setValue]);\n\n if (\n sellThroughRatesQuery.isPending ||\n sellThroughRateTargetsQuery.isPending\n ) {\n return ;\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n {strTargets?.map((str, index) => (\n \n ))}\n \n {isEditing && (\n \n \n }\n textContentId={ContentId.AddTarget}\n onClick={onRowAdd}\n disabled={disabled || isLoading}\n style={{ padding: 0 }}\n />\n \n \n \n \n )}\n \n \n {isEditing ? (\n \n \n \n ) : (\n }\n onClick={() => setIsEditing(true)}\n textContentId={ContentId.Edit}\n disabled={disabled || isLoading}\n style={{ padding: 0 }}\n />\n )}\n \n \n );\n};\n\nconst SellThroughRateTargetInputRow = ({\n index,\n onRemove,\n editable,\n disabled,\n}: {\n index: number;\n onRemove: (index: number) => void;\n editable: boolean;\n disabled: boolean;\n}) => {\n const {\n formState: { errors },\n control,\n setValue,\n } = useFormContext();\n const requiredMsg = useContent(ContentId.Required);\n\n return (\n \n \n (\n \n {\n setValue(field.name, d.toISOString());\n }}\n />\n \n )}\n />\n\n (\n \n {\n if (!e.target.value) {\n field.onChange(null);\n return;\n }\n\n const value = parseFloat(e.target.value);\n if (value < 0) return;\n if (value > 100) return;\n\n field.onChange(value);\n }}\n postfixDisplay=\"%\"\n />\n \n )}\n />\n\n {editable && (\n {\n onRemove(index);\n }}\n />\n )}\n \n \n );\n};\n","import { useEffect } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport {\n EventSellThroughRateTargetsForm,\n SellThroughRateGraphBody,\n SellThroughRateHistoryInput,\n SellThroughRateSectionProps,\n SellThroughRateTargetInput,\n} from 'src/components/Events/SellThroughRateSection';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { shared } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useGetEventSellThroughRates } from 'src/hooks/api/useGetEventSellThroughRates';\nimport { useSellerEventSellThroughRateTargets } from 'src/hooks/api/useSellerEventSellThroughRateTargets';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './InventoryEventPage.css';\n\nexport const SellThroughRateSection = ({\n event,\n ...rest\n}: SellThroughRateSectionProps) => {\n const { sellThroughRateTargetsQuery } = useSellerEventSellThroughRateTargets(\n event.viagId,\n event.mappingId\n );\n\n const methods = useForm({\n defaultValues: {\n strTargets: sellThroughRateTargetsQuery.data ?? [],\n },\n });\n\n useEffect(() => {\n const strTargets =\n sellThroughRateTargetsQuery.data?.map(\n (t) => ({\n timelineDate: t.timelineDate,\n sellThroughRate: t.sellThroughRatePercentage * 100,\n })\n );\n\n const defaultStrTargets: SellThroughRateHistoryInput[] = [\n { timelineDate: event.dates.start ?? undefined, sellThroughRate: 100 },\n ];\n\n methods.reset({\n strTargets: strTargets?.length ? strTargets : defaultStrTargets,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sellThroughRateTargetsQuery.data]);\n\n return (\n \n \n \n );\n};\n\nconst SellThroughRateSectionBody = ({\n event,\n disabled,\n}: SellThroughRateSectionProps) => {\n const sellThroughRatesQuery = useGetEventSellThroughRates(event.viagId);\n const { sellThroughRateTargetsQuery } = useSellerEventSellThroughRateTargets(\n event.viagId,\n event.mappingId\n );\n\n if (\n sellThroughRatesQuery.isLoading ||\n sellThroughRateTargetsQuery.isLoading\n ) {\n return ;\n }\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n );\n};\n","import { StarIcon as StarIconOutline } from '@heroicons/react/24/outline';\nimport { StarIcon as StarIconSolid } from '@heroicons/react/24/solid';\nimport { ReactNode, useState } from 'react';\nimport { Stack } from 'src/core/ui';\n\nimport * as styles from './InventoryEventPage.css';\n\nexport const TABS_NONE = 'none';\n\nexport function TabWithStarIcon({\n children,\n onIconClick,\n defaultTab,\n tabType,\n}: {\n children: ReactNode;\n onIconClick: (value: TTabs) => void;\n defaultTab?: TTabs | undefined;\n tabType: TTabs;\n}) {\n const [iconHovered, setIconHovered] = useState(false);\n\n return (\n \n {children}\n {defaultTab === tabType ? (\n {\n e.stopPropagation();\n e.preventDefault();\n\n onIconClick(TABS_NONE as TTabs);\n }}\n >\n \n \n ) : (\n setIconHovered(true)}\n onMouseLeave={() => setIconHovered(false)}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n\n onIconClick(tabType);\n }}\n className={styles.hoverIconContainer}\n >\n {iconHovered ? (\n \n ) : (\n \n )}\n \n )}\n \n );\n}\n","import { isEmpty } from 'lodash-es';\nimport {\n Dispatch,\n SetStateAction,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport { useToggle } from 'react-use';\nimport { EventAccordionItemProps } from 'src/components/Accordions';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { InputPriceFocusProvider } from 'src/contexts/InputPriceFocusContext/InputPriceFocusContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport * as Tabs from 'src/core/ui/Tabs';\nimport { BasicDialogProps, useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { ColumnSettingsModal } from 'src/modals/ColumnSettings/ColumnSettings';\nimport { LayoutIcon } from 'src/svgs';\nimport { PlusIcon } from 'src/svgs/Viagogo';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { InventoryDeeplinkQueryParam } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getDeepLinkIdFromUrl } from 'src/utils/deepLinkUtils';\nimport { getListingDetailsModalConfigWithDeepLink } from 'src/utils/inventoryUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport {\n EventWithData,\n Feature,\n Listing,\n ListingDetailDataField,\n ListingDetails,\n Permission,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { InventoryEventTabs } from './InventoryEventPage';\nimport * as styles from './InventoryEventPage.css';\nimport { InventoryEventDashboardSection } from './Sections/InventoryEventDashboardSection';\nimport { InventoryEventEditMapSection } from './Sections/InventoryEventEditMapSection';\nimport { InventoryEventFulfillmentSection } from './Sections/InventoryEventFulfillmentSection';\nimport { InventoryEventInfoSection } from './Sections/InventoryEventInfoSection';\nimport { InventoryEventTransactionsSection } from './Sections/InventoryEventTransactionsSection';\nimport { InventoryPricingABTestSection } from './Sections/InventoryPricingABTestSection';\nimport { ManualPricingSection } from './Sections/ManualPricingSection';\nimport { TagsSection } from './Sections/TagsSection';\nimport { InventoryEventVenueZoneMapSection } from './Sections/VenueZoneMap/InventoryEventVenueZoneMapSection';\nimport { SellThroughRateSection } from './SellThroughRateSection';\nimport { TabWithStarIcon } from './TabWithStarIcon';\n\ntype InventoryEventPageContentProps = {\n accordionItemProps?: EventWithData;\n inventoryAccordionItem?: EventAccordionItemProps;\n selectedListingIds: number[];\n setSelectedListingIds: Dispatch>;\n activeTab: InventoryEventTabs;\n setActiveTab: (tab: InventoryEventTabs) => void;\n};\n\nexport const InventoryEventPageContent: React.FC<\n InventoryEventPageContentProps\n> = ({\n accordionItemProps,\n inventoryAccordionItem,\n selectedListingIds,\n setSelectedListingIds,\n activeTab,\n setActiveTab,\n}) => {\n const hasPricingV2DemandDashboard = useUserHasFeature(\n Feature.PricingV2DemandDashboard\n );\n\n const { setModal } = useContext(ModalContext);\n const { posEntity: listing, setActivePosEntity } =\n useActivePosEntityContext();\n\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n const hasRecentTransactionsAccess = useUserHasFeature(\n Feature.InventoryEventRecentTransactions\n );\n const hasEventDeliveryStrategyFeature = useUserHasFeature(\n Feature.EventDeliveryStrategy\n );\n const hasEditPricingPermission = useUserHasAnyOfPermissions(\n Permission.Inventory_SetPrice,\n Permission.Inventory_SetPriceOnIsPricerOf,\n Permission.Inventory_SetPriceOnPurchasedBy\n );\n const hasPricingABTestFeature = useUserHasFeature(Feature.PricingABTest);\n const hasEditMapInListingTab = useUserHasFeature(Feature.EditMapInListingTab);\n\n const {\n value: defaultInventoryTabUserSetting,\n setUserSetting: setDefaultInventoryTabUserSetting,\n isLoading: defaultInventoryTabLoading,\n } = useServerUserSetting({\n id: UserSetting.InventoryDefaultTab,\n });\n\n const activeId = getDeepLinkIdFromUrl(\n InventoryDeeplinkQueryParam,\n window.location.href\n );\n\n const createExperimentDialog = useBasicDialog();\n\n useEffect(() => {\n if (activeId?.length && !listing) {\n setActivePosEntity(parseInt(activeId), undefined, true, [\n ListingDetailDataField.Basic,\n ]);\n setModal(getListingDetailsModalConfigWithDeepLink(activeId));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeId]);\n\n const [defaultTab, setDefaultTab] = useState(\n defaultInventoryTabUserSetting\n );\n\n useEffect(() => {\n if (\n defaultInventoryTabUserSetting != null &&\n defaultInventoryTabUserSetting !== activeTab &&\n defaultInventoryTabUserSetting !== InventoryEventTabs.None &&\n defaultInventoryTabLoading === false\n ) {\n setActiveTab(defaultInventoryTabUserSetting);\n }\n if (\n defaultInventoryTabUserSetting != null &&\n defaultInventoryTabUserSetting !== defaultTab &&\n defaultInventoryTabUserSetting !== InventoryEventTabs.None &&\n defaultInventoryTabLoading === false\n ) {\n setDefaultTab(defaultInventoryTabUserSetting);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaultInventoryTabLoading, defaultInventoryTabUserSetting]);\n\n const onSetDefaultTabClick = useCallback(\n async (tab: InventoryEventTabs) => {\n if (tab !== activeTab && tab !== InventoryEventTabs.None) {\n setActiveTab(tab);\n }\n if (tab !== defaultTab) {\n setDefaultTab(tab);\n }\n setDefaultInventoryTabUserSetting(tab);\n },\n [activeTab, defaultTab, setActiveTab, setDefaultInventoryTabUserSetting]\n );\n\n const event = accordionItemProps?.event!;\n\n return (\n {\n setActiveTab(value as InventoryEventTabs);\n }}\n className={styles.tabsSection}\n >\n \n \n {hasPricingV2DemandDashboard && (\n \n \n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n {hasAutoPricingFeature && (\n \n \n \n \n \n )}\n {hasEditPricingPermission && (\n \n \n \n \n \n )}\n\n {hasRecentTransactionsAccess && (\n \n \n \n \n \n )}\n {hasEventDeliveryStrategyFeature &&\n accordionItemProps?.event?.viagId != null && (\n \n \n \n \n \n )}\n \n \n \n \n \n {hasPricingABTestFeature && (\n \n \n \n \n \n )}\n \n \n \n\n {hasPricingV2DemandDashboard && (\n \n \n \n )}\n \n \n \n \n \n \n {hasAutoPricingFeature && (\n \n \n \n )}\n {hasEditPricingPermission && (\n \n \n \n \n \n )}\n {hasRecentTransactionsAccess && (\n \n \n \n )}\n\n {hasEventDeliveryStrategyFeature &&\n accordionItemProps?.event?.viagId != null && (\n \n \n \n )}\n\n {hasEditMapInListingTab && accordionItemProps?.event?.viagId != null && (\n \n \n \n )}\n {accordionItemProps?.event?.viagId != null && (\n \n \n \n )}\n\n {hasPricingABTestFeature &&\n accordionItemProps?.event?.viagId != null &&\n !isEmpty(accordionItemProps?.entities?.listings) && (\n \n \n \n )}\n \n );\n};\n\ntype InventoryHeaderActionProps = {\n activeTab: InventoryEventTabs;\n createExperimentDialog: BasicDialogProps;\n};\nexport const InventoryHeaderAction: React.FC = ({\n activeTab,\n createExperimentDialog,\n}) => {\n const [isColumnModalOpen, toggleColumnModal] = useToggle(false);\n\n const onColumnSettingButtonClickHandler = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!isColumnModalOpen) toggleColumnModal(true);\n },\n [isColumnModalOpen, toggleColumnModal]\n );\n\n return (\n
    \n {[InventoryEventTabs.Info, InventoryEventTabs.ManualPricing].includes(\n activeTab\n ) && (\n \n \n \n \n \n \n )}\n {activeTab === InventoryEventTabs.PricingABTest && (\n \n createExperimentDialog.launchDialog()}\n >\n \n \n \n \n )}\n\n {isColumnModalOpen && (\n \n onClose={toggleColumnModal}\n sectionType={SectionType.Listings}\n />\n )}\n
    \n );\n};\n","import { format } from 'date-fns';\nimport { ReactNode } from 'react';\nimport { BulkEditStatusPopover } from 'src/components/common/BulkActions/BulkEditStatusPopover';\nimport { ExpandCollapsableContentButton } from 'src/components/common/CollapsableContent/ExpandCollapsableContentButton';\nimport { SummaryTile } from 'src/components/common/SummaryTile';\nimport { useCollapsableViewContext } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { Stack } from 'src/core/ui';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { ActionOutboxEntityType } from 'src/WebApiController';\n\nimport {\n eventDateWrapper,\n eventInfoWrapper,\n metricValueWrapper,\n rootWrapper,\n scrollDownButton,\n} from './InventoryEventPageHeaderCondence.css';\n\ninterface InventoryEventPageHeaderCondenseProps {\n eventDate?: Date;\n eventName: ReactNode;\n eventVenue?: ReactNode;\n metricValue?: string;\n actions?: ReactNode;\n}\n\nconst formatDate = (date?: Date): string | undefined => {\n if (!date) {\n return;\n }\n const currentLocale = getLocaleFromLanguageOrCurrent();\n const month = date.toLocaleString(currentLocale.code, { month: 'numeric' });\n const day = date.toLocaleString(currentLocale.code, { day: '2-digit' });\n const dayOfWeek = date.toLocaleString(currentLocale.code, {\n weekday: 'short',\n });\n return `${month}/${day} - ${dayOfWeek} - ${format(date, 'h aaa')}`;\n};\n\nexport const InventoryEventPageHeaderCondense = ({\n eventName,\n eventDate,\n eventVenue,\n metricValue,\n actions,\n}: InventoryEventPageHeaderCondenseProps) => {\n const { setIsCollapsedView } = useCollapsableViewContext();\n return (\n
    \n setIsCollapsedView(false)}\n />\n \n
    {formatDate(eventDate)}
    \n \n \n {eventName}\n {eventVenue}\n \n \n \n {actions}\n {metricValue && (\n
    {metricValue}
    \n )}\n
    \n
    \n
    \n
    \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { ComponentProps, useCallback, useEffect, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { MarketplaceLogo } from 'src/components/common/MarketplaceLogo';\nimport { EventSearch } from 'src/components/Events/EventSearch';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport {\n GenericDialog,\n GenericDialogProps,\n} from 'src/core/interim/dialogs/GenericDialog';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, SimpleTable, Stack } from 'src/core/ui';\nimport { SearchOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { compareMarketplace } from 'src/utils/eventWithDataUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n Event,\n EventConfigClient,\n Marketplace,\n SellerEventMarketplaceEventInfo,\n} from 'src/WebApiController';\n\nimport * as styles from './MarketplaceEventEditDialog.css';\n\ntype MarketplaceEventEditDialogForm = {\n mkpEventInfos: SellerEventMarketplaceEventInfo[];\n};\n\nexport type MarketplaceEventEditDialogProps = ComponentProps & {\n event: Event;\n mkpEventInfos?: SellerEventMarketplaceEventInfo[];\n};\n\nexport function MarketplaceEventEditDialog({\n mkpEventInfos,\n ...rest\n}: MarketplaceEventEditDialogProps) {\n const methods = useForm({\n defaultValues: {\n mkpEventInfos: mkpEventInfos?.toSorted((a, b) =>\n compareMarketplace(a.marketplace, b.marketplace)\n ),\n },\n });\n\n useEffect(() => {\n const newMkpEventInfos = mkpEventInfos?.toSorted((a, b) =>\n compareMarketplace(a.marketplace, b.marketplace)\n );\n if (\n !isEqual(methods.formState.defaultValues?.mkpEventInfos, newMkpEventInfos)\n ) {\n methods.reset({\n mkpEventInfos: newMkpEventInfos,\n });\n }\n }, [methods, mkpEventInfos]);\n\n return (\n \n \n \n );\n}\n\nconst MarketplaceEventEditDialogBody = ({\n event,\n onClosed,\n getValues,\n register,\n setValue,\n formState,\n clearErrors,\n handleSubmit,\n ...rest\n}: Omit &\n Omit<\n ComponentProps<\n typeof FormProvider\n >,\n 'children'\n > & {\n event: Event;\n }) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const [isLoading, setIsLoading] = useState(false);\n const [activeMarketPlaceName, setActiveMarketPlaceName] = useState<\n `mkpEventInfos.${number}.eventIdOverride` | undefined\n >(undefined);\n\n const onSubmit = useCallback(\n (formValue: MarketplaceEventEditDialogForm) => {\n setIsLoading(true);\n\n tryInvokeApi(\n async () => {\n const inputs = formValue.mkpEventInfos.map(\n (x) =>\n ({\n ...x,\n viagogoEventId: event.viagId,\n eventMappingId: event.mappingId,\n }) as SellerEventMarketplaceEventInfo\n );\n\n const result = await new EventConfigClient(\n activeAccountWebClientConfig\n ).updateSellerEventMarketplaceEventInfos(inputs);\n\n if (result) {\n onClosed();\n }\n },\n (error) => {\n showErrorDialog(\n 'EventConfigClient.updateSellerEventMarketplaceEventInfos',\n error,\n {\n trackErrorData: formValue,\n }\n );\n },\n () => setIsLoading(false)\n );\n },\n [\n activeAccountWebClientConfig,\n event.mappingId,\n event.viagId,\n onClosed,\n showErrorDialog,\n ]\n );\n\n const mkpEventInfos = getValues().mkpEventInfos;\n\n const onSaveClick = useCallback(() => {\n clearErrors();\n\n handleSubmit(onSubmit)();\n }, [clearErrors, handleSubmit, onSubmit]);\n\n const stripTrailingSlash = (text: string) => {\n return text.endsWith('/') ? text.slice(0, -1) : text;\n };\n\n const isUrl = (str: string) => {\n try {\n new URL(str);\n return true;\n } catch (_) {\n return false;\n }\n };\n\n const handleEventOverrideChange =\n (i: number, mp: Marketplace) =>\n (e: React.ChangeEvent) => {\n if (!isUrl(e.target.value)) {\n return;\n }\n\n const sanitizedString = stripTrailingSlash(e.target.value.trim());\n let eventOverrideId = '';\n const urlComponents = sanitizedString.split('/');\n\n switch (mp) {\n case Marketplace.StubHub:\n case Marketplace.Ticketmaster: {\n const eventIdx = urlComponents.indexOf('event');\n if (eventIdx === -1) {\n return;\n }\n eventOverrideId = urlComponents[eventIdx + 1];\n break;\n }\n case Marketplace.SeatGeek: {\n const eventId = urlComponents[urlComponents.length - 1];\n eventOverrideId = eventId.split('#')[0];\n break;\n }\n case Marketplace.VividSeats: {\n const productionIdx = urlComponents.indexOf('production');\n if (productionIdx === -1) {\n return;\n }\n eventOverrideId = urlComponents[productionIdx + 1];\n break;\n }\n case Marketplace.Gametime: {\n const eventsIdx = urlComponents.indexOf('events');\n if (eventsIdx === -1) {\n return;\n }\n eventOverrideId = urlComponents[eventsIdx + 1];\n break;\n }\n default:\n // we haven't mapped the event ID extraction yet\n eventOverrideId = e.target.value;\n break;\n }\n\n e.target.value = eventOverrideId;\n setValue(`mkpEventInfos.${i}.eventIdOverride`, eventOverrideId, {\n shouldDirty: true,\n });\n };\n\n const isSearchingEvent = !!activeMarketPlaceName;\n\n const mainDialogProps: GenericDialogProps = {\n ...rest,\n header: ,\n footer: (\n <>\n {onClosed && (\n \n )}\n \n \n \n \n ),\n onCancel: onClosed,\n };\n\n const eventSearchDialogProps: GenericDialogProps = {\n isOpen: true,\n header: ,\n footer: (\n setActiveMarketPlaceName(undefined)}\n />\n ),\n };\n\n return (\n \n {isSearchingEvent ? (\n {\n const eventSearchResult = eventsSearchResults[0];\n if (eventSearchResult) {\n setValue(\n activeMarketPlaceName,\n eventSearchResult.event.viagVirtualId,\n {\n shouldDirty: true,\n }\n );\n setActiveMarketPlaceName(undefined);\n }\n }}\n />\n ) : (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n {mkpEventInfos.map((mp, i) => {\n return (\n \n \n \n \n \n \n \n handleEventOverrideChange(i, mp.marketplace),\n })}\n postfixDisplay={\n {\n setActiveMarketPlaceName(\n `mkpEventInfos.${i}.eventIdOverride`\n );\n }}\n >\n \n \n }\n />\n \n \n \n );\n })}\n \n \n {formState.isDirty && (\n \n }\n />\n \n )}\n \n )}\n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { PricingClient } from 'src/WebApiController';\n\n\ninterface UseEventMapConfigMetadataProps {\n viagogoEventId: number | null;\n}\n\nexport const useEventMapConfigMetadata = ({\n viagogoEventId,\n}: UseEventMapConfigMetadataProps) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const shouldQuery =\n viagogoEventId != null &&\n activeAccountWebClientConfig?.activeAccountId != null;\n\n const queryKey = ['PricingClient.GetEventMapConfigMetadata', viagogoEventId];\n\n const eventMapConfigQuery = useQuery({\n queryKey,\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n return await new PricingClient(\n activeAccountWebClientConfig\n ).getEventMapConfigMetadata(viagogoEventId!);\n },\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n showErrorDialog('PricingClient.GetEventMapConfigMetadata', error, {\n trackErrorData: {\n viagogoEventId,\n },\n });\n },\n },\n });\n\n return {\n queryKey,\n eventMapConfigQuery,\n };\n};\n","import { UseQueryResult } from '@tanstack/react-query';\nimport { useMemo } from 'react';\nimport { useUnmount } from 'react-use';\nimport {\n Content,\n useContent,\n useFormattedContent,\n} from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n FirstTimeFeature,\n useServerUserSetting,\n} from 'src/hooks/useUserSetting';\nimport { MapIcon } from 'src/svgs';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { VENUE_ZONE_CONFIG_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport {\n EventMapConfigMetadata,\n Feature,\n UserSetting,\n VenueZoneConfigType,\n} from 'src/WebApiController';\n\nimport * as styles from './NewEventMapBanner.css';\n\nexport const NewEventMapBanner = ({\n openEventMapView,\n eventMapConfigQuery,\n}: {\n openEventMapView: () => void;\n eventMapConfigQuery: UseQueryResult;\n}) => {\n const hasEventMapRibbonYoloFeature = useUserHasFeature(\n Feature.EventMapRibbonYolo\n );\n const { value: firstTimeFeaturesViewed, setUserSetting } =\n useServerUserSetting({\n id: UserSetting.FirstTimeFeaturesViewed,\n });\n const configTypeContentId = useMemo(() => {\n if (!eventMapConfigQuery.data) {\n return VENUE_ZONE_CONFIG_TYPE_TO_CID[\n VenueZoneConfigType.SportsOrConcertsWith360\n ];\n }\n return VENUE_ZONE_CONFIG_TYPE_TO_CID[\n eventMapConfigQuery.data.selectedVenueMapConfigType ??\n eventMapConfigQuery.data.defaultVenueZoneConfigType\n ];\n }, [eventMapConfigQuery.data]);\n\n const configTypeString = useContent(configTypeContentId);\n const configTypeFormatted = useMemo(() => {\n if (!eventMapConfigQuery?.data) {\n return null;\n }\n\n if (\n eventMapConfigQuery.data.selectedVenueMapConfigType != null &&\n eventMapConfigQuery.data.selectedVenueMapConfigType !=\n VenueZoneConfigType.SportsOrConcertsWith360\n ) {\n return `${configTypeString}`;\n }\n\n return `${configTypeString}°`;\n }, [configTypeString, eventMapConfigQuery]);\n\n const defaultConfigType = useFormattedContent(\n FormatContentId.FirstTimeVenueEventSetup,\n configTypeFormatted ?? ''\n ) as string;\n\n const showBanner = useMemo(() => {\n if (\n hasEventMapRibbonYoloFeature &&\n firstTimeFeaturesViewed &&\n firstTimeFeaturesViewed.includes(FirstTimeFeature.EventMapBanner)\n ) {\n // already viewed\n return false;\n }\n // Wait for the event map config to be loaded\n if (eventMapConfigQuery.isLoading || eventMapConfigQuery.isError) {\n return false;\n }\n\n // There is not yet an event map config override\n return (\n eventMapConfigQuery.data &&\n eventMapConfigQuery.data.selectedOverrideId == null &&\n eventMapConfigQuery.data.selectedVenueMapConfigType == null\n );\n }, [\n eventMapConfigQuery.data,\n eventMapConfigQuery.isError,\n eventMapConfigQuery.isLoading,\n firstTimeFeaturesViewed,\n hasEventMapRibbonYoloFeature,\n ]);\n\n useUnmount(() => {\n if (showBanner && hasEventMapRibbonYoloFeature) {\n // mark viewed when banner presents\n setUserSetting(\n Array.from(\n new Set([\n ...(firstTimeFeaturesViewed ?? []),\n FirstTimeFeature.EventMapBanner,\n ])\n )\n );\n }\n });\n\n if (!showBanner) {\n return null;\n }\n\n return (\n
    \n \n \n \n {defaultConfigType}\n \n\n \n \n
    \n );\n};\n","import { useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { MultiSectionsDisplay } from 'src/components/Events/VenueMap';\nimport { EventVenueMap } from 'src/components/Events/VenueMap/EventVenueMap';\nimport { VenueMapContentProps } from 'src/components/Events/VenueMap/VenueMapContent';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Button, Stack } from 'src/core/ui';\nimport { ChangeZoneMapSectionGroupDialog } from 'src/dialogs/ChangeZoneMapSectionGroupDialog';\nimport { useAutoCompMapSectionHandler } from 'src/hooks/useAutoCompMapSectionHandler';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionSectionGroup } from 'src/WebApiController';\n\nimport { EventVenueMapFormType } from '../EventVenueMapModal';\n\nexport const EventVenueMapContent = ({\n createGetColor,\n}: {\n createGetColor: (\n sectionSectionGroupLookup?: {\n [key: string]: SectionSectionGroup;\n } | null\n ) => NonNullable;\n}) => {\n const changeSectionGroupDialog = useBasicDialog();\n const onLaunchingSingleSectionDialog = useCallback(\n () => changeSectionGroupDialog.launchDialog(),\n [changeSectionGroupDialog]\n );\n\n const {\n selectedSectionIds,\n selectedSectionData,\n onSectionClicked,\n onResetSections,\n onToggleMirrors,\n onSelectedSectionsChange,\n } = useAutoCompMapSectionHandler(onLaunchingSingleSectionDialog);\n\n const { watch, setValue } = useFormContext();\n const sectionSectionGroupLookup = watch('sectionSectionGroupLookup');\n\n const onSectionZoneChanged = useCallback(\n (newSectionSectionGroup: SectionSectionGroup, sectionIds: number[]) => {\n const sectionGroupIdMap = sectionSectionGroupLookup;\n\n const newSectionGroupIdMap = {\n ...sectionGroupIdMap,\n ...sectionIds.reduce(\n (acc: { [key: string]: SectionSectionGroup }, sectionId) => {\n acc[sectionId] = newSectionSectionGroup;\n return acc;\n },\n {}\n ),\n };\n\n setValue('sectionSectionGroupLookup', newSectionGroupIdMap);\n\n changeSectionGroupDialog.closeDialog();\n },\n [changeSectionGroupDialog, setValue, sectionSectionGroupLookup]\n );\n\n return (\n <>\n \n \n changeSectionGroupDialog.launchDialog()}\n >\n \n \n \n )\n }\n isRelocatedStaticInfo={true}\n />\n \n \n );\n};\n","import * as Collapsible from '@radix-ui/react-collapsible';\nimport clsx from 'clsx';\nimport React, { useState } from 'react';\nimport {\n ComponentProps,\n ComponentPropsWithoutRef,\n ComponentType,\n forwardRef,\n ReactNode,\n} from 'react';\nimport { vars } from 'src/core/themes';\nimport { mergeProps, styledComponent } from 'src/core/utils';\nimport { IconsFill, MinusIcon, PlusIcon } from 'src/svgs/Viagogo';\n\nimport * as styles from './CollapsibleSetting.css';\n\nexport type PosCollapsibleProps = Pick<\n ComponentProps,\n 'open' | 'onOpenChange'\n> & {\n trigger?: ReactNode;\n children?: ReactNode;\n};\n\nexport function PosCollapsible({\n open,\n onOpenChange,\n trigger,\n children,\n}: PosCollapsibleProps) {\n return (\n \n {trigger}\n {children}\n \n );\n}\n\nexport const Root = styledComponent(Collapsible.Root, styles.root);\n\nexport const Trigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef & {\n ExpandIcon?: ComponentType<{ size: string; fill: IconsFill }>;\n FoldIcon?: ComponentType<{ size: string; fill: IconsFill }>;\n iconSize?: string;\n }\n>(function Content({ children, ...props }, ref) {\n return (\n \n
    \n
    {children}
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n );\n});\n\nexport const Content = styledComponent(Collapsible.Content, styles.content);\n\ntype CollapsibleSettting = {\n title: React.ReactNode;\n altTitle?: React.ReactNode;\n content: React.ReactNode;\n defaultToOpen?: boolean;\n};\n\nexport const CollapsibleSettting = ({\n title,\n altTitle,\n content,\n defaultToOpen = false,\n}: CollapsibleSettting) => {\n const [open, setOpen] = useState(defaultToOpen);\n return (\n setOpen(!open)}>\n {altTitle && open ? (\n {altTitle}\n ) : (\n {title}\n )}\n {content}\n \n );\n};\n","import { Stack } from 'src/core/ui';\n\nimport * as styles from './EventMapDetailSimpleActionGroup.css';\n\nexport type EventMapDetailSimpleActionGroupProps = {\n header: string;\n subHeader?: string | undefined;\n action: React.ReactNode;\n};\n\nexport const EventMapDetailSimpleActionGroup = ({\n header,\n subHeader,\n action,\n}: EventMapDetailSimpleActionGroupProps) => {\n return (\n \n \n {header}\n {subHeader ? (\n {subHeader}\n ) : undefined}\n \n\n
    {action}
    \n \n );\n};\n","import { UseMutationResult, UseQueryResult } from '@tanstack/react-query';\nimport { isEqual } from 'lodash-es';\nimport { useCallback, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ErrorTypes } from 'src/contexts/ErrorBoundaryContext';\nimport { Button, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getCompleteEventConfigScoreOverrides } from 'src/utils/seatScoreUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { PricingClient } from 'src/WebApiController';\nimport {\n AutoPricingInputs,\n Event,\n VenueMapZoneConfigInfo,\n VenueZoneConfigOverride,\n VenueZoneConfigType,\n} from 'src/WebApiController';\n\nimport { useVenueSectionRow } from '../../Sections/VenueZoneMap/hooks/useVenueSectionRow';\nimport { EventVenueMapFormType } from '../EventVenueMapModal';\nimport * as styles from './EventVenueMapDetailsPanelFooter.css';\n\nexport const EventVenueMapDetailsPanelFooter = ({\n event,\n selectedOverrideId,\n setSelectedOverrideId,\n setSelectedConfigType,\n pricingSettingsQuery,\n venueZoneMapConfigInfoQuery,\n venueZoneMapConfigOverrideInfoQuery,\n setVenueZoneConfigTypeOverrideMutation,\n}: {\n event: Event;\n selectedOverrideId: number | null;\n setSelectedOverrideId: React.Dispatch>;\n setSelectedConfigType: React.Dispatch<\n React.SetStateAction\n >;\n pricingSettingsQuery: UseQueryResult;\n venueZoneMapConfigInfoQuery: UseQueryResult<\n VenueMapZoneConfigInfo | null,\n Error\n >;\n venueZoneMapConfigOverrideInfoQuery: UseQueryResult<\n {\n [key: string]: VenueZoneConfigOverride;\n } | null,\n Error\n >;\n setVenueZoneConfigTypeOverrideMutation: UseMutationResult<\n void,\n ErrorTypes,\n {\n eventId?: number | null;\n venueZoneOverrideId?: number | null;\n venueZoneConfigType?: VenueZoneConfigType | null;\n setMapAsDefault?: boolean | null;\n },\n unknown\n >;\n}) => {\n const { reset, setValue, getValues, formState } =\n useFormContext();\n\n const [isLoading, setIsLoading] = useState(false);\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const { mapConfigOverridesQuery, hasScaledSeatScoreFeature, venueMapInfo } =\n useVenueSectionRow({\n event,\n pricingSettingsQuery,\n });\n\n const hasChanges = useCallback(\n (eventForm: EventVenueMapFormType) => {\n if (!formState.defaultValues?.sectionSectionGroupLookup) {\n return false;\n }\n\n return (\n !isEqual(\n formState.defaultValues?.sectionSectionGroupLookup,\n eventForm.sectionSectionGroupLookup\n ) ||\n formState.defaultValues?.name != eventForm.name ||\n formState.defaultValues?.setMapAsDefault != eventForm.setMapAsDefault\n );\n },\n [formState.defaultValues]\n );\n\n const hasVenueRowChanges = useCallback(\n (eventForm: EventVenueMapFormType) => {\n const defaultValues = formState.defaultValues?.eventScoreOverride;\n if (!defaultValues) {\n return false;\n }\n\n return !isEqual(defaultValues, eventForm.eventScoreOverride);\n },\n [formState.defaultValues]\n );\n\n const onSubmit = useCallback(\n async (eventForm: EventVenueMapFormType, saveAsNewMap: boolean) => {\n tryInvokeApi(\n async () => {\n const client = new PricingClient(activeAccountWebClientConfig);\n setIsLoading(true);\n\n if (event?.viagId && hasChanges(eventForm)) {\n const newId = await client.upsertVenueZoneSectionGroupOverrides({\n viagogoEventId: event.viagId,\n venueZoneOverrideId: selectedOverrideId,\n name: eventForm.name ?? 'Default',\n sectionSectionGroupsJson: JSON.stringify({\n sectionSectionGroupLookup: eventForm.sectionSectionGroupLookup,\n }),\n saveAsNewMap: saveAsNewMap,\n });\n\n await venueZoneMapConfigInfoQuery.refetch();\n await venueZoneMapConfigOverrideInfoQuery.refetch();\n await pricingSettingsQuery.refetch();\n\n setVenueZoneConfigTypeOverrideMutation.mutate({\n eventId: event!.viagId,\n venueZoneOverrideId: newId,\n venueZoneConfigType: null,\n setMapAsDefault: eventForm.setMapAsDefault,\n });\n\n setSelectedOverrideId(newId);\n setSelectedConfigType(null);\n }\n\n if (\n event?.viagId &&\n eventForm.eventScoreOverride &&\n hasVenueRowChanges(eventForm)\n ) {\n const newId = await client.upsertEventSeatMapScoreOverride({\n ...eventForm.eventScoreOverride,\n viagogoEventId: event.viagId,\n scoreOverrides: getCompleteEventConfigScoreOverrides(\n venueMapInfo?.sectionScores,\n eventForm.eventScoreOverride.scoreOverrides,\n false,\n hasScaledSeatScoreFeature\n )!,\n });\n\n setValue('eventScoreOverride.id', newId);\n\n await mapConfigOverridesQuery.refetch();\n\n await client.setEventSeatMapScoreOverride(\n event.viagId,\n newId,\n null\n );\n }\n },\n (error) => {\n showErrorDialog(\n 'PricingClient.UpsertVenueZoneSectionGroupOverrides',\n error,\n {\n trackErrorData: eventForm,\n }\n );\n },\n async () => {\n setIsLoading(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n event,\n hasChanges,\n hasScaledSeatScoreFeature,\n hasVenueRowChanges,\n mapConfigOverridesQuery,\n pricingSettingsQuery,\n selectedOverrideId,\n setSelectedConfigType,\n setSelectedOverrideId,\n setValue,\n setVenueZoneConfigTypeOverrideMutation,\n showErrorDialog,\n venueMapInfo?.sectionScores,\n venueZoneMapConfigInfoQuery,\n venueZoneMapConfigOverrideInfoQuery,\n ]\n );\n\n const onSubmitHandler = useCallback(\n (saveAsNewMap: boolean) => {\n if (!hasChanges(getValues())) {\n return;\n }\n\n onSubmit(getValues(), saveAsNewMap);\n },\n [getValues, hasChanges, onSubmit]\n );\n\n return (\n
    \n \n {\n reset();\n }}\n >\n
    \n {' '}\n \n \n \n s\n
    \n \n\n {selectedOverrideId != null ? (\n \n {\n onSubmitHandler(true);\n }}\n >\n \n \n {\n onSubmitHandler(false);\n }}\n >\n \n \n \n ) : (\n {\n onSubmitHandler(true);\n }}\n >\n \n \n )}\n
    \n
    \n );\n};\n","import { UseMutationResult, UseQueryResult } from '@tanstack/react-query';\nimport { useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { EventVenueMap } from 'src/components/Events/VenueMap/EventVenueMap';\nimport { VenueMapContentProps } from 'src/components/Events/VenueMap/VenueMapContent';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ErrorTypes } from 'src/contexts/ErrorBoundaryContext';\nimport { useAutoCompMapSectionHandler } from 'src/hooks/useAutoCompMapSectionHandler';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n Event,\n SectionSectionGroup,\n VenueMapZoneConfigInfo,\n VenueZoneConfigOverride,\n VenueZoneConfigType,\n} from 'src/WebApiController';\n\nimport { SeatMapCard } from '../../Sections/SeatMapCard';\nimport { EventVenueMapFormType } from '../EventVenueMapModal';\nimport * as styles from './EventVenueMapSelector.css';\n\nexport const EventVenueMapSelector = ({\n event,\n selectedOverrideId,\n setSelectedOverrideId,\n selectedConfigType,\n setSelectedConfigType,\n createGetColor,\n venueZoneMapConfigInfoQuery,\n venueZoneMapConfigOverrideInfoQuery,\n setVenueZoneConfigTypeOverrideMutation,\n}: {\n event: Event;\n selectedOverrideId: number | null;\n setSelectedOverrideId: React.Dispatch>;\n selectedConfigType: VenueZoneConfigType | null;\n setSelectedConfigType: React.Dispatch<\n React.SetStateAction\n >;\n createGetColor: (\n sectionSectionGroupLookup?: {\n [key: string]: SectionSectionGroup;\n } | null\n ) => NonNullable;\n venueZoneMapConfigInfoQuery: UseQueryResult<\n VenueMapZoneConfigInfo | null,\n Error\n >;\n venueZoneMapConfigOverrideInfoQuery: UseQueryResult<\n {\n [key: string]: VenueZoneConfigOverride;\n } | null,\n Error\n >;\n setVenueZoneConfigTypeOverrideMutation: UseMutationResult<\n void,\n ErrorTypes,\n {\n eventId?: number | null;\n venueZoneOverrideId?: number | null;\n venueZoneConfigType?: VenueZoneConfigType | null;\n setMapAsDefault?: boolean | null;\n },\n unknown\n >;\n}) => {\n const changeSectionGroupDialog = useBasicDialog();\n const onLaunchingSingleSectionDialog = useCallback(\n () => changeSectionGroupDialog.launchDialog(),\n [changeSectionGroupDialog]\n );\n\n const { watch } = useFormContext();\n const setMapAsDefault = watch('setMapAsDefault');\n\n const { onResetSections } = useAutoCompMapSectionHandler(\n onLaunchingSingleSectionDialog\n );\n\n const onVenueZoneMapClick = useCallback(\n (\n venueZoneOverrideId: number | null,\n venueZoneConfigType: VenueZoneConfigType | null\n ) => {\n setVenueZoneConfigTypeOverrideMutation.mutate({\n eventId: event!.viagId,\n venueZoneOverrideId,\n venueZoneConfigType,\n setMapAsDefault: setMapAsDefault ?? undefined,\n });\n setSelectedOverrideId(venueZoneOverrideId);\n setSelectedConfigType(venueZoneConfigType);\n onResetSections();\n },\n [\n setVenueZoneConfigTypeOverrideMutation,\n event,\n setMapAsDefault,\n setSelectedOverrideId,\n setSelectedConfigType,\n onResetSections,\n ]\n );\n\n const disabledButtons = setVenueZoneConfigTypeOverrideMutation.isPending;\n\n return (\n
    \n
    \n {\n onVenueZoneMapClick(null, VenueZoneConfigType.Amphitheater);\n }}\n footer={}\n >\n \n \n
    \n\n
    \n {\n onVenueZoneMapClick(\n null,\n VenueZoneConfigType.ConcertsSectionsBehindStage\n );\n }}\n footer={}\n >\n \n \n
    \n\n
    \n {\n onVenueZoneMapClick(\n null,\n VenueZoneConfigType.SportsOrConcertsWith360\n );\n }}\n footer={}\n >\n \n \n
    \n\n {Object.entries(venueZoneMapConfigOverrideInfoQuery.data ?? {}).map(\n ([k, v], idx) => {\n return (\n
    \n {\n onVenueZoneMapClick(Number.parseInt(k), null);\n }}\n footer={v.name}\n >\n \n \n
    \n );\n }\n )}\n
    \n );\n};\n","import { closestCenter, DndContext, DragEndEvent } from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { getContent, useContentContext } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { VENUE_ZONE_SECTION_GROUP_AREA_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { SectionSectionGroup } from 'src/WebApiController';\n\nimport { SortableZoneAreaItem } from '../../Sections/VenueZoneMap/components/SortableZoneAreaItem';\nimport { EventVenueMapFormType } from '../EventVenueMapModal';\nimport * as styles from './VenueZoneSectionGroupDraggableList.css';\n\nexport const VenueZoneSectionGroupDraggableList = () => {\n const contentContext = useContentContext();\n const { setValue, watch } = useFormContext();\n\n const sectionSectionGroupLookup = watch('sectionSectionGroupLookup');\n const customSectionGroups = watch('customSectionGroups');\n\n const sectionGroups = Object.values(sectionSectionGroupLookup).reduce<{\n [key: string]: SectionSectionGroup;\n }>((acc, v) => {\n let sectionGroupName = `${v.ticketClassName}: ${v.sectionGroupAreaName}`;\n if (v.sectionGroupAreaType != null) {\n const sectionGroupAreaContentId =\n VENUE_ZONE_SECTION_GROUP_AREA_TYPE_TO_CID[v.sectionGroupAreaType];\n\n sectionGroupName = `${v.ticketClassName}: ${getContent(\n sectionGroupAreaContentId,\n contentContext\n )}`;\n }\n acc[sectionGroupName] = v;\n\n return acc;\n }, {});\n\n const sortabledSectionGroups = useMemo(() => {\n // Sort the sectionGroups by sectionGroupRank and areaRank\n const sortedSectionGroups = Object.entries(sectionGroups).map(\n ([key, value]) => ({\n id: crypto.randomUUID(),\n key,\n ...value,\n })\n );\n\n // Map over customSectionGroups and add unique IDs\n const customGroupsWithId = customSectionGroups.map((csg) => ({\n id: crypto.randomUUID(),\n key: `${csg.ticketClassName}: ${csg.sectionGroupAreaName}`,\n ...csg,\n }));\n\n // Combine the sorted section groups and custom section groups\n return sortedSectionGroups\n .concat(customGroupsWithId)\n .toSorted(\n (a, b) =>\n a.sectionGroupRank - b.sectionGroupRank || a.areaRank - b.areaRank\n );\n }, [sectionGroups, customSectionGroups]);\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event;\n\n if (over != null && active.id != over.id) {\n const oldIndex = sortabledSectionGroups.findIndex(\n (ro) => ro.id === active.id\n );\n\n const newIndex = sortabledSectionGroups.findIndex(\n (ro) => ro.id === over.id\n );\n\n const shiftedRankOverrides = arrayMove(\n sortabledSectionGroups,\n oldIndex,\n newIndex\n );\n\n // Update ranks based on new positions\n const updatedRankOverrides = shiftedRankOverrides\n .map((item, index) => ({\n ...item,\n sectionGroupRank: index,\n }))\n .reduce<{\n [key: string]: number;\n }>((acc, v) => {\n const ssgId = `${v.ticketClassName ?? ''}:${\n v.ticketClassId ?? ''\n }:${v.sectionGroupAreaName ?? ''}:${v.sectionGroupAreaType ?? ''}`;\n\n acc[ssgId] = v.sectionGroupRank;\n return acc;\n }, {});\n\n // Update the original sectionSectionGroupLookup with the new ranks\n const newSectionSectionGroupLookup = Object.entries(\n sectionSectionGroupLookup\n ).reduce<{\n [key: string]: SectionSectionGroup;\n }>((acc, [sectId, ssg]) => {\n const ssgId = `${ssg.ticketClassName ?? ''}:${\n ssg.ticketClassId ?? ''\n }:${ssg.sectionGroupAreaName ?? ''}:${\n ssg.sectionGroupAreaType ?? ''\n }`;\n\n const sgRank = updatedRankOverrides[ssgId] ?? 1;\n ssg.sectionGroupRank = sgRank;\n\n acc[sectId] = ssg;\n return acc;\n }, {});\n\n setValue('sectionSectionGroupLookup', newSectionSectionGroupLookup);\n\n const newCustomSectionGroups = customSectionGroups.reduce<\n SectionSectionGroup[]\n >((acc, ssg) => {\n const ssgId = `${ssg.ticketClassName ?? ''}:${\n ssg.ticketClassId ?? ''\n }:${ssg.sectionGroupAreaName ?? ''}:${\n ssg.sectionGroupAreaType ?? ''\n }`;\n\n const sgRank = updatedRankOverrides[ssgId] ?? 1;\n ssg.sectionGroupRank = sgRank;\n\n acc.push(ssg);\n return acc;\n }, []);\n\n setValue('customSectionGroups', newCustomSectionGroups);\n }\n },\n [\n customSectionGroups,\n sectionSectionGroupLookup,\n setValue,\n sortabledSectionGroups,\n ]\n );\n\n return (\n \n \n \n {sortabledSectionGroups.map((ssg) => (\n \n ))}\n \n \n \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { getContent, useContentContext } from 'src/contexts/ContentContext';\nimport { VENUE_ZONE_SECTION_GROUP_AREA_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { SectionSectionGroup } from 'src/WebApiController';\n\nimport { EventVenueMapFormType } from '../EventVenueMapModal';\nimport * as styles from './VenueZoneSectionGroup.css';\n\nexport const VenueZoneSectionGroupList = () => {\n const contentContext = useContentContext();\n const { watch } = useFormContext();\n\n const sectionSectionGroupLookup = watch('sectionSectionGroupLookup');\n const customSectionGroups = watch('customSectionGroups');\n\n const sectionGroups = Object.values(sectionSectionGroupLookup).reduce<{\n [key: string]: SectionSectionGroup;\n }>((acc, v) => {\n let sectionGroupName = `${v.ticketClassName}: ${v.sectionGroupAreaName}`;\n if (v.sectionGroupAreaType != null) {\n const sectionGroupAreaContentId =\n VENUE_ZONE_SECTION_GROUP_AREA_TYPE_TO_CID[v.sectionGroupAreaType];\n\n sectionGroupName = `${v.ticketClassName}: ${getContent(\n sectionGroupAreaContentId,\n contentContext\n )}`;\n }\n acc[sectionGroupName] = v;\n\n return acc;\n }, {});\n\n return (\n
    \n {Object.entries(sectionGroups)\n .toSorted(\n ([, a], [, b]) =>\n a.sectionGroupRank - b.sectionGroupRank || a.areaRank - b.areaRank\n )\n .map(([key, value]) => (\n
    \n \n {key}\n
    \n ))}\n\n {customSectionGroups.map((ssg) => (\n \n \n {`${ssg.ticketClassName}: ${ssg.sectionGroupAreaName}`}\n
    \n ))}\n \n );\n};\n","import { useCallback, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, Stack, Switch } from 'src/core/ui';\nimport { AddSectionGroupDialog } from 'src/dialogs/AddSectionGroupDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionSectionGroup } from 'src/WebApiController';\n\nimport { getRandomColor } from '../../utils/colorUtils';\nimport { EventVenueMapFormType } from '../EventVenueMapModal';\nimport * as styles from './SectionGroupPanel.css';\nimport { VenueZoneSectionGroupDraggableList } from './VenueZoneSectionGroupDraggableList';\nimport { VenueZoneSectionGroupList } from './VenueZoneSectionGroupList';\n\nexport const SectionGroupPanel = () => {\n const { watch, setValue, reset } = useFormContext();\n\n const [useCustomRank, setUseCustomRank] = useState(false);\n\n const addSectionGroupDialog = useBasicDialog();\n\n const customSectionGroups = watch('customSectionGroups');\n const name = watch('name');\n\n const onAddSectionGroup = useCallback(\n (ticketClassName: string, sectionGroupName: string) => {\n const newCustomSectionGroup = {\n sectId: 0,\n areaRank: 1,\n sectionGroupRank: 1,\n ticketClassName: ticketClassName,\n sectionGroupAreaName: sectionGroupName,\n sectionGroupAreaType: null,\n ticketClassId: null,\n sectionGroupColor: getRandomColor(customSectionGroups.length),\n } as SectionSectionGroup;\n\n const newCustomSectionGroups = [\n ...(customSectionGroups || []),\n newCustomSectionGroup,\n ];\n setValue('customSectionGroups', newCustomSectionGroups);\n\n addSectionGroupDialog.closeDialog();\n },\n [addSectionGroupDialog, customSectionGroups, setValue]\n );\n\n return (\n
    \n \n \n \n \n
    \n {\n setValue('name', e.target.value);\n }}\n value={name}\n />\n
    \n
    \n \n \n \n \n \n \n \n \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n if (!isChecked) {\n reset();\n }\n\n setUseCustomRank(isChecked);\n }}\n />\n \n \n {useCustomRank ? (\n \n ) : (\n \n )}\n\n
    \n \n
    \n\n \n
    \n );\n};\n","import { UseMutationResult, UseQueryResult } from '@tanstack/react-query';\nimport { useContext } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { VenueMapContentProps } from 'src/components/Events/VenueMap/VenueMapContent';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { ErrorTypes } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { CollapsibleSettting } from 'src/core/ui/CollapsibleSetting/CollapsibleSetting';\nimport { SectionRowTableDialog } from 'src/dialogs/SectionRowTableDialog/SectionRowTableDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { Summary } from 'src/modals/common/Summary';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n AutoPricingInputs,\n Event,\n SectionSectionGroup,\n VenueMapZoneConfigInfo,\n VenueZoneConfigOverride,\n VenueZoneConfigType,\n} from 'src/WebApiController';\n\nimport { useVenueSectionRow } from '../../Sections/VenueZoneMap/hooks/useVenueSectionRow';\nimport { EventVenueMapFormType } from '../EventVenueMapModal';\nimport { EventMapDetailSimpleActionGroup } from './EventMapDetailSimpleActionGroup';\nimport * as styles from './EventVenueMapDetailsPanel.css';\nimport { EventVenueMapDetailsPanelFooter } from './EventVenueMapDetailsPanelFooter';\nimport { EventVenueMapSelector } from './EventVenueMapSelector';\nimport { SectionGroupPanel } from './SectionGroupPanel';\n\nexport const EventVenueMapDetailsPanel = ({\n event,\n selectedOverrideId,\n setSelectedOverrideId,\n selectedConfigType,\n setSelectedConfigType,\n createGetColor,\n pricingSettingsQuery,\n venueZoneMapConfigInfoQuery,\n venueZoneMapConfigOverrideInfoQuery,\n setVenueZoneConfigTypeOverrideMutation,\n}: {\n event: Event;\n selectedOverrideId: number | null;\n setSelectedOverrideId: React.Dispatch>;\n selectedConfigType: VenueZoneConfigType | null;\n setSelectedConfigType: React.Dispatch<\n React.SetStateAction\n >;\n createGetColor: (\n sectionSectionGroupLookup?: {\n [key: string]: SectionSectionGroup;\n } | null\n ) => NonNullable;\n pricingSettingsQuery: UseQueryResult;\n venueZoneMapConfigInfoQuery: UseQueryResult<\n VenueMapZoneConfigInfo | null,\n Error\n >;\n venueZoneMapConfigOverrideInfoQuery: UseQueryResult<\n {\n [key: string]: VenueZoneConfigOverride;\n } | null,\n Error\n >;\n setVenueZoneConfigTypeOverrideMutation: UseMutationResult<\n void,\n ErrorTypes,\n {\n eventId?: number | null;\n venueZoneOverrideId?: number | null;\n venueZoneConfigType?: VenueZoneConfigType | null;\n setMapAsDefault?: boolean | null;\n },\n unknown\n >;\n}) => {\n const eventMapText = useContent(ContentId.EventMap);\n const zoneMapText = useContent(ContentId.ZoneMap);\n const venueRowDataText = useContent(ContentId.VenueRowData);\n const venueRowDataDescText = useContent(ContentId.RawVenueCatData);\n const setAsDefaultText = useContent(ContentId.SetMapAsDefault);\n const setAsDefaultDescText = useContent(ContentId.SimilarEventsDefaults);\n\n const sectionRowDialog = useBasicDialog();\n\n const { scoreOverrides, onSectionRowChange, venueMapInfo } =\n useVenueSectionRow({\n event,\n pricingSettingsQuery,\n });\n\n const { closeModal } = useContext(ModalContext);\n\n const { watch, setValue } = useFormContext();\n const setMapAsDefault = watch('setMapAsDefault');\n\n return (\n <>\n \n \n \n \n \n \n\n {\n closeModal();\n }}\n />\n \n
    \n \n
    \n \n {eventMapText}: {zoneMapText}\n \n }\n altTitle={\n {eventMapText}\n }\n content={\n \n }\n />\n\n
    \n\n \n\n
    \n\n \n \n \n }\n />\n\n
    \n\n {\n const isChecked = !setMapAsDefault;\n setValue('setMapAsDefault', isChecked);\n }}\n />\n }\n />\n \n \n \n \n \n );\n};\n","import { useMutation, UseQueryResult } from '@tanstack/react-query';\nimport { useEffect, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n EventMapContextProvider,\n useEventMapContext,\n} from 'src/contexts/EventMapContext';\nimport { useGetVenueZoneMapConfigInfo } from 'src/contexts/EventMapContext/useGetVenueZoneMapConfigInfo';\nimport { useGetVenueZoneMapInfoOverrides } from 'src/contexts/EventMapContext/useGetVenueZoneMapConfigInfoOverrides';\nimport { useVenueZoneMapIntegration } from 'src/contexts/EventMapContext/useVenueZoneMapIntegration';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useGetEventAutoPricingSettings } from 'src/hooks/useGetEventAutoPricingSettings';\nimport {\n AutoPricingInputs,\n Event,\n EventConfigScoreOverride,\n PricingClient,\n SectionSectionGroup,\n VenueMapZoneConfigInfo,\n VenueZoneConfigOverride,\n VenueZoneConfigType,\n} from 'src/WebApiController';\n\nimport { createGetColor } from '../utils/colorUtils';\nimport { EventVenueMapContent } from './components/EventVenueMapContent';\nimport { EventVenueMapDetailsPanel } from './components/EventVenueMapDetailsPanel';\nimport * as styles from './EventVenueMapModal.css';\n\nexport type EventVenueMapFormType = {\n sectionSectionGroupLookup: { [key: string]: SectionSectionGroup };\n customSectionGroups: SectionSectionGroup[];\n eventScoreOverride?: EventConfigScoreOverride | null;\n customRank: boolean;\n setMapAsDefault: boolean;\n name: string;\n};\n\nexport const EventVenueMapModal = ({ event }: { event: Event }) => {\n const { mapConfigOverridesQuery, isMapLoading } = useEventMapContext();\n\n const { pricingSettingsQuery } = useGetEventAutoPricingSettings(\n event!,\n false\n );\n\n const venueZoneMapConfigInfoQuery = useGetVenueZoneMapConfigInfo(\n event!.viagId,\n event!.venueCfgId\n );\n\n const venueZoneMapConfigOverrideInfoQuery = useGetVenueZoneMapInfoOverrides(\n event!.viagId,\n event!.venueCfgId\n );\n\n const methods = useForm({\n defaultValues: {\n sectionSectionGroupLookup: {},\n customSectionGroups: [],\n eventScoreOverride: null,\n customRank: false,\n setMapAsDefault: false,\n name: undefined,\n },\n });\n\n const venueZoneConfigs = useVenueZoneMapIntegration(event ?? null);\n\n useEffect(() => {\n if (venueZoneConfigs?.sectionSectionGroupLookup) {\n methods.reset({\n sectionSectionGroupLookup: venueZoneConfigs.sectionSectionGroupLookup,\n customSectionGroups: [],\n eventScoreOverride: null,\n customRank: false,\n setMapAsDefault: false,\n name: venueZoneConfigs?.name,\n });\n }\n }, [methods, methods.reset, venueZoneConfigs]);\n\n if (\n mapConfigOverridesQuery.isLoading ||\n isMapLoading ||\n venueZoneMapConfigInfoQuery.isLoading ||\n venueZoneMapConfigOverrideInfoQuery.isLoading ||\n pricingSettingsQuery.isLoading\n ) {\n return ;\n }\n\n return (\n \n \n \n \n \n );\n};\n\nexport const EventVenueMapBody = ({\n event,\n pricingSettingsQuery,\n venueZoneMapConfigInfoQuery,\n venueZoneMapConfigOverrideInfoQuery,\n}: {\n event: Event;\n pricingSettingsQuery: UseQueryResult;\n venueZoneMapConfigInfoQuery: UseQueryResult<\n VenueMapZoneConfigInfo | null,\n Error\n >;\n venueZoneMapConfigOverrideInfoQuery: UseQueryResult<\n {\n [key: string]: VenueZoneConfigOverride;\n } | null,\n Error\n >;\n}) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const [selectedConfigType, setSelectedConfigType] =\n useState(\n pricingSettingsQuery.data?.venueZoneConfigType ??\n venueZoneMapConfigInfoQuery?.data?.defaultVenueZoneConfigType ??\n null\n );\n\n const [selectedOverrideId, setSelectedOverrideId] = useState(\n pricingSettingsQuery.data?.venueZoneOverrideId ?? null\n );\n const setVenueZoneConfigTypeOverrideMutation = useMutation({\n mutationFn: (request: {\n eventId?: number | null;\n venueZoneOverrideId?: number | null;\n venueZoneConfigType?: VenueZoneConfigType | null;\n setMapAsDefault?: boolean | null;\n }) => {\n if (request.eventId) {\n return new PricingClient(\n activeAccountWebClientConfig\n ).setVenueZoneSelectedConfigType(\n request.eventId,\n request.venueZoneOverrideId,\n request.venueZoneConfigType,\n request.setMapAsDefault\n );\n }\n\n return Promise.resolve();\n },\n onError: (err: ErrorTypes, request) => {\n showErrorDialog('PricingClient.setVenueZoneSelectedConfigType', err, {\n trackErrorData: request,\n });\n },\n onSettled: () => {\n pricingSettingsQuery.refetch();\n },\n });\n\n if (!event) {\n return null;\n }\n\n return (\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n );\n};\n","import { UseQueryResult } from '@tanstack/react-query';\nimport clsx from 'clsx';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { EventVenueMap } from 'src/components/Events/VenueMap/EventVenueMap';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useSiteTheme } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { vars } from 'src/core/themes';\nimport { hideMobile } from 'src/core/themes/shared.css';\nimport { Button, Stack } from 'src/core/ui';\nimport { MapIcon } from 'src/svgs';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { VENUE_ZONE_CONFIG_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n EventMapConfigMetadata,\n VenueZoneConfigType,\n} from 'src/WebApiController';\n\nimport { createGetColor } from '../utils/colorUtils';\nimport * as styles from './EventVenueMapPopup.css';\n\nexport const EventVenueMapPopup = ({\n onClick,\n eventMapConfigQuery,\n inCondensedView = false,\n iconOnly = false,\n}: {\n onClick: () => void;\n eventMapConfigQuery: UseQueryResult;\n inCondensedView?: boolean;\n iconOnly?: boolean;\n}) => {\n const buttonRef = useRef(null);\n const [isHovered, setIsHovered] = useState(false);\n const [isExiting, setIsExiting] = useState(false);\n const [popupPosition, setPopupPosition] = useState<{\n top: number;\n left: number;\n } | null>(null);\n\n const { isDarkMode } = useSiteTheme();\n\n const updatePosition = useCallback(() => {\n if (buttonRef.current) {\n const rect = buttonRef.current.getBoundingClientRect();\n setPopupPosition({\n top: rect.bottom + window.scrollY + 8,\n left: rect.left + rect.width / 2 - 250 / 2 + window.scrollX,\n });\n }\n }, []);\n\n useEffect(() => {\n if (isHovered) {\n window.addEventListener('scroll', updatePosition);\n window.addEventListener('resize', updatePosition);\n\n updatePosition();\n }\n return () => {\n window.removeEventListener('scroll', updatePosition);\n window.removeEventListener('resize', updatePosition);\n };\n }, [isHovered, updatePosition]);\n\n const selectedConfigType = useMemo(() => {\n if (!eventMapConfigQuery?.data) {\n return VenueZoneConfigType.SportsOrConcertsWith360;\n }\n\n return (\n eventMapConfigQuery.data.selectedVenueMapConfigType ??\n eventMapConfigQuery.data.defaultVenueZoneConfigType\n );\n }, [eventMapConfigQuery.data]);\n\n const configTypeContentId = useMemo(() => {\n return VENUE_ZONE_CONFIG_TYPE_TO_CID[selectedConfigType];\n }, [selectedConfigType]);\n\n const configTypeString = useContent(configTypeContentId);\n\n const configTypeFormatted = useMemo(() => {\n if (!eventMapConfigQuery?.data) {\n return null;\n }\n\n if (eventMapConfigQuery.data.selectedOverrideId != null) {\n return eventMapConfigQuery.data.selectedOverrideName;\n }\n\n if (\n eventMapConfigQuery.data.selectedVenueMapConfigType != null &&\n eventMapConfigQuery.data.selectedVenueMapConfigType !=\n VenueZoneConfigType.SportsOrConcertsWith360\n ) {\n return `${configTypeString}`;\n }\n\n return `${configTypeString}°`;\n }, [configTypeString, eventMapConfigQuery]);\n\n return (\n {\n setIsExiting(false);\n setIsHovered(true);\n }}\n onMouseLeave={() => {\n setIsExiting(true);\n setTimeout(() => {\n setIsHovered(false);\n setIsExiting(false);\n }, 200);\n }}\n >\n {inCondensedView ? (\n \n ) : (\n \n )}\n\n {(isHovered || isExiting) &&\n popupPosition &&\n createPortal(\n \n
    \n \n
    \n \n \n \n {configTypeFormatted}\n ,\n document.body\n )}\n
    \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { format } from 'date-fns';\nimport { useCallback, useContext, useMemo } from 'react';\nimport { EventAccordionItemProps } from 'src/components/Accordions';\nimport { BulkEditStatusPopover } from 'src/components/common/BulkActions/BulkEditStatusPopover';\nimport { MarketplaceLogo } from 'src/components/common/MarketplaceLogo';\nimport { MultiSelectionToggleGroup } from 'src/components/common/MultiSelect/Toggle/MultiSelectionToggleGroup';\nimport { SummaryTile } from 'src/components/common/SummaryTile';\nimport {\n EventNameDisplay,\n VenueNameDisplay,\n} from 'src/components/Events/EventInfo';\nimport { EventStatus } from 'src/components/Events/EventStatus';\nimport { InventoryEventActionDropdown } from 'src/components/Listings/InventoryActionDropdown';\nimport { InventoryEventPageHeaderCondense } from 'src/components/Listings/InventoryEventPage/InventoryEventPageHeaderCondense';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { useCollapsableViewContext } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { Content, isContentId } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { ScrollableToolbar } from 'src/core/ui/ScrollableToolbar';\nimport { MarketplaceEventEditDialog } from 'src/dialogs/MarketplaceEventEditDialog';\nimport { useEventMapConfigMetadata } from 'src/hooks/api/useEventMapConfigMetadata';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useGetEventFullInfo } from 'src/hooks/useGetEventFullInfo';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { EditIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { MAPPING_REJECTION_REASON_ID_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n compareMarketplace,\n getFormattedEventName,\n getIsInternationalEvent,\n} from 'src/utils/eventWithDataUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { getInventorySummaryListingMetricsDisplayStrings } from 'src/utils/ticketMetricUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n Event,\n EventConfigClient,\n Feature,\n Listing,\n ListingMetrics,\n Marketplace,\n Performer,\n Permission,\n SellerEventMarketplaceEventInfo,\n TopLevelCategory,\n Venue,\n} from 'src/WebApiController';\n\nimport { PerformerCategoryIcon } from '../../common/PerformerCategoryIcon';\nimport { NewEventMapBanner } from './Banners/NewEventMapBanner';\nimport { EventVenueMapModal } from './EventVenueMap/EventVenueMapModal';\nimport { EventVenueMapPopup } from './EventVenueMap/EventVenueMapPopup';\nimport * as styles from './InventoryEventPage.css';\n\nconst visibleMarketPlaces: Readonly = [\n Marketplace.StubHub,\n Marketplace.VividSeats,\n Marketplace.Ticketmaster,\n Marketplace.SeatGeek,\n];\n\nexport const InventoryEventPageHeader = ({\n event,\n venue: eventVenue,\n performer: eventPerformer,\n inventoryAccordionItem,\n isOnSaleEvent = false,\n}: {\n event: Event;\n venue?: Venue;\n performer?: Performer;\n inventoryAccordionItem?: EventAccordionItemProps;\n isOnSaleEvent?: boolean;\n}) => {\n const locale = getLocaleFromLanguageOrCurrent();\n\n const hasEventsEditPermission = useUserHasAnyOfPermissions(\n Permission.Events_Edit\n );\n\n const hasEventStatusDisplay = useUserHasFeature(Feature.EventStatusDisplay);\n const hasCondensedPreviewTabsAndSingleListingFeature = useUserHasFeature(\n Feature.CondensedPreviewTabsAndSingleListing\n );\n const hasBlockInventorySummaryStatsFeature = useUserHasFeature(\n Feature.BlockInventorySummaryStats\n );\n\n const { loginContext } = useAppContext();\n\n const { venue, performer } = useGetEventFullInfo(\n event,\n eventPerformer,\n eventVenue\n );\n\n const isInternationalEvent = getIsInternationalEvent(venue?.country?.code);\n\n const { isCollapsedView } = useCollapsableViewContext();\n\n const eventDate = event?.dates.start\n ? new Date(event.dates.start)\n : undefined;\n\n const eventMappingRejectionReason = event?.mapRejRsnId\n ? (MAPPING_REJECTION_REASON_ID_TO_CID[event.mapRejRsnId] ??\n event?.mapRejDftTxt)\n : undefined;\n\n const [eventName, eventNameConnector, eventSubName] = getFormattedEventName({\n event,\n performer,\n });\n const { eventMetrics: eventMetricsMap } =\n useCatalogMetricsContext();\n\n const eventMetrics = eventMetricsMap?.[event?.viagVirtualId ?? ''];\n const formattedTotalMetrics = eventMetrics\n ? getInventorySummaryListingMetricsDisplayStrings(\n eventMetrics,\n loginContext?.user?.activeAccount?.currencyCode\n )\n : undefined;\n\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQuery =\n activeAccountWebClientConfig?.activeAccountId != null &&\n event.viagVirtualId != null;\n\n const marketplaceEventInfoQuery = useQuery({\n queryKey: [\n 'EventConfigClient.getSellerEventMarketplaceEventInfo',\n activeAccountWebClientConfig.activeAccountId,\n event?.viagVirtualId,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n return tryInvokeApi(\n async () => {\n const result = await new EventConfigClient(\n activeAccountWebClientConfig\n ).getSellerEventMarketplaceEventInfo(event.viagId, event.mappingId);\n\n if (result) {\n return result.reduce(\n (r, m) => {\n r[m.marketplace] = m;\n return r;\n },\n {} as Record\n );\n }\n\n return {};\n },\n (error) => {\n trackError(\n 'EventConfigClient.getSellerEventMarketplaceEventInfo',\n error,\n {\n viagogoEntityId: event.viagId,\n viagogoMappingId: event.mappingId,\n }\n );\n }\n );\n },\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n });\n\n const { launchDialog, closeDialog, dialogProps } = useBasicDialog();\n const { setModal } = useContext(ModalContext);\n\n const onEventIdsEditClick = useCallback(() => {\n launchDialog();\n }, [launchDialog]);\n\n const openEventMapView = useCallback(() => {\n setModal({\n children: ,\n size: 'fullscreen',\n fullscreen: true,\n });\n }, [event, setModal]);\n\n const mkpEventInfos = useMemo(\n () =>\n loginContext?.user?.activeAccount.marketplaceSettings\n .filter((m) => m.mkp !== Marketplace.Automatiq) // Automatiq is not an actual Marketplace for Event viewing\n .map((m) => {\n const minfo = marketplaceEventInfoQuery.data?.[m.mkp];\n return (\n minfo ??\n ({\n marketplace: m.mkp,\n viagogoEventId: event.viagId,\n mappedEventId:\n m.mkp === Marketplace.StubHub ? event.viagId : undefined,\n } as SellerEventMarketplaceEventInfo)\n );\n }),\n [\n event.viagId,\n loginContext?.user?.activeAccount.marketplaceSettings,\n marketplaceEventInfoQuery.data,\n ]\n );\n\n const marketPlaceLogos = useMemo(() => {\n {\n return mkpEventInfos\n ?.filter((marketplace) =>\n visibleMarketPlaces.includes(marketplace.marketplace)\n )\n .toSorted((a, b) => compareMarketplace(a.marketplace, b.marketplace))\n .map((minfo) => {\n const hasEventId =\n minfo.marketplace == Marketplace.StubHub ||\n Boolean(minfo?.eventIdOverride || minfo?.mappedEventId) ||\n (Marketplace.Ticketmaster && minfo.websiteEventId);\n\n if (\n minfo.marketplace !== Marketplace.StubHub &&\n isInternationalEvent\n ) {\n // We only show other marketplaces when the Event is US\n return null;\n }\n\n const onMkpClick =\n hasEventId || !hasEventsEditPermission\n ? undefined\n : onEventIdsEditClick;\n\n if (isCollapsedView) {\n return (\n \n {minfo.marketplace}\n \n );\n }\n\n return (\n \n );\n });\n }\n }, [\n event,\n hasEventsEditPermission,\n isCollapsedView,\n isInternationalEvent,\n mkpEventInfos,\n onEventIdsEditClick,\n ]);\n\n const multiSelectToggle = inventoryAccordionItem && (\n \n );\n\n const inventoryEventDropdown = useMemo(() => {\n return (\n inventoryAccordionItem && (\n \n )\n );\n }, [inventoryAccordionItem, isCollapsedView, marketPlaceLogos]);\n\n const marketplaceEventEditDialog = (\n {\n marketplaceEventInfoQuery.refetch();\n closeDialog();\n }}\n />\n );\n\n const { eventMapConfigQuery } = useEventMapConfigMetadata({\n viagogoEventId: event.viagId,\n });\n\n if (isCollapsedView) {\n return (\n <>\n
    \n \n }\n eventVenue={\n venue && (\n
    \n \n
    \n )\n }\n metricValue={formattedTotalMetrics?.formattedTotalListPrice}\n actions={\n <>\n {multiSelectToggle}\n {inventoryEventDropdown}\n \n }\n />\n
    \n {marketplaceEventEditDialog}\n \n );\n }\n\n return (\n
    \n {!isOnSaleEvent && (\n \n )}\n \n {eventDate && }\n \n \n \n {venue && (\n
    \n \n
    \n )}\n
    \n {eventDate && (\n
    \n {format(eventDate, 'h:mm aaa', { locale })}\n
    \n )}{' '}\n {performer && (\n \n {(performer as Performer).categ && (\n <>\n \n  \n \n )}\n {performer?.descr}\n \n )}\n
    \n {eventMappingRejectionReason && (\n
    \n \n \n {' '}\n {isContentId(eventMappingRejectionReason) ? (\n \n ) : (\n eventMappingRejectionReason\n )}\n \n \n \n \n \n }\n />\n
    \n )}\n
    \n \n \n {inventoryAccordionItem && (\n \n \n {!hasCondensedPreviewTabsAndSingleListingFeature && (\n \n )}\n {multiSelectToggle}\n {inventoryEventDropdown}\n \n )}\n \n {hasEventStatusDisplay && event.eventStatus && (\n
    \n \n
    \n )}\n {!isOnSaleEvent && !hasBlockInventorySummaryStatsFeature && (\n }\n showLoadingPlaceholders={!formattedTotalMetrics}\n >\n {formattedTotalMetrics?.formattedTotalListPrice}\n \n )}\n
    \n
    \n\n {!isOnSaleEvent && (\n \n \n \n {marketPlaceLogos}\n \n \n
    \n {hasEventsEditPermission && (\n \n )}\n
    \n \n )}\n \n
    \n
    \n {marketplaceEventEditDialog}\n
    \n );\n};\n","import { isEmpty } from 'lodash-es';\nimport { useContext, useMemo } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { Button, Stack } from 'src/core/ui';\nimport * as Tabs from 'src/core/ui/Tabs';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { EventPricingSeatMap } from 'src/modals/EventPricingSeatMap';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isMissingRowData } from 'src/utils/venueConfigUtils';\nimport { Feature } from 'src/WebApiController';\n\nimport * as styles from '../InventoryEventPage.css';\n\nexport enum SidePanelTab {\n LISTINGS = 'listings',\n SALES = 'sales',\n NOTES = 'notes',\n PURCHASES = 'purchases',\n}\n\nconst EventMarketListingTitle = () => {\n const hasHideNavAndFilterBarsFeature = useUserHasFeature(\n Feature.HideNavAndFilterBars\n );\n\n return (\n \n \n \n \n {!hasHideNavAndFilterBarsFeature && (\n \n \n \n )}\n\n {!hasHideNavAndFilterBarsFeature && (\n \n \n \n )}\n\n \n \n \n \n );\n};\n\ntype MarketListingHeaderProps = {\n includeSales?: boolean;\n};\n\nexport const MarketListingHeader: React.FC = () => {\n const { setModal } = useContext(ModalContext);\n\n const {\n event,\n venueMapInfo,\n isMapLoading,\n isGeneralAdmissionOnly,\n mapConfigOverridesQuery,\n venueMapsByScoreModelQuery,\n } = useEventMapContext();\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n\n const isConfigurable = useMemo(() => {\n // Has score overrides\n if (mapConfigOverridesQuery.data?.length) {\n return true;\n }\n\n // Venue map has configured scores\n if ((venueMapInfo?.sectionScores?.findIndex((s) => s.score) ?? -1) >= 0) {\n return true;\n }\n\n // Has modeled scores\n const { AdvancedVenueGeometry, MergedVenueGeometry, VenueGeometry } =\n venueMapsByScoreModelQuery.data ?? {};\n if (\n !isEmpty(AdvancedVenueGeometry) ||\n !isEmpty(MergedVenueGeometry) ||\n !isEmpty(VenueGeometry)\n ) {\n return true;\n }\n\n return false;\n }, [\n mapConfigOverridesQuery.data?.length,\n venueMapInfo?.sectionScores,\n venueMapsByScoreModelQuery.data,\n ]);\n\n return (\n \n
    \n \n {!hasAutoPricingFeature ? null : venueMapInfo?.venueCfgId &&\n !isGeneralAdmissionOnly ? (\n \n setModal({\n children: ,\n clickOutsideToClose: true,\n size: 'slide-in',\n keyboard: false,\n })\n }\n >\n \n \n ) : isGeneralAdmissionOnly ? (\n }\n />\n ) : !isMapLoading && !venueMapInfo?.venueCfgId ? (\n \n }\n />\n ) : null}\n
    \n {hasAutoPricingFeature &&\n !isGeneralAdmissionOnly &&\n !isMapLoading &&\n venueMapInfo?.venueCfgId &&\n isMissingRowData(venueMapInfo) ? (\n }\n />\n ) : null}\n
    \n );\n};\n","import { UseQueryResult } from '@tanstack/react-query';\nimport { isEmpty, noop, union, uniq } from 'lodash-es';\nimport {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { VenueMapContentProps } from 'src/components/Events/VenueMap/VenueMapContent';\nimport { SidePanelTab } from 'src/components/Listings/InventoryEventPage/MarketListings/MarketListingHeader';\nimport { useAutoPricingPreview } from 'src/components/Listings/MapWithCompListingsPreview/MapWithCompListingsPreview.hooks';\nimport { useComparableListingsVenueMapColor } from 'src/hooks/useComparableListingsVenueMapColor';\nimport { useGetCompListings } from 'src/hooks/useGetCompListings';\nimport { useUserCanSetPrice } from 'src/hooks/useUserHasListingPermissions';\nimport { getMatchingSectionRow } from 'src/utils/seatScoreUtils';\nimport {\n CompListing,\n Event,\n Listing,\n ListingDetailsAutoPricingSectionUpdates,\n ListingDetailsPricingUpdates,\n ListingGroup,\n ListingPriceCalculation,\n SectionInfo,\n VenueMapInfo,\n} from 'src/WebApiController';\n\nimport { useEventMapContext } from '../EventMapContext';\n\nexport type IInventoryEventDetailContext = {\n event?: Event | undefined;\n eventListings?: Listing[] | null;\n selectedListingIds: number[];\n selectedListing?: Listing | undefined;\n selectedGroup?: ListingGroup | undefined;\n selectedTab: SidePanelTab;\n onTabClick: (tab: SidePanelTab) => void;\n shouldRepaint: boolean;\n recenterMap: () => void;\n shouldReset: boolean;\n setShouldReset: React.Dispatch>;\n compQuantityFilters: string[];\n setCompQuantityFilters: React.Dispatch>;\n venueMapInfo: VenueMapInfo | null;\n priceCalcQuery: UseQueryResult | null;\n compListings?: CompListing[] | undefined;\n filterSections: SectionInfo[];\n compListingSectionIds: number[];\n getColor: NonNullable;\n splitChoices: Record;\n isLoading: boolean;\n};\n\nconst InventoryEventDetailContext = createContext(\n {\n event: undefined,\n eventListings: null,\n selectedListingIds: [],\n selectedListing: undefined,\n selectedGroup: undefined,\n selectedTab: SidePanelTab.LISTINGS,\n onTabClick: (tab: SidePanelTab) => {},\n shouldRepaint: false,\n recenterMap: () => {},\n shouldReset: false,\n setShouldReset: () => {},\n compQuantityFilters: [],\n setCompQuantityFilters: () => {},\n venueMapInfo: null,\n priceCalcQuery: null,\n compListings: [],\n filterSections: [],\n compListingSectionIds: [],\n getColor: noop,\n splitChoices: {},\n isLoading: false,\n }\n);\n\nexport const useInventoryEventDetailContext = () =>\n useContext(InventoryEventDetailContext);\n\nexport const InventoryEventDetailContextProvider = ({\n event,\n eventListings,\n selectedListingIds,\n selectedListing,\n selectedGroup,\n children,\n}: {\n event: Event;\n eventListings?: Listing[] | null;\n selectedListingIds: number[];\n selectedListing: Listing | undefined;\n selectedGroup: ListingGroup | undefined;\n children: ReactNode;\n}) => {\n // Contexts\n const { venueMapInfo } = useEventMapContext();\n\n // State\n const [shouldRepaint, setShouldRepaint] = useState(false);\n const [shouldReset, setShouldReset] = useState(false);\n const [selectedTab, setSelectedTab] = useState(\n SidePanelTab.LISTINGS\n );\n const [compQuantityFilters, setCompQuantityFilters] = useState([]);\n\n const recenterMap = useCallback(() => {\n requestAnimationFrame(() => {\n setTimeout(() => {\n setShouldRepaint(true);\n\n setTimeout(() => {\n setShouldRepaint(false);\n }, 200);\n }, 50);\n });\n }, []);\n\n useEffect(() => {\n setShouldReset(true);\n requestAnimationFrame(() => {\n setTimeout(() => {\n setShouldReset(true);\n\n setTimeout(() => {\n setShouldReset(false);\n }, 200);\n }, 50);\n });\n }, [selectedListing?.id]);\n\n // Custom hooks and component data\n const onTabClick = useCallback(\n (tab: SidePanelTab) => {\n setSelectedTab(tab);\n recenterMap();\n },\n [recenterMap]\n );\n\n const { watch } = useFormContext();\n\n const { compListingSelectedSectionSettings } = watch();\n const input = watch();\n\n const sanitizedListingInput = useMemo((): ListingDetailsPricingUpdates => {\n const {\n netProceedsFloor,\n netProceedsCeiling,\n autoPricingEnabled,\n currencyCode,\n\n compListingFloor,\n compListingCeiling,\n compListingMode,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n compListingSelectedSectionSettings,\n compListingQuantityFilters,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n } = input ?? {};\n\n return {\n netProceedsFloor,\n netProceedsCeiling,\n autoPricingEnabled,\n currencyCode,\n\n compListingFloor,\n compListingCeiling,\n compListingMode,\n compListingOnlyForSameZoneEnabled,\n compListingOnlyForSelectedSectionsEnabled,\n compListingExcludeFanInventory,\n compListingExcludeDefects,\n compListingQuantityScoreAdjustmentEnabled,\n compListingQuantityScoreAdjustmentOverrideJson,\n compListingSelectedSectionSettings,\n compListingQuantityFilters,\n\n undercutMode,\n undercutAbsoluteAmount,\n undercutRelativeAmount,\n\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n circuitBreakerMinCompListingCount,\n circuitBreakerRelativeCeiling,\n circuitBreakerRelativeFloor,\n\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n } as ListingDetailsPricingUpdates;\n }, [input]);\n\n const { priceCalcQuery } = useAutoPricingPreview(\n event?.viagId ?? null,\n selectedListing?.id,\n sanitizedListingInput\n );\n\n const { compListingsQuery, compListingsGroupQuery } = useGetCompListings(\n event,\n selectedListing?.id,\n selectedListing?.currency,\n selectedGroup?.ltGrpId\n );\n\n const formSectionFilterIds = useMemo(() => {\n return compListingSelectedSectionSettings?.sectionIdFilter ?? [];\n }, [compListingSelectedSectionSettings?.sectionIdFilter]);\n\n const compListings = useMemo(() => {\n if (selectedListing?.id) {\n return priceCalcQuery?.data?.compListings;\n }\n if (isEmpty(formSectionFilterIds)) {\n if (selectedGroup?.ltGrpId) {\n return compListingsGroupQuery.data?.compListings;\n }\n return compListingsQuery.data ?? undefined;\n }\n\n if (selectedGroup?.ltGrpId) {\n return compListingsGroupQuery.data?.compListings?.filter((l) => {\n const { section } = getMatchingSectionRow(l, venueMapInfo?.sections);\n return section && formSectionFilterIds.includes(section.id);\n });\n }\n return compListingsQuery.data?.filter((l) => {\n const { section } = getMatchingSectionRow(l, venueMapInfo?.sections);\n return section && formSectionFilterIds.includes(section.id);\n });\n }, [\n selectedListing?.id,\n formSectionFilterIds,\n venueMapInfo?.sections,\n selectedGroup?.ltGrpId,\n compListingsQuery.data,\n priceCalcQuery?.data?.compListings,\n compListingsGroupQuery.data?.compListings,\n ]);\n\n const filterSections = useMemo(() => {\n const selectedSectionId =\n compListingSelectedSectionSettings?.sectionIdFilter ?? [];\n return (\n venueMapInfo?.sections?.filter(({ id }) =>\n selectedSectionId.includes(id)\n ) ?? []\n );\n }, [\n compListingSelectedSectionSettings?.sectionIdFilter,\n venueMapInfo?.sections,\n ]);\n\n const compListingSectionIds = useMemo(() => {\n if (isEmpty(selectedListingIds)) {\n return formSectionFilterIds;\n }\n\n const sectionNames = (compListings ?? []).map((l) => l.section);\n\n const sectionIds = (venueMapInfo?.sections ?? [])\n .filter((section) => sectionNames.includes(section.name))\n .map(({ id }) => id);\n\n return union(sectionIds, formSectionFilterIds);\n }, [\n selectedListingIds,\n compListings,\n venueMapInfo?.sections,\n formSectionFilterIds,\n ]);\n\n const canSetPrice = useUserCanSetPrice(selectedListing, false);\n\n const compListingsFiltered = useMemo(() => {\n if (isEmpty(compQuantityFilters)) {\n return compListings;\n }\n\n return compListings?.filter(({ validPurchaseQuantities }) => {\n if (isEmpty(validPurchaseQuantities)) {\n return true;\n }\n return validPurchaseQuantities.some(\n (quantity) => compQuantityFilters.indexOf(quantity + '') > -1\n );\n });\n }, [compListings, compQuantityFilters]);\n\n const getColor = useComparableListingsVenueMapColor(\n eventListings ?? [],\n compListingsFiltered,\n compListings\n );\n\n const splitChoices = useMemo(() => {\n return uniq(\n (compListings ?? []).flatMap(\n (listing) => listing.validPurchaseQuantities ?? []\n )\n ).reduce(\n (res, quantity) => {\n const stringQuantity = quantity + '';\n res[stringQuantity] = stringQuantity;\n return res;\n },\n {} as Record\n );\n }, [compListings]);\n\n const isLoading = useMemo(\n () =>\n compListingsQuery.isLoading ||\n priceCalcQuery.isLoading ||\n compListingsGroupQuery.isLoading,\n [\n compListingsGroupQuery.isLoading,\n compListingsQuery.isLoading,\n priceCalcQuery.isLoading,\n ]\n );\n\n if (!canSetPrice) {\n return null;\n }\n\n return (\n \n {children}\n \n );\n};\n","import { useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { useUndercutAmountSettings } from 'src/hooks/useUndercutAmountSettings';\nimport { MinusIcon, PlusIcon } from 'src/svgs/Viagogo';\nimport { getUndercutPriceRepresentingMode } from 'src/utils/autoPricingUtils';\nimport { UndercutPriceSettingsMode } from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { AutoPricingInputs, UiCurrency } from 'src/WebApiController';\n\nimport * as styles from './PricingSetting.css';\n\nconst UNDERCUT_PRICE_MODE_OPTIONS = [\n {\n value: UndercutPriceSettingsMode.Premium,\n children: ,\n },\n {\n value: UndercutPriceSettingsMode.Discount,\n children: ,\n },\n];\n\ntype CompListingPricesProps = {\n useVerticalView: boolean;\n uiCurrency: UiCurrency;\n};\n\nexport const CompListingPrices = ({\n useVerticalView,\n uiCurrency,\n}: CompListingPricesProps) => {\n const { watch, setValue } = useFormContext();\n const { undercutRelativeAmount, undercutAbsoluteAmount } = watch();\n\n const {\n undercutAbsoluteAmountMode,\n setUndercutAbsoluteAmountMode,\n undercutRelativeAmountMode,\n setUndercutRelativeAmountMode,\n } = useUndercutAmountSettings(undercutAbsoluteAmount, undercutRelativeAmount);\n\n const determinPriceText = useContent(ContentId.DeterminePrice);\n const movePriceText = useContent(ContentId.MovePrice);\n const thenText = useContent(ContentId.Then);\n const adjustPriceText = useContent(ContentId.AdjustPrice);\n\n const compListingPriceTextFirst = useMemo(\n () => `${determinPriceText}: ${movePriceText}`,\n [determinPriceText, movePriceText]\n );\n\n const compListingPriceTextThen = useMemo(\n () => `${thenText} ${adjustPriceText.toLowerCase()}`,\n [adjustPriceText, thenText]\n );\n\n if (useVerticalView) {\n return (\n \n
    \n {compListingPriceTextFirst}\n
    \n \n {\n if (!value) {\n return;\n }\n\n const undercutRelativeAmountModeNew =\n value as UndercutPriceSettingsMode;\n\n setUndercutRelativeAmountMode(undercutRelativeAmountModeNew);\n\n if (undercutRelativeAmount) {\n const absUndercutRelativeAmountNew = Math.abs(\n undercutRelativeAmount\n );\n\n const underCutAbsoluteAmountNew =\n getUndercutPriceRepresentingMode(\n absUndercutRelativeAmountNew,\n undercutRelativeAmountModeNew\n );\n\n setValue('undercutRelativeAmount', underCutAbsoluteAmountNew);\n }\n }}\n />\n
    \n \n
    \n {\n const v = parseFloat(e.target.value);\n const absUnderCutRelativeAmountNew =\n v >= 0 && v <= Number.MAX_VALUE ? Math.min(v, 100) / 100 : null;\n const underCutRelativeAmountNew =\n absUnderCutRelativeAmountNew != null\n ? getUndercutPriceRepresentingMode(\n absUnderCutRelativeAmountNew,\n undercutRelativeAmountMode\n )\n : null;\n\n setValue('undercutRelativeAmount', underCutRelativeAmountNew);\n }}\n />\n \n
    \n {compListingPriceTextThen}\n
    \n \n {\n if (!value) {\n return;\n }\n\n const undercutAbsoluteAmountModeNew =\n value as UndercutPriceSettingsMode;\n\n setUndercutAbsoluteAmountMode(undercutAbsoluteAmountModeNew);\n\n if (undercutAbsoluteAmount) {\n const absUndercutAbsoluteAmountNew = Math.abs(\n undercutAbsoluteAmount\n );\n\n const underCutAbsoluteAmountNew =\n getUndercutPriceRepresentingMode(\n absUndercutAbsoluteAmountNew,\n undercutAbsoluteAmountModeNew\n );\n\n setValue('undercutAbsoluteAmount', underCutAbsoluteAmountNew);\n }\n }}\n />\n
    \n \n
    \n {\n const value = parseFloat(e.target.value);\n if (!isNaN(value)) {\n const underCutRelativeAmountNew =\n getUndercutPriceRepresentingMode(\n Math.abs(value),\n undercutAbsoluteAmountMode\n );\n\n setValue('undercutAbsoluteAmount', underCutRelativeAmountNew);\n }\n }}\n />\n \n \n );\n }\n\n return (\n <>\n \n \n {\n if (!value) {\n return;\n }\n\n const undercutRelativeAmountModeNew =\n value as UndercutPriceSettingsMode;\n\n setUndercutRelativeAmountMode(undercutRelativeAmountModeNew);\n\n if (undercutRelativeAmount) {\n const absUndercutRelativeAmountNew = Math.abs(\n undercutRelativeAmount\n );\n\n const underCutAbsoluteAmountNew =\n getUndercutPriceRepresentingMode(\n absUndercutRelativeAmountNew,\n undercutRelativeAmountModeNew\n );\n\n setValue('undercutRelativeAmount', underCutAbsoluteAmountNew);\n }\n }}\n />\n
    \n \n
    \n {\n const v = parseFloat(e.target.value);\n const absUnderCutRelativeAmountNew =\n v >= 0 && v <= Number.MAX_VALUE ? Math.min(v, 100) / 100 : null;\n const underCutRelativeAmountNew =\n absUnderCutRelativeAmountNew != null\n ? getUndercutPriceRepresentingMode(\n absUnderCutRelativeAmountNew,\n undercutRelativeAmountMode\n )\n : null;\n\n setValue('undercutRelativeAmount', underCutRelativeAmountNew);\n }}\n />\n
    \n \n
    \n {\n if (!value) {\n return;\n }\n\n const undercutAbsoluteAmountModeNew =\n value as UndercutPriceSettingsMode;\n\n setUndercutAbsoluteAmountMode(undercutAbsoluteAmountModeNew);\n\n if (undercutAbsoluteAmount) {\n const absUndercutAbsoluteAmountNew = Math.abs(\n undercutAbsoluteAmount\n );\n\n const underCutAbsoluteAmountNew =\n getUndercutPriceRepresentingMode(\n absUndercutAbsoluteAmountNew,\n undercutAbsoluteAmountModeNew\n );\n\n setValue('undercutAbsoluteAmount', underCutAbsoluteAmountNew);\n }\n }}\n />\n {\n const value = parseFloat(e.target.value);\n if (!isNaN(value)) {\n const underCutRelativeAmountNew =\n getUndercutPriceRepresentingMode(\n Math.abs(value),\n undercutAbsoluteAmountMode\n );\n\n setValue('undercutAbsoluteAmount', underCutRelativeAmountNew);\n }\n }}\n />\n \n \n );\n};\n","import clsx from 'clsx';\nimport { useMemo } from 'react';\nimport { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport {\n OnOutlierSettingsChangeArgs,\n useAutoPricingSettingsFormContext,\n} from 'src/components/AutoPricing/useAutoPricingSettingsFormContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { PosEnumSelect, PosSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { vars } from 'src/core/themes';\nimport { Button, Popover, Stack } from 'src/core/ui';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { useAvailableAutopricingModes } from 'src/hooks/useAvailableAutopricingModes';\nimport { ExpandIcon, FoldIcon } from 'src/svgs/Viagogo';\nimport {\n OUTLIER_MODE_KTH_LOWEST_STRATEGY,\n OutlierModeKthLowestStrategy,\n} from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { STANDARD_DEVIATIONS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { numberToOrdinal } from 'src/utils/numberFormatter';\nimport { ListingDetailsAutoPricingSectionUpdates } from 'src/WebApiController';\nimport { AutoPricingOutlierMode } from 'src/WebApiController';\n\nimport * as styles from './PricingSetting.css';\n\ntype OutlierSettingsProps = {\n useVerticalView: boolean;\n};\n\nexport const OutlierSettings = ({ useVerticalView }: OutlierSettingsProps) => {\n const { watch } = useFormContext();\n const {\n outlierMode,\n outlierKthLowestLimit,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacing,\n outlierStandardDeviations,\n } = watch();\n const [showOutlierSettings, setShowOutlierSettings] =\n useState(false);\n const { onOutlierSettingsChange } = useAutoPricingSettingsFormContext();\n\n const { outlierModes } = useAvailableAutopricingModes(\n true,\n null,\n null,\n true,\n false,\n false,\n true\n );\n\n if (useVerticalView) {\n return (\n \n \n \n
    \n {' '}\n \n
    \n \n
    \n \n \n \n \n \n }\n onClick={(e) => e.stopPropagation()}\n onChange={(v) =>\n onOutlierSettingsChange({\n outlierModeNew: v as AutoPricingOutlierMode,\n })\n }\n />\n {outlierMode === AutoPricingOutlierMode.KthLowest ? (\n \n ) : outlierMode === AutoPricingOutlierMode.StandardDeviations ? (\n \n ) : null}\n \n \n
    \n );\n }\n\n return (\n
    \n setShowOutlierSettings((prev) => !prev)}\n >\n \n \n \n {showOutlierSettings ? (\n \n ) : (\n \n )}\n \n {showOutlierSettings ? (\n
    \n \n \n \n }\n onClick={(e) => e.stopPropagation()}\n onChange={(v) =>\n onOutlierSettingsChange({\n outlierModeNew: v as AutoPricingOutlierMode,\n })\n }\n />\n {outlierMode === AutoPricingOutlierMode.KthLowest ? (\n \n ) : outlierMode === AutoPricingOutlierMode.StandardDeviations ? (\n \n ) : null}\n
    \n ) : null}\n
    \n );\n};\n\nconst KthLowestOutlierDetectionSettingsInput = ({\n outlierKthLowestLimit,\n outlierKthLowestLimitRelativeSpacing,\n outlierKthLowestLimitAbsoluteSpacing,\n onOutlierSettingsChange,\n}: {\n outlierKthLowestLimit: number | null;\n outlierKthLowestLimitRelativeSpacing: number | null;\n outlierKthLowestLimitAbsoluteSpacing: number | null;\n onOutlierSettingsChange: (args: OnOutlierSettingsChangeArgs) => void;\n}) => {\n const [outlierKthLowestStrategy, setKthLowestOutlierStrategy] = useState(\n OutlierModeKthLowestStrategy.Relative\n );\n\n const ignoreListingsText = useContent(\n ContentId.OutlierSettingsIngoreListings\n );\n const belowTheText = useContent(ContentId.BelowThe);\n const cheapestText = useContent(ContentId.Cheapest);\n\n const lowestLimitOptions = useMemo(() => {\n const options: Record = {};\n for (const [index, _] of Array.from({ length: 100 }).entries()) {\n if (index <= 0) continue;\n const value = index + 1;\n options[index] = `${numberToOrdinal(\n value\n )} ${cheapestText.toLocaleLowerCase()}`;\n }\n return options;\n }, [cheapestText]);\n\n return (\n <>\n \n \n {outlierKthLowestStrategy == OutlierModeKthLowestStrategy.Relative ? (\n {ignoreListingsText}\n }\n min={-1}\n max={100}\n rootProps={{ variant: 'small' }}\n className={clsx(styles.inputInline, styles.textAlignRight)}\n value={outlierKthLowestLimitRelativeSpacing ?? ''}\n onChange={(e) => {\n let v = parseInt(e.target.value);\n if (v < 0) {\n v = 0;\n } else if (v > 100) {\n v = 100;\n }\n\n if (!isNaN(v)) {\n onOutlierSettingsChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitRelativeSpacingNew: v,\n outlierKthLowestLimitAbsoluteSpacingNew: null,\n });\n }\n }}\n />\n ) : (\n {ignoreListingsText}\n }\n rootProps={{ variant: 'small' }}\n className={clsx(styles.inputInline, styles.textAlignRight)}\n value={outlierKthLowestLimitAbsoluteSpacing ?? 0}\n onChange={(e) => {\n const v = parseFloat(e.target.value);\n\n if (!isNaN(v)) {\n onOutlierSettingsChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitRelativeSpacingNew: null,\n outlierKthLowestLimitAbsoluteSpacingNew: v,\n });\n }\n }}\n />\n )}\n {\n if (!value) {\n return;\n }\n\n const strat = value as OutlierModeKthLowestStrategy;\n setKthLowestOutlierStrategy(strat);\n onOutlierSettingsChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitRelativeSpacingNew: null,\n outlierKthLowestLimitAbsoluteSpacingNew: null,\n });\n }}\n />\n \n
    \n e.stopPropagation()}\n prefixDisplay={\n {belowTheText}\n }\n contentProps={{ style: { maxHeight: '400px' } }}\n onChange={(v) => {\n const value = parseInt(v);\n if (!isNaN(value)) {\n onOutlierSettingsChange({\n outlierModeNew: AutoPricingOutlierMode.KthLowest,\n outlierKthLowestLimitNew: value,\n });\n }\n }}\n />\n
    \n
    \n \n );\n};\n\nconst StandardDeviationOutlierDetectionSettingsInput = ({\n outlierStandardDeviations,\n onOutlierSettingsChange,\n}: {\n outlierStandardDeviations: number | null;\n onOutlierSettingsChange: (input: OnOutlierSettingsChangeArgs) => void;\n}) => {\n return (\n e.stopPropagation()}\n onChange={(v) => {\n const value = parseInt(v ?? '');\n if (value != null && !isNaN(value)) {\n onOutlierSettingsChange({\n outlierModeNew: AutoPricingOutlierMode.StandardDeviations,\n outlierStandardDeviationsNew: value,\n });\n } else {\n onOutlierSettingsChange({\n outlierModeNew: AutoPricingOutlierMode.StandardDeviations,\n outlierStandardDeviationsNew: null,\n });\n }\n }}\n />\n );\n};\n","import { ChangeEvent, useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { FormatContent, useContent } from 'src/contexts/ContentContext';\nimport { useInventoryEventDetailContext } from 'src/contexts/InventoryEventDetailContext/InventoryEventDetailContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { vars } from 'src/core/themes';\nimport { InfoOutlineIcon } from 'src/svgs/Viagogo';\nimport { calculatePercentile } from 'src/utils/arrayUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport {\n getAllInPriceFromListPrice,\n getListPriceFromAllinPrice,\n} from 'src/utils/inventoryUtils';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport {\n ListingDetailsAutoPricingSectionUpdates,\n UiCurrency,\n} from 'src/WebApiController';\n\nimport * as styles from './PricingSetting.css';\n\nconst CheckPrice = (\n value: number | null,\n median: number,\n threshold: number\n) => {\n if (!value || !median || threshold <= 0) {\n return null;\n }\n\n const percentDifference = ((value - median) / median) * 100;\n const absolutePercentDifference = Math.abs(percentDifference);\n\n if (absolutePercentDifference <= threshold) {\n return {\n isWithinThreshold: true,\n percentDifference: percentDifference,\n absolutePercentDifference: absolutePercentDifference,\n };\n }\n\n return {\n isWithinThreshold: false,\n isAbove: percentDifference > 0,\n isBelow: percentDifference < 0,\n percentDifference: percentDifference,\n absolutePercentDifference: absolutePercentDifference,\n };\n};\n\nexport const PricingSettingAutoPriceFloorSettings = ({\n uiCurrency,\n sellerFee,\n}: {\n uiCurrency: UiCurrency;\n sellerFee: number | null;\n}) => {\n const aboveText = useContent(ContentId.Above).toLocaleLowerCase();\n const belowText = useContent(ContentId.Below).toLocaleLowerCase();\n const setPriceFloorText = `${useContent(ContentId.SetPriceFloor)}: ${\n uiCurrency.sym\n }`;\n\n const { setValue, watch } =\n useFormContext();\n\n const input = watch();\n const { netProceedsFloor } = input;\n\n const { compListings } = useInventoryEventDetailContext();\n\n const medianListingPrice = useMemo(() => {\n const ticketPrices: number[] = [];\n for (const listing of compListings ?? []) {\n if ((listing.availableTickets ?? 0) > 0) {\n const prices = Array(listing.availableTickets ?? 0).fill(\n listing.sellerAllInPrice?.amt ?? 0\n );\n ticketPrices.push(...prices);\n }\n }\n return calculatePercentile(ticketPrices, 50);\n }, [compListings]);\n\n const priceComparisonResult = useMemo(() => {\n return CheckPrice(netProceedsFloor, medianListingPrice, 25);\n }, [medianListingPrice, netProceedsFloor]);\n\n const onPriceFloorChange = useCallback(\n (e: ChangeEvent) => {\n const v = parseFloat(e.target.value);\n if (v >= 0 && v < Number.MAX_VALUE) {\n const netProceedsValueNew = getListPriceFromAllinPrice(\n v,\n null,\n sellerFee\n )!;\n setValue('netProceedsFloor', netProceedsValueNew);\n } else {\n setValue('netProceedsFloor', null);\n }\n },\n [setValue, sellerFee]\n );\n\n return (\n <>\n {setPriceFloorText}\n }\n value={\n getAllInPriceFromListPrice(netProceedsFloor, null, sellerFee) ?? ''\n }\n onChange={onPriceFloorChange}\n uiCurrency={uiCurrency}\n />\n {priceComparisonResult && !priceComparisonResult.isWithinThreshold && (\n
    \n \n \n \n \n
    \n )}\n \n );\n};\n","import clsx from 'clsx';\nimport { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport {\n ListingGroupAutoPriceSettings,\n UiCurrency,\n} from 'src/WebApiController';\n\nimport * as styles from './PricingSetting.css';\n\nenum RankPremiumMode {\n Absolute = 'Absolute',\n Relative = 'Relative',\n}\n\nconst RANK_PREMIUM_TO_SYMBOL_MAP = {\n [RankPremiumMode.Absolute]: '$',\n [RankPremiumMode.Relative]: '%',\n};\n\ninterface PricingSettingAutoPriceRankPremiumSettingsProps {\n uiCurrency: UiCurrency;\n}\n\nexport const PricingSettingAutoPriceRankPremiumSettings = ({\n uiCurrency,\n}: PricingSettingAutoPriceRankPremiumSettingsProps) => {\n const addRankPremiumText = useContent(\n ContentId.GroupListingsSettingRankPremium\n );\n const [premiumMode, setPremiumMode] = useState(\n RankPremiumMode.Absolute\n );\n const { watch, setValue } = useFormContext();\n\n const undAbsAmt = watch('undAbsAmt');\n const undRelAmt = watch('undRelAmt');\n\n const currentValue =\n premiumMode === RankPremiumMode.Absolute\n ? undAbsAmt\n : undRelAmt != null\n ? roundToPrecision(Math.abs(undRelAmt) * 100, 8)\n : '';\n\n const handleValueChange = (value: string) => {\n const numericValue = parseFloat(value);\n\n if (!isNaN(numericValue)) {\n if (premiumMode === RankPremiumMode.Absolute) {\n setValue('undAbsAmt', numericValue);\n setValue('undRelAmt', null);\n } else {\n const clampedValue = Math.min(Math.max(numericValue, 0), 100) / 100;\n setValue('undAbsAmt', null);\n setValue('undRelAmt', clampedValue);\n }\n }\n };\n\n return (\n
    \n \n {addRankPremiumText}:\n \n }\n value={currentValue ?? undefined}\n onChange={(e) => handleValueChange(e.target.value)}\n />\n
    \n e.stopPropagation()}\n onChange={(v) => setPremiumMode(v as RankPremiumMode)}\n />\n
    \n
    \n );\n};\n","import { OkButton } from 'src/components/Buttons/OkButton';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n AutoPricingCompListingMode,\n AutoPricingOutlierMode,\n AutoPricingUndercutMode,\n UiCurrency,\n} from 'src/WebApiController';\n\nimport { CompListingPrices } from './CompListingPrices';\nimport { OutlierSettings } from './OutlierSettings';\nimport * as styles from './PricingSetting.css';\nimport { PricingSettingAutoPriceFloorSettings } from './PricingSettingAutoPriceFloorSettings';\nimport { PricingSettingAutoPriceRankPremiumSettings } from './PricingSettingAutoPriceRankPremiumSettings';\n\nexport const PricingSettingAutoPriceBody = ({\n sellerFee,\n uiCurrency,\n hasChanges,\n isLoading,\n isListingGroupForm,\n useVerticalView,\n onReset,\n onSubmit,\n}: {\n undercutRelativeAmount: number | null;\n undercutAbsoluteAmount: number | null;\n compListingMode: AutoPricingCompListingMode | null;\n outlierMode: AutoPricingOutlierMode | null;\n undercutMode: AutoPricingUndercutMode | null;\n outlierStandardDeviations: number | null;\n outlierKthLowestLimit: number | null;\n outlierKthLowestLimitAbsoluteSpacing: number | null;\n outlierKthLowestLimitRelativeSpacing: number | null;\n uiCurrency: UiCurrency;\n sellerFee: number | null;\n hasChanges: boolean;\n isLoading: boolean;\n isListingGroupForm?: boolean | null;\n useVerticalView: boolean;\n onReset: () => void;\n onSubmit: () => void;\n}) => {\n const resetText = useContent(ContentId.Reset);\n\n return (\n
    \n
    \n
    \n \n {!isListingGroupForm ? (\n \n ) : (\n \n )}\n
    \n\n \n
    \n
    \n \n {resetText}\n \n \n
    \n
    \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useToggle } from 'react-use';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useInventoryEventDetailContext } from 'src/contexts/InventoryEventDetailContext/InventoryEventDetailContext';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ListingGroupAutoPriceSettings,\n PricingClient,\n UiCurrency,\n} from 'src/WebApiController';\n\nimport { PricingSettingAutoPriceBody } from './PricingSettingAutoPriceBody';\n\ntype PricingSettingAutoPriceGroupProps = {\n uiCurrency: UiCurrency;\n sellerFee: number | null;\n useVerticalView: boolean;\n};\n\nexport const PricingSettingAutoPriceGroup = ({\n uiCurrency,\n sellerFee,\n useVerticalView,\n}: PricingSettingAutoPriceGroupProps) => {\n const { selectedGroup } = useInventoryEventDetailContext();\n const { watch, reset, handleSubmit, formState } =\n useFormContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const [isLoading, setLoading] = useToggle(false);\n\n const onSubmitHandler = useCallback(\n async (autoPricingSectionForm: ListingGroupAutoPriceSettings) => {\n if (selectedGroup?.ltGrpId == null) {\n return;\n }\n\n tryInvokeApi(\n async () => {\n setLoading(true);\n const result = await new PricingClient(\n activeAccountWebClientConfig\n ).updateListingGroupPricingSettings(\n selectedGroup?.ltGrpId ?? undefined,\n autoPricingSectionForm\n );\n\n if (isSuccess(result)) {\n // Reset the form to latest changed\n reset(autoPricingSectionForm);\n refreshExpandedListItems();\n setLoading(false);\n } else {\n showErrorDialog(\n 'PricingClient.updateListingGroupPricingSettings',\n { message: result.message, status: result.status },\n {\n trackErrorData: {\n autoPricingSectionForm,\n },\n }\n );\n }\n },\n (error) => {\n showErrorDialog(\n 'PricingClient.updateListingGroupPricingSettings',\n error,\n {\n trackErrorData: autoPricingSectionForm,\n }\n );\n },\n () => {\n setLoading(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n refreshExpandedListItems,\n reset,\n selectedGroup?.ltGrpId,\n setLoading,\n showErrorDialog,\n ]\n );\n\n const onSubmit = useCallback(() => {\n handleSubmit(onSubmitHandler)();\n }, [handleSubmit, onSubmitHandler]);\n\n const onReset = useCallback(() => {\n reset({ ...(formState.defaultValues ?? {}) });\n }, [formState.defaultValues, reset]);\n\n const input = watch();\n\n const hasChanges = useMemo(() => {\n const defaultValues = formState.defaultValues;\n return (\n input.undAbsAmt !== defaultValues?.undAbsAmt ||\n input.undRelAmt !== defaultValues?.undRelAmt ||\n input.compListingFloor !== defaultValues?.compListingFloor ||\n input.compListingCeiling !== defaultValues?.compListingCeiling ||\n input.compListingMode !== defaultValues?.compListingMode ||\n input.compListingOnlyForSameZoneEnabled !==\n defaultValues?.compListingOnlyForSameZoneEnabled ||\n input.compListingOnlyForSelectedSectionsEnabled !==\n defaultValues?.compListingOnlyForSelectedSectionsEnabled ||\n input.compListingExcludeFanInventory !==\n defaultValues?.compListingExcludeFanInventory ||\n input.compListingExcludeDefects !==\n defaultValues?.compListingExcludeDefects ||\n input.compListingQuantityScoreAdjustmentEnabled !==\n defaultValues?.compListingQuantityScoreAdjustmentEnabled ||\n input.compListingQuantityScoreAdjustmentOverrideJson !==\n defaultValues?.compListingQuantityScoreAdjustmentOverrideJson ||\n input.undercutMode !== defaultValues?.undercutMode ||\n input.undercutAbsoluteAmount !== defaultValues?.undercutAbsoluteAmount ||\n input.undercutRelativeAmount !== defaultValues?.undercutRelativeAmount ||\n input.circuitBreakerMaxDiscountVelocityPercent !==\n defaultValues?.circuitBreakerMaxDiscountVelocityPercent ||\n input.circuitBreakerMaxDiscountVelocityTicksInHours !==\n defaultValues?.circuitBreakerMaxDiscountVelocityTicksInHours ||\n input.circuitBreakerMinCompListingCount !==\n defaultValues?.circuitBreakerMinCompListingCount ||\n input.circuitBreakerRelativeCeiling !==\n defaultValues?.circuitBreakerRelativeCeiling ||\n input.circuitBreakerRelativeFloor !==\n defaultValues?.circuitBreakerRelativeFloor ||\n input.outlierMode !== defaultValues?.outlierMode ||\n input.outlierStandardDeviations !==\n defaultValues?.outlierStandardDeviations ||\n input.outlierKthLowestLimit !== defaultValues?.outlierKthLowestLimit ||\n input.outlierKthLowestLimitRelativeSpacing !==\n defaultValues?.outlierKthLowestLimitRelativeSpacing ||\n input.outlierKthLowestLimitAbsoluteSpacing !==\n defaultValues?.outlierKthLowestLimitAbsoluteSpacing ||\n !isEqual(\n input.compListingSelectedSectionSettings,\n defaultValues?.compListingSelectedSectionSettings\n ) ||\n !isEqual(\n input.compListingQuantityFilters,\n defaultValues?.compListingQuantityFilters\n )\n );\n }, [input, formState.defaultValues]);\n\n const {\n compListingMode,\n outlierMode,\n undercutMode,\n undercutRelativeAmount,\n undercutAbsoluteAmount,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacing,\n } = input;\n\n return (\n \n );\n};\n","import { Stack } from 'src/core/ui';\n\nimport * as styles from './StatLabel.css';\n\nexport const StatLabel = ({\n title,\n stat,\n}: {\n title: string | React.ReactNode;\n stat: string;\n}) => {\n return (\n \n {stat}\n {title}\n \n );\n};\n","import { sum } from 'lodash-es';\nimport { useMemo } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Divider } from 'src/modals/common/Summary/Summary.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Listing, ListingStatus } from 'src/WebApiController';\n\nimport { StatLabel } from '../../../Map/StatLabel';\nimport * as styles from './PricingSetting.css';\n\nexport const PricingSettingGroupHeader = ({\n groupName,\n flattenedListingGroup,\n}: {\n groupName: string;\n flattenedListingGroup: Listing[] | undefined;\n}) => {\n const soldQty = useMemo(() => {\n return sum(\n flattenedListingGroup?.filter((l) => !l.isLtGrp).map((l) => l.soldQty)\n );\n }, [flattenedListingGroup]);\n\n const listedQty = useMemo(() => {\n return sum(\n flattenedListingGroup\n ?.filter(\n (l) =>\n !l.isLtGrp &&\n ((l as Listing).status === ListingStatus.Listed ||\n (l as Listing).status === ListingStatus.ListingPending)\n )\n .map((l) => l.availQty)\n );\n }, [flattenedListingGroup]);\n\n const queuedQty = useMemo(() => {\n return sum(\n flattenedListingGroup\n ?.filter(\n (l) =>\n !l.isLtGrp &&\n !(\n (l as Listing).status === ListingStatus.Listed ||\n (l as Listing).status === ListingStatus.ListingPending\n )\n )\n .map((l) => l.availQty)\n );\n }, [flattenedListingGroup]);\n\n return (\n
    \n }\n />\n \n } />\n \n }\n />\n \n }\n />\n
    \n );\n};\n","import clsx from 'clsx';\nimport { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { Stack } from 'src/core/ui';\nimport { flattenListingGroup } from 'src/modals/GroupListings/components/groupingUtils';\nimport { Listing, ListingGroup, Marketplace } from 'src/WebApiController';\n\nimport * as styles from './ListingDetailPanel.css';\nimport { PricingSettingAutoPriceGroup } from './PricingSetting/PricingSettingAutoPriceGroup';\nimport { PricingSettingGroupHeader } from './PricingSetting/PricingSettingGroupHeader';\n\nexport const ListingDetailListingGroupHeader = ({\n selectedGroup,\n useVerticalView,\n shouldDetailsSideBySide,\n}: {\n selectedGroup: ListingGroup;\n useVerticalView: boolean;\n shouldDetailsSideBySide: boolean;\n}) => {\n const { loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n const stubHubMkpSettings =\n loginContext?.user?.activeAccount?.marketplaceSettings?.find(\n (m) => m.mkp === Marketplace.StubHub\n );\n\n const uiCurrency = useMemo(\n () =>\n getUiCurrency(\n selectedGroup?.currency ??\n loginContext?.user?.activeAccount?.currencyCode\n ),\n [\n getUiCurrency,\n selectedGroup?.currency,\n loginContext?.user?.activeAccount?.currencyCode,\n ]\n );\n\n const flattenedListingGroup: Listing[] | undefined = useMemo(() => {\n if (!selectedGroup) {\n return;\n }\n\n return flattenListingGroup(selectedGroup).map((l) => l as Listing);\n }, [selectedGroup]);\n\n return (\n \n \n
    \n \n
    \n\n
    \n \n
    \n
    \n
    \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { ChangeEvent, useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useToggle } from 'react-use';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { FormatContent, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useInventoryEventDetailContext } from 'src/contexts/InventoryEventDetailContext/InventoryEventDetailContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { InfoOutlineIcon } from 'src/svgs/Viagogo';\nimport { MinusIcon, PlusIcon } from 'src/svgs/Viagogo';\nimport { calculatePercentile } from 'src/utils/arrayUtils';\nimport { UndercutPriceSettingsMode } from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport {\n getAllInPriceFromListPrice,\n getListPriceFromAllinPrice,\n} from 'src/utils/inventoryUtils';\nimport { roundToPrecision } from 'src/utils/numberFormatter';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ListingClient,\n ListingDetails,\n ListingDetailsAutoPricingSectionUpdates,\n UiCurrency,\n} from 'src/WebApiController';\n\nimport { CompListingPrices } from './CompListingPrices';\nimport { OutlierSettings } from './OutlierSettings';\nimport * as styles from './PricingSetting.css';\n\nconst UNDERCUT_PRICE_MODE_OPTIONS = [\n {\n value: UndercutPriceSettingsMode.Premium,\n children: ,\n },\n {\n value: UndercutPriceSettingsMode.Discount,\n children: ,\n },\n];\n\nconst CheckPrice = (\n value: number | null,\n median: number,\n threshold: number\n) => {\n if (!value || !median || threshold <= 0) {\n return null;\n }\n\n const percentDifference = ((value - median) / median) * 100;\n const absolutePercentDifference = Math.abs(percentDifference);\n\n if (absolutePercentDifference <= threshold) {\n return {\n isWithinThreshold: true,\n percentDifference: percentDifference,\n absolutePercentDifference: absolutePercentDifference,\n };\n }\n\n return {\n isWithinThreshold: false,\n isAbove: percentDifference > 0,\n isBelow: percentDifference < 0,\n percentDifference: percentDifference,\n absolutePercentDifference: absolutePercentDifference,\n };\n};\n\ntype PricingSettingAutoPriceProps = {\n uiCurrency: UiCurrency;\n sellerFee: number | null;\n useVerticalView: boolean;\n};\n\n/**\n * @deprecated This component is in the process of being deprecated. Please make sure to update\n * PricingSettingAutoPriceListing.tsx during the cutover process.\n */\nexport const PricingSettingAutoPrice = ({\n uiCurrency,\n sellerFee,\n useVerticalView,\n}: PricingSettingAutoPriceProps) => {\n const resetText = useContent(ContentId.Reset);\n const aboveText = useContent(ContentId.Above).toLocaleLowerCase();\n const belowText = useContent(ContentId.Below).toLocaleLowerCase();\n\n const { event, selectedListing, compListings } =\n useInventoryEventDetailContext();\n\n const { watch, reset, setValue, handleSubmit, formState } =\n useFormContext();\n\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { updateActivePosEntityInfo } =\n useActivePosEntityContext();\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const [isLoading, setLoading] = useToggle(false);\n\n const onSubmitStart = useCallback(() => {\n setLoading(true);\n }, [setLoading]);\n\n const onSubmitDone = useCallback(\n async (success = true) => {\n if (selectedListing?.id && success) {\n const updatedListing = await new ListingClient(\n activeAccountWebClientConfig\n ).getListingByListingId(selectedListing.id, undefined, undefined);\n\n if (updatedListing) {\n updateActivePosEntityInfo({\n event,\n posEntity: updatedListing,\n posEntityId: updatedListing.id,\n posEntityDisplayId: updatedListing.idOnMkp,\n });\n }\n }\n setLoading(false);\n },\n [\n activeAccountWebClientConfig,\n event,\n selectedListing?.id,\n setLoading,\n updateActivePosEntityInfo,\n ]\n );\n\n const onSubmitHandler = useCallback(\n async (autoPricingSectionForm: ListingDetailsAutoPricingSectionUpdates) => {\n tryInvokeApi(\n async () => {\n onSubmitStart();\n const result = await new ListingClient(\n activeAccountWebClientConfig\n ).updateListingAutoPricingSection(autoPricingSectionForm);\n\n if (isSuccess(result)) {\n // Reset the form to latest changed\n reset(autoPricingSectionForm);\n await onSubmitDone();\n } else {\n showErrorDialog(\n 'ListingClient.updateListingAutoPricingSection',\n { message: result.message, status: result.status },\n {\n trackErrorData: {\n autoPricingSectionForm,\n },\n }\n );\n }\n },\n (error) => {\n showErrorDialog(\n 'ListingClient.updateListingAutoPricingSection',\n error,\n {\n trackErrorData: autoPricingSectionForm,\n }\n );\n },\n () => {\n onSubmitDone(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n onSubmitDone,\n onSubmitStart,\n reset,\n showErrorDialog,\n ]\n );\n\n const onSubmit = useCallback(() => {\n handleSubmit(onSubmitHandler)();\n }, [handleSubmit, onSubmitHandler]);\n\n const onReset = useCallback(() => {\n reset({ ...(formState.defaultValues ?? {}) });\n }, [formState.defaultValues, reset]);\n\n const input = watch();\n\n const hasChanges = useMemo(() => {\n const defaultValues = formState.defaultValues;\n return (\n input.netProceedsFloor !== defaultValues?.netProceedsFloor ||\n input.netProceedsCeiling !== defaultValues?.netProceedsCeiling ||\n input.currencyCode !== defaultValues?.currencyCode ||\n input.autoPricingEnabled !== defaultValues?.autoPricingEnabled ||\n input.compListingFloor !== defaultValues?.compListingFloor ||\n input.compListingCeiling !== defaultValues?.compListingCeiling ||\n input.compListingMode !== defaultValues?.compListingMode ||\n input.compListingOnlyForSameZoneEnabled !==\n defaultValues?.compListingOnlyForSameZoneEnabled ||\n input.compListingOnlyForSelectedSectionsEnabled !==\n defaultValues?.compListingOnlyForSelectedSectionsEnabled ||\n input.compListingExcludeFanInventory !==\n defaultValues?.compListingExcludeFanInventory ||\n input.compListingExcludeDefects !==\n defaultValues?.compListingExcludeDefects ||\n input.compListingQuantityScoreAdjustmentEnabled !==\n defaultValues?.compListingQuantityScoreAdjustmentEnabled ||\n input.compListingQuantityScoreAdjustmentOverrideJson !==\n defaultValues?.compListingQuantityScoreAdjustmentOverrideJson ||\n input.undercutMode !== defaultValues?.undercutMode ||\n input.undercutAbsoluteAmount !== defaultValues?.undercutAbsoluteAmount ||\n input.undercutRelativeAmount !== defaultValues?.undercutRelativeAmount ||\n input.circuitBreakerMaxDiscountVelocityPercent !==\n defaultValues?.circuitBreakerMaxDiscountVelocityPercent ||\n input.circuitBreakerMaxDiscountVelocityTicksInHours !==\n defaultValues?.circuitBreakerMaxDiscountVelocityTicksInHours ||\n input.circuitBreakerMinCompListingCount !==\n defaultValues?.circuitBreakerMinCompListingCount ||\n input.circuitBreakerRelativeCeiling !==\n defaultValues?.circuitBreakerRelativeCeiling ||\n input.circuitBreakerRelativeFloor !==\n defaultValues?.circuitBreakerRelativeFloor ||\n input.outlierMode !== defaultValues?.outlierMode ||\n input.outlierStandardDeviations !==\n defaultValues?.outlierStandardDeviations ||\n input.outlierKthLowestLimit !== defaultValues?.outlierKthLowestLimit ||\n input.outlierKthLowestLimitRelativeSpacing !==\n defaultValues?.outlierKthLowestLimitRelativeSpacing ||\n input.outlierKthLowestLimitAbsoluteSpacing !==\n defaultValues?.outlierKthLowestLimitAbsoluteSpacing ||\n input.skipAdvancePricing !== defaultValues?.skipAdvancePricing ||\n input.skipAutoPricing !== defaultValues?.skipAutoPricing ||\n input.skipCompListing !== defaultValues?.skipCompListing ||\n input.skipUndercut !== defaultValues?.skipUndercut ||\n !isEqual(\n input.compListingSelectedSectionSettings,\n defaultValues?.compListingSelectedSectionSettings\n ) ||\n !isEqual(\n input.compListingQuantityFilters,\n defaultValues?.compListingQuantityFilters\n )\n );\n }, [input, formState.defaultValues]);\n\n const { netProceedsFloor } = input;\n\n const setPriceFloorText = `${useContent(ContentId.SetPriceFloor)}: ${\n uiCurrency.sym\n }`;\n\n const medianListingPrice = useMemo(() => {\n const ticketPrices: number[] = [];\n for (const listing of compListings ?? []) {\n if ((listing.availableTickets ?? 0) > 0) {\n const prices = Array(listing.availableTickets ?? 0).fill(\n listing.sellerAllInPrice?.amt ?? 0\n );\n ticketPrices.push(...prices);\n }\n }\n return calculatePercentile(ticketPrices, 50);\n }, [compListings]);\n\n const priceComparisonResult = useMemo(() => {\n return CheckPrice(netProceedsFloor, medianListingPrice, 25);\n }, [medianListingPrice, netProceedsFloor]);\n\n const onPriceFloorChange = useCallback(\n (e: ChangeEvent) => {\n const v = parseFloat(e.target.value);\n if (v >= 0 && v < Number.MAX_VALUE) {\n const netProceedsValueNew = getListPriceFromAllinPrice(\n v,\n null,\n sellerFee\n )!;\n setValue('netProceedsFloor', netProceedsValueNew);\n } else {\n setValue('netProceedsFloor', null);\n }\n },\n [setValue, sellerFee]\n );\n\n return (\n
    \n
    \n
    \n \n {setPriceFloorText}\n }\n value={\n getAllInPriceFromListPrice(netProceedsFloor, null, sellerFee) ??\n ''\n }\n onChange={onPriceFloorChange}\n uiCurrency={uiCurrency}\n />\n {priceComparisonResult &&\n !priceComparisonResult.isWithinThreshold && (\n
    \n \n \n \n \n
    \n )}\n
    \n\n \n
    \n
    \n \n {resetText}\n \n \n
    \n
    \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useToggle } from 'react-use';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useInventoryEventDetailContext } from 'src/contexts/InventoryEventDetailContext/InventoryEventDetailContext';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ListingClient,\n ListingDetails,\n ListingDetailsAutoPricingSectionUpdates,\n UiCurrency,\n} from 'src/WebApiController';\n\nimport { PricingSettingAutoPriceBody } from './PricingSettingAutoPriceBody';\n\ntype PricingSettingAutoPriceListingProps = {\n uiCurrency: UiCurrency;\n sellerFee: number | null;\n useVerticalView: boolean;\n};\n\nexport const PricingSettingAutoPriceListing = ({\n uiCurrency,\n sellerFee,\n useVerticalView,\n}: PricingSettingAutoPriceListingProps) => {\n const { watch, reset, handleSubmit, formState } =\n useFormContext();\n const { event, selectedListing } = useInventoryEventDetailContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const { updateActivePosEntityInfo } =\n useActivePosEntityContext();\n\n const [isLoading, setLoading] = useToggle(false);\n\n const onSubmitStart = useCallback(() => {\n setLoading(true);\n }, [setLoading]);\n\n const onSubmitDone = useCallback(\n async (success = true) => {\n if (selectedListing?.id && success) {\n const updatedListing = await new ListingClient(\n activeAccountWebClientConfig\n ).getListingByListingId(selectedListing.id, undefined, undefined);\n\n if (updatedListing) {\n updateActivePosEntityInfo({\n event,\n posEntity: updatedListing,\n posEntityId: updatedListing.id,\n posEntityDisplayId: updatedListing.idOnMkp,\n });\n }\n }\n setLoading(false);\n },\n [\n activeAccountWebClientConfig,\n event,\n selectedListing?.id,\n setLoading,\n updateActivePosEntityInfo,\n ]\n );\n\n const onSubmitHandler = useCallback(\n async (autoPricingSectionForm: ListingDetailsAutoPricingSectionUpdates) => {\n tryInvokeApi(\n async () => {\n onSubmitStart();\n const result = await new ListingClient(\n activeAccountWebClientConfig\n ).updateListingAutoPricingSection(autoPricingSectionForm);\n\n if (isSuccess(result)) {\n // Reset the form to latest changed\n reset(autoPricingSectionForm);\n await onSubmitDone();\n } else {\n showErrorDialog(\n 'ListingClient.updateListingAutoPricingSection',\n { message: result.message, status: result.status },\n {\n trackErrorData: {\n autoPricingSectionForm,\n },\n }\n );\n }\n },\n (error) => {\n showErrorDialog(\n 'ListingClient.updateListingAutoPricingSection',\n error,\n {\n trackErrorData: autoPricingSectionForm,\n }\n );\n },\n () => {\n onSubmitDone(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n onSubmitDone,\n onSubmitStart,\n reset,\n showErrorDialog,\n ]\n );\n\n const onSubmit = useCallback(() => {\n handleSubmit(onSubmitHandler)();\n }, [handleSubmit, onSubmitHandler]);\n\n const onReset = useCallback(() => {\n reset({ ...(formState.defaultValues ?? {}) });\n }, [formState.defaultValues, reset]);\n\n const input = watch();\n\n const hasChanges = useMemo(() => {\n const defaultValues = formState.defaultValues;\n return (\n input.netProceedsFloor !== defaultValues?.netProceedsFloor ||\n input.netProceedsCeiling !== defaultValues?.netProceedsCeiling ||\n input.currencyCode !== defaultValues?.currencyCode ||\n input.autoPricingEnabled !== defaultValues?.autoPricingEnabled ||\n input.compListingFloor !== defaultValues?.compListingFloor ||\n input.compListingCeiling !== defaultValues?.compListingCeiling ||\n input.compListingMode !== defaultValues?.compListingMode ||\n input.compListingOnlyForSameZoneEnabled !==\n defaultValues?.compListingOnlyForSameZoneEnabled ||\n input.compListingOnlyForSelectedSectionsEnabled !==\n defaultValues?.compListingOnlyForSelectedSectionsEnabled ||\n input.compListingExcludeFanInventory !==\n defaultValues?.compListingExcludeFanInventory ||\n input.compListingExcludeDefects !==\n defaultValues?.compListingExcludeDefects ||\n input.compListingQuantityScoreAdjustmentEnabled !==\n defaultValues?.compListingQuantityScoreAdjustmentEnabled ||\n input.compListingQuantityScoreAdjustmentOverrideJson !==\n defaultValues?.compListingQuantityScoreAdjustmentOverrideJson ||\n input.undercutMode !== defaultValues?.undercutMode ||\n input.undercutAbsoluteAmount !== defaultValues?.undercutAbsoluteAmount ||\n input.undercutRelativeAmount !== defaultValues?.undercutRelativeAmount ||\n input.circuitBreakerMaxDiscountVelocityPercent !==\n defaultValues?.circuitBreakerMaxDiscountVelocityPercent ||\n input.circuitBreakerMaxDiscountVelocityTicksInHours !==\n defaultValues?.circuitBreakerMaxDiscountVelocityTicksInHours ||\n input.circuitBreakerMinCompListingCount !==\n defaultValues?.circuitBreakerMinCompListingCount ||\n input.circuitBreakerRelativeCeiling !==\n defaultValues?.circuitBreakerRelativeCeiling ||\n input.circuitBreakerRelativeFloor !==\n defaultValues?.circuitBreakerRelativeFloor ||\n input.outlierMode !== defaultValues?.outlierMode ||\n input.outlierStandardDeviations !==\n defaultValues?.outlierStandardDeviations ||\n input.outlierKthLowestLimit !== defaultValues?.outlierKthLowestLimit ||\n input.outlierKthLowestLimitRelativeSpacing !==\n defaultValues?.outlierKthLowestLimitRelativeSpacing ||\n input.outlierKthLowestLimitAbsoluteSpacing !==\n defaultValues?.outlierKthLowestLimitAbsoluteSpacing ||\n input.skipAdvancePricing !== defaultValues?.skipAdvancePricing ||\n input.skipAutoPricing !== defaultValues?.skipAutoPricing ||\n input.skipCompListing !== defaultValues?.skipCompListing ||\n input.skipUndercut !== defaultValues?.skipUndercut ||\n !isEqual(\n input.compListingSelectedSectionSettings,\n defaultValues?.compListingSelectedSectionSettings\n ) ||\n !isEqual(\n input.compListingQuantityFilters,\n defaultValues?.compListingQuantityFilters\n )\n );\n }, [input, formState.defaultValues]);\n\n const {\n undercutMode,\n undercutRelativeAmount,\n undercutAbsoluteAmount,\n compListingMode,\n outlierMode,\n outlierStandardDeviations,\n outlierKthLowestLimit,\n outlierKthLowestLimitAbsoluteSpacing,\n outlierKthLowestLimitRelativeSpacing,\n } = input;\n\n return (\n \n );\n};\n","import { useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Switch } from 'src/core/ui';\nimport { Divider } from 'src/modals/common/Summary/Summary.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n Listing,\n ListingDetailsAutoPricingSectionUpdates,\n} from 'src/WebApiController';\n\nimport { StatLabel } from '../../../Map/StatLabel';\nimport * as styles from './PricingSetting.css';\n\nexport const PricingSettingHeader = ({ listing }: { listing: Listing }) => {\n const { watch, setValue } =\n useFormContext();\n const { autoPricingEnabled } = watch();\n\n const sanitizedSeatDisplay = useMemo(() => {\n if (listing.seating?.seatFr === listing.seating?.seatTo) {\n return `${listing.seating?.seatFr}`;\n }\n return `${listing.seating?.seatFr} - ${listing.seating?.seatTo}`;\n }, [listing.seating?.seatFr, listing.seating?.seatTo]);\n\n return (\n
    \n }\n />\n \n }\n />\n \n }\n />\n \n }\n />\n \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n const checked = isChecked;\n setValue('autoPricingEnabled', checked);\n }}\n />\n
    \n );\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useEventHubContext } from 'src/contexts/EventHubContext';\nimport { useInventoryEventDetailContext } from 'src/contexts/InventoryEventDetailContext/InventoryEventDetailContext';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport {\n getAllInPriceFromListPrice,\n getListPriceFromAllinPrice,\n} from 'src/utils/inventoryUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingDetailsPricingSectionUpdates,\n UiCurrency,\n} from 'src/WebApiController';\n\nimport * as styles from './PricingSetting.css';\n\ntype PricingSettingManualPriceProps = {\n uiCurrency: UiCurrency;\n sellerFee: number | null;\n};\n\n/**\n * Requires ListingLoadBySection to work\n */\nexport const PricingSettingManualPrice: React.FC<\n PricingSettingManualPriceProps\n> = ({ uiCurrency, sellerFee }) => {\n const setPriceText = useContent(ContentId.Permission_SetPrice);\n const resetText = useContent(ContentId.Reset);\n\n const { activeAccountWebClientConfig } = useAppContext();\n const { selectedListing } = useInventoryEventDetailContext();\n const { updateItemInEvent } = useCatalogDataContext();\n const { onUpdateListing } = useEventHubContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const [listPrice, setListPrice] = useState(\n selectedListing?.listPrice ?? null\n );\n\n // This is to ensure that we use the correct list price when switching selected listing\n useEffect(() => {\n if (selectedListing?.listPrice != null) {\n setListPrice(selectedListing?.listPrice);\n }\n }, [selectedListing?.listPrice]);\n\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const submitPriceChange = useCallback(() => {\n if (!selectedListing) return;\n\n tryInvokeApi(\n async () => {\n setIsSubmitting(true);\n const client = new ListingClient(activeAccountWebClientConfig);\n\n const input: ListingDetailsPricingSectionUpdates = {\n id: selectedListing.id,\n rowVersion: null,\n listPrice,\n allInPrice: null, // will be inferred from list price\n buyerUserId: null,\n marketplacePriceUpdates: [],\n autoPricingEnabled: false, // updating manual price will disable auto price\n netProceedsFloor: selectedListing.procsFloor,\n pricerSellerUserId: selectedListing.pricerId,\n netProceedsCeiling: selectedListing.procsCeil,\n currencyCode: selectedListing.currency,\n };\n const result = await client.updateListingPricingSection(input);\n if (isSuccess(result)) {\n const updated = await client.getListingByListingId(\n selectedListing.id,\n selectedListing as ListingDetails,\n [ListingDetailDataField.Pricing]\n );\n if (updated) {\n updateItemInEvent(updated, ActionOutboxEntityType.Listing);\n onUpdateListing(updated.id);\n setIsSubmitting(false);\n }\n }\n },\n (error) => {\n showErrorDialog('ListingClient.updateListing(prices)', error, {\n trackErrorData: { listingId: selectedListing.id, listPrice },\n });\n }\n );\n }, [\n selectedListing,\n activeAccountWebClientConfig,\n listPrice,\n updateItemInEvent,\n onUpdateListing,\n showErrorDialog,\n ]);\n\n return (\n
    \n
    \n {`${setPriceText}: ${uiCurrency.sym}`}\n }\n value={getAllInPriceFromListPrice(listPrice, null, sellerFee) ?? ''}\n onChange={(e) => {\n const price = parseFloat(e.target.value);\n if (!isNaN(price)) {\n const listPriceNew = getListPriceFromAllinPrice(\n price,\n null,\n sellerFee\n )!;\n setListPrice(listPriceNew);\n }\n }}\n />\n
    \n
    \n setListPrice(selectedListing?.listPrice ?? null)}\n shape=\"none\"\n >\n {resetText}\n \n \n
    \n
    \n );\n};\n","import clsx from 'clsx';\nimport { useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n Feature,\n Listing,\n ListingDetailsAutoPricingSectionUpdates,\n Marketplace,\n} from 'src/WebApiController';\n\nimport * as styles from './ListingDetailPanel.css';\nimport { PricingSettingAutoPrice } from './PricingSetting/PricingSettingAutoPrice';\nimport { PricingSettingAutoPriceListing } from './PricingSetting/PricingSettingAutoPriceListing';\nimport { PricingSettingHeader } from './PricingSetting/PricingSettingHeader';\nimport { PricingSettingManualPrice } from './PricingSetting/PricingSettingManualPrice';\n\nexport const ListingDetailListingHeader = ({\n selectedListing,\n useVerticalView,\n shouldDetailsSideBySide,\n}: {\n selectedListing: Listing;\n useVerticalView: boolean;\n shouldDetailsSideBySide: boolean;\n}) => {\n const hasGroupSelectionFeature = useUserHasFeature(\n Feature.OnePagerGroupSelectionFunctionality\n );\n const { loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n const stubHubMkpSettings =\n loginContext?.user?.activeAccount?.marketplaceSettings?.find(\n (m) => m.mkp === Marketplace.StubHub\n );\n\n const uiCurrency = useMemo(\n () =>\n getUiCurrency(\n selectedListing?.currency ??\n loginContext?.user?.activeAccount?.currencyCode\n ),\n [\n getUiCurrency,\n selectedListing?.currency,\n loginContext?.user?.activeAccount?.currencyCode,\n ]\n );\n\n const { watch } = useFormContext();\n const { autoPricingEnabled } = watch();\n\n return (\n \n \n
    \n \n
    \n\n
    \n {autoPricingEnabled ? (\n hasGroupSelectionFeature ? (\n \n ) : (\n \n )\n ) : (\n \n )}\n
    \n
    \n
    \n );\n};\n","import clsx from 'clsx';\nimport { useMemo } from 'react';\nimport { useMeasure } from 'react-use';\nimport { ConnectedComparableListings } from 'src/components/Listings/ConnectedComparableListings';\nimport { useInventoryEventDetailContext } from 'src/contexts/InventoryEventDetailContext/InventoryEventDetailContext';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { flattenListingGroup } from 'src/modals/GroupListings/components/groupingUtils';\nimport { getListPriceFromAllinPrice } from 'src/utils/inventoryUtils';\nimport { Feature, Listing } from 'src/WebApiController';\n\nimport { ListingDetailListingGroupHeader } from './ListingDetailListingGroupHeader';\nimport { ListingDetailListingHeader } from './ListingDetailListingHeader';\nimport * as styles from './ListingDetailPanel.css';\n\ntype ListingDetailPanelProps = {\n useVerticalView: boolean;\n};\n\nexport const ListingDetailPanel: React.FC = ({\n useVerticalView,\n}) => {\n const {\n selectedListing,\n selectedGroup,\n compListings,\n priceCalcQuery,\n isLoading,\n } = useInventoryEventDetailContext();\n\n const hasGroupSelectionFeature = useUserHasFeature(\n Feature.OnePagerGroupSelectionFunctionality\n );\n\n const flattenedListingGroup: Listing[] | undefined = useMemo(() => {\n if (!selectedGroup) {\n return;\n }\n\n return flattenListingGroup(selectedGroup).map((l) => l as Listing);\n }, [selectedGroup]);\n\n const listingWithUpdatedPrice = useMemo(() => {\n if (!selectedListing) return;\n\n const listPrice = getListPriceFromAllinPrice(\n priceCalcQuery?.data?.websitePrice?.amt,\n selectedListing\n );\n return {\n ...selectedListing,\n // This is to make sure we use the auto-preview price instead of the listing's price when showing comparables\n // And we have to override listPrice because allIn is calculated from listPrice (instead of being read from the listing)\n listPrice: listPrice ?? selectedListing.listPrice,\n };\n }, [priceCalcQuery?.data?.websitePrice?.amt, selectedListing]);\n\n const [detailsRef, { height }] = useMeasure();\n const shouldDetailsSideBySide = useMemo(() => height < 750, [height]);\n\n return (\n \n {selectedListing ? (\n \n ) : null}\n {selectedGroup && hasGroupSelectionFeature ? (\n \n ) : null}\n
    \n \n
    \n
    \n );\n};\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { Button, Stack, TextArea } from 'src/core/ui';\nimport { useSellerEventNote } from 'src/hooks/api/useSellerEventNote';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { stringToUtcDate } from 'src/utils/dateTimeUtils';\nimport { Permission } from 'src/WebApiController';\n\nimport * as styles from './NoteSectionV2.css';\n\nexport const NoteSectionV2 = ({\n eventId,\n disabled,\n}: {\n eventId: number | null;\n disabled?: boolean;\n}) => {\n const hasEventsEditPermission = useUserHasAnyOfPermissions(\n Permission.Events_Edit\n );\n\n const [newNote, setNewNote] = useState('');\n\n const { notes, addNote, isLoading } = useSellerEventNote(eventId);\n\n const handleKeyPress = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n if (e.shiftKey) {\n e.preventDefault();\n setNewNote((prevNote) => prevNote + '\\n');\n } else {\n e.preventDefault();\n addNote(newNote);\n setNewNote('');\n }\n }\n },\n [addNote, newNote]\n );\n\n const messagesStartRef = useRef(null);\n const scrollToBottom = () => {\n if (messagesStartRef.current) {\n messagesStartRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n };\n\n useEffect(() => {\n scrollToBottom();\n }, [notes]);\n\n return (\n \n \n \n {\n setNewNote(e.target.value);\n }}\n onKeyDown={handleKeyPress}\n placeholder={useContent(ContentId.TypeYourNoteHere)}\n >\n \n {\n addNote(newNote);\n setNewNote('');\n }}\n disabled={\n !hasEventsEditPermission ||\n disabled ||\n newNote.trim() === '' ||\n isLoading\n }\n >\n \n \n \n
    \n {notes?.map((note) => {\n const localDateString = stringToUtcDate(\n note.createDate\n ).toLocaleString();\n\n return (\n \n
    \n {note.sellerDisplayName} • {localDateString}\n
    \n
    {note.content}
    \n
    \n );\n })}\n
    \n
    \n \n );\n};\n","import { useInventoryEventDetailContext } from 'src/contexts/InventoryEventDetailContext/InventoryEventDetailContext';\n\nimport { NoteSectionV2 } from '../../../Sections/NoteSectionV2';\n\nexport const NotesDetailPanel = () => {\n const { event } = useInventoryEventDetailContext();\n return !event ? null : ;\n};\n","import {\n EventAccordionItemBodyComponentType,\n MinRowsForUsingVirtuoso,\n} from 'src/components/Accordions';\nimport { useCollapsableViewContext } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { PurchaseOrderTable } from 'src/tables/PurchaseTable';\nimport {\n PurchaseOrderTicketGroup,\n PurchaseViewMode,\n} from 'src/WebApiController';\n\ntype EventTicketGroupBodyProps =\n EventAccordionItemBodyComponentType;\n\nexport const EventTicketGroupBody = (props: EventTicketGroupBodyProps) => {\n const Body = PurchaseOrderTableEventAccordionWrapper;\n\n return ;\n};\n\nconst PurchaseOrderTableEventAccordionWrapper = (\n props: EventTicketGroupBodyProps\n) => {\n const {\n entities: ticketGroups,\n entityCount: ticketGrpsCnt,\n getDataFail,\n ...rest\n } = props;\n\n const hasVirtuosoMinRows = ticketGrpsCnt > MinRowsForUsingVirtuoso;\n\n const { isEnabled } = useCollapsableViewContext();\n\n return (\n \n );\n};\n","import { ReactNode } from 'react';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { Permission } from 'src/WebApiController';\n\ninterface PurchaseMultiSelectPermissionsProps {\n children: ReactNode;\n}\n\nexport const PurchasesBulkActionsPermissions = ({\n children,\n}: PurchaseMultiSelectPermissionsProps) => {\n const hasPurchaseUpdatePermission = useUserHasAnyOfPermissions(\n Permission.Purchases_Edit,\n Permission.Purchases_EditOwned\n );\n\n if (!hasPurchaseUpdatePermission) {\n return null;\n }\n\n return <>{children};\n};\n","import { useFilterQueryState } from 'src/components/MainFilterBar/useFilterQueryState';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport {\n ActionOutboxEntityType,\n PurchaseOrderQuery,\n} from 'src/WebApiController';\n\nexport const usePurchaseTileBulkActionsState = (\n groupId?: string,\n isEventView?: boolean\n) => {\n const { getSelection, isAllSelected } = useMultiSelectionContext();\n\n const groupSelection = getSelection(groupId);\n\n const { filterQueryWithEventIds } = useFilterQueryState(\n ActionOutboxEntityType.Purchase,\n groupId ? [groupId] : undefined,\n isEventView\n );\n\n return {\n allPurchasesSelected: isAllSelected,\n groupSelection,\n filterQueryWithEventIds,\n };\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Stack } from 'src/core/ui';\nimport {\n CancelPurchaseDialogModeRadioGroup,\n PurchaseCancellationType,\n} from 'src/dialogs/CancelPurchaseDialog';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport type BulkCancelPurchaseDialogProps = ComponentProps & {\n updateKey: string;\n onOkay: (\n cancellationType: PurchaseCancellationType | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport function BulkCancelPurchaseDialog({\n updateKey,\n onOkay,\n onCancel,\n ...rest\n}: BulkCancelPurchaseDialogProps) {\n const [cancellationType, setCancellationType] =\n useState('cancel');\n\n const [isLoading, setIsLoading] = useState(false);\n\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n refreshCatalog,\n } = useCatalogDataContext();\n const { refreshMetrics } = useCatalogMetricsContext();\n const { refreshData } = usePurchaseDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n await refreshData(true);\n\n // Metrics/events may have changed with TGs being cancelled, so refresh the whole catalog\n refreshMetrics();\n await refreshCatalog();\n await refreshExpandedListItems();\n\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshCatalog,\n refreshData,\n refreshExpandedListItems,\n refreshMetrics,\n setActivePosEntity,\n setMainDialogOpened,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n ActionOutboxEntityType.Purchase,\n BulkActionType.CancelPurchase,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const [isSecondScreen, setIsSecondScreen] = useState(false);\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(null, false, onPreviewReceived);\n } else {\n onOkay(\n cancellationType,\n hasBackgroundBulkEditFeature,\n undefined,\n preview\n );\n }\n setIsLoading(false);\n },\n [onOkay, cancellationType, preview, hasBackgroundBulkEditFeature]\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const submittButtonRef = useRef(null);\n\n return (\n <>\n }\n />\n }\n onOpened={() => {\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter') {\n submittButtonRef.current.click();\n }\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n {\n if (!isSecondScreen) {\n setIsSecondScreen(true);\n return false; // don't proceed to preview\n }\n\n return true; // proceed to preview\n }}\n />\n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n {!isLoading && !progress?.failureCount && (\n <>\n {isSecondScreen ? (\n \n ) : (\n {\n if (value === 'cancel' || value === 'void') {\n setCancellationType(value);\n }\n }}\n value={cancellationType}\n />\n )}\n \n )}\n \n \n \n \n );\n}\n","import { useUpdatePurchasesPermissions } from 'src/components/Purchases/BulkActions/useUpdatePurchasesPermissions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature } from 'src/WebApiController';\n\nexport const LaunchBulkCancelPurchase = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const { hasUpdatePurchasesPermission } = useUpdatePurchasesPermissions();\n const hasBulkCancelVoidPurchaseFeature = useUserHasFeature(\n Feature.BulkCancelVoidPurchase\n );\n\n if (!hasUpdatePurchasesPermission || !hasBulkCancelVoidPurchaseFeature) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { BulkCancelPurchaseDialog } from 'src/dialogs/BulkEdits/BulkCancelPurchaseDialog';\nimport { PurchaseCancellationType } from 'src/dialogs/CancelPurchaseDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditPreviewWithDetails,\n BulkEditPurchaseClient,\n PurchaseOrderQuery,\n} from 'src/WebApiController';\n\nimport { PURCHASE_BULK_CANCEL_UPDATE_KEY } from '../../PurchaseActionDropdown.constants';\nimport { LaunchBulkCancelPurchase } from './LaunchBulkCancelPurchase';\n\nexport const useBulkCancelPurchase = (\n filterQuery: PurchaseOrderQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n groupId?: string\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const updateKey = groupId\n ? `cancelPurchases-event-${groupId}`\n : PURCHASE_BULK_CANCEL_UPDATE_KEY;\n\n const { showErrorDialog } = useErrorBoundaryContext();\n const { refreshData } = usePurchaseDataContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n refreshCatalog,\n } = useCatalogDataContext();\n const { refreshMetrics } = useCatalogMetricsContext();\n\n const {\n openDialog: openBulkCancelDialog,\n closeDialog: closeBulkCancelDialog,\n } = useDialog(DialogId.BulkCancelPurchase, BulkCancelPurchaseDialog);\n\n const onSubmit = useCallback(\n async (\n cancellationType: PurchaseCancellationType | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const client = new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n );\n\n const preview =\n await client.bulkDeletePurchaseOrderPreview(filterQuery);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateTagsPreview', error, {\n trackErrorData: { filterQuery },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (cancellationType) {\n await tryInvokeApi(\n async () => {\n const succeeded =\n cancellationType === 'cancel'\n ? await new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n ).bulkCancelPurchaseOrder(\n {\n item1: preview!.preview, \n item2: null\n },\n updateKey,\n supportBackgroundProcess,\n null\n )\n : await new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n ).bulkVoidPurchaseOrder(\n preview!.preview,\n updateKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n await refreshData(true);\n // Metrics/events may have changed with TGs being cancelled, so refresh the whole catalog\n refreshMetrics();\n await refreshCatalog();\n await refreshExpandedListItems();\n }\n\n closeBulkCancelDialog();\n }\n },\n (error) => {\n showErrorDialog('onSubmitCancelPurchase', error, {\n trackErrorData: { preview, cancellationType },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeBulkCancelDialog,\n filterQuery,\n refreshCatalog,\n refreshData,\n refreshExpandedListItems,\n refreshMetrics,\n setIsLoading,\n showErrorDialog,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n openBulkCancelDialog({\n updateKey,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkCancelDialog,\n });\n }}\n disabled={isLoading}\n />\n ),\n };\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useMemo, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n PurchaseOrderDetails,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport type BulkDeleteTicketGroupDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n onOkay: (\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport function BulkDeleteTicketGroupDialog({\n updateKey,\n onOkay,\n onCancel,\n ...rest\n}: BulkDeleteTicketGroupDialogProps) {\n const { setActivePosEntity } =\n useActivePosEntityContext();\n const { refreshData } = usePurchaseDataContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n refreshCatalog,\n } = useCatalogDataContext();\n const { refreshMetrics } = useCatalogMetricsContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n await refreshData(true);\n\n // Metrics/events may have changed with TGs being cancelled, so refresh the whole catalog\n refreshMetrics();\n await refreshCatalog();\n await refreshExpandedListItems();\n\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshCatalog,\n refreshData,\n refreshExpandedListItems,\n refreshMetrics,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n ActionOutboxEntityType.TicketGroup,\n BulkActionType.DeleteTicketGroup,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature = useMemo(\n () => bulkEditHub?.state === HubConnectionState.Connected,\n [bulkEditHub?.state]\n );\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n onOkay(false, onPreviewReceived);\n } else {\n onOkay(hasBackgroundBulkEditFeature, undefined, preview);\n }\n setIsLoading(false);\n },\n [onOkay, preview, hasBackgroundBulkEditFeature]\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n const submittButtonRef = useRef(null);\n\n return (\n <>\n }\n />\n }\n onOpened={() => {\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter') {\n submittButtonRef.current.click();\n }\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n \n \n );\n}\n","import { useUpdatePurchasesPermissions } from 'src/components/Purchases/BulkActions/useUpdatePurchasesPermissions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature } from 'src/WebApiController';\n\nexport const LaunchBulkDeleteTicketGroup = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const { hasUpdatePurchasesPermission } = useUpdatePurchasesPermissions();\n const hasBulkDeleteTicketGroupFeature = useUserHasFeature(\n Feature.BulkDeleteTicketGroup\n );\n\n if (!hasUpdatePurchasesPermission || !hasBulkDeleteTicketGroupFeature) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { BulkDeleteTicketGroupDialog } from 'src/dialogs/BulkEdits/BulkDeleteTicketGroupDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditPreviewWithDetails,\n BulkEditTicketGroupClient,\n PurchaseOrderQuery,\n} from 'src/WebApiController';\n\nimport { TICKET_GROUP_BULK_DELETE_UPDATE_KEY } from '../../PurchaseActionDropdown.constants';\nimport { LaunchBulkDeleteTicketGroup } from './LaunchBulkDeleteTicketGroup';\n\nexport const useBulkDeleteTicketGroup = (\n filterQuery: PurchaseOrderQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n groupId?: string\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const updateKey = groupId\n ? `deleteTicketGroups-event-${groupId}`\n : TICKET_GROUP_BULK_DELETE_UPDATE_KEY;\n\n const { showErrorDialog } = useErrorBoundaryContext();\n const { refreshData } = usePurchaseDataContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n refreshCatalog,\n } = useCatalogDataContext();\n const { refreshMetrics } = useCatalogMetricsContext();\n\n const {\n openDialog: openBulkDeleteTicketGroupDialog,\n closeDialog: closeBulkDeleteTicketGroupDialog,\n } = useDialog(DialogId.BulkDeleteTicketGroup, BulkDeleteTicketGroupDialog);\n\n const onSubmit = useCallback(\n async (\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditTicketGroupClient(\n activeAccountWebClientConfig\n ).bulkDeleteTicketGroupPreview(filterQuery);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkDeleteTicketGroupPreview', error, {\n trackErrorData: { filterQuery },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditTicketGroupClient(\n activeAccountWebClientConfig\n ).bulkDeleteTicketGroup(\n preview!.preview,\n updateKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n await refreshData(true);\n // Metrics/events may have changed with TGs being cancelled, so refresh the whole catalog\n refreshMetrics();\n await refreshCatalog();\n await refreshExpandedListItems();\n }\n\n closeBulkDeleteTicketGroupDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkDeleteTicketGroup', error, {\n trackErrorData: { preview },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeBulkDeleteTicketGroupDialog,\n filterQuery,\n refreshCatalog,\n refreshData,\n refreshExpandedListItems,\n refreshMetrics,\n setIsLoading,\n showErrorDialog,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n openBulkDeleteTicketGroupDialog({\n updateKey,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkDeleteTicketGroupDialog,\n });\n }}\n disabled={isLoading}\n />\n ),\n };\n};\n","import { useCallback } from 'react';\nimport { LaunchBulkEditCommission } from 'src/components/common/BulkActions/BulkEditCommissionAction';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext/PurchaseDataContext';\nimport { BulkEditCommissionDialog } from 'src/dialogs/BulkEdits/BulkEditCommissionDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditPreviewWithDetails,\n BulkEditPurchaseClient,\n Commission,\n PurchaseOrderQuery,\n} from 'src/WebApiController';\n\nimport { PURCHASE_BULK_UPDATE_COMMISSION_UPDATE_KEY } from '../../PurchaseActionDropdown.constants';\n\nexport const useBulkEditCommissionAction = (\n filterQuery: PurchaseOrderQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n groupId?: string\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const updateKey = groupId\n ? `purchaseCommission-event-${groupId}}`\n : PURCHASE_BULK_UPDATE_COMMISSION_UPDATE_KEY;\n const { refreshData } = usePurchaseDataContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkEditCommissionDialog,\n closeDialog: closeBulkEditCommissionDialog,\n } = useDialog(DialogId.BulkEditCommission, BulkEditCommissionDialog);\n\n const onSubmit = useCallback(\n async (\n commissions: Commission[] | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n ).bulkUpdatePurchaseCommissionsPreview(filterQuery);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdatePurchaseCommissionsPreview', error, {\n trackErrorData: { filterQuery },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n ).bulkUpdatePurchaseCommissions(\n {\n item1: preview!.preview,\n item2: commissions ?? [],\n },\n updateKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on details modal\n // we force re-loading the entity and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshData(true);\n await refreshExpandedListItems();\n }\n\n closeBulkEditCommissionDialog();\n }\n },\n (error) => {\n showErrorDialog('onSubmitEditCommissions', error, {\n trackErrorData: { commissions, preview },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n setIsLoading,\n activeAccountWebClientConfig,\n filterQuery,\n showErrorDialog,\n updateKey,\n closeBulkEditCommissionDialog,\n setActivePosEntity,\n refreshData,\n refreshExpandedListItems,\n ]\n );\n\n const onLaunchAction = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n openBulkEditCommissionDialog({\n updateKey,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkEditCommissionDialog,\n });\n },\n [\n closeBulkEditCommissionDialog,\n onSubmit,\n openBulkEditCommissionDialog,\n setIsLoading,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n \n ),\n };\n};\n","import { useUpdatePurchasesPermissions } from 'src/components/Purchases/BulkActions/useUpdatePurchasesPermissions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const LaunchBulkUpdateDeliveryType = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const { hasPurchaseUpdateDeliveryTypePermission } =\n useUpdatePurchasesPermissions();\n\n if (!hasPurchaseUpdateDeliveryTypePermission) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { InfoMessage } from 'src/core/POS/MessageWithIcon/InfoMessage';\nimport { BulkEditDeliveryTypeDialog } from 'src/dialogs/BulkEdits/BulkEditDeliveryTypeDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditPreview,\n BulkEditPreviewWithDetails,\n BulkEditPurchaseClient,\n BulkEditTicketGroupClient,\n DeliveryType,\n PurchaseOrderQuery,\n TicketTypeOverride,\n} from 'src/WebApiController';\n\nimport { PURCHASE_BULK_UPDATE_DELIVERY_TYPE_UPDATE_KEY } from '../../PurchaseActionDropdown.constants';\nimport { LaunchBulkUpdateDeliveryType } from './LaunchBulkUpdateDeliveryType';\n\nexport const useBulkUpdateDeliveryType = (\n filterQuery: PurchaseOrderQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n groupId?: string,\n isEventView?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const updateKey = groupId\n ? `purchase-delivery-type-event-${groupId}`\n : PURCHASE_BULK_UPDATE_DELIVERY_TYPE_UPDATE_KEY;\n\n const { showErrorDialog } = useErrorBoundaryContext();\n const { refreshData } = usePurchaseDataContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const {\n openDialog: openBulkEditDeliveryTypeDialog,\n closeDialog: closeBulkEditDeliveryTypeDialog,\n } = useDialog(DialogId.BulkEditDeliveryType, BulkEditDeliveryTypeDialog);\n\n const updatePurchaseOrders = !isEventView;\n\n const onSubmit = useCallback(\n async (\n deliveryType: DeliveryType | null,\n ticketTypeOverride: TicketTypeOverride | null,\n updateSalesOfListings: boolean,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails,\n retryableEntities?: BulkEditPreview\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const bulkEditClient = updatePurchaseOrders\n ? new BulkEditPurchaseClient(activeAccountWebClientConfig)\n : new BulkEditTicketGroupClient(activeAccountWebClientConfig);\n\n // Resolve the query considering the retryable entities\n const query: PurchaseOrderQuery = {\n ...filterQuery,\n eventOrMappingIds: retryableEntities\n ? []\n : filterQuery.eventOrMappingIds,\n entityIds:\n updatePurchaseOrders && retryableEntities\n ? retryableEntities.bulkEditCountPreview[\n ActionOutboxEntityType.Purchase\n ]?.idsAffected ?? []\n : filterQuery.entityIds,\n ticketGroupIds:\n !updatePurchaseOrders && retryableEntities\n ? retryableEntities.bulkEditCountPreview[\n ActionOutboxEntityType.TicketGroup\n ]?.idsAffected ?? []\n : filterQuery.ticketGroupIds,\n };\n\n const preview = await bulkEditClient.bulkUpdateDeliveryTypePreview(\n query,\n updateSalesOfListings\n );\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateDeliveryTypePreview', error, {\n trackErrorData: { filterQuery, retryableEntities },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (deliveryType && ticketTypeOverride) {\n await tryInvokeApi(\n async () => {\n const bulkEditClient = updatePurchaseOrders\n ? new BulkEditPurchaseClient(activeAccountWebClientConfig)\n : new BulkEditTicketGroupClient(activeAccountWebClientConfig);\n\n const succeeded = await bulkEditClient.bulkUpdateDeliveryType(\n {\n item1: preview!.preview,\n item2: deliveryType,\n item3: ticketTypeOverride.overrides[0].ticketTypePriorities,\n },\n updateSalesOfListings,\n updateKey,\n supportBackgroundProcess\n );\n if (!supportBackgroundProcess) {\n if (succeeded) {\n await refreshData(true);\n await refreshExpandedListItems();\n }\n\n closeBulkEditDeliveryTypeDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkUpdateDeliveryType', error, {\n trackErrorData: {\n preview,\n deliveryType,\n ticketTypeOverride,\n updateSalesOfListings,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeBulkEditDeliveryTypeDialog,\n filterQuery,\n refreshData,\n refreshExpandedListItems,\n setIsLoading,\n showErrorDialog,\n updateKey,\n updatePurchaseOrders,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n openBulkEditDeliveryTypeDialog({\n updateKey,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n entityType: ActionOutboxEntityType.TicketGroup, // delivery type only apply to TGs\n infoMessage: (\n \n }\n />\n ),\n onCancel: closeBulkEditDeliveryTypeDialog,\n });\n }}\n disabled={isLoading}\n />\n ),\n };\n};\n","import { useCallback } from 'react';\nimport { LaunchBulkUpdateInternalNotes } from 'src/components/common/BulkActions/BulkUpdateInternalNotesAction';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { BulkUpdateInternalNotesDialog } from 'src/dialogs/BulkEdits/BulkUpdateInternalNotesDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditPreviewWithDetails,\n BulkEditPurchaseClient,\n PurchaseOrderQuery,\n} from 'src/WebApiController';\n\nimport { PURCHASE_BULK_UPDATE_INTERNAL_NOTES_UPDATE_KEY } from '../../PurchaseActionDropdown.constants';\n\nexport const useBulkUpdateInternalNotesAction = (\n filterQueryWithEventIds: PurchaseOrderQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n groupId?: string\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const updateKey = groupId\n ? `purchase-internal-notes-event-${groupId}`\n : PURCHASE_BULK_UPDATE_INTERNAL_NOTES_UPDATE_KEY;\n const { refreshData } = usePurchaseDataContext();\n const {\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkUpdateInternalNotesDialog,\n closeDialog: closeBulkUpdateInternalNotesDialog,\n } = useDialog(\n DialogId.BulkUpdateInternalNotes,\n BulkUpdateInternalNotesDialog\n );\n\n const onSubmit = useCallback(\n async (\n isUpdate: boolean | null,\n searchString: string | null,\n replaceString: string | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n ).bulkUpdateInternalNotesPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateInternalNotesPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (\n isUpdate != null &&\n searchString != null &&\n replaceString != null\n ) {\n await tryInvokeApi(\n async () => {\n const purchaseClient = new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n );\n\n const succeeded = await purchaseClient.bulkUpdateInternalNotes(\n preview!.preview,\n updateKey,\n isUpdate,\n searchString,\n replaceString,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on listingDetails\n // we force re-loading the listing and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshData(true);\n await refreshExpandedListItems();\n }\n\n closeBulkUpdateInternalNotesDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkUpdateInternalNotes', error, {\n trackErrorData: {\n isUpdate,\n searchString,\n replaceString,\n preview,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n setIsLoading,\n activeAccountWebClientConfig,\n filterQueryWithEventIds,\n showErrorDialog,\n updateKey,\n closeBulkUpdateInternalNotesDialog,\n setActivePosEntity,\n refreshData,\n refreshExpandedListItems,\n ]\n );\n\n const onChangeClick = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (groupId) {\n setListItemExpansion(true, [groupId]);\n }\n openBulkUpdateInternalNotesDialog({\n updateKey,\n onOkay: onSubmit,\n onCancel: closeBulkUpdateInternalNotesDialog,\n entityType: ActionOutboxEntityType.Purchase,\n });\n },\n [\n closeBulkUpdateInternalNotesDialog,\n groupId,\n onSubmit,\n openBulkUpdateInternalNotesDialog,\n setListItemExpansion,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n \n ),\n };\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature } from 'src/WebApiController';\n\nexport const LaunchBulkUpdatePurchaseCurrencyCode = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const hasBulkUpdatePurchaseCurrencyFeature = useUserHasFeature(\n Feature.BulkUpdatePurchaseCurrency\n );\n\n if (!hasBulkUpdatePurchaseCurrencyFeature) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n \n \n );\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport React, { ComponentProps, useCallback, useRef, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { CurrencyFilterSelector } from 'src/components/Selectors/CurrencyFilterSelector';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { InfoMessage } from 'src/core/POS/MessageWithIcon/InfoMessage';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { FieldWrapper } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PurchaseOrderDetailsInput } from 'src/utils/purchaseUtils';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n PurchaseOrderDetails,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport type BulkUpdatePurchaseCurrencyCodeDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n onOkay: (\n supportBackgroundProcess: boolean,\n onPreviewReceived:\n | ((preview: BulkEditPreviewWithDetails) => void)\n | undefined,\n preview: BulkEditPreviewWithDetails | undefined,\n currencyCode: string\n ) => void;\n onCancel: () => void;\n};\n\nexport const BulkUpdatePurchaseCurrencyCodeDialog = ({\n purchases,\n ...rest\n}: BulkUpdatePurchaseCurrencyCodeDialogProps) => {\n const methods = useForm();\n\n return (\n \n \n \n );\n};\n\nfunction BulkUpdatePurchaseCurrencyCodeDialogContent({\n updateKey,\n onOkay,\n onCancel,\n watch,\n reset,\n setValue,\n formState,\n ...rest\n}: BulkUpdatePurchaseCurrencyCodeDialogProps &\n Omit<\n ComponentProps>,\n 'children'\n >) {\n const { setActivePosEntity } =\n useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { refreshData } = usePurchaseDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const [currencyCode, setCurrencyCode] = useState();\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n if (refreshData) {\n await refreshData(true);\n }\n if (refreshExpandedListItems) {\n await refreshExpandedListItems();\n }\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshData,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n ActionOutboxEntityType.Purchase,\n BulkActionType.UpdatePurchaseCurrency,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const onSubmitHandler = useCallback(\n async (\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void\n ) => {\n if (!currencyCode) {\n return;\n }\n if (onPreviewReceived) {\n setIsLoading(true);\n onOkay(false, onPreviewReceived, undefined, currencyCode);\n setIsLoading(false);\n } else {\n onOkay(hasBackgroundBulkEditFeature, undefined, preview, currencyCode);\n }\n },\n [onOkay, currencyCode, hasBackgroundBulkEditFeature, preview]\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const submitButtonRef = useRef(null);\n\n return (\n }\n />\n }\n onOpened={() => {\n reset();\n initJob();\n }}\n onKeyUp={(e) => {\n if (submitButtonRef.current && e.key === 'Enter') {\n submitButtonRef.current.click();\n }\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n \n \n \n }>\n {\n if (newCurrencyCode && newCurrencyCode !== currencyCode) {\n setCurrencyCode(newCurrencyCode);\n }\n }}\n />\n \n \n \n }\n />\n \n \n \n );\n}\n","import { useCallback } from 'react';\nimport { LaunchBulkUpdatePurchaseCurrencyCode } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkUpdatePurchaseCurrencyCodeAction/LaunchBulkUpdatePurchaseCurrencyCode';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { InfoMessage } from 'src/core/POS/MessageWithIcon/InfoMessage';\nimport { BulkUpdatePurchaseCurrencyCodeDialog } from 'src/dialogs/BulkEdits/BulkUpdatePurchaseCurrencyCodeDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditPreviewWithDetails,\n BulkEditPurchaseClient,\n PurchaseOrderQuery,\n} from 'src/WebApiController';\n\nimport { PURCHASE_BULK_UPDATE_PURCHASE_CURRENCY_CODE_KEY } from '../../PurchaseActionDropdown.constants';\n\nexport const useBulkUpdatePurchaseCurrencyCode = (\n filterQuery: PurchaseOrderQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n groupId?: string\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const updateKey = `${PURCHASE_BULK_UPDATE_PURCHASE_CURRENCY_CODE_KEY}${\n groupId ? `-${groupId}` : ''\n }`;\n\n const { showErrorDialog } = useErrorBoundaryContext();\n const { refreshData } = usePurchaseDataContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const {\n openDialog: openBulkUpdatePurchaseCurrencyCode,\n closeDialog: closeBulkMarkPurchaseAsPaidDialog,\n } = useDialog(\n DialogId.BulkUpdatePurchaseCurrencyCode,\n BulkUpdatePurchaseCurrencyCodeDialog\n );\n\n const onSubmit = useCallback(\n async (\n supportBackgroundProcess: boolean,\n onPreviewReceived:\n | ((preview: BulkEditPreviewWithDetails) => void)\n | undefined,\n preview: BulkEditPreviewWithDetails | undefined,\n currencyCode: string\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const bulkEditClient = new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n );\n\n const preview =\n await bulkEditClient.bulkUpdateCurrencyCodePreview(filterQuery);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateCurrencyCodePreview', error, {\n trackErrorData: { filterQuery },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else {\n await tryInvokeApi(\n async () => {\n const bulkEditClient = new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n );\n\n const succeeded = await bulkEditClient.bulkUpdateCurrencyCode(\n {\n item1: preview!.preview,\n item2: currencyCode,\n },\n updateKey,\n supportBackgroundProcess\n );\n if (!supportBackgroundProcess) {\n if (succeeded) {\n await refreshData(true);\n await refreshExpandedListItems();\n }\n\n closeBulkMarkPurchaseAsPaidDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkUpdateCurrencyCode', error, {\n trackErrorData: {\n preview,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n filterQuery,\n refreshData,\n refreshExpandedListItems,\n setIsLoading,\n showErrorDialog,\n updateKey,\n closeBulkMarkPurchaseAsPaidDialog,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n openBulkUpdatePurchaseCurrencyCode({\n updateKey,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n entityType: ActionOutboxEntityType.Purchase,\n infoMessage: (\n }\n />\n ),\n onCancel: closeBulkMarkPurchaseAsPaidDialog,\n });\n }}\n disabled={isLoading}\n />\n ),\n };\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { isEqual } from 'lodash-es';\nimport { ComponentProps, useCallback, useMemo, useRef, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { SellerAccountEmployeeSelector } from 'src/components/Selectors/SellerAccountEmployeeSelector';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { Stack } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { DetailSection } from 'src/modals/common';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { posChangedField } from 'src/utils/posFieldUtils';\nimport { PurchaseOrderDetailsInput } from 'src/utils/purchaseUtils';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n DateTimeRange,\n PurchaseOrderDetails,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport type BulkEditPurchaseSettingsDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n monthYear?: DateTimeRange;\n onOkay: (\n purchaseInput: PurchaseOrderDetailsInput | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport const BulkEditPurchaseSettingsDialog = ({\n purchases,\n ...rest\n}: BulkEditPurchaseSettingsDialogProps) => {\n const methods = useForm();\n\n return (\n \n \n \n );\n};\n\nfunction BulkEditPurchaseSettingsDialogContent({\n updateKey,\n onOkay,\n onCancel,\n handleSubmit,\n watch,\n reset,\n setValue,\n formState,\n ...rest\n}: BulkEditPurchaseSettingsDialogProps &\n Omit<\n ComponentProps>,\n 'children'\n >) {\n const { setActivePosEntity } =\n useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { refreshData } = usePurchaseDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n const dontChange = useContent(ContentId.DontChange);\n const buyerUserId = watch('buyerUserId');\n\n const input = watch();\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n if (refreshData) {\n await refreshData(true);\n }\n if (refreshExpandedListItems) {\n await refreshExpandedListItems();\n }\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshData,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n ActionOutboxEntityType.Purchase,\n BulkActionType.UpdateGeneralSettings,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const alertDialog = useBasicDialog();\n\n const onSubmitHandler = useCallback(\n async (\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void\n ) => {\n if (onPreviewReceived) {\n setIsLoading(true);\n await onOkay(null, false, onPreviewReceived);\n setIsLoading(false);\n } else {\n handleSubmit((i) =>\n onOkay(i, hasBackgroundBulkEditFeature, undefined, preview)\n )();\n }\n },\n [onOkay, handleSubmit, preview, hasBackgroundBulkEditFeature]\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const isInputValid = useMemo(() => {\n return !isEqual(input, formState.defaultValues ?? {});\n }, [formState.defaultValues, input]);\n\n const submittButtonRef = useRef(null);\n\n return (\n }\n />\n }\n onOpened={() => {\n reset();\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter' && isInputValid) {\n submittButtonRef.current.click();\n }\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n }>\n }>\n {\n if (newId !== buyerUserId?.value) {\n setValue('buyerUserId', posChangedField(newId));\n }\n }}\n style={{ width: '100%' }}\n />\n \n \n \n \n \n );\n}\n","import { useUpdatePurchasesPermissions } from 'src/components/Purchases/BulkActions/useUpdatePurchasesPermissions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const LaunchUpdatePurchaseSettings = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const { hasUpdatePurchasesPermission } = useUpdatePurchasesPermissions();\n\n if (!hasUpdatePurchasesPermission) {\n return null;\n }\n\n return (\n <>\n \n \n {/* Now only purchased by is supported. Use ContentId.EditGeneralSettings when multiple settings are supported */}\n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { BulkEditPurchaseSettingsDialog } from 'src/dialogs/BulkEdits/BulkEditPurchaseSettingsDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n BulkEditPreviewWithDetails,\n BulkEditPurchaseClient,\n PurchaseOrderDetailsInput,\n PurchaseOrderQuery,\n} from 'src/WebApiController';\n\nimport { PURCHASE_BULK_UPDATE_GENERAL_SETTINGS_UPDATE_KEY } from '../../PurchaseActionDropdown.constants';\nimport { LaunchUpdatePurchaseSettings } from './LaunchUpdatePurchaseSettings';\n\nexport const useBulkUpdatePurchaseSettings = (\n filterQuery: PurchaseOrderQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n groupId?: string\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const updateKey = groupId\n ? `purchaseSettings-event-${groupId}`\n : PURCHASE_BULK_UPDATE_GENERAL_SETTINGS_UPDATE_KEY;\n\n const { showErrorDialog } = useErrorBoundaryContext();\n const { refreshData } = usePurchaseDataContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const {\n openDialog: openBulkEditPurchaseSettingsDialog,\n closeDialog: closeBulkEditPurchaseSettingsDialog,\n } = useDialog(\n DialogId.BulkEditPurchaseSettings,\n BulkEditPurchaseSettingsDialog\n );\n\n const onSubmit = useCallback(\n async (\n purchaseInput: PurchaseOrderDetailsInput | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const client = new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n );\n\n const preview =\n await client.bulkUpdateGeneralSettingsPreview(filterQuery);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateGeneralSettingsPreview', error, {\n trackErrorData: { filterQuery },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (purchaseInput?.buyerUserId != null) {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n ).bulkUpdateGeneralSettings(\n {\n item1: preview!.preview,\n item2: purchaseInput.buyerUserId!,\n },\n updateKey,\n supportBackgroundProcess\n );\n if (!supportBackgroundProcess) {\n if (succeeded) {\n await refreshData(true);\n await refreshExpandedListItems();\n }\n\n closeBulkEditPurchaseSettingsDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkUpdateGeneralSettings', error, {\n trackErrorData: { preview, purchaseInput },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeBulkEditPurchaseSettingsDialog,\n filterQuery,\n refreshData,\n refreshExpandedListItems,\n setIsLoading,\n showErrorDialog,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n openBulkEditPurchaseSettingsDialog({\n updateKey,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkEditPurchaseSettingsDialog,\n });\n }}\n disabled={isLoading}\n />\n ),\n };\n};\n","import { useUpdatePurchasesPermissions } from 'src/components/Purchases/BulkActions/useUpdatePurchasesPermissions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const LaunchBulkUpdateSeatTraits = ({\n onClick,\n disabled,\n labelContentId = ContentId.UpdateSeatTraits,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n labelContentId?: ContentId;\n}) => {\n const { hasPurchaseUpdateSeatTraitsPermission } =\n useUpdatePurchasesPermissions();\n\n if (!hasPurchaseUpdateSeatTraitsPermission) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { BulkEditSeatTraitsDialog } from 'src/dialogs/BulkEdits/BulkEditSeatTraitsDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditPreviewWithDetails,\n BulkEditPurchaseClient,\n BulkEditTicketGroupClient,\n ListingNote,\n PurchaseOrderQuery,\n} from 'src/WebApiController';\n\nimport { PURCHASE_BULK_UPDATE_SEAT_TRAITS_UPDATE_KEY } from '../../PurchaseActionDropdown.constants';\nimport { LaunchBulkUpdateSeatTraits } from './LaunchBulkUpdateSeatTraits';\n\nexport const useBulkUpdateSeatTraits = (\n filterQuery: PurchaseOrderQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n groupId?: string,\n isEventView?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const updateKey = groupId\n ? `purchase-seat-traits-event-${groupId}`\n : PURCHASE_BULK_UPDATE_SEAT_TRAITS_UPDATE_KEY;\n\n const { showErrorDialog } = useErrorBoundaryContext();\n const { refreshData } = usePurchaseDataContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const {\n openDialog: openBulkEditSeatTraitsDialog,\n closeDialog: closeBulkEditSeatTraitsDialog,\n } = useDialog(DialogId.BulkEditSeatTraits, BulkEditSeatTraitsDialog);\n\n const updatePurchaseOrders = !isEventView;\n\n const onSubmit = useCallback(\n async (\n seatTraits: ListingNote[] | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails,\n appendSeatTraits?: boolean\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const bulkEditClient = updatePurchaseOrders\n ? new BulkEditPurchaseClient(activeAccountWebClientConfig)\n : new BulkEditTicketGroupClient(activeAccountWebClientConfig);\n\n const preview =\n await bulkEditClient.bulkUpdateSeatTraitsPreview(filterQuery);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateSeatTraitsPreview', error, {\n trackErrorData: { filterQuery },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (seatTraits) {\n await tryInvokeApi(\n async () => {\n const bulkEditClient = updatePurchaseOrders\n ? new BulkEditPurchaseClient(activeAccountWebClientConfig)\n : new BulkEditTicketGroupClient(activeAccountWebClientConfig);\n\n const succeeded = await bulkEditClient.bulkUpdateSeatTraits(\n {\n item1: preview!.preview,\n item2: seatTraits,\n },\n updateKey,\n supportBackgroundProcess,\n appendSeatTraits\n );\n if (!supportBackgroundProcess) {\n if (succeeded) {\n await refreshData(true);\n await refreshExpandedListItems();\n }\n\n closeBulkEditSeatTraitsDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkUpdateSeatTraits', error, {\n trackErrorData: {\n preview,\n seatTraits,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeBulkEditSeatTraitsDialog,\n filterQuery,\n refreshData,\n refreshExpandedListItems,\n setIsLoading,\n showErrorDialog,\n updateKey,\n updatePurchaseOrders,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n openBulkEditSeatTraitsDialog({\n updateKey,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkEditSeatTraitsDialog,\n entityType: ActionOutboxEntityType.TicketGroup,\n });\n }}\n disabled={isLoading}\n labelContentId={ContentId.UpdateSeatTraits}\n />\n ),\n };\n};\n","import { useState } from 'react';\nimport { ExportPurchasesButton } from 'src/components/Buttons';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { usePurchaseTileBulkActionsState } from 'src/components/Purchases/BulkActions/PurchasesTileBulkActions/usePurchaseTileBulkActionsState';\nimport { useBulkCancelPurchase } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkCancelPurchase';\nimport { useBulkChangeEventAction } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkChangeEventAction';\nimport { useBulkDeleteTicketGroup } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkDeleteTicketGroup';\nimport { useBulkEditCommissionAction } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkEditCommissionAction';\nimport { useBulkUpdateDeliveryType } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkUpdateDeliveryType';\nimport { useBulkUpdateInternalNotesAction } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkUpdateInternalNotesAction';\nimport { useBulkUpdatePurchaseCurrencyCode } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkUpdatePurchaseCurrencyCodeAction';\nimport { useBulkUpdatePurchaseSettings } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkUpdatePurchaseGeneralSettings';\nimport { useBulkUpdateSeatTraits } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkUpdateSeatTraits';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature } from 'src/WebApiController';\n\nimport { PurchasesBulkActionProps } from '../../PurchasesGlobalBulkActions/PurchasesBulkActions.types';\nimport { useUpdatePurchasesPermissions } from '../../useUpdatePurchasesPermissions';\n\ntype SettingsActionsProps = {\n groupId: string;\n};\n\nexport const SettingsActions = ({\n groupId,\n isEventView,\n}: SettingsActionsProps & PurchasesBulkActionProps) => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n const [isLoading, setIsLoading] = useState(false);\n\n const { filterQueryWithEventIds } = usePurchaseTileBulkActionsState(\n groupId,\n isEventView\n );\n const hasExportPurchasesFeature = useUserHasFeature(Feature.ExportPurchases);\n\n const bulkUpdateGeneralSettings = useBulkUpdatePurchaseSettings(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n groupId\n );\n\n const bulkUpdateDeliveryType = useBulkUpdateDeliveryType(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n groupId,\n isEventView\n );\n\n const bulkUpdateSeatTraits = useBulkUpdateSeatTraits(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n groupId,\n isEventView\n );\n\n const bulkUpdateInternalNotes = useBulkUpdateInternalNotesAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n groupId\n );\n\n const bulkEditCommissionAction = useBulkEditCommissionAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n groupId\n );\n\n const bulkCancelPurchaseAction = useBulkCancelPurchase(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n groupId\n );\n\n const bulkDeleteTicketGroupAction = useBulkDeleteTicketGroup(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n groupId\n );\n\n const bulkChangeEvent = useBulkChangeEventAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n groupId\n );\n\n const bulkUpdatePurchaseCurrencyCode = useBulkUpdatePurchaseCurrencyCode(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n groupId\n );\n\n const {\n hasUpdatePurchasesPermission,\n hasPurchaseUpdateCommissionPermission,\n } = useUpdatePurchasesPermissions();\n\n if (!hasUpdatePurchasesPermission && !hasPurchaseUpdateCommissionPermission) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {!isEventView && bulkUpdateGeneralSettings.dropDown}\n\n {bulkUpdateDeliveryType.dropDown}\n {bulkUpdateSeatTraits.dropDown}\n\n {!isEventView && bulkUpdateInternalNotes.dropDown}\n {!isEventView && bulkEditCommissionAction.dropDown}\n {!isEventView && bulkCancelPurchaseAction.dropDown}\n\n {isEventView && bulkDeleteTicketGroupAction.dropDown}\n {isEventView && bulkChangeEvent.dropDown}\n\n {hasExportPurchasesFeature && (\n \n \n \n )}\n {!isEventView && bulkUpdatePurchaseCurrencyCode.dropDown}\n \n {isEventView && bulkChangeEvent.dialog}\n \n );\n};\n","import { useCallback } from 'react';\nimport { LaunchBulkEditTags } from 'src/components/common/BulkActions/BulkEditTagsAction';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport {\n BulkEditTagAction,\n BulkEditTagDialog,\n} from 'src/dialogs/BulkEdits/BulkEditTagDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditPreviewWithDetails,\n BulkEditPurchaseClient,\n PurchaseOrderQuery,\n} from 'src/WebApiController';\n\nimport { PURCHASE_BULK_UPDATE_TAGS_UPDATE_KEY } from '../../PurchaseActionDropdown.constants';\n\nexport const useBulkEditTagsAction = (\n filterQuery: PurchaseOrderQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n groupId?: string\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const updateKey = groupId\n ? `purchaseTags-event-${groupId}}`\n : PURCHASE_BULK_UPDATE_TAGS_UPDATE_KEY;\n const { refreshData } = usePurchaseDataContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n openDialog: openBulkEditTagDialog,\n closeDialog: closeBulkEditTagDialog,\n } = useDialog(DialogId.BulkEditTags, BulkEditTagDialog);\n\n const onSubmitEditTags = useCallback(\n async (\n action: BulkEditTagAction,\n tagKey: string | null,\n tagValue?: string | undefined,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n ).bulkUpdateTagsPreview(filterQuery);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkUpdateTagsPreview', error, {\n trackErrorData: { filterQuery },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (tagKey) {\n await tryInvokeApi(\n async () => {\n const client = new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n );\n\n const succeeded =\n action === BulkEditTagAction.Update\n ? await client.bulkUpdateTags(\n preview!.preview,\n tagKey,\n tagValue,\n updateKey,\n supportBackgroundProcess\n )\n : await client.bulkRemoveTags(\n preview!.preview,\n tagKey,\n updateKey,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on details modal\n // we force re-loading the entity and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshData(true);\n await refreshExpandedListItems();\n }\n\n closeBulkEditTagDialog();\n }\n },\n (error) => {\n showErrorDialog('onSubmitEditTags', error, {\n trackErrorData: { tagKey, tagValue, preview },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n setIsLoading,\n activeAccountWebClientConfig,\n filterQuery,\n showErrorDialog,\n updateKey,\n closeBulkEditTagDialog,\n setActivePosEntity,\n refreshData,\n refreshExpandedListItems,\n ]\n );\n\n const onChangeTagClick = useCallback(\n (e: React.MouseEvent, editTagAction: BulkEditTagAction) => {\n e.preventDefault();\n e.stopPropagation();\n openBulkEditTagDialog({\n updateKey: updateKey,\n action: editTagAction,\n onOkay: onSubmitEditTags,\n entityType: ActionOutboxEntityType.Purchase,\n onClosed: () => {\n setIsLoading(false);\n },\n onCancel: closeBulkEditTagDialog,\n });\n },\n [\n closeBulkEditTagDialog,\n onSubmitEditTags,\n openBulkEditTagDialog,\n setIsLoading,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n \n ),\n };\n};\n","import { useState } from 'react';\nimport { BulkEditTagsActionPermissionsHandler } from 'src/components/common/BulkActions/BulkEditTagsAction/BulkEditTagsActionPermissionsHandler';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { usePurchaseTileBulkActionsState } from 'src/components/Purchases/BulkActions/PurchasesTileBulkActions/usePurchaseTileBulkActionsState';\nimport { useBulkEditTagsAction } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkEditTagsAction';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ActionOutboxEntityType } from 'src/WebApiController';\n\nimport { PurchasesBulkActionProps } from '../../PurchasesGlobalBulkActions/PurchasesBulkActions.types';\n\ntype TagsActionsProps = {\n groupId: string;\n};\n\nexport const TagsActions = ({\n groupId,\n isEventView,\n}: TagsActionsProps & PurchasesBulkActionProps) => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n const [isLoading, setIsLoading] = useState(false);\n\n const { filterQueryWithEventIds } = usePurchaseTileBulkActionsState(\n groupId,\n isEventView\n );\n\n const bulkEditTags = useBulkEditTagsAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n groupId\n );\n\n if (isEventView) {\n return null;\n }\n\n return (\n \n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {bulkEditTags.dropDown}\n \n \n );\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useMemo, useRef, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { CurrencyFilterSelector } from 'src/components/Selectors/CurrencyFilterSelector';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport type BulkConvertPurchasePaymentDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n onOkay: (\n fromCurrencyCode: string | null,\n toCurrencyCode: string | null,\n conversionRate: number | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport function BulkConvertPurchasePaymentDialog({\n updateKey,\n onOkay,\n onCancel,\n entityType,\n ...rest\n}: BulkConvertPurchasePaymentDialogProps) {\n const { getUiCurrency } = useLocalizationContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { refreshData } = usePurchaseDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const [fromCurrencyCode, setFromCurrencyCode] = useState('');\n const [toCurrencyCode, setToCurrencyCode] = useState('');\n const [conversionRate, setConversionRate] = useState(1);\n\n const uiCurrencyFrom = useMemo(\n () => getUiCurrency(fromCurrencyCode),\n [fromCurrencyCode, getUiCurrency]\n );\n\n const uiCurrencyTo = useMemo(\n () => getUiCurrency(toCurrencyCode),\n [toCurrencyCode, getUiCurrency]\n );\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n // Depending whether it's Listing, Sales, or Purchase\n // the context would be different here\n if (refreshData) {\n await refreshData(true);\n }\n if (refreshExpandedListItems) {\n await refreshExpandedListItems();\n }\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshData,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n entityType,\n BulkActionType.ConvertPurchasePayment,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const isInputValid = useMemo(() => {\n return (\n fromCurrencyCode &&\n toCurrencyCode &&\n conversionRate > 0 &&\n fromCurrencyCode != toCurrencyCode\n );\n }, [fromCurrencyCode, toCurrencyCode, conversionRate]);\n\n const onSubmitHandler = useCallback(\n (onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void) => {\n if (onPreviewReceived) {\n onOkay(null, null, null, false, onPreviewReceived);\n } else {\n onOkay(\n fromCurrencyCode,\n toCurrencyCode,\n conversionRate,\n hasBackgroundBulkEditFeature,\n undefined,\n preview\n );\n }\n setIsLoading(false);\n },\n [\n onOkay,\n fromCurrencyCode,\n toCurrencyCode,\n conversionRate,\n hasBackgroundBulkEditFeature,\n preview,\n ]\n );\n\n const submittButtonRef = useRef(null);\n\n return (\n }\n />\n }\n onOpened={() => {\n setConversionRate(1);\n setFromCurrencyCode('');\n setToCurrencyCode('');\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter' && isInputValid) {\n submittButtonRef.current.click();\n }\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n void 0}\n disabled={true}\n />\n\n {\n setFromCurrencyCode(e);\n }}\n />\n\n {' > '}\n\n void 0}\n disabled={true}\n />\n {\n setToCurrencyCode(e);\n }}\n />\n\n {\n let value = parseFloat(e.target.value);\n if (isNaN(value) || value < 0) {\n value = 0;\n }\n setConversionRate(value);\n }}\n postfixDisplay={}\n />\n \n \n \n );\n}\n","import { useUpdatePurchasesPermissions } from 'src/components/Purchases/BulkActions/useUpdatePurchasesPermissions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature } from 'src/WebApiController';\n\nexport const LaunchBulkConvertPurchasePayments = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const { hasUpdatePurchasesPermission } = useUpdatePurchasesPermissions();\n const hasBulkConvertPaymentLinesFeature = useUserHasFeature(\n Feature.BulkConvertPaymentLines\n );\n\n if (!hasUpdatePurchasesPermission || !hasBulkConvertPaymentLinesFeature) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport {\n IPosEntity,\n useActivePosEntityContext,\n} from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { BulkConvertPurchasePaymentDialog } from 'src/dialogs/BulkEdits/BulkConvertPurchasePaymentDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditPreviewWithDetails,\n BulkEditPurchaseClient,\n PurchaseOrderQuery,\n} from 'src/WebApiController';\n\nimport { PURCHASE_BULK_CONVERT_PAYMENTS_KEY } from '../../PurchaseActionDropdown.constants';\nimport { LaunchBulkConvertPurchasePayments } from './LaunchBulkConvertPurchasePayments';\n\nexport const useBulkConvertPurchasePaymentsAction = (\n filterQueryWithEventIds: PurchaseOrderQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n groupId?: string\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { setActivePosEntity } = useActivePosEntityContext();\n const updateKey = groupId\n ? `convert-purchase-payments-event-${groupId}`\n : PURCHASE_BULK_CONVERT_PAYMENTS_KEY;\n const { refreshData } = usePurchaseDataContext();\n const {\n eventsExpansion: { setListItemExpansion, refreshExpandedListItems },\n } = useCatalogDataContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const { openDialog: openBulkEditDialog, closeDialog: closeBulkEditDialog } =\n useDialog(\n DialogId.BulkConvertPurchasePayments,\n BulkConvertPurchasePaymentDialog\n );\n\n const onSubmit = useCallback(\n async (\n fromCurrencyCode: string | null,\n toCurrencyCode: string | null,\n conversionRate: number | null,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n ).bulkConvertPurchasePaymentPreview(filterQueryWithEventIds);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkConvertPurchasePaymentPreview', error, {\n trackErrorData: { filterQueryWithEventIds },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else if (\n conversionRate &&\n conversionRate > 0 &&\n toCurrencyCode &&\n fromCurrencyCode\n ) {\n await tryInvokeApi(\n async () => {\n const purchaseClient = new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n );\n\n const succeeded = await purchaseClient.bulkConvertPurchasePayment(\n preview!.preview,\n updateKey,\n fromCurrencyCode,\n toCurrencyCode,\n conversionRate,\n supportBackgroundProcess\n );\n\n if (!supportBackgroundProcess) {\n if (succeeded) {\n // Invalidate the activePosEntity, so that when clicking on listingDetails\n // we force re-loading the listing and newest pricing settings can be displayed\n setActivePosEntity(0);\n await refreshData(true);\n await refreshExpandedListItems();\n }\n\n closeBulkEditDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkConvertPurchasePayment', error, {\n trackErrorData: {\n filterQueryWithEventIds,\n fromCurrencyCode,\n toCurrencyCode,\n conversionRate,\n preview,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n setIsLoading,\n activeAccountWebClientConfig,\n filterQueryWithEventIds,\n showErrorDialog,\n updateKey,\n closeBulkEditDialog,\n setActivePosEntity,\n refreshData,\n refreshExpandedListItems,\n ]\n );\n\n const onChangeClick = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (groupId) {\n setListItemExpansion(true, [groupId]);\n }\n openBulkEditDialog({\n updateKey,\n onOkay: onSubmit,\n onCancel: closeBulkEditDialog,\n entityType: ActionOutboxEntityType.Purchase,\n });\n },\n [\n closeBulkEditDialog,\n groupId,\n onSubmit,\n openBulkEditDialog,\n setListItemExpansion,\n updateKey,\n ]\n );\n\n return {\n dropDown: (\n \n ),\n };\n};\n","import { useUpdatePurchasesPermissions } from 'src/components/Purchases/BulkActions/useUpdatePurchasesPermissions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature } from 'src/WebApiController';\n\nexport const LaunchBulkMarkPurchaseAsPaid = ({\n onClick,\n disabled,\n}: {\n onClick: (e: React.MouseEvent) => void;\n disabled?: boolean;\n}) => {\n const { hasUpdatePurchasesPermission } = useUpdatePurchasesPermissions();\n const hasMarkPurchaseAsPaidFeature = useUserHasFeature(Feature.MarkPOAsPaid);\n\n if (!hasUpdatePurchasesPermission || !hasMarkPurchaseAsPaidFeature) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n \n \n );\n};\n","import { HubConnectionState } from '@microsoft/signalr';\nimport { ComponentProps, useCallback, useRef, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { BulkEditStatus } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport {\n BulkEditStage,\n useBulkEditHubContext,\n} from 'src/contexts/BulkEditHubContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { InfoMessage } from 'src/core/POS/MessageWithIcon/InfoMessage';\nimport { Stack } from 'src/core/ui';\nimport { useBulkEditHub } from 'src/hooks/useBulkEditHub';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PurchaseOrderDetailsInput } from 'src/utils/purchaseUtils';\nimport {\n ActionOutboxEntityType,\n BulkActionType,\n BulkEditPreviewWithDetails,\n BulkEditProgress,\n BulkEditStep,\n DateTimeRange,\n PurchaseOrderDetails,\n} from 'src/WebApiController';\n\nimport { BulkEditFooter } from '../common/BulkEditFooter';\nimport { BulkEditHeader } from '../common/BulkEditHeader';\n\nexport type BulkMarkPurchaseAsPaidDialogProps = ComponentProps<\n typeof RSModal\n> & {\n updateKey: string;\n monthYear?: DateTimeRange;\n onOkay: (\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => void;\n onCancel: () => void;\n};\n\nexport const BulkMarkPurchaseAsPaidDialog = ({\n purchases,\n ...rest\n}: BulkMarkPurchaseAsPaidDialogProps) => {\n const methods = useForm();\n\n return (\n \n \n \n );\n};\n\nfunction BulkMarkPurchaseAsPaidDialogContent({\n updateKey,\n onOkay,\n onCancel,\n watch,\n reset,\n setValue,\n formState,\n ...rest\n}: BulkMarkPurchaseAsPaidDialogProps &\n Omit<\n ComponentProps>,\n 'children'\n >) {\n const { setActivePosEntity } =\n useActivePosEntityContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n const { refreshData } = usePurchaseDataContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const { setProgress, setPreview, setMainDialogOpened } =\n useBulkEditHubContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const onClose = useCallback(\n async (\n newProgress?: BulkEditProgress,\n closeMainDialogForPopover?: boolean\n ) => {\n if (newProgress?.step === BulkEditStep.Done) {\n setIsRefreshing(true);\n setActivePosEntity(0);\n\n if (refreshData) {\n await refreshData(true);\n }\n if (refreshExpandedListItems) {\n await refreshExpandedListItems();\n }\n setSelectionMode(undefined);\n if (closeMainDialogForPopover) {\n setMainDialogOpened(false);\n } else {\n setProgress(undefined);\n setPreview(undefined);\n }\n setIsRefreshing(false);\n // progress kept to allow the BulkEditStatusPopover to show the result\n }\n onCancel();\n },\n [\n onCancel,\n refreshData,\n refreshExpandedListItems,\n setActivePosEntity,\n setMainDialogOpened,\n setPreview,\n setProgress,\n setSelectionMode,\n ]\n );\n\n const onBulkEditDone = useCallback(\n async (doneProgress: BulkEditProgress, finalErrors: string[]) => {\n if (finalErrors.length === 0 && doneProgress.step === BulkEditStep.Done) {\n onClose(doneProgress, true);\n }\n },\n [onClose]\n );\n\n const { bulkEditHub, progress, preview, initJob, stage } = useBulkEditHub(\n ActionOutboxEntityType.Purchase,\n BulkActionType.MarkPurchaseAsPaid,\n updateKey,\n onBulkEditDone\n );\n\n const hasBackgroundBulkEditFeature =\n bulkEditHub?.state === HubConnectionState.Connected;\n\n const onSubmitHandler = useCallback(\n async (\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void\n ) => {\n if (onPreviewReceived) {\n setIsLoading(true);\n onOkay(false, onPreviewReceived, undefined);\n setIsLoading(false);\n } else {\n onOkay(hasBackgroundBulkEditFeature, undefined, preview);\n }\n },\n [onOkay, preview, hasBackgroundBulkEditFeature]\n );\n\n const [isRefreshing, setIsRefreshing] = useState(false);\n\n const submittButtonRef = useRef(null);\n\n return (\n }\n />\n }\n onOpened={() => {\n reset();\n initJob();\n }}\n onKeyUp={(e) => {\n if (submittButtonRef.current && e.key === 'Enter') {\n submittButtonRef.current.click();\n }\n }}\n onClosed={() => {\n setMainDialogOpened(false);\n if (progress) {\n setSelectionMode(undefined);\n }\n // Call the outside one if there is one\n rest.onClosed?.();\n }}\n footer={\n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n \n \n }\n />\n \n \n \n );\n}\n","import { useCallback } from 'react';\nimport { LaunchBulkMarkPurchaseAsPaid } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkMarkPurchaseAsPaid/LaunchBulkMarkPurchaseAsPaid';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { InfoMessage } from 'src/core/POS/MessageWithIcon/InfoMessage';\nimport { BulkMarkPurchaseAsPaidDialog } from 'src/dialogs/BulkEdits/BulkMarkPurchaseAsPaidDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditPreviewWithDetails,\n BulkEditPurchaseClient,\n PurchaseOrderQuery,\n} from 'src/WebApiController';\n\nimport { PURCHASE_BULK_MARK_AS_PAID_KEY } from '../../PurchaseActionDropdown.constants';\n\nexport const useBulkMarkPurchaseAsPaid = (\n filterQuery: PurchaseOrderQuery,\n setIsLoading: (v: boolean) => void,\n isLoading?: boolean,\n groupId?: string,\n isEventView?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const updateKey = groupId\n ? `bulk-mark-purchase-as-paid-event-${groupId}`\n : PURCHASE_BULK_MARK_AS_PAID_KEY;\n\n const { showErrorDialog } = useErrorBoundaryContext();\n const { refreshData } = usePurchaseDataContext();\n const {\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const {\n openDialog: openBulkMarkPurchaseAsPaidDialog,\n closeDialog: closeBulkMarkPurchaseAsPaidDialog,\n } = useDialog(DialogId.BulkMarkPurchaseAsPaid, BulkMarkPurchaseAsPaidDialog);\n\n const updatePurchaseOrders = !isEventView;\n\n const onSubmit = useCallback(\n async (\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n setIsLoading(true);\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const bulkEditClient = new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n );\n\n const preview =\n await bulkEditClient.bulkMarkPurchaseAsPaidPreview(filterQuery);\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkMarkPurchaseAsPaidPreview', error, {\n trackErrorData: { filterQuery },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n } else {\n await tryInvokeApi(\n async () => {\n const bulkEditClient = new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n );\n\n const succeeded = await bulkEditClient.bulkMarkPurchaseAsPaid(\n preview!.preview,\n updateKey,\n supportBackgroundProcess\n );\n if (!supportBackgroundProcess) {\n if (succeeded) {\n await refreshData(true);\n await refreshExpandedListItems();\n }\n\n closeBulkMarkPurchaseAsPaidDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkMarkPurchaseAsPaid', error, {\n trackErrorData: {\n preview,\n },\n });\n },\n () => {\n if (!supportBackgroundProcess) {\n setIsLoading(false);\n }\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n filterQuery,\n refreshData,\n refreshExpandedListItems,\n setIsLoading,\n showErrorDialog,\n updateKey,\n closeBulkMarkPurchaseAsPaidDialog,\n ]\n );\n\n return {\n dropDown: (\n {\n e.preventDefault();\n e.stopPropagation();\n openBulkMarkPurchaseAsPaidDialog({\n updateKey,\n onOkay: onSubmit,\n onClosed: () => {\n setIsLoading(false);\n },\n entityType: ActionOutboxEntityType.Purchase,\n infoMessage: (\n }\n />\n ),\n onCancel: closeBulkMarkPurchaseAsPaidDialog,\n });\n }}\n disabled={isLoading}\n />\n ),\n };\n};\n","import { ReactNode } from 'react';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Feature } from 'src/WebApiController';\n\nimport { useUpdatePurchasesPermissions } from '../useUpdatePurchasesPermissions';\n\ninterface BulkEditAccountingActionPermissionsHandlerProps {\n children: ReactNode;\n}\n\nexport const BulkEditAccountingActionPermissionsHandler = ({\n children,\n}: BulkEditAccountingActionPermissionsHandlerProps) => {\n const { hasUpdatePurchasesPermission } = useUpdatePurchasesPermissions();\n const hasBulkConvertPaymentLinesFeature = useUserHasFeature(\n Feature.BulkConvertPaymentLines\n );\n const hasMarkPurchaseAsPaidFeature = useUserHasFeature(Feature.MarkPOAsPaid);\n\n if (\n !hasUpdatePurchasesPermission ||\n (!hasBulkConvertPaymentLinesFeature && !hasMarkPurchaseAsPaidFeature)\n ) {\n return null;\n }\n\n return <>{children};\n};\n","import { useState } from 'react';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { usePurchaseTileBulkActionsState } from 'src/components/Purchases/BulkActions/PurchasesTileBulkActions/usePurchaseTileBulkActionsState';\nimport { useBulkConvertPurchasePaymentsAction } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkConvertPurchasePaymentsAction';\nimport { useBulkMarkPurchaseAsPaid } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkMarkPurchaseAsPaid';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { BulkEditAccountingActionPermissionsHandler } from '../../PurchasesGlobalBulkActions/BulkEditAccountingActionPermissionsHandler';\nimport { PurchasesBulkActionProps } from '../../PurchasesGlobalBulkActions/PurchasesBulkActions.types';\n\ntype AccountingActionsProps = {\n groupId: string;\n};\n\nexport const AccountingActions = ({\n groupId,\n isEventView,\n}: AccountingActionsProps & PurchasesBulkActionProps) => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n const [isLoading, setIsLoading] = useState(false);\n\n const { filterQueryWithEventIds } = usePurchaseTileBulkActionsState(\n groupId,\n isEventView\n );\n\n const bulkConvertPayments = useBulkConvertPurchasePaymentsAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n groupId\n );\n\n const bulkMarkPurchaseAsPaidAction = useBulkMarkPurchaseAsPaid(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n return (\n \n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {!isEventView && bulkConvertPayments.dropDown}\n {bulkMarkPurchaseAsPaidAction.dropDown}\n \n \n );\n};\n","import { MultiSelectActionsContainer } from 'src/components/common/MultiSelect/MultiSelectActionsContainer';\nimport { SettingsActions } from 'src/components/Purchases/BulkActions/PurchasesTileBulkActions/Actions/SettingsActions';\nimport { TagsActions } from 'src/components/Purchases/BulkActions/PurchasesTileBulkActions/Actions/TagsActions';\n\nimport { AccountingActions } from './Actions/AccountingActions';\n\ninterface PurchasesTileBulkActionsProps {\n groupId: string;\n isEventView?: boolean;\n}\n\nexport const PurchasesTileBulkActions = ({\n groupId,\n isEventView,\n}: PurchasesTileBulkActionsProps) => {\n return (\n \n \n \n \n \n );\n};\n","import { MouseEvent, useCallback, useContext } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { PurchaseIcon } from 'src/svgs';\nimport {\n EventIdQueryParam,\n PurchaseDeeplinkQueryParam,\n} from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { addDeepLinkUrlPart } from 'src/utils/deepLinkUtils';\nimport { getPurchaseOrderDetailsModalConfigWithDeepLink } from 'src/utils/purchaseUtils';\nimport { Event } from 'src/WebApiController';\n\ninterface AddPurchaseProps {\n event: Event;\n}\n\nexport const AddPurchaseAction = ({ event }: AddPurchaseProps) => {\n const { setModal } = useContext(ModalContext);\n\n const addPurchase = useCallback(\n (e: MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n\n // To display addPurchaseModal for a concrete event,\n // the URL must contain ?eventId=&uniquePurchaseId=0\n addDeepLinkUrlPart(EventIdQueryParam, event.viagVirtualId);\n addDeepLinkUrlPart(PurchaseDeeplinkQueryParam, '0');\n setModal(getPurchaseOrderDetailsModalConfigWithDeepLink());\n },\n [event.viagVirtualId, setModal]\n );\n\n return (\n \n \n \n \n \n \n );\n};\n","import { OpenStubhubDropdownAction } from 'src/components/common/OpenSubhubDropdownAction';\nimport { AddPurchaseAction } from 'src/components/Purchases/PurchaseTileActionDropdown/components/AddPurchase';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { IconsFill, MoreIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Event } from 'src/WebApiController';\n\ninterface PurchaseTileActionDropdownProps {\n event: Event;\n}\n\nexport const PurchaseTileActionDropdown = ({\n event,\n}: PurchaseTileActionDropdownProps) => {\n const actionsMsg = useContent(ContentId.Actions);\n return (\n \n \n \n }\n align=\"end\"\n triggerProps={{ disabled: false }}\n >\n \n \n \n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const PurchaseAccordionContent = styled.div`\n height: 100%;\n position: relative;\n display: flex;\n flex-direction: column;\n position: relative;\n .accordion {\n height: 100%;\n }\n`;\n\nexport const PurchaseAccordionItemContainer = styled.div<{\n isExpanded: boolean;\n}>`\n .accordion-item {\n border-radius: 0;\n border: 0;\n padding: ${() => `${vars.spacing.xxs} ${vars.spacing.xl}`};\n\n .accordion-body {\n padding: ${() => vars.spacing.sm};\n width: 100%;\n overflow-x: auto;\n width: 100%;\n border-radius: ${() => `0 0 ${vars.spacing.sm} ${vars.spacing.sm}`};\n border: ${(props) =>\n props.isExpanded\n ? '2px solid ' + props.theme.colors.borderActive\n : '1px solid ' + props.theme.colors.borderDark};\n border-top: 0;\n background: ${({ theme }) => theme.colors.backgroundPrimary};\n }\n\n .accordion-button {\n &:focus {\n box-shadow: none;\n }\n padding: ${() =>\n `${vars.spacing.lg} ${vars.spacing['3xl']} ${vars.spacing.lg} ${vars.spacing.lg}`};\n width: 100%;\n\n border-radius: ${(props) =>\n props.isExpanded\n ? `${vars.borderRadius.m} ${vars.borderRadius.m} 0 0`\n : vars.borderRadius.m};\n\n border: ${(props) =>\n props.isExpanded\n ? '2px solid ' + props.theme.colors.borderActive\n : '1px solid ' + props.theme.colors.borderDark};\n\n ${(props) => props.isExpanded && 'border-bottom: 0'};\n\n background-color: ${(props) =>\n props.isExpanded\n ? props.theme.colors.backgroundSecondary\n : props.theme.colors.backgroundPrimary};\n\n color: ${(props) => props.theme.colors.textPrimary};\n\n &:hover {\n background-color: ${(props) =>\n props.isExpanded\n ? props.theme.colors.backgroundSecondary\n : props.theme.colors.primary700};\n\n color: ${(props) =>\n props.isExpanded\n ? props.theme.colors.textBrand\n : props.theme.colors.textDarker};\n }\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `padding: ${vars.spacing.xl} ${vars.spacing['5xl']} ${vars.spacing.xl} ${vars.spacing.lg};`\n )}`}\n\n &::after {\n position: absolute;\n top: 50%;\n transform: translateY(-50%)\n ${(props) => (!props.isExpanded ? 'rotate(-90deg)' : '')};\n right: ${() => vars.spacing.xxs};\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `right: ${vars.spacing.lg};`\n )}`}\n }\n\n transition: all 0.2s;\n\n .name {\n font-weight: 600;\n }\n }\n }\n`;\n\nexport const PurchaseAccordionDividerContainer = styled.div<{\n showShadow: boolean;\n}>`\n position: absolute;\n overflow: hidden;\n width: 100%;\n background-color: transparent;\n padding-left: ${() => vars.spacing.sm};\n z-index: 2;\n box-shadow: ${(props) =>\n props.showShadow\n ? `0px 8px 8px -4px ${props.theme.colors.textDisabled}`\n : 'none'};\n`;\n\nexport const PurchaseAccordionDividerContainerWithBackground = styled.div<{\n hasScrollBar: boolean;\n}>`\n background-color: white;\n width: calc(100% - ${(props) => (props.hasScrollBar ? '16px' : '0px')});\n height: 40px;\n display: flex;\n justify-content: space-between;\n`;\n\nexport const ItemsCountDiv = styled.div`\n display: flex;\n gap: ${() => vars.spacing.sm};\n font-style: italic;\n text-transform: lowercase;\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('caption1')};\n`;\n\nexport const TotalCostDiv = styled.div`\n text-align: right;\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('title6')};\n`;\n\nexport const PurchaseItemHeaderDateDisplay = styled.div`\n color: ${(props) => props.theme.colors.textLinkPrimary};\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('title5', 'bold')};\n`;\n","import { useMemo } from 'react';\nimport { MultiSelectionToggleGroup } from 'src/components/common/MultiSelect/Toggle/MultiSelectionToggleGroup';\nimport { MetricsDisplayPlaceholder } from 'src/components/Metrics';\nimport { PurchaseTileActionDropdown } from 'src/components/Purchases/PurchaseTileActionDropdown';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useGetEventFullInfo } from 'src/hooks/useGetEventFullInfo';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature, TicketGroupMetrics } from 'src/WebApiController';\n\nimport {\n EventItemHeader,\n EventItemHeaderType,\n METRICS_PLACEHOLDER_DIMS,\n} from '../../Events/EventItemHeader';\nimport {\n ItemsCountDiv,\n TotalCostDiv,\n} from '../PurchaseDatesAccordion/PurchaseDateAccordion.styled';\nimport { FullPageEventAction } from '../SalesEventsAccordion/FullPageEventAction';\n\nexport const EventTicketGroupHeader = (props: EventItemHeaderType) => {\n const { event, ...rest } = props;\n const { performer, venue } = useGetEventFullInfo(event);\n const { eventMetrics } = useCatalogMetricsContext();\n\n const hasBulkEditInPurchaseEventFeature = useUserHasFeature(\n Feature.BulkEditInPurchaseEvent\n );\n\n const metrics = useMemo(() => {\n return eventMetrics?.[event.viagVirtualId];\n }, [event.viagVirtualId, eventMetrics]);\n\n const totalCostText = useContent(ContentId.TotalCost);\n\n const {\n eventsExpansion: { expandedListItems, toggleListItemExpansion },\n } = useCatalogDataContext();\n\n const onToggleGroup = (groupId: string) => {\n if (!expandedListItems.includes(groupId)) {\n toggleListItemExpansion([groupId]);\n }\n };\n\n return (\n \n \n {hasBulkEditInPurchaseEventFeature\n ? [\n ,\n ]\n : []}\n \n \n }\n headerMetrics={\n metrics ? (\n \n {metrics.ttlCst?.disp}\n \n ) : (\n \n )\n }\n metrics={\n metrics ? (\n \n
    \n {metrics.tktQty}{' '}\n \n
    \n
    \n ) : (\n \n )\n }\n />\n );\n};\n","import clsx from 'clsx';\nimport { useEffect } from 'react';\nimport { EventTicketGroupBody } from 'src/components/Accordions/TicketGroupsEventsAccordion/EventTicketGroupBody';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { MultiSelectActionBar } from 'src/components/common/MultiSelect/MultiSelectActionBar';\nimport { multiActionToolBarNoHorizontalPadding } from 'src/components/Events/EventPage/EventPage.css';\nimport { PurchasesBulkActionsPermissions } from 'src/components/Purchases/BulkActions/PurchasesBulkActionsPermissions';\nimport { PurchasesTileBulkActions } from 'src/components/Purchases/BulkActions/PurchasesTileBulkActions/PurchasesTileBulkActions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { SearchSolidIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EventWithData, PurchaseOrderTicketGroup } from 'src/WebApiController';\n\nimport { MinRowsForUsingVirtuoso } from '../constants';\nimport {\n EventAccordionItemProps,\n EventsAccordion,\n VirtualizedEventAccordionProps,\n} from '../EventsAccordion';\nimport { EventTicketGroupHeader } from './EventTicketGroupHeader';\n\nexport function translateEventToTicketGroupAccordionItem(\n props: EventWithData,\n index: number,\n noPadding?: boolean\n): EventAccordionItemProps {\n return {\n index,\n itemId: props.event.viagVirtualId,\n HeaderComponent: EventTicketGroupHeader,\n BodyComponent: EventTicketGroupBody,\n AfterHeaderComponent: () => (\n \n \n \n \n \n ),\n usingVirtuoso: (props.counts.tktGrpsCnt ?? 0) > MinRowsForUsingVirtuoso,\n ...props,\n entities: props.entities.ticketGroups ?? [],\n entityCount: props.counts.tktGrpsCnt ?? 0,\n };\n}\n\nexport function TicketGroupsEventsAccordion(\n props: VirtualizedEventAccordionProps\n) {\n const { setAllGroupsIds } = useMultiSelectionContext();\n\n useEffect(() => {\n const itemsIds = props.items.map((item) => item.event.viagVirtualId);\n setAllGroupsIds(itemsIds);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return ;\n}\n\nexport function TicketGroupEventsEmpty() {\n return (\n \n \n \n }\n >\n \n \n \n \n \n \n \n );\n}\n","import { useEffect, useMemo } from 'react';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\n\nexport const useAccordionItem = (viagVirtualId: string) => {\n const {\n isLoading,\n isItemsLoading,\n eventsTransformed,\n eventsExpansion: { setListItemExpansion },\n } = useCatalogDataContext();\n\n useEffect(() => {\n if (viagVirtualId) {\n setListItemExpansion(true, [viagVirtualId]);\n }\n }, [setListItemExpansion, viagVirtualId]);\n\n const accordionItemProps = useMemo(\n () =>\n eventsTransformed?.length\n ? eventsTransformed.find(\n (ev) => ev.event.viagVirtualId === viagVirtualId\n )\n : undefined,\n [eventsTransformed, viagVirtualId]\n );\n\n return { isLoading, isItemsLoading, accordionItemProps };\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport function SwitchIcon(props: Omit) {\n return (\n \n \n \n );\n}\n","import { EventIdQueryParam } from 'src/utils/constants/constants';\nimport { MainFilterQueryParam } from 'src/utils/eventQueryUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\n\nexport const getDefaultReturnUrl = (\n path: string,\n viagVirtualId?: string | null\n) => {\n const queryParams = new URLSearchParams(location.search);\n\n queryParams.delete(EventIdQueryParam);\n queryParams.delete('queryId'); // TODO - this is obsolete and no longer use, but it could still exists\n\n return `/${path}?${queryParams.toString()}${\n viagVirtualId ? `#${viagVirtualId}` : ''\n }`;\n};\n\nexport const getSidePanelSwitchToUrl = ({\n sectionType,\n marketplaceEntityIds,\n hasFullPageEventViewEntitySelection,\n}: {\n sectionType: SectionType;\n marketplaceEntityIds?: number[];\n hasFullPageEventViewEntitySelection: boolean;\n}) => {\n const url = new URL(window.location.href);\n const searchParams = new URLSearchParams(url.search);\n searchParams.delete(MainFilterQueryParam);\n\n let route = '';\n\n switch (sectionType) {\n case SectionType.PurchaseSideTable:\n route = `/purchases/event`;\n break;\n case SectionType.InventorySideTable:\n route = `/inventory/event`;\n break;\n case SectionType.SalesSideTable:\n route = `/sales/event`;\n break;\n default:\n break;\n }\n\n if (\n marketplaceEntityIds &&\n marketplaceEntityIds.length > 0 &&\n hasFullPageEventViewEntitySelection\n ) {\n searchParams.set(\n MainFilterQueryParam,\n JSON.stringify({ marketplaceEntityIds: marketplaceEntityIds.map(String) })\n );\n }\n\n const queryString = searchParams.toString();\n return queryString ? `${route}?${queryString}` : route;\n};\n","import { MouseEvent } from 'react';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\nimport { useToggle } from 'react-use';\nimport { BulkEditStatusPopover } from 'src/components/common/BulkActions/BulkEditStatusPopover';\nimport { MultiSelectionToggleGroup } from 'src/components/common/MultiSelect/Toggle/MultiSelectionToggleGroup';\nimport { Content, FormatContent } from 'src/contexts/ContentContext/Content';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n ColumnSettingsModal,\n TableColumnsSectionType,\n} from 'src/modals/ColumnSettings/ColumnSettings';\nimport { LayoutIcon } from 'src/svgs';\nimport { SwitchIcon } from 'src/svgs/SwitchIcon';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { EventIdQueryParam } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { ActionOutboxEntityType, Feature } from 'src/WebApiController';\n\nimport { getSidePanelSwitchToUrl } from '../utils';\n\nconst SwitchToButton = ({\n sectionType,\n onSwitchSection,\n}: {\n sectionType: TableColumnsSectionType;\n onSwitchSection: (sectionType: TableColumnsSectionType) => void;\n}) => {\n const switchContentId = (sectionType: TableColumnsSectionType) => {\n switch (sectionType) {\n case SectionType.PurchaseSideTable:\n return ContentId.Purchases;\n case SectionType.InventorySideTable:\n return ContentId.Inventory;\n case SectionType.SalesSideTable:\n return ContentId.Sales;\n default:\n return '';\n }\n };\n\n return (\n \n );\n};\n\nexport const SidePanelToolbar = ({\n sectionType,\n entityIds,\n filterBar,\n noData,\n}: {\n sectionType: TableColumnsSectionType;\n entityIds?: number[];\n filterBar?: React.ReactNode;\n noData?: boolean;\n}) => {\n const [isColumnModalOpen, toggleColumnModal] = useToggle(false);\n const [searchParams] = useSearchParams();\n const viagEventId = searchParams.get(EventIdQueryParam);\n const hasFullPageEventViewSideTableBulkEdit = useUserHasFeature(\n Feature.FullPageEventViewSideTableBulkEdit\n );\n const hasFullPageEventViewSideTableFilters = useUserHasFeature(\n Feature.FullPageEventViewSideTableFilters\n );\n\n const onColumnSettingButtonClickHandler = (\n e: MouseEvent\n ) => {\n e.stopPropagation();\n if (!isColumnModalOpen) toggleColumnModal(true);\n };\n const navigate = useNavigate();\n const hasFullPageEventViewEntitySelection = useUserHasFeature(\n Feature.FullPageEventViewEntitySelection\n );\n\n const onSwitchSection = (sectionType: TableColumnsSectionType) => {\n const route = getSidePanelSwitchToUrl({\n sectionType,\n marketplaceEntityIds: entityIds,\n hasFullPageEventViewEntitySelection,\n });\n if (route) {\n navigate(route);\n }\n };\n\n const getEntityType = (sectionType: TableColumnsSectionType) => {\n switch (sectionType) {\n case SectionType.PurchaseSideTable:\n return ActionOutboxEntityType.Purchase;\n case SectionType.InventorySideTable:\n return ActionOutboxEntityType.Listing;\n case SectionType.SalesSideTable:\n return ActionOutboxEntityType.Sale;\n default:\n return ActionOutboxEntityType.Listing;\n }\n };\n\n if (noData) {\n return (\n \n {hasFullPageEventViewSideTableFilters && filterBar}\n \n \n );\n }\n\n return (\n \n {hasFullPageEventViewSideTableFilters && filterBar}\n \n {hasFullPageEventViewSideTableBulkEdit && (\n \n \n \n \n )}\n \n \n \n {isColumnModalOpen ? (\n \n onClose={toggleColumnModal}\n sectionType={sectionType}\n />\n ) : null}\n \n );\n};\n","import { useMemo, useState } from 'react';\nimport { MobileFilterToolbar } from 'src/components/FilterToolbar';\nimport * as styles from 'src/components/MainFilterBar/MainFilterBar.css';\nimport { Content } from 'src/contexts/ContentContext/Content';\nimport { ProcessedQuickFilter } from 'src/hooks/useQuickFilters';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\n\nconst ALL_FILTER_ID = 'all';\nexport const SidePanelFilters = ({\n setFilterQuery,\n quickFilters,\n initialQuery,\n}: {\n setFilterQuery: (query: TQuery) => void;\n quickFilters: ProcessedQuickFilter[];\n initialQuery: TQuery;\n}) => {\n const [selectedQuickFilterId, setSelectedQuickFilterId] =\n useState(ALL_FILTER_ID);\n\n const finalQuickFilters = useMemo(() => {\n return quickFilters.map(\n ({ id, name, isCustomFilter, isHidden, data: query }) => {\n return {\n id,\n name,\n isCustomFilter,\n isHidden,\n isSelected: selectedQuickFilterId === id,\n onClick: () => {\n setFilterQuery(query);\n setSelectedQuickFilterId(id);\n },\n };\n }\n );\n }, [quickFilters, selectedQuickFilterId, setFilterQuery]);\n\n const allFilter = useMemo(\n () => [\n {\n id: ALL_FILTER_ID,\n name: ,\n isHidden: false,\n isSelected: selectedQuickFilterId === ALL_FILTER_ID,\n onClick: () => {\n setSelectedQuickFilterId(ALL_FILTER_ID);\n setFilterQuery(initialQuery);\n },\n isCustomFilter: false,\n },\n ],\n [initialQuery, selectedQuickFilterId, setFilterQuery]\n );\n\n const mergedFilters = useMemo(() => {\n return finalQuickFilters ? [...allFilter, ...finalQuickFilters] : allFilter;\n }, [finalQuickFilters, allFilter]);\n\n return (\n
    \n \n
    \n );\n};\n","import { useEffect } from 'react';\nimport { SidePanelFilters } from 'src/components/Events/EventPage/SidePanel/SidePanelFilters';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { useQuickFilters } from 'src/hooks/useQuickFilters';\nimport { PurchaseOrderQuery, UserSetting } from 'src/WebApiController';\n\nimport { useDefaultPurchaseFilters } from './hooks/useDefaultPurchaseFilters';\n\nexport function PurchaseSideTableFilterBar() {\n const {\n filterQuery: purchaseQuery,\n initialQuery,\n setFilterQuery,\n setTempQuery,\n } = useFilterQueryContext();\n\n useEffect(() => {\n setTempQuery(purchaseQuery);\n }, [purchaseQuery, setTempQuery]);\n\n const defaultQuickFilters = useDefaultPurchaseFilters({\n purchaseQuery,\n initialQuery,\n });\n\n const { quickFilters } = useQuickFilters({\n quickFiltersStateSetting: UserSetting.QuickFiltersStatePurchases,\n customQuickFiltersSetting: UserSetting.QuickFiltersCustomPurchases,\n defaultQuickFilters,\n });\n\n return (\n \n );\n}\n","import { useCallback, useEffect, useMemo } from 'react';\nimport { translateEventToTicketGroupAccordionItem } from 'src/components/Accordions/TicketGroupsEventsAccordion';\nimport { ActivePosEntityProvider } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { BulkEditHubContextProvider } from 'src/contexts/BulkEditHubContext';\nimport { CatalogDataContextProvider } from 'src/contexts/CatalogDataContext';\nimport { CatalogMultiSelectionContextProvider } from 'src/contexts/CatalogMultiSelectionContext';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport {\n FilterQueryContextProvider,\n useFilterQueryContext,\n} from 'src/contexts/FilterQueryContext';\nimport { MultiSelectionContextProvider } from 'src/contexts/MultiSelectionContext';\nimport { PurchaseDataContextProvider } from 'src/contexts/PurchaseDataContext';\nimport { SellerUserSettingsProvider } from 'src/contexts/SellerUserSettingsContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { NoData } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { EmptyPurchaseQuery } from 'src/utils/eventQueryUtils';\nimport { transformData } from 'src/utils/eventWithDataUtils';\nimport {\n getCatalogData,\n getCatalogDataExpanded,\n PURCHASE_USER_SETTINGS,\n} from 'src/utils/purchaseUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport {\n ActionOutboxEntityType,\n PurchaseClient,\n PurchaseOrderDetails,\n PurchaseOrderQuery,\n PurchaseOrderState,\n UserSetting,\n} from 'src/WebApiController';\n\nimport * as styles from '../../Events/EventPage/EventPage.css';\nimport { useAccordionItem } from '../../Events/EventPage/hooks/useAccordionItem';\nimport { SidePanelToolbar } from '../../Events/EventPage/SidePanel/SidePanelToolbar';\nimport { PurchaseSideTableFilterBar } from '../PurchaseFilterBar/PurchaseSideTableFilterBar';\n\nconst Purchases = ({\n viagVirtualId,\n queryInput,\n}: {\n viagVirtualId: string;\n queryInput?: Partial>;\n}) => {\n const { isLoading, isItemsLoading, accordionItemProps } =\n useAccordionItem(viagVirtualId);\n\n const { setFilterQuery, isQueryInitialized } =\n useFilterQueryContext();\n\n useEffect(() => {\n setFilterQuery({\n ...EmptyPurchaseQuery,\n ...queryInput,\n eventOrMappingIds: [viagVirtualId],\n purchaseOrderState: PurchaseOrderState.Active,\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [queryInput, setFilterQuery, isQueryInitialized]);\n\n const purchasesAccordionItem = useMemo(\n () =>\n accordionItemProps &&\n translateEventToTicketGroupAccordionItem(accordionItemProps, 0, true),\n [accordionItemProps]\n );\n\n const tgIds = useMemo(\n () => purchasesAccordionItem?.entities?.map((tg) => Number(tg.tgId)) || [],\n [purchasesAccordionItem?.entities]\n );\n\n const hasSelectedEntities =\n (queryInput?.listingIds && queryInput?.listingIds?.length > 0) ||\n (queryInput?.saleIds && queryInput?.saleIds?.length > 0);\n\n const { BodyComponent, AfterHeaderComponent } = purchasesAccordionItem || {};\n const noData =\n (!isLoading && !purchasesAccordionItem) ||\n (!isItemsLoading && !accordionItemProps?.entities);\n return (\n <>\n
    \n }\n noData={noData}\n entityIds={hasSelectedEntities ? tgIds : []}\n />\n {!noData && AfterHeaderComponent && }\n
    \n {isLoading && }\n {noData ? (\n \n }\n />\n \n ) : (\n BodyComponent &&\n accordionItemProps && (\n \n )\n )}\n \n );\n};\n\nexport const PurchasesSideTable = ({\n viagVirtualId,\n queryInput,\n}: {\n viagVirtualId: string;\n queryInput?: Partial>;\n}) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const getCatalogDataExpandedCallback = useCallback(\n (ids: string[], filterQuery: PurchaseOrderQuery) =>\n getCatalogDataExpanded(ids, filterQuery, {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError('PurchaseClient.getTicketGroupsForEvents', error, {\n ...filterQuery,\n eventIds: ids,\n });\n },\n }),\n [activeAccountWebClientConfig, trackError]\n );\n\n const getActivePosEntity = useCallback(\n async (purchaseId: number) => {\n const purchaseDetails = await new PurchaseClient(\n activeAccountWebClientConfig\n ).getPurchaseOrderByPurchaseOrderId(purchaseId, false);\n if (purchaseDetails) {\n return {\n posEntityId: purchaseDetails.id,\n posEntity: purchaseDetails,\n event: null,\n posEntityDisplayId: purchaseDetails.id.toString(),\n };\n }\n\n return {};\n },\n [activeAccountWebClientConfig]\n );\n\n return (\n \n \n \n initialQuery={{\n ...EmptyPurchaseQuery,\n eventOrMappingIds: [viagVirtualId],\n purchaseOrderState: PurchaseOrderState.Active,\n }}\n emptyQuery={EmptyPurchaseQuery}\n viewModeSettingId={UserSetting.PurchasePageViewMode}\n loadQueryFromUrl={false}\n >\n \n entityType={ActionOutboxEntityType.Purchase}\n queryKey={'getCatalogForPurchaseOrders'}\n getCatalogData={(c, f) => getCatalogData(c, f, true)}\n getCatalogDataExpanded={getCatalogDataExpandedCallback}\n transformEventData={transformData}\n >\n \n entityType={ActionOutboxEntityType.Purchase}\n getActivePosEntity={getActivePosEntity}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { useMemo } from 'react';\nimport { PurchasesSideTable } from 'src/components/Purchases/PurchaseEventPage/PurchasesSideTable';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { useInventoryEventDetailContext } from 'src/contexts/InventoryEventDetailContext/InventoryEventDetailContext';\nimport { ListingQuery } from 'src/WebApiController';\n\nexport const PurchaseDetailPanel = () => {\n const { event, selectedListingIds } = useInventoryEventDetailContext();\n\n const { filterQuery } = useFilterQueryContext();\n\n const listingIdFilterQuery = useMemo(() => {\n const marketplaceEntityIds = filterQuery?.marketplaceEntityIds?.map(Number);\n\n return {\n listingIds:\n (selectedListingIds?.length > 0 ? selectedListingIds : null) ||\n marketplaceEntityIds,\n };\n }, [filterQuery?.marketplaceEntityIds, selectedListingIds]);\n\n return !event ? null : (\n \n );\n};\n","import { useEffect, useMemo, useState } from 'react';\nimport { SidePanelFilters } from 'src/components/Events/EventPage/SidePanel/SidePanelFilters';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { QuickFilter, useQuickFilters } from 'src/hooks/useQuickFilters';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n DateRangePresetName,\n getDateRangePresets,\n} from 'src/utils/dateTimeUtils';\nimport {\n DateTimeRangeWithRelative,\n SaleQuery,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { useDefaultSaleFilters } from './hooks/useDefaultSaleFilters';\n\nexport function SaleSideTableFilterBar() {\n const {\n filterQuery: saleQuery,\n initialQuery,\n setFilterQuery,\n setTempQuery,\n } = useFilterQueryContext();\n\n useEffect(() => {\n setTempQuery(saleQuery);\n }, [saleQuery, setTempQuery]);\n\n const defaultQuickFilters = useDefaultSaleFilters({\n saleQuery,\n initialQuery,\n });\n\n const { quickFilters } = useQuickFilters({\n quickFiltersStateSetting: UserSetting.QuickFiltersStateSales,\n customQuickFiltersSetting: UserSetting.QuickFiltersCustomSales,\n defaultQuickFilters,\n });\n\n return (\n \n );\n}\n","import { isEmpty } from 'lodash-es';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { translateEventToSaleAccordionItem } from 'src/components/Accordions';\nimport { useAccordionItem } from 'src/components/Events/EventPage/hooks/useAccordionItem';\nimport { SidePanelToolbar } from 'src/components/Events/EventPage/SidePanel/SidePanelToolbar';\nimport { ActivePosEntityProvider } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { BulkEditHubContextProvider } from 'src/contexts/BulkEditHubContext';\nimport { CatalogDataContextProvider } from 'src/contexts/CatalogDataContext';\nimport { CatalogMultiSelectionContextProvider } from 'src/contexts/CatalogMultiSelectionContext';\nimport { CollapsableViewProvider } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport {\n FilterQueryContextProvider,\n useFilterQueryContext,\n} from 'src/contexts/FilterQueryContext';\nimport { MultiSelectionContextProvider } from 'src/contexts/MultiSelectionContext';\nimport { SellerUserSettingsProvider } from 'src/contexts/SellerUserSettingsContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n getCatalogData,\n getCatalogDataExpanded,\n SALE_USER_SETTINGS,\n} from 'src/navigations/Routes/Sales';\nimport { NoData } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { DefaultSaleQuery, EmptySaleQuery } from 'src/utils/eventQueryUtils';\nimport { transformData } from 'src/utils/eventWithDataUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport {\n ActionOutboxEntityType,\n Feature,\n SaleClient,\n SaleDetails,\n SaleQuery,\n SectionInfo,\n UserSetting,\n} from 'src/WebApiController';\n\nimport * as styles from '../../Events/EventPage/EventPage.css';\nimport { SaleSideTableFilterBar } from '../SaleFilterBar/SaleSideTableFilterBar';\n\nconst Sales = ({\n viagVirtualId,\n selectedSections,\n queryInput,\n}: {\n viagVirtualId: string;\n selectedSections?: SectionInfo[];\n queryInput?: Partial>;\n}) => {\n const { isLoading, isItemsLoading, accordionItemProps } =\n useAccordionItem(viagVirtualId);\n\n const { setFilterQuery, isQueryInitialized } =\n useFilterQueryContext();\n\n const hasCondensedTabsFeature = useUserHasFeature(\n Feature.CondensedPreviewTabsAndSingleListing\n );\n\n useEffect(() => {\n setFilterQuery({\n ...DefaultSaleQuery,\n ...queryInput,\n eventOrMappingIds: [viagVirtualId],\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [queryInput, setFilterQuery, isQueryInitialized]);\n\n const hasSelectedEntities =\n (queryInput?.listingIds && queryInput?.listingIds?.length > 0) ||\n (queryInput?.purchaseOrderIds && queryInput?.purchaseOrderIds?.length > 0);\n\n const { entities } = accordionItemProps || {};\n const sales = entities?.sales;\n\n const filteredEventSales = useMemo(() => {\n if (!selectedSections || isEmpty(selectedSections)) {\n return sales ?? null;\n }\n const sectionIds = new Set(selectedSections.map(({ id }) => id));\n const sectionNames = new Set(selectedSections.map(({ name }) => name));\n const rowIds = new Set(\n selectedSections.flatMap(({ rows }) => rows.map(({ id }) => id))\n );\n\n return (\n sales?.filter(({ seating }) => {\n return (\n (seating?.sectionId && sectionIds.has(seating?.sectionId)) ||\n (seating?.section && sectionNames.has(seating?.section)) ||\n (seating?.rowId && rowIds.has(seating.rowId))\n );\n }) ?? null\n );\n }, [sales, selectedSections]);\n\n const salesAccordionItem = useMemo(\n () =>\n accordionItemProps &&\n translateEventToSaleAccordionItem(accordionItemProps, 0, true),\n [accordionItemProps]\n );\n\n const saleIds = filteredEventSales?.map(({ id }) => id) ?? [];\n\n const { BodyComponent, AfterHeaderComponent } = salesAccordionItem || {};\n\n const noData =\n (!isLoading && !salesAccordionItem) || (!isItemsLoading && !sales);\n return (\n <>\n
    \n }\n entityIds={hasSelectedEntities ? saleIds : undefined}\n noData={noData}\n />\n {!noData && AfterHeaderComponent && }\n
    \n {isLoading && }\n {noData ? (\n \n }\n />\n \n ) : (\n BodyComponent &&\n accordionItemProps && (\n \n )\n )}\n \n );\n};\nexport const SalesSideTable = ({\n viagVirtualId,\n selectedSections,\n queryInput,\n}: {\n viagVirtualId: string;\n selectedSections?: SectionInfo[];\n queryInput?: Partial>;\n}) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError } = useErrorBoundaryContext();\n\n const getCatalogDataExpandedCallback = useCallback(\n (ids: string[], filterQuery: SaleQuery) =>\n getCatalogDataExpanded(ids, filterQuery, false, {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError('SaleClient.getSalesForEvents', error, {\n ...filterQuery,\n eventIds: ids,\n });\n },\n }),\n [activeAccountWebClientConfig, trackError]\n );\n\n const getActivePosEntity = useCallback(\n async (saleId: number) => {\n if (activeAccountWebClientConfig.activeAccountId) {\n const saleDetail = await new SaleClient(\n activeAccountWebClientConfig\n ).getSaleBySaleId(saleId);\n\n if (saleDetail) {\n return {\n posEntityId: saleDetail.id,\n posEntity: saleDetail,\n posEntityDisplayId: saleDetail.idOnMkp,\n };\n }\n }\n return {};\n },\n [activeAccountWebClientConfig]\n );\n\n return (\n \n \n \n initialQuery={{\n ...DefaultSaleQuery,\n eventOrMappingIds: [viagVirtualId],\n }}\n emptyQuery={EmptySaleQuery}\n viewModeSettingId={UserSetting.SalePageViewMode}\n loadQueryFromUrl={false}\n >\n \n entityType={ActionOutboxEntityType.Sale}\n queryKey={'getCatalogForSale'}\n getCatalogData={(c, f) => getCatalogData(c, f, true)}\n getCatalogDataExpanded={getCatalogDataExpandedCallback}\n transformEventData={transformData}\n >\n \n \n \n entityType={ActionOutboxEntityType.Sale}\n getActivePosEntity={getActivePosEntity}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { useMemo } from 'react';\nimport { SalesSideTable } from 'src/components/Sales/SaleEventPage/SaleSideTable';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { useInventoryEventDetailContext } from 'src/contexts/InventoryEventDetailContext/InventoryEventDetailContext';\nimport { ListingQuery } from 'src/WebApiController';\n\n\nexport const SaleDetailPanel = () => {\n const { event, selectedListingIds, filterSections } =\n useInventoryEventDetailContext();\n\n const { filterQuery } = useFilterQueryContext();\n\n const listingIdFilterQuery = useMemo(() => {\n const marketplaceEntityIds = filterQuery?.marketplaceEntityIds?.map(Number);\n\n return {\n listingIds:\n (selectedListingIds?.length > 0 ? selectedListingIds : null) ||\n marketplaceEntityIds,\n };\n }, [filterQuery?.marketplaceEntityIds, selectedListingIds]);\n\n return !event ? null : (\n \n );\n};\n","import { useInventoryEventDetailContext } from 'src/contexts/InventoryEventDetailContext/InventoryEventDetailContext';\n\nimport { SidePanelTab } from '../../../MarketListings/MarketListingHeader';\nimport * as styles from './DetailPanelBody.css';\nimport { ListingDetailPanel } from './Listing/ListingDetailPanel';\nimport { NotesDetailPanel } from './NotesDetailPanel';\nimport { PurchaseDetailPanel } from './PurchaseDetailPanel';\nimport { SaleDetailPanel } from './SaleDetailPanel';\n\ntype DetailPanelBodyProps = {\n useVerticalView: boolean;\n};\n\nexport const DetailPanelBody: React.FC = ({\n useVerticalView,\n}) => {\n const { selectedTab } = useInventoryEventDetailContext();\n\n const renderBody = () => {\n switch (selectedTab) {\n case SidePanelTab.LISTINGS:\n return ;\n case SidePanelTab.SALES:\n return ;\n case SidePanelTab.PURCHASES:\n return ;\n case SidePanelTab.NOTES:\n return ;\n }\n };\n\n return
    {renderBody()}
    ;\n};\n","import { useInventoryEventDetailContext } from 'src/contexts/InventoryEventDetailContext/InventoryEventDetailContext';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\n\nimport * as styles from './CondensedVenueMapQtyFilter.css';\n\nexport const CondensedVenueMapQtyFilter = () => {\n const { compQuantityFilters, setCompQuantityFilters, splitChoices } =\n useInventoryEventDetailContext();\n\n return (\n \n );\n};\n","import clsx from 'clsx';\nimport { isEmpty, pickBy } from 'lodash-es';\nimport React, { useCallback, useEffect, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { EventVenueMap } from 'src/components/Events/VenueMap/EventVenueMap';\nimport { useVenueMapHandlers } from 'src/components/Listings/MapWithCompListingsPreview/MapWithCompListingsPreview.hooks';\nimport { useInventoryEventDetailContext } from 'src/contexts/InventoryEventDetailContext/InventoryEventDetailContext';\nimport {\n ListingCompsNumberRange,\n ListingCompsSpectrum,\n} from 'src/hooks/useComparableListingsVenueMapColor';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { getMatchingSectionRow } from 'src/utils/seatScoreUtils';\nimport { mapToSelectedSectionSettings } from 'src/utils/types/selectedSectionSettingsWithOptionals';\nimport {\n AutoPricingInputs,\n Feature, SectionInfo,\n SelectedSectionSettings\n} from 'src/WebApiController';\n\nimport { SidePanelTab } from '../../../MarketListings/MarketListingHeader';\nimport { CondensedVenueMapQtyFilter } from './CondensedVenueMapQtyFilter';\nimport * as styles from './MapBody.css';\n\ntype MapBodayProps = {\n useVerticalView: boolean;\n};\n\nexport const MapBody: React.FC = ({ useVerticalView }) => {\n const {\n selectedListing,\n venueMapInfo,\n priceCalcQuery,\n filterSections,\n compListingSectionIds,\n shouldRepaint,\n shouldReset,\n selectedTab,\n getColor,\n } = useInventoryEventDetailContext();\n\n const hasCondensedInventory = useUserHasFeature(\n Feature.CondensedPreviewTabsAndSingleListing\n );\n\n const { setValue, watch } = useFormContext();\n\n const { compListingSelectedSectionSettings } = watch();\n\n const onSelectedSectionsChange = useCallback(\n (selectedSections: SectionInfo[]) => {\n if (selectedTab !== SidePanelTab.LISTINGS) {\n return;\n }\n\n const sectionIdFilter = selectedSections.map((s) => s.id);\n const selectedRowIds = selectedSections\n .flatMap(({ rows }) => rows)\n .map(({ id }) => id);\n const rowIdFilter = [];\n if (isEmpty(compListingSelectedSectionSettings?.rowIdFilter)) {\n rowIdFilter.push(...selectedRowIds);\n } else {\n rowIdFilter.push(\n ...(compListingSelectedSectionSettings?.rowIdFilter?.filter((rowId) =>\n selectedRowIds.includes(rowId)\n ) ?? [])\n );\n }\n const sectionRowIdFilter = pickBy(\n Object.assign(\n {},\n compListingSelectedSectionSettings?.sectionRowIdFilter ?? {}\n ),\n (_, key) => sectionIdFilter.includes(parseInt(key))\n );\n const compListingSelectedSectionSettingsNew = {\n ...compListingSelectedSectionSettings,\n sectionIdFilter,\n rowIdFilter,\n sectionRowIdFilter,\n };\n setValue(\n 'compListingSelectedSectionSettings',\n mapToSelectedSectionSettings(compListingSelectedSectionSettingsNew) ??\n null\n );\n },\n [compListingSelectedSectionSettings, selectedTab, setValue]\n );\n\n useEffect(() => {\n if (selectedListing?.id == undefined && shouldReset) {\n const compListingSelectedSectionSettingsNew: SelectedSectionSettings = {\n sectionIdFilterFromZoneMap: false,\n includeBetterZones: false,\n rowOffset: 0,\n sectionIdFilter: [],\n rowIdFilter: [],\n sectionRowIdFilter: {},\n };\n\n setValue(\n 'compListingSelectedSectionSettings',\n mapToSelectedSectionSettings(compListingSelectedSectionSettingsNew) ??\n null\n );\n }\n }, [onSelectedSectionsChange, selectedListing?.id, setValue, shouldReset]);\n\n const { onSectionClicked, onToggleMirrors, onSectionHovered } =\n useVenueMapHandlers(\n filterSections,\n priceCalcQuery?.data ?? undefined,\n venueMapInfo,\n onSelectedSectionsChange\n );\n\n const selectedSectionIds = useMemo(() => {\n if (!selectedListing?.seating) {\n return [];\n }\n\n const { section } = getMatchingSectionRow(\n selectedListing.seating,\n venueMapInfo?.sections\n );\n return section ? [section.id] : [];\n }, [selectedListing?.seating, venueMapInfo?.sections]);\n\n return (\n
    \n : null\n }\n shouldRepaint={shouldRepaint}\n mapActionContainerClassname={clsx({\n [styles.floatMapActionContainer]: useVerticalView,\n })}\n />\n
    \n );\n};\n","import clsx from 'clsx';\nimport { useCallback, useMemo, useState } from 'react';\nimport { useAutoPricingSettingsSelectedSections } from 'src/components/AutoPricing/AutoPricingSelectedSectionSettingsInput/AutoPricingSelectedSectionSettingsInput.hooks';\nimport { SectionFilterRowNudger } from 'src/components/AutoPricing/components/SectionFilterRowNudger';\nimport { FilterPillList } from 'src/components/common/FilterPill';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useInventoryEventDetailContext } from 'src/contexts/InventoryEventDetailContext/InventoryEventDetailContext';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { vars } from 'src/core/themes';\nimport { Button, Popover, Stack, Switch, TooltipPopover } from 'src/core/ui';\nimport { useAutoPricingSettings } from 'src/modals/ListingDetails/ListingForms/AutoPricingForm/useAutoPricingSettings';\nimport { ExpandIcon, FoldIcon, InfoOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { CompListingQuantity } from 'src/WebApiController';\n\nimport * as styles from './CompPricingSettings.css';\n\nconst quantitiesOptions = [\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '10+',\n].reduce(\n (r, c) => {\n r[c] = c;\n return r;\n },\n {} as Record\n);\n\nexport const CompPricingSettings = ({\n useVerticalView,\n}: {\n useVerticalView?: boolean;\n}) => {\n const { selectedListing } = useInventoryEventDetailContext();\n const { venueMapInfo } = useEventMapContext();\n\n const [showAdvancedSettings, setShowAdvancedSettings] =\n useState(false);\n\n const { updateInput: watchValues, setValue } =\n useAutoPricingSettings(selectedListing);\n\n const {\n compListingExcludeFanInventory,\n compListingQuantityScoreAdjustmentOverrideJson,\n compListingQuantityFilters,\n compListingExcludeDefects,\n compListingSelectedSectionSettings,\n } = watchValues;\n\n const { onRowIdFiltersChange, onSectionIdFiltersChange } =\n useAutoPricingSettingsSelectedSections(venueMapInfo?.sections);\n\n const selectedSections = useMemo(() => {\n const formSectionFilterIds =\n compListingSelectedSectionSettings?.sectionIdFilter ?? [];\n return (\n venueMapInfo?.sections?.filter((section) => {\n return formSectionFilterIds.includes(section.id);\n }) ?? []\n );\n }, [compListingSelectedSectionSettings?.sectionIdFilter, venueMapInfo]);\n\n const rowIdFilters = useMemo(() => {\n return compListingSelectedSectionSettings?.rowIdFilter ?? [];\n }, [compListingSelectedSectionSettings]);\n\n const sectionRowIdFilters = useMemo(() => {\n return compListingSelectedSectionSettings?.sectionRowIdFilter ?? {};\n }, [compListingSelectedSectionSettings]);\n\n const toggleShowAdvancedSettings = () => {\n setShowAdvancedSettings((prev) => !prev);\n };\n\n const parsedQuantityOverridesJson = useMemo(() => {\n return compListingQuantityScoreAdjustmentOverrideJson != null\n ? JSON.parse(compListingQuantityScoreAdjustmentOverrideJson)\n : null;\n }, [compListingQuantityScoreAdjustmentOverrideJson]);\n\n const derivedCompListingQuantityFilters =\n useMemo((): CompListingQuantity | null => {\n if (compListingQuantityFilters != null) {\n return compListingQuantityFilters;\n }\n\n if (parsedQuantityOverridesJson == null) {\n return null;\n }\n\n const { exact, gte } =\n parsedQuantityOverridesJson?.quantitiesFilter ?? {};\n return {\n exactQuantities: exact ?? [],\n greaterThanOrEqualToQuantity: gte,\n };\n }, [compListingQuantityFilters, parsedQuantityOverridesJson]);\n\n const selectedQuantitiesValues = useMemo(() => {\n if (!derivedCompListingQuantityFilters) {\n return [];\n }\n\n const { exactQuantities: exact, greaterThanOrEqualToQuantity: gte } =\n derivedCompListingQuantityFilters;\n\n const eligibleQuantities = Object.values(quantitiesOptions)\n .filter((value) => !isNaN(parseInt(value)))\n .map((value) => parseInt(value));\n const selectedQuantitiesInts = eligibleQuantities.filter((quantity) => {\n if (((exact as number[]) ?? []).includes(quantity)) {\n return true;\n }\n if (gte != null && (gte as number) <= quantity) {\n return true;\n }\n return false;\n });\n return Object.values(quantitiesOptions).filter((value) =>\n selectedQuantitiesInts.includes(parseInt(value))\n );\n }, [derivedCompListingQuantityFilters]);\n\n const handleOnChange = useCallback(\n (values: string[]) => {\n const exact = [];\n let gte: number | null = null;\n for (const value of values) {\n const quantity = parseInt(value);\n if (value.indexOf('+') > -1) {\n gte = quantity;\n } else {\n if (!isNaN(quantity)) {\n exact.push(quantity);\n }\n }\n }\n\n const compListingQuantityFiltersNew = {\n exactQuantities: exact,\n greaterThanOrEqualToQuantity: gte,\n };\n const compListingQuantityScoreAdjustmentOverrideJsonNew = JSON.stringify({\n ...parsedQuantityOverridesJson,\n quantitiesFilter: { exact, gte },\n });\n\n setValue('compListingQuantityFilters', compListingQuantityFiltersNew);\n setValue(\n 'compListingQuantityScoreAdjustmentOverrideJson',\n compListingQuantityScoreAdjustmentOverrideJsonNew\n );\n },\n [parsedQuantityOverridesJson, setValue]\n );\n\n return (\n
    \n \n \n {!!Object.entries(sectionRowIdFilters).length && (\n \n )}\n \n\n \n \n :\n
    \n }\n values={selectedQuantitiesValues}\n onChange={handleOnChange}\n valueOptionsContent={quantitiesOptions}\n valuesDisplayText={selectedQuantitiesValues.join(', ')}\n triggerProps={{ style: { width: '100%' } }}\n />\n {useVerticalView && (\n \n \n \n
    \n \n
    \n \n
    \n \n \n \n
    \n \n }\n >\n \n \n \n
    \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n const compListingExcludeFanInventoryNew = isChecked;\n if (\n compListingExcludeFanInventoryNew !==\n compListingExcludeFanInventory\n ) {\n setValue(\n 'compListingExcludeFanInventory',\n compListingExcludeFanInventoryNew\n );\n }\n }}\n />\n
    \n \n
    \n \n }\n >\n \n \n \n
    \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n const compListingExcludeDefectsNew = !isChecked;\n\n if (\n compListingExcludeDefectsNew !==\n compListingExcludeDefects\n ) {\n setValue(\n 'compListingExcludeDefects',\n compListingExcludeDefectsNew\n );\n }\n }}\n />\n
    \n \n
    \n
    \n )}\n \n\n {!useVerticalView && (\n <>\n \n {showAdvancedSettings ? (\n <>\n \n \n \n ) : (\n <>\n \n \n \n )}\n \n\n {showAdvancedSettings && (\n
    \n
    \n
    \n \n }\n >\n \n \n \n
    \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n const compListingExcludeFanInventoryNew = isChecked;\n if (\n compListingExcludeFanInventoryNew !==\n compListingExcludeFanInventory\n ) {\n setValue(\n 'compListingExcludeFanInventory',\n compListingExcludeFanInventoryNew\n );\n }\n }}\n />\n
    \n
    \n
    \n \n }\n >\n \n \n \n
    \n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n const compListingExcludeDefectsNew = !isChecked;\n\n if (\n compListingExcludeDefectsNew !== compListingExcludeDefects\n ) {\n setValue(\n 'compListingExcludeDefects',\n compListingExcludeDefectsNew\n );\n }\n }}\n />\n
    \n
    \n )}\n \n )}\n \n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useInventoryEventDetailContext } from 'src/contexts/InventoryEventDetailContext/InventoryEventDetailContext';\nimport { Divider } from 'src/modals/common/Summary/Summary.styled';\nimport { calculatePercentile } from 'src/utils/arrayUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\n\nimport * as styles from './SelectedListingMapStats.css';\nimport { StatLabel } from './StatLabel';\n\nexport interface ListingMapStats {\n listingCount: number;\n ticketCount: number;\n ticketPriceMin: number;\n ticketPriceP25: number;\n ticketPriceAvg: number;\n}\n\nexport const SelectedListingMapStats = () => {\n const { loginContext } = useAppContext();\n const { selectedListing, compListings } = useInventoryEventDetailContext();\n\n const currencyCode = useMemo(() => {\n return (\n selectedListing?.currency ??\n loginContext?.user?.activeAccount.currencyCode ??\n null\n );\n }, [\n loginContext?.user?.activeAccount.currencyCode,\n selectedListing?.currency,\n ]);\n\n const listingQtyText = useContent(ContentId.ListingQty);\n const ticketQtyText = useContent(ContentId.TicketQty);\n const minText = useContent(ContentId.Min);\n const p25Text = useContent(ContentId.P25);\n const p50Text = useContent(ContentId.P50);\n\n const stats = useMemo(() => {\n const listingCount = (compListings ?? []).length;\n let ticketCount = 0;\n const ticketPrices: number[] = [];\n for (const listing of compListings ?? []) {\n if ((listing.availableTickets ?? 0) > 0) {\n ticketCount += listing.availableTickets ?? 0;\n const prices = Array(listing.availableTickets ?? 0).fill(\n listing.sellerAllInPrice?.amt ?? 0\n );\n ticketPrices.push(...prices);\n }\n }\n return {\n listingCount,\n ticketCount,\n ticketPriceMin: calculatePercentile(ticketPrices, 0),\n ticketPriceP25: calculatePercentile(ticketPrices, 25),\n ticketPriceAvg: calculatePercentile(ticketPrices, 50),\n };\n }, [compListings]);\n\n const formatPrice = useCallback(\n (price: number) => {\n return applyNumberFormatting({\n inputNumber: price,\n currencyCode,\n currencyDecimalDigits: 2,\n });\n },\n [currencyCode]\n );\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n
    \n );\n};\n","import React from 'react';\nimport { useInventoryEventDetailContext } from 'src/contexts/InventoryEventDetailContext/InventoryEventDetailContext';\n\nimport { SidePanelTab } from '../../../MarketListings/MarketListingHeader';\nimport { CompPricingSettings } from '../PricingSettings/CompPricingSettings';\nimport * as styles from './MapFooter.css';\nimport { SelectedListingMapStats } from './SelectedListingMapStats';\n\ntype MapFooterProps = {\n useVerticalView: boolean;\n};\n\nexport const MapFooter: React.FC = ({ useVerticalView }) => {\n const { selectedListing, selectedTab } = useInventoryEventDetailContext();\n\n return (\n
    \n {selectedListing != null && selectedTab == SidePanelTab.LISTINGS ? (\n \n ) : (\n \n )}\n
    \n );\n};\n","import { useCallback, useContext } from 'react';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useEventHubContext } from 'src/contexts/EventHubContext';\nimport { useInventoryEventDetailContext } from 'src/contexts/InventoryEventDetailContext/InventoryEventDetailContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useEventMapConfigMetadata } from 'src/hooks/api/useEventMapConfigMetadata';\nimport { EventPricingSeatMap } from 'src/modals/EventPricingSeatMap';\nimport { CompanionIcon, ConfigureIcon } from 'src/svgs';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { EventVenueMapModal } from '../../../EventVenueMap/EventVenueMapModal';\nimport { EventVenueMapPopup } from '../../../EventVenueMap/EventVenueMapPopup';\nimport { SidePanelTab } from '../../../MarketListings/MarketListingHeader';\nimport * as styles from './MapHeader.css';\n\ntype MapHeaderProps = {\n useVerticalView: boolean;\n};\n\nexport const MapHeader: React.FC = ({ useVerticalView }) => {\n const { event, selectedTab, onTabClick } = useInventoryEventDetailContext();\n const { setModal } = useContext(ModalContext);\n\n const { onStartSession, onCancelSession, sessionRole, enabled } =\n useEventHubContext();\n\n const onToggleComapnionMode = useCallback(() => {\n if (sessionRole) {\n onCancelSession();\n } else {\n onStartSession();\n }\n }, [onStartSession, onCancelSession, sessionRole]);\n\n const marketListingsText = useContent(ContentId.MarketListings);\n const salesText = useContent(ContentId.Sales);\n const purchasesText = useContent(ContentId.Purchases);\n const notesText = useContent(ContentId.Notes);\n const enterCompanionModeText = useContent(ContentId.EnterCompanionMode);\n\n const tabs = [\n { label: marketListingsText, value: SidePanelTab.LISTINGS },\n { label: salesText, value: SidePanelTab.SALES },\n { label: purchasesText, value: SidePanelTab.PURCHASES },\n { label: notesText, value: SidePanelTab.NOTES },\n ];\n\n const openEventMapView = useCallback(() => {\n setModal({\n children: ,\n size: 'fullscreen',\n fullscreen: true,\n });\n }, [event, setModal]);\n\n const { eventMapConfigQuery } = useEventMapConfigMetadata({\n viagogoEventId: event?.viagId ?? null,\n });\n\n return (\n
    \n \n {tabs.map((tab) => (\n onTabClick(tab.value)}\n className={`${styles.tabButton} ${\n selectedTab === tab.value ? styles.activeTab : ''\n }`}\n >\n {tab.label}\n \n ))}\n \n\n {event && selectedTab == SidePanelTab.LISTINGS && (\n \n {event && (\n \n )}\n \n \n setModal({\n children: ,\n clickOutsideToClose: true,\n size: 'slide-in',\n keyboard: false,\n })\n }\n />\n \n )}\n
    \n );\n};\n","import clsx from 'clsx';\nimport { useEffect, useMemo } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useMeasure } from 'react-use';\nimport {\n InventoryEventDetailContextProvider,\n useInventoryEventDetailContext,\n} from 'src/contexts/InventoryEventDetailContext/InventoryEventDetailContext';\nimport { Stack } from 'src/core/ui';\nimport { useListingGroupPricingSettings } from 'src/hooks/api/useListingGroupPricingSettings';\nimport { useGetListingAutoPricingSettings } from 'src/hooks/useGetListingAutoPricingSettings';\nimport { flattenListingGroup } from 'src/modals/GroupListings/components/groupingUtils';\nimport {\n Event,\n Listing,\n ListingDetailsAutoPricingSectionUpdates,\n ListingGroup,\n ListingGroupAutoPriceSettings,\n} from 'src/WebApiController';\n\nimport { SidePanelTab } from '../MarketListings/MarketListingHeader';\nimport { DetailPanelBody } from './components/DetailPanel/DetailPanelBody';\nimport { MapBody } from './components/Map/MapBody';\nimport { MapFooter } from './components/Map/MapFooter';\nimport { MapHeader } from './components/Map/MapHeader';\nimport * as styles from './InventoryEventDetail.css';\n\nexport const InventoryEventDetail = ({\n event,\n eventListings,\n selectedListingIds,\n}: {\n event: Event;\n eventListings?: Listing[] | null;\n selectedListingIds: number[];\n}) => {\n const selectedListing = useMemo(() => {\n if (selectedListingIds.length <= 1) {\n let listing = eventListings?.find((l) => l.id === selectedListingIds[0]);\n if (!listing) {\n listing = eventListings\n ?.flatMap((l) => flattenListingGroup(l))\n .find((l) => l.isFull && l.id === selectedListingIds[0]) as Listing;\n }\n\n if (!listing?.isLtGrp) {\n return listing;\n }\n }\n return undefined;\n }, [eventListings, selectedListingIds]);\n\n const selectedGroup = useMemo(() => {\n return eventListings?.find((l) => {\n const lg = l as ListingGroup;\n\n return (\n lg.isLtGrp &&\n lg.groupType == 'Leader' &&\n selectedListingIds.includes(lg.id)\n );\n }) as ListingGroup | undefined;\n }, [eventListings, selectedListingIds]);\n\n const {\n pricingSettings: listingPricingSettings,\n loaded: listingSettingLoaded,\n } = useGetListingAutoPricingSettings(selectedListing, event);\n\n const { pricingSettings: groupPricingSettings, loaded: groupSettingLoaded } =\n useListingGroupPricingSettings(selectedGroup?.ltGrpId, event);\n\n const listingFormMethods = useForm({\n defaultValues: {},\n });\n\n const listingGroupFormMethods = useForm({\n defaultValues: {\n desiredActiveListings: null,\n deprioritizedQuantities: null,\n undAbsAmt: null,\n undRelAmt: null,\n },\n });\n\n useEffect(() => {\n if (listingSettingLoaded) {\n listingFormMethods.reset(listingPricingSettings ?? {});\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [listingPricingSettings, listingSettingLoaded]);\n\n useEffect(() => {\n if (groupSettingLoaded && selectedGroup) {\n listingGroupFormMethods.reset({\n ...groupPricingSettings,\n deprioritizedQuantities: selectedGroup.deprioritizedQuantities,\n desiredActiveListings: selectedGroup.desiredActiveListings,\n undAbsAmt: selectedGroup.absoluteRankPremium,\n undRelAmt: selectedGroup.relativeRankPremium,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedGroup, groupSettingLoaded, groupPricingSettings]);\n\n return selectedGroup ? (\n \n \n \n \n \n ) : (\n \n \n \n \n \n );\n};\n\nexport const InventoryEventDetailContent = () => {\n const [containerRef, { width }] = useMeasure();\n const { selectedTab, recenterMap } = useInventoryEventDetailContext();\n\n const shouldUseVertical = useMemo(() => {\n return (\n selectedTab === SidePanelTab.PURCHASES ||\n selectedTab === SidePanelTab.SALES ||\n width < 815\n );\n }, [selectedTab, width]);\n\n useEffect(() => {\n recenterMap();\n }, [recenterMap, shouldUseVertical]);\n\n return (\n \n \n \n \n {(selectedTab === SidePanelTab.LISTINGS ||\n selectedTab === SidePanelTab.NOTES) && (\n \n )}\n \n \n \n \n \n );\n};\n","import clsx from 'clsx';\nimport { ComponentProps, ReactNode } from 'react';\nimport { EventVenueMap } from 'src/components/Events/VenueMap/EventVenueMap';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n EventSessionRole,\n useEventHubContext,\n} from 'src/contexts/EventHubContext';\nimport {\n ListingCompsNumberRange,\n ListingCompsSpectrum,\n} from 'src/hooks/useComparableListingsVenueMapColor';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature, SectionInfo } from 'src/WebApiController';\n\nimport * as styles from './InventoryEventPage.css';\n\nexport const InventoryEventPageSeatMapV2 = ({\n selectedListings,\n selectedSectionIds,\n markedSectionIds,\n onSectionClicked,\n onSectionHovered,\n onToggleMirrors,\n setSelectedSections,\n showColorBand,\n getColor,\n statsContent,\n}: {\n onSectionClicked: (e: MouseEvent, section: SectionInfo) => void;\n onSectionHovered?: (hoveredSection: SectionInfo) => ReactNode;\n onToggleMirrors?: (mirrors: SectionInfo[], exclude?: boolean) => void;\n setSelectedSections?: (sections: SectionInfo[]) => void;\n selectedListings: number[];\n selectedSectionIds: number[];\n markedSectionIds: number[];\n showColorBand?: boolean;\n getColor?: ComponentProps['getColor'];\n statsContent?: React.ReactNode;\n}) => {\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n const { sessionRole, enabled } = useEventHubContext();\n\n return (\n <>\n \n \n ) : undefined\n }\n statsContent={statsContent}\n />\n \n \n );\n};\n","import { isEmpty, uniq } from 'lodash-es';\nimport React, { useCallback, useMemo } from 'react';\nimport {\n Content,\n FormatContent,\n useContent,\n} from 'src/contexts/ContentContext';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { Stack } from 'src/core/ui';\nimport { calculatePercentile } from 'src/utils/arrayUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\nimport { CompListing } from 'src/WebApiController';\n\nimport * as styles from './VenueMapStats.css';\nimport { VeneuMapRightNowStats } from './VenueMapStats.types';\n\ntype VenueMapRightNowStatsProps = {\n compListings: CompListing[];\n currencyCode: string | null;\n quantityFilters: string[];\n setQuantityFilters: (filters: string[]) => void;\n showFilter: boolean;\n};\n\nexport const VenueMapRightNowStats: React.FC = ({\n compListings,\n currencyCode,\n quantityFilters,\n setQuantityFilters,\n showFilter,\n}) => {\n const minText = useContent(ContentId.Min);\n const p25Text = useContent(ContentId.P25);\n const p50Text = useContent(ContentId.P50);\n const splitChoices = useMemo(() => {\n return uniq(\n compListings.flatMap((listing) => listing.validPurchaseQuantities ?? [])\n ).reduce(\n (res, quantity) => {\n const stringQuantity = quantity + '';\n res[stringQuantity] = stringQuantity;\n return res;\n },\n {} as Record\n );\n }, [compListings]);\n\n const status = useMemo((): VeneuMapRightNowStats => {\n const listingCount = compListings.length;\n let ticketCount = 0;\n const ticketPrices: number[] = [];\n for (const listing of compListings) {\n if ((listing.availableTickets ?? 0) > 0) {\n ticketCount += listing.availableTickets ?? 0;\n const prices = Array(listing.availableTickets ?? 0).fill(\n listing.sellerAllInPrice?.amt ?? 0\n );\n ticketPrices.push(...prices);\n }\n }\n return {\n listingCount,\n ticketCount,\n ticketPriceMin: calculatePercentile(ticketPrices, 0),\n ticketPriceP25: calculatePercentile(ticketPrices, 25),\n ticketPriceAvg: calculatePercentile(ticketPrices, 50),\n };\n }, [compListings]);\n\n const formatPrice = useCallback(\n (price: number) => {\n return applyNumberFormatting({\n inputNumber: price,\n currencyCode,\n currencyDecimalDigits: 2,\n });\n },\n [currencyCode]\n );\n\n return (\n <>\n {!isEmpty(splitChoices) && showFilter && (\n \n \n \n )}\n \n \n
    \n \n
    \n
    \n {status.listingCount.toLocaleString()}\n
    \n
    \n \n
    \n \n
    \n
    \n {status.ticketCount.toLocaleString()}\n
    \n \n \n
    \n \n
    \n
    \n {formatPrice(status.ticketPriceMin)}\n
    \n \n \n
    \n \n
    \n
    \n {formatPrice(status.ticketPriceP25)}\n
    \n \n \n
    \n \n
    \n
    \n {formatPrice(status.ticketPriceAvg)}\n
    \n \n \n \n );\n};\n","import clsx from 'clsx';\nimport { isEmpty, union } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { FormProvider, useForm, useFormContext } from 'react-hook-form';\nimport { SwiperButton } from 'src/components/Buttons/SwiperButton';\nimport { PurchasesSideTable } from 'src/components/Purchases/PurchaseEventPage/PurchasesSideTable';\nimport { SalesSideTable } from 'src/components/Sales/SaleEventPage/SaleSideTable';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n EventSessionRole,\n useEventHubContext,\n} from 'src/contexts/EventHubContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { Stack } from 'src/core/ui';\nimport * as Tabs from 'src/core/ui/Tabs';\nimport { useListingGroupPricingSettings } from 'src/hooks/api/useListingGroupPricingSettings';\nimport {\n ListingCompsNumberRange,\n ListingCompsSpectrum,\n useComparableListingsVenueMapColor,\n} from 'src/hooks/useComparableListingsVenueMapColor';\nimport { useGetAccountAutoPricingSettings } from 'src/hooks/useGetAccountAutoPricingSettings';\nimport { useGetCompListings } from 'src/hooks/useGetCompListings';\nimport { useGetListingAutoPricingSettings } from 'src/hooks/useGetListingAutoPricingSettings';\nimport { useListingHasVenueMapInfo } from 'src/hooks/useListingHasVenueMapInfo';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useUserCanSetPrice } from 'src/hooks/useUserHasListingPermissions';\nimport { flattenListingGroup } from 'src/modals/GroupListings/components/groupingUtils';\nimport { useAutoPricingPreview } from 'src/modals/ListingDetails/components/AutoPricePreview/useAutoPricePreview';\nimport { useListingAutoPricingSettings } from 'src/modals/ListingDetails/components/useListingAutoPricingSettings';\nimport { getSectionInfoDisplay } from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getListingDetailsUpdateInput } from 'src/utils/inventoryUtils';\nimport {\n getCompleteEventConfigScoreOverrides,\n getMatchingSectionRow,\n getSeatScore,\n} from 'src/utils/seatScoreUtils';\nimport {\n CompListing,\n Event,\n Feature,\n Listing,\n ListingDetailsPricingUpdates,\n ListingDetailsUpdateInput,\n ListingGroup,\n ListingQuery,\n SectionInfo,\n} from 'src/WebApiController';\n\nimport { ListingWithSeatScore } from '../../ConnectedComparableListings';\nimport { MapWithCompListingsPreview } from '../../MapWithCompListingsPreview';\nimport { InventoryEventPageSeatMapV2 } from '../InventoryEventPageSeatMapV2';\nimport { NoteSectionV2 } from '../Sections/NoteSectionV2';\nimport { MarketListingHeader, SidePanelTab } from './MarketListingHeader';\nimport * as styles from './MarketListings.css';\nimport { VenueMapRightNowStats } from './VenueMapStats';\n\ntype MarketListingFormProps = {\n event: Event;\n eventListings?: Listing[] | null;\n selectedListingIds: number[];\n};\n\nexport const MarketListingsForm = ({\n event,\n eventListings,\n selectedListingIds,\n}: MarketListingFormProps) => {\n const hasAllowSeatScoreCompListingModeFeature = useUserHasFeature(\n Feature.AllowSeatScoreCompListingMode\n );\n const selectedListing = useMemo(() => {\n if (selectedListingIds.length <= 1) {\n let listing = eventListings?.find((l) => l.id === selectedListingIds[0]);\n if (!listing) {\n listing = eventListings\n ?.flatMap((l) => flattenListingGroup(l))\n .find((l) => l.isFull && l.id === selectedListingIds[0]) as Listing;\n }\n\n if (!listing?.isLtGrp) {\n return listing;\n }\n }\n return undefined;\n }, [eventListings, selectedListingIds]);\n\n const selectedGroup = useMemo(() => {\n return eventListings?.find((l) => {\n const lg = l as ListingGroup;\n\n return (\n lg.isLtGrp &&\n lg.groupType == 'Leader' &&\n selectedListingIds.includes(lg.id)\n );\n });\n }, [eventListings, selectedListingIds]);\n\n const {\n pricingSettings: listingPricingSettings,\n loaded: listingSettingLoaded,\n } = useGetListingAutoPricingSettings(selectedListing, event);\n const { pricingSettings: groupPricingSettings, loaded: groupSettingLoaded } =\n useListingGroupPricingSettings(selectedListing?.ltGrpId, event);\n const {\n pricingSettings: accountPricingSettings,\n loaded: accountSettingLoaded,\n } = useGetAccountAutoPricingSettings();\n\n // React-hook-form setup\n const methods = useForm({\n defaultValues: getListingDetailsUpdateInput(\n selectedListing,\n null,\n undefined,\n accountPricingSettings,\n groupPricingSettings,\n undefined,\n listingPricingSettings,\n hasAllowSeatScoreCompListingModeFeature\n ),\n });\n\n useEffect(() => {\n if (accountSettingLoaded || groupSettingLoaded || listingSettingLoaded) {\n methods.reset(\n getListingDetailsUpdateInput(\n selectedListing,\n null,\n undefined,\n accountPricingSettings,\n groupPricingSettings,\n undefined,\n listingPricingSettings\n )\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n selectedListing,\n accountSettingLoaded,\n groupSettingLoaded,\n listingSettingLoaded,\n ]);\n\n const canSetPrice = useUserCanSetPrice(selectedListing, false);\n\n return canSetPrice ? (\n \n \n \n ) : undefined;\n};\n\ntype MarketListingsWithAutoPricingProps = {\n event: Event;\n eventListings?: Listing[] | null;\n listing: Listing | undefined;\n listingGroup: Listing | undefined;\n selectedListingIds: number[];\n};\n\nexport const MarketListingsWithAutoPricing = ({\n event,\n eventListings,\n listing,\n listingGroup,\n selectedListingIds,\n}: MarketListingsWithAutoPricingProps) => {\n // State Hooks\n const { mapExists } = useListingHasVenueMapInfo(listing);\n const [compQuantityFilters, setCompQuantityFilters] = useState([]);\n const { watch } = useFormContext();\n const input = watch();\n\n const [activeTab, setActiveTab] = useState(\n SidePanelTab.LISTINGS\n );\n\n const { loginContext } = useAppContext();\n const { filterQuery } = useFilterQueryContext();\n const { venueMapInfo, activeConfigOverride } = useEventMapContext();\n\n const isMobile = useMatchMedia('mobile');\n\n const { compListingsQuery, compListingsGroupQuery } = useGetCompListings(\n event,\n listing?.id,\n listing?.currency,\n listingGroup?.ltGrpId\n );\n\n const { priceCalcQuery } = useAutoPricingPreview(event.viagId, listing?.id);\n\n const { sessionRole, enabled } = useEventHubContext();\n\n const sessionView = sessionRole === EventSessionRole.SidePanel;\n\n const {\n compListingSelectedSectionSettings,\n onCompListingSectionIdFilterChange,\n onCompListingSectionZoneChange,\n onSelectedSectionsChange,\n } = useListingAutoPricingSettings(listing);\n\n const formSectionFilterIds = useMemo(() => {\n return compListingSelectedSectionSettings?.sectionIdFilter ?? [];\n }, [compListingSelectedSectionSettings]);\n\n // Comp listings with section filters\n const compListings = useMemo(() => {\n if (listing?.id) {\n return priceCalcQuery.data?.compListings;\n }\n if (isEmpty(formSectionFilterIds)) {\n if (listingGroup?.ltGrpId) {\n return compListingsGroupQuery.data?.compListings;\n }\n return compListingsQuery.data ?? undefined;\n }\n\n if (listingGroup?.ltGrpId) {\n return compListingsGroupQuery.data?.compListings?.filter((l) => {\n const { section } = getMatchingSectionRow(l, venueMapInfo?.sections);\n return section && formSectionFilterIds.includes(section.id);\n });\n }\n return compListingsQuery.data?.filter((l) => {\n const { section } = getMatchingSectionRow(l, venueMapInfo?.sections);\n return section && formSectionFilterIds.includes(section.id);\n });\n }, [\n listing?.id,\n formSectionFilterIds,\n venueMapInfo?.sections,\n listingGroup?.ltGrpId,\n compListingsQuery.data,\n priceCalcQuery.data?.compListings,\n compListingsGroupQuery.data?.compListings,\n ]);\n\n const selectedSectionIds = useMemo(() => {\n const setionIds: number[] = [];\n if (!listing) {\n return setionIds;\n }\n\n const { section } = getMatchingSectionRow(\n listing.seating,\n venueMapInfo?.sections\n );\n\n if (section) {\n setionIds.push(section.id);\n }\n\n return setionIds;\n }, [listing, venueMapInfo?.sections]);\n\n const filteredSections = useMemo(() => {\n return (\n venueMapInfo?.sections.filter((section) => {\n return formSectionFilterIds?.includes(section.id);\n }) ?? []\n );\n }, [venueMapInfo?.sections, formSectionFilterIds]);\n\n const scoreOverrides = useMemo(\n () =>\n getCompleteEventConfigScoreOverrides(\n venueMapInfo?.sectionScores,\n activeConfigOverride?.scoreOverrides,\n false\n ),\n [activeConfigOverride?.scoreOverrides, venueMapInfo?.sectionScores]\n );\n\n const populateListingWithSeatScore = useCallback(\n (listing: Listing) => {\n const seatScore = getSeatScore(\n listing.seating,\n scoreOverrides,\n venueMapInfo?.sections\n );\n if (seatScore != null) return { ...listing, seatScore };\n\n return listing;\n },\n [scoreOverrides, venueMapInfo?.sections]\n );\n\n const selectedListingFromListingGroupWithSeatScore:\n | ListingWithSeatScore[]\n | undefined = useMemo(() => {\n if (!listingGroup) {\n return;\n }\n\n return flattenListingGroup(listingGroup)\n .map((l) => l as Listing)\n .map(populateListingWithSeatScore);\n }, [populateListingWithSeatScore, listingGroup]);\n\n const showFilter = useMemo(() => {\n if (listing?.id) {\n return false;\n }\n if (listingGroup?.ltGrpId) {\n return false;\n }\n return true;\n }, [listing?.id, listingGroup?.ltGrpId]);\n\n const compListingsWithSeatScore: CompListing[] | undefined = useMemo(() => {\n const compsWithScore =\n compListings?.map((l) => {\n const seatScore = getSeatScore(\n l,\n scoreOverrides,\n venueMapInfo?.sections\n );\n if (seatScore != null) return { ...l, seatScore };\n\n return l;\n }) ?? [];\n\n if (!showFilter || isEmpty(compQuantityFilters)) {\n return compsWithScore;\n }\n return compsWithScore.filter(({ validPurchaseQuantities }) => {\n if (isEmpty(validPurchaseQuantities)) {\n return true;\n }\n return validPurchaseQuantities.some(\n (quantity) => compQuantityFilters.indexOf(quantity + '') > -1\n );\n });\n }, [\n compListings,\n showFilter,\n compQuantityFilters,\n scoreOverrides,\n venueMapInfo?.sections,\n ]);\n\n const getColor = useComparableListingsVenueMapColor(\n eventListings ?? [],\n compListingsWithSeatScore,\n compListingsQuery.data ?? undefined\n );\n\n const onSectionClicked = useCallback(\n (e: MouseEvent, section: SectionInfo) => {\n if (e.shiftKey) {\n if (venueMapInfo && section.rows.length > 0) {\n // Try to just get the ticket class id of the first valid row in the section\n const row = section.rows[0];\n if (row) {\n const ticketClassId = row.tktClass?.id;\n if (ticketClassId) {\n // If we have a valid ticketClassId, then try to get all sections with the same ticketClassId\n const sectionsSameZone = venueMapInfo.sections?.filter((s) =>\n s.rows.some((r) => r.tktClass?.id === ticketClassId)\n );\n onCompListingSectionZoneChange(sectionsSameZone);\n }\n }\n }\n } else {\n onCompListingSectionIdFilterChange(\n section.id,\n filteredSections,\n section,\n listing\n );\n }\n },\n [\n filteredSections,\n listing,\n onCompListingSectionIdFilterChange,\n onCompListingSectionZoneChange,\n venueMapInfo,\n ]\n );\n\n const onSectionHovered = useCallback(\n (hoveredSection: SectionInfo) => {\n return getSectionInfoDisplay(\n hoveredSection,\n compListingsWithSeatScore,\n venueMapInfo?.sectionScores\n );\n },\n [compListingsWithSeatScore, venueMapInfo?.sectionScores]\n );\n\n const onToggleMirrors = useCallback(\n (mirrors: SectionInfo[], exclude?: boolean) => {\n const mirrorIds = mirrors.map(({ id }) => id);\n const filteredIds: number[] = [];\n if (exclude) {\n const filtered = formSectionFilterIds.filter(\n (id) => !mirrorIds.includes(id)\n );\n filteredIds.push(...filtered);\n } else {\n const filtered = formSectionFilterIds.concat(mirrorIds);\n filteredIds.push(...filtered);\n }\n const filteredSections = (venueMapInfo?.sections ?? []).filter(({ id }) =>\n filteredIds.includes(id)\n );\n onCompListingSectionZoneChange(filteredSections);\n },\n [\n formSectionFilterIds,\n onCompListingSectionZoneChange,\n venueMapInfo?.sections,\n ]\n );\n\n const compListingSectionIds = useMemo(() => {\n if (isEmpty(selectedListingIds)) {\n // no listing selected\n return formSectionFilterIds;\n }\n // Section name lookup should be sufficient,\n // update here to also check on rowId when necessary.\n const sectionNames = (priceCalcQuery.data?.compListings ?? []).map(\n (l) => l.section\n );\n const compSections = (venueMapInfo?.sections ?? [])\n .filter((section) => sectionNames.includes(section.name))\n .map(({ id }) => id);\n\n return union(compSections, formSectionFilterIds);\n }, [\n formSectionFilterIds,\n selectedListingIds,\n priceCalcQuery.data?.compListings,\n venueMapInfo?.sections,\n ]);\n\n const listingIdFilterQuery = useMemo(() => {\n const marketplaceEntityIds = filterQuery?.marketplaceEntityIds?.map(Number);\n\n return {\n listingIds:\n (selectedListingIds?.length > 0 ? selectedListingIds : null) ||\n marketplaceEntityIds,\n };\n }, [filterQuery?.marketplaceEntityIds, selectedListingIds]);\n\n const hasHideNavAndFilterBarsFeature = useUserHasFeature(\n Feature.HideNavAndFilterBars\n );\n\n return (\n setActiveTab(value as SidePanelTab)}\n style={{ width: '100%', height: '100%' }}\n >\n \n {isMobile && }\n \n\n \n \n }\n />\n \n {!hasHideNavAndFilterBarsFeature && (\n \n \n \n \n onCompListingSectionZoneChange(sections, false)\n }\n showColorBand={!listing}\n getColor={getColor}\n statsContent={\n \n }\n />\n \n \n \n \n \n \n )}\n {!hasHideNavAndFilterBarsFeature && (\n \n \n \n \n \n )}\n \n \n \n \n \n );\n};\n","import { useCallback } from 'react';\nimport { FilterPillList } from 'src/components/common/FilterPill/FilterPillList';\nimport { useStubHubListingManualPricingContext } from 'src/components/Listings/InventoryEventPage/MarketListings/StubHubListingsManualPricingContext';\nimport { SectionInfo } from 'src/WebApiController';\nexport const ManualSectionRowIdFilter = ({\n disabled,\n}: {\n disabled?: boolean;\n}) => {\n const {\n onSectionFilterChanged,\n onRowFiltersChanged,\n selectedSections,\n rowIdFilters,\n sectionRowIdFilters,\n } = useStubHubListingManualPricingContext();\n\n const selectedSectionChange = useCallback(\n (sectionId: number, selectedSections: SectionInfo[]) => {\n const section: SectionInfo | undefined = selectedSections.find(\n (s) => s.id === sectionId\n );\n\n if (section) {\n onSectionFilterChanged(section);\n }\n },\n [onSectionFilterChanged]\n );\n\n return (\n
    \n \n
    \n );\n};\n","import clsx from 'clsx';\nimport { useCallback, useMemo, useState } from 'react';\nimport { SwiperButton } from 'src/components/Buttons/SwiperButton';\nimport { PurchasesSideTable } from 'src/components/Purchases/PurchaseEventPage/PurchasesSideTable';\nimport { SalesSideTable } from 'src/components/Sales/SaleEventPage/SaleSideTable';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n EventSessionRole,\n useEventHubContext,\n} from 'src/contexts/EventHubContext';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { Button, Stack } from 'src/core/ui';\nimport * as Tabs from 'src/core/ui/Tabs';\nimport { useGetCompListings } from 'src/hooks/useGetCompListings';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { flattenListingGroup } from 'src/modals/GroupListings/components/groupingUtils';\nimport { getSectionInfoDisplay } from 'src/utils/autoPricingUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n getCompleteEventConfigScoreOverrides,\n getSeatScore,\n} from 'src/utils/seatScoreUtils';\nimport {\n CompListing,\n Event,\n Feature,\n Listing,\n SectionInfo,\n} from 'src/WebApiController';\n\nimport { InventoryEventPageSeatMapV2 } from '../InventoryEventPageSeatMapV2';\nimport { NoteSectionV2 } from '../Sections/NoteSectionV2';\nimport { ManualSectionRowIdFilter } from './ManualSectionRowIdFilter';\nimport { MarketListingHeader, SidePanelTab } from './MarketListingHeader';\nimport * as styles from './MarketListings.css';\nimport { useStubHubListingManualPricingContext } from './StubHubListingsManualPricingContext';\n\nconst QUANTITY_OPTIONS = [\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '10',\n].reduce(\n (r, c) => {\n r[c] = c;\n return r;\n },\n {} as Record\n);\n\ntype StubHubListingsWithManualPricingProps = {\n event: Event;\n eventListings?: Listing[] | null;\n\n selectedListingIds: number[];\n};\n\nexport const StubHubListingsWithManualPricing = ({\n event,\n eventListings,\n selectedListingIds,\n}: StubHubListingsWithManualPricingProps) => {\n const [activeTab, setActiveTab] = useState(\n SidePanelTab.LISTINGS\n );\n\n const { sessionRole, enabled } = useEventHubContext();\n\n const listingIdFilterQuery = useMemo(() => {\n return {\n listingIds: selectedListingIds?.length > 0 ? selectedListingIds : null,\n };\n }, [selectedListingIds]);\n\n const selectedListing = useMemo(() => {\n if (selectedListingIds.length > 1) {\n return undefined;\n }\n let listing = eventListings?.find((l) => l.id === selectedListingIds[0]);\n if (!listing) {\n listing = eventListings\n ?.flatMap((l) => flattenListingGroup(l))\n .find((l) => l.isFull && l.id === selectedListingIds[0]) as Listing;\n }\n\n if (listing?.isLtGrp) {\n return undefined;\n }\n return listing;\n }, [eventListings, selectedListingIds]);\n\n const {\n onQuantityFilterChanged,\n onSectionZoneFilterChanged,\n onSectionFilterChanged,\n resetFilters,\n selectedSections,\n sectionIdFilters,\n rowIdFilters,\n quantityFilter,\n hasActiveFilters,\n } = useStubHubListingManualPricingContext();\n\n const isMobile = useMatchMedia('mobile');\n\n const { compListingsQuery } = useGetCompListings(\n event,\n selectedListing?.id,\n selectedListing?.currency\n );\n\n const { venueMapInfo, activeConfigOverride } = useEventMapContext();\n\n const scoreOverrides = useMemo(\n () =>\n getCompleteEventConfigScoreOverrides(\n venueMapInfo?.sectionScores,\n activeConfigOverride?.scoreOverrides,\n false\n ),\n [activeConfigOverride?.scoreOverrides, venueMapInfo?.sectionScores]\n );\n\n const compListingsWithSeatScore: CompListing[] | undefined = useMemo(() => {\n const compListingData = compListingsQuery.data;\n\n const compListings =\n compListingData?.map((l) => {\n const seatScore = getSeatScore(\n l,\n scoreOverrides,\n venueMapInfo?.sections\n );\n if (seatScore != null) return { ...l, seatScore };\n\n return l;\n }) ?? [];\n\n if (selectedSections.length === 0) {\n return compListings;\n }\n const filterNames = new Set(\n selectedSections.map(({ name }) => name)\n );\n\n const allFilterRowIds = new Set();\n for (const section of selectedSections) {\n for (const row of section.rows) {\n allFilterRowIds.add(row.id);\n }\n }\n\n const formFilterRowIds = new Set(rowIdFilters);\n\n const filterRowIds =\n formFilterRowIds.size > 0 ? formFilterRowIds : allFilterRowIds;\n\n return compListings.filter((l) =>\n l.rowId\n ? filterRowIds.has(l.rowId)\n : l.section\n ? filterNames.has(l.section)\n : false\n );\n }, [\n compListingsQuery.data,\n selectedSections,\n rowIdFilters,\n scoreOverrides,\n venueMapInfo?.sections,\n ]);\n\n const onSectionHovered = useCallback(\n (hoveredSection: SectionInfo) => {\n return getSectionInfoDisplay(\n hoveredSection,\n compListingsWithSeatScore,\n venueMapInfo?.sectionScores\n );\n },\n [compListingsWithSeatScore, venueMapInfo?.sectionScores]\n );\n\n const onSectionClicked = useCallback(\n (e: MouseEvent, section: SectionInfo) => {\n if (e.shiftKey) {\n if (venueMapInfo && section.rows.length > 0) {\n // Try to just get the ticket class id of the first valid row in the section\n const row = section.rows[0];\n if (row) {\n const ticketClassId = row.tktClass?.id;\n if (ticketClassId) {\n // If we have a valid ticketClassId, then try to get all sections with the same ticketClassId\n const sectionsSameZone = venueMapInfo.sections?.filter((s) =>\n s.rows.some((r) => r.tktClass?.id === ticketClassId)\n );\n onSectionZoneFilterChanged(sectionsSameZone);\n }\n }\n }\n } else {\n onSectionFilterChanged(section);\n }\n },\n [onSectionFilterChanged, onSectionZoneFilterChanged, venueMapInfo]\n );\n\n const onToggleMirrors = useCallback(\n (mirrors: SectionInfo[], exclude?: boolean) => {\n const mirrorIds = mirrors.map(({ id }) => id);\n const filteredIds: number[] = [];\n if (exclude) {\n const filtered = sectionIdFilters.filter(\n (id) => !mirrorIds.includes(id)\n );\n filteredIds.push(...filtered);\n } else {\n const filtered = sectionIdFilters.concat(mirrorIds);\n filteredIds.push(...filtered);\n }\n const filteredSections = (venueMapInfo?.sections ?? []).filter(({ id }) =>\n filteredIds.includes(id)\n );\n onSectionZoneFilterChanged(filteredSections);\n },\n [onSectionZoneFilterChanged, sectionIdFilters, venueMapInfo?.sections]\n );\n\n const hasHideNavAndFilterBarsFeature = useUserHasFeature(\n Feature.HideNavAndFilterBars\n );\n\n return (\n setActiveTab(value as SidePanelTab)}\n style={{ width: '100%', height: '100%' }}\n >\n \n {isMobile && }\n \n\n \n \n \n \n onSectionZoneFilterChanged(sections, false)\n }\n showColorBand={false}\n />\n \n \n \n {hasActiveFilters && (\n \n )}\n \n\n \n \n
    \n \n
    \n {\n onQuantityFilterChanged(parseInt(newValue));\n }}\n />\n
    \n
    \n \n \n\n {!hasHideNavAndFilterBarsFeature && (\n \n \n \n \n \n )}\n {!hasHideNavAndFilterBarsFeature && (\n \n \n \n \n \n )}\n\n \n \n \n \n \n );\n};\n","import { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Event, Feature, Listing } from 'src/WebApiController';\n\nimport { InventoryEventDetail } from './InventoryEventDetail/InventoryEventDetail';\nimport { InventoryEventTabs } from './InventoryEventPage';\nimport { MarketListingsForm } from './MarketListings/MarketListings';\nimport { StubHubListingsWithManualPricing } from './MarketListings/StubHubListingsWithManualPricing';\n\ntype InventoryEventPageRightPanelProps = {\n event: Event;\n listings: Listing[] | null | undefined;\n selectedListingIds: number[];\n activeTab: InventoryEventTabs;\n};\n\nexport const InventoryEventPageRightPanel = ({\n event,\n listings,\n selectedListingIds,\n activeTab,\n}: InventoryEventPageRightPanelProps) => {\n const hasCondensedTabsFeature = useUserHasFeature(\n Feature.CondensedPreviewTabsAndSingleListing\n );\n\n if (activeTab === InventoryEventTabs.ManualPricing) {\n return (\n \n );\n }\n\n return hasCondensedTabsFeature ? (\n \n ) : (\n \n );\n};\n","import {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n EventAccordionItemProps,\n translateEventToInventoryAccordionItem,\n} from 'src/components/Accordions';\nimport { SwiperButton } from 'src/components/Buttons/SwiperButton';\nimport { BackSection } from 'src/components/common/BackSection';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { StubHubListingManualPricingContextProvider } from 'src/components/Listings/InventoryEventPage/MarketListings/StubHubListingsManualPricingContext';\nimport { ActiveFocusContextProvider } from 'src/contexts/ActiveFocusContext/ActiveFocusContext';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { CollapsableViewProvider } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport {\n EventSessionRole,\n useEventHubContext,\n} from 'src/contexts/EventHubContext/EventHubContext';\nimport { EventMapContextProvider } from 'src/contexts/EventMapContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { InputPriceFocusProvider } from 'src/contexts/InputPriceFocusContext/InputPriceFocusContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport {\n EventLastReviewedContextProvider,\n useEventLastReviewedContext,\n} from 'src/contexts/SellerEventLastReviewContext/SellerEventLastReviewContext';\nimport {\n SidePanelPage,\n SidePanelProvider,\n} from 'src/contexts/SidePanelContext';\nimport { ExplorerLayout } from 'src/core/layouts';\nimport { LoadingButton } from 'src/core/POS/LoadingButton/LoadingButton';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useSellerEventNote } from 'src/hooks/api/useSellerEventNote';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useQuickFilterSearchParam } from 'src/hooks/useQuickFilters';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { SearchSolidIcon } from 'src/svgs/Viagogo';\nimport { InventoryDeeplinkQueryParam } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getDeepLinkIdFromUrl } from 'src/utils/deepLinkUtils';\nimport { getAppliedFilterCounts } from 'src/utils/eventQueryUtils';\nimport { getListingDetailsModalConfigWithDeepLink } from 'src/utils/inventoryUtils';\nimport {\n EventWithData,\n Feature,\n Listing,\n ListingDetailDataField,\n ListingDetails,\n ListingQuery,\n} from 'src/WebApiController';\nimport Swiper from 'swiper';\n\nimport CommandMenu from './CommandMenu/CommandMenu';\nimport { InventoryEventCatchUpBar } from './InventoryEventCatchUp';\nimport * as styles from './InventoryEventPage.css';\nimport { useCatchUpParams } from './InventoryEventPage.hooks';\nimport { InventoryEventPageContent } from './InventoryEventPageContent';\nimport { InventoryEventPageHeader } from './InventoryEventPageHeader';\nimport { InventoryEventPageRightPanel } from './InventoryEventPageRightPanel';\n\nexport function InventoryEventPage({\n viagVirtualId,\n posEventIds,\n returnUrl,\n}: {\n posEventIds?: string[];\n viagVirtualId?: string;\n returnUrl?: string;\n}) {\n const { activeAccountWebClientConfig } = useAppContext();\n const hasPricingCatchupFeature = useUserHasFeature(Feature.PricingCatchup);\n const {\n eventsTransformed,\n eventsExpansion: { setListItemExpansion },\n } = useCatalogDataContext();\n\n useEffect(() => {\n if (!viagVirtualId && posEventIds?.length) {\n setListItemExpansion(\n true,\n posEventIds.map((id) => `old:${id}`)\n );\n } else if (viagVirtualId) {\n setListItemExpansion(true, [viagVirtualId]);\n }\n }, [\n activeAccountWebClientConfig,\n posEventIds,\n setListItemExpansion,\n viagVirtualId,\n ]);\n\n const { setAllGroupsIds } = useMultiSelectionContext();\n\n const accordionItemProps = useMemo(\n () =>\n eventsTransformed?.length\n ? eventsTransformed.find(\n (ev) =>\n ev.event.viagVirtualId === viagVirtualId ||\n ev.event.posIds.some((id) => posEventIds?.includes(id))\n )\n : undefined,\n [eventsTransformed, posEventIds, viagVirtualId]\n );\n\n const inventoryAccordionItem = useMemo(\n () =>\n accordionItemProps &&\n translateEventToInventoryAccordionItem(accordionItemProps, 0, true),\n [accordionItemProps]\n );\n\n useEffect(() => {\n if (inventoryAccordionItem) {\n setAllGroupsIds([inventoryAccordionItem.itemId]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inventoryAccordionItem]);\n\n return (\n \n \n \n \n \n \n \n \n {hasPricingCatchupFeature && }\n \n \n \n \n \n \n \n );\n}\n\ntype InventoryEventContentProps = {\n accordionItemProps?: EventWithData;\n inventoryAccordionItem?: EventAccordionItemProps;\n returnUrl?: string;\n};\n\nexport const enum InventoryEventTabs {\n Info = 'info',\n Tags = 'tags',\n SellThroughRate = 'sellThroughRate',\n ManualPricing = 'manualPricing',\n Transactions = 'transactions',\n Fulfillment = 'fulfillment',\n Dashboard = 'dashboard',\n EditMap = 'editMap',\n ZoneMap = 'zoneMap',\n PricingABTest = 'pricingABTest',\n None = 'none',\n}\n\nfunction InventoryEventContent({\n accordionItemProps,\n inventoryAccordionItem,\n returnUrl,\n}: InventoryEventContentProps) {\n const [selectedListingIds, setSelectedListingIds] = useState([]);\n\n const { isLoading } = useCatalogDataContext();\n\n const isMobile = useMatchMedia('mobile');\n\n const quickFilterSearchParams = useQuickFilterSearchParam();\n const { tempQuery, initialQuery } = useFilterQueryContext();\n\n const { setModal } = useContext(ModalContext);\n const { posEntity: listing, setActivePosEntity } =\n useActivePosEntityContext();\n\n const hasPricingV2DemandDashboard = useUserHasFeature(\n Feature.PricingV2DemandDashboard\n );\n const intialActiveTab = hasPricingV2DemandDashboard\n ? InventoryEventTabs.Dashboard\n : InventoryEventTabs.Info;\n\n const [activeTab, setActiveTab] = useState(intialActiveTab);\n\n const activeId = getDeepLinkIdFromUrl(\n InventoryDeeplinkQueryParam,\n window.location.href\n );\n\n useEffect(() => {\n if (activeId?.length && !listing) {\n setActivePosEntity(parseInt(activeId), undefined, true, [\n ListingDetailDataField.Basic,\n ]);\n setModal(getListingDetailsModalConfigWithDeepLink(activeId));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeId]);\n\n const swiperRef = useRef();\n\n const event = accordionItemProps?.event;\n\n const {\n isCompleted,\n isLoading: isEventReviewedLoading,\n onSettingVirtualIds,\n onUpdateLastReviewedDateTime,\n } = useEventLastReviewedContext();\n\n useEffect(() => {\n onSettingVirtualIds(event?.viagVirtualId ? [event?.viagVirtualId] : []);\n }, [event?.viagVirtualId, onSettingVirtualIds]);\n\n const { addNote, isLoading: isEventNoteLoading } = useSellerEventNote(\n event?.viagId\n );\n const markAsReviewed = useContent(ContentId.MarkAsReviewed);\n const markedAsReviewed = useContent(ContentId.MarkedAsReviewed);\n\n const { onNextClick, isCatchupMode } = useCatchUpParams();\n\n const onMarkAsReviewed = useCallback(async () => {\n if (event?.viagVirtualId) {\n await addNote(markedAsReviewed);\n onUpdateLastReviewedDateTime(event.viagVirtualId);\n onNextClick();\n }\n }, [\n addNote,\n event?.viagVirtualId,\n markedAsReviewed,\n onNextClick,\n onUpdateLastReviewedDateTime,\n ]);\n\n const {\n onSelectListing,\n onUpdateInventoryTab,\n selectedListingId,\n sessionRole,\n inventoryTab,\n enabled,\n } = useEventHubContext();\n\n const onSetInventoryTab = useCallback(\n (tab: InventoryEventTabs) => {\n setActiveTab(tab);\n if (enabled && sessionRole === EventSessionRole.Main) {\n onUpdateInventoryTab(tab);\n }\n },\n [enabled, onUpdateInventoryTab, sessionRole]\n );\n\n useEffect(() => {\n if (enabled && sessionRole === EventSessionRole.SidePanel && inventoryTab) {\n setActiveTab(inventoryTab);\n }\n }, [activeTab, enabled, inventoryTab, sessionRole]);\n\n useEffect(() => {\n if (enabled && selectedListingId) {\n setSelectedListingIds([selectedListingId]);\n }\n }, [enabled, selectedListingId]);\n\n useEffect(() => {\n if (enabled && selectedListingIds?.length == 1) {\n onSelectListing(selectedListingIds[0]);\n }\n }, [enabled, onSelectListing, selectedListingIds]);\n\n if (!event) {\n if (\n quickFilterSearchParams ||\n getAppliedFilterCounts(tempQuery, initialQuery)\n )\n return (\n \n \n \n }\n >\n \n \n \n \n \n \n \n );\n }\n\n if (isLoading || !event) {\n return ;\n }\n\n return (\n
    \n \n \n )\n }\n >\n
    \n {isMobile && (\n \n \n \n \n )}\n \n \n {enabled && sessionRole === EventSessionRole.SidePanel ? (\n \n ) : (\n \n )}\n \n {isCatchupMode && (\n
    \n \n
    \n )}\n
    \n \n
    \n );\n}\n","import { useCallback, useMemo } from 'react';\nimport { useLocation, useSearchParams } from 'react-router-dom';\nimport { InventoryEventPage } from 'src/components/Listings/InventoryEventPage';\nimport { MainFilterBar } from 'src/components/MainFilterBar';\nimport { ActivePosEntityProvider } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n CatalogDataContextProvider,\n ExpandedEventData,\n} from 'src/contexts/CatalogDataContext';\nimport { CatalogMetricsContextProvider } from 'src/contexts/CatalogMetricsContext';\nimport { CatalogMultiSelectionContextProvider } from 'src/contexts/CatalogMultiSelectionContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { EventHubContextProvider } from 'src/contexts/EventHubContext';\nimport { FilterQueryContextProvider } from 'src/contexts/FilterQueryContext';\nimport { ListingNotificationContextProvider } from 'src/contexts/ListingNotificationContext';\nimport { MultiSelectionContextProvider } from 'src/contexts/MultiSelectionContext';\nimport { SellerUserSettingsProvider } from 'src/contexts/SellerUserSettingsContext';\nimport { useGetActiveAccountClientConfig } from 'src/hooks/useGetActiveAccountClientConfig';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport {\n getDefaultReturnUrl,\n INVENTORY_USER_SETTINGS,\n queryIdSearchParam,\n} from 'src/navigations/Routes/InventoryEvent/constants';\nimport {\n EventIdQueryParam,\n InventoryDeeplinkQueryParam,\n} from 'src/utils/constants/constants';\nimport { removeDeepLinkUrlPartsFromRelativeUrl } from 'src/utils/deepLinkUtils';\nimport { EmptyListingQuery } from 'src/utils/eventQueryUtils';\nimport { transformData } from 'src/utils/eventWithDataUtils';\nimport { ListingCatalogQueryKey } from 'src/utils/inventoryUtils';\nimport { addListingMetrics } from 'src/utils/ticketMetricUtils';\nimport { EventPageLocationState } from 'src/utils/types/EventPageLocationState';\nimport {\n ActionOutboxEntityType,\n Feature,\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingMetrics,\n ListingQuery,\n UserSetting,\n} from 'src/WebApiController';\n\nimport {\n getCatalogData,\n getCatalogDataExpanded,\n getCatalogMetrics,\n getCatalogSectionalDataExpanded,\n listingQueryValueTransformFromUrl,\n listingQueryValueTransformToUrl,\n} from '../Inventory';\nimport { MainRoute } from '../MainRoute';\nimport {\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n POS_EVENT_IDS_SEPARATOR,\n TAB_EVENT_IDS_2_QUERY_PARAM,\n TAB_EVENT_IDS_QUERY_PARAM,\n TAB_EVENT_IDS_SEPARATOR,\n} from './InventoryEvent.constants';\n\nexport function InventoryEvent() {\n const [searchParams] = useSearchParams();\n const oldPosEventId = searchParams.get(queryIdSearchParam);\n const viagEventId = searchParams.get(EventIdQueryParam);\n\n const activeEventIds = searchParams.get(ACTIVE_EVENT_IDS_QUERY_PARAM);\n const tabEventIds = searchParams.get(TAB_EVENT_IDS_QUERY_PARAM);\n\n const activeEventIds2 = searchParams.get(ACTIVE_EVENT_IDS_2_QUERY_PARAM);\n const tabEventIds2 = searchParams.get(TAB_EVENT_IDS_2_QUERY_PARAM);\n\n const location = useLocation();\n\n const posEventIds = useMemo(\n // We need to make sure all the ids in the params are lowercase or else it won't be found in the CatalogDataContext\n () =>\n (tabEventIds != null\n ? activeEventIds?.toLowerCase()?.split(POS_EVENT_IDS_SEPARATOR)\n : oldPosEventId?.toLowerCase()?.split(POS_EVENT_IDS_SEPARATOR)) ?? [],\n [activeEventIds, oldPosEventId, tabEventIds]\n );\n\n const viagogoVirtualId = useMemo(\n // We need to make sure all the ids in the params are lowercase or else it won't be found in the CatalogDataContext\n () =>\n tabEventIds2 != null\n ? activeEventIds2?.toLowerCase()\n : viagEventId?.toLowerCase(),\n [activeEventIds2, tabEventIds2, viagEventId]\n );\n\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const hasSectionalLoadInListingTable = useUserHasFeature(\n Feature.SectionalLoadInListingTable\n );\n\n const getCatalogDataExpandedCallback = useCallback(\n (ids: string[], filterQuery: ListingQuery) => {\n if (hasSectionalLoadInListingTable) {\n return getCatalogSectionalDataExpanded(\n ids,\n filterQuery,\n [\n ListingDetailDataField.Basic,\n ListingDetailDataField.Pricing,\n ListingDetailDataField.AutoPricing,\n ],\n {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError(\n 'ListingClient.getListingsSectionalDataForEvents',\n error,\n {\n ...filterQuery,\n eventIds: ids,\n }\n );\n },\n }\n );\n }\n return getCatalogDataExpanded(ids, filterQuery, {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError('ListingClient.getListingsForEvents', error, {\n ...filterQuery,\n eventIds: ids,\n });\n },\n });\n },\n [activeAccountWebClientConfig, hasSectionalLoadInListingTable, trackError]\n );\n\n const onCatalogDataExpandedCallback = useCallback(\n (\n ids: string[],\n filterQuery: ListingQuery,\n currentData?: ExpandedEventData\n ) =>\n getCatalogSectionalDataExpanded(\n ids,\n filterQuery,\n [ListingDetailDataField.Purchase, ListingDetailDataField.Tags],\n {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError('ListingClient.getCatalogSectionalDataExpanded', error, {\n ...filterQuery,\n eventIds: ids,\n });\n },\n },\n currentData\n ),\n [activeAccountWebClientConfig, trackError]\n );\n\n const initialQuery = useMemo(() => {\n if (posEventIds.length || tabEventIds?.length) {\n const oldPosEventIds = tabEventIds\n ? tabEventIds\n .split(TAB_EVENT_IDS_SEPARATOR)\n .flatMap((eids) => eids.split(POS_EVENT_IDS_SEPARATOR))\n : posEventIds;\n return { ...EmptyListingQuery, oldPosEventIds };\n } else if (tabEventIds2?.length || viagogoVirtualId) {\n const eventOrMappingIds = tabEventIds2\n ? tabEventIds2.split(TAB_EVENT_IDS_SEPARATOR)\n : [viagogoVirtualId!];\n return { ...EmptyListingQuery, eventOrMappingIds };\n }\n\n return { ...EmptyListingQuery };\n }, [posEventIds, tabEventIds, tabEventIds2, viagogoVirtualId]);\n\n const getActClientCfg = useGetActiveAccountClientConfig(\n 'InventoryEvent.ListingClient.getListingByListingId'\n );\n\n const hasSectionalLoadDataFeature = useUserHasFeature(\n Feature.ListingLoadBySection\n );\n\n const getActivePosEntity = useCallback(\n async (\n posEntityId: number,\n curEntity?: ListingDetails | null,\n dataToGet?: string[] | null\n ) => {\n const actAccountCfg = await getActClientCfg();\n\n const listingDetail = await new ListingClient(\n actAccountCfg\n ).getListingByListingId(\n posEntityId,\n hasSectionalLoadDataFeature ? (curEntity ?? undefined) : undefined,\n hasSectionalLoadDataFeature\n ? (dataToGet?.map((s) => s as ListingDetailDataField) ?? [])\n : undefined\n );\n\n if (listingDetail) {\n return {\n posEntityId: listingDetail.id,\n posEntity: listingDetail,\n posEntityDisplayId: listingDetail.idOnMkp,\n };\n }\n\n return {};\n },\n [getActClientCfg, hasSectionalLoadDataFeature]\n );\n\n // Only use value provided at the first time (should be from '/inventory')\n const returnUrl = useMemo(() => {\n const locationState = (location.state ?? {}) as EventPageLocationState;\n\n if (locationState.returnUrl && locationState.keepReturnUrlUnchanged) {\n return locationState.returnUrl;\n }\n\n const relativeUrl =\n locationState.returnUrl || getDefaultReturnUrl(viagEventId);\n\n return removeDeepLinkUrlPartsFromRelativeUrl(relativeUrl, [\n InventoryDeeplinkQueryParam,\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n TAB_EVENT_IDS_QUERY_PARAM,\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n TAB_EVENT_IDS_2_QUERY_PARAM,\n ]);\n }, [location.state, viagEventId]);\n\n const hasMetricsV2Feature = useUserHasFeature(Feature.CatalogMetricsV2);\n\n if (\n !posEventIds.length &&\n !tabEventIds?.length &&\n !tabEventIds2?.length &&\n !viagogoVirtualId\n ) {\n return null;\n }\n\n return (\n \n \n initialQuery={initialQuery}\n emptyQuery={EmptyListingQuery}\n viewModeSettingId={UserSetting.InventoryPageViewMode}\n saveQueryInUrl\n queryValueTransformToUrl={listingQueryValueTransformToUrl}\n queryValueTransformFromUrl={listingQueryValueTransformFromUrl}\n >\n \n entityType={ActionOutboxEntityType.Listing}\n queryKey={ListingCatalogQueryKey}\n getCatalogData={(c, f) => getCatalogData(c, f, true)}\n getCatalogDataExpanded={getCatalogDataExpandedCallback}\n onCatalogDataExpanded={\n hasSectionalLoadInListingTable\n ? onCatalogDataExpandedCallback\n : undefined\n }\n transformEventData={transformData}\n >\n \n queryKey=\"getCatalogListingMetrics\"\n entityType={ActionOutboxEntityType.Listing}\n getCatalogMetrics={(c, f, r) =>\n getCatalogMetrics(c, f, r, hasMetricsV2Feature)\n }\n addCatalogMetrics={addListingMetrics}\n >\n \n entityType={ActionOutboxEntityType.Listing}\n getActivePosEntity={getActivePosEntity}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { Navigate, useLocation, useParams } from 'react-router-dom';\nimport { createInventoryEventUrl } from 'src/navigations/Routes/InventoryEvent/InventoryEvent.utils';\n\n/**\n * This component is used to redirect old URL with the form\n * /inventory/event/:eventId to the new URL /inventory/event?queryId=eventId\n * to keep users who might have the old URL saved in favourites working.\n * @constructor\n */\nexport const InventoryEventPageRedirect = () => {\n const { eventId: eventIdParam } = useParams();\n const location = useLocation();\n\n if (eventIdParam) {\n return (\n \n );\n }\n\n return ;\n};\n","import { useQueries, useQuery } from '@tanstack/react-query';\nimport { chunk } from 'lodash-es';\nimport { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n CatalogClient,\n CatalogResults,\n OnSaleEventQuery,\n} from 'src/WebApiController';\n\nexport const useOnSaleEvents = (\n query: OnSaleEventQuery,\n disable = false,\n eventOnly = false\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { searchText, ...rest } = query;\n\n const { trackError } = useErrorBoundaryContext();\n\n const shouldQueryForSearch =\n !disable &&\n activeAccountWebClientConfig.activeAccountId != null &&\n searchText != null;\n const searchEventsQuery = useQuery({\n queryKey: [\n 'searchEvents',\n activeAccountWebClientConfig.activeAccountId,\n searchText,\n disable,\n ],\n queryFn: () => {\n if (!shouldQueryForSearch) {\n return null;\n }\n return new CatalogClient(activeAccountWebClientConfig).searchOnSaleEvents(\n query\n );\n },\n enabled: shouldQueryForSearch,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('CatalogClient.searchOnSaleEvents', error, {\n searchText,\n });\n },\n },\n });\n\n const shouldQueryOnSaleEvents =\n !disable &&\n activeAccountWebClientConfig.activeAccountId != null &&\n !shouldQueryForSearch &&\n rest != null;\n\n const onSaleEventsQuery = useQuery({\n queryKey: [\n 'getCatalogForOnSaleEvents',\n activeAccountWebClientConfig.activeAccountId,\n JSON.stringify(rest),\n disable,\n ],\n queryFn: () => {\n if (!shouldQueryOnSaleEvents) {\n return null;\n }\n return new CatalogClient(\n activeAccountWebClientConfig\n ).getCatalogForOnSaleEvents(query!);\n },\n\n enabled: shouldQueryOnSaleEvents,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('CatalogClient.getCatalogForOnSaleEvents', error, {\n query,\n });\n },\n },\n });\n\n const isLoading = useMemo(\n () => onSaleEventsQuery.isLoading || searchEventsQuery.isLoading,\n [onSaleEventsQuery.isLoading, searchEventsQuery.isLoading]\n );\n\n const onSaleEvents = useMemo((): CatalogResults | null => {\n const events = searchEventsQuery.data ?? onSaleEventsQuery.data ?? null;\n for (const key in events?.events ?? {}) {\n if (isNaN(parseInt(key))) {\n delete events?.events[key];\n }\n }\n return events;\n }, [onSaleEventsQuery.data, searchEventsQuery.data]);\n\n const eventIdGroups = useMemo(\n () =>\n chunk(\n Object.keys(onSaleEvents?.events ?? {})\n .map((id) => parseInt(id))\n .filter((id) => !isNaN(id)),\n 1000\n ),\n [onSaleEvents]\n );\n\n const queries = useMemo(() => {\n const client = new CatalogClient(activeAccountWebClientConfig);\n return {\n queries: eventIdGroups.map((idGroup) => {\n const shouldQuery =\n !disable &&\n !eventOnly &&\n idGroup.length > 0 &&\n !!activeAccountWebClientConfig.activeAccountId;\n\n return {\n queryKey: [\n 'getCatalogMetricsForOnSaleEvents',\n activeAccountWebClientConfig.activeAccountId,\n JSON.stringify(idGroup),\n disable,\n eventOnly,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n const input: OnSaleEventQuery = {\n ...query,\n eventIds: Array.from(idGroup),\n };\n\n return await client.getCatalogOnSaleEventMetrics(input);\n },\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n onError: (error: ErrorTypes) => {\n trackError(\n 'CatalogClient.getCatalogMetricsForOnSaleEvents',\n error,\n {\n eventIds: idGroup,\n }\n );\n },\n };\n }),\n };\n }, [activeAccountWebClientConfig, eventIdGroups, query, trackError]);\n\n const metricsQueriesFromHook = useQueries(queries);\n\n return {\n onSaleEvents,\n onSaleEventMetrics: metricsQueriesFromHook.flatMap((q) => q.data ?? []),\n isLoading,\n };\n};\n","import { useOnSaleEvents } from 'src/hooks/api/useOnSaleEvents';\nimport {\n EventWithData,\n OnSaleEventQuery,\n Performer,\n Venue,\n} from 'src/WebApiController';\n\nexport const useInventoryDashboardEvent = (\n event?: EventWithData,\n isOnSaleEvent?: boolean,\n onSaleEventId?: number\n): {\n event?: EventWithData;\n venue?: Venue;\n performer?: Performer;\n} => {\n const onSaleEventQuery: OnSaleEventQuery = {\n eventIds: onSaleEventId ? [onSaleEventId] : [],\n onSaleDates: null,\n timezoneOffsetMins: null,\n viewMode: null,\n searchText: null,\n };\n\n const shouldLoadOnSaleEvent = isOnSaleEvent && onSaleEventId;\n const { onSaleEvents } = useOnSaleEvents(\n onSaleEventQuery,\n !shouldLoadOnSaleEvent,\n true\n );\n\n if (shouldLoadOnSaleEvent) {\n if (onSaleEvents?.events && onSaleEvents.events[onSaleEventId]) {\n const eventWithData = onSaleEvents.events[onSaleEventId];\n const event = eventWithData.event;\n const venue = onSaleEvents.venues[event.venueId];\n const performer = event.perfId\n ? onSaleEvents.performers[event.perfId]\n : undefined;\n return {\n event: eventWithData,\n venue: venue,\n performer: performer,\n };\n }\n }\n\n return {\n event: event,\n venue: undefined,\n performer: undefined,\n };\n};\n","import { useMemo } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport {\n EventAccordionItemProps,\n translateEventToInventoryAccordionItem,\n} from 'src/components/Accordions';\nimport { SwiperButton } from 'src/components/Buttons/SwiperButton';\nimport { BackSection } from 'src/components/common/BackSection';\nimport { StubHubListingManualPricingContextProvider } from 'src/components/Listings/InventoryEventPage/MarketListings/StubHubListingsManualPricingContext';\nimport { ActiveFocusContextProvider } from 'src/contexts/ActiveFocusContext/ActiveFocusContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { EventMapContextProvider } from 'src/contexts/EventMapContext';\nimport { InputPriceFocusProvider } from 'src/contexts/InputPriceFocusContext/InputPriceFocusContext';\nimport { SidePanelProvider } from 'src/contexts/SidePanelContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n DemandDashboardEventIdQueryParam,\n DemandDashboardIsOnSaleEventQueryParam,\n} from 'src/utils/constants/constants';\nimport {\n EventWithData,\n Feature,\n Listing,\n Performer,\n Venue,\n} from 'src/WebApiController';\n\nimport * as styles from './InventoryEventPage.css';\nimport { InventoryEventPageHeader } from './InventoryEventPageHeader';\nimport { useInventoryDashboardEvent } from './InventoryEventPageV2.hooks';\nimport { InventoryEventDashboardSection } from './Sections/InventoryEventDashboardSection';\n\nexport function InventoryEventPageV2({\n viagVirtualId,\n returnUrl,\n}: {\n viagVirtualId: string;\n returnUrl?: string;\n}) {\n const { eventsTransformed } = useCatalogDataContext();\n const [searchParams, _] = useSearchParams();\n const hasEventDiscoveryPageFeature = useUserHasFeature(\n Feature.EventDiscoveryPage\n );\n const isOnSaleEvent =\n Boolean(searchParams.get(DemandDashboardIsOnSaleEventQueryParam)) &&\n hasEventDiscoveryPageFeature;\n const onSaleEventId = Number(\n searchParams.get(DemandDashboardEventIdQueryParam)\n );\n\n const accordionItemProps = useMemo(\n () =>\n eventsTransformed?.find(\n (e) =>\n e.event.viagVirtualId.toLowerCase() === viagVirtualId.toLowerCase()\n ),\n\n [eventsTransformed, viagVirtualId]\n );\n\n const {\n event: eventWithData,\n venue,\n performer,\n } = useInventoryDashboardEvent(\n accordionItemProps,\n isOnSaleEvent,\n onSaleEventId\n );\n\n const inventoryAccordionItem = useMemo(\n () =>\n accordionItemProps &&\n translateEventToInventoryAccordionItem(accordionItemProps, 0, true),\n [accordionItemProps]\n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\ntype InventoryEventContentProps = {\n accordionItemProps?: EventWithData;\n inventoryAccordionItem?: EventAccordionItemProps;\n venue?: Venue;\n performer?: Performer;\n returnUrl?: string;\n isOnSaleEvent?: boolean;\n};\n\nexport const enum InventoryEventV2Tabs {\n Dashboard = 'dashboard',\n None = 'none',\n}\n\nfunction InventoryEventContent({\n accordionItemProps,\n inventoryAccordionItem,\n venue,\n performer,\n returnUrl,\n isOnSaleEvent,\n}: InventoryEventContentProps) {\n const { isLoading } = useCatalogDataContext();\n const isMobile = useMatchMedia('mobile');\n\n const event = accordionItemProps?.event;\n\n if (isLoading || !event) {\n return ;\n }\n\n return (\n
    \n
    \n {isMobile && (\n \n \n \n \n )}\n \n \n
    \n
    \n );\n}\n","import { useCallback, useMemo } from 'react';\nimport { useLocation, useSearchParams } from 'react-router-dom';\nimport { InventoryEventPageV2 } from 'src/components/Listings/InventoryEventPage/InventoryEventPageV2';\nimport { MainFilterBar } from 'src/components/MainFilterBar';\nimport { ActivePosEntityProvider } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n CatalogDataContextProvider,\n ExpandedEventData,\n} from 'src/contexts/CatalogDataContext';\nimport { CatalogMetricsContextProvider } from 'src/contexts/CatalogMetricsContext';\nimport { CatalogMultiSelectionContextProvider } from 'src/contexts/CatalogMultiSelectionContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { FilterQueryContextProvider } from 'src/contexts/FilterQueryContext';\nimport { ListingNotificationContextProvider } from 'src/contexts/ListingNotificationContext';\nimport { MultiSelectionContextProvider } from 'src/contexts/MultiSelectionContext';\nimport { SellerUserSettingsProvider } from 'src/contexts/SellerUserSettingsContext';\nimport { useGetActiveAccountClientConfig } from 'src/hooks/useGetActiveAccountClientConfig';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport {\n getDefaultReturnUrl,\n INVENTORY_USER_SETTINGS,\n} from 'src/navigations/Routes/InventoryEvent/constants';\nimport {\n EventIdQueryParam,\n InventoryDeeplinkQueryParam,\n} from 'src/utils/constants/constants';\nimport { removeDeepLinkUrlPartsFromRelativeUrl } from 'src/utils/deepLinkUtils';\nimport {\n EmptyListingQuery,\n QueryWithViewMode,\n} from 'src/utils/eventQueryUtils';\nimport { transformData } from 'src/utils/eventWithDataUtils';\nimport { ListingCatalogQueryKey } from 'src/utils/inventoryUtils';\nimport { addListingMetrics } from 'src/utils/ticketMetricUtils';\nimport { EventPageLocationState } from 'src/utils/types/EventPageLocationState';\nimport {\n ActionOutboxEntityType,\n EntityWithTicketsQuery,\n Feature,\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingMetrics,\n ListingQuery,\n UserSetting,\n} from 'src/WebApiController';\n\nimport {\n getCatalogData,\n getCatalogDataExpanded,\n getCatalogMetrics,\n getCatalogSectionalDataExpanded,\n listingQueryValueTransformFromUrl,\n listingQueryValueTransformToUrl,\n} from '../Inventory';\nimport { MainRoute } from '../MainRoute';\nimport {\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n TAB_EVENT_IDS_2_QUERY_PARAM,\n TAB_EVENT_IDS_QUERY_PARAM,\n} from './InventoryEvent.constants';\n\nexport function InventoryEventV2() {\n const [searchParams] = useSearchParams();\n const viagEventId = searchParams.get(EventIdQueryParam);\n\n const location = useLocation();\n\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const hasSectionalLoadInListingTable = useUserHasFeature(\n Feature.SectionalLoadInListingTable\n );\n\n const getCatalogDataExpandedCallback = useCallback(\n (ids: string[], filterQuery: ListingQuery) => {\n if (hasSectionalLoadInListingTable) {\n return getCatalogSectionalDataExpanded(\n ids,\n filterQuery,\n [\n ListingDetailDataField.Basic,\n ListingDetailDataField.Pricing,\n ListingDetailDataField.AutoPricing,\n ],\n {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError(\n 'ListingClient.getListingsSectionalDataForEvents',\n error,\n {\n ...filterQuery,\n eventIds: ids,\n }\n );\n },\n }\n );\n }\n return getCatalogDataExpanded(ids, filterQuery, {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError('ListingClient.getListingsForEvents', error, {\n ...filterQuery,\n eventIds: ids,\n });\n },\n });\n },\n [activeAccountWebClientConfig, hasSectionalLoadInListingTable, trackError]\n );\n\n const onCatalogDataExpandedCallback = useCallback(\n (\n ids: string[],\n filterQuery: ListingQuery,\n currentData?: ExpandedEventData\n ) =>\n getCatalogSectionalDataExpanded(\n ids,\n filterQuery,\n [ListingDetailDataField.Purchase, ListingDetailDataField.Tags],\n {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError('ListingClient.getCatalogSectionalDataExpanded', error, {\n ...filterQuery,\n eventIds: ids,\n });\n },\n },\n currentData\n ),\n [activeAccountWebClientConfig, trackError]\n );\n\n const initialQuery = useMemo(\n () => ({\n ...EmptyListingQuery,\n eventOrMappingIds: viagEventId ? [viagEventId] : null,\n }),\n [viagEventId]\n );\n\n const getActClientCfg = useGetActiveAccountClientConfig(\n 'InventoryEventV2.ListingClient.getListingByListingId'\n );\n\n const hasSectionalLoadDataFeature = useUserHasFeature(\n Feature.ListingLoadBySection\n );\n\n const getActivePosEntity = useCallback(\n async (\n posEntityId: number,\n curEntity?: ListingDetails | null,\n dataToGet?: string[] | null\n ) => {\n const activeClientCf = await getActClientCfg();\n const listingDetail = await new ListingClient(\n activeClientCf\n ).getListingByListingId(\n posEntityId,\n hasSectionalLoadDataFeature ? (curEntity ?? undefined) : undefined,\n hasSectionalLoadDataFeature\n ? (dataToGet?.map((s) => s as ListingDetailDataField) ?? [])\n : undefined\n );\n\n if (listingDetail) {\n return {\n posEntityId: listingDetail.id,\n posEntity: listingDetail,\n posEntityDisplayId: listingDetail.idOnMkp,\n };\n }\n\n return {};\n },\n [getActClientCfg, hasSectionalLoadDataFeature]\n );\n\n // Only use value provided at the first time (should be from '/inventory')\n const returnUrl = useMemo(() => {\n const locationState = (location.state ?? {}) as EventPageLocationState;\n\n if (locationState.returnUrl && locationState.keepReturnUrlUnchanged) {\n return locationState.returnUrl;\n }\n\n const relativeUrl =\n locationState.returnUrl || getDefaultReturnUrl(viagEventId);\n\n return removeDeepLinkUrlPartsFromRelativeUrl(relativeUrl, [\n InventoryDeeplinkQueryParam,\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n TAB_EVENT_IDS_QUERY_PARAM,\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n TAB_EVENT_IDS_2_QUERY_PARAM,\n ]);\n }, [viagEventId, location.state]);\n\n const hasMetricsV2Feature = useUserHasFeature(Feature.CatalogMetricsV2);\n\n if (!viagEventId) {\n return null;\n }\n\n return (\n \n \n initialQuery={initialQuery}\n emptyQuery={EmptyListingQuery}\n viewModeSettingId={UserSetting.InventoryPageViewMode}\n saveQueryInUrl\n queryValueTransformToUrl={listingQueryValueTransformToUrl}\n queryValueTransformFromUrl={listingQueryValueTransformFromUrl}\n >\n \n entityType={ActionOutboxEntityType.Listing}\n queryKey={ListingCatalogQueryKey}\n getCatalogData={(c, f) => getCatalogData(c, f, true)}\n getCatalogDataExpanded={getCatalogDataExpandedCallback}\n onCatalogDataExpanded={\n hasSectionalLoadInListingTable\n ? onCatalogDataExpandedCallback\n : undefined\n }\n transformEventData={transformData}\n >\n \n queryKey=\"getCatalogListingMetrics\"\n entityType={ActionOutboxEntityType.Listing}\n getCatalogMetrics={(c, f, r) =>\n getCatalogMetrics(c, f, r, hasMetricsV2Feature)\n }\n addCatalogMetrics={addListingMetrics}\n >\n \n entityType={ActionOutboxEntityType.Listing}\n getActivePosEntity={getActivePosEntity}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { isEqual } from 'lodash-es';\nimport { ComponentProps, useCallback, useEffect } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { newGuidId } from 'src/utils/idUtils';\nimport { SearchResult } from 'src/WebApiController';\n\nexport type EntitySearchConfigDialogProps = {\n searchConfig?: T;\n onSave: (searchConfig: T) => void;\n} & ComponentProps;\n\nexport const EntitySearchConfigDialog = ({\n searchConfig,\n ...rest\n}: EntitySearchConfigDialogProps) => {\n const methods = useForm({\n defaultValues: searchConfig ?? { id: newGuidId() },\n });\n\n useEffect(() => {\n if (\n searchConfig &&\n !isEqual(searchConfig, methods.formState.defaultValues)\n ) {\n methods.reset(searchConfig);\n }\n }, [methods, searchConfig]);\n\n return (\n \n \n \n );\n};\n\nconst EntitySearchConfigDialogBody = ({\n onSave,\n onClosed,\n getValues,\n setValue,\n formState,\n clearErrors,\n setError,\n handleSubmit,\n register,\n reset,\n watch,\n ...rest\n}: Omit, 'searchConfig'> &\n Omit<\n ComponentProps>,\n 'children'\n >) => {\n const { loginContext } = useAppContext();\n const requiredMsg = useContent(ContentId.Required);\n const name = watch('name');\n const ownerUserId = watch('ownerUserId');\n\n const isNotOwned = ownerUserId && ownerUserId !== loginContext?.user?.userId;\n\n const handleClose = useCallback(() => {\n reset();\n onClosed?.();\n }, [onClosed, reset]);\n\n const onSubmit = useCallback(\n (saveCopy?: boolean) => {\n clearErrors();\n\n let hasErrors = false;\n if (!name) {\n setError('name', { message: requiredMsg }, { shouldFocus: true });\n hasErrors = true;\n }\n if (!hasErrors) {\n if (!ownerUserId || isNotOwned || saveCopy) {\n setValue('id', newGuidId());\n }\n handleSubmit(onSave)();\n }\n },\n [\n clearErrors,\n handleSubmit,\n isNotOwned,\n name,\n onSave,\n ownerUserId,\n requiredMsg,\n setError,\n setValue,\n ]\n );\n\n return (\n }\n footer={\n <>\n {onClosed && }\n\n {formState.defaultValues?.ownerUserId && (\n onSubmit(true)}\n disabled={formState.isSubmitting}\n >\n \n \n )}\n {!isNotOwned && (\n onSubmit(false)}\n disabled={formState.isSubmitting}\n >\n \n \n )}\n \n }\n onCancel={handleClose}\n onClosed={handleClose}\n >\n }\n >\n \n \n \n );\n};\n","import { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { CopyIcon, DiskSaveIcon } from 'src/svgs';\nimport { DeleteIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SearchResult } from 'src/WebApiController';\n\nimport { EntitySearchConfigDialog } from '../EntitySearchConfigDialog';\n\nexport const EntitySearchConfigActions = ({\n activeSearchConfig,\n disabled,\n onSaveSearchResult,\n onDeleteSearchResult,\n}: {\n activeSearchConfig?: T;\n disabled?: boolean;\n onSaveSearchResult: (searchResult: T) => void;\n onDeleteSearchResult: (searchResult: T) => void;\n}) => {\n const { loginContext } = useAppContext();\n const saveSearchResultDlg = useBasicDialog();\n const deleteConfirmDlg = useBasicDialog();\n\n const isNotOwned =\n activeSearchConfig?.ownerUserId &&\n activeSearchConfig.ownerUserId !== loginContext?.user?.userId;\n\n const saveCopyText = useContent(ContentId.SaveCopy);\n const saveText = useContent(ContentId.SaveSearch);\n const deleteText = useContent(ContentId.Delete);\n\n return (\n \n {\n e.stopPropagation();\n e.preventDefault();\n saveSearchResultDlg.launchDialog();\n }}\n >\n {isNotOwned ? (\n \n ) : (\n \n )}\n \n\n {activeSearchConfig?.id && !isNotOwned && (\n {\n e.stopPropagation();\n e.preventDefault();\n deleteConfirmDlg.launchDialog();\n }}\n >\n \n \n )}\n\n {\n onSaveSearchResult(r);\n saveSearchResultDlg.closeDialog();\n }}\n {...saveSearchResultDlg.dialogProps}\n onClosed={saveSearchResultDlg.closeDialog}\n />\n }\n bodyText={\n \n \n {activeSearchConfig?.name}\n \n }\n onOkay={() => {\n if (activeSearchConfig?.id) {\n onDeleteSearchResult(activeSearchConfig);\n }\n deleteConfirmDlg.closeDialog();\n }}\n onCancel={deleteConfirmDlg.closeDialog}\n />\n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useCallback, useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { ToolbarButton } from 'src/core/POS/ToolbarButton';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { ScrollableToolbar } from 'src/core/ui/ScrollableToolbar';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { SearchClient, SearchResult } from 'src/WebApiController';\n\nimport { EntitySearchConfigActions } from '../EntitySearchConfigActions';\nimport { container } from './EntitySearchConfigsToolbar.css';\n\nexport type EntitySearchConfigsToolbarProps = {\n disabled?: boolean;\n setDisabled?: (disabled: boolean) => void;\n activeSearchConfig?: T;\n setActiveSearchConfig: (config?: T) => void;\n saveActiveSearchConfig: (config: T) => void;\n deleteActiveSearchConfig: (config: T) => void;\n getSearchConfigs: (\n client: SearchClient,\n includeAllUsers: boolean\n ) => Promise;\n getSearchResult: (client: SearchClient, id: string) => Promise;\n additionalActions?: React.ReactNode;\n};\n\nexport const EntitySearchConfigsToolbar = ({\n disabled,\n setDisabled,\n activeSearchConfig,\n setActiveSearchConfig,\n saveActiveSearchConfig,\n deleteActiveSearchConfig,\n getSearchConfigs,\n getSearchResult,\n additionalActions,\n}: EntitySearchConfigsToolbarProps) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n\n const shouldQuery =\n !disabled && activeAccountWebClientConfig.activeAccountId != null;\n\n const userSearchConfigsQuery = useQuery({\n queryKey: [\n 'SearchClient.getSearchConfigsForUser',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n const client = new SearchClient(activeAccountWebClientConfig);\n\n const r = await getSearchConfigs(client, false);\n if (r) {\n return r.reduce(\n (r, c) => {\n r[c.id!] = c;\n return r;\n },\n {} as Record\n );\n }\n\n return {} as Record;\n },\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('PricingClient.getSearchConfigsForUser', error, {\n trackErrorData: {\n activeAccountId: activeAccountWebClientConfig.activeAccountId,\n },\n });\n },\n },\n });\n\n const accountSearchConfigsQuery = useQuery({\n queryKey: [\n 'SearchClient.getSearchConfigsForAccount',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n const client = new SearchClient(activeAccountWebClientConfig);\n\n const r = await getSearchConfigs(client, true);\n if (r) {\n return r.reduce(\n (r, c) => {\n r[c.id!] = c;\n return r;\n },\n {} as Record\n );\n }\n\n return {} as Record;\n },\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('PricingClient.getSearchConfigsForAccount', error, {\n trackErrorData: {\n activeAccountId: activeAccountWebClientConfig.activeAccountId,\n },\n });\n },\n },\n });\n\n const onSearchConfigClick = useCallback(\n (searchResult: T) => {\n setDisabled?.(true);\n tryInvokeApi(\n async () => {\n if (searchResult.id === activeSearchConfig?.id) {\n // We're clicking on the same item - this is meant for a de-select\n setActiveSearchConfig(undefined);\n return;\n }\n const client = new SearchClient(activeAccountWebClientConfig);\n\n // set a mock search result while waiting for the main result\n setActiveSearchConfig(searchResult);\n\n const result = await getSearchResult(client, searchResult.id!);\n\n if (result) {\n setActiveSearchConfig(result);\n }\n },\n (error) => {\n showErrorDialog('SearchClient.getSearchResult', error, {\n trackErrorData: {\n searchResult,\n },\n });\n },\n () => setDisabled?.(false)\n );\n },\n [\n activeAccountWebClientConfig,\n activeSearchConfig?.id,\n getSearchResult,\n setActiveSearchConfig,\n setDisabled,\n showErrorDialog,\n ]\n );\n\n const otherConfigs = useMemo(() => {\n return Object.values(accountSearchConfigsQuery.data ?? {}).reduce(\n (r, c) => {\n // Only show if it's not already shown as this user's search result\n\n if (!userSearchConfigsQuery.data?.[c.id!]) {\n r[c.id!] = c.name!;\n }\n\n return r;\n },\n {} as Record\n );\n }, [accountSearchConfigsQuery.data, userSearchConfigsQuery.data]);\n\n const otherConfig = useMemo(\n () =>\n activeSearchConfig?.id\n ? otherConfigs[activeSearchConfig.id]\n ? activeSearchConfig.id // we only show selection if the active search config is one of the available items\n : undefined\n : undefined,\n [activeSearchConfig?.id, otherConfigs]\n );\n\n return (\n \n \n \n :\n \n \n \n \n setActiveSearchConfig(undefined)}\n >\n \n \n {!activeSearchConfig?.id && (\n \n )}\n \n\n {Object.values(userSearchConfigsQuery.data ?? {})\n .toSorted((x, y) => (x.name ?? '').localeCompare(y.name ?? ''))\n .map((item, i) => {\n const isSelected = activeSearchConfig?.id === item.id;\n return (\n \n \n isSelected ? null : onSearchConfigClick(item)\n }\n >\n {item.name}\n \n {activeSearchConfig?.id === item.id && (\n \n )}\n \n );\n })}\n \n {Boolean(Object.entries(otherConfigs).length) && (\n \n {\n const newConfig = accountSearchConfigsQuery.data?.[id];\n if (newConfig) {\n onSearchConfigClick(newConfig);\n }\n }}\n valueOptionsContent={otherConfigs}\n />\n {otherConfig && (\n \n )}\n \n )}\n \n \n\n {additionalActions}\n \n );\n};\n","import { debounce } from 'lodash-es';\nimport { CSSProperties, useCallback, useMemo, useState } from 'react';\nimport { FilterDropdownItem, FilterToolbarGroup } from 'src/components/Filters';\nimport {\n Content,\n getContent,\n useContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { PosSearchBox } from 'src/core/POS/PosSearchBox';\nimport { vars } from 'src/core/themes';\nimport { Button, ButtonProps, Stack } from 'src/core/ui';\nimport { PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './AddFilterDropdown.css';\n\nexport interface AddFilterDropdownProps {\n filters: FilterToolbarGroup[];\n onFilterSelected: (filterDropdownItem: FilterDropdownItem[]) => void;\n hideLabel?: boolean;\n hideIcon?: boolean;\n triggerVariant?: ButtonProps['variant'];\n triggerShape?: ButtonProps['shape'];\n triggerClassName?: string;\n disabled?: boolean;\n}\n\nconst triggerStyles: CSSProperties = {\n width: '100%',\n};\n\nexport const AddFilterDropdown = ({\n filters,\n onFilterSelected,\n hideLabel,\n hideIcon,\n triggerVariant = 'regular',\n triggerShape = 'rect',\n triggerClassName,\n disabled,\n}: AddFilterDropdownProps) => {\n const [searchText, setSearchText] = useState('');\n const searchPlaceholder = useContent(ContentId.Search);\n const contentContext = useContentContext();\n\n // eslint-disable-next-line react-hooks/rules-of-hooks,react-hooks/exhaustive-deps\n const updateSearchText = useCallback(\n debounce((value: string) => {\n setSearchText(value);\n }, 200),\n []\n );\n\n const filteredFilters = useMemo(() => {\n if (!searchText) {\n return filters;\n }\n const lowercaseSearchText = searchText.toLocaleLowerCase();\n return filters\n .map((filter) => {\n const items = filter.items.filter((filterItem) => {\n const labelValue = getContent(\n filterItem.labelContentId,\n contentContext\n );\n return (\n labelValue.toLocaleLowerCase().indexOf(lowercaseSearchText) !== -1\n );\n });\n return {\n ...filter,\n items,\n };\n })\n .filter((filter) => filter.items.length > 0);\n }, [contentContext, filters, searchText]);\n\n const clearSearch = useCallback(() => {\n setSearchText('');\n }, []);\n\n return (\n \n \n {!hideIcon && (\n \n )}\n\n {!hideLabel && }\n \n \n }\n triggerProps={{\n style: triggerStyles,\n disabled: disabled,\n }}\n align=\"start\"\n >\n \n \n \n\n {filteredFilters.flatMap((filtersToolbarGroup, i) => {\n const items = filtersToolbarGroup.items.map((filterItem) => {\n return (\n {\n onFilterSelected([\n {\n filterId: filterItem.filterId,\n titleContentId: filtersToolbarGroup.titleContentId,\n },\n ]);\n }}\n >\n \n \n );\n });\n return [\n
    \n
    \n \n \n \n {items}\n
    \n
    ,\n ];\n })}\n\n {filteredFilters.length === 0 && (\n \n \n \n )}\n \n );\n};\n","import clsx from 'clsx';\nimport { cloneElement, PropsWithChildren, useMemo } from 'react';\nimport {\n FilterDropdownItem,\n FilterToolbarGroup,\n FilterToolbarItem,\n FilterToolbarItemId,\n} from 'src/components/Filters';\nimport { ReportFilterEditabilityDropdown } from 'src/components/FilterToolbar/FilterDialogV2/FiltersList/ReportFilterEditabilityDropdown';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Stack, StackProps } from 'src/core/ui';\nimport { ScrollableToolbar } from 'src/core/ui/ScrollableToolbar';\nimport { ScrollAreaRefActions } from 'src/core/ui/ScrollArea/ScrollArea';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport {\n DEFAULT_REPORT_FILTER_EDITABILITY,\n ReportFilterEditability,\n} from 'src/utils/reportsFilterUtils';\n\nimport {\n buttonsContainer,\n buttonsContainerRow,\n filterContainer,\n filterContainerHorizontal,\n filterItemLabel,\n filterItemLabelVertical,\n filterItemValueVertical,\n filterItemWrapper,\n filterToolbarListContainerVertical,\n filterValue,\n} from './FiltersList.css';\n\nexport interface FiltersListProp {\n selectedDropdownItems: FilterDropdownItem[];\n filters: FilterToolbarGroup[];\n onFilterRemoved: (filterDropdownItem: FilterDropdownItem) => void;\n mandatoryFiltersToShow: FilterToolbarItemId[];\n filtersListHeader?: React.ReactNode;\n performerVenueFilter?: React.ReactNode;\n resetButton?: React.ReactNode;\n addFilterButton?: React.ReactNode;\n onEditabilityChange?: (\n filterId: FilterToolbarItemId | FilterToolbarItemId[],\n editability: ReportFilterEditability\n ) => void;\n direction?: 'row' | 'column';\n flexWrap?: StackProps['flexWrap'];\n // Used for reporting currently. Display filters according to `reportFilterEditability`\n viewerMode?: boolean;\n disabled?: boolean;\n}\n\nexport const FiltersList = ({\n filters,\n onFilterRemoved,\n mandatoryFiltersToShow,\n selectedDropdownItems,\n performerVenueFilter,\n filtersListHeader,\n resetButton,\n addFilterButton,\n scrollAreaRefActions,\n onEditabilityChange,\n direction = 'row',\n flexWrap,\n viewerMode,\n disabled,\n}: FiltersListProp & ScrollAreaRefActions) => {\n const filterItemsToShow = useMemo(() => {\n return selectedDropdownItems\n .map((dropdownItem) => {\n const group = filters.find((filterToolbarGroup: FilterToolbarGroup) => {\n return (\n filterToolbarGroup.titleContentId === dropdownItem.titleContentId\n );\n });\n\n if (group) {\n const item = group.items.find(\n (item) => item.filterId === dropdownItem.filterId\n );\n if (item) {\n return {\n group,\n item,\n };\n }\n }\n return null;\n })\n .filter(\n (filterItem) =>\n !!filterItem &&\n (viewerMode\n ? (filterItem.item.reportFilterEditability ??\n DEFAULT_REPORT_FILTER_EDITABILITY) !==\n ReportFilterEditability.Hidden\n : true)\n );\n }, [filters, selectedDropdownItems, viewerMode]);\n\n return (\n {addFilterButton &&
    {addFilterButton}
    }}\n resetButton={\n <>\n {resetButton &&\n (performerVenueFilter != null || filterItemsToShow.length > 0) && (\n
    {resetButton}
    \n )}\n \n }\n scrollAreaRefActions={scrollAreaRefActions}\n filtersListHeader={filtersListHeader}\n flexWrap={flexWrap}\n >\n {Boolean(filterItemsToShow?.length) && (\n \n {performerVenueFilter != null && performerVenueFilter}\n {filterItemsToShow.map((item, i) => (\n <>\n {item && (\n \n )}\n \n ))}\n \n )}\n \n );\n};\n\nconst FiltersListLayout = ({\n direction,\n children,\n addFilterButton,\n resetButton,\n scrollAreaRefActions,\n filtersListHeader,\n flexWrap,\n}: PropsWithChildren<{\n filtersListHeader: FiltersListProp['filtersListHeader'];\n direction: FiltersListProp['direction'];\n addFilterButton: FiltersListProp['addFilterButton'];\n resetButton: FiltersListProp['resetButton'];\n scrollAreaRefActions: ScrollAreaRefActions['scrollAreaRefActions'];\n flexWrap?: StackProps['flexWrap'];\n}>) => {\n if (direction === 'column') {\n return (\n \n \n {filtersListHeader}\n \n {resetButton}\n {addFilterButton}\n \n \n {children}\n \n );\n }\n\n if (flexWrap === 'wrap') {\n return (\n \n {children}\n {addFilterButton}\n {resetButton}\n \n );\n }\n\n return (\n \n {children ? (\n \n {children}\n \n ) : null}\n \n {addFilterButton}\n {resetButton}\n \n \n );\n};\n\nconst FilterToolbarListItem = ({\n item,\n filtersListDirection,\n onFilterRemoved,\n mandatoryFiltersToShow,\n selectedDropdownItems,\n onEditabilityChange,\n viewerMode,\n disabled,\n}: {\n item: FilterToolbarItem;\n filtersListDirection: FiltersListProp['direction'];\n selectedDropdownItems: FiltersListProp['selectedDropdownItems'];\n mandatoryFiltersToShow: FiltersListProp['mandatoryFiltersToShow'];\n onFilterRemoved: FiltersListProp['onFilterRemoved'];\n onEditabilityChange: FiltersListProp['onEditabilityChange'];\n viewerMode: FiltersListProp['viewerMode'];\n disabled: FiltersListProp['disabled'];\n}) => {\n const filterDisabled =\n viewerMode && item.reportFilterEditability !== ReportFilterEditability.Edit;\n\n const filterItem =\n disabled || filterDisabled\n ? cloneElement(item.filterItem, { disabled: true })\n : item.filterItem;\n\n const canBeRemoved =\n !viewerMode && !mandatoryFiltersToShow.includes(item.filterId);\n\n const onRemoveFilterHandler = () => {\n const filterDropdownItem = selectedDropdownItems.find(\n (filterDropdownItem) => filterDropdownItem.filterId === item.filterId\n );\n if (filterDropdownItem) {\n onFilterRemoved(filterDropdownItem);\n }\n };\n\n const contentText = useContent(item.labelContentId);\n\n const showReportFilterEditabilityDropdown =\n onEditabilityChange != null && !viewerMode;\n\n return (\n \n \n \n \n \n\n {canBeRemoved && (\n \n )}\n \n \n \n {filterItem}\n \n \n\n {showReportFilterEditabilityDropdown && (\n \n )}\n \n );\n};\n","import { useCallback, useEffect, useMemo, useRef } from 'react';\nimport {\n FilterDropdownItem,\n FilterToolbarGroup,\n FilterToolbarItemId,\n} from 'src/components/Filters';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Button } from 'src/core/ui';\nimport { ScrollAreaActions } from 'src/core/ui/ScrollArea/ScrollArea';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n DEFAULT_REPORT_FILTER_EDITABILITY,\n ReportFilterEditability,\n} from 'src/utils/reportsFilterUtils';\n\nimport {\n mapFiltersToFiltersState,\n useFilterFiltersByPermission,\n} from '../Filters';\nimport { AddFilterDropdown, AddFilterDropdownProps } from './AddFilterDropdown';\nimport { FiltersList, FiltersListProp } from './FilterList';\n\nexport type FilterToolbarEmbeddedProps = {\n filters: FilterToolbarGroup[];\n selectedFilters?: FilterDropdownItem[];\n setSelectedFilters: (sf: FilterDropdownItem[]) => void;\n onResetAll: () => void;\n resetTempQuery?: (keys?: FilterToolbarItemId[]) => void; // TODO: make this not optional\n tempQuery?: Partial>;\n initialQuery?: Partial>;\n appliedFilterIds?: FilterToolbarItemId[];\n mandatoryFiltersToShow?: FilterToolbarItemId[];\n performerVenueFilter?: JSX.Element;\n addFilterDropdownProps?: {\n triggerVariant?: AddFilterDropdownProps['triggerVariant'];\n triggerShape?: AddFilterDropdownProps['triggerShape'];\n triggerClassName?: AddFilterDropdownProps['triggerClassName'];\n };\n} & Pick<\n FiltersListProp,\n | 'onEditabilityChange'\n | 'direction'\n | 'filtersListHeader'\n | 'flexWrap'\n | 'viewerMode'\n | 'disabled'\n>;\n\nexport function FilterToolbarEmbedded({\n filters,\n selectedFilters = [],\n setSelectedFilters,\n onResetAll,\n appliedFilterIds,\n resetTempQuery,\n initialQuery = {},\n mandatoryFiltersToShow = [],\n performerVenueFilter,\n onEditabilityChange,\n direction,\n addFilterDropdownProps,\n filtersListHeader,\n flexWrap,\n viewerMode,\n disabled,\n}: FilterToolbarEmbeddedProps) {\n const scrollAreaRefActions = useRef(null);\n const filteredByPermissionsFilters = useFilterFiltersByPermission({\n filters,\n });\n\n const nonHiddenFilterIds = useMemo(\n () =>\n filteredByPermissionsFilters\n .flatMap((group) => group.items)\n .filter(\n (item) =>\n (item.reportFilterEditability ??\n DEFAULT_REPORT_FILTER_EDITABILITY) !==\n ReportFilterEditability.Hidden\n )\n .map((item) => item.filterId),\n [filteredByPermissionsFilters]\n );\n\n const appliedFilterIdsWithNonHidden = useMemo(\n () =>\n Array.from(new Set([...(appliedFilterIds ?? []), ...nonHiddenFilterIds])),\n [appliedFilterIds, nonHiddenFilterIds]\n );\n\n useEffect(() => {\n if (selectedFilters.length === 0) {\n const newSelectedFilters = mapFiltersToFiltersState({\n filters: filteredByPermissionsFilters,\n appliedFilterIds: appliedFilterIdsWithNonHidden,\n mandatoryFiltersToShow,\n });\n\n setSelectedFilters(Object.values(newSelectedFilters).flat());\n }\n }, [\n appliedFilterIds,\n appliedFilterIdsWithNonHidden,\n filteredByPermissionsFilters,\n mandatoryFiltersToShow,\n selectedFilters,\n setSelectedFilters,\n ]);\n\n const hasNonMandatorySelectedFilters = useMemo(() => {\n return selectedFilters.some(\n (dropdownItem) =>\n !mandatoryFiltersToShow.includes(dropdownItem.filterId) &&\n !initialQuery[dropdownItem.filterId] != null\n );\n }, [initialQuery, mandatoryFiltersToShow, selectedFilters]);\n\n const clearAll = useCallback(() => {\n // Clear all and keep the mandatory fields\n const cleanSelectedFilters: FilterDropdownItem[] = [];\n selectedFilters.forEach((filterDropdownItem) => {\n if (\n mandatoryFiltersToShow.includes(filterDropdownItem.filterId) ||\n initialQuery[filterDropdownItem.filterId] != null\n ) {\n cleanSelectedFilters.push(filterDropdownItem);\n }\n });\n setSelectedFilters(cleanSelectedFilters);\n resetTempQuery?.();\n onResetAll();\n }, [\n initialQuery,\n mandatoryFiltersToShow,\n onResetAll,\n resetTempQuery,\n selectedFilters,\n setSelectedFilters,\n ]);\n\n const onFilterRemoved = useCallback(\n (removedFilterDropdownItem: FilterDropdownItem) => {\n const titleContentId = removedFilterDropdownItem.titleContentId as string;\n\n const filterToolbarGroup = filters.find(\n (group) => group.titleContentId === titleContentId\n );\n\n if (!filterToolbarGroup) {\n return;\n }\n\n const filtersToRemove = filterToolbarGroup.items.filter(\n (filter) => filter.filterId === removedFilterDropdownItem.filterId\n );\n\n const filterIdsToRemove = filtersToRemove.map((f) => f.filterId);\n const filteredDropdownItems = (selectedFilters ?? []).filter(\n (dropdownItem) => !filterIdsToRemove.includes(dropdownItem.filterId)\n );\n\n // all keys to remove from tempQuery\n const filterQueryKeysToRemove = filtersToRemove.flatMap(\n (f) => f.filterQueryKeys ?? []\n );\n\n resetTempQuery?.(filterQueryKeysToRemove);\n setSelectedFilters(filteredDropdownItems);\n onEditabilityChange?.(\n filtersToRemove.map((f) => f.filterId),\n ReportFilterEditability.Hidden\n );\n },\n [\n filters,\n onEditabilityChange,\n resetTempQuery,\n selectedFilters,\n setSelectedFilters,\n ]\n );\n\n const onFilterSelected = useCallback(\n (filterDropdownItems: FilterDropdownItem[]) => {\n const updatedSelectedFilters: FilterDropdownItem[] = [...selectedFilters];\n\n let addedNewFilter = false;\n filterDropdownItems.forEach((filterDropdownItem) => {\n const isSelected = selectedFilters?.some(\n (selectedFilter) =>\n selectedFilter.filterId === filterDropdownItem.filterId\n );\n if (!isSelected) {\n updatedSelectedFilters.push(filterDropdownItem);\n addedNewFilter = true;\n }\n });\n\n if (addedNewFilter) {\n setSelectedFilters(updatedSelectedFilters);\n }\n // On next render, scroll\n setTimeout(() => {\n scrollAreaRefActions.current?.startScroll('right');\n }, 10);\n },\n [selectedFilters, setSelectedFilters]\n );\n\n return (\n \n {viewerMode ? null : (\n \n \n \n )}\n \n }\n addFilterButton={\n <>\n {viewerMode ? null : (\n \n )}\n \n }\n scrollAreaRefActions={scrollAreaRefActions}\n onEditabilityChange={onEditabilityChange}\n direction={direction}\n filtersListHeader={filtersListHeader}\n flexWrap={flexWrap}\n viewerMode={viewerMode}\n disabled={disabled}\n />\n );\n}\n","import { useCallback } from 'react';\nimport {\n FilterDropdownItem,\n FilterToolbarGroup,\n FilterToolbarItemId,\n} from 'src/components/Filters';\nimport { useFiltersHelpers } from 'src/components/FilterToolbar/useFiltersHelpers';\nimport { FilterToolbarEmbedded } from 'src/components/FilterToolbarEmbedded';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { Button, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\nimport { EntityWithTicketsQuery, SearchResult } from 'src/WebApiController';\n\nimport * as styles from './EntitySearchFilterBar.css';\n\nexport const EntitySearchFilterBar = ({\n filters,\n activeSearchConfig,\n onSubmitFilter,\n selectedFilters,\n mandatoryFiltersToShow,\n ...rest\n}: {\n filters: FilterToolbarGroup[];\n activeSearchConfig?: SearchResult;\n onSubmitFilter?: (query: T) => void;\n selectedFilters?: FilterDropdownItem[];\n setSelectedFilters: (sf: FilterDropdownItem[]) => void;\n mandatoryFiltersToShow: FilterToolbarItemId[];\n}) => {\n const {\n initialQuery,\n tempQuery,\n setFilterQuery,\n setTempQuery,\n resetTempQuery,\n } = useFilterQueryContext();\n\n const onSubmitFilterHandler = useCallback(() => {\n setFilterQuery(tempQuery);\n onSubmitFilter?.(tempQuery);\n }, [onSubmitFilter, setFilterQuery, tempQuery]);\n\n const { appliedFilters } = useFiltersHelpers({\n filters,\n activeQuery: tempQuery,\n mandatoryFiltersToShow,\n initialQuery,\n });\n\n return (\n \n {\n setTempQuery(initialQuery);\n }}\n filters={filters}\n appliedFilterIds={appliedFilters}\n mandatoryFiltersToShow={mandatoryFiltersToShow}\n resetTempQuery={resetTempQuery}\n tempQuery={tempQuery}\n selectedFilters={selectedFilters}\n {...rest}\n />\n \n \n \n \n );\n};\n","import { format } from 'date-fns';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { IconsFill, ProcessingIcon, ReloadIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SearchResult } from 'src/WebApiController';\n\nexport const EntitySearchRefetcher = ({\n activeSearchConfig,\n disabled,\n onRequeryForTheResult,\n}: {\n activeSearchConfig?: SearchResult;\n disabled?: boolean;\n onRequeryForTheResult: () => void;\n}) => {\n if (activeSearchConfig?.lastFetchDate == null) return null;\n\n return (\n \n \n :\n \n \n {format(new Date(activeSearchConfig.lastFetchDate), 'M/d/yyyy h:mm a')}.\n \n \n \n {disabled ? (\n \n \n \n ) : (\n \n )}\n \n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useEffect, useState } from 'react';\nimport { FilterDropdownItem } from 'src/components/Filters';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useCatalogMultiSelectionContext } from 'src/contexts/CatalogMultiSelectionContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { isFilterUnchanged } from 'src/utils/eventQueryUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n InventorySearchResult,\n InventoryViewMode,\n ListingQuery,\n PurchaseOrderQuery,\n PurchaseSearchResult,\n PurchaseViewMode,\n SaleQuery,\n SaleSearchResult,\n SalesViewMode,\n SearchClient,\n} from 'src/WebApiController';\n\nexport type UseEntitySearchReturnType = {\n selectedFilters: FilterDropdownItem[] | undefined;\n setSelectedFilters: React.Dispatch<\n React.SetStateAction\n >;\n onSetActiveSearchConfig: (searchConfig?: S) => void;\n onSaveSearchResult: (searchResult: S) => Promise;\n onDeleteSearchResult: (searchResult: S) => void;\n refetchData: (\n filterQuery: ListingQuery | SaleQuery | PurchaseOrderQuery,\n customRefreshItems?: () => Promise\n ) => Promise;\n onRequeryForTheResult: () => void;\n disabled: boolean;\n setDisabled: (d: boolean) => void;\n};\n\nexport const useEntitySearch = <\n T extends ListingQuery | SaleQuery | PurchaseOrderQuery,\n S extends InventorySearchResult | SaleSearchResult | PurchaseSearchResult,\n>(\n activeSearchConfig: S | undefined,\n setActiveSearchConfig: (a: S | undefined) => void,\n viewMode:\n | InventoryViewMode.FlattenedView\n | SalesViewMode.FlattenedView\n | PurchaseViewMode.FlattenedView,\n getSearchResult: (client: SearchClient, id?: string) => Promise,\n saveSearchResult: (client: SearchClient, searchResult: S) => Promise\n): UseEntitySearchReturnType => {\n const { loginContext, activeAccountWebClientConfig } = useAppContext();\n const { setSelectionMode } = useMultiSelectionContext();\n const [selectedFilters, setSelectedFilters] =\n useState();\n const {\n filterQuery,\n setFilterQuery,\n setTempQuery,\n initialQuery,\n emptyQuery,\n } = useFilterQueryContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const { flattenedIds: newEntityIds } = useCatalogMultiSelectionContext();\n const [disabled, setDisabled] = useState(false);\n\n const onSetActiveSearchConfig = useCallback(\n (searchConfig?: S) => {\n const defaultFilter = {\n ...initialQuery,\n viewMode,\n };\n // If this is already selected, clicking will do unselection\n if (searchConfig && !isEqual(searchConfig, activeSearchConfig)) {\n // Only update the query if the searchConfig has it\n if (searchConfig.query) {\n if (searchConfig.query.eventTimeFrameFilter === undefined) {\n // If the query comes from a search result and it doesn't have a time frame filter\n // that means the value was saved as \"null\" and we have to set it to null\n // otherwise it gets default to the Future one which is not correct\n // This is the only filter with this Nuance, others do not have this issue\n searchConfig.query.eventTimeFrameFilter = null;\n }\n\n // Only change filter when the query came back\n setFilterQuery({\n ...searchConfig.query,\n searchConfigId: searchConfig.id,\n entityIds: searchConfig.entityIds,\n viewMode,\n } as T);\n setTempQuery(searchConfig.query as T);\n }\n setActiveSearchConfig(searchConfig);\n } else {\n setFilterQuery(defaultFilter);\n setTempQuery(defaultFilter);\n setActiveSearchConfig(undefined);\n }\n\n setSelectedFilters(undefined);\n // Clear selections\n setSelectionMode(undefined);\n },\n [\n initialQuery,\n viewMode,\n activeSearchConfig,\n setSelectionMode,\n setActiveSearchConfig,\n setFilterQuery,\n setTempQuery,\n ]\n );\n\n // This use affect allow handling of the URL for a search-result to be pasted in\n // it will come in via the filterQuery.searchConfigId and we will process that\n useEffect(() => {\n if (!disabled && activeAccountWebClientConfig?.activeAccountId) {\n if (filterQuery.searchConfigId) {\n if (filterQuery.searchConfigId !== activeSearchConfig?.id) {\n setDisabled?.(true);\n\n // set a mock search result while waiting for the main result\n setActiveSearchConfig({\n id: filterQuery.searchConfigId,\n name: null,\n query: null,\n ownerUserId: null,\n count: null,\n entityIds: null,\n lastFetchDate: null,\n } as S);\n getSearchResult(\n new SearchClient(activeAccountWebClientConfig),\n filterQuery.searchConfigId\n )\n .then(\n (r) => {\n onSetActiveSearchConfig(r);\n },\n (e) => {\n onSetActiveSearchConfig(undefined);\n showErrorDialog('SearchClient.getSearchResult', e);\n }\n )\n .finally(() => setDisabled?.(false));\n } else if (\n !filterQuery.entityIds?.length &&\n activeSearchConfig?.entityIds?.length\n ) {\n setFilterQuery({\n ...filterQuery,\n entityIds: activeSearchConfig.entityIds,\n });\n }\n } else if (\n // If we don't have a search config yet and the filter query is different from the initial query\n // set it so we start querying for data (this usually comes from set query or URL query)\n activeSearchConfig == null &&\n !isFilterUnchanged(filterQuery, initialQuery)\n ) {\n onSetActiveSearchConfig({\n ...(activeSearchConfig ?? {\n id: null,\n name: null,\n query: null,\n ownerUserId: null,\n count: null,\n entityIds: null,\n lastFetchDate: null,\n }),\n query: { ...filterQuery, entityIds: null },\n } as S);\n }\n }\n }, [\n activeAccountWebClientConfig,\n activeSearchConfig,\n activeSearchConfig?.id,\n disabled,\n initialQuery,\n filterQuery,\n getSearchResult,\n onSetActiveSearchConfig,\n setDisabled,\n setFilterQuery,\n setTempQuery,\n showErrorDialog,\n setActiveSearchConfig,\n ]);\n\n const onSaveSearchResult = useCallback(\n async (searchResult: S) => {\n if (\n !searchResult?.id || // should not save if there is no ID\n !searchResult?.name || // should not save if there is no ID\n // should not save search-result not yours\n (searchResult.ownerUserId &&\n searchResult.ownerUserId !== loginContext?.user?.userId)\n ) {\n return;\n }\n\n const newQuery = {\n ...(searchResult.query ?? activeSearchConfig?.query ?? filterQuery),\n // we don't need to save these, only the raw filter is needed\n entityIds: null as number[] | null,\n marketplaceEntityIds: null as string[] | null,\n searchConfigId: null as string | null,\n };\n\n if (isFilterUnchanged(newQuery, emptyQuery)) {\n console.log('Cannot save search result with empty query.');\n return;\n }\n\n setDisabled?.(true);\n await tryInvokeApi(\n async () => {\n const newSearchConfig = {\n ...searchResult,\n entityIds:\n searchResult.entityIds ??\n activeSearchConfig?.entityIds ??\n newEntityIds ??\n null,\n query: newQuery,\n };\n\n const result = await saveSearchResult(\n new SearchClient(activeAccountWebClientConfig),\n newSearchConfig\n );\n\n if (result) {\n setActiveSearchConfig({\n ...newSearchConfig,\n ...result,\n });\n }\n },\n (error) => {\n showErrorDialog('SearchClient.saveSaleSearchResult', error, {\n trackErrorData: {\n searchResult,\n },\n });\n },\n () => setDisabled?.(false)\n );\n },\n [\n loginContext?.user?.userId,\n activeSearchConfig?.query,\n activeSearchConfig?.entityIds,\n filterQuery,\n emptyQuery,\n newEntityIds,\n saveSearchResult,\n activeAccountWebClientConfig,\n setActiveSearchConfig,\n showErrorDialog,\n ]\n );\n\n const [lastResultEntityIds, setLastResultEntityIds] = useState();\n\n // This useEffect is for handling when the result list changes - if it's for the current search result\n // it will save the current search result automatically for the update ids\n useEffect(() => {\n if (newEntityIds?.length) {\n if (!isEqual(newEntityIds, lastResultEntityIds)) {\n setLastResultEntityIds(newEntityIds as number[]);\n setSelectionMode(undefined);\n\n const idsChanged =\n activeSearchConfig?.entityIds &&\n !isEqual(newEntityIds, activeSearchConfig.entityIds);\n\n if (activeSearchConfig?.id && activeSearchConfig?.name) {\n // If there is an active config - only save if the filter searchConfigId matches the active id\n // and either the filter or new entity ids changed\n if (\n (filterQuery.searchConfigId == null ||\n filterQuery.searchConfigId === activeSearchConfig?.id) &&\n (!isEqual(filterQuery, activeSearchConfig.query) || idsChanged)\n ) {\n // if there is current result\n // then save it\n onSaveSearchResult({\n ...activeSearchConfig,\n count: newEntityIds.length,\n lastFetchDate: idsChanged\n ? new Date().toISOString()\n : activeSearchConfig.lastFetchDate,\n query: filterQuery,\n entityIds: newEntityIds,\n });\n }\n } else {\n setActiveSearchConfig({\n ...(activeSearchConfig ?? {\n id: null,\n name: null,\n ownerUserId: null,\n }),\n count: newEntityIds.length,\n lastFetchDate:\n idsChanged || !activeSearchConfig?.lastFetchDate\n ? new Date().toISOString()\n : activeSearchConfig?.lastFetchDate,\n query: filterQuery,\n entityIds: newEntityIds,\n } as S);\n }\n }\n }\n }, [\n activeSearchConfig,\n filterQuery,\n lastResultEntityIds,\n newEntityIds,\n onSaveSearchResult,\n setActiveSearchConfig,\n setSelectionMode,\n ]);\n\n const onDeleteSearchResult = useCallback(\n (searchResult: S) => {\n if (!searchResult.id) return;\n\n setDisabled?.(true);\n tryInvokeApi(\n async () => {\n await new SearchClient(\n activeAccountWebClientConfig\n ).deleteSearchConfig(searchResult.id!);\n\n setActiveSearchConfig(undefined);\n },\n (error) => {\n showErrorDialog('SearchClient.deleteSearchConfig', error, {\n trackErrorData: {\n searchResult,\n },\n });\n },\n () => setDisabled?.(false)\n );\n },\n [\n activeAccountWebClientConfig,\n setActiveSearchConfig,\n setDisabled,\n showErrorDialog,\n ]\n );\n\n const {\n refreshCatalog,\n eventsExpansion: { refreshExpandedListItems },\n } = useCatalogDataContext();\n\n const refetchData = useCallback(\n async (\n filterQuery: ListingQuery | SaleQuery | PurchaseOrderQuery,\n customRefreshItems?: () => Promise\n ) => {\n setDisabled?.(true);\n\n try {\n if (activeSearchConfig) {\n // Update the last refetch date and save\n await onSaveSearchResult({\n ...activeSearchConfig,\n query: filterQuery,\n lastFetchDate: new Date().toISOString(),\n });\n }\n await refreshCatalog();\n customRefreshItems\n ? await customRefreshItems()\n : await refreshExpandedListItems(true);\n } finally {\n setDisabled?.(false);\n }\n },\n [\n activeSearchConfig,\n onSaveSearchResult,\n refreshCatalog,\n refreshExpandedListItems,\n setDisabled,\n ]\n );\n\n const onRequeryForTheResult = useCallback(() => {\n // First clear the entity ids so the query will re-query the DB\n // else you'll get the same result\n setFilterQuery({ ...filterQuery, searchConfigId: null, entityIds: null });\n refetchData(filterQuery);\n }, [filterQuery, refetchData, setFilterQuery]);\n\n return {\n selectedFilters,\n setSelectedFilters,\n onSetActiveSearchConfig,\n onSaveSearchResult,\n onDeleteSearchResult,\n refetchData,\n onRequeryForTheResult,\n disabled,\n setDisabled,\n };\n};\n","import { EntitySearchFilterBar } from 'src/components/EntitySearch';\nimport { FilterDropdownItem } from 'src/components/Filters';\nimport { useListingFilters } from 'src/components/MainFilterBar';\nimport { InventorySearchResult, ListingQuery } from 'src/WebApiController';\n\nexport const InventorySearchFilterBar = (props: {\n activeSearchConfig?: InventorySearchResult;\n onSubmitFilter?: (query: ListingQuery) => void;\n selectedFilters?: FilterDropdownItem[];\n setSelectedFilters: (sf: FilterDropdownItem[]) => void;\n}) => {\n const { filters } = useListingFilters({\n isHorizontalLayout: true,\n showCatalogFilters: true,\n });\n\n return (\n \n );\n};\n","import { MouseEvent } from 'react';\nimport { useToggle } from 'react-use';\nimport { MultiSelectActionBar } from 'src/components/common/MultiSelect/MultiSelectActionBar';\nimport { InventoryGlobalBulkActions } from 'src/components/Events/EventListing/InventoryEventListing/BulkActions';\nimport { SetInventoryFlattenedViewSelectionCountLabel } from 'src/components/Events/EventListing/InventoryEventListing/SetInventoryFlattenedViewSelectionCountLabel';\nimport { Content } from 'src/contexts/ContentContext';\nimport { NO_GROUP_ID } from 'src/contexts/MultiSelectionContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { ColumnSettingsModal } from 'src/modals/ColumnSettings/ColumnSettings';\nimport { LayoutIcon } from 'src/svgs';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { InventorySearchResult } from 'src/WebApiController';\n\nimport { container } from './InventorySearchToolbar.css';\n\nexport const InventorySearchToolbar = ({\n disabled,\n}: {\n disabled?: boolean;\n setDisabled?: (d: boolean) => void;\n activeSearchConfig?: InventorySearchResult;\n}) => {\n const [isColumnModalOpen, toggleColumnModal] = useToggle(false);\n\n const onColumnSettingButtonClickHandler = (\n e: MouseEvent\n ) => {\n e.stopPropagation();\n if (!isColumnModalOpen) toggleColumnModal(true);\n };\n\n return (\n \n
    \n \n {!disabled && (\n \n \n \n )}\n \n
    \n\n \n \n \n \n \n \n {isColumnModalOpen ? (\n \n onClose={toggleColumnModal}\n sectionType={SectionType.ListingsFlattened}\n showTicketClassColor\n />\n ) : null}\n \n );\n};\n","import { useCallback, useMemo, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n EntitySearchConfigsToolbar,\n EntitySearchRefetcher,\n} from 'src/components/EntitySearch';\nimport { useEntitySearch } from 'src/components/EntitySearch';\nimport { InventoryFlattenedView } from 'src/components/Events/EventListing/InventoryEventListing/InventoryFlattenedView';\nimport { ListingSearchBox } from 'src/components/Listings/ListingFilterBar/ListingSearchBox';\nimport { ActivePosEntityProvider } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n CatalogDataContextProvider,\n useCatalogDataContext,\n} from 'src/contexts/CatalogDataContext';\nimport { CatalogMultiSelectionContextProvider } from 'src/contexts/CatalogMultiSelectionContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { FilterQueryContextProvider } from 'src/contexts/FilterQueryContext';\nimport {\n MultiSelectionContextProvider,\n MultiSelectScope,\n NO_GROUP_ID,\n} from 'src/contexts/MultiSelectionContext';\nimport { SellerUserSettingsProvider } from 'src/contexts/SellerUserSettingsContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { DividerLine } from 'src/core/ui';\nimport { useGetActiveAccountClientConfig } from 'src/hooks/useGetActiveAccountClientConfig';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { InventoryDeeplinkQueryParam } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { removeDeepLinkUrlPartsFromRelativeUrl } from 'src/utils/deepLinkUtils';\nimport {\n DefaultListingQuery,\n EmptyListingQuery,\n} from 'src/utils/eventQueryUtils';\nimport { transformData } from 'src/utils/eventWithDataUtils';\nimport { EventPageLocationState } from 'src/utils/types/EventPageLocationState';\nimport { SomethingWentWrong } from 'src/views';\nimport {\n ActionOutboxEntityType,\n CatalogClient,\n CatalogResults,\n Feature,\n InventorySearchResult,\n InventoryViewMode,\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingQuery,\n} from 'src/WebApiController';\n\nimport {\n getCatalogData,\n getCatalogDataExpanded,\n listingQueryValueTransformFromUrl,\n listingQueryValueTransformToUrl,\n} from '../Inventory';\nimport {\n getDefaultReturnUrl,\n INVENTORY_USER_SETTINGS,\n} from '../InventoryEvent/constants';\nimport {\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n TAB_EVENT_IDS_2_QUERY_PARAM,\n TAB_EVENT_IDS_QUERY_PARAM,\n} from '../InventoryEvent/InventoryEvent.constants';\nimport { MainRoute } from '../MainRoute';\nimport * as styles from './InventorySearch.css';\nimport { InventorySearchFilterBar } from './InventorySearchFilterBar';\nimport { InventorySearchToolbar } from './InventorySearchToolbar';\n\nexport function InventorySearch() {\n return (\n \n \n initialQuery={{\n ...DefaultListingQuery,\n viewMode: InventoryViewMode.FlattenedView,\n }}\n emptyQuery={EmptyListingQuery}\n queryValueTransformToUrl={listingQueryValueTransformToUrl}\n queryValueTransformFromUrl={listingQueryValueTransformFromUrl}\n saveQueryInUrl\n >\n \n \n \n );\n}\n\nfunction InventorySearchPage() {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n const [activeSearchConfig, setActiveSearchConfig] =\n useState();\n\n const getCatalogDataExpandedCallback = useCallback(\n (ids: string[], f: ListingQuery) => {\n // Check to see if if is empty filter, query\n if (\n activeSearchConfig == null || // do not start query for items if there is no activeSearchConfig\n (f.searchConfigId && !f.entityIds?.length) // we don't want to query when the filter has the search config id but no entity ids\n ) {\n return Promise.resolve({});\n }\n\n // If we're querying by ids - we want to get the latest greatest\n // We're only using readonly-db if we're filtering\n const useReadOnlyDb = f.entityIds?.length ? false : true;\n return getCatalogDataExpanded(\n ids,\n f,\n {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError('ListingClient.getListingsForEvents', error, {\n ...f,\n eventIds: ids,\n });\n },\n },\n useReadOnlyDb,\n true /* doNotProcessListingGroups */\n );\n },\n [activeAccountWebClientConfig, activeSearchConfig, trackError]\n );\n\n const getCatalogDataCallback = useCallback(\n async (c: CatalogClient, f: ListingQuery) => {\n // Check to see if if is empty filter, query\n if (\n f.searchConfigId &&\n !f.entityIds?.length // we don't want to query when the filter has the search config id but no entity ids\n ) {\n // If there is no filter (empty query) then don't try to query for anything\n return {\n events: {},\n performers: {},\n venues: {},\n venueCfgs: {},\n } as CatalogResults;\n }\n\n return await getCatalogData(c, f, true);\n },\n []\n );\n\n return (\n \n entityType={ActionOutboxEntityType.Listing}\n queryKey=\"getCatalogForListingOrders\"\n getCatalogData={getCatalogDataCallback}\n getCatalogDataExpanded={getCatalogDataExpandedCallback}\n transformEventData={transformData}\n disableAutoRefresh\n ignoreMaxCount\n >\n \n \n \n \n \n \n );\n}\n\nfunction InventorySearchContent({\n activeSearchConfig,\n setActiveSearchConfig,\n}: {\n activeSearchConfig: InventorySearchResult | undefined;\n setActiveSearchConfig: (a: InventorySearchResult | undefined) => void;\n}) {\n const searchTitle = useContent(ContentId.SearchInventory);\n const hasColumnFilterSearchViewFeature = useUserHasFeature(\n Feature.ColumnFilterSearchView\n );\n\n const location = useLocation();\n const {\n errorInfo,\n isLoading: isCatalogDataLoading,\n isItemsLoading,\n eventsTransformed,\n } = useCatalogDataContext();\n\n const {\n selectedFilters,\n setSelectedFilters,\n onSetActiveSearchConfig,\n onSaveSearchResult,\n onDeleteSearchResult,\n onRequeryForTheResult,\n refetchData,\n disabled,\n setDisabled,\n } = useEntitySearch(\n activeSearchConfig,\n setActiveSearchConfig,\n InventoryViewMode.FlattenedView,\n (client, id) => client.getInventorySearchResult(id),\n (client, r) => client.saveInventorySearchResult(r)\n );\n\n // Only use value provided at the first time (should be from '/purchases')\n const returnUrl = useMemo(() => {\n const locationState = (location.state ?? {}) as EventPageLocationState;\n\n if (locationState.returnUrl && locationState.keepReturnUrlUnchanged) {\n return locationState.returnUrl;\n }\n\n const relativeUrl =\n locationState.returnUrl || getDefaultReturnUrl('purchases');\n\n return removeDeepLinkUrlPartsFromRelativeUrl(relativeUrl, [\n InventoryDeeplinkQueryParam,\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n TAB_EVENT_IDS_QUERY_PARAM,\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n TAB_EVENT_IDS_2_QUERY_PARAM,\n ]);\n }, [location.state]);\n\n const getActClientCfg = useGetActiveAccountClientConfig(\n 'Inventory.ListingClient.getListingByListingId'\n );\n const hasSectionalLoadDataFeature = useUserHasFeature(\n Feature.ListingLoadBySection\n );\n\n const getActivePosEntity = useCallback(\n async (\n posEntityId: number,\n curEntity?: ListingDetails | null,\n dataToGet?: string[] | null\n ) => {\n const activeClientCf = await getActClientCfg();\n\n const listingDetail = await new ListingClient(\n activeClientCf\n ).getListingByListingId(\n posEntityId,\n hasSectionalLoadDataFeature ? (curEntity ?? undefined) : undefined,\n hasSectionalLoadDataFeature\n ? (dataToGet?.map((s) => s as ListingDetailDataField) ?? [])\n : undefined\n );\n\n if (listingDetail) {\n return {\n posEntityId: listingDetail.id,\n posEntity: listingDetail,\n posEntityDisplayId: listingDetail.idOnMkp,\n };\n }\n\n return {};\n },\n [getActClientCfg, hasSectionalLoadDataFeature]\n );\n\n const dataIsLoading = isCatalogDataLoading;\n\n return (\n \n entityType={ActionOutboxEntityType.Listing}\n getActivePosEntity={getActivePosEntity}\n >\n \n \n }\n >\n \n client.getInventorySearchConfigs(includeAllUser)\n }\n getSearchResult={(client, id) =>\n client.getInventorySearchResult(id)\n }\n additionalActions={}\n />\n \n {\n if (!activeSearchConfig) {\n // Setting an empty search config so it starts to filter\n onSetActiveSearchConfig({\n id: null,\n name: null,\n query: filter,\n ownerUserId: null,\n count: null,\n entityIds: null,\n lastFetchDate: null,\n });\n }\n refetchData(filter);\n }}\n />\n \n \n \n
    \n {errorInfo && (\n \n )\n }\n />\n )}\n {(dataIsLoading || isItemsLoading) && !eventsTransformed?.length ? (\n \n ) : (\n \n )}\n
    \n \n
    \n \n );\n}\n","import { useCallback, useEffect, useMemo } from 'react';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { getCurrentViewPath } from 'src/utils/deepLinkUtils';\nimport { ApiException, LoginClient, LoginContext } from 'src/WebApiController';\n\nimport { MainRoute } from '../MainRoute';\nimport * as styles from './Login.css';\n\nexport function Login() {\n return (\n \n \n \n );\n}\n\nfunction LoginPage() {\n const location = useMemo(() => new URL(window.location.href), []);\n const reactRouterLocation = useLocation();\n const returnUrl = (reactRouterLocation.state as { returnUrl?: string })\n ?.returnUrl;\n const { trackError } = useErrorBoundaryContext();\n const navigate = useNavigate();\n\n const handleLoginContext = useCallback(\n (loginContext: LoginContext) => {\n if ((loginContext?.authorizationUrl?.length || 0) > 0) {\n window.location.assign(loginContext.authorizationUrl!);\n } else {\n let returnUrl = location?.searchParams?.get('returnUrl');\n if (!returnUrl) {\n returnUrl = getCurrentViewPath(MainRoute.Home);\n }\n if (returnUrl!.startsWith('https://')) {\n // to be safe we should only redirect to full HTTPS\n window.location.assign(returnUrl!);\n } else {\n navigate(returnUrl!);\n }\n }\n },\n [location?.searchParams, navigate]\n );\n\n const onLoggingInUser = useCallback(async () => {\n try {\n const loginContext = await new LoginClient({}).getLoginContext(\n returnUrl || '/home'\n ); // after we authorize we want to return here\n\n handleLoginContext(loginContext);\n } catch (error) {\n // When getting a 401 response, we go this route\n try {\n const defaultLoginContext = JSON.parse(\n (error as ApiException)?.response\n ) as LoginContext;\n\n handleLoginContext(defaultLoginContext);\n } catch (jsonError) {\n trackError('LoginClient.getLoginContext', jsonError as ErrorTypes, {\n error,\n });\n }\n }\n }, [handleLoginContext, returnUrl, trackError]);\n\n useEffect(() => {\n onLoggingInUser();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return
    ;\n}\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { SellerAccountBasicInfo } from 'src/components/SellerAccountBasicInfo';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { SearchResultPickerDialog } from 'src/dialogs/SearchResultPickerDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { sortSellerAccount } from 'src/utils/userUtils';\nimport {\n LoginClient,\n SellerAccount,\n SellerAccountClient,\n} from 'src/WebApiController';\n\nimport { MainRoute } from '../MainRoute';\nimport * as styles from './Login.css';\n\nexport function LoginCallback() {\n return (\n \n \n \n );\n}\n\nfunction LoginCallbackPage() {\n const navigate = useNavigate();\n const { showErrorDialog } = useErrorBoundaryContext();\n const location = useMemo(() => new URL(window.location.href), []);\n const [returnUrl, setReturnUrl] = useState(null);\n const [sellerAccounts, setSellerAccounts] = useState(\n null\n );\n const [filteredSellerAccounts, setFilteredSellerAccounts] = useState<\n SellerAccount[]\n >([]);\n\n const { closeDialog, launchDialog, dialogProps } = useBasicDialog();\n\n const onSellerAccountPicked = useCallback(\n async (account: SellerAccount) => {\n await tryInvokeApi(\n async () => {\n await new LoginClient({}).setActiveAccount(\n account.id,\n account.impersonatedUserId\n );\n if (returnUrl) {\n navigate(returnUrl);\n }\n closeDialog();\n },\n (error) => {\n showErrorDialog('AdminClient.setActiveAccount', error, {\n trackErrorData: account,\n });\n }\n );\n },\n [closeDialog, navigate, returnUrl, showErrorDialog]\n );\n\n const onLoginCallback = useCallback(async () => {\n tryInvokeApi(\n async () => {\n const code = location.searchParams.get('code');\n const state = location.searchParams.get('state');\n if (code && state) {\n const loginContext = await new LoginClient(\n {}\n ).getLoginContextAfterAuthorization({\n code: location.searchParams.get('code') || '',\n state: location.searchParams.get('state') || '',\n }); // after we authorize we want to return here\n\n if (loginContext?.user?.hasManyAccounts) {\n const accounts = await new SellerAccountClient({\n activeAccountId: loginContext?.user?.activeAccount?.id,\n }).getCurrentUserSellerAccounts();\n setReturnUrl(loginContext.returnUrl);\n\n if (accounts) {\n const sorted = sortSellerAccount(accounts);\n setSellerAccounts(sorted);\n setFilteredSellerAccounts(sorted);\n launchDialog();\n } else {\n setSellerAccounts([]);\n setFilteredSellerAccounts([]);\n }\n } else if (loginContext?.returnUrl) {\n if (loginContext.returnUrl.startsWith('https://')) {\n // to be safe we should only redirect to full HTTPS\n window.location.assign(loginContext.returnUrl);\n } else {\n navigate(loginContext.returnUrl);\n }\n }\n }\n },\n (error) => {\n showErrorDialog(\n 'LoginClient.getLoginContextAfterAuthorization',\n error,\n {\n onDismissError: () => {\n window.location.assign('/unauthorized');\n },\n trackErrorData: {\n code: location.searchParams.get('code'),\n state: location.searchParams.get('state'),\n },\n }\n );\n }\n );\n }, [launchDialog, location.searchParams, navigate, showErrorDialog]);\n\n const onFilterSellerAccount = useCallback(\n (text: string) => {\n text = text.toLocaleUpperCase();\n const filtered = sellerAccounts?.filter(\n (sa) =>\n sa.accountName.toLocaleUpperCase().includes(text) ||\n sa.impersonatedUsername?.toLocaleUpperCase()?.includes(text) ||\n sa.id.toLocaleUpperCase().includes(text)\n );\n setFilteredSellerAccounts(filtered ?? []);\n },\n [sellerAccounts]\n );\n\n useEffect(() => {\n onLoginCallback();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n
    \n {sellerAccounts == null ? (\n \n ) : (\n sellerAccounts.length == 0 && (\n }\n />\n )\n )}\n }\n resultItems={filteredSellerAccounts || []}\n renderItem={(account: SellerAccount) => (\n \n )}\n onResultItemPicked={onSellerAccountPicked}\n onResultItemSearched={onFilterSellerAccount}\n onCancel={undefined}\n />\n
    \n );\n}\n","import { useNavigate } from 'react-router-dom';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Button } from 'src/core/ui';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { MainRoute } from '../MainRoute';\nimport * as styles from './Login.css';\n\nexport function LoginFailure() {\n return (\n \n \n \n );\n}\n\nfunction LoginFailurePage() {\n const navigate = useNavigate();\n return (\n
    \n
    \n \n
    \n \n
    \n );\n}\n","import { useCallback, useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { Button } from 'src/core/ui';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ApiException, LoginClient, LoginContext } from 'src/WebApiController';\n\nimport { MainRoute } from '../MainRoute';\nimport * as styles from './Login.css';\n\nexport function Logout() {\n return (\n \n \n \n );\n}\n\nfunction LogoutPage() {\n const navigate = useNavigate();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const handleLoginContextForLogout = async (loginContext: LoginContext) => {\n if (loginContext?.user) {\n const loginContext = await new LoginClient({}).logout();\n\n if ((loginContext?.authorizationUrl?.length || 0) > 0) {\n const authUrl = new URL(loginContext.authorizationUrl!);\n\n window.location.assign(\n `${authUrl.protocol}//${authUrl.host}/logout?returnUrl=${window.location.href}`\n );\n }\n }\n };\n\n const onLoggingOut = useCallback(async () => {\n try {\n const existingContext = await new LoginClient({}).getLoginContext(\n '/logout'\n );\n handleLoginContextForLogout(existingContext);\n } catch (error) {\n // When getting a 401 response, we go this route\n try {\n const defaultLoginContext = JSON.parse(\n (error as ApiException)?.response\n ) as LoginContext;\n handleLoginContextForLogout(defaultLoginContext);\n } catch (jsonError) {\n showErrorDialog('LoginClient.logout', error as ErrorTypes, {\n trackErrorData: { jsonError },\n });\n }\n }\n }, [showErrorDialog]);\n\n useEffect(() => {\n onLoggingOut();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n
    \n \n
    \n );\n}\n","import { ReactNode, useState } from 'react';\nimport { useUnmount } from 'react-use';\nimport { Components, Virtuoso } from 'react-virtuoso';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { ConnectedNotificationDisplay } from 'src/components/ConnectedNotificationDisplay';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useNotificationsContext } from 'src/contexts/NotificationsContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { ToolbarButton } from 'src/core/POS/ToolbarButton';\nimport { vars } from 'src/core/themes';\nimport { Card } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature, NotificationType } from 'src/WebApiController';\n\nimport IconAlarmAdd from '~icons/pos/alarmAdd';\n\nimport { MainRoute } from '../MainRoute';\nimport * as styles from './Notifications.css';\n\ntype VirtuosoContext = {\n isLoading?: boolean;\n};\n\nconst notificationTypeSetMap = {\n newSales: new Set([NotificationType.SaleNew]),\n failures: new Set([\n NotificationType.SaleFulfilmentFailed,\n NotificationType.ListingHideSeatsFailed,\n NotificationType.ListingUpdateAllInPriceFailed,\n NotificationType.ListingUpdateInHandDateFailed,\n NotificationType.ListingUpdateSplitTypeFailed,\n NotificationType.ListingUpdateDeliveryTypeFailed,\n NotificationType.ListingUpdateUnitNetProceedsFailed,\n NotificationType.ListingBroadcastFailed,\n NotificationType.ListingUnbroadcastFailed,\n NotificationType.ListingMergeFailed,\n NotificationType.ListingSplitFailed,\n ]),\n autopricing: new Set([\n NotificationType.AutopriceBelowFloor,\n NotificationType.AutopriceInsufficientCompListings,\n NotificationType.AutopriceFirebrake,\n ]),\n messages: new Set([NotificationType.SellerSupportCaseNewReply]),\n cancellations: new Set([NotificationType.SaleMarketplaceCancelled]),\n};\n\nconst Header: Components['Header'] = () => {\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n\n const { setNotificationFilter } = useNotificationsContext();\n useUnmount(() => {\n setNotificationFilter({});\n });\n\n const [selectedQuickFilterId, setSelectedQuickFilterId] = useState<\n string | null\n >(null);\n\n const quickFilters: {\n id: string;\n name: ReactNode;\n onClick: () => void;\n }[] = [\n {\n id: 'newSales',\n name: ,\n onClick: () => {\n setNotificationFilter({\n type: notificationTypeSetMap.newSales,\n });\n },\n },\n {\n id: 'failures',\n name: ,\n onClick: () => {\n setNotificationFilter({\n type: notificationTypeSetMap.failures,\n });\n },\n },\n {\n id: 'messages',\n name: ,\n onClick: () => {\n setNotificationFilter({\n type: notificationTypeSetMap.messages,\n });\n },\n },\n {\n id: 'cancellations',\n name: ,\n onClick: () => {\n setNotificationFilter({\n type: notificationTypeSetMap.cancellations,\n });\n },\n },\n ];\n\n if (hasAutoPricingFeature) {\n quickFilters.push({\n id: 'autopricing',\n name: ,\n onClick: () => {\n setNotificationFilter({\n type: notificationTypeSetMap.autopricing,\n });\n },\n });\n }\n\n return (\n
    \n

    \n \n

    \n
    \n {\n setSelectedQuickFilterId(null);\n setNotificationFilter({});\n }}\n >\n \n \n {quickFilters.map(({ id, name, onClick }) => (\n {\n setSelectedQuickFilterId(id);\n onClick();\n }}\n >\n {name}\n \n ))}\n
    \n
    \n );\n};\n\n// XXX hack to prevent margin collapse on last element\nconst Footer = () => {\n return
    ;\n};\n\nconst EmptyPlaceholder: Components<\n unknown,\n VirtuosoContext\n>['EmptyPlaceholder'] = ({ context }: { context?: VirtuosoContext }) => {\n const { noResultsForNotificationFilter } = useNotificationsContext();\n if (context?.isLoading) {\n return ;\n }\n return (\n }\n >\n {noResultsForNotificationFilter ? (\n \n ) : (\n \n )}\n \n );\n};\n\nexport function Notifications() {\n const notificationsTitle = useContent(ContentId.Notifications);\n const { notifications, notificationsIsInitialLoading, dismissNotification } =\n useNotificationsContext();\n\n return (\n \n {\n return (\n
    \n \n {\n dismissNotification(notification.notificationId);\n }}\n />\n \n
    \n );\n }}\n />\n \n );\n}\n","import {\n createContext,\n PropsWithChildren,\n useCallback,\n useContext,\n useMemo,\n} from 'react';\nimport { useOnSaleEvents } from 'src/hooks/api/useOnSaleEvents';\nimport { OnSaleEventWithMetrics } from 'src/navigations/Routes/OnSaleEvent/OnSaleEventView.types';\nimport { OnSaleEventMetrics, OnSaleEventQuery } from 'src/WebApiController';\n\nimport { useFilterQueryContext } from '../FilterQueryContext';\n\nexport interface IEventDiscoveryContext {\n onSaleEvents: OnSaleEventWithMetrics[];\n isLoading: boolean;\n searchText: string | undefined;\n setSearchText: (value: string | null) => void;\n}\n\nconst emptyContext: IEventDiscoveryContext = {\n onSaleEvents: [],\n isLoading: false,\n setSearchText: () => {},\n searchText: undefined,\n};\n\nconst EventDiscoveryContext =\n createContext(emptyContext);\n\nexport const useEventDiscoveryContext = () => useContext(EventDiscoveryContext);\n\nexport const EventDiscoveryContextProvider = ({\n children,\n}: PropsWithChildren) => {\n const { filterQuery, setFilterQuery } =\n useFilterQueryContext();\n const { onSaleEventMetrics, onSaleEvents, isLoading } =\n useOnSaleEvents(filterQuery);\n\n const mergedEvents = useMemo(() => {\n if (!onSaleEvents) {\n return [];\n }\n const { events, performers, venues } = onSaleEvents;\n const mergedEvents: OnSaleEventWithMetrics[] = Object.entries(events).map(\n ([_, { event }]) => {\n return {\n event: event,\n performer: event.perfId ? performers[event.perfId] : undefined,\n venue: event.venueId ? venues[event.venueId] : undefined,\n };\n }\n );\n\n if (onSaleEventMetrics) {\n const metricsById = onSaleEventMetrics.reduce(\n (res, metrics) => {\n res[metrics.eventId] = metrics;\n return res;\n },\n {} as Record\n );\n for (const onSaleEvent of mergedEvents) {\n if (onSaleEvent.event.viagId) {\n const metrics = metricsById[onSaleEvent.event.viagId];\n if (metrics) {\n Object.assign(onSaleEvent, {\n metrics,\n });\n }\n }\n }\n }\n\n return mergedEvents;\n }, [onSaleEventMetrics, onSaleEvents]);\n\n const setSearchText = useCallback(\n (text: string | null) => {\n setFilterQuery({\n ...filterQuery,\n searchText: text,\n });\n },\n [filterQuery, setFilterQuery]\n );\n\n return (\n \n {children}\n \n );\n};\n","import * as Sentry from '@sentry/react';\nimport {\n ColumnDef,\n functionalUpdate,\n GroupingState,\n InitialTableState,\n Row,\n RowSelectionState,\n SortingState,\n TableOptions,\n Updater,\n} from '@tanstack/react-table';\nimport { isEmpty } from 'lodash-es';\nimport {\n CSSProperties,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n Content,\n FormatContent,\n useContent,\n} from 'src/contexts/ContentContext';\nimport {\n MultiSelectScope,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { useClearShiftSelectionOnSortingChange } from 'src/contexts/MultiSelectionContext/useClearShiftSelectionOnSortingChange';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { NoData, Table } from 'src/tables/Table';\nimport {\n defaultOnSaleEventsColumnsConfig,\n filterColumnsByFeatures,\n getOnSaleEventsColumnConfigById,\n} from 'src/utils/columns/columnUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { hasFeatures } from 'src/utils/userUtils';\nimport { SomethingWentWrong } from 'src/views';\nimport { Feature, UserSetting } from 'src/WebApiController';\n\nimport { ON_SALE_EVENTS_TABLE_COLUMNS_CONFIG } from './OnSaleEventView.constants';\nimport {\n OnSaleEventsTableColumnId,\n OnSaleEventWithMetrics,\n} from './OnSaleEventView.types';\n\nexport type OnSaleEventTableProps = {\n highlightedId?: string;\n failedToRetrieveData: boolean;\n onMount?: () => void;\n onUnmount?: (state: object) => void;\n initState?: InitialTableState;\n useVirtuoso?: boolean;\n useDataGrouping?: boolean;\n withOuterPadding?: boolean;\n tableHeadStyle?: CSSProperties;\n isLoading?: boolean;\n events: OnSaleEventWithMetrics[];\n};\n\nconst getRowId = (originalRow: OnSaleEventWithMetrics | null): string => {\n return (originalRow as OnSaleEventWithMetrics)?.event?.viagVirtualId ?? '';\n};\n\nexport const OnSaleEventTable = ({\n highlightedId,\n failedToRetrieveData,\n onMount,\n onUnmount,\n initState,\n useVirtuoso,\n useDataGrouping,\n withOuterPadding,\n tableHeadStyle,\n events,\n isLoading,\n}: OnSaleEventTableProps) => {\n const { appContext, loginContext } = useAppContext();\n const { getSelection, selectionMode, setGroupStates } =\n useMultiSelectionContext();\n const eventSelection = getSelection();\n\n const viewedEventIdsRef = useRef([]);\n\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n const eventsText = useContent(ContentId.Events);\n\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const [sorting, setSorting] = useState(\n initState?.sorting || []\n );\n const [grouping, setGrouping] = useState(\n initState?.grouping || []\n );\n\n useClearShiftSelectionOnSortingChange({ sortingState: sorting });\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ sorting });\n }, [sorting, onUnmount]);\n\n const {\n value: storedEventsColumnOrderSetting = defaultOnSaleEventsColumnsConfig,\n } = useServerUserSetting({\n id: UserSetting.OnSaleEventColumnsOrder,\n });\n const { value: storedEventsColumnsEnabledSetting } = useServerUserSetting<\n string[]\n >({\n id: UserSetting.OnSaleEventColumnsEnabled,\n });\n\n const displayedColumnsConfig = useMemo(() => {\n const eventsColumnOrder = storedEventsColumnOrderSetting.filter(\n // If storedEventsColumnsEnabledSetting has never been set, default to true\n (c) => storedEventsColumnsEnabledSetting?.includes(c) ?? true\n );\n\n if (\n !hasTablePinActionColumnFeature &&\n !eventsColumnOrder.includes(OnSaleEventsTableColumnId.Action)\n ) {\n eventsColumnOrder.push(OnSaleEventsTableColumnId.Action);\n }\n const columns = new Set([\n // Add unconfigurable columns first\n ...Object.values(ON_SALE_EVENTS_TABLE_COLUMNS_CONFIG)\n .filter((column) => {\n const columnDef = getOnSaleEventsColumnConfigById(\n column.id as OnSaleEventsTableColumnId\n ).personalization;\n const hasFeatureForColumn =\n columnDef.requiredFeatures.length === 0 ||\n hasFeatures(\n loginContext?.user,\n appContext?.features,\n columnDef.requiredFeatures\n );\n\n let isConfigurable = columnDef.isConfigurable;\n if (\n !hasTablePinActionColumnFeature &&\n column.id === OnSaleEventsTableColumnId.Action\n ) {\n isConfigurable = true;\n }\n\n return !isConfigurable && hasFeatureForColumn;\n })\n .map((item) => item.id as OnSaleEventsTableColumnId),\n // Add user defined columns next\n ...filterColumnsByFeatures(\n eventsColumnOrder,\n SectionType.Events,\n undefined,\n loginContext?.user,\n appContext?.features\n ),\n ]);\n\n return Array.from(columns).reduce<\n ColumnDef[]\n >((acc, columnId) => {\n const columnConfig = Object.values(\n ON_SALE_EVENTS_TABLE_COLUMNS_CONFIG\n ).find((column) => column.id === columnId);\n if (columnConfig) acc.push(columnConfig);\n return acc;\n }, []);\n }, [\n appContext?.features,\n hasTablePinActionColumnFeature,\n loginContext?.user,\n storedEventsColumnOrderSetting,\n storedEventsColumnsEnabledSetting,\n ]);\n\n const rowSelection = useMemo(() => {\n if (!selectionMode && highlightedId) {\n return {\n [highlightedId]: true,\n };\n }\n return eventSelection.groupIds.reduce>(\n (acc, eventId) => {\n acc[eventId] = true;\n return acc;\n },\n {}\n );\n }, [highlightedId, eventSelection.groupIds, selectionMode]);\n\n const onRowSelectionChanged = useCallback(\n (updater: Updater) => {\n const newSelections =\n typeof updater === 'function' ? updater(rowSelection) : updater;\n const newSelectedIds = Object.keys(newSelections).filter(\n (r) => newSelections[r] === true\n );\n if (!selectionMode) {\n newSelectedIds.forEach((id) => {\n if (rowSelection[id] && newSelections[id]) {\n // if both of these are the same value and is true, we need to set it to false\n newSelections[id] = false;\n }\n });\n }\n setGroupStates(newSelections);\n },\n [rowSelection, selectionMode, setGroupStates]\n );\n\n const showCheckbox = selectionMode?.mode === MultiSelectScope.AllGroups;\n\n const options: Partial> = useMemo(\n () => ({\n data: events,\n columns: displayedColumnsConfig,\n state: {\n expanded: useDataGrouping ? true : undefined,\n grouping,\n sorting,\n rowSelection,\n columnVisibility: {\n checkbox: showCheckbox,\n },\n columnPinning: {\n right: hasTablePinActionColumnFeature\n ? [OnSaleEventsTableColumnId.Action]\n : undefined,\n },\n },\n onGroupingChange: setGrouping,\n getRowId: getRowId,\n onRowSelectionChange: onRowSelectionChanged,\n onSortingChange: (sortingUpdaterFn: any) => {\n const newSortVal = functionalUpdate(sortingUpdaterFn, sorting);\n setSorting(newSortVal);\n },\n enableRowSelection: showCheckbox,\n enableMultiRowSelection: showCheckbox,\n enableGrouping: !!useDataGrouping,\n }),\n [\n events,\n displayedColumnsConfig,\n useDataGrouping,\n grouping,\n sorting,\n rowSelection,\n showCheckbox,\n hasTablePinActionColumnFeature,\n onRowSelectionChanged,\n ]\n );\n\n const allEventMetricsLoaded = useMemo(\n () => events.every((event) => event.metrics != null),\n [events]\n );\n\n const onItemsRendered = useCallback(\n (rows: Row[]) => {\n // This callback is rendered on the change of what user sees in the vituosso\n // which can be changed with the sorting, even before all metrics are loaded\n // Avoid logging sentry spans when event are not fully loaded\n if (!allEventMetricsLoaded) return;\n\n const viewedEventIds = viewedEventIdsRef.current;\n // Ensure to only log the different event ids\n const renderedEventIds = rows\n .map((row) => row?.original?.event?.viagId ?? null)\n .filter((id: number | null): id is number => id != null)\n .filter((id) => !viewedEventIds.includes(id));\n if (isEmpty(renderedEventIds)) return;\n\n const span = Sentry.startSpan(\n { name: 'Event Discovery', op: 'event_viewed' },\n (span: Sentry.Span) => {\n span.setAttribute('event_ids', Array.from(new Set(renderedEventIds)));\n return span;\n }\n );\n viewedEventIdsRef.current = [...viewedEventIds, ...renderedEventIds];\n span.end();\n },\n [allEventMetricsLoaded]\n );\n\n if (failedToRetrieveData) {\n return (\n }\n />\n );\n }\n\n if (isLoading) {\n return ;\n }\n\n return events.length > 0 ? (\n \n ) : (\n // We should never see this - because the events are filtered to only those that has sales\n // So this is to prevent a crash - but this should be looked at\n \n \n \n );\n};\n","import { CSSProperties, MouseEvent, ReactNode, useEffect } from 'react';\nimport { useToggle } from 'react-use';\nimport { useEventFlattedViewSelectedLegend } from 'src/components/Events/EventListing/useEventFlattedViewSelectedLegend';\nimport { ActiveSortTableColumnProvider } from 'src/contexts/ActiveSortTableColumnContext';\nimport { ColumnResizingContextProvider } from 'src/contexts/ColumnResizingContext/ColumnResizingContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useEventDiscoveryContext } from 'src/contexts/EventDiscoveryContext/EventDiscoveryContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { ColumnSettingsModal } from 'src/modals/ColumnSettings/ColumnSettings';\nimport { LayoutIcon } from 'src/svgs';\nimport { CustomOnSaleEventsColumn } from 'src/utils/columns/events/eventsCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { UserSetting } from 'src/WebApiController';\n\nimport { OnSaleEventTable } from './OnSaleEventTable';\nimport * as styles from './OnSaleEventView.css';\nimport { OnSaleEventsTableColumnId } from './OnSaleEventView.types';\n\ntype OnSaleEventViewProps = {};\n\nexport const OnSaleEventView: React.FC = () => {\n const [isColumnModalOpen, toggleColumnModal] = useToggle(false);\n\n const onColumnSettingButtonClickHandler = (\n e: MouseEvent\n ) => {\n e.stopPropagation();\n if (!isColumnModalOpen) toggleColumnModal(true);\n };\n\n return (\n \n \n {isColumnModalOpen ? (\n \n onClose={toggleColumnModal}\n sectionType={SectionType.OnSaleEvents}\n />\n ) : null}\n\n \n \n \n \n }\n />\n \n \n );\n};\n\nconst posTableHeadStyle: CSSProperties = {\n position: 'sticky',\n top: '0',\n};\n\ninterface EventsTableWithInnerGroupingProps {\n columnSettingButton?: ReactNode;\n}\n\nconst OnSaleEventTableWithInnerGrouping = ({\n columnSettingButton,\n}: EventsTableWithInnerGroupingProps) => {\n const { isLoading, onSaleEvents } = useEventDiscoveryContext();\n return (\n \n {/* \n \n \n \n \n */}\n \n {columnSettingButton}\n \n \n \n );\n};\n\nexport const SetOnSaleEventViewSelectionCountLabel = ({\n children,\n}: React.PropsWithChildren) => {\n const eventText = useContent(ContentId.Event);\n const eventsText = useContent(ContentId.Events);\n const { setSelectedCountLabel, setUsingCustomSelectedCountLabel } =\n useMultiSelectionContext();\n\n useEffect(() => {\n setUsingCustomSelectedCountLabel(true);\n }, [setUsingCustomSelectedCountLabel]);\n\n const selectedLegend = useEventFlattedViewSelectedLegend({\n singleElementLabel: eventText,\n multipleElementsLabel: eventsText,\n });\n\n useEffect(() => {\n setSelectedCountLabel(selectedLegend);\n }, [selectedLegend, setSelectedCountLabel]);\n\n return <>{children};\n};\n","import { MainFilterBar } from 'src/components/MainFilterBar';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { EventDiscoveryContextProvider } from 'src/contexts/EventDiscoveryContext/EventDiscoveryContext';\nimport { FilterQueryContextProvider } from 'src/contexts/FilterQueryContext';\nimport { MultiSelectionContextProvider } from 'src/contexts/MultiSelectionContext';\nimport { SellerUserSettingsProvider } from 'src/contexts/SellerUserSettingsContext';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n DefaultOnSaleEventQuery,\n EmptyOnSaleEventQuery,\n} from 'src/utils/eventQueryUtils';\nimport { OnSaleEventQuery, UserSetting } from 'src/WebApiController';\n\nimport { MainRoute } from '../MainRoute';\nimport { OnSaleEventView } from './OnSaleEventView';\n\nexport const DISCOVERY_USER_SETTINGS = [\n UserSetting.QuickFiltersStateOnSaleEvent,\n UserSetting.QuickFiltersCustomOnSaleEvent,\n UserSetting.OnSaleEventColumnEditability,\n UserSetting.OnSaleEventColumnNumberPrecision,\n UserSetting.OnSaleEventColumnsEnabled,\n UserSetting.OnSaleEventColumnsOrder,\n UserSetting.OnSaleEventColumnsWidths,\n UserSetting.OnSaleEventCustomColumns,\n];\n\nexport function OnSaleEvent() {\n const title = useContent(ContentId.EventDiscovery);\n return (\n \n \n initialQuery={DefaultOnSaleEventQuery}\n emptyQuery={EmptyOnSaleEventQuery}\n saveQueryInUrl\n >\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { useMemo } from 'react';\nimport { useMarketplacePaymentsTableColumnsConfig } from 'src/tables/MarketplacePaymentsTable/useMarketplacePaymentsTableColumnsConfig';\nimport { MarketplacePaymentsTableColumnId } from 'src/utils/columns/marketplacePayments/marketplacePaymentsColumnsUtils.types';\n\nexport const useGetMarketplaceDefaultColumnsConfig =\n (): MarketplacePaymentsTableColumnId[] => {\n const paymentsTableColumnConfig =\n useMarketplacePaymentsTableColumnsConfig();\n return useMemo(\n () =>\n Object.values(paymentsTableColumnConfig).map(\n (column) => column.id as MarketplacePaymentsTableColumnId\n ),\n [paymentsTableColumnConfig]\n );\n };\n","import { ColumnDef } from '@tanstack/react-table';\nimport { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { useGetMarketplaceDefaultColumnsConfig } from 'src/tables/MarketplacePaymentsTable/useGetMarketplaceDefaultColumnsConfig';\nimport { useMarketplacePaymentsTableColumnsConfig } from 'src/tables/MarketplacePaymentsTable/useMarketplacePaymentsTableColumnsConfig';\nimport {\n filterColumnsByFeatures,\n getMarketplacePaymentColumnConfigById,\n} from 'src/utils/columns/columnUtils';\nimport { MarketplacePaymentsTableColumnId } from 'src/utils/columns/marketplacePayments/marketplacePaymentsColumnsUtils.types';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { hasFeatures } from 'src/utils/userUtils';\nimport {\n Feature,\n MarketplaceSalePayment,\n UserSetting,\n} from 'src/WebApiController';\n\nexport const useGetDisplayMarketplacePaymentsTableColumns = () => {\n const defaultMarketplaceColumnsConfig =\n useGetMarketplaceDefaultColumnsConfig();\n const paymentsTableColumnConfig = useMarketplacePaymentsTableColumnsConfig();\n const { appContext, loginContext } = useAppContext();\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n const {\n value:\n storedMarketplacePaymentsColumnOrderSetting = defaultMarketplaceColumnsConfig,\n } = useServerUserSetting({\n id: UserSetting.MarketplacePaymentsTableColumnOrder,\n });\n\n const { value: storedMarketplacePaymentsColumnsEnabledSetting } =\n useServerUserSetting({\n id: UserSetting.MarketplacePaymentsTableColumnsEnabled,\n });\n\n return useMemo(() => {\n const marketplacePaymentColumnOrder =\n storedMarketplacePaymentsColumnOrderSetting.filter(\n (c) =>\n storedMarketplacePaymentsColumnsEnabledSetting?.includes(c) ?? true\n );\n\n const marketplacePaymentsTableColumnsConfig = Object.values(\n paymentsTableColumnConfig\n );\n\n const columns = new Set([\n // Add unconfigurable columns first\n ...marketplacePaymentsTableColumnsConfig\n .filter((column) => {\n const columnDef = getMarketplacePaymentColumnConfigById(\n column.id as MarketplacePaymentsTableColumnId\n ).personalization;\n const hasFeatureForColumn =\n columnDef.requiredFeatures.length === 0 ||\n hasFeatures(\n loginContext?.user,\n appContext?.features,\n columnDef.requiredFeatures\n );\n\n let isConfigurable = columnDef.isConfigurable;\n if (\n !hasTablePinActionColumnFeature &&\n column.id === MarketplacePaymentsTableColumnId.Actions\n ) {\n isConfigurable = true;\n }\n\n return !isConfigurable && hasFeatureForColumn;\n })\n .map((item) => item.id as MarketplacePaymentsTableColumnId),\n // Add user defined columns next\n ...filterColumnsByFeatures(\n marketplacePaymentColumnOrder,\n SectionType.MarketplacePaymentsTable,\n [],\n loginContext?.user,\n appContext?.features,\n []\n ),\n ]);\n\n return Array.from(columns).reduce<\n ColumnDef[]\n >((acc, columnId) => {\n const columnConfig = marketplacePaymentsTableColumnsConfig.find(\n (column) => column.id === columnId\n );\n if (columnConfig) acc.push(columnConfig);\n\n return acc;\n }, []);\n }, [\n appContext?.features,\n hasTablePinActionColumnFeature,\n loginContext?.user,\n paymentsTableColumnConfig,\n storedMarketplacePaymentsColumnOrderSetting,\n storedMarketplacePaymentsColumnsEnabledSetting,\n ]);\n};\n","import {\n functionalUpdate,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useMemo, useState } from 'react';\nimport { ColumnResizingContextProvider } from 'src/contexts/ColumnResizingContext/ColumnResizingContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useGetDisplayMarketplacePaymentsTableColumns } from 'src/tables/MarketplacePaymentsTable/useGetDisplayMarketplacePaymentsTableColumns';\nimport { Table } from 'src/tables/Table';\nimport { MarketplacePaymentsTableColumnId } from 'src/utils/columns/marketplacePayments/marketplacePaymentsColumnsUtils.types';\nimport {\n Feature,\n MarketplaceSalePayment,\n UserSetting,\n} from 'src/WebApiController';\n\nconst getRowId = (row: MarketplaceSalePayment | null, index: number) =>\n (row?.id ?? index).toString();\n\ninterface PaymentsTableProps {\n tableData: MarketplaceSalePayment[] | null;\n}\n\nexport const MarketplacePaymentsTable = ({ tableData }: PaymentsTableProps) => {\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n const paymentsTableColumnConfig =\n useGetDisplayMarketplacePaymentsTableColumns();\n const [sorting, setSorting] = useState([\n {\n id: MarketplacePaymentsTableColumnId.PaymentDate,\n desc: true,\n },\n ]);\n\n const options: Partial> = useMemo(\n () => ({\n data: tableData ?? [],\n columns: Object.values(paymentsTableColumnConfig),\n state: {\n sorting,\n columnPinning: {\n right: hasTablePinActionColumnFeature\n ? [MarketplacePaymentsTableColumnId.Actions]\n : undefined,\n },\n },\n getRowId: getRowId,\n onSortingChange: (sortingUpdaterFn) => {\n const newSortVal = functionalUpdate(sortingUpdaterFn, sorting);\n setSorting(newSortVal);\n },\n sortingFns: {},\n }),\n [\n tableData,\n paymentsTableColumnConfig,\n sorting,\n hasTablePinActionColumnFeature,\n ]\n );\n\n return (\n \n \n \n );\n};\n","import { format } from 'date-fns';\nimport { useMemo } from 'react';\nimport { useSingleMonthMarketplacePaymentsQuery } from 'src/contexts/MarketplacePaymentDataContext';\nimport { MarketplacePaymentsTable } from 'src/tables/MarketplacePaymentsTable/MarketplacePaymentsTable';\n\ninterface GroupedPaymentsAccordionBodyProps {\n firstOfMonth: string;\n}\n\nexport const GroupedPaymentsAccordionBody = ({\n firstOfMonth,\n}: GroupedPaymentsAccordionBodyProps) => {\n const queryDate = useMemo(\n () => format(new Date(firstOfMonth), 'yyyy-MM-dd'),\n [firstOfMonth]\n );\n\n const { singleMonthPaymentQuery } = useSingleMonthMarketplacePaymentsQuery(\n queryDate,\n true\n );\n\n return (\n \n );\n};\n","import { format } from 'date-fns';\nimport { useMemo } from 'react';\nimport { Stack } from 'src/core/ui';\nimport { formatCurrency } from 'src/utils/numberFormatter';\nimport { MonthContainingMarketplacePaymentsResult } from 'src/WebApiController';\n\nimport * as styles from './GroupedPaymentsAccordionHeader.css';\n\ninterface PaymentsAccordionHeaderProps {\n monthContainingMarketplacePayment: MonthContainingMarketplacePaymentsResult;\n}\n\nexport const GroupedPaymentsAccordionHeader = ({\n monthContainingMarketplacePayment,\n}: PaymentsAccordionHeaderProps) => {\n const displayText = useMemo(() => {\n const { totalPaymentAmount } = monthContainingMarketplacePayment;\n return {\n displayDate: format(\n new Date(monthContainingMarketplacePayment.firstOfMonth),\n 'MMMM, yyyy'\n ),\n formattedAmount: formatCurrency(\n totalPaymentAmount?.amt,\n totalPaymentAmount?.currency,\n totalPaymentAmount?.dec\n ),\n };\n }, [monthContainingMarketplacePayment]);\n\n return (\n \n
    {displayText.displayDate}
    \n
    {displayText.formattedAmount}
    \n
    \n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { GroupedPaymentsAccordionBody } from 'src/components/MarketplacePayments/Tabs/components/GroupedPaymentsAccordionBody';\nimport { GroupedPaymentsAccordionHeader } from 'src/components/MarketplacePayments/Tabs/components/GroupedPaymentsAccordionHeader';\nimport * as PosCollapsible from 'src/core/POS/PosCollapsible';\nimport { MonthContainingMarketplacePaymentsResult } from 'src/WebApiController';\nimport * as styles from './GroupedPaymentsAccordion.css';\n\nexport type GroupedPaymentsAccordionProps = {\n item: MonthContainingMarketplacePaymentsResult;\n selectedIds: string[];\n onSelect: (id: string) => void;\n};\n\nexport const GroupedPaymentsAccordion = ({\n item,\n selectedIds,\n onSelect,\n}: GroupedPaymentsAccordionProps) => {\n const { firstOfMonth } = item;\n\n const isAccordionOpen = useMemo(\n () => selectedIds.includes(firstOfMonth),\n [firstOfMonth, selectedIds]\n );\n\n const onOpenChange = useCallback(() => {\n onSelect(firstOfMonth);\n }, [firstOfMonth, onSelect]);\n\n return (\n
    \n \n \n \n \n \n \n \n \n
    \n );\n};\n","import { Virtuoso } from 'react-virtuoso';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { GroupedPaymentsAccordion } from 'src/components/MarketplacePayments/Tabs/components/GroupedPaymentsAccordion';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { useMarketplacePaymentDataContext } from 'src/contexts/MarketplacePaymentDataContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { SearchSolidIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SomethingWentWrong } from 'src/views';\nimport { MarketplacePaymentQuery } from 'src/WebApiController';\n\nexport const MarketplacePaymentsTabContent = () => {\n const { isQueryInitialized } =\n useFilterQueryContext();\n\n const { monthPaymentsQuery, errorInfo, selectedIds, onSelect } =\n useMarketplacePaymentDataContext();\n\n const dataIsLoading =\n !isQueryInitialized ||\n monthPaymentsQuery.isLoading ||\n monthPaymentsQuery.data == null;\n\n const hasData = monthPaymentsQuery.data?.length;\n\n return (\n <>\n {dataIsLoading && }\n {errorInfo && (\n \n )\n }\n />\n )}\n {!dataIsLoading && !errorInfo && (\n <>\n {hasData ? (\n <>\n {monthPaymentsQuery.data && (\n (\n \n )}\n />\n )}\n \n ) : (\n \n \n \n }\n >\n \n \n \n \n )}\n \n )}\n \n );\n};\n","import { MarketplacePaymentsTabContent } from 'src/components/MarketplacePayments/Tabs/MarketplacePaymentsTabContent';\nimport { MarketplacePaymentDataContextProvider } from 'src/contexts/MarketplacePaymentDataContext';\n\nexport const MarketplacePaymentsTab = () => {\n return (\n \n \n \n );\n};\n","import { ReactNode, useContext, useEffect, useRef } from 'react';\nimport { useGetMarketplacePaymentIdQueryParam } from 'src/components/MarketplacePayments/hooks/useGetMarketplacePaymentIdQueryParam';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { getMarketplacePaymentDetailsModalConfigWithDeepLink } from 'src/utils/marketplacePaymentUtils';\n\ninterface ModalRefProps {\n isModalOpen: boolean;\n closeModal: () => void;\n}\n\ninterface MarketplacePaymentDeeplinkListenerProps {\n children: ReactNode;\n}\n\nexport const MarketplacePaymentDeeplinkListener = ({\n children,\n}: MarketplacePaymentDeeplinkListenerProps) => {\n const { setModal, closeModal, isModalOpen } = useContext(ModalContext);\n const marketplacePaymentId = useGetMarketplacePaymentIdQueryParam();\n const modalRefProps: ModalRefProps = {\n isModalOpen,\n closeModal,\n };\n\n const ref = useRef(modalRefProps);\n ref.current = modalRefProps;\n\n useEffect(() => {\n if (marketplacePaymentId && !isModalOpen) {\n setModal(\n getMarketplacePaymentDetailsModalConfigWithDeepLink(\n marketplacePaymentId\n )\n );\n }\n }, [closeModal, isModalOpen, marketplacePaymentId, setModal]);\n\n // Close modal on unmount\n useEffect(() => {\n return () => {\n if (ref.current?.isModalOpen) {\n ref.current?.closeModal();\n }\n };\n }, []);\n\n return <>{children};\n};\n","import { isEqual } from 'lodash-es';\nimport { useMemo } from 'react';\nimport { FilterToolbarItemId } from 'src/components/Filters';\nimport { CurrencyFilterMultiSelector } from 'src/components/Selectors/CurrencyFilterSelector';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { DateRangeSelector } from 'src/core/POS/DateRangeSelector';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n MARKET_PLACE_TO_CID,\n MARKETPLACE_SALE_PAYMENT_STATE_TO_CID,\n YES_NO_ENUM_FILTER_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { PurchaseDateRangePresetNames } from 'src/utils/dateTimeUtils';\nimport { FromYesNoEnum, ToYesNoEnum } from 'src/utils/eventQueryUtils';\nimport {\n Feature,\n Marketplace,\n MarketplacePaymentQuery,\n} from 'src/WebApiController';\n\nexport const useMarketplacePaymentsFilters = () => {\n const { loginContext } = useAppContext();\n const { tempQuery, setTempQuery } =\n useFilterQueryContext();\n\n const hasMarketplacePaymentFilterUnlinkedFeature = useUserHasFeature(\n Feature.MarketplacePaymentFilterUnlinked\n );\n\n return useMemo(() => {\n return {\n filters: [\n {\n titleContentId: ContentId.Payment,\n type: 'row',\n items: [\n {\n labelContentId: ContentId.PaymentDate,\n filterId: 'paymentDates' as FilterToolbarItemId,\n filterQueryKeys: ['paymentDates'] as FilterToolbarItemId[],\n filterItem: (\n \n setTempQuery({\n ...tempQuery,\n paymentDates: value,\n })\n }\n useRelativePresets\n />\n ),\n },\n ...(hasMarketplacePaymentFilterUnlinkedFeature\n ? [\n {\n labelContentId: ContentId.HasUnmappedSales,\n filterId:\n 'hasPaymentLineUnmappedToSale' as FilterToolbarItemId,\n filterQueryKeys: [\n 'hasPaymentLineUnmappedToSale',\n ] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !==\n ToYesNoEnum(tempQuery.hasPaymentLineUnmappedToSale)\n ) {\n setTempQuery({\n ...tempQuery,\n hasPaymentLineUnmappedToSale:\n FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n {\n labelContentId: ContentId.HasUnlinkedChargesCredits,\n filterId:\n 'hasPaymentLineUnmappedToSaleLineItem' as FilterToolbarItemId,\n filterQueryKeys: [\n 'hasPaymentLineUnmappedToSaleLineItem',\n ] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !==\n ToYesNoEnum(\n tempQuery.hasPaymentLineUnmappedToSaleLineItem\n )\n ) {\n setTempQuery({\n ...tempQuery,\n hasPaymentLineUnmappedToSaleLineItem:\n FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ]\n : []),\n {\n filterId: 'marketplace' as FilterToolbarItemId,\n labelContentId: ContentId.Marketplace,\n filterQueryKeys: ['marketplace'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (marketplace !== tempQuery.marketplace) {\n setTempQuery({\n ...tempQuery,\n marketplace,\n });\n }\n }}\n valueOptionsContent={(\n loginContext?.user?.activeAccount?.marketplaceSettings?.map(\n (m) => m.mkp\n ) ?? [Marketplace.StubHub]\n )\n .concat(Marketplace.Offline)\n .reduce(\n (cur, m) => {\n cur[m] = MARKET_PLACE_TO_CID[m];\n return cur;\n },\n {} as Record\n )}\n />\n ),\n },\n {\n filterId: 'marketplacePaymentState' as FilterToolbarItemId,\n labelContentId: ContentId.PaymentState,\n filterQueryKeys: [\n 'marketplacePaymentState',\n ] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n marketplacePaymentState !==\n tempQuery.marketplacePaymentState\n ) {\n setTempQuery({\n ...tempQuery,\n marketplacePaymentState,\n });\n }\n }}\n valueOptionsContent={MARKETPLACE_SALE_PAYMENT_STATE_TO_CID}\n />\n ),\n },\n {\n filterId: 'currencyCodes' as FilterToolbarItemId,\n labelContentId: ContentId.Currency,\n filterQueryKeys: ['currencyCodes'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (!isEqual(tempQuery.currencyCodes, newCurrencyCodes)) {\n setTempQuery({\n ...tempQuery,\n currencyCodes: newCurrencyCodes?.length\n ? newCurrencyCodes\n : null,\n });\n }\n }}\n enableEmptySelection\n />\n ),\n },\n ],\n },\n ],\n };\n }, [\n hasMarketplacePaymentFilterUnlinkedFeature,\n loginContext?.user?.activeAccount?.marketplaceSettings,\n setTempQuery,\n tempQuery,\n ]);\n};\n","import { useCallback } from 'react';\nimport { FilterToolbarItemId } from 'src/components/Filters';\nimport { FilterToolbar } from 'src/components/FilterToolbar';\nimport { useFiltersHelpers } from 'src/components/FilterToolbar/useFiltersHelpers';\nimport { useMarketplacePaymentsFilters } from 'src/components/MainFilterBar/useMarketplacePaymentsFilters';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport {\n DefaultQuickFilter,\n useFilterToolbarQuickFilters,\n} from 'src/hooks/useQuickFilters';\nimport { MarketplacePaymentQuery, UserSetting } from 'src/WebApiController';\n\nconst mandatoryFiltersToShow: FilterToolbarItemId[] = ['paymentDates'];\nconst defaultQuickFilters: DefaultQuickFilter[] = [];\n\nexport const MarketplacePaymentsFilterBar = () => {\n const {\n initialQuery,\n tempQuery,\n resetTempQuery,\n setFilterQuery,\n filterQuery: marketplacePaymentsQuery,\n } = useFilterQueryContext();\n\n const { filters } = useMarketplacePaymentsFilters();\n\n const { appliedFilters } = useFiltersHelpers({\n filters,\n activeQuery: marketplacePaymentsQuery,\n mandatoryFiltersToShow: mandatoryFiltersToShow,\n initialQuery,\n });\n\n const onQuickFilterSelect = useCallback(\n ({ query }: { id: string; query: MarketplacePaymentQuery }) => {\n setFilterQuery(query);\n },\n [setFilterQuery]\n );\n\n const filterToolbarProps = useFilterToolbarQuickFilters({\n quickFiltersStateSetting: UserSetting.QuickFiltersStateMarketplacePayments,\n customQuickFiltersSetting:\n UserSetting.QuickFiltersCustomMarketplacePayments,\n defaultQuickFilters,\n currentQuery: marketplacePaymentsQuery,\n initialQuery,\n onSelect: onQuickFilterSelect,\n });\n\n return (\n
    \n setFilterQuery(tempQuery)}\n filters={filters}\n resetTempQuery={resetTempQuery}\n tempQuery={tempQuery}\n mandatoryFiltersToShow={mandatoryFiltersToShow}\n />\n
    \n );\n};\n","import { MouseEvent } from 'react';\nimport { MarketplacePaymentsFilterBar } from 'src/components/MarketplacePayments/MarketplacePaymentsFilterBar';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { LayoutIcon } from 'src/svgs';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature } from 'src/WebApiController';\n\nimport * as styles from './PaymentsToolbar.css';\n\ninterface PaymentsToolbarProps {\n onColumnSettingButtonClickHandler?: (\n e: MouseEvent\n ) => void;\n}\n\nexport const MarketplacePaymentsToolbar = ({\n onColumnSettingButtonClickHandler,\n}: PaymentsToolbarProps) => {\n const hasMarketplacePaymentsFiltersFeature = useUserHasFeature(\n Feature.MarketplacePaymentsFilters\n );\n\n return (\n \n {hasMarketplacePaymentsFiltersFeature && }\n \n \n );\n};\n","import {\n DateRangePresetName,\n getUiDateTimeRangeFromPreset,\n PurchaseDateRangePresetNames,\n} from 'src/utils/dateTimeUtils';\nimport {\n DateTimeRangeWithRelative,\n EventSort,\n MarketplacePaymentQuery,\n} from 'src/WebApiController';\n\nexport const EmptyMarketplacePaymentQuery = {\n marketplace: null,\n paymentDates: null,\n marketplacePaymentState: null,\n isSortDescending: false,\n viewMode: null,\n sortBy: null,\n timezoneOffsetMins: new Date().getTimezoneOffset(),\n currencyCodes: null,\n hasPaymentLineUnmappedToSale: null,\n hasPaymentLineUnmappedToSaleLineItem: null,\n} satisfies MarketplacePaymentQuery;\n\nexport const DefaultMarketplacePaymentQuery = {\n ...EmptyMarketplacePaymentQuery,\n paymentDates:\n (getUiDateTimeRangeFromPreset(\n DateRangePresetName.ThisYear,\n PurchaseDateRangePresetNames\n ) as DateTimeRangeWithRelative) ?? null,\n sortBy: EventSort.Date,\n isSortDescending: true,\n} satisfies MarketplacePaymentQuery;\n\nexport enum PaymentTab {\n MarketplacePayments = 'MarketplacePayments',\n VendorPayments = 'VendorPayments',\n CommissionPayment = 'CommissionPayments',\n}\n","import {\n getPresetFromUiDateTimeRange,\n getUiDateTimeRangeFromPreset,\n StandardDateRangePresetNames,\n} from 'src/utils/dateTimeUtils';\nimport { DateTimeRange, MarketplacePaymentQuery } from 'src/WebApiController';\n\nexport const marketplacePaymentQueryValueTransformToUrl = (\n key: string,\n value: DateTimeRange\n) => {\n if (!value) {\n return value;\n }\n\n const queryKey = key as keyof MarketplacePaymentQuery;\n\n if (queryKey === 'paymentDates') {\n const preset = getPresetFromUiDateTimeRange(value);\n if (preset && StandardDateRangePresetNames.includes(preset.name)) {\n return preset.name;\n }\n }\n\n return value;\n};\n\nexport const marketplacePaymentValueTransformFromUrl = (\n key: string,\n value: string\n) => {\n if (!value) {\n return value;\n }\n\n const queryKey = key as keyof MarketplacePaymentQuery;\n if (queryKey === 'paymentDates') {\n const preset = getUiDateTimeRangeFromPreset(\n value,\n StandardDateRangePresetNames\n );\n if (preset) {\n return preset;\n }\n }\n\n return value;\n};\n","import { MouseEvent, useCallback } from 'react';\nimport { useToggle } from 'react-use';\nimport { MarketplacePaymentsTab } from 'src/components/MarketplacePayments';\nimport { MarketplacePaymentDeeplinkListener } from 'src/components/MarketplacePayments/MarketplacePaymentDeeplinkListener';\nimport { MarketplacePaymentsToolbar } from 'src/components/MarketplacePayments/PaymentsToolbar/MarketplacePaymentsToolbar';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { FilterQueryContextProvider } from 'src/contexts/FilterQueryContext';\nimport * as Tabs from 'src/core/ui/Tabs';\nimport { ColumnSettingsModal } from 'src/modals/ColumnSettings/ColumnSettings';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport {\n DefaultMarketplacePaymentQuery,\n EmptyMarketplacePaymentQuery,\n PaymentTab,\n} from 'src/navigations/Routes/Payments/Payments.constants';\nimport {\n marketplacePaymentQueryValueTransformToUrl,\n marketplacePaymentValueTransformFromUrl,\n} from 'src/navigations/Routes/Payments/Payments.utils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { MarketplacePaymentQuery, UserSetting } from 'src/WebApiController';\n\nimport { MainRoute } from '../MainRoute';\nimport * as styles from './Payments.css';\n\nexport function Payments() {\n const paymentsTitle = useContent(ContentId.Payments);\n\n const [isColumnModalOpen, toggleColumnModal] = useToggle(false);\n\n const onColumnSettingButtonClickHandler = useCallback(\n (e: MouseEvent) => {\n e.stopPropagation();\n if (!isColumnModalOpen) {\n toggleColumnModal(true);\n }\n },\n [isColumnModalOpen, toggleColumnModal]\n );\n\n return (\n \n \n initialQuery={DefaultMarketplacePaymentQuery}\n viewModeSettingId={UserSetting.PurchasePageViewMode}\n emptyQuery={EmptyMarketplacePaymentQuery}\n queryValueTransformToUrl={marketplacePaymentQueryValueTransformToUrl}\n queryValueTransformFromUrl={marketplacePaymentValueTransformFromUrl}\n saveQueryInUrl\n >\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n {isColumnModalOpen && (\n \n )}\n \n \n \n );\n}\n","import React from 'react';\nimport { TabWithStarIcon } from 'src/components/Listings/InventoryEventPage/TabWithStarIcon';\nimport { vars } from 'src/core/themes';\nimport * as Tabs from 'src/core/ui/Tabs';\n\nimport * as styles from './EventPage.css';\n\nexport interface TabItem {\n value: TabType;\n label: React.ReactNode;\n content: React.ReactNode;\n className?: string;\n isVisible?: boolean;\n}\n\ninterface EventPageTabsProps {\n activeTab: TabType;\n setActiveTab: React.Dispatch>;\n defaultTab?: TabType;\n onSetDefaultTabClick: (tab: TabType) => void;\n tabs: TabItem[];\n}\n\nexport const EventPageTabs = ({\n activeTab,\n setActiveTab,\n defaultTab,\n onSetDefaultTabClick,\n tabs,\n}: EventPageTabsProps) => {\n return (\n setActiveTab(value as TabType)}\n className={styles.tabsSection}\n >\n \n {tabs\n .filter((tab) => tab.isVisible !== false)\n .map((tab) => (\n \n \n {tab.label}\n \n \n ))}\n \n {tabs\n .filter((tab) => tab.isVisible !== false)\n .map((tab) => (\n \n {tab.content}\n \n ))}\n \n );\n};\n","import { useEffect } from 'react';\nimport { SidePanelFilters } from 'src/components/Events/EventPage/SidePanel/SidePanelFilters';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { useQuickFilters } from 'src/hooks/useQuickFilters';\nimport { ListingQuery, UserSetting } from 'src/WebApiController';\n\nimport { useDefaultListingFilter } from './hooks/useDefaultListingFilter';\n\nexport function ListingSideTableFilterBar() {\n const {\n filterQuery: listingQuery,\n initialQuery,\n setFilterQuery,\n setTempQuery,\n } = useFilterQueryContext();\n\n useEffect(() => {\n setTempQuery(listingQuery);\n }, [listingQuery, setTempQuery]);\n\n const defaultQuickFilters = useDefaultListingFilter({\n initialQuery,\n listingQuery,\n });\n\n const { quickFilters } = useQuickFilters({\n quickFiltersStateSetting: UserSetting.QuickFiltersStateInventory,\n customQuickFiltersSetting: UserSetting.QuickFiltersCustomInventory,\n defaultQuickFilters,\n });\n\n return (\n \n );\n}\n","import { useCallback, useEffect, useMemo } from 'react';\nimport { translateEventToInventoryAccordionItem } from 'src/components/Accordions';\nimport { ActivePosEntityProvider } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { BulkEditHubContextProvider } from 'src/contexts/BulkEditHubContext';\nimport {\n CatalogDataContextProvider,\n ExpandedEventData,\n} from 'src/contexts/CatalogDataContext';\nimport { CatalogMultiSelectionContextProvider } from 'src/contexts/CatalogMultiSelectionContext';\nimport { CollapsableViewProvider } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport {\n FilterQueryContextProvider,\n useFilterQueryContext,\n} from 'src/contexts/FilterQueryContext';\nimport { MultiSelectionContextProvider } from 'src/contexts/MultiSelectionContext';\nimport { SellerUserSettingsProvider } from 'src/contexts/SellerUserSettingsContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n getCatalogData as getCatalogDataForListing,\n getCatalogDataExpanded,\n getCatalogSectionalDataExpanded,\n} from 'src/navigations/Routes/Inventory';\nimport { INVENTORY_USER_SETTINGS } from 'src/navigations/Routes/InventoryEvent/constants';\nimport { NoData } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport {\n DefaultListingQuery,\n EmptyListingQuery,\n} from 'src/utils/eventQueryUtils';\nimport { transformData } from 'src/utils/eventWithDataUtils';\nimport { ListingCatalogQueryKey } from 'src/utils/inventoryUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport {\n ActionOutboxEntityType,\n Feature,\n ListingClient,\n ListingDetailDataField,\n ListingDetails,\n ListingQuery,\n UserSetting,\n} from 'src/WebApiController';\n\nimport * as styles from '../../Events/EventPage/EventPage.css';\nimport { useAccordionItem } from '../../Events/EventPage/hooks/useAccordionItem';\nimport { SidePanelToolbar } from '../../Events/EventPage/SidePanel/SidePanelToolbar';\nimport { ListingSideTableFilterBar } from '../ListingFilterBar/ListingSideTableFilterBar';\n\nconst Inventory = ({\n viagVirtualId,\n queryInput,\n}: {\n viagVirtualId: string;\n queryInput?: Partial>;\n}) => {\n const { isLoading, isItemsLoading, accordionItemProps } =\n useAccordionItem(viagVirtualId);\n\n const { setFilterQuery } = useFilterQueryContext();\n\n useEffect(() => {\n setFilterQuery({\n ...DefaultListingQuery,\n ...queryInput,\n eventOrMappingIds: [viagVirtualId],\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [queryInput, setFilterQuery]);\n\n const inventoryAccordionItem = useMemo(\n () =>\n accordionItemProps &&\n translateEventToInventoryAccordionItem(accordionItemProps, 0, true),\n [accordionItemProps]\n );\n\n const { BodyComponent, AfterHeaderComponent } = inventoryAccordionItem || {};\n\n const listingIds = inventoryAccordionItem?.entities?.map((l) => l.id) || [];\n\n const noData =\n (!isLoading && !inventoryAccordionItem) ||\n (!isItemsLoading && !accordionItemProps?.entities?.listings);\n\n const hasSelectedEntities =\n (queryInput?.saleIds && queryInput?.saleIds?.length > 0) ||\n (queryInput?.purchaseOrderIds && queryInput?.purchaseOrderIds?.length > 0);\n\n return (\n <>\n
    \n }\n noData={noData}\n entityIds={hasSelectedEntities ? listingIds : undefined}\n />\n {!noData && AfterHeaderComponent && }\n
    \n {isLoading && }\n {noData ? (\n \n }\n />\n \n ) : (\n BodyComponent &&\n accordionItemProps && (\n \n )\n )}\n \n );\n};\n\nexport const InventorySideTable = ({\n viagVirtualId,\n queryInput,\n}: {\n viagVirtualId: string;\n queryInput?: Partial>;\n}) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const hasSectionalLoadDataFeature = useUserHasFeature(\n Feature.ListingLoadBySection\n );\n\n const hasSectionalLoadInListingTable = useUserHasFeature(\n Feature.SectionalLoadInListingTable\n );\n\n const getCatalogDataExpandedCallback = useCallback(\n (ids: string[], filterQuery: ListingQuery) => {\n if (hasSectionalLoadInListingTable) {\n return getCatalogSectionalDataExpanded(\n ids,\n filterQuery,\n [\n ListingDetailDataField.Basic,\n ListingDetailDataField.Pricing,\n ListingDetailDataField.AutoPricing,\n ],\n {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError(\n 'ListingClient.getListingsSectionalDataForEvents',\n error,\n {\n ...filterQuery,\n eventIds: ids,\n }\n );\n },\n }\n );\n }\n return getCatalogDataExpanded(ids, filterQuery, {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError('ListingClient.getListingsForEvents', error, {\n ...filterQuery,\n eventIds: ids,\n });\n },\n });\n },\n [activeAccountWebClientConfig, hasSectionalLoadInListingTable, trackError]\n );\n\n const onCatalogDataExpandedCallback = useCallback(\n (\n ids: string[],\n filterQuery: ListingQuery,\n currentData?: ExpandedEventData\n ) =>\n getCatalogSectionalDataExpanded(\n ids,\n filterQuery,\n [ListingDetailDataField.Purchase, ListingDetailDataField.Tags],\n {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError('ListingClient.getCatalogSectionalDataExpanded', error, {\n ...filterQuery,\n eventIds: ids,\n });\n },\n },\n currentData\n ),\n [activeAccountWebClientConfig, trackError]\n );\n\n const getActivePosEntity = useCallback(\n async (\n posEntityId: number,\n curEntity?: ListingDetails | null,\n dataToGet?: string[] | null\n ) => {\n if (activeAccountWebClientConfig.activeAccountId) {\n const listingDetail = await new ListingClient(\n activeAccountWebClientConfig\n ).getListingByListingId(\n posEntityId,\n hasSectionalLoadDataFeature ? (curEntity ?? undefined) : undefined,\n hasSectionalLoadDataFeature\n ? (dataToGet?.map((s) => s as ListingDetailDataField) ?? [])\n : undefined\n );\n\n if (listingDetail) {\n return {\n posEntityId: listingDetail.id,\n posEntity: listingDetail,\n posEntityDisplayId: listingDetail.idOnMkp,\n };\n }\n }\n return {};\n },\n [activeAccountWebClientConfig, hasSectionalLoadDataFeature]\n );\n\n return (\n \n \n \n initialQuery={{\n ...DefaultListingQuery,\n eventOrMappingIds: [viagVirtualId],\n }}\n emptyQuery={EmptyListingQuery}\n viewModeSettingId={UserSetting.InventoryPageViewMode}\n loadQueryFromUrl={false}\n >\n \n entityType={ActionOutboxEntityType.Listing}\n queryKey={ListingCatalogQueryKey}\n getCatalogData={(c, f) => getCatalogDataForListing(c, f, true)}\n getCatalogDataExpanded={getCatalogDataExpandedCallback}\n onCatalogDataExpanded={\n hasSectionalLoadInListingTable\n ? onCatalogDataExpandedCallback\n : undefined\n }\n transformEventData={transformData}\n >\n \n \n \n entityType={ActionOutboxEntityType.Listing}\n getActivePosEntity={getActivePosEntity}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { isEmpty } from 'lodash-es';\nimport { useContext, useMemo } from 'react';\nimport { useEventMapContext } from 'src/contexts/EventMapContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { Stack } from 'src/core/ui';\nimport * as Tabs from 'src/core/ui/Tabs';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Feature } from 'src/WebApiController';\n\nimport * as styles from '../EventPage.css';\n\nexport enum SidePanelTab {\n LISTINGS = 'listings',\n SALES = 'sales',\n NOTES = 'notes',\n PURCHASES = 'purchases',\n INVENTORY = 'inventory',\n}\n\nconst HeaderTabs = ({\n tabs,\n}: {\n tabs: (\n | {\n label: JSX.Element;\n value: SidePanelTab;\n content: JSX.Element;\n }\n | {\n label: JSX.Element;\n value: SidePanelTab;\n content?: undefined;\n }\n )[];\n}) => {\n return (\n \n {tabs.map((tab) => (\n \n {tab.label}\n \n ))}\n \n );\n};\n\ntype SidePanelHeaderProps = {\n tabs: (\n | {\n label: JSX.Element;\n value: SidePanelTab;\n content: JSX.Element;\n }\n | {\n label: JSX.Element;\n value: SidePanelTab;\n content?: undefined;\n }\n )[];\n};\n\nexport const SidePanelHeader: React.FC = ({ tabs }) => {\n const { setModal } = useContext(ModalContext);\n\n const {\n event,\n venueMapQuery,\n isGeneralAdmissionOnly,\n mapConfigOverridesQuery,\n venueMapsByScoreModelQuery,\n } = useEventMapContext();\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n\n const isConfigurable = useMemo(() => {\n // Has score overrides\n if (mapConfigOverridesQuery.data?.length) {\n return true;\n }\n\n // Venue map has configured scores\n if (\n (venueMapQuery.data?.sectionScores?.findIndex((s) => s.score) ?? -1) >= 0\n ) {\n return true;\n }\n\n // Has modeled scores\n const { AdvancedVenueGeometry, MergedVenueGeometry, VenueGeometry } =\n venueMapsByScoreModelQuery.data ?? {};\n if (\n !isEmpty(AdvancedVenueGeometry) ||\n !isEmpty(MergedVenueGeometry) ||\n !isEmpty(VenueGeometry)\n ) {\n return true;\n }\n\n return false;\n }, [\n mapConfigOverridesQuery.data?.length,\n venueMapQuery.data?.sectionScores,\n venueMapsByScoreModelQuery.data,\n ]);\n\n return (\n \n
    \n \n
    \n
    \n );\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { useMemo, useState } from 'react';\nimport { SwiperButton } from 'src/components/Buttons/SwiperButton';\nimport * as styles from 'src/components/Events/EventPage/EventPage.css';\nimport { InventorySideTable } from 'src/components/Listings/InventoryEventPage/InventorySideTable';\nimport { NoteSectionV2 } from 'src/components/Listings/InventoryEventPage/Sections/NoteSectionV2';\nimport { PurchasesSideTable } from 'src/components/Purchases/PurchaseEventPage/PurchasesSideTable';\nimport { SalesSideTable } from 'src/components/Sales/SaleEventPage/SaleSideTable';\nimport { Content } from 'src/contexts/ContentContext/Content';\nimport { Stack } from 'src/core/ui';\nimport * as Tabs from 'src/core/ui/Tabs';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EntityWithTicketsQuery, Event, Feature } from 'src/WebApiController';\n\nimport { SidePanelHeader, SidePanelTab } from './SidePanelHeader';\n\ntype SidePanelProps = {\n event: Event;\n pageType: 'Inventory' | 'Sales' | 'Purchases';\n selectedEntityIds?: number[];\n filterQuery?: EntityWithTicketsQuery;\n};\n\nexport const SidePanel = ({\n event,\n pageType,\n selectedEntityIds,\n filterQuery,\n}: SidePanelProps) => {\n // State Hooks\n const [activeTab, setActiveTab] = useState(() => {\n switch (pageType) {\n case 'Sales':\n return SidePanelTab.PURCHASES;\n case 'Purchases':\n return SidePanelTab.INVENTORY;\n // Add more cases as needed\n default:\n return SidePanelTab.SALES;\n }\n });\n\n const hasHideNavAndFilterBarsFeature = useUserHasFeature(\n Feature.HideNavAndFilterBars\n );\n\n const isMobile = useMatchMedia('mobile');\n\n const tabs = useMemo(() => {\n const marketplaceEntityIds = filterQuery?.marketplaceEntityIds?.map(Number);\n switch (pageType) {\n case 'Sales': {\n const saleIdsQuery = {\n saleIds:\n (selectedEntityIds && selectedEntityIds?.length > 0\n ? selectedEntityIds\n : null) || marketplaceEntityIds,\n };\n\n return [\n ...(hasHideNavAndFilterBarsFeature\n ? []\n : [\n {\n label: ,\n value: SidePanelTab.PURCHASES,\n content: (\n \n \n \n ),\n },\n {\n label: ,\n value: SidePanelTab.INVENTORY,\n content: (\n \n \n \n ),\n },\n ]),\n {\n label: ,\n value: SidePanelTab.NOTES,\n content: ,\n },\n ];\n }\n case 'Purchases': {\n const purchaseOrderIdsQuery = {\n purchaseOrderIds:\n (selectedEntityIds && selectedEntityIds?.length > 0\n ? selectedEntityIds\n : null) || marketplaceEntityIds,\n };\n\n return [\n ...(hasHideNavAndFilterBarsFeature\n ? []\n : [\n {\n label: ,\n value: SidePanelTab.INVENTORY,\n content: (\n \n \n \n ),\n },\n {\n label: ,\n value: SidePanelTab.SALES,\n content: (\n \n \n \n ),\n },\n ]),\n {\n label: ,\n value: SidePanelTab.NOTES,\n content: ,\n },\n ];\n }\n default: // 'Inventory'\n return [];\n }\n }, [pageType, selectedEntityIds, filterQuery]);\n\n return (\n setActiveTab(value as SidePanelTab)}\n style={{ width: '100%' }}\n >\n \n {isMobile && }\n \n {tabs.map((tab) => (\n \n {tab.content}\n \n ))}\n \n \n );\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { PurchaseClient, PurchaseEventOverride } from 'src/WebApiController';\n\nexport const usePurchaseEventOverrides = (\n eventId?: number | null,\n disabled?: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n\n const queryClient = useQueryClient();\n const getQueryKey = ['PurchaseClient.getPurchaseEventOverrides', eventId];\n\n const shouldQuery =\n !disabled &&\n Boolean(activeAccountWebClientConfig.activeAccountId && eventId);\n\n const getQuery = useQuery({\n queryKey: getQueryKey,\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n return await new PurchaseClient(\n activeAccountWebClientConfig\n ).getPurchaseEventOverrides(eventId!);\n },\n\n enabled: shouldQuery,\n staleTime: Infinity, // We invalidate on settings changed, so we don't need to make this stale\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('PurchaseClient.getPurchaseEventOverrides', error, {\n eventId,\n });\n },\n },\n });\n\n const updateMutation = useMutation({\n mutationFn: async ({ settings }: { settings: PurchaseEventOverride[] }) => {\n return await new PurchaseClient(\n activeAccountWebClientConfig\n ).mergePurchaseEventOverrides(settings, eventId!);\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n onMutate: ({ settings }) => {\n queryClient.cancelQueries({ queryKey: getQueryKey });\n const prevValue =\n queryClient.getQueryData(getQueryKey);\n\n queryClient.setQueryData(getQueryKey, settings);\n return { prevValue };\n },\n onError: (err: ErrorTypes, { settings }, context) => {\n queryClient.setQueryData(getQueryKey, context?.prevValue);\n showErrorDialog('PurchaseClient.mergePurchaseEventOverrides', err, {\n trackErrorData: { settings },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey: getQueryKey });\n },\n });\n\n return {\n purchaseEventOverrides: getQuery.data,\n isLoading: getQuery.isLoading,\n async updatePurchaseEventOverrides(settings: PurchaseEventOverride[]) {\n await updateMutation.mutateAsync({\n settings,\n });\n },\n isMutationLoading: updateMutation.isPending,\n };\n};\n","import { useEffect, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { usePurchaseVendorSelector } from 'src/components/Selectors/PurchaseVendorSelector/usePurchaseVendorSelector';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { PurchaseEventOverridesInput } from './FulfillmentSection.types';\n\nexport const VendorCell = ({\n disabled,\n index,\n}: {\n disabled?: boolean;\n index: number;\n}) => {\n const { watch, setValue, clearErrors } =\n useFormContext();\n\n const allVendorsText = useContent(ContentId.AllVendors);\n\n const settings = watch('settings');\n const vendorId = watch(`settings.${index}.vendorId`);\n\n const { posSelectProps } = usePurchaseVendorSelector({\n placeholderText: allVendorsText,\n });\n\n const availableVendorOptions = Object.entries(\n posSelectProps.valueOptionsContent\n ).reduce(\n (acc, [key, value]) => {\n if (\n !settings?.some(\n (s, i) =>\n i !== index && s.vendorId != null && s.vendorId.toString() === key\n )\n ) {\n acc[key] = value;\n }\n return acc;\n },\n {} as Record\n );\n\n const isAllVendorsSelectedInOtherRows = useMemo(\n () => settings?.some((s, i) => i !== index && s.vendorId == null),\n [index, settings]\n );\n\n useEffect(() => {\n if (\n (vendorId == null && isAllVendorsSelectedInOtherRows) ||\n (vendorId != null &&\n !Object.keys(availableVendorOptions).includes(vendorId.toString()))\n ) {\n setValue(\n `settings.${index}.vendorId`,\n Number(Object.keys(availableVendorOptions)[0]),\n {\n shouldDirty: true,\n }\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n {\n clearErrors(`settings.${index}.vendorId`);\n setValue(`settings.${index}.vendorId`, value ? Number(value) : null, {\n shouldDirty: true,\n });\n }}\n disabled={disabled}\n {...posSelectProps}\n valueOptionsContent={availableVendorOptions}\n enableEmptySelection={!isAllVendorsSelectedInOtherRows}\n />\n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { IconButton } from 'src/components/Buttons';\nimport { DeliveryTypeSelector } from 'src/components/Selectors/DeliveryTypeSelector';\nimport { vars } from 'src/core/themes';\nimport { SimpleTable } from 'src/core/ui';\nimport { DeleteIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { PurchaseEventOverridesInput } from './FulfillmentSection.types';\nimport { VendorCell } from './VendorCell';\n\nexport const OverrideSettingForm = ({\n disabled,\n onDeleteSetting,\n index,\n}: {\n disabled?: boolean;\n onDeleteSetting: (index: number) => void;\n index: number;\n}) => {\n const { watch, setValue } = useFormContext();\n\n const delivType = watch(`settings.${index}.delivType`);\n\n return (\n \n \n \n \n \n {\n if (deliveryType && deliveryType !== delivType) {\n setValue(`settings.${index}.delivType`, deliveryType, {\n shouldDirty: true,\n });\n }\n }}\n disabled={disabled}\n />\n \n \n \n }\n disabled={disabled}\n titleContentId={ContentId.Delete}\n onClick={() => onDeleteSetting(index)}\n />\n \n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { PurchaseEventOverride } from 'src/WebApiController';\n\nexport const hasNoChangeOrIsDeleteOnly = (\n purchaseEventOverrides: PurchaseEventOverride[] | null | undefined,\n formValuesettings: PurchaseEventOverride[] | null | undefined\n): boolean => {\n // Basically return true if every setting in the formValuesettings is contained within the purchaseEventOverrides\n if (!formValuesettings?.length) {\n return true;\n }\n\n for (const formValueSetting of formValuesettings) {\n const matchingSetting = purchaseEventOverrides?.find(\n (setting) => setting.vendorId === formValueSetting.vendorId\n );\n\n if (!matchingSetting) {\n return false;\n }\n\n if (!isEqual(matchingSetting, formValueSetting)) {\n return false;\n }\n }\n\n return true;\n};\n","import { useCallback, useEffect, useMemo } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { EventAccordionItemProps } from 'src/components/Accordions';\nimport { ButtonWithIcon, ReloadButton } from 'src/components/Buttons';\nimport { usePurchaseVendorSelector } from 'src/components/Selectors/PurchaseVendorSelector/usePurchaseVendorSelector';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogId } from 'src/contexts/DialogContext/DialogContext';\nimport { useDialog } from 'src/contexts/DialogContext/useDialog';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Button, SimpleTable, Stack } from 'src/core/ui';\nimport { BulkUpdateDeliveryOverrideDialog } from 'src/dialogs/BulkEdits/BulkUpdateDeliveryOverrideDialog';\nimport { usePurchaseEventOverrides } from 'src/hooks/api/usePurchaseEventOverrides';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EmptyPurchaseQuery } from 'src/utils/eventQueryUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ActionOutboxEntityType,\n BulkEditPreviewWithDetails,\n BulkEditPurchaseClient,\n DeliveryType,\n EventWithData,\n Feature,\n PurchaseEventOverride,\n PurchaseOrderQuery,\n PurchaseOrderState,\n PurchaseOrderTicketGroup,\n} from 'src/WebApiController';\n\nimport * as styles from '../../Events/EventPage/EventPage.css';\nimport { PURCHASE_BULK_BACKFILL_DELIVERY_SETTINGS_KEY } from '../PurchaseActionDropdown';\nimport { PurchaseEventOverridesInput } from './FulfillmentSection/FulfillmentSection.types';\nimport { OverrideSettingForm } from './FulfillmentSection/OverrideSettingForm';\nimport * as sectionStyles from './PurchaseEventFulfillmentSection.css';\nimport { hasNoChangeOrIsDeleteOnly } from './PurchaseEventFulfillmentSection.utils';\n\ntype PurchaseEventContentProps = {\n accordionItemProps?: EventWithData;\n purchaseOrderAccordionItem?: EventAccordionItemProps;\n};\n\nexport function PurchaseEventFulfillmentSection({\n accordionItemProps,\n purchaseOrderAccordionItem,\n}: PurchaseEventContentProps) {\n const { activeAccountWebClientConfig } = useAppContext();\n const updateKey = PURCHASE_BULK_BACKFILL_DELIVERY_SETTINGS_KEY;\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const { BodyComponent } = purchaseOrderAccordionItem || {};\n const event = accordionItemProps?.event;\n\n const { availableVendors } = usePurchaseVendorSelector({});\n const numVendors = Object.keys(availableVendors).length;\n\n const updateDialog = useBasicDialog();\n\n const { openDialog, closeDialog } = useDialog(\n DialogId.BulkBackfillDeliverySettings,\n BulkUpdateDeliveryOverrideDialog\n );\n\n const {\n purchaseEventOverrides,\n isLoading,\n updatePurchaseEventOverrides,\n isMutationLoading,\n } = usePurchaseEventOverrides(event?.viagId);\n\n const methods = useForm({\n defaultValues: {\n settings: purchaseEventOverrides ?? [],\n },\n });\n\n const {\n getValues,\n watch,\n formState: { isDirty },\n } = methods;\n\n useEffect(() => {\n methods.reset({\n settings: purchaseEventOverrides ?? [],\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [purchaseEventOverrides]);\n\n const onSubmit = useCallback(async () => {\n const { settings } = getValues();\n await updatePurchaseEventOverrides(settings);\n }, [getValues, updatePurchaseEventOverrides]);\n\n const onReset = useCallback(() => {\n methods.setValue('settings', purchaseEventOverrides ?? [], {\n shouldDirty: true,\n });\n }, [methods, purchaseEventOverrides]);\n\n const settings = watch('settings');\n\n const canAddNew = (settings?.length ?? 0) < numVendors + 1;\n\n const onCreateNewSetting = useCallback(() => {\n if (!canAddNew) {\n return;\n }\n\n const newSetting: PurchaseEventOverride = {\n vendorId: null,\n delivType: Object.values(DeliveryType)[0],\n };\n\n methods.setValue('settings', [...settings, newSetting], {\n shouldDirty: true,\n });\n }, [canAddNew, methods, settings]);\n\n const onDeleteSetting = useCallback(\n (index: number) => {\n const newSettings = [...settings];\n newSettings.splice(index, 1);\n methods.setValue('settings', newSettings, { shouldDirty: true });\n },\n [methods, settings]\n );\n\n const purchaseQuery = useMemo(() => {\n return {\n ...EmptyPurchaseQuery,\n purchaseOrderState: PurchaseOrderState.Active,\n eventOrMappingIds: [event!.viagId!.toString()],\n } as PurchaseOrderQuery;\n }, [event]);\n\n const onBulkUpdate = useCallback(\n async (\n updateSalesOfListings: boolean,\n supportBackgroundProcess?: boolean,\n onPreviewReceived?: (preview: BulkEditPreviewWithDetails) => void,\n preview?: BulkEditPreviewWithDetails\n ) => {\n if (onPreviewReceived) {\n await tryInvokeApi(\n async () => {\n const preview = await new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n ).bulkBackfillDeliverySettingsPreview(\n purchaseQuery,\n updateSalesOfListings,\n false\n );\n\n onPreviewReceived(preview);\n },\n (error) => {\n showErrorDialog('bulkBackfillDeliverySettingsPreview', error, {\n trackErrorData: { purchaseQuery },\n });\n }\n );\n } else {\n await tryInvokeApi(\n async () => {\n const succeeded = await new BulkEditPurchaseClient(\n activeAccountWebClientConfig\n ).bulkBackfillDeliverySettings(\n preview!.preview,\n updateSalesOfListings,\n updateKey,\n supportBackgroundProcess\n );\n if (!supportBackgroundProcess) {\n closeDialog();\n }\n },\n (error) => {\n showErrorDialog('bulkBackfillDeliverySettings', error, {\n trackErrorData: {\n preview,\n },\n });\n }\n );\n }\n },\n [\n activeAccountWebClientConfig,\n closeDialog,\n purchaseQuery,\n showErrorDialog,\n updateKey,\n ]\n );\n\n const onSaveHandler = useCallback(() => {\n if (hasNoChangeOrIsDeleteOnly(purchaseEventOverrides, settings)) {\n onSubmit();\n return;\n }\n\n openDialog({\n updateKey: updateKey,\n entityType: ActionOutboxEntityType.TicketGroup,\n ...updateDialog.dialogProps,\n onSaveOverrideSettings: onSubmit,\n onBulkUpdate: onBulkUpdate,\n onCancel: () => {\n closeDialog();\n },\n backfillDeliveryStrategyFeature:\n Feature.BackfillDeliveryStrategyPurchaseEvent,\n backfillDeliveryStrategyToSaleFeature:\n Feature.BackfillDeliveryStrategyPurchaseEventToSales,\n disableBackfill: hasNoChangeOrIsDeleteOnly(\n purchaseEventOverrides,\n settings\n ),\n });\n }, [\n closeDialog,\n onBulkUpdate,\n onSubmit,\n openDialog,\n purchaseEventOverrides,\n settings,\n updateDialog.dialogProps,\n updateKey,\n ]);\n\n return (\n
    \n {BodyComponent && accordionItemProps && (\n
    \n {isLoading ? (\n \n ) : (\n \n \n {settings?.length !== 0 && (\n \n \n \n \n
    \n \n
    \n \n \n
    \n \n
    \n \n
    \n \n \n \n \n \n \n \n \n
    \n \n {settings.map((s, i) => (\n \n ))}\n \n
    \n )}\n
    \n {canAddNew && (\n \n \n }\n disabled={isMutationLoading || isLoading}\n textContentId={ContentId.AddOverride}\n onClick={() => {\n onCreateNewSetting();\n }}\n style={{ width: 'min-content', whiteSpace: 'nowrap' }}\n variant={'text'}\n />\n \n )}\n {isDirty && (\n \n \n\n \n \n \n \n )}\n
    \n )}\n
    \n )}\n
    \n );\n}\n","import clsx from 'clsx';\nimport { Dispatch, SetStateAction, useCallback } from 'react';\nimport { useToggle } from 'react-use';\nimport { EventAccordionItemProps } from 'src/components/Accordions';\nimport { useCollapsableViewContext } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n MultiSelectScope,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ColumnSettingsModal } from 'src/modals/ColumnSettings/ColumnSettings';\nimport { LayoutIcon } from 'src/svgs';\nimport { CustomPurchasesColumn } from 'src/utils/columns/purchases/purchasesCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { EventWithData, PurchaseOrderTicketGroup } from 'src/WebApiController';\nimport { Feature } from 'src/WebApiController';\n\nimport * as styles from '../../Events/EventPage/EventPage.css';\n\ntype PurchaseEventContentProps = {\n accordionItemProps?: EventWithData;\n purchaseOrderAccordionItem?: EventAccordionItemProps;\n selectedPurchaseOrderIds: number[];\n setSelectedPurchaseOrderIds: Dispatch>;\n};\n\nexport function PurchaseEventInfoSection({\n accordionItemProps,\n purchaseOrderAccordionItem,\n selectedPurchaseOrderIds,\n setSelectedPurchaseOrderIds,\n}: PurchaseEventContentProps) {\n const { BodyComponent, AfterHeaderComponent } =\n purchaseOrderAccordionItem || {};\n const { onScroll, isCollapsedView, isEnabled } = useCollapsableViewContext();\n\n const hasEventListingTableHotkeysFeature = useUserHasFeature(\n Feature.EventListingTableHotkeys\n );\n const { selectionMode } = useMultiSelectionContext();\n const isSelectionModeOn = !!selectionMode?.mode;\n\n const [isColumnModalOpen, toggleColumnModal] = useToggle(false);\n\n const onColumnSettingButtonClickHandler = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!isColumnModalOpen) toggleColumnModal(true);\n },\n [isColumnModalOpen, toggleColumnModal]\n );\n\n return (\n
    \n {BodyComponent && accordionItemProps && (\n \n \n {isColumnModalOpen ? (\n \n onClose={toggleColumnModal}\n sectionType={SectionType.PurchaseEvent}\n />\n ) : null}\n \n \n \n \n \n \n \n\n
    \n {AfterHeaderComponent && }\n
    \n \n {\n setSelectedPurchaseOrderIds(newSelectedIds);\n }}\n selectionMode={{ mode: MultiSelectScope.SingleItem }}\n disablePagination\n useTableNavKeys={hasEventListingTableHotkeysFeature}\n useVirtuoso\n withOuterPadding={false}\n onVirtuosoTableScroll={onScroll}\n />\n
    \n
    \n )}\n \n );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { format } from 'date-fns';\nimport React, { useCallback, useMemo } from 'react';\nimport { EventAccordionItemProps } from 'src/components/Accordions';\nimport { ActionOutboxEntityTypeForBulkEdit } from 'src/components/common/BulkActions/BulkEditStatus';\nimport { BulkEditStatusPopover } from 'src/components/common/BulkActions/BulkEditStatusPopover';\nimport { MarketplaceLogo } from 'src/components/common/MarketplaceLogo';\nimport { MultiSelectionToggleGroup } from 'src/components/common/MultiSelect/Toggle/MultiSelectionToggleGroup';\nimport { SummaryTile } from 'src/components/common/SummaryTile';\nimport {\n EventNameDisplay,\n VenueNameDisplay,\n} from 'src/components/Events/EventInfo';\nimport { EventStatus } from 'src/components/Events/EventStatus';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, isContentId } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { ScrollableToolbar } from 'src/core/ui/ScrollableToolbar';\nimport { MarketplaceEventEditDialog } from 'src/dialogs/MarketplaceEventEditDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useGetEventFullInfo } from 'src/hooks/useGetEventFullInfo';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { EditIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { MAPPING_REJECTION_REASON_ID_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n compareMarketplace,\n getFormattedEventName,\n getIsInternationalEvent,\n} from 'src/utils/eventWithDataUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n Event,\n EventConfigClient,\n Feature,\n Marketplace,\n Performer,\n Permission,\n SellerEventMarketplaceEventInfo,\n TopLevelCategory,\n} from 'src/WebApiController';\n\nimport { PerformerCategoryIcon } from '../../common/PerformerCategoryIcon';\nimport * as styles from './EventPage.css';\n\nconst visibleMarketPlaces: Readonly = [\n Marketplace.StubHub,\n Marketplace.VividSeats,\n Marketplace.Ticketmaster,\n Marketplace.SeatGeek,\n];\n\ninterface EventPageHeaderBaseProps {\n event: Event;\n eventAccordionItem?: EventAccordionItemProps;\n entityType: ActionOutboxEntityTypeForBulkEdit;\n eventMetrics?: (\n | {\n name: JSX.Element;\n value: string;\n }\n | {\n name: JSX.Element;\n value: number | undefined;\n }\n )[];\n extraActions?: React.ReactNode;\n isCollapsedView?: boolean;\n CollapsedView?: React.ReactNode;\n}\n\nexport const EventPageHeaderBase = ({\n event,\n eventAccordionItem,\n entityType,\n eventMetrics,\n extraActions,\n isCollapsedView,\n CollapsedView,\n}: EventPageHeaderBaseProps) => {\n const locale = getLocaleFromLanguageOrCurrent();\n const hasEventsEditPermission = useUserHasAnyOfPermissions(\n Permission.Events_Edit\n );\n const hasEventStatusDisplay = useUserHasFeature(Feature.EventStatusDisplay);\n const { loginContext, activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n const { venue, performer } = useGetEventFullInfo(event);\n const isInternationalEvent = getIsInternationalEvent(venue?.country?.code);\n const eventDate = event?.dates.start\n ? new Date(event.dates.start)\n : undefined;\n const eventMappingRejectionReason = event?.mapRejRsnId\n ? (MAPPING_REJECTION_REASON_ID_TO_CID[event.mapRejRsnId] ??\n event?.mapRejDftTxt)\n : undefined;\n const [eventName, eventNameConnector, eventSubName] = getFormattedEventName({\n event,\n performer,\n });\n const shouldQuery =\n activeAccountWebClientConfig?.activeAccountId != null &&\n event.viagVirtualId != null;\n\n const marketplaceEventInfoQuery = useQuery({\n queryKey: [\n 'EventConfigClient.getSellerEventMarketplaceEventInfo',\n activeAccountWebClientConfig.activeAccountId,\n event?.viagVirtualId,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n return tryInvokeApi(\n async () => {\n const result = await new EventConfigClient(\n activeAccountWebClientConfig\n ).getSellerEventMarketplaceEventInfo(event.viagId, event.mappingId);\n if (result) {\n return result.reduce(\n (r, m) => {\n r[m.marketplace] = m;\n return r;\n },\n {} as Record\n );\n }\n return {};\n },\n (error) => {\n trackError(\n 'EventConfigClient.getSellerEventMarketplaceEventInfo',\n error,\n {\n viagogoEntityId: event.viagId,\n viagogoMappingId: event.mappingId,\n }\n );\n }\n );\n },\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n });\n\n const { launchDialog, closeDialog, dialogProps } = useBasicDialog();\n\n const onEventIdsEditClick = useCallback(() => {\n launchDialog();\n }, [launchDialog]);\n\n const mkpEventInfos = useMemo(\n () =>\n loginContext?.user?.activeAccount.marketplaceSettings\n .filter((m) => m.mkp !== Marketplace.Automatiq)\n .map((m) => {\n const minfo = marketplaceEventInfoQuery.data?.[m.mkp];\n return (\n minfo ??\n ({\n marketplace: m.mkp,\n viagogoEventId: event.viagId,\n mappedEventId:\n m.mkp === Marketplace.StubHub ? event.viagId : undefined,\n } as SellerEventMarketplaceEventInfo)\n );\n }),\n [\n event.viagId,\n loginContext?.user?.activeAccount.marketplaceSettings,\n marketplaceEventInfoQuery.data,\n ]\n );\n\n const marketPlaceLogos = useMemo(() => {\n return mkpEventInfos\n ?.filter((marketplace) =>\n visibleMarketPlaces.includes(marketplace.marketplace)\n )\n .toSorted((a, b) => compareMarketplace(a.marketplace, b.marketplace))\n .map((minfo) => {\n const hasEventId =\n minfo.marketplace == Marketplace.StubHub ||\n Boolean(minfo?.eventIdOverride || minfo?.mappedEventId) ||\n (Marketplace.Ticketmaster && minfo.websiteEventId);\n if (minfo.marketplace !== Marketplace.StubHub && isInternationalEvent) {\n return null;\n }\n const onMkpClick =\n hasEventId || !hasEventsEditPermission\n ? undefined\n : onEventIdsEditClick;\n return (\n \n );\n });\n }, [\n event,\n hasEventsEditPermission,\n isInternationalEvent,\n mkpEventInfos,\n onEventIdsEditClick,\n ]);\n\n const marketplaceEventEditDialog = (\n {\n marketplaceEventInfoQuery.refetch();\n closeDialog();\n }}\n />\n );\n\n // Conditionally render based on isCollapsedView\n if (isCollapsedView) {\n // Use a condensed header component or adjust rendering as needed\n return CollapsedView;\n }\n\n // Existing detailed header rendering\n return (\n
    \n \n {eventDate && }\n \n \n \n {venue && (\n
    \n \n
    \n )}\n
    \n {eventDate && (\n
    \n {format(eventDate, 'h:mm aaa', { locale })}\n
    \n )}{' '}\n {performer && (\n \n {(performer as Performer).categ && (\n <>\n \n  \n \n )}\n {performer?.descr}\n \n )}\n
    \n {eventMappingRejectionReason && (\n
    \n \n \n {' '}\n {isContentId(eventMappingRejectionReason) ? (\n \n ) : (\n eventMappingRejectionReason\n )}\n \n \n \n \n \n }\n />\n
    \n )}\n
    \n \n \n {eventAccordionItem && (\n \n \n {\n \n }\n {extraActions}\n \n )}\n \n {hasEventStatusDisplay && event.eventStatus && (\n
    \n \n
    \n )}\n {eventMetrics?.map((metric, index) => (\n \n {metric.value}\n \n ))}\n
    \n
    \n \n \n \n {marketPlaceLogos}\n \n \n
    \n {hasEventsEditPermission && (\n \n )}\n
    \n \n \n
    \n
    \n {marketplaceEventEditDialog}\n
    \n );\n};\n","import { EventAccordionItemProps } from 'src/components/Accordions';\nimport { uppercasedMetric } from 'src/components/Events/EventPage/EventPage.css';\nimport { EventPageHeaderBase } from 'src/components/Events/EventPage/EventPageHeader';\nimport { PurchaseTileActionDropdown } from 'src/components/Purchases/PurchaseTileActionDropdown';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n Event,\n PurchaseOrderTicketGroup,\n TicketGroupMetrics,\n} from 'src/WebApiController';\n\nexport const PurchaseEventPageHeader = ({\n event,\n purchaseOrderAccordionItem,\n}: {\n event: Event;\n purchaseOrderAccordionItem?: EventAccordionItemProps;\n}) => {\n const { eventMetrics: eventMetricsMap } =\n useCatalogMetricsContext();\n\n const eventMetrics = eventMetricsMap?.[event?.viagVirtualId ?? ''];\n\n const formattedMetrics = [\n {\n name: (\n
    \n \n
    \n ),\n value: eventMetrics?.tktQty,\n },\n ];\n\n return (\n }\n />\n );\n};\n","import {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { EventAccordionItemProps } from 'src/components/Accordions';\nimport { translateEventToTicketGroupAccordionItem } from 'src/components/Accordions/TicketGroupsEventsAccordion';\nimport { SwiperButton } from 'src/components/Buttons/SwiperButton';\nimport { BackSection } from 'src/components/common/BackSection';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport {\n EventPageTabs,\n TabItem,\n} from 'src/components/Events/EventPage/EventPageTabs';\nimport { SidePanel } from 'src/components/Events/EventPage/SidePanel/SidePanel';\nimport { ActiveFocusContextProvider } from 'src/contexts/ActiveFocusContext/ActiveFocusContext';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { CollapsableViewProvider } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { EventMapContextProvider } from 'src/contexts/EventMapContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport {\n EventLastReviewedContextProvider,\n useEventLastReviewedContext,\n} from 'src/contexts/SellerEventLastReviewContext/SellerEventLastReviewContext';\nimport {\n SidePanelPage,\n SidePanelProvider,\n} from 'src/contexts/SidePanelContext';\nimport { ExplorerLayout } from 'src/core/layouts';\nimport { LoadingButton } from 'src/core/POS/LoadingButton/LoadingButton';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useSellerEventNote } from 'src/hooks/api/useSellerEventNote';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useQuickFilterSearchParam } from 'src/hooks/useQuickFilters';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { SearchSolidIcon } from 'src/svgs/Viagogo';\nimport { PurchaseDeeplinkQueryParam } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getDeepLinkIdFromUrl } from 'src/utils/deepLinkUtils';\nimport { getAppliedFilterCounts } from 'src/utils/eventQueryUtils';\nimport { getPurchaseOrderDetailsModalConfigWithDeepLink } from 'src/utils/purchaseUtils';\nimport {\n EventWithData,\n PurchaseOrderDetails,\n PurchaseOrderQuery,\n PurchaseOrderTicketGroup,\n UserSetting,\n} from 'src/WebApiController';\nimport Swiper from 'swiper';\n\nimport * as styles from '../../Listings/InventoryEventPage/InventoryEventPage.css';\nimport { useCatchUpParams } from '../../Listings/InventoryEventPage/InventoryEventPage.hooks';\nimport { TagsSection } from '../../Listings/InventoryEventPage/Sections/TagsSection';\nimport { PurchaseEventFulfillmentSection } from './PurchaseEventFulfillmentSection';\nimport { PurchaseEventInfoSection } from './PurchaseEventInfoSection';\nimport { PurchaseEventPageHeader } from './PurchaseEventPageHeader';\n\nexport function PurchaseEventPage({\n viagVirtualId,\n posEventIds,\n returnUrl,\n}: {\n posEventIds?: string[];\n viagVirtualId?: string;\n returnUrl?: string;\n}) {\n const { activeAccountWebClientConfig } = useAppContext();\n const {\n eventsTransformed,\n eventsExpansion: { setListItemExpansion },\n } = useCatalogDataContext();\n\n useEffect(() => {\n if (!viagVirtualId && posEventIds?.length) {\n setListItemExpansion(\n true,\n posEventIds.map((id) => `old:${id}`)\n );\n } else if (viagVirtualId) {\n setListItemExpansion(true, [viagVirtualId]);\n }\n }, [\n activeAccountWebClientConfig,\n posEventIds,\n setListItemExpansion,\n viagVirtualId,\n ]);\n\n const { setAllGroupsIds } = useMultiSelectionContext();\n\n const accordionItemProps = useMemo(\n () =>\n eventsTransformed?.length\n ? eventsTransformed.find(\n (ev) =>\n ev.event.viagVirtualId === viagVirtualId ||\n ev.event.posIds.some((id) => posEventIds?.includes(id))\n )\n : undefined,\n [eventsTransformed, posEventIds, viagVirtualId]\n );\n\n const purchaseOrderAccordionItem = useMemo(\n () =>\n accordionItemProps &&\n translateEventToTicketGroupAccordionItem(accordionItemProps, 0, true),\n [accordionItemProps]\n );\n\n useEffect(() => {\n if (purchaseOrderAccordionItem) {\n setAllGroupsIds([purchaseOrderAccordionItem.itemId]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [purchaseOrderAccordionItem]);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\ntype PurchaseEventContentProps = {\n accordionItemProps?: EventWithData;\n purchaseOrderAccordionItem?: EventAccordionItemProps;\n returnUrl?: string;\n};\n\nexport const enum PurchaseEventTabs {\n Purchases = 'purchases',\n Tags = 'tags',\n Fulfillment = 'fulfillment',\n None = 'none',\n}\n\nfunction PurchaseEventContent({\n accordionItemProps,\n purchaseOrderAccordionItem,\n returnUrl,\n}: PurchaseEventContentProps) {\n const intialActiveTab = PurchaseEventTabs.Purchases;\n\n const [selectedPurchaseOrderIds, setSelectedPurchaseOrderIds] = useState<\n number[]\n >([]);\n const [activeTab, setActiveTab] = useState(intialActiveTab);\n\n const { isLoading } = useCatalogDataContext();\n const isMobile = useMatchMedia('mobile');\n\n const quickFilterSearchParams = useQuickFilterSearchParam();\n const { tempQuery, initialQuery, filterQuery } =\n useFilterQueryContext();\n\n const { setModal } = useContext(ModalContext);\n const { posEntity: purchaseOrder, setActivePosEntity } =\n useActivePosEntityContext();\n\n const {\n value: defaultPurchasesTabUserSetting,\n setUserSetting: setDefaultPurchasesTabUserSetting,\n isLoading: defaultPurchasesTabLoading,\n } = useServerUserSetting({\n id: UserSetting.PurchasesDefaultTab,\n });\n\n const activeId = getDeepLinkIdFromUrl(\n PurchaseDeeplinkQueryParam,\n window.location.href\n );\n\n useEffect(() => {\n if (activeId?.length && !purchaseOrder) {\n setActivePosEntity(parseInt(activeId), undefined, true);\n setModal(getPurchaseOrderDetailsModalConfigWithDeepLink(activeId));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeId]);\n\n const [defaultTab, setDefaultTab] = useState(\n defaultPurchasesTabUserSetting\n );\n\n useEffect(() => {\n if (\n defaultPurchasesTabUserSetting != null &&\n defaultPurchasesTabUserSetting !== activeTab &&\n defaultPurchasesTabUserSetting !== PurchaseEventTabs.None &&\n defaultPurchasesTabLoading === false\n ) {\n setActiveTab(defaultPurchasesTabUserSetting);\n }\n if (\n defaultPurchasesTabUserSetting != null &&\n defaultPurchasesTabUserSetting !== defaultTab &&\n defaultPurchasesTabUserSetting !== PurchaseEventTabs.None &&\n defaultPurchasesTabLoading === false\n ) {\n setDefaultTab(defaultPurchasesTabUserSetting);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaultPurchasesTabLoading, defaultPurchasesTabUserSetting]);\n\n const onSetDefaultTabClick = useCallback(\n async (tab: PurchaseEventTabs) => {\n if (tab !== activeTab && tab !== PurchaseEventTabs.None) {\n setActiveTab(tab);\n }\n if (tab !== defaultTab) {\n setDefaultTab(tab);\n }\n setDefaultPurchasesTabUserSetting(tab);\n },\n [activeTab, defaultTab, setDefaultPurchasesTabUserSetting]\n );\n\n const swiperRef = useRef();\n\n const event = accordionItemProps?.event;\n const {\n isCompleted,\n isLoading: isEventReviewedLoading,\n onSettingVirtualIds,\n onUpdateLastReviewedDateTime,\n } = useEventLastReviewedContext();\n\n useEffect(() => {\n onSettingVirtualIds(event?.viagVirtualId ? [event?.viagVirtualId] : []);\n }, [event?.viagVirtualId, onSettingVirtualIds]);\n\n const { addNote, isLoading: isEventNoteLoading } = useSellerEventNote(\n event?.viagId\n );\n const markAsReviewed = useContent(ContentId.MarkAsReviewed);\n const markedAsReviewed = useContent(ContentId.MarkedAsReviewed);\n\n const { onNextClick, isCatchupMode } = useCatchUpParams();\n\n const onMarkAsReviewed = useCallback(async () => {\n if (event?.viagVirtualId) {\n await addNote(markedAsReviewed);\n onUpdateLastReviewedDateTime(event.viagVirtualId);\n onNextClick();\n }\n }, [\n addNote,\n event?.viagVirtualId,\n markedAsReviewed,\n onNextClick,\n onUpdateLastReviewedDateTime,\n ]);\n\n const poIds = useMemo(() => {\n return (\n purchaseOrderAccordionItem?.entities?.map((tg) => String(tg.id)) || []\n );\n }, [purchaseOrderAccordionItem?.entities]);\n\n const tabs: TabItem[] = [\n {\n value: PurchaseEventTabs.Purchases,\n label: ,\n content: (\n \n ),\n className: styles.tabContent,\n },\n {\n value: PurchaseEventTabs.Tags,\n label: ,\n content: event?.viagVirtualId && (\n \n ),\n },\n ...(event?.viagId\n ? [\n {\n value: PurchaseEventTabs.Fulfillment,\n label: ,\n content: (\n \n ),\n },\n ]\n : []),\n ];\n\n if (!event) {\n if (\n quickFilterSearchParams ||\n getAppliedFilterCounts(tempQuery, initialQuery)\n )\n return (\n \n \n \n }\n >\n \n \n \n \n \n \n \n );\n }\n\n if (isLoading || !event) {\n return ;\n }\n\n return (\n
    \n 0\n ? poIds\n : null, // We have to pass in poIds cause we use tktGrpIds for filtering since this is a purchase event\n }}\n />\n }\n >\n
    \n {isMobile && (\n \n \n \n \n )}\n \n \n \n \n {isCatchupMode && (\n
    \n \n
    \n )}\n
    \n \n
    \n );\n}\n","import { useCallback, useMemo } from 'react';\nimport { useLocation, useSearchParams } from 'react-router-dom';\nimport { getDefaultReturnUrl } from 'src/components/Events/EventPage/utils';\nimport { MainFilterBar } from 'src/components/MainFilterBar';\nimport { PurchaseEventPage } from 'src/components/Purchases/PurchaseEventPage/PurchaseEventPage';\nimport { ActivePosEntityProvider } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { CatalogDataContextProvider } from 'src/contexts/CatalogDataContext';\nimport { CatalogMetricsContextProvider } from 'src/contexts/CatalogMetricsContext';\nimport { CatalogMultiSelectionContextProvider } from 'src/contexts/CatalogMultiSelectionContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { FilterQueryContextProvider } from 'src/contexts/FilterQueryContext';\nimport { MultiSelectionContextProvider } from 'src/contexts/MultiSelectionContext';\nimport { SellerUserSettingsProvider } from 'src/contexts/SellerUserSettingsContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { queryIdSearchParam } from 'src/navigations/Routes/InventoryEvent/constants';\nimport {\n EventIdQueryParam,\n PurchaseDeeplinkQueryParam,\n} from 'src/utils/constants/constants';\nimport { removeDeepLinkUrlPartsFromRelativeUrl } from 'src/utils/deepLinkUtils';\nimport { EmptyPurchaseQuery } from 'src/utils/eventQueryUtils';\nimport { transformData } from 'src/utils/eventWithDataUtils';\nimport {\n getCatalogData,\n getCatalogDataExpanded,\n getCatalogMetrics,\n PURCHASE_USER_SETTINGS,\n purchaseQueryValueTransformFromUrl,\n purchaseQueryValueTransformToUrl,\n} from 'src/utils/purchaseUtils';\nimport { addTicketGroupMetrics } from 'src/utils/ticketMetricUtils';\nimport { EventPageLocationState } from 'src/utils/types/EventPageLocationState';\nimport {\n ActionOutboxEntityType,\n Feature,\n PurchaseClient,\n PurchaseOrderDetails,\n PurchaseOrderQuery,\n TicketGroupMetrics,\n UserSetting,\n} from 'src/WebApiController';\n\nimport {\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n POS_EVENT_IDS_SEPARATOR,\n TAB_EVENT_IDS_2_QUERY_PARAM,\n TAB_EVENT_IDS_QUERY_PARAM,\n TAB_EVENT_IDS_SEPARATOR,\n} from '../InventoryEvent/InventoryEvent.constants';\nimport { MainRoute } from '../MainRoute';\n\nexport function PurchaseEvent() {\n const [searchParams] = useSearchParams();\n const oldPosEventId = searchParams.get(queryIdSearchParam);\n const viagEventId = searchParams.get(EventIdQueryParam);\n\n const activeEventIds = searchParams.get(ACTIVE_EVENT_IDS_QUERY_PARAM);\n const tabEventIds = searchParams.get(TAB_EVENT_IDS_QUERY_PARAM);\n\n const activeEventIds2 = searchParams.get(ACTIVE_EVENT_IDS_2_QUERY_PARAM);\n const tabEventIds2 = searchParams.get(TAB_EVENT_IDS_2_QUERY_PARAM);\n\n const location = useLocation();\n\n const posEventIds = useMemo(\n // We need to make sure all the ids in the params are lowercase or else it won't be found in the CatalogDataContext\n () =>\n (tabEventIds != null\n ? activeEventIds?.toLowerCase()?.split(POS_EVENT_IDS_SEPARATOR)\n : oldPosEventId?.toLowerCase()?.split(POS_EVENT_IDS_SEPARATOR)) ?? [],\n [activeEventIds, oldPosEventId, tabEventIds]\n );\n\n const viagogoVirtualId = useMemo(\n // We need to make sure all the ids in the params are lowercase or else it won't be found in the CatalogDataContext\n () =>\n tabEventIds2 != null\n ? activeEventIds2?.toLowerCase()\n : viagEventId?.toLowerCase(),\n [activeEventIds2, tabEventIds2, viagEventId]\n );\n\n const initialQuery = useMemo(() => {\n if (posEventIds.length || tabEventIds?.length) {\n const oldPosEventIds = tabEventIds\n ? tabEventIds\n .split(TAB_EVENT_IDS_SEPARATOR)\n .flatMap((eids) => eids.split(POS_EVENT_IDS_SEPARATOR))\n : posEventIds;\n return { ...EmptyPurchaseQuery, oldPosEventIds };\n } else if (tabEventIds2?.length || viagogoVirtualId) {\n const eventOrMappingIds = tabEventIds2\n ? tabEventIds2.split(TAB_EVENT_IDS_SEPARATOR)\n : [viagogoVirtualId!];\n return { ...EmptyPurchaseQuery, eventOrMappingIds };\n }\n\n return { ...EmptyPurchaseQuery };\n }, [posEventIds, tabEventIds, tabEventIds2, viagogoVirtualId]);\n\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const getCatalogDataExpandedCallback = useCallback(\n (ids: string[], filterQuery: PurchaseOrderQuery) =>\n getCatalogDataExpanded(ids, filterQuery, {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError('PurchaseClient.getTicketGroupsForEvents', error, {\n ...filterQuery,\n eventIds: ids,\n });\n },\n }),\n [activeAccountWebClientConfig, trackError]\n );\n\n const getActivePosEntity = useCallback(\n async (purchaseId: number) => {\n const purchaseDetails = await new PurchaseClient(\n activeAccountWebClientConfig\n ).getPurchaseOrderByPurchaseOrderId(purchaseId, false);\n if (purchaseDetails) {\n return {\n posEntityId: purchaseDetails.id,\n posEntity: purchaseDetails,\n event: null,\n posEntityDisplayId: purchaseDetails.id.toString(),\n };\n }\n\n return {};\n },\n [activeAccountWebClientConfig]\n );\n\n // Only use value provided at the first time (should be from '/purchases')\n const returnUrl = useMemo(() => {\n const locationState = (location.state ?? {}) as EventPageLocationState;\n\n if (locationState.returnUrl && locationState.keepReturnUrlUnchanged) {\n return locationState.returnUrl;\n }\n\n const relativeUrl =\n locationState.returnUrl || getDefaultReturnUrl('purchases', viagEventId);\n\n return removeDeepLinkUrlPartsFromRelativeUrl(relativeUrl, [\n PurchaseDeeplinkQueryParam,\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n TAB_EVENT_IDS_QUERY_PARAM,\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n TAB_EVENT_IDS_2_QUERY_PARAM,\n ]);\n }, [location.state, viagEventId]);\n\n const hasMetricsV2Feature = useUserHasFeature(Feature.CatalogMetricsV2);\n\n if (\n !posEventIds.length &&\n !tabEventIds?.length &&\n !tabEventIds2?.length &&\n !viagogoVirtualId\n ) {\n return null;\n }\n\n return (\n \n \n initialQuery={initialQuery}\n emptyQuery={EmptyPurchaseQuery}\n viewModeSettingId={UserSetting.PurchasePageViewMode}\n saveQueryInUrl\n queryValueTransformToUrl={purchaseQueryValueTransformToUrl}\n queryValueTransformFromUrl={purchaseQueryValueTransformFromUrl}\n >\n \n entityType={ActionOutboxEntityType.Purchase}\n queryKey=\"getCatalogForPurchaseOrders\"\n getCatalogData={(c, f) => getCatalogData(c, f, true)}\n getCatalogDataExpanded={getCatalogDataExpandedCallback}\n transformEventData={transformData}\n >\n \n queryKey=\"getCatalogTicketGroupMetrics\"\n entityType={ActionOutboxEntityType.Purchase}\n getCatalogMetrics={(c, f, r) =>\n getCatalogMetrics(c, f, r, hasMetricsV2Feature)\n }\n addCatalogMetrics={addTicketGroupMetrics}\n >\n \n entityType={ActionOutboxEntityType.Purchase}\n getActivePosEntity={getActivePosEntity}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { Temporal } from '@js-temporal/polyfill';\nimport { useQuery } from '@tanstack/react-query';\nimport { max, min } from 'lodash-es';\nimport { useMemo } from 'react';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { DATA_REFRESH_RATE_IN_MILLIS_LONG } from 'src/utils/constants/constants';\nimport {\n roundRelativeDateDown,\n roundRelativeDateUp,\n} from 'src/utils/dateTimeUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n DateTimeRangeWithRelative,\n Feature,\n PurchaseClient,\n PurchaseOrderQuery,\n TimePeriodType,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useCatalogDataContext } from '../CatalogDataContext';\nimport { useErrorBoundaryContext } from '../ErrorBoundaryContext';\nimport { useFilterQueryContext } from '../FilterQueryContext';\nimport { usePurchaseDataContext } from './PurchaseDataContext';\nimport { PURCHASE_SINGLE_TIME_PERIOD_QUERY_KEY } from './PurchaseDataContext.constants';\n\nexport const useSingleTimePeriodPurchasesQuery = (\n firstOfTimePeriod: string,\n isExpanded: boolean\n) => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { filterQuery } = useFilterQueryContext();\n const { trackError } = useErrorBoundaryContext();\n\n const { allEventIds } = useCatalogDataContext();\n\n const { purchaseGroupTimePeriod } = usePurchaseDataContext();\n\n const firstOfTimePeriodPlainDateTime =\n Temporal.PlainDateTime.from(firstOfTimePeriod);\n\n const timePeriodType = purchaseGroupTimePeriod;\n\n const lastOfTimePeriodPlainDateTime = (() => {\n switch (timePeriodType) {\n // TODO: To enable this we need to fix how we handle grouping time periods in the backend with timezones\n // case 'Daily':\n // return firstOfTimePeriodPlainDateTime\n // .with({\n // hour: 23,\n // minute: 59,\n // second: 59,\n // millisecond: 999,\n // })\n // .toString();\n case 'Weekly':\n return firstOfTimePeriodPlainDateTime\n .add({ days: 7 - firstOfTimePeriodPlainDateTime.dayOfWeek })\n .with({\n hour: 23,\n minute: 59,\n second: 59,\n millisecond: 999,\n })\n .toString();\n\n case 'Monthly':\n return firstOfTimePeriodPlainDateTime\n .with({\n day: firstOfTimePeriodPlainDateTime.daysInMonth,\n hour: 23,\n minute: 59,\n second: 59,\n millisecond: 999,\n })\n .toString();\n\n default:\n throw new Error(`Unsupported time period type: ${timePeriodType}`);\n }\n })();\n\n const timePeriodDateRange: DateTimeRangeWithRelative = useMemo(() => {\n let filterDateStart = '';\n let filterDateEnd = '';\n if (filterQuery.purchaseDates) {\n if (filterQuery.purchaseDates.start) {\n filterDateStart = filterQuery.purchaseDates.start;\n }\n if (filterQuery.purchaseDates.relativeStartSecs != null) {\n const relativeDateStart = new Date(\n new Date().getTime() +\n filterQuery.purchaseDates.relativeStartSecs * 1000\n );\n\n filterDateStart = roundRelativeDateUp(\n relativeDateStart,\n filterQuery.purchaseDates.roundingMode\n ).toISOString();\n }\n\n if (filterQuery.purchaseDates.end) {\n filterDateEnd = filterQuery.purchaseDates.end;\n }\n if (filterQuery.purchaseDates.relativeEndSecs != null) {\n const relativeDateEnd = new Date(\n new Date().getTime() +\n filterQuery.purchaseDates.relativeEndSecs * 1000\n );\n\n filterDateEnd = roundRelativeDateDown(\n relativeDateEnd,\n filterQuery.purchaseDates.roundingMode\n ).toISOString();\n }\n }\n\n return {\n start:\n max([firstOfTimePeriodPlainDateTime.toString(), filterDateStart]) ??\n null,\n end:\n min([lastOfTimePeriodPlainDateTime.toString(), filterDateEnd]) ?? null,\n } as DateTimeRangeWithRelative;\n }, [\n filterQuery.purchaseDates,\n firstOfTimePeriodPlainDateTime,\n lastOfTimePeriodPlainDateTime,\n ]);\n\n const moddedFilterQuery = {\n ...filterQuery,\n purchaseDates: timePeriodDateRange,\n };\n\n const singleTimePeriodPurchaseQuery = useQuery({\n queryKey: [\n PURCHASE_SINGLE_TIME_PERIOD_QUERY_KEY,\n isExpanded,\n moddedFilterQuery,\n allEventIds,\n ],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n\n const filterQueryWithEventIds = {\n ...moddedFilterQuery,\n eventOrMappingIds: (allEventIds ?? []).map((ev) => ev.viagVirtualId),\n performerIds: (allEventIds ?? [])\n .filter((ev) => ev.performerId != null)\n .map((ev) => ev.performerId!),\n venueIds: (allEventIds ?? []).map((ev) => ev.venueId),\n };\n\n // XXX Workaround for the backend\n // because backend treats empty arrays as \"no filter\" for backwards compatibility\n if (allEventIds?.length === 0) {\n return [];\n }\n\n return tryInvokeApi(\n async () => {\n const client = new PurchaseClient(activeAccountWebClientConfig);\n const filterQuery = filterQueryWithEventIds;\n\n const data =\n await client.getPurchaseOrdersWithTicketGroups(filterQuery);\n return data;\n },\n (error) => {\n trackError(\n PURCHASE_SINGLE_TIME_PERIOD_QUERY_KEY,\n error,\n moddedFilterQuery\n );\n }\n );\n },\n enabled: isExpanded && activeAccountWebClientConfig.activeAccountId != null,\n staleTime: Infinity, // Since we're always refetching on an interval, we don't want query to calculate whether the data is stale\n refetchOnWindowFocus: false,\n networkMode: 'offlineFirst',\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_LONG,\n });\n\n return {\n singleTimePeriodPurchaseQuery,\n filterQuery: moddedFilterQuery as PurchaseOrderQuery,\n };\n};\n","import { useCallback, useMemo } from 'react';\nimport { MinRowsForUsingVirtuoso } from 'src/components/Accordions';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { useSingleTimePeriodPurchasesQuery } from 'src/contexts/PurchaseDataContext/useSingleTimePeriodPurchaseQuery';\nimport { PurchaseOrderTable } from 'src/tables/PurchaseTable';\nimport {\n PurchaseOrder,\n PurchaseOrderQuery,\n PurchaseOrderTicketGroup,\n TimePeriodContainingPurchaseOrderResult,\n} from 'src/WebApiController';\n\ntype VirtualizedPurchaseAccordionItemProps =\n TimePeriodContainingPurchaseOrderResult & {\n isExpanded: boolean;\n };\n\nexport function PurchaseDateItemBody({\n firstOfTimePeriod,\n isExpanded,\n ...rest\n}: VirtualizedPurchaseAccordionItemProps) {\n const { filterQuery } = useFilterQueryContext();\n\n const filterPurchaseOrders = useCallback(\n (purchaseOrders: PurchaseOrder[] | null | undefined) => {\n if (purchaseOrders && filterQuery.purchaseOrderState) {\n return purchaseOrders.filter(\n (po) => po.poState === filterQuery.purchaseOrderState\n );\n }\n\n return purchaseOrders;\n },\n [filterQuery.purchaseOrderState]\n );\n\n const { singleTimePeriodPurchaseQuery } = useSingleTimePeriodPurchasesQuery(\n firstOfTimePeriod,\n true // isExpanded should be true - as long as this is rendered, it is expanded. Otherwise UI will be laggy\n );\n\n const purchaseOrders = useMemo(\n () => filterPurchaseOrders(singleTimePeriodPurchaseQuery.data),\n [filterPurchaseOrders, singleTimePeriodPurchaseQuery.data]\n );\n\n const usingVirtuoso =\n (purchaseOrders?.length ?? rest.purchaseCount) > MinRowsForUsingVirtuoso;\n\n return (\n p as PurchaseOrderTicketGroup\n )}\n entityCount={rest.purchaseCount}\n useVirtuoso={usingVirtuoso}\n disablePagination\n enableColumnFilters\n />\n );\n}\n","import { format } from 'date-fns';\nimport { MultiSelectionToggleGroup } from 'src/components/common/MultiSelect/Toggle/MultiSelectionToggleGroup';\nimport { PurchasesBulkActionsPermissions } from 'src/components/Purchases/BulkActions/PurchasesBulkActionsPermissions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n Feature,\n TimePeriodContainingPurchaseOrderResult,\n TimePeriodType,\n} from 'src/WebApiController';\n\nimport * as styles from './PurchaseDateAccordion.css';\nimport {\n ItemsCountDiv,\n PurchaseItemHeaderDateDisplay,\n TotalCostDiv,\n} from './PurchaseDateAccordion.styled';\n\ntype PurchaseDateItemHeaderProps = TimePeriodContainingPurchaseOrderResult & {\n onToggleMultiSelect: (groupId: string, isChecked: boolean) => void;\n};\n\nexport const PurchaseDateItemHeader = (props: PurchaseDateItemHeaderProps) => {\n const { firstOfTimePeriod, purchaseCount, numOfTickets, totalCost } = props;\n\n const { purchaseGroupTimePeriod } = usePurchaseDataContext();\n\n const date = new Date(firstOfTimePeriod);\n const dateDisplay =\n purchaseGroupTimePeriod === TimePeriodType.Monthly\n ? format(date, 'MMM, yyyy')\n : format(date, 'MMM dd, yyyy');\n\n return (\n \n \n {dateDisplay}\n \n \n \n \n \n
    \n {totalCost?.disp}\n \n
    \n {purchaseCount}{' '}\n \n
    \n
    \n {numOfTickets}{' '}\n \n
    \n
    \n
    \n
    \n
    \n );\n};\n","import { useEffect, useMemo, useRef } from 'react';\nimport { MinRowsForUsingVirtuoso } from 'src/components/Accordions';\nimport {\n PosEventsAccordionBodyHeight,\n useSetEventsAccordionMaxHeight,\n} from 'src/components/Accordions/useSetEventsAccordionMaxHeight';\nimport { MultiSelectActionBar } from 'src/components/common/MultiSelect/MultiSelectActionBar';\nimport { PurchasesBulkActionsPermissions } from 'src/components/Purchases/BulkActions/PurchasesBulkActionsPermissions';\nimport { PurchasesTileBulkActions } from 'src/components/Purchases/BulkActions/PurchasesTileBulkActions/PurchasesTileBulkActions';\nimport {\n MultiSelectScope,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport * as PosCollapsible from 'src/core/POS/PosCollapsible';\nimport { TimePeriodContainingPurchaseOrderResult } from 'src/WebApiController';\n\nimport * as eventStyles from '../EventsAccordion/EventsAccordion.css';\nimport * as styles from './PurchaseDateAccordion.css';\nimport { PurchaseDateItemBody } from './PurchaseDateItemBody';\nimport { PurchaseDateItemHeader } from './PurchaseDateItemHeader';\n\nexport type PurchaseDateAccordionMonthGroupItemProps = {\n item: TimePeriodContainingPurchaseOrderResult;\n selectedIds?: string[];\n onSelect: (id: string) => void;\n};\n\nexport const PurchaseDateAccordionMonthGroupItem = ({\n item,\n selectedIds,\n onSelect,\n}: PurchaseDateAccordionMonthGroupItemProps) => {\n const accordionBodyRef = useRef(null);\n const accordionHeaderRef = useRef(null);\n const { getGroupToggleState, selectionMode, toggleGroup, setSelectionMode } =\n useMultiSelectionContext();\n const groupId = item.firstOfTimePeriod;\n const isSelected = getGroupToggleState(groupId).isGroupSelected;\n\n const isAccordionOpen = useMemo(\n () => !!selectedIds?.includes(item.firstOfTimePeriod),\n [item.firstOfTimePeriod, selectedIds]\n );\n\n useSetEventsAccordionMaxHeight({\n enabled: item.purchaseCount > MinRowsForUsingVirtuoso,\n isExpanded: isAccordionOpen,\n accordionBodyRef,\n accordionHeaderRef,\n });\n\n useEffect(() => {\n if (\n !isAccordionOpen &&\n selectionMode &&\n selectionMode.groupId === item.firstOfTimePeriod &&\n selectionMode.mode === MultiSelectScope.SingleGroup\n ) {\n setSelectionMode();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isAccordionOpen, item.firstOfTimePeriod, selectionMode]);\n\n return (\n
    \n {selectionMode?.mode === MultiSelectScope.AllGroups && (\n
    \n toggleGroup(groupId)}\n />\n
    \n )}\n {\n onSelect(item.firstOfTimePeriod);\n }}\n >\n
    \n \n
    \n {\n if (selectedIds && !selectedIds.includes(groupId)) {\n onSelect(groupId);\n }\n }}\n />\n
    \n
    \n \n \n \n \n \n
    \n \n \n \n
    \n \n \n \n );\n};\n","import { format } from 'date-fns';\nimport { ReactNode, useEffect, useMemo, useRef } from 'react';\nimport { useScroll } from 'react-use';\nimport {\n Components,\n GroupedVirtuoso,\n GroupedVirtuosoHandle,\n} from 'react-virtuoso';\nimport { ListOnScrollProps } from 'react-window';\nimport { PageSection } from 'src/components/common/PageSection';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport {\n VirtuosoContext,\n VirtuosoTopListItemWrapper,\n} from 'src/core/ui/Virtuoso';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { PURCHASE_SORT_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport {\n EventUiSort,\n getEventSort,\n getEventUiSort,\n} from 'src/utils/eventQueryUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport {\n EventSort,\n PurchaseOrderQuery,\n TimePeriodContainingPurchaseOrderResult,\n} from 'src/WebApiController';\n\nimport * as eventStyles from '../EventsAccordion/EventsAccordion.css';\nimport * as styles from './PurchaseDateAccordion.css';\nimport { PurchaseDateAccordionMonthGroupItem } from './PurchaseDatesAccordionMonthGroupItem';\n\nconst PurchasesVirtuosoID = 'purchases-virtuoso';\n\nconst Header: Components['Header'] = ({\n context,\n}: {\n context?: VirtuosoContext;\n}) => {\n return <>{context?.before};\n};\n\nexport type VirtualizedPurchaseDatesAccordionProps = {\n before?: ReactNode;\n topListItemBefore?: ReactNode;\n onSelect: (id: string) => void;\n selectedIds?: string[];\n items: TimePeriodContainingPurchaseOrderResult[];\n scrollToId?: string;\n onScroll?: (props: ListOnScrollProps) => void;\n tableActions?: React.ReactElement;\n};\n\nexport const PurchaseDatesAccordion = ({\n before,\n onSelect,\n selectedIds,\n items,\n topListItemBefore,\n tableActions,\n}: VirtualizedPurchaseDatesAccordionProps) => {\n const scrollRef = useRef(null);\n const { y: scrollY } = useScroll(scrollRef);\n const { setAllGroupsIds } = useMultiSelectionContext();\n\n const { groups, groupCounts } = useMemo(() => {\n const groups: string[] = [];\n const groupCounts: number[] = [];\n for (const item of items) {\n const dividerText = format(new Date(item.firstOfTimePeriod), 'yyyy', {\n locale: getLocaleFromLanguageOrCurrent(),\n });\n if (groups.length === 0 || groups[groups.length - 1] !== dividerText) {\n groups.push(dividerText);\n groupCounts.push(1);\n } else {\n groupCounts[groupCounts.length - 1] += 1;\n }\n }\n return { groups, groupCounts };\n }, [items]);\n\n useEffect(() => {\n const itemsIds = items.map((item) => item.firstOfTimePeriod);\n setAllGroupsIds(itemsIds);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [items]);\n\n const virtuosoRef = useRef(null);\n const isLargeDesktop = useMatchMedia('largeDesktop');\n\n const { filterQuery, setFilterQuery } =\n useFilterQueryContext();\n\n return (\n {\n if (el instanceof HTMLElement) scrollRef.current = el;\n }}\n className={eventStyles.root}\n context={\n {\n before,\n scrollY,\n topListItemBefore,\n virtuosoId: PurchasesVirtuosoID,\n } satisfies VirtuosoContext\n }\n components={{\n Header,\n TopItemList: VirtuosoTopListItemWrapper,\n }}\n groupCounts={groupCounts}\n groupContent={(index) => {\n return (\n
    \n {\n virtuosoRef.current?.scrollToIndex({ groupIndex: index });\n }}\n action={\n
    \n {!isLargeDesktop && (\n {\n const [, isSortDescending] = getEventSort(sort);\n if (\n isSortDescending !== filterQuery?.isSortDescending\n ) {\n setFilterQuery({\n ...(filterQuery ?? {}),\n isSortDescending,\n });\n }\n }}\n valueOptionsContent={PURCHASE_SORT_TO_CID}\n />\n )}\n {tableActions}\n
    \n }\n >\n
    \n {(() => {\n const [month, year] = groups[index].split(' ');\n return (\n <>\n {month}\n  \n {year}\n \n );\n })()}\n
    \n \n
    \n );\n }}\n itemContent={(index) => (\n \n )}\n />\n );\n};\n","import { useState } from 'react';\nimport { ExportPurchasesButton } from 'src/components/Buttons';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { useBulkCancelPurchase } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkCancelPurchase';\nimport { useBulkDeleteTicketGroup } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkDeleteTicketGroup';\nimport { useBulkEditCommissionAction } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkEditCommissionAction';\nimport { useBulkUpdateDeliveryType } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkUpdateDeliveryType';\nimport { useBulkUpdateInternalNotesAction } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkUpdateInternalNotesAction';\nimport { useBulkUpdatePurchaseCurrencyCode } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkUpdatePurchaseCurrencyCodeAction';\nimport { useBulkUpdatePurchaseSettings } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkUpdatePurchaseGeneralSettings';\nimport { useBulkUpdateSeatTraits } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkUpdateSeatTraits';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature } from 'src/WebApiController';\n\nimport { usePurchaseTileBulkActionsState } from '../../PurchasesTileBulkActions/usePurchaseTileBulkActionsState';\nimport { useUpdatePurchasesPermissions } from '../../useUpdatePurchasesPermissions';\nimport { PurchasesBulkActionProps } from '../PurchasesBulkActions.types';\n\nexport const SettingsActions = ({ isEventView }: PurchasesBulkActionProps) => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n const [isLoading, setIsLoading] = useState(false);\n const { filterQueryWithEventIds } = usePurchaseTileBulkActionsState(\n undefined,\n isEventView\n );\n\n const hasExportPurchasesFeature = useUserHasFeature(Feature.ExportPurchases);\n\n const bulkUpdateGeneralSettings = useBulkUpdatePurchaseSettings(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkUpdateDeliveryType = useBulkUpdateDeliveryType(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined,\n isEventView\n );\n\n const bulkUpdateSeatTraits = useBulkUpdateSeatTraits(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined,\n isEventView\n );\n\n const bulkUpdateInternalNotes = useBulkUpdateInternalNotesAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkEditCommissionAction = useBulkEditCommissionAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkCancelPurchaseAction = useBulkCancelPurchase(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkDeleteTicketGroupAction = useBulkDeleteTicketGroup(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkUpdatePurchaseCurrencyCode = useBulkUpdatePurchaseCurrencyCode(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const {\n hasUpdatePurchasesPermission,\n hasPurchaseUpdateCommissionPermission,\n } = useUpdatePurchasesPermissions();\n\n if (!hasUpdatePurchasesPermission && !hasPurchaseUpdateCommissionPermission) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {!isEventView && bulkUpdateGeneralSettings.dropDown}\n\n {bulkUpdateDeliveryType.dropDown}\n {bulkUpdateSeatTraits.dropDown}\n\n {!isEventView && bulkUpdateInternalNotes.dropDown}\n {!isEventView && bulkEditCommissionAction.dropDown}\n {!isEventView && bulkCancelPurchaseAction.dropDown}\n\n {isEventView && bulkDeleteTicketGroupAction.dropDown}\n\n {hasExportPurchasesFeature && (\n \n \n \n )}\n\n {!isEventView && bulkUpdatePurchaseCurrencyCode.dropDown}\n \n \n );\n};\n","import { useState } from 'react';\nimport { BulkEditTagsActionPermissionsHandler } from 'src/components/common/BulkActions/BulkEditTagsAction/BulkEditTagsActionPermissionsHandler';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { useFilterQueryState } from 'src/components/MainFilterBar/useFilterQueryState';\nimport { useBulkEditTagsAction } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkEditTagsAction';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n ActionOutboxEntityType,\n PurchaseOrderQuery,\n} from 'src/WebApiController';\n\nimport { PurchasesBulkActionProps } from '../PurchasesBulkActions.types';\n\nexport const TagsActions = ({ isEventView }: PurchasesBulkActionProps) => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n const [isLoading, setIsLoading] = useState(false);\n const { filterQueryWithEventIds } = useFilterQueryState(\n ActionOutboxEntityType.Purchase,\n undefined,\n isEventView\n );\n const bulkEditTags = useBulkEditTagsAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n if (isEventView) {\n return null;\n }\n\n return (\n \n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {bulkEditTags.dropDown}\n \n \n );\n};\n","import { useState } from 'react';\nimport { useBulkActionsState } from 'src/components/common/BulkActions/useBulkActionsState';\nimport { useBulkConvertPurchasePaymentsAction } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkConvertPurchasePaymentsAction';\nimport { useBulkMarkPurchaseAsPaid } from 'src/components/Purchases/PurchaseActionDropdown/components/BulkMarkPurchaseAsPaid';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosDropdown } from 'src/core/POS/PosDropdown';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { ChevronDownIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { usePurchaseTileBulkActionsState } from '../../PurchasesTileBulkActions/usePurchaseTileBulkActionsState';\nimport { BulkEditAccountingActionPermissionsHandler } from '../BulkEditAccountingActionPermissionsHandler';\nimport { PurchasesBulkActionProps } from '../PurchasesBulkActions.types';\n\nexport const AccountingActions = ({\n isEventView,\n}: PurchasesBulkActionProps) => {\n const { areBulkActionsEnabled } = useBulkActionsState();\n const [isLoading, setIsLoading] = useState(false);\n\n const { filterQueryWithEventIds } = usePurchaseTileBulkActionsState(\n undefined,\n isEventView\n );\n\n const bulkConvertPayments = useBulkConvertPurchasePaymentsAction(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n const bulkMarkPurchaseAsPaidAction = useBulkMarkPurchaseAsPaid(\n filterQueryWithEventIds,\n setIsLoading,\n isLoading,\n undefined\n );\n\n return (\n \n \n \n \n \n }\n align=\"start\"\n triggerProps={{ disabled: isLoading || !areBulkActionsEnabled }}\n >\n {!isEventView && bulkConvertPayments.dropDown}\n {bulkMarkPurchaseAsPaidAction.dropDown}\n \n \n );\n};\n","import { MultiSelectActionsContainer } from 'src/components/common/MultiSelect/MultiSelectActionsContainer';\nimport { SettingsActions } from 'src/components/Purchases/BulkActions/PurchasesGlobalBulkActions/Actions/SettingsActions';\nimport { TagsActions } from 'src/components/Purchases/BulkActions/PurchasesGlobalBulkActions/Actions/TagsActions';\n\nimport { AccountingActions } from './Actions/AccountingActions';\nimport { PurchasesBulkActionProps } from './PurchasesBulkActions.types';\n\nexport const PurchasesGlobalBulkActions = ({\n ...props\n}: PurchasesBulkActionProps) => {\n return (\n \n \n \n \n \n );\n};\n","import { ReactNode, useEffect, useMemo } from 'react';\nimport { useGetNoSelectedItemsLabel } from 'src/components/common/MultiSelect/useGetNoSelectedItemsLabel';\nimport { useContent } from 'src/contexts/ContentContext';\nimport {\n MultiSelectScope,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { unpackNumericIds } from 'src/contexts/MultiSelectionContext/MultiSelectionContext.utils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { EventWithData } from 'src/WebApiController';\n\ninterface SetPurchasesAccordionSelectionCountLabelProps {\n children: ReactNode;\n events: EventWithData[] | undefined;\n}\nexport const SetPurchasesAccordionSelectionCountLabel = ({\n children,\n events,\n}: SetPurchasesAccordionSelectionCountLabelProps) => {\n const {\n getSelection,\n totalItemsSelected,\n selectionMode,\n setSelectedCountLabel,\n setUsingCustomSelectedCountLabel,\n } = useMultiSelectionContext();\n\n const noItemsSelected = useGetNoSelectedItemsLabel();\n const isAllGroupsMode = selectionMode?.mode === MultiSelectScope.AllGroups;\n\n const eventText = useContent(ContentId.Event);\n const eventsText = useContent(ContentId.Events);\n const ticketGroupText = useContent(ContentId.TicketGroup);\n const ticketGroupsText = useContent(ContentId.TicketGroups);\n const selectedText = useContent(ContentId.Selected);\n const fromText = useContent(ContentId.From);\n\n useEffect(() => {\n setUsingCustomSelectedCountLabel(true);\n }, [setUsingCustomSelectedCountLabel]);\n\n const eventWithDataMap = useMemo>(() => {\n const map: Record = {};\n events?.forEach((item) => {\n const id = item.event.viagVirtualId;\n map[id] = item;\n });\n return map;\n }, [events]);\n\n const selectedCountLabel = useMemo(() => {\n if (!totalItemsSelected) {\n return noItemsSelected;\n }\n\n const selection = getSelection();\n\n let eventsCount = 0;\n let ticketGroupsCount = 0;\n\n if (isAllGroupsMode) {\n eventsCount = new Set([\n ...selection.groupIds,\n ...selection.items.groupIds,\n ]).size;\n }\n\n // Ticket groups count & purchase orders count\n // All group selected\n selection.groupIds.forEach((eventId) => {\n ticketGroupsCount += eventWithDataMap[eventId]?.counts?.tktGrpsCnt ?? 0;\n });\n\n // Single elements selected - Ticket Group & Purchase Orders count\n const ticketGroupIdsSet = new Set();\n selection.items.itemIds.forEach((id) => {\n const [poId, tckGroupId] = unpackNumericIds(id);\n ticketGroupIdsSet.add(tckGroupId);\n });\n\n ticketGroupsCount += ticketGroupIdsSet.size;\n\n const eventsLabel = eventsCount === 1 ? eventText : eventsText;\n const ticketsGroupLabel =\n ticketGroupsCount === 1 ? ticketGroupText : ticketGroupsText;\n\n return (\n isAllGroupsMode\n ? `${ticketGroupsCount} ${ticketsGroupLabel} ${selectedText} ${fromText} ${eventsCount} ${eventsLabel}`\n : `${ticketGroupsCount} ${ticketsGroupLabel} ${selectedText}`\n ).toLocaleLowerCase();\n }, [\n eventText,\n eventWithDataMap,\n eventsText,\n fromText,\n getSelection,\n isAllGroupsMode,\n noItemsSelected,\n selectedText,\n ticketGroupText,\n ticketGroupsText,\n totalItemsSelected,\n ]);\n\n useEffect(() => {\n setSelectedCountLabel(selectedCountLabel);\n }, [selectedCountLabel, setSelectedCountLabel]);\n\n return <>{children};\n};\n","import { ReactNode, useEffect, useMemo } from 'react';\nimport { useGetNoSelectedItemsLabel } from 'src/components/common/MultiSelect/useGetNoSelectedItemsLabel';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\ninterface SetPurchasesFlattenedViewSelectionCountLabelProps {\n children: ReactNode;\n}\n\nexport const SetPurchasesFlattenedViewSelectionCountLabel = ({\n children,\n}: SetPurchasesFlattenedViewSelectionCountLabelProps) => {\n const purchaseText = useContent(ContentId.Purchase);\n const purchasesText = useContent(ContentId.Purchases);\n const selectedText = useContent(ContentId.Selected);\n const {\n setSelectedCountLabel,\n totalItemsSelected,\n setUsingCustomSelectedCountLabel,\n } = useMultiSelectionContext();\n\n const noSelectedItemsLabel = useGetNoSelectedItemsLabel();\n\n useEffect(() => {\n setUsingCustomSelectedCountLabel(true);\n }, [setUsingCustomSelectedCountLabel]);\n\n const selectedCountLabel = useMemo(() => {\n if (!totalItemsSelected) {\n return noSelectedItemsLabel;\n }\n\n const selectedItemsLabel =\n totalItemsSelected === 1 ? purchaseText : purchasesText;\n return `${totalItemsSelected} ${selectedItemsLabel} ${selectedText}`.toLocaleLowerCase();\n }, [\n noSelectedItemsLabel,\n purchaseText,\n purchasesText,\n selectedText,\n totalItemsSelected,\n ]);\n\n useEffect(() => {\n setSelectedCountLabel(selectedCountLabel);\n }, [selectedCountLabel, setSelectedCountLabel]);\n\n return <>{children};\n};\n","import { ReactNode, useEffect, useMemo } from 'react';\nimport { useGetNoSelectedItemsLabel } from 'src/components/common/MultiSelect/useGetNoSelectedItemsLabel';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\ninterface SetPurchasesTimeViewSelectionCountLabelProps {\n children: ReactNode;\n}\n\nexport const SetPurchasesTimeViewSelectionCountLabel = ({\n children,\n}: SetPurchasesTimeViewSelectionCountLabelProps) => {\n const purchaseText = useContent(ContentId.Purchase);\n const purchasesText = useContent(ContentId.Purchases);\n const selectedText = useContent(ContentId.Selected);\n const {\n setSelectedCountLabel,\n totalItemsSelected,\n getSelection,\n setUsingCustomSelectedCountLabel,\n getGroupSelectableGroupMetadata,\n } = useMultiSelectionContext();\n\n const noSelectedItemsLabel = useGetNoSelectedItemsLabel();\n\n useEffect(() => {\n setUsingCustomSelectedCountLabel(true);\n }, [setUsingCustomSelectedCountLabel]);\n\n const selectedCountLabel = useMemo(() => {\n if (!totalItemsSelected) {\n return noSelectedItemsLabel;\n }\n\n const selection = getSelection();\n\n let purchasesCount = 0;\n\n const singleSelectedItems = new Set(\n selection.items.itemIds.filter((itemId) => parseInt(itemId) > 0) ?? []\n );\n\n purchasesCount += singleSelectedItems.size;\n\n selection.groupIds.forEach((groupId) => {\n const g = getGroupSelectableGroupMetadata(groupId);\n purchasesCount += g?.itemCount ?? 0;\n });\n\n const selectedPurchasesLabel =\n purchasesCount === 1 ? purchaseText : purchasesText;\n\n return `${purchasesCount} ${selectedPurchasesLabel} ${selectedText}`.toLocaleLowerCase();\n }, [\n totalItemsSelected,\n getSelection,\n purchaseText,\n purchasesText,\n selectedText,\n noSelectedItemsLabel,\n getGroupSelectableGroupMetadata,\n ]);\n\n useEffect(() => {\n setSelectedCountLabel(selectedCountLabel);\n }, [selectedCountLabel, setSelectedCountLabel]);\n\n return <>{children};\n};\n","import { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { useDefaultPaymentsColumnConfig } from 'src/tables/PaymentsTable/useDefaultPaymentsColumnConfig';\nimport {\n defaultEventsColumnsConfig,\n defaultListingColumnsConfig,\n defaultListingFlattenedColumnsConfig,\n defaultOnSaleEventsColumnsConfig,\n defaultPurchaseEventEnabledColumnsConfig,\n defaultPurchasesColumnsConfig,\n defaultSalesColumnsConfig,\n defaultSalesFlattenedColumnsConfig,\n} from 'src/utils/columns/columnUtils';\nimport {\n CustomEventsColumn,\n CustomOnSaleEventsColumn,\n} from 'src/utils/columns/events/eventsCustomColumnUtils.types';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { CustomMarketplacePaymentsColumn } from 'src/utils/columns/payments/paymentsCustomColumnUtils.types';\nimport { CustomPurchasesColumn } from 'src/utils/columns/purchases/purchasesCustomColumnUtils.types';\nimport { CustomSalesColumn } from 'src/utils/columns/sales/salesCustomColumnUtils.types';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { UserSetting } from 'src/WebApiController';\n\nexport const useColumnServerUserSettings = <\n T extends\n | CustomEventsColumn\n | CustomListingColumn\n | CustomPurchasesColumn\n | CustomSalesColumn\n | CustomMarketplacePaymentsColumn\n | CustomOnSaleEventsColumn,\n>({\n sectionType,\n}: {\n sectionType: SectionType;\n}) => {\n const {\n value: storedEventsColumnOrderSetting = defaultEventsColumnsConfig,\n setUserSetting: setEventsColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.EventsColumnOrder,\n });\n const {\n value: storedInventoryColumnOrderSetting = defaultListingColumnsConfig,\n setUserSetting: setInventoryColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.InventoryColumnOrder,\n });\n const {\n value:\n storedInventoryFlattenedColumnOrderSetting = defaultListingFlattenedColumnsConfig,\n setUserSetting: setInventoryFlattenedColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.InventoryFlattenedColumnOrder,\n });\n const {\n value:\n storedInventorySideTableColumnOrderSetting = defaultListingColumnsConfig,\n setUserSetting: setInventorySideTableColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.InventorySideTableColumnOrder,\n });\n const {\n value: storedSaleColumnOrderSetting = defaultSalesColumnsConfig,\n setUserSetting: setSaleColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.SaleColumnOrder,\n });\n const {\n value:\n storedSaleFlattenedColumnOrderSetting = defaultSalesFlattenedColumnsConfig,\n setUserSetting: setSaleFlattenedColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.SaleFlattenedColumnOrder,\n });\n const {\n value: storedSaleSideTableColumnOrderSetting = defaultSalesColumnsConfig,\n setUserSetting: setSaleSideTableColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.SalesSideTableColumnOrder,\n });\n const {\n value: storedPurchaseColumnOrderSetting = defaultPurchasesColumnsConfig,\n setUserSetting: setPurchaseColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.PurchaseColumnOrder,\n });\n const {\n value:\n storedPurchaseEventColumnOrderSetting = defaultPurchaseEventEnabledColumnsConfig,\n setUserSetting: setPurchaseEventColumnOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.PurchaseEventColumnOrder,\n });\n const {\n value: storedPurchaseSideTableOrderSetting = defaultPurchasesColumnsConfig,\n setUserSetting: setPurchaseSideTableOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.PurchaseSideTableColumnOrder,\n });\n\n const defaultPaymentsColumnsConfig = useDefaultPaymentsColumnConfig();\n const {\n value: storedPaymentsTableOrderSetting = defaultPaymentsColumnsConfig,\n setUserSetting: setPaymentsTableOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.MarketplacePaymentsTableColumnOrder,\n });\n const {\n value:\n storedOnSaleEventTableOrderSetting = defaultOnSaleEventsColumnsConfig,\n setUserSetting: setOnSaleEventTableOrderSetting,\n } = useServerUserSetting({\n id: UserSetting.OnSaleEventColumnsOrder,\n });\n\n const storedColumnOrderSetting = {\n [SectionType.Events]: storedEventsColumnOrderSetting,\n [SectionType.Listings]: storedInventoryColumnOrderSetting,\n [SectionType.ListingsFlattened]: storedInventoryFlattenedColumnOrderSetting,\n [SectionType.InventorySideTable]:\n storedInventorySideTableColumnOrderSetting,\n [SectionType.ListingsReport]: [],\n [SectionType.Sales]: storedSaleColumnOrderSetting,\n [SectionType.SalesFlattened]: storedSaleFlattenedColumnOrderSetting,\n [SectionType.SalesReport]: [],\n [SectionType.SalesSideTable]: storedSaleSideTableColumnOrderSetting,\n [SectionType.Purchases]: storedPurchaseColumnOrderSetting,\n [SectionType.PurchaseEvent]: storedPurchaseEventColumnOrderSetting,\n [SectionType.PurchaseSideTable]: storedPurchaseSideTableOrderSetting,\n [SectionType.MarketplacePaymentsTable]: storedPaymentsTableOrderSetting,\n [SectionType.OnSaleEvents]: storedOnSaleEventTableOrderSetting,\n }[sectionType];\n\n const setColumnOrderSetting = {\n [SectionType.Events]: setEventsColumnOrderSetting,\n [SectionType.Listings]: setInventoryColumnOrderSetting,\n [SectionType.ListingsFlattened]: setInventoryFlattenedColumnOrderSetting,\n [SectionType.ListingsReport]: () => console.log('Unused'),\n [SectionType.InventorySideTable]: setInventorySideTableColumnOrderSetting,\n [SectionType.Sales]: setSaleColumnOrderSetting,\n [SectionType.SalesFlattened]: setSaleFlattenedColumnOrderSetting,\n [SectionType.SalesReport]: () => console.log('Unused'),\n [SectionType.SalesSideTable]: setSaleSideTableColumnOrderSetting,\n [SectionType.Purchases]: setPurchaseColumnOrderSetting,\n [SectionType.PurchaseEvent]: setPurchaseEventColumnOrderSetting,\n [SectionType.PurchaseSideTable]: setPurchaseSideTableOrderSetting,\n [SectionType.MarketplacePaymentsTable]: setPaymentsTableOrderSetting,\n [SectionType.OnSaleEvents]: setOnSaleEventTableOrderSetting,\n }[sectionType];\n\n const {\n value: customEventsColumns = [],\n setUserSetting: setCustomEventsColumns,\n } = useServerUserSetting({\n id: UserSetting.EventsCustomColumns,\n });\n const {\n value: customListingColumns = [],\n setUserSetting: setCustomListingColumns,\n } = useServerUserSetting({\n id: UserSetting.InventoryCustomColumns,\n });\n const {\n value: customSaleColumns = [],\n setUserSetting: setCustomSaleColumns,\n } = useServerUserSetting({\n id: UserSetting.SaleCustomColumns,\n });\n const {\n value: customPurchaseColumns = [],\n setUserSetting: setCustomPurchaseColumns,\n } = useServerUserSetting({\n id: UserSetting.PurchaseCustomColumns,\n });\n const {\n value: customPaymentsColumns = [],\n setUserSetting: setCustomPaymentsColumns,\n } = useServerUserSetting({\n id: UserSetting.MarketplacePaymentsCustomColumns,\n });\n const {\n value: customDiscoveryColumns = [],\n setUserSetting: setCustomDiscoveryColumns,\n } = useServerUserSetting({\n id: UserSetting.MarketplacePaymentsCustomColumns,\n });\n\n const setCustomColumns = {\n [SectionType.Events]: setCustomEventsColumns,\n [SectionType.Listings]: setCustomListingColumns,\n [SectionType.ListingsFlattened]: setCustomListingColumns,\n [SectionType.ListingsReport]: () => console.log('Unused'),\n [SectionType.InventorySideTable]: setCustomListingColumns,\n [SectionType.Sales]: setCustomSaleColumns,\n [SectionType.SalesFlattened]: setCustomSaleColumns,\n [SectionType.SalesReport]: () => console.log('Unused'),\n [SectionType.SalesSideTable]: setCustomSaleColumns,\n [SectionType.Purchases]: setCustomPurchaseColumns,\n [SectionType.PurchaseEvent]: setCustomPurchaseColumns,\n [SectionType.PurchaseSideTable]: setCustomPurchaseColumns,\n [SectionType.MarketplacePaymentsTable]: setCustomPaymentsColumns,\n [SectionType.OnSaleEvents]: setCustomDiscoveryColumns,\n }[sectionType] as (value: T[]) => void;\n\n const customColumns = {\n [SectionType.Events]: customEventsColumns,\n [SectionType.Listings]: customListingColumns,\n [SectionType.ListingsFlattened]: customListingColumns,\n [SectionType.ListingsReport]: [], // Unused\n [SectionType.InventorySideTable]: customListingColumns,\n [SectionType.Sales]: customSaleColumns,\n [SectionType.SalesFlattened]: customSaleColumns,\n [SectionType.SalesReport]: [], // Unused\n [SectionType.SalesSideTable]: customSaleColumns,\n [SectionType.Purchases]: customPurchaseColumns,\n [SectionType.PurchaseEvent]: customPurchaseColumns,\n [SectionType.PurchaseSideTable]: customPurchaseColumns,\n [SectionType.MarketplacePaymentsTable]: customPaymentsColumns,\n [SectionType.OnSaleEvents]: customDiscoveryColumns,\n };\n\n const {\n value: storedEventsColumnsEnabledSetting,\n setUserSetting: setEventsColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.EventsColumnsEnabled,\n });\n const {\n value: storedInventoryColumnsEnabledSetting,\n setUserSetting: setInventoryColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.InventoryColumnsEnabled,\n });\n const {\n value: storedInventoryFlattenedColumnsEnabledSetting,\n setUserSetting: setInventoryFlattenedColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.InventoryFlattenedColumnsEnabled,\n });\n const {\n value: storedInventorySideTableColumnsEnabledSetting,\n setUserSetting: setInventorySideTableColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.InventorySideTableColumnsEnabled,\n });\n const {\n value: storedSaleColumnsEnabledSetting,\n setUserSetting: setSaleColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.SaleColumnsEnabled,\n });\n const {\n value: storedSaleFlattenedColumnsEnabledSetting,\n setUserSetting: setSaleFlattenedColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.SaleFlattenedColumnsEnabled,\n });\n const {\n value: storedSaleSideTableColumnsEnabledSetting,\n setUserSetting: setSaleSideTableColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.SalesSideTableColumnsEnabled,\n });\n const {\n value: storedPurchaseColumnsEnabledSetting,\n setUserSetting: setPurchaseColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.PurchaseColumnsEnabled,\n });\n const {\n value:\n storedPurchaseEventColumnsEnabledSetting = defaultPurchaseEventEnabledColumnsConfig,\n setUserSetting: setPurchaseEventColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.PurchaseEventColumnsEnabled,\n });\n const {\n value: storedPurchaseSideTableColumnsEnabledSetting,\n setUserSetting: setPurchaseSideTableColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.PurchaseSideTableColumnsEnabled,\n });\n const {\n value: storedPaymentsTableColumnsEnabledSetting,\n setUserSetting: setPaymentsTableColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.MarketplacePaymentsTableColumnsEnabled,\n });\n const {\n value: storedDiscoveryTableColumnsEnabledSetting,\n setUserSetting: setDiscoveryTableColumnsEnabledSetting,\n } = useServerUserSetting({\n id: UserSetting.OnSaleEventColumnsEnabled,\n });\n\n const storedColumnsEnabledSetting = {\n [SectionType.Events]: storedEventsColumnsEnabledSetting,\n [SectionType.Listings]: storedInventoryColumnsEnabledSetting,\n [SectionType.ListingsFlattened]:\n storedInventoryFlattenedColumnsEnabledSetting,\n [SectionType.ListingsReport]: [],\n [SectionType.InventorySideTable]:\n storedInventorySideTableColumnsEnabledSetting,\n [SectionType.Sales]: storedSaleColumnsEnabledSetting,\n [SectionType.SalesFlattened]: storedSaleFlattenedColumnsEnabledSetting,\n [SectionType.SalesReport]: [],\n [SectionType.SalesSideTable]: storedSaleSideTableColumnsEnabledSetting,\n [SectionType.Purchases]: storedPurchaseColumnsEnabledSetting,\n [SectionType.PurchaseEvent]: storedPurchaseEventColumnsEnabledSetting,\n [SectionType.PurchaseSideTable]:\n storedPurchaseSideTableColumnsEnabledSetting,\n [SectionType.MarketplacePaymentsTable]:\n storedPaymentsTableColumnsEnabledSetting,\n [SectionType.OnSaleEvents]: storedDiscoveryTableColumnsEnabledSetting,\n }[sectionType];\n\n const setColumnsEnabledSetting = {\n [SectionType.Events]: setEventsColumnsEnabledSetting,\n [SectionType.Listings]: setInventoryColumnsEnabledSetting,\n [SectionType.ListingsFlattened]: setInventoryFlattenedColumnsEnabledSetting,\n [SectionType.ListingsReport]: () => console.log('Unused'),\n [SectionType.InventorySideTable]:\n setInventorySideTableColumnsEnabledSetting,\n [SectionType.Sales]: setSaleColumnsEnabledSetting,\n [SectionType.SalesFlattened]: setSaleFlattenedColumnsEnabledSetting,\n [SectionType.SalesReport]: () => console.log('Unused'),\n [SectionType.SalesSideTable]: setSaleSideTableColumnsEnabledSetting,\n [SectionType.Purchases]: setPurchaseColumnsEnabledSetting,\n [SectionType.PurchaseEvent]: setPurchaseEventColumnsEnabledSetting,\n [SectionType.PurchaseSideTable]: setPurchaseSideTableColumnsEnabledSetting,\n [SectionType.MarketplacePaymentsTable]:\n setPaymentsTableColumnsEnabledSetting,\n [SectionType.OnSaleEvents]: setDiscoveryTableColumnsEnabledSetting,\n }[sectionType];\n\n return {\n storedColumnOrderSetting,\n setColumnOrderSetting,\n customColumns,\n setCustomColumns,\n storedColumnsEnabledSetting,\n setColumnsEnabledSetting,\n };\n};\n","import { UniqueIdentifier } from '@dnd-kit/core';\nimport { AnimateLayoutChanges, useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { ReactNode } from 'react';\nimport { PlaceholderColumnGroupListItem } from 'src/modals/ColumnSettings/ColumnGroupListItem';\n\n/**\n * Extends functionality of any group component to inherit sort functionality\n */\nexport const DropGroupWrapper = ({\n children,\n id,\n columnIdDisplayNameMapping,\n}: {\n children: ReactNode;\n id: UniqueIdentifier;\n columnIdDisplayNameMapping: Record;\n}) => {\n const animateLayoutChanges: AnimateLayoutChanges = ({\n isSorting,\n wasDragging,\n }) => (isSorting || wasDragging ? false : true);\n\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id, animateLayoutChanges });\n\n // When dragging, collapse the children to show one item only\n return (\n \n {isDragging ? (\n \n ) : (\n children\n )}\n \n );\n};\n","import { SortableContext } from '@dnd-kit/sortable';\nimport clsx from 'clsx';\nimport { DropWrapper } from 'src/core/POS/DragAndDropSort/DragAndDrop';\nimport { DropGroupWrapper } from 'src/core/POS/DragAndDropSort/DragAndDropGroup';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { HamburgerMenuIcon } from 'src/svgs/HamburgerMenuIcon';\n\nimport { ColumnListItem } from '../InventoryTableColumns/ColumnListItem/ColumnListItem';\nimport * as styles from './ColumnGroupListItem.css';\n\nexport const PlaceholderColumnGroupListItem = ({\n displayName,\n}: {\n displayName: string;\n}) => {\n return (\n \n \n \n {displayName}\n \n \n \n );\n};\n\nexport const ColumnGroupListItem = ({\n id,\n groupIndex,\n items,\n columnIdDisplayNameMapping,\n highlightIndex,\n renderActions,\n}: {\n id: string;\n groupIndex: number;\n items: string[];\n columnIdDisplayNameMapping: Record;\n highlightIndex?: number;\n renderActions: (id: string) => JSX.Element;\n}) => {\n return (\n \n \n
    \n
    \n \n \n {columnIdDisplayNameMapping[id]}\n \n
    \n
    \n {items.map((item, index) => {\n return (\n \n \n \n {columnIdDisplayNameMapping[item]}\n \n \n \n );\n })}\n
    \n
    \n
    \n \n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { PurchasesTableColumnId } from 'src/utils/columns/purchases/purchasesColumnUtils.types';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { PurchaseViewMode } from 'src/WebApiController';\n\nimport { ColumnItem } from '../ColumnsSectionV2';\n\ntype ColumnGroupConfig = {\n id: string;\n columns: string[];\n} | null;\n\nfunction adaptColumnToGroups(\n columns: string[],\n ticketGroupColumns: ColumnGroupConfig\n): ColumnItem[] {\n if (!ticketGroupColumns) {\n return columns.map((column) => ({ id: column, children: [] }));\n }\n\n const adaptedColumns: ColumnItem[] = [];\n const ticketGroup: ColumnItem = {\n id: ticketGroupColumns.id || '',\n children: [],\n };\n let firstTicketGroupColumnIndex = -1;\n columns.forEach((column, index) => {\n if (ticketGroupColumns.columns.includes(column)) {\n if (firstTicketGroupColumnIndex === -1) {\n firstTicketGroupColumnIndex = index;\n }\n ticketGroup.children?.push(column);\n } else {\n adaptedColumns.push({ id: column, children: [] });\n }\n });\n\n if (\n ticketGroup.id &&\n ticketGroup.children &&\n ticketGroup.children.length > 0\n ) {\n adaptedColumns.splice(firstTicketGroupColumnIndex, 0, ticketGroup);\n }\n\n return adaptedColumns;\n}\n\n/**\n * Hook to adapt columns to groups\n * @param columns\n * @param sectionType\n * @param viewMode Only supported for Purchase for now, used for filtering visible columns\n * @returns\n * - adaptedColumns: columns adapted to groups\n * - flattenColumns: flatten columns\n * - columnGroup: column group config\n **/\nexport const useAdaptedColumns = ({\n columns,\n sectionType,\n viewMode,\n}: {\n columns: string[];\n sectionType: SectionType;\n viewMode?: string | null;\n}) => {\n const COLUMN_GROUPS = useMemo(\n () => ({\n [SectionType.Listings]: null,\n [SectionType.Sales]: null,\n [SectionType.ListingsReport]: null,\n [SectionType.SalesReport]: null,\n [SectionType.Events]: null,\n [SectionType.ListingsFlattened]: null,\n [SectionType.SalesFlattened]: null,\n [SectionType.SalesSideTable]: null,\n [SectionType.InventorySideTable]: null,\n [SectionType.PurchaseSideTable]: null,\n [SectionType.Purchases]:\n viewMode === PurchaseViewMode.TileView\n ? {\n id: 'ticketGroup',\n columns: [\n PurchasesTableColumnId.Event,\n PurchasesTableColumnId.Venue,\n PurchasesTableColumnId.EventDate,\n PurchasesTableColumnId.Seating,\n PurchasesTableColumnId.Row,\n PurchasesTableColumnId.Seats,\n PurchasesTableColumnId.SeatTraits,\n ],\n }\n : null,\n [SectionType.PurchaseEvent]: null,\n [SectionType.MarketplacePaymentsTable]: null,\n [SectionType.OnSaleEvents]: null,\n }),\n [viewMode]\n );\n\n const adaptedColumns = useMemo(() => {\n return adaptColumnToGroups(columns, COLUMN_GROUPS[sectionType]);\n }, [columns, sectionType, COLUMN_GROUPS]);\n\n const flattenColumns = useCallback((columns: ColumnItem[]): string[] => {\n return columns.flatMap((column) =>\n column.children && column.children.length > 0\n ? column.children\n : column.id\n );\n }, []);\n\n return {\n adaptedColumns,\n flattenColumns,\n columnGroup: COLUMN_GROUPS[sectionType],\n };\n};\n","import {\n DndContext,\n DragEndEvent,\n DragOverlay,\n UniqueIdentifier,\n} from '@dnd-kit/core';\nimport {\n SortableContext,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { useState } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DropWrapper } from 'src/core/POS/DragAndDropSort/DragAndDrop';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\n\nimport { ColumnListItem } from '../InventoryTableColumns/ColumnListItem/ColumnListItem';\nimport { useColumnDisplayName } from '../InventoryTableColumns/useColumnDisplayName';\nimport {\n ColumnGroupListItem,\n PlaceholderColumnGroupListItem,\n} from './ColumnGroupListItem';\nimport * as styles from './ColumnsSection.css';\nimport { useAdaptedColumns } from './hooks/useAdaptedColumns';\n\nexport type ColumnItem = {\n id: string;\n children?: string[];\n};\n\ntype ColumnsSelectionProps = {\n titleContentId?: ContentId;\n items?: string[];\n renderActions: (id: string) => JSX.Element;\n onDragEnd?: (event: DragEndEvent) => void;\n sectionType: SectionType;\n highlightIndex?: number;\n shouldHideItem?: (id: string) => boolean;\n viewMode?: string | null;\n};\n\n/**\n * The sections that represent the Add Columns and Current Columns for the Edit Columns experience\n */\nexport const ColumnsSection = ({\n titleContentId,\n items = [],\n renderActions,\n onDragEnd,\n sectionType,\n highlightIndex,\n shouldHideItem,\n viewMode,\n}: ColumnsSelectionProps) => {\n const { adaptedColumns, columnGroup } = useAdaptedColumns({\n columns: items,\n sectionType,\n viewMode,\n });\n\n const { columnIdDisplayNameMapping } = useColumnDisplayName({\n columnIds: [...items, columnGroup?.id || ''],\n sectionType,\n });\n\n const [activeId, setActiveId] = useState(null);\n\n const renderColumnListItem = (\n id: string,\n index: number,\n isPlaceholder = false\n ) => {\n return (\n \n \n {columnIdDisplayNameMapping[id]}\n \n \n );\n };\n\n return (\n
    \n {titleContentId && (\n
    \n \n
    \n )}\n
    \n {onDragEnd ? (\n setActiveId(event.active.id)}\n onDragEnd={onDragEnd}\n >\n item.id)}\n strategy={verticalListSortingStrategy}\n >\n {adaptedColumns.map((item, index) => {\n if (shouldHideItem?.(item.id)) {\n return null;\n } else if (item.children && item.children.length > 0) {\n return (\n \n );\n } else {\n return (\n \n {renderColumnListItem(item.id, items.indexOf(item.id))}\n \n );\n }\n })}\n \n \n {activeId && columnGroup?.id === activeId ? (\n \n ) : (\n renderColumnListItem(\n activeId as string,\n adaptedColumns.findIndex((col) => col.id === activeId),\n true\n )\n )}\n \n \n ) : (\n <>\n {items.map((item, i) => (\n \n \n {columnIdDisplayNameMapping[item]}\n \n \n ))}\n \n )}\n
    \n
    \n );\n};\n","import { DragEndEvent } from '@dnd-kit/core';\nimport { arrayMove } from '@dnd-kit/sortable';\nimport { MouseEvent, useCallback, useMemo, useState } from 'react';\nimport { useToggle } from 'react-use';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { vars } from 'src/core/themes';\nimport { Button, Switch } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport {\n FormatOption,\n FormatOptionEntries,\n FormatOptionPill,\n LISTING_TABLE_COLUMN_DEFAULT_PRECISION,\n} from 'src/modals/EditTableColumns';\nimport { DeleteIcon, EditIcon, IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { getColumnConfigById } from 'src/utils/columns/columnUtils';\nimport { CustomEventsColumn } from 'src/utils/columns/events/eventsCustomColumnUtils.types';\nimport { GROUP_BY_TO_PRIMARY_COLUMN_ID } from 'src/utils/columns/inventory/inventoryColumnUtils.constants';\nimport { ListingTableColumnId } from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { CustomMarketplacePaymentsColumn } from 'src/utils/columns/payments/paymentsCustomColumnUtils.types';\nimport { CustomPurchasesColumn } from 'src/utils/columns/purchases/purchasesCustomColumnUtils.types';\nimport { CustomSalesColumn } from 'src/utils/columns/sales/salesCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { ReportGroupBy, Tag, UserSetting } from 'src/WebApiController';\n\nimport { ColumnsSection } from './ColumnsSectionV2';\nimport { useAdaptedColumns } from './hooks/useAdaptedColumns';\nimport * as styles from './TableColumns.css';\nimport { TableCustomColumnModal } from './TableCustomColumnModal';\n\ntype TableColumnsInputProps = {\n // Override of required column ids - additive to the default required columns\n requiredColumns?: string[];\n userColumnSelection: string[];\n onUserColumnSelectionChange: (newSelection: string[]) => void;\n userColumnSorting: string[];\n onUserColumnSortingChange: (newSorting: string[]) => void;\n userEditableColumns?: string[];\n onUserEditableColumnsChange?: (newEditableColumns: string[]) => void;\n customColumns: T[];\n onCustomColumnsChange?: (newCustomColumns: T[]) => void;\n reportingTags?: Tag[];\n enableConfigureEditability?: boolean;\n sectionType?: SectionType;\n groupBy?: ReportGroupBy;\n // Only used with SectionType.Listings\n // We only want to show this column for setting if it's visible in the current view\n showTicketClassColor?: boolean;\n style?: React.CSSProperties;\n // Only supported for Purchase for now, used for filtering visible columns\n viewMode?: string | null;\n};\n\nexport function TableColumnsInput<\n T extends\n | CustomListingColumn\n | CustomSalesColumn\n | CustomEventsColumn\n | CustomPurchasesColumn\n | CustomMarketplacePaymentsColumn,\n>({\n requiredColumns,\n userColumnSelection,\n onUserColumnSelectionChange,\n userColumnSorting,\n onUserColumnSortingChange,\n userEditableColumns,\n onUserEditableColumnsChange,\n customColumns,\n onCustomColumnsChange,\n reportingTags,\n enableConfigureEditability,\n sectionType = SectionType.Listings,\n groupBy,\n showTicketClassColor,\n viewMode,\n style,\n}: TableColumnsInputProps) {\n const [isCustomColumnModalOpen, toggleCustomColumnModal] = useToggle(false);\n const [customColumnToEditId, setCustomColumnToEditId] = useState();\n const [customColumnToDeleteId, setCustomColumnToDeleteId] =\n useState();\n const [highlightedItemIndex, setHighlightedItemIndex] = useState(-1);\n\n const deleteCustomColumnConfirmDialog = useBasicDialog();\n\n const columnNumberPrecisionSettingId = {\n [SectionType.Events]: UserSetting.EventsColumnNumberPrecision,\n [SectionType.Listings]: UserSetting.InventoryColumnNumberPrecision,\n [SectionType.ListingsFlattened]:\n UserSetting.InventoryFlattenedColumnNumberPrecision,\n [SectionType.ListingsReport]: UserSetting.InventoryColumnNumberPrecision,\n [SectionType.InventorySideTable]:\n UserSetting.InventorySideTableColumnNumberPrecision,\n [SectionType.Sales]: UserSetting.SaleColumnNumberPrecision,\n [SectionType.SalesFlattened]:\n UserSetting.SaleFlattenedColumnNumberPrecision,\n [SectionType.SalesReport]: UserSetting.SaleColumnNumberPrecision,\n [SectionType.SalesSideTable]:\n UserSetting.SalesSideTableColumnNumberPrecision,\n [SectionType.Purchases]: UserSetting.PurchaseColumnNumberPrecision,\n [SectionType.PurchaseEvent]: UserSetting.PurchaseEventColumnNumberPrecision,\n [SectionType.PurchaseSideTable]:\n UserSetting.PurchaseSideTableColumnNumberPrecision,\n [SectionType.MarketplacePaymentsTable]:\n UserSetting.MarketplacePaymentsColumnNumberPrecision,\n [SectionType.OnSaleEvents]: UserSetting.OnSaleEventColumnNumberPrecision,\n }[sectionType];\n\n const { adaptedColumns, flattenColumns } = useAdaptedColumns({\n columns: userColumnSorting,\n sectionType,\n viewMode,\n });\n\n const {\n value: storedColumnNumberPrecisions = {},\n setUserSetting: setNumberPrecisionSetting,\n } = useServerUserSetting({\n id: columnNumberPrecisionSettingId,\n });\n\n const updateNumberPrecisionSetting = useCallback(\n (id: string, precision: FormatOption) => {\n setNumberPrecisionSetting({\n ...storedColumnNumberPrecisions,\n [id]: precision,\n });\n },\n [setNumberPrecisionSetting, storedColumnNumberPrecisions]\n );\n\n const isTagColumn = useCallback(\n (tagName: string) => (reportingTags ?? []).some((t) => t.key === tagName),\n [reportingTags]\n );\n\n const moveColumnUnderLastEnabled = useCallback(\n (id: string) => {\n let updatedItems = [...adaptedColumns];\n let currentPosition: number | null = null;\n let lastEnabledPosition: number | null = null;\n\n // Check if the column is part of a group\n const activeGroupIndex = adaptedColumns.findIndex(\n (item) =>\n item.children &&\n item.children.length > 0 &&\n item.children.includes(id)\n );\n\n if (activeGroupIndex !== -1) {\n // The item is part of a group\n const group = updatedItems[activeGroupIndex];\n if (group.children) {\n currentPosition = group.children.indexOf(id);\n\n lastEnabledPosition = group.children.findLastIndex((col) =>\n userColumnSelection.includes(col)\n );\n\n if (\n currentPosition === -1 ||\n lastEnabledPosition === -1 ||\n currentPosition === lastEnabledPosition\n ) {\n return;\n }\n\n const newPosition =\n currentPosition < lastEnabledPosition\n ? lastEnabledPosition\n : lastEnabledPosition + 1;\n\n const updatedGroup = arrayMove(\n group.children,\n currentPosition,\n newPosition\n );\n\n updatedItems[activeGroupIndex].children = updatedGroup;\n }\n } else {\n // The item is a top-level item (not in a group)\n currentPosition = adaptedColumns.findIndex((item) => item.id === id);\n\n lastEnabledPosition = adaptedColumns.findLastIndex((item) =>\n userColumnSelection.includes(item.id)\n );\n\n if (\n currentPosition === -1 ||\n lastEnabledPosition === -1 ||\n currentPosition === lastEnabledPosition\n ) {\n return;\n }\n\n const newPosition =\n currentPosition < lastEnabledPosition\n ? lastEnabledPosition\n : lastEnabledPosition + 1;\n\n updatedItems = arrayMove(adaptedColumns, currentPosition, newPosition);\n }\n\n const flattenedColumns = flattenColumns(updatedItems);\n\n // Flatten the updated structure and apply the changes\n onUserColumnSortingChange(flattenedColumns);\n\n // Highlight the moved item\n const flatIndex = flattenedColumns.indexOf(id);\n setHighlightedItemIndex(flatIndex);\n\n // Reset the highlight after a timeout\n setTimeout(() => {\n setHighlightedItemIndex(-1);\n }, 1100);\n },\n [\n onUserColumnSortingChange,\n userColumnSelection,\n adaptedColumns,\n flattenColumns,\n ]\n );\n\n const addColumn = useCallback(\n (id: string) => {\n moveColumnUnderLastEnabled(id);\n onUserColumnSelectionChange([...userColumnSelection, id]);\n },\n [\n moveColumnUnderLastEnabled,\n onUserColumnSelectionChange,\n userColumnSelection,\n ]\n );\n\n const removeColumn = useCallback(\n (id: string) => {\n moveColumnUnderLastEnabled(id);\n onUserColumnSelectionChange(\n userColumnSelection?.filter((cId) => cId !== id)\n );\n },\n [\n moveColumnUnderLastEnabled,\n onUserColumnSelectionChange,\n userColumnSelection,\n ]\n );\n\n const deleteCustomColumn = useCallback(\n (id: string) => {\n removeColumn(id);\n const remainingColumns = customColumns.filter(\n (c) => (c as T & { id: string }).id !== id\n ) as T[];\n onCustomColumnsChange?.(remainingColumns);\n },\n [customColumns, removeColumn, onCustomColumnsChange]\n );\n\n const editCustomColumn = useCallback(\n (id: string) => {\n if (!isCustomColumnModalOpen) {\n setCustomColumnToEditId(id);\n toggleCustomColumnModal();\n }\n },\n [isCustomColumnModalOpen, toggleCustomColumnModal]\n );\n\n const renderColumnRowActions = useCallback(\n (id: string /*isColumnAdded?: boolean*/) => {\n const personalization = getColumnConfigById({\n id,\n customColumns,\n sectionType,\n reportingTags,\n }).personalization;\n\n const {\n isNumeric,\n isDateTime,\n isCurrency,\n isPercent,\n isEditabilityConfigurable,\n isInteger,\n } = personalization;\n\n let isRequired = personalization.isRequired;\n if (groupBy) {\n if (sectionType === SectionType.ListingsReport) {\n isRequired = GROUP_BY_TO_PRIMARY_COLUMN_ID[groupBy] === id;\n }\n }\n if (requiredColumns?.includes(id)) {\n isRequired = true;\n }\n\n const isCustom = customColumns.find(\n (c) => (c as T & { id: string }).id === id\n );\n\n const toggleColumn = (isChecked: boolean) => {\n if (isChecked) {\n if (!userColumnSelection.includes(id)) {\n addColumn(id);\n }\n } else {\n if (!isRequired) removeColumn(id);\n }\n };\n\n return (\n {\n e.stopPropagation();\n }}\n >\n {isCustom && (\n
    \n \n
    \n )}\n {isTagColumn(id) && (\n
    \n \n
    \n )}\n {isEditabilityConfigurable && enableConfigureEditability ? (\n \n {\n e.stopPropagation();\n const isChecked = e.target.checked;\n if (isChecked) {\n onUserEditableColumnsChange?.([\n ...userEditableColumns!,\n id,\n ]);\n } else {\n onUserEditableColumnsChange?.(\n userEditableColumns!.filter((cId) => cId !== id)\n );\n }\n }}\n label={\n userEditableColumns!.includes(id) ? (\n \n ) : (\n \n )\n }\n labelPosition=\"right\"\n />\n \n ) : null}\n {isNumeric || isDateTime ? (\n \n ) : null}\n\n {isCustom && onCustomColumnsChange && (\n <>\n {\n editCustomColumn(id);\n }}\n />\n {\n setCustomColumnToDeleteId(id);\n deleteCustomColumnConfirmDialog.launchDialog();\n }}\n />\n \n )}\n\n \n \n );\n },\n [\n addColumn,\n customColumns,\n deleteCustomColumnConfirmDialog,\n editCustomColumn,\n enableConfigureEditability,\n groupBy,\n isTagColumn,\n onCustomColumnsChange,\n onUserEditableColumnsChange,\n removeColumn,\n reportingTags,\n requiredColumns,\n sectionType,\n storedColumnNumberPrecisions,\n updateNumberPrecisionSetting,\n userColumnSelection,\n userEditableColumns,\n ]\n );\n\n const renderToggleButton = useCallback(\n (id: string) => renderColumnRowActions(id),\n [renderColumnRowActions]\n );\n\n /**\n * Handler that sets the column order based on the drag drop event\n */\n const onDragEndHandler = useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over) return;\n\n const activeId = active.id as string;\n const overId = over.id as string;\n\n // Determine if the dragged item is in a group\n const activeGroup = adaptedColumns.findIndex(\n (item) =>\n item.children &&\n item.children.length > 0 &&\n item.children.includes(activeId)\n );\n const overGroup = adaptedColumns.findIndex(\n (item) =>\n item.children &&\n item.children.length > 0 &&\n item.children.includes(overId)\n );\n\n let updatedItems = [...adaptedColumns];\n\n if (activeGroup !== -1 && activeGroup === overGroup) {\n const group = updatedItems[activeGroup];\n if (group.children) {\n // Move within the same group\n const updatedGroup = arrayMove(\n group.children,\n group.children.indexOf(activeId),\n group.children.indexOf(overId)\n );\n\n updatedItems[activeGroup].children = updatedGroup;\n }\n // Update items with the new order\n } else if (activeGroup === -1 && overGroup === -1) {\n // Move top-level items (including entire groups)\n updatedItems = arrayMove(\n adaptedColumns,\n adaptedColumns.findIndex((item) => item.id === activeId),\n adaptedColumns.findIndex((item) => item.id === overId)\n );\n }\n // Update items with the new order\n onUserColumnSortingChange(flattenColumns(updatedItems));\n },\n [onUserColumnSortingChange, adaptedColumns, flattenColumns]\n );\n\n const openAddColumnModal = useCallback(\n (e: MouseEvent) => {\n e.stopPropagation();\n if (!isCustomColumnModalOpen) {\n setCustomColumnToEditId(undefined);\n toggleCustomColumnModal();\n }\n },\n [isCustomColumnModalOpen, toggleCustomColumnModal]\n );\n\n const hiddenItemIds = useMemo(() => {\n if (showTicketClassColor) {\n return [];\n }\n\n return [ListingTableColumnId.TicketClassColor.toString()];\n }, [showTicketClassColor]);\n\n const shouldHideItem = useCallback(\n (id: string) => {\n if (hiddenItemIds?.includes(id)) {\n return true;\n }\n\n const { visibleViewModes } = getColumnConfigById({\n id,\n customColumns,\n sectionType,\n reportingTags,\n }).personalization;\n\n if (\n visibleViewModes.length > 0 &&\n viewMode &&\n !visibleViewModes.includes(viewMode)\n ) {\n return true;\n }\n\n return false;\n },\n [customColumns, hiddenItemIds, reportingTags, sectionType, viewMode]\n );\n\n return (\n <>\n
    \n \n {onCustomColumnsChange && (\n \n \n \n \n )}\n
    \n {isCustomColumnModalOpen && (\n {\n onCustomColumnsChange?.(newColumns);\n }}\n sectionType={sectionType}\n />\n )}\n }\n bodyText={}\n onOkay={() => {\n if (customColumnToDeleteId) {\n deleteCustomColumn(customColumnToDeleteId);\n setCustomColumnToDeleteId(undefined);\n }\n\n deleteCustomColumnConfirmDialog.closeDialog();\n }}\n onCancel={() => deleteCustomColumnConfirmDialog.closeDialog()}\n />\n \n );\n}\n","import clsx from 'clsx';\nimport { isEqual, uniq } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useToggle } from 'react-use';\nimport { CancelButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { typography } from 'src/core/themes/shared.css';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { PURCHASE_TABLE_COLUMNS_CONFIG } from 'src/tables/PurchaseTable/configs/PurchaseTableColumnsConfig';\nimport { getColumnPersonalization } from 'src/utils/columns/columnPersonalizationUtils';\nimport { filterColumnsByFeatures } from 'src/utils/columns/columnUtils';\nimport { CustomPurchasesColumn } from 'src/utils/columns/purchases/purchasesCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport {\n ActionOutboxEntityType,\n Feature,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '../Modal';\nimport * as styles from './ColumnSettings.css';\nimport { useColumnServerUserSettings } from './hooks/useColumnServerUserSettings';\nimport { TableColumnsInput } from './TableColumnsInputV2';\n\ntype TableColumnsModalContainerProps = {\n onClose: () => void;\n // Not fully supporting reporting yet\n sectionType: SectionType.Purchases | SectionType.PurchaseEvent;\n // Only supported for Purchase for now, used for filtering visible columns\n viewMode?: string | null;\n // Only used with SectionType.Listings\n // We only want to show this column for setting if it's visible in the current view\n showTicketClassColor?: boolean;\n};\n\nexport function PurchaseColumnSettingsModal({\n onClose,\n sectionType,\n viewMode,\n showTicketClassColor,\n}: TableColumnsModalContainerProps) {\n const { appContext, loginContext } = useAppContext();\n const hasTablePinActionColumnFeature = useUserHasFeature(\n Feature.TablePinActionColumn\n );\n const [isOpen, toggleIsOpen] = useToggle(true);\n const {\n storedColumnOrderSetting,\n setColumnOrderSetting,\n customColumns,\n storedColumnsEnabledSetting,\n setColumnsEnabledSetting,\n } = useColumnServerUserSettings({ sectionType });\n\n const {\n value: customPurchaseColumns = [],\n setUserSetting: setCustomPurchaseColumns,\n } = useServerUserSetting({\n id: UserSetting.PurchaseCustomColumns,\n });\n\n const { tagsMetadata } = useTagsForEntityType(\n ActionOutboxEntityType.Purchase,\n true\n );\n\n const presetColumnIds = Object.values(PURCHASE_TABLE_COLUMNS_CONFIG)\n .map((i) => i.id)\n .filter((id): id is string => id !== undefined);\n\n const filterColumns = useCallback(\n (columnList: string[]) => {\n // Filter out reporting tags that are later turned off reporting\n const activeTagNames = tagsMetadata?.map((t) => t.key) ?? [];\n const customColumnIds = customPurchaseColumns.map(\n (c) => (c as T & { id: string }).id\n );\n\n return columnList.filter((columnId) => {\n // Don't show inconfigurable columns - like checkbox\n if (presetColumnIds.includes(columnId)) {\n const isConfigurable = getColumnPersonalization({\n id: columnId,\n sectionType,\n }).isConfigurable;\n\n // With this new feature, we set action column as a column always showing at the right, thus inconfigurable\n // Without the feature, we treat the column as configurable\n if (!hasTablePinActionColumnFeature) {\n if (columnId === 'action' || columnId === 'actions') {\n return true;\n }\n }\n\n return isConfigurable;\n }\n return (\n activeTagNames.includes(columnId) ||\n customColumnIds.includes(columnId)\n );\n });\n },\n [\n customPurchaseColumns,\n hasTablePinActionColumnFeature,\n presetColumnIds,\n sectionType,\n tagsMetadata,\n ]\n );\n\n const storedColumnOrderSettingFiltered = useMemo(() => {\n const allColumnIdsAvailable = filterColumns(\n uniq([\n ...storedColumnOrderSetting.filter(\n (id): id is string => id !== undefined\n ),\n ...presetColumnIds.toSorted((a, b) => a.localeCompare(b)),\n ...customPurchaseColumns.map((c) => c.id),\n ...(tagsMetadata?.map((t) => t.key) ?? []),\n ])\n );\n\n const existingColumnsOrderSetting = filterColumns(\n storedColumnOrderSetting as string[]\n );\n\n allColumnIdsAvailable.forEach((columnId) => {\n if (!existingColumnsOrderSetting.includes(columnId)) {\n existingColumnsOrderSetting.push(columnId);\n }\n });\n\n return existingColumnsOrderSetting;\n }, [\n customPurchaseColumns,\n filterColumns,\n presetColumnIds,\n storedColumnOrderSetting,\n tagsMetadata,\n ]);\n\n const storedColumnEnabledSettingFiltered = useMemo(() => {\n if (\n Array.isArray(storedColumnsEnabledSetting) &&\n storedColumnsEnabledSetting.length > 0\n ) {\n return filterColumns(storedColumnsEnabledSetting as string[]);\n } else {\n return filterColumns(storedColumnOrderSetting);\n }\n }, [filterColumns, storedColumnsEnabledSetting, storedColumnOrderSetting]);\n\n const editabilityId = {\n [SectionType.Purchases]: UserSetting.PurchaseColumnEditability,\n [SectionType.PurchaseEvent]: UserSetting.PurchaseEventColumnEditability,\n }[sectionType];\n\n const { value: editableColumns = [], setUserSetting: setEditableColumns } =\n useServerUserSetting({\n id: editabilityId,\n });\n\n const [userColumnSelection, setUserColumnSelection] = useState(\n filterColumnsByFeatures(\n storedColumnEnabledSettingFiltered,\n sectionType,\n customColumns[sectionType],\n loginContext?.user,\n appContext?.features\n )\n );\n\n const [userColumnSorting, setUserColumnSorting] = useState(\n filterColumnsByFeatures(\n storedColumnOrderSettingFiltered,\n sectionType,\n customColumns[sectionType],\n loginContext?.user,\n appContext?.features\n )\n );\n const [userEditableColumns, setUserEditableColumns] =\n useState(editableColumns);\n const [userColumnIsDirty, setUserColumnIsDirty] = useState(false);\n\n const onSaveHandler = () => {\n if (!userColumnSelection) {\n // TODO: show error\n return;\n }\n setColumnsEnabledSetting(userColumnSelection);\n setColumnOrderSetting(userColumnSorting);\n setEditableColumns(userEditableColumns);\n toggleIsOpen();\n };\n\n // Sync the user setting to the default if the user has never set it\n useEffect(() => {\n const newColumns = filterColumnsByFeatures(\n storedColumnOrderSettingFiltered,\n sectionType,\n customColumns[sectionType],\n loginContext?.user,\n appContext?.features,\n tagsMetadata ?? []\n );\n const newEnabledColumns = filterColumnsByFeatures(\n storedColumnEnabledSettingFiltered,\n sectionType,\n customColumns[sectionType],\n loginContext?.user,\n appContext?.features\n );\n if (!userColumnIsDirty) {\n if (!isEqual(newColumns, userColumnSorting)) {\n setUserColumnSorting(newColumns);\n }\n if (!isEqual(editableColumns, userEditableColumns)) {\n setUserEditableColumns(editableColumns);\n }\n if (!isEqual(newEnabledColumns, userColumnSelection)) {\n setUserColumnSelection(newEnabledColumns);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n appContext?.features,\n editableColumns,\n loginContext?.user,\n storedColumnOrderSettingFiltered,\n storedColumnEnabledSettingFiltered,\n ]);\n\n // Keep the columns up to date in case the user changes the settings (e.g. adds/deletes custom column)\n useEffect(() => {\n const allColumnIdsAvailable = filterColumns(\n uniq([\n ...storedColumnOrderSetting.filter(\n (id): id is string => id !== undefined\n ),\n ...presetColumnIds.toSorted((a, b) => a.localeCompare(b)),\n ...customPurchaseColumns.map((c) => c.id),\n ...(tagsMetadata?.map((t) => t.key) ?? []),\n ])\n );\n\n let userColumnSortingFiltered = filterColumns(userColumnSorting);\n\n allColumnIdsAvailable.forEach((columnId) => {\n if (!userColumnSortingFiltered.includes(columnId)) {\n userColumnSortingFiltered.push(columnId);\n }\n });\n\n userColumnSortingFiltered = filterColumnsByFeatures(\n userColumnSortingFiltered,\n sectionType,\n customColumns[sectionType],\n loginContext?.user,\n appContext?.features,\n tagsMetadata ?? []\n );\n\n if (\n !isEqual(new Set(userColumnSortingFiltered), new Set(userColumnSorting))\n ) {\n setUserColumnSorting(userColumnSortingFiltered);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customPurchaseColumns]);\n\n useEffect(() => {\n if (!isOpen) setTimeout(onClose, 300);\n }, [isOpen, onClose]);\n\n return (\n \n \n
    \n
    \n \n
    \n
    \n
    \n \n \n userColumnSelection={userColumnSelection}\n onUserColumnSelectionChange={(newSelection) => {\n setUserColumnSelection(newSelection);\n setUserColumnIsDirty(true);\n }}\n userColumnSorting={userColumnSorting}\n onUserColumnSortingChange={(newSorting) => {\n setUserColumnSorting(newSorting);\n setUserColumnIsDirty(true);\n }}\n userEditableColumns={userEditableColumns}\n onUserEditableColumnsChange={(newEditableColumns) => {\n setUserEditableColumns(newEditableColumns);\n setUserColumnIsDirty(true);\n }}\n customColumns={customPurchaseColumns}\n onCustomColumnsChange={setCustomPurchaseColumns}\n reportingTags={tagsMetadata ?? []}\n enableConfigureEditability\n sectionType={sectionType}\n showTicketClassColor={showTicketClassColor}\n viewMode={viewMode}\n />\n \n \n \n \n \n \n );\n}\n","import { ReactNode, useEffect } from 'react';\nimport {\n NO_GROUP_ID,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { Stack } from 'src/core/ui';\nimport { PurchaseOrderTable } from 'src/tables/PurchaseTable';\nimport { PurchaseOrderTableProps } from 'src/tables/PurchaseTable/PurchaseTable.types';\nimport {\n PurchaseOrderTicketGroup,\n PurchaseViewMode,\n} from 'src/WebApiController';\n\ntype PurchaseFlattenedViewProps = {\n before?: ReactNode;\n topListItemBefore?: ReactNode;\n} & Pick<\n PurchaseOrderTableProps,\n | 'alwaysShowCheckbox'\n | 'showSelectAllOnHeader'\n | 'enableColumnFilters'\n | 'ignoreMaxCount'\n>;\n\nexport const PurchaseFlattenedView = ({\n before,\n topListItemBefore,\n ...rest\n}: PurchaseFlattenedViewProps) => {\n const { allPurchasesQuery, allPurchasesFiltered, purchaseCount } =\n usePurchaseDataContext();\n const { setAllGroupsIds } = useMultiSelectionContext();\n\n useEffect(() => {\n setAllGroupsIds([NO_GROUP_ID]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {before}\n {topListItemBefore}\n p as PurchaseOrderTicketGroup\n )}\n getDataFail={Boolean(allPurchasesQuery.error)}\n isItemsLoading={allPurchasesQuery.isLoading}\n viewMode={PurchaseViewMode.FlattenedView}\n />\n \n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const PurchaseToolbarDiv = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid ${(props) => props.theme.colors.borderPrimary};\n padding: ${() =>\n `${vars.spacing.sm} ${vars.spacing.lg} ${vars.spacing.sm} ${vars.spacing.m}`};\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `padding: ${vars.spacing.sm} ${vars.spacing['3xl']} ${vars.spacing.sm} ${vars.spacing.xl};`\n )}`}\n\n .add-purchase {\n white-space: nowrap;\n width: fit-content;\n }\n`;\n\nexport const FilterBarLeftSide = styled.div`\n display: flex;\n flex-grow: 1;\n align-items: center;\n gap: ${() => vars.spacing.sm};\n\n > div {\n flex-grow: 1;\n }\n`;\n\nexport const FilterBarRightSide = styled.div`\n display: flex;\n align-items: center;\n padding-inline-start: ${() => vars.spacing.sm};\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `padding-inline-start: ${vars.spacing.lg};`\n )}`}\n`;\n","import { MouseEvent, useContext } from 'react';\nimport { useToggle } from 'react-use';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { usePurchaseDataContext } from 'src/contexts/PurchaseDataContext';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { LaunchBulkUploadPurchaseDialog } from 'src/dialogs/BulkEdits/BulkUploadPurchaseDialog';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { MessagesAddSourceModal } from 'src/modals/MessagesAddSourceModal/MessagesAddSourceModal';\nimport { PurchaseWizardModalConfig } from 'src/modals/PurchaseWizard/PurchaseWizardModalConfig';\nimport { LayoutIcon } from 'src/svgs';\nimport { IconsFill, SettingsIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n PURCHASE_SORT_TO_CID,\n TIME_PERIOD_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport {\n EventUiSort,\n getEventSort,\n getEventUiSort,\n} from 'src/utils/eventQueryUtils';\nimport {\n EventSort,\n Permission,\n PurchaseOrderQuery,\n PurchaseViewMode,\n TimePeriodType,\n} from 'src/WebApiController';\n\nimport * as styles from './PurchaseToolbar.css';\nimport {\n FilterBarLeftSide,\n FilterBarRightSide,\n PurchaseToolbarDiv,\n} from './PurchaseToolbar.styled';\n\nexport type PurchaseToolbarType = {\n disabled?: boolean;\n viewMode?: PurchaseViewMode | null;\n onColumnSettingButtonClickHandler?: (\n e: MouseEvent\n ) => void;\n};\n\nexport function PurchaseToolbar({\n viewMode,\n onColumnSettingButtonClickHandler,\n disabled,\n}: PurchaseToolbarType) {\n const { setActivePosEntity } = useActivePosEntityContext();\n const [isAddSourceModalOpen, setIsAddSourceModalOpen] = useToggle(false);\n const { filterQuery, setFilterQuery } =\n useFilterQueryContext();\n const { setModal } = useContext(ModalContext);\n\n const { purchaseGroupTimePeriod, setPurchaseGroupTimePeriod } =\n usePurchaseDataContext();\n\n const onAddPurchase = () => {\n setActivePosEntity(0);\n setModal(PurchaseWizardModalConfig);\n };\n\n const onCloseAddSourceModal = () => {\n setIsAddSourceModalOpen(false);\n };\n\n const hasCreatePermission = useUserHasAnyOfPermissions(\n Permission.Purchases_Create\n );\n\n return (\n \n \n {hasCreatePermission && (\n <>\n \n \n \n\n \n\n \n\n \n \n )}\n \n \n {viewMode === PurchaseViewMode.FlattenedView && (\n \n \n \n \n )}\n\n {\n if (!tp) return;\n setPurchaseGroupTimePeriod(tp);\n }}\n valueOptionsContent={TIME_PERIOD_TO_CID}\n style={{ marginRight: '12px' }}\n />\n\n {viewMode !== PurchaseViewMode.EventTileView && (\n {\n const [, isSortDescending] = getEventSort(sort);\n if (isSortDescending !== filterQuery?.isSortDescending) {\n setFilterQuery({\n ...(filterQuery ?? {}),\n isSortDescending,\n });\n }\n }}\n valueOptionsContent={PURCHASE_SORT_TO_CID}\n />\n )}\n \n \n );\n}\n","import { MouseEvent, useCallback, useEffect, useMemo } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useToggle } from 'react-use';\nimport { PurchaseDatesAccordion } from 'src/components/Accordions/PurchaseDatesAccordion';\nimport {\n TicketGroupsEventsAccordion,\n translateEventToTicketGroupAccordionItem,\n} from 'src/components/Accordions/TicketGroupsEventsAccordion';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { MultiSelectActionBar } from 'src/components/common/MultiSelect/MultiSelectActionBar';\nimport { MainFilterBar } from 'src/components/MainFilterBar';\nimport { PurchasesGlobalBulkActions } from 'src/components/Purchases/BulkActions/PurchasesGlobalBulkActions/PurchasesGlobalBulkActions';\nimport { PurchaseGlobalActionsPermissionsWrapper } from 'src/components/Purchases/PurchaseFilterBar/PurchaseGlobalActionsPermissionsWrapper';\nimport { PurchaseSearchBox } from 'src/components/Purchases/PurchaseFilterBar/PurchaseSearchBox';\nimport {\n SetPurchasesAccordionSelectionCountLabel,\n SetPurchasesFlattenedViewSelectionCountLabel,\n SetPurchasesTimeViewSelectionCountLabel,\n} from 'src/components/Purchases/SelectedItemsLabel';\nimport { ActivePosEntityProvider } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n CatalogDataContextProvider,\n useCatalogDataContext,\n} from 'src/contexts/CatalogDataContext';\nimport { CatalogMetricsContextProvider } from 'src/contexts/CatalogMetricsContext';\nimport { CatalogMultiSelectionContextProvider } from 'src/contexts/CatalogMultiSelectionContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport {\n FilterQueryContextProvider,\n useFilterQueryContext,\n} from 'src/contexts/FilterQueryContext';\nimport {\n MultiSelectionContextProvider,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport {\n PurchaseDataContextProvider,\n usePurchaseDataContext,\n} from 'src/contexts/PurchaseDataContext';\nimport { SellerUserSettingsProvider } from 'src/contexts/SellerUserSettingsContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { PurchaseColumnSettingsModal } from 'src/modals/ColumnSettings/PurchaseColumnSettings';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { LayoutIcon } from 'src/svgs';\nimport { SearchSolidIcon } from 'src/svgs/Viagogo';\nimport { createPurchaseSearchPageUrl } from 'src/utils/advancedSearchUtils';\nimport { MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n DefaultPurchaseQuery,\n EmptyPurchaseQuery,\n} from 'src/utils/eventQueryUtils';\nimport { transformData } from 'src/utils/eventWithDataUtils';\nimport {\n getCatalogData,\n getCatalogDataExpanded,\n getCatalogMetrics,\n PURCHASE_USER_SETTINGS,\n purchaseQueryValueTransformFromUrl,\n purchaseQueryValueTransformToUrl,\n} from 'src/utils/purchaseUtils';\nimport { addTicketGroupMetrics } from 'src/utils/ticketMetricUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { SomethingWentWrong } from 'src/views';\nimport {\n ActionOutboxEntityType,\n Feature,\n PurchaseClient,\n PurchaseOrderDetails,\n PurchaseOrderQuery,\n PurchaseViewMode,\n TicketGroupMetrics,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { MainRoute } from '../MainRoute';\nimport { PurchaseFlattenedView } from './PurchaseFlattenedView';\nimport * as styles from './Purchases.css';\nimport { PurchaseToolbar } from './PurchaseToolbar';\n\nexport function Purchases() {\n return (\n \n \n initialQuery={DefaultPurchaseQuery}\n viewModeSettingId={UserSetting.PurchasePageViewMode}\n emptyQuery={EmptyPurchaseQuery}\n queryValueTransformToUrl={purchaseQueryValueTransformToUrl}\n queryValueTransformFromUrl={purchaseQueryValueTransformFromUrl}\n saveQueryInUrl\n >\n \n \n \n );\n}\n\nfunction PurchasePage() {\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { filterQuery } = useFilterQueryContext();\n\n const getCatalogDataExpandedCallback = useCallback(\n (viagVirtualIds: string[], transformedFilterQuery: PurchaseOrderQuery) => {\n if (filterQuery.viewMode !== PurchaseViewMode.EventTileView) {\n return Promise.resolve({});\n }\n\n return getCatalogDataExpanded(viagVirtualIds, transformedFilterQuery, {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError('PurchaseClient.getTicketGroupsForEvents', error, {\n ...transformedFilterQuery,\n eventIds: viagVirtualIds,\n });\n },\n });\n },\n [activeAccountWebClientConfig, filterQuery.viewMode, trackError]\n );\n\n const hasMetricsV2Feature = useUserHasFeature(Feature.CatalogMetricsV2);\n\n return (\n \n entityType={ActionOutboxEntityType.Purchase}\n queryKey=\"getCatalogForPurchaseOrders\"\n getCatalogData={(c, f) => getCatalogData(c, f, true)}\n getCatalogDataExpanded={getCatalogDataExpandedCallback}\n transformEventData={transformData}\n >\n \n \n \n \n queryKey=\"getCatalogTicketGroupMetrics\"\n entityType={ActionOutboxEntityType.Purchase}\n getCatalogMetrics={(c, f, r) =>\n getCatalogMetrics(c, f, r, hasMetricsV2Feature)\n }\n addCatalogMetrics={addTicketGroupMetrics}\n disabled={filterQuery.viewMode !== PurchaseViewMode.EventTileView}\n >\n \n \n \n \n \n \n );\n}\n\nfunction PurchasesContent() {\n const purchasesTitle = useContent(ContentId.Purchases);\n const { filterQuery, isQueryInitialized } =\n useFilterQueryContext();\n\n const { activeAccountWebClientConfig } = useAppContext();\n\n const {\n eventsTransformed,\n isLoading: isCatalogDataLoading,\n eventsExpansion: { expandedListItems, toggleListItemExpansion },\n } = useCatalogDataContext();\n const onTicketGroupsEventExpanded = useCallback(\n async (viagVirtualId: string) => {\n toggleListItemExpansion([viagVirtualId]);\n },\n [toggleListItemExpansion]\n );\n\n const {\n timePeriodPurchasesQuery,\n allPurchasesQuery,\n purchaseCount,\n errorInfo,\n selectedIds,\n onSelect,\n scrollToId,\n setScrollToId,\n onSetActivePurchaseOrderCallback,\n } = usePurchaseDataContext();\n\n const isMobile = useMatchMedia('mobile');\n\n const [isColumnModalOpen, toggleColumnModal] = useToggle(false);\n\n const onColumnSettingButtonClickHandler = (\n e: MouseEvent\n ) => {\n e.stopPropagation();\n if (!isColumnModalOpen) toggleColumnModal(true);\n };\n\n const getActivePosEntity = useCallback(\n async (purchaseId: number) => {\n const purchaseDetails = await new PurchaseClient(\n activeAccountWebClientConfig\n ).getPurchaseOrderByPurchaseOrderId(purchaseId, false);\n if (purchaseDetails) {\n return {\n posEntityId: purchaseDetails.id,\n posEntity: purchaseDetails,\n event: null,\n posEntityDisplayId: purchaseDetails.id.toString(),\n };\n }\n\n return {};\n },\n [activeAccountWebClientConfig]\n );\n\n const ticketGroupItems = useMemo(() => {\n // Don't transform events if they are not used in the current view mode\n if (\n !filterQuery.viewMode ||\n filterQuery.viewMode !== PurchaseViewMode.EventTileView\n ) {\n return [];\n }\n // Only for PurchaseViewMode.EventTileView\n return (\n eventsTransformed?.map((e, i) =>\n translateEventToTicketGroupAccordionItem(e, i)\n ) || []\n );\n }, [eventsTransformed, filterQuery.viewMode]);\n\n const { clearShiftKeySelection, setSelectionMode } =\n useMultiSelectionContext();\n\n useEffect(() => {\n clearShiftKeySelection();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filterQuery.viewMode]);\n\n const dataIsLoading =\n !isQueryInitialized ||\n filterQuery.viewMode === PurchaseViewMode.EventTileView\n ? isCatalogDataLoading || eventsTransformed == null\n : filterQuery.viewMode === PurchaseViewMode.FlattenedView\n ? isCatalogDataLoading ||\n eventsTransformed == null ||\n allPurchasesQuery.isLoading\n : timePeriodPurchasesQuery.isLoading ||\n timePeriodPurchasesQuery.data == null;\n\n const hasData =\n filterQuery.viewMode === PurchaseViewMode.EventTileView\n ? ticketGroupItems.length\n : filterQuery.viewMode === PurchaseViewMode.FlattenedView\n ? purchaseCount > MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS ||\n allPurchasesQuery.data?.length\n : timePeriodPurchasesQuery.data?.length;\n\n // Reset and close selection mode when changing view\n useEffect(() => {\n setSelectionMode();\n }, [filterQuery.viewMode, setSelectionMode]);\n\n const hasNewSearchFeature = useUserHasFeature(Feature.SearchView_Purchase);\n const navigate = useNavigate();\n\n const onAdvancePurchaseSearch = useCallback(() => {\n const searchUrl = createPurchaseSearchPageUrl();\n\n setTimeout(() => {\n navigate(searchUrl, {\n state: {\n returnUrl: `${location.pathname}${location.search}`,\n },\n });\n }, 10);\n }, [navigate]);\n\n return (\n \n entityType={ActionOutboxEntityType.Purchase}\n getActivePosEntity={getActivePosEntity}\n onSetActiveItemCompleteCallback={onSetActivePurchaseOrderCallback}\n >\n \n \n \n \n \n )\n }\n >\n \n
    \n {dataIsLoading && }\n {errorInfo && (\n \n )\n }\n />\n )}\n {!dataIsLoading && !errorInfo && (\n <>\n {!isMobile && (\n \n )}\n {hasData ? (\n filterQuery.viewMode === PurchaseViewMode.FlattenedView ? (\n \n \n \n \n \n \n \n }\n enableColumnFilters\n />\n ) : filterQuery.viewMode ===\n PurchaseViewMode.EventTileView ? (\n \n \n \n \n \n \n \n }\n disablePagination\n items={ticketGroupItems}\n selectedIds={expandedListItems}\n onSelect={onTicketGroupsEventExpanded}\n tableActions={\n \n \n \n \n }\n />\n ) : (\n \n \n \n \n \n \n \n }\n selectedIds={selectedIds}\n onSelect={onSelect}\n items={timePeriodPurchasesQuery.data ?? []}\n scrollToId={scrollToId}\n onScroll={() => {\n if (scrollToId) setScrollToId(undefined);\n }}\n tableActions={\n \n \n \n \n }\n />\n )\n ) : (\n \n \n \n }\n >\n \n \n \n \n \n \n \n )}\n {isColumnModalOpen ? (\n \n ) : null}\n \n )}\n
    \n \n
    \n \n );\n}\n","import * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { Content } from 'src/contexts/ContentContext';\nimport { SearchSolidIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\ninterface NoResultsFoundProps {\n detailMessage?: ContentId;\n}\n\nexport const PosNoResultsFound = ({ detailMessage }: NoResultsFoundProps) => {\n return (\n \n \n \n }\n >\n \n \n \n {detailMessage && (\n \n \n \n )}\n \n );\n};\n","import { EntitySearchFilterBar } from 'src/components/EntitySearch';\nimport { FilterDropdownItem } from 'src/components/Filters';\nimport { usePurchaseFilters } from 'src/components/MainFilterBar/usePurchaseFilters';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n Feature,\n PurchaseOrderQuery,\n PurchaseSearchResult,\n} from 'src/WebApiController';\n\nexport const PurchaseSearchFilterBar = (props: {\n activeSearchConfig?: PurchaseSearchResult;\n onSubmitFilter?: (query: PurchaseOrderQuery) => void;\n selectedFilters?: FilterDropdownItem[];\n setSelectedFilters: (sf: FilterDropdownItem[]) => void;\n}) => {\n const hasPurchaseCommissionFilterInSearchViewFeature = useUserHasFeature(\n Feature.PurchaseCommissionFilterInSearchView\n );\n const hasConsignmentFilterPurchaseSearchViewFeature = useUserHasFeature(\n Feature.ConsignmentFilterPurchaseSearchView\n );\n const hasConsignmentDealFeature = useUserHasFeature(Feature.ConsignmentDeal);\n\n const filters = usePurchaseFilters({\n isHorizontalLayout: true,\n showCommissionerFilter: hasPurchaseCommissionFilterInSearchViewFeature,\n showConsignmentFilter:\n hasConsignmentDealFeature &&\n hasConsignmentFilterPurchaseSearchViewFeature,\n showCatalogFilters: true,\n });\n\n return (\n \n );\n};\n","import { MouseEvent } from 'react';\nimport { useToggle } from 'react-use';\nimport { MultiSelectActionBar } from 'src/components/common/MultiSelect/MultiSelectActionBar';\nimport { PurchasesGlobalBulkActions } from 'src/components/Purchases/BulkActions/PurchasesGlobalBulkActions/PurchasesGlobalBulkActions';\nimport { PurchaseGlobalActionsPermissionsWrapper } from 'src/components/Purchases/PurchaseFilterBar/PurchaseGlobalActionsPermissionsWrapper';\nimport { SetPurchasesFlattenedViewSelectionCountLabel } from 'src/components/Purchases/SelectedItemsLabel';\nimport { Content } from 'src/contexts/ContentContext';\nimport { NO_GROUP_ID } from 'src/contexts/MultiSelectionContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { PurchaseColumnSettingsModal } from 'src/modals/ColumnSettings/PurchaseColumnSettings';\nimport { LayoutIcon } from 'src/svgs';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { PurchaseViewMode } from 'src/WebApiController';\n\nimport { container } from './PurchaseSearchToolbar.css';\n\nexport const PurchaseSearchToolbar = ({ disabled }: { disabled?: boolean }) => {\n const [isColumnModalOpen, toggleColumnModal] = useToggle(false);\n\n const onColumnSettingButtonClickHandler = (\n e: MouseEvent\n ) => {\n e.stopPropagation();\n if (!isColumnModalOpen) toggleColumnModal(true);\n };\n\n return (\n \n
    \n \n \n {!disabled && (\n \n \n \n )}\n \n \n
    \n\n \n \n \n \n\n {isColumnModalOpen ? (\n \n ) : null}\n \n );\n};\n","import { useCallback, useMemo, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n EntitySearchConfigsToolbar,\n EntitySearchRefetcher,\n useEntitySearch,\n} from 'src/components/EntitySearch';\nimport { PurchaseSearchBox } from 'src/components/Purchases/PurchaseFilterBar/PurchaseSearchBox';\nimport { ActivePosEntityProvider } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n CatalogDataContextProvider,\n useCatalogDataContext,\n} from 'src/contexts/CatalogDataContext';\nimport { CatalogMultiSelectionContextProvider } from 'src/contexts/CatalogMultiSelectionContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport {\n FilterQueryContextProvider,\n useFilterQueryContext,\n} from 'src/contexts/FilterQueryContext';\nimport {\n MultiSelectionContextProvider,\n MultiSelectScope,\n NO_GROUP_ID,\n} from 'src/contexts/MultiSelectionContext';\nimport {\n PurchaseDataContextProvider,\n usePurchaseDataContext,\n} from 'src/contexts/PurchaseDataContext';\nimport { SellerUserSettingsProvider } from 'src/contexts/SellerUserSettingsContext';\nimport { PosNoResultsFound } from 'src/core/POS/PosNoResultsFound';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { DividerLine } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { PurchaseDeeplinkQueryParam } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { removeDeepLinkUrlPartsFromRelativeUrl } from 'src/utils/deepLinkUtils';\nimport {\n DefaultPurchaseQuery,\n EmptyPurchaseQuery,\n} from 'src/utils/eventQueryUtils';\nimport { transformData } from 'src/utils/eventWithDataUtils';\nimport {\n getCatalogData,\n PURCHASE_USER_SETTINGS,\n purchaseQueryValueTransformFromUrl,\n purchaseQueryValueTransformToUrl,\n} from 'src/utils/purchaseUtils';\nimport { EventPageLocationState } from 'src/utils/types/EventPageLocationState';\nimport { SomethingWentWrong } from 'src/views';\nimport {\n ActionOutboxEntityType,\n CatalogClient,\n CatalogResults,\n Feature,\n PurchaseClient,\n PurchaseOrderDetails,\n PurchaseOrderQuery,\n PurchaseSearchResult,\n PurchaseViewMode,\n} from 'src/WebApiController';\n\nimport { getDefaultReturnUrl } from '../InventoryEvent/constants';\nimport {\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n TAB_EVENT_IDS_2_QUERY_PARAM,\n TAB_EVENT_IDS_QUERY_PARAM,\n} from '../InventoryEvent/InventoryEvent.constants';\nimport { MainRoute } from '../MainRoute';\nimport { PurchaseFlattenedView } from '../Purchases/PurchaseFlattenedView';\nimport * as styles from './PurchaseSearch.css';\nimport { PurchaseSearchFilterBar } from './PurchaseSearchFilterBar';\nimport { PurchaseSearchToolbar } from './PurchaseSearchToolbar';\n\nexport function PurchaseSearch() {\n return (\n \n \n initialQuery={{\n ...DefaultPurchaseQuery,\n viewMode: PurchaseViewMode.FlattenedView,\n }}\n emptyQuery={EmptyPurchaseQuery}\n queryValueTransformToUrl={purchaseQueryValueTransformToUrl}\n queryValueTransformFromUrl={purchaseQueryValueTransformFromUrl}\n saveQueryInUrl\n >\n \n \n \n );\n}\n\nfunction PurchaseSearchPage() {\n const [activeSearchConfig, setActiveSearchConfig] =\n useState();\n\n const getCatalogDataExpandedCallback = useCallback(\n (_1: string[], _2: PurchaseOrderQuery) => {\n return Promise.resolve({});\n },\n []\n );\n\n const getCatalogDataCallback = useCallback(\n async (c: CatalogClient, f: PurchaseOrderQuery) => {\n // Check to see if if is empty filter, query\n if (\n f.searchConfigId &&\n !f.entityIds?.length // we don't want to query when the filter has the search config id but no entity ids\n ) {\n // If there is no filter (empty query) then don't try to query for anything\n return {\n events: {},\n performers: {},\n venues: {},\n venueCfgs: {},\n } as CatalogResults;\n }\n\n return await getCatalogData(c, f, true);\n },\n []\n );\n\n const { filterQuery } = useFilterQueryContext();\n\n // If we're querying by ids - we want to get the latest greatest\n // We're only using readonly-db if we're filtering\n const useReadonlyDB = filterQuery.entityIds?.length ? false : true;\n\n return (\n \n entityType={ActionOutboxEntityType.Purchase}\n queryKey=\"getCatalogForPurchaseOrders\"\n getCatalogData={getCatalogDataCallback}\n getCatalogDataExpanded={getCatalogDataExpandedCallback}\n transformEventData={transformData}\n disableAutoRefresh\n ignoreMaxCount\n >\n \n \n \n \n \n \n \n \n );\n}\n\nfunction PurchaseSearchContent({\n activeSearchConfig,\n setActiveSearchConfig,\n}: {\n activeSearchConfig: PurchaseSearchResult | undefined;\n setActiveSearchConfig: (a: PurchaseSearchResult | undefined) => void;\n}) {\n const purchaseSearchTitle = useContent(ContentId.SearchPurchases);\n\n const { activeAccountWebClientConfig } = useAppContext();\n const location = useLocation();\n const { isLoading: isCatalogDataLoading } = useCatalogDataContext();\n\n const {\n selectedFilters,\n setSelectedFilters,\n onSetActiveSearchConfig,\n onSaveSearchResult,\n onDeleteSearchResult,\n onRequeryForTheResult,\n refetchData,\n disabled,\n setDisabled,\n } = useEntitySearch(\n activeSearchConfig,\n setActiveSearchConfig,\n PurchaseViewMode.FlattenedView,\n (client, id) => client.getPurchaseSearchResult(id),\n (client, r) => client.savePurchaseSearchResult(r)\n );\n\n const hasColumnFilterSearchViewFeature = useUserHasFeature(\n Feature.ColumnFilterSearchView\n );\n\n // Only use value provided at the first time (should be from '/purchases')\n const returnUrl = useMemo(() => {\n const locationState = (location.state ?? {}) as EventPageLocationState;\n\n if (locationState.returnUrl && locationState.keepReturnUrlUnchanged) {\n return locationState.returnUrl;\n }\n\n const relativeUrl =\n locationState.returnUrl || getDefaultReturnUrl('purchases');\n\n return removeDeepLinkUrlPartsFromRelativeUrl(relativeUrl, [\n PurchaseDeeplinkQueryParam,\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n TAB_EVENT_IDS_QUERY_PARAM,\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n TAB_EVENT_IDS_2_QUERY_PARAM,\n ]);\n }, [location.state]);\n\n const {\n allPurchasesQuery,\n errorInfo,\n onSetActivePurchaseOrderCallback,\n allPurchasesFiltered,\n } = usePurchaseDataContext();\n\n const hasPurchasesResults = (allPurchasesFiltered ?? []).length > 0;\n\n const getActivePosEntity = useCallback(\n async (purchaseId: number) => {\n const purchaseDetails = await new PurchaseClient(\n activeAccountWebClientConfig\n ).getPurchaseOrderByPurchaseOrderId(purchaseId, false);\n if (purchaseDetails) {\n return {\n posEntityId: purchaseDetails.id,\n posEntity: purchaseDetails,\n event: null,\n posEntityDisplayId: purchaseDetails.id.toString(),\n };\n }\n\n return {};\n },\n [activeAccountWebClientConfig]\n );\n\n const dataIsLoading = isCatalogDataLoading;\n\n return (\n \n entityType={ActionOutboxEntityType.Purchase}\n getActivePosEntity={getActivePosEntity}\n onSetActiveItemCompleteCallback={onSetActivePurchaseOrderCallback}\n >\n \n \n }\n >\n \n client.getPurchaseSearchConfigs(includeAllUser)\n }\n getSearchResult={(client, id) => client.getPurchaseSearchResult(id)}\n additionalActions={}\n />\n \n {\n if (!activeSearchConfig) {\n // Setting an empty search config so it starts to filter\n onSetActiveSearchConfig({\n id: null,\n name: null,\n query: filter,\n ownerUserId: null,\n count: null,\n entityIds: null,\n lastFetchDate: null,\n });\n }\n refetchData(filter, allPurchasesQuery.refetch);\n }}\n />\n \n \n \n
    \n {errorInfo && (\n \n )\n }\n />\n )}\n {(dataIsLoading || allPurchasesQuery.isLoading) &&\n !allPurchasesFiltered?.length ? (\n \n ) : (\n !errorInfo && (\n <>\n {hasPurchasesResults ? (\n \n ) : (\n \n )}\n \n )\n )}\n
    \n \n
    \n \n );\n}\n","import { useEffect, useState } from 'react';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { Button } from 'src/core/ui';\nimport { MainNavTopBarEmpty } from 'src/navigations/MainNav/MainNavTopBar';\nimport { REACT_APP_STUBHUB_UK_URL } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\n\nimport * as styles from './RedirectToStubHubUk.css';\n\nexport const RedirectToStubHubUk = () => {\n const [curSecond, setCurSecond] = useState(10); // 10 seconds\n useEffect(() => {\n if (curSecond <= 0) {\n window.location.href = REACT_APP_STUBHUB_UK_URL!;\n }\n const timer = setTimeout(() => {\n setCurSecond(curSecond - 1);\n }, 1000);\n\n // Clear timeout if the component is unmounted\n return () => clearTimeout(timer);\n });\n\n return (\n <>\n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n (window.location.href = REACT_APP_STUBHUB_UK_URL!)}\n >\n \n \n
    \n
    \n \n );\n};\n","import { ReportGroupBy } from 'src/WebApiController';\n\nimport {\n GROUP_BY_TO_PRIMARY_COLUMN_ID,\n GROUP_BY_TO_VISIBLE_COLUMN_IDS,\n NON_METRIC_LISTING_REPORT_TABLE_COLUMN_IDS,\n} from './inventoryColumnUtils.constants';\nimport { ListingReportTableColumnId } from './inventoryColumnUtils.types';\n\nexport const isMetricConfigurableByGroupBy = (\n id: string,\n groupBy?: ReportGroupBy\n) => {\n if (!groupBy) {\n return true;\n }\n\n if (GROUP_BY_TO_PRIMARY_COLUMN_ID[groupBy] === id) return true;\n\n if (\n !NON_METRIC_LISTING_REPORT_TABLE_COLUMN_IDS.includes(\n id as ListingReportTableColumnId\n )\n )\n return true;\n\n if (\n GROUP_BY_TO_VISIBLE_COLUMN_IDS[groupBy]?.includes(\n id as ListingReportTableColumnId\n )\n ) {\n return true;\n }\n return false;\n};\n","import { ReportGroupBy } from 'src/WebApiController';\n\nimport { SalesReportTableColumnId } from './salesColumnUtils.types';\nimport {\n GROUP_BY_TO_PRIMARY_COLUMN_ID,\n GROUP_BY_TO_VISIBLE_COLUMN_IDS,\n NON_METRIC_SALES_REPORT_TABLE_COLUMN_IDS,\n} from './salesReportColumnUtils.constants';\n\nexport const isMetricConfigurableByGroupBy = (\n id: string,\n groupBy?: ReportGroupBy\n) => {\n if (!groupBy) {\n return true;\n }\n\n if (GROUP_BY_TO_PRIMARY_COLUMN_ID[groupBy] === id) return true;\n\n if (\n !NON_METRIC_SALES_REPORT_TABLE_COLUMN_IDS.includes(\n id as SalesReportTableColumnId\n )\n )\n return true;\n\n if (\n GROUP_BY_TO_VISIBLE_COLUMN_IDS[groupBy]?.includes(\n id as SalesReportTableColumnId\n )\n ) {\n return true;\n }\n return false;\n};\n","import { useCallback, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ReportConfig } from 'src/hooks/useReportConfigs';\nimport { LISTING_REPORT_TABLE_COLUMNS_CONFIG } from 'src/tables/ListingTable/configs/ListingReportTableColumnsConfig';\nimport { SALE_REPORT_TABLE_COLUMNS_CONFIG } from 'src/tables/SalesTable/configs/SaleReportTableColumnsConfig';\nimport { isMetricConfigurableByGroupBy as isListingMetricConfigurableByGroupBy } from 'src/utils/columns/inventory/inventoryColumnUtils';\nimport { GROUP_BY_TO_PRIMARY_COLUMN_ID as GROUP_BY_TO_PRIMARY_COLUMN_ID_LISTING } from 'src/utils/columns/inventory/inventoryColumnUtils.constants';\nimport { isMetricConfigurableByGroupBy as isSaleMetricConfigurableByGroupBy } from 'src/utils/columns/sales/salesColumnUtils';\nimport { GROUP_BY_TO_PRIMARY_COLUMN_ID as GROUP_BY_TO_PRIMARY_COLUMN_ID_SALES } from 'src/utils/columns/sales/salesReportColumnUtils.constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ReportTypes } from 'src/utils/reportsUtils';\nimport { ReportGroupBy } from 'src/WebApiController';\n\ninterface GroupBySelectorProps {\n options: Record;\n reportType: ReportTypes;\n metricsFiltered: string[];\n}\n\nexport const GroupBySelector = ({\n options,\n reportType,\n metricsFiltered = [],\n}: GroupBySelectorProps) => {\n const [newGroupBy, setNewGroupBy] = useState();\n const { watch, clearErrors, setValue } = useFormContext();\n const changeGroupByConfirmDialog = useBasicDialog();\n\n const groupBy = watch('groupBy');\n const metrics = watch('metrics');\n\n const filterColumnByGroupBy = useCallback(\n (columnId: string, groupBy: ReportGroupBy) => {\n if (reportType === ReportTypes.Inventory) {\n return isListingMetricConfigurableByGroupBy(columnId, groupBy);\n } else if (reportType === ReportTypes.Sale) {\n return isSaleMetricConfigurableByGroupBy(columnId, groupBy);\n }\n\n return true;\n },\n [reportType]\n );\n\n const updateGroupBy = useCallback(\n (newGroupBy: ReportGroupBy) => {\n clearErrors('groupBy');\n setValue('groupBy', newGroupBy);\n\n // Bring the primary columns to the front if they are not already there\n const GROUP_BY_TO_PRIMARY_COLUMN_ID =\n reportType === ReportTypes.Inventory\n ? GROUP_BY_TO_PRIMARY_COLUMN_ID_LISTING\n : GROUP_BY_TO_PRIMARY_COLUMN_ID_SALES;\n const primaryColumnId = GROUP_BY_TO_PRIMARY_COLUMN_ID[newGroupBy];\n\n if (!primaryColumnId || metrics.includes(primaryColumnId)) {\n return;\n }\n\n setValue('metrics', [primaryColumnId, ...metrics]);\n },\n [clearErrors, metrics, reportType, setValue]\n );\n\n const onTileClick = useCallback(\n (newGrpType: ReportGroupBy) => {\n if (newGrpType && newGrpType !== groupBy) {\n const presetColumnIdsUnfiltered = Object.values(\n reportType === ReportTypes.Inventory\n ? LISTING_REPORT_TABLE_COLUMNS_CONFIG\n : SALE_REPORT_TABLE_COLUMNS_CONFIG\n ).map((i) => i.id);\n\n const presetColumnIdsBeforeChange = presetColumnIdsUnfiltered.filter(\n (id) =>\n metricsFiltered.includes(id) && filterColumnByGroupBy(id, groupBy)\n );\n const presetColumnIdsAfterChange = presetColumnIdsUnfiltered.filter(\n (id) =>\n metricsFiltered.includes(id) &&\n filterColumnByGroupBy(id, newGrpType)\n );\n\n if (\n presetColumnIdsAfterChange.length < presetColumnIdsBeforeChange.length\n ) {\n setNewGroupBy(newGrpType);\n changeGroupByConfirmDialog.launchDialog();\n return;\n }\n\n updateGroupBy(newGrpType);\n }\n },\n [\n changeGroupByConfirmDialog,\n filterColumnByGroupBy,\n groupBy,\n metricsFiltered,\n reportType,\n updateGroupBy,\n ]\n );\n\n const onChangeGroupByConfirm = useCallback(() => {\n if (newGroupBy) {\n updateGroupBy(newGroupBy);\n setNewGroupBy(undefined);\n }\n changeGroupByConfirmDialog.closeDialog();\n }, [changeGroupByConfirmDialog, newGroupBy, updateGroupBy]);\n\n return (\n <>\n {\n onTileClick(value as ReportGroupBy);\n }}\n valueOptionsContent={options}\n placeholderText={'Placeholder'}\n />\n }\n bodyText={}\n onOkay={onChangeGroupByConfirm}\n onCancel={() => changeGroupByConfirmDialog.closeDialog()}\n />\n \n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport {\n FormatOptionEntries,\n FormatOptionPill,\n LISTING_TABLE_COLUMN_DEFAULT_PRECISION,\n SALE_TABLE_COLUMN_DEFAULT_PRECISION,\n} from 'src/modals/EditTableColumns';\nimport { LISTING_REPORT_TABLE_COLUMNS_CONFIG } from 'src/tables/ListingTable/configs/ListingReportTableColumnsConfig';\nimport { getListingTableColumnConfigs } from 'src/tables/ListingTable/configs/ListingTableColumnsConfig';\nimport { LISTING_TABLE_FLATTENED_COLUMNS_CONFIG } from 'src/tables/ListingTable/configs/ListingTableFlattenedColumnsConfig';\nimport { PURCHASE_TABLE_COLUMNS_CONFIG } from 'src/tables/PurchaseTable/configs/PurchaseTableColumnsConfig';\nimport { SALE_REPORT_TABLE_COLUMNS_CONFIG } from 'src/tables/SalesTable/configs/SaleReportTableColumnsConfig';\nimport { SALE_TABLE_FLATTENED_COLUMNS_CONFIG } from 'src/tables/SalesTable/configs/SaleTableFlattenedColumnsConfig';\nimport {\n getListingColumnConfigById,\n getListingReportColumnConfigById,\n getPurchasesColumnConfigById,\n getSaleColumnConfigById,\n getSaleReportColumnConfigById,\n} from 'src/utils/columns/columnUtils';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { CustomPurchasesColumn } from 'src/utils/columns/purchases/purchasesCustomColumnUtils.types';\nimport { CustomSalesColumn } from 'src/utils/columns/sales/salesCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport {\n ActionOutboxEntityType,\n Feature,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { SALE_TABLE_COLUMNS_CONFIG } from '../../tables/SalesTable/configs/SaleTableColumnsConfig';\nimport { ColumnsSection } from './ColumnsSection';\nimport * as styles from './TableColumns.css';\n\ntype TableColumnsDisplayProps = {\n items: string[];\n sectionType?: SectionType;\n tableType: 'inventory' | 'sales';\n};\n\nexport const TableColumnsDisplay = ({\n items,\n sectionType = SectionType.Listings,\n tableType,\n}: TableColumnsDisplayProps) => {\n const hasSortListingsInGroupFeature = useUserHasFeature(\n Feature.SortListingsInGroup\n );\n const hasSectionalLoadInListingTableFeature = useUserHasFeature(\n Feature.SectionalLoadInListingTable\n );\n const { value: storedColumnNumberPrecisions = {} } =\n useServerUserSetting({\n id:\n tableType === 'inventory'\n ? UserSetting.InventoryColumnNumberPrecision\n : UserSetting.SaleColumnNumberPrecision,\n });\n\n const { value: customColumns = [] } = useServerUserSetting({\n id: UserSetting.InventoryCustomColumns,\n });\n\n const { tagsMetadata } = useTagsForEntityType(\n tableType === 'inventory'\n ? ActionOutboxEntityType.Listing\n : ActionOutboxEntityType.Sale,\n true\n );\n const { tagsMetadata: tagsMetadataEvent } = useTagsForEntityType(\n ActionOutboxEntityType.SellerEvent,\n true\n );\n\n const { tagsMetadata: tagsMetadataPurchase } = useTagsForEntityType(\n ActionOutboxEntityType.Purchase,\n true\n );\n\n const allColumnConfigs = useMemo(\n () =>\n getListingTableColumnConfigs(\n hasSortListingsInGroupFeature,\n false,\n hasSectionalLoadInListingTableFeature\n ),\n [hasSectionalLoadInListingTableFeature, hasSortListingsInGroupFeature]\n );\n\n const itemsFiltered = useMemo(() => {\n // Filter out reporting tags that were later turned off reporting\n const presetColumnIds = Object.values(\n sectionType === SectionType.Listings\n ? allColumnConfigs\n : sectionType === SectionType.ListingsFlattened\n ? {\n ...LISTING_TABLE_FLATTENED_COLUMNS_CONFIG,\n ...allColumnConfigs,\n }\n : sectionType === SectionType.ListingsReport\n ? LISTING_REPORT_TABLE_COLUMNS_CONFIG\n : sectionType === SectionType.Sales\n ? SALE_TABLE_COLUMNS_CONFIG\n : sectionType === SectionType.PurchaseEvent ||\n sectionType === SectionType.Purchases\n ? PURCHASE_TABLE_COLUMNS_CONFIG\n : sectionType === SectionType.SalesFlattened\n ? {\n ...SALE_TABLE_FLATTENED_COLUMNS_CONFIG,\n ...SALE_TABLE_COLUMNS_CONFIG,\n }\n : SALE_REPORT_TABLE_COLUMNS_CONFIG\n ).map((i) => i.id);\n const activeTagNames = tagsMetadata?.map((t) => t.key) ?? [];\n const activeEventTagNames = tagsMetadataEvent?.map((t) => t.key) ?? [];\n const activePurchaseTagNames =\n tagsMetadataPurchase?.map((t) => t.key) ?? [];\n const customColumnIds = customColumns.map(\n (c) => (c as T & { id: string }).id\n );\n\n return items.filter(\n (m) =>\n presetColumnIds.includes(m) ||\n activeTagNames.includes(m) ||\n activeEventTagNames.includes(m) ||\n activePurchaseTagNames.includes(m) ||\n customColumnIds.includes(m)\n );\n }, [\n allColumnConfigs,\n customColumns,\n items,\n sectionType,\n tagsMetadata,\n tagsMetadataEvent,\n tagsMetadataPurchase,\n ]);\n\n const isTagColumn = useCallback(\n (tagName: string) =>\n [\n ...(tagsMetadata ?? []),\n ...(tagsMetadataEvent ?? []),\n ...(tagsMetadataPurchase ?? []),\n ].some((t) => t.key === tagName),\n [tagsMetadata, tagsMetadataEvent, tagsMetadataPurchase]\n );\n\n const renderColumnRowActions = useCallback(\n (id: string) => {\n const { isNumeric, isCurrency, isPercent, isDateTime } =\n sectionType === SectionType.Listings\n ? getListingColumnConfigById(\n id,\n customColumns as CustomListingColumn[]\n ).personalization\n : sectionType === SectionType.ListingsReport\n ? getListingReportColumnConfigById(\n id,\n customColumns as CustomListingColumn[]\n ).personalization\n : sectionType === SectionType.PurchaseEvent ||\n sectionType === SectionType.Purchases\n ? getPurchasesColumnConfigById(\n id,\n customColumns as CustomPurchasesColumn[]\n ).personalization\n : sectionType === SectionType.Sales\n ? getSaleColumnConfigById(id, customColumns as CustomSalesColumn[])\n .personalization\n : getSaleReportColumnConfigById(\n id,\n customColumns as CustomSalesColumn[]\n ).personalization;\n\n const isCustom = customColumns.find(\n (c) => (c as T & { id: string }).id === id\n );\n\n return (\n {\n e.stopPropagation();\n }}\n >\n {isCustom && (\n
    \n \n
    \n )}\n {isTagColumn(id) && (\n
    \n \n
    \n )}\n\n {isNumeric || isDateTime ? (\n \n ) : null}\n \n );\n },\n [\n customColumns,\n isTagColumn,\n sectionType,\n storedColumnNumberPrecisions,\n tableType,\n ]\n );\n\n return (\n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useMemo,\n} from 'react';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n PERMISSION_TO_CID,\n ROLE_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport {\n Feature,\n Permission,\n Role,\n SellerAccountClient,\n SellerPermissionInfo,\n SellerRoleInfo,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { getContent, useContentContext } from '../ContentContext';\n\nconst PermissionsRequiringFeatures: Record = {\n [Permission.Inventory_AddSeatSaver]: [Feature.SeatSaver],\n [Permission.Inventory_ManageSeatSaver]: [Feature.SeatSaver],\n [Permission.Inventory_ManageSeatSaverCreatedBy]: [Feature.SeatSaver],\n};\n\ntype ISellerRoleContext = {\n allSellerRoles?: Record | null;\n allPermissions?: Record | null;\n allSellerRolesForSelection?: Record | null;\n allPermissionsForSelection?: Record | null;\n isLoading?: boolean;\n getSellerRole: (id: number) => SellerRoleInfo | null;\n refetchSellerRoleInfos: () => void;\n};\n\nexport const SellerRoleContext = createContext({\n allSellerRoles: {},\n allSellerRolesForSelection: {},\n allPermissions: {} as Record,\n allPermissionsForSelection: {} as Record,\n isLoading: false,\n getSellerRole: () => null,\n refetchSellerRoleInfos: () => {},\n});\n\nexport const useSellerRoleContext = () => useContext(SellerRoleContext);\n\n/**\n * Adds a modal to the page where the provider is added\n * Provides utils to set all or update part of the modal\n * The modal is assumed to be open when it contains content\n */\nexport const SellerRoleContextProvider = ({\n children,\n}: {\n children: ReactNode;\n}) => {\n const { loginContext, activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n const contentContext = useContentContext();\n const showAutoPricerRole = useUserHasFeature(Feature.AutoPricing);\n\n const rolesQuery = useQuery({\n queryKey: [\n 'SellerAccountClient.getSelleRolesForSellerAccount',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n const results = await new SellerAccountClient(\n activeAccountWebClientConfig\n ).getSelleRolesForSellerAccount();\n\n const resultsMap = results?.reduce>(\n (r, cur) => {\n if (cur.prefinedRole) {\n if (cur.prefinedRole == Role.AutoPricer && !showAutoPricerRole) {\n return r;\n }\n\n const roleContentId = ROLE_TO_CID[cur.prefinedRole];\n // In case a predefined role (one that has no SellerAccountId) was created without proper Enum and translation, just use it raw\n if (roleContentId?.length === 2) {\n const roleText = getContent(roleContentId[0], contentContext);\n cur.name = roleText ?? cur.name;\n\n const roleDetails = getContent(roleContentId[1], contentContext);\n cur.details = roleDetails ?? cur.details;\n }\n }\n\n r[cur.id] = cur;\n return r;\n },\n {}\n );\n\n return resultsMap;\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('SellerAccountClient.getSelleRolesForSellerAccount', error);\n },\n },\n });\n\n const permissionsQuery = useQuery({\n queryKey: ['SellerAccountClient.getAllSellerPermissions'],\n queryFn: async () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n\n const results = await new SellerAccountClient(\n activeAccountWebClientConfig\n ).getAllSellerPermissions();\n\n const resultsMap = results?.reduce(\n (r, cur) => {\n const permContentId = PERMISSION_TO_CID[cur.permission];\n const permText = getContent(permContentId[0], contentContext);\n cur.name = permText;\n\n r[cur.permission] = cur;\n return r;\n },\n {} as Record\n );\n\n return resultsMap;\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n staleTime: Infinity, // permissions don't change without redeploying, so it's ok to set Infinity here\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('SellerAccountClient.getAllSellerPermissions', error);\n },\n },\n });\n\n const getSellerRole = useCallback(\n (roleId: number) => {\n if (!roleId || !rolesQuery.data) {\n return null;\n }\n\n return rolesQuery.data[roleId];\n },\n [rolesQuery.data]\n );\n\n const allSellerRolesForSelection = useMemo(\n () =>\n Object.values(rolesQuery.data ?? {})\n .filter((r) => !r.isDeleted)\n .reduce(\n (r, cur) => {\n r[cur.id] = cur.name;\n return r;\n },\n {} as Record\n ),\n [rolesQuery.data]\n );\n\n const allPermissionsFiltered = useMemo(\n () =>\n Object.values(permissionsQuery.data ?? {}).reduce(\n (r, cur) => {\n const features = PermissionsRequiringFeatures[cur.permission];\n let hasAllFeatures = true;\n if (features) {\n hasAllFeatures = features.every((f) =>\n loginContext?.user?.features.includes(f)\n );\n }\n\n if (hasAllFeatures) {\n r[cur.permission] = cur;\n }\n return r;\n },\n {} as Record\n ),\n [loginContext?.user?.features, permissionsQuery.data]\n );\n\n const allPermissionsForSelection = useMemo(\n () =>\n Object.values(allPermissionsFiltered ?? {}).reduce(\n (r, cur) => {\n r[cur.permission] = cur.permission;\n\n return r;\n },\n {} as Record\n ),\n [allPermissionsFiltered]\n );\n\n return (\n \n {children}\n \n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const FieldLabelWrapper = styled.div`\n font-weight: 600;\n ${({\n theme: {\n media,\n typography: { getStyles },\n },\n }) => `\n${getStyles('body1')}\n padding-left: 0;\n ${media.makeMediaQuery(\n media.breakpoints.md,\n `padding-left: 0px;` // reset padding for tablets and above\n )}\n`}\n`;\n\nexport const FieldWrapper = styled.div`\n padding-block-end: ${() => vars.spacing.m};\n\n label {\n width: 100%;\n margin-bottom: 0;\n }\n`;\n","import { useCallback, useMemo } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { useSellerRoleContext } from 'src/contexts/SellerRoleContext';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { shared, vars } from 'src/core/themes';\nimport { CrossIcon, ProfileOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './ShareReportDialog.css';\nimport { FieldLabelWrapper, FieldWrapper } from './ShareReportDialog.styled';\n\nexport type ShareReportBodyProps = {\n roleIds: number[];\n sellerUserIds: string[];\n onRoleIdsChange: (roleIds: number[]) => void;\n onSellerUserIdsChange: (sellerUserIds: string[]) => void;\n isLoading?: boolean;\n};\n\nexport function ShareReportBody({\n roleIds,\n sellerUserIds,\n onRoleIdsChange,\n onSellerUserIdsChange,\n isLoading,\n}: ShareReportBodyProps) {\n const { allActiveUserInfos } = useSellerAccountContext();\n const { activeAccountUserId } = useAppContext();\n const addUserAndGroupContent = useContent(ContentId.AddUsersAndGroups);\n\n const valuesAggregated = useMemo(() => {\n const values = [...roleIds.map((rid) => rid.toString()), ...sellerUserIds];\n return values;\n }, [roleIds, sellerUserIds]);\n\n const { allSellerRoles } = useSellerRoleContext();\n\n const isRole = useCallback(\n (value: string) => {\n return Object.values(allSellerRoles ?? {}).some(\n (r) => r.id === Number(value)\n );\n },\n [allSellerRoles]\n );\n\n const keyOptionsContent = useMemo(() => {\n if (allActiveUserInfos == null) return {};\n\n let keyOptions: Record = {};\n\n if (allActiveUserInfos) {\n keyOptions = Object.entries(allActiveUserInfos)\n .toSorted((r1, r2) => r1[1].email.localeCompare(r2[1].email))\n .reduce>((re, r) => {\n if (r[0] === activeAccountUserId) return re;\n\n re[r[0]] = r[1].email;\n return re;\n }, {});\n }\n\n if (allSellerRoles) {\n Object.entries(allSellerRoles).forEach((r) => {\n keyOptions[r[0]] = r[1].name;\n });\n }\n\n return keyOptions;\n }, [activeAccountUserId, allActiveUserInfos, allSellerRoles]);\n\n const onSelectionUpdated = useCallback(\n (newValues: string[]) => {\n const newRoleIds = newValues\n .filter((v) => isRole(v))\n .map((v) => Number(v)) as number[];\n const newSellerUserIds = newValues.filter((v) => !isRole(v));\n\n onRoleIdsChange(newRoleIds);\n onSellerUserIdsChange(newSellerUserIds);\n },\n [isRole, onRoleIdsChange, onSellerUserIdsChange]\n );\n\n const removeRole = useCallback(\n (role: string) => {\n onRoleIdsChange(roleIds.filter((r) => r !== Number(role)));\n },\n [onRoleIdsChange, roleIds]\n );\n\n const removeSellerUser = useCallback(\n (sellerUserId: string) => {\n onSellerUserIdsChange(sellerUserIds.filter((r) => r !== sellerUserId));\n },\n [onSellerUserIdsChange, sellerUserIds]\n );\n\n return (\n
    \n \n \n \n\n {roleIds.length || sellerUserIds.length ? (\n
    \n \n \n \n \n \n {roleIds.map((value) => (\n \n ))}\n {sellerUserIds.map((value) => (\n \n ))}\n
    \n ) : null}\n\n {isLoading && (\n \n \n \n )}\n
    \n );\n}\n\ntype SharedPeopleListItemProps = {\n sellerUserId?: string;\n role?: number;\n onDelete?: (value: string) => void;\n};\n\nconst SharedPeopleListItem = ({\n sellerUserId,\n role,\n onDelete,\n}: SharedPeopleListItemProps) => {\n const { allActiveUserInfos } = useSellerAccountContext();\n const { getSellerRole } = useSellerRoleContext();\n\n const roleInfo = role ? getSellerRole(role) : null;\n const userEmail = useMemo(() => {\n if (!sellerUserId || !allActiveUserInfos) return undefined;\n\n return allActiveUserInfos[sellerUserId]?.email;\n }, [allActiveUserInfos, sellerUserId]);\n\n const textDisplay =\n userEmail ?? (roleInfo ? `${roleInfo.name}: ${roleInfo.id}` : '');\n const value = sellerUserId ?? roleInfo?.id?.toString() ?? '';\n\n const isUser = sellerUserId != null;\n\n return (\n
    \n \n {isUser && }\n \n {textDisplay}\n \n
    \n \n }\n onClick={() => {\n onDelete?.(value);\n }}\n textContentId={ContentId.RemoveAccess}\n style={{\n fontSize: vars.typography.fontSize.sm,\n whiteSpace: 'nowrap',\n }}\n startWithText\n />\n \n );\n};\n","import { ComponentProps, useState } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { Button, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\n\nimport { ShareReportBody } from './ShareReportBody';\n\nexport type ShareReportDialogProps = ComponentProps & {\n reportName: string;\n roleIdsShared: number[];\n sellerUserIdsShared: string[];\n isLoading?: boolean;\n onOkay: (roleIds: number[], sellerUserIds: string[]) => void;\n onCancel: () => void;\n};\n\nexport function ShareReportDialog({\n reportName,\n roleIdsShared,\n sellerUserIdsShared,\n isLoading,\n onOkay,\n onCancel,\n ...rest\n}: ShareReportDialogProps) {\n const [newRoleIds, setNewRoleIds] = useState([]);\n const [newSellerUserIds, setNewSellerUserIds] = useState([]);\n\n return (\n \n }\n onOpened={() => {\n setNewRoleIds(roleIdsShared);\n setNewSellerUserIds(sellerUserIdsShared);\n }}\n onClick={(e) => {\n // This so that this dialog does not cause event to flow to the EventHeader open/close event\n e.stopPropagation();\n e.preventDefault();\n }}\n footer={\n <>\n {\n onCancel();\n }}\n >\n \n \n\n {\n onOkay(newRoleIds, newSellerUserIds);\n }}\n >\n \n \n \n }\n onCancel={isLoading ? undefined : onCancel}\n >\n \n \n \n \n );\n}\n","import clsx from 'clsx';\nimport { isEqual, uniq } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useToggle } from 'react-use';\nimport { CancelButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { typography } from 'src/core/themes/shared.css';\nimport { ReportConfig } from 'src/hooks/useReportConfigs';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { TableColumnsInput } from 'src/modals/ColumnSettings/TableColumnsInput';\nimport { LISTING_REPORT_TABLE_COLUMNS_CONFIG } from 'src/tables/ListingTable/configs/ListingReportTableColumnsConfig';\nimport { filterColumnsByFeatures } from 'src/utils/columns/columnUtils';\nimport { isMetricConfigurableByGroupBy } from 'src/utils/columns/inventory/inventoryColumnUtils';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { filterCustomColumnsForListingReport } from 'src/utils/columns/inventory/inventoryReportCustomColumnUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport {\n ActionOutboxEntityType,\n ReportGroupBy,\n UserSetting,\n} from 'src/WebApiController';\n\nimport {\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n} from '../../../modals/Modal';\nimport * as styles from './MetricsSelectionInputModal.css';\n\nexport const InventoryMetricsSelectionInputModal = ({\n onClose,\n headerContentId,\n groupBy,\n}: {\n onClose: () => void;\n headerContentId?: ContentId;\n groupBy?: ReportGroupBy;\n}) => {\n const { appContext, loginContext } = useAppContext();\n const { setValue, watch, clearErrors } = useFormContext();\n const [isOpen, toggleIsOpen] = useToggle(true);\n\n const {\n value: customListingColumns = [],\n setUserSetting: setCustomListingColumns,\n } = useServerUserSetting({\n id: UserSetting.InventoryCustomColumns,\n });\n\n const { tagsMetadataNumeric } = useTagsForEntityType(\n ActionOutboxEntityType.Listing,\n true\n );\n\n const { tagsMetadata: tagsMetadataEvent } = useTagsForEntityType(\n ActionOutboxEntityType.SellerEvent,\n true\n );\n\n const { tagsMetadata: tagsMetadataPurchase } = useTagsForEntityType(\n ActionOutboxEntityType.Purchase,\n true\n );\n\n const customListingColumnsFiltered = filterCustomColumnsForListingReport(\n customListingColumns,\n tagsMetadataNumeric\n );\n\n const reportingTags = useMemo(() => {\n if (groupBy === ReportGroupBy.Event) {\n return [...(tagsMetadataNumeric ?? []), ...(tagsMetadataEvent ?? [])];\n } else if (groupBy === ReportGroupBy.PurchaseId) {\n return [...(tagsMetadataNumeric ?? []), ...(tagsMetadataPurchase ?? [])];\n }\n\n return tagsMetadataNumeric;\n }, [groupBy, tagsMetadataEvent, tagsMetadataNumeric, tagsMetadataPurchase]);\n\n const metrics = watch('metrics');\n\n const presetColumnIds = Object.values(LISTING_REPORT_TABLE_COLUMNS_CONFIG)\n .map((i) => i.id)\n .filter((id) => {\n if (!id) return false;\n\n return isMetricConfigurableByGroupBy(id, groupBy);\n }) as string[];\n\n const activeTagNames = useMemo(\n () => reportingTags?.map((t) => t.key) ?? [],\n [reportingTags]\n );\n\n const customColumnIds = customListingColumnsFiltered.map((c) => c.id);\n\n const filterColumns = useCallback(\n (columnList: string[]) => {\n return columnList.filter(\n (m) =>\n presetColumnIds.includes(m) ||\n activeTagNames.includes(m) ||\n customColumnIds.includes(m)\n );\n },\n [activeTagNames, customColumnIds, presetColumnIds]\n );\n\n const metricsFiltered = useMemo(\n () => filterColumns(metrics),\n [filterColumns, metrics]\n );\n\n const [userColumnSelection, setUserColumnSelection] = useState(\n metricsFiltered ?? []\n );\n\n const storedColumnOrderSettingFiltered = useMemo(() => {\n const allColumnIdsAvailable = filterColumns(\n uniq([\n ...metricsFiltered,\n ...presetColumnIds.toSorted((a, b) => a.localeCompare(b)),\n ...customColumnIds.toSorted((a, b) => a.localeCompare(b)),\n ...activeTagNames.toSorted((a, b) => a.localeCompare(b)),\n ])\n );\n\n const existingColumnsOrderSetting = filterColumns(\n metricsFiltered as string[]\n );\n\n allColumnIdsAvailable.forEach((columnId) => {\n if (!existingColumnsOrderSetting.includes(columnId)) {\n existingColumnsOrderSetting.push(columnId);\n }\n });\n\n return existingColumnsOrderSetting;\n }, [\n activeTagNames,\n customColumnIds,\n filterColumns,\n metricsFiltered,\n presetColumnIds,\n ]);\n\n const [userColumnSorting, setUserColumnSorting] = useState(\n filterColumnsByFeatures(\n storedColumnOrderSettingFiltered,\n SectionType.ListingsReport,\n customListingColumns,\n loginContext?.user,\n appContext?.features,\n reportingTags,\n groupBy\n )\n );\n\n const [userColumnIsDirty, setUserColumnIsDirty] = useState(false);\n\n const onSaveHandler = () => {\n const sortedColumnSelection = userColumnSorting.filter((c) =>\n userColumnSelection.includes(c)\n );\n setValue('metrics', sortedColumnSelection);\n clearErrors('metrics');\n toggleIsOpen();\n };\n\n useEffect(() => {\n if (!isOpen) setTimeout(onClose, 300);\n }, [isOpen, onClose]);\n\n // Sync the user setting to the default if the user has never set it\n useEffect(() => {\n const newColumns = filterColumnsByFeatures(\n storedColumnOrderSettingFiltered,\n SectionType.ListingsReport,\n customListingColumns,\n loginContext?.user,\n appContext?.features,\n reportingTags,\n groupBy\n );\n\n if (!userColumnIsDirty) {\n if (!isEqual(newColumns, userColumnSorting)) {\n setUserColumnSorting(newColumns);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customListingColumns, activeTagNames, storedColumnOrderSettingFiltered]);\n\n // Keep the columns up to date in case the user changes the settings (e.g. deletes custom column)\n useEffect(() => {\n const allColumnIdsAvailable = filterColumns(\n uniq([\n ...metricsFiltered,\n ...presetColumnIds.toSorted((a, b) => a.localeCompare(b)),\n ...customColumnIds.toSorted((a, b) => a.localeCompare(b)),\n ...activeTagNames.toSorted((a, b) => a.localeCompare(b)),\n ])\n );\n\n let userColumnSortingFiltered = filterColumns(userColumnSorting);\n\n allColumnIdsAvailable.forEach((columnId) => {\n if (!userColumnSortingFiltered.includes(columnId)) {\n userColumnSortingFiltered.push(columnId);\n }\n });\n\n userColumnSortingFiltered = filterColumnsByFeatures(\n storedColumnOrderSettingFiltered,\n SectionType.ListingsReport,\n customListingColumns,\n loginContext?.user,\n appContext?.features,\n reportingTags,\n groupBy\n );\n\n if (\n !isEqual(new Set(userColumnSortingFiltered), new Set(userColumnSorting))\n ) {\n setUserColumnSorting(userColumnSortingFiltered);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customColumnIds]);\n\n return (\n <>\n \n \n
    \n
    \n \n
    \n
    \n
    \n \n \n userColumnSelection={userColumnSelection}\n onUserColumnSelectionChange={(newSelection) => {\n setUserColumnSelection(newSelection);\n setUserColumnIsDirty(true);\n }}\n userColumnSorting={userColumnSorting}\n onUserColumnSortingChange={(newSorting) => {\n setUserColumnSorting(newSorting);\n setUserColumnIsDirty(true);\n }}\n onCustomColumnsChange={setCustomListingColumns}\n customColumns={customListingColumnsFiltered}\n reportingTags={reportingTags}\n sectionType={SectionType.ListingsReport}\n groupBy={groupBy}\n />\n \n \n \n \n \n \n \n );\n};\n","import clsx from 'clsx';\nimport { isEqual, uniq } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useToggle } from 'react-use';\nimport { CancelButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { typography } from 'src/core/themes/shared.css';\nimport { ReportConfig } from 'src/hooks/useReportConfigs';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { TableColumnsInput } from 'src/modals/ColumnSettings/TableColumnsInput';\nimport { SALE_REPORT_TABLE_COLUMNS_CONFIG } from 'src/tables/SalesTable/configs/SaleReportTableColumnsConfig';\nimport { filterColumnsByFeatures } from 'src/utils/columns/columnUtils';\nimport { isMetricConfigurableByGroupBy } from 'src/utils/columns/sales/salesColumnUtils';\nimport { filterCustomColumnsForSale } from 'src/utils/columns/sales/salesCustomColumnUtils';\nimport { CustomSalesColumn } from 'src/utils/columns/sales/salesCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport {\n ActionOutboxEntityType,\n ReportGroupBy,\n UserSetting,\n} from 'src/WebApiController';\n\nimport {\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n} from '../../../modals/Modal';\nimport * as styles from './MetricsSelectionInputModal.css';\n\nexport const SalesMetricsSelectionInputModal = ({\n onClose,\n headerContentId,\n groupBy,\n}: {\n onClose: () => void;\n headerContentId?: ContentId;\n groupBy?: ReportGroupBy;\n}) => {\n const { appContext, loginContext } = useAppContext();\n const { setValue, watch, clearErrors } = useFormContext();\n const [isOpen, toggleIsOpen] = useToggle(true);\n\n const {\n value: customSaleColumns = [],\n setUserSetting: setCustomSaleColumns,\n } = useServerUserSetting({\n id: UserSetting.SaleCustomColumns,\n });\n\n const { tagsMetadataNumeric } = useTagsForEntityType(\n ActionOutboxEntityType.Sale,\n true\n );\n\n const { tagsMetadata: tagsMetadataEvent } = useTagsForEntityType(\n ActionOutboxEntityType.SellerEvent,\n true\n );\n\n const customSaleColumnsFiltered = filterCustomColumnsForSale(\n customSaleColumns,\n tagsMetadataNumeric\n );\n\n const reportingTags = useMemo(() => {\n if (groupBy === ReportGroupBy.Event) {\n return [...(tagsMetadataNumeric ?? []), ...(tagsMetadataEvent ?? [])];\n }\n\n return tagsMetadataNumeric;\n }, [groupBy, tagsMetadataEvent, tagsMetadataNumeric]);\n\n const metrics = watch('metrics');\n\n const presetColumnIds = Object.values(SALE_REPORT_TABLE_COLUMNS_CONFIG)\n .map((i) => i.id)\n .filter((id) => {\n if (!id) return false;\n\n return isMetricConfigurableByGroupBy(id, groupBy);\n }) as string[];\n\n const activeTagNames = useMemo(\n () => reportingTags?.map((t) => t.key) ?? [],\n [reportingTags]\n );\n const customColumnIds = customSaleColumnsFiltered.map((c) => c.id);\n\n const filterColumns = useCallback(\n (columnList: string[]) => {\n return columnList.filter(\n (m) =>\n presetColumnIds.includes(m) ||\n activeTagNames.includes(m) ||\n customColumnIds.includes(m)\n );\n },\n [activeTagNames, customColumnIds, presetColumnIds]\n );\n\n const metricsFiltered = useMemo(\n () => filterColumns(metrics),\n [filterColumns, metrics]\n );\n\n const [userColumnSelection, setUserColumnSelection] = useState(\n metricsFiltered ?? []\n );\n\n const storedColumnOrderSettingFiltered = useMemo(() => {\n const allColumnIdsAvailable = filterColumns(\n uniq([\n ...metricsFiltered,\n ...presetColumnIds.toSorted((a, b) => a.localeCompare(b)),\n ...customColumnIds.toSorted((a, b) => a.localeCompare(b)),\n ...activeTagNames.toSorted((a, b) => a.localeCompare(b)),\n ])\n );\n\n const existingColumnsOrderSetting = filterColumns(\n metricsFiltered as string[]\n );\n\n allColumnIdsAvailable.forEach((columnId) => {\n if (!existingColumnsOrderSetting.includes(columnId)) {\n existingColumnsOrderSetting.push(columnId);\n }\n });\n\n return existingColumnsOrderSetting;\n }, [\n activeTagNames,\n customColumnIds,\n filterColumns,\n metricsFiltered,\n presetColumnIds,\n ]);\n\n const [userColumnSorting, setUserColumnSorting] = useState(\n filterColumnsByFeatures(\n storedColumnOrderSettingFiltered,\n SectionType.SalesReport,\n customSaleColumns,\n loginContext?.user,\n appContext?.features,\n reportingTags,\n groupBy\n )\n );\n\n const [userColumnIsDirty, setUserColumnIsDirty] = useState(false);\n\n const onSaveHandler = () => {\n const sortedColumnSelection = userColumnSorting.filter((c) =>\n userColumnSelection.includes(c)\n );\n setValue('metrics', sortedColumnSelection);\n clearErrors('metrics');\n toggleIsOpen();\n };\n\n useEffect(() => {\n if (!isOpen) setTimeout(onClose, 300);\n }, [isOpen, onClose]);\n\n // Sync the user setting to the default if the user has never set it\n useEffect(() => {\n const newColumns = filterColumnsByFeatures(\n storedColumnOrderSettingFiltered,\n SectionType.SalesReport,\n customSaleColumns,\n loginContext?.user,\n appContext?.features,\n reportingTags,\n groupBy\n );\n\n if (!userColumnIsDirty) {\n if (!isEqual(newColumns, userColumnSorting)) {\n setUserColumnSorting(newColumns);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customSaleColumns, activeTagNames, storedColumnOrderSettingFiltered]);\n\n // Keep the columns up to date in case the user changes the settings (e.g. deletes custom column)\n useEffect(() => {\n const allColumnIdsAvailable = filterColumns(\n uniq([\n ...metricsFiltered,\n ...presetColumnIds.toSorted((a, b) => a.localeCompare(b)),\n ...customColumnIds.toSorted((a, b) => a.localeCompare(b)),\n ...activeTagNames.toSorted((a, b) => a.localeCompare(b)),\n ])\n );\n\n let userColumnSortingFiltered = filterColumns(userColumnSorting);\n\n allColumnIdsAvailable.forEach((columnId) => {\n if (!userColumnSortingFiltered.includes(columnId)) {\n userColumnSortingFiltered.push(columnId);\n }\n });\n\n userColumnSortingFiltered = filterColumnsByFeatures(\n storedColumnOrderSettingFiltered,\n SectionType.SalesReport,\n customSaleColumns,\n loginContext?.user,\n appContext?.features,\n reportingTags,\n groupBy\n );\n\n if (\n !isEqual(new Set(userColumnSortingFiltered), new Set(userColumnSorting))\n ) {\n setUserColumnSorting(userColumnSortingFiltered);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customColumnIds]);\n\n return (\n <>\n \n \n
    \n
    \n \n
    \n
    \n
    \n \n \n userColumnSelection={userColumnSelection}\n onUserColumnSelectionChange={(newSelection) => {\n setUserColumnSelection(newSelection);\n setUserColumnIsDirty(true);\n }}\n userColumnSorting={userColumnSorting}\n onUserColumnSortingChange={(newSorting) => {\n setUserColumnSorting(newSorting);\n setUserColumnIsDirty(true);\n }}\n onCustomColumnsChange={setCustomSaleColumns}\n customColumns={customSaleColumnsFiltered}\n reportingTags={reportingTags}\n sectionType={SectionType.SalesReport}\n groupBy={groupBy}\n />\n \n \n \n \n \n \n \n );\n};\n","import {\n DEFAULT_REPORT_FILTER_EDITABILITY,\n ReportFilterEditability,\n} from 'src/utils/reportsFilterUtils';\n\nexport const getEditability = (\n editableFilterItemIds: string[] | undefined | null,\n viewableFilterItemIds: string[] | undefined | null,\n hiddenFilterItemIds: string[] | undefined | null,\n reportFilterId: string | null | undefined\n) => {\n if (!reportFilterId) {\n return DEFAULT_REPORT_FILTER_EDITABILITY;\n }\n\n if (viewableFilterItemIds?.includes(reportFilterId)) {\n return ReportFilterEditability.View;\n }\n if (editableFilterItemIds?.includes(reportFilterId)) {\n return ReportFilterEditability.Edit;\n }\n if (hiddenFilterItemIds?.includes(reportFilterId)) {\n return ReportFilterEditability.Hidden;\n }\n return DEFAULT_REPORT_FILTER_EDITABILITY;\n};\n\nexport const updateFilterItemIds = (\n editableFilterItemIds: string[] | undefined | null,\n viewableFilterItemIds: string[] | undefined | null,\n hiddenFilterItemIds: string[] | undefined | null,\n reportFilterIds: string[],\n editability: ReportFilterEditability\n) => {\n const isNotIncluded = (id: string) => !reportFilterIds.includes(id);\n\n const newHiddenFilterItemIds = hiddenFilterItemIds\n ? hiddenFilterItemIds.filter(isNotIncluded)\n : [];\n const newViewableFilterItemIds = viewableFilterItemIds\n ? viewableFilterItemIds.filter(isNotIncluded)\n : [];\n const newEditableFilterItemIds = editableFilterItemIds\n ? editableFilterItemIds.filter(isNotIncluded)\n : [];\n\n if (editability === ReportFilterEditability.Hidden) {\n newHiddenFilterItemIds.push(...reportFilterIds);\n } else if (editability === ReportFilterEditability.View) {\n newViewableFilterItemIds.push(...reportFilterIds);\n } else if (editability === ReportFilterEditability.Edit) {\n newEditableFilterItemIds.push(...reportFilterIds);\n }\n\n return {\n newHiddenFilterItemIds: newHiddenFilterItemIds.toSorted(),\n newViewableFilterItemIds: newViewableFilterItemIds.toSorted(),\n newEditableFilterItemIds: newEditableFilterItemIds.toSorted(),\n };\n};\n","import { useCallback, useEffect, useMemo } from 'react';\nimport isEqual from 'react-fast-compare';\nimport { useFormContext } from 'react-hook-form';\nimport { PerformerVenueList } from 'src/components/Events/PerformerVenueList';\nimport {\n FilterToolbar,\n FilterToolbarProps,\n} from 'src/components/FilterToolbar';\nimport { useFiltersHelpers } from 'src/components/FilterToolbar/useFiltersHelpers';\nimport {\n listingsMandatoryFiltersToShow,\n useListingFilters,\n} from 'src/components/MainFilterBar/useListingFilters';\nimport {\n saleMandatoryFiltersToShow,\n useSaleFilters,\n} from 'src/components/MainFilterBar/useSaleFilters';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { Button, Popover, Stack } from 'src/core/ui';\nimport { ReportConfig } from 'src/hooks/useReportConfigs';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n DefaultListingQuery,\n DefaultSaleQuery,\n} from 'src/utils/eventQueryUtils';\nimport {\n DEFAULT_REPORT_FILTER_EDITABILITY,\n ReportFilterEditability,\n ReportPerformerVenueFilterItemId,\n} from 'src/utils/reportsFilterUtils';\nimport { ReportTypes } from 'src/utils/reportsUtils';\nimport {\n ActionOutboxEntityType,\n ListingQuery,\n SaleQuery,\n} from 'src/WebApiController';\n\nimport * as styles from './ReportBuilderDialog.css';\nimport {\n getEditability,\n updateFilterItemIds,\n} from './ReportBuilderFilterInput.utils';\n\ntype ReportFilterInputProps = {\n onSubmitFilter?: () => void;\n showAllButton?: boolean;\n filterAppliedMessage?: React.ReactNode;\n} & Pick;\n\nexport function ReportBuilderFilterInput({\n reportType,\n onSubmitFilter,\n showAllButton = true,\n filterAppliedMessage,\n embeddedDisplayOnly,\n}: {\n reportType: ReportTypes;\n} & ReportFilterInputProps) {\n const { watch } = useFormContext();\n\n const hiddenFilterItemIds = watch('hiddenFilterItemIds');\n const viewableFilterItemIds = watch('viewableFilterItemIds');\n const editableFilterItemIds = watch('editableFilterItemIds');\n\n const performerFilterEditability = getEditability(\n editableFilterItemIds,\n viewableFilterItemIds,\n hiddenFilterItemIds,\n ReportPerformerVenueFilterItemId.PerformerIds\n );\n const venueFilterEditability = getEditability(\n editableFilterItemIds,\n viewableFilterItemIds,\n hiddenFilterItemIds,\n ReportPerformerVenueFilterItemId.VenueIds\n );\n\n const hidePerformerVenueFilter =\n embeddedDisplayOnly &&\n (performerFilterEditability ?? DEFAULT_REPORT_FILTER_EDITABILITY) ===\n ReportFilterEditability.Hidden &&\n (venueFilterEditability ?? DEFAULT_REPORT_FILTER_EDITABILITY) ===\n ReportFilterEditability.Hidden;\n\n return (\n \n {reportType === ReportTypes.Inventory ? (\n <>\n {!embeddedDisplayOnly && (\n \n )}\n \n )\n }\n />\n \n ) : (\n <>\n {!embeddedDisplayOnly && (\n \n )}\n \n )\n }\n />\n \n )}\n \n );\n}\n\nconst ListingFilterInput = ({\n onSubmitFilter,\n showAllButton = true,\n filterAppliedMessage,\n embeddedDisplayOnly,\n performerVenueFilter,\n}: ReportFilterInputProps) => {\n const { setValue, watch } = useFormContext();\n\n const formFilter = watch('filter');\n const hiddenFilterItemIds = watch('hiddenFilterItemIds');\n const viewableFilterItemIds = watch('viewableFilterItemIds');\n const editableFilterItemIds = watch('editableFilterItemIds');\n\n const {\n initialQuery,\n tempQuery,\n filterQuery,\n setFilterQuery,\n setTempQuery,\n resetTempQuery,\n } = useFilterQueryContext();\n const { filters } = useListingFilters({\n isReportsPage: true,\n });\n\n const onSubmitFilterHandler = useCallback(() => {\n setFilterQuery(tempQuery);\n onSubmitFilter?.();\n }, [onSubmitFilter, setFilterQuery, tempQuery]);\n\n useEffect(() => {\n if (formFilter != null && !isEqual(formFilter as ListingQuery, tempQuery)) {\n setTempQuery(formFilter as ListingQuery);\n setFilterQuery(formFilter as ListingQuery);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (embeddedDisplayOnly) {\n // We don't have apply button for embedded view. So, we need to submit filter on every change\n onSubmitFilterHandler();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tempQuery]);\n\n useEffect(() => {\n if (!isEqual(formFilter as ListingQuery, filterQuery)) {\n setValue('filter', filterQuery);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filterQuery]);\n\n const { appliedFilters } = useFiltersHelpers({\n filters,\n activeQuery: filterQuery,\n mandatoryFiltersToShow: listingsMandatoryFiltersToShow,\n initialQuery,\n });\n\n const { appliedFilters: appliedFiltersRelativeToEmpty } = useFiltersHelpers({\n filters,\n activeQuery: tempQuery,\n mandatoryFiltersToShow: listingsMandatoryFiltersToShow,\n initialQuery: DefaultListingQuery,\n });\n\n const filtersWithEditability = useMemo(\n () =>\n filters.map((filterGroup) => ({\n ...filterGroup,\n items: filterGroup.items.map((filterItem) => ({\n ...filterItem,\n reportFilterEditability: getEditability(\n editableFilterItemIds,\n viewableFilterItemIds,\n hiddenFilterItemIds,\n filterItem.filterId\n ),\n })),\n })),\n [editableFilterItemIds, filters, hiddenFilterItemIds, viewableFilterItemIds]\n );\n\n const onEditabilityChange = useCallback(\n (filterId: string | string[], editability: ReportFilterEditability) => {\n const filterIds = Array.isArray(filterId) ? filterId : [filterId];\n\n const {\n newHiddenFilterItemIds,\n newViewableFilterItemIds,\n newEditableFilterItemIds,\n } = updateFilterItemIds(\n editableFilterItemIds,\n viewableFilterItemIds,\n hiddenFilterItemIds,\n filterIds,\n editability\n );\n\n setValue('hiddenFilterItemIds', newHiddenFilterItemIds);\n setValue('viewableFilterItemIds', newViewableFilterItemIds);\n setValue('editableFilterItemIds', newEditableFilterItemIds);\n },\n [\n editableFilterItemIds,\n hiddenFilterItemIds,\n setValue,\n viewableFilterItemIds,\n ]\n );\n\n return (\n {\n setTempQuery(initialQuery);\n setFilterQuery(initialQuery);\n }}\n isAllSelected={false}\n showCustomFilterButton={false}\n filterAppliedCounts={appliedFilters.length}\n allContentId={ContentId.ResetAll}\n filters={filtersWithEditability}\n filterAppliedIds={appliedFiltersRelativeToEmpty}\n onSubmitFilter={onSubmitFilterHandler}\n showAllButton={showAllButton}\n mandatoryFiltersToShow={listingsMandatoryFiltersToShow}\n filterAppliedMessage={filterAppliedMessage}\n resetTempQuery={resetTempQuery}\n tempQuery={tempQuery}\n onEditabilityChange={onEditabilityChange}\n embeddedDisplayOnly={embeddedDisplayOnly}\n performerVenueFilter={performerVenueFilter}\n />\n );\n};\n\nconst SaleFilterInput = ({\n onSubmitFilter,\n showAllButton = true,\n filterAppliedMessage,\n embeddedDisplayOnly,\n performerVenueFilter,\n}: ReportFilterInputProps) => {\n const { setValue, watch } = useFormContext();\n\n const formFilter = watch('filter');\n const hiddenFilterItemIds = watch('hiddenFilterItemIds');\n const viewableFilterItemIds = watch('viewableFilterItemIds');\n const editableFilterItemIds = watch('editableFilterItemIds');\n\n const {\n initialQuery,\n tempQuery,\n filterQuery,\n setFilterQuery,\n setTempQuery,\n resetTempQuery,\n } = useFilterQueryContext();\n const { filters } = useSaleFilters({ isReportsPage: true });\n\n const onSubmitFilterHandler = useCallback(() => {\n setFilterQuery(tempQuery);\n onSubmitFilter?.();\n }, [onSubmitFilter, setFilterQuery, tempQuery]);\n\n useEffect(() => {\n if (formFilter != null && !isEqual(formFilter as SaleQuery, tempQuery)) {\n setTempQuery(formFilter as SaleQuery);\n setFilterQuery(formFilter as SaleQuery);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (embeddedDisplayOnly) {\n // We don't have apply button for embedded view. So, we need to submit filter on every change\n onSubmitFilterHandler();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tempQuery]);\n\n useEffect(() => {\n if (!isEqual(formFilter as SaleQuery, filterQuery)) {\n setValue('filter', filterQuery);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filterQuery]);\n\n const { appliedFilters } = useFiltersHelpers({\n filters,\n activeQuery: filterQuery,\n mandatoryFiltersToShow: saleMandatoryFiltersToShow,\n initialQuery,\n });\n\n const { appliedFilters: appliedFiltersRelativeToEmpty } = useFiltersHelpers({\n filters,\n activeQuery: tempQuery,\n mandatoryFiltersToShow: saleMandatoryFiltersToShow,\n initialQuery: DefaultSaleQuery,\n });\n\n const filtersWithEditability = useMemo(\n () =>\n filters.map((filterGroup) => ({\n ...filterGroup,\n items: filterGroup.items.map((filterItem) => ({\n ...filterItem,\n reportFilterEditability: getEditability(\n editableFilterItemIds,\n viewableFilterItemIds,\n hiddenFilterItemIds,\n filterItem.filterId\n ),\n })),\n })),\n [editableFilterItemIds, filters, hiddenFilterItemIds, viewableFilterItemIds]\n );\n\n const onEditabilityChange = useCallback(\n (filterId: string | string[], editability: ReportFilterEditability) => {\n const filterIds = Array.isArray(filterId) ? filterId : [filterId];\n\n const {\n newHiddenFilterItemIds,\n newViewableFilterItemIds,\n newEditableFilterItemIds,\n } = updateFilterItemIds(\n editableFilterItemIds,\n viewableFilterItemIds,\n hiddenFilterItemIds,\n filterIds,\n editability\n );\n\n setValue('hiddenFilterItemIds', newHiddenFilterItemIds);\n setValue('viewableFilterItemIds', newViewableFilterItemIds);\n setValue('editableFilterItemIds', newEditableFilterItemIds);\n },\n [\n editableFilterItemIds,\n hiddenFilterItemIds,\n setValue,\n viewableFilterItemIds,\n ]\n );\n\n return (\n {\n setTempQuery(initialQuery);\n setFilterQuery(initialQuery);\n }}\n isAllSelected={false}\n showCustomFilterButton={false}\n filterAppliedCounts={appliedFilters.length}\n allContentId={ContentId.ResetAll}\n filters={filtersWithEditability}\n filterAppliedIds={appliedFiltersRelativeToEmpty}\n onSubmitFilter={onSubmitFilterHandler}\n showAllButton={showAllButton}\n mandatoryFiltersToShow={saleMandatoryFiltersToShow}\n filterAppliedMessage={filterAppliedMessage}\n resetTempQuery={resetTempQuery}\n tempQuery={tempQuery}\n onEditabilityChange={onEditabilityChange}\n embeddedDisplayOnly={embeddedDisplayOnly}\n performerVenueFilter={performerVenueFilter}\n />\n );\n};\n\nconst PerformerVenuePopover = ({\n entityType,\n onSubmitFilter,\n embeddedDisplayOnly,\n}: {\n entityType: ActionOutboxEntityType.Listing | ActionOutboxEntityType.Sale;\n onSubmitFilter?: () => void;\n embeddedDisplayOnly?: boolean;\n}) => {\n const { setValue, watch } = useFormContext();\n\n const hiddenFilterItemIds = watch('hiddenFilterItemIds');\n const viewableFilterItemIds = watch('viewableFilterItemIds');\n const editableFilterItemIds = watch('editableFilterItemIds');\n\n const performerFilterEditability = getEditability(\n editableFilterItemIds,\n viewableFilterItemIds,\n hiddenFilterItemIds,\n ReportPerformerVenueFilterItemId.PerformerIds\n );\n const venueFilterEditability = getEditability(\n editableFilterItemIds,\n viewableFilterItemIds,\n hiddenFilterItemIds,\n ReportPerformerVenueFilterItemId.VenueIds\n );\n\n const onEditabilityChange = useCallback(\n (reportFilterId: string, editability: ReportFilterEditability) => {\n const newHiddenFilterItemIds = hiddenFilterItemIds\n ? hiddenFilterItemIds.filter((id) => id !== reportFilterId)\n : [];\n const newViewableFilterItemIds = viewableFilterItemIds\n ? viewableFilterItemIds.filter((id) => id !== reportFilterId)\n : [];\n const newEditableFilterItemIds = editableFilterItemIds\n ? editableFilterItemIds.filter((id) => id !== reportFilterId)\n : [];\n\n if (editability === ReportFilterEditability.Hidden) {\n newHiddenFilterItemIds.push(reportFilterId);\n } else if (editability === ReportFilterEditability.View) {\n newViewableFilterItemIds.push(reportFilterId);\n } else if (editability === ReportFilterEditability.Edit) {\n newEditableFilterItemIds.push(reportFilterId);\n }\n\n setValue('hiddenFilterItemIds', newHiddenFilterItemIds.toSorted());\n setValue('viewableFilterItemIds', newViewableFilterItemIds.toSorted());\n setValue('editableFilterItemIds', newEditableFilterItemIds.toSorted());\n },\n [\n editableFilterItemIds,\n hiddenFilterItemIds,\n setValue,\n viewableFilterItemIds,\n ]\n );\n\n return (\n \n \n \n \n \n \n \n
    \n {}}\n hideMetrics\n // Have to update tempQuery instead of filterQuery to sync with the main filter bar here\n updateTempQuery\n onEditabilityChange={onEditabilityChange}\n performerFilterEditability={performerFilterEditability}\n venueFilterEditability={venueFilterEditability}\n embeddedDisplayOnly={embeddedDisplayOnly}\n />\n
    \n
    \n
    \n );\n};\n","import { ComponentProps, useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { MultiSelectDropBoxWithPills } from 'src/core/POS/MultiSelectDropBoxWithPills';\nimport { ReportConfig } from 'src/hooks/useReportConfigs';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { INVENTORY_REPORT_WIDGETS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { ReportWidgetTypesInventory } from 'src/WebApiController';\n\nexport type WidgetsSelectionInputProps = Omit<\n ComponentProps,\n 'values' | 'onChange' | 'valueOptionsContent'\n>;\n\nexport const WidgetsSelectionInput = ({\n disabled,\n ...multiSelectorProps\n}: WidgetsSelectionInputProps) => {\n const { setValue, watch } = useFormContext();\n\n const widgets = watch('widgets');\n\n const onSelectionChanged = useCallback(\n (newWidgets: string[]) => {\n setValue('widgets', newWidgets as ReportWidgetTypesInventory[]);\n },\n [setValue]\n );\n\n return (\n <>\n \n \n );\n};\n","import { ComponentProps, useCallback, useMemo, useState } from 'react';\nimport { FormProvider } from 'react-hook-form';\nimport { useToggle } from 'react-use';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CancelButton } from 'src/components/Buttons';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { shared } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport {\n PosAccordionContent,\n PosAccordionItem,\n PosAccordionRoot,\n PosAccordionTrigger,\n} from 'src/core/ui/Accordion';\nimport { GroupBySelector } from 'src/dialogs/ReportBuilderDialog/GroupBySelector';\nimport { ReportConfig, useReportConfigs } from 'src/hooks/useReportConfigs';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { TableColumnsDisplay } from 'src/modals/ColumnSettings/TableColumnsDisplay';\nimport { FieldWrapper } from 'src/modals/common/Purchase';\nimport { useColumnDisplayName } from 'src/modals/InventoryTableColumns/useColumnDisplayName';\nimport { LISTING_REPORT_TABLE_COLUMNS_CONFIG } from 'src/tables/ListingTable/configs/ListingReportTableColumnsConfig';\nimport { SALE_REPORT_TABLE_COLUMNS_CONFIG } from 'src/tables/SalesTable/configs/SaleReportTableColumnsConfig';\nimport { isMetricConfigurableByGroupBy as isListingMetricConfigurableByGroupBy } from 'src/utils/columns/inventory/inventoryColumnUtils';\nimport { GROUP_BY_TO_PRIMARY_COLUMN_ID as GROUP_BY_TO_PRIMARY_COLUMN_ID_LISTING } from 'src/utils/columns/inventory/inventoryColumnUtils.constants';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { filterCustomColumnsForListingReport } from 'src/utils/columns/inventory/inventoryReportCustomColumnUtils';\nimport { isMetricConfigurableByGroupBy as isSaleMetricConfigurableByGroupBy } from 'src/utils/columns/sales/salesColumnUtils';\nimport { filterCustomColumnsForSale } from 'src/utils/columns/sales/salesCustomColumnUtils';\nimport { CustomSalesColumn } from 'src/utils/columns/sales/salesCustomColumnUtils.types';\nimport { GROUP_BY_TO_PRIMARY_COLUMN_ID as GROUP_BY_TO_PRIMARY_COLUMN_ID_SALES } from 'src/utils/columns/sales/salesReportColumnUtils.constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n REPORT_INVENTORY_GROUP_BY_TO_CID,\n REPORT_IS_SORT_DESCENDING_TO_CID,\n REPORT_SALE_GROUP_BY_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { ReportTypes } from 'src/utils/reportsUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport {\n ActionOutboxEntityType,\n ReportGroupBy,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { ShareReportBody } from '../ShareReportDialog';\nimport {\n InventoryMetricsSelectionInputModal,\n SalesMetricsSelectionInputModal,\n} from './MetricsSelectionInputModal';\nimport * as styles from './ReportBuilderDialog.css';\nimport { ReportBuilderFilterInput } from './ReportBuilderFilterInput';\nimport { WidgetsSelectionInput } from './WidgetsSelectionInput';\n\nexport type ReportBuilderDialogProps = {\n report: ReportConfig;\n onSave: (data: ReportConfig) => void;\n} & ComponentProps;\n\nconst AdvancedSettingsId = 'advanced-settings';\n\ntype AdvancedSettingsAccordion = typeof AdvancedSettingsId | undefined;\n\nexport function ReportBuilderDialogBody({\n onSave,\n onClosed,\n register,\n setError,\n setValue,\n handleSubmit,\n formState,\n watch,\n reportType,\n ...rest\n}: Omit &\n Omit<\n ComponentProps>,\n 'children' | 'trigger' | 'reset' | 'unregister'\n > & {\n reportType: ReportTypes;\n }) {\n const { reportConfigs: existingReports } = useReportConfigs({\n reportType,\n });\n\n const requiredMsg = useContent(ContentId.Required);\n const duplicateNameMsg = useContent(ContentId.DuplicatedReportName);\n\n const nameError = formState.errors.reportName?.message;\n const numberOfItemsPerPageError =\n formState.errors.numberOfItemsPerPage?.message;\n const widgetsError = formState.errors.widgets?.message;\n const filtersError = formState.errors.filter?.message;\n const metricsError = formState.errors.metrics?.message;\n const groupByError = formState.errors.groupBy?.message;\n\n const reportId = watch('reportId');\n const reportName = watch('reportName');\n const groupBy = watch('groupBy');\n const metrics = watch('metrics');\n const numberOfItemsPerPage = watch('numberOfItemsPerPage');\n const sortBy = watch('sortBy');\n const isSortDescending = watch('isSortDescending');\n const roleIdsToShare = watch('roleIdsToShare');\n const sellerUserIdsToShare = watch('sellerUserIdsToShare');\n\n const [isMetricModalOpen, toggleMetricModal] = useToggle(false);\n const [advancedSettingsExpandedItem, setAdvancedSettingsExpandedItem] =\n useState(undefined);\n\n const onSubmit = useCallback(() => {\n let hasErrors = false;\n if (!reportName) {\n setError('reportName', { message: requiredMsg }, { shouldFocus: true });\n hasErrors = true;\n }\n\n if (metrics == null || metrics.length === 0) {\n setError('metrics', { message: requiredMsg }, { shouldFocus: true });\n hasErrors = true;\n }\n\n if (\n existingReports\n ?.filter((r) => r.reportId !== reportId)\n .some(\n (r) =>\n r.reportName.toLocaleUpperCase() === reportName.toLocaleUpperCase()\n )\n ) {\n setError(\n 'reportName',\n { message: duplicateNameMsg },\n { shouldFocus: true }\n );\n hasErrors = true;\n }\n\n if (!hasErrors) {\n handleSubmit(onSave)();\n }\n }, [\n reportName,\n metrics,\n reportId,\n existingReports,\n setError,\n requiredMsg,\n duplicateNameMsg,\n handleSubmit,\n onSave,\n ]);\n\n const { tagsMetadataNumeric } = useTagsForEntityType(\n reportType === ReportTypes.Inventory\n ? ActionOutboxEntityType.Listing\n : ActionOutboxEntityType.Sale,\n true\n );\n\n const { tagsMetadata: tagsMetadataEvent } = useTagsForEntityType(\n ActionOutboxEntityType.SellerEvent,\n true\n );\n\n const { tagsMetadata: tagsMetadataPurchase } = useTagsForEntityType(\n ActionOutboxEntityType.Purchase,\n true\n );\n\n const reportingTags = useMemo(() => {\n if (groupBy === ReportGroupBy.Event) {\n return [...(tagsMetadataNumeric ?? []), ...(tagsMetadataEvent ?? [])];\n } else if (groupBy === ReportGroupBy.PurchaseId) {\n return [...(tagsMetadataNumeric ?? []), ...(tagsMetadataPurchase ?? [])];\n }\n\n return tagsMetadataNumeric;\n }, [groupBy, tagsMetadataEvent, tagsMetadataNumeric, tagsMetadataPurchase]);\n\n const { value: customListingColumns = [] } = useServerUserSetting<\n CustomListingColumn[]\n >({\n id: UserSetting.InventoryCustomColumns,\n });\n const { value: customSaleColumns = [] } = useServerUserSetting<\n CustomSalesColumn[]\n >({\n id: UserSetting.SaleCustomColumns,\n });\n\n const { displayNames: metricDisplayNames } = useColumnDisplayName({\n columnIds: metrics ?? [],\n sectionType:\n reportType === ReportTypes.Inventory\n ? SectionType.ListingsReport\n : SectionType.SalesReport,\n });\n\n const filterColumnByGroupBy = useCallback(\n (columnId: string, groupBy: ReportGroupBy) => {\n if (reportType === ReportTypes.Inventory) {\n return isListingMetricConfigurableByGroupBy(columnId, groupBy);\n } else if (reportType === ReportTypes.Sale) {\n return isSaleMetricConfigurableByGroupBy(columnId, groupBy);\n }\n\n return true;\n },\n [reportType]\n );\n\n const metricsFiltered = useMemo(() => {\n // Filter out reporting tags that are later turned off reporting\n const customColumnsFiltered =\n reportType === ReportTypes.Inventory\n ? filterCustomColumnsForListingReport(\n customListingColumns,\n tagsMetadataNumeric\n )\n : filterCustomColumnsForSale(customSaleColumns, tagsMetadataNumeric);\n\n const presetColumnIds = Object.values(\n reportType === ReportTypes.Inventory\n ? LISTING_REPORT_TABLE_COLUMNS_CONFIG\n : SALE_REPORT_TABLE_COLUMNS_CONFIG\n )\n .map((i) => i.id)\n .filter((id) => filterColumnByGroupBy(id, groupBy));\n\n const activeTagNames = reportingTags?.map((t) => t.key) ?? [];\n const customColumnIds = customColumnsFiltered.map((c) => c.id);\n\n return metrics.filter(\n (m) =>\n presetColumnIds.includes(m) ||\n activeTagNames.includes(m) ||\n customColumnIds.includes(m)\n );\n }, [\n reportType,\n customListingColumns,\n tagsMetadataNumeric,\n customSaleColumns,\n reportingTags,\n metrics,\n filterColumnByGroupBy,\n groupBy,\n ]);\n\n const primaryColumnId = useMemo(() => {\n const GROUP_BY_TO_PRIMARY_COLUMN_ID =\n reportType === ReportTypes.Inventory\n ? GROUP_BY_TO_PRIMARY_COLUMN_ID_LISTING\n : GROUP_BY_TO_PRIMARY_COLUMN_ID_SALES;\n return GROUP_BY_TO_PRIMARY_COLUMN_ID[groupBy];\n }, [groupBy, reportType]);\n\n const groupByOptions =\n reportType === ReportTypes.Inventory\n ? REPORT_INVENTORY_GROUP_BY_TO_CID\n : REPORT_SALE_GROUP_BY_TO_CID;\n\n const sortByOptions = useMemo(() => {\n const options = metrics.reduce>((acc, metric, i) => {\n acc[metric] = metricDisplayNames[i];\n return acc;\n }, {});\n\n return options ?? {};\n }, [metricDisplayNames, metrics]);\n\n const onSortByChange = useCallback(\n (newValue: string) => {\n if (newValue !== groupBy) {\n setValue('sortBy', newValue);\n } else {\n // Special case: sort by groupBy (performer, venue, event)\n setValue('sortBy', null);\n }\n },\n [groupBy, setValue]\n );\n\n const onIsSortDescendingChange = useCallback(\n (newValue: string) => {\n setValue('isSortDescending', newValue === 'true');\n },\n [setValue]\n );\n\n return (\n <>\n \n }\n footer={\n <>\n {onClosed && (\n \n )}\n \n \n \n \n }\n onCancel={onClosed}\n >\n
    \n \n \n \n \n }\n >\n \n \n \n \n \n \n \n }\n >\n \n \n \n\n \n \n \n \n }\n >\n \n \n \n \n \n \n \n }\n >\n
    \n {metricsFiltered != null && metricsFiltered.length > 0 ? (\n <>\n {reportType === ReportTypes.Inventory ? (\n \n items={metricsFiltered ?? []}\n sectionType={SectionType.ListingsReport}\n tableType=\"inventory\"\n />\n ) : (\n \n items={metricsFiltered ?? []}\n sectionType={SectionType.SalesReport}\n tableType=\"sales\"\n />\n )}\n \n ) : (\n
    \n \n
    \n )}\n\n \n \n \n
    \n \n
    \n \n \n \n \n }\n >\n
    \n \n setValue('roleIdsToShare', value)}\n onSellerUserIdsChange={(value) =>\n setValue('sellerUserIdsToShare', value)\n }\n />\n
    \n \n
    \n \n {\n setAdvancedSettingsExpandedItem(\n activeExpandedItem as AdvancedSettingsAccordion\n );\n }}\n >\n \n \n \n \n \n {reportType === ReportTypes.Inventory && (\n \n \n \n \n }\n >\n \n \n \n )}\n \n }\n >\n {\n const v = parseInt(e.target.value);\n if (!isNaN(v) && v > 0) {\n if (v !== numberOfItemsPerPage) {\n setValue('numberOfItemsPerPage', v);\n }\n } else {\n setValue('numberOfItemsPerPage', null);\n }\n }}\n />\n \n \n\n \n \n \n \n }\n >\n
    \n \n \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n \n {isMetricModalOpen && (\n <>\n {reportType === ReportTypes.Inventory ? (\n \n ) : (\n \n )}\n \n )}\n \n );\n}\n","import { ComponentProps, useEffect } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { CatalogDataContextProvider } from 'src/contexts/CatalogDataContext';\nimport { FilterQueryContextProvider } from 'src/contexts/FilterQueryContext';\nimport { ReportConfig } from 'src/hooks/useReportConfigs';\nimport { getCatalogData as getCatalogDataForListing } from 'src/navigations/Routes/Inventory';\nimport { getCatalogData as getCatalogDataForSales } from 'src/navigations/Routes/Sales';\nimport {\n DefaultListingQuery,\n DefaultSaleQuery,\n EmptyListingQuery,\n EmptySaleQuery,\n} from 'src/utils/eventQueryUtils';\nimport { transformData } from 'src/utils/eventWithDataUtils';\nimport { ReportTypes } from 'src/utils/reportsUtils';\nimport {\n ActionOutboxEntityType,\n ListingQuery,\n SaleQuery,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { ReportBuilderDialogBody } from './ReportBuilderDialogBody';\n\nexport type ReportBuilderDialogProps = {\n report: ReportConfig;\n onSave: (data: ReportConfig) => void;\n} & ComponentProps;\n\nexport function ReportBuilderDialog({\n report,\n ...rest\n}: ReportBuilderDialogProps) {\n const methods = useForm({\n defaultValues: report,\n });\n\n useEffect(() => {\n methods.reset(report);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [report.reportId]);\n\n if (report.reportType === ReportTypes.Inventory) {\n return (\n \n initialQuery={DefaultListingQuery}\n emptyQuery={EmptyListingQuery}\n viewModeSettingId={UserSetting.InventoryPageViewMode}\n >\n \n entityType={ActionOutboxEntityType.Listing}\n queryKey=\"getCatalogForListing\"\n getCatalogData={(c, f) => getCatalogDataForListing(c, f, false)}\n transformEventData={transformData}\n >\n \n \n {...methods}\n {...rest}\n reportType={report.reportType}\n />\n \n \n \n );\n }\n\n return (\n \n initialQuery={DefaultSaleQuery}\n emptyQuery={EmptySaleQuery}\n viewModeSettingId={UserSetting.SalePageViewMode}\n >\n \n entityType={ActionOutboxEntityType.Sale}\n queryKey=\"getCatalogForSales\"\n getCatalogData={(c, f) => getCatalogDataForSales(c, f, false)}\n transformEventData={transformData}\n >\n \n \n {...methods}\n {...rest}\n reportType={report.reportType}\n />\n \n \n \n );\n}\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { id } from 'date-fns/locale';\nimport { castDraft, produce } from 'immer';\nimport { isEqual } from 'lodash-es';\nimport { useCallback, useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useContentContext } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { FormatContentIds } from 'src/utils/constants/formatContentIdDataMap';\nimport { ReportTypesV2 } from 'src/utils/reportsUtils';\nimport {\n ReportV2ConfigClient,\n ReportV2ConfigOfCommissionReportV2RequestAndReportWidgetTypesCommission,\n ReportV2ConfigOfInventoryReportV2RequestAndReportWidgetTypesInventory,\n ReportV2ConfigOfSalesReportV2RequestAndReportWidgetTypesSale,\n ReportV2ConfigOverride,\n} from 'src/WebApiController';\n\nexport const REPORT_CONFIG_V2_SCHEMA_VERSION = '2.0.0';\n\n/**\n * Map report config settings to their data types.\n *\n * Add to this type if new settings are added.\n */\ntype ReportConfigMap = {\n [ReportTypesV2.InventoryV2]: ReportV2ConfigOfInventoryReportV2RequestAndReportWidgetTypesInventory;\n [ReportTypesV2.SaleV2]: ReportV2ConfigOfSalesReportV2RequestAndReportWidgetTypesSale;\n [ReportTypesV2.Commission]: ReportV2ConfigOfCommissionReportV2RequestAndReportWidgetTypesCommission;\n};\n\n/**\n * Internal type to unify the different report config types.\n */\ntype ReportConfigTypeBase =\n | ReportV2ConfigOfInventoryReportV2RequestAndReportWidgetTypesInventory\n | ReportV2ConfigOfSalesReportV2RequestAndReportWidgetTypesSale\n | ReportV2ConfigOfCommissionReportV2RequestAndReportWidgetTypesCommission;\n\ntype ReportConfigType = ReportConfigMap[S];\n\n/**\n * Helper type for consumers of this hook to use for typing report configs more easily.\n */\nexport type ReportConfigV2 = ReportConfigTypeBase & {\n reportType: ReportTypesV2;\n};\n\ntype UseReportConfigsOptions = {\n reportType: ReportTypesV2;\n};\n\ntype ReportConfigInput = Omit<\n ReportConfigV2,\n 'schemaVersion' | 'reportId' | 'reportType'\n>;\n\n/**\n * Data and functions returned by the hook to help with CRUD of report config with different types\n */\ntype UseReportConfigs = {\n reportConfigs: ReportConfigV2[];\n isLoading: boolean;\n isFetching: boolean;\n deleteReportConfig: (reportId: number) => void;\n upsertReportConfig: (\n reportId: number | null,\n updatedConfig: Partial,\n isTemporary?: boolean\n ) => Promise;\n upsertReportOverride: (\n configOverride: ReportV2ConfigOverride,\n originalReportConfig:\n | ReportV2ConfigOfInventoryReportV2RequestAndReportWidgetTypesInventory\n | ReportV2ConfigOfSalesReportV2RequestAndReportWidgetTypesSale\n | ReportV2ConfigOfCommissionReportV2RequestAndReportWidgetTypesCommission\n ) => void;\n getReportConfigNameForDuplicate: (reportName: string) => string;\n};\n\nconst addTimezoneOffsetToSaleReportConfig = (\n reportNoOffset: ReportV2ConfigOfSalesReportV2RequestAndReportWidgetTypesSale\n): ReportV2ConfigOfSalesReportV2RequestAndReportWidgetTypesSale => {\n return {\n ...reportNoOffset,\n request: {\n ...reportNoOffset.request,\n filters: {\n ...reportNoOffset.request.filters,\n timezoneOffsetMins: new Date().getTimezoneOffset(),\n },\n },\n };\n};\n\nconst addTimezoneOffsetToListingReportConfig = (\n reportNoOffset: ReportV2ConfigOfInventoryReportV2RequestAndReportWidgetTypesInventory\n): ReportV2ConfigOfInventoryReportV2RequestAndReportWidgetTypesInventory => {\n return {\n ...reportNoOffset,\n request: {\n ...reportNoOffset.request,\n filters: {\n ...reportNoOffset.request.filters,\n timezoneOffsetMins: new Date().getTimezoneOffset(),\n },\n },\n };\n};\n\nconst addTimezoneOffsetToCommissionReportConfig = (\n reportNoOffset: ReportV2ConfigOfCommissionReportV2RequestAndReportWidgetTypesCommission\n): ReportV2ConfigOfCommissionReportV2RequestAndReportWidgetTypesCommission => {\n return {\n ...reportNoOffset,\n request: {\n ...reportNoOffset.request,\n filters: {\n ...reportNoOffset.request.filters,\n timezoneOffsetMins: new Date().getTimezoneOffset(),\n },\n },\n };\n};\n\n/**\n * Hook to help with CRUD of report config with different types\n * @param options\n * @returns\n */\nexport function useReportConfigsV2({\n reportType,\n}: UseReportConfigsOptions): UseReportConfigs {\n const { showErrorDialog, trackError } = useErrorBoundaryContext();\n const { formattedContentResolver } = useContentContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const reportClient = useMemo(\n () => new ReportV2ConfigClient(activeAccountWebClientConfig),\n [activeAccountWebClientConfig]\n );\n\n const queryClient = useQueryClient();\n const queryKey = useMemo(\n () => [\n 'useReportConfigsV2',\n activeAccountWebClientConfig.activeAccountId,\n reportType,\n ],\n [activeAccountWebClientConfig.activeAccountId, reportType]\n );\n\n // Query to get all report configs\n const reportConfigQuery = useQuery[] | null>({\n queryKey,\n queryFn: async () => {\n if (activeAccountWebClientConfig?.activeAccountId == null) {\n return null;\n }\n\n if (reportType === ReportTypesV2.InventoryV2) {\n return (await reportClient.getAvailableInventoryReportConfig())\n .filter((r) => r.schemaVersion === REPORT_CONFIG_V2_SCHEMA_VERSION)\n .map(addTimezoneOffsetToListingReportConfig) as ReportConfigType[];\n } else if (reportType === ReportTypesV2.Commission) {\n return (await reportClient.getAvailableCommissionReportConfig())\n .filter((r) => r.schemaVersion === REPORT_CONFIG_V2_SCHEMA_VERSION)\n .map(\n addTimezoneOffsetToCommissionReportConfig\n ) as ReportConfigType[];\n } else {\n return (await reportClient.getAvailableSaleReportConfig())\n .filter((r) => r.schemaVersion === REPORT_CONFIG_V2_SCHEMA_VERSION)\n .map(addTimezoneOffsetToSaleReportConfig) as ReportConfigType[];\n }\n },\n\n enabled: activeAccountWebClientConfig?.activeAccountId != null,\n meta: {\n onError: (err: ErrorTypes) => {\n trackError('ReportV2ConfigClient.getAvailableReportConfig', err, {\n trackErrorData: { reportType },\n });\n },\n },\n networkMode: 'offlineFirst',\n refetchOnWindowFocus: false,\n });\n\n const _reportConfigs = useMemo(() => {\n if (reportConfigQuery.data == null) {\n return [];\n }\n return reportConfigQuery.data;\n }, [reportConfigQuery.data]);\n\n // Mutation to upsert report config\n const upsertMutation = useMutation({\n mutationFn: async ({\n value,\n isTemporary,\n }: {\n value: ReportConfigType;\n isTemporary?: boolean;\n }) => {\n if (isTemporary) {\n // Do nothing, just let onMutate handle the optimistic update\n return value.reportId!;\n }\n\n if (reportType === ReportTypesV2.InventoryV2) {\n return await reportClient.upsertInventoryReportConfig(\n value as ReportV2ConfigOfInventoryReportV2RequestAndReportWidgetTypesInventory\n );\n } else if (reportType === ReportTypesV2.Commission) {\n throw new Error(\n 'Creating commission report config is not supported yet'\n );\n }\n return await reportClient.upsertSaleReportConfig(\n value as ReportV2ConfigOfSalesReportV2RequestAndReportWidgetTypesSale\n );\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n onMutate: ({ value }) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue =\n queryClient.getQueryData[]>(queryKey);\n\n const newValue =\n value.reportId == null\n ? [...(prevValue ?? []), value]\n : prevValue?.map((r) => (r.reportId === value.reportId ? value : r));\n queryClient.setQueryData[]>(queryKey, newValue);\n return { prevValue };\n },\n onError: (err: ErrorTypes, { value }, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('ReportV2ConfigClient.upsertReportConfig', err, {\n trackErrorData: { id, value },\n });\n },\n onSettled: (_data, _error, { isTemporary }) => {\n if (!isTemporary) {\n queryClient.invalidateQueries({ queryKey });\n }\n },\n });\n\n const upsertOverrideMutation = useMutation({\n mutationFn: async ({\n configOverride,\n originalReportConfig,\n }: {\n configOverride: ReportV2ConfigOverride;\n originalReportConfig:\n | ReportV2ConfigOfInventoryReportV2RequestAndReportWidgetTypesInventory\n | ReportV2ConfigOfSalesReportV2RequestAndReportWidgetTypesSale\n | ReportV2ConfigOfCommissionReportV2RequestAndReportWidgetTypesCommission;\n }) => {\n const reportConfigId = originalReportConfig.reportId!;\n configOverride.schemaVersion = originalReportConfig.schemaVersion;\n\n // Set override to null if it is the same as the original report config\n // and the original report config does not have an override.\n if (!originalReportConfig.hasMetricsOverride) {\n if (\n isEqual(\n originalReportConfig.request.aggregations,\n configOverride.request.aggregations\n )\n ) {\n configOverride.request.aggregations = null;\n }\n if (\n isEqual(\n originalReportConfig.request.rowGroupings,\n configOverride.request.rowGroupings\n )\n ) {\n configOverride.request.rowGroupings = null;\n }\n }\n\n await reportClient.upsertReportConfigOverride(\n reportConfigId,\n configOverride as ReportV2ConfigOverride\n );\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n onMutate: ({ originalReportConfig, configOverride }) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue =\n queryClient.getQueryData[]>(queryKey);\n\n const newReportConfig = {\n ...originalReportConfig,\n request: {\n ...originalReportConfig.request,\n aggregations:\n configOverride.request.aggregations ??\n originalReportConfig.request.aggregations,\n rowGroupings:\n configOverride.request.rowGroupings ??\n originalReportConfig.request.rowGroupings,\n },\n } as ReportConfigType;\n\n const newValue = prevValue?.map((r) =>\n r.reportId === newReportConfig.reportId ? newReportConfig : r\n );\n queryClient.setQueryData[]>(queryKey, newValue);\n return { prevValue };\n },\n onError: (\n err: ErrorTypes,\n { originalReportConfig, configOverride },\n context\n ) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('reportClient.upsertReportConfig', err, {\n trackErrorData: { id, originalReportConfig, configOverride },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n },\n });\n\n // Mutation to upsert report config\n const upsertReportOverride = useCallback(\n async (\n configOverride: ReportV2ConfigOverride,\n originalReportConfig:\n | ReportV2ConfigOfInventoryReportV2RequestAndReportWidgetTypesInventory\n | ReportV2ConfigOfSalesReportV2RequestAndReportWidgetTypesSale\n | ReportV2ConfigOfCommissionReportV2RequestAndReportWidgetTypesCommission\n ) => {\n return await upsertOverrideMutation.mutateAsync({\n configOverride: {\n ...configOverride,\n schemaVersion: REPORT_CONFIG_V2_SCHEMA_VERSION,\n },\n originalReportConfig,\n });\n },\n [upsertOverrideMutation]\n );\n\n const upsertReportConfig = (\n reportConfig: ReportConfigType,\n isTemporary?: boolean\n ) => {\n return upsertMutation.mutateAsync({ value: reportConfig, isTemporary });\n };\n\n // Mutation to delete report config\n const deleteMutation = useMutation({\n mutationFn: async ({ reportId }: { reportId: number }) => {\n return await reportClient.deleteReportConfig(reportId);\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n onMutate: ({ reportId }) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue =\n queryClient.getQueryData[]>(queryKey);\n\n queryClient.setQueryData[]>(\n queryKey,\n prevValue?.filter((r) => r.reportId !== reportId)\n );\n return { prevValue };\n },\n onError: (err: ErrorTypes, { reportId }, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('ReportV2ConfigClient.deleteReportConfig', err, {\n trackErrorData: { id, reportId },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n },\n });\n\n const deleteReportConfig = (reportId: number) => {\n deleteMutation.mutateAsync({ reportId });\n };\n\n // Array of report config only used within the hook that has the type\n // which can be directly set to the user setting.\n const reportConfigsInternal: ReportConfigType[] = _reportConfigs;\n\n const reportConfigs: ReportConfigV2[] = reportConfigsInternal.map(\n (r) =>\n ({\n ...r,\n reportType,\n }) satisfies ReportConfigV2\n );\n\n const getReportConfigNameForDuplicate = useCallback(\n (reportName: string) => {\n const reportNames = reportConfigsInternal.map((r) => r.reportName);\n const defaultName = formattedContentResolver(\n FormatContentIds[FormatContentId.CopyOf].id,\n reportName,\n FormatContentIds[FormatContentId.CopyOf].defaultValue\n ) as string;\n if (!reportNames.includes(defaultName)) {\n return defaultName;\n }\n\n let newName = defaultName;\n let i = 2;\n while (reportNames.includes(newName)) {\n newName = `${defaultName} (${i})`;\n i++;\n }\n return newName;\n },\n [formattedContentResolver, reportConfigsInternal]\n );\n\n return {\n reportConfigs,\n isLoading: reportConfigQuery.isLoading,\n isFetching: reportConfigQuery.isFetching,\n deleteReportConfig: (reportId: number) => {\n deleteReportConfig(reportId);\n },\n upsertReportConfig: (\n reportId: number | null,\n configInput: Partial,\n isTemporary?: boolean\n ) => {\n // Create new\n if (reportId == null) {\n // Force conversion is applied here because the type of the report config\n // Depends on the consumer to pass in the right set of widgets and filter types.\n const newConfig = castDraft({\n ...configInput,\n schemaVersion: REPORT_CONFIG_V2_SCHEMA_VERSION,\n reportId: null,\n } as ReportConfigType);\n\n return upsertReportConfig(newConfig as ReportConfigType);\n }\n\n // Update existing\n const configToUpdate = reportConfigsInternal.find(\n (r) => r.reportId === reportId\n );\n if (!configToUpdate) {\n return new Promise((resolve) => resolve(null));\n }\n const initDraft = castDraft(configToUpdate as ReportConfigType);\n\n const updatedDraft = produce(initDraft, (draft) => {\n if (configInput.reportName != null) {\n draft.reportName = configInput.reportName;\n }\n\n draft.ownerDisplayName = configInput.ownerDisplayName ?? '';\n draft.widgets = castDraft(configInput.widgets ?? null);\n\n draft.request = castDraft(configInput.request!);\n draft.sellerUserIdsToShare = configInput.sellerUserIdsToShare ?? [];\n draft.roleIdsToShare = configInput.roleIdsToShare ?? [];\n draft.viewableFilterItemIds = configInput.viewableFilterItemIds ?? [];\n draft.editableFilterItemIds = configInput.editableFilterItemIds ?? [];\n draft.hiddenFilterItemIds = configInput.hiddenFilterItemIds ?? [];\n });\n\n return upsertReportConfig(\n updatedDraft as ReportConfigType,\n isTemporary\n );\n },\n upsertReportOverride,\n getReportConfigNameForDuplicate,\n };\n}\n","import { isEqual } from 'lodash-es';\nimport { useMemo } from 'react';\nimport { FilterToolbarItemId } from 'src/components/Filters';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { DateRangeSelector } from 'src/core/POS/DateRangeSelector';\nimport { PosEnumMultiSelect } from 'src/core/POS/PosMultiSelect/PosEnumMultiSelect';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n MARKET_PLACE_TO_CID,\n SALES_STATUS_TO_CID,\n YES_NO_ENUM_FILTER_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport {\n getDisabledDatesForTimeFrameFilter,\n SaleDateRangeRelativePresetNames,\n StandardDateRangePresetNames,\n} from 'src/utils/dateTimeUtils';\nimport { FromYesNoEnum, ToYesNoEnum } from 'src/utils/eventQueryUtils';\nimport {\n EventTimeFrameFilter,\n Marketplace,\n Permission,\n UIReportCommissionQuery,\n} from 'src/WebApiController';\n\nimport { EventDateSelector } from '../Events/EventDateSelector/EventDateSelector';\nimport { SellerAccountEmployeeSelector } from '../Selectors/SellerAccountEmployeeSelector';\n\nexport const commissionMandatoryFiltersToShow: FilterToolbarItemId[] = [\n 'eventDates',\n];\n\nexport function useCommissionFilters() {\n const { loginContext } = useAppContext();\n\n const { initialQuery, tempQuery, setTempQuery } =\n useFilterQueryContext();\n\n const commissionFilters = useMemo(() => {\n return {\n titleContentId: ContentId.Commission,\n type: 'row',\n items: [\n {\n filterId: 'purchaseCommissionUserId' as FilterToolbarItemId,\n labelContentId: ContentId.Commissioner,\n filterQueryKeys: [\n 'purchaseCommissionUserId',\n ] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n purchaseCommissionUserId !==\n tempQuery.purchaseCommissionUserId\n ) {\n setTempQuery({\n ...tempQuery,\n purchaseCommissionUserId,\n });\n }\n }}\n />\n ),\n },\n {\n filterId: 'isCommissionEligible' as const,\n labelContentId: ContentId.CommissionEligible,\n filterQueryKeys: ['isCommissionEligible'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !== ToYesNoEnum(tempQuery.isCommissionEligible)\n ) {\n setTempQuery({\n ...tempQuery,\n isCommissionEligible: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n {\n filterId: 'commissionEligibilityDates' as FilterToolbarItemId,\n labelContentId: ContentId.CommissionEligibilityDate,\n filterQueryKeys: [\n 'commissionEligibilityDates',\n ] as FilterToolbarItemId[],\n filterItem: (\n \n setTempQuery({\n ...tempQuery,\n commissionEligibilityDates: value,\n })\n }\n />\n ),\n },\n ],\n };\n }, [initialQuery.commissionEligibilityDates, setTempQuery, tempQuery]);\n\n const eventFilters = useMemo(() => {\n return {\n titleContentId: ContentId.Events,\n items: [\n {\n filterId: 'eventDates' as FilterToolbarItemId,\n labelContentId: ContentId.EventDate,\n filterQueryKeys: [\n 'eventDates',\n 'eventTimeFrameFilter',\n ] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n eventTimeFrameFilter !== tempQuery.eventTimeFrameFilter ||\n !isEqual(dateRange, tempQuery.eventDates)\n ) {\n let isSortDescending = tempQuery.isSortDescending;\n if (eventTimeFrameFilter !== EventTimeFrameFilter.Future) {\n // When sorting by past or by all - we do not want to sort by date asc (as that would put the oldest event first)\n // Changing this to desc\n isSortDescending = true;\n } else {\n isSortDescending = initialQuery.isSortDescending;\n }\n\n setTempQuery({\n ...tempQuery,\n eventTimeFrameFilter: eventTimeFrameFilter ?? null,\n eventDates: dateRange ?? null,\n isSortDescending,\n });\n }\n }}\n />\n ),\n },\n {\n filterId: 'lastSaleDates' as FilterToolbarItemId,\n labelContentId: ContentId.LastSaleDates,\n filterQueryKeys: ['lastSaleDates'] as FilterToolbarItemId[],\n filterItem: (\n \n setTempQuery({\n ...tempQuery,\n saleDates: value,\n })\n }\n disabledDay={(d) =>\n getDisabledDatesForTimeFrameFilter(\n d,\n tempQuery.eventTimeFrameFilter\n )\n }\n />\n ),\n },\n ],\n };\n }, [\n initialQuery.isSortDescending,\n initialQuery.saleDates,\n setTempQuery,\n tempQuery,\n ]);\n\n return {\n filters: [\n eventFilters,\n {\n titleContentId: ContentId.Fulfillment,\n items: [\n {\n filterId: 'saleStatuses' as FilterToolbarItemId,\n labelContentId: ContentId.Status,\n filterQueryKeys: ['saleStatuses'] as FilterToolbarItemId[],\n filterItem: (\n {\n setTempQuery({\n ...tempQuery,\n saleStatuses,\n });\n }}\n />\n ),\n },\n {\n filterId: 'fulfillmentDates' as FilterToolbarItemId,\n labelContentId: ContentId.FulfillmentDate,\n filterQueryKeys: ['fulfillmentDates'] as FilterToolbarItemId[],\n filterItem: (\n \n setTempQuery({\n ...tempQuery,\n fulfillmentDates: value,\n })\n }\n />\n ),\n },\n ],\n },\n {\n titleContentId: ContentId.WhenAndWhere,\n type: 'row',\n items: [\n {\n filterId: 'soldOnMarketplace' as FilterToolbarItemId,\n labelContentId: ContentId.Marketplace,\n filterQueryKeys: ['soldOnMarketplace'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (soldOnMarketplace !== tempQuery.soldOnMarketplace) {\n setTempQuery({\n ...tempQuery,\n soldOnMarketplace,\n });\n }\n }}\n valueOptionsContent={(\n loginContext?.user?.activeAccount?.marketplaceSettings?.map(\n (m) => m.mkp\n ) ?? [Marketplace.StubHub]\n )\n .concat(Marketplace.Offline)\n .reduce(\n (cur, m) => {\n cur[m] = MARKET_PLACE_TO_CID[m];\n return cur;\n },\n {} as Record\n )}\n />\n ),\n },\n {\n filterId: 'saleDates' as FilterToolbarItemId,\n labelContentId: ContentId.SaleDate,\n filterQueryKeys: ['saleDates'] as FilterToolbarItemId[],\n filterItem: (\n {\n setTempQuery({\n ...tempQuery,\n saleDates: value,\n });\n }}\n useRelativePresets\n />\n ),\n },\n ],\n },\n {\n titleContentId: ContentId.Payment,\n requiredPermissions: [Permission.Sales_ViewPaymentState],\n type: 'row',\n items: [\n {\n filterId: 'paymentDates' as FilterToolbarItemId,\n labelContentId: ContentId.PaymentDate,\n filterQueryKeys: ['paymentDates'] as FilterToolbarItemId[],\n filterItem: (\n \n setTempQuery({\n ...tempQuery,\n paymentDates: value,\n })\n }\n />\n ),\n },\n ],\n },\n commissionFilters,\n ],\n };\n}\n","import { isEqual } from 'lodash-es';\nimport { useMemo } from 'react';\nimport { useInternalNotesFilter } from 'src/components/Filters/InternalNotesFilter';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { DateRangeSelector } from 'src/core/POS/DateRangeSelector';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n YES_NO_ENUM_FILTER_TO_CID,\n YES_NO_INVERTED_ENUM_FILTER_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { InhandDateRangePresetNames } from 'src/utils/dateTimeUtils';\nimport { FromYesNoEnum, ToYesNoEnum } from 'src/utils/eventQueryUtils';\nimport {\n ActionOutboxEntityType,\n Feature,\n ListingQuery,\n UIReportV2ListingQuery,\n} from 'src/WebApiController';\n\nimport {\n FilterToolbarGroup,\n FilterToolbarItem,\n FilterToolbarItemId,\n} from '../Filters';\nimport { RowFilter } from '../Filters/RowFilter';\nimport { SectionFilter } from '../Filters/SectionFilter';\nimport { PriceUpdatedDateStackedFilter } from '../Filters/StackedFilter/PriceUpdatedDateStackedFilter';\nimport { CurrencyFilterMultiSelector } from '../Selectors/CurrencyFilterSelector';\nimport { useCommonEventFilters } from './useCommonEventFilters';\nimport { usePurchaseInfoFilters } from './usePurchaseInfoFilters';\n\nexport const listingsReportMandatoryFiltersToShow: FilterToolbarItemId[] = [\n 'eventDates',\n];\n\nconst PurchaseInfoFilterIdsToShow: FilterToolbarItemId[] = [\n 'purchaseVendorId',\n 'purchaseVendorAccountIds',\n 'purchaseBuyerId',\n 'purchaseDates',\n];\n\nexport function useListingReportFilters({\n isHorizontalLayout,\n showCatalogFilters,\n}: {\n isHorizontalLayout?: boolean;\n showCatalogFilters?: boolean;\n}) {\n const { initialQuery, tempQuery, setTempQuery } =\n useFilterQueryContext();\n\n const hasAutoPricingFeature = useUserHasFeature(Feature.AutoPricing);\n\n const hasAutoFulfillSetting = useUserHasFeature(Feature.AutoFulfillSetting);\n\n const purchaseInfoFilters = usePurchaseInfoFilters({\n query: tempQuery,\n setQuery: setTempQuery,\n });\n\n const supportedPurchaseInfoFilters = useMemo(() => {\n const items = purchaseInfoFilters.items.filter((item) =>\n PurchaseInfoFilterIdsToShow.includes(item.filterId)\n );\n\n return {\n ...purchaseInfoFilters,\n items,\n };\n }, [purchaseInfoFilters]);\n\n const autoPricingFilter = useMemo(\n () => [\n {\n filterId: 'isAutoPricingEnabled',\n labelContentId: ContentId.AutoPricingEnabled,\n filterQueryKeys: ['isAutoPricingEnabled'],\n filterItem: (\n {\n if (\n yesNoEnumValue !== ToYesNoEnum(tempQuery.isAutoPricingEnabled)\n ) {\n setTempQuery({\n ...tempQuery,\n isAutoPricingEnabled: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ],\n [setTempQuery, tempQuery]\n );\n\n const adminHoldFilter = useMemo(\n () =>\n [\n {\n filterId: 'isAdminHold',\n labelContentId: ContentId.Hold,\n filterQueryKeys: ['isAdminHold'],\n filterItem: (\n {\n if (yesNoEnumValue !== ToYesNoEnum(tempQuery.isAdminHold)) {\n setTempQuery({\n ...tempQuery,\n isAdminHold: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ] as FilterToolbarItem[],\n [setTempQuery, tempQuery]\n );\n\n const seatingFilters = useMemo(\n () => ({\n titleContentId: ContentId.Seating,\n type: 'row',\n items: [\n {\n filterId: 'sectionContains',\n labelContentId: ContentId.Section,\n filterQueryKeys: ['sectionEquals', 'sectionContains'],\n filterItem: (\n \n ),\n },\n {\n filterId: 'rowContains',\n labelContentId: ContentId.Row,\n filterQueryKeys: ['rowEquals', 'rowContains'],\n filterItem: (\n \n ),\n },\n ],\n }),\n [isHorizontalLayout, setTempQuery, tempQuery]\n );\n\n const eventFilters = useCommonEventFilters({\n showCatalogFilters,\n additionalFilters: [],\n });\n\n const notesFilters = useInternalNotesFilter({\n entityType: ActionOutboxEntityType.Listing,\n isHorizontalLayout,\n });\n\n const filters = useMemo(\n () =>\n [\n eventFilters,\n {\n titleContentId: ContentId.Pricing,\n type: 'row',\n items: [\n ...(hasAutoPricingFeature ? autoPricingFilter : []),\n\n {\n filterId: 'lastPriceUpdateDates' as FilterToolbarItemId,\n filterQueryKeys: [\n 'lastPriceUpdateDates',\n 'lastPriceNoUpdateDates',\n ] as FilterToolbarItemId[],\n labelContentId: ContentId.PriceDateFilterTitle,\n filterItem: ,\n },\n\n {\n labelContentId: ContentId.IsPricedByMarketplace,\n filterId: 'isPricedByMarketplace' as FilterToolbarItemId,\n filterQueryKeys: [\n 'isPricedByMarketplace',\n ] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !==\n ToYesNoEnum(tempQuery.isPricedByMarketplace)\n ) {\n setTempQuery({\n ...tempQuery,\n isPricedByMarketplace: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n\n {\n filterId: 'currencyCodes' as FilterToolbarItemId,\n labelContentId: ContentId.Currency,\n filterQueryKeys: ['currencyCodes'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (!isEqual(tempQuery.currencyCodes, newCurrencyCodes)) {\n setTempQuery({\n ...tempQuery,\n currencyCodes: newCurrencyCodes?.length\n ? newCurrencyCodes\n : null,\n });\n }\n }}\n enableEmptySelection\n />\n ),\n },\n ],\n },\n\n {\n titleContentId: ContentId.Broadcast,\n type: 'row',\n items: [\n {\n filterId: 'isListed' as FilterToolbarItemId,\n labelContentId: ContentId.Broadcasted,\n filterQueryKeys: ['isListed'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (yesNoEnumValue !== ToYesNoEnum(tempQuery.isListed)) {\n setTempQuery({\n ...tempQuery,\n isListed: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ...adminHoldFilter,\n {\n filterId: 'isDuplicate' as FilterToolbarItemId,\n labelContentId: ContentId.IsDuplicate,\n filterQueryKeys: ['isDuplicate'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (yesNoEnumValue !== ToYesNoEnum(tempQuery.isDuplicate)) {\n setTempQuery({\n ...tempQuery,\n isDuplicate: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ],\n },\n {\n titleContentId: ContentId.Fulfillment,\n type: 'row',\n items: [\n {\n filterId: 'isPredelivered' as FilterToolbarItemId,\n labelContentId: ContentId.PreDelivered,\n type: 'row',\n filterQueryKeys: ['isPredelivered'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !== ToYesNoEnum(tempQuery.isPredelivered)\n ) {\n setTempQuery({\n ...tempQuery,\n isPredelivered: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n {\n filterId: 'inHandDates' as const,\n labelContentId: ContentId.InHand,\n filterQueryKeys: ['inHandDates'] as FilterToolbarItemId[],\n filterItem: (\n \n setTempQuery({\n ...tempQuery,\n inHandDates: value,\n })\n }\n />\n ),\n },\n {\n filterId: 'isSeatSaver' as const,\n labelContentId: ContentId.Placeholder,\n filterQueryKeys: ['isSeatSaver'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (yesNoEnumValue !== ToYesNoEnum(tempQuery.isSeatSaver)) {\n setTempQuery({\n ...tempQuery,\n isSeatSaver: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ],\n },\n {\n titleContentId: ContentId.Mappings,\n type: 'row',\n items: [\n {\n filterId: 'isMapped' as FilterToolbarItemId,\n labelContentId: ContentId.EventMapped,\n filterQueryKeys: ['isMapped'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (yesNoEnumValue !== ToYesNoEnum(tempQuery.isMapped)) {\n setTempQuery({\n ...tempQuery,\n isMapped: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n {\n filterId: 'isSeatingUnmapped' as FilterToolbarItemId,\n labelContentId: ContentId.SeatingMapped,\n filterQueryKeys: ['isSeatingUnmapped'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !==\n ToYesNoEnum(tempQuery.isSeatingUnmapped)\n ) {\n setTempQuery({\n ...tempQuery,\n isSeatingUnmapped: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_INVERTED_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ],\n },\n seatingFilters,\n supportedPurchaseInfoFilters,\n notesFilters,\n ]\n .filter((f) => f)\n .map((f) => f!),\n [\n eventFilters,\n hasAutoPricingFeature,\n autoPricingFilter,\n tempQuery,\n adminHoldFilter,\n initialQuery.inHandDates,\n seatingFilters,\n supportedPurchaseInfoFilters,\n notesFilters,\n setTempQuery,\n ]\n );\n\n return { filters };\n}\n","import { isEqual } from 'lodash-es';\nimport { useMemo } from 'react';\nimport {\n FilterToolbarGroup,\n FilterToolbarItemId,\n} from 'src/components/Filters';\nimport { useInternalNotesFilter } from 'src/components/Filters/InternalNotesFilter';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { DateRangeSelector } from 'src/core/POS/DateRangeSelector';\nimport { PosEnumMultiSelect } from 'src/core/POS/PosMultiSelect/PosEnumMultiSelect';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n MARKET_PLACE_TO_CID,\n MARKETPLACE_SALE_PAYMENT_STATE_TO_CID,\n SALES_STATUS_TO_CID,\n YES_NO_ENUM_FILTER_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport {\n InhandDateRangePresetNames,\n SaleDateRangeRelativePresetNames,\n StandardDateRangePresetNames,\n} from 'src/utils/dateTimeUtils';\nimport { FromYesNoEnum, ToYesNoEnum } from 'src/utils/eventQueryUtils';\nimport {\n ActionOutboxEntityType,\n Feature,\n Marketplace,\n Permission,\n UIReportV2SaleQuery,\n} from 'src/WebApiController';\n\nimport { RowFilter } from '../Filters/RowFilter';\nimport { SectionFilter } from '../Filters/SectionFilter';\nimport { CurrencyFilterMultiSelector } from '../Selectors/CurrencyFilterSelector';\nimport { SellerAccountEmployeeSelector } from '../Selectors/SellerAccountEmployeeSelector';\nimport { useCommonEventFilters } from './useCommonEventFilters';\n\nexport const saleReportMandatoryFiltersToShow: FilterToolbarItemId[] = [\n 'eventDates',\n 'saleStatuses',\n];\n\nexport function useSaleReportFilters({\n isHorizontalLayout,\n showCatalogFilters,\n}: {\n isHorizontalLayout?: boolean;\n showCatalogFilters?: boolean;\n}) {\n const { loginContext } = useAppContext();\n\n const hasAutoFulfillSetting = useUserHasFeature(Feature.AutoFulfillSetting);\n\n const { initialQuery, tempQuery, setTempQuery } =\n useFilterQueryContext();\n\n const notesFilters = useInternalNotesFilter({\n entityType: ActionOutboxEntityType.Sale,\n isHorizontalLayout,\n });\n\n const seatingFilters = useMemo(\n () => ({\n titleContentId: ContentId.Seating,\n type: 'row',\n items: [\n {\n filterId: 'sectionContains',\n labelContentId: ContentId.Section,\n filterQueryKeys: ['sectionEquals', 'sectionContains'],\n filterItem: (\n \n ),\n },\n {\n filterId: 'rowContains',\n labelContentId: ContentId.Row,\n filterQueryKeys: ['rowEquals', 'rowContains'],\n filterItem: (\n \n ),\n },\n ],\n }),\n [isHorizontalLayout, setTempQuery, tempQuery]\n );\n\n const eventFilters = useCommonEventFilters({\n showCatalogFilters,\n additionalFilters: [],\n });\n\n return {\n filters: [\n eventFilters,\n {\n titleContentId: ContentId.Fulfillment,\n items: [\n {\n filterId: 'saleStatuses' as FilterToolbarItemId,\n labelContentId: ContentId.Status,\n filterQueryKeys: ['saleStatuses'] as FilterToolbarItemId[],\n filterItem: (\n {\n setTempQuery({\n ...tempQuery,\n saleStatuses,\n });\n }}\n />\n ),\n },\n {\n filterId: 'inHandDates' as FilterToolbarItemId,\n labelContentId: ContentId.InHand,\n filterQueryKeys: ['inHandDates'] as FilterToolbarItemId[],\n filterItem: (\n \n setTempQuery({\n ...tempQuery,\n inHandDates: value,\n })\n }\n />\n ),\n },\n {\n filterId: 'fulfillerId' as FilterToolbarItemId,\n labelContentId: ContentId.FulfilledBy,\n filterQueryKeys: ['fulfillerSellerUserId'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (newId !== tempQuery.fulfillerSellerUserId) {\n setTempQuery({\n ...tempQuery,\n fulfillerSellerUserId: newId,\n });\n }\n }}\n />\n ),\n },\n {\n filterId: 'isSeatSaver' as FilterToolbarItemId,\n labelContentId: ContentId.Placeholder,\n filterQueryKeys: ['isSeatSaver'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (yesNoEnumValue !== ToYesNoEnum(tempQuery.isSeatSaver)) {\n setTempQuery({\n ...tempQuery,\n isSeatSaver: FromYesNoEnum(yesNoEnumValue),\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n {\n filterId: 'fulfillmentDates' as FilterToolbarItemId,\n labelContentId: ContentId.FulfillmentDate,\n filterQueryKeys: ['fulfillmentDates'] as FilterToolbarItemId[],\n filterItem: (\n \n setTempQuery({\n ...tempQuery,\n fulfillmentDates: value,\n })\n }\n />\n ),\n },\n ...(hasAutoFulfillSetting\n ? [\n {\n filterId: 'isNoFulfill' as FilterToolbarItemId,\n labelContentId: ContentId.AutoFulfill,\n type: 'row',\n filterQueryKeys: ['isNoFulfill'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n yesNoEnumValue !==\n ToYesNoEnum(\n // the ui is the inverse of isNoFulfil\n tempQuery.isNoFulfill == null\n ? null\n : !tempQuery.isNoFulfill\n )\n ) {\n const v = FromYesNoEnum(yesNoEnumValue);\n setTempQuery({\n ...tempQuery,\n isNoFulfill: v == null ? null : !v, // the ui is the inverse of isNoFulfil\n });\n }\n }}\n valueOptionsContent={YES_NO_ENUM_FILTER_TO_CID}\n />\n ),\n },\n ]\n : []),\n {\n filterId: 'cancellationDates' as FilterToolbarItemId,\n labelContentId: ContentId.CancellationDate,\n filterQueryKeys: ['cancellationDates'] as FilterToolbarItemId[],\n filterItem: (\n \n setTempQuery({\n ...tempQuery,\n cancellationDates: value,\n })\n }\n />\n ),\n },\n ],\n },\n {\n titleContentId: ContentId.WhenAndWhere,\n type: 'row',\n items: [\n {\n filterId: 'soldOnMarketplace' as FilterToolbarItemId,\n labelContentId: ContentId.Marketplace,\n filterQueryKeys: ['soldOnMarketplace'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (soldOnMarketplace !== tempQuery.soldOnMarketplace) {\n setTempQuery({\n ...tempQuery,\n soldOnMarketplace,\n });\n }\n }}\n valueOptionsContent={(\n loginContext?.user?.activeAccount?.marketplaceSettings?.map(\n (m) => m.mkp\n ) ?? [Marketplace.StubHub]\n )\n .concat(Marketplace.Offline)\n .reduce(\n (cur, m) => {\n cur[m] = MARKET_PLACE_TO_CID[m];\n return cur;\n },\n {} as Record\n )}\n />\n ),\n },\n {\n filterId: 'saleDates' as FilterToolbarItemId,\n labelContentId: ContentId.SaleDate,\n filterQueryKeys: ['saleDates'] as FilterToolbarItemId[],\n filterItem: (\n {\n setTempQuery({\n ...tempQuery,\n saleDates: value,\n });\n }}\n useRelativePresets\n />\n ),\n },\n ],\n },\n {\n titleContentId: ContentId.Payment,\n requiredPermissions: [Permission.Sales_ViewPaymentState],\n type: 'row',\n items: [\n {\n filterId: 'marketplacePaymentState' as FilterToolbarItemId,\n labelContentId: ContentId.Payment,\n filterQueryKeys: [\n 'marketplacePaymentState',\n ] as FilterToolbarItemId[],\n filterItem: (\n {\n if (\n marketplacePaymentState !==\n tempQuery.marketplacePaymentState\n ) {\n setTempQuery({\n ...tempQuery,\n marketplacePaymentState: marketplacePaymentState,\n });\n }\n }}\n valueOptionsContent={MARKETPLACE_SALE_PAYMENT_STATE_TO_CID}\n />\n ),\n },\n {\n filterId: 'paymentDates' as FilterToolbarItemId,\n labelContentId: ContentId.PaymentDate,\n filterQueryKeys: ['paymentDates'] as FilterToolbarItemId[],\n filterItem: (\n \n setTempQuery({\n ...tempQuery,\n paymentDates: value,\n })\n }\n />\n ),\n },\n {\n filterId: 'currencyCodes' as FilterToolbarItemId,\n labelContentId: ContentId.Currency,\n filterQueryKeys: ['currencyCodes'] as FilterToolbarItemId[],\n filterItem: (\n {\n if (!isEqual(tempQuery.currencyCodes, newCurrencyCodes)) {\n setTempQuery({\n ...tempQuery,\n currencyCodes: newCurrencyCodes?.length\n ? newCurrencyCodes\n : null,\n });\n }\n }}\n enableEmptySelection\n />\n ),\n },\n ],\n },\n seatingFilters,\n ...(notesFilters ? [notesFilters] : []),\n ],\n };\n}\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport isEqual from 'react-fast-compare';\nimport { useFormContext } from 'react-hook-form';\nimport { PerformerVenueList } from 'src/components/Events/PerformerVenueList';\nimport { FilterDropdownItem } from 'src/components/Filters';\nimport { useFiltersHelpers } from 'src/components/FilterToolbar/useFiltersHelpers';\nimport {\n FilterToolbarEmbedded,\n FilterToolbarEmbeddedProps,\n} from 'src/components/FilterToolbarEmbedded';\nimport {\n commissionMandatoryFiltersToShow,\n useCommissionFilters,\n} from 'src/components/MainFilterBar/useCommissionFilters';\nimport { listingsMandatoryFiltersToShow } from 'src/components/MainFilterBar/useListingFilters';\nimport {\n listingsReportMandatoryFiltersToShow,\n useListingReportFilters,\n} from 'src/components/MainFilterBar/useListingReportFilters';\nimport { saleMandatoryFiltersToShow } from 'src/components/MainFilterBar/useSaleFilters';\nimport {\n saleReportMandatoryFiltersToShow,\n useSaleReportFilters,\n} from 'src/components/MainFilterBar/useSaleReportFilters';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { Button, Popover, Stack } from 'src/core/ui';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n DefaultCommissionQuery,\n DefaultReportV2ListingQuery,\n DefaultReportV2SaleQuery,\n} from 'src/utils/eventQueryUtils';\nimport {\n ReportFilterEditability,\n ReportPerformerVenueFilterItemId,\n} from 'src/utils/reportsFilterUtils';\nimport { ReportTypesV2 } from 'src/utils/reportsUtils';\nimport {\n ActionOutboxEntityType,\n UIReportCommissionQuery,\n UIReportV2ListingQuery,\n UIReportV2SaleQuery,\n} from 'src/WebApiController';\n\nimport * as styles from './ReportBuilderDialog.css';\nimport {\n getEditability,\n updateFilterItemIds,\n} from './ReportBuilderFilterInput.utils';\n\ntype ReportFilterInputProps = {\n onSubmitFilter?: () => void;\n} & Pick<\n FilterToolbarEmbeddedProps,\n | 'direction'\n | 'performerVenueFilter'\n | 'filtersListHeader'\n | 'addFilterDropdownProps'\n | 'flexWrap'\n | 'viewerMode'\n | 'disabled'\n>;\n\nconst FILTERS_FIELD = 'request.filters';\n\nexport function ReportBuilderFilterInputV2({\n reportType,\n direction,\n ...filterInputProps\n}: {\n reportType: ReportTypesV2;\n} & ReportFilterInputProps) {\n const { watch } = useFormContext();\n\n const hiddenFilterItemIds = watch('hiddenFilterItemIds');\n const viewableFilterItemIds = watch('viewableFilterItemIds');\n const editableFilterItemIds = watch('editableFilterItemIds');\n\n const performerFilterEditability = getEditability(\n editableFilterItemIds,\n viewableFilterItemIds,\n hiddenFilterItemIds,\n ReportPerformerVenueFilterItemId.PerformerIds\n );\n const venueFilterEditability = getEditability(\n editableFilterItemIds,\n viewableFilterItemIds,\n hiddenFilterItemIds,\n ReportPerformerVenueFilterItemId.VenueIds\n );\n\n // const hidePerformerVenueFilter =\n // embeddedDisplayOnly &&\n // (performerFilterEditability ?? DEFAULT_REPORT_FILTER_EDITABILITY) ===\n // ReportFilterEditability.Hidden &&\n // (venueFilterEditability ?? DEFAULT_REPORT_FILTER_EDITABILITY) ===\n // ReportFilterEditability.Hidden;\n\n return (\n \n {reportType === ReportTypesV2.InventoryV2 ? (\n <>\n \n \n ) : reportType === ReportTypesV2.Commission ? (\n <>\n \n \n ) : (\n <>\n {/* {!embeddedDisplayOnly && (\n \n )} */}\n \n // )\n // }\n />\n \n )}\n \n );\n}\n\nconst ListingFilterInput = ({\n onSubmitFilter,\n ...filterToolbarProps\n}: ReportFilterInputProps) => {\n const { setValue, watch } = useFormContext();\n\n const formFilter = watch(FILTERS_FIELD);\n const hiddenFilterItemIds = watch('hiddenFilterItemIds');\n const viewableFilterItemIds = watch('viewableFilterItemIds');\n const editableFilterItemIds = watch('editableFilterItemIds');\n\n const [selectedFilters, setSelectedFilters] =\n useState();\n\n const {\n initialQuery,\n tempQuery,\n filterQuery,\n setFilterQuery,\n setTempQuery,\n resetTempQuery,\n } = useFilterQueryContext();\n const { filters } = useListingReportFilters({});\n\n const onSubmitFilterHandler = useCallback(() => {\n setFilterQuery(tempQuery);\n onSubmitFilter?.();\n }, [onSubmitFilter, setFilterQuery, tempQuery]);\n\n useEffect(() => {\n if (\n formFilter != null &&\n !isEqual(formFilter as UIReportV2ListingQuery, tempQuery)\n ) {\n setTempQuery(formFilter as UIReportV2ListingQuery);\n setFilterQuery(formFilter as UIReportV2ListingQuery);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n onSubmitFilterHandler();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tempQuery]);\n\n useEffect(() => {\n if (!isEqual(formFilter as UIReportV2ListingQuery, filterQuery)) {\n setValue(FILTERS_FIELD, filterQuery);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filterQuery]);\n\n const { appliedFilters } = useFiltersHelpers({\n filters,\n activeQuery: tempQuery,\n mandatoryFiltersToShow: listingsReportMandatoryFiltersToShow,\n initialQuery: DefaultReportV2ListingQuery,\n });\n\n const filtersWithEditability = useMemo(\n () =>\n filters.map((filterGroup) => ({\n ...filterGroup,\n items: filterGroup.items.map((filterItem) => ({\n ...filterItem,\n reportFilterEditability: getEditability(\n editableFilterItemIds,\n viewableFilterItemIds,\n hiddenFilterItemIds,\n filterItem.filterId\n ),\n })),\n })),\n [editableFilterItemIds, filters, hiddenFilterItemIds, viewableFilterItemIds]\n );\n\n const onEditabilityChange = useCallback(\n (filterId: string | string[], editability: ReportFilterEditability) => {\n const filterIds = Array.isArray(filterId) ? filterId : [filterId];\n\n const {\n newHiddenFilterItemIds,\n newViewableFilterItemIds,\n newEditableFilterItemIds,\n } = updateFilterItemIds(\n editableFilterItemIds,\n viewableFilterItemIds,\n hiddenFilterItemIds,\n filterIds,\n editability\n );\n\n setValue('hiddenFilterItemIds', newHiddenFilterItemIds);\n setValue('viewableFilterItemIds', newViewableFilterItemIds);\n setValue('editableFilterItemIds', newEditableFilterItemIds);\n },\n [\n editableFilterItemIds,\n hiddenFilterItemIds,\n setValue,\n viewableFilterItemIds,\n ]\n );\n\n return (\n {\n setTempQuery(DefaultReportV2ListingQuery);\n setFilterQuery(DefaultReportV2ListingQuery);\n }}\n filters={filtersWithEditability}\n appliedFilterIds={appliedFilters}\n mandatoryFiltersToShow={listingsMandatoryFiltersToShow}\n resetTempQuery={resetTempQuery}\n tempQuery={tempQuery}\n onEditabilityChange={onEditabilityChange}\n selectedFilters={selectedFilters}\n setSelectedFilters={setSelectedFilters}\n {...filterToolbarProps}\n />\n );\n};\n\nconst SaleFilterInput = ({\n onSubmitFilter,\n ...filterToolbarProps\n}: ReportFilterInputProps) => {\n const { setValue, watch } = useFormContext();\n\n const formFilter = watch(FILTERS_FIELD);\n const hiddenFilterItemIds = watch('hiddenFilterItemIds');\n const viewableFilterItemIds = watch('viewableFilterItemIds');\n const editableFilterItemIds = watch('editableFilterItemIds');\n\n const [selectedFilters, setSelectedFilters] =\n useState();\n\n const {\n initialQuery,\n tempQuery,\n filterQuery,\n setFilterQuery,\n setTempQuery,\n resetTempQuery,\n } = useFilterQueryContext();\n const { filters } = useSaleReportFilters({});\n\n const onSubmitFilterHandler = useCallback(() => {\n setFilterQuery(tempQuery);\n onSubmitFilter?.();\n }, [onSubmitFilter, setFilterQuery, tempQuery]);\n\n useEffect(() => {\n if (\n formFilter != null &&\n !isEqual(formFilter as UIReportV2SaleQuery, tempQuery)\n ) {\n setTempQuery(formFilter as UIReportV2SaleQuery);\n setFilterQuery(formFilter as UIReportV2SaleQuery);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n onSubmitFilterHandler();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tempQuery]);\n\n useEffect(() => {\n if (!isEqual(formFilter as UIReportV2SaleQuery, filterQuery)) {\n setValue(FILTERS_FIELD, filterQuery);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filterQuery]);\n\n const { appliedFilters } = useFiltersHelpers({\n filters,\n activeQuery: tempQuery,\n mandatoryFiltersToShow: saleReportMandatoryFiltersToShow,\n initialQuery: DefaultReportV2SaleQuery,\n });\n const filtersWithEditability = useMemo(\n () =>\n filters.map((filterGroup) => ({\n ...filterGroup,\n items: filterGroup.items.map((filterItem) => ({\n ...filterItem,\n reportFilterEditability: getEditability(\n editableFilterItemIds,\n viewableFilterItemIds,\n hiddenFilterItemIds,\n filterItem.filterId\n ),\n })),\n })),\n [editableFilterItemIds, filters, hiddenFilterItemIds, viewableFilterItemIds]\n );\n\n const onEditabilityChange = useCallback(\n (filterId: string | string[], editability: ReportFilterEditability) => {\n const filterIds = Array.isArray(filterId) ? filterId : [filterId];\n\n const {\n newHiddenFilterItemIds,\n newViewableFilterItemIds,\n newEditableFilterItemIds,\n } = updateFilterItemIds(\n editableFilterItemIds,\n viewableFilterItemIds,\n hiddenFilterItemIds,\n filterIds,\n editability\n );\n\n setValue('hiddenFilterItemIds', newHiddenFilterItemIds);\n setValue('viewableFilterItemIds', newViewableFilterItemIds);\n setValue('editableFilterItemIds', newEditableFilterItemIds);\n },\n [\n editableFilterItemIds,\n hiddenFilterItemIds,\n setValue,\n viewableFilterItemIds,\n ]\n );\n\n return (\n {\n setTempQuery(DefaultReportV2SaleQuery);\n setFilterQuery(DefaultReportV2SaleQuery);\n }}\n filters={filtersWithEditability}\n appliedFilterIds={appliedFilters}\n mandatoryFiltersToShow={saleMandatoryFiltersToShow}\n resetTempQuery={resetTempQuery}\n tempQuery={tempQuery}\n onEditabilityChange={onEditabilityChange}\n selectedFilters={selectedFilters}\n setSelectedFilters={setSelectedFilters}\n {...filterToolbarProps}\n />\n );\n};\n\nconst CommissionFilterInput = ({\n onSubmitFilter,\n ...filterToolbarProps\n}: ReportFilterInputProps) => {\n const { setValue, watch } = useFormContext();\n\n const formFilter = watch(FILTERS_FIELD);\n const hiddenFilterItemIds = watch('hiddenFilterItemIds');\n const viewableFilterItemIds = watch('viewableFilterItemIds');\n const editableFilterItemIds = watch('editableFilterItemIds');\n\n const [selectedFilters, setSelectedFilters] =\n useState();\n\n const {\n initialQuery,\n tempQuery,\n filterQuery,\n setFilterQuery,\n setTempQuery,\n resetTempQuery,\n } = useFilterQueryContext();\n const { filters } = useCommissionFilters();\n\n const onSubmitFilterHandler = useCallback(() => {\n setFilterQuery(tempQuery);\n onSubmitFilter?.();\n }, [onSubmitFilter, setFilterQuery, tempQuery]);\n\n useEffect(() => {\n if (\n formFilter != null &&\n !isEqual(formFilter as UIReportCommissionQuery, tempQuery)\n ) {\n setTempQuery(formFilter as UIReportCommissionQuery);\n setFilterQuery(formFilter as UIReportCommissionQuery);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n onSubmitFilterHandler();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tempQuery]);\n\n useEffect(() => {\n if (!isEqual(formFilter as UIReportCommissionQuery, filterQuery)) {\n setValue(FILTERS_FIELD, filterQuery);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filterQuery]);\n\n const { appliedFilters } = useFiltersHelpers({\n filters,\n activeQuery: tempQuery,\n mandatoryFiltersToShow: commissionMandatoryFiltersToShow,\n initialQuery: DefaultCommissionQuery,\n });\n const filtersWithEditability = useMemo(\n () =>\n filters.map((filterGroup) => ({\n ...filterGroup,\n items: filterGroup.items.map((filterItem) => ({\n ...filterItem,\n reportFilterEditability: getEditability(\n editableFilterItemIds,\n viewableFilterItemIds,\n hiddenFilterItemIds,\n filterItem.filterId\n ),\n })),\n })),\n [editableFilterItemIds, filters, hiddenFilterItemIds, viewableFilterItemIds]\n );\n\n const onEditabilityChange = useCallback(\n (filterId: string | string[], editability: ReportFilterEditability) => {\n const filterIds = Array.isArray(filterId) ? filterId : [filterId];\n\n const {\n newHiddenFilterItemIds,\n newViewableFilterItemIds,\n newEditableFilterItemIds,\n } = updateFilterItemIds(\n editableFilterItemIds,\n viewableFilterItemIds,\n hiddenFilterItemIds,\n filterIds,\n editability\n );\n\n setValue('hiddenFilterItemIds', newHiddenFilterItemIds);\n setValue('viewableFilterItemIds', newViewableFilterItemIds);\n setValue('editableFilterItemIds', newEditableFilterItemIds);\n },\n [\n editableFilterItemIds,\n hiddenFilterItemIds,\n setValue,\n viewableFilterItemIds,\n ]\n );\n\n return (\n {\n setTempQuery(DefaultCommissionQuery);\n setFilterQuery(DefaultCommissionQuery);\n }}\n filters={filtersWithEditability}\n appliedFilterIds={appliedFilters}\n mandatoryFiltersToShow={saleMandatoryFiltersToShow}\n resetTempQuery={resetTempQuery}\n tempQuery={tempQuery}\n onEditabilityChange={onEditabilityChange}\n selectedFilters={selectedFilters}\n setSelectedFilters={setSelectedFilters}\n {...filterToolbarProps}\n />\n );\n};\n\nconst PerformerVenuePopover = ({\n entityType,\n onSubmitFilter,\n embeddedDisplayOnly,\n}: {\n entityType: ActionOutboxEntityType.Listing | ActionOutboxEntityType.Sale;\n onSubmitFilter?: () => void;\n embeddedDisplayOnly?: boolean;\n}) => {\n const { setValue, watch } = useFormContext();\n\n const hiddenFilterItemIds = watch('hiddenFilterItemIds');\n const viewableFilterItemIds = watch('viewableFilterItemIds');\n const editableFilterItemIds = watch('editableFilterItemIds');\n\n const performerFilterEditability = getEditability(\n editableFilterItemIds,\n viewableFilterItemIds,\n hiddenFilterItemIds,\n ReportPerformerVenueFilterItemId.PerformerIds\n );\n const venueFilterEditability = getEditability(\n editableFilterItemIds,\n viewableFilterItemIds,\n hiddenFilterItemIds,\n ReportPerformerVenueFilterItemId.VenueIds\n );\n\n const onEditabilityChange = useCallback(\n (reportFilterId: string, editability: ReportFilterEditability) => {\n const newHiddenFilterItemIds = hiddenFilterItemIds\n ? hiddenFilterItemIds.filter((id) => id !== reportFilterId)\n : [];\n const newViewableFilterItemIds = viewableFilterItemIds\n ? viewableFilterItemIds.filter((id) => id !== reportFilterId)\n : [];\n const newEditableFilterItemIds = editableFilterItemIds\n ? editableFilterItemIds.filter((id) => id !== reportFilterId)\n : [];\n\n if (editability === ReportFilterEditability.Hidden) {\n newHiddenFilterItemIds.push(reportFilterId);\n } else if (editability === ReportFilterEditability.View) {\n newViewableFilterItemIds.push(reportFilterId);\n } else if (editability === ReportFilterEditability.Edit) {\n newEditableFilterItemIds.push(reportFilterId);\n }\n\n setValue('hiddenFilterItemIds', newHiddenFilterItemIds.toSorted());\n setValue('viewableFilterItemIds', newViewableFilterItemIds.toSorted());\n setValue('editableFilterItemIds', newEditableFilterItemIds.toSorted());\n },\n [\n editableFilterItemIds,\n hiddenFilterItemIds,\n setValue,\n viewableFilterItemIds,\n ]\n );\n\n return (\n \n \n \n \n \n
    \n {}}\n hideMetrics\n // Have to update tempQuery instead of filterQuery to sync with the main filter bar here\n updateTempQuery\n onEditabilityChange={onEditabilityChange}\n performerFilterEditability={performerFilterEditability}\n venueFilterEditability={venueFilterEditability}\n embeddedDisplayOnly={embeddedDisplayOnly}\n />\n
    \n
    \n
    \n );\n};\n","import { ComponentProps, PropsWithChildren, useCallback, useMemo } from 'react';\nimport { FormProvider, useFormContext } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { FilterQueryContextProvider } from 'src/contexts/FilterQueryContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { shared, vars } from 'src/core/themes';\nimport { Button, Radio, RadioGroup, Stack } from 'src/core/ui';\nimport {\n ReportConfigV2,\n useReportConfigsV2,\n} from 'src/hooks/useReportConfigsV2';\nimport { FieldWrapper } from 'src/modals/common/Purchase';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n DefaultReportV2ListingQuery,\n DefaultReportV2SaleQuery,\n EmptyReportV2ListingQuery,\n EmptyReportV2SaleQuery,\n} from 'src/utils/eventQueryUtils';\nimport { ReportTypesV2 } from 'src/utils/reportsUtils';\nimport {\n UIReportV2ListingQuery,\n UIReportV2SaleQuery,\n} from 'src/WebApiController';\n\nimport * as styles from './ReportBuilderDialog.css';\nimport { ReportBuilderFilterInputV2 } from './ReportBuilderFilterInputV2';\n\nexport type ReportBuilderDialogProps = {\n report: ReportConfigV2;\n onSave: (data: ReportConfigV2) => void;\n} & ComponentProps;\n\nexport function ReportBuilderDialogBodyV2({\n onSave,\n onClosed,\n register,\n setError,\n setValue,\n handleSubmit,\n formState,\n watch,\n resetField,\n ...rest\n}: Omit &\n Omit<\n ComponentProps>,\n 'children' | 'trigger' | 'reset' | 'unregister'\n >) {\n const { reportConfigs: existingInventoryReports } =\n useReportConfigsV2({\n reportType: ReportTypesV2.InventoryV2,\n });\n const { reportConfigs: existingSaleReports } =\n useReportConfigsV2({\n reportType: ReportTypesV2.SaleV2,\n });\n\n const requiredMsg = useContent(ContentId.Required);\n const duplicateNameMsg = useContent(ContentId.DuplicatedReportName);\n\n const nameError = formState.errors.reportName?.message;\n const filtersError = formState.errors.request?.filters?.message;\n\n const reportId = watch('reportId');\n const reportName = watch('reportName');\n const reportType = watch('reportType');\n\n const existingReportNames = useMemo(() => {\n return existingInventoryReports\n ?.concat(existingSaleReports ?? [])\n .filter((r) => r.reportId !== reportId)\n .map((r) => r.reportName);\n }, [existingInventoryReports, existingSaleReports, reportId]);\n\n const onSubmit = useCallback(() => {\n let hasErrors = false;\n if (!reportName) {\n setError('reportName', { message: requiredMsg }, { shouldFocus: true });\n hasErrors = true;\n }\n\n if (\n existingReportNames.some(\n (name) => name.toLocaleUpperCase() === reportName.toLocaleUpperCase()\n )\n ) {\n setError(\n 'reportName',\n { message: duplicateNameMsg },\n { shouldFocus: true }\n );\n hasErrors = true;\n }\n\n if (!hasErrors) {\n handleSubmit(onSave)();\n }\n }, [\n reportName,\n existingReportNames,\n setError,\n requiredMsg,\n duplicateNameMsg,\n handleSubmit,\n onSave,\n ]);\n\n return (\n <>\n \n }\n footer={\n \n {reportId == null ? (\n \n ) : (\n \n )}\n \n }\n onCancel={onClosed}\n >\n
    \n \n }>\n \n \n \n\n \n }>\n {\n const newValue = value as ReportTypesV2;\n if (newValue === reportType) {\n // Nothing to do\n return;\n }\n\n if (formState.defaultValues?.reportType === newValue) {\n const defaultValues =\n formState.defaultValues as ReportConfigV2;\n const defaultRequest = defaultValues.request;\n // Restore filters and metrics\n setValue(\n 'request.aggregations',\n defaultRequest.aggregations\n );\n setValue(\n 'request.columnGroupings',\n defaultRequest.columnGroupings\n );\n setValue(\n 'request.rowGroupings',\n defaultRequest.rowGroupings\n );\n setValue('request.filters', defaultRequest.filters);\n setValue(\n 'hiddenFilterItemIds',\n defaultValues.hiddenFilterItemIds\n );\n setValue(\n 'viewableFilterItemIds',\n defaultValues.viewableFilterItemIds\n );\n setValue(\n 'editableFilterItemIds',\n defaultValues.editableFilterItemIds\n );\n } else {\n // Clear filters and metrics\n setValue('request.aggregations', []);\n setValue('request.columnGroupings', []);\n setValue('request.rowGroupings', []);\n setValue('hiddenFilterItemIds', []);\n setValue('viewableFilterItemIds', []);\n setValue('editableFilterItemIds', []);\n\n if (newValue === ReportTypesV2.InventoryV2) {\n setValue('request.filters', DefaultReportV2ListingQuery);\n } else {\n // SaleV2\n setValue('request.filters', DefaultReportV2SaleQuery);\n }\n }\n setValue('reportType', newValue);\n }}\n value={reportType}\n >\n \n \n \n \n \n \n \n \n \n }\n variant=\"outline\"\n />\n \n \n \n \n \n \n \n \n }\n variant=\"outline\"\n />\n \n \n \n \n\n \n } />\n
    \n \n
    \n
    \n
    \n \n \n );\n}\n\nconst FilterInput = ({ disabled }: { disabled?: boolean }) => {\n const { watch } = useFormContext();\n const reportType = watch('reportType');\n\n return (\n \n \n \n \n }\n addFilterDropdownProps={{\n triggerShape: 'pill',\n triggerVariant: 'outline',\n triggerClassName: styles.addFilterButton,\n }}\n disabled={disabled}\n />\n \n );\n};\n\nconst FilterInputContextWrapper = ({ children }: PropsWithChildren) => {\n const { watch } = useFormContext();\n const reportType = watch('reportType');\n const reportFilter = watch('request.filters');\n\n if (reportType === ReportTypesV2.InventoryV2) {\n return (\n \n initialQuery={reportFilter as UIReportV2ListingQuery}\n emptyQuery={EmptyReportV2ListingQuery}\n >\n {children}\n \n );\n }\n\n return (\n \n initialQuery={reportFilter as UIReportV2SaleQuery}\n emptyQuery={EmptyReportV2SaleQuery}\n >\n {children}\n \n );\n};\n","import { ComponentProps, useEffect } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Modal as RSModal } from 'reactstrap';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\n\nimport { ReportBuilderDialogBodyV2 } from './ReportBuilderDialogBodyV2';\n\nexport type ReportBuilderDialogV2Props = {\n report: ReportConfigV2;\n onSave: (data: ReportConfigV2) => void;\n} & ComponentProps;\n\nexport function ReportBuilderDialogV2({\n report,\n ...rest\n}: ReportBuilderDialogV2Props) {\n const methods = useForm({\n defaultValues: report,\n });\n\n useEffect(() => {\n methods.reset(report);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [report.reportId]);\n\n return (\n \n \n \n );\n}\n","import {\n ColumnDef,\n InitialTableState,\n PaginationState,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { formatInTimeZone } from 'date-fns-tz';\nimport { useCallback, useMemo, useState } from 'react';\nimport {\n Content,\n FormatContent,\n useContent,\n} from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { DownloadIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { NoData, Table } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { stringToUtcDate } from 'src/utils/dateTimeUtils';\nimport { downloadFileFromUrl } from 'src/utils/fileUtils';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { ReportSnapshotInfo } from 'src/WebApiController';\n\ninterface ReportHistoryTableProps {\n reportConfigId: number;\n reportSnapshotInfos: ReportSnapshotInfo[];\n initState?: InitialTableState;\n}\nconst PAGE_SIZE = 15;\n\nconst getHistorySnapshotTableColumnsConfig = (\n reportId: number\n): ColumnDef[] => {\n return [\n {\n id: 'date',\n header: () => (\n \n \n \n ),\n accessorKey: 'createdDate',\n cell: function Cell({ row }) {\n const { timeZone } = useSiteTimezoneContext();\n const curLocale = getLocaleFromLanguageOrCurrent();\n const formattedDate = formatInTimeZone(\n stringToUtcDate(row.original.createdDate),\n timeZone,\n 'yyyy/MM/dd hh:mm a',\n {\n locale: curLocale,\n }\n );\n return (\n \n {formattedDate}\n \n );\n },\n enableSorting: true,\n },\n {\n id: 'actions',\n enableSorting: false,\n header: () => (\n \n \n \n ),\n minSize: 50,\n maxSize: 50,\n cell: function Cell({ row: { original } }) {\n const onDownloadClick = useCallback(() => {\n downloadFileFromUrl(original.name, original.downloadUri);\n }, [original.downloadUri, original.name]);\n\n return (\n \n \n \n );\n },\n },\n ];\n};\n\nexport const ReportHistoryTable = ({\n reportSnapshotInfos,\n reportConfigId,\n\n initState,\n}: ReportHistoryTableProps) => {\n const [sorting, setSorting] = useState(\n initState?.sorting ?? [{ id: 'date', desc: true }]\n );\n const [{ pageIndex, pageSize }, setPagination] = useState({\n pageIndex: initState?.pagination?.pageIndex || 0,\n pageSize: PAGE_SIZE,\n });\n const pagination = useMemo(\n () => ({\n pageIndex,\n pageSize,\n }),\n [pageIndex, pageSize]\n );\n\n const reportHistoryText = useContent(ContentId.ReportHistory);\n const options: Partial> = useMemo(\n () => ({\n data: reportSnapshotInfos,\n columns: getHistorySnapshotTableColumnsConfig(reportConfigId),\n state: {\n pagination,\n sorting,\n },\n onPaginationChange: setPagination,\n onSortingChange: setSorting,\n }),\n [pagination, reportConfigId, reportSnapshotInfos, sorting]\n );\n\n return (\n <>\n {reportSnapshotInfos?.length ? (\n
    \n ) : (\n \n \n \n )}\n \n );\n};\n","import { useQuery, UseQueryResult } from '@tanstack/react-query';\nimport { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ReportClient, ReportSnapshotInfo } from 'src/WebApiController';\n\ninterface UseReportSnapshotInfoProps {\n reportConfigId: number | undefined;\n}\n\nexport const useFetchReportSnapshotsInfo = ({\n reportConfigId,\n}: UseReportSnapshotInfoProps): UseQueryResult<\n ReportSnapshotInfo[] | null,\n Error\n> => {\n const { showErrorDialog } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const reportClient = useMemo(\n () => new ReportClient(activeAccountWebClientConfig),\n [activeAccountWebClientConfig]\n );\n\n const queryKey = useMemo(\n () => ['reportSnapshotsInfo', reportConfigId],\n [reportConfigId]\n );\n\n // Query to get all report snapshots info\n return useQuery({\n queryKey,\n queryFn: async () => {\n return reportClient.getReportSnapshotInfos(reportConfigId);\n },\n\n enabled: !!reportConfigId,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n meta: {\n onError: (err: any) => {\n showErrorDialog('ReportClient.getReportSnapshotInfos', err, {\n trackErrorData: { reportConfigId },\n });\n },\n persist: true,\n },\n refetchOnWindowFocus: false,\n staleTime: Infinity, // We don't want useQuery to auto-refresh base on stale, we control our own refetch\n gcTime: 0, // we don't want to cache this data\n });\n};\n","import { ComponentProps } from 'react';\nimport { Modal as RSModal } from 'reactstrap';\nimport { Content } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { ReportHistoryTable } from 'src/dialogs/ReportHistoryDialog/ReportHistoryTable';\nimport { useFetchReportSnapshotsInfo } from 'src/dialogs/ReportHistoryDialog/useFetchReportSnapshotsInfo';\nimport { ReportConfig } from 'src/hooks/useReportConfigs';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport type ReportHistoryDialog = {\n reportConfig: ReportConfig | undefined;\n} & ComponentProps;\n\nexport function ReportHistoryDialog({\n reportConfig,\n isOpen,\n onCancel,\n}: ReportHistoryDialog) {\n const reportId = reportConfig?.reportId;\n\n const { isFetching, data: reportSnapshotInfos } = useFetchReportSnapshotsInfo(\n {\n reportConfigId: reportId ?? undefined,\n }\n );\n\n if (!reportId) {\n return null;\n }\n\n return (\n }\n footer={null}\n isOpen={isOpen}\n onCancel={onCancel}\n >\n {isFetching ? (\n \n ) : (\n reportSnapshotInfos && (\n \n )\n )}\n \n );\n}\n","import { EventWithData } from 'src/WebApiController';\nimport { CatalogResults, ListingReportMetrics } from 'src/WebApiController';\n\nexport const mapReportMetrics = (\n reportMetrics: ListingReportMetrics[] | undefined,\n eventsTransformed: EventWithData[] | undefined,\n data: CatalogResults | undefined\n) => {\n const metricsMapped = reportMetrics?.map((r) => {\n const event = r.eventId\n ? eventsTransformed?.find(\n (e) =>\n e.event.viagId?.toString() === r.eventId ||\n e.event.mappingId === r.eventId\n )?.event\n : undefined;\n\n const performerId = r.perfId ?? event?.perfId;\n const performer = performerId ? data?.performers?.[performerId] : undefined;\n\n const venueId = r.venueId ?? event?.venueId;\n const venue = venueId ? data?.venues?.[venueId] : undefined;\n return {\n ...r,\n performer,\n venue,\n event,\n };\n });\n\n return metricsMapped;\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { once } from 'lodash-es';\nimport React, {\n PropsWithChildren,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport {\n DATA_REFRESH_RATE_IN_MILLIS_LONG,\n MAX_NUM_OF_ITEMS_FOR_REPORT_VIEWS,\n} from 'src/utils/constants/constants';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\nimport { getServerSideOnlyMetricsQuery } from 'src/utils/getServerSideOnlyMetricsQuery';\nimport {\n EntityWithTicketsQuery,\n Feature,\n ReportGroupBy,\n ReportMetricsBase,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useCatalogDataContext } from '../CatalogDataContext';\nimport { useFilterQueryContext } from '../FilterQueryContext';\n\nexport type IReportMetricsContext = {\n hasTimeout?: boolean;\n hasUnknownError?: boolean;\n isLoading: boolean;\n isRefreshing?: boolean;\n reportMetrics?: TMetrics[];\n reportSummary?: TMetrics;\n totalCount?: number;\n refreshMetrics: (overrideMax: boolean) => void;\n isAllReportMetricsLoaded?: boolean;\n};\n\nexport const createReportMetricsContext = once(<\n TMetrics extends ReportMetricsBase,\n>() => React.createContext({} as IReportMetricsContext));\n\nexport function useReportMetricsContext() {\n return useContext(createReportMetricsContext());\n}\ntype ReportMetricsResponse = {\n metrics: TMetrics[];\n summary: TMetrics;\n totalCount: number;\n hasTimeout: boolean;\n hasUnknownError: boolean;\n};\n\nexport function ReportMetricsContextProvider<\n TMetrics extends ReportMetricsBase,\n TQuery extends EntityWithTicketsQuery & QueryWithViewMode,\n>({\n queryKey,\n getReportMetrics,\n groupBy,\n reportMetricsRequested,\n children,\n disabled,\n applyMaxRowLimitByDefault = true,\n}: PropsWithChildren<{\n queryKey: string;\n getReportMetrics?: (\n filterQuery: TQuery,\n groupBy: ReportGroupBy,\n reportMetricsRequested?: string[],\n maxResultSize?: number\n ) => Promise>;\n groupBy?: ReportGroupBy;\n reportMetricsRequested?: string[];\n disabled?: boolean;\n applyMaxRowLimitByDefault?: boolean;\n}>) {\n const ReportMetricsContext = createReportMetricsContext();\n\n const [reportConfigMaxSizeOverride, setReportConfigMaxSizeOverride] =\n useState(!applyMaxRowLimitByDefault);\n\n const hasMaxRowLimitFeature = useUserHasFeature(Feature.ReportMaxRowLimit);\n\n const { trackError } = useErrorBoundaryContext();\n\n const { isLoading, allEventIds } = useCatalogDataContext();\n const { filterQuery } = useFilterQueryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n // Removing the client-side queries\n const transformedQuery = getServerSideOnlyMetricsQuery(filterQuery) as TQuery;\n\n const shouldQuery =\n !disabled &&\n !(\n !getReportMetrics ||\n !transformedQuery ||\n !groupBy ||\n !activeAccountWebClientConfig.activeAccountId ||\n !allEventIds\n );\n const maxResultSize = useMemo(\n () =>\n // has no max row feature or has bypassed limit\n !hasMaxRowLimitFeature || reportConfigMaxSizeOverride\n ? undefined\n : MAX_NUM_OF_ITEMS_FOR_REPORT_VIEWS,\n [hasMaxRowLimitFeature, reportConfigMaxSizeOverride]\n );\n\n const reportMetricsQuery = useQuery({\n queryKey: [\n `${queryKey}-report-metrics`,\n transformedQuery,\n allEventIds,\n activeAccountWebClientConfig,\n groupBy,\n disabled,\n allEventIds == null,\n reportMetricsRequested,\n maxResultSize,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n const reportMetricsData = await getReportMetrics!(\n {\n ...transformedQuery,\n eventOrMappingIds: allEventIds.map((ev) => ev.viagVirtualId),\n performerIds: allEventIds\n .filter((ev) => ev.performerId != null)\n .map((ev) => ev.performerId!),\n venueIds: allEventIds.map((ev) => ev.venueId),\n },\n groupBy!,\n reportMetricsRequested,\n maxResultSize\n );\n\n return reportMetricsData;\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n persist: !reportConfigMaxSizeOverride, // only persist if this is not a bypass max-size report\n\n onError: (error: ErrorTypes) => {\n trackError('getReportMetrics', error, {\n ...transformedQuery,\n eventIds: allEventIds,\n });\n },\n },\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_LONG,\n });\n\n const refreshMetrics = useCallback(\n (overrideMax: boolean) => {\n if (reportConfigMaxSizeOverride !== overrideMax) {\n setReportConfigMaxSizeOverride(overrideMax);\n\n return; // we will let useQuery key-change do the re-query\n }\n\n // If we didn't update the overrideMax, just refetch the current result here\n reportMetricsQuery.refetch();\n },\n [reportConfigMaxSizeOverride, reportMetricsQuery]\n );\n\n const isAllReportMetricsLoaded =\n reportMetricsQuery.data?.totalCount != null &&\n reportMetricsQuery.data?.totalCount <=\n reportMetricsQuery.data?.metrics.length;\n\n return (\n \n {children}\n \n );\n}\n","import { ColumnDef } from '@tanstack/react-table';\nimport { createContext, PropsWithChildren, useContext, useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { ReportConfig } from 'src/hooks/useReportConfigs';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport {\n filterColumnsByFeatures,\n getListingReportColumnConfigById,\n} from 'src/utils/columns/columnUtils';\nimport { ListingReportTableColumnId } from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { CustomListingColumn } from 'src/utils/columns/inventory/inventoryCustomColumnUtils.types';\nimport { filterCustomColumnsForListingReport } from 'src/utils/columns/inventory/inventoryReportCustomColumnUtils';\nimport { ListingReportMetricsWithGroupBy } from 'src/utils/reportsUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { hasFeatures } from 'src/utils/userUtils';\nimport { ActionOutboxEntityType, UserSetting } from 'src/WebApiController';\n\nimport {\n customColumnDef,\n eventTagColumnDef,\n LISTING_REPORT_TABLE_COLUMNS_CONFIG,\n tagColumnDef,\n} from './configs/ListingReportTableColumnsConfig';\n\ntype ListingReportTableColumnDefContextType = {\n displayedColumnsConfig:\n | ColumnDef[]\n | undefined;\n isLoading?: boolean;\n};\n\nconst ListingReportTableColumnDefContext =\n createContext({\n displayedColumnsConfig: undefined,\n });\n\nexport const ListingReportTableColumnDefContextProvider = ({\n report,\n children,\n}: PropsWithChildren<{\n report: ReportConfig;\n}>) => {\n const { appContext, loginContext } = useAppContext();\n const { tagsMetadataNumeric, isLoading: listingTagIsLoading } =\n useTagsForEntityType(ActionOutboxEntityType.Listing, true);\n\n const { tagsMetadata: tagsMetadataEvent, isLoading: eventTagIsLoading } =\n useTagsForEntityType(ActionOutboxEntityType.SellerEvent, true);\n\n const {\n tagsMetadata: tagsMetadataPurchase,\n isLoading: purchaseTagIsLoading,\n } = useTagsForEntityType(ActionOutboxEntityType.Purchase, true);\n\n const { value: customListingColumns = [], isLoading: customColumnIsLoading } =\n useServerUserSetting({\n id: UserSetting.InventoryCustomColumns,\n });\n\n const customListingColumnsFiltered = filterCustomColumnsForListingReport(\n customListingColumns,\n tagsMetadataNumeric\n );\n\n const displayedColumnsConfig = useMemo(() => {\n const columns = new Set([\n // Add unconfigurable columns first\n ...Object.values(LISTING_REPORT_TABLE_COLUMNS_CONFIG)\n .filter((column) => {\n const columnDef = getListingReportColumnConfigById(\n column.id as ListingReportTableColumnId\n ).personalization;\n const hasFeatureForColumn =\n columnDef.requiredFeatures.length === 0 ||\n hasFeatures(\n loginContext?.user,\n appContext?.features,\n columnDef.requiredFeatures\n );\n\n return !columnDef.isConfigurable && hasFeatureForColumn;\n })\n .map((item) => item.id as ListingReportTableColumnId),\n // Add user defined columns next\n ...filterColumnsByFeatures(\n report.metrics,\n SectionType.ListingsReport,\n customListingColumnsFiltered,\n loginContext?.user,\n appContext?.features,\n tagsMetadataNumeric,\n report.groupBy\n ),\n ]);\n\n return Array.from(columns).reduce<\n ColumnDef[]\n >((acc, columnId) => {\n if (tagsMetadataNumeric?.find((t) => t.key === columnId)) {\n acc.push(tagColumnDef(columnId));\n } else if (tagsMetadataPurchase?.find((t) => t.key === columnId)) {\n acc.push(tagColumnDef(columnId));\n } else if (tagsMetadataEvent?.find((t) => t.key === columnId)) {\n acc.push(eventTagColumnDef(columnId));\n } else if (customListingColumnsFiltered.find((c) => c.id === columnId)) {\n acc.push(\n customColumnDef(\n columnId,\n customListingColumnsFiltered.find((c) => c.id === columnId)?.formula\n )\n );\n } else {\n const columnConfig = Object.values(\n LISTING_REPORT_TABLE_COLUMNS_CONFIG\n ).find((column) => column.id === columnId);\n if (columnConfig)\n acc.push(\n columnConfig as ColumnDef\n );\n }\n\n return acc;\n }, []);\n }, [\n appContext?.features,\n customListingColumnsFiltered,\n loginContext?.user,\n report.groupBy,\n report.metrics,\n tagsMetadataEvent,\n tagsMetadataNumeric,\n tagsMetadataPurchase,\n ]);\n\n const isLoading =\n listingTagIsLoading ||\n eventTagIsLoading ||\n purchaseTagIsLoading ||\n customColumnIsLoading;\n\n return (\n \n {children}\n \n );\n};\n\nexport const useListingReportTableColumnDef = () =>\n useContext(ListingReportTableColumnDefContext);\n","import { PropsWithChildren, useCallback, useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { CatalogDataContextProvider } from 'src/contexts/CatalogDataContext';\nimport { FilterQueryContextProvider } from 'src/contexts/FilterQueryContext';\nimport { ReportMetricsContextProvider } from 'src/contexts/ReportMetricsContext';\nimport { ReportConfig } from 'src/hooks/useReportConfigs';\nimport { isMetricConfigurableByGroupBy } from 'src/utils/columns/inventory/inventoryColumnUtils';\nimport {\n DefaultListingQuery,\n EmptyListingQuery,\n} from 'src/utils/eventQueryUtils';\nimport { transformData } from 'src/utils/eventWithDataUtils';\nimport {\n isReportFilterOverriden,\n listingMetricsToReportMetricRequest,\n} from 'src/utils/reportsUtils';\nimport {\n ActionOutboxEntityType,\n ListingQuery,\n ListingReportMetricColumn,\n ListingReportMetrics,\n ReportClient,\n ReportGroupBy,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { getCatalogData } from '../Inventory';\n\nexport function ReportsInventoryContextProvider({\n reportConfig,\n children,\n applyMaxRowLimitByDefault = true,\n}: PropsWithChildren<{\n reportConfig: ReportConfig;\n applyMaxRowLimitByDefault?: boolean;\n}>) {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const reportMetricsRequested = useMemo(() => {\n return reportConfig.metrics\n .filter((m) => isMetricConfigurableByGroupBy(m, reportConfig.groupBy))\n .map((metric) => listingMetricsToReportMetricRequest(metric))\n .filter((m) => !!m) as string[];\n }, [reportConfig.metrics, reportConfig.groupBy]);\n\n const getReportMetrics = useCallback(\n (\n filterQuery: ListingQuery,\n groupBy: ReportGroupBy,\n reportMetricsRequested?: string[],\n maxResultSize?: number\n ) => {\n return new ReportClient(\n activeAccountWebClientConfig\n ).getListingReportMetrics(\n {\n query: filterQuery,\n groupBy,\n globalReportTypeId: reportConfig.globalReportTypeId,\n isUsingFilterOverride:\n reportConfig.hasFilterOverride ||\n isReportFilterOverriden(filterQuery, reportConfig.filter),\n listingReportMetricsRequested:\n reportMetricsRequested as ListingReportMetricColumn[],\n },\n maxResultSize\n );\n },\n [\n activeAccountWebClientConfig,\n reportConfig.filter,\n reportConfig.globalReportTypeId,\n reportConfig.hasFilterOverride,\n ]\n );\n\n return (\n \n initialQuery={\n (reportConfig.filter as ListingQuery) ?? DefaultListingQuery\n }\n emptyQuery={EmptyListingQuery}\n viewModeSettingId={UserSetting.InventoryPageViewMode}\n >\n \n entityType={ActionOutboxEntityType.Listing}\n queryKey=\"getCatalogForListing\"\n getCatalogData={(c, f) => getCatalogData(c, f, false)}\n transformEventData={transformData}\n >\n \n queryKey=\"getReportListingMetrics\"\n getReportMetrics={getReportMetrics}\n groupBy={reportConfig.groupBy}\n reportMetricsRequested={reportMetricsRequested}\n applyMaxRowLimitByDefault={applyMaxRowLimitByDefault}\n >\n {children}\n \n \n \n );\n}\n","import { ColumnDef, Row } from '@tanstack/react-table';\nimport { format } from 'date-fns';\nimport { jsPDF } from 'jspdf';\nimport autoTable from 'jspdf-autotable';\nimport { uniq } from 'lodash-es';\nimport { ReportConfig } from 'src/hooks/useReportConfigs';\nimport { getUserDisplayName, UseGetUserInfo } from 'src/hooks/userGetUserInfo';\nimport { formatPercent } from 'src/utils/numberFormatter';\nimport {\n Money,\n PurchaseBuyerInfo,\n ReportFileType,\n UiMoney,\n} from 'src/WebApiController';\nimport * as XLSX from 'xlsx';\n\nimport { AccessorReturn, AccessorReturnType } from './ReportsExport.types';\n\nexport function sortReportMetrics(\n a: T,\n b: T,\n sortByColumnConfig: ColumnDef | undefined,\n isSortDescending: boolean\n) {\n if (sortByColumnConfig) {\n let result = 0;\n // @ts-expect-error accessorFn is available\n const aVal = sortByColumnConfig.accessorFn(a);\n // @ts-expect-error accessorFn is available\n const bVal = sortByColumnConfig.accessorFn(b);\n if (aVal === bVal) {\n result = 0;\n } else if (aVal == null) {\n result = 1;\n } else if (bVal == null) {\n result = -1;\n } else if (\n sortByColumnConfig.sortingFn &&\n typeof sortByColumnConfig.sortingFn === 'function'\n ) {\n result = sortByColumnConfig.sortingFn(\n { getValue: () => aVal } as unknown as Row,\n { getValue: () => bVal } as unknown as Row,\n sortByColumnConfig.id ?? ''\n );\n } else if (typeof aVal === 'string' && typeof bVal === 'string') {\n result = aVal.localeCompare(bVal);\n } else {\n result = aVal > bVal ? 1 : -1;\n }\n\n return isSortDescending ? -result : result;\n }\n return 0;\n}\n\nexport function mapReportMetricToUserIds(\n reportMetric: T,\n displayedColumnsConfig: ColumnDef[]\n) {\n const userIds: string[] = [];\n\n displayedColumnsConfig.forEach((column) => {\n // @ts-expect-error accessorFn is available\n const value = column.accessorFn(reportMetric) as unknown;\n\n if (\n (value as AccessorReturn)?.stringValueType ===\n AccessorReturnType.SELLER_USER_ID\n ) {\n const stringValues =\n (value as AccessorReturn).stringValues ??\n ((value as AccessorReturn).value as\n | string[]\n | string\n | null\n | undefined);\n\n if (typeof stringValues === 'string' && stringValues) {\n userIds.push(stringValues);\n } else if (Array.isArray(stringValues)) {\n userIds.push(...stringValues);\n }\n } else if (\n (value as AccessorReturn)?.stringValueType ===\n AccessorReturnType.PURCHASE_BUYER_INFOS\n ) {\n const buyerInfos = (\n value as AccessorReturn\n ).value;\n\n userIds.push(...(buyerInfos?.map((bi) => bi.buyerUserId) ?? []));\n }\n });\n\n return uniq(userIds);\n}\n\n// The underlying value from the table cell is seller user id -\n// we need to retrieve the display name from the user info\n// we already have all user info in the context, just need to match them\nfunction resolveSellerUserId(\n value: AccessorReturn,\n allActiveUserInfos?: Record,\n deactivatedText?: string\n): string | undefined {\n const stringValues =\n (value as AccessorReturn).stringValues ??\n ((value as AccessorReturn).value as\n | string[]\n | string\n | null\n | undefined);\n\n const stringValueList = [];\n if (typeof stringValues === 'string' && stringValues) {\n stringValueList.push(stringValues);\n } else if (Array.isArray(stringValues)) {\n stringValueList.push(...stringValues);\n }\n\n if (!stringValueList.length) {\n return;\n }\n\n return stringValueList\n .map((userId) =>\n allActiveUserInfos?.[userId]\n ? getUserDisplayName(allActiveUserInfos[userId], deactivatedText)\n : undefined\n )\n .filter((name) => name != null)\n .join(', ');\n}\n\nfunction resolvePurchaseBuyerInfos(\n value: AccessorReturn,\n allActiveUserInfos?: Record,\n deactivatedText?: string\n): string | undefined {\n const buyerInfos = (value as AccessorReturn)\n .value;\n\n if (!buyerInfos?.length) {\n return;\n }\n\n return buyerInfos\n .map((bi) => {\n const userId = bi.buyerUserId;\n if (!allActiveUserInfos?.[userId]) {\n return undefined;\n }\n\n let displayString = getUserDisplayName(\n allActiveUserInfos[userId],\n deactivatedText\n );\n\n if (bi.averageBuyerCommissionPercent) {\n displayString += ` (${formatPercent(\n bi.averageBuyerCommissionPercent,\n 2\n )})`;\n }\n\n return displayString;\n })\n .filter((name) => name != null)\n .join(', ');\n}\n\nexport function mapReportMetricToTableString(\n reportMetric: T,\n displayedColumnsConfig: ColumnDef[],\n allActiveUserInfos?: Record,\n deactivatedText?: string\n) {\n const row = displayedColumnsConfig.map((column) => {\n // @ts-expect-error error complains that `accessorFn` does not exist, but actually it does\n let value = column.accessorFn(reportMetric) as unknown;\n\n if ((value as UiMoney)?.disp != null) {\n // UiMoney type\n value = (value as UiMoney).disp;\n } else if ((value as Money)?.display != null) {\n // Money type\n value = (value as Money).display;\n } else if (\n (value as AccessorReturn)?.stringValueType ===\n AccessorReturnType.SELLER_USER_ID\n ) {\n // Seller user id\n value = resolveSellerUserId(\n value as AccessorReturn,\n allActiveUserInfos,\n deactivatedText\n );\n } else if (\n (value as AccessorReturn)?.stringValueType ===\n AccessorReturnType.PURCHASE_BUYER_INFOS\n ) {\n // Purchase buyer infos\n value = resolvePurchaseBuyerInfos(\n value as AccessorReturn,\n allActiveUserInfos,\n deactivatedText\n );\n } else if (\n (value as AccessorReturn)?.stringValueType ===\n AccessorReturnType.STRING\n ) {\n value = (value as AccessorReturn).stringValues;\n }\n\n let stringValue = value != null ? value.toString() : '';\n // Floating point number: hardcode to 2 decimal places for now\n if (\n stringValue &&\n stringValue?.includes('.') &&\n !isNaN(parseFloat(stringValue))\n ) {\n if (parseInt(stringValue) !== parseFloat(stringValue)) {\n stringValue = parseFloat(stringValue).toFixed(2);\n }\n }\n\n return stringValue;\n });\n\n return row;\n}\n\nexport const getPdfPageSize = (columnCount: number) => {\n return columnCount > 25\n ? 'a0'\n : columnCount > 15\n ? 'a2'\n : columnCount > 9\n ? 'a3'\n : 'a4';\n};\n\nexport const getReportExportFileBasename = (reportName: string) => {\n const now = new Date();\n\n return `${reportName.replace(/\\s/g, '_')}_${format(now, 'yyyy-MM-dd')}`;\n};\n\nexport const exportReport = (\n report: ReportConfig,\n fileType: ReportFileType,\n tableHeader: string[],\n tableData: string[][],\n tableFoot: string[]\n) => {\n if (fileType === ReportFileType.PDF) {\n const doc = new jsPDF(\n 'landscape',\n 'mm',\n getPdfPageSize(report.metrics.length)\n );\n autoTable(doc, {\n head: [tableHeader],\n body: tableData,\n foot: [tableFoot],\n theme: 'striped',\n margin: 5,\n styles: {\n fontSize: 8,\n },\n });\n doc.save(`${getReportExportFileBasename(report.reportName)}.pdf`);\n } else if (\n fileType === ReportFileType.CSV ||\n fileType === ReportFileType.XLSX\n ) {\n const aoa = [tableHeader, ...tableData, tableFoot];\n const workbook = XLSX.utils.book_new();\n const worksheet = XLSX.utils.aoa_to_sheet(aoa);\n XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');\n if (fileType === ReportFileType.CSV) {\n XLSX.writeFile(\n workbook,\n `${getReportExportFileBasename(report.reportName)}.csv`,\n { bookType: 'csv' }\n );\n } else if (fileType === ReportFileType.XLSX) {\n XLSX.writeFileXLSX(\n workbook,\n `${getReportExportFileBasename(report.reportName)}.xlsx`\n );\n }\n } else {\n console.warn('Unsupported file type', fileType);\n }\n};\n","import { uniq } from 'lodash-es';\nimport { useEffect, useMemo } from 'react';\nimport { mapReportMetrics } from 'src/components/ReportsInventoryPage/ReportsInventoryPage.utils';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { useReportMetricsContext } from 'src/contexts/ReportMetricsContext';\nimport { useGetUserInfos } from 'src/hooks/userGetUserInfo';\nimport { useColumnDisplayName } from 'src/modals/InventoryTableColumns/useColumnDisplayName';\nimport {\n ListingReportTableColumnDefContextProvider,\n useListingReportTableColumnDef,\n} from 'src/tables/ListingTable/ListingReportTableColumnDefContext';\nimport { isMetricConfigurableByGroupBy } from 'src/utils/columns/inventory/inventoryColumnUtils';\nimport { GROUP_BY_TO_PRIMARY_COLUMN_ID } from 'src/utils/columns/inventory/inventoryColumnUtils.constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\nimport { downloadFileFromBlob } from 'src/utils/fileUtils';\nimport {\n isReportFilterOverriden,\n listingMetricsToReportMetricRequest,\n ListingReportMetricsWithGroupBy,\n} from 'src/utils/reportsUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport {\n EntityWithTicketsQuery,\n ListingQuery,\n ListingReportMetricColumn,\n ListingReportMetrics,\n ReportClient,\n} from 'src/WebApiController';\n\nimport { ReportsInventoryContextProvider } from '../../../navigations/Routes/ReportsInventory/ReportsInventoryContextProvider';\nimport { ReportExportOptions } from './ReportsExport.types';\nimport {\n exportReport,\n getReportExportFileBasename,\n mapReportMetricToTableString,\n mapReportMetricToUserIds,\n sortReportMetrics,\n} from './ReportsExport.utils';\n\nexport function ReportsInventoryExport({\n reportExportOptions,\n onReportExported,\n}: {\n reportExportOptions: ReportExportOptions | null;\n onReportExported: () => void;\n}) {\n // Loading report metrics depend on the context provider (need to wait for the context provider to load the report metrics)\n\n // If reportToExport is null,\n // no reports need to be exported, so not rendering the \n {reportExportOptions?.serverSideExport ? (\n \n ) : (\n \n \n \n )}\n \n );\n}\n\nfunction ReportsListingServerSideExportInner({\n reportExportOptions: { reportToExport: reportConfig, fileType },\n onReportExported,\n}: {\n reportExportOptions: ReportExportOptions;\n onReportExported: () => void;\n}) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { allEventIds } = useCatalogDataContext();\n const { filterQuery } = useFilterQueryContext<\n EntityWithTicketsQuery & QueryWithViewMode\n >();\n const { trackError } = useErrorBoundaryContext();\n\n const reportMetricsRequested = useMemo(() => {\n return reportConfig.metrics\n .filter((m) => isMetricConfigurableByGroupBy(m, reportConfig.groupBy))\n .map((metric) => listingMetricsToReportMetricRequest(metric))\n .filter((m) => !!m) as string[];\n }, [reportConfig.metrics, reportConfig.groupBy]);\n\n const downloadReport = async () => {\n await tryInvokeApi(\n async () => {\n const result = await new ReportClient(\n activeAccountWebClientConfig\n ).downloadListingReportMetrics({\n query: {\n ...(reportConfig.filter as ListingQuery),\n eventOrMappingIds: allEventIds!.map((ev) => ev.viagVirtualId),\n performerIds: allEventIds!\n .filter((ev) => ev.performerId != null)\n .map((ev) => ev.performerId!),\n venueIds: allEventIds!.map((ev) => ev.venueId),\n },\n groupBy: reportConfig.groupBy,\n globalReportTypeId: reportConfig.globalReportTypeId,\n metrics: reportConfig.metrics,\n isUsingFilterOverride:\n reportConfig.hasFilterOverride ||\n isReportFilterOverriden(filterQuery, reportConfig.filter),\n fileType,\n listingReportMetricsRequested:\n reportMetricsRequested as ListingReportMetricColumn[],\n });\n\n if (result.data) {\n downloadFileFromBlob(\n `${getReportExportFileBasename(\n reportConfig.reportName\n )}.${fileType.toLowerCase()}`,\n result.data\n );\n }\n },\n (error) => {\n trackError('ReportClient.downloadListingReportMetrics', error);\n },\n () => onReportExported()\n );\n };\n\n useEffect(() => {\n if (allEventIds != null) {\n downloadReport();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allEventIds]);\n\n return <>;\n}\n\nfunction ReportsInventoryClientSideExportInner({\n reportExportOptions: { reportToExport: reportConfig, fileType },\n onReportExported,\n}: {\n reportExportOptions: ReportExportOptions;\n onReportExported: () => void;\n}) {\n const { reportMetrics, isLoading, reportSummary } =\n useReportMetricsContext();\n const { data, eventsTransformed } = useCatalogDataContext();\n const { displayedColumnsConfig } = useListingReportTableColumnDef();\n const { displayNames: columnDisplayNames } = useColumnDisplayName({\n columnIds: reportConfig.metrics,\n sectionType: SectionType.ListingsReport,\n });\n const deactivatedText = useContent(ContentId.Deactivated);\n\n const reportMetricsMapped: ListingReportMetricsWithGroupBy[] | undefined =\n useMemo(() => {\n if (!isLoading) {\n return mapReportMetrics(reportMetrics, eventsTransformed, data);\n }\n }, [data, eventsTransformed, isLoading, reportMetrics]);\n\n const userIds = useMemo(() => {\n if (!reportMetricsMapped || !displayedColumnsConfig?.length) {\n return undefined;\n }\n\n const userIds: string[] = [];\n\n reportMetricsMapped.forEach((reportMetric) => {\n const userIdsInRow = mapReportMetricToUserIds(\n reportMetric,\n displayedColumnsConfig\n );\n userIds.push(...userIdsInRow);\n });\n\n return uniq(userIds);\n }, [displayedColumnsConfig, reportMetricsMapped]);\n\n const useGetUserInfosQuery = useGetUserInfos(userIds);\n\n const allActiveUserInfos = useMemo(() => {\n if (userIds != null && userIds.length === 0) {\n return {};\n }\n return useGetUserInfosQuery.data;\n }, [useGetUserInfosQuery.data, userIds]);\n\n // Main data to be exported\n const tableData = useMemo(() => {\n if (\n !reportMetricsMapped ||\n !displayedColumnsConfig?.length ||\n !allActiveUserInfos ||\n !deactivatedText\n ) {\n return undefined;\n }\n\n const result: string[][] = [];\n\n const sortBy =\n reportConfig.sortBy ??\n GROUP_BY_TO_PRIMARY_COLUMN_ID[reportConfig.groupBy];\n const sortByColumnConfig = displayedColumnsConfig.find(\n (c) => c.id === sortBy\n );\n\n const dataSorted = reportMetricsMapped.toSorted((a, b) =>\n sortReportMetrics(\n a,\n b,\n sortByColumnConfig,\n reportConfig.isSortDescending ?? false\n )\n );\n\n dataSorted.forEach((reportMetric) => {\n const row = mapReportMetricToTableString(\n reportMetric,\n displayedColumnsConfig,\n allActiveUserInfos,\n deactivatedText\n );\n result.push(row);\n });\n\n return result;\n }, [\n allActiveUserInfos,\n deactivatedText,\n displayedColumnsConfig,\n reportConfig.groupBy,\n reportConfig.isSortDescending,\n reportConfig.sortBy,\n reportMetricsMapped,\n ]);\n\n // Summary data\n const tableFoot = useMemo(() => {\n if (\n !reportSummary ||\n !displayedColumnsConfig?.length ||\n !allActiveUserInfos\n ) {\n return undefined;\n }\n\n const dataMapped = mapReportMetrics(\n [reportSummary],\n eventsTransformed,\n data\n );\n\n if (dataMapped?.length) {\n return mapReportMetricToTableString(\n dataMapped[0],\n displayedColumnsConfig,\n allActiveUserInfos\n );\n }\n }, [\n allActiveUserInfos,\n data,\n displayedColumnsConfig,\n eventsTransformed,\n reportSummary,\n ]);\n\n // Table header\n const tableHeader = useMemo(() => {\n if (!columnDisplayNames.length || !displayedColumnsConfig) {\n return undefined;\n }\n\n return displayedColumnsConfig.map((c) => {\n const index = reportConfig.metrics.indexOf(c.id ?? '');\n if (index < 0) {\n return '';\n }\n return columnDisplayNames[index];\n });\n }, [columnDisplayNames, displayedColumnsConfig, reportConfig.metrics]);\n\n const onDataLoaded = (\n tableHeader: string[],\n tableData: string[][],\n tableFoot: string[]\n ) => {\n if (tableData.length > 0) {\n exportReport(reportConfig, fileType, tableHeader, tableData, tableFoot);\n }\n\n onReportExported();\n };\n\n useEffect(() => {\n if (\n data != null &&\n eventsTransformed != null &&\n tableData != null &&\n tableHeader != null &&\n tableFoot != null\n ) {\n onDataLoaded(tableHeader, tableData, tableFoot);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tableData, tableHeader, tableFoot]);\n\n return <>;\n}\n","import { cloneDeep } from 'lodash-es';\nimport { ReportConfig } from 'src/hooks/useReportConfigs';\nimport {\n ArTimeBucketWithData,\n SaleReportMetricsWithGroupBy,\n} from 'src/utils/reportsUtils';\nimport { addMoneySameCurrency } from 'src/utils/ticketMetricUtils';\nimport { EventWithData } from 'src/WebApiController';\nimport {\n CatalogResults,\n Marketplace,\n ReportGroupBy,\n SaleReportMetrics,\n} from 'src/WebApiController';\n\nexport const mapReportMetrics = (\n reportMetrics: SaleReportMetrics[] | undefined,\n eventsTransformed: EventWithData[] | undefined,\n data: CatalogResults | undefined\n): SaleReportMetricsWithGroupBy[] | undefined => {\n const isArAgingReport =\n reportMetrics != null && reportMetrics.every((r) => r.timeBkt != null);\n\n const getGroupByData = (r: SaleReportMetrics) => {\n const event = r.eventId\n ? eventsTransformed?.find(\n (e) =>\n e.event.viagId?.toString() === r.eventId ||\n e.event.mappingId === r.eventId\n )?.event\n : undefined;\n\n const performerId = r.perfId ?? event?.perfId;\n const performer = performerId ? data?.performers?.[performerId] : undefined;\n\n const venueId = r.venueId ?? event?.venueId;\n const venue = venueId ? data?.venues?.[venueId] : undefined;\n\n return { event, performer, venue };\n };\n\n let metricsMapped: SaleReportMetricsWithGroupBy[] | undefined;\n\n // For now assume that metrics are grouped by marketplace\n if (isArAgingReport) {\n // Group by marketplace, then reduce to get the timeBucketsWithData\n const metricsByMarketplace = reportMetrics.reduce(\n (acc, r) => {\n const key = r.mkp!;\n const existing = acc[key] ?? [];\n return {\n ...acc,\n [key]: [...existing, r],\n };\n },\n {} as Record\n );\n\n metricsMapped = Object.values(metricsByMarketplace).map((metrics) => {\n const timeBucketsWithData = metrics.reduce((acc, r) => {\n return [\n ...acc,\n {\n timeBkt: r.timeBkt!,\n ttlOutsBal: r.ttlOutsBal!,\n },\n ];\n }, [] as ArTimeBucketWithData[]);\n\n const { event, performer, venue } = getGroupByData(metrics[0]);\n return {\n ...metrics[0],\n performer,\n venue,\n event,\n timeBucketsWithData,\n } as SaleReportMetricsWithGroupBy;\n });\n } else {\n metricsMapped = reportMetrics?.map((r) => {\n const { event, performer, venue } = getGroupByData(r);\n\n return {\n ...r,\n performer,\n venue,\n event,\n } as SaleReportMetricsWithGroupBy;\n });\n }\n\n return metricsMapped;\n};\n\nexport const mapReportMetricsSummary = (\n reportConfig: ReportConfig,\n reportSummary: SaleReportMetrics | undefined,\n reportMetricsMapped: SaleReportMetricsWithGroupBy[] | undefined\n): SaleReportMetricsWithGroupBy | undefined => {\n if (reportConfig.groupBy !== ReportGroupBy.ArAgingMarketplace) {\n return reportSummary as SaleReportMetricsWithGroupBy;\n }\n\n const timeBucketsWithData = reportMetricsMapped?.reduce((acc, metric) => {\n if (acc.length === 0) {\n acc.push(...cloneDeep(metric.timeBucketsWithData!));\n return acc;\n }\n\n metric.timeBucketsWithData?.forEach((d) => {\n const existingIndex = acc.findIndex(\n (a) =>\n a.timeBkt?.relativeEndSecs === d.timeBkt?.relativeEndSecs &&\n a.timeBkt?.relativeStartSecs === d.timeBkt?.relativeStartSecs\n );\n if (existingIndex !== -1) {\n acc[existingIndex].ttlOutsBal = addMoneySameCurrency(\n acc[existingIndex].ttlOutsBal,\n d.ttlOutsBal,\n undefined,\n undefined\n )!;\n } else {\n acc.push(d);\n }\n });\n\n return acc;\n }, [] as ArTimeBucketWithData[]);\n\n return {\n ...reportSummary,\n timeBucketsWithData,\n } as SaleReportMetricsWithGroupBy;\n};\n","import { ColumnDef } from '@tanstack/react-table';\nimport { createContext, PropsWithChildren, useContext, useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { ReportConfig } from 'src/hooks/useReportConfigs';\nimport { useTagsForEntityType } from 'src/hooks/useTagsForEntityType';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport {\n filterColumnsByFeatures,\n getSaleReportColumnConfigById,\n} from 'src/utils/columns/columnUtils';\nimport { filterCustomColumnsForSale } from 'src/utils/columns/sales/salesCustomColumnUtils';\nimport { CustomSalesColumn } from 'src/utils/columns/sales/salesCustomColumnUtils.types';\nimport { SaleReportMetricsWithGroupBy } from 'src/utils/reportsUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { hasFeatures } from 'src/utils/userUtils';\nimport {\n ActionOutboxEntityType,\n ReportGroupBy,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { SalesReportTableColumnId } from '../../utils/columns/sales/salesColumnUtils.types';\nimport {\n arTimeBucketColumnDef,\n customColumnDef,\n eventTagColumnDef,\n SALE_REPORT_TABLE_COLUMNS_CONFIG,\n tagColumnDef,\n} from './configs/SaleReportTableColumnsConfig';\n\ntype SaleReportTableColumnDefContextType = {\n displayedColumnsConfig:\n | ColumnDef[]\n | undefined;\n isLoading?: boolean;\n};\n\nconst SaleReportTableColumnDefContext =\n createContext({\n displayedColumnsConfig: undefined,\n });\n\nexport const SaleReportTableColumnDefContextProvider = ({\n report,\n children,\n}: PropsWithChildren<{\n report: ReportConfig;\n}>) => {\n const { appContext, loginContext } = useAppContext();\n const { tagsMetadataNumeric, isLoading: saleTagIsLoading } =\n useTagsForEntityType(ActionOutboxEntityType.Sale, true);\n\n const { tagsMetadata: tagsMetadataEvent, isLoading: eventTagIsLoading } =\n useTagsForEntityType(ActionOutboxEntityType.SellerEvent, true);\n\n const { value: customSaleColumns = [], isLoading: customColumnIsLoading } =\n useServerUserSetting({\n id: UserSetting.SaleCustomColumns,\n });\n\n const customSaleColumnsFiltered = filterCustomColumnsForSale(\n customSaleColumns,\n tagsMetadataNumeric\n );\n\n const displayedColumnsConfig = useMemo(() => {\n const columns = new Set([\n // Add unconfigurable columns first\n ...Object.values(SALE_REPORT_TABLE_COLUMNS_CONFIG)\n .filter((column) => {\n const columnDef = getSaleReportColumnConfigById(\n column.id as SalesReportTableColumnId\n ).personalization;\n const hasFeatureForColumn =\n columnDef.requiredFeatures.length === 0 ||\n hasFeatures(\n loginContext?.user,\n appContext?.features,\n columnDef.requiredFeatures\n );\n return !columnDef.isConfigurable && hasFeatureForColumn;\n })\n .map((item) => item.id as SalesReportTableColumnId),\n // Add user defined columns next\n ...filterColumnsByFeatures(\n report.metrics,\n SectionType.SalesReport,\n customSaleColumnsFiltered,\n loginContext?.user,\n appContext?.features,\n tagsMetadataNumeric,\n report.groupBy\n ),\n ]);\n\n const displayedColumns = Array.from(columns).reduce<\n ColumnDef[]\n >((acc, columnId) => {\n if (tagsMetadataNumeric?.find((t) => t.key === columnId)) {\n acc.push(tagColumnDef(columnId));\n } else if (tagsMetadataEvent?.find((t) => t.key === columnId)) {\n acc.push(eventTagColumnDef(columnId));\n } else if (customSaleColumnsFiltered.find((c) => c.id === columnId)) {\n acc.push(\n customColumnDef(\n columnId,\n customSaleColumnsFiltered.find((c) => c.id === columnId)?.formula\n )\n );\n } else {\n const columnConfig = Object.values(\n SALE_REPORT_TABLE_COLUMNS_CONFIG\n ).find((column) => column.id === columnId);\n if (columnConfig)\n acc.push(\n columnConfig as ColumnDef\n );\n }\n\n return acc;\n }, []);\n\n // Add time bucket columns for AR Aging reports\n if (report.groupBy === ReportGroupBy.ArAgingMarketplace) {\n report.arAgingTimeBuckets?.forEach((bucket) => {\n displayedColumns.push(arTimeBucketColumnDef(bucket));\n });\n }\n\n return displayedColumns;\n }, [\n appContext?.features,\n customSaleColumnsFiltered,\n loginContext?.user,\n report.arAgingTimeBuckets,\n report.groupBy,\n report.metrics,\n tagsMetadataEvent,\n tagsMetadataNumeric,\n ]);\n\n const isLoading =\n saleTagIsLoading || eventTagIsLoading || customColumnIsLoading;\n\n return (\n \n {children}\n \n );\n};\n\nexport const useSaleReportTableColumnDef = () =>\n useContext(SaleReportTableColumnDefContext);\n","import { PropsWithChildren, useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { CatalogDataContextProvider } from 'src/contexts/CatalogDataContext';\nimport { FilterQueryContextProvider } from 'src/contexts/FilterQueryContext';\nimport { ReportMetricsContextProvider } from 'src/contexts/ReportMetricsContext';\nimport { ReportConfig } from 'src/hooks/useReportConfigs';\nimport { DefaultSaleQuery, EmptySaleQuery } from 'src/utils/eventQueryUtils';\nimport { transformData } from 'src/utils/eventWithDataUtils';\nimport { isReportFilterOverriden } from 'src/utils/reportsUtils';\nimport {\n ActionOutboxEntityType,\n ReportClient,\n ReportGroupBy,\n SaleQuery,\n SaleReportMetrics,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { getCatalogData } from '../Sales';\n\nexport function ReportsSaleContextProvider({\n reportConfig,\n children,\n applyMaxRowLimitByDefault = true,\n}: PropsWithChildren<{\n reportConfig: ReportConfig;\n applyMaxRowLimitByDefault?: boolean;\n}>) {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const getReportMetrics = useCallback(\n (\n filterQuery: SaleQuery,\n groupBy: ReportGroupBy,\n maxResultSize?: number\n ) => {\n return new ReportClient(\n activeAccountWebClientConfig\n ).getSaleReportMetrics(\n {\n query: filterQuery,\n groupBy,\n globalReportTypeId: reportConfig.globalReportTypeId,\n isUsingFilterOverride:\n reportConfig.hasFilterOverride ||\n isReportFilterOverriden(filterQuery, reportConfig.filter),\n arAgingTimeBuckets: reportConfig.arAgingTimeBuckets ?? [],\n },\n maxResultSize\n );\n },\n [\n activeAccountWebClientConfig,\n reportConfig.arAgingTimeBuckets,\n reportConfig.filter,\n reportConfig.globalReportTypeId,\n reportConfig.hasFilterOverride,\n ]\n );\n\n return (\n \n initialQuery={(reportConfig.filter as SaleQuery) ?? DefaultSaleQuery}\n emptyQuery={EmptySaleQuery}\n loadQueryFromUrl={false}\n viewModeSettingId={UserSetting.SalePageViewMode}\n >\n \n entityType={ActionOutboxEntityType.Sale}\n queryKey=\"getCatalogForSale\"\n getCatalogData={(c, f) => getCatalogData(c, f, false)}\n transformEventData={transformData}\n >\n \n queryKey=\"getReportSaleMetrics\"\n getReportMetrics={(f, g, _, m) => getReportMetrics(f, g, m)}\n groupBy={reportConfig.groupBy}\n applyMaxRowLimitByDefault={applyMaxRowLimitByDefault}\n >\n {children}\n \n \n \n );\n}\n","import { uniq } from 'lodash-es';\nimport { useEffect, useMemo } from 'react';\nimport {\n mapReportMetrics,\n mapReportMetricsSummary,\n} from 'src/components/ReportsSalePage/ReportsSalePage.utils';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useContent } from 'src/contexts/ContentContext/Content';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { useReportMetricsContext } from 'src/contexts/ReportMetricsContext';\nimport { useGetUserInfos } from 'src/hooks/userGetUserInfo';\nimport { useColumnDisplayName } from 'src/modals/InventoryTableColumns/useColumnDisplayName';\nimport {\n timeBucketToColumnId,\n timeBucketToDayString,\n} from 'src/tables/SalesTable/configs/SaleReportTableColumnsConfig.utils';\nimport {\n SaleReportTableColumnDefContextProvider,\n useSaleReportTableColumnDef,\n} from 'src/tables/SalesTable/SaleReportTableColumnDefContext';\nimport { GROUP_BY_TO_PRIMARY_COLUMN_ID } from 'src/utils/columns/sales/salesReportColumnUtils.constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\nimport { downloadFileFromBlob } from 'src/utils/fileUtils';\nimport {\n isReportFilterOverriden,\n SaleReportMetricsWithGroupBy,\n} from 'src/utils/reportsUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport {\n DateTimeRangeWithRelative,\n EntityWithTicketsQuery,\n ReportClient,\n SaleQuery,\n SaleReportMetrics,\n} from 'src/WebApiController';\n\nimport { ReportsSaleContextProvider } from '../../../navigations/Routes/ReportsSale/ReportsSaleContextProvider';\nimport { ReportExportOptions } from './ReportsExport.types';\nimport {\n exportReport,\n getReportExportFileBasename,\n mapReportMetricToTableString,\n mapReportMetricToUserIds,\n sortReportMetrics,\n} from './ReportsExport.utils';\n\nexport function ReportsSaleExport({\n reportExportOptions,\n onReportExported,\n}: {\n reportExportOptions: ReportExportOptions | null;\n onReportExported: () => void;\n}) {\n // Loading report metrics depend on the context provider (need to wait for the context provider to load the report metrics)\n\n // If reportToExport is null,\n // no reports need to be exported, so not rendering the \n {reportExportOptions?.serverSideExport ? (\n \n ) : (\n \n \n \n )}\n \n );\n}\n\nfunction ReportsSaleServerSideExportInner({\n reportExportOptions: { reportToExport: reportConfig, fileType },\n onReportExported,\n}: {\n reportExportOptions: ReportExportOptions;\n onReportExported: () => void;\n}) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { allEventIds } = useCatalogDataContext();\n const { filterQuery } = useFilterQueryContext<\n EntityWithTicketsQuery & QueryWithViewMode\n >();\n const { trackError } = useErrorBoundaryContext();\n\n const downloadReport = async () => {\n await tryInvokeApi(\n async () => {\n const result = await new ReportClient(\n activeAccountWebClientConfig\n ).downloadSaleReportMetrics({\n query: {\n ...(reportConfig.filter as SaleQuery),\n eventOrMappingIds: allEventIds!.map((ev) => ev.viagVirtualId),\n performerIds: allEventIds!\n .filter((ev) => ev.performerId != null)\n .map((ev) => ev.performerId!),\n venueIds: allEventIds!.map((ev) => ev.venueId),\n },\n groupBy: reportConfig.groupBy,\n globalReportTypeId: reportConfig.globalReportTypeId,\n metrics: reportConfig.metrics,\n isUsingFilterOverride:\n reportConfig.hasFilterOverride ||\n isReportFilterOverriden(filterQuery, reportConfig.filter),\n fileType,\n arAgingTimeBuckets: reportConfig.arAgingTimeBuckets ?? [],\n });\n\n if (result.data) {\n downloadFileFromBlob(\n `${getReportExportFileBasename(\n reportConfig.reportName\n )}.${fileType.toLowerCase()}`,\n result.data\n );\n }\n },\n (error) => {\n trackError('ReportClient.downloadSaleReportMetrics', error);\n },\n () => onReportExported()\n );\n };\n\n useEffect(() => {\n if (allEventIds != null) {\n downloadReport();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allEventIds]);\n\n return <>;\n}\n\nfunction ReportsSaleClientSideExportInner({\n reportExportOptions: { reportToExport: reportConfig, fileType },\n onReportExported,\n}: {\n reportExportOptions: ReportExportOptions;\n onReportExported: () => void;\n}) {\n const { reportMetrics, isLoading, reportSummary } =\n useReportMetricsContext();\n const { data, eventsTransformed } = useCatalogDataContext();\n const { displayedColumnsConfig } = useSaleReportTableColumnDef();\n const { displayNames: columnDisplayNames } = useColumnDisplayName({\n columnIds: reportConfig.metrics,\n sectionType: SectionType.SalesReport,\n });\n const deactivatedText = useContent(ContentId.Deactivated);\n const daysText = useContent(ContentId.Days);\n const totalText = useContent(ContentId.Total);\n\n const reportMetricsMapped: SaleReportMetricsWithGroupBy[] | undefined =\n useMemo(() => {\n if (!isLoading) {\n return mapReportMetrics(reportMetrics, eventsTransformed, data);\n }\n }, [data, eventsTransformed, isLoading, reportMetrics]);\n\n const userIds = useMemo(() => {\n if (!reportMetricsMapped || !displayedColumnsConfig?.length) {\n return undefined;\n }\n\n const userIds: string[] = [];\n\n reportMetricsMapped.forEach((reportMetric) => {\n const userIdsInRow = mapReportMetricToUserIds(\n reportMetric,\n displayedColumnsConfig\n );\n userIds.push(...userIdsInRow);\n });\n\n return uniq(userIds);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [displayedColumnsConfig?.length, reportMetricsMapped]);\n\n const useGetUserInfosQuery = useGetUserInfos(userIds);\n\n const allActiveUserInfos = useMemo(() => {\n if (userIds != null && userIds.length === 0) {\n return {};\n }\n return useGetUserInfosQuery.data;\n }, [useGetUserInfosQuery.data, userIds]);\n\n // Main data to be exported\n const tableData = useMemo(() => {\n if (\n !reportMetricsMapped ||\n !displayedColumnsConfig?.length ||\n !allActiveUserInfos ||\n !deactivatedText\n ) {\n return undefined;\n }\n\n const result: string[][] = [];\n\n const sortBy =\n reportConfig.sortBy ??\n GROUP_BY_TO_PRIMARY_COLUMN_ID[reportConfig.groupBy];\n const sortByColumnConfig = displayedColumnsConfig.find(\n (c) => c.id === sortBy\n );\n\n const dataSorted = reportMetricsMapped.toSorted((a, b) =>\n sortReportMetrics(\n a,\n b,\n sortByColumnConfig,\n reportConfig.isSortDescending ?? false\n )\n );\n\n dataSorted.forEach((reportMetric) => {\n const row = mapReportMetricToTableString(\n reportMetric,\n displayedColumnsConfig,\n allActiveUserInfos,\n deactivatedText\n );\n result.push(row);\n });\n\n return result;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n allActiveUserInfos,\n deactivatedText,\n displayedColumnsConfig?.length,\n reportConfig.groupBy,\n reportConfig.isSortDescending,\n reportConfig.sortBy,\n reportMetricsMapped,\n ]);\n\n // Summary data\n const tableFoot = useMemo(() => {\n if (\n !reportSummary ||\n !displayedColumnsConfig?.length ||\n !allActiveUserInfos ||\n !reportMetricsMapped\n ) {\n return undefined;\n }\n\n const dataMapped = mapReportMetricsSummary(\n reportConfig,\n reportSummary,\n reportMetricsMapped\n );\n\n if (dataMapped) {\n return mapReportMetricToTableString(\n dataMapped,\n displayedColumnsConfig,\n allActiveUserInfos\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n allActiveUserInfos,\n displayedColumnsConfig?.length,\n reportConfig,\n reportMetricsMapped,\n reportSummary,\n ]);\n\n // Table header\n const tableHeader = useMemo(() => {\n if (\n !columnDisplayNames.length ||\n !displayedColumnsConfig ||\n !reportMetricsMapped ||\n !daysText ||\n !totalText\n ) {\n return undefined;\n }\n\n let timeBuckets: DateTimeRangeWithRelative[] = [];\n if (reportConfig.arAgingTimeBuckets) {\n timeBuckets = reportConfig.arAgingTimeBuckets.map(\n (t) =>\n ({\n relativeStartSecs: t.relativeStartSecs,\n relativeEndSecs: t.relativeEndSecs,\n }) as DateTimeRangeWithRelative\n );\n }\n\n return displayedColumnsConfig.map((c) => {\n const index = reportConfig.metrics.indexOf(c.id ?? '');\n if (index < 0) {\n const timeBucket = timeBuckets.find(\n (t) => c.id === timeBucketToColumnId(t)\n );\n if (timeBucket) {\n return timeBucketToDayString(timeBucket, daysText, totalText);\n }\n return '';\n }\n return columnDisplayNames[index];\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n columnDisplayNames,\n displayedColumnsConfig?.length,\n reportMetricsMapped,\n daysText,\n totalText,\n reportConfig.arAgingTimeBuckets,\n reportConfig.metrics,\n ]);\n\n const onDataLoaded = (\n tableHeader: string[],\n tableData: string[][],\n tableFoot: string[]\n ) => {\n exportReport(reportConfig, fileType, tableHeader, tableData, tableFoot);\n\n onReportExported();\n };\n\n useEffect(() => {\n if (\n data != null &&\n eventsTransformed != null &&\n tableData != null &&\n tableHeader != null &&\n tableFoot != null\n ) {\n onDataLoaded(tableHeader, tableData, tableFoot);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tableData, tableHeader, tableFoot]);\n\n return <>;\n}\n","import { ColumnDef } from '@tanstack/react-table';\nimport { useState } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { ReportsInventoryExport } from 'src/components/Reports/ReportsExport';\nimport { ReportExportOptions } from 'src/components/Reports/ReportsExport/ReportsExport.types';\nimport { ReportsSaleExport } from 'src/components/Reports/ReportsExport/ReportsSaleExport';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { DropdownMenu, Stack } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { ReportConfig } from 'src/hooks/useReportConfigs';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { CopyIcon } from 'src/svgs';\nimport { OpenLinkIcon } from 'src/svgs/OpenLinkIcon';\nimport {\n DeleteIcon,\n DownloadIcon,\n EditIcon,\n GenericDisclosuresIcon,\n HistoryIcon,\n IconsFill,\n MoreIcon,\n ProcessingIcon,\n ShareIcon,\n} from 'src/svgs/Viagogo';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ReportTypes, ReportTypesV2 } from 'src/utils/reportsUtils';\nimport { GridActionType } from 'src/utils/tableUtils';\nimport {\n Feature,\n Permission,\n ReportFileType,\n ReportGroupBy,\n} from 'src/WebApiController';\n\nexport type ReportWithHandlers = {\n report?: ReportConfig;\n reportV2?: ReportConfigV2;\n onReportAction?: (\n report: ReportConfig | undefined,\n reportV2: ReportConfigV2 | undefined,\n actionType: GridActionType,\n event?: React.MouseEvent\n ) => void;\n};\n\nexport const REPORTS_TABLE_COLUMNS_CONFIG: ColumnDef[] =\n [\n {\n id: 'reportName',\n header: () => (\n \n \n \n ),\n minSize: 50,\n maxSize: 200,\n accessorFn: (data) =>\n data?.report?.reportName ?? data?.reportV2?.reportName,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as string;\n if (!original) {\n return ;\n }\n return (\n \n \n {value}\n \n );\n },\n },\n {\n id: 'ownerDisplayName',\n header: () => (\n \n \n \n ),\n accessorFn: (data) =>\n data?.report?.ownerDisplayName ?? data?.reportV2?.ownerDisplayName,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as string | null | undefined;\n if (!original) {\n return ;\n }\n return (\n \n <>\n {(original.report?.globalReportTypeId ??\n original.reportV2?.globalReportTypeId) != null ? (\n \n ) : (\n <>{value}\n )}\n \n \n );\n },\n },\n {\n id: 'actions',\n enableSorting: false,\n header: () => (\n \n \n \n ),\n minSize: 50,\n maxSize: 50,\n cell: function Cell({ row: { original } }) {\n const canCreateReport = useUserHasAnyOfPermissions(\n Permission.Reports_CreateReports\n );\n const canUpdateReport = useUserHasAnyOfPermissions(\n Permission.Reports_UpdateReports\n );\n const canUpdateOwnReports = useUserHasAnyOfPermissions(\n Permission.Reports_UpdateReportsOwned\n );\n const canViewHistory = useUserHasFeature(Feature.ReportSnapshot);\n const hasExportInventoryFeature = useUserHasFeature(\n Feature.ExportInventory\n );\n\n const [reportExportOptions, setReportExportOptions] =\n useState(null);\n\n const onReportExported = () => {\n setReportExportOptions(null);\n };\n\n if (!original) {\n return ;\n }\n\n const isOwner =\n (original.report?.isOwner ?? original.reportV2?.isOwner) === true;\n\n const canUpdate =\n original && (canUpdateReport || (isOwner && canUpdateOwnReports));\n\n const actions = [\n isOwner && (\n <>\n \n original.onReportAction &&\n original.onReportAction(\n original.report,\n original.reportV2,\n GridActionType.Share\n )\n }\n >\n \n \n \n \n \n {canUpdate && (\n \n original.onReportAction &&\n original.onReportAction(\n original.report,\n original.reportV2,\n GridActionType.Edit\n )\n }\n >\n \n \n \n \n \n )}\n \n ),\n original &&\n original.report?.reportIdRedirect == null &&\n original.reportV2 == null && // not supported for v2 yet\n (hasExportInventoryFeature ||\n original.report?.groupBy !== ReportGroupBy.ListingId) && (\n \n \n \n \n \n \n \n \n setReportExportOptions({\n reportToExport: original.report!,\n fileType: ReportFileType.XLSX,\n serverSideExport:\n original.report!.groupBy !==\n ReportGroupBy.ArAgingMarketplace,\n })\n }\n >\n \n \n \n setReportExportOptions({\n reportToExport: original.report!,\n fileType: ReportFileType.CSV,\n serverSideExport:\n original.report?.groupBy !==\n ReportGroupBy.ArAgingMarketplace,\n })\n }\n >\n \n \n {/*\n We don't support server side PDF export so we hide it for now\n Need to be determined on https://thestubhub.atlassian.net/browse/POS-4291 on how we want to handle this\n \n setReportExportOptions({\n reportToExport: original.report,\n fileType: ReportFileType.PDF,\n })\n }\n >\n \n */}\n \n \n ),\n canCreateReport &&\n original.report?.reportIdRedirect == null && // not supported for redirected reports yet\n original.report?.groupBy !==\n ReportGroupBy.SaleIdTicketIdCommissionUser &&\n original.reportV2?.reportType !== ReportTypesV2.Commission &&\n original.report?.groupBy !== ReportGroupBy.ArAgingMarketplace && (\n \n original.onReportAction &&\n original.onReportAction(\n original.report,\n original.reportV2,\n GridActionType.Duplicate\n )\n }\n >\n \n \n \n \n \n ),\n isOwner && canUpdate && (\n \n original.onReportAction &&\n original.onReportAction(\n original.report,\n original.reportV2,\n GridActionType.Delete\n )\n }\n >\n \n \n \n \n \n ),\n canViewHistory &&\n original.report?.globalReportTypeId != null &&\n original.reportV2 == null && // not supported for v2 yet\n original.report?.reportIdRedirect == null && (\n \n original.onReportAction &&\n original.onReportAction(\n original.report,\n original.reportV2,\n GridActionType.History\n )\n }\n >\n \n \n \n \n \n ),\n ];\n\n const visibleActions = actions.filter((a) => !!a);\n\n return (\n <>\n \n {reportExportOptions && (\n \n \n \n )}\n }\n onClick={(event: React.MouseEvent) =>\n original.onReportAction &&\n original.onReportAction(\n original.report,\n original.reportV2,\n GridActionType.Select,\n event\n )\n }\n textContentId={ContentId.OpenReport}\n style={{\n fontSize: vars.typography.fontSize.xs,\n }}\n startWithText\n />\n {visibleActions.length > 0 && (\n \n \n \n \n \n \n \n \n {...visibleActions}\n \n \n \n )}\n \n {original.report &&\n original.report.reportType === ReportTypes.Inventory ? (\n \n ) : (\n \n )}\n \n );\n },\n },\n ];\n","import {\n InitialTableState,\n PaginationState,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useEffect, useMemo, useState } from 'react';\nimport { FormatContent, useContent } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { ReportConfig } from 'src/hooks/useReportConfigs';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { NoData, Table } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\n\nimport {\n REPORTS_TABLE_COLUMNS_CONFIG,\n ReportWithHandlers,\n} from './configs/ReportsTableColumnsConfig';\n\nexport type ReportsTableDataProps = {\n reports?: ReportConfig[];\n reportsV2?: ReportConfigV2[];\n};\n\nexport type ReportsTableProps = ReportsTableDataProps & {\n onMount?: () => void;\n onUnmount?: (state: object) => void;\n initState?: InitialTableState;\n isGlobalSection?: boolean;\n};\n\nexport function ReportsTable({\n reports,\n reportsV2,\n onReportAction,\n onMount,\n onUnmount,\n initState,\n isGlobalSection,\n}: ReportsTableProps & Pick) {\n const reportText = useContent(ContentId.Reports);\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const [sorting, setSorting] = useState(\n initState?.sorting || []\n );\n const [{ pageIndex, pageSize }, setPagination] = useState({\n pageIndex: initState?.pagination?.pageIndex || 0,\n pageSize: (reports?.length ?? 0) + (reportsV2?.length ?? 0),\n });\n const pagination = useMemo(\n () => ({\n pageIndex,\n pageSize,\n }),\n [pageIndex, pageSize]\n );\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n useEffect(() => {\n if (pagination.pageSize !== reports?.length) {\n setPagination((prevState) => ({\n ...prevState,\n pageSize: (reports?.length ?? 0) + (reportsV2?.length ?? 0),\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reports, reportsV2]);\n\n const data = useMemo(\n () =>\n (reports ?? [])\n .map(\n (r) =>\n ({\n report: r,\n onReportAction,\n }) as ReportWithHandlers\n )\n .concat(\n (reportsV2 ?? []).map(\n (r) =>\n ({\n reportV2: r,\n onReportAction,\n }) as ReportWithHandlers\n )\n ),\n [reports, reportsV2, onReportAction]\n );\n\n const options: Partial> = useMemo(\n () => ({\n data,\n columns: REPORTS_TABLE_COLUMNS_CONFIG,\n state: {\n pagination,\n sorting,\n columnVisibility: {\n ownerDisplayName: !isGlobalSection,\n },\n },\n onPaginationChange: setPagination,\n onSortingChange: setSorting,\n enableRowSelection: true,\n }),\n [data, isGlobalSection, pagination, sorting]\n );\n\n return data.length ? (\n \n ) : (\n \n \n \n );\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { ReportConfig } from 'src/hooks/useReportConfigs';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { GridActionType } from 'src/utils/tableUtils';\n\nimport { ReportsTable } from './ReportsTable';\nimport * as styles from './ReportsTableContainer.css';\n\nexport function ReportsTableContainer({\n reports,\n reportsV2,\n onReportAction,\n}: {\n reports?: ReportConfig[];\n reportsV2?: ReportConfigV2[];\n onReportAction: (\n report: ReportConfig | undefined,\n reportV2: ReportConfigV2 | undefined,\n actionType: GridActionType,\n event?: React.MouseEvent\n ) => void;\n}) {\n const reportsV2Default = reportsV2?.filter((r) => r.globalReportTypeId) ?? [];\n const reportsV2Custom = reportsV2?.filter((r) => !r.globalReportTypeId) ?? [];\n\n const reportsDefault =\n reports?.filter(\n (r) =>\n r.globalReportTypeId &&\n !reportsV2Default.some(\n (rv2) => rv2.globalReportTypeId === r.globalReportTypeId\n ) // Avoid duplicates in V2 reports. Show v2 reports when possible\n ) ?? [];\n const reportsCustom = reports?.filter((r) => !r.globalReportTypeId) ?? [];\n\n return (\n
    \n
    \n {reportsDefault.length + reportsV2Default.length > 0 && (\n \n \n \n \n \n \n )}\n\n \n \n \n \n \n \n
    \n
    \n );\n}\n","import { ComponentProps, useCallback, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ShareReportDialog } from 'src/dialogs/ShareReportDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ReportConfig, useReportConfigs } from 'src/hooks/useReportConfigs';\nimport { GROUP_BY_TO_PRIMARY_COLUMN_ID as GROUP_BY_TO_PRIMARY_COLUMN_ID_LISTING } from 'src/utils/columns/inventory/inventoryColumnUtils.constants';\nimport { GROUP_BY_TO_PRIMARY_COLUMN_ID as GROUP_BY_TO_PRIMARY_COLUMN_ID_SALES } from 'src/utils/columns/sales/salesReportColumnUtils.constants';\nimport { ReportTypes } from 'src/utils/reportsUtils';\nimport { GridActionType } from 'src/utils/tableUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { ReportGroupBy } from 'src/WebApiController';\n\nconst DEFAULT_GROUP_BY_INVENTORY = ReportGroupBy.ListingId;\nconst DEFAULT_GROUP_BY_SALE = ReportGroupBy.SaleId;\n\nconst emptyReport: ReportConfig = {\n schemaVersion: '1',\n reportId: null,\n reportIdRedirect: null,\n reportName: '',\n reportType: ReportTypes.Inventory,\n ownerDisplayName: '',\n widgets: null,\n groupBy: ReportGroupBy.Performer,\n filter: null,\n metrics: [],\n numberOfItemsPerPage: null,\n sortBy: null,\n isSortDescending: null,\n globalReportTypeId: null,\n isOwner: true,\n roleIdsToShare: [],\n sellerUserIdsToShare: [],\n allowReaderEditMetrics: false,\n hasFilterOverride: null,\n hasMetricsOverride: null,\n arAgingTimeBuckets: null,\n viewableFilterItemIds: null,\n editableFilterItemIds: null,\n hiddenFilterItemIds: null,\n};\n\nexport function useReportV1Actions() {\n const navigate = useNavigate();\n const { loginContext } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const [currentReport, setCurrentReport] = useState();\n const reportBuilderDialogInventory = useBasicDialog();\n const reportBuilderDialogSale = useBasicDialog();\n const shareDialog = useBasicDialog();\n\n const deleteDialog = useBasicDialog();\n const reportHistoryDialog = useBasicDialog();\n\n const onAddNewReport = useCallback(\n (reportType: ReportTypes) => {\n const defaultMetrics =\n reportType === ReportTypes.Inventory\n ? [GROUP_BY_TO_PRIMARY_COLUMN_ID_LISTING[DEFAULT_GROUP_BY_INVENTORY]]\n : [GROUP_BY_TO_PRIMARY_COLUMN_ID_SALES[DEFAULT_GROUP_BY_SALE]];\n\n setCurrentReport({\n ...emptyReport,\n reportType,\n ownerDisplayName: loginContext?.user?.displayName ?? '',\n groupBy:\n reportType === ReportTypes.Inventory\n ? DEFAULT_GROUP_BY_INVENTORY\n : DEFAULT_GROUP_BY_SALE,\n metrics: defaultMetrics,\n });\n\n if (reportType === ReportTypes.Inventory) {\n reportBuilderDialogInventory.launchDialog();\n } else if (reportType === ReportTypes.Sale) {\n reportBuilderDialogSale.launchDialog();\n }\n },\n [\n loginContext?.user?.displayName,\n reportBuilderDialogInventory,\n reportBuilderDialogSale,\n ]\n );\n\n const {\n deleteReportConfig: deleteReportConfigInventory,\n upsertReportConfig: upsertReportConfigInventory,\n getReportConfigNameForDuplicate: getReportConfigNameForDuplicateInventory,\n } = useReportConfigs({\n reportType: ReportTypes.Inventory,\n });\n\n const {\n deleteReportConfig: deleteReportConfigSale,\n upsertReportConfig: upsertReportConfigSale,\n getReportConfigNameForDuplicate: getReportConfigNameForDuplicateSale,\n } = useReportConfigs({\n reportType: ReportTypes.Sale,\n });\n\n const invokeUpsertReport = useCallback(\n async (report: ReportConfig) => {\n await tryInvokeApi(\n async () => {\n if (report.reportType === ReportTypes.Inventory) {\n upsertReportConfigInventory(report.reportId, report);\n } else if (report.reportType === ReportTypes.Sale) {\n upsertReportConfigSale(report.reportId, report);\n }\n },\n (error) => {\n showErrorDialog('ReportClient.mergeReport', error, {\n trackErrorData: report,\n });\n }\n );\n },\n [showErrorDialog, upsertReportConfigInventory, upsertReportConfigSale]\n );\n\n const onReportShareSubmit = useCallback<\n ComponentProps['onOkay']\n >(\n async (roleIds, sellerUserIds) => {\n const updatedReport = {\n ...currentReport!,\n roleIdsToShare: roleIds,\n sellerUserIdsToShare: sellerUserIds,\n };\n await invokeUpsertReport(updatedReport);\n shareDialog.closeDialog();\n },\n [currentReport, invokeUpsertReport, shareDialog]\n );\n\n const onReportSaveSubmit = useCallback(\n async (report: ReportConfig) => {\n await invokeUpsertReport(report);\n if (report.reportType === ReportTypes.Inventory) {\n reportBuilderDialogInventory.closeDialog();\n } else if (report.reportType === ReportTypes.Sale) {\n reportBuilderDialogSale.closeDialog();\n }\n },\n [reportBuilderDialogInventory, reportBuilderDialogSale, invokeUpsertReport]\n );\n\n const onReportAction = useCallback(\n (\n reportConfig: ReportConfig,\n actionType: GridActionType,\n event?: React.MouseEvent\n ) => {\n switch (actionType) {\n case GridActionType.Select:\n if (reportConfig.reportId) {\n let navUrl =\n reportConfig.reportType === ReportTypes.Inventory\n ? `/reports/inventory/${reportConfig.reportId}`\n : `/reports/sale/${reportConfig.reportId}`;\n\n if (reportConfig.reportIdRedirect) {\n navUrl =\n reportConfig.reportType === ReportTypes.Inventory\n ? `/reports/inventory/v2/${reportConfig.reportIdRedirect}`\n : reportConfig.globalReportTypeId === 9 // Commission, from GlobalReportType\n ? `/reports/commission/v2/${reportConfig.reportIdRedirect}`\n : `/reports/sale/v2/${reportConfig.reportIdRedirect}`;\n }\n\n if (event?.metaKey || event?.ctrlKey) {\n // Open in new tab when holding down the meta/control key\n window.open(navUrl, '_blank', 'ref=noopener noreferrer');\n } else {\n if (reportConfig.reportIdRedirect) {\n navigate(navUrl, {\n state: { isFromV1Page: true },\n });\n } else {\n navigate(navUrl);\n }\n }\n }\n break;\n case GridActionType.Edit:\n setCurrentReport(reportConfig);\n if (reportConfig.reportType === ReportTypes.Inventory) {\n reportBuilderDialogInventory.launchDialog();\n } else if (reportConfig.reportType === ReportTypes.Sale) {\n reportBuilderDialogSale.launchDialog();\n }\n break;\n case GridActionType.Delete:\n setCurrentReport(reportConfig);\n deleteDialog.launchDialog();\n break;\n case GridActionType.Share:\n setCurrentReport(reportConfig);\n shareDialog.launchDialog();\n break;\n case GridActionType.Duplicate:\n invokeUpsertReport({\n ...reportConfig,\n reportId: null,\n reportName:\n reportConfig!.reportType === ReportTypes.Inventory\n ? getReportConfigNameForDuplicateInventory(\n reportConfig.reportName\n )\n : getReportConfigNameForDuplicateSale(reportConfig!.reportName),\n isOwner: true,\n globalReportTypeId: null,\n });\n break;\n case GridActionType.History:\n setCurrentReport(reportConfig);\n reportHistoryDialog.launchDialog();\n break;\n default:\n break;\n }\n },\n [\n deleteDialog,\n getReportConfigNameForDuplicateInventory,\n getReportConfigNameForDuplicateSale,\n invokeUpsertReport,\n navigate,\n reportBuilderDialogInventory,\n reportBuilderDialogSale,\n reportHistoryDialog,\n shareDialog,\n ]\n );\n\n const onReportDelete = useCallback(async () => {\n await tryInvokeApi(\n async () => {\n if (currentReport) {\n if (currentReport.reportType === ReportTypes.Inventory) {\n deleteReportConfigInventory(currentReport.reportId!);\n } else if (currentReport.reportType === ReportTypes.Sale) {\n deleteReportConfigSale(currentReport.reportId!);\n }\n }\n deleteDialog.closeDialog();\n },\n (error) => {\n showErrorDialog('UserSetting.deleteReport', error, {\n trackErrorData: currentReport,\n });\n }\n );\n }, [\n currentReport,\n deleteDialog,\n deleteReportConfigInventory,\n deleteReportConfigSale,\n showErrorDialog,\n ]);\n\n return {\n onAddNewReport,\n currentReport,\n setCurrentReport,\n onReportSaveSubmit,\n onReportShareSubmit,\n onReportDelete,\n onReportAction,\n reportBuilderDialogInventory,\n reportBuilderDialogSale,\n shareDialog,\n deleteDialog,\n reportHistoryDialog,\n };\n}\n","import { useCallback } from 'react';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ReportTypesV2 } from 'src/utils/reportsUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\n\nimport { ReportConfigV2, useReportConfigsV2 } from './useReportConfigsV2';\n\nexport function useReportConfigActionsV2() {\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const {\n deleteReportConfig: deleteReportConfigInventory,\n upsertReportConfig: upsertReportConfigInventory,\n getReportConfigNameForDuplicate: getReportConfigNameForDuplicateInventory,\n } = useReportConfigsV2({\n reportType: ReportTypesV2.InventoryV2,\n });\n\n const {\n deleteReportConfig: deleteReportConfigSale,\n upsertReportConfig: upsertReportConfigSale,\n getReportConfigNameForDuplicate: getReportConfigNameForDuplicateSale,\n } = useReportConfigsV2({\n reportType: ReportTypesV2.SaleV2,\n });\n\n const upsertReportConfig = useCallback(\n async (report: ReportConfigV2) => {\n return await tryInvokeApi(\n async () => {\n if (report.reportType === ReportTypesV2.InventoryV2) {\n return await upsertReportConfigInventory(report.reportId, report);\n } else if (report.reportType === ReportTypesV2.SaleV2) {\n return await upsertReportConfigSale(report.reportId, report);\n }\n },\n (error) => {\n showErrorDialog('ReportV2Client.mergeReport', error, {\n trackErrorData: report,\n });\n }\n );\n },\n [showErrorDialog, upsertReportConfigInventory, upsertReportConfigSale]\n );\n\n const deleteReportConfig = useCallback(\n async (reportType: ReportTypesV2, reportId: number) => {\n await tryInvokeApi(\n async () => {\n if (reportType === ReportTypesV2.InventoryV2) {\n deleteReportConfigInventory(reportId);\n } else if (reportType === ReportTypesV2.SaleV2) {\n deleteReportConfigSale(reportId);\n }\n },\n (error) => {\n showErrorDialog('UserSetting.deleteReport', error, {\n trackErrorData: {\n reportType,\n reportId,\n },\n });\n }\n );\n },\n [deleteReportConfigInventory, deleteReportConfigSale, showErrorDialog]\n );\n const getReportConfigNameForDuplicate = useCallback(\n (reportType: ReportTypesV2, reportName: string) =>\n reportType === ReportTypesV2.InventoryV2\n ? getReportConfigNameForDuplicateInventory(reportName)\n : getReportConfigNameForDuplicateSale(reportName),\n [\n getReportConfigNameForDuplicateInventory,\n getReportConfigNameForDuplicateSale,\n ]\n );\n\n return {\n upsertReportConfig,\n deleteReportConfig,\n getReportConfigNameForDuplicate,\n };\n}\n","import { ComponentProps, useCallback, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ShareReportDialog } from 'src/dialogs/ShareReportDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useReportConfigActionsV2 } from 'src/hooks/useReportConfigActionsV2';\nimport {\n REPORT_CONFIG_V2_SCHEMA_VERSION,\n ReportConfigV2,\n} from 'src/hooks/useReportConfigsV2';\nimport { DefaultReportV2ListingQuery } from 'src/utils/eventQueryUtils';\nimport { ReportTypesV2 } from 'src/utils/reportsUtils';\nimport { GridActionType } from 'src/utils/tableUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\n\nimport { ReportsV2LocationState } from './ReportsV2.types';\n\nconst emptyReport: ReportConfigV2 = {\n schemaVersion: REPORT_CONFIG_V2_SCHEMA_VERSION,\n reportId: null,\n reportName: '',\n request: {\n groupings: [],\n aggregations: [],\n orderBy: '',\n orderByAsc: true,\n pageNumber: 0,\n filters: DefaultReportV2ListingQuery,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any,\n reportType: ReportTypesV2.InventoryV2,\n ownerDisplayName: '',\n widgets: null,\n isOwner: true,\n roleIdsToShare: [] as number[],\n sellerUserIdsToShare: [] as string[],\n hasMetricsOverride: null,\n globalReportTypeId: null,\n viewableFilterItemIds: null,\n editableFilterItemIds: null,\n hiddenFilterItemIds: null,\n};\n\nconst getReportNavUrl = (reportType: ReportTypesV2, reportId: number) => {\n if (reportType === ReportTypesV2.InventoryV2) {\n return `/reports/inventory/v2/${reportId}`;\n } else if (reportType === ReportTypesV2.Commission) {\n return `/reports/commission/v2/${reportId}`;\n } else if (reportType === ReportTypesV2.SaleV2) {\n return `/reports/sale/v2/${reportId}`;\n }\n return '';\n};\n\nexport function useReportV2Actions() {\n const { loginContext } = useAppContext();\n const [currentReport, setCurrentReport] = useState();\n\n const navigate = useNavigate();\n\n const reportBuilderDialog = useBasicDialog();\n const deleteDialog = useBasicDialog();\n const shareDialog = useBasicDialog();\n const reportHistoryDialog = useBasicDialog();\n\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const onAddNewReport = useCallback(() => {\n setCurrentReport({\n ...emptyReport,\n ownerDisplayName: loginContext?.user?.displayName ?? '',\n request: {\n ...emptyReport.request,\n groupings: [],\n aggregations: [],\n orderByAsc: true,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any,\n });\n\n reportBuilderDialog.launchDialog();\n }, [loginContext?.user?.displayName, reportBuilderDialog]);\n\n const {\n upsertReportConfig,\n deleteReportConfig,\n getReportConfigNameForDuplicate,\n } = useReportConfigActionsV2();\n\n const onReportSaveSubmit = useCallback(\n async (report: ReportConfigV2) => {\n const isNewReport = report.reportId == null;\n const reportId = await upsertReportConfig(report);\n reportBuilderDialog.closeDialog();\n if (isNewReport && reportId != null) {\n const navUrl = getReportNavUrl(report.reportType, reportId);\n navigate(navUrl, {\n state: {\n isCreateNewReport: true,\n } satisfies ReportsV2LocationState,\n });\n }\n },\n [upsertReportConfig, reportBuilderDialog, navigate]\n );\n\n const onReportAction = (\n reportConfig: ReportConfigV2,\n actionType: GridActionType,\n event?: React.MouseEvent\n ) => {\n switch (actionType) {\n case GridActionType.Select:\n if (reportConfig.reportId != null) {\n const navUrl = getReportNavUrl(\n reportConfig.reportType,\n reportConfig.reportId!\n );\n if (event?.metaKey || event?.ctrlKey) {\n // Open in new tab when holding down the meta/control key\n window.open(navUrl, '_blank', 'ref=noopener noreferrer');\n } else {\n navigate(navUrl);\n }\n }\n break;\n case GridActionType.Edit:\n setCurrentReport(reportConfig);\n reportBuilderDialog.launchDialog();\n break;\n case GridActionType.Delete:\n setCurrentReport(reportConfig);\n deleteDialog.launchDialog();\n break;\n case GridActionType.Share:\n setCurrentReport(reportConfig);\n shareDialog.launchDialog();\n break;\n case GridActionType.Duplicate:\n upsertReportConfig({\n ...reportConfig,\n reportId: null,\n reportName: getReportConfigNameForDuplicate(\n reportConfig.reportType,\n reportConfig.reportName\n ),\n isOwner: true,\n globalReportTypeId: null,\n });\n break;\n case GridActionType.History:\n setCurrentReport(reportConfig);\n reportHistoryDialog.launchDialog();\n break;\n default:\n break;\n }\n };\n\n const onReportDelete = useCallback(async () => {\n await tryInvokeApi(\n async () => {\n if (currentReport) {\n deleteReportConfig(currentReport.reportType, currentReport.reportId!);\n }\n deleteDialog.closeDialog();\n },\n (error) => {\n showErrorDialog('UserSetting.deleteReport', error, {\n trackErrorData: currentReport,\n });\n }\n );\n }, [currentReport, deleteDialog, deleteReportConfig, showErrorDialog]);\n\n const onReportShareSubmit = useCallback<\n ComponentProps['onOkay']\n >(\n async (roleIds, sellerUserIds) => {\n const updatedReport = {\n ...currentReport!,\n roleIdsToShare: roleIds,\n sellerUserIdsToShare: sellerUserIds,\n };\n await upsertReportConfig(updatedReport);\n shareDialog.closeDialog();\n },\n [currentReport, upsertReportConfig, shareDialog]\n );\n\n return {\n currentReport,\n setCurrentReport,\n onAddNewReport,\n onReportSaveSubmit,\n onReportAction,\n onReportShareSubmit,\n onReportDelete,\n reportBuilderDialog,\n deleteDialog,\n shareDialog,\n reportHistoryDialog,\n };\n}\n","import { useMemo } from 'react';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Button } from 'src/core/ui';\nimport { ReportBuilderDialog } from 'src/dialogs/ReportBuilderDialog';\nimport { ReportBuilderDialogV2 } from 'src/dialogs/ReportBuilderDialog/ReportBuilderDialogV2';\nimport { ReportHistoryDialog } from 'src/dialogs/ReportHistoryDialog';\nimport { ShareReportDialog } from 'src/dialogs/ShareReportDialog';\nimport { ReportConfig, useReportConfigs } from 'src/hooks/useReportConfigs';\nimport {\n ReportConfigV2,\n useReportConfigsV2,\n} from 'src/hooks/useReportConfigsV2';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { ReportsTableContainer } from 'src/tables/ReportsTable/ReportsTableContainer';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ReportTypes, ReportTypesV2 } from 'src/utils/reportsUtils';\nimport { GridActionType } from 'src/utils/tableUtils';\nimport { Feature, Permission } from 'src/WebApiController';\n\nimport { MainRoute } from '../MainRoute';\nimport * as styles from './Reports.css';\nimport { useReportV1Actions } from './useReportV1Actions';\nimport { useReportV2Actions } from './useReportV2Actions';\n\nexport function Reports() {\n const reportsTitle = useContent(ContentId.Reports);\n let canCreateReport = useUserHasAnyOfPermissions(\n Permission.Reports_CreateReports\n );\n const hasReportV2BuilderFeature = useUserHasFeature(Feature.ReportV2Builder);\n const hasReportSinglePagedV1V2Feature = useUserHasFeature(\n Feature.ReportSinglePagedV1V2\n );\n\n if (hasReportSinglePagedV1V2Feature) {\n canCreateReport &&= hasReportV2BuilderFeature;\n }\n\n const {\n onAddNewReport,\n currentReport,\n setCurrentReport,\n onReportSaveSubmit,\n onReportShareSubmit,\n onReportDelete,\n onReportAction: onReportActionV1,\n reportBuilderDialogInventory,\n reportBuilderDialogSale,\n shareDialog,\n deleteDialog,\n reportHistoryDialog,\n } = useReportV1Actions();\n\n const {\n currentReport: currentReportV2,\n setCurrentReport: setCurrentReportV2,\n onAddNewReport: onAddNewReportV2,\n onReportSaveSubmit: onReportSaveSubmitV2,\n onReportAction: onReportActionV2,\n onReportShareSubmit: onReportShareSubmitV2,\n onReportDelete: onReportDeleteV2,\n reportBuilderDialog: reportBuilderDialogV2,\n deleteDialog: deleteDialogV2,\n shareDialog: shareDialogV2,\n } = useReportV2Actions();\n\n const onReportAction = (\n reportConfig: ReportConfig | undefined,\n reportConfigV2: ReportConfigV2 | undefined,\n actionType: GridActionType,\n event?: React.MouseEvent\n ) => {\n if (reportConfig) {\n onReportActionV1(reportConfig, actionType, event);\n } else if (reportConfigV2) {\n onReportActionV2(reportConfigV2, actionType, event);\n }\n };\n\n return (\n \n {hasReportSinglePagedV1V2Feature ? (\n \n \n \n ) : (\n \n \n \n }\n align=\"end\"\n >\n onAddNewReport(ReportTypes.Inventory)}\n >\n \n \n onAddNewReport(ReportTypes.Sale)}\n >\n \n \n \n )}\n \n )\n }\n >\n \n\n {currentReport && (\n <>\n \n {...reportBuilderDialogInventory.dialogProps}\n unmountOnClose\n report={currentReport}\n onClosed={() => {\n setCurrentReport(undefined);\n reportBuilderDialogInventory.closeDialog();\n }}\n onSave={onReportSaveSubmit}\n />\n \n {...reportBuilderDialogSale.dialogProps}\n unmountOnClose\n report={currentReport}\n onClosed={() => {\n setCurrentReport(undefined);\n reportBuilderDialogSale.closeDialog();\n }}\n onSave={onReportSaveSubmit}\n />\n {\n setCurrentReport(undefined);\n shareDialog.closeDialog();\n }}\n />\n \n )}\n {currentReportV2 && (\n <>\n {\n setCurrentReportV2(undefined);\n reportBuilderDialogV2.closeDialog();\n }}\n onSave={onReportSaveSubmitV2}\n />\n {\n setCurrentReportV2(undefined);\n shareDialogV2.closeDialog();\n }}\n />\n \n )}\n }\n bodyText={}\n onOkay={onReportDelete}\n onCancel={deleteDialog.closeDialog}\n okText={ContentId.Yes}\n cancelText={ContentId.No}\n />\n {\n setCurrentReport(undefined);\n reportHistoryDialog.closeDialog();\n }}\n />\n }\n bodyText={}\n onOkay={onReportDeleteV2}\n onCancel={deleteDialogV2.closeDialog}\n okText={ContentId.Yes}\n cancelText={ContentId.No}\n />\n \n );\n}\n\nfunction ReportsPage(props: {\n onReportAction: (\n report: ReportConfig | undefined,\n reportV2: ReportConfigV2 | undefined,\n actionType: GridActionType,\n event?: React.MouseEvent\n ) => void;\n}) {\n const hasReportSinglePagedV1V2Feature = useUserHasFeature(\n Feature.ReportSinglePagedV1V2\n );\n\n const {\n reportConfigs: reportConfigsInventory,\n isLoading: reportInventoryLoading,\n } = useReportConfigs({\n reportType: ReportTypes.Inventory,\n });\n const { reportConfigs: reportConfigsSale, isLoading: reportSaleLoading } =\n useReportConfigs({\n reportType: ReportTypes.Sale,\n });\n\n const reports: ReportConfig[] = useMemo(() => {\n const reportsInventoryWithType = reportConfigsInventory.map((r) => ({\n ...r,\n reportType: ReportTypes.Inventory,\n }));\n const reportsSaleWithType = reportConfigsSale.map((r) => ({\n ...r,\n reportType: ReportTypes.Sale,\n }));\n return [...reportsInventoryWithType, ...reportsSaleWithType];\n }, [reportConfigsInventory, reportConfigsSale]);\n\n const {\n reportConfigs: reportConfigsV2Inventory,\n isLoading: reportV2InventoryLoading,\n } = useReportConfigsV2({\n reportType: ReportTypesV2.InventoryV2,\n });\n const { reportConfigs: reportConfigsV2Sale, isLoading: reportV2SaleLoading } =\n useReportConfigsV2({\n reportType: ReportTypesV2.SaleV2,\n });\n const {\n reportConfigs: reportConfigsV2Commission,\n isLoading: reportV2SaleCommission,\n } = useReportConfigsV2({\n reportType: ReportTypesV2.Commission,\n });\n\n const reportsV2: ReportConfigV2[] = useMemo(() => {\n const reportsV2InventoryWithType = reportConfigsV2Inventory.map((r) => ({\n ...r,\n reportType: ReportTypesV2.InventoryV2,\n }));\n const reportsV2SaleWithType = reportConfigsV2Sale.map((r) => ({\n ...r,\n reportType: ReportTypesV2.SaleV2,\n }));\n const reportsV2CommissionWithType = reportConfigsV2Commission.map((r) => ({\n ...r,\n reportType: ReportTypesV2.Commission,\n }));\n return [\n ...reportsV2InventoryWithType,\n ...reportsV2SaleWithType,\n ...reportsV2CommissionWithType,\n ];\n }, [\n reportConfigsV2Commission,\n reportConfigsV2Inventory,\n reportConfigsV2Sale,\n ]);\n\n const isLoading =\n reportInventoryLoading ||\n reportSaleLoading ||\n reportV2InventoryLoading ||\n reportV2SaleLoading ||\n reportV2SaleCommission;\n\n return (\n
    \n {isLoading ? (\n \n ) : (\n \n )}\n
    \n );\n}\n","import { useInfiniteQuery, useQuery } from '@tanstack/react-query';\nimport { once } from 'lodash-es';\nimport React, {\n PropsWithChildren,\n useCallback,\n useContext,\n useMemo,\n} from 'react';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { DATA_REFRESH_RATE_IN_MILLIS_LONG } from 'src/utils/constants/constants';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\nimport {\n ReportMetricsSummaryV2,\n ReportMetricsV2,\n ReportValueType,\n} from 'src/WebApiController';\n\nimport { useAppContext } from '../AppContext';\nimport { useFilterQueryContext } from '../FilterQueryContext';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ReportMetricsResponse = { [key: string]: any };\n\nexport type ReportValueTypesReponse = { [key: string]: ReportValueType };\n\nexport type IReportMetricsContext = {\n isLoading: boolean;\n reportMetrics?: ReportMetricsResponse[];\n reportSummary?: ReportMetricsResponse;\n reportValueTypes?: ReportValueTypesReponse;\n refreshMetrics: () => void;\n fetchNextPage: () => void;\n hasNextPage?: boolean;\n isFetchingNextPage: boolean;\n isReportConfigEmpty?: boolean;\n};\n\nexport const createReportMetricsContextV2 = once(() =>\n React.createContext({} as IReportMetricsContext)\n);\n\nexport function useReportMetricsContextV2() {\n return useContext(createReportMetricsContextV2());\n}\n\nexport function ReportMetricsContextProviderV2<\n TQuery extends QueryWithViewMode,\n>({\n reportConfig,\n queryKey,\n getReportMetrics,\n getReportMetricsSummary,\n children,\n disabled,\n}: PropsWithChildren<{\n reportConfig: ReportConfigV2;\n queryKey: string;\n getReportMetrics?: (\n query: TQuery,\n pageNumber: number\n ) => Promise;\n getReportMetricsSummary?: (query: TQuery) => Promise;\n disabled?: boolean;\n}>) {\n const ReportMetricsContext = createReportMetricsContextV2();\n\n const { trackError } = useErrorBoundaryContext();\n\n const { filterQuery } = useFilterQueryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const isReportConfigEmpty = useMemo(() => {\n return (\n reportConfig.request.orderBy == null ||\n !reportConfig.request.aggregations?.length ||\n (!reportConfig.request.rowGroupings?.length &&\n !reportConfig.request.columnGroupings?.length)\n );\n }, [\n reportConfig.request.aggregations?.length,\n reportConfig.request.columnGroupings?.length,\n reportConfig.request.orderBy,\n reportConfig.request.rowGroupings?.length,\n ]);\n\n const shouldQuery =\n !disabled &&\n !(!getReportMetrics || !activeAccountWebClientConfig.activeAccountId) &&\n !isReportConfigEmpty;\n\n const reportMetricsQuery = useInfiniteQuery({\n queryKey: [\n `${queryKey}-report-metrics`,\n activeAccountWebClientConfig,\n filterQuery,\n disabled,\n reportConfig.request.aggregations,\n reportConfig.request.rowGroupings,\n reportConfig.request.columnGroupings,\n ],\n queryFn: async ({ pageParam: pageNumber = 0 }) => {\n if (!shouldQuery) {\n return null;\n }\n\n const reportMetricsData = await getReportMetrics!(\n filterQuery,\n pageNumber\n );\n\n return {\n reportMetricsData,\n pageNumber,\n };\n },\n getNextPageParam(lastPage) {\n return lastPage?.reportMetricsData.rows.length\n ? lastPage.pageNumber + 1\n : undefined;\n },\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n initialPageParam: 0,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('getReportMetrics', error, {\n ...filterQuery,\n });\n },\n },\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_LONG,\n });\n\n const reportMetricsSummaryQuery = useQuery({\n queryKey: [\n `${queryKey}-report-metrics-summary`,\n activeAccountWebClientConfig,\n filterQuery,\n disabled,\n reportConfig.request.aggregations,\n reportConfig.request.rowGroupings,\n reportConfig.request.columnGroupings,\n ],\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n const reportMetricsData = await getReportMetricsSummary!(filterQuery);\n\n return {\n reportMetricsData,\n };\n },\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('getReportMetricsSummary', error, {\n ...filterQuery,\n });\n },\n },\n refetchInterval: DATA_REFRESH_RATE_IN_MILLIS_LONG,\n });\n\n const refreshMetrics = useCallback(\n () => reportMetricsQuery.refetch(),\n [reportMetricsQuery]\n );\n\n const flattenedData = useMemo(\n () =>\n reportMetricsQuery.data?.pages?.flatMap(\n (m) => m?.reportMetricsData?.rows ?? []\n ),\n [reportMetricsQuery.data]\n );\n\n return (\n \n {children}\n \n );\n}\n","import { PropsWithChildren, useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { FilterQueryContextProvider } from 'src/contexts/FilterQueryContext';\nimport { ReportMetricsContextProviderV2 } from 'src/contexts/ReportMetricsContext/ReportMetricsContextV2';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { EmptyReportV2ListingQuery } from 'src/utils/eventQueryUtils';\nimport { ReportV2Client, UIReportV2ListingQuery } from 'src/WebApiController';\n\nexport function ReportsInventoryContextProviderV2({\n reportConfig,\n isExport,\n children,\n}: PropsWithChildren<{\n reportConfig: ReportConfigV2;\n isExport?: boolean;\n}>) {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const getReportMetrics = useCallback(\n (filters: UIReportV2ListingQuery, pageNumber: number) => {\n return new ReportV2Client(\n activeAccountWebClientConfig\n ).getInventoryReportMetrics({\n ...reportConfig.request,\n pageNumber,\n filters,\n });\n },\n [activeAccountWebClientConfig, reportConfig]\n );\n\n const getReportMetricsSummary = useCallback(\n (filters: UIReportV2ListingQuery) => {\n return new ReportV2Client(\n activeAccountWebClientConfig\n ).getInventoryReportSummary({\n ...reportConfig.request,\n filters,\n });\n },\n [activeAccountWebClientConfig, reportConfig]\n );\n\n return (\n \n initialQuery={reportConfig.request.filters as UIReportV2ListingQuery}\n emptyQuery={EmptyReportV2ListingQuery}\n loadQueryFromUrl={false}\n >\n \n queryKey=\"getReportListingMetricsV2\"\n getReportMetrics={getReportMetrics}\n getReportMetricsSummary={getReportMetricsSummary}\n disabled={isExport}\n reportConfig={reportConfig}\n >\n {children}\n \n \n );\n}\n","import { useEffect } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { ReportsInventoryContextProviderV2 } from 'src/navigations/Routes/ReportsInventory/ReportsInventoryContextProviderV2';\nimport { downloadFileFromBlob } from 'src/utils/fileUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { ReportV2Client, UIReportV2ListingQuery } from 'src/WebApiController';\n\nimport { ReportExportOptionsV2 } from './ReportsExport.types';\nimport { getReportExportFileBasename } from './ReportsExport.utils';\n\nexport function ReportsInventoryExportV2({\n reportExportOptions,\n onReportExported,\n}: {\n reportExportOptions: ReportExportOptionsV2 | null;\n onReportExported: () => void;\n}) {\n // Loading report metrics depend on the context provider (need to wait for the context provider to load the report metrics)\n\n // If reportToExport is null,\n // no reports need to be exported, so not rendering the \n \n \n );\n}\n\nfunction ReportsListingServerSideExportInner({\n reportExportOptions: { reportToExport: reportConfig, fileType },\n onReportExported,\n}: {\n reportExportOptions: ReportExportOptionsV2;\n onReportExported: () => void;\n}) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { eventsTransformed } = useCatalogDataContext();\n const { filterQuery } = useFilterQueryContext();\n const { trackError } = useErrorBoundaryContext();\n\n const allEventIds = (eventsTransformed ?? []).flatMap((ev) => ({\n viagVirtualId: ev.event.viagVirtualId,\n performerId: ev.event.perfId,\n venueId: ev.event.venueId,\n }));\n\n const downloadReport = async () => {\n await tryInvokeApi(\n async () => {\n const queryWithCatalog = {\n ...filterQuery,\n eventOrMappingIds: allEventIds.map((ev) => ev.viagVirtualId),\n performerIds: allEventIds\n .filter((ev) => ev.performerId != null)\n .map((ev) => ev.performerId!),\n venueIds: allEventIds.map((ev) => ev.venueId),\n } as UIReportV2ListingQuery;\n\n const result = await new ReportV2Client(\n activeAccountWebClientConfig\n ).downloadListingReportMetrics(\n {\n ...reportConfig.request,\n filters: queryWithCatalog,\n },\n fileType\n );\n\n if (result.data) {\n downloadFileFromBlob(\n `${getReportExportFileBasename(\n reportConfig.reportName\n )}.${fileType.toLowerCase()}`,\n result.data\n );\n }\n },\n (error) => {\n trackError('ReportV2Client.downloadListingReportMetrics', error);\n },\n () => onReportExported()\n );\n };\n\n useEffect(() => {\n if (eventsTransformed != null) {\n downloadReport();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [eventsTransformed]);\n\n return <>;\n}\n","import { PropsWithChildren, useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { FilterQueryContextProvider } from 'src/contexts/FilterQueryContext';\nimport { ReportMetricsContextProviderV2 } from 'src/contexts/ReportMetricsContext/ReportMetricsContextV2';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { EmptyReportV2SaleQuery } from 'src/utils/eventQueryUtils';\nimport { ReportV2Client, UIReportV2SaleQuery } from 'src/WebApiController';\n\nexport function ReportsSaleContextProviderV2({\n reportConfig,\n isExport,\n children,\n}: PropsWithChildren<{\n reportConfig: ReportConfigV2;\n isExport?: boolean;\n}>) {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const getReportMetrics = useCallback(\n (filters: UIReportV2SaleQuery, pageNumber: number) => {\n return new ReportV2Client(\n activeAccountWebClientConfig\n ).getSaleReportMetrics({\n ...reportConfig.request,\n pageNumber,\n filters,\n });\n },\n [activeAccountWebClientConfig, reportConfig]\n );\n\n const getReportMetricsSummary = useCallback(\n (filters: UIReportV2SaleQuery) => {\n return new ReportV2Client(\n activeAccountWebClientConfig\n ).getSaleReportSummary({\n ...reportConfig.request,\n filters,\n });\n },\n [activeAccountWebClientConfig, reportConfig]\n );\n\n return (\n \n initialQuery={reportConfig.request.filters as UIReportV2SaleQuery}\n emptyQuery={EmptyReportV2SaleQuery}\n loadQueryFromUrl={false}\n >\n \n queryKey=\"getReportSaleMetricsV2\"\n getReportMetrics={getReportMetrics}\n getReportMetricsSummary={getReportMetricsSummary}\n disabled={isExport}\n reportConfig={reportConfig}\n >\n {children}\n \n \n );\n}\n","import { useEffect } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { ReportsSaleContextProviderV2 } from 'src/navigations/Routes/ReportsSale/ReportsSaleContextProviderV2';\nimport { downloadFileFromBlob } from 'src/utils/fileUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { ReportV2Client, UIReportV2SaleQuery } from 'src/WebApiController';\n\nimport { ReportExportOptionsV2 } from './ReportsExport.types';\nimport { getReportExportFileBasename } from './ReportsExport.utils';\n\nexport function ReportsSaleExportV2({\n reportExportOptions,\n onReportExported,\n}: {\n reportExportOptions: ReportExportOptionsV2 | null;\n onReportExported: () => void;\n}) {\n // Loading report metrics depend on the context provider (need to wait for the context provider to load the report metrics)\n\n // If reportToExport is null,\n // no reports need to be exported, so not rendering the \n \n \n );\n}\n\nfunction ReportsSaleServerSideExportInner({\n reportExportOptions: { reportToExport: reportConfig, fileType },\n onReportExported,\n}: {\n reportExportOptions: ReportExportOptionsV2;\n onReportExported: () => void;\n}) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { eventsTransformed } = useCatalogDataContext();\n const { filterQuery } = useFilterQueryContext();\n const { trackError } = useErrorBoundaryContext();\n\n const allEventIds = (eventsTransformed ?? []).flatMap((ev) => ({\n viagVirtualId: ev.event.viagVirtualId,\n performerId: ev.event.perfId,\n venueId: ev.event.venueId,\n }));\n\n const downloadReport = async () => {\n await tryInvokeApi(\n async () => {\n const queryWithCatalog = {\n ...filterQuery,\n eventIds: allEventIds.map((ev) => ev.viagVirtualId),\n performerIds: allEventIds\n .filter((ev) => ev.performerId != null)\n .map((ev) => ev.performerId!),\n venueIds: allEventIds.map((ev) => ev.venueId),\n } as UIReportV2SaleQuery;\n\n const result = await new ReportV2Client(\n activeAccountWebClientConfig\n ).downloadSaleReportMetrics(\n {\n ...reportConfig.request,\n filters: queryWithCatalog,\n },\n fileType\n );\n\n if (result.data) {\n downloadFileFromBlob(\n `${getReportExportFileBasename(\n reportConfig.reportName\n )}.${fileType.toLowerCase()}`,\n result.data\n );\n }\n },\n (error) => {\n trackError('ReportV2Client.downloadSaleReportMetrics', error);\n },\n () => onReportExported()\n );\n };\n\n useEffect(() => {\n if (eventsTransformed != null) {\n downloadReport();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [eventsTransformed]);\n\n return <>;\n}\n","import { ColumnDef } from '@tanstack/react-table';\nimport { useState } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { ReportExportOptionsV2 } from 'src/components/Reports/ReportsExport/ReportsExport.types';\nimport { ReportsInventoryExportV2 } from 'src/components/Reports/ReportsExport/ReportsInventoryExportV2';\nimport { ReportsSaleExportV2 } from 'src/components/Reports/ReportsExport/ReportsSaleExportV2';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { DropdownMenu, Stack } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { CopyIcon } from 'src/svgs';\nimport { OpenLinkIcon } from 'src/svgs/OpenLinkIcon';\nimport {\n DeleteIcon,\n EditIcon,\n GenericDisclosuresIcon,\n IconsFill,\n MoreIcon,\n ProcessingIcon,\n ShareIcon,\n} from 'src/svgs/Viagogo';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ReportTypesV2 } from 'src/utils/reportsUtils';\nimport { GridActionType } from 'src/utils/tableUtils';\nimport { Feature, Permission } from 'src/WebApiController';\n\nexport type ReportWithHandlersV2 = {\n report: ReportConfigV2;\n onReportAction?: (\n report: ReportConfigV2,\n actionType: GridActionType,\n event?: React.MouseEvent\n ) => void;\n};\n\nexport const REPORTS_TABLE_COLUMNS_CONFIG_V2: ColumnDef[] =\n [\n {\n id: 'reportName',\n header: () => (\n \n \n \n ),\n minSize: 50,\n maxSize: 200,\n accessorFn: (data) => data?.report?.reportName,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as string;\n if (!original) {\n return ;\n }\n return (\n \n \n {value}\n \n );\n },\n },\n {\n id: 'ownerDisplayName',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data?.report?.ownerDisplayName,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as string | null | undefined;\n if (!original) {\n return ;\n }\n return (\n \n <>\n {original.report.globalReportTypeId ? (\n \n ) : (\n <>{value}\n )}\n \n \n );\n },\n },\n {\n id: 'actions',\n enableSorting: false,\n header: () => (\n \n \n \n ),\n minSize: 50,\n maxSize: 50,\n cell: function Cell({ row: { original } }) {\n const canCreateReport = useUserHasAnyOfPermissions(\n Permission.Reports_CreateReports\n );\n const canUpdateReport = useUserHasAnyOfPermissions(\n Permission.Reports_UpdateReports\n );\n const canUpdateOwnReports = useUserHasAnyOfPermissions(\n Permission.Reports_UpdateReportsOwned\n );\n const canViewHistory = useUserHasFeature(Feature.ReportSnapshot);\n const hasExportInventoryFeature = useUserHasFeature(\n Feature.ExportInventory\n );\n\n const [reportExportOptions, setReportExportOptions] =\n useState(null);\n\n const onReportExported = () => {\n setReportExportOptions(null);\n };\n\n if (!original) {\n return ;\n }\n const canUpdate =\n original &&\n (canUpdateReport || (original.report.isOwner && canUpdateOwnReports));\n\n const actions = [\n original.report.isOwner && (\n <>\n \n original.onReportAction &&\n original.onReportAction(original.report, GridActionType.Share)\n }\n >\n \n \n \n \n \n {canUpdate && (\n \n original.onReportAction &&\n original.onReportAction(\n original.report,\n GridActionType.Edit\n )\n }\n >\n \n \n \n \n \n )}\n \n ),\n // original &&\n // (hasExportInventoryFeature ||\n // original.report.request.rowGroupings?.some(\n // (g) => g.columnName === ListingReportTableColumnId.ListingId\n // )) && (\n // \n // \n // \n // \n // \n // \n // \n // \n // setReportExportOptions({\n // reportToExport: original.report,\n // fileType: ReportFileType.CSV,\n // })\n // }\n // >\n // \n // \n // \n // setReportExportOptions({\n // reportToExport: original.report,\n // fileType: ReportFileType.XLSX,\n // })\n // }\n // >\n // \n // \n // \n // \n // ),\n canCreateReport && (\n \n original.onReportAction &&\n original.onReportAction(\n original.report,\n GridActionType.Duplicate\n )\n }\n >\n \n \n \n \n \n ),\n original.report.isOwner && canUpdate && (\n \n original.onReportAction &&\n original.onReportAction(original.report, GridActionType.Delete)\n }\n >\n \n \n \n \n \n ),\n // canViewHistory && (\n // \n // original.onReportAction &&\n // original.onReportAction(original.report, GridActionType.History)\n // }\n // >\n // \n // \n // \n // \n // \n // ),\n ];\n\n const visibleActions = actions.filter((a) => !!a);\n\n return (\n <>\n \n {reportExportOptions && (\n \n \n \n )}\n }\n onClick={(event: React.MouseEvent) =>\n original.onReportAction &&\n original.onReportAction(\n original.report,\n GridActionType.Select,\n event\n )\n }\n textContentId={ContentId.OpenReport}\n style={{\n fontSize: vars.typography.fontSize.xs,\n }}\n startWithText\n />\n {visibleActions.length > 0 &&\n original.report?.reportType !== ReportTypesV2.Commission && (\n \n \n
    \n \n
    \n \n \n \n {...visibleActions}\n \n \n
    \n )}\n \n {original.report.reportType === ReportTypesV2.InventoryV2 ? (\n \n ) : (\n \n )}\n \n );\n },\n },\n ];\n","import {\n InitialTableState,\n PaginationState,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useEffect, useMemo, useState } from 'react';\nimport { FormatContent, useContent } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { NoData, Table } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\n\nimport {\n REPORTS_TABLE_COLUMNS_CONFIG_V2,\n ReportWithHandlersV2,\n} from './configs/ReportsTableColumnsConfigV2';\n\nexport type ReportsTableV2DataProps = {\n reports?: ReportConfigV2[];\n};\n\nexport type ReportsTableV2Props = ReportsTableV2DataProps & {\n onMount?: () => void;\n onUnmount?: (state: object) => void;\n initState?: InitialTableState;\n isGlobalSection?: boolean;\n};\n\nexport function ReportsTableV2({\n reports,\n onReportAction,\n onMount,\n onUnmount,\n initState,\n isGlobalSection,\n}: ReportsTableV2Props & Pick) {\n const reportText = useContent(ContentId.Reports);\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const [sorting, setSorting] = useState(\n initState?.sorting || []\n );\n const [{ pageIndex, pageSize }, setPagination] = useState({\n pageIndex: initState?.pagination?.pageIndex || 0,\n pageSize: reports?.length ?? 0,\n });\n const pagination = useMemo(\n () => ({\n pageIndex,\n pageSize,\n }),\n [pageIndex, pageSize]\n );\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n useEffect(() => {\n if (pagination.pageSize !== reports?.length) {\n setPagination((prevState) => ({\n ...prevState,\n pageSize: reports?.length ?? 0,\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reports]);\n\n const data = useMemo(\n () =>\n reports?.map(\n (r) =>\n ({\n report: r,\n onReportAction,\n }) as ReportWithHandlersV2\n ),\n [reports, onReportAction]\n );\n\n const options: Partial> = useMemo(\n () => ({\n data,\n columns: REPORTS_TABLE_COLUMNS_CONFIG_V2,\n state: {\n pagination,\n sorting,\n columnVisibility: {\n ownerDisplayName: !isGlobalSection,\n },\n },\n onPaginationChange: setPagination,\n onSortingChange: setSorting,\n enableRowSelection: true,\n }),\n [data, isGlobalSection, pagination, sorting]\n );\n\n return reports?.length ? (\n \n ) : (\n \n \n \n );\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { GridActionType } from 'src/utils/tableUtils';\n\nimport * as styles from './ReportsTableContainer.css';\nimport { ReportsTableV2 } from './ReportsTableV2';\n\nexport function ReportsTableContainerV2({\n reports,\n onReportAction,\n}: {\n reports?: ReportConfigV2[];\n onReportAction: (\n report: ReportConfigV2,\n actionType: GridActionType,\n event?: React.MouseEvent\n ) => void;\n}) {\n const reportsDefault = reports?.filter((r) => r.globalReportTypeId) ?? [];\n const reportsCustom = reports?.filter((r) => !r.globalReportTypeId) ?? [];\n\n return (\n
    \n
    \n {reportsDefault.length > 0 && (\n \n \n \n \n \n \n )}\n\n \n \n \n \n \n \n
    \n
    \n );\n}\n","import { useMemo } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Button } from 'src/core/ui';\nimport { ReportBuilderDialogV2 } from 'src/dialogs/ReportBuilderDialog/ReportBuilderDialogV2';\nimport { ShareReportDialog } from 'src/dialogs/ShareReportDialog';\nimport {\n ReportConfigV2,\n useReportConfigsV2,\n} from 'src/hooks/useReportConfigsV2';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { ReportsTableContainerV2 } from 'src/tables/ReportsTable/ReportsTableContainerV2';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ReportTypesV2 } from 'src/utils/reportsUtils';\nimport { GridActionType } from 'src/utils/tableUtils';\nimport { Feature, Permission } from 'src/WebApiController';\n\nimport { MainRoute } from '../MainRoute';\nimport * as styles from './Reports.css';\nimport { useReportV2Actions } from './useReportV2Actions';\n\nexport function ReportsV2() {\n const reportsTitle = 'Reports V2'; // no need to translate - once we release - we will need to use ContentId.Report again\n const hasCreateReportsPermission = useUserHasAnyOfPermissions(\n Permission.Reports_CreateReports\n );\n const hasReportV2BuilderFeature = useUserHasFeature(Feature.ReportV2Builder);\n\n const canCreateReport =\n hasCreateReportsPermission && hasReportV2BuilderFeature;\n\n const {\n currentReport,\n setCurrentReport,\n onAddNewReport,\n onReportSaveSubmit,\n onReportAction,\n onReportShareSubmit,\n onReportDelete,\n reportBuilderDialog,\n deleteDialog,\n shareDialog,\n } = useReportV2Actions();\n\n return (\n \n \n \n )\n }\n >\n \n {currentReport && (\n <>\n {\n setCurrentReport(undefined);\n reportBuilderDialog.closeDialog();\n }}\n onSave={onReportSaveSubmit}\n />\n {\n setCurrentReport(undefined);\n shareDialog.closeDialog();\n }}\n />\n \n )}\n }\n bodyText={}\n onOkay={onReportDelete}\n onCancel={deleteDialog.closeDialog}\n okText={ContentId.Yes}\n cancelText={ContentId.No}\n />\n {/* {\n setCurrentReport(undefined);\n reportHistoryDialog.closeDialog();\n }}\n /> */}\n \n );\n}\n\nfunction ReportsPageV2(props: {\n onReportAction: (\n report: ReportConfigV2,\n actionType: GridActionType,\n event?: React.MouseEvent\n ) => void;\n}) {\n const {\n reportConfigs: reportConfigsInventory,\n isLoading: reportInventoryLoading,\n } = useReportConfigsV2({\n reportType: ReportTypesV2.InventoryV2,\n });\n const { reportConfigs: reportConfigsSale, isLoading: reportSaleLoading } =\n useReportConfigsV2({\n reportType: ReportTypesV2.SaleV2,\n });\n const {\n reportConfigs: reportConfigsCommission,\n isLoading: reportCommissionLoading,\n } = useReportConfigsV2({\n reportType: ReportTypesV2.Commission,\n });\n\n const reports: ReportConfigV2[] = useMemo(() => {\n const reportsInventoryWithType = reportConfigsInventory.map((r) => ({\n ...r,\n reportType: ReportTypesV2.InventoryV2,\n }));\n const reportsSaleWithType = reportConfigsSale.map((r) => ({\n ...r,\n reportType: ReportTypesV2.SaleV2,\n }));\n const reportsCommissionWithType = reportConfigsCommission.map((r) => ({\n ...r,\n reportType: ReportTypesV2.Commission,\n }));\n return [\n ...reportsInventoryWithType,\n ...reportsSaleWithType,\n ...reportsCommissionWithType,\n ];\n }, [reportConfigsInventory, reportConfigsSale, reportConfigsCommission]);\n\n return (\n
    \n {reportInventoryLoading ||\n reportSaleLoading ||\n reportCommissionLoading ? (\n \n ) : (\n \n )}\n
    \n );\n}\n","import { ReportMetricsResponse } from 'src/contexts/ReportMetricsContext/ReportMetricsContextV2';\n\nexport const reportV2AccessorFn = (columnId: string) => {\n return (data: ReportMetricsResponse | null) =>\n data?.[columnId.toUpperCase()] ?? '';\n};\n","import { ColumnHelper } from '@tanstack/react-table';\nimport {\n COLUMN_DEFAULT_SIZE_BASE,\n COLUMN_MAX_SIZE,\n COLUMN_MIN_SIZE,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ReportMetricsResponse } from 'src/contexts/ReportMetricsContext/ReportMetricsContextV2';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { FormatOption } from 'src/modals/EditTableColumns';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\nimport { ListingReportTableColumnId } from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { YES_NO_ENUM_FILTER_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { ToYesNoEnum } from 'src/utils/eventQueryUtils';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\nimport {\n getReportValueTypeDisplayConfig,\n sortMoney,\n} from 'src/utils/tableUtils';\nimport { Money, ReportValueType } from 'src/WebApiController';\n\nimport { DateCell } from '../Table/TableCells';\nimport { SHIMMERING_DIV_HEIGHT_REPORT } from './ReportTableCommon.constants';\nimport { reportV2AccessorFn } from './ReportTableCommon.utils';\nimport { TextCell } from './TextCell';\n\nexport const defaultColumnHelperAccessor = (\n columnHelper: ColumnHelper,\n columnId: string,\n headerContentId: ContentId,\n valueType: ReportValueType | undefined\n) => {\n const { isNumeric, isCurrency, isPercent, isDateTime, isBoolean, isArray } =\n getReportValueTypeDisplayConfig(valueType);\n\n const align = isNumeric ? 'right' : 'left';\n\n return columnHelper.accessor(reportV2AccessorFn(columnId), {\n id: columnId,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell(params) {\n const value = params.getValue();\n const valueAsArray = params.getValue();\n const valueAsMoney = params.getValue();\n\n if (!params.row.original) {\n return ;\n }\n\n // Handle columns with personalization\n if (isCurrency || valueAsMoney?.display != null) {\n return (\n \n {valueAsMoney.display ?? }\n \n );\n }\n\n if (isNumeric) {\n return (\n \n {value != null && !isNaN(Number(value))\n ? applyNumberFormatting({\n precision: FormatOption.Percent_RoundToTwo,\n inputNumber: value,\n isPercent: isPercent,\n })\n : (value ?? )}\n \n );\n }\n\n if (isDateTime) {\n const dateValue = isArray\n ? valueAsArray\n : value\n ? new Date(value).toISOString()\n : value;\n return (\n \n );\n }\n\n if (isBoolean) {\n const yesNoEnum = ToYesNoEnum(value as boolean | null);\n\n return (\n \n \n \n );\n }\n\n return (\n \n );\n },\n footer: function Footer(params) {\n const original = params.table.options.meta?.summaryData;\n\n if (!original) {\n return ;\n }\n const value = params.column.accessorFn?.(original, -1);\n\n if (isArray) {\n return null;\n }\n\n if (isCurrency) {\n const valueAsMoney = value as Money | null;\n return (\n \n {valueAsMoney ? (\n <>{valueAsMoney.display}\n ) : (\n \n )}\n \n );\n }\n\n if (isNumeric) {\n return (\n \n {value != null\n ? applyNumberFormatting({\n precision: FormatOption.Percent_RoundToTwo,\n inputNumber: value,\n isPercent: isPercent,\n })\n : (value ?? )}\n \n );\n }\n\n return {value};\n },\n sortingFn: isCurrency ? sortMoney : 'alphanumeric',\n });\n};\n","import { createColumnHelper } from '@tanstack/react-table';\nimport {\n COLUMN_MAX_SIZE,\n COLUMN_MIN_SIZE,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport {\n COLUMN_DEFAULT_SIZE_LG,\n COLUMN_DEFAULT_SIZE_XL,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ReportMetricsResponse } from 'src/contexts/ReportMetricsContext/ReportMetricsContextV2';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { useColumnUserSetting } from 'src/hooks/useColumnUserSetting';\nimport { FormatOption } from 'src/modals/EditTableColumns';\nimport { defaultColumnHelperAccessor } from 'src/tables/ReportTableCommon/DefaultColumnHelperAccessor';\nimport { LinkCell } from 'src/tables/ReportTableCommon/LinkCell';\nimport { SHIMMERING_DIV_HEIGHT_REPORT } from 'src/tables/ReportTableCommon/ReportTableCommon.constants';\nimport { reportV2AccessorFn } from 'src/tables/ReportTableCommon/ReportTableCommon.utils';\nimport { TextCell } from 'src/tables/ReportTableCommon/TextCell';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\nimport { DateCell } from 'src/tables/Table/TableCells';\nimport { CommissionReportTableValueColumnId } from 'src/utils/columns/commission/commissionColumnUtils.types';\nimport { CommissionReportTableGroupingColumnId } from 'src/utils/columns/commission/commissionColumnUtils.types';\nimport {\n COMMISSION_REPORT_TABLE_GROUPING_COLUMN_ID_TO_CONTENT_ID,\n COMMISSION_REPORT_TABLE_VALUE_COLUMN_ID_TO_CONTENT_ID,\n} from 'src/utils/constants/contentIdMaps';\nimport {\n createSaleEventPageUrl,\n getSaleDetailsRelativeUrl,\n} from 'src/utils/saleUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { ReportValueType } from 'src/WebApiController';\n\nconst columnHelper = createColumnHelper();\n\nconst SECTION_TYPE = SectionType.SalesReport;\n\nexport const COMMISSION_REPORT_SPECIAL_TABLE_COLUMNS_CONFIG = {\n [CommissionReportTableGroupingColumnId.EventDateLocal]: columnHelper.accessor(\n reportV2AccessorFn(CommissionReportTableGroupingColumnId.EventDateLocal),\n {\n id: CommissionReportTableGroupingColumnId.EventDateLocal,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_MMDD } =\n useColumnUserSetting(columnId, SECTION_TYPE);\n\n if (!original) {\n return ;\n }\n\n const dateValue = value ? new Date(value).toISOString() : value;\n\n return (\n \n );\n },\n }\n ),\n [CommissionReportTableGroupingColumnId.SaleId]: columnHelper.accessor(\n reportV2AccessorFn(CommissionReportTableGroupingColumnId.SaleId),\n {\n id: CommissionReportTableGroupingColumnId.SaleId,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue }) => {\n const saleId = getValue();\n\n if (!saleId) {\n return ;\n }\n\n const saleIds = [Number(saleId)];\n\n return (\n `#${saleId}`)}\n url={saleIds.map((saleId) => getSaleDetailsRelativeUrl(saleId))}\n separator={{', '}}\n openInNewTab\n align=\"left\"\n style={{ fontWeight: 600 }}\n />\n );\n },\n }\n ),\n [CommissionReportTableGroupingColumnId.EventId]: columnHelper.accessor(\n reportV2AccessorFn(CommissionReportTableGroupingColumnId.EventId),\n {\n id: CommissionReportTableGroupingColumnId.EventId,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => {\n const eventId = params.getValue();\n if (!eventId) {\n return ;\n }\n const eventUrl = createSaleEventPageUrl(eventId.toString());\n\n return (\n \n );\n },\n }\n ),\n} as const;\n\nexport const commissionReportTableColumnDef = (\n columnId: string,\n valueType: ReportValueType | undefined\n) => {\n const specialConfig = Object.entries(\n COMMISSION_REPORT_SPECIAL_TABLE_COLUMNS_CONFIG\n ).find(([key]) => key === columnId)?.[1];\n\n if (specialConfig) {\n return specialConfig;\n }\n\n const headerContentId =\n COMMISSION_REPORT_TABLE_GROUPING_COLUMN_ID_TO_CONTENT_ID[\n columnId as unknown as CommissionReportTableGroupingColumnId\n ] ||\n COMMISSION_REPORT_TABLE_VALUE_COLUMN_ID_TO_CONTENT_ID[\n columnId as unknown as CommissionReportTableValueColumnId\n ];\n\n return defaultColumnHelperAccessor(\n columnHelper,\n columnId,\n headerContentId,\n valueType\n );\n};\n","import { ColumnDef } from '@tanstack/react-table';\nimport { createContext, PropsWithChildren, useContext, useMemo } from 'react';\nimport {\n ReportMetricsResponse,\n ReportValueTypesReponse,\n} from 'src/contexts/ReportMetricsContext/ReportMetricsContextV2';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\n\nimport { commissionReportTableColumnDef } from './configs/CommissionReportTableColumnsConfig';\n\ntype CommissionReportTableColumnDefContextType = {\n displayedColumnsConfig: ColumnDef[] | undefined;\n};\n\nconst CommissionReportTableColumnDefContext =\n createContext({\n displayedColumnsConfig: undefined,\n });\n\nexport const CommissionReportTableColumnDefContextV2 = ({\n report,\n reportValueTypes,\n children,\n}: PropsWithChildren<{\n report: ReportConfigV2;\n reportValueTypes: ReportValueTypesReponse | undefined;\n}>) => {\n const displayedColumnsConfig = useMemo(() => {\n const columns = [\n ...(report.request.rowGroupings?.map((c) => c.columnName) ?? []),\n ...(report.request.aggregations?.map((c) => c.columnName) ?? []),\n ];\n\n return columns.map((columnId) =>\n commissionReportTableColumnDef(\n columnId,\n reportValueTypes?.[columnId.toUpperCase()]\n )\n );\n }, [\n report.request.aggregations,\n report.request.rowGroupings,\n reportValueTypes,\n ]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useCommissionReportTableColumnDefV2 = () =>\n useContext(CommissionReportTableColumnDefContext);\n","import {\n functionalUpdate,\n PaginationState,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useActiveSortTableColumnContext } from 'src/contexts/ActiveSortTableColumnContext';\nimport { ColumnResizingContextProvider } from 'src/contexts/ColumnResizingContext/ColumnResizingContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n ReportMetricsResponse,\n useReportMetricsContextV2,\n} from 'src/contexts/ReportMetricsContext/ReportMetricsContextV2';\nimport { NoData, Table, VirtuosoScrollEvent } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { ReportTableV2Props } from '../ReportTableCommon/ReportTableCommon.types';\nimport {\n CommissionReportTableColumnDefContextV2,\n useCommissionReportTableColumnDefV2,\n} from './CommissionReportTableColumnDefContextV2';\n\nexport const CommissionReportTableV2 = ({\n report,\n reportValueTypes,\n ...rest\n}: ReportTableV2Props) => {\n return (\n \n \n \n );\n};\n\nconst ReportTableInternal = ({\n metricsData,\n summaryData,\n report,\n onMount,\n onUnmount,\n initState,\n className,\n}: ReportTableV2Props) => {\n const {\n isFetchingNextPage,\n fetchNextPage,\n hasNextPage,\n isReportConfigEmpty,\n } = useReportMetricsContextV2();\n\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const { activeSortTableColumn, setActiveSortTableColumn } =\n useActiveSortTableColumnContext();\n const [sorting, setSorting] = useState(\n activeSortTableColumn || initState?.sorting || []\n );\n\n const data = useMemo(() => {\n const shimmeringDivCount = 500;\n return metricsData ?? Array(shimmeringDivCount).fill(null);\n }, [metricsData]);\n\n const [pagination, setPagination] = useState({\n pageIndex: 0,\n pageSize: Math.max(1, data.length),\n });\n\n useEffect(() => {\n if (pagination.pageSize !== data.length) {\n setPagination((prevState) => ({\n ...prevState,\n pageSize: data.length,\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data, report]);\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n const { displayedColumnsConfig = [] } = useCommissionReportTableColumnDefV2();\n\n const onScroll = useCallback(\n (virtuosoScrollEvent: VirtuosoScrollEvent) => {\n const { element } = virtuosoScrollEvent;\n const { scrollHeight, scrollTop, clientHeight } = element;\n // once the user has scrolled within 500px of the bottom of the table, fetch more data if we can\n // TODO change this to constant\n if (\n scrollHeight - scrollTop - clientHeight < 500 &&\n !isFetchingNextPage &&\n hasNextPage\n ) {\n fetchNextPage();\n }\n },\n [fetchNextPage, hasNextPage, isFetchingNextPage]\n );\n\n const options: Partial> = useMemo(\n () => ({\n data,\n meta: {\n summaryData,\n },\n columns: displayedColumnsConfig,\n state: {\n pagination,\n sorting,\n },\n onPaginationChange: setPagination,\n onSortingChange: (sortingUpdaterFn) => {\n const newSortVal = functionalUpdate(sortingUpdaterFn, sorting);\n setSorting(newSortVal);\n setActiveSortTableColumn(newSortVal);\n },\n enableRowSelection: true,\n }),\n [\n data,\n summaryData,\n displayedColumnsConfig,\n pagination,\n sorting,\n setActiveSortTableColumn,\n ]\n );\n\n return isReportConfigEmpty ? (\n <>\n ) : data?.length > 0 ? (\n \n \n \n ) : (\n \n \n \n );\n};\n\nexport default CommissionReportTableV2;\n","import { Feature, Permission } from 'src/WebApiController';\n\nimport { ReportConfigV2 } from './useReportConfigsV2';\nimport { useUserHasAnyOfPermissions } from './useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from './useUserHasFeature';\n\nexport const useReportPermissions = (reportConfig?: ReportConfigV2) => {\n const hasUpdateReportPermission = useUserHasAnyOfPermissions(\n Permission.Reports_UpdateReports\n );\n\n const hasReportingV2Feature = useUserHasFeature(Feature.ReportingV2);\n const hasReportSinglePagedV1V2Feature = useUserHasFeature(\n Feature.ReportSinglePagedV1V2\n );\n\n const hasViewReportPermissions = useUserHasAnyOfPermissions(\n Permission.Reports_ViewAll,\n Permission.Reports_ViewGlobalReports,\n Permission.Reports_ViewInventoryReports,\n Permission.Reports_ViewSalesReports\n );\n\n const hasUpdateOwnReportPermission =\n useUserHasAnyOfPermissions(Permission.Reports_UpdateReportsOwned) &&\n (reportConfig?.isOwner ?? false);\n\n const isGlobalReport = reportConfig?.globalReportTypeId !== undefined;\n\n const canUpdateReport =\n reportConfig != null &&\n (hasUpdateReportPermission || hasUpdateOwnReportPermission) &&\n !isGlobalReport;\n\n const hasAccessToReportingV2 =\n hasReportingV2Feature &&\n hasViewReportPermissions &&\n !hasReportSinglePagedV1V2Feature;\n\n return {\n canUpdateReport,\n canViewReport: hasViewReportPermissions,\n hasAccessToReportingV2,\n hasReportSinglePagedV1V2Feature,\n };\n};\n","import { debounce } from 'lodash-es';\nimport { useCallback, useEffect } from 'react';\nimport isEqual from 'react-fast-compare';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { ReportBuilderFilterInputV2 } from 'src/dialogs/ReportBuilderDialog/ReportBuilderFilterInputV2';\nimport { useReportConfigActionsV2 } from 'src/hooks/useReportConfigActionsV2';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { useReportPermissions } from 'src/hooks/useReportPermissions';\n\nimport * as styles from './ReportsFilterToolbar.css';\n\nexport const ReportsFilterToolbarV2 = ({\n reportConfig,\n}: {\n reportConfig: ReportConfigV2;\n}) => {\n const methods = useForm({\n defaultValues: reportConfig,\n });\n\n const { canUpdateReport } = useReportPermissions(reportConfig);\n\n // Report config can be changed elsewhere like the table editor\n useEffect(() => {\n if (!isEqual(methods.formState.defaultValues, reportConfig)) {\n methods.reset(reportConfig);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reportConfig]);\n\n const { upsertReportConfig } = useReportConfigActionsV2();\n\n const filters = methods.watch('request.filters');\n const hiddenFilterItemIds = methods.watch('hiddenFilterItemIds');\n const viewableFilterItemIds = methods.watch('viewableFilterItemIds');\n const editableFilterItemIds = methods.watch('editableFilterItemIds');\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedUpsertReportConfig = useCallback(\n debounce((report: ReportConfigV2) => {\n upsertReportConfig(report);\n }, 500),\n [upsertReportConfig]\n );\n\n const onSubmit = (data: ReportConfigV2) => {\n if (\n canUpdateReport &&\n (!isEqual(data.request.filters, reportConfig.request.filters) ||\n !isEqual(data.hiddenFilterItemIds, reportConfig.hiddenFilterItemIds) ||\n !isEqual(\n data.viewableFilterItemIds,\n reportConfig.viewableFilterItemIds\n ) ||\n !isEqual(\n data.editableFilterItemIds,\n reportConfig.editableFilterItemIds\n ))\n ) {\n debouncedUpsertReportConfig(data);\n }\n };\n\n useEffect(() => {\n methods.handleSubmit(onSubmit)();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n filters,\n hiddenFilterItemIds,\n viewableFilterItemIds,\n editableFilterItemIds,\n ]);\n\n return (\n \n
    \n \n
    \n
    \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const ReportEditTableIcon = (props: PosIconProps) => {\n return (\n // It's import for the viewbox fo this SVG to stay 20 else it won't resize properly\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { ComponentProps, useCallback, useMemo, useState } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport { ReportExportOptionsV2 } from 'src/components/Reports/ReportsExport/ReportsExport.types';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { vars } from 'src/core/themes';\nimport { DropdownMenu, Stack } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { ShareReportDialog } from 'src/dialogs/ShareReportDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport {\n ReportConfigV2,\n useReportConfigsV2,\n} from 'src/hooks/useReportConfigsV2';\nimport { useReportPermissions } from 'src/hooks/useReportPermissions';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { CopyIcon } from 'src/svgs';\nimport { ReportEditTableIcon } from 'src/svgs/ReportEditTableIcon';\nimport {\n IconsFill,\n MoreIcon,\n ProcessingIcon,\n ShareIcon,\n} from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\nimport { ReportTypesV2 } from 'src/utils/reportsUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { Feature, Permission } from 'src/WebApiController';\n\nimport { ReportsInventoryExportV2 } from '../ReportsExport/ReportsInventoryExportV2';\nimport { ReportsSaleExportV2 } from '../ReportsExport/ReportsSaleExportV2';\nimport * as styles from './ReportsPageToolbar.css';\n\nexport const ReportsPageToolbarV2 = ({\n reportConfig,\n isEditTable,\n setIsEditTable,\n}: {\n reportConfig: ReportConfigV2 | undefined;\n isEditTable: boolean;\n setIsEditTable: (isEditTable: boolean) => void;\n}) => {\n const shareDialog = useBasicDialog();\n const { showErrorDialog } = useErrorBoundaryContext();\n const { filterQuery } = useFilterQueryContext();\n\n const { canUpdateReport } = useReportPermissions(reportConfig);\n const hasExportInventoryFeature = useUserHasFeature(Feature.ExportInventory);\n const hasReportingV2Feature = useUserHasFeature(Feature.ReportingV2);\n const hasCreateReportFeature = useUserHasAnyOfPermissions(\n Permission.Reports_CreateReports\n );\n\n const [reportExportOptions, setReportExportOptions] =\n useState(null);\n\n const onReportExported = () => {\n setReportExportOptions(null);\n };\n\n const reportConfigWithTempQuery = useMemo(() => {\n if (!reportConfig) {\n return reportConfig;\n }\n return {\n ...reportConfig,\n request: {\n ...reportConfig.request,\n filters: filterQuery,\n },\n } as ReportConfigV2;\n }, [filterQuery, reportConfig]);\n\n const {\n upsertReportConfig: upsertReportConfigInventory,\n getReportConfigNameForDuplicate: getReportConfigNameForDuplicateInventory,\n } = useReportConfigsV2({\n reportType: ReportTypesV2.InventoryV2,\n });\n\n const {\n upsertReportConfig: upsertReportConfigSale,\n getReportConfigNameForDuplicate: getReportConfigNameForDuplicateSale,\n } = useReportConfigsV2({\n reportType: ReportTypesV2.SaleV2,\n });\n\n const invokeUpsertReport = useCallback(\n async (report: ReportConfigV2) => {\n return await tryInvokeApi(\n async () => {\n if (report.reportType === ReportTypesV2.InventoryV2) {\n return await upsertReportConfigInventory(report.reportId, report);\n } else {\n // report.reportType === ReportTypesV2.SaleV2\n return await upsertReportConfigSale(report.reportId, report);\n }\n },\n (error) => {\n showErrorDialog('ReportClient.mergeReport', error, {\n trackErrorData: report,\n });\n }\n );\n },\n [showErrorDialog, upsertReportConfigInventory, upsertReportConfigSale]\n );\n\n const onReportShareSubmit = useCallback<\n ComponentProps['onOkay']\n >(\n async (roleIds, sellerUserIds) => {\n const updatedReport = {\n ...reportConfig!,\n roleIdsToShare: roleIds,\n sellerUserIdsToShare: sellerUserIds,\n };\n await invokeUpsertReport(updatedReport);\n shareDialog.closeDialog();\n },\n [reportConfig, invokeUpsertReport, shareDialog]\n );\n\n const onReportDuplicateSubmit = useCallback(async () => {\n const newReport = {\n ...reportConfigWithTempQuery!,\n reportId: null,\n reportName:\n reportConfig!.reportType === ReportTypesV2.InventoryV2\n ? getReportConfigNameForDuplicateInventory(reportConfig!.reportName)\n : getReportConfigNameForDuplicateSale(reportConfig!.reportName),\n } as ReportConfigV2;\n const newReportId = await invokeUpsertReport(newReport);\n if (newReportId) {\n if (reportConfig!.reportType === ReportTypesV2.InventoryV2) {\n window.open(\n `/reports/inventory/${newReportId}`,\n '_blank',\n 'noreferrer'\n );\n } else {\n // report.reportType === ReportTypesV2.SaleV2\n window.open(`/reports/sale/${newReportId}`, '_blank', 'noreferrer');\n }\n }\n }, [\n reportConfigWithTempQuery,\n reportConfig,\n getReportConfigNameForDuplicateInventory,\n getReportConfigNameForDuplicateSale,\n invokeUpsertReport,\n ]);\n\n return (\n <>\n
    \n {reportConfig?.reportName ? (\n

    {reportConfig.reportName}

    \n ) : null}\n \n {Boolean(!isEditTable && canUpdateReport) && (\n }\n textContentId={ContentId.EditTable}\n onClick={() => setIsEditTable(true)}\n />\n )}\n {reportConfig &&\n hasReportingV2Feature && // If they come from V1, we don't allow any actions yet\n reportConfig.reportType != ReportTypesV2.Commission && (\n <>\n {reportExportOptions ? (\n \n \n \n ) : (\n \n \n
    \n \n
    \n
    \n \n \n {reportConfig.isOwner && (\n <>\n \n \n \n \n \n \n \n )}\n {/* {(hasExportInventoryFeature ||\n reportConfig.request.rowGroupings?.some(\n (g) =>\n g.columnName ===\n ListingReportTableColumnId.ListingId\n )) && (\n \n \n \n \n \n \n \n \n setReportExportOptions({\n reportToExport: reportConfigWithTempQuery!,\n fileType: ReportFileType.CSV,\n })\n }\n >\n \n \n \n setReportExportOptions({\n reportToExport: reportConfigWithTempQuery!,\n fileType: ReportFileType.XLSX,\n })\n }\n >\n \n \n \n \n )} */}\n {hasCreateReportFeature && (\n \n \n \n \n \n \n )}\n \n \n
    \n )}\n \n )}\n
    \n
    \n {\n shareDialog.closeDialog();\n }}\n centered\n />\n {reportConfig && (\n <>\n {reportConfig.reportType === ReportTypesV2.InventoryV2 ? (\n \n ) : (\n \n )}\n \n )}\n \n );\n};\n","import { Colors } from 'src/core/themes/constants/colors';\n\nimport { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const DragHandleIcon = (props: PosIconProps) => {\n return (\n \n \n \n );\n};\n","import clsx from 'clsx';\nimport { ReactNode } from 'react';\nimport { DropWrapper } from 'src/core/POS/DragAndDropSort/DragAndDrop';\nimport { DragHandleIcon } from 'src/svgs/DragHandleIcon';\n\nimport * as styles from './MetricsOptionsListItem.css';\n\ntype ColumnListItemProps = {\n id: string;\n children: ReactNode;\n actionButton?: ReactNode;\n highlighted?: boolean;\n disabled?: boolean;\n};\n\nexport const SortableMetricsOptionsListItem = ({\n id,\n children,\n actionButton,\n highlighted,\n disabled,\n}: ColumnListItemProps) => {\n return (\n \n \n {children}\n \n \n );\n};\n\nexport const MetricsOptionsListItem = ({\n children,\n actionButton,\n highlighted,\n isDragging,\n}: ColumnListItemProps & {\n isDragging?: boolean;\n}) => {\n return (\n \n
    \n \n {children}\n
    \n {actionButton &&
    {actionButton}
    }\n \n );\n};\n","import { useDroppable } from '@dnd-kit/core';\nimport { SortableContext } from '@dnd-kit/sortable';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { SortableMetricsOptionsListItem } from './MetricsOptionsListItem';\nimport * as styles from './ReportsTableEditor.css';\n\nexport const MetricsInputDroppable = ({\n id,\n placeholderContentId,\n valueOptionsContent,\n selectedValues,\n disabled,\n}: {\n id: string;\n placeholderContentId?: ContentId;\n valueOptionsContent: Record;\n disabled?: boolean;\n selectedValues: string[];\n}) => {\n const { isOver, setNodeRef } = useDroppable({\n id: id,\n });\n\n return (\n \n \n \n {selectedValues.map((value) => (\n \n \n \n ))}\n {placeholderContentId && (\n \n \n \n \n \n )}\n \n \n \n );\n};\n","import { useDroppable } from '@dnd-kit/core';\nimport { SortableContext } from '@dnd-kit/sortable';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { SortableMetricsOptionsListItem } from './MetricsOptionsListItem';\nimport * as styles from './ReportsTableEditor.css';\n\n/**\n * The sections that represent the Add Columns and Current Columns for the Edit Columns experience\n */\nexport const MetricsOptionsList = ({\n id,\n titleContentId,\n availableValues,\n groupByOptionsContent,\n valueOptionsContent,\n disabled,\n}: {\n id: string;\n titleContentId?: ContentId;\n availableValues: string[];\n groupByOptionsContent: Record;\n valueOptionsContent: Record;\n disabled?: boolean;\n}) => {\n const { isOver, setNodeRef } = useDroppable({\n id,\n });\n\n return (\n \n
    \n {titleContentId && }\n \n {availableValues.map((value) => (\n \n {Object.keys(valueOptionsContent).includes(value) && (\n
    \n \n
    \n )}\n \n }\n >\n \n \n ))}\n \n
    \n
    \n );\n};\n","import {\n closestCorners,\n DndContext,\n DragOverEvent,\n DragOverlay,\n DragStartEvent,\n} from '@dnd-kit/core';\nimport { debounce } from 'lodash-es';\nimport {\n ComponentProps,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport isEqual from 'react-fast-compare';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport {\n Content,\n getContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { shared } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useReportConfigActionsV2 } from 'src/hooks/useReportConfigActionsV2';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { ListingReportArrayAggregateColumnIds } from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport { SalesReportTableValueColumnId } from 'src/utils/columns/sales/salesColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n LISTING_REPORT_TABLE_GROUPING_COLUMN_ID_TO_CONTENT_ID,\n LISTING_REPORT_TABLE_VALUE_COLUMN_ID_TO_CONTENT_ID,\n SALES_REPORT_TABLE_GROUPING_COLUMN_ID_TO_CONTENT_ID,\n SALES_REPORT_TABLE_VALUE_COLUMN_ID_TO_CONTENT_ID,\n} from 'src/utils/constants/contentIdMaps';\nimport { ReportTypesV2 } from 'src/utils/reportsUtils';\nimport { ReportColumn } from 'src/WebApiController';\n\nimport { MetricsInputDroppable } from './MetricsInputDroppable';\nimport { MetricsOptionsList } from './MetricsOptionsList';\nimport { MetricsOptionsListItem } from './MetricsOptionsListItem';\nimport * as styles from './ReportsTableEditor.css';\n\nexport const ReportsTableEditorForm = ({\n reportConfig,\n disabled,\n}: {\n reportConfig: ReportConfigV2;\n disabled?: boolean;\n}) => {\n const methods = useForm({\n defaultValues: reportConfig,\n });\n\n // Report config can be changed elsewhere like the filter bar\n useEffect(() => {\n if (!isEqual(methods.formState.defaultValues, reportConfig)) {\n methods.reset(reportConfig);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reportConfig]);\n\n return (\n \n \n \n );\n};\n\nconst ROWS_INPUT_KEY = 'rows-input';\nconst VALUES_INPUT_KEY = 'values-input';\nconst OPTIONS_LIST_KEY = 'metrics-options-list';\n\nconst ReportsTableEditorContent = ({\n watch,\n formState,\n handleSubmit,\n setValue,\n disabled,\n}: Omit<\n ComponentProps>,\n 'children' | 'trigger' | 'reset' | 'unregister'\n> & {\n disabled?: boolean;\n}) => {\n const metricsError = formState.errors.request?.aggregations?.message;\n const contentContext = useContentContext();\n\n const groupbyField = 'request.rowGroupings';\n const sortByField = 'request.orderBy';\n const metricsField = 'request.aggregations';\n\n const reportType = watch('reportType');\n const groupBy = watch(groupbyField);\n const metrics = watch(metricsField);\n const sortBy = watch(sortByField);\n\n const { upsertReportConfig } = useReportConfigActionsV2();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedUpsertReportConfig = useCallback(\n debounce((report: ReportConfigV2) => {\n if (disabled) {\n return;\n }\n upsertReportConfig(report);\n }, 1000),\n [disabled, upsertReportConfig]\n );\n\n const onSubmit = useCallback(\n async (report: ReportConfigV2) => {\n if (disabled) {\n return;\n }\n\n if (\n !isEqual(\n report.request.rowGroupings,\n formState.defaultValues?.request?.rowGroupings\n ) ||\n !isEqual(\n report.request.orderBy,\n formState.defaultValues?.request?.orderBy\n ) ||\n !isEqual(\n report.request.columnGroupings,\n formState.defaultValues?.request?.columnGroupings\n ) ||\n !isEqual(\n report.request.aggregations,\n formState.defaultValues?.request?.aggregations\n )\n ) {\n await debouncedUpsertReportConfig(report);\n }\n },\n [\n debouncedUpsertReportConfig,\n disabled,\n formState.defaultValues?.request?.aggregations,\n formState.defaultValues?.request?.columnGroupings,\n formState.defaultValues?.request?.orderBy,\n formState.defaultValues?.request?.rowGroupings,\n ]\n );\n\n useEffect(() => {\n handleSubmit(onSubmit)();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [groupBy, metrics]);\n\n const groupingOptions = useMemo(() => {\n if (reportType === ReportTypesV2.InventoryV2) {\n return LISTING_REPORT_TABLE_GROUPING_COLUMN_ID_TO_CONTENT_ID;\n } else {\n return SALES_REPORT_TABLE_GROUPING_COLUMN_ID_TO_CONTENT_ID;\n }\n }, [reportType]);\n\n const valueOptions = useMemo(() => {\n if (reportType === ReportTypesV2.InventoryV2) {\n return LISTING_REPORT_TABLE_VALUE_COLUMN_ID_TO_CONTENT_ID;\n } else {\n return SALES_REPORT_TABLE_VALUE_COLUMN_ID_TO_CONTENT_ID;\n }\n }, [reportType]);\n\n const allOptions = useMemo(() => {\n const groupingOptionsSortedByContent = Object.entries(groupingOptions)\n .toSorted(([, a], [, b]) =>\n getContent(a, contentContext).localeCompare(\n getContent(b, contentContext)\n )\n )\n .map(([key, value]) => key);\n\n const valueOptionsSortedByContent = Object.entries(valueOptions)\n .toSorted(([, a], [, b]) =>\n getContent(a, contentContext).localeCompare(\n getContent(b, contentContext)\n )\n )\n .map(([key, value]) => key);\n\n return [...groupingOptionsSortedByContent, ...valueOptionsSortedByContent];\n }, [contentContext, groupingOptions, valueOptions]);\n\n const [items, setItems] = useState>({\n [ROWS_INPUT_KEY]: [],\n [VALUES_INPUT_KEY]: [],\n [OPTIONS_LIST_KEY]: [],\n });\n\n const [activeId, setActiveId] = useState(null);\n\n useEffect(() => {\n setItems({\n [ROWS_INPUT_KEY]: (groupBy || []).map((c: ReportColumn) => c.columnName),\n [VALUES_INPUT_KEY]: (metrics || []).map(\n (c: ReportColumn) => c.columnName\n ),\n [OPTIONS_LIST_KEY]: allOptions.filter(\n (columnName) =>\n !(\n (groupBy || []).some(\n (g: ReportColumn) => g.columnName === columnName\n ) ||\n (metrics || []).some(\n (m: ReportColumn) => m.columnName === columnName\n )\n )\n ),\n });\n }, [metrics, groupBy, allOptions]);\n\n const findContainerKey = useCallback(\n (overId: string) => {\n if (items[ROWS_INPUT_KEY].includes(overId) || overId === ROWS_INPUT_KEY) {\n return ROWS_INPUT_KEY;\n }\n if (\n items[VALUES_INPUT_KEY].includes(overId) ||\n overId === VALUES_INPUT_KEY\n ) {\n return VALUES_INPUT_KEY;\n }\n if (\n items[OPTIONS_LIST_KEY].includes(overId) ||\n overId === OPTIONS_LIST_KEY\n ) {\n return OPTIONS_LIST_KEY;\n }\n return null;\n },\n [items]\n );\n\n const moveOver = (activeId: string, overId: string) => {\n const overContainerKey = findContainerKey(overId);\n if (!overContainerKey) {\n return;\n }\n const activeContainerKey = findContainerKey(activeId);\n if (!activeContainerKey) {\n return;\n }\n\n // Stop-gap to prevent moving grouping options to values and vice versa\n if (activeContainerKey !== overContainerKey) {\n if (\n overContainerKey === ROWS_INPUT_KEY &&\n !Object.keys(groupingOptions).includes(activeId)\n ) {\n return; // Prevent moving non-grouping options to rows\n }\n\n if (\n overContainerKey === VALUES_INPUT_KEY &&\n !Object.keys(valueOptions).includes(activeId)\n ) {\n return; // Prevent moving non-value options to values\n }\n }\n\n const newItems = { ...items };\n const activeIndex = newItems[activeContainerKey].indexOf(activeId);\n const activeItems = newItems[activeContainerKey].filter(\n (item) => item !== activeId\n );\n newItems[activeContainerKey] = activeItems;\n\n let overIndex = newItems[overContainerKey].indexOf(overId);\n if (overIndex === -1) {\n // If overId is the container itself, set it to the end of the list\n overIndex = newItems[overContainerKey].length;\n }\n\n // Move down the overIndex if the active item is before it in the same container\n if (activeIndex <= overIndex && activeContainerKey === overContainerKey) {\n overIndex++;\n }\n\n const overItems = [\n ...newItems[overContainerKey].slice(0, overIndex),\n activeId,\n ...newItems[overContainerKey].slice(overIndex),\n ];\n newItems[overContainerKey] = overItems;\n\n setItems(newItems);\n };\n\n const recalculateReportColumns = useCallback(() => {\n const newGroupBy = items[ROWS_INPUT_KEY].map((columnName) => ({\n columnName,\n columnValue: columnName, // Assume columnValue is the same as columnName\n }));\n\n const newSortBy = items[ROWS_INPUT_KEY][0];\n if (sortBy !== newSortBy) {\n setValue(sortByField, newSortBy);\n }\n\n if (!isEqual(newGroupBy, groupBy)) {\n setValue(groupbyField, newGroupBy);\n }\n\n const newMetrics = items[VALUES_INPUT_KEY].map((columnName) => {\n const columnValue =\n columnName.toLocaleLowerCase() ===\n SalesReportTableValueColumnId.Margin.toLocaleLowerCase()\n ? columnName\n : ListingReportArrayAggregateColumnIds.includes(columnName)\n ? `ARRAY_UNION_AGG(${columnName})`\n : `SUM(${columnName})`;\n return { columnName, columnValue };\n });\n\n if (!isEqual(newMetrics, metrics)) {\n setValue(metricsField, newMetrics);\n }\n }, [items, sortBy, groupBy, metrics, setValue]);\n\n const onDragOver = (event: DragOverEvent) => {\n const { active, over } = event;\n if (!active || !over) {\n return;\n }\n\n const activeId = active.id as string;\n const overId = over.id as string;\n\n // Prevent dragging over itself\n if (activeId === overId) {\n return;\n }\n\n moveOver(activeId, overId);\n };\n\n const onDragEnd = (event: DragOverEvent) => {\n recalculateReportColumns();\n setActiveId(null);\n };\n\n const onDragStart = (event: DragStartEvent) => {\n const { active } = event;\n if (!active) {\n return;\n }\n\n const activeId = active.id as string;\n setActiveId(activeId);\n };\n\n return (\n \n \n
    \n \n \n \n \n }\n />\n
    \n \n
    \n
    \n \n \n \n \n }\n />\n
    \n \n
    \n
    \n
    \n \n
    \n \n {activeId ? (\n \n )[activeId] ||\n (groupingOptions as Record)[activeId]\n }\n />\n \n ) : null}\n \n \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { shared } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { CrossIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './ReportsTableEditor.css';\nimport { ReportsTableEditorForm } from './ReportsTableEditorForm';\n\nexport const ReportsTableEditor = ({\n reportConfig,\n disabled,\n onClose,\n}: {\n reportConfig: ReportConfigV2;\n disabled?: boolean;\n onClose: () => void;\n}) => {\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n","import { ReactNode, useEffect, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { useReportMetricsContextV2 } from 'src/contexts/ReportMetricsContext/ReportMetricsContextV2';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { ReportsV2LocationState } from 'src/navigations/Routes/Reports/ReportsV2.types';\n\nimport { ReportsFilterToolbarV2 } from '../ReportsFilterToolbar/ReportsFilterToolbarV2';\nimport { ReportsPageToolbarV2 } from '../ReportsPageToolbar/ReportsPageToolbarV2';\nimport { ReportsTableEditor } from '../ReportsTableEditor';\nimport * as styles from './ReportsPageLayout.css';\n\nexport const ReportsPageLayout = ({\n reportConfig,\n reportTable,\n}: {\n reportConfig: ReportConfigV2;\n reportTable: ReactNode;\n}) => {\n const { isLoading } = useReportMetricsContextV2();\n const [isEditTable, setIsEditTable] = useState(false);\n\n const location = useLocation();\n\n useEffect(() => {\n // Check if the location state has a value for isCreateNewReport\n const isCreateNewReport = (location.state as ReportsV2LocationState)\n ?.isCreateNewReport;\n\n if (isCreateNewReport) {\n setIsEditTable(true);\n } else {\n // Default to false if no state is provided\n setIsEditTable(false);\n }\n }, [location]);\n\n return (\n
    \n \n \n\n \n {isLoading ? (\n \n ) : (\n
    {reportTable}
    \n )}\n
    \n {isEditTable && (\n setIsEditTable(false)}\n />\n )}\n
    \n );\n};\n","import { useReportMetricsContextV2 } from 'src/contexts/ReportMetricsContext/ReportMetricsContextV2';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport CommissionReportTableV2 from 'src/tables/SalesTable/CommissionReportTableV2';\n\nimport { ReportsPageLayout } from '../Reports/ReportsPageLayout';\nimport * as styles from './ReportsCommissionPage.css';\n\nexport function ReportsCommissionPage({\n reportConfig,\n}: {\n reportConfig: ReportConfigV2;\n}) {\n const { reportMetrics, reportSummary, isLoading, reportValueTypes } =\n useReportMetricsContextV2();\n\n return (\n \n }\n />\n );\n}\n","import { PropsWithChildren, useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { FilterQueryContextProvider } from 'src/contexts/FilterQueryContext';\nimport { ReportMetricsContextProviderV2 } from 'src/contexts/ReportMetricsContext/ReportMetricsContextV2';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { EmptyCommissionQuery } from 'src/utils/eventQueryUtils';\nimport { ReportV2Client, UIReportCommissionQuery } from 'src/WebApiController';\n\nexport function ReportsCommissionContextProviderV2({\n reportConfig,\n isExport,\n children,\n}: PropsWithChildren<{\n reportConfig: ReportConfigV2;\n isExport?: boolean;\n}>) {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const getReportMetrics = useCallback(\n (filters: UIReportCommissionQuery, pageNumber: number) => {\n return new ReportV2Client(\n activeAccountWebClientConfig\n ).getCommissionReportMetrics({\n ...reportConfig.request,\n pageNumber,\n filters,\n });\n },\n [activeAccountWebClientConfig, reportConfig]\n );\n\n const getReportMetricsSummary = useCallback(\n (filters: UIReportCommissionQuery) => {\n return new ReportV2Client(\n activeAccountWebClientConfig\n ).getCommissionReportSummary({\n ...reportConfig.request,\n filters,\n });\n },\n [activeAccountWebClientConfig, reportConfig]\n );\n\n return (\n \n initialQuery={reportConfig.request.filters as UIReportCommissionQuery}\n emptyQuery={EmptyCommissionQuery}\n loadQueryFromUrl={false}\n >\n \n queryKey=\"getReportCommissionMetricsV2\"\n getReportMetrics={getReportMetrics}\n getReportMetricsSummary={getReportMetricsSummary}\n disabled={isExport}\n reportConfig={reportConfig}\n >\n {children}\n \n \n );\n}\n","import { useLocation, useParams } from 'react-router-dom';\nimport { ReportsCommissionPage } from 'src/components/ReportsCommissionPage';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useReportConfigsV2 } from 'src/hooks/useReportConfigsV2';\nimport { useReportPermissions } from 'src/hooks/useReportPermissions';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ReportTypesV2 } from 'src/utils/reportsUtils';\n\nimport { MainRoute } from '../MainRoute';\nimport { ReportsCommissionContextProviderV2 } from './ReportsCommissionContextProviderV2';\n\nexport function ReportsCommission() {\n const { hasAccessToReportingV2, hasReportSinglePagedV1V2Feature } =\n useReportPermissions();\n\n const location = useLocation();\n\n const isFromV1Page = location.state?.isFromV1Page === true;\n\n const mainRoute =\n !hasAccessToReportingV2 || isFromV1Page || hasReportSinglePagedV1V2Feature\n ? MainRoute.Reports\n : MainRoute.ReportsV2;\n\n return (\n \n \n \n );\n}\n\nfunction ReportsCommissionContentV2() {\n const { reportId } = useParams();\n const location = useLocation();\n\n const { reportConfigs, isLoading, isFetching } =\n useReportConfigsV2({\n reportType: ReportTypesV2.Commission,\n });\n\n const reportConfig = reportConfigs?.find(\n (r) => r.reportId?.toString() === reportId\n );\n\n if (reportConfig == null) {\n return isLoading || isFetching ? (\n \n ) : (\n \n }\n />\n \n );\n }\n\n return (\n \n \n \n \n \n );\n}\n","import { ReactNode } from 'react';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\n\nimport { PosSpinner } from '../PosSpinner';\nimport * as styles from './PosFloatingSpinner.css';\n\nexport const PosFloatingSpinner = ({ message }: { message?: ReactNode }) => {\n return (\n \n
    \n \n
    \n {message &&
    {message}
    }\n \n );\n};\n","import { useState } from 'react';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { IconsFill, LoadingIcon, WarningOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\n\nimport * as styles from './ReportsMaxSizeMessage.css';\n\nexport const ReportsMaxSizeMessage = ({\n count,\n totalCount,\n onBypassLimit,\n}: {\n count: number;\n totalCount?: number | null;\n onBypassLimit: () => void;\n}) => {\n const [isLoading, setIsLoading] = useState(false);\n\n if (count >= (totalCount ?? -1)) {\n return null;\n }\n\n return (\n \n \n
    \n \n
    \n \n \n \n\n {\n setIsLoading(true);\n onBypassLimit();\n }}\n variant=\"outline\"\n >\n {' '}\n {isLoading && (\n \n \n \n )}\n \n \n );\n};\n","import React from 'react';\nimport { vars } from 'src/core/themes';\n\ninterface CircleIconProps {\n icon: React.ReactNode;\n size?: number | string;\n backgroundColor?: string;\n styleOverride?: React.CSSProperties;\n className?: string;\n}\n\nconst CircleIcon: React.FC = ({\n icon,\n size = 80,\n backgroundColor = vars.color.backgroundDisabled,\n styleOverride = {},\n className = '',\n}) => (\n \n {icon}\n \n);\n\nexport default CircleIcon;\n","import { PosIconProps } from './SvgWrapper';\n\nexport const ReportGroupIcon = (props: Omit) => {\n return (\n \n \n \n \n );\n};\n","import { PosIconProps } from './SvgWrapper';\n\nexport function TimeoutIcon(props: Omit) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n","import React from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport CircleIcon from 'src/core/ui/CircleIcon/CircleIcon';\nimport { Stack } from 'src/core/ui/Stack';\nimport { ReportGroupIcon } from 'src/svgs/ReportGroupIcon';\nimport { TimeoutIcon } from 'src/svgs/TimeoutIcon';\nimport { ClockIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\n\nimport { TableErrorStateHeader } from './Table.css';\nimport { NoData } from './Table.styled';\n\ninterface TableStateWrapperProps {\n isLoading: boolean;\n hasError: boolean;\n hasTimeout: boolean;\n hasData: boolean;\n children: React.ReactNode;\n}\n\nconst TableStateWrapper = ({\n isLoading,\n hasError,\n hasTimeout,\n hasData,\n children,\n}: TableStateWrapperProps) => {\n const { initialQuery, setFilterQuery, setTempQuery } =\n useFilterQueryContext();\n\n if (isLoading) {\n return ;\n }\n\n if (hasError) {\n return (\n \n \n }\n styleOverride={{ marginBottom: vars.spacing.sm }}\n />\n
    \n \n
    \n\n \n
    \n
    \n );\n }\n\n if (hasTimeout) {\n return (\n \n \n }\n styleOverride={{ marginBottom: vars.spacing.sm }}\n />\n
    \n \n
    \n \n
    \n
    \n );\n }\n\n if (!hasData) {\n return (\n \n \n }\n styleOverride={{ marginBottom: vars.spacing.sm }}\n />\n
    \n \n
    \n
    \n \n {'. '}\n \n
    \n {\n setFilterQuery(initialQuery);\n setTempQuery(initialQuery);\n }}\n style={{ marginTop: vars.spacing.xl }}\n >\n \n \n
    \n
    \n );\n }\n\n return <>{children};\n};\n\nexport default TableStateWrapper;\n","import {\n functionalUpdate,\n PaginationState,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useEffect, useMemo, useState } from 'react';\nimport { ReportsMaxSizeMessage } from 'src/components/Reports/ReportsMaxSizeMessage';\nimport { useActiveSortTableColumnContext } from 'src/contexts/ActiveSortTableColumnContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { ColumnResizingContextProvider } from 'src/contexts/ColumnResizingContext/ColumnResizingContext';\nimport { useReportMetricsContext } from 'src/contexts/ReportMetricsContext';\nimport { Stack } from 'src/core/ui';\nimport { Table } from 'src/tables/Table';\nimport { ListingReportMetricsWithGroupBy } from 'src/utils/reportsUtils';\nimport {\n ListingQuery,\n ListingReportMetrics,\n ReportGroupBy,\n UserSetting,\n} from 'src/WebApiController';\n\nimport TableStateWrapper from '../Table/TableStateWrapper';\nimport { ListingReportTableProps } from './ListingReportTable.types';\nimport {\n ListingReportTableColumnDefContextProvider,\n useListingReportTableColumnDef,\n} from './ListingReportTableColumnDefContext';\n\nexport const ListingReportTable = ({\n report,\n ...rest\n}: ListingReportTableProps) => {\n return (\n \n \n \n );\n};\n\nconst ListingReportTableInternal = ({\n metricsData,\n summaryData,\n totalCount,\n report,\n refreshMetrics,\n onMount,\n onUnmount,\n initState,\n className,\n}: ListingReportTableProps) => {\n const { data: catalogData } = useCatalogDataContext();\n const { hasTimeout: metricsHasTimeout, hasUnknownError: metricsHasError } =\n useReportMetricsContext();\n\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const { activeSortTableColumn, setActiveSortTableColumn } =\n useActiveSortTableColumnContext();\n const [sorting, setSorting] = useState(\n activeSortTableColumn || initState?.sorting || []\n );\n\n const data = useMemo(() => {\n const performerCount = Object.keys(catalogData?.performers ?? {}).length;\n const venueCount = Object.keys(catalogData?.venues ?? {}).length;\n const eventCount = Object.keys(catalogData?.events ?? {}).length;\n\n const shimmeringDivCount =\n report.groupBy === ReportGroupBy.Performer\n ? performerCount\n : report.groupBy === ReportGroupBy.Venue\n ? venueCount\n : eventCount;\n return metricsData ?? Array(shimmeringDivCount).fill(null);\n }, [\n catalogData?.events,\n catalogData?.performers,\n catalogData?.venues,\n metricsData,\n report.groupBy,\n ]);\n\n const disablePagination = report.numberOfItemsPerPage == null;\n\n const [pagination, setPagination] = useState({\n pageIndex: 0,\n pageSize: Math.max(\n 1,\n disablePagination ? data.length : report.numberOfItemsPerPage!\n ),\n });\n\n useEffect(() => {\n if (disablePagination) {\n if (pagination.pageSize !== data.length) {\n setPagination((prevState) => ({\n ...prevState,\n pageSize: data.length,\n }));\n }\n } else {\n setPagination((prevState) => ({\n ...prevState,\n pageSize: report.numberOfItemsPerPage!,\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data, report]);\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n const { displayedColumnsConfig = [], isLoading: tableColumnIsLoading } =\n useListingReportTableColumnDef();\n\n const options: Partial> =\n useMemo(\n () => ({\n data,\n meta: {\n summaryData,\n },\n columns: displayedColumnsConfig,\n state: {\n pagination,\n sorting,\n },\n onPaginationChange: setPagination,\n onSortingChange: (sortingUpdaterFn) => {\n const newSortVal = functionalUpdate(sortingUpdaterFn, sorting);\n setSorting(newSortVal);\n setActiveSortTableColumn(newSortVal);\n },\n enableRowSelection: true,\n }),\n [\n data,\n summaryData,\n displayedColumnsConfig,\n pagination,\n sorting,\n setActiveSortTableColumn,\n ]\n );\n\n return (\n \n hasData={data?.length > 0}\n isLoading={tableColumnIsLoading || false}\n hasError={metricsHasError || false}\n hasTimeout={metricsHasTimeout || false}\n >\n \n refreshMetrics(true)}\n />\n \n \n \n \n \n );\n};\n\nexport default ListingReportTable;\n","import { useCallback, useMemo, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport {\n InventoryMetricsSelectionInputModal,\n SalesMetricsSelectionInputModal,\n} from 'src/dialogs/ReportBuilderDialog/MetricsSelectionInputModal';\nimport { ReportBuilderFilterInput } from 'src/dialogs/ReportBuilderDialog/ReportBuilderFilterInput';\nimport { ReportConfig, useReportConfigs } from 'src/hooks/useReportConfigs';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { LayoutIcon } from 'src/svgs';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ReportTypes } from 'src/utils/reportsUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n Permission,\n ReportConfigOverrideOfListingQuery,\n ReportConfigOverrideOfSaleQuery,\n ReportGroupBy,\n} from 'src/WebApiController';\n\nimport * as styles from './ReportsFilterToolbar.css';\n\nexport const ReportsFilterToolbar = ({\n reportConfig,\n}: {\n reportConfig: ReportConfig;\n}) => {\n const methods = useForm({\n defaultValues: reportConfig,\n });\n const { handleSubmit } = methods;\n const { showErrorDialog } = useErrorBoundaryContext();\n const [isColumnModalOpen, setColumnModalOpen] = useState(false);\n\n const {\n upsertReportConfig: upsertReportConfigInventory,\n upsertReportOverride: upsertReportOverrideInventory,\n } = useReportConfigs({\n reportType: ReportTypes.Inventory,\n });\n\n const {\n upsertReportConfig: upsertReportConfigSale,\n upsertReportOverride: upsertReportOverrideSale,\n } = useReportConfigs({\n reportType: ReportTypes.Sale,\n });\n\n const hasUpdateReportFeature = useUserHasAnyOfPermissions(\n Permission.Reports_UpdateReports\n );\n\n const hasUpdateOwnReportFeature =\n useUserHasAnyOfPermissions(Permission.Reports_UpdateReportsOwned) &&\n reportConfig.isOwner;\n\n const invokeUpsertReport = useCallback(\n async (reportConfigNew: ReportConfig) => {\n await tryInvokeApi(\n async () => {\n if (reportConfigNew!.globalReportTypeId) {\n if (!hasUpdateReportFeature) {\n // Don't update since the user has no config\n return;\n }\n\n if (reportConfigNew.reportType === ReportTypes.Inventory) {\n return await upsertReportOverrideInventory(\n {\n // At the moment we don't supprt persisting filter override for global reports (POS-3604)\n filter: null,\n metrics: reportConfigNew.metrics,\n } as ReportConfigOverrideOfListingQuery,\n reportConfig!\n );\n } else {\n // report.reportType === ReportTypes.Sale\n return await upsertReportOverrideSale(\n {\n filter: null,\n metrics: reportConfigNew.metrics,\n } as ReportConfigOverrideOfSaleQuery,\n reportConfig!\n );\n }\n } else {\n if (!hasUpdateReportFeature && !hasUpdateOwnReportFeature) {\n // Don't update since the user has no config\n return;\n }\n\n if (reportConfigNew.reportType === ReportTypes.Inventory) {\n return await upsertReportConfigInventory(\n reportConfigNew.reportId,\n reportConfigNew,\n !reportConfigNew.isOwner\n );\n } else {\n // report.reportType === ReportTypes.Sale\n return await upsertReportConfigSale(\n reportConfigNew.reportId,\n reportConfigNew,\n !reportConfigNew.isOwner\n );\n }\n }\n },\n (error) => {\n showErrorDialog('ReportClient.mergeReport', error, {\n trackErrorData: reportConfigNew,\n });\n }\n );\n },\n [\n hasUpdateOwnReportFeature,\n hasUpdateReportFeature,\n reportConfig,\n showErrorDialog,\n upsertReportConfigInventory,\n upsertReportConfigSale,\n upsertReportOverrideInventory,\n upsertReportOverrideSale,\n ]\n );\n\n const onReportSaveSubmit = useCallback(\n (report: ReportConfig) => {\n invokeUpsertReport(report);\n },\n [invokeUpsertReport]\n );\n\n const onColumnSettingButtonClickHandler = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!isColumnModalOpen) setColumnModalOpen(true);\n },\n [isColumnModalOpen, setColumnModalOpen]\n );\n\n const onMetrisSelectionModalClose = useCallback(() => {\n handleSubmit(onReportSaveSubmit)();\n setColumnModalOpen(false);\n }, [handleSubmit, onReportSaveSubmit]);\n\n const filterChangeMessageContentId = useMemo(() => {\n if (reportConfig.globalReportTypeId != null) {\n if (\n reportConfig.groupBy === ReportGroupBy.SaleIdTicketIdCommissionUser ||\n reportConfig.groupBy === ReportGroupBy.ArAgingMarketplace\n ) {\n return ContentId.GlobalReportFilterChangeMessage;\n }\n return ContentId.GlobalReportFilterChangeCopyMessage;\n }\n return undefined;\n }, [reportConfig.globalReportTypeId, reportConfig.groupBy]);\n\n return (\n (hasUpdateReportFeature || hasUpdateOwnReportFeature) && (\n \n
    \n \n }\n />\n )\n }\n embeddedDisplayOnly\n />\n\n {reportConfig.groupBy !== ReportGroupBy.ArAgingMarketplace ? (\n \n \n \n \n ) : (\n \n )}\n \n
    \n {isColumnModalOpen && (\n <>\n {reportConfig.reportType === ReportTypes.Inventory ? (\n \n ) : (\n \n )}\n \n )}\n
    \n )\n );\n};\n","import { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { CatalogMetricsContextProvider } from 'src/contexts/CatalogMetricsContext';\nimport { groupAndAggregateMetrics } from 'src/contexts/CatalogMetricsContext/CatalogMetrics.utils';\nimport { useGeSummaryMetricsQuery } from 'src/contexts/CatalogMetricsContext/useGetSummaryMetricsQuery';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useReportMetricsContext } from 'src/contexts/ReportMetricsContext';\nimport { PosFloatingSpinner } from 'src/core/POS/PosFloatingSpinner';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\nimport { ReportConfig } from 'src/hooks/useReportConfigs';\nimport { getCatalogSummaryMetrics } from 'src/navigations/Routes/Inventory';\nimport ListingReportTable from 'src/tables/ListingTable/ListingReportTable';\nimport { GROUP_BY_TO_PRIMARY_COLUMN_ID } from 'src/utils/columns/inventory/inventoryColumnUtils.constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ListingCatalogMetricsQueryKey } from 'src/utils/inventoryUtils';\nimport { ListingReportMetricsWithGroupBy } from 'src/utils/reportsUtils';\nimport {\n addListingMetrics,\n getInventorySummaryListingMetricsDisplayStrings,\n} from 'src/utils/ticketMetricUtils';\nimport {\n ActionOutboxEntityType,\n ListingMetrics,\n ListingQuery,\n ListingReportMetrics,\n ReportWidgetTypesCommission,\n ReportWidgetTypesInventory,\n ReportWidgetTypesSale,\n} from 'src/WebApiController';\n\nimport {\n AverageTicketPriceDisplay,\n SalesAndMarginDisplay,\n TicketsListedAndSoldDisplay,\n} from '../Listings/InventorySummaryWidgets';\nimport { ReportsFilterToolbar } from '../Reports/ReportsFilterToolbar';\nimport * as styles from './ReportsInventoryPage.css';\nimport { mapReportMetrics } from './ReportsInventoryPage.utils';\n\nexport function ReportsInventoryPage({\n reportConfig,\n}: {\n reportConfig: ReportConfig;\n}) {\n const {\n reportMetrics,\n reportSummary,\n totalCount,\n isLoading,\n isRefreshing,\n refreshMetrics,\n } = useReportMetricsContext();\n const { data, eventsTransformed } = useCatalogDataContext();\n\n const reportMetricsMapped: ListingReportMetricsWithGroupBy[] | undefined =\n useMemo(\n () => mapReportMetrics(reportMetrics, eventsTransformed, data),\n [data, eventsTransformed, reportMetrics]\n );\n\n const initSorting = useMemo(() => {\n const sortBy =\n reportConfig.sortBy ??\n GROUP_BY_TO_PRIMARY_COLUMN_ID[reportConfig.groupBy];\n\n return [\n {\n id: sortBy,\n desc: reportConfig.isSortDescending ?? false,\n },\n ];\n }, [\n reportConfig.groupBy,\n reportConfig.isSortDescending,\n reportConfig.sortBy,\n ]);\n\n return (\n
    \n {reportConfig.reportName && (\n

    {reportConfig.reportName}

    \n )}\n \n \n {isLoading ? (\n \n ) : (\n
    \n \n {isRefreshing && (\n }\n />\n )}\n
    \n )}\n
    \n );\n}\n\nexport const WidgetSection = ({\n widgets,\n}: {\n widgets?:\n | ReportWidgetTypesInventory[]\n | ReportWidgetTypesSale[]\n | ReportWidgetTypesCommission[]\n | null;\n}) => {\n if (!widgets?.length) {\n return null;\n }\n\n return (\n \n queryKey={ListingCatalogMetricsQueryKey}\n entityType={ActionOutboxEntityType.Listing}\n getCatalogMetrics={(c, f) => c.getCatalogListingMetrics(f)}\n addCatalogMetrics={addListingMetrics}\n >\n \n \n );\n};\n\nexport const WidgetSectionContent = ({\n widgets,\n}: {\n widgets?:\n | ReportWidgetTypesInventory[]\n | ReportWidgetTypesSale[]\n | ReportWidgetTypesCommission[]\n | null;\n}) => {\n const { eventsTransformed } = useCatalogDataContext();\n const { loginContext } = useAppContext();\n\n const { summaryMetrics, isLoading } =\n useGeSummaryMetricsQuery(\n 'ListingMetrics',\n eventsTransformed\n ?.map((ev) => ev.event.perfId)\n .filter((id) => id != null)\n .map((id) => id!),\n eventsTransformed?.map((ev) => ev.event.venueId),\n (metrics: ListingMetrics[]) =>\n groupAndAggregateMetrics(metrics, addListingMetrics),\n getCatalogSummaryMetrics\n );\n\n const formattedTotalMetrics = summaryMetrics\n ? getInventorySummaryListingMetricsDisplayStrings(\n summaryMetrics,\n loginContext?.user?.activeAccount?.currencyCode\n )\n : null;\n\n if (\n !widgets?.length ||\n (eventsTransformed != null && !isLoading && !summaryMetrics)\n ) {\n return null;\n }\n widgets = widgets as ReportWidgetTypesInventory[];\n\n return (\n
    \n \n {widgets.includes(ReportWidgetTypesInventory.TicketsListedAndSold) && (\n \n )}\n {widgets.includes(ReportWidgetTypesInventory.SalesAndMargin) && (\n \n )}\n {widgets.includes(ReportWidgetTypesInventory.AverageTicketPrice) && (\n \n )}\n \n
    \n );\n};\n","import { ComponentProps, useCallback, useMemo, useState } from 'react';\nimport { BackSection } from 'src/components/common/BackSection';\nimport { ReportsInventoryExport } from 'src/components/Reports/ReportsExport';\nimport { ReportExportOptions } from 'src/components/Reports/ReportsExport/ReportsExport.types';\nimport { ReportsSaleExport } from 'src/components/Reports/ReportsExport/ReportsSaleExport';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { useReportMetricsContext } from 'src/contexts/ReportMetricsContext';\nimport { vars } from 'src/core/themes';\nimport { DropdownMenu, Stack } from 'src/core/ui';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { ShareReportDialog } from 'src/dialogs/ShareReportDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ReportConfig, useReportConfigs } from 'src/hooks/useReportConfigs';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { CopyIcon } from 'src/svgs';\nimport {\n DownloadIcon,\n IconsFill,\n MoreIcon,\n ProcessingIcon,\n ShareIcon,\n} from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { QueryWithViewMode } from 'src/utils/eventQueryUtils';\nimport { isReportFilterOverriden, ReportTypes } from 'src/utils/reportsUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n EntityWithTicketsQuery,\n Feature,\n Permission,\n ReportFileType,\n ReportGroupBy,\n} from 'src/WebApiController';\n\nimport * as styles from './ReportsPageToolbar.css';\n\nexport const ReportsPageToolbar = ({\n reportConfig,\n returnUrl,\n}: {\n reportConfig: ReportConfig | undefined;\n returnUrl: string;\n}) => {\n const shareDialog = useBasicDialog();\n const { showErrorDialog } = useErrorBoundaryContext();\n const { filterQuery } = useFilterQueryContext<\n EntityWithTicketsQuery & QueryWithViewMode\n >();\n const { isAllReportMetricsLoaded, totalCount } = useReportMetricsContext();\n\n const hasExportInventoryFeature = useUserHasFeature(Feature.ExportInventory);\n const hasCreateReportFeature = useUserHasAnyOfPermissions(\n Permission.Reports_CreateReports\n );\n\n const [reportExportOptions, setReportExportOptions] =\n useState(null);\n\n const onReportExported = () => {\n setReportExportOptions(null);\n };\n\n const reportConfigWithTempQuery = useMemo(() => {\n if (!reportConfig) {\n return reportConfig;\n }\n return {\n ...reportConfig,\n filter: filterQuery,\n hasFilterOverride:\n reportConfig.hasFilterOverride ||\n isReportFilterOverriden(filterQuery, reportConfig.filter),\n } as ReportConfig;\n }, [filterQuery, reportConfig]);\n\n const {\n upsertReportConfig: upsertReportConfigInventory,\n getReportConfigNameForDuplicate: getReportConfigNameForDuplicateInventory,\n } = useReportConfigs({\n reportType: ReportTypes.Inventory,\n });\n\n const {\n upsertReportConfig: upsertReportConfigSale,\n getReportConfigNameForDuplicate: getReportConfigNameForDuplicateSale,\n } = useReportConfigs({\n reportType: ReportTypes.Sale,\n });\n\n const invokeUpsertReport = useCallback(\n async (report: ReportConfig) => {\n return await tryInvokeApi(\n async () => {\n if (report.reportType === ReportTypes.Inventory) {\n return await upsertReportConfigInventory(report.reportId, report);\n } else {\n // report.reportType === ReportTypes.Sale\n return await upsertReportConfigSale(report.reportId, report);\n }\n },\n (error) => {\n showErrorDialog('ReportClient.mergeReport', error, {\n trackErrorData: report,\n });\n }\n );\n },\n [showErrorDialog, upsertReportConfigInventory, upsertReportConfigSale]\n );\n\n const onReportShareSubmit = useCallback<\n ComponentProps['onOkay']\n >(\n async (roleIds, sellerUserIds) => {\n const updatedReport = {\n ...reportConfig!,\n roleIdsToShare: roleIds,\n sellerUserIdsToShare: sellerUserIds,\n };\n await invokeUpsertReport(updatedReport);\n shareDialog.closeDialog();\n },\n [reportConfig, invokeUpsertReport, shareDialog]\n );\n\n const onReportDuplicateSubmit = useCallback(async () => {\n const newReport = {\n ...reportConfigWithTempQuery!,\n reportId: null,\n reportName:\n reportConfig!.reportType === ReportTypes.Inventory\n ? getReportConfigNameForDuplicateInventory(reportConfig!.reportName)\n : getReportConfigNameForDuplicateSale(reportConfig!.reportName),\n } as ReportConfig;\n const newReportId = await invokeUpsertReport(newReport);\n if (newReportId) {\n if (reportConfig!.reportType === ReportTypes.Inventory) {\n window.open(\n `/reports/inventory/${newReportId}`,\n '_blank',\n 'noreferrer'\n );\n } else {\n // report.reportType === ReportTypes.Sale\n window.open(`/reports/sale/${newReportId}`, '_blank', 'noreferrer');\n }\n }\n }, [\n reportConfigWithTempQuery,\n reportConfig,\n getReportConfigNameForDuplicateInventory,\n getReportConfigNameForDuplicateSale,\n invokeUpsertReport,\n ]);\n\n return (\n <>\n
    \n \n \n {reportConfig && (\n <>\n {reportExportOptions ? (\n \n \n \n ) : (\n \n \n \n \n
    \n \n \n \n {reportConfig.isOwner && (\n <>\n \n \n \n \n \n \n \n )}\n {(hasExportInventoryFeature ||\n reportConfig.groupBy !== ReportGroupBy.ListingId) && (\n \n \n \n \n \n \n \n \n setReportExportOptions({\n reportToExport: reportConfigWithTempQuery!,\n fileType: ReportFileType.XLSX,\n serverSideExport: !isAllReportMetricsLoaded,\n })\n }\n >\n \n \n \n setReportExportOptions({\n reportToExport: reportConfigWithTempQuery!,\n fileType: ReportFileType.CSV,\n serverSideExport: !isAllReportMetricsLoaded,\n })\n }\n >\n \n \n {isAllReportMetricsLoaded && (\n // We don't support server side PDF export so we hide it for now\n // Need to be determined on https://thestubhub.atlassian.net/browse/POS-4291 on how we want to handle this\n \n setReportExportOptions({\n reportToExport: reportConfigWithTempQuery!,\n fileType: ReportFileType.PDF,\n })\n }\n >\n \n \n )}\n\n \n \n )}\n {hasCreateReportFeature &&\n reportConfig.groupBy !==\n ReportGroupBy.SaleIdTicketIdCommissionUser &&\n reportConfig.groupBy !==\n ReportGroupBy.ArAgingMarketplace && (\n \n \n \n \n \n \n )}\n \n \n \n )}\n \n )}\n \n \n {\n shareDialog.closeDialog();\n }}\n centered\n />\n {reportConfig && (\n <>\n {reportConfig.reportType === ReportTypes.Inventory ? (\n \n ) : (\n \n )}\n \n )}\n \n );\n};\n","import { useMemo } from 'react';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { ReportsInventoryPage } from 'src/components/ReportsInventoryPage';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useReportConfigs } from 'src/hooks/useReportConfigs';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ReportTypes } from 'src/utils/reportsUtils';\n\nimport { ReportsPageToolbar } from '../../../components/Reports/ReportsPageToolbar';\nimport { MainRoute } from '../MainRoute';\nimport { ReportsInventoryContextProvider } from './ReportsInventoryContextProvider';\n\nexport function ReportsInventory() {\n return (\n \n \n \n );\n}\n\nfunction ReportsInventoryContent() {\n const { reportId } = useParams();\n const location = useLocation();\n\n const { reportConfigs, isLoading } = useReportConfigs({\n reportType: ReportTypes.Inventory,\n });\n\n const reportConfig = reportConfigs?.find(\n (r) => r.reportId?.toString() === reportId\n );\n\n // Only use value provided at the first time (should be from '/reports')\n const returnUrl = useMemo(() => {\n return (location.state as { returnUrl?: string })?.returnUrl;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (reportConfig == null) {\n return isLoading ? (\n \n ) : (\n \n }\n />\n \n );\n }\n\n return (\n \n \n \n {' '}\n \n \n );\n}\n","import { createColumnHelper } from '@tanstack/react-table';\nimport {\n COLUMN_MAX_SIZE,\n COLUMN_MIN_SIZE,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport {\n COLUMN_DEFAULT_SIZE_LG,\n COLUMN_DEFAULT_SIZE_XL,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ReportMetricsResponse } from 'src/contexts/ReportMetricsContext/ReportMetricsContextV2';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { useColumnUserSetting } from 'src/hooks/useColumnUserSetting';\nimport { FormatOption } from 'src/modals/EditTableColumns';\nimport { createInventoryEventUrl } from 'src/navigations/Routes/InventoryEvent/InventoryEvent.utils';\nimport { defaultColumnHelperAccessor } from 'src/tables/ReportTableCommon/DefaultColumnHelperAccessor';\nimport { LinkCell } from 'src/tables/ReportTableCommon/LinkCell';\nimport { SHIMMERING_DIV_HEIGHT_REPORT } from 'src/tables/ReportTableCommon/ReportTableCommon.constants';\nimport { reportV2AccessorFn } from 'src/tables/ReportTableCommon/ReportTableCommon.utils';\nimport { TextCell } from 'src/tables/ReportTableCommon/TextCell';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\nimport { DateCell } from 'src/tables/Table/TableCells';\nimport {\n ListingReportTableGroupingColumnId,\n ListingReportTableValueColumnId,\n} from 'src/utils/columns/inventory/inventoryColumnUtils.types';\nimport {\n LISTING_REPORT_TABLE_GROUPING_COLUMN_ID_TO_CONTENT_ID,\n LISTING_REPORT_TABLE_VALUE_COLUMN_ID_TO_CONTENT_ID,\n} from 'src/utils/constants/contentIdMaps';\nimport { getListingDetailsRelativeUrl } from 'src/utils/inventoryUtils';\nimport { getPurchaseOrderRelativeUrl } from 'src/utils/purchaseUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { ReportValueType } from 'src/WebApiController';\n\nconst SECTION_TYPE = SectionType.ListingsReport;\n\nconst columnHelper = createColumnHelper();\n\nexport const LISTING_REPORT_SPECIAL_TABLE_COLUMNS_CONFIG = {\n [ListingReportTableGroupingColumnId.EventId]: columnHelper.accessor(\n reportV2AccessorFn(ListingReportTableGroupingColumnId.EventId),\n {\n id: ListingReportTableGroupingColumnId.EventId,\n header: (params) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => {\n const eventId = params.row.original?.eventId;\n if (!eventId) {\n return ;\n }\n const eventUrl = createInventoryEventUrl(eventId);\n return (\n \n );\n },\n }\n ),\n [ListingReportTableGroupingColumnId.LocalEventDateTime]:\n columnHelper.accessor(\n reportV2AccessorFn(ListingReportTableGroupingColumnId.LocalEventDateTime),\n {\n id: ListingReportTableGroupingColumnId.LocalEventDateTime,\n header: (params) => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_MMDD } =\n useColumnUserSetting(columnId, SECTION_TYPE);\n\n if (!original) {\n return ;\n }\n\n const dateValue = value ? new Date(value).toISOString() : value;\n\n return (\n \n );\n },\n }\n ),\n [ListingReportTableGroupingColumnId.ListingId]: columnHelper.accessor(\n reportV2AccessorFn(ListingReportTableGroupingColumnId.ListingId),\n {\n id: ListingReportTableGroupingColumnId.ListingId,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue }) => {\n const listingId = getValue();\n\n if (!listingId) {\n return ;\n }\n\n const url = getListingDetailsRelativeUrl(listingId!);\n return (\n \n );\n },\n }\n ),\n [ListingReportTableValueColumnId.PurchaseOrderId]: columnHelper.accessor(\n reportV2AccessorFn(ListingReportTableValueColumnId.PurchaseOrderId),\n {\n id: ListingReportTableValueColumnId.PurchaseOrderId,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue }) => {\n const purchaseIds = getValue();\n\n if (!purchaseIds) {\n return ;\n }\n\n return (\n `#${purchaseId}`)}\n url={purchaseIds.map((purchaseId) =>\n getPurchaseOrderRelativeUrl(purchaseId)\n )}\n separator={{', '}}\n openInNewTab\n align=\"left\"\n style={{ fontWeight: 600 }}\n />\n );\n },\n }\n ),\n} as const;\n\nexport const listingReportV2TableColumnDef = (\n columnId: string,\n valueType: ReportValueType | undefined\n) => {\n const specialConfig = Object.entries(\n LISTING_REPORT_SPECIAL_TABLE_COLUMNS_CONFIG\n ).find(([key]) => key === columnId)?.[1];\n\n if (specialConfig) {\n return specialConfig;\n }\n\n const headerContentId =\n LISTING_REPORT_TABLE_GROUPING_COLUMN_ID_TO_CONTENT_ID[\n columnId as ListingReportTableGroupingColumnId\n ] ??\n LISTING_REPORT_TABLE_VALUE_COLUMN_ID_TO_CONTENT_ID[\n columnId as ListingReportTableValueColumnId\n ];\n\n return defaultColumnHelperAccessor(\n columnHelper,\n columnId,\n headerContentId,\n valueType\n );\n};\n","import { ColumnDef } from '@tanstack/react-table';\nimport { createContext, PropsWithChildren, useContext, useMemo } from 'react';\nimport {\n ReportMetricsResponse,\n ReportValueTypesReponse,\n} from 'src/contexts/ReportMetricsContext/ReportMetricsContextV2';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { ListingReportTableColumnId } from 'src/utils/columns/inventory/inventoryColumnUtils.types';\n\nimport { listingReportV2TableColumnDef } from './configs/ListingReportTableColumnsConfigV2';\n\ntype ListingReportTableColumnDefContextType = {\n displayedColumnsConfig: ColumnDef[] | undefined;\n};\n\nconst ListingReportTableColumnDefContext =\n createContext({\n displayedColumnsConfig: undefined,\n });\n\nexport const ListingReportTableColumnDefContextProviderV2 = ({\n report,\n reportValueTypes,\n children,\n}: PropsWithChildren<{\n report: ReportConfigV2;\n reportValueTypes: ReportValueTypesReponse | undefined;\n}>) => {\n const displayedColumnsConfig = useMemo(() => {\n const columns = [\n ...(report.request.rowGroupings?.map((c) => c.columnName) ?? []),\n ...(report.request.aggregations?.map((c) => c.columnName) ?? []),\n ];\n\n return columns.map((columnId) =>\n listingReportV2TableColumnDef(\n columnId as ListingReportTableColumnId,\n reportValueTypes?.[columnId.toUpperCase()]\n )\n );\n }, [\n report.request.aggregations,\n report.request.rowGroupings,\n reportValueTypes,\n ]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useListingReportTableColumnDefV2 = () =>\n useContext(ListingReportTableColumnDefContext);\n","import {\n functionalUpdate,\n PaginationState,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useActiveSortTableColumnContext } from 'src/contexts/ActiveSortTableColumnContext';\nimport { ColumnResizingContextProvider } from 'src/contexts/ColumnResizingContext/ColumnResizingContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n ReportMetricsResponse,\n useReportMetricsContextV2,\n} from 'src/contexts/ReportMetricsContext/ReportMetricsContextV2';\nimport { NoData, Table, VirtuosoScrollEvent } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { ReportTableV2Props } from '../ReportTableCommon/ReportTableCommon.types';\nimport {\n ListingReportTableColumnDefContextProviderV2,\n useListingReportTableColumnDefV2,\n} from './ListingReportTableColumnDefContextV2';\n\nexport const ListingReportTableV2 = ({\n report,\n reportValueTypes,\n ...rest\n}: ReportTableV2Props) => {\n return (\n \n \n \n );\n};\n\nconst ListingReportTableInternal = ({\n metricsData,\n summaryData,\n report,\n onMount,\n onUnmount,\n initState,\n className,\n}: ReportTableV2Props) => {\n const {\n isFetchingNextPage,\n fetchNextPage,\n hasNextPage,\n isReportConfigEmpty,\n } = useReportMetricsContextV2();\n\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const { activeSortTableColumn, setActiveSortTableColumn } =\n useActiveSortTableColumnContext();\n const [sorting, setSorting] = useState(\n activeSortTableColumn || initState?.sorting || []\n );\n\n const data = useMemo(() => {\n const shimmeringDivCount = 500;\n return metricsData ?? Array(shimmeringDivCount).fill(null);\n }, [metricsData]);\n\n const [pagination, setPagination] = useState({\n pageIndex: 0,\n pageSize: Math.max(1, data.length),\n });\n\n useEffect(() => {\n if (pagination.pageSize !== data.length) {\n setPagination((prevState) => ({\n ...prevState,\n pageSize: data.length,\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data, report]);\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n const { displayedColumnsConfig = [] } = useListingReportTableColumnDefV2();\n\n const onScroll = useCallback(\n (virtuosoScrollEvent: VirtuosoScrollEvent) => {\n const { element } = virtuosoScrollEvent;\n const { scrollHeight, scrollTop, clientHeight } = element;\n // once the user has scrolled within 500px of the bottom of the table, fetch more data if we can\n // TODO change this to constant\n if (\n scrollHeight - scrollTop - clientHeight < 500 &&\n !isFetchingNextPage &&\n hasNextPage\n ) {\n fetchNextPage();\n }\n },\n [fetchNextPage, hasNextPage, isFetchingNextPage]\n );\n\n const options: Partial> = useMemo(\n () => ({\n data,\n meta: {\n summaryData,\n },\n columns: displayedColumnsConfig,\n state: {\n pagination,\n sorting,\n },\n onPaginationChange: setPagination,\n onSortingChange: (sortingUpdaterFn) => {\n const newSortVal = functionalUpdate(sortingUpdaterFn, sorting);\n setSorting(newSortVal);\n setActiveSortTableColumn(newSortVal);\n },\n enableRowSelection: true,\n }),\n [\n data,\n summaryData,\n displayedColumnsConfig,\n pagination,\n sorting,\n setActiveSortTableColumn,\n ]\n );\n\n return isReportConfigEmpty ? (\n <>\n ) : data?.length > 0 ? (\n \n \n \n ) : (\n \n \n \n );\n};\n\nexport default ListingReportTableV2;\n","import { useReportMetricsContextV2 } from 'src/contexts/ReportMetricsContext/ReportMetricsContextV2';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { ListingReportTableV2 } from 'src/tables/ListingTable/ListingReportTableV2';\n\nimport { ReportsPageLayout } from '../Reports/ReportsPageLayout';\nimport * as styles from './ReportsInventoryPage.css';\n\nexport function ReportsInventoryPageV2({\n reportConfig,\n}: {\n reportConfig: ReportConfigV2;\n}) {\n const { reportMetrics, reportSummary, reportValueTypes } =\n useReportMetricsContextV2();\n\n return (\n \n }\n />\n );\n}\n","import { useLocation, useParams } from 'react-router-dom';\nimport { ReportsInventoryPageV2 } from 'src/components/ReportsInventoryPage/ReportsInventoryPageV2';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useReportConfigsV2 } from 'src/hooks/useReportConfigsV2';\nimport { useReportPermissions } from 'src/hooks/useReportPermissions';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ReportTypesV2 } from 'src/utils/reportsUtils';\n\nimport { MainRoute } from '../MainRoute';\nimport { ReportsInventoryContextProviderV2 } from './ReportsInventoryContextProviderV2';\n\nexport function ReportsInventoryV2() {\n const { hasAccessToReportingV2, hasReportSinglePagedV1V2Feature } =\n useReportPermissions();\n\n const location = useLocation();\n\n const isFromV1Page = location.state?.isFromV1Page === true;\n\n const mainRoute =\n !hasAccessToReportingV2 || isFromV1Page || hasReportSinglePagedV1V2Feature\n ? MainRoute.Reports\n : MainRoute.ReportsV2;\n\n return (\n \n \n \n );\n}\n\nfunction ReportsInventoryContentV2() {\n const { reportId } = useParams();\n\n const { reportConfigs, isLoading, isFetching } =\n useReportConfigsV2({\n reportType: ReportTypesV2.InventoryV2,\n });\n\n const reportConfig = reportConfigs?.find(\n (r) => r.reportId?.toString() === reportId\n );\n\n if (reportConfig == null) {\n return isLoading || isFetching ? (\n \n ) : (\n \n }\n />\n \n );\n }\n\n return (\n \n \n \n \n \n );\n}\n","import {\n functionalUpdate,\n PaginationState,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useEffect, useMemo, useState } from 'react';\nimport { ReportsMaxSizeMessage } from 'src/components/Reports/ReportsMaxSizeMessage';\nimport { useActiveSortTableColumnContext } from 'src/contexts/ActiveSortTableColumnContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { ColumnResizingContextProvider } from 'src/contexts/ColumnResizingContext/ColumnResizingContext';\nimport { useReportMetricsContext } from 'src/contexts/ReportMetricsContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\nimport { Table } from 'src/tables/Table';\nimport { SaleReportMetricsWithGroupBy } from 'src/utils/reportsUtils';\nimport {\n ReportGroupBy,\n SaleQuery,\n SaleReportMetrics,\n UserSetting,\n} from 'src/WebApiController';\n\nimport TableStateWrapper from '../Table/TableStateWrapper';\nimport { SaleReportTableProps } from './SaleReportTable.types';\nimport {\n SaleReportTableColumnDefContextProvider,\n useSaleReportTableColumnDef,\n} from './SaleReportTableColumnDefContext';\n\nexport const SaleReportTable = ({ report, ...rest }: SaleReportTableProps) => {\n return (\n \n \n \n );\n};\n\nconst SaleReportTableInternal = ({\n metricsData,\n summaryData,\n totalCount,\n report,\n refreshMetrics,\n onMount,\n onUnmount,\n initState,\n className,\n}: SaleReportTableProps) => {\n const { data: catalogData } = useCatalogDataContext();\n const { hasTimeout: metricsHasTimeout, hasUnknownError: metricsHasError } =\n useReportMetricsContext();\n\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const { activeSortTableColumn, setActiveSortTableColumn } =\n useActiveSortTableColumnContext();\n const [sorting, setSorting] = useState(\n activeSortTableColumn || initState?.sorting || []\n );\n\n const data = useMemo(() => {\n const performerCount = Object.keys(catalogData?.performers ?? {}).length;\n const venueCount = Object.keys(catalogData?.venues ?? {}).length;\n const eventCount = Object.keys(catalogData?.events ?? {}).length;\n\n const shimmeringDivCount =\n report.groupBy === ReportGroupBy.Performer\n ? performerCount\n : report.groupBy === ReportGroupBy.Venue\n ? venueCount\n : eventCount;\n return metricsData ?? Array(shimmeringDivCount).fill(null);\n }, [\n catalogData?.events,\n catalogData?.performers,\n catalogData?.venues,\n metricsData,\n report.groupBy,\n ]);\n\n const disablePagination = report.numberOfItemsPerPage == null;\n\n const [pagination, setPagination] = useState({\n pageIndex: 0,\n pageSize: Math.max(\n 1,\n disablePagination ? data.length : report.numberOfItemsPerPage!\n ),\n });\n\n useEffect(() => {\n if (disablePagination) {\n if (pagination.pageSize !== data.length) {\n setPagination((prevState) => ({\n ...prevState,\n pageSize: data.length,\n }));\n }\n } else {\n setPagination((prevState) => ({\n ...prevState,\n pageSize: report.numberOfItemsPerPage!,\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data, report]);\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n const { displayedColumnsConfig = [], isLoading: tableColumnIsLoading } =\n useSaleReportTableColumnDef();\n\n const options: Partial> =\n useMemo(\n () => ({\n data,\n columns: displayedColumnsConfig,\n meta: {\n summaryData,\n },\n state: {\n pagination,\n sorting,\n },\n onPaginationChange: setPagination,\n onSortingChange: (sortingUpdaterFn) => {\n const newSortVal = functionalUpdate(sortingUpdaterFn, sorting);\n setSorting(newSortVal);\n setActiveSortTableColumn(newSortVal);\n },\n enableRowSelection: true,\n }),\n [\n data,\n displayedColumnsConfig,\n summaryData,\n pagination,\n sorting,\n setActiveSortTableColumn,\n ]\n );\n\n if (tableColumnIsLoading) {\n return ;\n }\n\n return (\n \n isLoading={tableColumnIsLoading || false}\n hasError={metricsHasError || false}\n hasTimeout={metricsHasTimeout || false}\n hasData={data?.length > 0}\n >\n \n refreshMetrics(true)}\n />\n \n \n \n \n \n );\n};\n\nexport default SaleReportTable;\n","import { useMemo } from 'react';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useReportMetricsContext } from 'src/contexts/ReportMetricsContext';\nimport { PosFloatingSpinner } from 'src/core/POS/PosFloatingSpinner';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { ReportConfig } from 'src/hooks/useReportConfigs';\nimport SaleReportTable from 'src/tables/SalesTable/SaleReportTable';\nimport { GROUP_BY_TO_PRIMARY_COLUMN_ID } from 'src/utils/columns/sales/salesReportColumnUtils.constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SaleReportMetricsWithGroupBy } from 'src/utils/reportsUtils';\nimport { SaleReportMetrics } from 'src/WebApiController';\n\nimport { ReportsFilterToolbar } from '../Reports/ReportsFilterToolbar';\nimport * as styles from './ReportsSalePage.css';\nimport {\n mapReportMetrics,\n mapReportMetricsSummary,\n} from './ReportsSalePage.utils';\n\nexport function ReportsSalePage({\n reportConfig,\n}: {\n reportConfig: ReportConfig;\n}) {\n const {\n reportMetrics,\n reportSummary,\n totalCount,\n isLoading,\n isRefreshing,\n refreshMetrics,\n } = useReportMetricsContext();\n const { data, eventsTransformed } = useCatalogDataContext();\n\n const reportMetricsMapped: SaleReportMetricsWithGroupBy[] | undefined =\n useMemo(\n () => mapReportMetrics(reportMetrics, eventsTransformed, data),\n [data, eventsTransformed, reportMetrics]\n );\n\n const reportSummaryMapped: SaleReportMetricsWithGroupBy | undefined = useMemo(\n () =>\n mapReportMetricsSummary(reportConfig, reportSummary, reportMetricsMapped),\n [reportConfig, reportMetricsMapped, reportSummary]\n );\n\n const initSorting = useMemo(() => {\n const sortBy =\n reportConfig.sortBy ??\n GROUP_BY_TO_PRIMARY_COLUMN_ID[reportConfig.groupBy];\n\n return [\n {\n id: sortBy,\n desc: reportConfig.isSortDescending ?? false,\n },\n ];\n }, [\n reportConfig.groupBy,\n reportConfig.isSortDescending,\n reportConfig.sortBy,\n ]);\n\n return (\n
    \n {reportConfig.reportName && (\n

    {reportConfig.reportName}

    \n )}\n \n {isLoading || !reportConfig ? (\n \n ) : (\n
    \n \n {isRefreshing && (\n }\n />\n )}\n
    \n )}\n
    \n );\n}\n","import { useMemo } from 'react';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { ReportsPageToolbar } from 'src/components/Reports/ReportsPageToolbar';\nimport { ReportsSalePage } from 'src/components/ReportsSalePage';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useReportConfigs } from 'src/hooks/useReportConfigs';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ReportTypes } from 'src/utils/reportsUtils';\n\nimport { MainRoute } from '../MainRoute';\nimport { ReportsSaleContextProvider } from './ReportsSaleContextProvider';\n\nexport function ReportsSale() {\n return (\n \n \n \n );\n}\n\nfunction ReportsSaleContent() {\n const { reportId } = useParams();\n const location = useLocation();\n\n const { reportConfigs, isLoading } = useReportConfigs({\n reportType: ReportTypes.Sale,\n });\n\n const reportConfig = reportConfigs?.find(\n (r) => r.reportId?.toString() === reportId\n );\n\n // Only use value provided at the first time (should be from '/reports')\n const returnUrl = useMemo(() => {\n return (location.state as { returnUrl?: string })?.returnUrl;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (reportConfig == null) {\n return isLoading ? (\n \n ) : (\n \n }\n />\n \n );\n }\n\n return (\n \n \n \n \n \n \n );\n}\n","import { createColumnHelper } from '@tanstack/react-table';\nimport { formatInTimeZone } from 'date-fns-tz';\nimport {\n COLUMN_MAX_SIZE,\n COLUMN_MIN_SIZE,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport {\n COLUMN_DEFAULT_SIZE_BASE,\n COLUMN_DEFAULT_SIZE_LG,\n COLUMN_DEFAULT_SIZE_XL,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ReportMetricsResponse } from 'src/contexts/ReportMetricsContext/ReportMetricsContextV2';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { useColumnUserSetting } from 'src/hooks/useColumnUserSetting';\nimport { FormatOption } from 'src/modals/EditTableColumns';\nimport { createInventoryEventUrl } from 'src/navigations/Routes/InventoryEvent/InventoryEvent.utils';\nimport { defaultColumnHelperAccessor } from 'src/tables/ReportTableCommon/DefaultColumnHelperAccessor';\nimport { LinkCell } from 'src/tables/ReportTableCommon/LinkCell';\nimport { SHIMMERING_DIV_HEIGHT_REPORT } from 'src/tables/ReportTableCommon/ReportTableCommon.constants';\nimport { TableHeader } from 'src/tables/ReportTableCommon/TableHeader';\nimport { TextCell } from 'src/tables/ReportTableCommon/TextCell';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\nimport { DateCell } from 'src/tables/Table/TableCells';\nimport { InHandCell } from 'src/tables/Table/TableCells';\nimport {\n SalesReportTableGroupingColumnId,\n SalesReportTableValueColumnId,\n} from 'src/utils/columns/sales/salesColumnUtils.types';\nimport {\n SALES_REPORT_TABLE_GROUPING_COLUMN_ID_TO_CONTENT_ID,\n SALES_REPORT_TABLE_VALUE_COLUMN_ID_TO_CONTENT_ID,\n} from 'src/utils/constants/contentIdMaps';\nimport { getSaleDetailsRelativeUrl } from 'src/utils/saleUtils';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { PointOfSaleSaleStatus, ReportValueType } from 'src/WebApiController';\n\nconst SECTION_TYPE = SectionType.SalesReport;\n\nconst columnHelper = createColumnHelper();\n\nconst accessorFn = (columnId: SalesReportTableGroupingColumnId) => {\n return (data: ReportMetricsResponse | null) =>\n data?.[columnId.toUpperCase()] ?? '';\n};\n\nconst SALE_REPORT_SPECIAL_TABLE_COLUMNS_CONFIG = {\n [SalesReportTableGroupingColumnId.SaleMonth]: columnHelper.accessor(\n accessorFn(SalesReportTableGroupingColumnId.SaleMonth),\n {\n id: SalesReportTableGroupingColumnId.SaleMonth,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n if (!original) {\n return ;\n }\n\n const dateValue = getValue();\n\n return (\n \n
    \n {/* Already converted to account timezone */}\n {dateValue\n ? formatInTimeZone(new Date(dateValue), 'UTC', 'MMMM yyyy')\n : ''}\n
    \n
    \n );\n },\n }\n ),\n [SalesReportTableGroupingColumnId.SaleWeek]: columnHelper.accessor(\n accessorFn(SalesReportTableGroupingColumnId.SaleWeek),\n {\n id: SalesReportTableGroupingColumnId.SaleWeek,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n if (!original) {\n return ;\n }\n\n const dateValue = getValue();\n\n const dateEndOfWeek = dateValue ? new Date(dateValue) : null;\n if (dateEndOfWeek) {\n dateEndOfWeek.setDate(dateEndOfWeek.getDate() + 6);\n }\n\n return (\n \n
    \n {/* Already converted to account timezone */}\n {dateValue && dateEndOfWeek\n ? formatInTimeZone(new Date(dateValue), 'UTC', 'yyyy/MM/dd') +\n ' - ' +\n formatInTimeZone(dateEndOfWeek, 'UTC', 'yyyy/MM/dd')\n : ''}\n
    \n
    \n );\n },\n }\n ),\n [SalesReportTableGroupingColumnId.SaleDay]: columnHelper.accessor(\n accessorFn(SalesReportTableGroupingColumnId.SaleDay),\n {\n id: SalesReportTableGroupingColumnId.SaleDay,\n header: (params) => (\n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n if (!original) {\n return ;\n }\n\n const dateValue = getValue();\n\n return (\n \n
    \n {/* Already converted to account timezone */}\n {dateValue\n ? formatInTimeZone(new Date(dateValue), 'UTC', 'yyyy/MM/dd')\n : ''}\n
    \n
    \n );\n },\n }\n ),\n [SalesReportTableGroupingColumnId.EventId]: columnHelper.accessor(\n accessorFn(SalesReportTableGroupingColumnId.EventId),\n {\n id: SalesReportTableGroupingColumnId.EventId,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: (params) => {\n const eventId = params.row.original?.eventId;\n if (!eventId) {\n return ;\n }\n const eventUrl = createInventoryEventUrl(eventId);\n return (\n \n );\n },\n }\n ),\n [SalesReportTableGroupingColumnId.LocalEventDateTime]: columnHelper.accessor(\n accessorFn(SalesReportTableGroupingColumnId.LocalEventDateTime),\n {\n id: SalesReportTableGroupingColumnId.LocalEventDateTime,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({\n getValue,\n row: { original },\n column: { id: columnId },\n }) {\n const value = getValue();\n const { userDefinedPrecision = FormatOption.DateTime_MMDD_Time_Day } =\n useColumnUserSetting(columnId, SECTION_TYPE);\n\n if (!original) {\n return ;\n }\n const dateValue = value ? new Date(value).toISOString() : value;\n\n return (\n \n );\n },\n }\n ),\n [SalesReportTableGroupingColumnId.SaleId]: columnHelper.accessor(\n accessorFn(SalesReportTableGroupingColumnId.SaleId),\n {\n id: SalesReportTableGroupingColumnId.SaleId,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue }) => {\n const saleId = getValue();\n\n if (!saleId) {\n return ;\n }\n\n const url = getSaleDetailsRelativeUrl(saleId!);\n return (\n \n );\n },\n }\n ),\n [SalesReportTableGroupingColumnId.InHandDate]: columnHelper.accessor(\n accessorFn(SalesReportTableGroupingColumnId.InHandDate),\n {\n id: SalesReportTableGroupingColumnId.InHandDate,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue();\n if (!original) {\n return ;\n }\n return (\n \n \n \n );\n },\n sortingFn: 'datetime',\n }\n ),\n} as const;\n\nexport const saleReportV2TableColumnDef = (\n columnId: string,\n valueType: ReportValueType | undefined\n) => {\n const specialConfig = Object.entries(\n SALE_REPORT_SPECIAL_TABLE_COLUMNS_CONFIG\n ).find(([key]) => key === columnId)?.[1];\n\n if (specialConfig) {\n return specialConfig;\n }\n\n const headerContentId =\n SALES_REPORT_TABLE_GROUPING_COLUMN_ID_TO_CONTENT_ID[\n columnId as SalesReportTableGroupingColumnId\n ] ??\n SALES_REPORT_TABLE_VALUE_COLUMN_ID_TO_CONTENT_ID[\n columnId as SalesReportTableValueColumnId\n ];\n\n return defaultColumnHelperAccessor(\n columnHelper,\n columnId,\n headerContentId,\n valueType\n );\n};\n","import { ColumnDef } from '@tanstack/react-table';\nimport { createContext, PropsWithChildren, useContext, useMemo } from 'react';\nimport {\n ReportMetricsResponse,\n ReportValueTypesReponse,\n} from 'src/contexts/ReportMetricsContext/ReportMetricsContextV2';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport { SalesReportTableColumnId } from 'src/utils/columns/sales/salesColumnUtils.types';\n\nimport { saleReportV2TableColumnDef } from './configs/SaleReportTableColumnsConfigV2';\n\ntype SaleReportTableColumnDefContextType = {\n displayedColumnsConfig: ColumnDef[] | undefined;\n};\n\nconst SaleReportTableColumnDefContext =\n createContext({\n displayedColumnsConfig: undefined,\n });\n\nexport const SaleReportTableColumnDefContextProviderV2 = ({\n report,\n reportValueTypes,\n children,\n}: PropsWithChildren<{\n report: ReportConfigV2;\n reportValueTypes: ReportValueTypesReponse | undefined;\n}>) => {\n const displayedColumnsConfig = useMemo(() => {\n const columns = [\n ...(report.request.rowGroupings?.map((c) => c.columnName) ?? []),\n ...(report.request.aggregations?.map((c) => c.columnName) ?? []),\n ];\n\n return columns.map((columnId) =>\n saleReportV2TableColumnDef(\n columnId as SalesReportTableColumnId,\n reportValueTypes?.[columnId.toUpperCase()]\n )\n );\n }, [\n report.request.aggregations,\n report.request.rowGroupings,\n reportValueTypes,\n ]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useSaleReportTableColumnDefV2 = () =>\n useContext(SaleReportTableColumnDefContext);\n","import {\n functionalUpdate,\n PaginationState,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useActiveSortTableColumnContext } from 'src/contexts/ActiveSortTableColumnContext';\nimport { ColumnResizingContextProvider } from 'src/contexts/ColumnResizingContext/ColumnResizingContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n ReportMetricsResponse,\n useReportMetricsContextV2,\n} from 'src/contexts/ReportMetricsContext/ReportMetricsContextV2';\nimport { NoData, Table, VirtuosoScrollEvent } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { ReportTableV2Props } from '../ReportTableCommon/ReportTableCommon.types';\nimport {\n SaleReportTableColumnDefContextProviderV2,\n useSaleReportTableColumnDefV2,\n} from './SaleReportTableColumnDefContextV2';\n\nexport const SaleReportTableV2 = ({\n report,\n reportValueTypes,\n ...rest\n}: ReportTableV2Props) => {\n return (\n \n \n \n );\n};\n\nconst SaleReportTableInternal = ({\n metricsData,\n summaryData,\n report,\n onMount,\n onUnmount,\n initState,\n className,\n}: ReportTableV2Props) => {\n const {\n isFetchingNextPage,\n fetchNextPage,\n hasNextPage,\n isReportConfigEmpty,\n } = useReportMetricsContextV2();\n\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const { activeSortTableColumn, setActiveSortTableColumn } =\n useActiveSortTableColumnContext();\n const [sorting, setSorting] = useState(\n activeSortTableColumn || initState?.sorting || []\n );\n\n const data = useMemo(() => {\n const shimmeringDivCount = 500;\n return metricsData ?? Array(shimmeringDivCount).fill(null);\n }, [metricsData]);\n\n const [pagination, setPagination] = useState({\n pageIndex: 0,\n pageSize: Math.max(1, data.length),\n });\n\n useEffect(() => {\n if (pagination.pageSize !== data.length) {\n setPagination((prevState) => ({\n ...prevState,\n pageSize: data.length,\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data, report]);\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n const { displayedColumnsConfig = [] } = useSaleReportTableColumnDefV2();\n\n const onScroll = useCallback(\n (virtuosoScrollEvent: VirtuosoScrollEvent) => {\n const { element } = virtuosoScrollEvent;\n const { scrollHeight, scrollTop, clientHeight } = element;\n // once the user has scrolled within 500px of the bottom of the table, fetch more data if we can\n // TODO change this to constant\n if (\n scrollHeight - scrollTop - clientHeight < 500 &&\n !isFetchingNextPage &&\n hasNextPage\n ) {\n fetchNextPage();\n }\n },\n [fetchNextPage, hasNextPage, isFetchingNextPage]\n );\n\n const options: Partial> = useMemo(\n () => ({\n data,\n meta: {\n summaryData,\n },\n columns: displayedColumnsConfig,\n state: {\n pagination,\n sorting,\n },\n onPaginationChange: setPagination,\n onSortingChange: (sortingUpdaterFn) => {\n const newSortVal = functionalUpdate(sortingUpdaterFn, sorting);\n setSorting(newSortVal);\n setActiveSortTableColumn(newSortVal);\n },\n enableRowSelection: true,\n }),\n [\n data,\n summaryData,\n displayedColumnsConfig,\n pagination,\n sorting,\n setActiveSortTableColumn,\n ]\n );\n\n return isReportConfigEmpty ? (\n <>\n ) : data?.length > 0 ? (\n \n \n \n ) : (\n \n \n \n );\n};\n\nexport default SaleReportTableV2;\n","import { useReportMetricsContextV2 } from 'src/contexts/ReportMetricsContext/ReportMetricsContextV2';\nimport { ReportConfigV2 } from 'src/hooks/useReportConfigsV2';\nimport SaleReportTableV2 from 'src/tables/SalesTable/SaleReportTableV2';\n\nimport { ReportsPageLayout } from '../Reports/ReportsPageLayout';\nimport * as styles from './ReportsSalePage.css';\n\nexport function ReportsSalePageV2({\n reportConfig,\n}: {\n reportConfig: ReportConfigV2;\n}) {\n const { reportMetrics, reportSummary, isLoading, reportValueTypes } =\n useReportMetricsContextV2();\n\n return (\n \n }\n />\n );\n}\n","import { useLocation, useParams } from 'react-router-dom';\nimport { ReportsSalePageV2 } from 'src/components/ReportsSalePage/ReportsSalePageV2';\nimport { Content } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useReportConfigsV2 } from 'src/hooks/useReportConfigsV2';\nimport { useReportPermissions } from 'src/hooks/useReportPermissions';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ReportTypesV2 } from 'src/utils/reportsUtils';\n\nimport { MainRoute } from '../MainRoute';\nimport { ReportsSaleContextProviderV2 } from './ReportsSaleContextProviderV2';\n\nexport function ReportsSaleV2() {\n const { hasAccessToReportingV2, hasReportSinglePagedV1V2Feature } =\n useReportPermissions();\n\n const location = useLocation();\n\n const isFromV1Page = location.state?.isFromV1Page === true;\n\n const mainRoute =\n !hasAccessToReportingV2 || isFromV1Page || hasReportSinglePagedV1V2Feature\n ? MainRoute.Reports\n : MainRoute.ReportsV2;\n\n return (\n \n \n \n );\n}\n\nfunction ReportsSaleContentV2() {\n const { reportId } = useParams();\n\n const { reportConfigs, isLoading, isFetching } =\n useReportConfigsV2({\n reportType: ReportTypesV2.SaleV2,\n });\n\n const reportConfig = reportConfigs?.find(\n (r) => r.reportId?.toString() === reportId\n );\n\n if (reportConfig == null) {\n return isLoading || isFetching ? (\n \n ) : (\n \n }\n />\n \n );\n }\n\n return (\n \n \n \n \n \n );\n}\n","import { EntitySearchFilterBar } from 'src/components/EntitySearch';\nimport { FilterDropdownItem } from 'src/components/Filters';\nimport { useSaleFilters } from 'src/components/MainFilterBar';\nimport { SaleQuery, SaleSearchResult } from 'src/WebApiController';\n\nexport const SaleSearchFilterBar = (props: {\n activeSearchConfig?: SaleSearchResult;\n onSubmitFilter?: (query: SaleQuery) => void;\n selectedFilters?: FilterDropdownItem[];\n setSelectedFilters: (sf: FilterDropdownItem[]) => void;\n}) => {\n const { filters } = useSaleFilters({\n showCatalogFilters: true,\n isHorizontalLayout: true,\n });\n\n return (\n \n );\n};\n","import { MouseEvent } from 'react';\nimport { useToggle } from 'react-use';\nimport { MultiSelectActionBar } from 'src/components/common/MultiSelect/MultiSelectActionBar';\nimport { SetSalesFlattenedViewSelectionCountLabel } from 'src/components/Events/EventListing/SalesEventListing/SetSalesFlattenedViewSelectionCountLabel';\nimport { SalesBulkActionsPermissions } from 'src/components/Sales/BulkActions/SalesBulkActionsPermissions';\nimport { SalesGlobalBulkActions } from 'src/components/Sales/BulkActions/SalesGlobalBulkActions/SalesGlobalBulkActions';\nimport { Content } from 'src/contexts/ContentContext';\nimport { NO_GROUP_ID } from 'src/contexts/MultiSelectionContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { ColumnSettingsModal } from 'src/modals/ColumnSettings/ColumnSettings';\nimport { LayoutIcon } from 'src/svgs';\nimport { CustomSalesColumn } from 'src/utils/columns/sales/salesCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { SaleSearchResult } from 'src/WebApiController';\n\nimport { container } from './SaleSearchToolbar.css';\n\nexport const SaleSearchToolbar = ({\n disabled,\n}: {\n disabled?: boolean;\n setDisabled?: (d: boolean) => void;\n activeSearchConfig?: SaleSearchResult;\n}) => {\n const [isColumnModalOpen, toggleColumnModal] = useToggle(false);\n\n const onColumnSettingButtonClickHandler = (\n e: MouseEvent\n ) => {\n e.stopPropagation();\n if (!isColumnModalOpen) toggleColumnModal(true);\n };\n\n return (\n \n
    \n \n \n {!disabled && (\n \n \n \n )}\n \n \n
    \n\n \n \n \n \n \n \n {isColumnModalOpen ? (\n \n onClose={toggleColumnModal}\n sectionType={SectionType.SalesFlattened}\n showTicketClassColor\n />\n ) : null}\n \n );\n};\n","import { useCallback, useMemo, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n EntitySearchConfigsToolbar,\n EntitySearchRefetcher,\n useEntitySearch,\n} from 'src/components/EntitySearch';\nimport { SalesFlattenedView } from 'src/components/Events/EventListing/SalesEventListing/SalesFlattenedView';\nimport { SaleSearchBox } from 'src/components/Sales/SaleFilterBar/SaleSearchBox';\nimport { ActivePosEntityProvider } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n CatalogDataContextProvider,\n useCatalogDataContext,\n} from 'src/contexts/CatalogDataContext';\nimport { CatalogMultiSelectionContextProvider } from 'src/contexts/CatalogMultiSelectionContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { FilterQueryContextProvider } from 'src/contexts/FilterQueryContext';\nimport {\n MultiSelectionContextProvider,\n MultiSelectScope,\n NO_GROUP_ID,\n} from 'src/contexts/MultiSelectionContext';\nimport { SellerUserSettingsProvider } from 'src/contexts/SellerUserSettingsContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { DividerLine } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { SaleDeeplinkQueryParam } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { removeDeepLinkUrlPartsFromRelativeUrl } from 'src/utils/deepLinkUtils';\nimport { DefaultSaleQuery, EmptySaleQuery } from 'src/utils/eventQueryUtils';\nimport { transformData } from 'src/utils/eventWithDataUtils';\nimport { EventPageLocationState } from 'src/utils/types/EventPageLocationState';\nimport { SomethingWentWrong } from 'src/views';\nimport {\n ActionOutboxEntityType,\n CatalogClient,\n CatalogResults,\n Feature,\n SaleClient,\n SaleDetails,\n SaleQuery,\n SaleSearchResult,\n SalesViewMode,\n} from 'src/WebApiController';\n\nimport { getDefaultReturnUrl } from '../InventoryEvent/constants';\nimport {\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n TAB_EVENT_IDS_2_QUERY_PARAM,\n TAB_EVENT_IDS_QUERY_PARAM,\n} from '../InventoryEvent/InventoryEvent.constants';\nimport { MainRoute } from '../MainRoute';\nimport {\n getCatalogData,\n getCatalogDataExpanded,\n SALE_USER_SETTINGS,\n salesQueryValueTransformFromUrl,\n salesQueryValueTransformToUrl,\n} from '../Sales/Sales';\nimport * as styles from './SaleSearch.css';\nimport { SaleSearchFilterBar } from './SaleSearchFilterBar';\nimport { SaleSearchToolbar } from './SaleSearchToolbar';\n\nexport function SaleSearch() {\n return (\n \n \n initialQuery={{\n ...DefaultSaleQuery,\n viewMode: SalesViewMode.FlattenedView,\n }}\n emptyQuery={EmptySaleQuery}\n queryValueTransformToUrl={salesQueryValueTransformToUrl}\n queryValueTransformFromUrl={salesQueryValueTransformFromUrl}\n saveQueryInUrl\n >\n \n \n \n );\n}\n\nfunction SaleSearchPage() {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n const [activeSearchConfig, setActiveSearchConfig] =\n useState();\n\n const getCatalogDataExpandedCallback = useCallback(\n (ids: string[], f: SaleQuery) => {\n // Check to see if if is empty filter, query\n if (\n activeSearchConfig == null || // do not start query for items if there is no activeSearchConfig\n (f.searchConfigId && !f.entityIds?.length) // we don't want to query when the filter has the search config id but no entity ids\n ) {\n return Promise.resolve({});\n }\n\n // If we're querying by ids - we want to get the latest greatest\n // We're only using readonly-db if we're filtering\n const useReadOnlyDb = f.entityIds?.length ? false : true;\n return getCatalogDataExpanded(ids, f, useReadOnlyDb, {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError('SaleClient.getSalesForEvents', error, {\n ...f,\n eventIds: ids,\n });\n },\n });\n },\n [activeAccountWebClientConfig, activeSearchConfig, trackError]\n );\n\n const getCatalogDataCallback = useCallback(\n async (c: CatalogClient, f: SaleQuery) => {\n // Check to see if if is empty filter, query\n if (\n f.searchConfigId &&\n !f.entityIds?.length // we don't want to query when the filter has the search config id but no entity ids\n ) {\n // If there is no filter (empty query) then don't try to query for anything\n return {\n events: {},\n performers: {},\n venues: {},\n venueCfgs: {},\n } as CatalogResults;\n }\n\n return await getCatalogData(c, f, true);\n },\n []\n );\n\n return (\n \n entityType={ActionOutboxEntityType.Sale}\n queryKey=\"getCatalogForSaleOrders\"\n getCatalogData={getCatalogDataCallback}\n getCatalogDataExpanded={getCatalogDataExpandedCallback}\n transformEventData={transformData}\n disableAutoRefresh\n ignoreMaxCount\n >\n \n \n \n \n \n \n );\n}\n\nfunction SaleSearchContent({\n activeSearchConfig,\n setActiveSearchConfig,\n}: {\n activeSearchConfig: SaleSearchResult | undefined;\n setActiveSearchConfig: (a: SaleSearchResult | undefined) => void;\n}) {\n const searchTitle = useContent(ContentId.SearchSales);\n const hasColumnFilterSearchViewFeature = useUserHasFeature(\n Feature.ColumnFilterSearchView\n );\n\n const { activeAccountWebClientConfig } = useAppContext();\n const location = useLocation();\n const {\n errorInfo,\n isLoading: isCatalogDataLoading,\n isItemsLoading,\n eventsTransformed,\n } = useCatalogDataContext();\n\n const {\n selectedFilters,\n setSelectedFilters,\n onSetActiveSearchConfig,\n onSaveSearchResult,\n onDeleteSearchResult,\n onRequeryForTheResult,\n refetchData,\n disabled,\n setDisabled,\n } = useEntitySearch(\n activeSearchConfig,\n setActiveSearchConfig,\n SalesViewMode.FlattenedView,\n (client, id) => client.getSaleSearchResult(id),\n (client, r) => client.saveSaleSearchResult(r)\n );\n\n // Only use value provided at the first time (should be from '/purchases')\n const returnUrl = useMemo(() => {\n const locationState = (location.state ?? {}) as EventPageLocationState;\n\n if (locationState.returnUrl && locationState.keepReturnUrlUnchanged) {\n return locationState.returnUrl;\n }\n\n const relativeUrl =\n locationState.returnUrl || getDefaultReturnUrl('purchases');\n\n return removeDeepLinkUrlPartsFromRelativeUrl(relativeUrl, [\n SaleDeeplinkQueryParam,\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n TAB_EVENT_IDS_QUERY_PARAM,\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n TAB_EVENT_IDS_2_QUERY_PARAM,\n ]);\n }, [location.state]);\n\n const getActivePosEntity = useCallback(\n async (saleId: number) => {\n const saleDetails = await new SaleClient(\n activeAccountWebClientConfig\n ).getSaleBySaleId(saleId);\n if (saleDetails) {\n return {\n posEntityId: saleDetails.id,\n posEntity: saleDetails,\n event: null,\n posEntityDisplayId: saleDetails.id.toString(),\n };\n }\n\n return {};\n },\n [activeAccountWebClientConfig]\n );\n\n const dataIsLoading = isCatalogDataLoading;\n\n return (\n \n entityType={ActionOutboxEntityType.Sale}\n getActivePosEntity={getActivePosEntity}\n >\n \n \n }\n >\n \n client.getSaleSearchConfigs(includeAllUser)\n }\n getSearchResult={(client, id) => client.getSaleSearchResult(id)}\n additionalActions={}\n />\n \n {\n if (!activeSearchConfig) {\n // Setting an empty search config so it starts to filter\n onSetActiveSearchConfig({\n id: null,\n name: null,\n query: filter,\n ownerUserId: null,\n count: null,\n entityIds: null,\n lastFetchDate: null,\n });\n }\n refetchData(filter);\n }}\n />\n \n \n \n
    \n {errorInfo && (\n \n )\n }\n />\n )}\n {(dataIsLoading || isItemsLoading) && !eventsTransformed?.length ? (\n \n ) : (\n \n )}\n
    \n \n
    \n \n );\n}\n","import clsx from 'clsx';\nimport { Dispatch, SetStateAction, useCallback } from 'react';\nimport { useToggle } from 'react-use';\nimport { EventAccordionItemProps } from 'src/components/Accordions';\nimport { useCollapsableViewContext } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n MultiSelectScope,\n useMultiSelectionContext,\n} from 'src/contexts/MultiSelectionContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ColumnSettingsModal } from 'src/modals/ColumnSettings/ColumnSettings';\nimport { LayoutIcon } from 'src/svgs';\nimport { CustomSalesColumn } from 'src/utils/columns/sales/salesCustomColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SectionType } from 'src/utils/types/sectionType';\nimport { EventWithData, Sale } from 'src/WebApiController';\nimport { Feature } from 'src/WebApiController';\n\nimport * as styles from '../../Events/EventPage/EventPage.css';\n\ntype SaleEventContentProps = {\n accordionItemProps?: EventWithData;\n saleAccordionItem?: EventAccordionItemProps;\n selectedSaleIds: number[];\n setSelectedSaleIds: Dispatch>;\n};\n\nexport function SaleEventInfoSection({\n accordionItemProps,\n saleAccordionItem,\n selectedSaleIds,\n setSelectedSaleIds,\n}: SaleEventContentProps) {\n const { BodyComponent, AfterHeaderComponent } = saleAccordionItem || {};\n const { onScroll, isCollapsedView, isEnabled } = useCollapsableViewContext();\n\n const hasEventListingTableHotkeysFeature = useUserHasFeature(\n Feature.EventListingTableHotkeys\n );\n const { selectionMode } = useMultiSelectionContext();\n const isSelectionModeOn = !!selectionMode?.mode;\n\n const [isColumnModalOpen, toggleColumnModal] = useToggle(false);\n\n const onColumnSettingButtonClickHandler = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!isColumnModalOpen) toggleColumnModal(true);\n },\n [isColumnModalOpen, toggleColumnModal]\n );\n\n return (\n
    \n {BodyComponent && accordionItemProps && (\n \n \n {isColumnModalOpen ? (\n \n onClose={toggleColumnModal}\n sectionType={SectionType.Sales}\n />\n ) : null}\n \n \n \n \n \n \n \n\n
    \n {AfterHeaderComponent && }\n
    \n \n \n
    \n \n )}\n \n );\n}\n","import { EventAccordionItemProps } from 'src/components/Accordions';\nimport { EventPageHeaderBase } from 'src/components/Events/EventPage/EventPageHeader';\nimport { useCatalogMetricsContext } from 'src/contexts/CatalogMetricsContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { formatPercent } from 'src/utils/numberFormatter';\nimport {\n ActionOutboxEntityType,\n Event,\n Sale,\n SaleMetrics,\n} from 'src/WebApiController';\n\nexport const SaleEventPageHeader = ({\n event,\n saleAccordionItem,\n}: {\n event: Event;\n saleAccordionItem?: EventAccordionItemProps;\n}) => {\n const { eventMetrics: eventMetricsMap } =\n useCatalogMetricsContext();\n\n const eventMetrics = eventMetricsMap?.[event?.viagVirtualId ?? ''];\n\n const formattedMetrics = [\n {\n name: ,\n value: formatPercent(eventMetrics?.marg || 0),\n },\n {\n name: ,\n value: `${\n eventMetrics?.qtySold || 0 / (eventMetrics?.saleUnfilled || 0)\n }/${eventMetrics?.qtySold}`,\n },\n {\n name: ,\n value: eventMetrics?.qtySold,\n },\n ];\n return (\n \n );\n};\n","import {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n EventAccordionItemProps,\n translateEventToSaleAccordionItem,\n} from 'src/components/Accordions';\nimport { SwiperButton } from 'src/components/Buttons/SwiperButton';\nimport { BackSection } from 'src/components/common/BackSection';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport {\n EventPageTabs,\n TabItem,\n} from 'src/components/Events/EventPage/EventPageTabs';\nimport { SidePanel } from 'src/components/Events/EventPage/SidePanel/SidePanel';\nimport { TagsSection } from 'src/components/Listings/InventoryEventPage/Sections/TagsSection';\nimport { ActiveFocusContextProvider } from 'src/contexts/ActiveFocusContext/ActiveFocusContext';\nimport { useActivePosEntityContext } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useCatalogDataContext } from 'src/contexts/CatalogDataContext';\nimport { CollapsableViewProvider } from 'src/contexts/CollapsableViewContext/CollapsableViewContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { EventMapContextProvider } from 'src/contexts/EventMapContext';\nimport { useFilterQueryContext } from 'src/contexts/FilterQueryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { useMultiSelectionContext } from 'src/contexts/MultiSelectionContext';\nimport {\n EventLastReviewedContextProvider,\n useEventLastReviewedContext,\n} from 'src/contexts/SellerEventLastReviewContext/SellerEventLastReviewContext';\nimport {\n SidePanelPage,\n SidePanelProvider,\n} from 'src/contexts/SidePanelContext';\nimport { ExplorerLayout } from 'src/core/layouts';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { useQuickFilterSearchParam } from 'src/hooks/useQuickFilters';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport { SearchSolidIcon } from 'src/svgs/Viagogo';\nimport { SaleDeeplinkQueryParam } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getDeepLinkIdFromUrl } from 'src/utils/deepLinkUtils';\nimport { getAppliedFilterCounts } from 'src/utils/eventQueryUtils';\nimport { getSaleDetailsModalConfigWithDeepLink } from 'src/utils/saleUtils';\nimport {\n EventWithData,\n Sale,\n SaleDetails,\n SaleQuery,\n UserSetting,\n} from 'src/WebApiController';\nimport Swiper from 'swiper';\n\nimport * as styles from '../../Events/EventPage/EventPage.css';\nimport { SaleEventInfoSection } from './SaleEventInfoSection';\nimport { SaleEventPageHeader } from './SaleEventPageHeader';\n\nexport function SaleEventPage({\n viagVirtualId,\n posEventIds,\n returnUrl,\n}: {\n posEventIds?: string[];\n viagVirtualId?: string;\n returnUrl?: string;\n}) {\n const { activeAccountWebClientConfig } = useAppContext();\n const {\n eventsTransformed,\n eventsExpansion: { setListItemExpansion },\n } = useCatalogDataContext();\n\n useEffect(() => {\n if (!viagVirtualId && posEventIds?.length) {\n setListItemExpansion(\n true,\n posEventIds.map((id) => `old:${id}`)\n );\n } else if (viagVirtualId) {\n setListItemExpansion(true, [viagVirtualId]);\n }\n }, [\n activeAccountWebClientConfig,\n posEventIds,\n setListItemExpansion,\n viagVirtualId,\n ]);\n\n const { setAllGroupsIds } = useMultiSelectionContext();\n\n const accordionItemProps = useMemo(\n () =>\n eventsTransformed?.length\n ? eventsTransformed.find(\n (ev) =>\n ev.event.viagVirtualId === viagVirtualId ||\n ev.event.posIds.some((id) => posEventIds?.includes(id))\n )\n : undefined,\n [eventsTransformed, posEventIds, viagVirtualId]\n );\n\n const salesAccordionItem = useMemo(\n () =>\n accordionItemProps &&\n translateEventToSaleAccordionItem(accordionItemProps, 0, true),\n [accordionItemProps]\n );\n\n useEffect(() => {\n if (salesAccordionItem) {\n setAllGroupsIds([salesAccordionItem.itemId]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [salesAccordionItem]);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\ntype SalesEventContentProps = {\n accordionItemProps?: EventWithData;\n saleAccordionItem?: EventAccordionItemProps;\n returnUrl?: string;\n};\n\nexport const enum SaleEventTabs {\n Sales = 'sales',\n Tags = 'tags',\n None = 'none',\n}\n\nfunction SaleEventContent({\n accordionItemProps,\n saleAccordionItem,\n returnUrl,\n}: SalesEventContentProps) {\n const intialActiveTab = SaleEventTabs.Sales;\n\n const [selectedSaleIds, setSelectedSaleIds] = useState([]);\n const [activeTab, setActiveTab] = useState(intialActiveTab);\n\n const { isLoading } = useCatalogDataContext();\n const isMobile = useMatchMedia('mobile');\n\n const quickFilterSearchParams = useQuickFilterSearchParam();\n const { tempQuery, initialQuery, filterQuery } =\n useFilterQueryContext();\n\n const { setModal } = useContext(ModalContext);\n const { posEntity: sale, setActivePosEntity } =\n useActivePosEntityContext();\n\n const {\n value: defaultSalesTabUserSetting,\n setUserSetting: setDefaultSalesTabUserSetting,\n isLoading: defaultSalesTabLoading,\n } = useServerUserSetting({\n id: UserSetting.SalesDefaultTab,\n });\n\n const activeId = getDeepLinkIdFromUrl(\n SaleDeeplinkQueryParam,\n window.location.href\n );\n\n useEffect(() => {\n if (activeId?.length && !sale) {\n setActivePosEntity(parseInt(activeId), undefined, true);\n setModal(getSaleDetailsModalConfigWithDeepLink(activeId));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeId]);\n\n const [defaultTab, setDefaultTab] = useState(\n defaultSalesTabUserSetting\n );\n\n useEffect(() => {\n if (\n defaultSalesTabUserSetting != null &&\n defaultSalesTabUserSetting !== activeTab &&\n defaultSalesTabUserSetting !== SaleEventTabs.None &&\n defaultSalesTabLoading === false\n ) {\n setActiveTab(defaultSalesTabUserSetting);\n }\n if (\n defaultSalesTabUserSetting != null &&\n defaultSalesTabUserSetting !== defaultTab &&\n defaultSalesTabUserSetting !== SaleEventTabs.None &&\n defaultSalesTabLoading === false\n ) {\n setDefaultTab(defaultSalesTabUserSetting);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaultSalesTabLoading, defaultSalesTabUserSetting]);\n\n const onSetDefaultTabClick = useCallback(\n async (tab: SaleEventTabs) => {\n if (tab !== activeTab && tab !== SaleEventTabs.None) {\n setActiveTab(tab);\n }\n if (tab !== defaultTab) {\n setDefaultTab(tab);\n }\n setDefaultSalesTabUserSetting(tab);\n },\n [activeTab, defaultTab, setDefaultSalesTabUserSetting]\n );\n\n const swiperRef = useRef();\n\n const event = accordionItemProps?.event;\n\n const { onSettingVirtualIds } = useEventLastReviewedContext();\n\n useEffect(() => {\n onSettingVirtualIds(event?.viagVirtualId ? [event?.viagVirtualId] : []);\n }, [event?.viagVirtualId, onSettingVirtualIds]);\n\n const tabs: TabItem[] = [\n {\n value: SaleEventTabs.Sales,\n label: ,\n content: (\n \n ),\n className: styles.tabContent,\n },\n {\n value: SaleEventTabs.Tags,\n label: ,\n content: event?.viagVirtualId && (\n \n ),\n },\n ];\n\n if (!event) {\n if (\n quickFilterSearchParams ||\n getAppliedFilterCounts(tempQuery, initialQuery)\n )\n return (\n \n \n \n }\n >\n \n \n \n \n \n \n \n );\n }\n\n if (isLoading || !event) {\n return ;\n }\n\n return (\n
    \n \n }\n >\n
    \n {isMobile && (\n \n \n \n \n )}\n \n \n \n \n
    \n \n
    \n );\n}\n","import { useCallback, useMemo } from 'react';\nimport { useLocation, useSearchParams } from 'react-router-dom';\nimport { getDefaultReturnUrl } from 'src/components/Events/EventPage/utils';\nimport { MainFilterBar } from 'src/components/MainFilterBar';\nimport { SaleEventPage } from 'src/components/Sales/SaleEventPage/SaleEventPage';\nimport { ActivePosEntityProvider } from 'src/contexts/ActivePosEntityContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { CatalogDataContextProvider } from 'src/contexts/CatalogDataContext';\nimport { CatalogMetricsContextProvider } from 'src/contexts/CatalogMetricsContext';\nimport { CatalogMultiSelectionContextProvider } from 'src/contexts/CatalogMultiSelectionContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { FilterQueryContextProvider } from 'src/contexts/FilterQueryContext';\nimport { MultiSelectionContextProvider } from 'src/contexts/MultiSelectionContext';\nimport { SellerUserSettingsProvider } from 'src/contexts/SellerUserSettingsContext';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { queryIdSearchParam } from 'src/navigations/Routes/InventoryEvent/constants';\nimport {\n EventIdQueryParam,\n SaleDeeplinkQueryParam,\n} from 'src/utils/constants/constants';\nimport { removeDeepLinkUrlPartsFromRelativeUrl } from 'src/utils/deepLinkUtils';\nimport { EmptySaleQuery } from 'src/utils/eventQueryUtils';\nimport { transformData } from 'src/utils/eventWithDataUtils';\nimport { addSaleMetrics } from 'src/utils/ticketMetricUtils';\nimport { EventPageLocationState } from 'src/utils/types/EventPageLocationState';\nimport {\n ActionOutboxEntityType,\n Feature,\n SaleClient,\n SaleDetails,\n SaleMetrics,\n SaleQuery,\n UserSetting,\n} from 'src/WebApiController';\n\nimport {\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n POS_EVENT_IDS_SEPARATOR,\n TAB_EVENT_IDS_2_QUERY_PARAM,\n TAB_EVENT_IDS_QUERY_PARAM,\n TAB_EVENT_IDS_SEPARATOR,\n} from '../InventoryEvent/InventoryEvent.constants';\nimport { MainRoute } from '../MainRoute';\nimport {\n getCatalogData,\n getCatalogDataExpanded,\n getCatalogMetrics,\n SALE_USER_SETTINGS,\n salesQueryValueTransformFromUrl,\n salesQueryValueTransformToUrl,\n} from '../Sales/Sales';\n\nexport function SalesEvent() {\n const [searchParams] = useSearchParams();\n const oldPosEventId = searchParams.get(queryIdSearchParam);\n const viagEventId = searchParams.get(EventIdQueryParam);\n\n const activeEventIds = searchParams.get(ACTIVE_EVENT_IDS_QUERY_PARAM);\n const tabEventIds = searchParams.get(TAB_EVENT_IDS_QUERY_PARAM);\n\n const activeEventIds2 = searchParams.get(ACTIVE_EVENT_IDS_2_QUERY_PARAM);\n const tabEventIds2 = searchParams.get(TAB_EVENT_IDS_2_QUERY_PARAM);\n\n const location = useLocation();\n\n const posEventIds = useMemo(\n // We need to make sure all the ids in the params are lowercase or else it won't be found in the CatalogDataContext\n () =>\n (tabEventIds != null\n ? activeEventIds?.toLowerCase()?.split(POS_EVENT_IDS_SEPARATOR)\n : oldPosEventId?.toLowerCase()?.split(POS_EVENT_IDS_SEPARATOR)) ?? [],\n [activeEventIds, oldPosEventId, tabEventIds]\n );\n\n const viagogoVirtualId = useMemo(\n // We need to make sure all the ids in the params are lowercase or else it won't be found in the CatalogDataContext\n () =>\n tabEventIds2 != null\n ? activeEventIds2?.toLowerCase()\n : viagEventId?.toLowerCase(),\n [activeEventIds2, tabEventIds2, viagEventId]\n );\n\n const { trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const getCatalogDataExpandedCallback = useCallback(\n (ids: string[], filterQuery: SaleQuery) =>\n getCatalogDataExpanded(ids, filterQuery, false, {\n activeAccountWebClientConfig,\n onError: (error) => {\n trackError('SaleClient.getSalesForEvents', error, {\n ...filterQuery,\n eventIds: ids,\n });\n },\n }),\n [activeAccountWebClientConfig, trackError]\n );\n\n const initialQuery = useMemo(() => {\n if (posEventIds.length || tabEventIds?.length) {\n const oldPosEventIds = tabEventIds\n ? tabEventIds\n .split(TAB_EVENT_IDS_SEPARATOR)\n .flatMap((eids) => eids.split(POS_EVENT_IDS_SEPARATOR))\n : posEventIds;\n return { ...EmptySaleQuery, oldPosEventIds };\n } else if (tabEventIds2?.length || viagogoVirtualId) {\n const eventOrMappingIds = tabEventIds2\n ? tabEventIds2.split(TAB_EVENT_IDS_SEPARATOR)\n : [viagogoVirtualId!];\n return { ...EmptySaleQuery, eventOrMappingIds };\n }\n\n return { ...EmptySaleQuery };\n }, [posEventIds, tabEventIds, tabEventIds2, viagogoVirtualId]);\n\n const getActivePosEntity = useCallback(\n async (saleId: number) => {\n if (activeAccountWebClientConfig.activeAccountId) {\n const saleDetail = await new SaleClient(\n activeAccountWebClientConfig\n ).getSaleBySaleId(saleId);\n\n if (saleDetail) {\n return {\n posEntityId: saleDetail.id,\n posEntity: saleDetail,\n posEntityDisplayId: saleDetail.idOnMkp,\n };\n }\n }\n return {};\n },\n [activeAccountWebClientConfig]\n );\n\n // Only use value provided at the first time (should be from '/inventory')\n const returnUrl = useMemo(() => {\n const locationState = (location.state ?? {}) as EventPageLocationState;\n\n if (locationState.returnUrl && locationState.keepReturnUrlUnchanged) {\n return locationState.returnUrl;\n }\n\n const relativeUrl =\n locationState.returnUrl || getDefaultReturnUrl('sales', viagEventId);\n\n return removeDeepLinkUrlPartsFromRelativeUrl(relativeUrl, [\n SaleDeeplinkQueryParam,\n ACTIVE_EVENT_IDS_QUERY_PARAM,\n TAB_EVENT_IDS_QUERY_PARAM,\n ACTIVE_EVENT_IDS_2_QUERY_PARAM,\n TAB_EVENT_IDS_2_QUERY_PARAM,\n ]);\n }, [location.state, viagEventId]);\n\n const hasMetricsV2Feature = useUserHasFeature(Feature.CatalogMetricsV2);\n\n if (\n !posEventIds.length &&\n !tabEventIds?.length &&\n !tabEventIds2?.length &&\n !viagogoVirtualId\n ) {\n return null;\n }\n\n return (\n \n \n initialQuery={initialQuery}\n emptyQuery={EmptySaleQuery}\n viewModeSettingId={UserSetting.SalePageViewMode}\n saveQueryInUrl\n queryValueTransformToUrl={salesQueryValueTransformToUrl}\n queryValueTransformFromUrl={salesQueryValueTransformFromUrl}\n >\n \n entityType={ActionOutboxEntityType.Sale}\n queryKey={'getCatalogForSale'}\n getCatalogData={(c, f) => getCatalogData(c, f, true)}\n getCatalogDataExpanded={getCatalogDataExpandedCallback}\n transformEventData={transformData}\n >\n \n queryKey=\"getCatalogSaleMetrics\"\n entityType={ActionOutboxEntityType.Sale}\n getCatalogMetrics={(c, f, r) =>\n getCatalogMetrics(c, f, r, hasMetricsV2Feature)\n }\n addCatalogMetrics={addSaleMetrics}\n >\n \n entityType={ActionOutboxEntityType.Sale}\n getActivePosEntity={getActivePosEntity}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import clsx from 'clsx';\nimport { useCallback, useMemo } from 'react';\nimport { matchPath, NavLink, Outlet, useLocation } from 'react-router-dom';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasAutopricingFeature } from 'src/hooks/useUserHasAutopricingFeature';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { UnauthorizedAccessMessageContainer } from 'src/navigations/LayoutContent/LayoutContent.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SETTINGS_VIEWS_TO_CONTENT_ID_MAP } from 'src/utils/constants/contentIdMaps';\nimport { Feature, Permission } from 'src/WebApiController';\n\nimport { MainRoute } from '../MainRoute';\nimport * as reportsStyles from '../Reports/Reports.css';\nimport { SettingsTree, SettingTab } from './constants';\nimport * as styles from './Settings.css';\n\nexport const Settings = () => {\n const { appContext } = useAppContext();\n\n const settingsText = useContent(ContentId.Settings);\n const { pathname } = useLocation();\n\n const hasSiteVersionFeature = useUserHasFeature(Feature.DisplayBuildVersion);\n const hasPurchaseSettingsTabFeature = useUserHasFeature(\n Feature.PurchaseSettingsTab\n );\n const hasTeamManagementFeature = useUserHasFeature(Feature.TeamManagement);\n const hasCurrencyConversionSettingsTabFeature = useUserHasFeature(\n Feature.CurrencyConversionSettingsTab\n );\n const hasAdminPermission = useUserHasAnyOfPermissions(\n Permission.SellerAccount_Admin\n );\n const hasFulfillmentProvidersFeature = useUserHasFeature(\n Feature.FulfillmentProviders\n );\n\n const hasVendorAccountV2 = useUserHasFeature(Feature.VendorAccountV2);\n\n const hasAutoPricingTabFeature = useUserHasAutopricingFeature(\n Feature.AutoPricingTabInAccountSettings\n );\n\n const hasVendorManagementPermission = useUserHasAnyOfPermissions(\n Permission.Purchases_Edit,\n Permission.Purchases_EditOwned,\n Permission.Purchases_EditVendor\n );\n\n const isAuthorized = useMemo(\n () => ({\n [SettingTab.UserManagement]: hasAdminPermission,\n [SettingTab.UserManagement_Users]: hasAdminPermission,\n [SettingTab.UserManagement_Roles]: hasAdminPermission,\n [SettingTab.UserManagement_Teams]:\n hasAdminPermission && hasTeamManagementFeature,\n [SettingTab.SellerAccount]: !hasVendorAccountV2 && hasAdminPermission,\n [SettingTab.VendorManagement]:\n hasVendorAccountV2 && hasVendorManagementPermission,\n [SettingTab.VendorManagement_Payments]:\n hasVendorAccountV2 && hasVendorManagementPermission,\n [SettingTab.VendorManagement_Vendors]:\n hasVendorAccountV2 && hasVendorManagementPermission,\n [SettingTab.MyAccount]: true,\n [SettingTab.SyncCenter]: hasAdminPermission,\n [SettingTab.CurrencyConversion]:\n hasAdminPermission && hasCurrencyConversionSettingsTabFeature,\n [SettingTab.PurchaseOrder]:\n hasAdminPermission && hasPurchaseSettingsTabFeature,\n [SettingTab.FulfillmentProviders]:\n hasAdminPermission && hasFulfillmentProvidersFeature,\n [SettingTab.AutoPricing]: hasAdminPermission && hasAutoPricingTabFeature,\n [SettingTab.Accounting]: hasAdminPermission,\n }),\n [\n hasAdminPermission,\n hasAutoPricingTabFeature,\n hasCurrencyConversionSettingsTabFeature,\n hasFulfillmentProvidersFeature,\n hasPurchaseSettingsTabFeature,\n hasTeamManagementFeature,\n hasVendorAccountV2,\n hasVendorManagementPermission,\n ]\n );\n\n const isPathActive = useCallback(\n (id: SettingTab) =>\n matchPath(pathname, `/settings/${SettingsTree[id]}${id}`),\n [pathname]\n );\n\n const hasPermissionsForActiveView = useMemo(() => {\n const activePath = Object.keys(isAuthorized).find((key) =>\n isPathActive(key as SettingTab)\n );\n\n const isRootPathActive = matchPath(pathname, '/settings');\n\n const hasPermissionsForActiveView =\n isRootPathActive || (isAuthorized[activePath as SettingTab] ?? false);\n\n return hasPermissionsForActiveView;\n }, [isAuthorized, pathname, isPathActive]);\n\n return (\n \n : {appContext.version}\n \n ) : null\n }\n >\n
    \n
    \n \n {(\n Object.entries(SETTINGS_VIEWS_TO_CONTENT_ID_MAP) as [\n SettingTab,\n ContentId,\n ][]\n ).map(([id, contentId]) => {\n const parent = SettingsTree[id as string];\n return isAuthorized[id] ? (\n {\n return clsx(\n reportsStyles.navTitle,\n reportsStyles.textPrimary,\n {\n [reportsStyles.navTitleActive]: isActive,\n [reportsStyles.navTitleSecondary]: parent !== '',\n }\n );\n }}\n >\n \n \n ) : null;\n })}\n
    \n \n {hasPermissionsForActiveView ? (\n \n ) : (\n \n \n \n )}\n
    \n \n \n \n );\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n AutoCurrencyConversionSettings,\n SellerAccountClient,\n} from 'src/WebApiController';\n\nexport const useAutoCurrencyConversionSettings = () => {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const { trackError, showErrorDialog } = useErrorBoundaryContext();\n\n const queryClient = useQueryClient();\n const queryKey = [\n 'getAutoCurrencyConversionSettings',\n activeAccountWebClientConfig.activeAccountId,\n ];\n\n const shouldQuery = activeAccountWebClientConfig.activeAccountId != null;\n const query = useQuery({\n queryKey,\n queryFn: () => {\n if (!shouldQuery) {\n return null;\n }\n return new SellerAccountClient(\n activeAccountWebClientConfig\n ).getAutoCurrencyConversionSettings();\n },\n\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError(\n 'SellerAccountClient.getAutoCurrencyConversionSettings',\n error\n );\n },\n },\n });\n\n const mutation = useMutation({\n mutationFn: async ({\n input,\n }: {\n input: AutoCurrencyConversionSettings;\n }) => {\n return await new SellerAccountClient(\n activeAccountWebClientConfig\n ).mergeAutoCurrencyConversionSettings(input);\n },\n // optimistic ui\n onMutate: ({ input }) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue = queryClient.getQueryData(queryKey);\n queryClient.setQueryData(queryKey, input);\n return { prevValue };\n },\n onError: (err: ErrorTypes, { input }, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog(\n 'SellerAccountClient.mergeAutoCurrencyConversionSettings',\n err,\n {\n trackErrorData: { input },\n }\n );\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n },\n });\n\n return {\n autoCurrencyConversionSettings: query.data,\n isLoading: query.isLoading,\n mergeAutoCurrencyConversionSettings: mutation.mutateAsync,\n };\n};\n","import { useCallback, useMemo } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { MultiSelectDropBoxWithPills } from 'src/core/POS/MultiSelectDropBoxWithPills';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useAutoCurrencyConversionSettings } from 'src/hooks/api/useAutoCurrencyConversionSettings';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './MyAccount.css';\n\nexport const CurrencySection = () => {\n const { currencyCache } = useLocalizationContext();\n const {\n autoCurrencyConversionSettings,\n mergeAutoCurrencyConversionSettings,\n } = useAutoCurrencyConversionSettings();\n\n const onDefaultCurrencyChange = useCallback(\n (currencyCode: string) => {\n if (!autoCurrencyConversionSettings) return;\n\n mergeAutoCurrencyConversionSettings({\n input: {\n ...autoCurrencyConversionSettings,\n defaultCurrencyCode: currencyCode,\n ignoredCurrencyCodes:\n autoCurrencyConversionSettings?.ignoredCurrencyCodes?.filter(\n (code) => code !== currencyCode\n ) ?? [],\n },\n });\n },\n [autoCurrencyConversionSettings, mergeAutoCurrencyConversionSettings]\n );\n\n const onIgnoredCurrencyCodesChange = useCallback(\n (values: string[]) => {\n if (!autoCurrencyConversionSettings) return;\n\n mergeAutoCurrencyConversionSettings({\n input: {\n ...autoCurrencyConversionSettings,\n ignoredCurrencyCodes: values,\n },\n });\n },\n [autoCurrencyConversionSettings, mergeAutoCurrencyConversionSettings]\n );\n\n const onEnabledToggle = useCallback(() => {\n if (!autoCurrencyConversionSettings) return;\n\n mergeAutoCurrencyConversionSettings({\n input: {\n ...autoCurrencyConversionSettings,\n enabled: !(autoCurrencyConversionSettings?.enabled ?? false),\n },\n });\n }, [autoCurrencyConversionSettings, mergeAutoCurrencyConversionSettings]);\n\n const availableCurrenciesOptions = useMemo(\n () =>\n Object.values(currencyCache || []).reduce(\n (result, cur) => {\n result[cur.code] = cur.code;\n return result;\n },\n {} as Record\n ),\n [currencyCache]\n );\n\n const availableCurrenciesOptionsWithoutDefault = useMemo(\n () =>\n Object.values(currencyCache || []).reduce(\n (result, cur) => {\n if (\n cur.code !== autoCurrencyConversionSettings?.defaultCurrencyCode\n ) {\n result[cur.code] = cur.code;\n }\n return result;\n },\n {} as Record\n ),\n [autoCurrencyConversionSettings?.defaultCurrencyCode, currencyCache]\n );\n\n return (\n \n
    \n \n
    \n\n \n
    \n \n
    \n

    \n \n

    \n \n
    \n\n \n \n \n
    \n \n
    \n
    \n

    \n \n

    \n
    \n {autoCurrencyConversionSettings?.enabled && (\n \n
    \n \n
    \n

    \n \n

    \n \n
    \n )}\n \n );\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { id } from 'date-fns/locale';\nimport { useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n CurrencyConversionOverride,\n CurrencyConversionOverrideRequest,\n Feature,\n PurchaseClient,\n} from 'src/WebApiController';\n\nimport { useUserHasFeature } from './useUserHasFeature';\n\n/**\n * Data and functions returned by the hook to help with CRUD of CurrencyConversionOverride\n */\ntype UseCurrencyConversionOverrides = {\n currencyConversionOverrides: CurrencyConversionOverride[] | null | undefined;\n isLoading: boolean;\n deleteCurrencyConversionOverride: (\n currencyConversionOverrideId: number\n ) => Promise;\n createCurrencyConversionOverride: (\n userGroupInput: CurrencyConversionOverrideRequest\n ) => Promise;\n updateCurrencyConversionOverride: (\n userGroupInput: CurrencyConversionOverrideRequest\n ) => Promise;\n};\n\n/**\n * Hook to help with CRUD of CurrencyConversionOverride\n * @param options\n * @returns\n */\nexport function useCurrencyConversionOverrides(): UseCurrencyConversionOverrides {\n const { showErrorDialog, trackError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const client = useMemo(\n () => new PurchaseClient(activeAccountWebClientConfig),\n [activeAccountWebClientConfig]\n );\n\n const hasOverrideDailyFxRateFeature = useUserHasFeature(\n Feature.OverrideDailyFxRate\n );\n\n const queryClient = useQueryClient();\n const queryKey = [\n 'useCurrencyConversionOverrides',\n activeAccountWebClientConfig.activeAccountId,\n ];\n\n const shouldQuery =\n activeAccountWebClientConfig?.activeAccountId != null &&\n hasOverrideDailyFxRateFeature;\n\n const getAllQuery = useQuery({\n queryKey,\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n\n return await client.getAllCurrencyConversionOverride();\n },\n\n enabled: shouldQuery,\n meta: {\n onError: (err: ErrorTypes) => {\n trackError('PurchaseClient.getAllCurrencyConversionOverride', err);\n },\n },\n refetchOnWindowFocus: false,\n });\n\n const updateMutation = useMutation({\n mutationFn: async ({\n value,\n }: {\n value: CurrencyConversionOverrideRequest;\n }) => {\n return await client.updateCurrencyConversionOverride(value);\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n\n onMutate: ({ value }) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue = queryClient.getQueryData<\n CurrencyConversionOverride[] | null\n >(queryKey);\n\n const newValue = prevValue?.map((r) =>\n r.currencyConversionOverrideId === value.currencyConversionOverrideId\n ? (value as CurrencyConversionOverride)\n : r\n );\n\n queryClient.setQueryData(\n queryKey,\n newValue\n );\n return { prevValue };\n },\n onError: (err: ErrorTypes, { value }, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('client.updateCurrencyConversionOverride', err, {\n trackErrorData: { id, value },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n },\n });\n\n const updateCurrencyConversionOverride = async (\n userGroupInput: CurrencyConversionOverrideRequest\n ) => {\n return await updateMutation.mutateAsync({\n value: userGroupInput,\n });\n };\n\n const createMutation = useMutation({\n mutationFn: async ({\n value,\n }: {\n value: CurrencyConversionOverrideRequest;\n }) => {\n return await client.insertCurrencyConversionOverride(value);\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n\n onMutate: ({ value }) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue = queryClient.getQueryData<\n CurrencyConversionOverride[] | null\n >(queryKey);\n\n const newValue = [\n ...(prevValue ?? []),\n value as CurrencyConversionOverride,\n ];\n\n queryClient.setQueryData(\n queryKey,\n newValue\n );\n return { prevValue };\n },\n onError: (err: ErrorTypes, { value }, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('client.insertCurrencyConversionOverride', err, {\n trackErrorData: { id, value },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n },\n });\n\n const createCurrencyConversionOverride = async (\n userGroupInput: CurrencyConversionOverrideRequest\n ) => {\n return await createMutation.mutateAsync({ value: userGroupInput });\n };\n\n const deleteMutation = useMutation({\n mutationFn: async (currencyConversionOverrideId: number) => {\n return await client.deleteCurrencyConversionOverride(\n currencyConversionOverrideId\n );\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n\n onMutate: (currencyConversionOverrideId) => {\n queryClient.cancelQueries({ queryKey });\n const prevValue = queryClient.getQueryData<\n CurrencyConversionOverride[] | null\n >(queryKey);\n\n const newValue = prevValue?.filter(\n (r) => r.currencyConversionOverrideId !== currencyConversionOverrideId\n );\n\n queryClient.setQueryData(\n queryKey,\n newValue\n );\n return { prevValue };\n },\n onError: (err: ErrorTypes, currencyConversionOverrideId, context) => {\n queryClient.setQueryData(queryKey, context?.prevValue);\n showErrorDialog('client.deleteCurrencyConversionOverride', err, {\n trackErrorData: { id, currencyConversionOverrideId },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey });\n },\n });\n\n const deleteCurrencyConversionOverride = (\n currencyConversionOverrideId: number\n ) => {\n return deleteMutation.mutateAsync(currencyConversionOverrideId);\n };\n\n return {\n currencyConversionOverrides: getAllQuery.data,\n isLoading: getAllQuery.isLoading,\n deleteCurrencyConversionOverride,\n createCurrencyConversionOverride,\n updateCurrencyConversionOverride,\n };\n}\n","import {\n ComponentProps,\n ReactElement,\n useCallback,\n useEffect,\n useMemo,\n} from 'react';\nimport { Controller, useForm } from 'react-hook-form';\nimport { CancelButton } from 'src/components/Buttons';\nimport { CurrencyFilterSelector } from 'src/components/Selectors/CurrencyFilterSelector';\nimport { usePurchasePaymentMethodSelector } from 'src/components/Selectors/PurchasePaymentMethodSelector';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { DatePickerInput } from 'src/core/POS/DateSelector';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { Button } from 'src/core/ui';\nimport {\n FieldError,\n FieldLabel,\n FieldWrapper,\n} from 'src/modals/common/Purchase';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PAYMENT_METHOD_NAME_REGEX_TO_CONTENT_ID } from 'src/utils/constants/contentIdMaps';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport {\n CurrencyConversionOverride,\n CurrencyConversionOverrideRequest,\n PaymentMethodNameKnownRegex,\n} from 'src/WebApiController';\n\nexport type CurrencyConversionOverrideDialogProps = Omit<\n ComponentProps,\n 'header' | 'footer'\n> & {\n onSave?: (data: CurrencyConversionOverrideRequest) => void | Promise;\n onCancel?: () => void;\n currencyConversionOverride: CurrencyConversionOverrideRequest | undefined;\n otherExistingCurrencyConversionOverrides: CurrencyConversionOverride[];\n};\n\nexport function CurrencyConversionOverrideDialog({\n onSave,\n onCancel,\n currencyConversionOverride,\n otherExistingCurrencyConversionOverrides,\n ...genericDialogProps\n}: CurrencyConversionOverrideDialogProps): ReactElement | null {\n const requiredText = useContent(ContentId.Required);\n const duplicateText = useContent(ContentId.SameOverrideExists);\n const sameCurrencyCodeText = useContent(\n ContentId.DifferentCurrencyCodesRequired\n );\n const conversionRateGreaterThanZeroText = useContent(\n ContentId.ConversionRateMustBeGreaterThanZero\n );\n const allText = useContent(ContentId.All);\n\n const additionalOptions = useMemo(() => {\n return Object.values(PAYMENT_METHOD_NAME_REGEX_TO_CONTENT_ID).reduce(\n (options, contentId) => ({ ...options, [contentId]: contentId }),\n {} as Record\n );\n }, []);\n\n const contentIdToPresetRegexIdMap = useMemo(() => {\n return Object.entries(PAYMENT_METHOD_NAME_REGEX_TO_CONTENT_ID).reduce(\n (map, [presetRegexId, contentId]) => ({\n ...map,\n [contentId]: presetRegexId,\n }),\n {} as Record\n );\n }, []);\n\n const { posSelectProps: paymentMethodSelectProps } =\n usePurchasePaymentMethodSelector({\n additionalOptions,\n });\n\n const {\n control,\n register,\n reset,\n handleSubmit,\n watch,\n setError,\n setValue,\n getValues,\n clearErrors,\n formState: { isSubmitting, errors },\n } = useForm({\n defaultValues: currencyConversionOverride,\n });\n\n /**\n * Return true if there are no validation errors\n */\n const validateInput = useCallback(\n (formData: CurrencyConversionOverrideRequest): boolean => {\n clearErrors();\n\n // Double check for required\n if (!formData.fromCurrencyCode) {\n setError('fromCurrencyCode', { message: requiredText });\n return false;\n }\n if (!formData.toCurrencyCode) {\n setError('toCurrencyCode', { message: requiredText });\n return false;\n }\n if (formData.conversionRate == null) {\n setError('conversionRate', { message: requiredText });\n return false;\n }\n if (!formData.conversionRateDate) {\n setError('conversionRateDate', { message: requiredText });\n return false;\n }\n\n // Don't allow conflicting currency conversion overrides\n if (\n otherExistingCurrencyConversionOverrides.some((c) => {\n const dateInput = new Date(formData.conversionRateDate);\n const dateExisting = new Date(c.conversionRateDate);\n\n return (\n c.fromCurrencyCode === formData.fromCurrencyCode &&\n c.toCurrencyCode === formData.toCurrencyCode &&\n c.purchasePaymentMethodId === formData.purchasePaymentMethodId &&\n dateInput.toDateString() === dateExisting.toDateString()\n );\n })\n ) {\n setError('fromCurrencyCode', { message: duplicateText });\n return false;\n }\n\n // Don't allow same currency code\n if (formData.fromCurrencyCode === formData.toCurrencyCode) {\n setError('fromCurrencyCode', { message: sameCurrencyCodeText });\n setError('toCurrencyCode', { message: sameCurrencyCodeText });\n return false;\n }\n\n // Don't allow zero\n if (formData.conversionRate <= 0) {\n setError('conversionRate', {\n message: conversionRateGreaterThanZeroText,\n });\n return false;\n }\n\n return true;\n },\n [\n clearErrors,\n conversionRateGreaterThanZeroText,\n duplicateText,\n otherExistingCurrencyConversionOverrides,\n requiredText,\n sameCurrencyCodeText,\n setError,\n ]\n );\n\n const onSaveHandler = useCallback(() => {\n if (!validateInput(getValues())) {\n return;\n }\n\n if (onSave) {\n handleSubmit(onSave)();\n }\n }, [getValues, handleSubmit, onSave, validateInput]);\n\n const currencyConversionOverrideId = watch('currencyConversionOverrideId');\n const conversionRate = watch('conversionRate');\n const purchasePaymentMethodId = watch('purchasePaymentMethodId');\n const paymentMethodNameKnownRegexId = watch('paymentMethodNameKnownRegexId');\n\n const paymentMethodSelectValue = useMemo(() => {\n if (paymentMethodNameKnownRegexId != null) {\n return PAYMENT_METHOD_NAME_REGEX_TO_CONTENT_ID[\n paymentMethodNameKnownRegexId\n ];\n }\n\n return purchasePaymentMethodId !== undefined\n ? String(purchasePaymentMethodId)\n : undefined;\n }, [paymentMethodNameKnownRegexId, purchasePaymentMethodId]);\n\n const paymentMethodSelectOnChange = useCallback(\n (value: string) => {\n if (\n Object.values(PAYMENT_METHOD_NAME_REGEX_TO_CONTENT_ID).includes(\n value as ContentId\n )\n ) {\n setValue(\n 'paymentMethodNameKnownRegexId',\n contentIdToPresetRegexIdMap[value] as PaymentMethodNameKnownRegex\n );\n setValue('purchasePaymentMethodId', null);\n } else {\n const valueAsNumber = parseInt(value);\n if (value != null && !isNaN(valueAsNumber)) {\n setValue('purchasePaymentMethodId', valueAsNumber);\n } else {\n setValue('purchasePaymentMethodId', null);\n }\n setValue('paymentMethodNameKnownRegexId', null);\n }\n },\n [contentIdToPresetRegexIdMap, setValue]\n );\n\n useEffect(() => {\n reset(currencyConversionOverride);\n }, [currencyConversionOverride, reset]);\n\n return (\n \n }\n footer={\n <>\n \n \n \n \n \n }\n onClosed={() => {\n reset();\n }}\n {...genericDialogProps}\n onCancel={onCancel}\n >\n \n \n \n \n (\n {\n clearErrors('fromCurrencyCode');\n clearErrors('toCurrencyCode');\n field.onChange(e);\n }}\n />\n )}\n />\n {errors.fromCurrencyCode && (\n {errors.fromCurrencyCode?.message}\n )}\n \n \n \n \n \n (\n {\n clearErrors('fromCurrencyCode');\n clearErrors('toCurrencyCode');\n field.onChange(e);\n }}\n />\n )}\n />\n {errors.toCurrencyCode && (\n {errors.toCurrencyCode?.message}\n )}\n \n\n \n }\n >\n {\n clearErrors('conversionRate');\n let value = parseFloat(e.target.value);\n if (isNaN(value) || value < 0) {\n value = 0;\n }\n setValue('conversionRate', value);\n }}\n />\n \n \n\n \n \n \n \n (\n {\n clearErrors(field.name);\n setValue(field.name, d.toDateString());\n }}\n />\n )}\n />\n {errors.conversionRateDate && (\n {errors.conversionRateDate?.message}\n )}\n \n\n \n \n \n \n \n\n {errors.purchasePaymentMethodId && (\n {errors.purchasePaymentMethodId?.message}\n )}\n \n \n }\n />\n \n \n );\n}\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const VendorTableContainer = styled.div`\n border: 1px solid ${(props) => props.theme.colors.borderPrimary};\n border-radius: ${() => vars.spacing.sm};\n overflow: hidden;\n`;\n","import { ColumnDef } from '@tanstack/react-table';\nimport { IconButton } from 'src/components/Buttons';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { FormatOption } from 'src/modals/EditTableColumns';\nimport { DeleteIcon, EditIcon } from 'src/svgs/Viagogo';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\nimport { DateCell } from 'src/tables/Table/TableCells';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PAYMENT_METHOD_NAME_REGEX_TO_CONTENT_ID } from 'src/utils/constants/contentIdMaps';\nimport { GridActionType } from 'src/utils/tableUtils';\nimport { CurrencyConversionOverride } from 'src/WebApiController';\n\nexport type CurrencyConversionOverrideWithHandlers = {\n currencyConversionOverride: CurrencyConversionOverride;\n onCurrencyConversionOverrideAction?: (\n currencyConversionOverride: CurrencyConversionOverride,\n actionType: GridActionType\n ) => void;\n};\n\nexport const CURRENCY_CONVERSION_OVERRIDE_TABLE_COLUMNS_CONFIG: ColumnDef[] =\n [\n {\n id: 'currencyConversionOverrideFromCurrency',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data?.currencyConversionOverride?.fromCurrencyCode,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue();\n if (!original) {\n return ;\n }\n return {value};\n },\n },\n {\n id: 'currencyConversionOverrideToCurrency',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data?.currencyConversionOverride?.toCurrencyCode,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue();\n if (!original) {\n return ;\n }\n return {value};\n },\n },\n {\n id: 'currencyConversionOverrideConversionRate',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data?.currencyConversionOverride?.conversionRate,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue();\n if (!original) {\n return ;\n }\n return {value};\n },\n },\n {\n id: 'currencyConversionOverrideConversionRateDate',\n header: () => (\n \n \n \n ),\n accessorFn: (data) =>\n data?.currencyConversionOverride?.conversionRateDate,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue();\n if (!original) {\n return ;\n }\n return (\n \n );\n },\n },\n {\n id: 'currencyConversionPaymentMethodName',\n header: () => (\n \n \n \n ),\n accessorFn: (data) =>\n data?.currencyConversionOverride?.purchasePaymentMethodName,\n cell: function Cell({ getValue, row: { original } }) {\n const allText = useContent(ContentId.All);\n if (!original) {\n return ;\n }\n\n const { purchasePaymentMethodName, paymentMethodNameKnownRegexId } =\n original.currencyConversionOverride;\n\n return (\n \n {purchasePaymentMethodName == null &&\n paymentMethodNameKnownRegexId != null ? (\n \n ) : (\n <>{purchasePaymentMethodName ?? allText}\n )}\n \n );\n },\n },\n {\n id: 'actions',\n enableSorting: false,\n header: () => (\n \n \n \n ),\n minSize: 100,\n maxSize: 100,\n cell: ({ row: { original } }) => {\n return !original ? (\n \n ) : (\n \n }\n onClick={() =>\n original.onCurrencyConversionOverrideAction &&\n original.onCurrencyConversionOverrideAction(\n original.currencyConversionOverride,\n GridActionType.Edit\n )\n }\n titleContentId={ContentId.EditPurchaseVendorAccount}\n />\n }\n onClick={() =>\n original.onCurrencyConversionOverrideAction &&\n original.onCurrencyConversionOverrideAction(\n original.currencyConversionOverride,\n GridActionType.Delete\n )\n }\n titleContentId={ContentId.DeletePurchaseVendorAccount}\n />\n \n );\n },\n },\n ];\n","import {\n InitialTableState,\n PaginationState,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useEffect, useMemo, useState } from 'react';\nimport { FormatContent, useContent } from 'src/contexts/ContentContext';\nimport { NoData, Table } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { CurrencyConversionOverride } from 'src/WebApiController';\n\nimport {\n CURRENCY_CONVERSION_OVERRIDE_TABLE_COLUMNS_CONFIG,\n CurrencyConversionOverrideWithHandlers,\n} from './configs/CurrencyConversionOverridesTableColumnsConfig';\n\nexport type CurrencyConversionOverridesTableDataProps = {\n currencyConversionOverrides?: CurrencyConversionOverride[] | null;\n};\n\nexport type CurrencyConversionOverridesTableProps =\n CurrencyConversionOverridesTableDataProps & {\n onMount?: () => void;\n onUnmount?: (state: object) => void;\n initState?: InitialTableState;\n };\n\nconst PAGE_SIZE = 10;\n\nexport function CurrencyConversionOverridesTable({\n currencyConversionOverrides,\n onCurrencyConversionOverrideAction,\n onMount,\n onUnmount,\n initState,\n}: CurrencyConversionOverridesTableProps &\n Pick<\n CurrencyConversionOverrideWithHandlers,\n 'onCurrencyConversionOverrideAction'\n >) {\n const currencyConversionOverridesText = useContent(ContentId.Override);\n\n const [sorting, setSorting] = useState(\n initState?.sorting || [\n { id: 'currencyConversionOverrideConversionRateDate', desc: false },\n ]\n );\n const [{ pageIndex, pageSize }, setPagination] = useState({\n pageIndex: initState?.pagination?.pageIndex || 0,\n pageSize: PAGE_SIZE,\n });\n const pagination = useMemo(\n () => ({\n pageIndex,\n pageSize,\n }),\n [pageIndex, pageSize]\n );\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n const data = useMemo(\n () =>\n currencyConversionOverrides?.map(\n (v) =>\n ({\n currencyConversionOverride: v,\n onCurrencyConversionOverrideAction,\n }) as CurrencyConversionOverrideWithHandlers\n ),\n [currencyConversionOverrides, onCurrencyConversionOverrideAction]\n );\n\n const options: Partial<\n TableOptions\n > = useMemo(\n () => ({\n data,\n columns: CURRENCY_CONVERSION_OVERRIDE_TABLE_COLUMNS_CONFIG,\n state: {\n pagination,\n sorting,\n },\n onPaginationChange: setPagination,\n onSortingChange: setSorting,\n }),\n [data, pagination, sorting]\n );\n\n return currencyConversionOverrides?.length ? (\n
    \n ) : (\n \n \n \n );\n}\n","import { useCallback, useMemo, useState } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { Button, Stack } from 'src/core/ui';\nimport { CurrencyConversionOverrideDialog } from 'src/dialogs/CurrencyConversionOverrideDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useCurrencyConversionOverrides } from 'src/hooks/useCurrencyConversionOverrides';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { GridActionType } from 'src/utils/tableUtils';\nimport {\n CurrencyConversionOverride,\n CurrencyConversionOverrideRequest,\n PaymentMethodNameKnownRegex,\n} from 'src/WebApiController';\n\nimport { VendorTableContainer } from '../VendorsTable/VendorsTableContainer.styled';\nimport { CurrencyConversionOverridesTable } from './CurrencyConversionOverridesTable';\n\nconst EMPTY_CURRENCY_CONVERSION_OVERRIDE_INPUT: CurrencyConversionOverrideRequest =\n {\n currencyConversionOverrideId: null,\n fromCurrencyCode: '',\n toCurrencyCode: '',\n conversionRateDate: '',\n purchasePaymentMethodId: null,\n paymentMethodNameKnownRegexId: PaymentMethodNameKnownRegex.All,\n } as CurrencyConversionOverrideRequest;\n\nexport function CurrencyConversionOverridesTableContainer({\n currencyConversionOverrides,\n}: {\n currencyConversionOverrides?: CurrencyConversionOverride[] | null;\n}) {\n const { closeDialog, launchDialog, dialogProps } = useBasicDialog();\n const deleteDialog = useBasicDialog();\n const [\n currentCurrencyConversionOverride,\n setCurrentCurrencyConversionOverride,\n ] = useState();\n\n const otherExistingCurrencyConversionOverrides = useMemo(() => {\n return currencyConversionOverrides?.filter(\n (c) =>\n c.currencyConversionOverrideId !==\n currentCurrencyConversionOverride?.currencyConversionOverrideId\n );\n }, [\n currencyConversionOverrides,\n currentCurrencyConversionOverride?.currencyConversionOverrideId,\n ]);\n\n const {\n createCurrencyConversionOverride,\n updateCurrencyConversionOverride,\n deleteCurrencyConversionOverride,\n } = useCurrencyConversionOverrides();\n\n const onAddNewCurrencyConversionOverride = useCallback(() => {\n setCurrentCurrencyConversionOverride(\n EMPTY_CURRENCY_CONVERSION_OVERRIDE_INPUT\n );\n launchDialog();\n }, [launchDialog]);\n\n const onSaveCurrencyConversionOverride = useCallback(\n async (currencyConversionOverride: CurrencyConversionOverrideRequest) => {\n if (currencyConversionOverride.currencyConversionOverrideId == null) {\n await createCurrencyConversionOverride(currencyConversionOverride);\n } else {\n await updateCurrencyConversionOverride(currencyConversionOverride);\n }\n closeDialog();\n },\n [\n closeDialog,\n createCurrencyConversionOverride,\n updateCurrencyConversionOverride,\n ]\n );\n\n const onCurrencyConversionOverrideCancel = useCallback(() => {\n setCurrentCurrencyConversionOverride(undefined);\n closeDialog();\n }, [closeDialog]);\n\n const onCurrencyConversionOverrideAction = (\n currencyConversionOverride: CurrencyConversionOverride,\n actionType: GridActionType\n ) => {\n switch (actionType) {\n case GridActionType.Edit:\n setCurrentCurrencyConversionOverride(currencyConversionOverride);\n launchDialog();\n break;\n case GridActionType.Delete:\n setCurrentCurrencyConversionOverride(currencyConversionOverride);\n deleteDialog.launchDialog();\n break;\n default:\n break;\n }\n };\n\n const onCurrencyConversionOverrideDelete = useCallback(async () => {\n if (\n currentCurrencyConversionOverride?.currencyConversionOverrideId != null\n ) {\n await deleteCurrencyConversionOverride(\n currentCurrencyConversionOverride?.currencyConversionOverrideId\n );\n }\n setCurrentCurrencyConversionOverride(undefined);\n deleteDialog.closeDialog();\n }, [\n currentCurrencyConversionOverride?.currencyConversionOverrideId,\n deleteDialog,\n deleteCurrencyConversionOverride,\n ]);\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n }\n bodyText={}\n onOkay={onCurrencyConversionOverrideDelete}\n onCancel={deleteDialog.closeDialog}\n okText={ContentId.Yes}\n cancelText={ContentId.No}\n />\n \n );\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useCurrencyConversionOverrides } from 'src/hooks/useCurrencyConversionOverrides';\nimport { BodySectionTitle } from 'src/modals/common/Purchase';\nimport { CurrencyConversionOverridesTableContainer } from 'src/tables/CurrencyConversionOverridesTable/CurrencyConversionOverridesTableContainer';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const SellerAccountSettingCurrencyConversionOverrides = () => {\n const { currencyConversionOverrides, isLoading } =\n useCurrencyConversionOverrides();\n\n return (\n <>\n \n \n \n {isLoading ? (\n \n ) : (\n \n )}\n \n );\n};\n","import { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Feature } from 'src/WebApiController';\n\nimport { CurrencySection } from '../MyAccount/CurrencySection';\nimport { SellerAccountSettingCurrencyConversionOverrides } from '../SellerAccountSetting/SellerAccountSettingCurrencyConversionOverrides';\nimport * as styles from './CurrencyConversion.css';\n\nexport const CurrencyConversion = () => {\n const hasDailyFxRateOverrideFeature = useUserHasFeature(\n Feature.OverrideDailyFxRate\n );\n\n return (\n
    \n \n {hasDailyFxRateOverrideFeature && (\n <>\n
    \n \n \n )}\n
    \n );\n};\n","import { useCallback, useMemo } from 'react';\nimport {\n allTimezones,\n ILabelStyle,\n useTimezoneSelect,\n} from 'react-timezone-select';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { useCustomTimeZoneSettings } from 'src/hooks/api/useCustomTimeZoneSettings';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './MyAccount.css';\n\nexport const TimezoneSection = () => {\n const { customTimeZoneSettings, mergeCustomTimeZoneSettings } =\n useCustomTimeZoneSettings();\n\n const selectOptions = {\n labelStyle: 'original' as ILabelStyle,\n timezones: allTimezones,\n };\n\n const { options, parseTimezone } = useTimezoneSelect(selectOptions);\n\n const onTimezoneChange = useCallback(\n (timezoneValue: string) => {\n if (!timezoneValue) {\n mergeCustomTimeZoneSettings({ input: undefined });\n }\n\n const timezone = parseTimezone(timezoneValue);\n if (\n timezone.offset != null &&\n timezone.value != null &&\n customTimeZoneSettings?.value !== timezone.value\n ) {\n mergeCustomTimeZoneSettings({\n input: {\n timezoneOffsetMins: -timezone.offset * 60,\n value: timezone.value,\n },\n });\n }\n },\n [parseTimezone, mergeCustomTimeZoneSettings, customTimeZoneSettings?.value]\n );\n\n const timezoneOptions = useMemo(\n () =>\n Object.values(options || []).reduce(\n (result, cur) => {\n result[cur.value] = cur.label;\n return result;\n },\n {} as Record\n ),\n [options]\n );\n\n return (\n \n
    \n \n
    \n\n \n

    \n \n

    \n
    \n \n
    \n\n \n
    \n
    \n );\n};\n","import { Label } from '@radix-ui/react-label';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n SITE_THEME_MODE_STORAGE_KEY,\n SiteThemeOption,\n SiteZoomOption,\n useSiteTheme,\n} from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, Stack, TooltipPopover } from 'src/core/ui';\nimport { clearIDBCache } from 'src/core/utils/createIndexDBPersister';\nimport { useUserHasAnyOfPermissions } from 'src/hooks/useUserHasAnyOfPermissions';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { IconsFill, InfoOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SITE_THEME_OPTION_TO_CID_MAP } from 'src/utils/constants/contentIdMaps';\nimport { Feature, Permission } from 'src/WebApiController';\n\nimport { CurrencySection } from './CurrencySection';\nimport * as styles from './MyAccount.css';\nimport { TimezoneSection } from './TimezoneSection';\n\n// TODO: Will convert elements to form\nexport const MyAccount = () => {\n const { loginContext } = useAppContext();\n const { isZoomSupported, selectedZoom, setSiteZoom } = useSiteTheme();\n const { selectedMode, setSiteMode } = useSiteTheme();\n const hasPOSTimezoneFeature = useUserHasFeature(Feature.POSTimezone);\n const hasCurrencyConversionSettingsTabFeature = useUserHasFeature(\n Feature.CurrencyConversionSettingsTab\n );\n const userInformation = {\n name: loginContext?.user?.activeAccount?.accountName,\n email: loginContext?.user?.userName,\n };\n\n const hasAdminPermission = useUserHasAnyOfPermissions(\n Permission.SellerAccount_Admin\n );\n\n const queryClient = useQueryClient();\n\n const onZoomChange = useCallback(\n (value: string) => {\n if (value !== selectedZoom) setSiteZoom(value as SiteZoomOption);\n },\n [selectedZoom, setSiteZoom]\n );\n\n const onThemeChange = useCallback(\n (value: string) => {\n if (value !== selectedMode) setSiteMode(value as SiteThemeOption);\n },\n [selectedMode, setSiteMode]\n );\n\n const zoomOptions = Object.values(SiteZoomOption).reduce(\n (options, current) => ({ ...options, [current]: current }),\n {}\n );\n return (\n
    \n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n

    \n \n

    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n

    \n \n

    \n {isZoomSupported && (\n \n )}\n \n {hasPOSTimezoneFeature && hasAdminPermission && (\n <>\n
    \n \n \n )}\n\n
    \n \n \n
    \n
    \n {!hasCurrencyConversionSettingsTabFeature && (\n <>\n \n
    \n \n )}\n
    \n
    \n \n
    \n

    \n \n

    \n
    \n
    \n );\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport {\n AutoPoClient,\n AutoPoSellerAccountCountryRestriction,\n AutoPoSellerAccountVendorRestriction,\n} from 'src/WebApiController';\n\nexport function useAutoPoRestrictionSettings() {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const queryClient = useQueryClient();\n\n const countryQueryKey = [\n 'getSellerAccountCountryRestrictions',\n activeAccountWebClientConfig.activeAccountId,\n ];\n\n const vendorQueryKey = [\n 'getSellerAccountVendorRestrictions',\n activeAccountWebClientConfig.activeAccountId,\n ];\n\n const countryRestrictionQuery = useQuery({\n queryKey: countryQueryKey,\n queryFn: () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return new AutoPoClient(\n activeAccountWebClientConfig\n ).getSellerAccountCountryRestrictions();\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n staleTime: Infinity,\n meta: {\n onError: (error: ErrorTypes) => {\n showErrorDialog(\n 'AutoPoClient.getSellerAccountCountryRestrictions',\n error\n );\n },\n },\n });\n\n const countryRestrictionMutation = useMutation({\n mutationFn: async ({\n restrictions,\n }: {\n restrictions: AutoPoSellerAccountCountryRestriction[];\n }) => {\n return await new AutoPoClient(\n activeAccountWebClientConfig\n ).upsertSellerAccountCountryRestrictions(restrictions);\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n onMutate: ({ restrictions }) => {\n queryClient.cancelQueries({ queryKey: countryQueryKey });\n const prevValue = queryClient.getQueryData(countryQueryKey);\n queryClient.setQueryData(countryQueryKey, restrictions);\n return { prevValue };\n },\n onError: (err: ErrorTypes, { restrictions }, context) => {\n queryClient.setQueryData(countryQueryKey, context?.prevValue);\n showErrorDialog(\n 'AutoPoClient.upsertSellerAccountCountryRestrictions',\n err,\n {\n trackErrorData: { restrictions },\n }\n );\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey: countryQueryKey });\n },\n });\n\n const vendorRestrictionQuery = useQuery({\n queryKey: vendorQueryKey,\n queryFn: () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return new AutoPoClient(\n activeAccountWebClientConfig\n ).getSellerAccountVendorRestrictions();\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n staleTime: Infinity,\n meta: {\n onError: (error: ErrorTypes) => {\n showErrorDialog(\n 'AutoPoClient.getSellerAccountVendorRestrictions',\n error\n );\n },\n },\n });\n\n const vendorRestrictionMutation = useMutation({\n mutationFn: async ({\n restrictions,\n }: {\n restrictions: AutoPoSellerAccountVendorRestriction[];\n }) => {\n return await new AutoPoClient(\n activeAccountWebClientConfig\n ).upsertSellerAccountVendorRestrictions(restrictions);\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n onMutate: ({ restrictions }) => {\n queryClient.cancelQueries({ queryKey: vendorQueryKey });\n const prevValue = queryClient.getQueryData(vendorQueryKey);\n queryClient.setQueryData(vendorQueryKey, restrictions);\n return { prevValue };\n },\n onError: (err: ErrorTypes, { restrictions }, context) => {\n queryClient.setQueryData(vendorQueryKey, context?.prevValue);\n showErrorDialog(\n 'AutoPoClient.upsertSellerAccountVendorRestrictions',\n err,\n {\n trackErrorData: { restrictions },\n }\n );\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey: vendorQueryKey });\n },\n });\n\n return {\n countryRestrictionQuery,\n countryRestrictionMutation,\n vendorRestrictionQuery,\n vendorRestrictionMutation,\n };\n}\n","import {\n AutoPoSellerAccountCountryRestriction,\n AutoPoSellerAccountVendorRestriction,\n} from 'src/WebApiController';\n\nexport const sortCountryRestrictions = (\n a: AutoPoSellerAccountCountryRestriction,\n b: AutoPoSellerAccountCountryRestriction\n) => {\n if (a.isEnabled !== b.isEnabled) {\n return a.isEnabled ? -1 : 1;\n }\n return a.country.localeCompare(b.country);\n};\n\nexport const sortVendorRestrictions = (\n a: AutoPoSellerAccountVendorRestriction,\n b: AutoPoSellerAccountVendorRestriction\n) => {\n if (a.isIncluded !== b.isIncluded) {\n return a.isIncluded ? -1 : 1;\n }\n return a.vendorId > b.vendorId ? -1 : 1;\n};\n","import clsx from 'clsx';\nimport { isEqual } from 'lodash-es';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { usePurchaseVendorSelector } from 'src/components/Selectors/PurchaseVendorSelector/usePurchaseVendorSelector';\nimport { Content } from 'src/contexts/ContentContext';\nimport { MultiSelectDropBoxWithPills } from 'src/core/POS/MultiSelectDropBoxWithPills';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { shared, vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { ToggleGroup } from 'src/core/ui/ToggleGroup';\nimport { useAutoPoRestrictionSettings } from 'src/hooks/api/useAutoPoRestrictionSettings';\nimport { useKnownCountries } from 'src/hooks/api/useKnownCountries';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n AutoPoSellerAccountCountryRestriction,\n AutoPoSellerAccountVendorRestriction,\n} from 'src/WebApiController';\n\nimport * as styles from './PurchaseOrderSetting.css';\nimport {\n sortCountryRestrictions,\n sortVendorRestrictions,\n} from './PurchaseOrderSetting.utils';\n\ntype RestictionFormFieldValues = {\n countryRestrictions: AutoPoSellerAccountCountryRestriction[];\n vendorRestrictions: AutoPoSellerAccountVendorRestriction[];\n};\n\nconst enum IncludeExcludeOptions {\n Include = 'include',\n Exclude = 'exclude',\n}\n\nconst getIncludeExcludeOptions = () => {\n const includeText = ;\n const excludeText = ;\n return [\n { value: IncludeExcludeOptions.Include, children: includeText },\n { value: IncludeExcludeOptions.Exclude, children: excludeText },\n ];\n};\n\nexport function AutoPoRestictionForm() {\n const {\n countryRestrictionMutation,\n countryRestrictionQuery,\n vendorRestrictionMutation,\n vendorRestrictionQuery,\n } = useAutoPoRestrictionSettings();\n\n const [isLoading, setIsLoading] = useState(false);\n\n const [includeExclude, setIncludeExclude] = useState(\n IncludeExcludeOptions.Include\n );\n\n const { query: vendorQuery, posSelectProps: vendorSelectProps } =\n usePurchaseVendorSelector({});\n\n const knownCountriesQuery = useKnownCountries();\n\n const knownCountriesOption = useMemo(() => {\n if (knownCountriesQuery.data == null) {\n return {};\n }\n\n return Object.entries(knownCountriesQuery.data).reduce(\n (r, [key, value]) => {\n r[key] = value;\n return r;\n },\n {} as Record\n );\n }, [knownCountriesQuery.data]);\n\n const formDefaultValues = useMemo(() => {\n return {\n countryRestrictions: (countryRestrictionQuery.data ?? []).toSorted(\n sortCountryRestrictions\n ),\n vendorRestrictions: (vendorRestrictionQuery.data ?? []).toSorted(\n sortVendorRestrictions\n ),\n };\n }, [countryRestrictionQuery.data, vendorRestrictionQuery.data]);\n\n useEffect(() => {\n if (vendorRestrictionQuery.data) {\n let newIncludeExclude = IncludeExcludeOptions.Include;\n if (\n vendorRestrictionQuery.data.every((r) => !r.isIncluded) &&\n vendorRestrictionQuery.data.length > 0\n ) {\n newIncludeExclude = IncludeExcludeOptions.Exclude;\n }\n\n if (newIncludeExclude !== includeExclude) {\n setIncludeExclude(newIncludeExclude);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [vendorRestrictionQuery.data]);\n\n const {\n handleSubmit,\n watch,\n setValue,\n reset,\n formState: { defaultValues },\n } = useForm({\n defaultValues: formDefaultValues,\n });\n\n useEffect(() => {\n reset(formDefaultValues);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [formDefaultValues]);\n\n const countryRestrictions = watch('countryRestrictions');\n const vendorRestrictions = watch('vendorRestrictions');\n\n const onSubmitHandler = useCallback(\n async (data: RestictionFormFieldValues) => {\n setIsLoading(true);\n try {\n // if country dirty, then update country\n if (\n !isEqual(data.countryRestrictions, defaultValues?.countryRestrictions)\n ) {\n await countryRestrictionMutation.mutateAsync({\n restrictions: data.countryRestrictions,\n });\n }\n\n // We only trim the data when submitting, so that we keep the data when user is switching between include/exclude\n const vendorRestrictionsForSumbit = data.vendorRestrictions\n .filter((r) => {\n if (includeExclude === IncludeExcludeOptions.Include) {\n return r.isIncluded;\n }\n return !r.isIncluded;\n })\n .toSorted(sortVendorRestrictions);\n\n // if vendor dirty, then update vendor\n if (\n !isEqual(\n vendorRestrictionsForSumbit,\n defaultValues?.vendorRestrictions\n )\n ) {\n await vendorRestrictionMutation.mutateAsync({\n restrictions: vendorRestrictionsForSumbit,\n });\n }\n } finally {\n setIsLoading(false);\n }\n },\n [\n countryRestrictionMutation,\n defaultValues?.countryRestrictions,\n defaultValues?.vendorRestrictions,\n includeExclude,\n vendorRestrictionMutation,\n ]\n );\n\n const includedCountryCodes = useMemo(() => {\n return countryRestrictions.filter((r) => r.isEnabled).map((r) => r.country);\n }, [countryRestrictions]);\n\n const includedVendorIds = useMemo(() => {\n return vendorRestrictions\n .filter((r) => r.isIncluded)\n .map((r) => r.vendorId.toString());\n }, [vendorRestrictions]);\n\n const excludedVendorIds = useMemo(() => {\n return vendorRestrictions\n .filter((r) => !r.isIncluded)\n .map((r) => r.vendorId.toString());\n }, [vendorRestrictions]);\n\n const onIncludedVendorChange = useCallback(\n (values: string[]) => {\n // If select all, then we clear the list\n const isAllSelected =\n values.length >=\n Object.keys(vendorSelectProps.valueOptionsContent).length;\n\n const newVendorRestrictions = [\n ...(isAllSelected\n ? []\n : values.map((id) => ({\n vendorId: parseInt(id),\n isIncluded: true,\n }))),\n // Remove them from excluded list\n ...vendorRestrictions.filter(\n (r) => !r.isIncluded && !values.includes(r.vendorId.toString())\n ),\n ].toSorted(sortVendorRestrictions);\n\n setValue('vendorRestrictions', newVendorRestrictions);\n },\n [setValue, vendorRestrictions, vendorSelectProps.valueOptionsContent]\n );\n\n const onExcludedVendorChange = useCallback(\n (values: string[]) => {\n const newVendorRestrictions = [\n // Remove them from included list\n ...vendorRestrictions.filter(\n (r) => r.isIncluded && !values.includes(r.vendorId.toString())\n ),\n ...values.map((id) => ({\n vendorId: parseInt(id),\n isIncluded: false,\n })),\n ].toSorted(sortVendorRestrictions);\n\n setValue('vendorRestrictions', newVendorRestrictions);\n },\n [setValue, vendorRestrictions]\n );\n\n const onIncludedCountryChange = useCallback(\n (values: string[]) => {\n // If select all, then we clear the list\n const isAllSelected =\n values.length >= Object.keys(knownCountriesOption).length;\n\n const newCountryRestrictions = isAllSelected\n ? []\n : values\n .map((countryCode) => ({\n country: countryCode,\n isEnabled: true,\n }))\n .toSorted(sortCountryRestrictions);\n\n setValue('countryRestrictions', newCountryRestrictions);\n },\n [knownCountriesOption, setValue]\n );\n\n const onIncludeExcludeChange = useCallback((value: string) => {\n if (!value) {\n return;\n }\n\n setIncludeExclude(value as IncludeExcludeOptions);\n }, []);\n\n if (\n countryRestrictionQuery.isLoading ||\n vendorQuery.isLoading ||\n knownCountriesQuery.isLoading\n ) {\n return ;\n }\n\n return (\n
    \n
    \n \n
    \n
    \n

    \n \n

    \n

    \n \n

    \n

    \n \n

    \n \n\n {includeExclude === IncludeExcludeOptions.Include ? (\n \n \n \n ) : (\n \n \n \n )}\n\n

    \n \n

    \n\n

    \n \n

    \n \n \n \n\n
    \n \n
    \n
    \n
    \n );\n}\n","import { useMutation } from '@tanstack/react-query';\nimport { cloneDeep } from 'lodash-es';\nimport { useEffect, useMemo } from 'react';\nimport { Controller, useForm } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button } from 'src/core/ui';\nimport { useSyncCenterSettings } from 'src/hooks/api/useSyncCenterSetting';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SellerAccountClient, SyncCenterSettings } from 'src/WebApiController';\n\nimport { SyncCenterFieldValues } from '../SyncCenter/SyncCenter.types';\nimport {\n setValueAsNumber,\n toSyncCenterFieldValues,\n toSyncCenterSettings,\n} from '../SyncCenter/SyncCenter.utils';\nimport * as styles from './PurchaseOrderSetting.css';\n\nexport function PurchaseOrderGeneralSettingForm() {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const query = useSyncCenterSettings();\n\n const formDefaultValues = useMemo(() => {\n if (query.data) {\n return toSyncCenterFieldValues(cloneDeep(query.data));\n }\n return undefined;\n }, [query.data]);\n\n const mutation = useMutation({\n mutationFn: async (data: SyncCenterSettings) => {\n return new SellerAccountClient(activeAccountWebClientConfig)\n .mergeSyncCenterSettings(data)\n .then(() => query.refetch());\n },\n onError: (err: ErrorTypes, data) => {\n showErrorDialog('SellerAccountClient.mergeSyncCenterSettings', err, {\n trackErrorData: { data },\n });\n },\n });\n\n const { control, register, handleSubmit, reset } =\n useForm({\n defaultValues: formDefaultValues,\n });\n\n useEffect(() => {\n reset(formDefaultValues);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [formDefaultValues]);\n\n if (query.isLoading) {\n return ;\n }\n\n return (\n
    \n
    \n \n
    \n
    \n }\n className={styles.textField}\n >\n \n \n\n (\n }\n checked={Boolean(value)}\n onChange={(e) => {\n onChange(e.currentTarget.checked);\n }}\n {...field}\n />\n )}\n />\n\n
    \n {\n mutation.mutate(toSyncCenterSettings(data));\n })}\n >\n \n \n
    \n
    \n
    \n );\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { AutoPoRestictionForm } from './AutoPoRestictionForm';\nimport { PurchaseOrderGeneralSettingForm } from './PurchaseOrderGeneralSettingForm';\nimport * as styles from './PurchaseOrderSetting.css';\n\nexport function PurchaseOrderSettingsContent() {\n return (\n
    \n
    \n

    \n \n

    \n \n \n
    \n
    \n );\n}\n","import {useAppContext} from \"src/contexts/AppContext\";\nimport {ErrorTypes, useErrorBoundaryContext} from \"src/contexts/ErrorBoundaryContext\";\nimport {useSyncCenterSettings} from \"src/hooks/api/useSyncCenterSetting\";\nimport {useMutation} from \"@tanstack/react-query\";\nimport {SellerAccountClient} from \"src/WebApiController\";\nimport {PosSpinner} from \"src/core/POS/PosSpinner\";\nimport * as styles from \"./AccountSetting.css\";\nimport {Content} from \"src/contexts/ContentContext\";\nimport {ContentId} from \"src/utils/constants/contentId\";\nimport {Button, Stack} from \"src/core/ui\";\nimport {Switch} from \"src/core/interim/Switch\";\nimport {vars} from \"src/core/themes\";\n\n\n\nexport function AccountingSetting() {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const query = useSyncCenterSettings();\n\n const mutation = useMutation({\n mutationFn: async (isAutoAddCancelledProceed: boolean) => {\n if (query.data == undefined) {\n showErrorDialog('SellerAccountClient.mergeSyncCenterSettings', null, {\n trackErrorData: query,\n });\n return;\n }\n return new SellerAccountClient(activeAccountWebClientConfig)\n .mergeSyncCenterSettings({\n ...query.data,\n isAutoAddCancelledProceedsEnabled: isAutoAddCancelledProceed\n })\n .then(() => query.refetch());\n },\n onError: (err: ErrorTypes, data) => {\n showErrorDialog('SellerAccountClient.mergeSyncCenterSettings', err, {\n trackErrorData: { data },\n });\n },\n });\n\n if (query.isLoading) {\n return ;\n }\n\n return (\n \n
    \n \n
    \n \n
    \n \n
    \n

    \n \n

    \n \n {\n mutation.mutate(e.currentTarget.checked);\n }}\n />\n
    \n \n
    \n
    \n
    \n
    \n );\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { PurchaseClient } from 'src/WebApiController';\n\nexport function useGetAccessiblePurchasePaymentMethodsQuery() {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n return useQuery({\n queryKey: [\n 'getAccessiblePurchasePaymentMethods',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return new PurchaseClient(\n activeAccountWebClientConfig\n ).getAccessiblePurchasePaymentMethods();\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('PurchaseClient.getAccessiblePurchasePaymentMethods', error);\n },\n },\n });\n}\n","import { ComponentProps, ReactElement, useEffect } from 'react';\nimport { Controller, useForm } from 'react-hook-form';\nimport { CancelButton } from 'src/components/Buttons';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { GenericDialog } from 'src/core/interim/dialogs/GenericDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { Button } from 'src/core/ui';\nimport {\n FieldError,\n FieldLabel,\n FieldWrapper,\n} from 'src/modals/common/Purchase';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PAYMENT_METHOD_TYPE_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { PurchasePaymentMethod } from 'src/WebApiController';\n\nexport type PurchasePaymentMethodDialogProps = Omit<\n ComponentProps,\n 'header' | 'footer'\n> & {\n onSave?: (data: PurchasePaymentMethod) => void | Promise;\n onCancel?: () => void;\n paymentMethod: PurchasePaymentMethod | undefined;\n};\n\nexport function PurchasePaymentMethodDialog({\n onSave,\n onCancel,\n paymentMethod,\n ...genericDialogProps\n}: PurchasePaymentMethodDialogProps): ReactElement | null {\n const requiredText = useContent(ContentId.Required);\n\n const {\n control,\n register,\n reset,\n handleSubmit,\n getValues,\n formState: { isSubmitting, errors },\n } = useForm({\n defaultValues: paymentMethod,\n });\n\n const { id } = getValues();\n\n useEffect(() => {\n reset(paymentMethod);\n }, [paymentMethod, reset]);\n\n return (\n \n }\n footer={\n <>\n \n \n \n \n \n }\n onClosed={() => {\n reset();\n }}\n {...genericDialogProps}\n onCancel={onCancel}\n >\n \n \n \n \n (\n \n )}\n />\n {errors.type && {errors.type?.message}}\n \n \n }\n >\n \n \n \n \n }\n >\n \n \n \n \n );\n}\n","import { ColumnDef } from '@tanstack/react-table';\nimport { IconButton } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { DeleteIcon, EditIcon, PlusIcon } from 'src/svgs/Viagogo';\nimport { TableShimmeringDiv } from 'src/tables/Table/Table.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n PurchasePaymentMethod,\n PurchasePaymentMethodType,\n} from 'src/WebApiController';\n\nexport type PurchasePaymentActions = {\n editPurchasePayment?: (purchasePayment: PurchasePaymentMethod) => void;\n deletePurchasePayment: (purchasePaymentMethodId: number) => void;\n};\n\nexport type PurchasePaymentMethodWithHandlers = {\n purchasePaymentMethod: PurchasePaymentMethod;\n purchasePaymentActions: PurchasePaymentActions;\n};\n\nexport const PAYMENT_METHOD_TABLE_COLUMNS_CONFIG: ColumnDef[] =\n [\n {\n id: 'paymentMethodDisplay',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data?.purchasePaymentMethod?.display,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as string;\n if (!original) {\n return ;\n }\n return {value};\n },\n },\n {\n id: 'paymentMethodName',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data?.purchasePaymentMethod?.name,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as string;\n if (!original) {\n return ;\n }\n return {value};\n },\n },\n {\n id: 'paymentMethodType',\n header: () => (\n \n \n \n ),\n accessorFn: (data) => data?.purchasePaymentMethod?.type,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue() as PurchasePaymentMethodType;\n if (!original) {\n return ;\n }\n return {value};\n },\n },\n {\n id: 'paymentMethodActions',\n header: () => (\n \n \n \n ),\n cell: ({ row: { original } }) => {\n return (\n \n \n }\n onClick={() =>\n original?.purchasePaymentActions.editPurchasePayment?.(\n original.purchasePaymentMethod\n )\n }\n titleContentId={ContentId.Edit}\n />\n }\n onClick={() =>\n original?.purchasePaymentActions.deletePurchasePayment(\n original.purchasePaymentMethod.id\n )\n }\n titleContentId={ContentId.Edit}\n />\n \n \n );\n },\n },\n ];\n","import {\n InitialTableState,\n PaginationState,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useEffect, useMemo, useState } from 'react';\nimport {\n Content,\n FormatContent,\n useContent,\n} from 'src/contexts/ContentContext';\nimport { useConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog/useConfirmDialog';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { NoData, Table } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { Feature, PurchasePaymentMethod } from 'src/WebApiController';\n\nimport {\n PAYMENT_METHOD_TABLE_COLUMNS_CONFIG,\n PurchasePaymentMethodWithHandlers,\n} from './configs/PurchasePaymentMethodsTableColumnsConfig';\n\nexport type PurchasePaymentMethodsTableDataProps = {\n purchasePaymentMethods?: PurchasePaymentMethod[];\n onEditPaymentMethod?: (purchasePayment: PurchasePaymentMethod) => void;\n onDeletePaymentMethod?: (\n purchasePaymentMethodId: number,\n closeConfirmDeleteDialog: () => void\n ) => Promise;\n};\n\nexport type PurchasePaymentMethodsTableProps =\n PurchasePaymentMethodsTableDataProps & {\n onMount?: () => void;\n onUnmount?: (state: object) => void;\n initState?: InitialTableState;\n withOuterPadding?: boolean;\n };\n\nconst PAGE_SIZE = 10;\n\nexport function PurchasePaymentMethodsTable({\n purchasePaymentMethods,\n onEditPaymentMethod,\n onDeletePaymentMethod,\n onMount,\n onUnmount,\n initState,\n withOuterPadding,\n}: PurchasePaymentMethodsTableProps) {\n const hasPurchasePaymentEditFeature = useUserHasFeature(\n Feature.PurchasePaymentMethodEdit\n );\n const purchasePaymentMethodsText = useContent(ContentId.PaymentMethods);\n // Enable passing in table state as parameters -- we can remount with the last state the user was on\n const [sorting, setSorting] = useState(\n initState?.sorting || []\n );\n const [{ pageIndex, pageSize }, setPagination] = useState({\n pageIndex: initState?.pagination?.pageIndex || 0,\n pageSize: PAGE_SIZE,\n });\n\n const pagination = useMemo(\n () => ({\n pageIndex,\n pageSize,\n }),\n [pageIndex, pageSize]\n );\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n /**\n * Intent for `onMount` is use with 'windowing' in order to maintain user state\n * when the component is scrolled back into view.\n * Anything that needs to be persisted in `react-table` state should be added here.\n * Only update on unmount to ensure we aren't doing too many re-renders.\n */\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n const {\n openConfirmDialog: openConfirmDeleteDialog,\n closeConfirmDialog: closeConfirmDeleteDialog,\n } = useConfirmDialog();\n\n const data = useMemo(() => {\n const purchasePaymentActions = {\n editPurchasePayment: onEditPaymentMethod,\n deletePurchasePayment: (purchasePaymentMethodId: number) => {\n openConfirmDeleteDialog({\n size: 's',\n headerText: ,\n bodyText: ,\n onOkay: () => {\n onDeletePaymentMethod?.(\n purchasePaymentMethodId,\n closeConfirmDeleteDialog\n );\n },\n onCancel: closeConfirmDeleteDialog,\n okText: ContentId.Yes,\n cancelText: ContentId.No,\n });\n },\n };\n return purchasePaymentMethods?.map((v) => ({\n purchasePaymentMethod: v,\n purchasePaymentActions,\n }));\n }, [\n closeConfirmDeleteDialog,\n onDeletePaymentMethod,\n onEditPaymentMethod,\n openConfirmDeleteDialog,\n purchasePaymentMethods,\n ]);\n\n const options: Partial<\n TableOptions\n > = useMemo(\n () => ({\n data,\n columns: hasPurchasePaymentEditFeature\n ? PAYMENT_METHOD_TABLE_COLUMNS_CONFIG\n : PAYMENT_METHOD_TABLE_COLUMNS_CONFIG.filter(\n (column) => column.id !== 'paymentMethodActions'\n ),\n state: {\n pagination,\n sorting,\n },\n onPaginationChange: setPagination,\n onSortingChange: setSorting,\n }),\n [data, hasPurchasePaymentEditFeature, pagination, sorting]\n );\n\n return purchasePaymentMethods?.length ? (\n
    \n ) : (\n \n \n \n );\n}\n","import { UseQueryResult } from '@tanstack/react-query';\nimport {\n MutableRefObject,\n useCallback,\n useImperativeHandle,\n useState,\n} from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { Button, Card, Stack } from 'src/core/ui';\nimport { PurchasePaymentMethodDialog } from 'src/dialogs/PurchasePaymentMethodDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ApiException,\n PurchaseClient,\n PurchasePaymentMethod,\n PurchasePaymentMethodType,\n} from 'src/WebApiController';\n\nimport { VendorTableContainer } from '../VendorsTable/VendorsTableContainer.styled';\nimport { PurchasePaymentMethodsTable } from './PurchasePaymentMethodsTable';\n\nexport interface PurchasePaymentMethodsImperativeRef {\n onAddNewPaymentMethod: () => void;\n}\n\nexport function PurchasePaymentMethodsTableContainer({\n purchasePaymentMethods,\n paymentMethodsQuery,\n purchasePaymentMethodsImperativeRef,\n useNewStyles = false,\n}: {\n purchasePaymentMethods?: PurchasePaymentMethod[];\n paymentMethodsQuery: UseQueryResult;\n purchasePaymentMethodsImperativeRef?: MutableRefObject;\n useNewStyles?: boolean;\n}) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { closeDialog, launchDialog, dialogProps } = useBasicDialog();\n const [currentPaymentMethod, setCurrentPaymentMethod] =\n useState();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const onAddNewPaymentMethod = useCallback(() => {\n setCurrentPaymentMethod({\n display: '',\n id: -1,\n name: '',\n type: PurchasePaymentMethodType.Other,\n });\n launchDialog();\n }, [launchDialog]);\n\n const onEditPaymentMethod = useCallback(\n (paymentMethod: PurchasePaymentMethod) => {\n setCurrentPaymentMethod({ ...paymentMethod });\n launchDialog();\n },\n [launchDialog]\n );\n\n const onDeletePaymentMethod = useCallback(\n async (\n purchasePaymentMethodId: number,\n closeConfirmDeleteDialog: () => void\n ) => {\n await tryInvokeApi(\n async () => {\n const isDeleted = await new PurchaseClient(\n activeAccountWebClientConfig\n ).deletePurchasePaymentMethod(purchasePaymentMethodId);\n\n if (isDeleted) {\n paymentMethodsQuery.refetch();\n closeConfirmDeleteDialog();\n }\n },\n (error) => {\n showErrorDialog('PurchaseClient.deletePurchasePaymentMethod', error, {\n trackErrorData: { purchasePaymentMethodId },\n });\n }\n );\n },\n [activeAccountWebClientConfig, paymentMethodsQuery, showErrorDialog]\n );\n\n const onSavePaymentMethod = useCallback(\n async (paymentMethod: PurchasePaymentMethod) => {\n await tryInvokeApi(\n async () => {\n if (paymentMethod.id > 0) {\n const updatedPaymentMethod = await new PurchaseClient(\n activeAccountWebClientConfig\n ).updatePurchasePaymentMethod(paymentMethod);\n\n if (updatedPaymentMethod) {\n paymentMethodsQuery.refetch();\n closeDialog();\n }\n } else {\n const newId = await new PurchaseClient(\n activeAccountWebClientConfig\n ).insertPurchasePaymentMethod(paymentMethod);\n\n if (newId) {\n paymentMethodsQuery.refetch();\n closeDialog();\n } else {\n // This should never happen\n // Normal errors would have fallen to the error catch\n showErrorDialog(\n 'PurchaseClient.insertPurchasePaymentMethod',\n {\n message:\n 'Unable to create payment method ' + paymentMethod.id,\n status: 500,\n } as ApiException,\n {\n trackErrorData: paymentMethod,\n }\n );\n }\n }\n },\n (error) => {\n showErrorDialog('PurchaseClient.insertPurchasePaymentMethod', error, {\n trackErrorData: paymentMethod,\n });\n }\n );\n },\n [\n activeAccountWebClientConfig,\n closeDialog,\n paymentMethodsQuery,\n showErrorDialog,\n ]\n );\n\n const onPaymentMethodCancel = useCallback(() => {\n setCurrentPaymentMethod(undefined);\n closeDialog();\n }, [closeDialog]);\n\n useImperativeHandle(\n purchasePaymentMethodsImperativeRef,\n () => {\n return {\n onAddNewPaymentMethod,\n };\n },\n [onAddNewPaymentMethod]\n );\n\n const table = (\n \n );\n return (\n <>\n \n \n {!useNewStyles && (\n \n )}\n {useNewStyles ? {table} : <>{table}}\n \n \n \n \n );\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useGetAccessiblePurchasePaymentMethodsQuery } from 'src/hooks/api/useGetAccessiblePurchasePaymentMethodsQuery';\nimport { BodySectionTitle } from 'src/modals/common/Purchase';\nimport { PurchasePaymentMethodsTableContainer } from 'src/tables/PurchasePaymentMethodsTable/PurchasePaymentMethodsTableContainer';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const SellerAccountSettingPaymentMethods = () => {\n const purchasePaymentMethodsQuery =\n useGetAccessiblePurchasePaymentMethodsQuery();\n\n const purchasePaymentMethods = purchasePaymentMethodsQuery.data;\n\n return (\n <>\n \n \n \n {purchasePaymentMethodsQuery.isLoading ? (\n \n ) : (\n \n )}\n \n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { PurchaseClient } from 'src/WebApiController';\n\nexport const GET_ACCESSIBLE_VENDOR_ACCOUNTS_KEY = 'getAccessibleVendorAccounts';\n\nexport function useGetAccessibleVendorAccountsQuery(\n purchaseOrderVendorIds: number[] | null | undefined\n) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n return useQuery({\n queryKey: [\n GET_ACCESSIBLE_VENDOR_ACCOUNTS_KEY,\n activeAccountWebClientConfig.activeAccountId,\n purchaseOrderVendorIds,\n ],\n queryFn: () => {\n if (!purchaseOrderVendorIds?.length) {\n // If all of these are nulls, return nothing\n return null;\n }\n\n return new PurchaseClient(\n activeAccountWebClientConfig\n ).getAccessibleVendorAccounts(\n { item1: purchaseOrderVendorIds, item2: [] },\n null,\n null,\n null\n );\n },\n\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('PurchaseClient.getAccessibleVendorAccounts', error, {\n vendorIdSelected: purchaseOrderVendorIds,\n });\n },\n },\n });\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { PurchaseClient } from 'src/WebApiController';\n\nexport const GET_ACCESSIBLE_VENDORS_QUERY_KEY = 'getAccessibleVendors';\n\ninterface UseGetAccessibleVendorsQueryProps {\n getOverride: boolean;\n getVendorAccountsCount: boolean;\n}\n\nexport function useGetAccessibleVendorsQuery({\n getOverride,\n getVendorAccountsCount,\n}: UseGetAccessibleVendorsQueryProps) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n return useQuery({\n queryKey: [\n GET_ACCESSIBLE_VENDORS_QUERY_KEY,\n activeAccountWebClientConfig.activeAccountId,\n getOverride,\n ],\n queryFn: () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return tryInvokeApi(\n () => {\n return new PurchaseClient(\n activeAccountWebClientConfig\n ).getAccessibleVendors(getOverride, getVendorAccountsCount);\n },\n (error) => {\n trackError('PurchaseClient.getAccessibleVendors', error);\n }\n );\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n });\n}\n","import clsx from 'clsx';\nimport { ReactNode, useCallback, useState } from 'react';\nimport { Virtuoso } from 'react-virtuoso';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { PosDropdown, PosDropdownItem } from 'src/core/POS/PosDropdown';\nimport { shared, vars } from 'src/core/themes';\nimport { Button, Card } from 'src/core/ui';\nimport { PurchaseVendorAccountDialog } from 'src/dialogs/PurchaseVendorAccountDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { EditIcon, IconsFill, MoreIcon, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ApiException,\n PurchaseClient,\n PurchaseVendorAccount,\n PurchaseVendorAccountDetails,\n} from 'src/WebApiController';\n\nimport { VendorAccountEditInfo } from '../../VendorManagement/Vendors/hooks/useAddVendorAccount';\nimport * as styles from './SellerAccountSettingVendorAccounts.css';\n\nconst EMPTY_INFO_PLACEHOLDER = '-';\n\nexport type SellerAccountSettingVendorAccountsProps = {\n vendorId: number;\n vendorAccounts: PurchaseVendorAccount[] | undefined;\n refetchVendorAccounts: () => Promise;\n};\n\nexport function SellerAccountSettingVendorAccounts({\n vendorId,\n vendorAccounts,\n refetchVendorAccounts,\n}: SellerAccountSettingVendorAccountsProps) {\n const { activeAccountWebClientConfig } = useAppContext();\n const venderAccountDialog = useBasicDialog();\n const deleteDialog = useBasicDialog();\n const [currentVendorAccount, setCurrentVendorAccount] =\n useState();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const onAddNewVendorAccount = useCallback(() => {\n setCurrentVendorAccount({\n vendorId: vendorId,\n id: '',\n });\n venderAccountDialog.launchDialog();\n }, [venderAccountDialog, vendorId]);\n\n const onSaveVendorAccount = useCallback(\n async (vendorAccount: PurchaseVendorAccountDetails) => {\n await tryInvokeApi(\n async () => {\n const newId = await new PurchaseClient(\n activeAccountWebClientConfig\n ).mergeVendorAccount(vendorAccount);\n\n if (newId) {\n refetchVendorAccounts();\n venderAccountDialog.closeDialog();\n } else {\n // This should never happen\n // Normal errors would have fallen to the error catch\n showErrorDialog(\n 'PurchaseClient.mergeVendorAccount',\n {\n message:\n 'Unable to create or save vendorAccount ' + vendorAccount.id,\n status: 500,\n } as ApiException,\n {\n trackErrorData: vendorAccount,\n }\n );\n }\n },\n (error) => {\n showErrorDialog('PurchaseClient.mergeVendorAccount', error, {\n trackErrorData: vendorAccount,\n });\n }\n );\n },\n [\n activeAccountWebClientConfig,\n refetchVendorAccounts,\n venderAccountDialog,\n showErrorDialog,\n ]\n );\n\n const onVendorAccountCancel = useCallback(() => {\n setCurrentVendorAccount(undefined);\n venderAccountDialog.closeDialog();\n }, [venderAccountDialog]);\n\n const onVendorAccountDelete = useCallback(async () => {\n await tryInvokeApi(\n async () => {\n const newId = await new PurchaseClient(\n activeAccountWebClientConfig\n ).deleteVendorAccount(currentVendorAccount?.id);\n\n if (newId) {\n refetchVendorAccounts();\n deleteDialog.closeDialog();\n } else {\n // This should never happen\n // Normal errors would have fallen to the error catch\n showErrorDialog(\n 'PurchaseClient.deleteVendorAccount',\n {\n message:\n 'Unable to delete vendor account ' + currentVendorAccount?.id,\n status: 500,\n } as ApiException,\n {\n trackErrorData: currentVendorAccount,\n }\n );\n }\n },\n (error) => {\n showErrorDialog('PurchaseClient.deleteVendorAccount', error, {\n trackErrorData: currentVendorAccount,\n });\n }\n );\n }, [\n activeAccountWebClientConfig,\n currentVendorAccount,\n refetchVendorAccounts,\n deleteDialog,\n showErrorDialog,\n ]);\n\n return (\n <>\n
    \n
    \n \n
    \n {\n const { id, name, email } = vendorAccount;\n return (\n \n }>\n {name || EMPTY_INFO_PLACEHOLDER}\n \n }>\n {email || EMPTY_INFO_PLACEHOLDER}\n \n
    \n \n }\n align=\"end\"\n >\n {\n setCurrentVendorAccount(vendorAccount);\n venderAccountDialog.launchDialog();\n }}\n >\n \n \n \n
    \n \n {/*\n Endpoints are not available (DeleteVendorAccount) - TODO on POS-518\n {\n setCurrentVendorAccount(vendorAccount);\n deleteDialog.launchDialog();\n }}\n >\n \n \n \n
    \n */}\n \n \n \n );\n }}\n />\n \n \n \n \n \n {currentVendorAccount && (\n \n )}\n }\n bodyText={}\n onOkay={onVendorAccountDelete}\n onCancel={deleteDialog.closeDialog}\n okText={ContentId.Yes}\n cancelText={ContentId.No}\n />\n \n );\n}\n\nfunction InfoEntry({\n label,\n children,\n}: {\n label: ReactNode;\n children: ReactNode;\n}) {\n return (\n
    \n
    \n {label}\n
    \n
    {children}
    \n
    \n );\n}\n","import { debounce } from 'lodash-es';\nimport { useCallback, useMemo, useState } from 'react';\nimport { Virtuoso } from 'react-virtuoso';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n Content,\n useContent,\n useFormattedContent,\n} from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { PosSearchBox } from 'src/core/POS/PosSearchBox';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { shared, vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { PurchaseVendorDialog } from 'src/dialogs/PurchaseVendorDialog';\nimport { useGetAccessibleVendorAccountsQuery } from 'src/hooks/api/useGetAccessibleVendorAccountsQuery';\nimport { useGetAccessibleVendorsQuery } from 'src/hooks/api/useGetAccessibleVendorsQuery';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useFlexSearchIndex } from 'src/hooks/useFlexSearchIndex';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { EditIcon, IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { SomethingWentWrong } from 'src/views/SomethingWentWrong';\nimport {\n ApiException,\n Feature,\n PurchaseClient,\n PurchaseVendor,\n PurchaseVendorAccount,\n} from 'src/WebApiController';\n\nimport { SellerAccountSettingVendorAccounts } from '../SellerAccountSettingVendorAccounts';\nimport * as styles from './SellerAccountSettingVendors.css';\n\nexport function SellerAccountSettingVendors() {\n const vendorsText = useContent(ContentId.Vendors);\n\n const hasSellerAccountPurchaseVendorOverrideFeature = useUserHasFeature(\n Feature.SellerAccountPurchaseVendorOverride\n );\n\n const searchPlaceholderText = useFormattedContent(\n FormatContentId.SearchItem,\n vendorsText\n ) as string;\n\n const vendorsQuery = useGetAccessibleVendorsQuery({\n getOverride: true,\n getVendorAccountsCount: true,\n });\n\n const vendorAccountsQuery = useGetAccessibleVendorAccountsQuery(\n vendorsQuery.data?.map((v) => v.id)\n );\n\n const vendorDialog = useBasicDialog();\n const deleteDialog = useBasicDialog();\n const [currentVendor, setCurrentVendor] = useState();\n const [searchText, setSearchText] = useState('');\n\n const vendorVenueOptionsContent = useMemo(() => {\n return (\n vendorsQuery.data?.reduce(\n (r, cur) => {\n r[cur.id.toString()] = cur.name;\n return r;\n },\n {} as Record\n ) ?? {}\n );\n }, [vendorsQuery.data]);\n\n const { flexSearchIndex } = useFlexSearchIndex(\n vendorVenueOptionsContent,\n Object.keys(vendorVenueOptionsContent).length > 0,\n true\n );\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedOnSearchChange = useCallback(\n debounce((text: string) => {\n const newText = text.trim();\n if (newText !== searchText) {\n setSearchText(newText);\n }\n }, 200),\n [searchText]\n );\n\n const vendorData = useMemo(() => {\n const vendorsData = vendorsQuery.data ?? undefined;\n if (!searchText || !flexSearchIndex) {\n return vendorsData;\n }\n\n const keysToRender = new Set(\n (flexSearchIndex.search(searchText) as string[]).map(Number)\n );\n\n return vendorsData?.filter((v) => keysToRender.has(v.id));\n }, [flexSearchIndex, searchText, vendorsQuery.data]);\n\n const onAddNewVendor = useCallback(() => {\n setCurrentVendor({\n id: -1,\n name: '',\n isGlobal: false,\n delivType: null,\n isNoFulfill: null,\n tktTypeRules: null,\n vendAccCounts: 0,\n });\n vendorDialog.launchDialog();\n }, [vendorDialog]);\n\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const onSaveVendor = useCallback(\n async (vendor: PurchaseVendor) => {\n await tryInvokeApi(\n async () => {\n const newId = await new PurchaseClient(\n activeAccountWebClientConfig\n ).mergeVendor(vendor);\n\n if (newId) {\n vendorsQuery.refetch();\n vendorDialog.closeDialog();\n } else {\n // This should never happen\n // Normal errors would have fallen to the error catch\n showErrorDialog(\n 'PurchaseClient.mergeVendor',\n {\n message: 'Unable to create or save vendor ' + vendor.id,\n status: 500,\n } as ApiException,\n {\n trackErrorData: vendor,\n }\n );\n }\n },\n (error) => {\n showErrorDialog('PurchaseClient.mergeVendor', error, {\n trackErrorData: vendor,\n });\n }\n );\n },\n [activeAccountWebClientConfig, vendorDialog, vendorsQuery, showErrorDialog]\n );\n\n const onVendorCancel = useCallback(() => {\n setCurrentVendor(undefined);\n vendorDialog.closeDialog();\n }, [vendorDialog]);\n\n const onVendorDelete = useCallback(async () => {\n await tryInvokeApi(\n async () => {\n const newId = await new PurchaseClient(\n activeAccountWebClientConfig\n ).deleteVendor(currentVendor?.id);\n\n if (newId) {\n vendorsQuery.refetch();\n deleteDialog.closeDialog();\n } else {\n // This should never happen\n // Normal errors would have fallen to the error catch\n showErrorDialog(\n 'PurchaseClient.deleteVendor',\n {\n message: 'Unable to delete vendor ' + currentVendor?.id,\n status: 500,\n } as ApiException,\n {\n trackErrorData: currentVendor,\n }\n );\n }\n },\n (error) => {\n showErrorDialog('PurchaseClient.deleteVendor', error, {\n trackErrorData: currentVendor,\n });\n }\n );\n }, [\n activeAccountWebClientConfig,\n deleteDialog,\n vendorsQuery,\n showErrorDialog,\n currentVendor,\n ]);\n\n const vendorAccountsByVendorId = useMemo(() => {\n return vendorAccountsQuery.data?.reduce(\n (r, cur) => {\n if (!r[cur.vendorId]) {\n r[cur.vendorId] = [];\n }\n r[cur.vendorId].push(cur);\n return r;\n },\n {} as Record\n );\n }, [vendorAccountsQuery.data]);\n\n return (\n <>\n \n \n
    \n \n
    \n \n \n \n \n \n {vendorsQuery.isLoading || vendorAccountsQuery.isLoading ? (\n \n ) : vendorsQuery.isError || vendorAccountsQuery.isError ? (\n }\n />\n ) : (\n {\n const { id, name } = vendor;\n return (\n \n
    \n
    {name}
    \n {\n setCurrentVendor(vendor);\n vendorDialog.launchDialog();\n }}\n />\n {/* {\n setCurrentVendor(vendor);\n deleteDialog.launchDialog();\n }}\n /> */}\n
    \n \n \n );\n }}\n />\n )}\n \n {currentVendor && (\n \n )}\n }\n bodyText={}\n onOkay={onVendorDelete}\n onCancel={deleteDialog.closeDialog}\n okText={ContentId.Yes}\n cancelText={ContentId.No}\n />\n \n );\n}\n","import { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport * as styles from 'src/modals/common/Purchase/PurchaseModal.css';\nimport { Feature } from 'src/WebApiController';\n\nimport { SellerAccountSettingCurrencyConversionOverrides } from '../SellerAccountSettingCurrencyConversionOverrides';\nimport { SellerAccountSettingPaymentMethods } from '../SellerAccountSettingPaymentMethods';\nimport { SellerAccountSettingVendors } from '../SellerAccountSettingVendors';\n\nexport const SellerAccountSettingBody = () => {\n const hasDailyFxRateOverrideFeature = useUserHasFeature(\n Feature.OverrideDailyFxRate\n );\n const hasCurrencyConversionSettingsTabFeature = useUserHasFeature(\n Feature.CurrencyConversionSettingsTab\n );\n\n return (\n <>\n
    \n \n
    \n\n {hasDailyFxRateOverrideFeature &&\n !hasCurrencyConversionSettingsTabFeature && (\n
    \n \n
    \n )}\n\n
    \n \n
    \n \n );\n};\n","import { vars } from 'src/core/themes';\nimport styled from 'styled-components/macro';\n\nexport const HeaderSection = styled.header<{ muted?: boolean }>`\n background-color: ${(props) =>\n props.muted\n ? props.theme.colors.backgroundSecondary\n : props.theme.colors.backgroundInfo};\n color: ${(props) => props.theme.colors.textPrimary};\n padding: ${() =>\n `${vars.spacing.xl} ${vars.spacing.lg} ${vars.spacing.sm} ${vars.spacing.lg}`};\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n padding: ${vars.spacing.xl} ${vars.spacing.xl} ${vars.spacing.lg} ${vars.spacing.xl};\n `\n )}`}\n`;\n\nexport const HeaderRightGroup = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n text-align: right;\n max-width: 300px;\n align-items: flex-end;\n `\n )}`}\n`;\n\nexport const HeaderLeftGroup = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n\n ${({ theme: { media } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `\n max-width: 300px;\n `\n )}`}\n`;\n\nexport const VendorContainer = styled.div`\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('title4')};\n padding-block-end: ${() => vars.spacing.lg};\n\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\nexport const PurchaseOrderStateContainer = styled.div`\n ${({\n theme: {\n typography: { getStyles },\n },\n }) => getStyles('title4')};\n\n color: ${(props) => props.theme.colors.textNegative};\n padding-block-end: ${() => vars.spacing.lg};\n width: min-content;\n border: 1px solid ${(props) => props.theme.colors.textNegative};\n border-radius: ${() => vars.spacing.sm};\n display: flex;\n align-items: center;\n justify-content: center;\n padding: ${() => vars.spacing.sm};\n`;\n","import { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { FieldLabel, FieldWrapper } from 'src/modals/common/Purchase';\nimport { fieldText } from 'src/modals/common/Purchase/Purchase.css';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './SellerAccountSettingHeader.css';\nimport {\n HeaderLeftGroup,\n HeaderRightGroup,\n HeaderSection,\n VendorContainer,\n} from './SellerAccountSettingHeader.styled';\n\nexport const SellerAccountSettingHeader = () => {\n const { loginContext } = useAppContext();\n const sellerAccountName = loginContext?.user?.displayName;\n const userInformation = {\n name: loginContext?.user?.activeAccount?.accountName,\n email: loginContext?.user?.userName,\n };\n\n return (\n \n
    \n \n \n
    {sellerAccountName}
    \n
    \n \n \n \n \n
    {userInformation.name}
    \n
    \n \n \n \n \n
    {userInformation.email}
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n );\n};\n","import { Stack } from 'src/core/ui';\n\nimport { SellerAccountSettingBody } from './SellerAccountSettingBody';\nimport { SellerAccountSettingHeader } from './SellerAccountSettingHeader';\n\nexport const SellerAccountSetting = () => {\n return (\n \n \n\n \n \n );\n};\n","import { moveElements } from 'src/utils/arrayUtils';\nimport { BLOCKED_PRIORITY } from 'src/utils/ticketTypeUtils';\nimport { DeliveryType, TicketType } from 'src/WebApiController';\n\nimport { SyncCenterTicketTypeRules } from '../SyncCenter.types';\nimport { TicketTypeWithPriority } from './ticketTypeOverrideInputForm.types';\n\nexport const sortTicketTypePriority = (a: number, b: number) => {\n if (a === BLOCKED_PRIORITY) {\n return 1;\n }\n if (b === BLOCKED_PRIORITY) {\n return -1;\n }\n return a - b;\n};\n\nconst sortTicketTypeWithPriority = (\n a: TicketTypeWithPriority,\n b: TicketTypeWithPriority\n) => {\n if (a.priority == BLOCKED_PRIORITY) {\n return 1;\n }\n if (b.priority == BLOCKED_PRIORITY) {\n return -1;\n }\n return a.priority - b.priority;\n};\n\nexport const mapTicketTypeWithPriorityList = (\n ticketTypes: TicketType[],\n deliveryType: DeliveryType,\n ticketTypeRules: SyncCenterTicketTypeRules | undefined\n): TicketTypeWithPriority[] => {\n return ticketTypes.map((tt, i) => {\n if (ticketTypeRules?.[deliveryType]?.[tt] != null) {\n return {\n ticketType: tt,\n priority: ticketTypeRules[deliveryType]![tt]!,\n };\n } else {\n return {\n ticketType: tt,\n // For those missing value we put to the end\n priority: i + ticketTypes.length,\n };\n }\n });\n};\n\nexport const shiftTicketTypePriority = (\n priorityOrderBefore: TicketTypeWithPriority[],\n ticketType: TicketType,\n priority: number // starting from one\n): TicketTypeWithPriority[] => {\n priorityOrderBefore = priorityOrderBefore.toSorted(\n sortTicketTypeWithPriority\n );\n\n const isBlocked = priority === BLOCKED_PRIORITY;\n const fromIndex = priorityOrderBefore.findIndex(\n (p) => p.ticketType === ticketType\n );\n\n const toIndex = isBlocked ? priorityOrderBefore.length - 1 : priority - 1;\n\n priorityOrderBefore[fromIndex].priority = priority;\n\n const priorityOrderAfter = moveElements(\n priorityOrderBefore,\n fromIndex,\n toIndex\n ).map((to, i) => {\n if (to.priority == BLOCKED_PRIORITY) {\n return to;\n }\n return {\n ...to,\n priority: i + 1,\n };\n });\n\n return priorityOrderAfter;\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { cloneDeep } from 'lodash-es';\nimport { Fragment, useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, FormatContent } from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { DELIVERY_OPTIONS_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport {\n DeliveryType,\n Feature,\n TicketClient,\n TicketType,\n} from 'src/WebApiController';\n\nimport * as styles from '../SyncCenter.css';\nimport {\n SyncCenterFieldValues,\n SyncCenterTicketTypeRules,\n} from '../SyncCenter.types';\nimport { getTicketTypePriorityOptions } from '../SyncCenter.utils';\nimport {\n mapTicketTypeWithPriorityList,\n shiftTicketTypePriority,\n sortTicketTypePriority,\n} from './ticketTypeOverrideInputForm.utils';\n\nexport function TicketTypeOverrideInputForm({\n disabled,\n}: {\n disabled?: boolean;\n}) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const hasDisplayTicketOrderedByPriorityFeature = useUserHasFeature(\n Feature.DisplayTicketOrderedByPriority\n );\n const mappingsQuery = useQuery({\n queryKey: [\n 'getAllDeliveryTypeTicketTypeMappings',\n activeAccountWebClientConfig.activeAccountId,\n ],\n queryFn: () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return new TicketClient(\n activeAccountWebClientConfig\n ).getAllDeliveryTypeTicketTypeMappings();\n },\n\n enabled: activeAccountWebClientConfig.activeAccountId != null,\n refetchOnWindowFocus: false,\n meta: {\n onError: (error: ErrorTypes) => {\n showErrorDialog(\n 'TicketClient.getAllDeliveryTypeTicketTypeMappings',\n error\n );\n },\n },\n });\n\n const { watch, setValue, getValues } =\n useFormContext();\n\n const ticketTypeRules = watch('ticketTypeRules');\n\n const onOnlyThisChange = useCallback(\n (\n deliveryType: DeliveryType,\n ticketTypes: TicketType[],\n selectedTicketType: TicketType\n ) => {\n const values = getValues();\n const ticketTypeRules = cloneDeep(values.ticketTypeRules);\n const priorities = ticketTypeRules?.[deliveryType] ?? {};\n ticketTypes.forEach((ticketType) => {\n priorities[ticketType] = ticketType === selectedTicketType ? 1 : -1;\n });\n\n ticketTypeRules![deliveryType] = priorities;\n setValue('ticketTypeRules', ticketTypeRules);\n },\n [getValues, setValue]\n );\n\n if (mappingsQuery.isLoading) {\n return ;\n }\n\n return (\n <>\n {mappingsQuery.data &&\n mappingsQuery.data\n // only allow ordering delivery types with more than 1 ticket type since it's\n // pointless if there's only 1 or less since the order is obvious in that case\n .filter(({ ticketTypes }) => Object.keys(ticketTypes).length > 1)\n .map(({ deliveryType, ticketTypes: tts }) => {\n if (deliveryType === DeliveryType.Wallet) {\n return null;\n }\n\n const deliveryTypeContentId = DELIVERY_OPTIONS_TO_CID[deliveryType];\n\n const ticketTypes = Object.keys(tts).map((k) => k as TicketType);\n\n const numBlockedTicketTypes =\n Object.values(ticketTypeRules?.[deliveryType] ?? {}).filter(\n (to) => to == -1\n ).length ?? 0;\n\n const allTicketTypesHavePriority = ticketTypes.every(\n (tt) => ticketTypeRules?.[deliveryType]?.[tt] != null\n );\n\n // This is used for display only - the ticketTypes variable is ordered by default priority\n // so we don't want to alter that\n const ticketTypesOrdered =\n allTicketTypesHavePriority &&\n hasDisplayTicketOrderedByPriorityFeature\n ? ticketTypes.toSorted((a, b) => {\n const aPriority = ticketTypeRules?.[deliveryType]?.[a] ?? 0;\n const bPriority = ticketTypeRules?.[deliveryType]?.[b] ?? 0;\n return sortTicketTypePriority(aPriority, bPriority);\n })\n : ticketTypes;\n\n return (\n
    \n
    \n ,\n ]}\n />\n
    \n
    \n {ticketTypesOrdered.map((ticketType) => (\n \n setValue('ticketTypeRules', rules)\n }\n onOnlyThisChange={onOnlyThisChange}\n />\n ))}\n
    \n
    \n );\n })}\n \n );\n}\n\nfunction TicketTypeOverrideInputFormSingleTicketType({\n disabled,\n ticketType,\n ticketTypes,\n deliveryType,\n ticketTypeRules,\n numBlockedTicketTypes,\n setTicketTypeRules,\n onOnlyThisChange,\n}: {\n disabled?: boolean;\n ticketType: TicketType;\n ticketTypes: TicketType[];\n deliveryType: DeliveryType;\n ticketTypeRules?: SyncCenterTicketTypeRules;\n numBlockedTicketTypes: number;\n setTicketTypeRules: (rules?: SyncCenterTicketTypeRules) => void;\n onOnlyThisChange: (\n deliveryType: DeliveryType,\n ticketTypes: TicketType[],\n selectedTicketType: TicketType\n ) => void;\n}) {\n const onResetAll = useCallback(() => {\n if (ticketTypeRules == null) {\n return;\n }\n\n const ticketTypeRulesNew = cloneDeep(ticketTypeRules ?? {});\n ticketTypeRulesNew[deliveryType] = undefined;\n\n setTicketTypeRules(ticketTypeRulesNew);\n }, [deliveryType, ticketTypeRules, setTicketTypeRules]);\n\n const getDraftTicketTypeRules = useCallback(() => {\n const ticketTypeRulesNew = cloneDeep(ticketTypeRules ?? {});\n ticketTypeRulesNew[deliveryType] = ticketTypeRulesNew[deliveryType] ?? {};\n return ticketTypeRulesNew;\n }, [deliveryType, ticketTypeRules]);\n\n return (\n \n
    {ticketType}
    \n
    \n {\n if (val === ContentId.OnlyThis) {\n onOnlyThisChange(deliveryType, ticketTypes, ticketType);\n return;\n }\n if (val === ContentId.ResetAll) {\n onResetAll();\n return;\n }\n\n const priorityOrderBefore = mapTicketTypeWithPriorityList(\n ticketTypes,\n deliveryType,\n ticketTypeRules\n );\n\n const priorityOrderAfter = shiftTicketTypePriority(\n priorityOrderBefore,\n ticketType,\n Number(val)\n );\n\n const ticketTypeRulesNew = getDraftTicketTypeRules();\n\n priorityOrderAfter.forEach((to) => {\n ticketTypeRulesNew[deliveryType]![to.ticketType] = to.priority;\n });\n\n // This should never happen, but just in case\n ticketTypes.forEach((tt, i) => {\n if (ticketTypeRulesNew[deliveryType]![tt] == null) {\n ticketTypeRulesNew[deliveryType]![tt] = i + ticketTypes.length;\n }\n });\n\n setTicketTypeRules(ticketTypeRulesNew);\n }}\n />\n
    \n
    \n );\n}\n","import { ReactNode } from 'react';\n\nimport * as styles from './InstructionsList.css';\n\nexport function InstructionsList({ children }: { children?: ReactNode }) {\n return
      {children}
    ;\n}\n\nexport function InstructionsListItem({\n containerClassName,\n children,\n}: {\n containerClassName?: string;\n children?: ReactNode;\n}) {\n return (\n
  • \n
    {children}
    \n
  • \n );\n}\n","import { useMutation } from '@tanstack/react-query';\nimport genPassword from 'browser-generate-password';\nimport {Marketplace, PosUiActionResult, SellerAccountClient} from 'src/WebApiController';\nimport {isSuccess} from \"src/utils/errorUtils\";\n\nasync function handleResponse(response: PosUiActionResult) {\n return isSuccess(response) ? response : Promise.reject(new Error(`Response failure ${response.status} ${response.message}`));\n}\n\n/**\n * https://app.ticketmaster.com/tradedeskapi/user/docs/index.html\n * @returns Mutation\n */\nexport function useTradeDeskSendResetPasswordCodeMutation(activeAccountId?: string) {\n return useMutation({\n async mutationFn({ username }: { username: string }) {\n if (!activeAccountId) {\n throw new Error('activeAccountId is undefined');\n }\n\n return new SellerAccountClient({activeAccountId}).initiateTradeDeskReset(username).then(handleResponse);\n },\n });\n}\n\n/**\n * https://app.ticketmaster.com/tradedeskapi/user/docs/index.html\n * @returns Mutation\n */\nexport function useTradeDeskResetPasswordMutation(activeAccountId?: string) {\n return useMutation({\n async mutationFn({\n username,\n oldPassword,\n newPassword = genPassword(10, true),\n code,\n }: {\n username: string;\n oldPassword?: string;\n /**\n * New password is automatically generated if not passed in.\n */\n newPassword?: string;\n code?: string;\n }) {\n if (!activeAccountId) {\n throw new Error('activeAccountId is undefined');\n }\n\n if (!code)\n {\n throw new Error('Code is required');\n }\n\n var sellerAccountClient: SellerAccountClient = new SellerAccountClient({activeAccountId});\n\n const resp = await sellerAccountClient.resetTradeDeskPassword({\n username: username,\n oldPassword: oldPassword ?? null,\n newPassword: newPassword,\n code: code\n }).then(handleResponse);\n\n await sellerAccountClient.updateMarketplaceSellerAccountPassword(\n Marketplace.Ticketmaster,\n newPassword\n );\n return resp;\n },\n });\n}\n","import { UseMutationResult } from '@tanstack/react-query';\nimport { useState } from 'react';\nimport {\n InstructionsList,\n InstructionsListItem,\n} from 'src/components/InstructionsList';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { shared, vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui/Button';\nimport {\n useTradeDeskResetPasswordMutation,\n useTradeDeskSendResetPasswordCodeMutation,\n} from 'src/hooks/api/useTradeDeskResetPasswordMutation';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as syncCenterStyles from './SyncCenter.css';\nimport * as styles from './TradeDeskApiResetInstructions.css';\nimport {useAppContext} from \"src/contexts/AppContext\";\n\nexport function TradeDeskApiResetInstructions({\n marketplaceUserName,\n}: {\n marketplaceUserName: string;\n}) {\n const { activeAccountWebClientConfig } = useAppContext();\n\n const enterResetCodeFromEmailText = useContent(\n ContentId.EnterResetCodeFromEmail\n );\n\n const sendResetPasswordCodeMutation =\n useTradeDeskSendResetPasswordCodeMutation(activeAccountWebClientConfig.activeAccountId);\n const resetPasswordMutation = useTradeDeskResetPasswordMutation(activeAccountWebClientConfig.activeAccountId);\n const [resetCode, setResetCode] = useState('');\n return (\n
    \n
    \n \n \n \n
    \n \n
    \n \n \n
    \n {' '}\n {marketplaceUserName}\n
    \n
    \n {\n sendResetPasswordCodeMutation.mutate({\n username: marketplaceUserName,\n });\n }}\n >\n \n \n \n
    \n \n \n
    \n \n
    \n
    \n {\n const value = e.currentTarget.value;\n setResetCode(value);\n }}\n />\n
    \n \n \n
    \n \n
    \n
    \n {\n resetPasswordMutation.mutate({\n username: marketplaceUserName,\n code: resetCode,\n });\n }}\n >\n \n \n \n
    \n \n \n \n \n
    \n
    \n );\n}\n\nfunction MutationStatus({\n mutation,\n}: {\n mutation: Pick<\n UseMutationResult,\n 'isPending' | 'isSuccess' | 'isError' | 'error'\n >;\n}) {\n return mutation.isPending ? (\n \n ) : mutation.isError && mutation.error instanceof Error ? (\n
    {mutation.error.message}
    \n ) : mutation.isSuccess ? (\n
    \n \n
    \n ) : null;\n}\n","import { useMutation } from '@tanstack/react-query';\nimport { cloneDeep, isEqual } from 'lodash-es';\nimport { useCallback, useEffect } from 'react';\nimport { Controller, FormProvider, useForm } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n Content,\n useContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosEnumSelect } from 'src/core/POS/PosSelect';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button, Stack } from 'src/core/ui';\nimport { useSyncCenterSettings } from 'src/hooks/api/useSyncCenterSetting';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useUserHasAutopricingFeature } from 'src/hooks/useUserHasAutopricingFeature';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { CheckIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n MARKETPLACE_PAYMENT_TERM_TO_CID,\n SPLIT_TYPE_TO_CID,\n YES_NO_ENUM_FILTER_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { FromYesNoEnum, ToYesNoEnum } from 'src/utils/eventQueryUtils';\nimport {\n Feature,\n Marketplace,\n MarketplacePaymentTerm,\n SellerAccountClient,\n SplitType,\n SyncCenterSettings,\n} from 'src/WebApiController';\n\nimport { MainRoute } from '../../../MainRoute';\nimport { TicketTypeOverrideInputForm } from './Components/TicketTypeOverrideInputForm';\nimport * as styles from './SyncCenter.css';\nimport { SyncCenterFieldValues } from './SyncCenter.types';\nimport {\n setValueAsNumber,\n toSyncCenterFieldValues,\n toSyncCenterSettings,\n} from './SyncCenter.utils';\nimport { TradeDeskApiResetInstructions } from './TradeDeskApiResetInstructions';\n\nexport function SyncCenterContent() {\n const query = useSyncCenterSettings();\n return (\n
    \n
    \n

    \n \n

    \n {query.isLoading ? (\n \n ) : (\n query.refetch()}\n />\n )}\n
    \n
    \n );\n}\n\nexport function SyncCenter() {\n const syncCenterTitle = useContent(ContentId.SyncCenter);\n return (\n \n \n \n );\n}\n\nfunction SyncCenterForm({\n disabled,\n defaultValues,\n onSaved,\n}: {\n disabled?: boolean;\n defaultValues?: SyncCenterSettings | null;\n onSaved?: () => void;\n}) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const contentContext = useContentContext();\n const hasPurchaseSettingsTabFeature = useUserHasFeature(\n Feature.PurchaseSettingsTab\n );\n const hasMarketplaceTermFeature = useUserHasFeature(\n Feature.MarketplacePaymentTerms\n );\n const hasMarketplaceEnableDisableFeature = useUserHasFeature(\n Feature.EnableDisableMarketplaces\n );\n const hasSeatSaverFeature = useUserHasFeature(Feature.SeatSaver);\n\n const hasMarketplacePreventInitialBroadcastFeature = useUserHasFeature(\n Feature.PreventInitialBroadcastForXDays\n );\n\n const hasAutoPricingTabFeature = useUserHasAutopricingFeature(\n Feature.AutoPricingTabInAccountSettings\n );\n\n const mutation = useMutation({\n mutationFn: async (data: SyncCenterSettings) => {\n return new SellerAccountClient(activeAccountWebClientConfig)\n .mergeSyncCenterSettings(data)\n .then(() => onSaved?.());\n },\n onError: (err: ErrorTypes, data) => {\n showErrorDialog('SellerAccountClient.mergeSyncCenterSettings', err, {\n trackErrorData: { data },\n });\n },\n });\n\n const marketplaceEnableDisableConfirmDlg = useBasicDialog();\n\n const methods = useForm({\n defaultValues: defaultValues\n ? toSyncCenterFieldValues(cloneDeep(defaultValues))\n : undefined,\n });\n\n const {\n control,\n register,\n handleSubmit,\n watch,\n setValue,\n getValues,\n formState,\n reset,\n } = methods;\n\n // If the defaultValues changed - we need to ensure the form is reset - otherwise it will keep the old values\n // and it will re-submit with the old values\n useEffect(() => {\n const newDefaultValues =\n defaultValues && toSyncCenterFieldValues(cloneDeep(defaultValues));\n if (\n newDefaultValues &&\n !isEqual(newDefaultValues, formState.defaultValues)\n ) {\n reset(newDefaultValues);\n }\n }, [defaultValues, formState.defaultValues, reset]);\n\n const marketplaceSettings = watch('marketplaceSettings');\n\n const noneTxt = useContent(ContentId.None);\n const getMarketplaceEnableDisable = useCallback(\n (enable: boolean) => {\n const data = getValues('marketplaceSettings');\n const mkps = data?.filter((m) => m.isEnabled === enable);\n\n return mkps?.length\n ? mkps\n .map((m) => m.marketplace)\n .toSorted()\n .join(', ')\n : noneTxt;\n },\n [getValues, noneTxt]\n );\n\n return (\n \n <>\n
    \n
    \n {marketplaceSettings?.map((settings, i) => {\n return settings.marketplace === Marketplace.StubHub ||\n settings.marketplace === Marketplace.Offline ? null : (\n \n
    \n {settings.marketplace}\n
    \n
    \n }\n className={styles.textField}\n >\n \n \n }\n className={styles.textField}\n >\n \n \n }\n className={styles.textField}\n >\n \n }\n {...register(\n `marketplaceSettings.${i}.maxHoldDurationInHours`,\n {\n setValueAs: setValueAsNumber,\n }\n )}\n />\n \n\n {hasMarketplaceTermFeature && (\n (\n \n }\n className={styles.enumSelect}\n >\n \n disabled={disabled || mutation.isPending}\n valueOptionsContent={\n MARKETPLACE_PAYMENT_TERM_TO_CID\n }\n {...field}\n />\n \n )}\n />\n )}\n\n {hasMarketplacePreventInitialBroadcastFeature && (\n \n }\n className={styles.textField}\n >\n \n \n )}\n\n {hasMarketplaceEnableDisableFeature ? (\n (\n \n }\n checked={!value}\n onChange={(e) => {\n onChange(!e.currentTarget.checked);\n }}\n {...field}\n />\n )}\n />\n ) : settings.isEnabled ? (\n \n \n \n \n ) : (\n \n \n \n \n )}\n
    \n
    \n );\n })}\n
    \n
    \n
    \n \n
    \n
    \n (\n }\n >\n \n disabled={disabled || mutation.isPending}\n placeholderText={ContentId.SelectSplitType}\n valueOptionsContent={SPLIT_TYPE_TO_CID}\n {...field}\n />\n \n )}\n />\n {hasSeatSaverFeature && (\n (\n \n }\n >\n \n disabled={disabled || mutation.isPending}\n placeholderText={ContentId.SelectSplitType}\n valueOptionsContent={SPLIT_TYPE_TO_CID}\n {...field}\n />\n \n )}\n />\n )}\n (\n }\n >\n {\n onChange(FromYesNoEnum(yesNoEnumValue));\n }}\n />\n \n )}\n />\n }\n className={styles.textField}\n >\n }\n {...register('inHandDatePaddingInDays', {\n setValueAs: setValueAsNumber,\n })}\n />\n \n {!hasAutoPricingTabFeature && (\n }\n className={styles.textField}\n >\n \n \n )}\n }\n className={styles.textField}\n >\n \n \n \n
    \n
    \n {!hasPurchaseSettingsTabFeature && (\n
    \n
    \n \n
    \n
    \n }\n className={styles.textField}\n >\n \n \n (\n \n }\n checked={Boolean(value)}\n onChange={(e) => {\n onChange(e.currentTarget.checked);\n }}\n {...field}\n />\n )}\n />\n
    \n
    \n )}\n {marketplaceSettings?.map((settings) => {\n // Only show instructions for ticketmaster accounts where the token version is 1\n // and username exists\n if (\n settings.marketplace !== Marketplace.Ticketmaster ||\n settings.tokenVersion !== 1 ||\n !settings.userName\n ) {\n return null;\n }\n return (\n \n
    \n \n
    \n \n \n );\n })}\n \n
    \n {\n if (\n !isEqual(\n data.marketplaceSettings?.map((m) => m.isEnabled),\n formState.defaultValues?.marketplaceSettings?.map(\n (m) => m?.isEnabled\n )\n )\n ) {\n marketplaceEnableDisableConfirmDlg.launchDialog();\n } else {\n mutation.mutate(toSyncCenterSettings(data));\n }\n })}\n >\n \n \n
    \n \n }\n bodyText={\n \n \n \n \n \n \n {getMarketplaceEnableDisable(true)}\n \n \n \n \n \n \n \n {getMarketplaceEnableDisable(false)}\n \n \n \n \n \n \n }\n onOkay={handleSubmit((data) => {\n mutation.mutate(toSyncCenterSettings(data));\n marketplaceEnableDisableConfirmDlg.closeDialog();\n })}\n onCancel={marketplaceEnableDisableConfirmDlg.closeDialog}\n okText={ContentId.Yes}\n />\n \n
    \n );\n}\n","import { SellerRoleInfo, SellerRoleInput } from 'src/WebApiController';\n\nexport const mapToSellerRoleInput = (\n role?: SellerRoleInfo | null,\n userIds?: string[] | null\n) => {\n return {\n id: role?.id ?? -1,\n details: role?.details,\n name: role?.name,\n permissions: [...(role?.permissions ?? [])],\n userIds: userIds,\n } as SellerRoleInput;\n};\n","import { ModalProps } from 'src/modals/Modal';\nimport { SellerRoleInfo } from 'src/WebApiController';\n\nexport const MAX_ROLE_DETAILS_LENGTH = 200;\n\nexport type SellerRoleModalProps = {\n cancelTo?: ModalProps;\n roleInfo?: SellerRoleInfo | null;\n};\n","import { useContent } from 'src/contexts/ContentContext';\nimport { Checkbox } from 'src/core/interim/Checkbox';\nimport { vars } from 'src/core/themes';\nimport { Stack, TooltipPopover } from 'src/core/ui';\nimport { InfoOutlineIcon } from 'src/svgs/Viagogo';\nimport { PERMISSION_TO_CID } from 'src/utils/constants/contentIdMaps';\nimport { SellerPermissionInfo } from 'src/WebApiController';\n\nexport const SellerPermissionDisplay = ({\n disabled,\n isSelected,\n toggleSelect,\n permissionInfo,\n part,\n}: {\n disabled?: boolean;\n isSelected?: boolean;\n toggleSelect: () => void;\n permissionInfo: SellerPermissionInfo;\n part: 'view' | 'action';\n}) => {\n const permissionContent = PERMISSION_TO_CID[permissionInfo.permission];\n const title = useContent(permissionContent[0]);\n const details = useContent(permissionContent[1]);\n const permPart = permissionContent[2];\n\n if (permPart !== part) {\n return null;\n }\n\n return (\n \n toggleSelect()}\n label={title}\n labelPosition=\"right\"\n />\n\n \n }\n title={details}\n contentVariant=\"dark\"\n >\n {details}\n \n \n );\n};\n","import { useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport {\n Content,\n getContent,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport { useSellerRoleContext } from 'src/contexts/SellerRoleContext';\nimport { Switch } from 'src/core/interim/Switch';\nimport { DividerLine, Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n PERMISSION_ACCESS_AREA_TO_CID,\n PERMISSION_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport {\n Permission,\n PermissionAccessArea,\n SellerRoleInput,\n} from 'src/WebApiController';\n\nimport * as styles from '../SellerRoleModal.css';\nimport { SellerPermissionDisplay } from './SellerPermissionDisplay';\n\nexport const SellerPermissionSelectionSection = ({\n area,\n disabled,\n}: {\n area: PermissionAccessArea;\n disabled?: boolean;\n}) => {\n const { watch, setValue, clearErrors } = useFormContext();\n const permissions = watch('permissions');\n const contentContext = useContentContext();\n\n const { allPermissions } = useSellerRoleContext();\n const permissionInfosOfArea = Object.values(allPermissions ?? {})\n .filter((p) => p.area === area)\n .toSorted((a, b) =>\n (\n getContent(PERMISSION_TO_CID[a.permission][0], contentContext) ??\n a.permission\n ).localeCompare(\n getContent(PERMISSION_TO_CID[b.permission][0], contentContext) ??\n b.permission\n )\n );\n const permissionsOfArea = permissionInfosOfArea.map((pa) => pa.permission);\n\n const allSelected = permissionsOfArea.every((pa) =>\n permissions?.includes(pa)\n );\n\n const onEnableAllForArea = useCallback(\n (checkAll: boolean) => {\n const permissionsNotInArea =\n permissions?.filter((p) => !permissionsOfArea.includes(p)) ?? [];\n if (checkAll) {\n clearErrors('permissions');\n setValue('permissions', [\n ...permissionsNotInArea,\n ...permissionsOfArea,\n ]);\n } else {\n setValue('permissions', permissionsNotInArea);\n }\n },\n [clearErrors, permissions, permissionsOfArea, setValue]\n );\n\n const onTogglePermissionSelect = useCallback(\n (permission: Permission, selected: boolean) => {\n const permissionsExcluding =\n permissions?.filter((p) => p !== permission) ?? [];\n if (selected) {\n clearErrors('permissions');\n setValue('permissions', [...permissionsExcluding, permission]);\n } else {\n setValue('permissions', permissionsExcluding);\n }\n },\n [clearErrors, permissions, setValue]\n );\n\n if (permissionsOfArea.length === 0) {\n return null;\n }\n\n return (\n \n \n \n \n \n {\n e.stopPropagation();\n e.preventDefault();\n onEnableAllForArea(!allSelected);\n }\n }\n >\n {!disabled && (\n <>\n {\n e.stopPropagation();\n e.preventDefault();\n onEnableAllForArea(!allSelected);\n }}\n />\n \n \n )}\n \n \n
    \n \n \n \n \n {permissionInfosOfArea.map((pa) => {\n const isSelected = permissions?.includes(pa.permission);\n return (\n \n onTogglePermissionSelect(pa.permission, !isSelected)\n }\n key={pa.permission}\n permissionInfo={pa}\n part=\"view\"\n />\n );\n })}\n \n \n \n \n \n {permissionInfosOfArea.map((pa) => {\n const isSelected = permissions?.includes(pa.permission);\n return (\n \n onTogglePermissionSelect(pa.permission, !isSelected)\n }\n key={pa.permission}\n permissionInfo={pa}\n part=\"action\"\n />\n );\n })}\n \n
    \n \n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { useCallback } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Button, Stack } from 'src/core/ui';\nimport { CrossIcon, ProfileOutlineIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SellerRoleInput, SellerUserAccountInfo } from 'src/WebApiController';\n\nexport const SellerUserDisplay = ({\n user,\n userIds,\n disabled,\n}: {\n user: SellerUserAccountInfo;\n userIds: string[] | null;\n disabled?: boolean;\n}) => {\n const { setValue } = useFormContext();\n\n const onRemoveUserFromRole = useCallback(() => {\n if (!userIds)\n // nothing to remove from\n return;\n\n const newUserIds = userIds.filter((uid) => uid !== user.userId);\n if (!isEqual(newUserIds.toSorted(), userIds.toSorted())) {\n setValue('userIds', newUserIds);\n }\n }, [setValue, user.userId, userIds]);\n\n return (\n \n \n \n {user.displayName} ({user.email})\n \n\n \n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { useCallback, useMemo } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { SellerAccountEmployeeMultiSelector } from 'src/components/Selectors/SellerAccountEmployeeSelector';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SellerRoleInfo, SellerRoleInput } from 'src/WebApiController';\n\nimport * as styles from '../SellerRoleModal.css';\nimport { SellerUserDisplay } from './SellerUserDisplay';\n\nexport const SellerRoleUsersSection = ({\n disabled,\n}: {\n roleInfo?: SellerRoleInfo | null;\n disabled?: boolean;\n}) => {\n const { watch, setValue } = useFormContext();\n const userIds = watch('userIds');\n\n const { allActiveUserInfos } = useSellerAccountContext();\n const usersOfRole = useMemo(\n () =>\n Object.values(allActiveUserInfos ?? {}).filter((u) =>\n userIds?.includes(u.userId)\n ),\n [allActiveUserInfos, userIds]\n );\n\n const onUserIdsChange = useCallback(\n (newUserIds: string[]) => {\n if (!isEqual(userIds?.toSorted(), newUserIds.toSorted()))\n setValue('userIds', newUserIds);\n },\n [setValue, userIds]\n );\n\n return (\n \n }>\n \n \n \n \n \n \n {usersOfRole.map((u) => (\n \n ))}\n \n \n );\n};\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport {\n Content,\n FormatContent,\n useContent,\n} from 'src/contexts/ContentContext';\nimport { useSellerRoleContext } from 'src/contexts/SellerRoleContext';\nimport { ErrorMessage } from 'src/core/POS/ErrorMessage';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosSelect } from 'src/core/POS/PosSelect';\nimport { PosTextArea } from 'src/core/POS/PosTextArea';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { TabPanel } from 'src/core/ui/TabPanel';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport {\n PermissionAccessArea,\n SellerRoleInfo,\n SellerRoleInput,\n} from 'src/WebApiController';\n\nimport * as styles from '../SellerRoleModal.css';\nimport { MAX_ROLE_DETAILS_LENGTH } from '../SellerRoleModal.types';\nimport { SellerPermissionSelectionSection } from './SellerPermissionSelectionSection';\nimport { SellerRoleUsersSection } from './SellerRoleUsersSection';\n\nexport const SellerRoleDetails = ({\n roleInfo,\n disabled,\n}: {\n roleInfo?: SellerRoleInfo | null;\n disabled?: boolean;\n}) => {\n const { register, formState, watch, setValue } =\n useFormContext();\n const requiredTxt = useContent(ContentId.Required);\n\n const [selectedRoleTemplate, setSelectedRoleTemplate] = useState<\n number | undefined\n >(undefined);\n\n const { allPermissions, allSellerRolesForSelection, getSellerRole } =\n useSellerRoleContext();\n\n const nameError = formState.errors.name?.message;\n const detailsError = formState.errors.details?.message;\n const details = watch('details');\n\n const onRoleTemplateSelected = useCallback(\n (role: string) => {\n const roleId = parseInt(role);\n if (roleId) {\n const roleInfo = getSellerRole(roleId);\n\n if (roleInfo) {\n const copyPermissions = roleInfo.permissions.filter(\n (p) => allPermissions?.[p]\n );\n\n // Only copy over the visible\n if (copyPermissions.length) {\n setSelectedRoleTemplate(roleId);\n setValue('permissions', copyPermissions);\n }\n }\n }\n },\n [allPermissions, getSellerRole, setValue]\n );\n\n const [tabIndex, setTabIndex] = useState(0);\n const tabs = useMemo(\n () => [\n {\n value: ContentId.Permissions,\n title: ,\n content: (\n \n ),\n },\n {\n value: ContentId.Access,\n title: ,\n content: (\n \n \n \n ),\n },\n ],\n // careful adding dependency here - causing this to re-calculate will cause a re-render\n // and it can cause losing focus to inputs on every key stroke, etc\n [disabled, roleInfo]\n );\n\n return (\n \n }\n errors={nameError}\n >\n \n \n \n }\n errors={detailsError}\n >\n \n \n \n \n \n \n\n {!roleInfo?.prefinedRole && allSellerRolesForSelection && (\n // We only show this if it's not a predefined Role\n \n \n \n \n \n \n \n \n \n \n \n )}\n\n {\n switch (value) {\n case ContentId.Access:\n setTabIndex(1);\n break;\n case ContentId.Permissions:\n default:\n setTabIndex(0);\n break;\n }\n }}\n />\n \n );\n};\n\nconst PermissionsTabContent = ({ disabled }: { disabled?: boolean }) => {\n const { getFieldState } = useFormContext();\n const permissionErrors = getFieldState('permissions').error?.message;\n\n const ref = useRef(null);\n\n // Make sure the error focuses when it becomes visible\n useEffect(() => {\n if (permissionErrors) {\n ref.current?.focus();\n }\n }, [permissionErrors]);\n\n return (\n \n {permissionErrors && (\n \n {permissionErrors}\n \n )}\n\n {Object.keys(PermissionAccessArea).map((area) => (\n \n ))}\n \n );\n};\n","import { useCallback, useContext } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { useSellerRoleContext } from 'src/contexts/SellerRoleContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { Button, Stack } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { DeleteIcon, IconsFill } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ApiException,\n SellerAccountClient,\n SellerRoleInfo,\n} from 'src/WebApiController';\n\nexport const LaunchDeleteRole = ({\n roleInfo,\n disabled,\n setIsLoading,\n}: {\n roleInfo: SellerRoleInfo;\n disabled?: boolean;\n setIsLoading?: (isLoading: boolean) => void;\n}) => {\n const { closeModal } = useContext(ModalContext);\n const { showErrorDialog, genericError } = useErrorBoundaryContext();\n\n const { activeAccountWebClientConfig } = useAppContext();\n const { refetchSellerRoleInfos } = useSellerRoleContext();\n const { allUserInfos } = useSellerAccountContext();\n\n const userCount = Object.values(allUserInfos ?? {}).filter((u) =>\n u.roles.includes(roleInfo.id)\n ).length;\n\n const dialogProps = useBasicDialog();\n\n const onDeleteRole = useCallback(async () => {\n setIsLoading?.(true);\n dialogProps.closeDialog();\n\n await tryInvokeApi(\n async () => {\n const r = await new SellerAccountClient(\n activeAccountWebClientConfig\n ).deleteSellerRole(roleInfo.id);\n\n if (isSuccess(r)) {\n refetchSellerRoleInfos();\n closeModal(true);\n } else {\n showErrorDialog(\n 'SellerAccountClient.deleteSellerRole',\n {\n message: r.message ?? genericError,\n status: r.status!,\n } as ApiException,\n {\n trackErrorData: {\n roleInfo,\n },\n }\n );\n }\n },\n (error) => {\n showErrorDialog('SellerAccountClient.deleteSellerRole', error);\n },\n () => setIsLoading?.(false)\n );\n }, [\n activeAccountWebClientConfig,\n closeModal,\n dialogProps,\n genericError,\n refetchSellerRoleInfos,\n roleInfo,\n setIsLoading,\n showErrorDialog,\n ]);\n\n return (\n <>\n dialogProps.launchDialog()}\n disabled={disabled}\n >\n \n \n \n \n \n\n }\n bodyText={\n userCount > 0 ? (\n }\n />\n ) : (\n \n )\n }\n {...dialogProps.dialogProps}\n centered\n disabled={disabled}\n onOkay={userCount > 0 ? undefined : onDeleteRole}\n onClosed={dialogProps.closeDialog}\n onCancel={dialogProps.closeDialog}\n />\n \n );\n};\n","import { useContext } from 'react';\nimport { CancelButton } from 'src/components/Buttons';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { Stack } from 'src/core/ui';\nimport { ModalFooter } from 'src/modals/Modal/Modal.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SellerRoleInfo } from 'src/WebApiController';\n\nimport { LaunchDeleteRole } from './components/LaunchDeleteRole';\n\nexport const SellerRoleModalFooter = ({\n roleInfo,\n onSubmit,\n disabled,\n setIsLoading,\n hasChanges,\n}: {\n roleInfo?: SellerRoleInfo | null;\n onSubmit?: () => void;\n disabled?: boolean;\n setIsLoading?: (isLoading: boolean) => void;\n hasChanges?: boolean;\n}) => {\n const { closeModal } = useContext(ModalContext);\n\n return (\n \n \n {!roleInfo?.prefinedRole && roleInfo?.id && !roleInfo?.isDeleted ? (\n \n ) : (\n \n )}\n \n \n \n \n \n \n );\n};\n","import { isEqual } from 'lodash-es';\nimport { ComponentProps, useCallback, useContext, useState } from 'react';\nimport { FormProvider } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { useSellerRoleContext } from 'src/contexts/SellerRoleContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport {\n ModalBody,\n ModalBodyDataContainer,\n} from 'src/modals/Modal/Modal.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { isSuccess } from 'src/utils/errorUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ApiException,\n SellerAccountClient,\n SellerRoleInput,\n} from 'src/WebApiController';\n\nimport * as styles from '../UsersManagement.css';\nimport { SellerRoleDetails } from './components/SellerRoleDetails';\nimport { SellerRoleModalProps } from './SellerRoleModal.types';\nimport { SellerRoleModalFooter } from './SellerRoleModalFooter';\n\nexport const SellerRoleModalBody = ({\n disabled,\n roleInfo,\n cancelTo,\n formState,\n handleSubmit,\n watch,\n getValues,\n setError,\n clearErrors,\n}: Omit<\n ComponentProps>,\n 'children'\n> & { disabled?: boolean } & SellerRoleModalProps) => {\n const { allPermissions, refetchSellerRoleInfos } = useSellerRoleContext();\n const { refetchUserInfos } = useSellerAccountContext();\n\n const { showErrorDialog, genericError } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { closeModal, setModal } = useContext(ModalContext);\n const [isLoading, setIsLoading] = useState(false);\n const { isSubmitting } = formState;\n\n const onSubmit = useCallback(\n async (formValue: SellerRoleInput) => {\n const usersHasChanged = !isEqual(\n formState.defaultValues?.userIds?.toSorted(),\n formValue.userIds?.toSorted()\n );\n\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const client = new SellerAccountClient(activeAccountWebClientConfig);\n\n const result =\n formValue.id > 0\n ? await client.updateSellerRole(formValue)\n : await client.createSellerRole(formValue);\n\n if (isSuccess(result)) {\n refetchSellerRoleInfos();\n if (usersHasChanged) {\n refetchUserInfos();\n }\n closeModal(true);\n } else {\n showErrorDialog(\n formValue.id > 0\n ? 'SellerAccountClietn.updateSellerRole'\n : 'SellerAccountClient.createSeatSaver',\n {\n message: result.message ?? genericError,\n status: result.status!,\n } as ApiException,\n {\n onDismissError: () => cancelTo && setModal(cancelTo),\n trackErrorData: formValue,\n }\n );\n }\n },\n (error) => {\n showErrorDialog(\n formValue.id > 0\n ? 'SellerAccountClietn.updateSellerRole'\n : 'SellerAccountClient.createSeatSaver',\n error,\n {\n trackErrorData: formValue,\n }\n );\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n cancelTo,\n closeModal,\n formState.defaultValues?.userIds,\n genericError,\n refetchSellerRoleInfos,\n refetchUserInfos,\n setModal,\n showErrorDialog,\n ]\n );\n\n const hasChanges = useCallback(\n (formValue: SellerRoleInput) => {\n if (\n roleInfo?.isDeleted ||\n (formState.defaultValues?.name ?? '') !== (formValue.name ?? '') ||\n (formState.defaultValues?.details ?? '') !==\n (formValue.details ?? '') ||\n !isEqual(\n formState.defaultValues?.permissions?.toSorted(),\n formValue.permissions?.toSorted()\n ) ||\n !isEqual(\n formState.defaultValues?.userIds?.toSorted(),\n formValue.userIds?.toSorted()\n )\n ) {\n return true;\n }\n\n return false;\n },\n [\n formState.defaultValues?.details,\n formState.defaultValues?.name,\n formState.defaultValues?.permissions,\n formState.defaultValues?.userIds,\n roleInfo?.isDeleted,\n ]\n );\n\n const permissionErrorText = useContent(ContentId.PermissionsRequiredMessage);\n\n const onSubmitHandler = useCallback(() => {\n const formValues = getValues();\n\n const changed = hasChanges(formValues);\n if (!changed) return;\n\n let hasErrors = false;\n\n const visiblePermissions = formValues.permissions?.filter(\n (p) => allPermissions?.[p]\n );\n if (!visiblePermissions?.length) {\n setError('permissions', { message: permissionErrorText });\n hasErrors = true;\n } else {\n clearErrors('permissions');\n }\n\n if (!hasErrors) {\n handleSubmit(onSubmit)();\n }\n }, [\n getValues,\n hasChanges,\n allPermissions,\n setError,\n permissionErrorText,\n clearErrors,\n handleSubmit,\n onSubmit,\n ]);\n\n const formHasChanges = hasChanges(watch());\n\n return (\n <>\n \n \n \n {roleInfo?.isDeleted && (\n \n \n \n )}\n \n }\n />\n \n\n \n \n {isLoading ? (\n \n ) : (\n \n )}\n \n \n\n \n \n );\n};\n","import { useEffect, useMemo } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { SellerRoleInfo, SellerRoleInput } from 'src/WebApiController';\n\nimport { mapToSellerRoleInput } from './SellerRoleModal.utils';\nimport { SellerRoleModalBody } from './SellerRoleModalBody';\n\nexport const SellerRoleModal = ({\n roleInfo,\n}: {\n roleInfo?: SellerRoleInfo | null;\n}) => {\n const { allActiveUserInfos } = useSellerAccountContext();\n\n const userIdsOfRoles = useMemo(() => {\n if (!roleInfo?.id || !allActiveUserInfos) return null;\n\n const usersOfRole =\n roleInfo &&\n Object.values(allActiveUserInfos).filter((u) =>\n u.roles.includes(roleInfo.id)\n );\n return usersOfRole?.map((u) => u.userId);\n }, [allActiveUserInfos, roleInfo]);\n\n const methods = useForm({\n defaultValues: mapToSellerRoleInput(roleInfo, userIdsOfRoles),\n });\n\n useEffect(() => {\n if (\n (roleInfo?.id && (methods.formState.defaultValues?.id ?? 0) < 0) ||\n userIdsOfRoles?.length !==\n methods.formState.defaultValues?.userIds?.length\n ) {\n methods.reset(mapToSellerRoleInput(roleInfo, userIdsOfRoles));\n }\n }, [methods, roleInfo, userIdsOfRoles]);\n\n return (\n \n \n \n );\n};\n","import { SellerRoleInfo } from 'src/WebApiController';\n\nimport { SellerRoleModal } from './SellerRoleModal';\n\nexport const getSellerRoleModalConfig = (roleInfo?: SellerRoleInfo | null) => ({\n children: ,\n clickOutsideToClose: true,\n size: 'slide-in',\n});\n","import { createColumnHelper } from '@tanstack/react-table';\nimport { useContext } from 'react';\nimport { ButtonWithIcon } from 'src/components/Buttons';\nimport {\n Content,\n getContents,\n useContentContext,\n} from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { useSellerRoleContext } from 'src/contexts/SellerRoleContext';\nimport { Stack } from 'src/core/ui';\nimport { BadgeWithCounts } from 'src/core/ui/Badge';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { OpenLinkIcon } from 'src/svgs';\nimport { EditIcon } from 'src/svgs/Viagogo';\nimport { TableShimmeringDiv } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n PERMISSION_ACCESS_AREA_TO_CID,\n PERMISSION_TO_CID,\n} from 'src/utils/constants/contentIdMaps';\nimport { PermissionAccessArea, SellerRoleInfo } from 'src/WebApiController';\n\nimport { getSellerRoleModalConfig } from '../SellerRoleModal';\nimport * as styles from '../UsersManagement.css';\n\nconst columnHelper = createColumnHelper();\nconst SHIMMERING_DIV_HEIGHT_SINGLE_ROW = '30px';\n\nexport const ROLES_TABLE_COLUMNS_CONFIG = [\n columnHelper.accessor('name', {\n id: 'name',\n enableSorting: true,\n sortingFn: 'text',\n header: () => (\n \n \n \n ),\n cell: ({ getValue }) => (\n {getValue()}\n ),\n }),\n columnHelper.accessor('permissions', {\n id: 'permissions',\n header: () => (\n \n \n \n ),\n cell: function Cell({ getValue }) {\n const contentContext = useContentContext();\n const { allSellerRoles, allPermissions } = useSellerRoleContext();\n if (!allSellerRoles) {\n return ;\n }\n const permissions = getValue();\n const permissionsByAreas = permissions.reduce(\n (r, p) => {\n const permInfo = allPermissions?.[p];\n if (permInfo) {\n r[permInfo.area] = (r[permInfo.area] ?? 0) + 1;\n }\n return r;\n },\n {} as Record\n );\n return (\n \n \n {Object.keys(permissionsByAreas).map((pa) => (\n PERMISSION_TO_CID[p])\n .map((p) => PERMISSION_TO_CID[p][0]),\n contentContext\n ).join(', ')}\n >\n {\n \n }\n \n ))}\n \n \n );\n },\n }),\n columnHelper.accessor((data) => data?.id, {\n id: 'users',\n header: () => (\n \n \n \n ),\n minSize: 50,\n maxSize: 100,\n cell: function Cell({ getValue }) {\n const { allUserInfos } = useSellerAccountContext();\n const roleId = getValue() ?? -1;\n const count = Object.values(allUserInfos ?? {}).filter((u) =>\n u.roles.includes(roleId)\n ).length;\n\n return {count};\n },\n }),\n columnHelper.accessor(\n (data) =>\n data?.isDeleted ? 'deleted' : data?.prefinedRole ? 'default' : 'custom',\n {\n id: 'status',\n enableSorting: true,\n sortingFn: 'alphanumeric',\n header: () => (\n \n \n \n ),\n cell: ({ getValue }) => {\n const status = getValue();\n return (\n \n {status === 'deleted' ? (\n
    \n \n
    \n ) : (\n \n \n \n )}\n
    \n );\n },\n }\n ),\n columnHelper.accessor((data) => data, {\n id: 'action',\n header: () => (\n \n \n \n ),\n minSize: 50,\n maxSize: 100,\n cell: function Cell({ getValue }) {\n const { setModal } = useContext(ModalContext);\n const role = getValue();\n\n return (\n \n \n ) : (\n \n )\n }\n onClick={() => setModal(getSellerRoleModalConfig(role))}\n />\n \n );\n },\n }),\n];\n","import {\n functionalUpdate,\n PaginationState,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useMemo, useState } from 'react';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { useSellerRoleContext } from 'src/contexts/SellerRoleContext';\nimport { Table } from 'src/tables/Table';\nimport { SellerRoleInfo } from 'src/WebApiController';\n\nimport { ROLES_TABLE_COLUMNS_CONFIG } from './RolesTableColumnsConfig';\n\nexport const PAGE_SIZE = 10;\n\nexport const RolesTable = () => {\n const [pagination, setPagination] = useState({\n pageIndex: 0,\n pageSize: PAGE_SIZE,\n });\n const [sorting, setSorting] = useState([\n { id: 'name', desc: false },\n ]);\n const { allSellerRoles } = useSellerRoleContext();\n\n const data = useMemo(() => {\n return Object.values(allSellerRoles ?? {});\n }, [allSellerRoles]);\n\n const options: Partial> = {\n data,\n columns: ROLES_TABLE_COLUMNS_CONFIG,\n state: {\n pagination,\n sorting,\n },\n onPaginationChange: setPagination,\n onSortingChange: (sortingUpdaterFn) => {\n const newSortVal = functionalUpdate(sortingUpdaterFn, sorting);\n setSorting(newSortVal);\n },\n };\n\n return (\n \n
    \n \n );\n};\n","import { useContext } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport { RolesTable } from './RolesTable';\nimport { getSellerRoleModalConfig } from './SellerRoleModal/SellerRoleModalConfig';\nimport * as styles from './UsersManagement.css';\n\nexport const Roles = () => {\n const { setModal } = useContext(ModalContext);\n\n return (\n \n \n
    \n \n
    \n setModal(getSellerRoleModalConfig())}\n >\n \n \n \n
    \n \n
    \n );\n};\n","import clsx from 'clsx';\nimport { useMemo } from 'react';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { shared, vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { CrossIcon, ProfileOutlineIcon } from 'src/svgs/Viagogo';\n\nimport * as styles from './SellerUserListItem.css';\n\ntype SellerUserListItemProps = {\n sellerUserId?: string;\n onDelete?: (value: string) => void;\n};\n\nexport const SellerUserListItem = ({\n sellerUserId,\n onDelete,\n}: SellerUserListItemProps) => {\n const { allActiveUserInfos } = useSellerAccountContext();\n\n const userInfo = useMemo(() => {\n if (!sellerUserId || !allActiveUserInfos) return undefined;\n\n return allActiveUserInfos[sellerUserId];\n }, [allActiveUserInfos, sellerUserId]);\n\n return (\n
    \n \n \n \n \n {userInfo?.displayName}\n \n \n {userInfo?.email}\n \n \n \n {onDelete && (\n {\n onDelete(sellerUserId ?? '');\n }}\n />\n )}\n
    \n );\n};\n","import { Controller, useFormContext } from 'react-hook-form';\nimport { SellerUserListItem } from 'src/components/common/SellerUserListItem';\nimport { SellerAccountEmployeeMultiSelector } from 'src/components/Selectors/SellerAccountEmployeeSelector';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextArea } from 'src/core/POS/PosTextArea';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { shared } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { UserGroup } from 'src/WebApiController';\n\nimport * as styles from './EditTeamModal.css';\n\nexport const TeamInput = () => {\n const requiredMsg = useContent(ContentId.Required);\n\n const {\n formState: { errors },\n control,\n setValue,\n watch,\n } = useFormContext();\n\n const sellerUserIds = watch('sellerUserIds');\n\n return (\n
    \n \n (\n \n \n \n }\n >\n \n \n )}\n />\n (\n \n \n \n }\n >\n \n \n )}\n />\n (\n \n \n \n }\n >\n \n \n )}\n />\n\n \n \n \n }\n >\n \n {sellerUserIds.map((sellerUserId) => (\n {\n setValue(\n 'sellerUserIds',\n sellerUserIds.filter((id) => id !== value)\n );\n }}\n />\n ))}\n \n \n \n
    \n );\n};\n","import { useCallback, useState } from 'react';\nimport { FormProvider, useForm, useFormContext } from 'react-hook-form';\nimport { useToggle } from 'react-use';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { Button } from 'src/core/ui';\nimport { UserGroupInput, useUserGroups } from 'src/hooks/useUserGroups';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { UserGroup } from 'src/WebApiController';\n\nimport * as styles from './EditTeamModal.css';\nimport { TeamInput } from './TeamInput';\n\ntype AddTeamModalFooterProps = { onClose: () => void };\n\nexport const AddTeamModal = ({ onClose }: { onClose: () => void }) => {\n const methods = useForm({\n defaultValues: {\n userGroupName: '',\n sellerUserIds: [],\n },\n });\n\n return (\n \n \n \n );\n};\n\nexport const AddTeamModalContent = ({ onClose }: { onClose: () => void }) => {\n const [isOpen, toggleIsOpen] = useToggle(true);\n\n return (\n {\n toggleIsOpen();\n onClose();\n }}\n unmountOnClose\n clickOutsideToClose\n centered\n size=\"sm\"\n >\n {\n toggleIsOpen();\n onClose();\n }}\n >\n \n \n \n \n \n \n {\n toggleIsOpen();\n onClose();\n }}\n />\n \n \n );\n};\n\nexport const AddTeamModalHeader = () => {\n return (\n
    \n
    \n \n
    \n
    \n );\n};\n\nexport const AddTeamModalFooter = ({ onClose }: AddTeamModalFooterProps) => {\n const { createUserGroup } = useUserGroups();\n const cancelText = useContent(ContentId.Cancel);\n const saveText = useContent(ContentId.Save);\n\n const { handleSubmit } = useFormContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const [isLoading, setIsLoading] = useState(false);\n\n const onCreateSubmit = useCallback(\n async (formValue: UserGroup) => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const result = await createUserGroup(formValue);\n\n if (result) {\n onClose();\n }\n },\n (error) => {\n showErrorDialog('UserGroupClient.createUserGroup', error, {\n trackErrorData: formValue,\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [onClose, showErrorDialog, createUserGroup]\n );\n\n const onCreateSubmitHandler = useCallback(() => {\n // TODO: Add validation for user if needed\n\n // const formValue = getValues();\n // const { userGroupName } = formValue;\n // clearErrors('userGroupName');\n // let hasErrors = false;\n // if (!roles || !roles.length) {\n // setError('roles', { message: requiredMsg });\n // hasErrors = true;\n // }\n\n // if (hasErrors) {\n // return;\n // }\n\n handleSubmit(onCreateSubmit)();\n }, [handleSubmit, onCreateSubmit]);\n\n return (\n
    \n \n
    \n \n
    \n
    \n );\n};\n","import { useCallback, useState } from 'react';\nimport { FormProvider, useForm, useFormContext } from 'react-hook-form';\nimport { useToggle } from 'react-use';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { Button } from 'src/core/ui';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useUserGroups } from 'src/hooks/useUserGroups';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { UserGroup } from 'src/WebApiController';\n\nimport * as styles from './EditTeamModal.css';\nimport { TeamInput } from './TeamInput';\n\ntype EditTeamModalFooterProps = { onClose: () => void };\n\nexport const EditTeamModal = ({\n userGroup,\n onClose,\n}: {\n userGroup: UserGroup;\n onClose: () => void;\n}) => {\n const methods = useForm({\n defaultValues: userGroup,\n });\n\n return (\n \n \n \n );\n};\n\nexport const EditTeamModalContent = ({ onClose }: { onClose: () => void }) => {\n const [isOpen, toggleIsOpen] = useToggle(true);\n\n return (\n {\n toggleIsOpen();\n onClose();\n }}\n unmountOnClose\n clickOutsideToClose\n centered\n size=\"sm\"\n >\n {\n toggleIsOpen();\n onClose();\n }}\n >\n \n \n \n \n \n \n {\n toggleIsOpen();\n onClose();\n }}\n />\n \n \n );\n};\n\nexport const EditTeamModalHeader = () => {\n return (\n
    \n
    \n \n
    \n
    \n );\n};\n\nexport const EditTeamModalFooter = ({ onClose }: EditTeamModalFooterProps) => {\n const { updateUserGroup, deleteUserGroup } = useUserGroups();\n const deleteText = useContent(ContentId.Delete);\n const cancelText = useContent(ContentId.Cancel);\n const saveText = useContent(ContentId.Save);\n\n const { handleSubmit } = useFormContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const [isLoading, setIsLoading] = useState(false);\n const deleteConfirmDialog = useBasicDialog();\n\n const onUpdateSubmit = useCallback(\n async (formValue: UserGroup) => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const result = await updateUserGroup(\n formValue.userGroupId,\n formValue\n );\n\n if (result) {\n onClose();\n }\n },\n (error) => {\n showErrorDialog('UserGroupClient.updateUserGroup', error, {\n trackErrorData: formValue,\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [onClose, showErrorDialog, updateUserGroup]\n );\n\n const onUpdateSubmitHandler = useCallback(() => {\n handleSubmit(onUpdateSubmit)();\n }, [handleSubmit, onUpdateSubmit]);\n\n const onDeleteSubmit = useCallback(\n async (formValue: UserGroup) => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const result = await deleteUserGroup(formValue.userGroupId);\n\n if (result) {\n onClose();\n }\n },\n (error) => {\n showErrorDialog('UserGroupClient.deleteUserGroup', error, {\n trackErrorData: formValue,\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [deleteUserGroup, onClose, showErrorDialog]\n );\n\n return (\n <>\n
    \n
    \n {\n deleteConfirmDialog.launchDialog();\n }}\n disabled={isLoading}\n >\n {deleteText}\n \n
    \n
    \n \n \n
    \n
    \n }\n bodyText={}\n onOkay={handleSubmit(onDeleteSubmit)}\n disabled={isLoading}\n onCancel={() => deleteConfirmDialog.closeDialog()}\n />\n \n );\n};\n","import { createColumnHelper } from '@tanstack/react-table';\nimport { useCallback, useContext } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { vars } from 'src/core/themes';\nimport { DropdownMenu, Stack } from 'src/core/ui';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { useUserGroups } from 'src/hooks/useUserGroups';\nimport { DeleteIcon, EditIcon, IconsFill, MoreIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { UserGroup } from 'src/WebApiController';\n\nimport { EditTeamModal } from '../EditTeam/EditTeamModal';\n\nconst columnHelper = createColumnHelper();\n\nexport const TEAMS_TABLE_COLUMNS_CONFIG = [\n columnHelper.accessor('userGroupName', {\n id: 'name',\n minSize: 50,\n maxSize: 100,\n enableSorting: true,\n sortingFn: 'text',\n header: () => (\n \n \n \n ),\n cell: ({ getValue }) => (\n {getValue()}\n ),\n }),\n columnHelper.accessor((data) => data?.sellerUserIds.length, {\n id: 'members',\n minSize: 50,\n maxSize: 50,\n enableSorting: true,\n sortingFn: 'text',\n header: () => (\n \n \n \n ),\n cell: ({ getValue }) => (\n {getValue()}\n ),\n }),\n\n columnHelper.accessor('userGroupDescription', {\n id: 'description',\n minSize: 50,\n maxSize: 200,\n enableSorting: true,\n sortingFn: 'text',\n header: () => (\n \n \n \n ),\n cell: ({ getValue }) => (\n {getValue()}\n ),\n }),\n columnHelper.accessor((data) => data, {\n id: 'action',\n header: () => (\n \n \n \n ),\n minSize: 50,\n maxSize: 50,\n cell: function Cell({ row: { original } }) {\n const { setModal, closeModal } = useContext(ModalContext);\n const { deleteUserGroup } = useUserGroups();\n const deleteConfirmDialog = useBasicDialog();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const onDeleteUserGroup = useCallback(async () => {\n deleteConfirmDialog.closeDialog();\n tryInvokeApi(\n async () => {\n await deleteUserGroup(original!.userGroupId);\n },\n (error) => {\n showErrorDialog('UserGroupClient.deleteUserGroup', error, {\n trackErrorData: { ...original },\n });\n }\n );\n }, [deleteConfirmDialog, deleteUserGroup, original, showErrorDialog]);\n\n if (!original) return null;\n\n return (\n \n \n \n \n \n \n \n \n \n \n setModal({\n children: (\n \n ),\n clickOutsideToClose: true,\n centered: true,\n size: 'sm',\n })\n }\n >\n \n \n \n \n \n\n deleteConfirmDialog.launchDialog()}\n >\n \n \n \n \n \n \n \n \n\n }\n bodyText={}\n onOkay={() => onDeleteUserGroup()}\n onCancel={() => deleteConfirmDialog.closeDialog()}\n />\n \n );\n },\n }),\n];\n","import {\n functionalUpdate,\n PaginationState,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useMemo, useState } from 'react';\nimport { FormatContent, useContent } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { useUserGroups } from 'src/hooks/useUserGroups';\nimport { NoData, Table } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { UserGroup } from 'src/WebApiController';\nimport { TEAMS_TABLE_COLUMNS_CONFIG } from './TeamsTableColumnsConfig';\n\nexport const PAGE_SIZE = 10;\n\nexport const TeamsTable = () => {\n const teamsText = useContent(ContentId.Teams);\n const [pagination, setPagination] = useState({\n pageIndex: 0,\n pageSize: PAGE_SIZE,\n });\n const [sorting, setSorting] = useState([\n { id: 'name', desc: false },\n ]);\n const { userGroups } = useUserGroups();\n\n const data = useMemo(() => {\n return Object.values(userGroups ?? {});\n }, [userGroups]);\n\n const options: Partial> = {\n data,\n columns: TEAMS_TABLE_COLUMNS_CONFIG,\n state: {\n pagination,\n sorting,\n },\n onPaginationChange: setPagination,\n onSortingChange: (sortingUpdaterFn) => {\n const newSortVal = functionalUpdate(sortingUpdaterFn, sorting);\n setSorting(newSortVal);\n },\n };\n\n return (\n \n {data.length > 0 ? (\n
    \n ) : (\n \n \n \n )}\n \n );\n};\n","import { useContext } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature } from 'src/WebApiController';\n\nimport { AddTeamModal } from './EditTeam/AddTeamModal';\nimport { TeamsTable } from './TeamsTable';\nimport * as styles from './UsersManagement.css';\n\nexport const Teams = () => {\n const { setModal, closeModal } = useContext(ModalContext);\n const hasTeamManagementFeature = useUserHasFeature(Feature.TeamManagement);\n if (!hasTeamManagementFeature) return null;\n\n return (\n \n \n
    \n \n
    \n \n setModal({\n children: ,\n clickOutsideToClose: true,\n centered: true,\n size: 'sm',\n })\n }\n >\n \n \n \n
    \n \n
    \n );\n};\n","import { debounce } from 'lodash-es';\nimport { useCallback, useState } from 'react';\nimport { useFormattedContent } from 'src/contexts/ContentContext';\nimport { PosSearchBox } from 'src/core/POS/PosSearchBox';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\n\ninterface FilterVendorAccountProps {\n disable?: boolean;\n onSearchTextChanged: (searchText: string) => void;\n searchEntityLabel: string;\n}\n\nexport const FilterInput = ({\n disable,\n onSearchTextChanged,\n searchEntityLabel,\n}: FilterVendorAccountProps) => {\n const [searchText, setSearchText] = useState('');\n\n const searchPlaceholderText = useFormattedContent(\n FormatContentId.SearchItem,\n searchEntityLabel\n ) as string;\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedOnSearchChange = useCallback(\n debounce((text: string) => {\n const newText = text.trim();\n if (newText !== searchText) {\n setSearchText(newText);\n onSearchTextChanged(newText);\n }\n }, 250),\n [searchText, onSearchTextChanged]\n );\n\n return (\n \n );\n};\n","import * as Label from '@radix-ui/react-label';\nimport { useCallback, useState } from 'react';\nimport { FormProvider, useForm, useFormContext } from 'react-hook-form';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button } from 'src/core/ui';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { SellerAccountClient } from 'src/WebApiController';\n\nimport * as styles from './EditUserModal.css';\n\nconst AddUserModalHeader = () => {\n return (\n
    \n
    \n \n
    \n
    \n );\n};\n\ntype AddUserInput = {\n email: string;\n};\n\ntype AddUserModalFooterProps = { onClose: () => void };\n\nconst AddUserModalFooter = ({ onClose }: AddUserModalFooterProps) => {\n const { handleSubmit, setError, getValues, clearErrors, resetField } =\n useFormContext();\n const requiredMsg = useContent(ContentId.Required);\n const stubhubLoginMsg = useContent(ContentId.StubHubLoginRequired);\n const { showErrorDialog } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const [isLoading, setIsLoading] = useState(false);\n const { refetchUserInfos, allUserInfos } = useSellerAccountContext();\n\n const onSubmit = useCallback(\n async (formValue: AddUserInput) => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n if (\n Object.values(allUserInfos ?? {}).some(\n (u) => u.email === formValue.email\n )\n ) {\n onClose();\n resetField('email');\n return;\n }\n\n const result = await new SellerAccountClient(\n activeAccountWebClientConfig\n ).activateUserForSellerAccountByEmail(formValue.email);\n\n if (result) {\n refetchUserInfos();\n resetField('email');\n onClose();\n } else {\n setError('email', { message: stubhubLoginMsg });\n }\n },\n (error) => {\n showErrorDialog(\n 'SellerAccountClient.activateUserForSellerAccount',\n error,\n {\n trackErrorData: formValue,\n }\n );\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [\n activeAccountWebClientConfig,\n allUserInfos,\n onClose,\n refetchUserInfos,\n resetField,\n setError,\n showErrorDialog,\n stubhubLoginMsg,\n ]\n );\n\n const onSubmitHandler = useCallback(() => {\n const formValue = getValues();\n\n const { email } = formValue;\n\n clearErrors('email');\n\n let hasErrors = false;\n\n if (!email) {\n setError('email', { message: requiredMsg });\n hasErrors = true;\n }\n\n if (hasErrors) {\n return;\n }\n\n handleSubmit(onSubmit)();\n }, [getValues, clearErrors, handleSubmit, onSubmit, setError, requiredMsg]);\n\n const cancelText = useContent(ContentId.Cancel);\n const saveText = useContent(ContentId.Add);\n return (\n
    \n
    \n \n \n
    \n
    \n );\n};\n\nexport const AddUserModal = ({\n isOpen,\n onClose,\n}: {\n isOpen: boolean;\n onClose: () => void;\n}) => {\n const methods = useForm();\n\n return (\n \n \n \n );\n};\n\nconst AddUserModalContent = ({\n isOpen,\n onClose,\n}: {\n isOpen: boolean;\n onClose: () => void;\n}) => {\n const {\n register,\n formState: { errors },\n watch,\n setValue,\n clearErrors,\n } = useFormContext();\n\n const email = watch('email');\n\n return (\n \n \n \n \n \n
    \n
    \n \n \n \n \n {\n clearErrors('email');\n setValue('email', e.target.value);\n }}\n />\n \n
    \n
    \n
    \n \n \n \n
    \n );\n};\n","import { useMemo } from 'react';\nimport { useFlexSearchIndex } from 'src/hooks/useFlexSearchIndex';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { Feature, SellerUserAccountInfo } from 'src/WebApiController';\n\nexport const useGetFilteredUsers = ({\n users,\n searchText,\n}: {\n users: SellerUserAccountInfo[];\n searchText: string;\n}) => {\n const hasUserSearchBar = useUserHasFeature(Feature.UserSearchBar);\n\n const { userOptionsContent, userIdsMap } = useMemo(() => {\n const userOptionsContent: Record = {};\n const userIdsMap: Record = {};\n users?.forEach((user: SellerUserAccountInfo) => {\n const userId = user.userId;\n userOptionsContent[userId] = user.email;\n userIdsMap[userId] = user;\n });\n\n return {\n userOptionsContent,\n userIdsMap,\n };\n }, [users]);\n\n const { flexSearchIndex } = useFlexSearchIndex(\n userOptionsContent,\n hasUserSearchBar && Object.keys(userOptionsContent).length > 0,\n true\n );\n\n const filterdUserIds = useMemo(() => {\n if (!searchText || !flexSearchIndex || !users || !hasUserSearchBar) {\n return [];\n }\n\n return flexSearchIndex.search(searchText) as string[];\n }, [flexSearchIndex, hasUserSearchBar, searchText, users]);\n\n return useMemo(() => {\n if (!searchText || !hasUserSearchBar) {\n return users;\n }\n\n if (filterdUserIds.length === 0) {\n return [];\n }\n\n const filteredUsers: SellerUserAccountInfo[] = [];\n for (const vendorId of filterdUserIds) {\n filteredUsers.push(userIdsMap[vendorId]);\n }\n return filteredUsers;\n }, [filterdUserIds, hasUserSearchBar, searchText, userIdsMap, users]);\n};\n","import * as Label from '@radix-ui/react-label';\nimport { useCallback, useState } from 'react';\nimport { FormProvider, useForm, useFormContext } from 'react-hook-form';\nimport { useToggle } from 'react-use';\nimport { UserGroupMultiSelector } from 'src/components/Selectors/UserGroupSelector';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { useSellerRoleContext } from 'src/contexts/SellerRoleContext';\nimport { ConfirmDialog } from 'src/core/interim/dialogs/ConfirmDialog';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { PosMultiSelect } from 'src/core/POS/PosMultiSelect';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Button } from 'src/core/ui';\nimport { Root as Input } from 'src/core/ui/TextField/TextField';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from 'src/modals/Modal';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n SellerAccountClient,\n SellerUserAccountInfo,\n} from 'src/WebApiController';\n\nimport { activeBadge, inactiveBadge } from '../UsersManagement.css';\nimport * as styles from './EditUserModal.css';\n\nexport const EditUserModalHeader = () => {\n return (\n
    \n
    \n \n
    \n
    \n );\n};\n\ntype EditUserModalFooterProps = { onClose: () => void };\n\ntype EditUserInput = {\n userId: string;\n displayName: string;\n email: string;\n roles: number[];\n userGroupIds: number[];\n isDeactivated: boolean;\n};\n\nexport const EditUserModalFooter = ({ onClose }: EditUserModalFooterProps) => {\n const deactivateUserText = useContent(ContentId.DeactivateUser);\n const activateUserText = useContent(ContentId.ActivateUser);\n const cancelText = useContent(ContentId.Cancel);\n const saveText = useContent(ContentId.Save);\n\n const { loginContext } = useAppContext();\n\n const { handleSubmit, setError, getValues, clearErrors, watch } =\n useFormContext();\n const requiredMsg = useContent(ContentId.Required);\n const { showErrorDialog } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const [isLoading, setIsLoading] = useState(false);\n const deleteConfirmDialog = useBasicDialog();\n const { refetchUserInfos } = useSellerAccountContext();\n\n const deactivated = watch('isDeactivated');\n const isCurrentUser = loginContext?.user?.userId === getValues().userId;\n\n const onActivateSubmit = useCallback(\n async (formValue: EditUserInput) => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const result = await new SellerAccountClient(\n activeAccountWebClientConfig\n ).activateUserForSellerAccount({ sellerUserId: formValue.userId });\n\n if (result) {\n refetchUserInfos();\n onClose();\n }\n },\n (error) => {\n showErrorDialog('SellerAccountClient.getSellerUserByEmail', error, {\n trackErrorData: formValue,\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [activeAccountWebClientConfig, onClose, refetchUserInfos, showErrorDialog]\n );\n\n const onUpdateSubmit = useCallback(\n async (formValue: EditUserInput) => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const result = await new SellerAccountClient(\n activeAccountWebClientConfig\n ).updateSellerUser({\n sellerUserId: formValue.userId,\n displayName: formValue.displayName,\n roles: formValue.roles,\n userGroupIds: formValue.userGroupIds,\n });\n\n if (result) {\n refetchUserInfos();\n onClose();\n }\n },\n (error) => {\n showErrorDialog('SellerAccountClient.updateSellerUser', error, {\n trackErrorData: formValue,\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [activeAccountWebClientConfig, refetchUserInfos, onClose, showErrorDialog]\n );\n\n const onUpdateSubmitHandler = useCallback(() => {\n const formValue = getValues();\n\n const { displayName, roles } = formValue;\n\n clearErrors('displayName');\n clearErrors('roles');\n\n let hasErrors = false;\n\n if (!displayName) {\n setError('displayName', { message: requiredMsg });\n hasErrors = true;\n }\n\n if (!roles || !roles.length) {\n setError('roles', { message: requiredMsg });\n hasErrors = true;\n }\n\n if (hasErrors) {\n return;\n }\n\n handleSubmit(onUpdateSubmit)();\n }, [\n getValues,\n clearErrors,\n handleSubmit,\n onUpdateSubmit,\n setError,\n requiredMsg,\n ]);\n\n const onDeleteSubmit = useCallback(\n async (formValue: EditUserInput) => {\n setIsLoading(true);\n tryInvokeApi(\n async () => {\n const result = await new SellerAccountClient(\n activeAccountWebClientConfig\n ).deactivateUserForSellerAccount({ sellerUserId: formValue.userId });\n\n if (result) {\n refetchUserInfos();\n onClose();\n }\n },\n (error) => {\n showErrorDialog(\n 'SellerAccountClient.removeUserFromSellerAccount',\n error,\n {\n trackErrorData: formValue,\n }\n );\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [activeAccountWebClientConfig, refetchUserInfos, onClose, showErrorDialog]\n );\n\n return (\n <>\n
    \n
    \n {deactivated ? (\n {\n handleSubmit(onActivateSubmit)();\n }}\n disabled={isLoading}\n >\n {activateUserText}\n \n ) : (\n {\n deleteConfirmDialog.launchDialog();\n }}\n disabled={isLoading || isCurrentUser}\n >\n {deactivateUserText}\n \n )}\n
    \n
    \n \n \n
    \n
    \n }\n bodyText={}\n onOkay={handleSubmit(onDeleteSubmit)}\n disabled={isLoading}\n onCancel={() => deleteConfirmDialog.closeDialog()}\n />\n \n );\n};\n\nexport const EditUserModal = ({\n userId,\n displayName,\n email,\n roles,\n userGroupIds,\n isDeactivated,\n onClose,\n}: SellerUserAccountInfo & { onClose: () => void }) => {\n const methods = useForm({\n defaultValues: {\n userId,\n displayName,\n email,\n roles,\n userGroupIds,\n isDeactivated,\n },\n });\n\n return (\n \n \n \n );\n};\n\nexport const EditUserModalContent = ({ onClose }: { onClose: () => void }) => {\n const [isOpen, toggleIsOpen] = useToggle(true);\n\n const {\n formState: { errors },\n watch,\n register,\n clearErrors,\n setValue,\n } = useFormContext();\n\n const { allSellerRolesForSelection } = useSellerRoleContext();\n const displayName = watch('displayName');\n const email = watch('email');\n const roles = watch('roles');\n const isDeactivated = watch('isDeactivated');\n const userGroupIds = watch('userGroupIds');\n\n return (\n {\n toggleIsOpen();\n onClose();\n }}\n unmountOnClose\n clickOutsideToClose\n centered\n size=\"sm\"\n >\n {\n toggleIsOpen();\n onClose();\n }}\n >\n \n \n \n
    \n
    \n \n \n \n \n {\n clearErrors('displayName');\n setValue('displayName', e.target.value);\n }}\n />\n \n
    \n
    \n \n \n \n \n {email}\n \n
    \n
    \n \n \n \n {allSellerRolesForSelection ? (\n \n r.toString())}\n valueOptionsContent={allSellerRolesForSelection}\n onChange={(newValues) => {\n clearErrors('roles');\n setValue(\n 'roles',\n newValues.map((v) => parseInt(v))\n );\n }}\n />\n \n ) : (\n \n )}\n
    \n\n
    \n \n \n \n \n r.toString())}\n onChange={(newValues) => {\n clearErrors('userGroupIds');\n setValue(\n 'userGroupIds',\n newValues.map((v) => parseInt(v))\n );\n }}\n />\n \n
    \n\n
    \n \n \n \n
    \n {!isDeactivated ? (\n
    \n \n
    \n ) : (\n
    \n \n
    \n )}\n
    \n
    \n
    \n
    \n \n {\n toggleIsOpen();\n onClose();\n }}\n />\n \n \n );\n};\n","import { SellerRoleInfo, SellerRoleInput } from 'src/WebApiController';\n\nexport const mapToSellerRoleInput = (roles?: SellerRoleInfo[] | null) => {\n return {\n id: -1,\n permissions: [...(roles?.flatMap((role) => role.permissions) ?? [])],\n } as SellerRoleInput;\n};\n","import { ComponentProps, useContext } from 'react';\nimport { FormProvider } from 'react-hook-form';\nimport { CancelButton } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { typography } from 'src/core/themes/shared.css';\nimport { Stack } from 'src/core/ui';\nimport { CancellableFormHeader } from 'src/modals/common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from 'src/modals/common/EventEntityHeader';\nimport {\n ModalBody,\n ModalBodyDataContainer,\n ModalFooter,\n} from 'src/modals/Modal/Modal.styled';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PermissionAccessArea, SellerRoleInput } from 'src/WebApiController';\n\nimport { SellerPermissionSelectionSection } from '../SellerRoleModal/components/SellerPermissionSelectionSection';\nimport * as styles from './SellerPermissionDisplayModal.css';\nimport { SellerPermissionDisplayModalProps } from './SellerPermissionDisplayModal.types';\n\nexport const SellerPermissionDisplayModalBody = ({\n cancelTo,\n isLoading,\n}: Omit<\n ComponentProps>,\n 'children'\n> &\n SellerPermissionDisplayModalProps) => {\n const { closeModal } = useContext(ModalContext);\n\n return (\n <>\n \n \n \n \n }\n />\n \n\n \n \n {isLoading ? (\n \n ) : (\n \n \n \n \n\n {Object.keys(PermissionAccessArea).map((area) => (\n \n ))}\n \n )}\n \n \n\n \n \n \n \n \n \n );\n};\n","import { useEffect, useMemo } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useSellerRoleContext } from 'src/contexts/SellerRoleContext';\nimport { SellerRoleInput } from 'src/WebApiController';\n\nimport { mapToSellerRoleInput } from './SellerPermissionDisplayModal.utils';\nimport { SellerPermissionDisplayModalBody } from './SellerPermissionDisplayModalBody';\n\nexport const SellerPermissionDisplayModal = ({\n roleIds,\n}: {\n roleIds?: number[] | null;\n}) => {\n const { allSellerRoles, isLoading } = useSellerRoleContext();\n\n const roleInfos = useMemo(() => {\n if (!roleIds || !allSellerRoles) return null;\n\n return roleIds.map((roleId) => allSellerRoles[roleId]);\n }, [allSellerRoles, roleIds]);\n\n const methods = useForm({\n defaultValues: mapToSellerRoleInput(roleInfos),\n });\n\n useEffect(() => {\n methods.reset(mapToSellerRoleInput(roleInfos));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [roleInfos]);\n\n return (\n \n \n \n );\n};\n","import { SellerPermissionDisplayModal } from './SellerPermissionDisplayModal';\n\nexport const getSellerPermissionDisplayModalConfig = (\n roleIds?: number[] | null\n) => ({\n children: ,\n clickOutsideToClose: true,\n size: 'slide-in',\n});\n","import { createColumnHelper } from '@tanstack/react-table';\nimport { useCallback, useContext } from 'react';\nimport { IconButton } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { useSellerRoleContext } from 'src/contexts/SellerRoleContext';\nimport { ContentPlaceholder } from 'src/core/POS/ContentPlaceholder';\nimport { Stack } from 'src/core/ui';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { EditIcon, UnHideIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SellerUserAccountInfo } from 'src/WebApiController';\n\nimport { EditUserModal } from '../EditUser/EditUserModal';\nimport { getSellerPermissionDisplayModalConfig } from '../SellerPermissionDisplayModal';\nimport * as styles from '../UsersManagement.css';\n\nconst columnHelper = createColumnHelper();\n\nexport const USERS_TABLE_COLUMNS_CONFIG = [\n columnHelper.accessor('displayName', {\n id: 'name',\n enableSorting: true,\n sortingFn: 'text',\n header: () => (\n \n \n \n ),\n cell: ({ getValue }) => (\n {getValue()}\n ),\n }),\n columnHelper.accessor('email', {\n id: 'email',\n header: () => (\n \n \n \n ),\n cell: ({ getValue }) => (\n \n
    {getValue()}
    \n
    \n ),\n }),\n columnHelper.accessor('isDeactivated', {\n id: 'status',\n header: () => (\n \n {' '}\n \n \n ),\n cell: ({ getValue }) => (\n \n {!getValue() ? (\n
    \n \n
    \n ) : (\n
    \n \n
    \n )}\n
    \n ),\n }),\n columnHelper.accessor('roles', {\n id: 'role',\n header: () => (\n \n \n \n ),\n cell: function Cell({ getValue }) {\n const roles = getValue();\n const { allSellerRoles } = useSellerRoleContext();\n\n if (!allSellerRoles) {\n return ;\n }\n\n // TODO - get content for those predefined roles\n\n const roleNames = roles\n .map((r) => allSellerRoles[r]?.name)\n .filter((n) => n);\n\n return {roleNames.join(', ')};\n },\n }),\n columnHelper.accessor((data) => data, {\n id: 'actions',\n header: () => (\n \n \n \n ),\n enableSorting: false,\n size: 40,\n cell: function Cell({ getValue }) {\n const { setModal, closeModal } = useContext(ModalContext);\n const data = getValue();\n\n const onViewPermissionClick = useCallback(() => {\n setModal(getSellerPermissionDisplayModalConfig(data.roles));\n }, [data.roles, setModal]);\n\n const onEditClick = useCallback(() => {\n setModal({\n children: ,\n clickOutsideToClose: true,\n centered: true,\n size: 'sm',\n });\n }, [closeModal, data, setModal]);\n\n return (\n \n \n }\n onClick={onViewPermissionClick}\n />\n }\n onClick={onEditClick}\n />\n \n \n );\n },\n }),\n];\n","import {\n functionalUpdate,\n PaginationState,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useMemo, useState } from 'react';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { useSellerAccountContext } from 'src/contexts/SellerAccountContext';\nimport { Table } from 'src/tables/Table';\nimport { SellerUserAccountInfo } from 'src/WebApiController';\nimport { useGetFilteredUsers } from './hooks/useGetFilteredUsers';\nimport { USERS_TABLE_COLUMNS_CONFIG } from './UsersTableColumnsConfig';\n\nexport const PAGE_SIZE = 10;\n\nexport const UsersTable = ({ searchText }: { searchText: string }) => {\n const [pagination, setPagination] = useState({\n pageIndex: 0,\n pageSize: PAGE_SIZE,\n });\n const [sorting, setSorting] = useState([\n { id: 'name', desc: false },\n ]);\n const { allUserInfos } = useSellerAccountContext();\n\n const data = useMemo(() => {\n return Object.values(allUserInfos ?? {});\n }, [allUserInfos]);\n\n const filteredUsers = useGetFilteredUsers({\n users: data,\n searchText,\n });\n\n const options: Partial> = {\n data: filteredUsers,\n columns: USERS_TABLE_COLUMNS_CONFIG,\n state: {\n pagination,\n sorting,\n },\n onPaginationChange: setPagination,\n onSortingChange: (sortingUpdaterFn) => {\n const newSortVal = functionalUpdate(sortingUpdaterFn, sorting);\n setSorting(newSortVal);\n },\n };\n\n return (\n \n
    \n \n );\n};\n","import { useState } from 'react';\nimport { useToggle } from 'react-use';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature } from 'src/WebApiController';\n\nimport { FilterInput } from '../VendorManagement/Vendors/components/FilterInput';\nimport { AddUserModal } from './EditUser/AddUserModal';\nimport * as styles from './UsersManagement.css';\nimport { UsersTable } from './UsersTable';\n\nexport const Users = () => {\n const [isAddUserModalOpen, toggleAddUserModalOpen] = useToggle(false);\n const users = useContent(ContentId.Users);\n const [searchText, setSearchText] = useState('');\n const hasUserSearchBar = useUserHasFeature(Feature.UserSearchBar);\n\n return (\n \n \n
    \n \n
    \n \n {hasUserSearchBar && (\n \n )}\n \n \n \n \n \n \n \n
    \n \n \n
    \n );\n};\n","import { Outlet } from 'react-router-dom';\n\nexport const UsersManagement = () => {\n return ;\n};\n","import { useRef } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { shared, vars } from 'src/core/themes';\nimport { Button, Stack } from 'src/core/ui';\nimport { useGetAccessiblePurchasePaymentMethodsQuery } from 'src/hooks/api/useGetAccessiblePurchasePaymentMethodsQuery';\nimport { paymentsWrapper } from 'src/navigations/Routes/Settings/Views/VendorManagement/Payments/Payment.css';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport {\n PurchasePaymentMethodsImperativeRef,\n PurchasePaymentMethodsTableContainer,\n} from 'src/tables/PurchasePaymentMethodsTable/PurchasePaymentMethodsTableContainer';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const Payments = () => {\n const purchasePaymentMethodsQuery =\n useGetAccessiblePurchasePaymentMethodsQuery();\n\n const purchasePaymentMethods = purchasePaymentMethodsQuery.data;\n\n const purchasePaymentMethodsRef =\n useRef(null);\n\n return (\n
    \n
    \n \n
    \n \n
    \n \n purchasePaymentMethodsRef.current?.onAddNewPaymentMethod()\n }\n >\n \n \n \n \n \n
    \n
    \n {purchasePaymentMethodsQuery.isLoading ? (\n \n ) : (\n \n )}\n
    \n );\n};\n","import { Outlet } from 'react-router-dom';\n\nexport const VendorManagement = () => {\n return ;\n};\n","import { useMemo } from 'react';\nimport { VendorIdQueryParam } from 'src/utils/constants/constants';\nimport { getDeepLinkIdFromUrl } from 'src/utils/deepLinkUtils';\n\nexport const useGetVendorIdFromUrl = (): number | undefined => {\n return useMemo(() => {\n const vendorId = getDeepLinkIdFromUrl(\n VendorIdQueryParam,\n window.location.href\n );\n return vendorId ? Number(vendorId) : undefined;\n }, []);\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { PurchaseClient } from 'src/WebApiController';\n\nexport const GET_VENDOR_QUERY_KEY = 'getVendor';\n\nexport const useGetVendor = (vendorId: number | undefined) => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n\n return useQuery({\n queryKey: [\n GET_VENDOR_QUERY_KEY,\n activeAccountWebClientConfig.activeAccountId,\n vendorId,\n ],\n queryFn: () => {\n if (activeAccountWebClientConfig.activeAccountId == null) {\n return null;\n }\n return tryInvokeApi(\n () => {\n return new PurchaseClient(activeAccountWebClientConfig).getVendor(\n vendorId\n );\n },\n (error) => {\n trackError('PurchaseClient.getVendor', error);\n }\n );\n },\n enabled: vendorId != null,\n refetchOnWindowFocus: false,\n });\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { PurchaseClient, PurchaseVendorAccount } from 'src/WebApiController';\n\nexport const GET_ACCESSIBLE_VENDOR_ACCOUNTS_KEY = 'getAccessibleVendorAccounts';\n\nconst PAGE_SIZE = 1000;\n\ninterface RequestPage {\n skip: number;\n searchText: string;\n hasNextPage: boolean;\n}\n\nconst defaultRequestPage: RequestPage = {\n skip: 0,\n searchText: '',\n hasNextPage: true,\n};\n\nexport function useGetFilteredAccessibleVendorAccountsQuery(\n purchaseOrderVendorIds: number[] | null | undefined,\n searchText: string\n) {\n const { activeAccountWebClientConfig } = useAppContext();\n const { trackError } = useErrorBoundaryContext();\n const [allVendorAccounts, setAllVendorAccounts] = useState<\n PurchaseVendorAccount[]\n >([]);\n\n const [requestPage, setRequestPage] =\n useState(defaultRequestPage);\n\n useEffect(() => {\n const cleanSearchText = searchText || '';\n if (cleanSearchText !== requestPage.searchText) {\n setAllVendorAccounts([]);\n setRequestPage({\n ...defaultRequestPage,\n searchText: cleanSearchText,\n });\n }\n }, [requestPage.searchText, searchText]);\n\n const getVendorAccountsQuery = useQuery({\n queryKey: [\n GET_ACCESSIBLE_VENDOR_ACCOUNTS_KEY,\n activeAccountWebClientConfig.activeAccountId,\n purchaseOrderVendorIds,\n requestPage,\n ],\n queryFn: async () => {\n if (!purchaseOrderVendorIds?.length) {\n // If all of these are nulls, return nothing\n return allVendorAccounts;\n }\n\n const { skip, hasNextPage, searchText } = requestPage;\n\n // No next page\n if (!hasNextPage) {\n return allVendorAccounts;\n }\n\n const vendorAccounts = await new PurchaseClient(\n activeAccountWebClientConfig\n ).getAccessibleVendorAccounts(\n { item1: purchaseOrderVendorIds, item2: [] },\n searchText || null,\n PAGE_SIZE,\n skip\n );\n\n if (vendorAccounts.length === 0) {\n setRequestPage({\n ...requestPage,\n hasNextPage: false,\n });\n return allVendorAccounts;\n }\n\n const mergedVendors = [...allVendorAccounts, ...vendorAccounts];\n setAllVendorAccounts(mergedVendors);\n return mergedVendors;\n },\n\n refetchOnWindowFocus: false,\n enabled: !!purchaseOrderVendorIds?.length,\n meta: {\n onError: (error: ErrorTypes) => {\n trackError('PurchaseClient.getAccessibleVendorAccounts', error, {\n vendorIdSelected: purchaseOrderVendorIds,\n });\n },\n },\n });\n\n const loadNextVendorAccountsPage = useCallback(() => {\n const nextRequestPage: RequestPage = {\n skip: allVendorAccounts.length,\n hasNextPage: true,\n searchText: requestPage.searchText,\n };\n\n setRequestPage(nextRequestPage);\n }, [allVendorAccounts.length, requestPage.searchText]);\n\n const updateVendorAccount = useCallback(\n (vendorAccount: PurchaseVendorAccount) => {\n const vendorAccountIndex = allVendorAccounts.findIndex(\n (va) => va.id === vendorAccount.id\n );\n\n if (vendorAccountIndex === -1) {\n return;\n }\n\n const allVendorVendorAccountsUpdated = [...allVendorAccounts];\n allVendorVendorAccountsUpdated[vendorAccountIndex] = vendorAccount;\n setAllVendorAccounts(allVendorVendorAccountsUpdated);\n },\n [allVendorAccounts]\n );\n\n const refreshSearch = useCallback(() => {\n setAllVendorAccounts([]);\n setRequestPage({\n ...requestPage,\n hasNextPage: true,\n skip: 0, // Start from the begging\n });\n getVendorAccountsQuery.refetch();\n }, [getVendorAccountsQuery, requestPage]);\n\n return {\n ...getVendorAccountsQuery,\n data: allVendorAccounts,\n loadNextVendorAccountsPage,\n updateVendorAccount,\n refreshSearch,\n };\n}\n","import { useQueryClient } from '@tanstack/react-query';\nimport { useCallback } from 'react';\nimport { GET_VENDOR_QUERY_KEY } from 'src/hooks/api/useGetVendor';\n\nexport const useInvalidateGetVendorQuery = () => {\n const queryClient = useQueryClient();\n\n return useCallback(async () => {\n await queryClient.invalidateQueries({\n queryKey: [GET_VENDOR_QUERY_KEY],\n // type: 'active',\n });\n }, [queryClient]);\n};\n","import { useContent } from 'src/contexts/ContentContext';\nimport { FilterInput } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/FilterInput';\nimport { ContentId } from 'src/utils/constants/contentId';\n\ninterface FilterVendorAccountsInputProps {\n disable?: boolean;\n onSearchTextChanged: (searchText: string) => void;\n}\n\nexport const FilterVendorAccountsInput = ({\n disable,\n onSearchTextChanged,\n}: FilterVendorAccountsInputProps) => {\n const vendorAccounts = useContent(ContentId.VendorAccounts);\n return (\n \n );\n};\n","import { useQueryClient } from '@tanstack/react-query';\nimport { useCallback } from 'react';\nimport { GET_ACCESSIBLE_VENDORS_QUERY_KEY } from 'src/hooks/api/useGetAccessibleVendorsQuery';\n\nexport const useInvalidateGetAccessibleVendorsQuery = () => {\n const queryClient = useQueryClient();\n\n return useCallback(async () => {\n await queryClient.invalidateQueries({\n queryKey: [GET_ACCESSIBLE_VENDORS_QUERY_KEY],\n type: 'active',\n });\n }, [queryClient]);\n};\n","import { useCallback, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { EmptyVendorAccountId } from 'src/dialogs/PurchaseVendorAccountDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ApiException,\n PurchaseClient,\n PurchaseVendorAccount,\n PurchaseVendorAccountDetails,\n} from 'src/WebApiController';\n\nexport type OnVendorAccountSaveArgs = {\n vendorAccount: PurchaseVendorAccount;\n isNew: boolean;\n};\n\nexport type VendorAccountEditInfo = {\n vendorId: number;\n id: string;\n};\n\nexport type OnVendorAccountSavedFn = (value: OnVendorAccountSaveArgs) => void;\n\ninterface UseAddVendorAccountProps {\n onVendorAccountSaved?: OnVendorAccountSavedFn;\n}\n\nexport const useAddVendorAccount = (props?: UseAddVendorAccountProps) => {\n const onVendorAccountSaved = props?.onVendorAccountSaved;\n\n // Purchase Vendor Account\n const [currentVendorAccount, setCurrentVendorAccount] =\n useState();\n const venderAccountDialog = useBasicDialog();\n const { closeDialog, launchDialog } = venderAccountDialog;\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const onVendorAccountCancel = useCallback(() => {\n setCurrentVendorAccount(undefined);\n closeDialog();\n }, [closeDialog]);\n\n const onSaveVendorAccount = useCallback(\n async (vendorAccount: PurchaseVendorAccountDetails) => {\n await tryInvokeApi(\n async () => {\n const newId = await new PurchaseClient(\n activeAccountWebClientConfig\n ).mergeVendorAccount(vendorAccount);\n\n if (newId) {\n const va = {\n ...vendorAccount,\n id: newId,\n };\n onVendorAccountSaved?.({\n vendorAccount: va,\n isNew: vendorAccount.id === EmptyVendorAccountId,\n });\n } else {\n // This should never happen\n // Normal errors would have fallen to the error catch\n showErrorDialog(\n 'PurchaseClient.mergeVendorAccount',\n {\n message:\n 'Unable to create or save vendorAccount ' + vendorAccount.id,\n status: 500,\n } as ApiException,\n {\n trackErrorData: vendorAccount,\n }\n );\n }\n },\n (error) => {\n showErrorDialog('PurchaseClient.mergeVendorAccount', error, {\n trackErrorData: vendorAccount,\n });\n },\n onVendorAccountCancel\n );\n },\n [\n onVendorAccountCancel,\n activeAccountWebClientConfig,\n onVendorAccountSaved,\n showErrorDialog,\n ]\n );\n\n const onAddNewVendorAccount = useCallback(\n (vendorId: number) => {\n setCurrentVendorAccount({\n vendorId: vendorId,\n id: EmptyVendorAccountId,\n });\n venderAccountDialog.launchDialog();\n },\n [venderAccountDialog]\n );\n\n const onEditVendorAccount = useCallback(\n (vendorAccount: PurchaseVendorAccount) => {\n setCurrentVendorAccount(vendorAccount);\n launchDialog();\n },\n [launchDialog]\n );\n\n return {\n currentVendorAccount,\n onAddNewVendorAccount,\n onEditVendorAccount,\n onSaveVendorAccount,\n onVendorAccountCancel,\n venderAccountDialog,\n };\n};\n","import { useCallback } from 'react';\nimport { useInvalidateGetAccessibleVendorsQuery } from 'src/hooks/api/useInvalidateGetAccessibleVendorsQuery';\nimport {\n OnVendorAccountSaveArgs,\n OnVendorAccountSavedFn,\n useAddVendorAccount,\n} from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/hooks/useAddVendorAccount';\n\ninterface UseAddVendorAccountActionsProps {\n onVendorAccountSaved: OnVendorAccountSavedFn;\n}\n\nexport const useAddVendorAccountActions = (\n props?: UseAddVendorAccountActionsProps\n) => {\n const onVendorAccountSavedProp = props?.onVendorAccountSaved;\n const invalidateGetAccessibleVendorsQuery =\n useInvalidateGetAccessibleVendorsQuery();\n\n const onVendorAccountSaved = useCallback(\n async (value: OnVendorAccountSaveArgs) => {\n await Promise.all([\n invalidateGetAccessibleVendorsQuery(),\n onVendorAccountSavedProp?.(value),\n ]);\n },\n [invalidateGetAccessibleVendorsQuery, onVendorAccountSavedProp]\n );\n\n return useAddVendorAccount({\n onVendorAccountSaved,\n });\n};\n","import { MutableRefObject, useImperativeHandle } from 'react';\nimport { PurchaseVendorAccountDialog } from 'src/dialogs/PurchaseVendorAccountDialog';\nimport { PurchaseVendorAccountActions } from 'src/modals/VendorDetails/components/VendorAccounts/components/VendorAccountsTable/VendorsAccountsTableColumnsConfig';\nimport { useAddVendorAccountActions } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorActions/useAddVendorAccountActions';\nimport { OnVendorAccountSavedFn } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/hooks/useAddVendorAccount';\nimport { PurchaseVendorAccount } from 'src/WebApiController';\n\nexport type VendorAccountActionsImperativeRef = PurchaseVendorAccountActions;\n\ninterface VendorAccountsActionsProps {\n vendorAccountsActionsRef: MutableRefObject;\n onVendorAccountSaved: OnVendorAccountSavedFn;\n}\n\nexport const VendorAccountsActions = ({\n vendorAccountsActionsRef,\n onVendorAccountSaved,\n}: VendorAccountsActionsProps) => {\n const {\n onEditVendorAccount,\n venderAccountDialog,\n currentVendorAccount,\n onVendorAccountCancel,\n onSaveVendorAccount,\n } = useAddVendorAccountActions({ onVendorAccountSaved });\n\n useImperativeHandle(\n vendorAccountsActionsRef,\n () => {\n return {\n editVendorAccount: (vendorAccount: PurchaseVendorAccount) => {\n onEditVendorAccount(vendorAccount);\n },\n };\n },\n [onEditVendorAccount]\n );\n\n return (\n <>\n {currentVendorAccount && (\n \n )}\n \n );\n};\n","import { IconButton } from 'src/components/Buttons';\nimport { Stack } from 'src/core/ui';\nimport { PurchaseVendorAccountWithActions } from 'src/modals/VendorDetails/components/VendorAccounts/components/VendorAccountsTable/VendorsAccountsTableColumnsConfig';\nimport { EditIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\ninterface VendorAccountsActionsCellProps {\n vendorAccountWithActions: PurchaseVendorAccountWithActions | null;\n}\n\nexport const VendorAccountsActionsCell = ({\n vendorAccountWithActions,\n}: VendorAccountsActionsCellProps) => {\n if (!vendorAccountWithActions) {\n return null;\n }\n\n return (\n \n }\n onClick={() =>\n vendorAccountWithActions?.vendorAccountActions.editVendorAccount(\n vendorAccountWithActions.vendorAccount\n )\n }\n titleContentId={ContentId.Edit}\n />\n \n );\n};\n","export enum VendorsAccountsTableColumnId {\n VendorAccount = 'name',\n Email = 'email',\n Actions = 'actions',\n Password = 'password',\n}\n","import { createColumnHelper } from '@tanstack/react-table';\nimport React, { useState } from 'react';\nimport {\n COLUMN_DEFAULT_SIZE_BASE,\n COLUMN_DEFAULT_SIZE_SM,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport { Content } from 'src/contexts/ContentContext';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { VendorAccountsActionsCell } from 'src/modals/VendorDetails/components/VendorAccounts/components/VendorAccountsTable/VendorAccountsActionsCell';\nimport { VendorsAccountsTableColumnId } from 'src/modals/VendorDetails/components/VendorAccounts/components/VendorAccountsTable/vendorsAccountsColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PurchaseVendorAccount } from 'src/WebApiController';\nimport { HideIcon, UnHideIcon } from 'src/svgs/Viagogo';\n\nexport type PurchaseVendorAccountActions = {\n editVendorAccount: (vendorAccount: PurchaseVendorAccount) => void;\n};\n\nexport type PurchaseVendorAccountWithActions = {\n vendorAccount: PurchaseVendorAccount;\n vendorAccountActions: PurchaseVendorAccountActions;\n};\n\nconst columnHelper =\n createColumnHelper();\nexport const VENDORS_ACCOUNTS_TABLE_COLUMNS_CONFIG = {\n [VendorsAccountsTableColumnId.VendorAccount]: columnHelper.accessor(\n (data) => data?.vendorAccount?.name,\n {\n id: VendorsAccountsTableColumnId.VendorAccount,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_DEFAULT_SIZE_BASE,\n maxSize: COLUMN_DEFAULT_SIZE_BASE,\n enableSorting: false,\n enableResizing: false,\n cell: function Cell({ getValue }) {\n return {getValue()};\n },\n }\n ),\n [VendorsAccountsTableColumnId.Email]: columnHelper.accessor(\n (data) => data?.vendorAccount?.email,\n {\n id: VendorsAccountsTableColumnId.Email,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_DEFAULT_SIZE_BASE,\n maxSize: COLUMN_DEFAULT_SIZE_BASE,\n enableSorting: false,\n enableResizing: false,\n cell: function Cell({ getValue }) {\n return {getValue()};\n },\n }\n ),\n [VendorsAccountsTableColumnId.Password]: columnHelper.accessor(\n (data) => data?.vendorAccount?.password,\n {\n id: VendorsAccountsTableColumnId.Password,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_DEFAULT_SIZE_BASE,\n maxSize: COLUMN_DEFAULT_SIZE_BASE,\n enableSorting: false,\n enableResizing: false,\n cell: function Cell({ getValue }) {\n const [showPassword, setShowPassword] = React.useState(false);\n const password = getValue();\n return (\n \n {password ? (\n <>\n \n {showPassword ? password : '••••••'}\n \n setShowPassword(!showPassword)}\n style={{\n marginLeft: '8px',\n background: 'none',\n border: 'none',\n cursor: 'pointer'\n }}\n >\n {showPassword ? : }\n \n ) : ('')\n }\n \n );\n },\n }\n ),\n [VendorsAccountsTableColumnId.Actions]: columnHelper.accessor(() => null, {\n id: VendorsAccountsTableColumnId.Actions,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_DEFAULT_SIZE_SM,\n maxSize: COLUMN_DEFAULT_SIZE_SM,\n enableSorting: false,\n enableResizing: false,\n cell: function Cell({ row: { original } }) {\n return (\n \n \n \n );\n },\n }),\n};\n","import { TableOptions } from '@tanstack/react-table';\nimport { CSSProperties, useMemo, useRef } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\nimport { useGetFilteredAccessibleVendorAccountsQuery } from 'src/hooks/api/useGetFilteredAccessibleVendorAccountsQuery';\nimport {\n VendorAccountActionsImperativeRef,\n VendorAccountsActions,\n} from 'src/modals/VendorDetails/components/VendorAccounts/components/VendorAccountsTable/VendorAccountActions';\nimport {\n PurchaseVendorAccountWithActions,\n VENDORS_ACCOUNTS_TABLE_COLUMNS_CONFIG,\n} from 'src/modals/VendorDetails/components/VendorAccounts/components/VendorAccountsTable/VendorsAccountsTableColumnsConfig';\nimport { OnVendorAccountSavedFn } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/hooks/useAddVendorAccount';\nimport { Table } from 'src/tables/Table';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PurchaseVendorAccount } from 'src/WebApiController';\n\nconst getRowId = (\n row: PurchaseVendorAccountWithActions | null,\n index: number\n) => (row?.vendorAccount?.id ?? index).toString();\n\nconst columns = Object.values(VENDORS_ACCOUNTS_TABLE_COLUMNS_CONFIG);\n\nconst tableWrapperStyle: CSSProperties = { height: '100% ' };\nconst disabledPaginationStyles: CSSProperties = {\n position: 'sticky',\n top: '0',\n zIndex: '10',\n};\n\ninterface VendorAccountsTableProps {\n vendorAccountsQuery: ReturnType<\n typeof useGetFilteredAccessibleVendorAccountsQuery\n >;\n onVendorAccountSaved: OnVendorAccountSavedFn;\n}\n\nexport const VendorAccountsTable = ({\n vendorAccountsQuery,\n onVendorAccountSaved,\n}: VendorAccountsTableProps) => {\n const vendorAccounts = vendorAccountsQuery.data;\n\n const refActions = useRef(null);\n\n const purchaseVendorAccountWithActions = useMemo<\n PurchaseVendorAccountWithActions[]\n >(() => {\n return (vendorAccounts ?? []).map((va: PurchaseVendorAccount) => ({\n vendorAccount: va,\n vendorAccountActions: {\n editVendorAccount: (vendorAccount: PurchaseVendorAccount) => {\n refActions.current?.editVendorAccount(vendorAccount);\n },\n },\n }));\n }, [vendorAccounts]);\n\n const options: Partial<\n TableOptions\n > = useMemo(\n () => ({\n data: purchaseVendorAccountWithActions,\n columns: columns,\n getRowId: getRowId,\n }),\n [purchaseVendorAccountWithActions]\n );\n\n if (!vendorAccountsQuery.isFetching && (vendorAccounts ?? []).length === 0) {\n return (\n \n \n \n );\n }\n\n return (\n
    \n \n {vendorAccountsQuery.isFetching && (\n
    \n \n \n )}\n \n }\n />\n \n \n );\n};\n","import { useCallback } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { PurchaseVendorAccountDialog } from 'src/dialogs/PurchaseVendorAccountDialog';\nimport { useAddVendorAccountActions } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorActions/useAddVendorAccountActions';\nimport { OnVendorAccountSavedFn } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/hooks/useAddVendorAccount';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PurchaseVendor } from 'src/WebApiController';\n\ninterface AddVendorAccountProps {\n vendor: PurchaseVendor;\n onVendorAccountSaved: OnVendorAccountSavedFn;\n}\n\nexport const AddVendorAccount = ({\n vendor,\n onVendorAccountSaved,\n}: AddVendorAccountProps) => {\n const {\n currentVendorAccount,\n onAddNewVendorAccount,\n onSaveVendorAccount,\n onVendorAccountCancel,\n venderAccountDialog,\n } = useAddVendorAccountActions({ onVendorAccountSaved });\n\n const vendorId = vendor.id;\n const addVendorAccount = useCallback(() => {\n onAddNewVendorAccount(vendorId);\n }, [onAddNewVendorAccount, vendorId]);\n\n return (\n <>\n \n {currentVendorAccount && (\n \n )}\n \n );\n};\n","import { useCallback, useState } from 'react';\nimport { BulkEditStatusPopover } from 'src/components/common/BulkActions/BulkEditStatusPopover';\nimport { Content } from 'src/contexts/ContentContext';\nimport { shared } from 'src/core/themes';\nimport { Card, Stack } from 'src/core/ui';\nimport { useGetFilteredAccessibleVendorAccountsQuery } from 'src/hooks/api/useGetFilteredAccessibleVendorAccountsQuery';\nimport { useInvalidateGetVendorQuery } from 'src/hooks/api/useInvalidateGetVendorQuery';\nimport { FilterVendorAccountsInput } from 'src/modals/VendorDetails/components/VendorAccounts/components/FilterVendorAccountsInput';\nimport { VendorAccountsTable } from 'src/modals/VendorDetails/components/VendorAccounts/components/VendorAccountsTable/VendorAccountsTable';\nimport { vendorsPageHeaderWrapper } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorsPageHeader/VendorsPageHeader.css';\nimport { OnVendorAccountSavedFn } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/hooks/useAddVendorAccount';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ActionOutboxEntityType, PurchaseVendor } from 'src/WebApiController';\n\nimport { AddVendorAccount } from './components/AddVendorAccount';\nimport * as styles from './VendorAccounts.css';\n\ninterface VendorAccountsProps {\n vendor: PurchaseVendor;\n}\n\nexport const VendorAccounts = ({ vendor }: VendorAccountsProps) => {\n const [vendorAccountsSerchText, setVendorAccountsSerchText] =\n useState('');\n const vendorAccountsQuery = useGetFilteredAccessibleVendorAccountsQuery(\n [vendor.id],\n vendorAccountsSerchText\n );\n const invalidateGetVendorQuery = useInvalidateGetVendorQuery();\n\n const { refreshSearch, updateVendorAccount } = vendorAccountsQuery;\n\n const onVendorAccountSaved = useCallback(\n ({ vendorAccount, isNew }) => {\n if (isNew) {\n refreshSearch();\n invalidateGetVendorQuery();\n return;\n }\n updateVendorAccount(vendorAccount);\n },\n [invalidateGetVendorQuery, refreshSearch, updateVendorAccount]\n );\n\n return (\n \n
    \n \n
    \n {' '}\n \n ({vendor.vendAccCounts})\n \n
    \n \n \n \n \n \n
    \n
    \n \n \n \n
    \n );\n};\n","import { useQueryClient } from '@tanstack/react-query';\nimport { useCallback, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { GET_VENDOR_QUERY_KEY } from 'src/hooks/api/useGetVendor';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ApiException,\n PurchaseClient,\n PurchaseVendor,\n} from 'src/WebApiController';\n\ninterface UseAddVendorProps {\n onVendorSaved: (vendor: PurchaseVendor) => void;\n}\n\nexport const useAddVendor = (props?: UseAddVendorProps) => {\n const onVendorSaved = props?.onVendorSaved;\n const [currentVendor, setCurrentVendor] = useState();\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const vendorDialog = useBasicDialog();\n const { launchDialog, closeDialog } = vendorDialog;\n const [isLoading, setIsLoading] = useState(false);\n const queryClient = useQueryClient();\n\n const onVendorCancel = useCallback(() => {\n closeDialog();\n setCurrentVendor(undefined);\n }, [closeDialog]);\n\n const onSaveVendor = useCallback(\n async (vendor: PurchaseVendor) => {\n setIsLoading(true);\n await tryInvokeApi(\n async () => {\n const newId = await new PurchaseClient(\n activeAccountWebClientConfig\n ).mergeVendor(vendor);\n\n if (newId) {\n await onVendorSaved?.(vendor);\n queryClient.invalidateQueries({\n queryKey: [\n GET_VENDOR_QUERY_KEY,\n activeAccountWebClientConfig.activeAccountId,\n newId,\n ],\n });\n } else {\n // This should never happen\n // Normal errors would have fallen to the error catch\n showErrorDialog(\n 'PurchaseClient.mergeVendor',\n {\n message: 'Unable to create or save vendor ' + vendor.id,\n status: 500,\n } as ApiException,\n {\n trackErrorData: vendor,\n }\n );\n }\n },\n (error) => {\n showErrorDialog('PurchaseClient.mergeVendor', error, {\n trackErrorData: vendor,\n });\n },\n () => {\n setIsLoading(false);\n onVendorCancel();\n }\n );\n },\n [\n activeAccountWebClientConfig,\n onVendorSaved,\n queryClient,\n showErrorDialog,\n onVendorCancel,\n ]\n );\n\n const onEditVendor = useCallback(\n (vendor: PurchaseVendor) => {\n setCurrentVendor(vendor);\n launchDialog();\n },\n [launchDialog]\n );\n\n return {\n currentVendor,\n onEditVendor,\n onSaveVendor,\n onVendorCancel,\n vendorDialog,\n isLoading,\n };\n};\n","import { useCallback } from 'react';\nimport { useInvalidateGetAccessibleVendorsQuery } from 'src/hooks/api/useInvalidateGetAccessibleVendorsQuery';\nimport { useInvalidateGetVendorQuery } from 'src/hooks/api/useInvalidateGetVendorQuery';\nimport { useAddVendor } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/hooks/useAddVendor';\n\nexport const useAddVendorActions = () => {\n const invalidateGetAccessibleVendorsQuery =\n useInvalidateGetAccessibleVendorsQuery();\n const invalidateGetVendorQuery = useInvalidateGetVendorQuery();\n\n const onVendorSaved = useCallback(async () => {\n await Promise.all([\n invalidateGetAccessibleVendorsQuery(),\n invalidateGetVendorQuery(),\n ]);\n }, [invalidateGetAccessibleVendorsQuery, invalidateGetVendorQuery]);\n\n return useAddVendor({ onVendorSaved });\n};\n","import clsx from 'clsx';\nimport { IconButton } from 'src/components/Buttons';\nimport { typography } from 'src/core/themes/shared.css';\nimport { Stack } from 'src/core/ui';\nimport { PurchaseVendorDialog } from 'src/dialogs/PurchaseVendorDialog';\nimport * as styles from 'src/modals/ColumnSettings/ColumnSettings.css';\nimport { SummaryWrapper } from 'src/modals/common/Summary/SummaryWrapper';\nimport { useAddVendorActions } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorActions/useAddVendorActions';\nimport { EditIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PurchaseVendor } from 'src/WebApiController';\n\nimport * as vendorSummaryStyles from './VendorSummary.css';\n\ninterface VendorSummaryProps {\n vendor: PurchaseVendor;\n onVendorDeleted: () => void;\n}\n\nexport const VendorSummary = ({\n vendor,\n onVendorDeleted,\n}: VendorSummaryProps) => {\n const {\n onEditVendor,\n currentVendor,\n vendorDialog,\n onVendorCancel,\n onSaveVendor,\n } = useAddVendorActions();\n\n return (\n <>\n \n \n
    \n {vendor.name}\n
    \n\n \n onEditVendor(vendor)}\n icon={}\n titleContentId={ContentId.Edit}\n />\n {/* NOT IMPLEMENTED IN THE BE YET */}\n {/**/}\n \n \n
    \n {currentVendor && (\n \n )}\n \n );\n};\n","import { useCallback, useEffect } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { ReloadButton } from 'src/components/Buttons';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Button, Stack } from 'src/core/ui';\nimport { PurchaseVendorDeliveryOverrideInput } from 'src/dialogs/PurchaseVendorDialog';\nimport { useGetVendor } from 'src/hooks/api/useGetVendor';\nimport { useAddVendor } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/hooks/useAddVendor';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PurchaseVendor } from 'src/WebApiController';\n\ninterface VendorAutoFulfillProps {\n vendor: PurchaseVendor;\n}\n\nexport const VendorDeliveryOverrideForm = ({\n vendor,\n}: VendorAutoFulfillProps) => {\n const methods = useForm({\n defaultValues: vendor,\n values: vendor,\n });\n\n useEffect(() => {\n methods.reset(vendor);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [vendor]);\n\n const { isFetching } = useGetVendor(vendor.id);\n const { onSaveVendor, isLoading: isMutationLoading } = useAddVendor();\n\n const onReset = useCallback(() => {\n methods.reset();\n }, [methods]);\n\n const {\n formState: { isDirty },\n } = methods;\n\n return (\n \n \n \n {isDirty && (\n \n \n\n {\n onSaveVendor(methods.getValues());\n }}\n disabled={isMutationLoading || isFetching}\n >\n \n \n \n )}\n \n \n );\n};\n","import { useContext } from 'react';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { Stack } from 'src/core/ui';\nimport { VendorAccounts } from 'src/modals/VendorDetails/components/VendorAccounts/VendorAccounts';\nimport { VendorSummary } from 'src/modals/VendorDetails/VendorSummary';\nimport { PurchaseVendor } from 'src/WebApiController';\n\nimport { VendorDeliveryOverrideForm } from './VendorDeliveryOverrideForm';\n\ninterface VendorDetailsBodyContentProps {\n vendor: PurchaseVendor;\n}\n\nexport const VendorDetailsBodyContent = ({\n vendor,\n}: VendorDetailsBodyContentProps) => {\n const { closeModal } = useContext(ModalContext);\n\n return (\n \n \n \n \n \n );\n};\n","import clsx from 'clsx';\nimport { useContext } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { typography } from 'src/core/themes/shared.css';\nimport * as styles from 'src/modals/ColumnSettings/ColumnSettings.css';\nimport { ModalHeader } from 'src/modals/Modal';\nimport * as vendorDetailsStyles from 'src/modals/VendorDetails/VendorDetails.css';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const VendorDetailsModalHeader = () => {\n const { closeModal } = useContext(ModalContext);\n\n return (\n \n
    \n
    \n \n
    \n
    \n
    \n );\n};\n","import { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useGetVendor } from 'src/hooks/api/useGetVendor';\nimport { ModalBody } from 'src/modals/Modal';\nimport { ModalBodyDataContainer } from 'src/modals/Modal/Modal.styled';\nimport { VendorDetailsBodyContent } from 'src/modals/VendorDetails/VendorDetailsBodyContent';\nimport { VendorDetailsModalHeader } from 'src/modals/VendorDetails/VendorDetailsModalHeader';\nimport { useGetVendorIdFromUrl } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/hooks/useGetVendorIdFromUrl';\n\nexport const VendorDetailsModalBody = () => {\n const vendorId = useGetVendorIdFromUrl();\n const { isLoading, data: vendor } = useGetVendor(vendorId);\n const hasData = !!vendor;\n\n return (\n \n \n \n {isLoading ? (\n \n ) : (\n hasData && \n )}\n \n \n );\n};\n","import { VendorDetailsModalBody } from 'src/modals/VendorDetails/VendorDetailsModalBody';\nimport { VendorIdQueryParam } from 'src/utils/constants/constants';\n\nexport const VendorDetailsModalConfig = {\n children: ,\n clickOutsideToClose: true,\n deepLinkKey: VendorIdQueryParam,\n deepLinkValue: undefined,\n size: 'slide-in',\n};\n","import { VendorDetailsModalConfig } from 'src/modals/VendorDetails';\n\nexport const getVendorDetailsModalConfigWithDeepLink = (vendorId: number) => {\n return {\n ...VendorDetailsModalConfig,\n deepLinkValue: vendorId,\n };\n};\n","import { useCallback, useContext } from 'react';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { useGetVendorIdFromUrl } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/hooks/useGetVendorIdFromUrl';\nimport { getVendorDetailsModalConfigWithDeepLink } from 'src/utils/vendorUtils';\n\nexport const useOpenVendorDetailsModal = () => {\n const { setModal } = useContext(ModalContext);\n const activeVendorId = useGetVendorIdFromUrl();\n\n const openVendorDetailsModal = useCallback(\n (vendorId: number) => {\n setModal(getVendorDetailsModalConfigWithDeepLink(vendorId));\n },\n [setModal]\n );\n\n const openVendorDetailsModalFromUrl = useCallback(() => {\n if (activeVendorId) {\n openVendorDetailsModal(activeVendorId);\n }\n }, [activeVendorId, openVendorDetailsModal]);\n\n return {\n openVendorDetailsModal,\n openVendorDetailsModalFromUrl,\n };\n};\n","import { MutableRefObject, useImperativeHandle } from 'react';\nimport { PurchaseVendorAccountDialog } from 'src/dialogs/PurchaseVendorAccountDialog';\nimport { PurchaseVendorDialog } from 'src/dialogs/PurchaseVendorDialog';\nimport { useAddVendorAccountActions } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorActions/useAddVendorAccountActions';\nimport { useAddVendorActions } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorActions/useAddVendorActions';\nimport { useOpenVendorDetailsModal } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorActions/useOpenVendorDetailsModal';\nimport { PurchaseVendorActions } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorsTable/VendorsTableColumnsConfig';\nimport { PurchaseVendor } from 'src/WebApiController';\n\nexport type PurchaseVendorActionsImperativeRef = PurchaseVendorActions;\n\ninterface PurchaseVendorActionsProps {\n vendorActionsRef: MutableRefObject;\n}\n\nexport const VendorActions = ({\n vendorActionsRef,\n}: PurchaseVendorActionsProps) => {\n const {\n onVendorCancel,\n onSaveVendor,\n vendorDialog,\n currentVendor,\n onEditVendor,\n } = useAddVendorActions();\n\n const {\n currentVendorAccount,\n onSaveVendorAccount,\n onVendorAccountCancel,\n venderAccountDialog,\n onAddNewVendorAccount,\n } = useAddVendorAccountActions();\n\n const { openVendorDetailsModal } = useOpenVendorDetailsModal();\n\n useImperativeHandle(\n vendorActionsRef,\n () => {\n return {\n editVendor: onEditVendor,\n viewVendorDetails: (vendor: PurchaseVendor) => {\n openVendorDetailsModal(vendor.id);\n },\n addNewVendorAccount: (vendor: PurchaseVendor) => {\n onAddNewVendorAccount(vendor.id);\n },\n };\n },\n [onAddNewVendorAccount, onEditVendor, openVendorDetailsModal]\n );\n\n return (\n <>\n {currentVendor && (\n \n )}\n {currentVendorAccount && (\n \n )}\n \n );\n};\n","import { useCallback, useState } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { vars } from 'src/core/themes';\nimport { Button } from 'src/core/ui';\nimport { PurchaseVendorDialog } from 'src/dialogs/PurchaseVendorDialog';\nimport { useBasicDialog } from 'src/hooks/useBasicDialog';\nimport { IconsFill, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ApiException,\n PurchaseClient,\n PurchaseVendor,\n} from 'src/WebApiController';\n\ninterface AddVendorAccountProps {\n onVendorAdded?: () => void;\n}\n\nexport const AddVendorButton = ({ onVendorAdded }: AddVendorAccountProps) => {\n const vendorDialog = useBasicDialog();\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n const [currentVendor, setCurrentVendor] = useState();\n\n const onAddNewVendor = useCallback(() => {\n setCurrentVendor({\n id: -1,\n name: '',\n isGlobal: false,\n delivType: null,\n isNoFulfill: null,\n tktTypeRules: null,\n vendAccCounts: 0,\n });\n vendorDialog.launchDialog();\n }, [vendorDialog]);\n\n const onSaveVendor = useCallback(\n async (vendor: PurchaseVendor) => {\n await tryInvokeApi(\n async () => {\n const newId = await new PurchaseClient(\n activeAccountWebClientConfig\n ).mergeVendor(vendor);\n\n if (newId) {\n onVendorAdded?.();\n vendorDialog.closeDialog();\n setCurrentVendor(undefined);\n } else {\n // This should never happen\n // Normal errors would have fallen to the error catch\n showErrorDialog(\n 'PurchaseClient.mergeVendor',\n {\n message: 'Unable to create or save vendor ' + vendor.id,\n status: 500,\n } as ApiException,\n {\n trackErrorData: vendor,\n }\n );\n }\n },\n (error) => {\n showErrorDialog('PurchaseClient.mergeVendor', error, {\n trackErrorData: vendor,\n });\n }\n );\n },\n [activeAccountWebClientConfig, onVendorAdded, vendorDialog, showErrorDialog]\n );\n\n const onVendorCancel = useCallback(() => {\n setCurrentVendor(undefined);\n vendorDialog.closeDialog();\n }, [vendorDialog]);\n\n return (\n <>\n \n {currentVendor && (\n \n )}\n \n );\n};\n","import { Content, useContent } from 'src/contexts/ContentContext';\nimport { shared } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { AddVendorButton } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/AddVendorButton';\nimport { FilterInput } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/FilterInput';\nimport { vendorsPageHeaderWrapper } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorsPageHeader/VendorsPageHeader.css';\nimport { ContentId } from 'src/utils/constants/contentId';\n\ninterface VendorsPageHeaderProps {\n disableSearch: boolean;\n onVendorAdded: () => void;\n onSearchTextChanged: (searchText: string) => void;\n}\n\nexport const VendorsPageHeader = ({\n disableSearch,\n onVendorAdded,\n onSearchTextChanged,\n}: VendorsPageHeaderProps) => {\n const vendors = useContent(ContentId.Vendors);\n return (\n
    \n \n
    \n \n
    \n \n \n \n \n
    \n
    \n );\n};\n","export enum VendorsTableColumnId {\n Vendor = 'name',\n TotalAccounts = 'totalAccounts',\n AccountType = 'accountType',\n Actions = 'actions',\n}\n","import { Content } from 'src/contexts/ContentContext';\nimport { PosPill } from 'src/core/POS/PosPill';\nimport { PosPillVariant } from 'src/core/POS/PosPill/PosPill';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport type type = 'custom' | 'system';\n\ninterface AccountTypeProps {\n type: type;\n}\n\nexport const AccountType = ({ type }: AccountTypeProps) => {\n return (\n \n \n \n );\n};\n","import { IconButton } from 'src/components/Buttons';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { PurchaseVendorsWithActions } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorsTable/VendorsTableColumnsConfig';\nimport { OpenLinkIcon } from 'src/svgs';\nimport { EditIcon, PlusIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\ninterface VendorActionsCellProps {\n vendorWithActions: PurchaseVendorsWithActions | null;\n}\n\nexport const VendorActionsCell = ({\n vendorWithActions,\n}: VendorActionsCellProps) => {\n if (!vendorWithActions) {\n return null;\n }\n\n return (\n \n }\n onClick={() =>\n vendorWithActions.vendorActions.addNewVendorAccount(\n vendorWithActions.vendor\n )\n }\n titleContentId={ContentId.AddAccountAction}\n />\n \n }\n onClick={() =>\n vendorWithActions.vendorActions.viewVendorDetails(\n vendorWithActions.vendor\n )\n }\n titleContentId={ContentId.ViewDetails}\n />\n }\n onClick={() =>\n vendorWithActions.vendorActions.editVendor(vendorWithActions.vendor)\n }\n titleContentId={ContentId.Edit}\n />\n \n );\n};\n","import { createColumnHelper } from '@tanstack/react-table';\nimport {\n COLUMN_DEFAULT_SIZE_BASE,\n COLUMN_DEFAULT_SIZE_SM,\n COLUMN_DEFAULT_SIZE_XS,\n COLUMN_MAX_SIZE,\n COLUMN_MIN_SIZE,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { AccountType } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/AccountStatus/AccountType';\nimport { VendorActionsCell } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorsTable/VendorActionsCell';\nimport { VendorsTableColumnId } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorsTable/vendorsColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { PurchaseVendor } from 'src/WebApiController';\n\nexport type PurchaseVendorActions = {\n addNewVendorAccount: (vendor: PurchaseVendor) => void;\n viewVendorDetails: (vendor: PurchaseVendor) => void;\n editVendor: (vendor: PurchaseVendor) => void;\n};\n\nexport type PurchaseVendorsWithActions = {\n vendor: PurchaseVendor;\n vendorActions: PurchaseVendorActions;\n};\n\nconst columnHelper = createColumnHelper();\nexport const VENDORS_TABLE_COLUMNS_CONFIG = {\n [VendorsTableColumnId.Vendor]: columnHelper.accessor(\n (data) => data?.vendor?.name,\n {\n id: VendorsTableColumnId.Vendor,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue }) {\n return {getValue()};\n },\n }\n ),\n [VendorsTableColumnId.TotalAccounts]: columnHelper.accessor(\n (data) => data?.vendor?.vendAccCounts ?? 0,\n {\n id: VendorsTableColumnId.TotalAccounts,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_XS,\n minSize: COLUMN_DEFAULT_SIZE_XS,\n maxSize: COLUMN_MIN_SIZE,\n cell: function Cell({ getValue }) {\n return {getValue()};\n },\n }\n ),\n [VendorsTableColumnId.AccountType]: columnHelper.accessor(\n (data) => data?.vendor?.isGlobal ?? false,\n {\n id: VendorsTableColumnId.AccountType,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_DEFAULT_SIZE_SM,\n maxSize: COLUMN_MIN_SIZE,\n cell: function Cell({ getValue }) {\n const systemText = useContent(ContentId.System);\n const customText = useContent(ContentId.Custom);\n return (\n \n \n \n );\n },\n }\n ),\n [VendorsTableColumnId.Actions]: columnHelper.accessor(() => null, {\n id: VendorsTableColumnId.Actions,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_SM,\n minSize: COLUMN_DEFAULT_SIZE_XS,\n maxSize: COLUMN_DEFAULT_SIZE_SM,\n enableSorting: false,\n enableResizing: false,\n cell: function Cell({ row: { original } }) {\n return (\n \n \n \n );\n },\n }),\n};\n","import {\n functionalUpdate,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useMemo, useState } from 'react';\nimport { VendorsTableColumnId } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorsTable/vendorsColumnUtils.types';\nimport {\n PurchaseVendorsWithActions,\n VENDORS_TABLE_COLUMNS_CONFIG,\n} from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorsTable/VendorsTableColumnsConfig';\nimport { Table } from 'src/tables/Table';\n\nconst getRowId = (row: PurchaseVendorsWithActions | null, index: number) =>\n (row?.vendor?.id ?? index).toString();\n\nconst columns = Object.values(VENDORS_TABLE_COLUMNS_CONFIG);\n\ninterface VendorsTableProps {\n vendors: PurchaseVendorsWithActions[];\n}\n\nexport const VendorsTable = ({ vendors }: VendorsTableProps) => {\n const [sorting, setSorting] = useState([\n { id: VendorsTableColumnId.TotalAccounts, desc: true },\n ]);\n\n const options: Partial> =\n useMemo(\n () => ({\n data: vendors,\n columns: columns,\n state: {\n sorting,\n },\n onSortingChange: (sortingUpdaterFn) => {\n const newSortVal = functionalUpdate(sortingUpdaterFn, sorting);\n setSorting(newSortVal);\n },\n getRowId: getRowId,\n }),\n [sorting, vendors]\n );\n\n return
    \n \n \n \n
    ;\n};\n","import { useMemo } from 'react';\nimport { useFlexSearchIndex } from 'src/hooks/useFlexSearchIndex';\nimport { PurchaseVendorsWithActions } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorsTable/VendorsTableColumnsConfig';\n\ninterface UseGetFilteredVendorsProps {\n vendors: PurchaseVendorsWithActions[] | undefined;\n searchText: string;\n}\n\nexport const useGetFilteredVendors = ({\n vendors = [],\n searchText,\n}: UseGetFilteredVendorsProps): PurchaseVendorsWithActions[] => {\n const { vendorOptionsContent, vendorIdsMap } = useMemo(() => {\n const vendorIdsMap: Record = {};\n const vendorOptionsContent: Record = {};\n\n vendors?.forEach((vendorWithActions) => {\n const vendorId = vendorWithActions.vendor.id;\n vendorOptionsContent[vendorId] = vendorWithActions.vendor.name;\n vendorIdsMap[vendorId] = vendorWithActions;\n });\n\n return {\n vendorIdsMap,\n vendorOptionsContent,\n };\n }, [vendors]);\n\n const { flexSearchIndex } = useFlexSearchIndex(\n vendorOptionsContent,\n Object.keys(vendorOptionsContent).length > 0,\n true\n );\n\n const filteredVendorIds = useMemo(() => {\n if (!searchText || !flexSearchIndex || !vendors) {\n return [];\n }\n\n return (flexSearchIndex.search(searchText) as string[]).map(Number);\n }, [flexSearchIndex, searchText, vendors]);\n\n return useMemo(() => {\n if (!searchText) {\n return vendors;\n }\n\n if (filteredVendorIds.length === 0) {\n return [];\n }\n\n const filteredVendors: PurchaseVendorsWithActions[] = [];\n for (const vendorId of filteredVendorIds) {\n filteredVendors.push(vendorIdsMap[vendorId]);\n }\n return filteredVendors;\n }, [filteredVendorIds, searchText, vendorIdsMap, vendors]);\n};\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Card } from 'src/core/ui';\nimport { useGetAccessibleVendorsQuery } from 'src/hooks/api/useGetAccessibleVendorsQuery';\nimport { useOpenVendorDetailsModal } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorActions/useOpenVendorDetailsModal';\nimport {\n PurchaseVendorActionsImperativeRef,\n VendorActions,\n} from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorActions/VendorActions';\nimport { VendorsPageHeader } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorsPageHeader/VendorsPageHeader';\nimport { VendorsTable } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorsTable/VendorsTable';\nimport {\n PurchaseVendorActions,\n PurchaseVendorsWithActions,\n} from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/components/VendorsTable/VendorsTableColumnsConfig';\nimport { useGetFilteredVendors } from 'src/navigations/Routes/Settings/Views/VendorManagement/Vendors/hooks/useGetFilteredVendors';\nimport { PurchaseVendor } from 'src/WebApiController';\n\nexport const Vendors = () => {\n const refActions = useRef(null);\n const [searchText, setSearchText] = useState('');\n const vendorsQuery = useGetAccessibleVendorsQuery({\n getOverride: false,\n getVendorAccountsCount: true,\n });\n const allVendors = vendorsQuery.data;\n\n const { openVendorDetailsModalFromUrl } = useOpenVendorDetailsModal();\n\n useEffect(() => {\n openVendorDetailsModalFromUrl();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const vendorsWithActions: PurchaseVendorsWithActions[] = useMemo(() => {\n const purchaseVendorActions: PurchaseVendorActions = {\n editVendor: (vendor: PurchaseVendor) => {\n refActions.current?.editVendor(vendor);\n },\n viewVendorDetails: (vendor: PurchaseVendor) => {\n refActions.current?.viewVendorDetails(vendor);\n },\n addNewVendorAccount: (vendor: PurchaseVendor) => {\n refActions.current?.addNewVendorAccount(vendor);\n },\n };\n\n return (allVendors ?? []).map(\n (vendor: PurchaseVendor): PurchaseVendorsWithActions => ({\n vendor,\n vendorActions: purchaseVendorActions,\n })\n );\n }, [allVendors]);\n\n const filteredVendors = useGetFilteredVendors({\n vendors: vendorsWithActions,\n searchText,\n });\n\n const isLoading = vendorsQuery.isLoading;\n\n return (\n <>\n \n {isLoading ? (\n \n ) : (\n \n \n \n )}\n \n \n );\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useCallback } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport {\n ErrorTypes,\n useErrorBoundaryContext,\n} from 'src/contexts/ErrorBoundaryContext';\nimport { AccountAutoPricingSettingsInputs, SellerAccountClient } from 'src/WebApiController';\n\nexport const useAccountAutoPricingSettings = () => {\n const { activeAccountWebClientConfig } = useAppContext();\n const { showErrorDialog } = useErrorBoundaryContext();\n\n const queryClient = useQueryClient();\n const getQueryKey = [\n 'SellerAccountClient.getAccountAutoPricingSettings',\n activeAccountWebClientConfig.activeAccountId,\n ];\n\n const shouldQuery = activeAccountWebClientConfig.activeAccountId != null;\n const getAccountAutoPricingSettingsQuery = useQuery({\n queryKey: getQueryKey,\n queryFn: async () => {\n if (!shouldQuery) {\n return null;\n }\n const pricingSettings = await new SellerAccountClient(\n activeAccountWebClientConfig\n ).getAccountAutoPricingSettings();\n\n return pricingSettings;\n },\n enabled: shouldQuery,\n refetchOnWindowFocus: false,\n staleTime: 0,\n meta: {\n persist: false,\n\n onError: (error: ErrorTypes) => {\n showErrorDialog('SellerAccountClient.getAccountAutoPricingSettings', error, {\n trackErrorData: {\n activeAccountId: activeAccountWebClientConfig.activeAccountId,\n },\n });\n },\n },\n });\n\n const mergeAccountAutoPricingSettingsMutation = useMutation({\n mutationFn: async ({\n inputs,\n }: {\n inputs: AccountAutoPricingSettingsInputs,\n }) => {\n return await new SellerAccountClient(\n activeAccountWebClientConfig,\n ).mergeAccountAutoPricingSettings(inputs);\n },\n // optimistic ui\n // Reference: https://tanstack.com/query/v3/docs/react/guides/optimistic-updates\n onMutate: ({ inputs }) => {\n queryClient.cancelQueries({ queryKey: getQueryKey });\n const prevValue =\n queryClient.getQueryData(getQueryKey);\n\n queryClient.setQueryData(getQueryKey, inputs);\n return { prevValue };\n },\n onError: (err: ErrorTypes, { inputs }, context) => {\n queryClient.setQueryData(getQueryKey, context?.prevValue);\n showErrorDialog('SellerAccountClient.mergeAccountAutoPricingSettings', err, {\n trackErrorData: { inputs },\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey: getQueryKey });\n },\n });\n\n const onMergeAccountAutoPricingSettings = useCallback(\n async (inputs?: AccountAutoPricingSettingsInputs) => {\n if (!inputs) {\n return;\n }\n\n await mergeAccountAutoPricingSettingsMutation.mutateAsync({\n inputs,\n });\n getAccountAutoPricingSettingsQuery.refetch();\n },\n [mergeAccountAutoPricingSettingsMutation]\n );\n\n return {\n accountAutoPricingSettings: getAccountAutoPricingSettingsQuery.data,\n onMergeAccountAutoPricingSettings,\n isLoading: getAccountAutoPricingSettingsQuery.isLoading,\n isPending:\n getAccountAutoPricingSettingsQuery.isFetching ||\n mergeAccountAutoPricingSettingsMutation.isPending,\n loaded: getAccountAutoPricingSettingsQuery.isFetched,\n };\n};","import { Content } from 'src/contexts/ContentContext';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Stack } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from '../AutoPricing.css';\nimport { useAutoPricingSettingsFormContext } from '../useAutoPricingSettingsFormContext';\n\nexport const AutoPricingCircuitBreakerMaxDiscountVelocityInput = ({\n disabled,\n}: {\n disabled: boolean;\n}) => {\n const { setValue, watch } = useAutoPricingSettingsFormContext();\n\n const {\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n } = watch();\n\n return (\n \n \n {\n const v = parseFloat(e.target.value);\n if (!isNaN(v)) {\n setValue('circuitBreakerMaxDiscountVelocityPercent', v / 100);\n }\n }}\n />\n \n {\n const v = parseFloat(e.target.value);\n if (!isNaN(v)) {\n setValue('circuitBreakerMaxDiscountVelocityTicksInHours', v);\n }\n }}\n />\n \n \n );\n};\n","import {\n FieldPath,\n FormProvider,\n useForm,\n useFormContext,\n} from 'react-hook-form';\nimport { FormatContent } from 'src/contexts/ContentContext';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport {\n AccountAutoPricingSettingsInputs,\n AutoPricingInputs,\n CompListingQuantityFilters,\n} from 'src/WebApiController';\n\nimport * as styles from '../AutoPricing.css';\nimport { AutoPricingCompQuantitiesSelector } from '../AutoPricingCompQuantitiesSelector/AutoPricingCompQuantitiesSelector';\n\nconst exactMatchPosListingQuantities = [\n ...Array(9)\n .fill(0)\n .map((_, i) => i + 1),\n];\nconst greaterThanOrEqualToPosListingQuantity = 10;\n\nexport const AutoPricingDefaultCompQuantitiesInput = ({\n disabled,\n}: {\n disabled: boolean;\n}) => {\n return (\n
    \n {exactMatchPosListingQuantities.map((posListingQuantity, index) => {\n return (\n \n );\n })}\n\n \n
    \n );\n};\n\nconst AutoPricingDefaultCompQuantitiesPackSelector = ({\n quantityFilterFieldPath,\n posListingQuantity,\n packLabelText,\n disabled,\n}: {\n quantityFilterFieldPath: FieldPath;\n posListingQuantity: number;\n packLabelText: string;\n disabled: boolean;\n}) => {\n const { setValue: outerSetValue, watch: outerWatch } =\n useFormContext();\n\n const quantityFilter = outerWatch(\n quantityFilterFieldPath\n ) as CompListingQuantityFilters;\n\n const {\n control: innerControl,\n watch: innerWatch,\n ...innerMethods\n } = useForm({\n defaultValues: {\n compListingQuantityFilters: quantityFilter?.compQuantityFilters,\n },\n });\n\n innerWatch((autoPricingInputsNew) => {\n outerSetValue(quantityFilterFieldPath, {\n posListingQuantity: posListingQuantity,\n compQuantityFilters:\n autoPricingInputsNew?.compListingQuantityFilters ?? null,\n } as CompListingQuantityFilters);\n });\n\n return (\n \n <>\n
    \n \n
    \n
    \n \n
    \n \n
    \n );\n};\n","import { Slider } from 'src/core/ui/Slider';\n\nimport { useAutoPricingSettingsFormContext } from '../useAutoPricingSettingsFormContext';\n\nexport const AutoPricingMinCompListingsSlider = ({\n disabled,\n}: {\n disabled: boolean;\n}) => {\n const { watch, setValue } = useAutoPricingSettingsFormContext();\n\n const { circuitBreakerMinCompListingCount } = watch();\n\n return (\n {\n setValue('circuitBreakerMinCompListingCount', Math.round(count));\n }}\n disabled={disabled}\n />\n );\n};\n","import { cloneDeep } from 'lodash-es';\nimport { useMemo } from 'react';\nimport { FormProvider, useForm, useFormContext } from 'react-hook-form';\nimport { AutoPricingCircuitBreakerMaxDiscountVelocityInput } from 'src/components/AutoPricing/AutoPricingCircuitBreakerMaxDiscountVelocityInput/AutoPricingCircuitBreakerMaxDiscountVelocityInput';\nimport { AutoPricingDefaultCompQuantitiesInput } from 'src/components/AutoPricing/AutoPricingDefaultCompQuantitiesInput/AutoPricingDefaultCompQuantitiesInput';\nimport { AutoPricingMinCompListingsSlider } from 'src/components/AutoPricing/AutoPricingMinCompListingsSlider/AutoPricingMinCompListingsSlider';\nimport {\n AutoPricingSettingsFormContent,\n PricingSetting,\n} from 'src/components/AutoPricing/AutoPricingSettingsFormContent/AutoPricingSettingsFormContent';\nimport { AutoPricingUnderCutRelativeAndAbsoluteAmountsInput } from 'src/components/AutoPricing/AutoPricingUnderCutRelativeAndAbsoluteAmountsInput/AutoPricingUnderCutRelativeAndAbsoluteAmountsInput';\nimport { Content } from 'src/contexts/ContentContext';\nimport { PosTextField } from 'src/core/POS/PosTextField';\nimport { Switch } from 'src/core/ui';\nimport { Button } from 'src/core/ui';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport {\n AccountAutoPricingSettingsInputs,\n UiCurrency,\n} from 'src/WebApiController';\n\nimport { setValueAsDecimalNumber } from '../../SyncCenter/SyncCenter.utils';\nimport * as styles from './AccountAutoPricingSettingsForm.css';\n\nexport const AccountAutoPricingSettingsForm = ({\n pricingSettings,\n onSaved,\n uiCurrency,\n disabled: disabledProp,\n allowSeatScoreCompListingMode,\n}: {\n pricingSettings: AccountAutoPricingSettingsInputs | null | undefined;\n onSaved?: (\n pricingSettingsNew: AccountAutoPricingSettingsInputs\n ) => Promise;\n uiCurrency: UiCurrency;\n disabled: boolean;\n allowSeatScoreCompListingMode: boolean;\n}) => {\n const methods = useForm({\n defaultValues: pricingSettings ? cloneDeep(pricingSettings) : undefined,\n });\n\n const { handleSubmit } = methods;\n\n const disabled = disabledProp;\n return (\n \n \n \n \n \n }\n headerStyle={{ alignSelf: 'start' }}\n detail={\n \n }\n />\n\n \n \n \n }\n detail={}\n />\n\n }\n detail={\n \n }\n />\n \n }\n pricingProtectionSectionChildren={\n \n }\n advancedSettingsSectionChildren={\n \n }\n />\n\n
    \n onSaved?.(data))}\n >\n \n \n
    \n
    \n );\n};\n\nconst PricingProtectionSettings = ({ disabled }: { disabled: boolean }) => {\n const { register } = useFormContext();\n\n return (\n <>\n }\n detail={\n \n }\n />\n \n );\n};\n\nconst VelocityCircuitBreakerSettings = ({\n disabled,\n}: {\n disabled: boolean;\n}) => {\n const { setValue, watch } =\n useFormContext();\n\n const {\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n } = watch();\n\n const restrictVelocityOfPriceUpdates = useMemo(() => {\n return (\n !!circuitBreakerMaxDiscountVelocityPercent &&\n !!circuitBreakerMaxDiscountVelocityTicksInHours\n );\n }, [\n circuitBreakerMaxDiscountVelocityPercent,\n circuitBreakerMaxDiscountVelocityTicksInHours,\n ]);\n\n return (\n <>\n }\n detail={\n e.stopPropagation()}\n onCheckedChange={(isChecked) => {\n const restrictVelocityOfPriceUpdatesNew = isChecked;\n if (\n restrictVelocityOfPriceUpdatesNew !==\n restrictVelocityOfPriceUpdates\n ) {\n const circuitBreakerMaxDiscountVelocityPercentNew =\n restrictVelocityOfPriceUpdatesNew ? 0.8 : null;\n const circuitBreakerMaxDiscountVelocityTicksInHours =\n restrictVelocityOfPriceUpdatesNew ? 1 : null;\n setValue(\n 'circuitBreakerMaxDiscountVelocityPercent',\n circuitBreakerMaxDiscountVelocityPercentNew\n );\n setValue(\n 'circuitBreakerMaxDiscountVelocityTicksInHours',\n circuitBreakerMaxDiscountVelocityTicksInHours\n );\n }\n }}\n />\n }\n />\n\n {restrictVelocityOfPriceUpdates && (\n }\n detail={\n \n }\n />\n )}\n \n );\n};\n","import { useAppContext } from 'src/contexts/AppContext';\nimport { Content } from 'src/contexts/ContentContext/Content';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { useUserHasFeature } from 'src/hooks/useUserHasFeature';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { Feature } from 'src/WebApiController';\n\nimport * as styles from './AccountAutoPricingSettings.css';\nimport { useAccountAutoPricingSettings } from './AccountAutoPricingSettings.hooks';\nimport { AccountAutoPricingSettingsForm } from './AccountAutoPricingSettingsForm';\n\nexport const AccountAutoPricingSettings = () => {\n const { loginContext } = useAppContext();\n const { getUiCurrency } = useLocalizationContext();\n\n const {\n accountAutoPricingSettings,\n onMergeAccountAutoPricingSettings,\n isLoading,\n isPending,\n } = useAccountAutoPricingSettings();\n\n const hasAllowSeatScoreCompListingModeFeature = useUserHasFeature(\n Feature.AllowSeatScoreCompListingMode\n );\n\n const uiCurrency = getUiCurrency(\n loginContext?.user?.activeAccount?.currencyCode\n );\n\n return (\n
    \n
    \n

    \n \n

    \n {isLoading ? (\n \n ) : (\n \n )}\n
    \n
    \n );\n};\n","export default \"__VITE_ASSET__be864f53__\"","import { debounce } from 'lodash-es';\nimport React, { createContext, useCallback, useContext, useState } from 'react';\n\nexport interface ISignUpContext {\n hasSignedUp: boolean;\n isSignupSubmitted: boolean;\n setIsSignupSubmitted: (hasSignedUp: boolean) => void;\n\n hasCheckedSignUpRedirect: boolean;\n setHasCheckedSignUpRedirect: (setHasCheckedSignUpRedirect: boolean) => void;\n}\n\nconst defaultSignUpContext: ISignUpContext = {\n hasSignedUp: false,\n isSignupSubmitted: false,\n setIsSignupSubmitted: () => undefined,\n hasCheckedSignUpRedirect: false,\n setHasCheckedSignUpRedirect: () => undefined,\n};\n\nexport const SignUpContext =\n createContext(defaultSignUpContext);\n\nexport const useSignUpContext = () => useContext(SignUpContext);\n\nexport const SignUpContextProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const [isSignupSubmitted, setIsSignupSubmitted] = useState(false);\n const [hasSignedUp, setHasSignedUp] = useState(false);\n const [hasCheckedSignUpRedirect, setHasCheckedSignUpRedirect] =\n useState(false);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedSetHasSignedUp = useCallback(\n debounce((value: boolean) => {\n setHasSignedUp(value);\n }, 500),\n []\n );\n\n const handleSetIsSignupSubmitted = useCallback(() => {\n setIsSignupSubmitted(true);\n debouncedSetHasSignedUp(true);\n }, [debouncedSetHasSignedUp]);\n\n return (\n \n {children}\n \n );\n};\n","import { useFormContext } from 'react-hook-form';\nimport { SignUpForm } from 'src/components/SignUp/EmailForm/EmailForm';\nimport * as styles from 'src/components/SignUp/EmailForm/Input/Input.css';\nimport { useSignUpContext } from 'src/contexts/SignUpContext/SignUpContext';\n\nexport const Input = () => {\n const { register } = useFormContext();\n const { isSignupSubmitted } = useSignUpContext();\n return (\n \n );\n};\n","import { PosIconProps, SvgWrapper } from 'src/svgs/SvgWrapper';\n\nexport const ArrowRight = (props: PosIconProps) => {\n return (\n \n \n \n \n );\n};\n","import { submitButton } from 'src/components/SignUp/EmailForm/SubmitButton/SubmitButton.css';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useSignUpContext } from 'src/contexts/SignUpContext/SignUpContext';\nimport { RotatingWrapper } from 'src/core/ui/AnimatingWrapper';\nimport { ArrowRight } from 'src/svgs/ArrowRight';\nimport { IconsFill, LoadingIcon } from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const SubmitButton = () => {\n const { isSignupSubmitted } = useSignUpContext();\n return (\n \n );\n};\n","import { FormProvider, useForm } from 'react-hook-form';\nimport { container, form } from 'src/components/SignUp/EmailForm/EmailForm.css';\nimport { Input } from 'src/components/SignUp/EmailForm/Input/Input';\nimport { SubmitButton } from 'src/components/SignUp/EmailForm/SubmitButton/SubmitButton';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useSignUpContext } from 'src/contexts/SignUpContext/SignUpContext';\nimport { Stack } from 'src/core/ui';\nimport { useMatchMedia } from 'src/hooks/useMatchMedia';\nimport { REACT_APP_NAME } from 'src/utils/constants/constants';\nimport { ClientLogClient, LogLevel } from 'src/WebApiController';\n\nexport interface SignUpForm {\n email: string;\n}\n\nexport const EmailForm = () => {\n const isMobile = useMatchMedia('mobile');\n const { setIsSignupSubmitted } = useSignUpContext();\n const { activeAccountWebClientConfig } = useAppContext();\n\n const methods = useForm();\n const { handleSubmit } = methods;\n\n const onSubmit = (formValue: SignUpForm) => {\n new ClientLogClient(activeAccountWebClientConfig).log({\n logLevel: LogLevel.Information,\n pageUrl: window.location.href,\n componentStack: 'signup',\n applicationSource: REACT_APP_NAME,\n errorId: null,\n error: `new sign-up request: ${formValue.email}`,\n additionalInfo: { email: formValue.email },\n });\n setIsSignupSubmitted(true);\n };\n\n return (\n \n
    \n \n \n \n {!isMobile && }\n \n {isMobile && (\n
    \n \n
    \n )}\n \n \n
    \n );\n};\n","import { byLogo } from 'src/components/SignUp/Footer/Footer.css';\nimport { Stack } from 'src/core/ui';\nimport { StubHubLogo } from 'src/svgs';\n\nexport const Footer = () => {\n return (\n \n By\n \n \n );\n};\n","import { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './Title.css';\n\nexport const Titles = () => {\n return (\n
    \n
    \n REACH\n pro\n
    \n \n \n \n
    \n );\n};\n","import {\n inviteOnlyBannerWrapper,\n subtitle,\n title,\n} from 'src/components/SignUp/InviteOnlyBanner/InviteOnlyBanner.css';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const InviteOnlyBanner = () => {\n return (\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n );\n};\n","export const SignUpPathname = '/access';\n","import { ReactNode, useEffect } from 'react';\nimport { Navigate } from 'react-router-dom';\nimport { useSignUpContext } from 'src/contexts/SignUpContext/SignUpContext';\nimport { SignUpPathname } from 'src/navigations/Routes/SignUp/constants';\n\nconst allowedHostnames = ['reachpro.com', 'www.reachpro.com'];\n\nexport const isReachProDomain = () => {\n const { hostname } = window.location;\n return allowedHostnames.includes(hostname);\n};\n\nexport const isAllowedToSignUp = () => {\n return isReachProDomain();\n};\n\ninterface SignUpValidatorProps {\n children: ReactNode;\n}\n\nexport const SignUpRedirect = ({ children }: SignUpValidatorProps) => {\n const { hasCheckedSignUpRedirect, setHasCheckedSignUpRedirect } =\n useSignUpContext();\n\n useEffect(() => {\n setHasCheckedSignUpRedirect(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (isAllowedToSignUp() && !hasCheckedSignUpRedirect) {\n if (location.pathname !== SignUpPathname) {\n return ;\n }\n }\n\n return <>{children};\n};\n","import { ReactNode, useEffect, useState } from 'react';\nimport { Navigate, useNavigate } from 'react-router-dom';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { useFetchLoginContext } from 'src/hooks/useFetchLoginContext';\nimport { SignUpPathname } from 'src/navigations/Routes/SignUp/constants';\nimport { LoginContext } from 'src/WebApiController';\n\nimport { isAllowedToSignUp } from './SignUpRedirect';\n\ninterface SignUpDisplayValidatorProps {\n children: ReactNode;\n}\n\nexport const SignUpValidator = ({ children }: SignUpDisplayValidatorProps) => {\n const [loginContextLoaded, setLoginContextLoaded] = useState(false);\n const { loginContext, setLoginContext } = useAppContext();\n const { fetchLoginContext } = useFetchLoginContext();\n\n const navigate = useNavigate();\n\n useEffect(() => {\n fetchLoginContext(\n (loginContext: LoginContext) => {\n setLoginContext(loginContext);\n setLoginContextLoaded(true);\n },\n () => {\n setLoginContextLoaded(true);\n }\n );\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (!loginContextLoaded) {\n return null;\n }\n\n const hasSession = !!loginContext;\n\n // If there is currently a login context - navigate to home\n if (hasSession) {\n return ;\n }\n\n if (location.pathname !== SignUpPathname) {\n if (isAllowedToSignUp()) {\n navigate('/access', { replace: true });\n } else {\n // If the pathname == start, and it's not allowing to sign-up, it will redirect to login\n return ;\n }\n }\n\n // Else, render signup\n return <>{children};\n};\n","import signupVideo from 'src/assets/signup.mp4';\nimport { EmailForm, Footer, Titles } from 'src/components/SignUp';\nimport { InviteOnlyBanner } from 'src/components/SignUp/InviteOnlyBanner/InviteOnlyBanner';\nimport { SignUpValidator } from 'src/components/SignUp/SignUpValidator';\nimport { useSignUpContext } from 'src/contexts/SignUpContext/SignUpContext';\nimport { SiteZoomOption } from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { Stack } from 'src/core/ui';\nimport { useServerUserSetting } from 'src/hooks/useUserSetting';\nimport {\n signupContent,\n signUpFooter,\n signupPage,\n video,\n} from 'src/navigations/Routes/SignUp/SignUp.css';\nimport { UserSetting } from 'src/WebApiController';\n\nexport const SignUp = () => {\n const { hasSignedUp } = useSignUpContext();\n\n const { value: serverSiteZoomValue } = useServerUserSetting({\n id: UserSetting.SiteZoom,\n currentLoginUserOnly: true,\n });\n\n return (\n \n \n \n
    \n \n \n {hasSignedUp ? : }\n \n
    \n
    \n
    \n
    \n
    \n
    \n );\n};\n","import { AdCampaignEntity, UiMoney } from 'src/WebApiController';\n\nexport const SHIMMERING_DIV_HEIGHT_SINGLE_ADCAMPAIGNS = '40px';\n\ntype ReportingMetrics = {\n adSpend: UiMoney | null | undefined;\n salesProceeds: UiMoney | null | undefined;\n qtySold: number | null | undefined;\n};\n\nexport type AdCampaignEntityWithMetrics = AdCampaignEntity & ReportingMetrics;\n","\nimport { AdCampaignQueryParam } from './constants/constants';\n\nexport const getAdCampaignUrl = (\n adCampaignId: string,\n includeSearchParams = true\n): string => {\n let searchParams = '';\n if (includeSearchParams) {\n const url = new URL(window.location.href);\n url.searchParams.set(AdCampaignQueryParam, adCampaignId);\n searchParams = `?${url.searchParams.toString()}`;\n }\n return `/sponsoredlistings/adcampaign${searchParams}`;\n};\n","import { useCallback } from 'react';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { IconButton } from 'src/components/Buttons';\nimport { vars } from 'src/core/themes';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { FullPageIcon } from 'src/svgs';\nimport { getAdCampaignUrl } from 'src/utils/adCampaignUtils';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nexport const AdCampaignActionsCell = ({\n adCampaignId,\n}: {\n adCampaignId: string;\n}) => {\n const navigate = useNavigate();\n\n const onViewClick = useCallback(\n (url: string) => {\n setTimeout(() => {\n navigate(url, {\n state: {\n returnUrl: `${location.pathname}${location.search}`,\n },\n });\n }, 10);\n },\n [navigate]\n );\n\n return (\n \n {\n if (e.button === 0 && e.getModifierState('Control') === false) {\n // Perform like a button click when it's a left-click (and no Ctrl)\n // Else the click will be whatever does\n e.preventDefault();\n e.stopPropagation();\n\n onViewClick(getAdCampaignUrl(adCampaignId));\n }\n }}\n >\n \n }\n titleContentId={ContentId.ViewDetails}\n />\n \n \n );\n};\n","import { formatInTimeZone } from 'date-fns-tz';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { DivWithTitle } from 'src/core/ui/DivWithTitle';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './AdCampaignsTableColumnsConfig.css';\n\nexport function AdCampaignsDateCell({ date }: { date: Date | null }) {\n const { timeZone } = useSiteTimezoneContext();\n const formattedDate = date ? (\n <>\n {formatInTimeZone(date, timeZone, 'LLL d, yyyy')}\n {formatInTimeZone(date, timeZone, 'EEEE')}\n \n ) : (\n \n );\n return (\n {formattedDate}\n );\n}\n","import { ColumnDef, createColumnHelper } from '@tanstack/react-table';\nimport {\n COLUMN_DEFAULT_SIZE_BASE,\n COLUMN_DEFAULT_SIZE_LG,\n COLUMN_DEFAULT_SIZE_XL,\n COLUMN_MAX_SIZE,\n COLUMN_MIN_SIZE,\n} from 'src/contexts/ColumnResizingContext/ColumnResizingContext.types';\nimport { Content } from 'src/contexts/ContentContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport * as PosCollapsible from 'src/core/POS/PosCollapsible';\nimport { vars } from 'src/core/themes';\nimport { Stack } from 'src/core/ui';\nimport { TableCellDiv } from 'src/core/ui/TableCellDiv';\nimport { TableHeaderCellDiv } from 'src/core/ui/TableHeaderCellDiv';\nimport { ForwardIcon } from 'src/svgs/Viagogo';\nimport { TableShimmeringDiv } from 'src/tables/Table';\nimport { AdCampaignsTableColumnId } from 'src/utils/columns/adCampaigns/adCampaignsColumnUtils.types';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { ADCAMPAIGNS_TABLE_COLUMN_ID_TO_CONTENT_ID as ADCAMPAIGNS_TABLE_COLUMN_ID_TO_CONTENT_ID } from 'src/utils/constants/contentIdMaps';\nimport { applyNumberFormatting } from 'src/utils/numberFormatter';\nimport { MoneyType, UiMoney } from 'src/WebApiController';\n\nimport {\n AdCampaignEntityWithMetrics,\n SHIMMERING_DIV_HEIGHT_SINGLE_ADCAMPAIGNS as SHIMMERING_DIV_HEIGHT_SINGLE_ADCAMPAIGNS,\n} from '../AdCampaignsTable.type';\nimport { AdCampaignActionsCell } from './AdCampaignsActionsCell';\nimport { AdCampaignsDateCell } from './AdCampaignsDateCell';\nimport * as styles from './AdCampaignsTableColumnsConfig.css';\n\nconst columnHelper = createColumnHelper();\n\nexport const ADCAMPAIGNS_TABLE_COLUMNS_CONFIG: ColumnDef<\n AdCampaignEntityWithMetrics | null,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any\n>[] = [\n columnHelper.accessor((data) => (data ? data.name || '' : null), {\n id: AdCampaignsTableColumnId.Name,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n if (!original) {\n return (\n \n );\n }\n\n return {getValue()};\n },\n }),\n columnHelper.accessor((data) => (data ? data.startDateTime || '' : null), {\n id: AdCampaignsTableColumnId.StartDateTime,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n enableSorting: true,\n cell: ({\n getValue,\n row: { original },\n table: {\n options: { meta },\n },\n }) => {\n const rowSupportsAccordion = meta?.rowSupportsAccordion;\n\n const value = getValue();\n if (!original) {\n return (\n \n );\n }\n\n return (\n \n \n {rowSupportsAccordion && (\n e.stopPropagation()}\n className={styles.adCampaignEntityTableCollapseTrigger}\n FoldIcon={ForwardIcon}\n iconSize={vars.iconSize.s}\n />\n )}\n \n \n \n );\n },\n sortingFn: 'datetime',\n }),\n columnHelper.accessor((data) => (data ? data.endDateTime || '' : null), {\n id: AdCampaignsTableColumnId.EndDateTime,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_XL,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n enableSorting: true,\n cell: ({\n getValue,\n row: { original },\n table: {\n options: { meta },\n },\n }) => {\n const rowSupportsAccordion = meta?.rowSupportsAccordion;\n\n const value = getValue();\n if (!original) {\n return (\n \n );\n }\n\n return (\n \n \n {rowSupportsAccordion && (\n e.stopPropagation()}\n className={styles.adCampaignEntityTableCollapseTrigger}\n FoldIcon={ForwardIcon}\n iconSize={vars.iconSize.s}\n />\n )}\n \n \n \n );\n },\n sortingFn: 'datetime',\n }),\n columnHelper.accessor((data) => (data ? data.budget : null), {\n id: AdCampaignsTableColumnId.Budget,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue();\n const { getUiCurrency } = useLocalizationContext();\n const currency = getUiCurrency(value?.currencyCode);\n\n if (!original) {\n return (\n \n );\n }\n\n if (value == null || value == undefined)\n return ;\n\n return (\n \n {applyNumberFormatting({\n inputNumber: value.amount,\n currencyCode: currency.code,\n currencyDecimalDigits: currency.dec,\n })}\n \n );\n },\n }),\n columnHelper.accessor((data) => (data ? data.state || '' : null), {\n id: AdCampaignsTableColumnId.State,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n // TODO\n const value = getValue() as string;\n\n if (!original) {\n return (\n \n );\n }\n\n return {value};\n },\n }),\n columnHelper.accessor((data) => (data ? data.adSpend : null), {\n id: AdCampaignsTableColumnId.AdSpend,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue();\n const { getUiCurrency } = useLocalizationContext();\n const currency = getUiCurrency(value?.currency);\n\n if (!original || value === undefined) {\n return (\n \n );\n }\n\n if (value === null) return ;\n\n return (\n \n {applyNumberFormatting({\n inputNumber: value.amt,\n currencyCode: currency.code,\n currencyDecimalDigits: currency.dec,\n })}\n \n );\n },\n }),\n columnHelper.accessor((data) => (data ? data.salesProceeds : null), {\n id: AdCampaignsTableColumnId.SoldProceeds,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: function Cell({ getValue, row: { original } }) {\n const value = getValue();\n const { getUiCurrency } = useLocalizationContext();\n const currency = getUiCurrency(value?.currency);\n\n if (!original || value === undefined) {\n return (\n \n );\n }\n\n if (value === null) return ;\n\n return (\n \n {applyNumberFormatting({\n inputNumber: value.amt,\n currencyCode: currency.code,\n currencyDecimalDigits: currency.dec,\n })}\n \n );\n },\n }),\n columnHelper.accessor((data) => (data ? data.qtySold : null), {\n id: AdCampaignsTableColumnId.SoldQty,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_LG,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ getValue, row: { original } }) => {\n const value = getValue();\n if (!original || value === undefined) {\n return (\n \n );\n }\n\n if (value === null) return ;\n\n return {value};\n },\n }),\n // columnHelper.accessor((data) => (data ? data.currencyCode : null), {\n // id: AdCampaignsTableColumnId.CurrencyCode,\n // header: () => (\n // \n // \n // \n // ),\n // size: COLUMN_DEFAULT_SIZE_BASE,\n // minSize: COLUMN_MIN_SIZE,\n // maxSize: COLUMN_MAX_SIZE,\n // cell: ({ getValue, row: { original } }) => {\n // const value = getValue();\n // if (!original) {\n // return (\n // \n // );\n // }\n // return {value ?? 0};\n // },\n // }),\n columnHelper.display({\n id: AdCampaignsTableColumnId.Actions,\n enableSorting: false,\n header: () => (\n \n \n \n ),\n size: COLUMN_DEFAULT_SIZE_BASE,\n minSize: COLUMN_MIN_SIZE,\n maxSize: COLUMN_MAX_SIZE,\n cell: ({ row: { original } }) => {\n return !original ? (\n \n ) : (\n \n );\n },\n }),\n];\n","import { ColumnDef } from '@tanstack/react-table';\nimport { useMemo } from 'react';\nimport { ADCAMPAIGNS_TABLE_COLUMNS_CONFIG } from 'src/tables/AdCampaignsTable/configs/AdCampaignsTableColumnConfig';\nimport { AdCampaignsTableColumnId } from 'src/utils/columns/adCampaigns/adCampaignsColumnUtils.types';\n\nimport { AdCampaignEntityWithMetrics } from './AdCampaignsTable.type';\n\nexport const useGetAdCampaignsTableColumns = () => {\n return useMemo(() => {\n // TODO: Filter out reporting columns until we enabled this on AdCampaign side\n const columns = ADCAMPAIGNS_TABLE_COLUMNS_CONFIG.filter(\n (item) =>\n ![\n AdCampaignsTableColumnId.AdSpend,\n AdCampaignsTableColumnId.SoldProceeds,\n AdCampaignsTableColumnId.SoldQty,\n ].includes(item.id as AdCampaignsTableColumnId)\n ).map((item) => item.id as AdCampaignsTableColumnId);\n\n return Array.from(columns).reduce<\n ColumnDef[]\n >((acc, columnId) => {\n const columnConfig = Object.values(ADCAMPAIGNS_TABLE_COLUMNS_CONFIG).find(\n (column) => column.id === columnId\n );\n if (columnConfig) {\n acc.push(columnConfig);\n }\n return acc;\n }, []);\n }, []);\n};\n","import {\n InitialTableState,\n SortingState,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useEffect, useMemo, useState } from 'react';\nimport {\n Content,\n FormatContent,\n useContent,\n} from 'src/contexts/ContentContext';\nimport { WarningMessage } from 'src/core/POS/MessageWithIcon';\nimport { useSyncCenterSettings } from 'src/hooks/api/useSyncCenterSetting';\nimport { NoData, Table, TableProps } from 'src/tables/Table';\nimport { MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS } from 'src/utils/constants/constants';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { FormatContentId } from 'src/utils/constants/formatContentId';\nimport { generateShimmeringRows } from 'src/utils/dataTableUtils';\nimport { SomethingWentWrong } from 'src/views';\n\nimport { usePaginationSettings } from '../Table/hooks/usePaginationSettings';\nimport { AdCampaignEntityWithMetrics } from './AdCampaignsTable.type';\nimport { useGetAdCampaignsTableColumns } from './useGetAdCampaignsTableColumns';\n\nexport type AdCampaignsTableDataProps = {\n adCampaignEntities?: AdCampaignEntityWithMetrics[] | null;\n failedToRetrieveData: boolean;\n disablePagination?: boolean;\n useVirtuoso?: boolean;\n};\n\ntype AdCampaignsTableProps = AdCampaignsTableDataProps & {\n failedToRetrieveData: boolean;\n onMount?: () => void;\n onUnmount?: (state: object) => void;\n initState?: InitialTableState;\n isItemsLoading?: boolean;\n} & Pick<\n TableProps,\n 'RowComponent' | 'virtuosoItemSize'\n >;\n\nconst PAGE_SIZE = 10;\n\nconst getRowId = (\n originalRow: AdCampaignEntityWithMetrics | null,\n index: number\n) => (originalRow?.campaignId ?? index).toString();\n\nexport function AdCampaignsTable({\n adCampaignEntities,\n failedToRetrieveData,\n onMount,\n onUnmount,\n initState,\n disablePagination,\n isItemsLoading,\n RowComponent,\n virtuosoItemSize,\n}: AdCampaignsTableProps) {\n const settings = useSyncCenterSettings();\n\n const adCampaignsText = useContent(ContentId.AdCampaigns);\n\n const [sorting, setSorting] = useState(\n initState?.sorting || [{ id: 'name', desc: true }]\n );\n\n const { pagination, setPagination } = usePaginationSettings(\n adCampaignEntities?.length ?? 0,\n -1,\n PAGE_SIZE,\n disablePagination,\n initState\n );\n\n useEffect(() => {\n onMount?.();\n });\n\n useEffect(() => {\n return () => onUnmount?.({ pagination, sorting });\n }, [pagination, sorting, onUnmount]);\n\n const { data, hasNoDataLoad } = useMemo(() => {\n const data = adCampaignEntities?.length\n ? adCampaignEntities\n : adCampaignEntities == null || isItemsLoading\n ? (generateShimmeringRows(0) as null[])\n : adCampaignEntities;\n\n const hasNoDataLoad =\n adCampaignEntities == null\n ? true\n : adCampaignEntities.length > MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS;\n\n return { data, hasNoDataLoad };\n }, [isItemsLoading, adCampaignEntities]);\n\n const columns = useGetAdCampaignsTableColumns();\n\n const options = useMemo<\n Partial>\n >(\n () => ({\n data,\n columns: columns,\n state: {\n pagination,\n sorting,\n },\n enableRowSelection: false,\n enableMultiRowSelection: false,\n enableSubRowSelection: false,\n getRowId: getRowId,\n onPaginationChange: setPagination,\n onSortingChange: setSorting,\n }),\n [data, columns, pagination, sorting, setPagination]\n );\n\n return failedToRetrieveData ? (\n }\n />\n ) : hasNoDataLoad ? (\n \n \n }\n />\n \n ) : data?.length > 0 ? (\n \n ) : (\n \n \n \n );\n}\n","import { isEqual } from 'lodash-es';\nimport {\n ComponentProps,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react';\nimport { FormProvider, useForm, useFormContext } from 'react-hook-form';\nimport { OkButton } from 'src/components/Buttons/OkButton';\nimport { AdCampaignsDataContext } from 'src/contexts/AdCampaignsDataContext/AdCampaignsDataContext';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { useErrorBoundaryContext } from 'src/contexts/ErrorBoundaryContext';\nimport { useLocalizationContext } from 'src/contexts/LocalizationContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { useSiteTimezoneContext } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { DatePickerInput } from 'src/core/POS/DateSelector';\nimport { PosCurrencyField } from 'src/core/POS/PosCurrencyField';\nimport { PosFormField } from 'src/core/POS/PosFormField';\nimport { getTextFieldState, PosTextField } from 'src/core/POS/PosTextField';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { getLocaleFromLanguageOrCurrent } from 'src/utils/localeUtils';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport { AdCampaignState, CampaignManagerClient } from 'src/WebApiController';\n\nimport { CancellableFormFooter, FieldWrapper } from '../common';\nimport { CancellableFormHeader } from '../common/CancellableFormHeader';\nimport { ConnectedEventEntityHeader } from '../common/EventEntityHeader';\nimport { modalDetails } from '../common/Modals.css';\nimport { summaryWrapper } from '../common/Summary/Summary.css';\nimport { ModalBody } from '../Modal';\nimport { ModalBodyDataContainer, ModalFooter } from '../Modal/Modal.styled';\nimport * as styles from './AdCampaignCreate.css';\n\ntype AdCampaignCreateInput = {\n name: string;\n budget: number;\n startDateTime: string;\n endDateTime: string | null;\n currencyCode: string | null;\n};\n\nexport const AdCampaignCreateForm = () => {\n const { loginContext } = useAppContext();\n\n const defaultValues = useMemo(() => {\n return {\n name: '',\n budget: 0,\n startDateTime: new Date().toISOString(),\n endDateTime: null,\n currencyCode: loginContext?.user?.activeAccount?.currencyCode,\n } as AdCampaignCreateInput;\n }, [loginContext?.user?.activeAccount?.currencyCode]);\n\n const methods = useForm({\n defaultValues,\n });\n\n return (\n \n \n \n );\n};\n\nexport function AdCampaignCreateFormContent({\n formState,\n handleSubmit,\n watch,\n}: Omit<\n ComponentProps>,\n 'children'\n>) {\n const curFormValues = watch();\n\n const { closeModal } = useContext(ModalContext);\n const { showErrorDialog } = useErrorBoundaryContext();\n const { activeAccountWebClientConfig } = useAppContext();\n const { refreshData } = useContext(AdCampaignsDataContext);\n\n const [isLoading, setIsLoading] = useState(false);\n\n const onSubmit = useCallback(\n async (adCampaignCreateInput: AdCampaignCreateInput) => {\n setIsLoading(true);\n\n tryInvokeApi(\n async () => {\n setIsLoading(true);\n\n const client = new CampaignManagerClient(\n activeAccountWebClientConfig\n );\n const response = await client.createCampaign(\n adCampaignCreateInput.name,\n AdCampaignState.Active,\n {\n amount: adCampaignCreateInput.budget,\n currencyCode: adCampaignCreateInput.currencyCode!,\n },\n adCampaignCreateInput.startDateTime,\n adCampaignCreateInput.endDateTime,\n adCampaignCreateInput.currencyCode!\n );\n\n if (response.success) {\n await refreshData(undefined);\n } else {\n const errorMessage = 'Failed to create Ad Campaign';\n\n showErrorDialog(\n 'CampaignManagerClient.createCampaign',\n { message: errorMessage, status: 500 },\n {\n trackErrorData: adCampaignCreateInput,\n }\n );\n return;\n }\n\n closeModal(true);\n },\n (error) => {\n showErrorDialog('CampaignManagerClient.createCampaign', error, {\n trackErrorData: adCampaignCreateInput,\n });\n },\n () => {\n setIsLoading(false);\n }\n );\n },\n [activeAccountWebClientConfig, closeModal, refreshData, showErrorDialog]\n );\n\n const hasChanges = useCallback(\n (form: AdCampaignCreateInput) => {\n return (\n !isEqual(formState.defaultValues?.name, form.name) ||\n !isEqual(formState.defaultValues?.budget, form.budget) ||\n !isEqual(formState.defaultValues?.startDateTime, form.startDateTime) ||\n !isEqual(formState.defaultValues?.endDateTime, form.endDateTime) ||\n !isEqual(formState.defaultValues?.currencyCode, form.currencyCode)\n );\n },\n [\n formState.defaultValues?.name,\n formState.defaultValues?.budget,\n formState.defaultValues?.startDateTime,\n formState.defaultValues?.endDateTime,\n formState.defaultValues?.currencyCode,\n ]\n );\n\n const onSubmitHandler = useCallback(() => {\n if (!hasChanges(curFormValues)) return;\n handleSubmit(onSubmit)();\n }, [hasChanges, curFormValues, handleSubmit, onSubmit]);\n\n const formHasChanges = hasChanges(curFormValues);\n\n return (\n <>\n \n }\n />\n \n\n \n
    \n \n \n \n
    \n
    \n\n \n \n \n \n \n \n );\n}\n\nexport const AdCampaignCreateModal = {\n children: ,\n clickOutsideToClose: true,\n size: 'slide-in',\n};\n\nexport const AdCampaignCreateFormBody = () => {\n const { timeZone } = useSiteTimezoneContext();\n const { register, getValues, setValue, formState, clearErrors } =\n useFormContext();\n\n const { name, budget, startDateTime, endDateTime } = getValues();\n\n const namePlaceholder = useContent(ContentId.EnterAdCampaignName);\n\n const requiredMsg = useContent(ContentId.Required);\n\n const { getUiCurrency } = useLocalizationContext();\n const { loginContext } = useAppContext();\n\n const uiCurrency = getUiCurrency(\n loginContext?.user?.activeAccount?.currencyCode\n );\n\n const setBudget = useCallback(\n (budget: number) => {\n if (budget >= 0 && budget <= Number.MAX_VALUE) {\n clearErrors('budget');\n setValue('budget', budget);\n }\n },\n [clearErrors, setValue]\n );\n\n return (\n <>\n
    \n
    \n
    \n \n }\n >\n {\n return fieldVal?.length ? undefined : requiredMsg;\n },\n },\n onChange: (event) => {\n if (event.target.value) {\n clearErrors('name');\n }\n },\n })}\n />\n \n \n \n }\n >\n {\n const v = parseFloat(e.target.value) || 0;\n setBudget(v);\n }}\n />\n \n \n \n }\n errors={formState.errors.startDateTime?.message}\n >\n {\n if (date) {\n clearErrors('startDateTime');\n const dateStr = date.toISOString();\n if (dateStr !== startDateTime) {\n setValue('startDateTime', dateStr);\n }\n }\n }}\n locale={getLocaleFromLanguageOrCurrent()}\n />\n \n \n \n }\n errors={formState.errors.endDateTime?.message}\n >\n {\n if (date) {\n clearErrors('endDateTime');\n const dateStr = date.toISOString();\n if (dateStr !== endDateTime) {\n setValue('endDateTime', dateStr);\n }\n }\n }}\n locale={getLocaleFromLanguageOrCurrent()}\n />\n \n \n
    \n
    \n
    \n \n );\n};\n","import styled from 'styled-components/macro';\n\nexport const AdCampaignsToolbarDiv = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid ${(props) => props.theme.colors.borderPrimary};\n padding: ${(props) => props.theme.spacing(2, 4, 2, 3)};\n\n ${({ theme: { media, spacing } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `padding: ${spacing(2, 8, 2, 6)};`\n )}`}\n\n .add-adCampaigns {\n white-space: nowrap;\n width: fit-content;\n }\n`;\n\nexport const FilterBarLeftSide = styled.div`\n display: flex;\n flex-grow: 1;\n align-items: center;\n gap: 8px;\n\n > div {\n flex-grow: 1;\n }\n`;\n\nexport const FilterBarRightSide = styled.div`\n display: flex;\n align-items: center;\n padding-inline-start: ${(props) => props.theme.spacing(2)};\n\n ${({ theme: { media, spacing } }) =>\n `${media.makeMediaQuery(\n media.breakpoints.md,\n `padding-inline-start: ${spacing(4)};`\n )}`}\n`;\n","import { MouseEvent, useContext } from 'react';\nimport { Content } from 'src/contexts/ContentContext';\nimport { ModalContext } from 'src/contexts/ModalContext';\nimport { Button } from 'src/core/ui';\nimport { AdCampaignCreateModal } from 'src/modals/AdCampaignCreate/AdCampaignCreate';\nimport { ContentId } from 'src/utils/constants/contentId';\n\nimport * as styles from './AdCampaignsToolbar.css';\nimport {\n AdCampaignsToolbarDiv,\n FilterBarLeftSide,\n FilterBarRightSide,\n} from './AdCampaignsToolbar.styled';\n\nexport type AdCampaignsToolbarType = {\n disabled?: boolean;\n onColumnSettingButtonClickHandler?: (\n e: MouseEvent\n ) => void;\n};\n\nexport function AdCampaignsToolbar() {\n const { setModal } = useContext(ModalContext);\n\n return (\n \n \n \n setModal(AdCampaignCreateModal)}\n >\n \n \n \n \n );\n}\n","import { ReactNode, useContext, useMemo } from 'react';\nimport * as EmptySectionContent from 'src/components/common/EmptySectionContent';\nimport { AdCampaignIdProvider } from 'src/contexts/AdCampaignIdContext/AdCampaignIdContext';\nimport {\n AdCampaignsDataContext,\n AdCampaignsDataContextProvider,\n} from 'src/contexts/AdCampaignsDataContext/AdCampaignsDataContext';\nimport {\n AdPlatformReportingContext,\n AdPlatformReportingContextProvider,\n} from 'src/contexts/AdPlatformReportingContext/AdPlatformReportingContext';\nimport { Content, useContent } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { SellerUserSettingsProvider } from 'src/contexts/SellerUserSettingsContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport { Stack } from 'src/core/ui';\nimport { LayoutContent } from 'src/navigations/LayoutContent';\nimport { SearchSolidIcon } from 'src/svgs/Viagogo';\nimport { AdCampaignsTable } from 'src/tables/AdCampaignsTable';\nimport { AdCampaignEntityWithMetrics } from 'src/tables/AdCampaignsTable/AdCampaignsTable.type';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { SomethingWentWrong } from 'src/views';\nimport {\n AdPlatformTransactionAgg,\n TransactionAggType,\n UserSetting,\n} from 'src/WebApiController';\n\nimport { MainRoute } from '../MainRoute';\nimport { AdCampaignsToolbar } from './AdCampaignsToolbar/AdCampaignsToolbar';\n\nconst SPONSOREDLISTINGS_USER_SETTINGS: UserSetting[] = [];\n\nexport function SponsoredListings() {\n return (\n \n \n \n \n \n \n \n );\n}\n\nfunction SponsoredListingsContent() {\n const sponsoredListingsTitle = useContent(ContentId.SponsoredListings);\n\n const { adCampaignsDataQuery: adCampaignsDataQuery, errorInfo } = useContext(\n AdCampaignsDataContext\n );\n\n return (\n \n \n \n \n {adCampaignsDataQuery.isLoading && }\n {errorInfo && (\n \n )\n }\n />\n )}\n {!adCampaignsDataQuery.isLoading && !errorInfo && (\n <>\n \n {adCampaignsDataQuery.data?.length ? (\n \n ) : (\n \n \n \n }\n >\n \n \n \n \n \n \n \n )}\n \n )}\n \n \n \n \n );\n}\n\ntype AdCampaignsFlattenedViewProps = {\n before?: ReactNode;\n topListItemBefore?: ReactNode;\n};\n\nexport const AdCampaignsFlattenedView = ({\n before,\n topListItemBefore,\n}: AdCampaignsFlattenedViewProps) => {\n const { adCampaignsDataQuery: campaignDataQuery, allCampaignData } =\n useContext(AdCampaignsDataContext);\n\n const { reportData, errorInfo } = useContext(AdPlatformReportingContext);\n\n const campaignEntitiesWithMetrics = useMemo(() => {\n if (!allCampaignData) {\n return;\n }\n\n // TODO: Rather than building a dictionary here, we should get the data pre-indexed by id.\n const reportDataByAdCampaignId = reportData?.reduce<{\n [key: string]: AdPlatformTransactionAgg;\n }>((acc, entity) => {\n if (entity.adCampaignId) {\n acc[entity.adCampaignId] = entity;\n }\n return acc;\n }, {});\n\n const items: AdCampaignEntityWithMetrics[] = allCampaignData.map((item) => {\n const metric = reportDataByAdCampaignId?.[item.campaignId];\n return {\n ...item,\n adSpend:\n metric?.adSpend ??\n (reportDataByAdCampaignId || errorInfo ? null : undefined),\n salesProceeds:\n metric?.salesProceeds ??\n (reportDataByAdCampaignId || errorInfo ? null : undefined),\n qtySold:\n metric?.qtySold ??\n (reportDataByAdCampaignId || errorInfo ? null : undefined),\n };\n });\n\n return items;\n }, [allCampaignData, errorInfo, reportData]);\n\n return (\n \n {before}\n {topListItemBefore}\n \n \n );\n};\n","import { PosIconProps, SvgWrapper } from './SvgWrapper';\n\nexport const PaymentsIcon = (props: PosIconProps) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {/**/}\n \n );\n};\n","export default \"__VITE_ASSET__bfc9223b__\"","export default \"__VITE_ASSET__df4187d3__\"","import { ReactNode } from 'react';\nimport { Helmet } from 'react-helmet';\nimport reachDarkIcon from 'src/assets/icons/reach_pro/reach_pro_dark.ico';\nimport reachLightIcon from 'src/assets/icons/reach_pro/reach_pro_light.ico';\nimport { isReachProDomain } from 'src/components/SignUp/SignUpRedirect';\n\ninterface ReachProDocumentInfoProps {\n children: ReactNode;\n}\n\nexport const DocumentInfo = ({ children }: ReachProDocumentInfoProps) => {\n const isReachProDomainActive = isReachProDomain();\n const isDarkTheme =\n window.matchMedia &&\n window.matchMedia('(prefers-color-scheme: dark)').matches;\n\n const reachPropIco = isDarkTheme ? reachLightIcon : reachDarkIcon;\n\n return (\n <>\n {isReachProDomainActive ? (\n \n Reach Pro\n \n \n ) : (\n \n StubHub Pro\n \n \n \n )}\n {children}\n \n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { useAppContext } from 'src/contexts/AppContext';\nimport { REACT_APP_NAME } from 'src/utils/constants/constants';\nimport { tryInvokeApi } from 'src/utils/tryExecuteUtils';\nimport {\n ClientLogClient,\n ClientLogRequest,\n LogLevel,\n} from 'src/WebApiController';\n\nfunction getTabId() {\n return sessionStorage.tabId\n ? sessionStorage.tabId\n : (sessionStorage.tabId = Math.random());\n}\n\nconst useMeasurement = () => {\n const { activeAccountWebClientConfig } = useAppContext();\n const logClient = useMemo(\n () => new ClientLogClient(activeAccountWebClientConfig),\n [activeAccountWebClientConfig]\n );\n\n return useCallback(async () => {\n if ((window.performance as any).memory) {\n const logRequest: ClientLogRequest = {\n logLevel: LogLevel.Information,\n applicationSource: REACT_APP_NAME,\n errorId: null,\n error: 'MemoryStat',\n pageUrl: window.location.href,\n componentStack: null,\n additionalInfo: {\n tabId: getTabId(),\n //memory: await performance.measureUserAgentSpecificMemory(), // TODO:: can't use this as window.crossOriginIsolated is false\n memory: {\n usedJSHeapSize: (window.performance as any).memory.usedJSHeapSize,\n totalJSHeapSize: (window.performance as any).memory.totalJSHeapSize,\n jsHeapSizeLimit: (window.performance as any).memory.jsHeapSizeLimit,\n },\n },\n };\n\n await tryInvokeApi(\n async () => {\n await logClient.log(logRequest);\n },\n () => {\n console.warn('Failed to log memory metrics to server');\n }\n );\n }\n }, [logClient]);\n};\n\nexport const useMemoryTelemetry = () => {\n const INTERVAL_SECONDS = 300;\n const getMeasurement = useMeasurement();\n\n useEffect(() => {\n const timerId = setInterval(getMeasurement, 1000 * INTERVAL_SECONDS);\n return () => clearInterval(timerId);\n }, [getMeasurement]);\n};\n","import styled from 'styled-components/macro';\n\nexport const AppLayout = styled.div`\n .content-container {\n flex-grow: 1;\n overflow: hidden;\n }\n`;\n","import {\n matchQuery,\n Query,\n QueryCache,\n QueryClient,\n QueryFunctionContext,\n QueryKey,\n} from '@tanstack/react-query';\nimport {\n PERSISTER_KEY_PREFIX,\n StoragePersisterOptions,\n} from '@tanstack/react-query-persist-client';\nimport { parse, stringify } from 'flatted';\nimport {\n clearIDBCache,\n createIDBAsyncStorage,\n} from 'src/core/utils/createIndexDBPersister';\nimport { REACT_QUERY_CACHE_MAX_AGE_IN_MS } from 'src/utils/constants/constants';\nimport { ApiException } from 'src/WebApiController';\n\ninterface QueryMeta {\n onError?: (error: Error) => void;\n}\n\n/**\n * This is copied from https://github.com/TanStack/query/blob/683c85e02c58c988cb520958941fcd163bd00eee/packages/query-persist-client-core/src/createPersister.ts#L81\n * We need to override the fact that all query.fetch() regardless of Stale or not\n */\nexport function experimental_createPersister({\n storage,\n buster = '',\n maxAge = 1000 * 60 * 60 * 24,\n serialize = stringify as Required<\n StoragePersisterOptions\n >['serialize'],\n deserialize = parse as Required<\n StoragePersisterOptions\n >['deserialize'],\n prefix = PERSISTER_KEY_PREFIX,\n filters,\n}: StoragePersisterOptions) {\n return async function persisterFn(\n queryFn: (context: QueryFunctionContext) => T | Promise,\n context: QueryFunctionContext,\n query: Query\n ) {\n const storageKey = `${prefix}-${query.queryHash}`;\n const matchesFilter = filters ? matchQuery(filters, query) : true;\n\n // Try to restore only if we do not have any data in the cache and we have persister defined\n if (matchesFilter && query.state.data === undefined && storage != null) {\n try {\n const storedData = await storage.getItem(storageKey);\n if (storedData) {\n const persistedQuery = await deserialize(storedData);\n\n if (persistedQuery.state.dataUpdatedAt) {\n const queryAge = Date.now() - persistedQuery.state.dataUpdatedAt;\n const expired = queryAge > maxAge;\n const busted = persistedQuery.buster !== buster;\n if (expired || busted) {\n await storage.removeItem(storageKey);\n } else {\n // Just after restoring we want to get fresh data from the server always\n setTimeout(() => {\n // Set proper updatedAt, since resolving in the first pass overrides those values\n query.setState({\n dataUpdatedAt: persistedQuery.state.dataUpdatedAt,\n errorUpdatedAt: persistedQuery.state.errorUpdatedAt,\n });\n\n // Fetch the latest data\n query.fetch();\n }, 0);\n // We must resolve the promise here, as otherwise we will have `loading` state in the app until `queryFn` resolves\n return Promise.resolve(persistedQuery.state.data as T);\n }\n } else {\n await storage.removeItem(storageKey);\n }\n }\n } catch (err) {\n if (process.env.NODE_ENV === 'development') {\n console.error(err);\n console.warn(\n 'Encountered an error attempting to restore query cache from persisted location.'\n );\n }\n await storage.removeItem(storageKey);\n }\n }\n\n // If we did not restore, or restoration failed - fetch\n const queryFnResult = await queryFn(context);\n\n if (matchesFilter && storage != null) {\n // Persist if we have storage defined, we use timeout to get proper state to be persisted\n setTimeout(async () => {\n storage.setItem(\n storageKey,\n await serialize({\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n buster: buster,\n })\n );\n }, 0);\n }\n\n return Promise.resolve(queryFnResult);\n };\n}\n\nconst createClient = () => {\n const persister = experimental_createPersister({\n storage: createIDBAsyncStorage(),\n // this is the age of the persisted cache - if a stored cache is older than 24 hrs, it will not be loaded\n // only time this happens is if the user hasn't used the app for a prolonged period of time\n // Nuance: this needs to be less than or equal to the cacheTime above\n // https://tanstack.com/query/v5/docs/framework/react/plugins/createPersister\n maxAge: REACT_QUERY_CACHE_MAX_AGE_IN_MS,\n buster: '12', // NOTE - update this if you release some breaking change and want the app to start fresh (rather than loading from caches)\n filters: {\n predicate: (query) => {\n // Only include queries that satisfy the following\n return (\n (query.state.data != null && query.state.error == null) ||\n query.meta?.persist !== false\n );\n },\n },\n });\n\n const client = new QueryClient({\n defaultOptions: {\n queries: {\n // gcTime is the time a query gets garbage collected if it hasn't been used for this amount of time\n gcTime: REACT_QUERY_CACHE_MAX_AGE_IN_MS,\n persister: persister,\n structuralSharing: (oldData, newData) => {\n if (stringify(oldData) === stringify(newData)) {\n return oldData;\n }\n return newData;\n },\n },\n },\n queryCache: new QueryCache({\n onError(error, query) {\n const meta = query.meta as QueryMeta;\n\n if (meta?.onError) {\n meta.onError(error);\n }\n\n if (ApiException.isApiException(error) && error.status === 401) {\n clearIDBCache(); // delete the cache storage before reloading\n window.location.reload();\n }\n },\n }),\n });\n\n return { client, persister };\n};\n\nexport const MainQueryClient = createClient();\n","import { MantineProvider } from '@mantine/core';\nimport { Worker } from '@react-pdf-viewer/core';\nimport { QueryClientProvider } from '@tanstack/react-query';\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools';\nimport clsx from 'clsx';\nimport { useEffect } from 'react';\nimport { DndProvider } from 'react-dnd';\nimport { TouchBackend } from 'react-dnd-touch-backend';\nimport { Outlet } from 'react-router-dom';\nimport { dataThemeAttributeName } from 'src/app/constants';\nimport { DocumentInfo } from 'src/components/SignUp/DocumentInfo';\nimport { SignUpRedirect } from 'src/components/SignUp/SignUpRedirect';\nimport {\n AppContextProvider,\n AppTelemetryProvider,\n useAppContext,\n} from 'src/contexts/AppContext';\nimport { BulkEditHubContextProvider } from 'src/contexts/BulkEditHubContext';\nimport { SiteContentProvider } from 'src/contexts/ContentContext';\nimport { DialogProvider } from 'src/contexts/DialogContext/DialogContext';\nimport { EmailPurchaseOrderContextProvider } from 'src/contexts/EmailPurchaseOrderContext/EmailPurchaseOrderContext';\nimport { ErrorBoundaryContextProvider } from 'src/contexts/ErrorBoundaryContext';\nimport { GenericDialogProvider } from 'src/contexts/GenericDialogContext/GenericDialogContext';\nimport { LocalizationContextProvider } from 'src/contexts/LocalizationContext';\nimport { MenuContextProvider } from 'src/contexts/MenuContext/MenuContext';\nimport { NotificationsContextProvider } from 'src/contexts/NotificationsContext';\nimport { ScreenSizeProvider } from 'src/contexts/ScreenSizeContext/ScreenSizeContext';\nimport { SellerAccountContextProvider } from 'src/contexts/SellerAccountContext';\nimport { SellerRoleContextProvider } from 'src/contexts/SellerRoleContext';\nimport { SignUpContextProvider } from 'src/contexts/SignUpContext/SignUpContext';\nimport {\n SiteThemeContextProvider,\n useSiteTheme,\n} from 'src/contexts/SiteTheme/SiteThemeContext';\nimport { SiteTimezoneContextProvider } from 'src/contexts/SiteTimezoneContext/SiteTimezoneContext';\nimport { PosSpinner } from 'src/core/POS/PosSpinner';\nimport {\n PurpleLegacyTheme,\n purpleTheme,\n TicketUtilLegacyTheme,\n ticketUtilTheme,\n} from 'src/core/themes';\nimport { DarkLegacyTheme } from 'src/core/themes/darkLegacyTheme';\nimport { darkTheme } from 'src/core/themes/darkTheme.css';\nimport { useMemoryTelemetry } from 'src/hooks/useMemoryTelemetry';\nimport { useNetworkState } from 'src/hooks/useNetworkState';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport { Offline } from 'src/navigations/Routes/Offline';\nimport { CoBrandId } from 'src/WebApiController';\nimport { ThemeProvider } from 'styled-components/macro';\n\nimport * as styles from './App.css';\nimport { AppLayout } from './App.styled';\nimport { MainQueryClient } from './QueryClients';\n\nconst touchBackendOptions = { enableMouseEvents: true };\n\nfunction AppContent() {\n const { appContext, cobrandId, mainRoute } = useAppContext();\n const isOnline = useNetworkState();\n const { isDarkMode } = useSiteTheme();\n useMemoryTelemetry();\n\n useEffect(() => {\n document.body.setAttribute(dataThemeAttributeName, 'light');\n\n if (cobrandId === CoBrandId.TicketUtil) {\n document.body.classList.toggle(ticketUtilTheme, true);\n document.body.classList.remove(purpleTheme);\n document.body.classList.remove(darkTheme);\n } else if (isDarkMode) {\n document.body.classList.toggle(darkTheme, true);\n document.body.setAttribute(dataThemeAttributeName, 'dark');\n document.body.classList.remove(ticketUtilTheme);\n document.body.classList.remove(purpleTheme);\n } else {\n document.body.classList.toggle(purpleTheme, true);\n document.body.classList.remove(ticketUtilTheme);\n document.body.classList.remove(darkTheme);\n }\n }, [cobrandId, isDarkMode]);\n\n if (!appContext) {\n return null;\n }\n\n return (\n \n \n \n \n \n \n \n \n {/* See https://github.com/react-dnd/react-dnd/issues/3257#issuecomment-1239254032 */}\n \n \n \n \n \n \n {/* Required for pdf viewer to work https://react-pdf-viewer.dev/docs/basic-usage/ */}\n \n \n \n \n \n {appContext === undefined ? (\n isOnline ? (\n \n \n \n ) : (\n \n )\n ) : (\n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport function App() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","import * as Sentry from '@sentry/react';\nimport { createBrowserRouter, Navigate, redirect } from 'react-router-dom';\nimport { Content } from 'src/contexts/ContentContext';\nimport { Stack } from 'src/core/ui';\nimport { Activity } from 'src/navigations/Routes/Activity';\nimport { AdCampaign } from 'src/navigations/Routes/AdCampaign';\nimport { AdGroupListings } from 'src/navigations/Routes/AdGroupListings';\nimport { Email, EmailNavPageNameHandle } from 'src/navigations/Routes/Email';\nimport { HelpCenter } from 'src/navigations/Routes/HelpCenter';\nimport { Home } from 'src/navigations/Routes/Home';\nimport { Inventory } from 'src/navigations/Routes/Inventory';\nimport { InventoryEvent } from 'src/navigations/Routes/InventoryEvent';\nimport { InventoryEventPageRedirect } from 'src/navigations/Routes/InventoryEvent/InventoryEventPageRedirect';\nimport { InventoryEventV2 } from 'src/navigations/Routes/InventoryEvent/InventoryEventV2';\nimport { InventorySearch } from 'src/navigations/Routes/InventorySearch';\nimport {\n Login,\n LoginCallback,\n LoginFailure,\n Logout,\n} from 'src/navigations/Routes/Login';\nimport { MainRoute } from 'src/navigations/Routes/MainRoute';\nimport { Notifications } from 'src/navigations/Routes/Notifications';\nimport { OnSaleEvent } from 'src/navigations/Routes/OnSaleEvent';\nimport { Payments } from 'src/navigations/Routes/Payments';\nimport { PurchaseEvent } from 'src/navigations/Routes/PurchaseEvent/PurchaseEvent';\nimport { Purchases } from 'src/navigations/Routes/Purchases';\nimport { PurchaseSearch } from 'src/navigations/Routes/PurchaseSearch/PurchaseSearch';\nimport { RedirectToStubHubUk } from 'src/navigations/Routes/RedirectToStubHubUk';\nimport { ReleaseNotes } from 'src/navigations/Routes/ReleaseNotes';\nimport { Reports, ReportsV2 } from 'src/navigations/Routes/Reports';\nimport { ReportsCommission } from 'src/navigations/Routes/ReportsCommission';\nimport { ReportsInventory } from 'src/navigations/Routes/ReportsInventory';\nimport { ReportsInventoryV2 } from 'src/navigations/Routes/ReportsInventory/ReportsInventoryV2';\nimport { ReportsSale } from 'src/navigations/Routes/ReportsSale';\nimport { ReportsSaleV2 } from 'src/navigations/Routes/ReportsSale/ReportsSaleV2';\nimport { Sales } from 'src/navigations/Routes/Sales';\nimport { SaleSearch } from 'src/navigations/Routes/SaleSearch';\nimport { SalesEvent } from 'src/navigations/Routes/SalesEvent/SalesEvent';\nimport { Settings, SettingsViews } from 'src/navigations/Routes/Settings';\nimport { SettingTab } from 'src/navigations/Routes/Settings/constants';\nimport { SyncCenter } from 'src/navigations/Routes/Settings/Views/SyncCenter';\nimport { SignUp } from 'src/navigations/Routes/SignUp';\nimport { SignUpPathname } from 'src/navigations/Routes/SignUp/constants';\nimport { SponsoredListings } from 'src/navigations/Routes/SponsoredListings';\nimport { SaleAlertIcon } from 'src/svgs';\nimport { PaymentsIcon } from 'src/svgs/PaymentsIcon';\nimport {\n ChatIcon,\n ConnectedIcon,\n DollarIcon,\n HomeOutlineIcon,\n PaperTicketsOutlineIcon,\n SearchSolidIcon,\n SellOutlineIcon,\n SettingsIcon,\n} from 'src/svgs/Viagogo';\nimport { ContentId } from 'src/utils/constants/contentId';\nimport { DeviceAwareContentWrapper } from 'src/utils/contentUtils';\nimport { RootErrorPage } from 'src/views';\n\nimport App from './App';\n\nexport const AppRouteConfigs = {\n [MainRoute.Home]: {\n view: MainRoute.Home,\n path: '/home',\n label: ,\n icon: HomeOutlineIcon,\n },\n [MainRoute.Inventory]: {\n view: MainRoute.Inventory,\n path: '/inventory',\n label: ,\n icon: PaperTicketsOutlineIcon,\n },\n [MainRoute.Sales]: {\n view: MainRoute.Sales,\n path: '/sales',\n label: (\n \n ),\n icon: SaleAlertIcon,\n },\n [MainRoute.Purchases]: {\n view: MainRoute.Purchases,\n path: '/purchases',\n label: ,\n icon: SellOutlineIcon,\n },\n [MainRoute.Payments]: {\n view: MainRoute.Payments,\n path: '/payments',\n label: ,\n icon: PaymentsIcon,\n },\n [MainRoute.Reports]: {\n view: MainRoute.Reports,\n path: '/reports',\n label: ,\n icon: ConnectedIcon,\n },\n [MainRoute.ReportsV2]: {\n view: MainRoute.ReportsV2,\n path: '/reports/v2',\n label: 'Reports V2', // no need to translate - once we release - we will need to use ContentId.Report again\n icon: ConnectedIcon,\n },\n [MainRoute.SponsoredListings]: {\n view: MainRoute.SponsoredListings,\n path: '/sponsoredlistings',\n label: ,\n icon: DollarIcon,\n },\n [MainRoute.Discovery]: {\n view: MainRoute.Discovery,\n path: '/discovery',\n label: ,\n icon: SearchSolidIcon,\n },\n};\n\nexport const MenuItems = {\n [MainRoute.Email]: {\n view: MainRoute.Email,\n path: '/messages',\n label: ,\n icon: ChatIcon,\n },\n [MainRoute.Settings]: {\n view: MainRoute.Settings,\n path: '/settings',\n label: ,\n icon: SettingsIcon,\n },\n} as const;\n\nconst sentryCreateBrowserRouter =\n Sentry.wrapCreateBrowserRouter(createBrowserRouter);\n\nexport const router = sentryCreateBrowserRouter([\n {\n element: ,\n errorElement: (\n
    \n \n
    \n ),\n children: [\n {\n path: '/',\n loader() {\n return redirect('/start');\n },\n },\n {\n path: '/start',\n element: ,\n },\n {\n path: SignUpPathname,\n element: ,\n },\n {\n path: '/login',\n element: ,\n },\n {\n path: '/login/callback',\n element: ,\n },\n {\n path: '/logout',\n element: ,\n },\n {\n path: '/unauthorized',\n element: ,\n },\n {\n path: AppRouteConfigs[MainRoute.Home].path,\n element: ,\n },\n {\n path: AppRouteConfigs[MainRoute.Inventory].path,\n element: ,\n },\n {\n path: '/inventory/event/v2',\n element: ,\n },\n {\n path: '/inventory/event',\n element: ,\n },\n {\n path: '/inventory/event/:eventId',\n element: ,\n },\n {\n path: '/inventory/search',\n element: ,\n },\n {\n path: AppRouteConfigs[MainRoute.Discovery].path,\n element: ,\n },\n {\n path: AppRouteConfigs[MainRoute.Sales].path,\n element: ,\n },\n {\n path: '/sales/event',\n element: ,\n },\n {\n path: '/sales/search',\n element: ,\n },\n {\n path: AppRouteConfigs[MainRoute.Purchases].path,\n element: ,\n },\n {\n path: AppRouteConfigs[MainRoute.Payments].path,\n element: ,\n },\n {\n path: '/purchases/event',\n element: ,\n },\n {\n path: '/purchases/search',\n element: ,\n },\n {\n path: '/redirect-uk',\n element: ,\n },\n {\n path: '/notifications',\n element: ,\n },\n {\n path: '/release-notes',\n element: ,\n },\n {\n path: '/help',\n element: ,\n },\n {\n path: '/reports/v2',\n element: ,\n },\n {\n path: '/reports',\n element: ,\n },\n {\n path: '/reports/inventory/:reportId',\n element: ,\n },\n {\n path: '/reports/sale/:reportId',\n element: ,\n },\n {\n path: '/reports/inventory/v2/:reportId',\n element: ,\n },\n {\n path: '/reports/commission/v2/:reportId',\n element: ,\n },\n {\n path: '/reports/sale/v2/:reportId',\n element: ,\n },\n {\n path: '/activity',\n element: ,\n },\n {\n path: '/sync-center',\n element: ,\n },\n {\n path: AppRouteConfigs[MainRoute.SponsoredListings].path,\n element: ,\n },\n {\n path: '/sponsoredlistings/adcampaign',\n element: ,\n },\n {\n path: '/sponsoredlistings/adgrouplistings',\n element: ,\n },\n /**\n * Settings Routes\n */\n {\n path: '/settings',\n element: ,\n children: [\n {\n index: true,\n element: (\n \n ),\n },\n {\n path: SettingTab.MyAccount,\n element: ,\n },\n {\n path: SettingTab.CurrencyConversion,\n element: ,\n },\n {\n path: SettingTab.FulfillmentProviders,\n element: ,\n },\n {\n path: SettingTab.PurchaseOrder,\n element: ,\n },\n {\n path: SettingTab.Accounting,\n element: ,\n },\n {\n path: SettingTab.UserManagement,\n element: ,\n children: [\n {\n path: '',\n element: (\n \n \n \n \n \n ),\n },\n {\n path: SettingTab.UserManagement_Users,\n element: ,\n },\n {\n path: SettingTab.UserManagement_Roles,\n element: ,\n },\n {\n path: SettingTab.UserManagement_Teams,\n element: ,\n },\n ],\n },\n {\n path: SettingTab.VendorManagement,\n element: ,\n children: [\n {\n path: '',\n element: (\n \n \n \n \n ),\n },\n {\n path: SettingTab.VendorManagement_Vendors,\n element: ,\n },\n {\n path: SettingTab.VendorManagement_Payments,\n element: ,\n },\n ],\n },\n {\n path: SettingTab.SyncCenter,\n element: ,\n },\n {\n path: SettingTab.SellerAccount,\n element: ,\n },\n {\n path: SettingTab.AutoPricing,\n element: ,\n },\n ],\n },\n {\n path: '/messages',\n element: ,\n children: [\n {\n children: [\n { index: true },\n { path: 'support/:sellerSupportCaseId' },\n { path: ':inboundEmailId' },\n ],\n handle: {\n pageName: 'inbox',\n } satisfies EmailNavPageNameHandle,\n },\n {\n path: 'uncategorized',\n children: [{ index: true }, { path: ':inboundEmailId' }],\n handle: {\n pageName: 'uncategorized',\n } satisfies EmailNavPageNameHandle,\n },\n {\n path: 'recently-categorized',\n children: [{ index: true }, { path: ':inboundEmailId' }],\n handle: {\n pageName: 'recentlyCategorized',\n } satisfies EmailNavPageNameHandle,\n },\n ],\n },\n ],\n },\n]);\n","import * as Sentry from '@sentry/react';\nimport React from 'react';\nimport {\n createRoutesFromChildren,\n matchRoutes,\n useLocation,\n useNavigationType,\n} from 'react-router-dom';\nimport { ReactAppContext } from 'src/WebApiController';\n\nexport const initSentry = (appContext: ReactAppContext) => {\n Sentry.init({\n dsn: 'https://530f5d7e8881f403994c55895d5b1248@o4507805351280640.ingest.us.sentry.io/4508122587529216',\n environment: appContext?.environment || 'unknown-env', // DEV, QA, BETA, PROD,\n release: appContext?.version || 'unknown', // UI release number\n integrations: [\n Sentry.reactRouterV6BrowserTracingIntegration({\n useEffect: React.useEffect,\n useLocation,\n useNavigationType,\n createRoutesFromChildren,\n matchRoutes,\n }),\n Sentry.browserProfilingIntegration(),\n ],\n // Tracing\n tracesSampleRate: 0.5,\n profilesSampleRate: 0.5,\n\n // Session Replay\n replaysSessionSampleRate: 0.0,\n replaysOnErrorSampleRate: 0.0,\n });\n};\n","import 'bootstrap/dist/css/bootstrap.css';\nimport './index.css';\n\nimport { createRoot } from 'react-dom/client';\nimport { RouterProvider } from 'react-router-dom';\n\nimport { router } from './app/AppRoutes';\nimport { initSentry } from './utils/sentry';\nimport { AdminClient } from './WebApiController';\n\nnew AdminClient({})\n .getAppContext()\n .then((appContext) => initSentry(appContext));\n\nconst container = document.getElementById('root');\nconst root = createRoot(container!);\nroot.render();\n"],"names":["MainRoute","SignUp","Login","LoginCallback","Logout","LoginFailure","Home","Inventory","InventorySearch","Sales","SalesSearch","Purchases","PurchaseSearch","RedirectToUK","SellerAccountSetting","Activity","Notifications","ReleaseNotes","Reports","ReportsV2","SyncCenter","Email","Settings","SponsoredListings","Payments","Discovery","HelpCenter","InventoryEvent","PurchasesEvent","SalesEvent","getCurrentLanguage","navigator","languages","length","language","getCurrentLanguages","generateAcceptLanguage","join","getLocaleFromLanguage","getDateFnsLocale","replaceAll","getLocaleFromLanguageOrCurrent","locale","Locales","compareLocaleLowercased","a","b","aL","toLocaleLowerCase","bL","PosClientBase","constructor","configuration","transformOptions","options","headers","activeAccountId","Promise","resolve","ActivityLogClient","baseUrl","http","jsonParseReviver","window","getActivityLog","entityId","entityType","url_","Error","undefined","encodeURIComponent","replace","options_","method","then","transformedOptions_","fetch","_response","processGetActivityLog","response","status","_headers","forEach","v","k","text","_responseText","result200","JSON","parse","throwException","getActivityLogByFilter","query","body","stringify","processGetActivityLogByFilter","getActivityLogWithAuditByFilter","processGetActivityLogWithAuditByFilter","getActivityLogTagNamesByEntityId","processGetActivityLogTagNamesByEntityId","getRecentActivityLog","count","includeEventInfo","processGetRecentActivityLog","trackEntityView","processTrackEntityView","trackListingCompsView","listingId","processTrackListingCompsView","trackListingDocumentView","documentId","documentType","processTrackListingDocumentView","trackListingDocumentDownload","processTrackListingDocumentDownload","AddressClient","getKnownCountries","processGetKnownCountries","getStateProvinces","processGetStateProvinces","getCitiesWithStateProvince","processGetCitiesWithStateProvince","getCitiesWithoutStateProvince","processGetCitiesWithoutStateProvince","AdminClient","getAppContext","processGetAppContext","AdPlatformCatalogClient","getCatalogForSeller","processGetCatalogForSeller","AutoPoClient","getInboundEmails","take","skip","processGetInboundEmails","getClassifiedInboundEmails","classificationTypes","isSortDescending","processGetClassifiedInboundEmails","getClassifiedInboundEmailsCount","processGetClassifiedInboundEmailsCount","getPartialPurchaseOrderInboundEmails","processGetPartialPurchaseOrderInboundEmails","getPartialPurchaseOrderInboundEmailsCount","processGetPartialPurchaseOrderInboundEmailsCount","getPartialPurchaseOrder","partialPurchaseOrderId","processGetPartialPurchaseOrder","getSingleInboundEmailThread","inboundEmailId","processGetSingleInboundEmailThread","getPurchaseInboundEmailThread","purchaseOrderId","isClassified","processGetPurchaseInboundEmailThread","getSaleInboundEmailThread","saleId","processGetSaleInboundEmailThread","getPrivateInboundEmailThread","toEmailAddress","classificationType","processGetPrivateInboundEmailThread","getInboundEmailBody","processGetInboundEmailBody","getAutoPoClassifiedInboundEmailIdForEntity","processGetAutoPoClassifiedInboundEmailIdForEntity","classifyInboundEmail","processClassifyInboundEmail","unclassifyInboundEmail","processUnclassifyInboundEmail","canReprocessEmail","processCanReprocessEmail","getInboundEmailSellerGuidIds","processGetInboundEmailSellerGuidIds","getSellerAccountCountryRestrictions","processGetSellerAccountCountryRestrictions","getSellerAccountVendorRestrictions","processGetSellerAccountVendorRestrictions","upsertSellerAccountCountryRestrictions","countryRestrictions","processUpsertSellerAccountCountryRestrictions","upsertSellerAccountVendorRestrictions","vendorRestrictions","processUpsertSellerAccountVendorRestrictions","BulkEditListingClient","cancelBackgroundTask","updateKey","processCancelBackgroundTask","bulkUpdateListingsPricesPreview","processBulkUpdateListingsPricesPreview","bulkUpdateListingsPricesByPercent","preview","percent","supportBackgroundProgress","processBulkUpdateListingsPricesByPercent","bulkUpdateListingsPrices","priceChange","processBulkUpdateListingsPrices","bulkUpdatePriceFloorCeilingPreview","processBulkUpdatePriceFloorCeilingPreview","bulkUpdatePriceFloor","amount","isRelative","adjustmentType","processBulkUpdatePriceFloor","bulkUpdatePriceCeiling","percentMarketPrice","processBulkUpdatePriceCeiling","bulkUngroupListingsPreview","processBulkUngroupListingsPreview","bulkUngroupListings","processBulkUngroupListings","bulkRemovePredeliveryPreview","processBulkRemovePredeliveryPreview","bulkRemovePredelivery","removeBarcodes","removePdfs","processBulkRemovePredelivery","bulkUpdateMarketplaceSeatingOverridesPreview","processBulkUpdateMarketplaceSeatingOverridesPreview","bulkUpdateMarketplaceSeatingOverrides","input","processBulkUpdateMarketplaceSeatingOverrides","bulkChangeEventPreview","processBulkChangeEventPreview","bulkChangeEvent","posEventId","viagogoEventId","eventMappingId","deallocateSales","reason","processBulkChangeEvent","bulkUpdateAutoPricingSettingsPreview","processBulkUpdateAutoPricingSettingsPreview","bulkUpdateAutoPricingSettings","processBulkUpdateAutoPricingSettings","bulkUpdateAutoPricingSettingsV2","processBulkUpdateAutoPricingSettingsV2","bulkGetListingPriceCalculationsInEvent","processBulkGetListingPriceCalculationsInEvent","bulkUpdateGeneralSettingsPreview","hasPurchaseUpdates","processBulkUpdateGeneralSettingsPreview","bulkUpdateGeneralSettings","processBulkUpdateGeneralSettings","bulkUpdateMarketplacePrices","processBulkUpdateMarketplacePrices","bulkUpdateMarketplacePricesPreview","processBulkUpdateMarketplacePricesPreview","bulkBroadcastListingsPreview","processBulkBroadcastListingsPreview","bulkBroadcastListings","processBulkBroadcastListings","bulkUpdateAdminHoldPreview","processBulkUpdateAdminHoldPreview","bulkUpdateAdminHold","adminHoldExpirationDate","adminHoldNotes","processBulkUpdateAdminHold","bulkUpdateTicketTypeRulesPreview","updateSalesOfListings","processBulkUpdateTicketTypeRulesPreview","bulkUpdateTicketTypeRules","processBulkUpdateTicketTypeRules","bulkUpdateTagsPreview","processBulkUpdateTagsPreview","bulkUpdateTags","tagName","tagValue","processBulkUpdateTags","bulkRemoveTags","processBulkRemoveTags","bulkCreateListingGroups","processBulkCreateListingGroups","bulkAutoCompAndGroupListingsV2","processBulkAutoCompAndGroupListingsV2","bulkUpdatePurchaseCommissionsPreview","processBulkUpdatePurchaseCommissionsPreview","bulkUpdatePurchaseCommissions","processBulkUpdatePurchaseCommissions","bulkDeleteSeatSaversPreview","processBulkDeleteSeatSaversPreview","bulkDeleteSeatSavers","processBulkDeleteSeatSavers","bulkUpdateInternalNotesPreview","processBulkUpdateInternalNotesPreview","bulkUpdateInternalNotes","isUpdate","searchString","replaceString","processBulkUpdateInternalNotes","bulkUpdateIsNoFulfillPreview","processBulkUpdateIsNoFulfillPreview","bulkUpdateIsNoFulfill","isNoFulfill","processBulkUpdateIsNoFulfill","bulkUpdateDeliveryTypePreview","processBulkUpdateDeliveryTypePreview","bulkUpdateDeliveryType","processBulkUpdateDeliveryType","bulkUpdateSeatTraitsPreview","processBulkUpdateSeatTraitsPreview","bulkUpdateSeatTraits","appendSeatTraits","processBulkUpdateSeatTraits","bulkWasteTicketsPreview","processBulkWasteTicketsPreview","bulkWasteTickets","processBulkWasteTickets","BulkEditListingGroupClient","bulkEditListingsGroupSettingsPreview","processBulkEditListingsGroupSettingsPreview","bulkEditListingGroupSettings","processBulkEditListingGroupSettings","BulkEditPurchaseClient","bulkUpdateCurrencyCodePreview","processBulkUpdateCurrencyCodePreview","bulkUpdateCurrencyCode","processBulkUpdateCurrencyCode","bulkDeletePurchaseOrderPreview","processBulkDeletePurchaseOrderPreview","bulkVoidPurchaseOrder","processBulkVoidPurchaseOrder","bulkCancelPurchaseOrder","rejectSale","processBulkCancelPurchaseOrder","bulkConvertPurchasePaymentPreview","processBulkConvertPurchasePaymentPreview","bulkConvertPurchasePayment","fromCurrencyCode","toCurrencyCode","conversionRate","processBulkConvertPurchasePayment","bulkBackfillDeliverySettingsPreview","applyToAllEvents","processBulkBackfillDeliverySettingsPreview","bulkBackfillDeliverySettings","processBulkBackfillDeliverySettings","bulkBackfillDeliverySettingsListingOnly","processBulkBackfillDeliverySettingsListingOnly","importPurchaseFromFile","file","content_","FormData","append","data","fileName","processImportPurchaseFromFile","bulkMarkPurchaseAsPaidPreview","processBulkMarkPurchaseAsPaidPreview","bulkMarkPurchaseAsPaid","processBulkMarkPurchaseAsPaid","BulkEditSaleClient","bulkUpdatePaymentFieldsPreview","processBulkUpdatePaymentFieldsPreview","bulkUpdatePaymentFields","paymentReceived","paymentReferenceId","processBulkUpdatePaymentFields","bulkUpdateMarkAsFulfilledPreview","processBulkUpdateMarkAsFulfilledPreview","bulkUpdateMarkAsFulfilled","processBulkUpdateMarkAsFulfilled","bulkMarkSaleAsPaidPreview","processBulkMarkSaleAsPaidPreview","bulkMarkSaleAsPaid","paymentRefId","paymentDate","marketplace","processBulkMarkSaleAsPaid","bulkCancelSalePreview","processBulkCancelSalePreview","bulkCancelSale","keepAllocatedTickets","processBulkCancelSale","BulkEditTicketGroupClient","bulkDeleteTicketGroupPreview","processBulkDeleteTicketGroupPreview","bulkDeleteTicketGroup","processBulkDeleteTicketGroup","CampaignManagerClient","createCampaign","name","state","budget","startDateTime","endDateTime","currencyCode","processCreateCampaign","createAdGroup","request","processCreateAdGroup","archiveCampaign","campaignId","processArchiveCampaign","archiveAdGroup","adGroupId","processArchiveAdGroup","retrieveCampaigns","processRetrieveCampaigns","retrieveAdGroups","processRetrieveAdGroups","CatalogClient","getCatalogForSales","includeCounts","processGetCatalogForSales","getCatalogForPurchaseOrders","processGetCatalogForPurchaseOrders","getCatalogForSaleBySaleId","processGetCatalogForSaleBySaleId","getCatalogBySaleIds","saleIds","processGetCatalogBySaleIds","getCatalogSaleMetrics","processGetCatalogSaleMetrics","getCatalogTicketGroupMetrics","processGetCatalogTicketGroupMetrics","getDefaultEventGroupingQuery","processGetDefaultEventGroupingQuery","searchEvents","processSearchEvents","getSearchEventsAutoCompleteResult","searchText","maxCount","timeFrame","processGetSearchEventsAutoCompleteResult","getCatalogForListing","processGetCatalogForListing","getCatalogForListingByListingId","processGetCatalogForListingByListingId","getCatalogListingMetrics","processGetCatalogListingMetrics","getEventDetailedListingMetrics","processGetEventDetailedListingMetrics","getSummaryMetricsForListings","allMetrics","processGetSummaryMetricsForListings","getCatalogHomeMetrics","processGetCatalogHomeMetrics","requestEventMapping","processRequestEventMapping","getCatalogForUpcomingOnSales","processGetCatalogForUpcomingOnSales","getCatalogForOnSaleEvents","processGetCatalogForOnSaleEvents","getCatalogOnSaleEventMetrics","processGetCatalogOnSaleEventMetrics","searchOnSaleEvents","processSearchOnSaleEvents","getCatalog","viagogoVirtualIds","processGetCatalog","getCatalogCountForSales","processGetCatalogCountForSales","getCatalogCountForPurchaseOrders","processGetCatalogCountForPurchaseOrders","getCatalogCountForListings","processGetCatalogCountForListings","getCatalogMetricsForTicketGroups","rowVersion","processGetCatalogMetricsForTicketGroups","getCatalogMetricsForSales","processGetCatalogMetricsForSales","getCatalogMetricsForListings","processGetCatalogMetricsForListings","getCatalogDetailedMetricsForListings","processGetCatalogDetailedMetricsForListings","ClientLogClient","log","logRequest","processLog","ContentClient","getContentDataMap","processGetContentDataMap","DocumentProcessorClient","getDocumentUploadInfo","contentType","processGetDocumentUploadInfo","uploadDocumentForSale","blobName","processUploadDocumentForSale","uploadDocumentForListing","processUploadDocumentForListing","uploadDocumentWithoutProcessing","processUploadDocumentWithoutProcessing","getDocumentPages","processGetDocumentPages","result204","result202","EventConfigClient","getVenueMapForEvent","eventId","processGetVenueMapForEvent","getVenueMapsByScoreModelForEvent","processGetVenueMapsByScoreModelForEvent","getListingConstraintsForEvents","eventIds","processGetListingConstraintsForEvents","getSellerEventMarketplaceEventInfo","processGetSellerEventMarketplaceEventInfo","updateSellerEventMarketplaceEventInfos","marketplaceEventInfos","processUpdateSellerEventMarketplaceEventInfos","getTagsForEvent","viagogoVirtualId","processGetTagsForEvent","getMarketTransactionsForEvent","topN","processGetMarketTransactionsForEvent","updateTagsForEvent","tags","processUpdateTagsForEvent","getInternalNotesForEvent","processGetInternalNotesForEvent","updateInternalNotesForEvent","internalNote","processUpdateInternalNotesForEvent","getLastReviewedDateTimeForEvents","processGetLastReviewedDateTimeForEvents","updateLastReviewedDateTimeForEvent","lastReviewedDateTime","processUpdateLastReviewedDateTimeForEvent","getSellerEventNotesByViagogoEventId","processGetSellerEventNotesByViagogoEventId","insertSellerEventNotes","content","processInsertSellerEventNotes","updateSellerEventGroupingMethods","groupingMethods","processUpdateSellerEventGroupingMethods","mergeSellerAccountEventSettingsForDelivery","sellerAccountEventSettings","processMergeSellerAccountEventSettingsForDelivery","getSellerAccountEventSettings","processGetSellerAccountEventSettings","FulfillmentProviderClient","getFulfillmentProviderSettings","processGetFulfillmentProviderSettings","toggleFulfillmentProviderSetting","fulfillmentProviderSellerUserId","newState","processToggleFulfillmentProviderSetting","InventoryEventDashboardClient","getEventWebsiteMetrics","queryId","timePeriod","processGetEventWebsiteMetrics","getEventDemandFactors","processGetEventDemandFactors","getSellerEventDashboardMetrics","processGetSellerEventDashboardMetrics","getBuyerEventDashboardMetrics","processGetBuyerEventDashboardMetrics","getEventSectionClearingPrices","processGetEventSectionClearingPrices","getEventSupplyMetrics","processGetEventSupplyMetrics","ListingClient","getListingByListingId","inventoryId","current","dataToInclude","item","processGetListingByListingId","getListingAvailableQuantitiesByListingIds","inventoryIds","processGetListingAvailableQuantitiesByListingIds","getListingByMarketplaceListingId","marketplaceListingId","processGetListingByMarketplaceListingId","getListingsForEvents","useReadonlyDB","doNotProcessListingGroups","processGetListingsForEvents","getListingsSectionalDataForEvents","processListingGroup","processGetListingsSectionalDataForEvents","getListingsCanBeWasted","processGetListingsCanBeWasted","getDuplicateListingsForListingId","processGetDuplicateListingsForListingId","getListingEnabledForAutoPricing","posEventIds","processGetListingEnabledForAutoPricing","updateAutoPricingEnabledForEvent","autoPricingState","processUpdateAutoPricingEnabledForEvent","createMarketplaceListings","marketplaces","processCreateMarketplaceListings","deleteMarketplaceListings","processDeleteMarketplaceListings","updateListingAdminHold","processUpdateListingAdminHold","updateListingIgnoreDuplicate","ignoreDuplicate","processUpdateListingIgnoreDuplicate","updateListing","processUpdateListing","updateListingPrices","listPrice","netProceedsFloor","processUpdateListingPrices","updateListingsPricingSettings","processUpdateListingsPricingSettings","mergeListings","processMergeListings","bulkMergeListings","processBulkMergeListings","getListingMergeSuggestionsByEvent","excludeHeldListings","processGetListingMergeSuggestionsByEvent","getListingMergeSuggestions","processGetListingMergeSuggestions","splitListings","processSplitListings","updateBarcodesForListing","barcodes","processUpdateBarcodesForListing","updateETicketsForListing","etickets","processUpdateETicketsForListing","updateMobileQRCodesForListing","mobileQRCodes","processUpdateMobileQRCodesForListing","updateExternalIdsForListing","externalIds","processUpdateExternalIdsForListing","updateTicketUrlsForListing","ticketUrls","processUpdateTicketUrlsForListing","updateProofOfPurchaseForListing","proofDocs","processUpdateProofOfPurchaseForListing","getPriceHistoryByListingId","processGetPriceHistoryByListingId","getCompListingsByEventId","currency","processGetCompListingsByEventId","getListingPriceCalculation","processGetListingPriceCalculation","exportListings","processExportListings","contentDisposition","get","fileNameMatch","exec","decodeURIComponent","blob","createSeatSaver","inputs","processCreateSeatSaver","deleteSeatSaver","processDeleteSeatSaver","batchSwapListingGroup","processBatchSwapListingGroup","reorderListingInGroup","processReorderListingInGroup","updateListingBroadcastSection","processUpdateListingBroadcastSection","updateListingTicketSection","processUpdateListingTicketSection","updateListingPricingSection","processUpdateListingPricingSection","updateListingAutoPricingSection","processUpdateListingAutoPricingSection","updateListingAutoPricingSectionV2","processUpdateListingAutoPricingSectionV2","updateListingTagSection","processUpdateListingTagSection","downloadMergedUserDocumentsPdf","processDownloadMergedUserDocumentsPdf","getListingStatusByListingId","processGetListingStatusByListingId","ListingExperimentClient","getListingExperimentsByViagogoEventId","processGetListingExperimentsByViagogoEventId","createListingExperiment","listingExperiment","processCreateListingExperiment","updateListingExperiment","processUpdateListingExperiment","restartListingExperiment","processRestartListingExperiment","stopListingExperiment","listingGroupId","processStopListingExperiment","ListingGroupClient","ungroupListings","processUngroupListings","setListingActiveInGroup","isActive","processSetListingActiveInGroup","createListingGroup","processCreateListingGroup","updateListingGroup","processUpdateListingGroup","getEmptyListingGroup","processGetEmptyListingGroup","autoCompSettingsPreview","processAutoCompSettingsPreview","autoGroupListingsPreview","processAutoGroupListingsPreview","autoGroupListingsPreviewV2","processAutoGroupListingsPreviewV2","addListingsToListingGroup","processAddListingsToListingGroup","getListingGroupCompData","processGetListingGroupCompData","ListingNoteClient","getAccessibleListingNotes","processGetAccessibleListingNotes","LoginClient","getLoginContext","returnUrl","processGetLoginContext","getLoginContextAfterAuthorization","processGetLoginContextAfterAuthorization","setActiveAccount","accountId","impersonatedUserId","processSetActiveAccount","logout","processLogout","MarketplacePaymentClient","getMarketplacePayments","processGetMarketplacePayments","getMarketplacePaymentById","marketplacePaymentId","processGetMarketplacePaymentById","getMonthsContainerMarketplacePayments","processGetMonthsContainerMarketplacePayments","getPaymentLinesWithSales","processGetPaymentLinesWithSales","convertMarketplacePaymentAmount","convertedPaymentAmount","convertedPaymentCurrencyCode","processConvertMarketplacePaymentAmount","addMarketplacePaymentLineToSaleLineItems","marketplacePaymentLineId","saleLineItems","processAddMarketplacePaymentLineToSaleLineItems","removeMarketplacePaymentLineFromSaleLineItems","processRemoveMarketplacePaymentLineFromSaleLineItems","linkMarketplacePaymentLine","processLinkMarketplacePaymentLine","unlinkMarketplacePaymentLine","processUnlinkMarketplacePaymentLine","MoneyClient","getConvertedMoneyAmount","valuesToConvert","processGetConvertedMoneyAmount","getAvailableCurrencies","processGetAvailableCurrencies","NotificationClient","getActiveNotifications","processGetActiveNotifications","getNotification","notificationId","processGetNotification","dismissNotification","processDismissNotification","PricingClient","mergeListingGroupPricingSettings","processMergeListingGroupPricingSettings","updateListingGroupPricingSettings","processUpdateListingGroupPricingSettings","getListingGroupAutoPricingSettings","processGetListingGroupAutoPricingSettings","mergeEventPricingSettings","processMergeEventPricingSettings","getEventAutoPricingSettings","processGetEventAutoPricingSettings","getAccountAutoPricingSettings","processGetAccountAutoPricingSettings","getEventSeatMapScoreOverrides","venueConfigId","processGetEventSeatMapScoreOverrides","getEventSeatMapScoreOverridesForSellerAccount","processGetEventSeatMapScoreOverridesForSellerAccount","getEventSellThroughRates","processGetEventSellThroughRates","getListingGroupSellThroughRates","processGetListingGroupSellThroughRates","getEventSellThroughRateTargets","processGetEventSellThroughRateTargets","setEventSellThroughRateTargets","sellThroughRateTargets","processSetEventSellThroughRateTargets","getAutoPricingStrategies","processGetAutoPricingStrategies","upsertAutoPricingStrategy","processUpsertAutoPricingStrategy","deleteAutoPricingStrategy","autoPricingSettingsCollectionId","processDeleteAutoPricingStrategy","setEventSeatMapScoreOverride","eventConfigScoreOverrideId","scoreModel","processSetEventSeatMapScoreOverride","upsertEventSeatMapScoreOverride","processUpsertEventSeatMapScoreOverride","deleteEventSeatMapScoreOverride","processDeleteEventSeatMapScoreOverride","downloadSeatScoreFile","processDownloadSeatScoreFile","uploadSeatScoreFile","toString","processUploadSeatScoreFile","resetListingAutoPricingSettingsInGroup","processResetListingAutoPricingSettingsInGroup","upsertAutoCompSettings","processUpsertAutoCompSettings","getAutoCompSettings","processGetAutoCompSettings","getListingAutoPricingSettings","processGetListingAutoPricingSettings","getVenueMapZoneConfigInfo","configId","processGetVenueMapZoneConfigInfo","getPricingConfigFromEventIds","processGetPricingConfigFromEventIds","setVenueZoneSelectedConfigType","venueZoneOverrideId","venueZoneConfigType","setMapAsDefault","processSetVenueZoneSelectedConfigType","getVenueMapZoneInfoOverrides","processGetVenueMapZoneInfoOverrides","getActiveVenueZoneMapSectionGroups","processGetActiveVenueZoneMapSectionGroups","upsertVenueZoneSectionGroupOverrides","processUpsertVenueZoneSectionGroupOverrides","getEventMapConfigMetadata","processGetEventMapConfigMetadata","PurchaseClient","getPurchaseOrderByPurchaseOrderId","processGetPurchaseOrderByPurchaseOrderId","getPurchaseOrdersByVendorOrderId","orderId","processGetPurchaseOrdersByVendorOrderId","getPurchaseOrders","processGetPurchaseOrders","getPurchaseOrdersWithTicketGroups","processGetPurchaseOrdersWithTicketGroups","getTicketGroupsForEvents","processGetTicketGroupsForEvents","getAccessibleVendors","getDeliveryOverride","getVendorAccountsCount","processGetAccessibleVendors","getAccessibleAccessControlProviders","processGetAccessibleAccessControlProviders","getAccessibleVendorAccounts","processGetAccessibleVendorAccounts","getVendorAccountDetails","purchaseOrderVendorAccountId","processGetVendorAccountDetails","getPurchaseOrderIdsUsingOrderId","processGetPurchaseOrderIdsUsingOrderId","getIsPurchasingIdsInUse","purchaseOrderVendorId","processGetIsPurchasingIdsInUse","getMonthsContainerPurchaseOrders","processGetMonthsContainerPurchaseOrders","getTimePeriodContainerPurchaseOrders","timePeriodType","processGetTimePeriodContainerPurchaseOrders","insertPurchaseOrder","isManual","processInsertPurchaseOrder","downloadPurchaseFileTemplate","includeEventIdFields","processDownloadPurchaseFileTemplate","updatePurchaseOrder","processUpdatePurchaseOrder","updatePurchasesQualityControlState","processUpdatePurchasesQualityControlState","getVendor","vendorId","processGetVendor","mergeVendor","vendor","processMergeVendor","deleteVendor","processDeleteVendor","mergeVendorAccount","vendorAccount","processMergeVendorAccount","deleteVendorAccount","vendorAccountId","processDeleteVendorAccount","getAllCurrencyConversionOverride","processGetAllCurrencyConversionOverride","insertCurrencyConversionOverride","conversionOverrideRequest","processInsertCurrencyConversionOverride","updateCurrencyConversionOverride","processUpdateCurrencyConversionOverride","deleteCurrencyConversionOverride","currencyConversionOverrideId","processDeleteCurrencyConversionOverride","getAccessiblePurchasePaymentMethods","processGetAccessiblePurchasePaymentMethods","getPurchasePaymentMethodsByName","paymentMethodName","processGetPurchasePaymentMethodsByName","insertPurchasePaymentMethod","processInsertPurchasePaymentMethod","updatePurchasePaymentMethod","processUpdatePurchasePaymentMethod","deletePurchasePaymentMethod","purchasePaymentMethodId","processDeletePurchasePaymentMethod","cancelPurchaseOrder","saleCancellationReason","processCancelPurchaseOrder","voidPurchaseOrder","processVoidPurchaseOrder","restorePurchaseOrder","processRestorePurchaseOrder","getDeliveryOverrideForNewTicketGroup","processGetDeliveryOverrideForNewTicketGroup","mergePurchaseEventOverrides","purchaseEventOverrides","processMergePurchaseEventOverrides","getPurchaseEventOverrides","processGetPurchaseEventOverrides","exportPurchases","selectedTicketGroupsOnly","processExportPurchases","ticketGroupId","ReportClient","getAvailableInventoryReportConfig","processGetAvailableInventoryReportConfig","upsertInventoryReportConfig","reportConfig","processUpsertInventoryReportConfig","upsertInventoryReportConfigOverride","reportConfigId","reportConfigOverride","processUpsertInventoryReportConfigOverride","getAvailableSaleReportConfig","processGetAvailableSaleReportConfig","upsertSaleReportConfig","processUpsertSaleReportConfig","upsertSaleReportConfigOverride","processUpsertSaleReportConfigOverride","deleteReportConfig","processDeleteReportConfig","getListingReportMetrics","maxResultsize","processGetListingReportMetrics","getSaleReportMetrics","processGetSaleReportMetrics","getReportSnapshotInfos","processGetReportSnapshotInfos","downloadSaleReportMetrics","processDownloadSaleReportMetrics","downloadListingReportMetrics","processDownloadListingReportMetrics","ReportV2ConfigClient","getAvailableCommissionReportConfig","processGetAvailableCommissionReportConfig","upsertReportConfigOverride","processUpsertReportConfigOverride","ReportV2Client","getInventoryReportMetrics","processGetInventoryReportMetrics","getInventoryReportSummary","processGetInventoryReportSummary","getSaleReportSummary","processGetSaleReportSummary","getCommissionReportMetrics","processGetCommissionReportMetrics","getCommissionReportSummary","processGetCommissionReportSummary","fileType","downloadCommissionReportMetrics","processDownloadCommissionReportMetrics","SaleClient","getSalesForEvents","requireEventIds","processGetSalesForEvents","getUnableToProcessSales","processGetUnableToProcessSales","getSalesByMarketplaceSaleId","marketplaceSaleId","processGetSalesByMarketplaceSaleId","getSaleBySaleId","processGetSaleBySaleId","confirmAllocationSale","seatingToAllocate","skipAllocationValidation","processConfirmAllocationSale","cancellationReason","processRejectSale","deallocateSale","adminHold","processDeallocateSale","saveETicketAssignments","eticketImages","processSaveETicketAssignments","saveQRCodeAssignments","qrCodes","processSaveQRCodeAssignments","updateBarcodesForSale","ticketBarcodes","processUpdateBarcodesForSale","saveTicketTransferInfo","processSaveTicketTransferInfo","resetFulfillment","removeArtifacts","hasResetFulfillmentKeepArtifactsFeature","processResetFulfillment","markAsFulfilled","processMarkAsFulfilled","getBarcodesAlreadyInUse","processGetBarcodesAlreadyInUse","getTicketExternalIdsAlreadyInUse","processGetTicketExternalIdsAlreadyInUse","getTicketUrlsAlreadyInUse","urls","processGetTicketUrlsAlreadyInUse","expireHold","processExpireHold","getSeatingsForSaleAllocation","allPossibleSeatings","isAllocateSingleTickets","processGetSeatingsForSaleAllocation","exportSales","processExportSales","updateSale","saleInput","processUpdateSale","updateSaleIsNoFulfill","processUpdateSaleIsNoFulfill","mergePosManagedMarketplaceSale","processMergePosManagedMarketplaceSale","createMarketplaceSale","processCreateMarketplaceSale","getAllAvailableBuyers","processGetAllAvailableBuyers","wasteListingTickets","processWasteListingTickets","unwasteSale","processUnwasteSale","getSaleLineItemsBySaleId","processGetSaleLineItemsBySaleId","SearchClient","getPurchaseSearchConfigs","includeAllUsers","processGetPurchaseSearchConfigs","getPurchaseSearchResult","searchConfigId","processGetPurchaseSearchResult","savePurchaseSearchResult","r","processSavePurchaseSearchResult","getSaleSearchConfigs","processGetSaleSearchConfigs","getSaleSearchResult","processGetSaleSearchResult","saveSaleSearchResult","processSaveSaleSearchResult","getInventorySearchConfigs","processGetInventorySearchConfigs","getInventorySearchResult","processGetInventorySearchResult","saveInventorySearchResult","processSaveInventorySearchResult","deleteSearchConfig","processDeleteSearchConfig","SellerAccountClient","getCurrentUserSellerAccounts","processGetCurrentUserSellerAccounts","getSellerUsersForSellerAccount","processGetSellerUsersForSellerAccount","getSelleRolesForSellerAccount","processGetSelleRolesForSellerAccount","getAllSellerPermissions","processGetAllSellerPermissions","updateSellerUser","processUpdateSellerUser","getSellerUser","stubHubLoginId","processGetSellerUser","mergeRolesToSellerUser","processMergeRolesToSellerUser","activateUserForSellerAccountByEmail","email","processActivateUserForSellerAccountByEmail","activateUserForSellerAccount","processActivateUserForSellerAccount","deactivateUserForSellerAccount","processDeactivateUserForSellerAccount","getSyncCenterSettings","processGetSyncCenterSettings","mergeSyncCenterSettings","settings","processMergeSyncCenterSettings","mergeAccountAutoPricingSettings","processMergeAccountAutoPricingSettings","getAutoCurrencyConversionSettings","processGetAutoCurrencyConversionSettings","mergeAutoCurrencyConversionSettings","processMergeAutoCurrencyConversionSettings","getCustomTimeZoneSettings","processGetCustomTimeZoneSettings","mergeCustomTimeZoneSettings","processMergeCustomTimeZoneSettings","updateMarketplaceSellerAccountPassword","password","processUpdateMarketplaceSellerAccountPassword","createSellerRole","processCreateSellerRole","updateSellerRole","processUpdateSellerRole","deleteSellerRole","roleId","processDeleteSellerRole","initiateTradeDeskReset","username","processInitiateTradeDeskReset","resetTradeDeskPassword","processResetTradeDeskPassword","SellerSupportCaseClient","getSellerSupportCaseNotesByCaseId","sellerSupportCaseId","markAsRead","processGetSellerSupportCaseNotesByCaseId","getSellerSupportCases","processGetSellerSupportCases","createSellerSupportCase","processCreateSellerSupportCase","createSellerSupportCaseReply","noteContent","attachments","item_","processCreateSellerSupportCaseReply","updateSellerSupportCasesReadDate","sellerSupportCaseIds","readDate","processUpdateSellerSupportCasesReadDate","retrieveSellerSupportCaseNoteAttachments","attachmentRequests","retrieveContent","processRetrieveSellerSupportCaseNoteAttachments","SellerUserClient","getSellerUserSetting","userSetting","currentLoginUserOnly","processGetSellerUserSetting","getSellerUserSettings","userSettings","processGetSellerUserSettings","setSellerUserSetting","userSettingValue","processSetSellerUserSetting","getCustomInventoryQuickFiltersSetting","processGetCustomInventoryQuickFiltersSetting","setCustomInventoryQuickFiltersSetting","value","processSetCustomInventoryQuickFiltersSetting","getCustomOnSaleEventQuickFiltersSetting","processGetCustomOnSaleEventQuickFiltersSetting","setCustomOnSaleEventQuickFiltersSetting","processSetCustomOnSaleEventQuickFiltersSetting","getCustomSalesQuickFiltersSetting","processGetCustomSalesQuickFiltersSetting","setCustomSalesQuickFiltersSetting","processSetCustomSalesQuickFiltersSetting","getCustomPurchasesQuickFiltersSetting","processGetCustomPurchasesQuickFiltersSetting","setCustomPurchasesQuickFiltersSetting","processSetCustomPurchasesQuickFiltersSetting","getCustomMarketplacePaymentsQuickFiltersSetting","processGetCustomMarketplacePaymentsQuickFiltersSetting","setCustomMarketplacePaymentsQuickFiltersSetting","processSetCustomMarketplacePaymentsQuickFiltersSetting","getAvailableReleaseNoteInfos","getUnreadOnly","processGetAvailableReleaseNoteInfos","getHasReleaseNotesUnread","processGetHasReleaseNotesUnread","getReleaseNoteHtmlByReleaseNoteIds","releaseNoteIds","processGetReleaseNoteHtmlByReleaseNoteIds","getAllTutorialItems","processGetAllTutorialItems","getTutorialItemContents","tutorialItemIds","processGetTutorialItemContents","TagClient","getTagsByEntityTypeId","includeInReport","processGetTagsByEntityTypeId","getTagsWithValueByEntityTypeId","processGetTagsWithValueByEntityTypeId","upsertEntityTagsMetadata","processUpsertEntityTagsMetadata","deleteEntityTagsMetadata","tagNames","processDeleteEntityTagsMetadata","TicketClient","getAllDeliveryTypeTicketTypeMappings","processGetAllDeliveryTypeTicketTypeMappings","mergeTicketGroups","processMergeTicketGroups","UserGroupClient","getUserGroups","processGetUserGroups","insertUserGroup","userGroupName","userGroupDescription","sellerUserIds","processInsertUserGroup","updateUserGroup","userGroupId","processUpdateUserGroup","deleteUserGroup","processDeleteUserGroup","ActionOutboxEntityType","Sale","Listing","Purchase","SellerSupportCase","Document","SellerEvent","InboundEmail","TicketGroup","ActionType","SaleConfirm","SaleReject","SaleUploadBarcodes","SaleUploadTicketUrls","SaleUploadProofOfTransfer","SaleUploadEtickets","SaleMarketplaceInsert","SaleMarketplaceUpdate","SaleBroadcastConfirmSale","SaleBroadcastRejectSale","SaleBroadcastUploadBarcodes","SaleBroadcastUploadETickets","SaleBroadcastUploadTransferProof","SaleBroadcastUploadTransferUrls","SaleViewed","SaleDeallocate","SaleMarketplaceUpdateTicketType","SaleHoldTickets","SaleHoldExpire","SaleHoldCreate","SaleUploadTransferProofId","SaleBroadcastUploadTransferProofId","SaleUpdateTicketType","SaleTicketMasterBarcodeTransfer","SaleCostUpdate","SaleCostInsert","SaleCostDelete","SaleBroadcastUpdateTicketType","SaleConfirmTransferWithoutProof","SaleResetFulfillment","SaleTotalProceedsUpdate","SaleDocumentUploadActivity","SaleFulfillWithoutArtifacts","SaleNoFulfillUpdate","SaleTicketsAllocatedAction","SaleCommissionsUpdate","SaleRemoveTicketUserDocuments","SaleUpdatePaymentState","ListingInsert","ListingUpdateUnitNetProceeds","ListingUpdateAllInPrice","ListingUpdateDeliveryType","ListingUpdateSplitType","ListingUpdateInHandDate","ListingUpdateHideSeats","ListingSplit","ListingMerge","ListingBroadcast","ListingUnbroadcast","ListingMarketplaceInsert","ListingMarketplaceUpdate","ListingMarketplaceDelete","ListingUpdatePricerUserId","BroadcastMarketplaceListing","UnbroadcastMarketplaceListing","ListingBroadcastMergeListing","ListingBroadcastSplitListing","ListingBroadcastUpdateInHandDate","ListingBroadcastUpdateAllInPrice","ListingBroadcastUpdateUnitNetProceeds","ListingBroadcastUpdateSplitType","ListingBroadcastUpdateDeliveryType","ListingViewed","ListingDelete","ListingUpdateQuantity","ListingBroadcastUpdateQuantity","ListingUpdateListingNotes","ListingBroadcastUpdateListingNotes","ListingUpdateSeating","ListingBroadcastUpdateSeating","ListingPreDeliverBarcodes","ListingPreDeliverETickets","ListingRebroadcast","ListingSyncUpdate","ListingUpdateNetProceedsFloor","ListingAutoPricingConfig","ListingAutoPricingResultUpdate","ListingPreDeliverTicketExternalIds","ListingPreDeliverTicketUrls","ListingMarketplaceSeatingOverrideUpdate","ListingRemoveTicketBarcodes","ListingRemoveTicketUserDocuments","ListingUploadVerificationDocumentAction","ListingCompsViewed","ListingOfflineSaleAdded","ListingDocumentViewed","ListingDocumentDownloaded","ListingBroadcastUploadVerificationDocument","ListingBroadcastUpdateHideSeats","ListingDocumentUploadActivity","ListingUpdateUnitCost","ListingUpdateInternalNotes","ListingNoFulfillUpdate","ListingUpdateAdminHold","ListingListingGroupUpdate","ListingSaleConfirm","ListingSaleDeallocate","ListingSaleMarketplaceInsert","ListingUpdateTopTicketType","ListingUpdateDuplicateAttribute","SellerSupportCaseCreate","SellerSupportCaseReply","PurchaseInsert","PurchaseTicketGroupsMerge","PurchasePaymentsMerge","PurchaseCostsMerge","PurchaseUpdate","PurchaseTicketGroupUpdate","PurchaseTicketGroupInsert","PurchaseTicketGroupDelete","PurchasePaymentUpdate","PurchasePaymentInsert","PurchasePaymentDelete","PurchaseCostUpdate","PurchaseCostInsert","PurchaseCostDelete","PurchaseCancel","PurchaseVoid","PurchaseResetListings","PurchaseOrderQualityStateUpdate","SaleDocumentUpload","ListingDocumentUpload","InboundEmailReprocess","AuditActionType","TagCreate","TagUpdate","TagDelete","TagTypeCreate","TagTypeUpdate","SaleInternalNotesUpdate","SaleInternalNotesInsert","ListingSellerEventUpdate","PurchaseCommissionUpdate","PurchaseCommissionInsert","PurchaseInternalNotesUpdate","PurchaseInternalNotesInsert","MarketplaceOperationResultState","Succeeded","FailedWithRetryableError","FailedWithNonRetryableError","FailedAndRequiresSellerAction","NotImplemented","Skipped","ApiEventStatus","Normal","Postponed","Cancelled","Rescheduled","Relocated","RelocatedAndRescheduled","Draft","Deleted","Contingent","TopLevelCategory","Theatre","Sports","Concert","Festival","DocumentType","ETicket","TicketTransfer","AirBill","PKPass","GoogleWallet","ListingVerification","QRCode","CoBrandId","Viagogo","TicketUtil","Starburst","StubHub","Feature","AutoPricing","HomePageActivityLog","OneTicketTransferApi","AdvanceAutopricingModes","CompListingMode_ParentListing","ExportInventory","ListingIdForCompListings","InventoryEventRecentTransactions","ScaledSeatScore","SaleEditChargesAndCredits","SeatSaver","MarketplacePaymentTerms","BulkDownloadEventPrompt","ConfirmTransferWithoutProof","TeamManagement","BezierGraphControlPointsManager","UndercutByRankListingGroup","UpdatedVenueMapPrompt","ReportSnapshot","ReportFilterByCommissionUser","DisplayBuildVersion","OverrideDailyFxRate","PricedAtZeroFilter","POSTimezone","PricingCatchup","PriceByWebsitePrice","InventoryTileMetricV2","ExcludeFanInventory","PurchaseSettingsTab","CurrencyConversionSettingsTab","SalesInEventPage","BulkUpdateInternalNotes","AutoPriceFrequency","TagTypesUserGroup","DisableAutoSourcing","FilterPOByPaymentMethodId","ArAgingReport","MarketplacePaymentLinesDisplay","InventoryEventPageV2","DynamicPricingBySTR","GroupingDrip","AutoPricingGroupSettings","ReportMaxRowLimit","SaleSkyboxNotesSection","EnableDisableMarketplaces","SaleMarkedAsFulfilled","AutoCompAndGroup","ExcludeFullySoldInGroup","ReportingV2","AutoFulfillSetting","BulkCancelVoidPurchase","PurchasePredelivery","PricingSettingsInTable","VenueMapCtrlPlusM","ScoreSectionRowTable","BulkEditInPurchaseEvent","HandlingListingSignalR","UpdateSalesOfListingsDeliveryInfo","VenueMapRectSelect","ViewListingOriginalSeating","BulkDeleteTicketGroup","FulfillmentProviders","EventDeliveryStrategy","EventListingTableHotkeys","AutoGroupAndCompV2","ListingGroupingMethods","SidePanelWidths","GroupSoldListings","PricingV2DemandDashboard","TablePinActionColumn","FilterEventByLocation","CustomVenueRows","EventStatusDisplay","BulkActionGroupListings","SellerAccountPurchaseVendorOverride","PricingABTest","EnableNativeSyncToggle","BulkUpdateIndividualTicketGroup","AutoCompRankOverrides","VendorAccountV2","UpgradedGroupListingView","FullPageEventView","SaleSeatsSoldAs","UpcomingOnSalesPage","RemoveUiGateOnUnmap","VendorAccountDeliveryStrategy","SortListingsInGroup","ReorderListingInGroup","EditMapInListingTab","BackfillDeliveryStrategyInventoryEvent","BackfillDeliveryStrategyPurchaseEvent","BackfillDeliveryStrategyVendorAccount","BackfillDeliveryStrategyInventoryEventToSales","BackfillDeliveryStrategyPurchaseEventToSales","BackfillDeliveryStrategyVendorAccountToSales","FullPageEventViewEntitySelection","CompQuantitiesFilter","FullPageEventViewSideTableBulkEdit","DefaultNotToMergeHoldListings","CustomDeliveryType","ListingNotesAdditionalInfo","TicketTypeIconOverlay","FullPageEventViewSideTableFilters","BulkEditsToListingGroups","SplitListingToOriginal","ExportPurchases","GroupedActivityLog","ExcludeDefects","DownloadETickets","AllocateSingleTickets","PdfViewerToolbar","ResetFulfillmentKeepArtifacts","FufillmentMismatchDisplay","DisplayTicketOrderedByPriority","ShowSeatTraitOnMerge","EventMultiScreen","DefaultFilterRows","RowSeatColumnSalePurchase","ReconcileOrphanTickets","UseSelectedRowIdForMarketplaceSeatingOverride","SelectDeliveryStrategyInSeatSaver","ListingGroupCompUi","YourListingsInComps","NewListingDefaultToSpeculativeRowId","UploadTicketFilesFlowV2","RightNowStatsInMap","ConsignmentDeal","FilterByCurrencyCodeMulti","FilterByPaymentCurrencyCodeMulti","AutoPricingTabInAccountSettings","BulkConvertPaymentLines","AttemptFulfillWhenToggleOnAutoFulfill","ConvertPaymentLines","SaleDetailDisplayTicketUrl","PreventInitialBroadcastForXDays","AutoCompPersistAllConfigChanges","ManageMarketplacePayment","PurchasePaymentColumns","HideAutoCompOnlyBulkEditOption","PreventDraftPOinUI","MarkPOAsPaid","MarketplacePaymentsTab","AllowSeatScoreCompListingMode","IntelligiblePricePreview","DemandDashLastDaySupplyMetrics","IntelligibleAutoPricingSettings","LinkEventName","GroupingWizard","IntelligiblePricePreviewForListingGroup","SimplifiedAutoPricingUiV2","MoveToGroup","IgnoreDuplicate","QuickFloorToolbar","BulkUpdatePurchaseCurrency","BulkWasteTickets","MarketplacePaymentsFilters","ListingLoadBySection","AutoPricingBulkEditToDrawerWithPreview","PurchasePaymentMethodEdit","CancelSaleKeepTickets","ConvertSaleCurrency","DisplayDeactivatedUser","SVGVenueMapV3","LockCommissionsOnPo","SearchView_Purchase","SearchView_Inventory","SearchView_Sale","SaleEarningsTableV2","SectionalUpdateListingInBulk","SectionalLoadInListingTable","SaleDetailsMarketplaceTerms","UserSearchBar","CleanupWhiteSpace","AddMarketplaceChargeCreditToSale","LinkPaymentLine","PricingSectionSettingsAcrossEvents","PurchaseCommissionFilterInSearchView","SaleCancellationReason","SaleHasMarketplaceProblem","HideSalePaymentReceivedFilter","CondensedPreviewTabsAndSingleListing","MarketplacePaymentFilterUnlinked","BulkMarkSalesAsPaid","CatalogCacheStrategyV2","MultiTicketGroupTable","TableColumnFilter","EventDiscoveryPage","SeatTraitsColumn","EventSelectorFilter","BlockEventDiscoveryData","BulkUploadPurchaseV2Perf","ColumnFilterSearchView","ListingTableSplitTypeColumn","BulkUploadPurchaseTags","CompListingDisplayUpdate","CatalogMetricsV2","HideSalePaymentConversionSection","FlashSaleDiscountRestriction","EventMapRibbonYolo","ReportV2Builder","ReportV2CommissionsReport","KnowledgePortalPage","KnowledgePortalPageTestData","SearchView_ReadOnlyDB","BulkEditPricingSettingsUpdate","HomePageNotifications","EventsDetailedViewGrouping","GlobalReportV1RedirectV2","BlockInventorySummaryStats","GroupListingsWithRangedQuantityCost","AllocateSingleTicketListingRestrictionRemoval","OnePagerGroupSelectionFunctionality","ConsignmentFilterPurchaseSearchView","HideNavAndFilterBars","ReportSinglePagedV1V2","BackfillListingTicketTypeOverrideToSale","AutomatiqUnprocessedOrdersHoldingPen","ReEvaluatePredeliveryStateAndTopTicketType","AddPurchasePaymentRefundStates","PurchasePaymentConversion","EnforcePurchasePaymentCurrency","MarketplacePaymentConversion","WasteSale","UseShLnLookup","BlockPricingCompListingEndpoint","BlockPricingCalculationEndpoint","BlockEventDashboardEndpoint","AlwaysGetEventLevelSettingsFromAutoPricer","WriteAutopriceConfigUpdateToSbt","SetAsDefaultAllNewEvents","AccountLevelFeatureCheck","FeatureState","Disabled","Restricted","GeneralAvailability","LimitedAvailability","InDevelopment","ListingDetailDataField","Basic","Tickets","Pricing","Tags","ListingStatus","FullySold","DelistingPending","DelistingFailed","Delisted","ListingPending","ListingFailed","Listed","ListingBroadcastStatus","Unknown","Broadcast","BroadcastFailed","BroadcastWithError","Unbroadcast","UnbroadcastFailed","UnbroadcastWithError","PreDeliveryState","NotPreDelivered","PreDelivered","DeliveryType","InApp","PDF","Paper","MemberCard","Wallet","Custom","TicketType","ETicketUrl","Transfer","Barcode","Season","SMPWallet","ListingActionType","Split","SplitToOriginal","AddOfflineSale","AddMarketplaceSale","PredeliverBarcodes","PredeliverETickets","PredeliverQRCode","PredeliverExternalIds","PredeliverTicketUrls","RedeliverBarcodes","RedeliverETickets","RedeliverQRCode","RedeliverExternalIds","RedeliverTicketUrls","DownloadUserDocuments","FullySoldNoAction","AddAdminHold","RemoveAdminHold","Waste","Marketplace","VividSeats","SeatGeek","TickPick","Ticketmaster","Offline","AXS","FanXchange","Gametime","TicketEvolution","TicketNetwork","Automatiq","Lyte","GoTickets","B2BSales","TicketNetworkMercury","BroadcastErrorCode","UpdatePrice","UpdateTicketType","UpdateSplitType","UpdateInHandDate","SplitListing","MergeListing","BroadcastListing","UnbroadcastListing","UpdateQuantity","HideSeats","UpdateListingNotes","UpdateSeating","MarketplaceResaleRestricted","MarketplaceManifestMismatch","MarketplacePriceBelowFloor","PendingProofState","PendingProof","PendingReview","Approved","QualityControlState","Pending","Rejected","VenueMapSectionType","ForcedRow","OptionalRow","NoRow","GeneralAdmission","NoRowPairs","OptionalRowPairs","ForcedRowPairs","GeneralAdmissionWithQueueNumber","GeneralAdmissionStanding","GeneralAdmissionSeating","TagsValueType","String","Decimal","Int","Boolean","Json","Url","Date","POSUser","Vendor","UserGroup","SplitType","Any","None","AvoidOne","AvoidOneAndThree","Pairs","AutoPricingUndercutMode","Simple","RowExtrapolation","Deal","AutoPricingCompListingMode","QualityScore","SameSection","SameZone","SameEvent","ParentListing","AutoPricingOutlierMode","StandardDeviations","SkipLogic","KthLowest","AutoPricingResultType","PriceSuccess","PriceBelowFloor","InsufficientComparables","PriceBelowMaxAllowedDrop","PriceAboveCeiling","MissingUnitCost","MissingSeatScore","MissingZone","CannotCalculateUndercut","EffectiveCeilingBelowFloor","PriceHitHardFloor","PriceHitRelativeFloor","PriceHitMaxAllowedDrop","ConfigRowMissing","SectionUnmapped","ListingNoteType","Defect","RestrictionOnUse","Perk","Information","ConnectedSeller","InternallyGenerated","PointOfSalePaymentState","Unpaid","Queued","Paid","PartiallyPaid","PendingReversal","Reversed","MarketplacePaymentState","Ineligible","MarketplaceFulfillmentState","Processing","PendingPickup","InTransit","Fulfilled","Failed","PendingReshipment","PointOfSaleFulfillmentState","Resetted","SaleActionType","Confirm","Fulfill","Reject","Deallocate","ExpireHold","Refulfill","EditOffline","Allocate","ResetFulfillment","RejectAllocation","ConfirmAllocation","MarkAsFulfilled","Unwaste","PointOfSaleSaleStatus","PendingConfirmation","PendingFulfillment","ProcessingFulfillment","FulfillmentFailed","PendingRejection","Hold","CancelledHold","PendingAllocation","ProvisionalAllocation","Wasted","MarketplaceContractState","Provisional","CancelledProvisional","Contracted","MarketplaceDispute","Complete","CancelledUnknownFault","CancelledSellerFault","CancelledMutual","CancelledMarketplaceFault","EventCancellation","SellerFault","MarketplaceFault","NoFault","Other","PurchaseOrderState","Active","Void","Drafted","PurchasePaymentStatus","RefundNeeded","Refunded","PartiallyRefunded","PurchasePaymentMethodType","PayPal","ECheck","Check","MoneyOrder","Card","Cash","Credit","COD","BankTransfer","DebitCard","CreditMemo","DebitNote","TransactionAggType","SellerId","CampaignId","AdGroupId","AutoPoInboundEmailClassificationType","NewPurchaseOrder","ExistingPurchaseOrder","Junk","OneTimePass","Password","TicketsAvailable","PurchaseCancelled","EventCancelled","EventPostponed","EnjoyTheEvent","TransferSent","TransferAccepted","TransferExpired","NewSale","ConfirmationDeadline","ShippingDeadline","SaleCancelled","OtherMarketplaceContact","RelativeTimeRoundingMode","Day","Week","Month","Year","InventoryViewMode","TileView","MetricView","FlattenedView","EventUnpricedStatus","AllUnpriced","NoneUnpriced","AnyUnpriced","EventTimeFrameFilter","Future","Past","EventSort","MainDisplay","BulkEditStep","Initializing","InProgress","Done","DoneWithRetryableEntities","PricingFloorCeilingAdjustmentType","MarketPrice","UnitCost","CurrentFloor","GroupingType","Zone","Section","Row","SeatScore","Quantity","BucketType","Clusters","SameSize","RowGroupSetting","SingleTwoToFiveSixPlus","OneToFiveSixPlus","OneToTenElevenPlus","AllRows","OneTwoToFiveSixToTwelveThirteenPlus","VenueZoneConfigType","Amphitheater","ConcertsSectionsBehindStage","SportsOrConcertsWith360","ScoreModel","Model1","Model2","Model3","Model4","VenueGeometry","MergedVenueGeometry","Bezier","AdvancedVenueGeometry","BespokeBaseball","SqsClassifier","BulkActionType","GroupListings","ChangeEvent","AdminHold","CancelPurchase","DeleteTicketGroup","UploadPurchaseFile","BackfillDeliverySettings","ConvertPurchasePayment","WasteTickets","UpdateBroadcastSettings","UpdatePrices","UpdateTagValues","UpdatePriceFloorCeiling","UpdateAutoPricingSettings","UpdateGeneralSettings","UpdateMarketplaceSeating","UpdateTicketTypeRules","UpdateBuyerCommissions","UpdateInternalNotes","UpdateIsNoFulfill","UpdateDeliveryType","UpdateSeatTraits","UpdateMarketplacePrices","UpdatePurchaseCurrency","DeleteSeatSavers","RemovePredelivery","UngroupListings","EditListingGroupSetting","MarkPurchaseAsPaid","MarkSaleAsPaid","CancelSale","PurchaseViewMode","EventTileView","SalesViewMode","SaleLineItemStatus","SaleCostType","Charge","Proceeds","Taxes","SaleLineItemChargeReason","CancelledProceeds","DroppedOrderPenalty","Compensation","SaleLineItemCreditReason","ReversedPenalty","ReversedCharge","ProceedRepayment","MarketplacePaymentLineType","FullPrice","SellerFee","Penalty","AlternativeTickets","OrderNotFulfilled","CancelledEvent","WitheldFunds","LastMinuteSalesLateDelivery","ExpiredShippingLabel","DeliveryMethodChange","BuyerDeniedEntry","WrongTicketsReturnShippingCost","EarlyShippingLabelGeneration","WrongTrackingNumber","ExcessiveFailureRate","SellerError","AlternativeTicketsBuyerCompensation","RAGSellerFaultNoResponse","OverchargedSeller","ShippingRefund","SellerRelationship","RAGDeliveryDispute","CSError","LMSError","TaxRefund","AdCampaignState","Paused","Archived","AdGroupState","EventGroupingType","Performer","Venue","EventGroupingSortBy","Name","OnSaleEventViewMode","LogLevel","Trace","Verbose","Warning","Critical","EventWebsiteMetricsTimePeriod","OneHour","OneDay","EventDemandFactorType","Opponent","Weather","Standing","Stakes","SpotifyPopularity","HomeTeamOdds","SellerEventDashboardMetricsTimePeriod","Last7Days","AllTime","EventSupplyMetricsTimePeriod","LastDay","LastSevenDays","LastNinetyDays","ArtifactType","TicketUrl","ExternalId","TransferProof","GroupType","Invisible","Inactive","Leader","Permission","Sales_ViewAll","Sales_ViewRecent","Sales_ViewRecentFromExternalMarketplace","Sales_ConfirmReject","Sales_Fulfill","Sales_CreateForExternalMarketplaces","Sales_ViewProceeds","Sales_ViewRecentProceeds","Sales_ViewCostAndMargin","Sales_ViewPaymentState","Sales_ViewFulfillmentArtifacts","Sales_ManageHold","Sales_AddTagType","Sales_UpdateTags","Sales_ViewSalesOnIsPricerOf","Sales_UpdateSalesInfo","Sales_UpdateSalesInfoOnIsPricerOf","Sales_UpdateSalesInfoOnIsFulfillerOf","Sales_FulfillOnIsFulfillerOf","Sales_ViewSalesOnPurchasedBy","Sales_UpdateSaleOnPurchasedBy","Sales_FulfillOnPurchasedBy","Sales_FulfillOnPricerOf","Sales_UpdateTagsOnPurchasedBy","Sales_UpdateTagsOnIsPricerOf","Sales_UpdateTagsOnIsFulfillerOf","Sales_ConfirmRejectOnIsPricerOf","Sales_ConfirmRejectOnPurchasedBy","Sales_ViewFulfillmentArtifactsOnPurchasedBy","Sales_ViewFulfillmentArtifactsOnIsPricerOf","Sales_ConfirmRejectOnIsFulfillerOf","Sales_ViewSalesOnIsFulfillerOf","Sales_ViewFulfillmentArtifactsOnIsFulfillerOf","Sales_CreateOfflineSale","Sales_ManageOfflineSale","Sales_ManageOfflineSaleCreatedBy","Sales_ConfirmTransferWithoutProof","Sales_ResetFulfillment","Inventory_ViewAll","Inventory_ViewRecent","Inventory_ViewRecentFromExternalMarketplace","Inventory_ViewAllMarketplaceAttributes","Inventory_ViewExternalMarketplaceAttributes","Inventory_ViewFulfillmentArtifacts","Inventory_SetPrice","Inventory_SetPriceOnPurchasedBy","Inventory_SetPriceOnIsPricerOf","Inventory_Predelivery","Inventory_BroadcastUnbroadcast","Inventory_BroadcastUnbroadcastOnPurchasedBy","Inventory_EditPricing","Inventory_UpdateListingInfo","Inventory_UpdateListingInfoOnPurchasedBy","Inventory_AddTagType","Inventory_UpdateTags","Inventory_UpdateTagsOnPurchasedBy","Inventory_ViewListingOnIsPricerOf","Inventory_UpdateListingInfoOnIsPricerOf","Inventory_UpdateTagsOnIsPricerOf","Inventory_PredeliveryOnPurchasedBy","Inventory_PredeliveryOnIsPricerOf","Inventory_ViewListingsOnPurchasedBy","Inventory_ViewFulfillmentArtifactsOnPurchasedBy","Inventory_ViewFulfillmentArtifactsOnIsPricerOf","Inventory_BroadcastUnbroadcastOnIsPricerOf","Inventory_AddSeatSaver","Inventory_ManageSeatSaver","Inventory_ManageSeatSaverCreatedBy","Inventory_UpdateDeliveryStrategy","Inventory_UpdateDeliveryStrategyOnIsPricerOf","Inventory_UpdateDeliveryStrategyOnPurchasedBy","SellerAccount_Admin","SellerSupportCase_Create","SellerSupportCase_View","Purchases_ViewAll","Purchases_ViewRecent","Purchases_Edit","Purchases_EditOwned","Purchases_Create","Purchases_AddTagType","Purchases_UpdateTags","Purchases_UpdateTagsOwned","Purchases_ViewOwned","Purchases_UpdateBuyerCommission","Purchases_UpdateBuyerCommissionOwned","Purchases_UpdateDeliveryType","Purchases_UpdateDeliveryTypeOwned","Purchases_UpdateCustomDeliveryType","Purchases_UpdateCustomDeliveryTypeOwned","Purchases_UpdateSeatTraits","Purchases_UpdateSeatTraitsOwned","Purchases_LockUnlockCommission","Purchases_LockUnlockCommissionOwned","Purchases_EditVendor","Events_ViewAll","Events_AddTagType","Events_UpdateTags","Events_SetPrice","Events_Edit","Accounts_ViewAll","Account_SetPrice","TicketGroups_ViewAll","Webhook_View","Webhook_Create","Webhook_Edit","EventConfig_Edit","EventConfig_Create","EventConfig_View","Reports_CreateReports","Reports_UpdateReports","Reports_UpdateReportsOwned","Reports_ViewInventoryReports","Reports_ViewSalesReports","Reports_ViewAll","Reports_ViewGlobalReports","Accounting_ViewAll","Accounting_ViewPaymentsOnSale","Accounting_ViewStubhubPayments","AdPlatform_Edit","General_ViewReleaseNotes","General_ViewNotifications","MarketplacePaymentTerm","PaymentUponSaleConfirmation","PaymentUponDelivery","PaymentPostEvent","NotificationType","SaleNew","SaleFulfilmentFailed","SaleMarketplaceCancelled","ListingHideSeatsFailed","ListingUpdateAllInPriceFailed","ListingUpdateInHandDateFailed","ListingUpdateSplitTypeFailed","ListingUpdateDeliveryTypeFailed","ListingUpdateUnitNetProceedsFailed","ListingBroadcastFailed","ListingUnbroadcastFailed","ListingMergeFailed","ListingSplitFailed","ListingPriceUpdate","AutopriceBelowFloor","AutopriceInsufficientCompListings","AutopriceFirebrake","SellerSupportCaseNewReply","NotificationState","SectionGroupAreaType","Center","LeftRight","FarLeftFarRight","Front","Sides","SideT1","SideT2","Ends","Rear","Corners","PurchaseOrderCostType","Tax","Shipping","CreditCardFee","BulkDiscount","DealType","Sor","Guaranteed","DealSplitType","DealThresholdSplitDirection","Above","Below","PurchasingIdInUseResultType","NoneMatching","SameOrderId","SameOrderIdAndVendorId","TimePeriodType","Daily","Weekly","Monthly","PaymentMethodNameKnownRegex","All","AllAmex","AllVisa","AllMastercard","ReportGroupBy","Event","EventGenre","EventCountry","EventCity","SeatingSection","SeatingRow","SaleMarketplace","SaleMonth","SaleWeek","SaleDay","SaleId","ListingId","PurchaseId","PurchasedBy","PricedBy","FulfilledBy","SaleIdTicketIdCommissionUser","ArAgingMarketplace","ReportWidgetTypesInventory","TicketsListedAndSold","SalesAndMargin","AverageTicketPrice","ListingReportMetricColumn","ReportFileType","CSV","XLSX","ReportValueType","Guid","Integer","Money","DateTime","User","DateTimeList","IntegerList","GuidList","UserList","StringList","BooleanList","TransferTicketType","ImageProof","URL","IdProof","ApiTransferTicketmaster","ApiTransfer1Ticket","Role","Owner","Buyer","FinanceAPI","Fulfillment","Pricer","Processor","AutoPO","AutoFulfill","AutoPricer","Reporter","Finance","PermissionAccessArea","General","Events","Account","Reporting","Messages","Accounting","AdPlatform","UserSetting","QuickFiltersStateInventory","QuickFiltersCustomInventory","QuickFiltersStateSales","QuickFiltersCustomSales","QuickFiltersStatePurchases","QuickFiltersCustomPurchases","SalesViewSelected","SuspiciousPriceChange","InternationalCompliance","InventoryPageViewMode","InventoryColumnOrder","InventoryColumnNumberPrecision","InventoryColumnWidths","InventoryCustomColumns","InventoryColumnEditability","SaleColumnOrder","SaleCustomColumns","SaleColumnEditability","SaleColumnNumberPrecision","ReportConfigInventory","ReportConfigSale","EventsColumnOrder","EventsCustomColumns","EventsColumnEditability","EventsColumnNumberPrecision","SiteTheme","ReportingColumnLimit","PriceFloorCeilingMode","ReleaseNoteIdsRead","EventsColumnsEnabled","InventoryColumnsEnabled","SaleColumnsEnabled","SiteZoom","InventoryDefaultTab","PurchaseColumnOrder","PurchaseCustomColumns","PurchaseColumnEditability","PurchaseColumnNumberPrecision","PurchaseColumnsEnabled","InventoryFlattenedColumnOrder","InventoryFlattenedColumnsEnabled","InventoryFlattenedColumnEditability","InventoryFlattenedColumnNumberPrecision","SaleFlattenedColumnOrder","SaleFlattenedColumnsEnabled","SaleFlattenedColumnEditability","SaleFlattenedColumnNumberPrecision","SaleColumnWidths","PurchaseColumnWidths","InventoryV2DefaultTab","SalePageViewMode","PurchasePageViewMode","InventoryReportColumnWidths","SaleReportColumnWidths","EventsColumnWidths","PurchaseEventColumnOrder","PurchaseEventColumnsEnabled","PurchaseEventColumnEditability","PurchaseEventColumnNumberPrecision","PurchaseEventColumnWidths","SalesDefaultTab","PurchasesDefaultTab","SalesSideTableColumnOrder","SalesSideTableColumnsEnabled","SalesSideTableColumnEditability","SalesSideTableColumnNumberPrecision","PurchaseSideTableColumnOrder","PurchaseSideTableColumnsEnabled","PurchaseSideTableColumnEditability","PurchaseSideTableColumnNumberPrecision","InventorySideTableColumnOrder","InventorySideTableColumnsEnabled","InventorySideTableColumnEditability","InventorySideTableColumnNumberPrecision","MarketplacePaymentsTableColumnOrder","MarketplacePaymentsCustomColumns","MarketplacePaymentsTableColumnsEnabled","MarketplacePaymentsColumnNumberPrecision","MarketplacePaymentsColumnEditability","MarketplacePaymentsColumnsWidth","QuickFloorPromptDismissal","QuickFiltersCustomMarketplacePayments","QuickFiltersStateMarketplacePayments","QuickFiltersStateOnSaleEvent","QuickFiltersCustomOnSaleEvent","OnSaleEventColumnsOrder","OnSaleEventColumnsWidths","OnSaleEventColumnNumberPrecision","OnSaleEventCustomColumns","OnSaleEventColumnEditability","OnSaleEventColumnsEnabled","FirstTimeFeaturesViewed","ReleaseNoteType","NewFeature","BugFix","TutorialItemType","Folder","TicketGroupEditReason","AmendTickets","CancelTickets","AddTickets","ExchangeTickets","EditEvent","ApiException","message","result","isApiException","obj","ContentId","AbsoluteAmount","AbsoluteDollarValue","AbsoluteRankPremium","ABTest","Access","AccessToViewUnauthorized","AccordianToggle","Account_SetPrice_Details","AccountEmail","AccountInformation","Accounting_ViewAll_Details","Accounting_ViewPaymentsOnSale_Details","Accounting_ViewStubhubPayments_Details","AccountName","AccountNotSetupForAnyMarketplace","Accounts","Accounts_ViewAll_Details","Actions","ActivateRole","ActivateUser","ActiveListingsHeader","ActiveListingsDescription","ActivityLogActionType","ActivityLogAdditionalInfo","ActivityLogDate","ActivityLogInitiatedBy","ActivityLogLaunchButtonText","Actual","ActualSellThroughRate","ActualSTR","AdCampaigns","AddABTest","AddAnotherSplit","AddedToSale","AddFilterToShowResult","AddHurdle","AddNameToCreateGroup","AddNewDeal","AddNewSection","AddOverride","AddRow","AddRule","AddSplit","AddToGroup","AddToSale","AddValues","AdGroups","Add","AddAccountAction","AddChargeOrCredit","AddColumns","AddCommission","AddCostAction","AddCostCredit","AddCustomColumn","AddFilter","AddGroup","AddInventoryReport","AddLineItem","AddMembersToThisTeam","AddMessagingSource","AddMessagingSourceDescription","AddMessagingSourceStep1","AddMessagingSourceStep2","AddMessagingSourceStep3","AddNewBuyer","AddNewOverrideFxRate","AddNewTeam","AddNote","AddOrUpdateFxOverrideWarning","AddOverrideFxRate","AddPayment","AddPaymentMethodAction","AddPlaceholder","AddPlaceholderAdditionalInfoMessage","AddPurchase","AddPurchasePaymentMethod","AddPurchaseVendor","AddPurchaseVendorAccount","AddReport","AddSalesReport","AddSeatSaver","AddSeatSaveEventSearchMessage","AddSeatSaverAdditionalInfoMessage","AddSection","AddSource","AddTag","AddTagValues","AddTagValuesSelected","AddTagValuesAllVisible","AddTarget","AddTicketsForAnotherEvent","AddTicketsForThisEvent","AddUrl","AddUser","AddUsersAndGroups","AddUserToRole","AddValue","AddVendorAction","AdjustFiltersSuggestion","AdjustFloor","AdjustMyPrice","AdjustPrice","AdjustPricesBy","AdjustPricingCeilingAllVisible","AdjustPricingFloorAllVisible","AdjustPricingFloorSelected","AdjustPricingCeilingSelected","AdjustPricingFloor","AdjustPricingCeiling","AdjustProceedsFloor","AdjustProceedsCeiling","Advanced","AdPlatform_Edit_Details","AdvancedAutopricingSettings","AdvancedSearch","AdvancedSettings","AggressiveOption","Ago","AISuggestion","AllAvailableMerges","AllDeliveryOptions","AllEvents","AllFulfillmentStates","AllGenres","AllIn","AllInPriceAutoCalculationInfo","AllListings","AllMarketplaces","AllMerchants","AllMessages","AllocatedListing","AllocateToAnyAvailableSeats","Allocation","AllowBroadcast","AllowMutipleValues","AllPaymentMethods","AllPayments","AllPaymentStates","AllPaymentTypes","AllSaleStatuses","AllSubGenres","AllTicketTypes","AllVendorAccounts","AllVendors","AllocateTickets","AllocateToDifferentTickets","AllocateToListingTickets","AllocatedSeats","AlreadyInHand","Amount","AmountPaid","AmountType","Ampitheater","And","Angle","AnUploadedDocumentIsRequired","App","AppendSeatTraits","ApplicationTempData","Apply","ApplyCompListingSettings","ApplyAdvancedPricingSettings","ApplyFilter","ApplyGroupingTemplatesToAllEventsPrompt","ApplyAutoPricingSettings","ApplyPricingProtectionSettings","ApplyToAll","ApplyToAllEvents","ApplyUndercutSettings","ApprovedForQualityControl","AppVersion","Area","AreYouSure","AreYouSureEditRowsMultipleSections","AreYouSureYouWantToRestoreThisPurchase","AscendingAbbreviated","AutopricingInfo","AutoPricingResult","BelowThe","BetterZonesDetail","BuildReport","BulkAppendSeatTraitInfoMessage","BulkEditGettingPreview","BulkEditListingGroupSettings","BulkEditListingGroupSettingsWarning","BulkEditNoCommissionProvidedWarning","BulkEditNoSeatTraitsProvidedWarning","AutoComp","AutoFulfillWithSpace","AutoGroup","BulkEditDeliveryTypePurchaseMessage","BulkEditSuccessWithWarnings","BulkEditTicketTypePriorityInstruction","BulkMarkPurchaseAsPaid","BulkMarkPurchaseAsPaidMessage","BulkMarkPurchaseAsPaidWarning","BulkReplaceAndOverrideSeatTraitInfoMessage","BulkUpdatePlaceholdersMessage","BulkUpdatePurchaseCurrencyActionText","BulkUpdatePurchaseCurrencyInfoText","BulkUpdateSeatTraitInfoMessage","BulkWasteTicketsConfirmation","BuyerAccount","BuyerDelivery","CancelBulkTicketGroupWarning","CancelBulkPurchaseWarning","CancellationReason","CancelledOrders","CancelledProceedsSettingDescription","CancelledProceedsSettingToggle","CancelPurchases","CancelSingleTicketGroupWarning","CancelTicketGroupsParenth","CancelPurchasesParenth","CantAllocateMore100Commission","Carts","Ceiling","ChargeAmount","ChargeReasons","Cheaper","ChooseListing","ChooseSpecificSections","ChooseTickets","Clear","CombineCornersAndEnds","Commands","CommissionEligibilityDate","CommissionEligible","CommissionerCostsAndCharges","CommissionerProceedsAndCredits","CommissionerProfitAndLoss","Commissions","CompletedOn","ConfirmRemovePaymentReference","ConfirmResetOverride","ConfirmUnLinkPaymentAndSaleTitle","ConfirmUnLinkPaymentAndSaleBody","ConfirmWaste","Conflict","CommissionPayments","Consignment","Converted","ConvertedPaymentsAmount","ConvertPayment","ConvertCurrency","ConvertedPayment","ConvertedPaymentAmountMustBeGreaterThanZero","ConvertedTo","ConvPmtAmt","CreateNewGroup","CreditAmount","CreditReasons","CustomRanks","DateAdded","DateRange","DeallocateSalesOfAffectedTicketsWarning","ChangeGroup","ChangeZone","CheckVenueRows","CompListingMinCount","CompListingMinQuantity","CopiedWithExclamationMark","DefaultDelivery","DefaultDeliveryConfigurations","DefaultDeliveryConfigurationsDescription","DelayBroadcastAfterInitialCreation","DeletePlaceholders","DeleteSearchResultConfirm","DeliveryInfoChangePropagateToSalesConfirmation","DeliveryInfoChangePropagateToUnfulfilledSalesConfirmation","DeliveryOverrideInfo","DeliveryStrategy","DeprecatingHeatMaps","Deprioritize","DeprioritizeQuantitiesHeader","DeprioritizeQuantitiesDescription","DescendingAbbreviated","Details","DetectionMode","DeterminePrice","DiscountApplied","DonotDropMoreThan","DontUpdateExistingListings","DontUpdateExistingListingsOrSales","DontUpdateExistingPurchasesOrListings","DropYourFileAnywhereToUpload","Edited","EditEventWarning3","EditMap","EditTable","EditZone","EmptyPurchaseCommissions","EnableAutoAddCancelledProceeds","EnableAutoFulfillOverride","EnableDeliveryOverride","EnableNativeSyncLabel","EnableNativeSyncExplanation","EnterCompanionMode","EventConfig_Create_Details","EventConfig_Edit_Details","EventConfig_View_Details","EventDiscovery","EventMap","EventNotReviewedSince","EventState","ExcludeFanInventoryInfo","ExcludeDefectsInfo","ExistingSections","ExitCompanionMode","ExperimentName","Experiments","ExternalPaymentId","ExternalPurchaseIdAbbreviated","FallbackSplit","FallbackSplitInfo","FarLeftAndFarRight","Filled","FilterQty","FilterReportOptional","FlashSales","FlashSale","FuturePayments","FX","FXRate","General_ViewNotifications_Details","General_ViewReleaseNotes_Details","GeneratingPreview","GroupInventory","GroupListingsSettingRankPremium","GroupListingsSettingQueuingLogic","GroupListingsSettingBroadcasting","HasUnmappedSales","HasUnlinkedChargesCredits","HasUnpricedListings","GUR","Help","HideZoneMap","Hour","Hours","IfPurchaseIsCreatedWith","IncludeBetterZones","IncludeDefects","IncludeHeldListings","IncompatiblePricingMode","Inferred","Inventory_UpdateDeliveryStrategy_Details","Inventory_UpdateDeliveryStrategyOnIsPricerOf_Details","Inventory_UpdateDeliveryStrategyOnPurchasedBy_Details","InventoryReportDescription","InventoryStatus","ItemsWillBeUpdatedIfApplicable","KeepExistingTicketsOption","KeepPaymentReference","Last3Days","Last2Weeks","LeftAndRight","LinkSale","ListingHasNoCurrentFloor","ListingHasNoMarketprice","ListingHasNoUnitCost","ListingQty","ListingQuantity","ListingsSortByHeader","ListingsGroupSortByDescription","ListingUpdateConfirmation","ListingWillBeSplitInto","LockCommission","MappingError","MapTitle","MarkAsPaid","MarkAsUnpaid","MarkedAsReviewed","MarketplaceDelivery","MarketplacePaymentId","MarketplacePayments","MarketplaceTerms","MarketShare","MarkAsFulfilledWarning","MarkLineItemAsUnpaidConfirmation","MarkProceedsAsUnpaidConfirmation","MarkSalesAsPaid","MergedGroupListingWarning","MergeListingGroupTooltip","MinCommissionValue","MinListingsRequired","MoreExpensive","MovePrice","MoveTo","MoveToExistingGroup","Multiple","Empty","NetCommissionRate","NetCommissionRateOverride","New","NewCustomReport","NewFlashSale","NextTicket","NoHurdle","NoItemsWereEligibleForUpdate","NoResults","NoTicketsToWaste","NotificationTypeListingPriceUpdate","NotMapped","Of","OnSaleDate","OpenEventPageV2InDevelopment","OriginalProceeds","OriginalSeating","OriginatedListing","OtherZoneMap","OutlierLimit","OutlierSettingsIngoreListings","OutlierSpacing","P25","P50","Page","PastPayments","PaymentAmount","PaymentDetails","PaymentLine","PaymentLineId","PaymentReferenceID","PaymentsAmount","PayRef","PayRec","PayState","PerformerVenueSpecific","AssignETicketsIns","AssignQRCodesIns","AssignToDefaultPurchaser","at","AtLeastOneUrlRequired","AtoZ","AtoZArrow","ATP","Attachment","AutoBroadcastNewListing","AutoBroadcastRequiredFaceValue","AutoCompAndGroupListings","AutoConversion","AutoConversionSubtitle","Automations","AutoPoConfiguration","AutoPoConfigurationDescription","AutoPoVendorConfigutationDescription","AutoPricePreview","AutoPricePreviewSubTitle","Autopricing","AutoPricingAllListingsForEvent","AutoPricingAllResultTypeOption","AutoPricingDisclaimer","AutoPricingEnabled","AutopricingNotAvailableForGA","AutopricingNotAvailableMissingMap","AutopricingNotAvailableNoScoresGeneral","AutopricingNotAvailableNoScores","AutopricingSettings","AutopricingSettingsAll","AutopricingSettingsAllVisible","AutopricingSettingsSelected","AutopricingStrategy","AutoSetup","AutoSourceTickets","Available","AvailableInstruction","AvailableSeats","Back","BarcodeAlreadyInUsed","BarcodeRequired","BelowTheNextCheapest","BestRowExtrapolation","BestDealScore","Between","Better","BestDealScorePrompt","Blocked","BroadcastAll","BroadcastAllVisible","BroadcastByDefault","BroadcastDisabled","Broadcasted","BroadcastError","BroadcastErrorCode_BroadcastListing","BroadcastErrorCode_Unknown","BroadcastErrorCode_UpdatePrice","BroadcastErrorCode_UpdateTicketType","BroadcastErrorCode_UpdateSplitType","BroadcastErrorCode_UpdateInHandDate","BroadcastErrorCode_SplitListing","BroadcastErrorCode_MergeListing","BroadcastErrorCode_UnbroadcastListing","BroadcastErrorCode_UpdateQuantity","BroadcastErrorCode_HideSeats","BroadcastErrorCode_UpdateListingNotes","BroadcastErrorCode_UpdateSeating","BroadcastErrorCode_MarketplaceResaleRestricted","BroadcastErrorCode_MarketplaceManifestMismatch","BroadcastErrorCode_MarketplacePriceBelowFloor","BroadcastSelected","BroadcastSettings","BroadcastSettingsAllVisible","BroadcastSettingsForAll","BroadcastSettingsForSelected","BrowseFile","BrowseFiles","BucketOptions","Budget","BugFixes","BuildACustomRole","BulkActions","BulkDeleteSelectedPlaceholderWarning","BulkEditCancelled","BulkEditDone","BulkEditFailed","BulkEditFloorCeilingCurrentFloorWarning","BulkEditFloorCeilingUnitCostWarning","BulkEditFloorCeilingWarning","BulkEditInProgress","BulkEditListPriceAdjustingFloorCeilingWarning","BulkEditPartialFailure","BulkEditPriceFloorCeilingWarning","BulkEditPricesWarning","BulkEditStarting","BulkEditSuccess","BulkEntry","BulkUpload","BuyerAccounts","BuyerCommission","By","BypassLimit","CalculatePrice","CancellationDate","Cancellations","CancelledHoldOnMarketplace","CancelSelectMultiple","Catchup","Category","Category1007","Category1009","Category4286","Category5099","Category6401","Category6404","Category6451","Category6452","Category12567","Category263024","Category272988","Category272989","Category273013","Category273026","Category273031","Category273034","Category273055","Category273057","Category273089","Category273137","Category273138","Category273164","Category273171","Category273393","Category273409","Category273431","Category273485","Category273529","Category273657","Category274164","Category274701","Category274794","Category275344","Category275641","Category276077","Category276281","Category276306","Category276308","Category276311","Category276861","Category278221","Category278837","Category279267","Category279563","Category289352","Category150012246","Category1013","Category1015","Category1017","Category2294","Category4551","Category6403","Category55548","Category259716","Category356361","Category356453","Category356499","Category356585","Category357019","Category357036","Category358121","Category358959","Category366262","Category366288","Category366529","Category366888","Category375100","Category379731","Category379991","Category380480","Category381561","Category150002820","Category1014","Category1022","Category1023","Category1026","Category1027","Category1059","Category1205","Category14858","Category259810","Category259815","Category259819","Category259820","Category259822","Category259823","Category259824","Category259827","Category259828","Category259829","Category259833","Category259921","Category259922","Category260261","Category260263","Category260264","Category260265","Category260266","Category260267","Category260268","Category260270","Category260271","Category260275","Category260347","Category260357","Category260385","Category260389","Category260392","Category260421","Category260478","Category260483","Category260492","Category260530","Category260539","Category260542","Category260601","Category260624","Category260628","Category260637","Category260644","Category261289","Category261291","Category308335","Category308336","Category308341","Category308342","Category308344","Category308345","Category308350","Category308351","Category308352","Category308353","Category308355","Category308357","Category308358","Category308363","Category308364","Category308365","Category308385","Category321834","Category1024","CeilingRelativeToUnitCost","ChangeEventAll","ChangeEventSelected","ChangeGroupBy","ChangeGroupByWarning","ChangePassword","ChangeSectionScore","ChangeTagValueTypeWarning","ChangeValueType","ChangeVendorAccount","Charges","CharityEvent","Cheapest","Checkbox","ChooseBuyer","ChooseSection","ChooseRow","ChooseWidgets","ChooseYourDisplaySettings","ChooseZone","ClassifyMessage","ClearAll","ClearAndOverwrite","ClearBrowsingData","ClearBrowsingDataHelp","ClearData","ClearListingAutoPricingSettings","Columns","ColumnSettings","ColumnWithSameNameExists","CombinedPermissionViewDescription","CommaSeparatedValuesExt","Comments","Commission","Commissioner","Comparables","CompCeiling","CompFloor","CompListingCeiling","CompListingFloorMustLessThanCeiling","CompListingModePrompt","CompListingOnlyForSameZone","CompListingQuantityScoreAdjustment","CompMode","Configure","ConfigureColumnTags","ConfigureColumnVariables","ConfigureHeatMap","ConfiguringYourHeatMap","ConfiguringHeatMapInstruction1","ConfiguringHeatMapInstruction2","ConfirmDeletion","ConfirmVendorAccountChange","ConfirmWithoutAllocation","Contains","ConversionRate","ConversionRateMustBeGreaterThanZero","CopyEmailAddress","CopyExternalId","Create","CreateACustomColumn","CreateAHeatMap","CreateANewTeam","CreatedBy","CreatedOn","CreateNew","CreateNewField","CreateNewFromTemplateConfigPayload","CreateNewInventoryReport","CreateNewOrder","CreateNewReport","CreateNewSaleReport","CreateNewTag","CreatePricingStrategy","Credits","CurrencyConversion","CurrencySectionSubtitle","Current","CurrentColumns","CustomEventId","CustomReports","DailyOverrideFxRates","Dark","DarkMode","Dashboard","DataIsRefreshing","Days","DeactivateUser","DealScore","DecimalNumber","Decrease","DecreasePrice","DecreasePriceByPercentAllVisible","DecreasePriceForAll","DecreasePriceForSelected","DefaultBuyer","DefaultCurrency","DefaultPaymentMethod","DefaultQuantity","DefaultQuantityFilters","DefaultReports","DefaultSplitTypeForSeatSaver","DefineTargets","DefineTargetsSubtitle","Delete","DeleteAllTemplates","DeleteCustomColumn","DeleteFxOverrideWarning","DeleteOverrideFxRate","DeletePlaceholder","DeletePlaceholderAll","DeletePlaceholderAllVisible","DeletePlaceholderListing","DeletePlaceholderSelected","DeletePricingStrategy","DeleteReport","DeleteRole","DeleteSeatSaver","DeleteSeatSaverAll","DeleteSeatSaverAllVisible","DeleteSeatSaverSelected","DeleteTag","DeleteTagConfirmation1","DeleteTagConfirmation2","DeleteTeam","DeleteUser","DelistedClickToList","DelistedSyncFailed","DeliveryDocuments","DemandFactors","Description","DescriptionOfPurpose","DeselectAll","DesiredActiveListings","DecreasePriceByPercentAll","DecreasePriceByPercentSelected","DesiredNumberOfGroups","DigitalWallet","DirectToStubHubInternationalMessage","DirectToStubHubInternationalTitle","DifferentCurrencyCodesRequired","DisableDarkMode","Discount","Display","DisplayName","Distance","DontChange","DontPriceBelow","Download","DownloadTemplate","DoYouWantToContinue","Duplicate","DuplicatedListing","DuplicatedReportName","DuplicateEventNeedsToBeRescheduled","DuplicateEventPerformerVenueDateAndTimeMatch","Duplicates","DuplicateTicketId","each","EachTicketUrlOnNewLine","EachTicketIdOnNewLine","Earnings","Editable","EditATeam","EditColumns","EditEditabilityDescription","EditEventWarning","EditEventWarning2","EditGeneralSettings","EditMarketplaceEvent","EditACustomColumn","EditMetrics","EditNote","EditOverrideFxRate","EditPricing","EditPricingStrategy","EditReport","EditRowScore","EditRowScores","EditScores","EditSections","EditTagTypes","EditUser","EmailPreview","EnableAll","EnableAndDisableExperimentalFeatures","EnableAutoPricing","Enabled","EnableDarkMode","EnableQualityControlForAutoPo","EnterBarcodesForTransferIns","EnterResetCodeFromEmail","EnterStubHubEmailPrompt","EnterTicketUrlsIns","EnterTicketIdsIns","EnterValuesFor","Equals","EventHasPassed","EventId","EventMapped","Events_AddTagType_Details","Events_Edit_Details","Events_SetPrice_Details","Events_UpdateTags_Details","Events_ViewAll_Details","EventTag","EventTags","EventView","Example","Exclude","ExcludeFullySoldListings","ExclusionCurrencies","ExclusionCurrenciesSubtitle","ExistingOrder","ExistingTagName","ExistingTagValue","Exit","ExpectedProceeds","ExpectedProfit","ExpectedSTR","ExperimentalFeatures","ExperimentalFeaturesComingSoon","ExploreComparables","ExportListings","ExportSales","ExternalPurchaseId","ExternalSaleId","Far","FindThe","FulfillmentProvidersSubText","HasUnsoldListings","Hidden","HiddenEditabilityDescription","HowToDeterminePrice","Include","IncludeAllCountries","IncludeAllVendors","IncludedCountries","InventoryTag","GlobalReportFilterChangeCopyMessage","GlobalReportFilterChangeMessage","LastReviewed","ListedDelistFailed","ListedSyncFailed","ListingGroupSummaryActiveAndActive","ListingGroupSummaryActiveButNotListed","ListingGroupSummaryQueued","Mappings","MarkAsReviewed","MarketplaceEnableDisableConfirm","MaxReportSizeWarningLabel","MaxActiveListings","NoGroupsAvailableForVenueConfig","MinActiveListings","NoFulfillmentProviders","NoItemsWereChanged","NotContains","NumberOfUnsoldTickets","NumberOfListedTicketsDescription","NumberOfUnlistedTicketsDescription","OnlyThis","OriginatedBy","PandLTitle","PaymentId","Permission_AdPlatformEdit","Permission_EditVendor","Permission_EventConfig_Create","Permission_EventConfig_Edit","Permission_EventConfig_View","Permission_LockUnlockCommission","Permission_LockUnlockCommissionOwned","Permission_UpdateDeliveryStrategyOnPurchasedListings","Permission_UpdateDeliveryStrategyOnPricedListings","Permission_UpdateDeliveryStrategy","Permission_UpdateDeliveryType","Permission_UpdateDeliveryTypeOwned","Permission_UpdateSeatTraits","Permission_UpdateSeatTraitsOwned","Permission_UpdateCustomDeliveryType","Permission_UpdateCustomDeliveryTypeOwned","Permission_ViewNotifications","Permission_ViewPaymentsOnSale","Permission_ViewStubhubPayments","Permission_ViewReleaseNotes","PmtAmount","PmtLineId","PmtMethod","PmtState","PmtType","PmtStatus","PoId","PoDate","POPaymentState","PreSaleDate","Prev","PreviousTicket","PriceAgainst","PriceDateFilterTitle","PriceDateFilterChanged","PriceDateFilterUnchanged","PriceMin","PriceP25","PriceP50","PriceToMarket","PricingAgainst","PricingSettingsListingsConflictWarning","PrivateInventoryNotes","PrivateSaleNotes","PrivatePurchaseNotes","ProceedsAmount","Purchases_EditVendor_Details","Purchases_LockUnlockCommission_Details","Purchases_LockUnlockCommissionOwned_Details","Purchases_UpdateDeliveryType_Details","Purchases_UpdateDeliveryTypeOwned_Details","Purchases_UpdateCustomDeliveryType_Details","Purchases_UpdateCustomDeliveryTypeOwned_Details","Purchases_UpdateSeatTraits_Details","Purchases_UpdateSeatTraitsOwned_Details","Proceed","PurchaseTag","PutSaleListingOnHold","Quantities","QuantitiesFilter","QuantitiesForcedToBottom","RankPremiumTips","RawVenueCatData","ReceivedDate","Received","RemainingSeatingOnly","RemoveExistingTicketsOption","RemoveFromGroup","RemoveFromSale","RemoveHoldConfirmation","RemovePaymentReference","ReplaceAndOverrideSeatTraits","ReplaceWith","ReportNotAvailable","ResetFilters","ResetFulfillmentWarningV2","ResetOverride","ResetToOriginal","RestartExperiment","Restrictions","ResumeExperiment","ResultTimeout","ResultTimeoutDescription","RetrySkipped","ReuploadDocumentWarning","RevenueSplitHurdle","Role_FinanceAPI_Details","RowCompOverrides","RowComps","RowCompSettingExactMatch","RowGroups","RowRanges","RowRangesInputTip","RowsAscToDesc","RowsDescToAsc","RowsGroupBy","SaleBasisShare","SaleCharges","SaleCredits","SaleDateFilterTitle","SaleDateFilterOccured","SaleDateFilterNotOccured","SaleForEditTickets","SaleForRemovedTickets","SaleHasMarketplaceProblemHoverText","SaleIsFulfilledOnMarketplace","SalePaymentConversionWarning","SaleIsFulfilledOnMarketplace2","SaleReportDescription","SaleTag","SameEventsShareSameVenueConfigTitle","SameEventsShareSameVenueConfigHeader","SameEventsShareSameVenueConfigMessage1","SameEventsShareSameVenueConfigMessage2","FlatView","Floor","FloorMustBeLessThanCeiling","Change","Classify","ClickToViewCompsInstruction","Calculate","Cancel","CancelPurchaseDescription","CancelVoidPurchase","ChooseAccount","ChooseIncrementType","ChoosePaymentMethodPlaceholder","ChoosePaymentMethodTypePlaceholder","ChooseSeatingNotes","ChooseVendor","City","ClickToTakeAction","Close","CompListingMode","CompListingFloor","CompListingFloorMustBeSetError","ConfirmETicketsIns","ConfirmSale","Contact","ContentView","Copied","Cost","CostAndCredits","CostBasis","CostPerTicket","Country","CreateCustomFilter","CreditBalance","CreditCard","Currency","CurrencyCode","CustomDate","CustomDateRange","CustomFilter","DateAscArrow","DateDescArrow","DateDue","DateIncurred","DatePaid","DateRangeDisplayText","DateRangeSuggestionsTitle","DaysPostfix","Deactivated","DeallocateSale","DeallocateSaleWarning","DecreasePriceByPercent","Default","DefaultHideSeatNumbers","DefaultInHandDateOffset","DefaultSplitType","DeletePurchasePaymentMethod","DeletePurchasePaymentMethodWarning","DeletePurchaseVendor","DeletePurchaseVendorWarning","DeletePurchaseVendorAccount","DeletePurchaseVendorAccountWarning","DelistedClickToRelist","DelistingClickToCancel","DelistingFailedClickToTryAgain","DeliverTicket","DeliverToAlternativeAccount","Delivery","DeliveryAccount","DeliveryCost","DeliveryWebsite","DetailView","DirectOffline","DisableThisMarketplace","Dismiss","DollarsInBasket","DoTheseTicketsHaveAnyRestrictions","DoYouWorkForEventOrganizerOrViagogo","DragNAssignToSeats","DragNDropFiles","Due","DuplicateBarcode","DuplicateSeat","DuplicateUrl","EditOfflineSale","EmailDetails","EndDateTime","Entity","EachBarcodeOnNewLine","Economics","Edit","EditCostCredit","EditCustomFilter","EditPayment","EditPaymentMethod","EditPurchaseDetails","EditPurchaseVendor","EditPurchaseVendorAccount","EditTicketNotes","Employee","EmployeeManagement","EmptyContent","EndDateBeforeStartDate","EnterBarcodesIns","EnterTransferIdForPurchase","EnterPurchaseOrderIdFromVendor","Error_BadGatewayError_GenericMessage","Error_BadGatewayError_Header","Error_BadRequest_GenericMessage","Error_BadRequest_Header","Error_Forbidden_GenericMessage","Error_Forbidden_Header","Error_InternalServerError_GenericMessage","Error_InternalServerError_Header","Error_NotFound_GenericMessage","Error_NotFound_Header","Error_NotImplemented_GenericMessage","Error_NotImplemented_Header","Error_RequestTimeout_GenericMessage","Error_RequestTimeout_Header","Error_Unauthorized_GenericMessage","Error_Unauthorized_Header","EventDate","EventDateAsc","EventDateDesc","EventName","EventTime","EventVisitors","Everyone","ExpectedValue","ExpectedValuePerTicket","ExpireHoldWarning","Export","FaceValue","FailToLoadListContent","FailedToStartupTheApp","Failures","FarthestEvent","Filters","FinalQuestionsOnYourTickets","Finish","FloorRelativeToUnitCost","Format","FormulaBuilder","FormulaBuilderInfoLine1","FormulaBuilderInfoLine2","FormulaBuilderInfoLine3","FormulaBuilderInfoLine4","FormulaBuilderInfoLine5","FormulaBuilderInfoLine6","ForTheEvent","FreeEvent","From","FromDate","FulfillActionNotAvailable","Fulfiller","FulfillmentDate","FulfillmentRestrictions","FulfillmentState","FullEventInfo","History","IgnoreTheFirst","InCheckout","IncorrectPerfomerOrGrouping","IncreaseDecreasePrice","IncreasePrice","InsightsView","InvalidBaseRow","IsDuplicate","IsPricedByMarketplace","ListedAndSold","ListView","KeepCurrentPurchaser","MembersOnThisTeam","MergeListings_ListingMismatchWarning","MinQty","MinQuantity","MoreThan","NewAppVersion","NewHeatMap","NotEnoughInformationToCreate","NotFoundOnPrimary","NotMappedYet","NumberOfBuckets","OfMyListingQuality","OnHoldBroadcastDisabled","PandL","PaymentAmountReceived","PaymentCurrency","PaymentReceived","PaymentReference","Override","OverrideDate","PendingPartnerIntegrations","IncorrectCountryCode","Members","Permission_UpdateBuyerCommission","Permission_UpdateBuyerCommissionOwned","Permission_ConfirmRejectOnAssignedSales","Permission_ConfirmRejectSale","Permission_ConfirmRejectSaleOnPricedListings","Permission_ConfirmRejectSalesFromPurchasedListings","Permission_CreatePO","Permission_FulfillSale","Permission_FulfillSaleOnPricedListings","Permission_FulfillSalesFromPurchasedListings","Permission_ManageCreatedPlaceholderListings","Permission_ManageOfflineSalesOnPurchasedListings","Permission_ManagePlaceholderListings","Permission_Predeliver","Permission_PredeliverOnAssignedListings","Permission_BroadcastUnbroadcastOnAssignedListings","Permission_PredeliverPurchasedListings","Permission_SetPriceOnAssignedListings","Permission_UpdateCreatedReports","Permission_UpdateInfoFromPurchasedListings","Permission_UpdateInfoOnAssignedListings","Permission_UpdateInfoOnAssignedSales","Permission_UpdateInfoOnPricedListings","Permission_UpdateInfoOnPurchasedListings","Permission_UpdateTagsFromPricedListings","Permission_UpdateTagsFromPurchasedListings","Permission_UpdateTagsOnAssignedListings","Permission_SetPriceOnPurchasedListings","Permission_UpdateTagsOnAssignedSales","Permission_UpdateTagsOnOwnedPurchasedOrder","Permission_UpdateTagsOnPurchasedListings","Permission_FulfillSalesOnAssignedSales","Permission_ViewAssignedListings","Permission_ViewAssignedSales","Permission_ViewFulfillmentArtifactsOnAssignedListings","Permission_ViewFulfillmentArtifactsOnAssignedSales","Permission_ViewFulfillmentArtifactsOnPricedListings","Permission_ViewFulfillmentArtifactsOnPurchasedListings","Permission_ViewFulfillmentArtifactsOnSaleFromPricedListings","Permission_ViewFulfillmentArtifactsOnSaleFromPurchasedListings","Permission_ViewGlobalReports","Permission_ViewOwnedPurchasedOrders","Permission_ViewSaleFromPricedListings","Permission_ViewPurchasedListings","Permission_ViewRecentListings","Permission_ViewRecentSales","Permission_ViewSaleOnPurchasedListings","Permission_Webhook_View","Permission_Webhook_Create","Permission_Webhook_Edit","Placeholder","PlaceholderPurchaseMessage","POCreatedBy","Priced","ProvisionallySourced","Purchases_UpdateBuyerCommissionOwned_Details","Purchases_UpdateBuyerCommission_Details","PutOnHold","PutOnHoldAll","PutOnHoldSelected","RankPremium","Reason","RefreshNow","RejectAllocationWarning","RejectionReasonInfoText1","RejectionReasonInfoText2","RelativeRankPremium","RelativeTo","RemoveHold","RemoveTagValue","RemoveTagValues","ReportHistory","SameOverrideExists","Reports_ViewGlobalReports_Details","SameZoneOrBetter","SaveCopy","Saved","SaveMapAs","SaveSearch","SaveSettingsToViewUpdatedComps","SearchAndReplace","SearchEventOrLookupId","SearchFor","SearchPurchases","SearchInventory","SearchSales","SeatingMapped","SeatRange","SectionClearingPrices","SectionGroups","SectionsAscToDesc","SectionsDescToAsc","SelectCountry","SelectCity","SelectedFrom","SelectGroupToMoveTo","SelectItemsForBulkEdit","SelectQuantities","SelectStateProvince","SelectTag","SetActiveInGroup","SetAFloor","SetAPriceFloor","SetDefaultDeliveryForNewPurchases","SetDeliveryStrategy","SetMapAsDefault","SetMinimumGroupSize","SetPriceFloor","SetTicketTypePriority","ShowDetailedSettings","Shown","ShownQty","ShowSections","ShowSectionsInfo","ShuffleRanks","SearchEvent","SaveFilter","SelectFilterValue","SideTier1","SideTier2","SignUpBannerTitle","SignUpBannerSubTitle","SignUpWelcomeSubtitle","SimilarEventsDefaults","SimulateWebsiteDiscount","SOR","Spacing","SplitListing_AllowSplitSoldTickets","SplitListing_DoNotAllowSplittingSoldTickets","SplitZonesBy","StopExperiment","StubHubListings","StubhubRecommended","Submit","Supply","SuppressFor1HourV2","SyncFailedClickToRelist","SyncFailedClickToDelist","TableEditor","TagNameNotAllowed","TargetPercentage","Team","TeamName","Teams","ThenBy","ThenDefaultListingsTo","ThenDefaultThePurchaseTo","TheNextCheapest","ThenSplitGroupsBy","ThisFilterWillChangeMetrics","TicketCost","TicketDelivery","TicketGroupBulkEditPurchaseWarning","TicketId","TicketGroupId","TicketPrices","TicketQty","TicketQuantity","TicketsAllocated","TicketsSoldAs","TimeView","Timezone","TimezoneDefaultOption","TimezoneDescription","ToggleSelectionMode","TooManyResultPerformanceWarning","TotalCostOfUnsoldTickets","TotalSplitInfo","TurnOnAutoFulfillPrompt","TypeYourNoteHere","UnableToFindSale","UndoCancel","Ungrouped","UnknownError","UnexpectedErrorOccured","UnlinkSale","UnlinkSaleAndPayment","UnlockCommission","Unordered","Unsold","UnsoldEvents","UnsoldProceeds","UnsoldQuantitiesLowToHigh","UnsoldQuantitiesHighToLow","UnwasteTickets","UnwasteTicketsConfirmation","Update","UpdateAllTicketGroupsUnderAssociatedPurchaseOrders","UpdateAutoFulfill","UpdateBuyerCommission","UpdatedBy","UpdateDeal","UpdateDeliveryTypeForPlaceholders","UpdateEventIdWarning","UpdateExistingListings","UpdateExistingPurchasesAndListings","UpdateFulfillmentSettings","UpdateFulfillmentSettingsMessage","UpdateExistingListingsAndAssociatedSales","UpdateFulfillmentSettingsMessagePurchase","UpdateMode","UpdatePriceEvery","UpdatePrivateNotes","UpdatePurchasedBy","UpdatePurchaseWithMergedListing","UpdatePurchaseWithMergedListingWarning","UpdateAssociatedSales","UpdateSeatTraitsForPlaceholders","UpdateSelectedTicketGroupsOnly","UpdateTagValue","UpdateTagValuesSelected","UpdateTagValueWarning","UploadPredelivery","UploadSeatScoreModelInfo","UseAbsoluteFloors","UseAsTemplate","UserAlreadySelected","UseZoneMap","UseZoneMapDisabledTip","Values","Velocity","VelocityHours","VendorGroup","VendorManagement","VendorPayments","VenueConfiguration","VenueRowData","VenueSpecific","VersionMismatch","VersionMismatchExplanation","HideAdvancedSettings","MissingHeightData","MissingDistanceData","MissingAngleData","RequestState","SeeAdvancedSettings","FulfillOnStubHub","FulfillOnViagogo","FulfilledExternalMarketplace","FullSeating","FutureEvents","GeneralAdmissionEvent","GeneralAdmissionMessage","GeneralMessage","GeneralSettingsAll","GeneralSettingsSelected","GenericActionFailure","Genre","GoBack","GoTo","GoToMessageThread","Group","GroupBy","GroupingDefault","GroupingTemplate","HasBroadcastError","HasUnsoldTickets","HeatMap","HeatMapInstruction1","HeatMapInstruction2","Height","HeldUntil","HeldUntilDate","HiddenDueToFilter","High","Highest","HistoricalPricing","HoldExpiration","HoldId","HoldNote","HoverZoomETicketIns","HoverZoomQRCodeIns","HowDidYouPay","HowItWorks","Hyperlink","Icon","Id","Importance","In","InactiveListings","Inbox","IncludeInColumns","IncludeInReport","InclusiveOption","InComparableZones","Increase","IncreaseDecreasePriceByPercentAllVisible","IncreasePriceByPercent","IncreasePriceByPercentAll","IncreasePriceByPercentAllVisible","IncreasePriceByPercentSelected","IncreasePriceForAll","IncreasePriceForSelected","Info","InHandDate","InHandDateMustBeBeforeEventDate","Inherit","InSection","InMyGroup","Insert","InUse","InvalidFormula","Inventory_AddSeatSaver_Details","Inventory_AddTagType_Details","Inventory_BroadcastUnbroadcast_Details","Inventory_BroadcastUnbroadcastOnIsPricerOf_Details","Inventory_BroadcastUnbroadcastOnPurchasedBy_Details","Inventory_EditPricing_Details","Inventory_ManageSeatSaver_Details","Inventory_ManageSeatSaverCreatedBy_Details","Inventory_Predelivery_Details","Inventory_PredeliveryOnIsPricerOf_Details","Inventory_PredeliveryOnPurchasedBy_Details","Inventory_SetPrice_Details","Inventory_SetPriceOnIsPricerOf_Details","Inventory_SetPriceOnPurchasedBy_Details","Inventory_UpdateListingInfo_Details","Inventory_UpdateListingInfoOnIsPricerOf_Details","Inventory_UpdateListingInfoOnPurchasedBy_Details","Inventory_UpdateTags_Details","Inventory_UpdateTagsOnIsPricerOf_Details","Inventory_UpdateTagsOnPurchasedBy_Details","Inventory_ViewAll_Details","Inventory_ViewAllMarketplaceAttributes_Details","Inventory_ViewExternalMarketplaceAttributes_Details","Inventory_ViewFulfillmentArtifacts_Details","Inventory_ViewFulfillmentArtifactsOnIsPricerOf_Details","Inventory_ViewFulfillmentArtifactsOnPurchasedBy_Details","Inventory_ViewListingOnIsPricerOf_Details","Inventory_ViewListingsOnPurchasedBy_Details","Inventory_ViewRecent_Details","Inventory_ViewRecentFromExternalMarketplace_Details","Invited","InZone","IPaidFace","IgnoreSoldTickets","ImPricing","Impersonate","InHand","InHandDaysBeforeEvent","InOneDay","IncompatibleForMergingWithSelectedListings","InvalidEndDate","InvalidStartDate","InvalidUrl","IsGlobal","ItemName","ItemsPerPage","IWorkForViagogo","IWorkForEventOrganizer","IsThisASpeculativeListing","JustNow","Key","Language","Last1Hour","Last30Days","LastPriceUpdatedDate","LastSaleDates","LastUpdatedOn","LastWeek","LastYear","LeastRecent","LeftToSell","LessSales","LiftPercentage","Light","Link","LinkCopied","LinkHasBeenCopiedToClipboard","List","ListAndAllInPriceError","ListedAverageTicketPrice","ListedQty","ListedATP","ListedQuantity","ListedToViagogoSuccessfully","ListingConfirmation","ListedClickToDelist","ListingClickToCancel","ListingFailedClickToTryAgain","ListingFullSoldNoActionAvailable","ListingNumberUsedRequired","Listings","ListingSettings","ListingSettingsAllVisible","ListPrice","ListPriceAutoCalculationInfo","ListPriceLessThanPriceFloorWarning","ListPricePerTicket","Location","LookupByListingId","LookupByOrderId","LookupBySaleId","Low","Lowest","ManualPriceWarning","ManualPriceDisableAutoPricingWarning","ManualPriceAdjustFloorWarning","ManualPriceAdjustCeilingWarning","Mapped","MappedEventId","MappedTo","MapUnavailable","Margin","MarkAsPurchase","MarkAsPrivate","MarkAsJunk","MarkAsSale","MarkAsTransfer","MarketListings","MarketplaceEnableConfirmMessage","MarketplaceDisableConfirmMessage","MarketplaceSeatingForAll","MarketplaceInhandDate","MarketplaceSeatingForAllVisible","MarketplaceSeatingForSelected","MarketplaceVisibility","Markup","Max","MaxDiscountInputPrompt1","MaxDiscountInputPrompt2","MaxDiscountInputPrompt3","MaxHoldDuration","MaxHoldDurationUnit","MaxValueLengthExceeded","Median","Merchant","Merge","MergeListings","MergeListings_DeliveryDifference","MergeListings_GroupedListings","MergeListings_RowDifference","MergeListings_SectionDifference","Merges","MergeSelected","MergeSuggested","Metrics","MicrosoftExcelExt","Min","MinCompListingCount","MissingRowDataWarning","MissingSectionFilter","MLB","MoreSales","MostRecent","MultiplePayments","MultipleSelections","MyAccount","MyListings","MyTicketsHaveRowsAndSeats","NA","NameColumnPlaceholder","Near","NearestEvent","NeverShareYourPasswordWithAnyone","NewGroup","NewModel","NewOrder","NewRole","NewRow","NewSales","NewUser","NewVendor","Next2Weeks","NextWeek","NextMonth","NextYear","NeedFulfillment","NeedToMergeToTwoOrMoreListings","NeedToSplitToTwoOrMoreListings","Next","No","NoActiveAccountsForLogin","NoActivityLog","NoAutoPricing_MissingPermission","NoAutoPricing_MissingRowId","NoAutoPricing_NoVenueConfig","NoConversation","NoEventsMatching","NoFilteredNotifications","NoGroupingAvailableForDefault","NoMergesAvailable","NoneSelected","NoNotifications","NoPerformersMatching","NoReportText","NoResultFound","NormalOption","NoSeatingsAvailableForAllocation","NoTagsExist","NoTaxes","NotificationTypeAutopriceBelowFloor","NotificationTypeAutopriceInsufficientCompListings","NotificationTypeAutopriceFirebrake","NoToAll","NoVenueMetadataForAutopricing","NoVenuesMatching","NotBroadcastOnAnyMarketplace","Notes","NotificationTypeListingHideSeatsFailed","NotificationTypeListingMergeFailed","NotificationTypeListingSplitFailed","NotificationTypeListingUpdateDeliveryTypeFailed","NotificationTypeSaleFulfilmentFailed","NotificationTypeSaleMarketplaceCancelled","NotificationTypeSaleNew","Now","NumberFormat","NumberOfItemsPerPage","NumberOfTicketsHeld","NumOfListingsToCreate","Odds","Off","OfSimilarQuality","OfSimilarQualityInZone","OfSimilarQualityQuantityAdjusted","OfTheComparableListings","OK","OlderThanLastYear","On","OneDayBeforeEvent","OnePayment","OneWeekBeforeEvent","OnlySingleValueIsAllowed","Oops","OpenEventPage","OpenReport","Or","OrAbove","OrderDate","OrderId","OrderIdDoesNotExist","OrderIdDoesNotExistForVendor","OrderIdInUse","OrderIdInUseSameVendor","Orders","Original","Outlier","OutlierFiltering","OutlierMode","OutstandingBalance","Overview","Pagination","PaidOffline","PastEvents","PastWeek","PastMonth","PastYear","Payment","PaymentAccount","PaymentDate","PaymentMethod","PaymentMethodUsed","PaymentMethods","PaymentState","PaymentType","PdfExt","PaymentPending","PendingQC","PendingRefulfillment","PendingSourcing","PeopleWithAccess","Percentage","PerformerAndVenue","PerformerAtVenue","Permission_AddSeatSaver","Permission_AddTagType","Permission_CreateOfflineSale","Permission_ManageOfflineSale","Permission_ConfirmTransferWithoutProof","Permission_ResetFulfillment","Permission_ConfigurePricing","Permission_UpdateTags","Permission_CreateReports","Permission_UpdateReports","Permission_UpdateReportsOwned","Permission_ViewAll","Permission_ViewExternalMarketplaceAttributes","Permission_ViewInventoryReports","Permission_ViewRecent","Permission_ViewRecentFromExternalMarketplace","Permission_CreateForExternalMarketplaces","Permission_ViewProceeds","Permission_ViewRecentProceeds","Permission_ViewCostAndMargin","Permission_ViewPaymentState","Permission_ViewFulfillmentArtifacts","Permission_ViewAllMarketplaceAttributes","Permission_SetPrice","Permission_BroadcastUnbroadcast","Permission_BroadcastUnbroadcastOnPurchasedBy","Permission_UpdateInfo","Permission_Administration","Permission_Create","Permission_ManageHolds","Permission_ViewSalesReports","Permissions","PermissionsRequiredMessage","PerPayment","Performers","Phone","Premium","Preview","Price","PriceBy","PriceByMarketplace","PriceMustBeBetweenFloorAndCeiling","PriceCeiling","PriceEqualsLastPrice","PriceFloor","Prices","PriceZeroUnbroadcastWarning","PricingDetails","PricingHistory","PricingProtection","Private","PrivateNote","ProceedsFloor","ProceedsCeiling","ProceedsPerTicket","Profit","ProofOfPurchase","ProofOfPurchasedInstruction","ProofOfPurchasedRequired","ProofOfPurchasedRequiredMessage","ProvideTransferImageProofInstruction","ProvideTransferProofIdInstruction","ProvideTransferUrlInstruction","PurchaseDate","PurchaseDates","PurchaseDetails","PurchaseHaveNoListings","PurchaseHaveNoSales","Purchases_AddTagType_Details","Purchases_Create_Details","Purchases_Edit_Details","Purchases_EditOwned_Details","Purchases_UpdateTags_Details","Purchases_UpdateTagsOwned_Details","Purchases_ViewAll_Details","Purchases_ViewOwned_Details","Purchases_ViewRecent_Details","PurchaseSettings","PurchaseSettingsAllVisible","QualityControl","QualityOfComparableListings","QuantityAbbreviated","QuantityAdjustedVenueWideQualityScore","QuantityAvailablePremiums","QuantityScore","QueuedForPayment","QuickFilters","RandomizeRankForEachEvents","Rank","Readonly","RecentlyCategorized","RecentlySold","RecentSales","Recommended","Reduce","Reference","RejectSale","RejectSaleWarning","Reload","Remaining","Remove","RemoveAccess","RemoveBarcodes","RemoveHoldAll","RemoveHoldSelected","RemoveHoldVisible","RemovePayment","RemovePredeliveredArtifacts","RemovePdfs","RemovePredeliveredArtifactsAll","RemovePredeliveredArtifactsAllVisible","RemovePredeliveredArtifactsSelected","RemovePredeliveredArtifactsWarning","RemoveTag","RemoveTagValuesAllVisible","RemoveTagValuesSelected","RenewAccessToken","Reply","ReportName","Reports_CreateReports_Details","Reports_UpdateReports_Details","Reports_UpdateReportsOwned_Details","Reports_ViewAll_Details","Reports_ViewInventoryReports_Details","Reports_ViewSalesReports_Details","ReprocessEmail","RequestEvent","RequestPasswordResetEmail","Required","RequiredFieldsError","Reset","ResetAll","ResetFulfillmentWarning","ResetListings","ResetListingsDeleteWarning","ResetSettings","RestorePurchase","RestrictTo","RestrictSelection","RestrictToSameZone","RestrictPriceDropVelocity","RetrievingBuyersInfo","Retry","ReuploadBarcodes","ReuploadETickets","ReuploadProof","ReuploadQRCodes","ReuploadTicketUrls","ReuploadTicketIds","Revenue","ReviewAllocation","RightNow","Role_AutoFulfill_Details","Role_AutoPO_Details","Role_AutoPricer_Details","Role_Buyer_Details","Role_Finance_Details","Role_Fulfillment_Details","Role_Owner_Details","Role_Pricer_Details","Role_Processor_Details","Role_Reporter_Details","Roles","RoleWithUsersCannotBeDeleted","RowScore","SaleConflictWarning","SaleDate","Sales_AddTagType_Details","Sales_ConfirmReject_Details","Sales_ConfirmRejectOnIsFulfillerOf_Details","Sales_ConfirmRejectOnIsPricerOf_Details","Sales_ConfirmRejectOnPurchasedBy_Details","Sales_ConfirmTransferWithoutProof_Details","Sales_CreateForExternalMarketplaces_Details","Sales_CreateOfflineSale_Details","Sales_Fulfill_Details","Sales_FulfillOnIsFulfillerOf_Details","Sales_FulfillOnPricerOf_Details","Sales_FulfillOnPurchasedBy_Details","Sales_ManageHold_Details","Sales_ManageOfflineSaleCreatedBy_Details","Sales_ManageOfflineSale_Details","Sales_ResetFulfillment_Details","Sales_UpdateSaleOnPurchasedBy_Details","Sales_UpdateSalesInfo_Details","Sales_UpdateSalesInfoOnIsFulfillerOf_Details","Sales_UpdateSalesInfoOnIsPricerOf_Details","Sales_UpdateTags_Details","Sales_UpdateTagsOnIsFulfillerOf_Details","Sales_UpdateTagsOnIsPricerOf_Details","Sales_UpdateTagsOnPurchasedBy_Details","Sales_ViewAll_Details","Sales_ViewCostAndMargin_Details","Sales_ViewFulfillmentArtifacts_Details","Sales_ViewFulfillmentArtifactsOnIsFulfillerOf_Details","Sales_ViewFulfillmentArtifactsOnIsPricerOf_Details","Sales_ViewFulfillmentArtifactsOnPurchasedBy_Details","Sales_ViewPaymentState_Details","Sales_ViewProceeds_Details","Sales_ViewRecent_Details","Sales_ViewRecentFromExternalMarketplace_Details","Sales_ViewRecentProceeds_Details","Sales_ViewSalesOnIsFulfillerOf_Details","Sales_ViewSalesOnIsPricerOf_Details","Sales_ViewSalesOnPurchasedBy_Details","SalesAndLift","SaleSettings","SaleSettingsAllVisible","SalesReports","SalesSummary","SaleStatus","SaleTicketTypeBulkEditWarning","SaleTicketTypeWarning","SameTicketsForAllEventsTitle","SameTicketsForAllEventsHeader","SameTicketsForAllEventsMessage1","SameTicketsForAllEventsMessage2","Save","SaveBarcodes","SavePricingStrategyInfo","SaveThisFilter","SaveTicketIds","SaveTicketUrls","Score","ScreenshotsOfTransfer","Search","SearchAndSelectAnEvent","SearchEmptyResult","SearchEventPlaceholderText","SearchForMessagePlaceholder","SearchOrEnter","SearchVenueConfigOrEvent","Seat","SeatAllocationChangeWarning","SeatFrom","SeatHeatmap","SeatIncrementType","SeatingInfoNotMatchStubHub","SeatingUnmapped","SeatSaverPurchaseMessage","SeatTo","SeatTraits","Seating","Seats","Sections","SectionOnly","SeeAll","SeeAllResultsFor","SeeMoreEllipses","Select","SelectAccountToSignIn","SelectAccountToSwitch","SelectAll","SelectDatePlaceholder","SelectedListing","SelectedSection","SelectedSections","SelectFilter","SelectInboxPlaceholder","SelectListingsToMerge","SelectMultiple","SelectNone","SelectSeatFrom","SelectSections","SelectSectionsToPriceAgainst","SelectSortPlaceholder","SelectSplitType","SelectSubjectPlaceholder","SelectTags","SelectTemplate","SelectUsersAndGroups","SelectValueType","SelectVariables","SelectVendor","SelectVendorShowAccounts","SelectYourFilters","Selected","SellAsTicketTypePriority","SellerAccount","SellerAccount_Admin_Details","SellerOwnTickets","SellerSupportCase_Create_Details","SellerSupportCase_View_Details","SellThroughRate","SellThroughRateLowercase","SellThroughRateSubtitle","SendInhandDateToMarketplace","SetAsPaid","SetPriority","Share","ShareReport","Sharing","SharingReportDescription","Shipment","ShowAdvancedSettings","ShowAllListings","ShownQuantity","ShowParkingTickets","ShowRelatedListings","ShowSimpleSettings","ShowVoidCancelledPurchases","SignIn","SignInAgain","SignOut","SignupDate","SinglePayment","SingleValueOnly","Sold","SoldATP","SoldAverageTicketPrice","SoldCost","SoldAs","SoldLast7Days","SoldProceeds","SoldProfit","SoldQty","SoldQuantity","SoldSeats","SoldTicketCost","SoldTickets","SoldToday","SomethingWentWrong","SomethingWentWrongTryAgain","Sort","SortAtoZ","SortBy","SortByDate","SortByTitle","SortNewToOld","SortOldToNew","SortZtoA","SpecialCharactersNotAllowed","SpecificSections","StartDateTime","StateProvince","State","Status","Stop","STR","StrategyName","StubhubEventIdKnown","StubHubLoginRequired","SubGenre","Subject","Success","Suggestions","Support","SupportCaseId","SuppressFor1Hour","SimilarSections","SuspiciousPriceChangeWarning","Summary","SwapTag","SwapTagValues","SwapTagValuesAllVisible","SwapTagValuesSelected","SwitchAccount","SyncWithSystemSettings","System","Tag","TagsToIncludeInColumns","TakeMyParentListingAnd","Target","TaxExempt","TaxPaid","Text","ThanMineAnd","Theme","Then","ThisEvent","ThisMonth","ThisWasTaxExempt","ThisWeek","ThisYear","Ticket","TicketGroupHasErrors","TicketGroups","TicketGroups_ViewAll_Details","TicketIdAlreadyInUsed","TicketmasterBarcodeTransferInstruction","TicketmasterBarcodeTransferViaOneTicketInstruction","TicketmasterBarcodeTransferViaTradeDeskInstruction","TicketmasterTradeDeskApi","TicketTypePriority","TicketsOnPlatform","TicketsPurchased","TicketTypePriorityForSelected","TicketTypePriorityForAll","TicketUrlAlreadyInUsed","Time","TitleName","To","ToBeListed","ToBeDelisted","ToDate","Today","Total","TotalAllInPrice","TotalATP","TotalCost","TotalDeliveryCharge","TotalDue","TotalGrossProfit","TotalListedQuantity","TotalListPrice","TotalNetProceeds","TotalOriginal","TotalPerTicketCost","TotalProceeds","TotalProfit","TotalPurchaseCost","TotalQty","TotalQuantity","TotalRemaining","TotalSoldCost","TotalSoldQuantity","TotalTicketCost","TotalTicketEarnings","TotalTicketQuantity","TotalTickets","TotalUnitCost","TotalUnsoldListPrice","TotalUnsoldProceeds","TotalUnsoldQuantity","TotalValueListed","TotalWebsitePrice","TradeDeskResetSummaryTitle","TradeDeskResetSummaryBody","TradeDeskResetInstructionsStep1","TradeDeskResetInstructionsStep2","TradeDeskResetInstructionsStep3","TradeDeskResetInstructionsStep4","Transactions","TransferFrom","TransferId","TransferIdNote","TransferProofId","TransferTicketsChoice","TransferTicketsIns","TransferTo","TrueFalse","TurnOffReporting","TurnOffReportingWarning","Type","UnableToProcess","UnableToRetrieveBuyersInfo","UnbroadcastAll","UnbroadcastAllVisible","Unbroadcasted","Uncategorized","Undeliverable","UndercutAmount","UndercutMode","UndercutAbsoluteAmount","UndercutAbsoluteOrRelativeAmountMustBeSetError","UnderCutModePrompt","UndercutRelativeAmount","Ungroup","UngroupListingsAll","UngroupListingsAllVisible","UngroupListingsConfirmation","UngroupListingsSelected","UniqueId","Unread","UnbroadcastSelected","UnsavedChanges","UnsavedChangesWarning","Unset","UnsoldCost","UnsoldQty","UnsoldQuantity","UnsoldTickets","UpdateCurrency","UpdatePurchaseCurrencyWarning","UpdateSeatingInformation","Upload","UploadBarcodes","UploadETickets","UploadFailureMessage","UploadProof","UploadProofOfPurchase","UploadQRCodes","UploadSeatScoreFile","UploadTicketUrls","UploadTicketIds","UrlsToAcceptTickets","UseExistingRoleAsTemplateTitle","UseExistingRoleAsTemplateExplanation","UserManagement","UserNotFound","Users","UsersWithAccess","UseThisAnswerForNext24Hours","Value","ValueDoesNotSatisfyType","ValueType","Variables","VariablesToIncludeInColumns","VendorAccount","VendorAccounts","Vendors","VenueConfigs","VenueMapWelcomeMessage","VenueName","Venues","VenueWideQualityScore","VenueWideInSectionPriority","VenueWideQualityScoreSameZone","VerifyBuyerInfo","VeryAggressive","View","ViewAllAccessiblePermissions","ViewBarcodes","ViewComps","ViewDetails","ViewDuplicates","ViewEditabilityDescription","ViewEmailDetails","ViewETickets","ViewETicketUrls","ViewEventMap","ViewInventory","ViewPurchase","ViewQRCodes","ViewSale","ViewSales","ViewTicketIds","ViewTransferProof","ViewTransferTicket","ViewWallet","ViewZoneMap","Visibility","Visible","VoidBulkPurchaseWarning","VoidPurchase","VoidPurchaseDescription","VoidSinglePurchaseWarning","WasTaxExempt","WastedCost","WastedQty","WastedTickets","WasteUnsoldTickets","Webhook_View_Details","Webhook_Create_Details","Webhook_Edit_Details","Website","WebsiteFloor","WebsiteCeiling","WebsitePrice","WeekOfYear","Weeks","WhatIsAPlacholder","WhatIsASeatSaver","WhatSeatToFulfill","WhatsNew","WhatTicketsDidYouBuy","WhenAndWhere","WhenWhereWho","WhereTicketsWerePurchased","WholeNumber","Widgets","WillCall","Worse","Yes","YesToSome","YourAutoPriceResults","YourBuyer","YourListing","YoureCheaper","YoureMoreExpensive","YourSale","YourSaleMetricsPart1","YourStats","YourSummaryMessage","YourTickets","ZoneMap","ZoneMapDescription","Zones","Zoom","ZoomInstruction","ZtoA","ZtoAArrow","BaseBid","MaxBid","DailyBudget","AddAdCampaign","AddAdGroup","EnterAdCampaignName","EnterAdGroupName","ManageAdGroups","BidModifierDimension","EventBidModifierValue","TicketClass","BidModifier","ViewApplicableListings","AdSpend","AddGenre","AddPerformer","AddEvent","AddTicketClass","AddListings","AddVenue","MaxBidLessThanBaseBidMsg","DailyBudgetLessThanMaxBidMsg","ContentIds","id","defaultValue","FormatContentId","ActivityLogChangeFromTo","ActivityLogChangeFrom","ActivityLogChangeTo","AddAnother","AndXMore","ApplyFilterToReduceCountsToSeeData","ApplyToAllEventsConfirmation","BulkEditMaxItemPreviewDisplayMessage","BulkEditSkippedItemsPrompt","ClassifyAs","CompletedNSecondsAgo","CompletedNMinutesAgo","CompletedNHoursAgo","CopyOf","CouldNotFindListingId","CouldNotFindOrderId","CouldNotFindSaleId","DaysBeforeEvent","DuplicateListingDetails","DuplicatingSeats","EmailAddressFrom","EmailAddressTo","EventsSelected","ExtraBarcodes","ExtraTicketIds","ExtraTicketUrls","FirstTimeVenueEventSetup","HurdleN","InNDays","InNHours","InNMinutes","InvalidTagCharacter","ItemsSelected","LastNDays","LastNHours","LastNMinutes","LastNMonths","ListingInUKNotification","LoadingListingId","LoadingOrderId","LoadingSaleId","MarketplaceListings","MaxAllowedFileSizeMb","MaxReportSizeWarningMessage","MedianPriceWarning","MinDiscountContent","MissingBarcodes","MissingTicketIds","MissingTicketUrls","NCharactersRemaining","NCompleted","NFailed","NIncreaseBy","NDays","NDaysBefore","NHours","NHoursBefore","NMinutes","NMinutesBefore","NoDataAvailable","NotificationTypeListingBroadcastFailed","NotificationTypeListingUnbroadcastFailed","NotificationTypeListingUpdateAllInPriceFailed","NotificationTypeListingUpdateInHandDateFailed","NotificationTypeListingUpdateSplitTypeFailed","NotificationTypeListingUpdateTicketTypeFailed","NotificationTypeListingUpdateUnitNetProceedsFailed","NotificationTypeSellerSupportCaseNewReply","NotUnique","NSelected","NSelectedSections","NUpdated","NWarnings","OnlyForMarketplaces","PacksOf","PageNum","PercentageRelativeTo","ProofOfPurchasedRequiredDetailMessage","RowRangeInputError","SalesForEditTickets","SalesForRemovedTickets","SearchingForListingId","SearchingForOrderId","SearchingForSaleId","SearchItem","SearchResultPick","SeatNumber","ShareQuoted","SwitchTo","TakeMeThereInSeconds","TheseAreThePastSalesOnTheWebsiteAndApp","TicketCount","TicketNumber","TicketPricePercentile","TransactionsLastNHour","TransactionsLastNDay","Uploading","UpToXTagsCanBeIncluded","UrlNumber","VisitsLastNHour","VisitsLastNDay","WelcomeUserMessage","WillDeliverToSecondaryAccount","YourSaleMetricsPart2","YourSaleWithStatus","FormatContentIds","screenSizeState","mobile","tablet","desktop","largeDesktop","ScreenSizeContext","createContext","useScreenSizeContent","useContext","ScreenSizeProvider","children","screenSiseState","setScreenSiseState","useState","isMobile","useMatchMediaQuery","mediaQuery","isTablet","isDesktop","isLargeDesktop","useEffect","breakpoints","mapValues","omit","bp","makeMediaQuery","min","max","mqlRef","useRef","matchMedia","match","setMatching","matches","mql","media","listenerFunc","e","addEventListener","addListener","removeEventListener","removeListener","useMatchMedia","DeviceAwareContentWrapper","defaultId","mobileId","jsx","Content","splitFormatContent","s","replacer","curS","i","foundPlaceholder","placeholder","substring","push","memObj","buildKey","key","entityName","set","contains","truncate","initVal","isEnabled","memoryStore","sessionStorage","setItem","console","str","getItem","removeItem","sessionStorageStore","CONTENT_NOT_FOUND_ENTITY","emptyContentResolver","args","Array","isArray","emptyAppContext","isLoading","contentCache","hasValue","contentResolver","formattedContentResolver","_","params","format","ContentContext","store","useContentContext","ContentProvider","cacheResolver","useCallback","contentsArray","every","invalidContentIDs","includes","map","rawValue","formattedValue","some","React","isValidElement","p","parts","Fragment","raw","FormatContent","BaseContent","formatted","resolved","isString","__html","DOMPurify","sanitize","useContent","contentContext","getContent","useContents","ids","getContents","results","contents","c","concat","useFormattedContent","contentId","getFormattedContent","isContentId","isFormatContentId","contentComparator","contentA","contentB","toLocaleUpperCase","localeCompare","RADIX_SIDE_OFFSET","RADIX_COLLISION_PADDING","MAX_ALLOWED_UPLOAD_FILE_SIZE","mergeProps","defaultProps","props","resultProps","defaultProp","resultProp","clsx","charCodeAt","mergeRefs","refs","val","ref","styled","type","className","Object","assign","forwardRef","createElement","displayName","styledComponent","Component","addClassNameToProps","Button","variant","textColor","shape","size","justifyContent","fontWeight","styles","root","CountBadge","color","badge","DividerLine","Root","DropdownMenu","Trigger","Portal","DropdownMenu.Portal","DropdownMenu.SubContent","DropdownMenu.Content","Item","Separator","DropdownMenu.Separator","separator","Label","DropdownMenu.Label","label","Popover","Popover.Portal","Popover.Content","Arrow","Stack","direction","gap","flexWrap","alignItems","width","height","flexShrink","alignSelf","RadioGroup","RadixRadioGroup.Root","Radio","disabled","containerClassName","RadixRadioGroup.Item","RadixRadioGroup.Indicator","Colors","green075","green100","green150","green200","green300","green400","green450","green500","green600","green700","gray100","gray200","gray250","gray300","gray400","gray450","gray500","gray600","gray700","gray800","gray900","gray1000","blue075","blue075Light","blue100","blue200","blue300","blue500","blue600","blue700","magenta300","yellow100","red100","red200","red300","red400","red500","red600","black","white","darkBlue250","darkBlue300","darkBlue700","dark060","indigo025","indigo050","indigo060","indigo070","indigo075","indigo100","indigo200","indigo300","indigo500","indigo600","indigo700","tuBlue025","tuBlue100","tuBlue200","tuBlue300","tuBlue400","tuBlue500","tuBlue600","fuchsia075","fuchsia100","fuchsia200","fuchsia500","fuchsia600","fuchsia700","aqua075","aqua100","aqua200","aqua500","aqua600","aqua700","neutral000","neutral025","neutral050","neutral075","neutral100","neutral200","neutral300","neutral400","neutral500","neutral600","neutral700","neutral1000","negative075","negative100","negative200","negative500","success075","success100","success500","warning075","warning100","warning500","info075","info100","info200","info500","info700","darkInfo","brandAxs","brandVivid","brandSeatgeek","brandTickPick","brandTicketmaster","brandFanXchange","brandTicketEvolution","brandTicketNetwork","brandTelecharge","brandTicketon","brandSeetickets","brandMgmResorts","brandSmithCenterImport","brandComputicket","brandLyte","brandGoTickets","brandB2BSales","textSeatgeek","textFanXchange","textEventbrite","textTicketon","textEtix","textMgmResorts","backgroundStubhubSeatmap","seatCardBackgroundColor","xs","sm","md","ml","lg","xl","phone","xlDesktop","fontWeightConfig","regular","medium","semiBold","bold","VariantConfig","title1","ScreenVariant","fontSize","sizing","typography","defaultfontWeight","lineHeight","title2","title3","title4","title5","title6","subtitle1","subtitle2","body1","body2","caption1","caption2","multiplier","getStyles","weight","letterSpacing","green025","green050","BASE_LIGHT_PALETTE","neutralPrimary","neutralPrimaryHover","neutralPrimaryActive","textOnNeutralPrimary","borderNeutralPrimary","neutralSecondary","neutralSecondaryHover","neutralSecondaryActive","textOnNeutralSecondary","textOnDisabled","borderDisabled","textDisabledOnSurface","accentPrimary","textOnAccentPrimary","borderAccentPrimary","accentSecondary","textOnAccentSecondary","textAccentOnSurface","errorPrimary","errorPrimaryHover","errorPrimaryActive","textOnErrorPrimary","borderErrorPrimary","errorSecondary","errorSecondaryHover","errorSecondaryActive","textOnErrorSecondary","textErrorOnSurface","successPrimary","textOnSuccessPrimary","borderSuccessPrimary","successSecondary","textOnSuccessSecondary","textSuccessOnSurface","warningPrimary","textOnWarningPrimary","borderWarningPrimary","warningSecondary","textOnWarningSecondary","infoPrimary","textOnInfoPrimary","borderInfoPrimary","infoSecondary","textOnInfoSecondary","textInfoOnSurface","surfacePrimary","surfaceSecondary","textPrimaryOnSurface","textSecondaryOnSurface","textLinkOnSurface","textLinkHoverOnSurface","textLinkActiveOnSurface","textLinkVisitedOnSurface","borderPrimary","borderSecondary","elevated","textPrimaryOnElevated","textSecondaryOnElevated","scrim","STUBHUB_LIGHT","brandPrimary","brandPrimaryHover","brandPrimaryActive","textOnBrandPrimary","borderBrandPrimary","brandSecondary","brandSecondaryHover","brandSecondaryActive","textOnBrandSecondary","textBrandOnSurface","textBrandOnElevated","borderRadius","m","l","xxl","circle","squared","shadowConfig","shadow","level","shadowPosition","shadowBlur","offset","spacing","multipliers","purpleBranding","primary100","primary200","primary700","secondary075","secondary100","BaseTheme","rounded","floatingInputLabel","filledInLoading","logoPath","colors","primary025","primary050","primary060","primary070","primary075","primary150","primary300","primary400","primary500","primary600","secondary","secondary200","secondary300","secondary400","secondary450","secondary500","secondary600","secondary700","secondary800","secondary900","secondary1000","secondary1200","newSecondary075","newSecondary100","newSecondary200","newSecondary500","newSecondary600","newSecondary700","accent075","accent100","accent200","accent500","accent600","accent700","info300","info1000","textPrimary","textPrimaryHover","textSecondary","textBrand","textBrandHover","textDisabled","textInverted","textStrong","textDarker","textDarkest","textHighlight","textLinkPrimary","textLinkActive","textLinkHover","textLinkVisited","textLinksGroupPrimary","textOnBrandBg","textOnBrandBgLink","textOnBrandBgHover","textNavPrimary","textNavActive","textNavHover","textNavVisited","textNegative","textSuccess","textInfo","textWarning","textLogoVggGray","textLogoVggGreen","backgroundNegative","backgroundNegativeDark","backgroundNegativeHover","backgroundSuccess","backgroundWarning","backgroundInfo","backgroundPrimary","backgroundSecondary","backgroundInteraction","backgroundHover","backgroundDark","backgroundNeutral","backgroundDisabled","backgroundActiveDisabled","backgroundAccent100","backgroundAccent700","overlayPrimary","backgroundBrandActive","backgroundBrandHover","backgroundBrandLight","iconPrimary","iconHover","iconDisabled","borderActive","borderInverted","borderDark","borderNeutral","borderActiveDisabled","borderNegative","link100","highlight100","highlight200","highlight300","highlight400","highlight450","highlight500","highlight600","highlight700","urgency100","urgency200","urgency250","urgency300","urgency500","warning","danger200","error100","palette","PurpleTheme","OldTheme","PurpleLegacyTheme","TicketUtilLegacyTheme","vars","IconsFill","currentColor","PaymentSize","PaymentViewbox","square","rect","SvgWrapper","iconSize","fill","title","align","withHoverEffect","onClick","onMouseDown","onMouseEnter","onMouseLeave","role","ariaHidden","stroke","newUniqueId","uniqueId","StyledSvg","svg","theme","AccessibilityIcon","AisleSeatIcon","ArtistIcon","BackIcon","BarcodeIcon","CalendarOutlineIcon","ChatIcon","CheckIcon","ClockIcon","noOutline","fillColor","jsxs","ConnectedIcon","CrossIcon","DeleteIcon","DollarIcon","DownloadIcon","EditIcon","ErrorOutlineIcon","ErrorSolidIcon","ExpandIcon","FilterIcon","FoldIcon","ForwardIcon","GenericDisclosuresIcon","GenericFeatureIcon","HideIcon","HistoryIcon","HomeOutlineIcon","InfoOutlineIcon","InfoSolidIcon","ListIcon","LoadingIcon","LocationOutlineIcon","LockIcon","MailIcon","MinusIcon","MobileTicketIcon","MobileTransferIcon","MoreIcon","MyTicketsOutlineIcon","NotifyIcon","ObstructedViewIcon","PaperTicketOutlineIcon","PaperTicketsOutlineIcon","ParkingPassIcon","PdfIcon","PlusIcon","PrintAtHomeIcon","ProcessingIcon","ProfileOutlineIcon","ReloadIcon","ResetIcon","SearchOutlineIcon","SearchSolidIcon","SeatIcon","SeatMapIcon","SellOutlineIcon","SettingsIcon","ShareIcon","SuccessOutlineIcon","parsedWidth","parsedHeight","attr","parseInt","inheritedWidth","inheritedHeight","hoverEffect","cursor","TicketAlertOutlineIcon","ToBeDeterminedIcon","UnHideIcon","UploadIcon","WalletOutlineIcon","WarningOutlineIcon","WarningSolidIcon","ArrowDownIcon","ArrowDownIcon7","ArrowUpIcon","ArrowUpIcon7","CalendarIcon","ChevronDownIcon","ChevronLeftIcon","ChevronRightIcon","ChevronUpIcon","SigninIcon","SignoutIcon","sizes","isSquare","BankAccountIcon","GeneralIcon","PaypalIcon","WalletIcon","WireIcon","defaultTimingFn","elapsed","Math","pow","useAnimateScroll","pxPerSecond","timingFn","scrollDirection","rafHandle","startScrollState","startTimestamp","prevTimestamp","animateScroll","timestamp","scrollTop","startScrollTop","scrollLeft","startScrollLeft","maxScrollTop","scrollHeight","clientHeight","maxScrollLeft","scrollWidth","clientWidth","requestAnimationFrame","startScroll","endScroll","cancelAnimationFrame","EDGE_THRESHOLD","getScrollEdgesState","el","atTop","atBottom","abs","atLeft","atRight","useScrollEdges","scrollEdgesState","_setScrollEdgesState","setScrollEdgesState","prev","isEqual","resizeObserver","ResizeObserver","observe","disconnect","handleScroll","capture","passive","ScrollAreaContext","viewportRef","RadixScrollArea","Viewport","Scrollbar","Thumb","Corner","ScrollArea","showScrollEdges","scrollAreaRefActions","scrollButtonClassName","ScrollEdges","edges","useImperativeHandle","SelectContext","isDefaultValueSelected","setIsDefaultValueSelected","Select.Root","onValueChange","hideFoldButton","Select.Trigger","trigger","Select.Icon","style","Select.Value","contentRef","onTouchEnd","preventDefault","Select.Portal","Select.Content","elem","Select.ScrollUpButton","Select.Viewport","Select.ScrollDownButton","prefixIcon","Select.Item","Select.ItemText","Select.ItemIndicator","Table","Thead","showBottomBorder","Tbody","Tr","Th","Td","Switch","RadixSwitch.Root","RadixSwitch.Thumb","textArea","alignment","textBox","Input","onKeyDown","stopPropagation","Provider","RadixTooltip","contentVariant","RadixTooltip.Portal","RadixTooltip.Content","RadixTooltip.Arrow","Tooltip","triggerContent","delayDuration","contentStyle","open","rest","TooltipPopover","onClosed","Popover.Root","Popover.Trigger","Popover.Arrow","UpDownComboButton","onUpClick","onDownClick","isCondensedView","xxs","OkButton","textContentId","GenericDialogContext","isDialogOpen","setIsDialogOpen","useGenericDialogContext","GenericDialogProvider","useDefaultZoomOption","defaultZoomOption","SiteZoomOption","tryInvokeApi","f","onError","onFinally","error","Sentry","err","warn","appContext","mainRoute","loginContext","activeAccountWebClientConfig","setLoginContext","setMainRoute","cobrandId","overrideCoBrandId","AppContext","useAppContext","AppContextProvider","showErrorDialog","useErrorBoundaryContext","loadingAppContext","setLoadingAppContext","reactAppContext","setReactAppContext","cobrandIdOverride","setCobrandIdOverride","initAppContextIfNeeded","setLoginContextWrapper","newLC","isSuccess","user","activeAccount","accountName","userId","userName","impersonatedUsername","useMemo","activeAccountUserId","STUBHUB_LOGO_IMAGE","URL_REGEX","SEAT_RANGE_REGEX","SaleDeeplinkQueryParam","InventoryDeeplinkQueryParam","PurchaseDeeplinkQueryParam","AdCampaignQueryParam","AdGroupListingsQueryParam","PurchaseFromEmailPoQueryParam","EventIdQueryParam","SearchResultIdQueryParam","VendorIdQueryParam","MarketplacePaymentIdDeeplinkQueryParam","EventSessionIdQueryParam","EventSessionRoleQueryParam","DemandDashboardIsOnSaleEventQueryParam","DemandDashboardEventIdQueryParam","TICKETMASTER_APP_ID","EMPTY_SELLER_USER_ID","FULFILLMENT_PROVIDER_SELLER_USER_IDS","Set","REACT_QUERY_CACHE_MAX_AGE_IN_MS","MAX_DATE","MIN_DATE","DATA_REFRESH_RATE_IN_MILLIS_FAST","DATA_REFRESH_RATE_IN_MILLIS_SHORT","DATA_REFRESH_RATE_IN_MILLIS_LONG","UK_COUNTRY_CODES","US_COUNTRY_CODES","SuspiciousPriceChangeThreshold","MAX_NUM_OF_ITEMS_FOR_FLATTENED_VIEWS","process","MAX_NUM_OF_ITEMS_FOR_REPORT_VIEWS","VenueMapConfigPlaceholder","VenueMapVersionPlaceholder","VenueMapUrl","VenueMapV3Url","REACT_APP_STUBHUB_BASE_URL","REACT_APP_VIAGOGO_BASE_URL","REACT_APP_APP_INSIGHTS","REACT_APP_NAME","REACT_APP_STUBHUB_MY_HUB_BASE_URL","REACT_APP_STUBHUB_UK_URL","REACT_APP_REPORTS_BRIDGE_URL","DEFAULT_AUTO_GENERATED_PAYMENT_METHOD","MarketplaceEventIdPlaceholder","MarketplaceEventUrlTemplate","AppTelemetryProvider","instrumentationKey","pageId","disableFetchTracking","SellerUserSettingsContext","SellerUserSettingsProvider","initialUserSettingIds","trackError","sellerUserClient","queryKey","queryResult","useQuery","queryFn","meta","persist","trackErrorData","enabled","staleTime","Infinity","refetchOnWindowFocus","contextSettingIds","contextQueryKey","FirstTimeFeature","EventMapBanner","useServerUserSetting","sellerUserSettingsContext","userSettingsContextQueryResult","contextIsReady","isFetched","isRefetching","isPending","defaultGetSellerUserSetting","defaultSetSellerUserSetting","queryClient","useQueryClient","setUserSetting","newData","setQueryData","success","invalidateQueries","DEFAULT_ZOOM_OPTION","SiteThemeOption","SITE_THEME_MODE_STORAGE_KEY","SITE_ZOOM_STORAGE_KEY","siteThemeContextDefaults","isDarkMode","setSiteMode","setSiteZoom","selectedMode","selectedZoom","isZoomSupported","SiteThemeContext","SiteThemeContextProvider","modeToThemeMap","setIsZoomSupported","setSelectedZoom","setSelectedMode","serverSiteThemeValue","setThemeUserSetting","serverSiteZoomValue","setZoomUserSetting","mode","zoom","lsScheme","localStorage","lsZoom","hasFeature","useSiteTheme","useKeyPress","targetKey","isPressed","setPressed","downHandler","upHandler","useListenForEscapeKeyPressed","DialogHeader","ModalHeader","DialogFooter","ModalFooter","DialogBody","ModalBody","CrossIconContainer","span","GenericDialog","header","footer","isFullHeight","contentClassName","includeCloseButton","scrollable","isOpen","onCancel","isEscapeKeyPressed","setTimeout","RSModal","darkModeRoot","getErrorInfoFromStatusCode","statusCode","messageText","headerDisplay","messageDisplay","KnownGenericErrors","uiResult","StatusCodes","ErrorDialog","headerText","onOkay","useBasicDialog","showDialog","setShowDialog","openByDefault","launchDialog","closeDialog","handleOkay","handleCancel","dialogProps","ErrorBoundaryContext","genericError","ErrorBoundaryContextProvider","useErrorTracker","setMessage","setStatusCode","customerHeader","setCustomerHeader","onDismissError","setOnDismissError","logClient","trackErrorWrapper","errorId","location","getLogLevel","statusStr","dataSerialized","logLevel","applicationSource","pageUrl","href","componentStack","additionalInfo","responseStatus","newLoginContext","additionalOptions","onErrorOk","SiteContentProvider","contentQuery","networkMode","hasAnyOfPermissions","userDetail","permissions","userPermissions","filter","hasPermissionForListing","listing","forBulkEdit","isPricerOf","isPurchasedBy","pricerId","isCurUserPo","poBys","hasPermissionForSale","sale","isFulfillerOf","fulfillerId","owners","pricerIds","buyerIds","hasPermissionForPurchase","purchase","allowForNewCreate","perms","ALL_INVENTORY_VIEW_PERMISSIONS","ALL_SALES_VIEW_PERMISSIONS","checkFeatureState","feature","featureDetails","fDetails","find","fd","isMarketplaceActive","marketplaceSetting","hasApiToken","hasApiRefreshToken","tokenExpired","hasAccessToRoute","route","hasInventoryView","hasSalesView","hasHomePageNotifFeature","canViewNotifications","features","reportingV2FeatureAvailable","reportSinglePagedV1V2FeatureAvailable","getHasAccessToRoutes","featuresOverride","sortSellerAccount","accounts","toSorted","aTag","bTag","hasFeatures","useUserHasFeature","hasFeatureResult","PosTablePaginationFooterHeight","ActiveFocusContext","activeItem","setActiveItem","onKeyDownHandler","ActiveFocusContextProvider","rows","setRows","index","inputRows","isArrowDown","isArrowUp","effectiveRows","newIndex","useActiveFocusContext","IconButtonContainer","div","withConfig","componentId","IconButton","icon","titleContentId","ButtonWithIcon","iconOnlyMode","startWithText","defaultStyle","CancelButton","effectiveVariant","ConfirmButton","ExpireHoldButton","useListExpansion","initialExpandedItems","expandedListItems","setExpandedListItems","isListItemExpanded","itemId","indexOf","toggleListItemExpansion","itemIds","curCount","newLists","setListItemExpansion","items","hasChanged","refreshExpandedListItems","getFlattenedListings","listings","groupIdNameMap","flattenGroupItems","isLtGrp","groupType","ltGrpId","groupName","groupItems","flatMap","updateCatalogResults","catalogResults","expandedEventsData","finalCatalogResults","events","expandedEventData","curEvent","listGrpCnt","ungrListCnt","listCnt","sales","salesCnt","ticketGroups","tktGrpsCnt","entities","counts","getEventsWithNonZeroCounts","requireEventNotNull","ev","event","poCnt","hasEventsWithFullLoadedData","removeSpecialChars","removeAccents","DEFAULT_TIMEZONE_LOCAL","Intl","DateTimeFormat","resolvedOptions","timeZone","FormatOption_Standard","Millions","Thousands","Whole","Precise","FormatOption_Seating","Seating_OriginalSeating","Seating_FullSeating","Seating_SectionOnly","FormatOption_Event","Event_FullInfo","Event_EventName","FormatOption_DateTime","DateTime_MMDD","DateTime_MMDD_Time","DateTime_MMDD_Time_Day","DateTime_MMDDYY","DateTime_MonthDD","DateTime_MonthDD_Time","DateTime_MonthDD_Time_Day","DateTime_Month_DD_YY","DateTime_Month_DD_YY_Time","DateTime_Month_DD_YY_Time_Day","FormatOption_EnumDisplay","EnumDisplay_Icon","EnumDisplay_Text","FormatOption_Percent","Percent_RoundToTwo","Percent_RoundToOne","Percent_RoundToWhole","Percent_AsDecimal_RoundToOne","Percent_AsDecimal_RoundToTwo","Percent_AsDecimal_RoundToThree","FormatOption_HiddenCustomFormat","Actions_LinkOnly","Id_RawIdOnly","FormatOption","getLastDateRange","duration","end","start","startOfDay","sub","endOfDay","getNextDateRange","add","getLastDateRangeRelative","roundingMode","now","relativeStartSecs","getTime","relativeEndSecs","getNextDateRangeRelative","DateRangePresetName","Last90Days","StandardDateRangePresetNames","SaleDateRangeRelativePresetNames","InhandDateRangePresetNames","EventDateRangePresetNames","NextDateRangePresetNames","PastDateRangePresetNames","PurchaseDateRangePresetNames","DateRangePresetsMap","range","days","startOfWeek","endOfWeek","startOfMonth","endOfMonth","startOfYear","endOfYear","weeks","months","years","subYears","subDays","DateRangePresets","values","getDateRangePresets","presetNames","drp","DateRangeRelativePresetsMap","DateRangeRelativePresets","getDateRangeRelativePresets","DatePresetName","getDatePresets","targetDate","inHandDaysBeforeEvent","DatePresets","dp","StandardDatePresetNames","subWeeks","formatDate","dateString","intlFormat","month","day","year","formatDateRange","differenceInDays","toISOString","from","to","toDateTimeRange","date","startRel","endRel","formatRelativeDateRange","dateRage","startDate","endDate","getDateRangeRelativePresetDisplayText","preset","textOverflow","overflow","getDateRangePresetDisplayText","getDatePresetDisplayText","toZonedTime","daysBeforeEventLabel","getPresetFromUiDateTimeRange","getRelativePresetFromUiDateTimeRange","getPresetFromDate","selectedDate","getUiDateTimeRangeFromPreset","onlyIncludes","presetEnum","tryGetDateRangePresetSuggestionText","tryGetDateRangeRelativePresetSuggestionText","tryGetDatePresetSuggestionText","stringToUtcDate","inputStringWithTimeZone","isValid","parseISO","split","divideDateInterval","interval","n","toTemporalInstant","call","fromDate","toZonedDateTimeISO","Temporal","timeZoneId","toDate","durationUntil","until","durationMonths","round","largestUnit","smallestUnit","relativeTo","period","Duration","compare","floor","total","dates","curr","epochMilliseconds","getDisabledDatesForTimeFrameFilter","timeFrameFilter","addDays","isDatePassedHours","dateTime","hours","differenceInHours","getTimeAgoString","formatDistance","addSuffix","convertDateToTemporalPlainDateTime","toPlainDateTime","getEventDateDisplayStrings","dateFormat","subDateFormat","formattedEventDate","formattedEventSubDate","SQL_MAX_DATEITME","isSqlMaxDate","getFullYear","getMonth","getDate","validateDate","dateObj","errorConfig","errors","parsedStartDate","parsedEndDate","invalidStartDate","invalidEndDate","endDateBeforeStartDate","getEventTimeFrameFromDateTimeRange","roundRelativeDateUp","roundRelativeDateDown","INT_MAX_VALUE","roundToPrecision","decimalPlaces","factor","formatNumber","decimal","isUnbounded","toLocaleString","minimumFractionDigits","maximumFractionDigits","formatPercent","formatCurrency","precisionOptionMappings","suffix","roundToDigits","DECIMAL_OPTION_MAPPINGS","displayAsDecimal","applyNumberFormatting","inputNumber","isDateTime","currencyDecimalDigits","isPercent","enableUtcFallback","localeText","precision","inputDate","formatStr","formatInTimeZone","defaultDecimalOption","precisionValue","MILLISECONDS_IN_SECOND","SECONDS_IN_MINUTE","MINUTES_IN_HOUR","HOURS_IN_DAY","DAYS_IN_WEEK","getTimeDateDifferenceAsShorthand","dateToCompareTo","hideRelativeTerms","ago","in","agoText","inText","nowText","difference","isDateInFuture","relativeSeconds","relativeMinutes","relativeHours","relativeDays","relativeWeeks","returnWrapper","numberToOrdinal","calcSeatScore","sum","getCompleteEventConfigScoreOverrides","defaultScoreOverrides","scoreOverrides","defaultAllScoresToZero","scaleScoreRaw","so","scoreRaw","score","maxDefaultScoreRaw","reduce","curOverridesMap","cur","sectionId","rowId","dfScore","getEventConfigScoreOverride","venueMapConfig","newName","eventConfigScoreOverride","defaultConfigPayload","isOverrideTemplate","cfgId","venueCfgId","cfgPayload","sectionScores","isTemplate","getRowRepresentingSectionMedianScore","seatScores","s1","s2","getMedianScoreForSection","median","getMatchingSectionRow","sections","sectionName","section","trim","rowName","row","specRow","ticketClassId","tktClass","getSectionsSameZone","getSeatScore","seatScore","sso","updateScoreForSectionMaintainingRowScoreRatio","newScore","newScoreOverrides","overridesToEdit","updateScoreMaintainingRowScoreRatio","scores","med","ratio","half","SectionDisplay","lowestPrice","medianPrice","highestPrice","sectionAreaName","seatQualityScore","MultiSectionsDisplay","onClearSelection","GeneralAdmissionContainer","GeneralAdmissionHeader","GeneralAdmissionText","rawFetch","url","ok","contentTypeHeader","entries","json","statusText","ColorBand","numOfSteps","spectrum","labels","colorSteps","rainbow","Rainbow","setNumberRange","setSpectrumByArray","colorAt","ColorStep","backgroundColor","addFocalPoint","svgElement","focalPoint","x","y","getElementById","document","createElementNS","setAttribute","appendChild","image","angleDeg","isDirectional","CircleArrowUp","circle2","VenueMapContentContainer","isWhiteBackground","StyledDiv","isRelocatedStaticInfo","removePinchZoom","setTransitionAnimation","blurMap","hideMap","StyledResetVariant","showFiltersOnTop","IconParent","button","StyledIconParentVariant","StyledBorderDiv","StyledHoverDiv","isSeatingMatchSectionInfo","sectionText","SECTION_TYPES_WITH_ROWS","isMissingRowData","venueMap","sectionsWithRow","sectionType","hasNonSpeculativeRows","isSpeculative","findTicketClass","seating","sectionInfo","filterSectionByZone","classId","ticketClass","filterSectionByRowType","isMissiongSectionData","ordinal","checkIntersection","pointA","pointB","topLeft","left","top","topRight","right","bottomLeft","bottom","bottomRight","lineIntersects","compareA","compareB","denominator","t","u","crossesPoints","points","drawLines","context","clearRect","canvas","strokeStyle","beginPath","moveTo","lineTo","closePath","registerDrawLine","svgElementRef","onDoubleClickStart","onDoubleClickDone","allowDrawLine","parentElement","element","rectPoints","resetCanvas","curreParent","removeChild","onDoubleClick","shiftKey","ctrlKey","altKey","metaKey","offsetX","offsetY","getBoundingClientRect","clientX","clientY","position","getContext","onMouseMove","currentPoint","outline","moved","sqrt","registerPanningListners","isPanning","willClick","downEvent","panningHandlers","mousedown","mousemove","mouseup","eventName","AddFileIcon","SignalStep0Icon","SignalStep1Icon","SignalStep2Icon","SignalStep3Icon","AnimatedBroadcastIcon","step","setStep","timer","setInterval","clearInterval","AnimatedUnbroadcastIcon","AxsLogo","BroadcastFailedIcon","BroadcastIcon","BroadcastIconInverted","BroadcastWithErrorIcon","CompanionIcon","ConfigureIcon","CopyIcon","DiskSaveIcon","DotIcon","DuplicateOutlinedIcon","FlattenedViewIcon","FullPageIcon","FullySoldIcon","GametimeLogo","darkLogo","GroupItemIcon","HamburgerMenuIcon","LayoutIcon","ListingGroupIcon","ListingIcon","MapIcon","MarginMetricIcon","MergeIcon","MobileQRIcon","MoneyIcon","OpenLinkIcon","PurchaseIcon","RecenterIcon","SaleAlertIcon","SalesMetricIcon","SeatGeekLogo","SeatSaverIcon","SignalIcon","SplitIcon","StubHubLogo","colorMode","letterColor","StubHubProLogo","TagIcon","TicketmasterLogo","TicketUtilLogo","TickPickLogo","UnbroadcastIcon","ViagogoLogo","VividSeatsLogo","CondensedColorBand","startLabelContentId","endLabelContentId","startText","endText","VenueMapContentCondensed","localRef","colorBandProps","statsContent","mapActionContainerClassname","v3","onZoom","onReset","containerRef","useMeasure","useDebounce","minHeight","clickEvents","MaxSimilarSectionsToGetForSelectedSections","ZOOM_SCALE_SENSITIVITY","defaultBackground","defaultForeground","defaultHoverBackground","backgroundPrimaryHover","defaultHoverForeground","selectedBackground","backgroundHighlight","selectedForeground","selectedHoverBackground","backgroundHighlightHover","selectedHoverForeground","VenueMapContent","selectedSections","markedSectionIds","onSectionClicked","onSectionHovered","setSelectedSections","staticInfoContent","infoIconContent","availableSections","isZoomEnabled","isPanEnabled","showDefaultMapColors","getColor","isHeatMap","shouldRepaint","disableHoverEffect","onRemoveEventListenersRef","onDoulbeClickDoneRef","mapLoaded","setMapLoaded","deregisterDrawLine","hoveredContent","setHoverContent","zoomFlag","setZoomFlag","setBlurMap","setHideMap","sectionIdsMissingRowOrder","getElementsByTagName","venueMapSvg","svgPanZoom","fit","contain","zoomScaleSensitivity","resize","center","clearTimeout","sprites","querySelectorAll","getSpriteIdentifier","isEmpty","zoomEnabled","panEnabled","dblClickZoomEnabled","onPan","debounceOnResize","debounce","onResize","mouseEnter","target","htmlTarget","localName","child","getAttribute","selectedSectionId","sectionIndex","findIndex","mouseLeave","setSelectedHandler","mouseEvent","selectedTicketClassId","selectedSection","selectedSectionIndex","filteredSprites","g","lookDistance","surroundingSections","fs","ss","path","spriteIdentifier","missingRowOrder","textSiblings","sibling","textContent","isSelected","isMarked","knownSection","knownRow","strokeWidth","slice","borderWarning","clickFunc","filteredSpritesByTicketClass","onAddingEventListeners","onRemoveEventListeners","selectedIds","updatedSections","has","uniqBy","deregisterPanEvents","zoomIn","zoomOut","flexGrow","domParser","DOMParser","VenueMap","isGeneralAdmissionOnly","svgMapUrl","mapQuery","parseFromString","isNewMap","XMLSerializer","serializeToString","DealUndercutIcon","ParentListingModeIcon","QualityScoreModeIcon","RowExtrapolationUndercutIcon","SameEventModeIcon","SameSectionModeIcon","SameZoneModeIcon","SimpleUndercutIcon","UndercutPriceSettingsMode","UNDERCUT_PRICE_MODE_OPTIONS","PRICE_FLOOR_CEILING_MODE_OPTIONS","OutlierModeKthLowestStrategy","Relative","Absolute","OUTLIER_MODE_KTH_LOWEST_STRATEGY","display","validateCompListingSettings","clearErrors","setError","setValue","listForm","compListingFloorCeilingError","requiredMsg","errorField","isStrategy","hasErrors","compListingMode","compListingFloor","compListingCeiling","compListingOnlyForSelectedSectionsEnabled","compListingSelectedSectionSettings","autoPricingEnabled","skipCompListing","shouldFocus","DEFAULT_COMP_LISTING_FLOOR","sectionIdFilter","validateUndercutSettings","undercutMode","undercutAbsoluteAmount","undercutRelativeAmount","skipUndercut","DEFAULT_UNDERCUT_ABSOLUTE_AMT","DEFAULT_UNDERCUT_RELATIVE_AMT","validateNetProceedsSettings","floorMustBeLessThanCeilingError","netProceedsCeiling","validateAutoPricingSettings","getUndercutPriceSettingMode","getUndercutPriceRepresentingMode","absValue","DEFAULT_COMP_LISTING_CEIL_MORE_THAN_FLOOR","SLIDER_MIN","SLIDER_MAX","convertSliderValueToServer","convertSliderValueFromServer","getCompListingModeIcon","getUndercutModeIcon","getSectionInfoDisplay","hoveredSection","compListings","filteredCompListings","sellerAllInPrice","amt","l1","l2","sellerNetProceeds","disp","medianIndex","median1","median2","avgMedian","dec","quantityFiltersFromJson","quantitiesFilterJson","quantitiesFilter","exactQuantities","exact","greaterThanOrEqualToQuantity","gte","EVENT_TYPE_PARKING","getEventPerformerVenue","viagVirtId","catalog","performer","venue","lookupEventInCatalog","getPerformerAndVenueForEvent","perfId","performers","venues","venueId","getIsInternationalEvent","countryCode","countryList","getLabel","toUpperCase","getFormattedEventName","slimMode","useShortName","shortName","boldText","dimText","normalText","vsText","atText","cat","genre","lowerCasedEventName","lowerCasedPerformer","descr","indexOfVs","team1","team2","team1Text","team2Text","homeTeam","awayTeam","getEventDisplayText","eventNameConnector","eventSubName","eventDisplayName","performerIds","venueIds","eventTimeFrameFilter","filteredData","startDateObj","setHours","getHours","endDateObj","searchTerms","formattedVenuesNames","formattedEventName","formattedVenueName","term","sortEvents","sortBy","ap","aText","bText","sortEventsByDate","aStart","bStart","sortEventsByName","transformData","isExpandedDataLoading","filterZeroCounts","setExpandedEventData","viagVirtualId","eventData","getDataFail","failedToRetrieveData","posEvIds","realId","viagIdToLatestIdLookup","posIdToViagIdLookup","compareEventsByDateStr","e1","e2","colId","d1","getValue","d2","compareEventsByDate","compareEventsByName","data1","data2","name1","name2","compareEventsByVenue","venueName1","venueName2","compareEventsByLocation","locationName1","locationName2","getInHandDateBasedOnEvent","daysBeforeEvent","eventStartDate","threeDaysAgo","setDate","eventForm","eventAutoPricing","compareMarketplace","useCustomTimeZoneSettings","hasTimeZoneFeature","shouldQuery","mutation","useMutation","mutationFn","onMutate","cancelQueries","prevValue","getQueryData","onSettled","customTimeZoneSettings","mutateAsync","SiteTimezoneContextDefaults","timezoneOffsetMins","getTimezoneOffset","fromZonedTime","SiteTimezoneContext","SiteTimezoneContextProvider","toZonedTimeWrapper","fromZonedTimeWrapper","useSiteTimezoneContext","AdminHoldIcon","AdminHoldBadge","showDetailOnHover","holdTxt","padding","PosDropdown","rootProps","triggerProps","cloneElement","PosDropdownItem","keepOpenAfterSelection","closeRef","click","Popover.Close","createActivePosEntityContext","once","useActivePosEntityContext","ActivePosEntityProvider","getActivePosEntity","onSetActiveItemCompleteCallback","errorInfo","setErrorInfo","setIsLoading","ActivePosEntityContext","posEntityInfo","setPosEntityInfo","updateItemInEvent","useCatalogDataContext","getAndUpdateCatalogDataForEntity","posEvId","client","updateActivePosEntityInfo","posEntity","posEntityId","setActivePosEntity","posEntityDisplayId","forceRefresh","dataToGet","resetData","isSameEntity","errorHeader","errorMessage","useGetEventMapConfig","venueMapQuery","useGetEventMapConfigOverrides","seatScoreOverridesQuery","shouldQuery2","sellerAccountScoreOverridesQuery","useGetEventMapsByScoreModelConfig","venueMapsByScoreModelQuery","useGetEventAutoPricingSettings","getIsAllListingEnabledForAutoPricing","hasAutoPricingFeature","viagId","pricingSettingsQuery","retry","retryDelay","attemptIndex","allListingEnabledPricingQuery","posIds","pricingSettings","allListingEnabledPricing","EventMappingStateFilter","DefaultEventGroupingQuery","groupingType","VIEW_MODE_SETTING_ID_TO_DEFAULT","EmptyEntityWithTicketsQuery","entityIds","eventOrMappingIds","oldPosEventIds","marketplaceEntityIds","countryCodes","stateProvinceIds","cityIds","purchaseOrderIds","listingIds","purchaseVendorId","vendorAccessControlProviderId","purchaseVendorOrderId","purchaseVendorAccountIds","purchaseBuyerId","inHandDates","eventDates","eventNotReviewedSinceDate","sectionContains","sectionEquals","rowContains","rowEquals","sectionNotContains","rowNotContains","eventTagName","eventTagValue","topLevelCategories","parentCategories","numberOfTicketsHeld","lastSaleDates","noSaleDates","isSeatSaver","purchaseDates","purchaseOrderCreatedBy","purchaseCommissionUserId","internalNotes","internalNotesContains","internalNotesEquals","internalNotesNotContains","eventStatuses","currencyCodes","isMapped","isMappingRejected","EmptySaleQuery","saleStatus","saleStatuses","paymentState","marketplacePaymentState","saleDates","ticketType","soldOnMarketplace","fulfillerSellerUserId","paymentDates","fulfillmentDates","cancellationDates","fulfillmentStates","listingInsertBy","viewMode","DefaultSaleQuery","EmptyListingQuery","pricerSellerUserId","isPredelivered","isListed","deliveryType","hasUnsoldTickets","eventHasUnsoldTickets","hasBroadcastError","isAutoPricingEnabled","isPricedAboveZero","eventUnpricedStatus","autoPricingResultTypes","isSeatingUnmapped","isAdminHold","isDuplicate","lastPriceUpdateDates","lastPriceNoUpdateDates","isPricedByMarketplace","isPendingProof","purchaseCancellationDates","purchaseCancelledOnly","DefaultListingQuery","EmptyOnSaleEventQuery","onSaleDates","DefaultOnSaleEventQuery","EmptyPurchaseQuery","ticketGroupIds","purchaseMonths","paymentMethod","paymentStatus","totalCostHigh","totalCostLow","purchaseOrderState","paymentMethodId","paymentCurrencyCodes","isConsignment","DefaultPurchaseQuery","EmptyCommissionQuery","isCommissionEligible","commissionEligibilityDates","DefaultCommissionQuery","EmptyReportEntityWithTicketsQuery","EmptyReportV2SaleQuery","DefaultReportV2SaleQuery","EmptyReportV2ListingQuery","DefaultReportV2ListingQuery","EventUiSort","DateDesc","DateAsc","getEventUiSort","getEventSort","sort","getAppliedFilterCounts","currentFilter","initialFilter","ignoreKeys","initKeys","keys","initValue","curValue","isFilterApplied","currentValue","initialValue","getAppliedFilters","currentFilterQuery","initialFilterQuery","ignoreFilterIds","filtersGroups","initialKeys","filtersMap","filterGroup","filterItem","filterId","appliedFilters","filterQueryKeys","fId","MainFilterQueryParam","removeEntityIdsIfHasSearchId","copy","entityQuery","deleteDefaultFields","baseQuery","queryValueTransformToUrl","baseEntry","queryValueTransformFromUrlBase","mapToBaseQuery","queryValueTransformFromUrl","queryValue","getQueryFromUrl","urlSearchString","filterQueryParam","URLSearchParams","getUrlFilterQueryParam","baseSearchParams","searchParams","isFilterQueryParamEmpty","mainFilters","removeFilters","urlSearchParams","filtersKeyToRemove","searchFilterParams","mainFilter","filters","filterKey","getLastNDaysSaleQuery","today","lastNDays","getPurchaseOrderIdSaleQuery","getPurchaseOrderIdListingQuery","YesNoEnum","LastReviewedSinceDate","LastThreeDays","LastTwoWeeks","LastThirtyDays","TextFilterEnum","ToEventMappingStateFilter","FromEventMappingStateFilter","eventMappingStateFilter","ToYesNoEnum","FromYesNoEnum","yesNoEnumValue","isFilterUnchanged","emptyQuery","rest1","x1","x2","x3","x4","x5","x6","x7","x8","rest2","createFilterQueryContext","useFilterQueryContext","FilterQueryContextProvider","initialQuery","saveQueryInUrl","loadQueryFromUrl","viewModeSettingId","FilterQueryContext","useLocation","setSearchParams","useSearchParams","isQueryInitialized","setIsQueryInitialized","readQueryFromUrl","setReadQueryFromUrl","queryFromUrl","setQueryFromUrl","filterQuery","setFilterQuery","tempQuery","setTempQuery","handleFilterChange","constState","refConstState","tempQueryFromUrl","searchQuery","queryParamsToSet","delete","defaultViewModeUserSetting","isViewModeSettingLoading","timezoneOffsetMinsAccount","resetTempQuery","queryKeys","newTempQuery","SuggestionsContainer","SuggestionsHeading","SuggestionContainer","Suggestion","selectedDateRange","useSiteTimeZone","hideSuggestionTitle","handleClick","dateRange","presets","presetName","DateRangeTriggerContent","DateRangeTrigger","backgroundPrimaryActive","IconContainer","CustomDateRangeButton","DateErrorContainer","ul","DateRangePickerContainer","DateRangeSelector","startDatePlaceholder","endDatePlaceholder","dateDisplayFormat","retainEndDateOnFirstSelection","rangeColors","onChange","onBlur","useRelativePresets","onPreviewChange","isEndDateFixed","displayTextStyle","presetProps","currentLocale","showDatePicker","setShowDatePicker","setIsOpen","dateValue","setDateValue","code","dateErrors","setDateErrors","defaultDateRangeDisplayText","defaultFromlabel","defaultToLabel","dateErrorConfig","getFormattedDate","time","onDateRangePickerChange","newValue","onClear","onSuggestionClick","onSuggestionRelativeClick","getDisplayText","suggestionText","suggestionTextRelative","startZoned","endZoned","highlightDropBox","paddingTop","ReactDateRange","rangeSelectorEndDate","PosEnumSelect","valueOptionsContent","bind","o","PosTextField","onKeyUp","trimOnBlur","prefixDisplay","postfixDisplay","customOnBlur","TextField.Root","TextField.Input","getTextFieldState","SelectInputSearch","searchPlaceholder","onSearchTextApplied","searchInput","allowSearchAsInput","refInput","focus","currentTarget","SpinnerWrapper","centered","SpinnerContainer","SpinnerSVG","circleAnimation","keyframes","circleWrapperAnimation","SpinnerCircleWrapper","SpinnerCircleSVG","PosSpinner","counter","setCounter","currentShape","shapes","spinnerLogos","SpinnerLogos","DEFER_BUILD_INDEX_ITEMS_THRESHOLD","REVERSE_TOKENIZE_ITEM_THRESHOLD","FULL_TOKENIZE_ITEM_THRESHOLD","buildFlexSearchIndex","itemCount","Flexsearch","Index","tokenize","useFlexSearchIndex","flexSearchIndex","setFlexSearchIndex","debouncedBuildSearchIndex","EMPTY_CONTENT_DESIGNATOR","PosSelect","placeholderText","displayText","enableEmptySelection","contentProps","triggerContentClassName","useVirtualWindow","expectedItemSizeForVirtualWindow","valueOptionsAlwaysShow","valueOptionsDisabled","valueOptionsIcon","valueOptionsContentOverride","showClearButton","loading","sortMode","sortFn","searchable","fetchNextPage","hasNextPage","isFetchingNextPage","onSearchInputChange","showFullWidth","displayComponent","inputSearchRefKey","nanoid","scrollerRef","setSearchText","defaultOpen","isBuildingSearchIndex","onOpenChange","placeholderTextContent","displayTextContent","handleScrollerRef","existingValue","keysOfValueOptionsAlwaysShow","keysOfValueOptionsContent","useVirtuoso","selectItems","keysToRender","search","selectItemKeys","keyA","keyB","textA","textB","sortResult","numberA","parseFloat","numberB","isNaN","renderItem","HTMLElement","FilteredSelectItem","disabledReason","optionContent","targetText","disabledReasonText","StackedFilter","FilterComponents","isHorizontalLayout","FilterComponent","connector","marginLeft","PriceUpdatedFilterEnum","PriceUpdatedDate","PriceNotUpdatedDate","PriceUpdatedDateStackedFilter","setMode","setDateFilter","newQuery","PRICE_UPDATED_DATE_FILTER_TO_CID","d","maxWidth","SaleDateFilterEnum","HasSaleDate","NoSaleDate","SaleDateStackedFilter","SALES_DATE_FILTER_TO_CID","NOT_FOUND_INDEX","NO_ROW_SELECTED_INDEX","defaultShiftSelection","lastRow","rowIndex","groupIndex","tableRows","shiftRow","isCleanState","shiftKeySelection","useShiftKeySelection","allGroupsIds","shiftKeySelectionRef","selectionMode","setGroupItems","getGroupToggleState","toggleGroup","isShiftKeyPressed","setShiftKeySelection","clearShiftKeySelection","perPropsRef","refPerfProps","setShiftKeyRowSelectionState","groupId","gId","setShiftKeyGroupSelectionState","minIndex","maxIndex","isTopToBottomUserSelection","isSameGroupSelection","currentRowIndexSelection","activeGroupId","shouldSelectAllGroup","groupState","isGroupSelected","fromIndex","toIndex","groupStateInput","isNoGroupIdSet","NO_GROUP_ID","MultiSelectScope","AllGroups","SingleGroup","SingleItem","defaultValues","setSelectionMode","isAllSelected","setAllGroupsIds","getSelection","groupIds","isSingleGroupMultiSelect","getItemToggleState","getGroupSelectableGroupMetadata","setGroupStates","toggleSelectAll","totalItemsSelected","itemSelection","setSelectedCountLabel","selectedCountLabel","usingCustomSelectedCountLabel","setUsingCustomSelectedCountLabel","updateGroupFilteredIds","isHiddenCheckboxesFeatureEnabled","shouldHideCheckboxes","MultiSelectionContext","defaultMultiSelection","useMultiSelectionContext","MultiSelectionContextProvider","initialSelectionMode","forceSelectionMode","isFlattenedView","setShouldHideCheckboxes","setMultiSelection","flattenedIds","groupsArray","useCatalogMultiSelectionContext","group","consolidatedSelectionMode","totalItemsSelectedCount","totalItemsCount","itemCountsResult","selectionCount","totalCount","groupItemCount","selection","selectedCount","toggleGroupInternal","strGroupId","prevItem","newIsGroupSelected","filteredIds","toggledItems","acc","toggledWOGroupsCount","groupData","comboId","totalItemCount","relatedGroups","groups","newSelections","onSetSelectionMode","packNumericIds","unpackNumericIds","Number","PURCHASE_SINGLE_TIME_PERIOD_QUERY_KEY","PURCHASE_TIME_PERIOD_CONTAINER_QUERY_KEY","useGetAllPurchasesQuery","viewModeOverride","ignoreMaxCount","doNotQueryForPurchases","allEventIds","totalPurchaseCount","moddedFilterQuery","filterPurchaseOrders","purchaseOrders","po","poState","allPurchasesQuery","filterQueryWithEventIds","performerId","refetchInterval","allPurchasesFiltered","useGetTimePeriodPurchasesQuery","setSelectedIds","getDateValue","firstOfTimePeriod","firstOfMonth","purchasesQuery","sortedData","dateA","dateB","differenceInCalendarDays","newSelectedIds","firstItem","mappedData","PurchaseDataContext","timePeriodPurchasesQuery","purchaseCount","refreshData","onSelect","onSetActivePurchaseOrderCallback","setScrollToId","purchaseGroupTimePeriod","setPurchaseGroupTimePeriod","usePurchaseDataContext","PurchaseDataContextProvider","activeViewMode","scrollToId","targetId","forceSelect","poDate","targetTimePeriodIds","refetchQuery","refetch","targetTimePeriodId","refetchAll","failureReason","emptyContext","unfilteredFlattenedIds","CatalogMultiSelectionContext","transformGroupsArray","isPurchaseFlattenedView","monthData","unfilteredItemCount","CatalogMultiSelectionContextProvider","eventsTransformed","inputArray","inputObject","fromPairs","setFlattenedIDs","setUnfilteredFlattenedIDs","setGroupsArray","allItems","all","flattened","getFlattenedListingIds","tgId","newGroupsArray","useFilterQueryState","groupIdSuperSet","useTicketGroupIds","selectionState","isFlattenedViewWithNoGroupId","allEventMappingIds","filteredGroupIds","unpackedPurchaseIds","unpackedTicketGroupIds","packedId","unpackedIds","normalizedGroupIdsByMergedEvents","selectedViagogoVirtualIds","newIntId","newBigIntId","newGuidId","crypto","randomUUID","getRandomCentroids","dataset","sampleSize","vector","squaredEuclideanDistance","kmeans","maxIterations","initializeCentroids","prevCentroids","centroids","clusters","iterations","clusterVectors","updateCentroids","converged","centroid","vectors","vectorWithData","closestCentroidIndex","closestCentroid","prevDistance","distance","cluster","getMeanVector","meanVector","ListingGroupingTypesWithClusteringOptions","ListingGroupingTypesNotSupportingAdditionalGroupBys","getGroupByData","listingToGroupKey","prevKey","prevKeyPrefix","prevNamePrefix","nameContent","getNameContent","tc","availQty","unitCst","faceValue","getClusteringData","rowIdToRowOrdinalMap","flattenListingGroup","filterAndflattenListingGroup","groupFilter","getListingsForMergeListingGroupInput","viagogoMappingId","generateMergeListingGroupInputsForEvents","namePrefix","listingMarketplaceSettings","listingGroupItems","mappingId","desiredActiveListings","minActiveListings","maxActiveListings","targetPercentage","deprioritizedQuantities","marketplaceSettings","groupUndercutSetting","undAbsAmt","undRelAmt","actRankUndAbsAmt","actRankUndRelAmt","getAvailableGroupingTypes","prevGroupingTypes","listingGroupTypes","LISTING_GROUPING_TO_CID","getListingGroupsMap","groupBys","listingsForGrouping","canClusterByRows","listingGroupState","nonKmeansGrouping","groupBy","kmeansGrouping","numOfClusters","resultMap","sameSizeGrouping","numberOfBuckets","listingsPerBucket","ceil","bucketCounter","listingsInGroupCount","listingsInBucket","bucketOption","quantityMatches","quantity","desiredQuantities","temp","getQuantitiesOptions","q","sortGroupType","order","useInventoryEventBulkActionsState","affectedVisibleListingIds","isAllListingsSelected","StyledModal","Modal","CloseButton","RSModalHeader","RSModalBody","ModalBodyHeaderContainer","ModalBodyDataContainer","RSModalFooter","onClose","StyledModalHeader","Header","Body","Footer","clickOutsideToClose","backdrop","hasChildren","Children","commonModalProps","toggle","fullscreen","asJsxElement","Element","QUERIES_TO_KEEP_FOR_DEEPLINK","getDeepLinkIdFromUrl","queryParamName","queryParam","addDeepLinkUrlPart","deepLinkKey","deepLinkValue","navigate","origin","history","pushState","getUrlWithDeepLink","queriesToKeep","useRemoveDeepLinkUrlPart","useNavigate","hash","pathname","removeDeepLinkUrlPartsFromRelativeUrl","relativeUrl","deepLinkKeys","protocol","host","getPathFromMainRoute","AppRouteConfigs","view","getFullUrl","getCurrentViewPath","MenuItems","navigateToMainRoute","mainRouteAccess","startsWith","isInFullPageEventView","ModalContext","isModalOpen","setModal","updateModal","closeModal","ModalProvider","modalProps","setModalProps","removeDeepLinkUrlPart","handleCloseModal","forceClose","onCloseOverride","modal","trackViewEntityType","partial","onExit","DialogId","AutoPricingStrategy","BulkEditListingSettings","BulkUpdateAutoFulfill","BulkEditTags","BulkChangeFloorCeilingActions","BulkAddListingAdminHold","BulkEditMarketplacePrices","BulkEditListingPrice","BulkDeleteSeatSeavers","BulkEditSeatTraits","BulkEditBroadcastSettings","BulkRemoveHold","BulkChangeTicketTypeRule","BulkMarkAsFulfilled","BulkEditPurchaseSettings","BulkEditCommission","BulkChangeEvent","BulkEditMarketplaceSeating","BulkEditDeliveryType","BulkEditSalesSettings","BulkCancelPurchase","BulkRemovePredilivery","BulkUngroupListings","BulkBackfillDeliverySettings","BulkConvertPurchasePayments","BulkUpdateListingGroupSettings","BulkEditAutoPricingSettings","BulkUpdatePurchaseCurrencyCode","AddMarketplacePaymentLineToSale","BulkMarkSaleAsPaid","DialogContext","openDialog","useDialogContext","DialogProvider","dialogs","setDialogs","prevDialogs","dialog","useDialog","dialogId","DialogComponent","useUserHasAnyOfPermissions","getFormattedLocation","city","stateProvince","country","getFormattedBytesSize","numBytes","addSpace","UNITS","exponent","log10","toPrecision","decodeBase64","base64String","byteCharacters","atob","byteNumbers","byteArray","Uint8Array","usePurchaseVendorSelector","additionalOptionsPosition","availableVendors","dataSorted","availableVendorsOptions","posSelectProps","addOptionTexts","useTicketTypes","mappingsQuery","ticketTypes","mapping","CustomDeliveryIcon","randomizeInPlace","j","random","moveElements","array","splice","calculatePercentile","percentile","rank","lowerIndex","upperIndex","fraction","lowerValue","upperValue","percentileValue","getTicketTypeIcon","showIconTitle","getTicketTypeIcons","isPriorityBlocked","isBlocked","priority","getTicketTypeLabel","TICKET_TYPE_TO_CID","getDefaultTicketType","getDeliveryTypeIcon","topPriTicketType","sortPriorityOrders","backfillTicketTypePriorityOrders","ticketTypePriorities","tt","BLOCKED_PRIORITY","shiftTicketTypePriority","priorityOrderBefore","getTicketTypePriorityOptions","len","toSyncCenterFieldValues","ticketTypeRules","fieldValues","ticketTypePriorityOrders","ticketTypePriorityOrderMap","priorityOrder","blocked","priceFloor","markup","sellerFee","toSyncCenterSettings","settingsTicketTypeRules","setValueAsNumber","setValueAsDecimalNumber","TicketTypePriorityInput","onTicketTypeRulesChange","onOnlyThisChange","ticketTypePriorityOrdersNew","overrides","onResetAll","defaultTicketTypePriorityOrders","overridesForDeliveryType","onPriorityChange","priorityOrderAfter","ii","ticketTypesOrderedByPriority","numBlockedTicketTypes","isEmptyTicketTypesOverridesFromResponse","ticketTypePriorityOverrides","orderedTicketTypePriority","missingTicketTypePriority","uiTicketPriority","PURCHASE_BULK_UPDATE_GENERAL_SETTINGS_UPDATE_KEY","PURCHASE_BULK_UPDATE_COMMISSION_UPDATE_KEY","PURCHASE_BULK_UPDATE_TAGS_UPDATE_KEY","PURCHASE_BULK_UPDATE_INTERNAL_NOTES_UPDATE_KEY","PURCHASE_BULK_UPLOAD_PURCHASE_KEY","PURCHASE_BULK_CANCEL_UPDATE_KEY","PURCHASE_BULK_UPDATE_DELIVERY_TYPE_UPDATE_KEY","PURCHASE_BULK_UPDATE_SEAT_TRAITS_UPDATE_KEY","TICKET_GROUP_BULK_DELETE_UPDATE_KEY","PURCHASE_BULK_BACKFILL_DELIVERY_SETTINGS_KEY","PURCHASE_BULK_CONVERT_PAYMENTS_KEY","PURCHASE_BULK_MARK_AS_PAID_KEY","PURCHASE_BULK_UPDATE_PURCHASE_CURRENCY_CODE_KEY","DownloadButton","DnDFileUploaderLabel","SVGWrapper","SelectedFileWrapper","FileName","IconWrapper","SelectedFile","onRemove","preventDefaults","DnDFileUploader","multiple","acceptedFileTypes","maxFileSize","showSelectedFiles","useLabelV2Styles","onNewFilesSelected","setExternalContext","highlightDropBoxOnDragging","inputRef","errorMsg","setErrorMsg","isDragging","setIsDragging","files","setFiles","acceptProp","accept","callbacksRef","maxFileSizeErrorMsg","toFixed","onBtnClick","handleDrag","updateSelectedFiles","newFiles","prevFiles","handleDrop","dataTransfer","handleChange","onRemoveFile","selectFiles","dragging","textError","parseBulkEditMethodName","methodName","bulkActionType","useBulkEditHub","bulkEditAction","onBulkEditDone","bulkEditHub","progress","warnings","mainDialogOpened","stage","setStage","setPreview","setCurJob","setProgress","setErrors","setWarnings","setMainDialogOpened","retryableEntities","progressBeforeRetry","clearRetryStates","useBulkEditHubContext","initJob","BulkEditStage","Idle","action","downloadFile","isBase64","Blob","downloadFileFromBlob","downloadFileFromUrl","download","revokeObjectURL","createObjectURL","getFileHash","md5","arrayBuffer","BulkEditHeader","GettingPreview","RequestEventDetailsView","isRequestingEventDetails","setIsRequestingEventDetails","onAnswer","hasEventId","BulkUploadPurchaseDialog","uploadedFile","setUploadeFile","eventsExpansion","refreshCatalog","onBulkEditProgressDone","refetchQueries","ListingCatalogQueryKey","ListingCatalogMetricsQueryKey","onCancelDialog","setIsRefreshing","newProgress","closeMainDialogForPopover","doneProgress","finalErrors","hasBackgroundBulkEditFeature","HubConnectionState","Connected","hasBulkDownloadEventPromptFeature","isRefreshing","onUploadPurchaseFile","onDownloadTemplateClick","onDownloadTemplateClickNoPrompt","failureCount","bulkEditInProgress","LaunchBulkUploadPurchaseDialog","bulkUploadPurchaseDialog","onBulkUploadPurchase","PurchaseGlobalActionDropdown","showBulkUpload","actionsMsg","hasPurchaseUpdatePermission","getDeliveryTypeIcons","DeliveryTypeSelector","allowCustomDeliveryType","hasCustomDeliveryTypeFeature","canSetCustomDeliveryType","moderatedOptionsContent","DELIVERY_OPTIONS_TO_CID","SEARCHABLE_OPTIONS_THRESHOLD","usePurchasePaymentMethodSelector","paymentMethodOptions","paymentMethods","PurchasePaymentMethodSelector","SellerAccountContext","allUserInfos","allActiveUserInfos","getUserInfo","refetchUserInfos","useSellerAccountContext","SELLER_ACCOUNT_SELLER_USERS_QUERY_KEY","SellerAccountContextProvider","deactivatedText","hasDisplayDeactivatedUser","getQuery","resultsMap","isDeactivated","USE_VIRTUOSO_MIN_OPTIONS_COUNT","ToggleAllKeys","isToggleAllValue","PosMultiSelectOptions","contentHeight","selectedOptions","emptySelectionText","useVirtualWindowProp","showSelectedOptionsFirst","showSelectAllOption","includeSelectedInSearch","valueOptionsKeys","hasOptions","toggleKey","topOptions","limit","maxHeight","FilteredOptionItem","optionKey","optionValue","filterText","contentWrapper","FilteredContent","MIN_ITEMS_COUNT_TO_HIDE_SELECT_ALL","PosMultiSelect","leftIcon","closeAfterToggleAll","fullWidth","showSelectAllOptionProp","onSearchTextChange","valuesDisplayText","childrenAsTrigger","pluralDisplayFormatContentId","valueDisplay","singleValueContentDisplay","valueContentDisplay","mergeSelectedValue","isToggleAll","allValuesKeys","areValuesSelected","searchBox","SellerAccountEmployeeMultiSelector","unchanged","allActiveUserOptions","allowUnchanged","showEmail","useGetFulfillmentProviderSettings","fulfillmentProviderSettingsQuery","fulfillmentProviderSettings","FulfillmentProviderCard","logo","description","isSwitchChecked","setIsSwitchChecked","isChecked","originalState","TradedeskTransferLogo","TdcTransferLogo","TaciyonLogo","StubhubFulfillmentLogo","MapFulfillmentProviderToIcon","providerName","toLowerCase","providers","provider","fulfillmentProviderName","descriptionMessage","SellerAccountEmployeeSelector","isFulfillmentSection","allActiveValueOptionIcons","sellerUserId","sellerIdA","sellerIdB","isFulfillmentA","isFulfillmentB","aDisplayName","bDisplayName","getRenderedMessage","checked","indeterminate","labelPosition","small","PosFormField","showErrorsInline","doNotShowErrorDetails","errorsDiv","er","warningsDiv","formFieldContainer","EventDateDisplay","eventDateString","eventEndDateString","showEventDateTbd","eventDateFormat","eventSubDateFormat","numDays","PosLink","onEventNameClick","toProps","FailureMessage","SuccessMessage","WarningMessage","messageStyle","BlinkingWrapper","CircleWrapperAnimation","RotatingWrapper","WorkingMessage","EventMappingStateDisplay","eventMappingState","mappingRejectionReasonId","mappingRejectionReasonDescriptionDefault","requestStateText","EVENT_MAPPING_STATE_FILTER_TO_CID","eventMappingRejectionReason","MAPPING_REJECTION_REASON_ID_TO_CID","EventNameDisplay","showTitle","boldSubName","useBigStyle","VenueNameDisplay","venueName","venueLocation","EventInfo","showMappingState","showYear","eventNameOnly","showParkingPassIcon","eventGenre","eventNameLink","canLinkEventName","keepReturnUrlUnchanged","ConnectedEventInfo","eventInfoProps","eventNameNode","eventType","METRICS_PLACEHOLDER_DIMS","EventItemHeader","actions","headerMetrics","metrics","mapRejRsnId","afterContent","mapRejDftTxt","ListingMainMetrics","ticketsCount","ListingSubMetrics","totalUnsoldListPrice","totalNetProceeds","totalGrossMargin","MainMetrics","BulletPoint","addBulletPoint","MetricsDisplay","mainMetrics","subMetrics","subMetricBelow","ContentPlaceholder","isCircle","SUB_HEIGHT","MetricsDisplayPlaceholder","MetricsPlaceholderWrapper","GLYPH_WIDTHS","DEFAULT_GLYPH_WIDTH","MAX_TEXT_WIDTH","calcEstimatedFontScale","maxTextWidth","textWidth","letterSpacingOffset","MIN_VALUE","MAX_VALUE","CircleProgressBar","barWidth","radius","circumference","PI","relativePercent","sign","foregroundColor","borderError","backgroundBrandHoverLight","assignInlineVars","calc","multiply","Title","isCompact","Metric","showLoadingPlaceholders","FractionMetricText","numerator","shared","OriginalCircleProgressBar","PercentChangeMetricText","formattedCurrentValue","previousValue","percentageChangeValue","percentageNumberFormatter","absPercentageChange","PercentageChangeArrowIcon","ListingMainMetricsV2","unsoldTicketsCount","unsoldTicketsCountText","ListingSubMetricsV2","totalPandL","totalUnsoldCost","totalUnlistedQuantity","totalUnsoldCostText","pandLText","totalUnlistedQuantityText","UnlistedTicketsIcon","getMetricsDisplay","getInventorySummaryListingMetricsDisplayStrings","soldQty","totalSoldQuantity","tktQty","totalTicketQuantity","ttlListPrc","totalListPrice","netProcs","pandL","totalGrossProfit","quantityNumberFormat","notation","curCode","currencyNumberFormat","totalSoldPercentage","averageSalePrice","formattedTotalSoldQuantity","formattedTotalTicketQuantity","formattedTotalSoldPercentage","formattedTotalListPrice","formattedTotalNetProceeds","formattedTotalGrossMargin","formattedAverageSalePrice","getInventoryListingMetricsDisplayStrings","unsoldQty","totalUnsoldQuantity","listQty","totalListedQuantity","unlistQty","ttlCst","totalCost","unsoldCst","ttlUnsoldListPrc","getFractionDigits","BIG_NUMBER_THRESHOLD","getQuantityNumberFormat","getCurrencyNumberFormat","totalCostAmount","totalUnsoldCostAmount","totalUnsoldListPriceAmount","totalNetProceedsAmount","totalGrossProfitAmount","formattedTotalUnsoldQuantity","formattedTotalListedQuantity","formattedTotalUnlistedQuantity","formattedTotalCost","formattedTotalUnsoldCost","formattedTotalUnsoldListPrice","formattedTotalGrossProfit","getInventoryListingMetricsV2","displayTotalUnsoldCost","isLoss","isProfit","displayTotalGrossProfit","addMoneySameCurrency","removeDecimals","keepDecimalsForValuesLessThanOne","skipDisplay","dispFormat","addListingMetrics","metricA","metricB","addListingMoney","soldCst","addSaleMetrics","qtySold","saleUnfilled","marg","addTicketGroupMetrics","getInventoryListingMetrics","getSalesSaleMetrics","firstBulletPoint","secondBulletPoint","SaleMainMetrics","hasTotalNetProceedsPermissions","SaleHeaderMetrics","needFulfillment","SaleSubMetrics","margin","ticketsFulfilled","ticketsSold","hasCostMarginPermission","PurchaseEventItemHeader","numOfTicketGroups","numOfTickets","onAddTicketsForEvent","cost","removeMetrics","purchaseEventUrl","createPurchaseEventPageUrl","useTagsForEntityType","mainQueryKey","tagByEntityTypeQuery","tagWithValueByEntityTypeQuery","isTag","deleteMutation","tagsWithNoValue","t2","tagsMetadata","tagsMetadataNumeric","valueType","isError","mergeEntityTagsMetadata","tagsToUpdate","tagsToDelete","DivWithTitle","showTooltip","contentUnwrapped","whiteSpace","minWidth","mappedAligned","useUserGroups","userGroupClient","hasTeamManagementFeature","userGroupQuery","updateMutation","userGroupInput","createMutation","createUserGroup","userGroups","TagValueDisplay","tag","displayMode","DateDisplay","POSUserDisplay","UserGroupDisplay","userGroup","ug","VendorDisplay","UrlDisplay","absoluteUrl","PurchaseVendorSelector","UserGroupMultiSelector","userGroupsContentSelect","UserGroupSelector","DatePickerInput","fieldError","onDateChange","textFieldStyles","minDate","maxDate","newDate","Calendar","TIME_PICKER_CALLBACK_FORMAT","TimePickerInput","timeDisplayFormat","onTimeChange","newTime","tagFieldHasChanges","tags1","tags2","_tags1","tm","_tags2","t1","tagHasChanges","ToMarketplaceEnum","entry","TOTAL_VALUE_LENGTH_LIMIT","TagValueInput","isValidNewValue","setNewValue","disableBlur","inputFieldPosfix","tagTypeText","TAG_VALUE_TYPE_TO_CID","customOnBlurSelect","customOnBlurInput","tagValueDate","setTagValueDate","setFullYear","setMonth","setMinutes","getMinutes","backgroundBrand","borderColor","MARKET_PLACE_TO_CID","newId","BOOLEAN_OPTIONS_CONTENT","URL_REGEX_TAGS","checkMatchValueType","isInteger","TagValueInputCell","tagsCurrentEntity","setDisableBlur","duplicateMsg","valueTypeErrorMsg","hasDuplicate","existingTags","TagListItem","isEditing","onRowChange","singleValueMsg","dataTypeMsg","hovered","setHovered","metadataTitle","singleValueOnly","TagsPanelDisplayMode","tagsWithEmptyValue","tagsWithValue","onTagsUpdate","onTagValueChange","tagsEditing","setTagsEditing","onTagAdd","newTags","flexDirection","tagListItem","findLast","newTag","DropWrapper","onDragStart","onDragEnd","attributes","listeners","setNodeRef","transform","transition","useSortable","CSS","Translate","opacity","zIndex","EventIcon","ListingTableColumnId","TicketClassColor","AllInPrice","UndercutNewPrice","CompListingMinimumQuantity","CompListingExcludeFanInventory","CircuitBreakerMinCompListingCount","CircuitBreakerVelocity","CircuitBreakerVelocityHours","SeatingSeats","PurchaseCreatedBy","ListingTableFlattenedColumnId","ListingReportTableColumnId","EventStateProvince","SalePaymentState","PaymentMethodType","InternalNotes","InternalNotesPurchase","VendorOrderId","VendorAccountEmail","CancellationDatePurchase","ListingReportTableGroupingColumnId","PerformerName","TopLevelCategoryName","CountryName","CityName","LocalEventDateTime","IsSeatSaver","IsNoFulfill","PricerSellerUserId","ListingReportTableValueColumnId","UnitNetProceeds","UnitAllInPrice","PurchaseOrderId","PurchaseOrderDate","BuyerUserId","PurchaseOrderVendorName","ListingReportArrayAggregateColumnIds","ReportTypes","ReportTypesV2","InventoryV2","SaleV2","listingMetricsToReportMetricRequest","metric","isReportFilterOverriden","filterQueryToCompare","reportConfigFilterToCompare","addTimezoneOffsetToSaleReportConfig","reportNoOffset","addTimezoneOffsetToListingReportConfig","useReportConfigs","reportType","reportClient","reportConfigQuery","_reportConfigs","upsertMutation","isTemporary","reportId","_data","_error","upsertOverrideMutation","configOverride","originalReportConfig","schemaVersion","hasFilterOverride","hasMetricsOverride","newReportConfig","upsertReportOverride","upsertReportConfig","reportConfigsInternal","reportConfigs","getReportConfigNameForDuplicate","reportName","reportNames","defaultName","configInput","newConfig","castDraft","configToUpdate","initDraft","updatedDraft","produce","draft","ownerDisplayName","widgets","numberOfItemsPerPage","sellerUserIdsToShare","roleIdsToShare","viewableFilterItemIds","editableFilterItemIds","hiddenFilterItemIds","useGetMetricsInUse","listingReports","saleReports","listingColumns","saleColumns","metricsInUse","SPECIAL_CHAR_SET","DEFAULT_MAX_NUM_REPORTING_COLUMN","RESERVED_NAMES","CreateTagMetadataForm","mergedTagsMetadata","onSubmit","watch","handleSubmit","formState","useForm","hasTagTypesUserGroupFeature","specialCharsMsg","notAllowedMsg","maxNumReportingColumn","allowMultipleValues","isSubmitting","setIsSubmitting","validateTagInput","onSubmitHandler","tagTypesOptionsContent","willExceedReportingColumnLimit","newValueType","ConfirmDialog","bodyText","okText","cancelText","EditTagMetadataForm","mergedTagsMetadataWithNoValue","onDeleteSubmit","hasDeleteTagTypePermission","reportMsg","unselectReportConfirmDialog","deleteConfirmDialog","keyOptionsContent","r1","r2","re","isUsingTagWithNoValue","onDeleteSubmitHandler","exceedsReportingColumnLimit","existingTag","TagDraggableListItem","onRowStartEdit","onRowDelete","TagsPanelEditMode","onEditDone","isEditingTagMetadata","setIsEditingTagMetadata","isCreatingTag","setIsCreatingTag","existingTagsCurrentType","existingTagsCurrentTypeWithNoValue","hasCreateTagPermission","onDragEndHandler","active","over","activeIndex","sortable","overIndex","arrayMove","onTagDelete","onTagMetadataUpdate","tagMetadataUpdate","onTagMetadataDelete","existingTagsCurrentTypeWithNoValueMerged","TagsFormBodyV2","canCreateTagType","canEditTags","hasEveryOrdinal","tagsOrdinalFilled","isEditMode","setIsEditMode","onTagsUpdateHandler","tagsDeDup","editTagTypesLabel","LocalizationContext","currencyCache","getUiCurrency","sym","useLocalizationContext","LocalizationContextProvider","availableCurrenciesQuery","TableOverflowWrapper","CurrencyFilterMultiSelector","availableCurrenciesOptions","CurrencyFilterSelector","StyledContainer","StyledInput","Styledlabel","disable","PosCurrencyField","uiCurrency","isInputting","setIsInputting","fixedValue","numericalValue","onChangeHandler","onBlurHandler","fixedNum","FormTable","table","AddPurchasePaymentTable","form","control","resetField","getValues","getFieldState","register","fieldArray","fields","hasEnforcePurchasePaymentCurrencyFeature","field","required","fieldState","validate","fieldVal","valueAsNumber","payments","InputRowAmount","Divider","SwitchContainer","tabletBreakPoint","InputGrid","InputRow","FullWidthSelectionInputContainer","InputRowSide","AddPurchasePaymentTiles","FieldWrapper","GeneratePurchasePaymentsForm","occurrenceText","totalText","paymentAmount","paymentCount","occurrence","uniq","msg","useGeneratePurchasePaymentsForm","defaultCurrencyCode","paymentAmountType","AddPurchasePaymentDialog","onSave","genericDialogProps","isSinglePayment","setIsSinglePayment","getDefaultSinglePaymentStore","isPaid","getDefaultMultiplePaymentsStore","singlePaymentStore","setSinglePaymentStore","multiplePaymentsStore","setMultiplePaymentsStore","paymentsTableForm","paymentsTableFieldArray","useFieldArray","paymentsTableFormOnSubmit","payment","paymentDueDate","paymentId","convertedCurrencyCode","conversionDate","conversionUserId","generatePaymentsForm","generatePaymentsFormOnSubmit","amounts","dividePaymentAmount","reset","keepValues","lastPayment","totalAmount","perOccurrence","BackToModalButton","cancelTo","CancellableFormFooter","showDialogOnCancel","onBeforeClose","goToCancelView","CloseModalButton","Detail","detail","isStrong","isRightAligned","SectionWrapper","SectionContent","numOfColumns","DetailGroup","isDouble","AttrLabel","DetailText","DetailSection","extraContent","fullHeight","getListingNoteIcon","note","showTypeInfo","listingNoteTypeText","LISTING_NOTE_TYPE_TO_CID","listNoteText","listingNoteUntranslated","listingNoteText","iconProps","useListingNotesSelector","validListingNoteIds","hasAdditionalInfoFeature","availableNotes","ln","stubhubListingNoteId","listingNoteId","noteIcons","optionIcons","multiSelectorProps","ScrollableToolbar","PillItem","onPillHover","onPillLeave","onPillClick","onDelete","postfixItem","customPillContainer","useCondensedBorders","PillList","pills","condensed","onPillDeleted","flex","pill","MultiSelectDropBoxWithPills","pillsDirection","pillsFlexWrap","showPills","valueIcon","ListingNoteSelectionInput","listingNotes","hookMultiSelectorProps","listingNotesMap","onSelectionChanged","lnIds","newListingNotes","lnId","sellerAccountId","HorizontalTextList","texts","preIcon","prefix","maxTextsToShow","textCountToShow","maxTextsToShowOnHover","textCountToShowTitle","textToDisplay","titleTextToDisplay","useGetEventListingConstraints","eventListingConstraintsQuery","PosTextArea","TextArea.Root","TextArea.Area","AddInternalNoteModal","onInternalNotesChanged","toggleIsOpen","useToggle","setNote","AddAdminHoldNoteModal","useFormContext","shouldDirty","AddNoteDisplay","showVisibility","ListingNotesSection","allowEditListingNotes","onListingNotesChanged","isAddNoteModalOpen","toggleAddNoteModal","hasListingNotesAdditionalInfoFeature","MultiDetailSection","getConversionRate","numA","numbB","defaultCurrentCode","ConvertCurrencyDialog","currentUserId","fxText","convertedPaymentAmountMustBeGreaterThanZeroMsg","conversionRateMustBeGreaterThanZeroMsg","minValue","setValueAs","convertedAmount","isFinite","shouldValidate","convertedAmountAmount","EditPurchasePaymentDialog","PurchaseCostDialog","methods","PurchaseCostDialogBody","costType","costAmount","costDateError","costTypeError","amountError","newCostType","PURCHASE_COST_TYPE_TO_CID","rval","dateStr","useGetDefaultAutoGeneratedPaymentMethod","defaultAutoGeneratedPaymentMethodQuery","defaultAutoGeneratedPaymentMethod","useUserHasPurchasePermission","owned","canUpdate","useUserCanUpdatePurchase","useUserCanUpdatePurchaseTags","useUserCanUpdatePurchaseCommission","useUserCanLockPurchaseCommission","useUserCanUpdatePurchaseDeliveryType","useUserCanUpdatePurchaseCustomDeliveryType","useUserCanUpdatePurchaseSeatTraits","useUserCanUpdateListingTicketTypePriorityFromPurchase","posField","posChangedField","newP","oldP","getTicketGroupInputTotalCost","tg","getTicketGroupInputTotalTicketCost","deliveryCost","unitCost","numberOfTickets","getCosts","costs","totalTicketCost","totalShipping","getLongestConsecutiveNumber","longestNumber","currentNumber","charCode","fitsSeatIncrementType","seatFr","seatTo","increment","seatValue","getNextTicketBy","ticketNo","getNextTicket","lastChar","numPart","fromCharCode","selectEventInfoFromTicketGroups","ticketGroup","tickets","taxPaid","selectDistinctListingIds","ticket","formatSeatDisplay","SECTION_TYPES_GA","isSectionTypeGeneralAdmission","toSeating","seat","ticketIds","toEntityWithTicket","ticketCnt","PurchaseTicketTableContainer","PurchaseEventItemHeaderWrapper","ChangesIndicator","useClearShiftSelectionOnSortingChange","sortingState","generateShimmeringRows","numOfRows","numOfListingGroups","dataThemeAttributeName","DarkLegacyTheme","logToServer","clearIDBCache","clear","createIDBAsyncStorage","del","useNetworkState","offlineTimeoutMs","isOnline","setIsOnline","onLine","setOffline","setOnline","cancel","handleStatusChange","messages","allMessages","QueryClient","queryCache","QueryCache","reload","RootErrorPage","useRouteError","isRouteErrorResponse","stack","classList","ticketUtilTheme","remove","purpleTheme","darkTheme","_ThemeProvider","usePaginationSettings","numOfItems","currentPage","pageSize","disablePagination","initState","pagination","setPagination","pageIndex","prevState","ClockTrashIcon","getSeatDisplayText","compact","isSingleSeat","isSeatRange","SeatingInfo","showSectionPrefix","showSeatPrefix","showAdminHold","showOrgSeat","orgSeatFr","orgSeatTo","isSoldOut","justifyIconContent","showUnmappedSection","darkBackground","lightBackground","isWasted","hasSeats","hasOrgSeats","isOrgSingleSeat","showOrgSeatFr","showOrgSeatTo","isUnmappedSection","getServerSideOnlyMetricsQuery","getServerSideOnlyMetricsQueryV2","eventChangingFilter","dataChangingFilter","MAX_ENTITIES_IN_GROUP_FOR_LOAD","createCatalogMetricsContextV1","createCatalogMetricsContextV2","groupAndAggregateMetrics","listingMetrics","addMetrics","metricsByCurrency","lm","existing","getEventsToGetMetricsFor","datesUtc","ev1","ev2","date1","date2","compareDesc","compareAsc","CatalogMetricsContextV2Provider","getCatalogMetrics","isDetailed","CatalogMetricsContext","transformedQuery","hasCatalogV2Feature","setMetrics","lastRefetchTime","setLastRefetchTime","getEventIdsToGetMetrics","venId","maxRowVersions","eventsMissingMetrics","eventsWithdata","eventsDetailed","maxRowVersion","metricsQueryKey","metricsQuery","newMetrics","refreshMetrics","contextValues","eventDetailedMetrics","eventMetrics","performerMetrics","venueMetrics","CatalogMetricsContextV1Provider","addCatalogMetrics","groupsToGetMetricsFor","queries","idGroup","metricsQueriesFromHook","useQueries","metricsQueries","setMetricsQueries","getMergedMetricsRecord","metricsRecords","CatalogMetricsContextProvider","hasMetricsV2Feature","useCatalogMetricsContext","mapFiltersToFiltersState","appliedFilterIds","mandatoryFiltersToShow","selectedFilters","filterToolbarGroup","filterToolbarItem","useFilterFiltersByPermission","fi","requiredPermissions","TextFilter","setQuery","textContainsKey","textNotContainsKey","textEqualsKey","setRowFilter","CONTAINS_EQUALS_ENUM_FILTER_TO_CID","InternalNotesFilter","getInternalNotesLabel","entity","useMultipleInternalNotesFilter","labelContentId","useInternalNotesFilter","useCities","citiesWithStateProvinceQuery","citiesWithoutStateProvinceQuery","useStateProvinces","CityMultiSelector","stateProvincesQuery","citiesOptions","cities","stateProvinceId","sp","stateProvinceName","countryName","useKnownCountries","CountryMultiSelector","knownCountriesQuery","knownCountriesOptions","StateProvinceMultiSelector","stateProvincesOptions","stateProvinces","useLocationFilter","newCountryCodes","countryCodesSorted","orgCountryCodesSorted","newStateProvinceIds","stateProvinceIdsSorted","orgStateProvinceIdsSorted","newCityIds","cityIdsSorted","orgCityIdsSorted","RowFilter","SectionFilter","FilterSectionsContainer","FilterDialogBody","FilterDialogFooter","FilterDialogFooterMessage","FilterDialogFooterButtons","FilterDialogDisplaySection","FilterDialogDisplaySectionHeader","FilterDialogDisplaySectionContent","FilterDialogItemContainer","FilterDialogItemDiv","FilterDialog","onSubmitFilter","onSaveQuickFilter","filterAppliedMessage","hasFiltersApplied","filteredByPermissionsFilters","FilterToolbarContainer","FilterCount","CustomFilterPopoverContainer","CustomFilterPopoverTitle","CustomFilterItem","CustomFilterIconsContainer","PosSearchBox","onSearchChange","onEnterKeyPressed","focusOnMount","textFieldProps","inputText","setInputText","onInputChanged","onSearchTextChanged","endsWith","hasText","PosSelectableSearchBox","selectorProps","marginRight","RequestEventDialog","curLocale","onSaveHandler","eventDate","requestedEvent","currentDate","EventSearchInputBoxContainer","EventSearchItemDiv","EventSearchItemInfoContainer","EventSearchDropdownResultItemHeader","EventSearchResultItem","lastIndex","lastIndexOf","subnameIsVenue","PerformerSearchResultItem","VenueConfigSearchResultItem","VenueSearchResultItem","EventSearchDropdownResult","isSearching","maxNumOfResults","onSearchItemSelected","excludeSearch","venueConfigs","venueCfgs","resultItemList","EventSearchItem","onChecked","isSingleSelect","DEFAULT_EVENT_SEARCH_FILTER_QUERY","showParkingTickets","EventSearch","selectedEvents","eventsToSearchFrom","showEventsToSearchFromOnEmptySearch","onEventsSelect","searchTextPrefill","numEventsSelected","onDeleteNumEventsSelected","allowSearchByVenueConfig","searchPlaceHolder","tempFilterQuery","setTempFilterQuery","dateFilter","setIsAllSelected","filteredSearchEvents","eventWithData","previous","filterAppliedCounts","numEventsSelectedText","searchPlaceholderText","searchTextDebounced","setSearchTextDebounced","searchEventsQuery","setSearchEventQuery","eventSortQuery","setEventSortQuery","onSearchTextChangedDebounced","getStaticResult","eventResults","filteredEvents","valueOf","autoCompleteResultQuery","eventsToDisplay","seid","hasResult","requestEventDialog","onSaveRequestEvent","item1","item2","item3","openDropdown","isFetching","filterToolbarStyles","YES_NO_ENUM_FILTER_TO_CID","EVENT_SORT_TO_CID","innerHeight","BulkEditFooter","primaryEntityTypesAffected","onBeforeSubmit","submittButtonRef","onCloseContentIdOverride","onSubmitContentIdOverride","onRetryCancel","onCloseHandler","Execute","hasPrimaryAffectedIds","BulkChangeEventDialog","doNotUseBackgroundProgress","setEvent","onPreviewReceived","TicketGroupIntentionDialog","intention","TicketGroupIntentionDialogBody","salesCount","saveButtonContentId","setDeallocateSales","TICKET_GROUP_EDIT_REASON_TO_CID","LaunchChangeEvent","showIcon","useBulkChangeEventAction","onSuccess","changeEventNote","setChangeEventNote","deallocateSalesRef","ticketGroupIntentionDialog","openBulkChangeEventDialog","closeBulkChangeEventDialog","onSubmitChangeEvent","newSelectedEvent","supportBackgroundProcess","succeeded","onChangeEventClick","dropDown","TableCellDiv","overflowWrap","wrap","isResizeEnabled","useColumnResizingContext","textWrap","TableHeaderCellDiv","useCopyToClipboard","referenceIsCopied","setReferenceIsCopied","copyToClipboard","referenceId","clipboard","writeText","catch","resetReferenceIsCopiedState","useMapDeliveryTypesToString","deliveryTypesObj","deliveryTypes","delivType","topPriTktType","dt","LaunchDownloadUserDocuments","onDownload","onClickHandler","iconFill","PredeliveryActionsDropdown","onPredeliveryAction","triggerCmp","hasBarcodes","barcode","hasExternalIds","externalTicketId","hasTicketUrls","ticketUrl","hasETickets","eTicket","hasQRcodes","qrCode","selected","isSubRow","SeatInfoContainer","TableShimmeringDiv","NoData","coalesceUndefinedOnly","removeDuplicates","arr","compareNumber","numB","sortMoney","rowA","rowB","valueA","valueB","amtA","amtB","getNumericPrefix","sortByNumericPrefix","compareByNumericPrefix","strA","strB","cmpNumberResult","postfixA","postfixB","compareGeneric","sortGeneric","convertToComparableValue","strAsInt","sortListingSeating","original","sortSeatingForTable","sortListingSeatingSection","sortSeatingSection","sortPurchaseOrderTicketGroupSeating","rowATicketGroupToGetSeating","isTktGrp","ticketGroupItems","rowBTicketGroupToGetSeating","sortSeating","sortSalesSeating","sortSalesSeatingSection","sortSeatingSeats","sortSeatingSeatsForTable","seatFromA","seatFromB","seatFromAInt","seatFromBInt","sortPurchaseOrderSeatingSection","seatingA","seatingB","safeSortDateTime","timestampA","timestampB","GridActionType","getNextEditableListingRow","currentRow","currentIndex","isCompListing","sortMarketplacePaymentLineSeating","filterSeatingSectionFn","columnId","filterValue","filterSectionValues","getLeafRows","leafRows","leafRow","filterSeatTraitsFn","filterListingNoteIds","filterSeatRangeFn","filterMin","filterMax","seatFrNum","seatToNum","filterStringMultiSelect","filterValues","getReportValueTypeDisplayConfig","isNumeric","isCurrency","isBoolean","useGetListingAndSaleIds","holdId","TicketGroupStatusIndicator","intentions","unsavedActionText","originalTicketGroup","hasChanges","onTicketGroupIntentionSave","TICKET_GROUP_TABLE_COLUMNS_CONFIG","minSize","maxSize","accessorFn","cell","sortingFn","quantityText","showFromPurchaseAccordions","strDelivType","costText","expectedValue","enableSorting","hasMultiTicketGroupTableFeature","showFromAccordions","onAmendTickets","getPurchaseOrderDetailsModalConfigWithDeepLink","combineWithTicketGroupId","additionalData","editIntention","onTicketGroupAction","onCancelTickets","onExchangeTickets","onViewTicketGroup","combineWithTicketGroupIdSimple","canGetDocArts","uploadPredeliveryAction","amendActionData","getPurchaseOrderRelativeUrl","getModifierState","PAGE_SIZE","getRowId","originalRow","TicketGroupTable","highlightTicketGroupIds","onMount","onUnmount","entityCount","ticketGrpsCnt","tableStyle","tableHeadStyle","tableCellStyle","withOuterPadding","ticketsText","vendorOrderId","sorting","setSorting","groupSelection","rowSelection","rowItem","onRowSelectionChange","updater","columns","columnVisibility","onPaginationChange","onSortingChange","sortingUpdaterFn","newSortVal","functionalUpdate","RowComponent","highlight","PurchaseTicketTable","uniqueEvents","eventTicketGroups","tgFieldState","seatField","MAX_COMMISSIONERS","validateMaxCommissions","commissionPercentage","FormErrorKey","SetCommissionsForm","actionsRef","footerActions","disableForm","formValues","formErrors","formRootErrors","isFormValid","requiredText","minCommissionValueText","rules","maxCommissionersReached","activeUserIds","firstAvailableUserId","differenceWith","commissions","activeUserId","commission","buyerUserId","addCommissionAction","selectedUserId","otherFieldsWithSameUserId","isTouched","restField","changedValue","commissionValue","cleanValueToSet","isDirty","LockedIcon","UnlockedIcon","LockCommissions","isCommissionsLocked","onCommissionsLockChange","disabledLockButton","disabledUnlockButton","onCommissionsLockClick","CommissionSection","disableProp","readonly","showLockCommissionsButton","canLockUnlockCommission","selectedCommissionsCount","userHasLockCommissionsOnPoFeature","showAddCommission","h2","showOnMobile","WizardFooter","EmailPreviewContainer","EmailBodyWrapper","EmailPreviewTitle","StyledPurchaseWizardBody","BodySectionTitle","TicketsDetailRow","TicketDetailRowPaymentList","CheckboxContainer","addFlexGrow","FieldLabel","isCheckbox","HeaderFieldLabel","FieldError","FormRow","vertical","PurchaseDetailsDataTable","PurchaseDetailsDataTableCell","PurchaseDetailsDataTableFooter","PaymentStatusTextContainer","purchasePaymentStatus","isPaymentRefunded","isPaymentPastDueDate","PurchasePaymentStatusTextContainer","CostDetailsDataTable","PurchaseDetailsDataTableLabelCell","PurchaseDetailsDataTableValueCell","PurchaseDetailsDataTableValueFooter","CostDetailsTable","onEditCost","onAddNewCost","onRemoveCost","dividerClassName","costDetail","paddingLeft","DealContext","DealProvider","deal","defaultEdit","localDeal","setLocalDeal","isEditDeal","setIsEditDeal","updateLocalDealDetails","dealDetails","updateLocalDealConfigHurdle","dealConfigs","updatedConfigs","config","deleteLocalDealConfigHurdle","deletedPriority","seenPriorities","expectedPriorities","checkDealConfigHurdlePriorities","updateLocalDealConfigHurdlePriority","configs","priorityMap","indices","assignedPriorities","isValidDeal","dealFallbackConfig","validHurdles","vendorSplit","vendorCommission","splitValue","totalPurchaserSplit","purchaserCommissions","validFallbackHurdle","useDealContext","Collapsible","ExpandIconDefault","FoldIconDefault","Collapsible.Trigger","createDefaultDealCommission","DealConfigSplitCommissionVendorAccount","onChangeCommission","DealConfigSplitCommissionPurchasedBy","onDeleteCommission","changedUserId","commissionIndex","DealConfigHurdleSplit","onChangeVendorCommission","onAddNewCommission","totalHurdlePercentage","textAlign","DealFallbackSection","setOpen","isUserIdAlreadyUsed","existingCommission","removeIndex","updatedCommissions","PosCollapsible.Root","PosCollapsible.Trigger","PosCollapsible.Content","DealConfigHurdle","HurdleConfig","configSplitType","thresholdValue","numHurdles","priorityOptions","DEAL_CONFIG_TRESHOLD_SPLIT_DIRECTION_TO_CID","thresholdSplitDirection","createDefaultDealConfig","dealConfigHurdleId","DealConfigSection","dealConfig","DealDateRangeSection","dealStartDate","dealEndDate","currentEndDate","currentStartDate","DealSplitTypeSection","dealSplitType","DEAL_CONFIG_SPLIT_TYPE_TO_CID","DealTypeSection","dealType","createDefaultPODeal","dealId","dealConfigId","guaranteedAmountPaid","DealSectionInput","DealSectionContent","hasConsignmentDealFeature","dealField","DealSection","AccountSectionLabel","base","AccountSectionEmail","VendorSectionLabel","VendorSectionName","DeliverySection","onChangeClick","modalStyles","getUserDisplayName","userInfo","displayString","useGetUserInfos","userIds","getUserInfosQuery","userInfos","sellerUser","sellerDisplayName","deleteDate","UpdatedByBannerWrapper","ConvertCurrencyIcon","getPaymentMethodIcon","PaymentDetailsTable","onSetAsPaid","onEditPayment","onRemovePayment","onConvertCurrency","canConvertPaymentLines","convertedByUsersIds","updatedByBanner","visibility","PaymentStatusText","PurchaseMethodIcon","PurchaseMainDetails","allowPaymentEdits","onSecondaryAccountOpen","purchaseOrder","poId","additionalCosts","editMode","setEditMode","totalPaymentAmount","hasMarkPurchaseAsPaidFeature","insertFallbackPurchasePaymentMethod","onMarkPurchaseAsPaid","dftPayMethodId","existingPayments","newPayments","PurchaseMainDetailsBody","canEditCommission","costDialog","addPaymentDialog","editPaymentDialog","convertCurrencyDialog","currentCostModel","setCurrentCostModel","currentPayment","setCurrentPayment","secondaryVendor","secondaryVendorAccount","onSetPaymentPaid","newPaymentDate","onEditPaymentSave","existingPayment","onEditPaymentCancel","onAddNewCostSave","existingCost","onAddNewCostCancel","onAddNewPayment","onAddNewPaymentSave","onAddNewPaymentCancel","costId","newCosts","notes","onCancelConvertCurrency","onSaveConvertCurrency","updatedPayment","filteredPayments","pmtStat","PURCHASE_PAYMENT_STATUS_TO_CID","AddPurchasePaymentMethodDialog","PAYMENT_METHOD_TYPE_TO_CID","PurchasePaymentMethodSelectionInput","hideAdditionalOptions","addNewPaymentMethodContent","hookPosSelectProps","option","RadioLabelDescription","CancelPurchaseDialog","numOfSales","cancellationType","setCancellationType","isSecondScreen","setIsSecondScreen","onInternalSubmit","cancelPurchase","CancelPurchaseDialogModeRadioGroup","RestorePurchaseDialog","useSyncCenterSettings","useGetIsPurchaseIdsInUsedForVendorId","purchasingIdInUseQuery","Tabs.Root","orientation","Tabs.Trigger","rootClassName","Tabs.List","Tabs.Content","TabPanel","tabs","activeTabIndex","tabListProps","tabContentProps","activeTab","tab","onTabPanelKeyDown","setActiveTab","optionsLength","isLeftKey","isRightKey","nextIndex","HeaderContent","EntityInfoDiv","EntityIdNumberDiv","EventEntityHeader","ConnectedEventEntityHeader","useEventItemLoadingDisplay","loadingContentId","searchingContentId","errorContentId","activeId","loadingState","NotFoundWrapper","CancellableFormHeader","EMPTY_ACTIVITY_LOG_QUERY","includeUserOnly","actionTypes","auditActionTypes","TAB_ALL","ListingActivityLogTab","PrivateNotes","TAG_AUDIT_ACTION_TYPES","LISTING_ACTIVITY_LOG_TAB_TO_ACTION_TYPES","LISTING_ACTIVITY_LOG_TAB_TO_AUDIT_ACTION_TYPES","LISTING_ACTIVITY_LOG_TAB_TO_CID","SaleActivityLogTab","SALE_ACTIVITY_LOG_TAB_TO_ACTION_TYPES","SALE_ACTIVITY_LOG_TAB_TO_AUDIT_ACTION_TYPES","SALE_ACTIVITY_LOG_TAB_TO_CID","PurchaseOrderActivityLogTab","PURCHASE_ORDER_ACTIVITY_LOG_TAB_TO_ACTION_TYPES","PURCHASE_ORDER_ACTIVITY_LOG_TAB_TO_AUDIT_ACTION_TYPES","PURCHASE_ORDER_ACTIVITY_LOG_TO_CID","getActivityLogFilterByTab","isTagTab","getActivityLogTabValues","tabKey","cid","useGetActivityLogByFilter","activityLogFilterQuery","getAuditData","activityLogQuery","ActivityLogModal","ActivityLogModalContent","details","activityLogTagNameQuery","activityLogTopLevelFilter","activityLogDisplay","ActivityLogLaunchButtonIconSpan","LaunchActivityLog","activityLogUi","onLaunchDialog","verticalAlign","PurchaseCurrency","currencyChangeWarningDialog","newCurrencyCode","setNewCurrencyCode","isNewPurchase","onCurrencyChangeCancel","onCurrencyChangeOk","ticketGroupIntentions","PurchaseSellerAccountSelector","confirmChangeVendorAccountDialog","dialogRef","formPurchaseVendorAccount","localPurchaseVendorAccount","setLocalPurchaseVendorAccount","tempBuyerUserId","setTempBuyerUserId","vendorDefaultBuyerUserId","dftBuyerId","userBuyerId","onConfirmChangeVendorAccount","onCancelChangeVendorAccount","ShareButton","deepLinkQueryParam","isCopiedLocation","usePopup","linkCopiedDialog","isUrlCopied","setIsUrlCopied","showCopiedLabel","copiedLocation","sharedButtonSpan","usePurchaseVendorAccountSelector","paginateCount","purchaseVendorAccountEmail","vendorAccountIds","hasVendorId","debouncedSearchText","setDebouncedSearchText","debouncedSetSearchText","useInfiniteQuery","pageParam","vendorIds","getNextPageParam","lastPage","initialPageParam","placeholderData","previousData","purchaseVendorAccountQuery","sortedVendorAccounts","Map","pages","unionResult","va","availableVendorAccounts","availableVendorAccountsOptions","PurchaseVendorAccountSelectionInput","vendorFieldName","fieldName","currentVendorAccount","setCurrentVendorAccount","addVendorAccountText","optionsAlwaysShow","onAddNewVendorAccount","onSaveVendorAccount","onVendorAccountCancel","newAccount","ChevronAccordionIcon","PosAccordionTrigger","chevronPos","forwardedRef","PosAccordionContent","PurchaseVendorDeliveryOverrideInput","collapsible","PosAccordionRoot","PosAccordionItem","PurchaseVendorDeliveryOverrideInputContent","hasAutoFulfillSettingFeature","skipAutoFulfill","setSkipAutoFulfill","skipDeliveryOverride","setSkipDeliveryOverride","newD","newRules","PurchaseVendorDialog","PurchaseVendorDialogBody","useReducedEdit","nameError","isGlobal","vendorName","PurchaseVendorSelectionInput","addVendorText","currentVendor","setCurrentVendor","vendors","onAddNewVendor","tktTypeRules","vendAccCounts","onSaveVendor","onVendorCancel","newVendor","HeaderRightGroup","HeaderLeftGroup","HeaderVendorContainer","PurchaseOrderStateContainer","DeliverAlternativeAccountCheckboxWrapper","PurchaseVendorHeader","numOfListings","onToggleEditDetails","onGoToMessageThread","enableMarkAsPaid","hasCreatePermission","isAutoPoQualityControlled","purchaseDate","transferId","useGetUserInfosQuery","buyerUserInfo","qcState","vendorOrderIdPlaceholder","transferIdPlaceHolder","cancelVoidDialog","restorePurchaseDialog","isCancelled","isCancelledState","isDisabled","navigateUnsavedDialog","navigateUrl","setNavigateUrl","youHaveNoSalesMsg","youHaveNoListingsMsg","showSecondaryVendorInputs","setShowSecondaryVendorInputs","onViewUrlClick","viewSaleOnClick","viewInventoryOnClick","viewEntityButtons","goToNavigation","orderIdUsedWarningMessage","orderIdUsedErrorMessage","orderIdBlurred","setOrderIdBlurred","orderIdOnBlur","summaryWrapper","PURCHASE_ORDER_STATE_TO_CID","fieldText","QUALITY_CONTROL_STATE_TO_CID","PurchaseWizardFooter","onPreviousLabel","onPrevious","onNextLabel","onNext","additionalActions","onPreviousWrapper","BulkUpdateDeliveryOverrideDialog","skipTicketGroups","purchaseOrderQuery","onBulkUpdate","onSaveOverrideSettings","backfillDeliveryStrategyFeature","backfillDeliveryStrategyToSaleFeature","updateFulfillmentMode","setUpdateFulfillmentMode","UpdateFulfillmentMode","setUpdateSalesOfListings","hasBackfillDeliveryStrategyFeature","hasBackfillDeliveryStrategyToSaleFeature","onBulkEditSubmitHandler","submitButtonRef","BulkUpdateDeliveryOverrideDialogModeRadioGroup","textTransform","EmptyVendorAccountId","EmptyVendorAccountDetails","PurchaseVendorAccountDialog","finally","PurchaseVendorAccountDialogBody","hasVendorAccountDeliveryStrategyFeature","emailError","paymentMethodError","buyerUserIdError","vendorAccountName","encryptedEmailAddress","defaultPurchasePaymentMethodId","defaultBuyerUserId","updateDialog","openBulkUpdateDialog","closeBulkUpdateDialog","purchaseQuery","autoFulfillRemovedOrNotChanged","deliverySettingsRemovedOrNotChanged","EmailPurchaseOrderContext","setInboundEmailId","setClassificationType","setOrderId","setPartialPurchaseOrderKey","EmailPurchaseOrderContextProvider","partialPurchaseOrderKey","partialPurchaseOrderVendorFields","setPartialPurchaseOrderVendorFields","getOrCreateVendorAccount","toEmail","vendorAccountOverride","partialPurchaseOrderResult","partialPurchaseOrder","HTML_EMAIL_MAX_WIDTH","EmailRenderer","htmlBody","textBody","wrapperRef","wrapperWidth","EmailBody","inboundEmailBodyResult","isPaused","AlertWithSuppressionDialog","alerts","suppressWarning","setSuppressWarning","useAlertWithSuppressionDialog","useCancelTicketGroupDialog","lastTimeStamp","cancelTicketGroupSuppressionTimestamp","useManualPriceDisableAutoPricingDialog","manualPriceDisableAutoPricingTimestamp","useSuspiciousPriceChangeDialog","suspiciousPriceSuppressionTimestamp","InternationalComplianceDialog","reuseAnswer","setSaveAnswer","restrictions","setRestrictions","worksFor","setWorksFor","isSpeculativeListing","setIsSpeculativeListing","isSecondStep","setIsSecondStep","doNotAskAgainTimestamp","ticketRestrictions","useInternationalComplianceDialog","FieldLabelWrapper","FromToLabel","DividerIcon","DividerContainer","SecondaryVendorAccountDialog","SecondaryVendorAccountDialogBody","vendorAccountFrom","vendorAccountTo","queryVendor","hookVendorPosSelectProps","localVendorAccountTo","setLocalVendorAccountTo","localVendorTo","setLocalVendorTo","hookVendorAccountFromFilterSelectorProps","queryVendorAccount","hookVendorAccountToPosSelectProps","defaultDndFileUploaderContext","setDndFileUploaderContext","DndFileUploaderContext","useDndFilerUploaderContext","DndFilerUploaderContextProvider","dnDFileUploaderContext","setDnDFileUploaderContext","DndGlobalFileDrop","PurchaseTicketFlowTitle","currentGroupTicketsCount","currentGroupIndex","isSingleInputModeForMultiEvent","showSearch","eventStrId","PurchaseTicketGroupHeader","PurchaseTicketGroupPageAdditionalInput","setIsChecked","getMirrorSection","candidates","first","orderBy","directionalAngle","useCtrlPlusM","onToggleMirrors","venueMapInfo","useEventMapContext","hasVenueMapCtrlPlusMFeature","prevMarkedIds","setPrevMarkedIds","mirrors","mirrorsMutation","useList","zonedSections","onCtrlMClicked","mirrorSections","sectionIdsToAdd","sectionCandidates","mirror","idsToAdd","useKey","toSectionKey","getSectionId","getTicketClassId","resetSectionRowColors","sectionGroups","sectionGroup","sectionRows","useRowColor","sectionLabel","querySelector","sectionPath","reworkGroups","useRowMap","rowPaths","sectionPaths","sectionLables","ticketClassPaths","ticketClassLables","rowLablePaths","sectionToRows","ticketclassid","sectionKey","rowPath","sectionToLable","textElement","rowGroup","initializeGroups","useSvgMap","setVenueMapSvg","setSectionGroups","initializeSvg","removeAttribute","onInitializeContent","VenueMapV3Content","svgState","setSvgState","SvgInitializationState","svgNode","setSvgNode","innerHTML","VenueMapV3","useEffectOnce","EventVenueMap","selectedSectionIds","isMapLoading","hasSVGVenueMapV3Feature","selectedSectionData","shouldUseV3","hasRow","svgMapVer","focalPt","PurchaseTicketGroupVenueMap","useWatch","sectionIds","useTicketGroupListingNotes","listingConstraints","useDeliveryOverrideForNewTicketGroup","getQueryKey","item4","deliveryTypeDefault","ticketTypeRulesDefault","inHandAtDefault","inHandAt","hasDefaultValues","useSelectionPos","scrollContainerRef","virtualizer","rowHeight","selectionPos","setSelectionPos","prevFirstRect","prevLastRect","updatePosition","container","minRow","maxRow","minCol","colIndex","maxCol","renderedRange","calculateRange","firstCell","lastCell","startIndex","endIndex","containerRect","firstRect","lastRect","isCellInRange","cells","isPosField","calculateTicketCostUnitCost","currentData","colIds","useSpreadsheetCopyPaste","selectedCells","setSelectedCells","clipboardData","setClipboardData","isCopyActive","setIsCopyActive","copiedCells","setCopiedCells","useHotkeys","handleCopy","enableOnFormTags","handlePaste","numColumns","targetRow","targetCol","minCopiedRow","maxCopiedRow","minCopiedCol","maxCopiedCol","maxUpdatedRow","maxUpdatedCol","col","rowOffset","colOffset","pasteRow","pasteCol","pasteVerificationHandler","useSpreadsheetSelection","nonInteractiveColumns","isAnchorSelected","setIsAnchorSelected","anchorDragged","setAnchorDragged","lastEnteredCell","isShiftPressedRef","handleKeyDown","handleKeyUp","handleMouseUp","startRow","startCol","endRow","endCol","handleMouseDown","handleMouseEnter","lastCellPosition","SpreadsheetSelectionBox","classNames","selectionBoxPos","ReactDOM","createPortal","SortStatus","SortStatus2","ArrowType","ArrowType2","getNextSortStatus","allowUnsorted","SpreadsheetTableHeader","canSort","column","getCanSort","sortOrder","getIsSorted","UNSORTED","ASC","DESC","getSize","flexRender","columnDef","toggleSorting","PosFormFieldCell","border","SpreadsheetTdComponent","isInitialSelected","isCellSelected","isCellCopied","isSingleCellSelected","showAnchor","columnIndex","getIndex","backgroundClass","buttons","SpreadsheetTd","memo","SpreadsheetTable","parentRef","useReactTable","getCoreRowModel","getSortedRowModel","sortingFns","getRowModel","useVirtualizer","getScrollElement","estimateSize","overscan","getVirtualItems","prePadding","afterPadding","notUndefined","scrollMargin","getTotalSize","typedColumns","getAllColumns","copiedBoxPos","footerRow","getFooterGroups","numCols","overflowY","getHeaderGroups","headerGroup","virtualRow","getVisibleCells","tableRow","COLUMN_DEFAULT_SIZE_XS","COLUMN_DEFAULT_SIZE_ICON","COLUMN_DEFAULT_SIZE_SM","COLUMN_DEFAULT_SIZE_BASE","COLUMN_DEFAULT_SIZE_LG","COLUMN_DEFAULT_SIZE_L","COLUMN_DEFAULT_SIZE_XL","COLUMN_DEFAULT_SIZE_XXL","COLUMN_MIN_SIZE","COLUMN_MAX_SIZE","CurrencyCellComponent","currencyField","CurrencyCell","InputCellComponent","inputProps","inputType","hasError","InputCell","SpreadsheetCell","FooterAggregateCell","TicketGroupInputQuantityComponent","calculatedUnitCost","calculatedTotalCost","TicketGroupInputQuantity","TicketGroupInputDeliveryTypeComponent","deliveryTypeMapping","deliveryTypeMappingOverride","deliverTypeOptionsAlwaysShow","deliveryTypeValue","TicketGroupInputDeliveryType","RowSelector","filteredRows","nameToOrdinal","res","SectionSelector","TicketGroupInputRowSelectorComponent","rowValue","setRowForTickets","selectedRow","TicketGroupInputRowSelector","getIncrement","generateSeats","assignTicketGroupSeats","seatFrom","skipError","seats","seatFromNum","validateSeatRange","startOrdinal","ord","initialTickets","newTickets","lstOrd","toCharCode","origTicket","additionalTickets","seatSet","totalRange","extractSeatRange","localValue","seatRangeInput","convertSeatRange","TicketGroupInputSeatRangeComponent","launchSeatRangeDialog","useController","qty","ticketsHasSeats","setLocalValue","duplicateSeatErrorMsg","rawSeatFrom","rawSeatTo","SeatRangeModalButton","TicketGroupInputSeatRange","TicketGroupInputSeatTraitComponent","TicketGroupInputSeatTrait","TicketGroupInputVenueInputComponent","chooseSection","TicketGroupInputVenueInput","createDeliveryTypeMapping","useTicketGroupDeliveryTypes","useTicketGroupInputTableColumns","isTotalCostChecked","purchaseTicketGroupInputField","insert","columnHelper","createColumnHelper","costColumn","columnConfigs","accessor","faceValueCost","numRows","curRowValues","newRow","curRowKey","curRowValue","newRowValue","newTicketGroupId","VerticalDivider","SeatRangeInputModal","ticketRow","localTickets","setLocalTickets","hasFilledSeat","hasMissingSeat","handleSeatChange","updatedTickets","SeatRangeInfo","marginBottom","tempTickets","paddingBottom","marginTop","TicketGroupInputTableFooter","numOfAddRows","setNumOfAddRows","newRows","TicketGroupInputTableHeader","setIsTotalCostChecked","TicketGroupInputTable","purchaseOrderInfo","selectedSeatRangeRowIndex","setSelectedSeatRangeRowIndex","seatRangeDialog","ticketGroupColumnConfigs","deliveryOverrideDefaultIsLoading","hasDeliveryOverrideValues","vendAcc","number","desiredDelivType","inHandDate","PurchaseTicketGroupPage","onSubmitWrapper","onNextFromTicketGroupInputStep","onPrevFromTicketGroupInputStep","showPredeliverySection","PurchaseTicketGroupPageInternal","duplicateSeatMsg","inHandDateMustBeforeEventDateMsg","autoBroadcastRequireFaceValueMsg","formTicketGroups","validateTicketGroups","getDocumentPageUniqueId","ep","getETicketDocumentPageUniqueId","getDocumentPagesMap","docUploadInfos","getDocumentPageIdToTicketMap","ticketAssignments","ticketIndex","UploadETicketForm","entityWithTickets","pageNumber","pageUri","documentUri","UploadETicketsContent","renderContent","onComplete","onUploadDocuments","onUploadETickets","eTicketUploadInfos","setETicketUploadInfos","isFinalPreview","setIsFinalPreview","watchTickets","getIncompleteUploadInfos","infos","uploadInfo","ui","infoChanged","eTicketPages","allResults","emptyEntries","nonEmptyEntries","gcTime","validateTicketAssignment","onUploadClick","UploadETicketsInstructions","UploadETicketsSubInstructions","UploadETicketsThumbnailContainer","UploadETicketsThumbnailLoader","UploadETicketsThumbnailAssigned","UploadETicketsThumbnailAssignedMappedTo","UploadETicketsSeatingContainer","UploadETicketsSeatingPlaceholder","UploadETicketsSeat","PreviewTicket","hr","SeatLabel","ErrorMessage","ImageMagnifier","magnifierSize","magnifierBorderColor","allowOverflow","imageSrc","trackingEntityType","trackingEntityId","trackingDocumentId","trackingDocumentType","pdfViewerClassnames","toolbarSlot","ThemeContext","displayAsEmbed","setDisplayAsEmbed","hasPdfViewerToolbarFeature","getFilePluginInstance","getFilePlugin","toolbarPluginInstance","toolbarPlugin","selectionModePlugin","SelectionMode","Hand","renderDefaultToolbar","Toolbar","shouldTrackDocumentEntityAction","trackDownload","slot","Open","Print","SwitchTheme","EnterFullScreen","ShowPropertiesMenuItem","ShowProperties","viewerWrapper","Viewer","GlassMagnifier","DraggableSource","PosDraggable","draggableData","previewDragData","hideElementWhileDragging","draggableSource","dragContainerRef","dragRef","dragPreview","useDrag","pageRef","dragData","collect","monitor","handlerId","getHandlerId","getEmptyImage","captureDraggingState","DroppableContainer","isOver","hideBorder","PosCustomDragLayerContainer","attrs","currentOffsetX","currentOffsetY","DragHandles","rightHandle","bottomHandle","leftHandle","topHandle","HorizontalDraghandles","VerticalDraghandles","removeHoverEffect","PosDraggableIndicator","PosDroppable","onDrop","onOverClassnames","dropRef","useDrop","drop","canDrop","PosCustomDragLayer","currentOffset","useDragLayer","getSourceClientOffset","source","UploadETicketsSeatingSection","onDroppingToSeat","thumbUrl","documentUrl","onUnmappingFromSeat","assignment","wt","eTicketPage","UploadETicketsFinalPreviewBody","uploadETicketsBodyContainer","SingleFileUploadWithPreviewContainer","PageContainer","PageImageContainer","UploadFailure","SingleFileUploadWithPreview","filePages","previewWidth","previewHeight","onFileDeleted","isDeletable","onNewFileSelected","renderPreview","fp","UploadETicketsThumbnailSection","entitWithTickets","mappedETicketIds","onDroppingRemovingTicketFromSeat","onDroppingToThumbnails","sourcePage","destinationPage","destinationTicket","matchingPage","mappedToTicket","newUploadUIs","UploadETicketsSeatAssignmentBody","allPagesAvailable","autoAssignment","allPages","page","UploadETicketsSection","ticketGroupIndex","tb","docUploadInfo","onBack","ticketGroupPredeliveryBody","ticketGroupInputFooter","getPageToDocumentFileUploadInfoMap","documentFileUploadInfosMap","doc","documentFileUploadInfo","documentFileUpload","previewModalZIndex","ticketsAndSeatsZIndex","draggingWrapperZIndex","defaultUploadETicketsContext","pageUniqueIdToTicketMap","setPageUniqueIdToTicketMap","selectedUniquePageId","setSelectedUniquePageId","uniquePageId","hoverUniquePageId","setHoverUniquePageId","uniquePageIdToDocumentFileUploadInfoMap","setUniquePageIdToDocumentFileUploadInfoMap","selectPrevUnmappedTicket","selectNextUnmappedTicket","fromUniquePageId","UploadETicketsContext","useUploadETicketsContext","UploadETicketsContextProvider","selectNextTicket","uniquePageIds","selectedUniquePageIdIndex","nextKeysFromBeggingToCurrentIndex","reverse","nextKeysFromCurrentIndexToEnd","notMappedUniquePageId","pageIdToDocument","UploadETicketsDraggableSource","SeatInfo","isSmallSize","PageIcon","PaperTicketsIcon","PreviewInfo","mappedTicketInfo","useMobileStyle","PosKey","char","singleChar","charAt","PreviewModalNavigationFooter","isArrowLeftKeyPressed","isArrowRightKeyPressed","UploadETicketsDraggableOrigin","PreviewModal","TicketCard","ShowSearchPopover","NumberOfPages","GoToPreviousPage","GoToNextPage","CurrentPageInput","noop","UploadETicketsPreviewTicketModalBody","pageInfo","activeUniquePageId","pdfClassName","isSinglePageDocument","componentProps","onMouseEntersPage","onMouseLeavesPage","UploadETicketsPreviewTicketModal","previewModal","uploadETicketsStyles","ClearButton","MappedPageLabel","ticketInfo","MultiplePageDocumentPage","onRemoveMappedTicket","onPageClick","isDragElement","SinglePageDocumentPage","PageDragPreview","dragOrigin","itemType","getItemType","getClientOffset","isSingleDocumentPage","pointerEvents","background","MultipleDraggableDocumentPage","MultiplePageDocument","draggableMultiplePageDocumentProps","SingleDraggablePageDocument","UploadETicketsUploadingFile","UploadETicketsTicketsSection","removeTicketFromSeat","currentUploadedFileHashes","filesToUpload","dropFiles","ticketDocumentIndex","useOnElementResize","callback","resizeObserverEntries","setResizeObserverEntries","useLayoutEffect","useTimeoutFlag","msTimeout","hasTimedOut","setHasTimedOut","MappedSeat","seatInfo","onUnMapSeat","UnMappedSeat","highlightDrop","hasMappings","onClearAll","droppable","assignedTicket","ticketToUnassign","ticketIndexToUnassign","onWindowResize","watchedTickets","ticketsSectionPortalRef","hasRenderModalAnimation","firstPage","UploadETicketsSectionV2","UploadETicketsSectionSelector","withoutEmptyValues","isUniqueWithin","allValues","inclusive","expectedLength","filteredOutEmptyValues","checkDuplicateBarcodes","alreadyReportedUsedBarcodes","setAlreadyReportedUsedBarcodes","onDuplicateBarcode","onBeforeCheck","onAfterCheck","existingBarcodes","ticketId","checkBarcodeErrors","isBulkUpload","missingMsg","extraMsg","barcodesProvided","BulkUploadWrapper","InstructionsWrapper","BulkBarcodeInput","readOnly","onPreview","touchedFields","trimEnd","newBarcodes","idx","shouldTouch","barcodesError","SeatBarcodeInput","ticketBarcode","BarcodeInput","ManualBarcodeEntry","showErrors","setShowErrors","UploadBarcodesBody","isReadOnly","instructionContentId","bulkUpload","barcodesContentWrapper","UploadBarcodesForm","UploadBarcodesContent","onUpload","setReadOnly","barcodeAlreadyUsedWarning","UploadBarcodesSection","checkDuplicateExternalIds","alreadyReportedUsedExternalIds","setAlreadyReportedUsedExternalIds","onDuplicateExternalId","existingExternalIds","externalId","checkExternalIdErrors","externalIdsProvided","BulkExternalIdInput","newExternalIds","externalIdsError","BulkTicketUrlInput","newTicketUrls","ticketUrlsError","ManualExternalIdEntry","ticketExternalId","ExternalIdInput","SeatExternalIdInput","ManualTicketUrlEntry","ticketTicketUrl","TicketUrlInput","invalidUrlMsg","pattern","SeatTicketUrlInput","UploadExternalIdsBody","externalIdsContentWrapper","UploadExternalIdsForm","criteriaMode","UploadExternalIdsContent","externalIdAlreadyUsedWarning","UploadExternalIdsSection","checkDuplicateTicketUrls","alreadyReportedUsedTicketUrls","setAlreadyReportedUsedTicketUrls","onDuplicateTicketUrl","existingTicketUrls","checkTicketUrlErrors","ticketUrlsProvided","UploadTicketUrlsBody","ticketUrlsContentWrapper","UploadTicketUrlsForm","UploadTicketUrlsContent","ticketUrlAlreadyUsedWarning","UploadTicketUrlsSection","ticketGroupInput","PredeliverySection","SearchPurchasedEvents","ticketGroupFromPartialPurchase","searchTextPrefillForPartialPurchase","selectedEventIds","unselectedViagogoVirtualIds","newTicketGroups","startId","hasMultipleEventIds","firstEventId","PurchaseMultiTicketsFlow","avoidPrefill","ticketGroupFromPartialPurchaseOrder","eventSearchTextFromPartialPurchaseOrder","updatePredeliveryETicketArtifacts","EMPTY_EVENT_IDS","PurchaseMultiTicketsFlowBody","emailPreview","ticketGroupEditContext","eventRequiredMsg","hasUploadTicketFilesFlowV2","multiEventInputsDialog","singleInputModeForMultiEvent","setSingleInputModeForMultiEvent","isMultiEvent","curGroupIndex","setCurGroupIndex","groupsOfTicketGroup","noVenueCfgIdGroup","ticketGroupsMap","noCfgId","groupOfTicketGroups","noViagIdGroup","noViagId","startWithEventSearch","setShowPredeliverySection","curTicketGroups","ticketGroupsEventIds","currentFormTicketGroupIndex","newTgs","validateEventSelection","onPrevFromSearchEventsStep","onNextFromSearchEventsStep","tgs","isLastGroup","updatedTicketGroups","currTg","newTgsForEvent","newTgIndex","newTg","finalTgs","notUpdatedTgs","getFooterActions","finalTicketGroups","isPredeliverETicketsAction","predeliverETicketsDnd","overflowX","useGetEventFullInfo","activeEvent","cachedPerfomer","cachedVenue","SummaryWrapper","ListingInfoDisplay","entityInfoShareButtonIdNumberWrapper","entityText","getListingDetailsModalConfigWithDeepLink","useHasSaleDetailsMarketplaceTermsFeature","useUserHasSalePermission","useUserCanUpdateSale","useUserCanUpdateSaleTags","useUserCanFulfillSale","useUserCanViewFulfillmentArtifacts","canFulfill","CommentSection","commentNotes","cmt","PosPillVariant","Brand","LightGreen","Neutral","getVariantClassName","PosPill","getStateVariant","MarketplacePaymentStatePill","MARKETPLACE_SALE_PAYMENT_STATE_TO_CID","EMPTY_MARKETPLACE_PAYMENT_LINE","externalPaymentId","externalPaymentLineId","externalSaleId","isCredit","paymentLineType","receivedDate","MarketplacePaymentLineDialog","siteMarketplacePaymentLineInput","canSelectProceeds","disabledPaymentTypeInput","disabledAmountInput","isEditingPaymentLine","idOnMkp","paymentDateStr","isPrimaryPaymentLineType","MARKETPLACE_PAYMENT_LINE_TYPE_TO_CID","SetMarketplaceCharge","setMarketplaceActionsRef","setMarketplaceChargeDialog","currentMarketplacePaymentLine","setCurrentMarketplacePaymentLine","setCanSelectProceeds","marketplacePaymentLines","formMarketplacePaymentLineInput","updatedMktPaymentLines","mktPaymentLine","removeNewMarketplacePaymentLine","filteredMarketplacePaymentLines","addNewMarketplacePaymentLine","editNewMarketplacePaymentLine","marketplacePaymentLine","useGetMarketplacePaymentIdQueryParam","activeMarketplacePaymentId","DetailMessage","SolidIconContainer","useGetMarketplacePaymentById","PAYMENT_MONTHLY_CONTAINER_QUERY_KEY","PAYMENT_SINGLE_MONTH_QUERY_KEY","useGetMonthMarketplacePaymentsQuery","paymentsQuery","MarketplacePaymentDataContext","monthPaymentsQuery","useMarketplacePaymentDataContext","MarketplacePaymentDataContextProvider","GET_PAYMENT_LINES_WITH_SALES_QUERY_KEY","useGetMarketplacePaymentLinesWithSales","paymentLineQuery","useSingleMonthMarketplacePaymentsQuery","isExpanded","firstOfMonthPlainDateTime","PlainDateTime","lastOfMonthPlainDateTime","with","daysInMonth","hour","minute","second","millisecond","monthDateRange","filterDateStart","filterDateEnd","relativeDateStart","relativeDateEnd","singleMonthPaymentQuery","useGetCatalogBySaleIds","useGetMarketplacePaymentLineTableData","isLoadingMktPaymentLines","mktPaymentLinesError","marketplacePaymentData","isLoadingEventCatalog","eventCatalogError","viagEvId","AutomatiqLogo","marketplaceBackgroundAutomatiq","GoTicketsLogo","TicketEvolutionLogo","TicketNetworkLogo","logoAreaDimensions","logoDimensions","MarketplaceLogo","isViagogo","grayScaleColor","marketplaceEventInfo","dimensions","isInternationalEvent","onOpenInStubHubClicked","getStubhubEventWithPricingUrl","urlTemplate","urlEventId","eventIdOverride","mappedEventId","websiteEventId","MarketplacePaymentHeaderDetails","marketplaceSalePayment","hasSaleDetailsMarketplaceTermsFeature","extPmtId","pmtDate","mkpPmtTerm","MARKETPLACE_PAYMENT_TERM_TO_CID","mkp","MinRowsForUsingVirtuoso","PosEventsAccordionBodyHeight","DefaultBottomMargin","getVirtuosoTopListItemBounding","MIN_HEIGHT_FOR_VIRTUOSO_ACCORDION","useSetEventsAccordionMaxHeight","accordionHeaderRef","accordionBodyRef","eventsAccordionHeaderBounding","setEventsAccordionHeaderBounding","setStyle","eventAccordionHeaderBounding","expanded","virtuosoTopListItemBottom","eventsAccordionHeaderHeight","bodyMaxExpandedHeight","setProperty","bounding","headerClassName","PageSection","useSetTopListItemPosition","topItemListRef","virtuosoId","isScrollAtTop","virtuosoScrollY","virtuosoItemListSelector","updateVirtuosoListPaddingTop","topItemListEl","virtuosoItemListEl","offsetHeight","offsetTop","VirtuosoTopListItemWrapper","scrollY","topListItemBefore","EventListVirtuosoID","before","EventVirtualizedList","highlightedId","scrollToItemIndex","onItemsRendered","ItemComponent","getDividerText","eventSortOptions","tableActions","virtuosoRef","scrollRef","useScroll","groupCounts","dividerText","scrollToIndex","TopItemList","listItems","EventCheckbox","EventStatusToColor","StatusColor","EventStatus","eventStatusWrapper","eventStatusContent","eventColors","eventStateLabel","EVENT_STATUS_TO_CID","createInputPriceFocusContext","useInputPriceFocusContext","InputPriceFocusProvider","disabledFocusContexts","setDisabledFocusContexts","inputPriceFocusContext","setInputPriceFocusContext","onSetInputPriceFocusContext","useGetGroupingTitle","getMainDisplayFirstChar","getEventGroupingText","getDividerTextForSorting","EventItemCollapsible","HeaderComponent","BodyComponent","AfterHeaderComponent","usingVirtuoso","hasEventStatusDisplay","isAccordionOpen","hideBulkActions","eventStatus","EventsAccordion","getTableDividerText","MinScrollHeightToCollapse","collapsableRefProps","isCollapsedView","lastScrollState","CollapsableViewContext","setIsCollapsedView","onScroll","useCollapsableViewContext","CollapsableViewProvider","refProps","virtuosoScrollEvent","scrollState","lastScrollY","hasScrollDiff","isAtTop","useSingleTableShortcutSelection","isSideTable","inFullPageEventView","lastSelectedRowRefIndex","isCtrlKeyPressed","isCmdKeyPressed","isCtrlOrCmdKeyPressed","updateSelectionForRowAndSubRows","newIsSelected","newRowSelection","subRows","subRow","allowShiftClickSelection","ListingNotesDisplay","seatTraits","ListingDisplay","hideListingNotes","justifySeatingIconContent","listingGroup","hasIgnoreDupFeature","dupListingId","ignoreDup","getListingGroupItemCount","FAKE_SOLD_GROUP_ID","createFakeListingGroup","firstListingWithEvent","allListings","flat","insertBy","rowVer","ltGrpParentId","ltGrpPrior","ltGrpActive","isFull","isDeleted","isUndeliv","viagEvMapId","maxDispQty","mkpListings","splitType","hideSeats","preDelivState","allInPrice","privNotes","poCreatedBys","CreateActiveSortTableColumnContext","setActiveSortTableColumn","useActiveSortTableColumnContext","ActiveSortTableColumnProvider","activeSortTableColumn","PurchasesTableColumnId","PaymentStatus","TotalPayment","TotalConvertedPayment","PaymentConversionRate","PurchaseTableColumnGroupId","SalesTableColumnId","QuantitySold","PaymentReferenceId","TotalPaymentsAmount","TotalConvertedPaymentsAmount","WastedQuantity","SalesTableFlattenedColumnId","SalesReportTableColumnId","MarketplaceSaleId","CommissionUser","CommissionPercent","CommissionShare","SalesReportTableGroupingColumnId","SaleStatusName","TicketTypeName","LastPaymentDate","FulfillerSellerUserId","MarketplacePaymentStateName","MarketplaceName","SalesReportTableValueColumnId","FORMAT_OPTION_TO_DISPLAY_MAP","generateFormatOptionDisplayString","localizedText","originalSeating","fullSeating","sectionOnly","fullEventInfo","shouldShowPercent","contentDisplayMap","currencyContent","displayContent","LISTING_TABLE_COLUMN_DEFAULT_PRECISION","LISTING_FLATTENED_TABLE_COLUMN_DEFAULT_PRECISION","SALE_TABLE_COLUMN_DEFAULT_PRECISION","SALE_FLATTENED_TABLE_COLUMN_DEFAULT_PRECISION","getDefaultFormatOption","isSeating","isEvent","isEnumWithIcon","PURCHASES_EVENT_TABLE_COLUMN_DEFAULT_PRECISION","SectionType","SalesReport","ListingsReport","ListingsFlattened","SalesFlattened","PurchaseEvent","SalesSideTable","InventorySideTable","PurchaseSideTable","MarketplacePaymentsTable","OnSaleEvents","SECTION_TYPE_TO_CUSTOM_COLUMN_SETTING","SECTION_TYPE_TO_PRECISION_SETTING","SECTION_TYPE_TO_COLUMN_EDITABILITY_SETTING","SECTION_TYPE_TO_ACTION_OUTBOX_ENTITY_TYPE","FormatOptionPillBase","onPointerDown","FormatOptionPillSelect","hasViewListingOriginalSeatingFeature","customColumns","columnConfig","getColumnConfigById","personalization","defaultFormatOption","selectedPrecision","setSelectedPrecision","addToOptions","formatOptions","standardOptions","FormatOptionPillContainer","flags","isSelectable","onPointerDownHandler","formatOptionPillBase","OnSaleEventsTableColumnId","RawPreSaleDate","ListingCount","UnitNetProceedsMin","UnitNetProceedsP25","UnitNetProceedsP50","VisitsLastHour","VisitsLastDay","VisitsLast3Days","VisitsLast7Days","TransactionsLastHour","TransactionsLastDay","TransactionsLast3Days","TransactionsLast7Days","Action","EventsTableColumnId","ListedAtp","EVENTS_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES","isConfigurable","isRequired","isHiddenByDefault","ON_SALE_EVENTS_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES","LISTING_MAIN_COLUMNS","LISTING_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES","requiredFeatures","isEditabilityConfigurable","LISTING_REPORT_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES","GROUP_BY_TO_PRIMARY_COLUMN_ID","NON_METRIC_LISTING_REPORT_TABLE_COLUMN_IDS","GROUP_BY_TO_VISIBLE_COLUMN_IDS","LISTING_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG","MarketplacePaymentsTableColumnId","PAYMENTS_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES","PAYMENTS_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG","PURCHASES_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES","visibleViewModes","PURCHASES_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG","SALE_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES","SALE_REPORT_TABLE_COLUMN_PERSONALIZATION_CONFIG_OVERRIDES","NON_METRIC_SALES_REPORT_TABLE_COLUMN_IDS","getPersonalizationConfigOverrides","useColumnUserSetting","storedColumnNumberPrecisions","sectionSpecificDefaultPrecision","userDefinedPrecision","editableColumns","editable","isServerSetting","SEATING_SORTING_FN_NAME","listingSectionTypes","purchaseSectionTypes","salesSectionTypes","useSeatingColumnSorting","sortingWrapper","isSectionOnlyPrecision","seatingSortingFn","useSortListingTableSeatingColumn","hasSortListingsInGroupFeature","depth","FORMULA_DATA_ACCESSOR_PREFIX","fromExecutableFormula","executableFormula","editableFormula","tokens","parseExecutableFormula","identifier","toExecutableFormula","tokenizedFormula","FORMULA_OPERATORS_AND_NUMBERS_REGEXP_START","test","token","FORMULA_DISPLAY_ALLOWED_INSERT_CHARS","PLAIN_LITERAL_CHARSET_REGEXP","RegExp","parseExecutableFormulaV1","executableFormulaSliced","pos","posEnd","NULL_RETURN_STATEMENT_PLACEHOLDER","NULL_RETURN_STATEMENT_TEMPLATE","toNullReturnStatements","formula","statements","filterExecutableFormulaCharacters","filteredFormula","isInsideString","validateFormulaSingleStatement","transpiledCode","ts","parseEditableFormulaBase","returnFieldNameOnly","parsedTokenResult","editableFormulaSliced","leftPos","isPlainToken","rightPos","evaluateFormulaBase","nullReturnStatements","evaluator","eval","evaluate","tagKeyToFieldName","tagKey","editableFormulaToTokens","fieldOptionsReverse","matchingToken","LEFT_PARENTHESIS","RIGHT_PARENTHESIS","PLUS","MINUS","MULTIPLICATION","DIVISION","isOperator","isParenthesis","parseMathematicalTokenFromPlainToken","currentToken","evaluateMathematicalTokensAdditionSubtraction","tokenStack","previousToken","pop","nextToken","evaluateMathematicalTokensMultiplicationDivision","evaluateMathematicalTokens","tokensWithoutParentheses","poppedToken","tokensWithoutParenthesesTrimmed","getPersonalizationFlagsFromFormulaBase","mathTokens","mergedToken","parseMathematicalTokensFromFormulaBase","getTokenFromFieldName","tokenResult","parsedPlainTokens","ListingFormulaFields","availableQuantity","soldQuantity","ticketCount","soldCost","unsoldCost","soldProceeds","websiteFloor","websiteCeiling","listingToFormulaFields","tagFields","numericValue","procsFloor","procsCeil","getAllInPriceFromListPrice","compFloor","compCeil","FORMULA_FIELD_TO_COLUMN_ID","filterCustomColumnsForListing","tagsForEntityType","listingFormulaFields","LISTING_FORMULA_FIELDS_TO_CID","tagKeys","LISTING_FORMULA_TEST_DATA","findDependentListingTableColumnIds","fieldNames","evaluateFormula","createListingTestData","tagData","validateFormula","parseMathematicalTokensFromFormula","getPersonalizationFlagsFromFormula","ACTIVE_EVENT_IDS_QUERY_PARAM","ACTIVE_EVENT_IDS_2_QUERY_PARAM","TAB_EVENT_IDS_QUERY_PARAM","TAB_EVENT_IDS_2_QUERY_PARAM","TAB_EVENT_IDS_SEPARATOR","POS_EVENT_IDS_SEPARATOR","useCatchUpParams","activeEventIds","viagVirtualIds","activeViagVirtualId","posEventIdsList","eid","viagVirtualIdsList","numberOfEvents","selectedIndex","activePosEventIds","isCatchupMode","onPrevClick","onNextClick","EventSessionRole","Main","SidePanel","EventHubContext","hubConnection","onStartSession","onCancelSession","onSelectListing","onSectionsSelected","onUpdateListing","onUpdateInventoryTab","sessionRole","selectedListingId","selectedVenueMapSections","inventoryTab","useEventHubContext","EventHubContextProvider","hasEventMultiScreenFeature","setHubConnection","sessionId","setSelectedListingId","setInventoryTab","setSelectedVenueMapSections","Disconnected","Disconnecting","newHubConnection","HubConnectionBuilder","withUrl","withAutomaticReconnect","configureLogging","SignalRLogger","build","debug","connectionId","onclose","stop","invoke","onListingSelected","serverSessionId","onStopSession","onListingUpdated","fromRole","updated","onInventoryTabUpdated","onVenueMapSectionsUpdated","selectedSectionsJson","on","off","useManualPriceAdjustFloorOrCeilingDialog","manualPriceAdjustFloorOrCeilingTimestamp","ListingPricingForm","rowData","hasSectionalLoadDataFeature","hasAllowSeatScoreCompListingMode","createListingPricingInput","getListingDetailsUpdateInput","currentPageIndex","setPriceSettingValues","newForm","isSubmittingPricingSettings","compListingQuantityScoreAdjustmentEnabled","compListingQuantityScoreAdjustmentOverrideJson","compListingOnlyForSameZoneEnabled","compListingExcludeFanInventory","outlierMode","outlierStandardDeviations","outlierKthLowestLimit","outlierKthLowestLimitAbsoluteSpacing","outlierKthLowestLimitRelativeSpacing","circuitBreakerMinCompListingCount","circuitBreakerMaxDiscountVelocityPercent","circuitBreakerMaxDiscountVelocityTicksInHours","submitPriceChange","marketplacePriceUpdates","warningDialog","submitPricingSettingsChange","autoPriceFrequency","compListingQuantityFilters","compListingQuantityScoreAdjustmentOverrides","autoPricingDefaultQuantityFiltersJson","updatedListing","suspiciousPriceChangeHookProps","manualPriceDisableAutoPricingProps","manualPriceAdjustFloorCeilingProps","setAlerts","isAutoPrc","fieldEdited","newAlerts","isSuspiciousPriceChange","PosHotkeys","keyNames","onHotkeyActivated","preventDefaultBrowserActions","Hotkeys","keyName","MultiSelectAll","flattenedIdsOverride","flattenedIdsFromContext","isEnglishLanguage","selectedText","selectAllText","toggleGroupWithOverride","groupToggleState","selectAllTextHighlighted","bulKActionsHighlightLetter","checkboxStyles","AutoPriceResultDisplay","resultType","useWarningIcon","autoPricingResultStateContent","AUTO_PRICING_RESULT_TYPES_OPTIONS_TO_CID","contentText","autoPricingResultColor","AUTO_PRICING_RESULT_TYPES_OPTIONS_TO_COLOR","CheckCircleIcon","DeliveryTypeIconWrapper","addCheckIcon","DeliveryTypeTextWrapper","ListingDeliveryTypeDisplay","hasTicketTypeIconOverlay","strDeliveryTypes","shouldAddCheckIcon","CopyIcon2","SHOW_COPIED_ICON_TIME","CopyToClipboardV2","textToCopy","showingCopiedElement","setShowingCopiedElement","timeoutId","copyToClipboardDisplay","copyContentWrapper","hidden","successText","copyIcon","copyIconHover","showCopyIcon","useAllInPriceFromListPrice","stubHubMkpSettings","CustomColumnName","customColumnName","INVENTORY_BULK_UPDATE_LISTING_PRICES_UPDATE_KEY","INVENTORY_BULK_UPDATE_MARKETPLACE_PRICES_UPDATE_KEY","INVENTORY_BULK_UPDATE_PRICE_FLOOR_CEILING_UPDATE_KEY","INVENTORY_BULK_UPDATE_AUTOPRICING_SETTINGS_UPDATE_KEY","INVENTORY_BULK_UPDATE_LISTING_GROUP_SETTINGS_UPDATE_KEY","INVENTORY_BULK_UPDATE_GENERAL_SETTINGS_UPDATE_KEY","INVENTORY_BULK_UPDATE_ADMIN_HOLD_UPDATE_KEY","INVENTORY_BULK_BROADCAST_LISTINGS_KEY","INVENTORY_BULK_UPDATE_MARKETPLACE_SEATING_UPDATE_KEY","INVENTORY_BULK_UPDATE_COMMISSION_UPDATE_KEY","INVENTORY_BULK_UPDATE_TAGS_UPDATE_KEY","INVENTORY_BULK_UPDATE_INTERNAL_NOTES_UPDATE_KEY","INVENTORY_BULK_UPDATE_AUTOFULFILL_UPDATE_KEY","INVENTORY_BULK_CREATE_LISTING_GROUPS_KEY","INVENTORY_BULK_UPDATE_TICKET_TYPE_RULE_UPDATE_KEY","INVENTORY_BULK_UPDATE_DELIVERY_TYPE_UPDATE_KEY","INVENTORY_BULK_UPDATE_SEAT_TRAITS_UPDATE_KEY","INVENTORY_BULK_DELETE_SEAT_SAVERS_UPDATE_KEY","INVENTORY_BULK_REMOVE_PREDELIVERY_UPDATE_KEY","INVENTORY_BULK_UNGROUP_LISTINGS_UPDATE_KEY","INVENTORY_BULK_WASTE_TICKETS_KEY","OpenStubhubDropdownAction","DeliveryTypeRadioInput","hideCustomType","DatePickerPresets","DateSelector","defaultDate","defaultDateDisplayText","onDatePickerChange","selectorStyles","InHandDateInput","allowEmptySelection","customPresetNames","sellerAccountSettings","getDaysBeforeEvent","inputIndeces","hasSelectDeliveryStrategyInSeatSaverFeature","deliveryTypeField","deliveryTypeError","inHandDateField","inHandDateError","tktTypeRulesField","onDeliveryTypeChange","newDelType","onticketTypeRulesChange","newTicketTypeRules","onInHandDateChange","FormPage.Section","ListingSection","autoBroadcastCreatedListing","sellerOwnTickets","VenueRowInput","chooseRow","VenueSectionInput","selectionSelectorStyle","tableHeaderContent","eventListingConstraints","ticketClasses","stubHubMarketplace","mps","removeSection","curSections","seatings","newSections","selectWorstRow","exclude","idsToExclude","seatSaverSections","onAddSection","inputToDisplay","seatingsError","rowSorted","selectedTicketClassIds","onSectionChange","seatIndex","onQuantityChange","maxDisplayQuantity","onMaxQuantityChange","onListingNotesChange","onUnitNetProceedsChange","onWebsitePriceChange","getListPriceFromAllinPrice","onFaceValueChange","vs","inf","textBrandActive","seatingSection","headerCellContentId","gridHeader","sectionError","rowError","quantityError","proceedsError","websiteError","column0","unitNetProceeds","websitePrice","removeButton","addSectionButton","SeatSaverInput","viagogoEventIds","SeatSaverListingWizardBody","curEventGroupIndex","setCurEventGroupIndex","shouldGroupEventsByVenueId","setShouldGroupEventsByVenueId","showEventSearch","setShowEventSearch","setSelectedEvents","selectedVenues","setSelectedVenues","selectedPerformers","setSelectedPerformer","eventsGroups","eventsWithNoVenueConfig","eventsWithVenueConfig","eventsGroupByVenueConfigs","curList","formHasChanges","onEventSummaryClose","changedEvents","newEvents","unchangedEvents","selectedEvent","changedEvent","venChanged","perfChanged","onNextFromEventSearch","curInputs","newInputs","ci","SeatSaverListingWizard","LaunchAddSeatSaver","hasPermission","hasSeatSaverFeature","addSeatSaver","onToggleComapnionMode","clusterListingIds","sortedListingIds","clusterListingMergeSuggestionsByListingIdOverlap","mergeSuggestions","mergeSuggestionsByEventId","mergedSuggestions","suggestions","mergedSuggestion","useGetListingMergeSuggestionsByEvent","mergeSuggestionsQuery","MainLabel","useMergeGroupedListingDialog","mergedGroupListingTimestamp","MergeListingsSuggestionsDisplay","onMergeSuggestions","onMerge","listingsSelected","mergeSuggestionsGroupListingHookProps","onMergeHandler","MergeListingsBody","hasDefaultNotToMergeHoldListingsFeature","setExcludeHeldListings","hasAdminHoldListings","eligibleListings","eligible","ineligibilityCount","setIneligibilityCount","onListingIdsSelected","sectionDifMsg","rowDifMsg","deliveryDifMsg","groupedListingMsg","mismatchListingMsg","getListingIneiligibleReason","firstListing","getListingNotEligibleForSelection","selectedListings","listingsWithIneligibleReasons","ineligibleReason","newIneligibilityCount","mergeMismatchListingWarning","mergeSuggestionsListingIds","flattenedEligibleListings","useMergeGroupedListingAlertDialog","mergeGroupedListingHookProps","formData","AlertDialog","MergeListingsModal","MergeListingsModalContent","needToMergeTwoOrMoreListingsError","closeModalAfterMerge","formDataListingId","useGetListingMergeSuggestions","isEqualIgnoringOrder","MergeSuggestionsDisplay","listingCount","onSelectedChange","listingGroupMap","MergeSuggestionListingItem","hasShowSeatTraitOnMergeFeature","EventMergeSuggestionsAccordion","eventWithMergeSuggestion","onSuggestionsSelectedChange","selectedListingIds","partialSelected","mergeText","mergesText","flattenedListings","ms","lid","BulkMergeListingsModal","listingIdLists","BulkMergeListingsModalContent","mergeSuggestionsIsLoading","deselectAllText","eventsWithMergeSuggestions","viagogoEventIdsWithMergeSuggestions","listingIdsSet","allListingIds","mergeSuggestionCount","onSingleSuggestionSelectedChange","onEventSuggestionsSelectedChange","isEventPartialSelected","isEventSelected","eventAccordionProps","interimResult","hasSuggestions","LaunchMergeListings","InventoryEventActionDropdown","isEventPage","extraDropdownItems","hasUpdateListingInfoPermission","useBulkBroadcastActionsPermission","hasBroadcastPermission","hasSellerAccountAdminPermission","LaunchGroupListings","slideLeft","groupListings","InventoryGlobalActionDropdown","useListingGroupPricingSettings","listingGroupPricingSettings","resetListingPricingSettingsMutation","mergeListingGroupPricingSettingsMutation","onMergeListingGroupPricingSettings","onResetListingPricingSettings","loaded","useEventMarketplaceSettings","isUKEvent","eventMarketplaceSettings","mk","defaultListingMarketplaceSettings","marketplaceId","listingBroadcastStateId","SummaryRow","SummaryColumn","SummaryDateSection","SummaryDetailsSection","MarketPlaceDetailsWrapper","SummaryMainText","SummaryMainTextPinkAccent","VenueConfigSummary","eventSelected","eventsText","cachedPerformer","Handle","Slider","renderHandle","RadixSlider.Root","RadixSlider.Track","RadixSlider.Range","RadixSlider.Thumb","ToggleGroup","itemStyle","itemClassName","itemTransparent","rovingFocus","ToggleGroupRadix.Root","ToggleGroupRadix.Item","RestrictSelectionType","useAvailableAutopricingModes","fluent","hasSeatScores","hasParentListing","isGlobalEdit","deriveCompsFromVenueZoneConfig","hasAdvanceAutopricingModes","hasParentListingModeFeature","restrictSelectionTypes","RESTRICT_SELECTION_TYPE_TO_CID","defaultRestrictSelectionType","compListingModes","COMP_LISTING_MODE_TO_FLUENT_CID","COMP_LISTING_MODE_TO_CID","undercutModes","UNDERCUT_MODE_TO_FLUENT_CID","UNDERCUT_MODE_TO_CID","outlierModes","OUTLIER_MODE_TO_CID","compListingModesDisabled","undercutModesDisabled","outlierModesDisabled","useGetAccountAutoPricingSettings","mapToSelectedSectionSettings","sectionIdFilterFromZoneMap","includeBetterZones","useListingGroupAutoPricingSettings","setFormValue","hasAllowSeatScoreCompListingModeFeature","defaultCompListingMode","updateInput","resetListingAutoPricingSettings","compListingFloorError","compListingSelectedSectionError","undercutAbsoluteAmountError","undercutRelativeAmountError","compListingExcludeDefects","circuitBreakerRelativeCeiling","circuitBreakerRelativeFloor","eventPricingSettings","accountPricingSettings","onResetSettings","onResetAdvanceSettings","circuitBreakerSettings","undercutSettings","compListingSettings","outlierSettings","onUndercutChange","undercutModeNew","undercutAbsoluteAmountNew","undercutRelativeAmountNew","onCompListingChange","compListingModeNew","compListingFloorNew","compListingCeilingNew","compListingOnlyForSameZoneEnabledNew","compListingOnlyForSelectedSectionsEnabledNew","compListingQuantityScoreAdjustmentEnabledNew","compListingExcludeFanInventoryNew","compListingExcludeDefectsNew","compListingQuantityScoreAdjustmentOverrideJsonNew","compListingSelectedSectionSettingsNew","sanitizedCompListingOnlyForSameZoneEnabledNew","sanitizedCompListingOnlyForSelectedSectionsEnabledNew","onCircuitBreakerChange","circuitBreakerRelativeCeilingNew","circuitBreakerRelativeFloorNew","circuitBreakerMaxDiscountVelocityPercentNew","circuitBreakerMaxDiscountVelocityTicksInHoursNew","circuitBreakerMinCompListingCountNew","onOutlierChange","outlierModeNew","outlierStandardDeviationsNew","outlierKthLowestLimitNew","outlierKthLowestLimitRelativeSpacingNew","outlierKthLowestLimitAbsoluteSpacingNew","setAutoPricingDefaults","applySectionRowFilterCompListingChanges","newSectionIdFilter","onCompListingSectionIdFilterChange","newRowIdFilter","rowIdFilter","newSectionRowIdFilter","sectionRowIdFilter","rowIds","omitted","updatedSectionRowIdFilter","newRowId","onCompListingSectionZoneChange","sectionIdsToRemove","rowIdsToRemove","rowIdsToRemoveSet","listingForm","pricingSettingsInputs","setResetListingAutoPricingSettings","onCompListingModeChange","canAutoPrice","AdvancePricingSettings","outlierKthLowestStrategy","setKthLowestOutlierStrategy","activeConfigOverride","hasExcludeFanInventoryFeature","hasExcludeDefectsFeature","gridColumn","Slider.Root","STANDARD_DEVIATIONS_TO_CID","kthLowestInputField","inputInline","ROW_FILTER_MISSING","PENCIL_CHAR","RowIdFilterDropdown","focusedSectionIds","rowIdNum","FilterPillList","rowIdFilters","sectionRowIdFilters","applyRowFilterChanges","applySelectedSectionChanges","focusedSections","setFocusedSections","keysPressed","setKeysPressed","backfilledSections","sectionToScoredRows","rowOrdinal","tkClsId","isManualOverride","sanitized","venueRows","scoredRow","updateRowFilters","rowFilter","newRowIdFilters","newSectionRowIdFilters","matchingRow","sectionRowIds","sectionsMissingRowFilter","keyPressTimeout","ignoreElements","activeElement","prevKeys","updatedKeys","pillId","prevFocusedSections","newPill","filterSectionsPills","rowLookup","rowInfo","isFocusedPill","numeric","sensitivity","useUserHasListingPermission","useUserCanUpdateListing","useUserCanSetPrice","useUserCanUpdateListingTags","useUserCanBroadcast","useUserCanPredeliver","useUserCanViewPredelivery","canPredeliver","useUserCanSetDeliveryStrategy","useHasListingPricePermissions","isBulkEdit","canSetPrice","useListingAutoPricingSettings","hasDefaultFilterRowsFeature","skipAutoPricing","skipAdvancePricing","skipPriceProtection","groupPricingSettings","proposedFloor","MAX_SAFE_INTEGER","listingSeating","listingRow","flipOnSameSections","onSelectedSectionsChange","selectedRowIds","pickBy","showAutoPricingSettings","SectionFilterRowNudger","handleNudgeRow","isUp","sid","rid","nextOrdinal","nextRow","handleNudgeUp","handleNudgeDown","AutoPricingSectionRowIdFilter","hasSimplifiedPricingV2Feature","formSectionFilterIds","applyCompListingChanges","disabledSectionIds","info","isSectionDisabled","backgroundBrandSeatmap","onShiftSelect","selectedClassId","head","classSections","classSectionIds","onSingleSelect","selectedSectionsNew","onSectionSelected","SectionSelectDialog","initialSectionIds","selectedSectionsMutations","initialSections","useCompQuantitiesFilter","compQuantityScoreOverrideJson","parsedQuantityOverridesJson","quantitiesFilterOptions","getCompQuantitiesOptions","quantitiesFilterValue","selectedQuantities","onUpdateQuantitiesFilter","quantityOverrideJsonNew","useUndercutAmountSettings","undercutAbsoluteAmountMode","setUndercutAbsoluteAmountMode","undercutRelativeAmountMode","setUndercutRelativeAmountMode","newUAMode","newRAMode","AutoPricingSettingsSection","sectionSelectDialog","quantityFilter","restrictSelection","showCompListingSettingsDetails","showCompListingRestictSelectionDetails","selectedSectionsPills","isDealScoreMode","CoreSwitch","Slider.Handle","paddingRight","curAmountAbs","relativeValue","AutoPricingSettings","useAutoPricingSettingsFormContext","onOutlierSettingsChange","AutoPricingCompFloorAndCeilingInput","nullableCompListingFloor","nullableLCompListingCeiling","AutoPricingCompListingModeSelector","allowSeatScoreCompListingMode","hideWhenOnlyComparableZonesModeIsAvailable","setIsOnlyComparableZonesModeAvailable","initialCompListingMode","initialModeContentId","useSelector","quantitiesOptions","AutoPricingCompQuantitiesSelector","rootStyle","derivedCompListingQuantityFilters","selectedQuantitiesValues","selectedQuantitiesInts","handleOnChange","compListingQuantityFiltersNew","AutoPricingOutlierDetectionModeSelector","AutoPricingOutlierDetectionSettingsInput","KthLowestOutlierDetectionSettingsInput","StandardDeviationOutlierDetectionSettingsInput","useAutoPricingSettingsSelectedSections","venueMapSections","onRowIdFiltersChange","onSectionIdFiltersChange","setCompListingSelectedSectionSettings","AutoPricingSelectedSectionSettingsInput","AutoPricingUnderCutRelativeAndAbsoluteAmountsInput","onUnderCutChange","absUnderCutRelativeAmountNew","currentUnderCutRelativeAmountMode","absUnderCutAbsoluteAmountNew","currentUnderCutAbsoluteAmountMode","underCutRelativeAmountNew","underCutAbsoluteAmountNew","AutoPricingUnderCutRelativeAmountInput","undercutRelativeAmountModeNew","absUndercutRelativeAmountNew","AutoPricingUnderCutAbsoluteAmountInput","undercutAbsoluteAmountModeNew","absUndercutAbsoluteAmountNew","AutoPricingSettingsFormContent","hideCompListingQuantityFilters","hideUnderCutAmountInput","hideBaseAdvancedSettingElements","autoPricingSectionChildren","priceAgainstSectionChildren","pricingProtectionSectionChildren","advancedSettingsSectionChildren","AdvancedSettingsSection","PriceAgainstSection","isOnlyComparableZonesModeAvailable","PricingSetting","headerStyle","ListingGroupAutoPricingSettingsFormContent","outerWatch","outerSetValue","innerMethods","innerWatch","pricingSettingsInputsNew","ListingGroupAutoPricingSettingsFormContentWrapper","MarketplaceDisplay","marketplaceActive","onListingBroadcastToggle","alwaysShowAsDelisted","iconComponent","ListingBroadcastIcon","getListingBroadcastIcon","listingStatusCell","SimpleTable.Tr","SimpleTable.Td","getMarketplaceIdFromMarketplace","mp","mergeListingMarketplaceSettings","marketplace1","marketplace2","mergeWith","setting1","setting2","ListingGroupMarketplaceBroadcast","mergeListingGroupInputs","isBroadcasting","copied","mergedSettings","marketplacesSelected","includedIds","marketplaceToStateId","marketplaceToId","SimpleTable.Table","SimpleTable.Thead","SimpleTable.Th","SimpleTable.Tbody","GroupTemplateTable","template","onTemplateChange","allowDelete","assignNewPriority","newPriority","indexOfExisting","indexOfItem","renderHeaderContent","renderRowContent","newPriorityString","templateSeatingsData","main","SimpleTable","TableHead","TableBody","TableRow","SeatingSelectionTable","uniqueSeatings","groupTemplates","randomizePriority","noneStr","newGroupName","availableGroups","getGroupedListings","listingGroupsMap","updateGroupedListings","localGroupBy","newTemplates","onGroupingTypeChange","newGroupType","newNumOfClusters","gts","newGroupId","oldGroup","gt","GroupingTemplates","onGroupTemplateChange","onAddNewGroupTemplate","groupTemplateData","g1","g2","EmptySectionContent.Root","IconBulletList","grt","ShuffleIcon","AllowedSortingColumns","groupPrioritySort","idToSortingCriteria","quantityA","quantityB","deprioritizedA","deprioritizedB","groupColumnSort","newSorting","sortBySection","sortByRow","sortByUnsoldQty","unsoldA","unsoldB","desc","rowOrdinalA","rowOrdinalB","useGroupSortingCriteria","useMergeListingGroupInputForm","eventSettings","listingsInGroupInput","listingGroupNameError","onDeleteGroup","onSetValues","onRegister","useGroupItemTableOperations","sorted","enforedListings","onRandomizeRanks","sortedListings","removeListingFromInput","lx","onUpdateDeprioritizedQuantities","filteredItems","DeliveryTypeCell","dummySortingFn","getListingGroupTableConfig","deleteText","ListingGroupInputTable","hasUndercutByRankListingGroupFeature","getRowCanExpand","getSubRows","getExpandedRowModel","paginateExpandedRows","ListingGroupInput","mergeListingGroupInputIndex","hasGroupingDripFeature","inferredDeprioritizedQuantities","setUndercutAmount","undercutSetting","itemsSize","listingsInGroupMap","ltGrpUndercut","newValues","GroupingBucketOptions","setBucketOption","shouldShowBucketsOption","onBucketOptionChange","BUCKET_OPTIONS_TO_CID","prioritySort","criteriaA","criteriaB","matchesA","matchesB","ListingTableForGroups","eventIndex","hasBulkActionGroupListingsFeature","eventListings","hasListingGroupingMethodsFeature","eventMergeListingGroupInputs","availableGroupsSerialized","availableGroupsMemo","templateUndercutAbsoluteAmount","templateUndercutRelativeAmount","templateMinActiveListings","templateMaxActiveListings","templateTargetPercentage","onSortingListing","overrideQuantities","additionalInput","listingIdsToRemove","quantities","updatedListingGroupItems","gl","allSelectedListings","oldGroupIndex","mappedListings","groupingOrder","groupingValue","numberOfBucket","bucketType","groupingName","localGroupBys","nonEventGroupInputs","groupByIndex","newBucketOption","newGroupBys","gb","newMlgis","onResetAllGroups","otherGroups","renderGroupDripTemplate","eventListingsData","prevI","flattendListings","fl","TemplateTabKey","EventGroupings","onEventSelected","containerHeight","onAddNewGroup","groupingInputs","useFullySoldFilter","excludeFullySold","setExcludeFullySold","hasExcludeFullySoldInGroupFeature","fullySoldListingIds","hasFullySoldListings","sanitizedEvents","onToggleExcludeFullySold","clonedInputs","showExcludeFullySold","GroupListingsBody","GroupListingsModal","gi","absoluteRankPremium","relativeRankPremium","templateSettings","GroupListingsModalContent","hasIntelligibleAutoPricingSettingsFeature","updateExpandedListItems","hasAutoPricingGroupSettingsFeature","eventTabSelected","setEventTabSelected","GroupListingsTab","sev","formIsDone","setFormIsDone","inputFormData","updatedListings","filteredListingGroupInputs","groupInput","eventGroupingMethodsList","eventGroupingMethods","validateForErrors","applyTemplateConfirmDialog","applyThenSubmit","setApplyThenSubmit","isApplyingTemplate","setIsApplyingTemplate","onApplyTemplateToGroupings","prompt","seatingsMap","sectionRowKeys","rowIdKeys","newGroups","listingsInGroup","listingInputs","AddToGroupListingsModal","newListingGroupName","listingsToAdd","ListingGroupActions","isUngrouping","setIsUngrouping","ungroupConfirmDialog","onUngroupListings","ungroupedListings","ListingGroupStatusSummary","NotTableActionTypes","BroadcastActionTypes","ListingActionsCell","linkOnly","actionIsLoading","setActionIsLoading","allDisabled","ActionCellForListing","onViewClick","newTab","getListingDetailsDeepLinkUrl","getListingDetailsRelativeUrl","lockListingGroupFromEdits","lock","getListingGroupForListing","isLockedFromEdits","onSetListingActiveInGroup","getListingActionButtons","AllowedMarkeplaces","ActionCellForListingGroup","broadcastStatuses","MarketplaceStyleMap","reverseColor","MarketplaceActionCellForListingGroup","contentDelisted","contentListed","MarketplaceDot","DateCell","formattedDate","InHandDateDisplay","needsToFulfill","handleFulfillmentState","showAbsoluteDate","inhand","dateLocal","UTC","getSeconds","displayTooltip","alertIcon","getInHandDisplayData","inhandDateContainer","InHandCell","SHIMMERING_DIV_HEIGHT_SINGLE_LISTING","SHIMMERING_DIV_HEIGHT_LISTING_GROUP","useListingHasVenueMapInfo","hasAutoPricingUiGateFeature","hasVenueMapInfo","overrideSection","mapExists","AutoPricingToggleCell","AutoPricingToggleCellContent","listingSelection","isSubmittingRowIndex","isSubmittingPrice","fieldValue","fieldIsSubmitting","fieldHasChanged","submit","CompListingBoundsCell","formattedNumber","isSelectionMode","saveMsg","isAutoPricingDisabled","isCompListingAmountDisabled","PERSONALIZATION_DEFAULTS","EVENTS_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG","LISTING_METRIC_TEST_DATA","liftPerc","listedATP","rvn","atp","mapFormulaFields","actualStr","expectedStr","liftPercentage","listedAtp","revenue","totalAtp","totalListedValue","totalSoldCost","findDependentEventsTableColumnIds","isCustomEventsColumn","filterCustomColumnsForListingReport","LISTING_REPORT_FORMULA_FIELDS_TO_CID","listingReportMetricsToFormulaFields","ttlWebPrc","soldProcs","listingReportMetrics","SALE_TABLE_CUSTOM_COLUMN_PERSONALIZATION_CONFIG","filterCustomColumnsForSale","saleFormulaFields","SALE_FORMULA_FIELDS_TO_CID","mapListingFormulaFields","ttlNetProcs","quantitySold","charges","credits","soldTicketCost","soldTktCost","evaluateFormulaSaleMetrics","chargs","creds","SALE_FORMULA_TEST_DATA","createSaleTestData","findDependentSaleTableColumnIds","getColumnPersonalization","matchingCustomColumn","matchingTag","personalizationDefaults","customColumnPersonalizationConfig","personalizationOverride","getPersonalizationFlagsFromFormulaListings","getPersonalizationFlagsFromFormulaListingsReport","getPersonalizationFlagsFromFormulaSales","ON_SALE_EVENTS_TABLE_COLUMNS_CONFIG","getPersonalizationFlagsFromFormulaEvents","personalizationFromMathToken","CustomNumericCell","hide","shimmeringDivHeight","TableCellDivV1","ListingPriceCell","otherField","onFocus","nextEditableListingId","price","otherPrice","priceIsSubmitting","priceHasChanged","findNextFocusIndex","newRowIndex","nextRowIndex","nextPageIndex","inputIsFocus","ctxEventId","ctxRowIndex","priceField","onBroadcastClick","onPriceFieldChange","handlePriceSubmit","select","scrollIntoView","behavior","block","inline","ListingProceedsFloorCell","isAllInPrice","cancelMsg","sanitizedValue","sanitizedPrice","PricingModeCell","pricingMode","DisplayIcon","modeContentId","modeContent","setIsExpanded","isPricingModeDisabled","canEdit","PricingModeCellContent","inheritText","inheritCompListingMode","inheritUndercutMode","compListingOptions","unshift","undercutOptions","CircuitBreakerMinCompListingCountCell","submittingField","isSubmittingField","onUpdateMinCoumpListingCount","CircuitBreakerVelocityCell","onUpdateVelocity","CircuitBreakerVelocityHoursCell","CompListingExcludeFanInventoryCell","onToggleExcludeFanInventory","CompListingMinQuantityCell","quantityFilterValue","safeParseJson","onMinQuantityUpdate","defaultQuantityOverridesJson","DefaultQuantityFilterOption","getMinQuantityOptions","OutlierModeCell","OutlierModeCellContent","onUpdateOutlierMode","OutlierFilteringCell","onUpdateOutlierFilter","OutlierLimitCell","onUpdateOutlierLimit","OutlierSpacingCell","setOutlierKthLowestStrategy","hasChange","onUpdateOutlierSpacing","UndercutAmountCell","isPremium","undercutAmountMode","setUndercutAmountMode","isUnderCutAmountDisabled","SECTION_TYPE","GroupListingsSortableFields","findParentRow","groupSortingWrapper","desiredSortingFn","hasGroupListingsSortingFeature","tagColumnDef","canSortGroup","loadedBySection","enableColumnFilter","dataIsLoaded","basic","customColumnDef","storedInventoryColumnNumberPrecisions","getListingTableColumnConfigs","hasGroup","hasCleanupWhiteSpaceFeature","showSelectAllCheckbox","enableResizing","getIsSelected","getCanSelectSubRows","getCanSelect","getIsAllSubRowsSelected","canSelect","selectionDisabledReason","ticketClassColor","LISTING_TABLE_COLUMN_ID_TO_CONTENT_ID","seatingText","isSectionOnly","filterFn","uniqueValueVariant","getCanExpand","getIsExpanded","toggleExpanded","cellId","hasSeatTraitsColumnFeature","useDroppable","listingGroupPriority","draggable","useDraggable","currentListingGroupId","dndProps","ltGroupName","node","isListingGroupLeader","adjustedListing","canExpand","titleText","manMaxDispQty","datetime","displayPrecision","nextEditableListing","getAllInPriceFromListPriceForListing","allInCeilingPrice","undMode","UndercutModeIcon","undNewPrice","allInMarketPrice","compMode","CompListingModeIcon","compQtyScrAdjJson","compExclFanInv","outMode","outlStdDev","outKthLowestLim","outKthLowestLimAbsSpc","cirBrMinCompCount","columnFilterVariant","autoPrcResult","lastPrcUpdOn","displayNamesFormatted","wastedQty","aQuantity","bQuantity","parentId","getParentRows","parentRows","rowsById","formatOptionOverrides","pr","poOrderId","wordBreak","poVendAccEmail","mkpVis","ListingTable","ungroupedListingCount","listingGroupCount","defaultSelectionMode","onItemSelectionsChanged","hideUnselectableListings","showUnselectableListingsOnly","showMainColumnsOnly","onVirtuosoTableScroll","getListingTicketClassColor","tableWithOuterPadding","useTableNavKeys","alwaysShowCheckbox","showSelectAllOnHeader","enableColumnFilters","listingText","isItemsLoading","hasSectionalLoadInListingTableFeature","hasTablePinActionColumnFeature","hasReorderListingInGroupFeature","selectionModeOverride","soldGroupName","isGroupSoldListingsEnabled","expandedState","setExpandedState","listingsMapped","ungroupedSoldListings","fakeListingGroup","storedInventoryColumnOrderSetting","defaultListingColumnsConfig","storedInventoryColumnsEnabledSetting","customListingColumns","customListingColumnsFiltered","allColumnConfigs","showCheckbox","displayedColumnsConfig","inventoryColumnOrder","getListingColumnConfigById","hasFeatureForColumn","filterColumnsByFeatures","onRowShiftSelect","seatingColumnSorting","columnPinning","onExpandedChange","_a","autoResetExpanded","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","onRowWrapper","draggingListing","setDraggingListing","listingsToDrop","onDragListingStart","activeListing","onDragListingEnd","fromListingGroupId","toListingGroupId","activeListingId","onDropCompleted","targetListingGroup","allGroups","fromPriority","toPriority","fromPosition","toPosition","sanitizedListings","adminHoldExpiredOn","onRowSelect","onFilteredRowsChange","filteredItemIds","pointerSensor","useSensor","PointerSensor","activationConstraint","sensors","useSensors","inventoryEventDetailsTableCollapsed","listingTableNoVirtuosoWrapper","shiftSelect","LISTING_TABLE_FLATTENED_COLUMNS_CONFIG","Cell","storedInventoryFlattenedColumnNumberPrecisions","customPrecision","tableStyles","ListingTableFlattened","columnVisibilityOverride","disableSelection","hasNoDataLoad","storedInventoryFlattenedColumnOrderSetting","defaultListingFlattenedColumnsConfig","listingTableColumnConfigs","listingTableFlattenedColumnConfigs","columnConfig1","columnConfig2","TileWrapper","TileWrapperIndented","TileHeader","TileLeftLayout","TileRightLayout","ListingTilesContainer","DetailLabel","DetailValue","DetailUnitCostValue","TextAlign","Left","Right","ListingTile","indentLevel","subListings","isInputFocused","setIsInputFocused","toggleListingSelection","listingIdsToggled","lId","broadcastActions","otherActions","TileWrapperDiv","subListing","ListingTiles","tile","InventoryEventsBody","hasVirtuosoMinRows","MultiSelectCloseButton","MultiSelectActionBar","showHideOnSelection","isHidden","bulkActionsText","multiSelectAll","rootMobile","childrenWrapperMobile","rootDesktop","groupStyle","MultiSelectActionsContainer","useBulkActionsState","areBulkActionsEnabled","AddAdminHoldInput","onAdminHoldExpirationDateChange","onAdminHoldNotesChange","setTime","BulkAddListingAdminHoldDialog","setAdminHoldExpirationDate","setAdminHoldNotes","LaunchAddHold","useBulkAddHoldAction","openBulkAddListingAdminHold","closeBulkAddListingAdminHold","onSubmitAddHold","addHold","BulkEditBroadcastSettingsDialog","marketplaceBroadcastSelectionMode","marketplacesActive","setMarketplacesSelected","marketplacesToBroadcast","setMarketplacesToBroadcast","marketplacesToUnbroadcast","useBulkEditBroadcastSettingsAction","bulkBroadcastListingsKey","openBulkEditBroadcastSettingsDialog","closeBulkEditBroadcastSettingsDialog","openBulkEditUnbroadcastSettingsDialog","closeBulkEditUnbroadcastSettingsDialog","onSubmitEditBroadcastSettings","affectedListings","openBulkEditBroadcastSettingsDialogWithEvent","openBulkEditUnbroadcastSettingsDialogWithEvent","onBroadcastAllClick","onUnbroadcastAllClick","BulkRemoveAdminHoldDialog","LaunchRemoveHold","useBulkRemoveHoldAction","openBulkRemoveHoldDialog","closeBulkRemoveHoldDialog","removeHold","BulkUngroupListingsDialog","LaunchUngroupListings","useBulkUngroupListings","openBulkUngroupListingsDialog","closeBulkUngroupListingsDialog","BroadcastActions","bulkAddHold","bulkRemoveHold","bulkEditBroadcastSettings","BulkEditAdvancePricingSettings","BulkEditAutoPricingSettingsSection","BulkEditListingGroupSettingsMarketplaceBroadcast","BulkEditListingGroupSettingsDialogBody","BulkEditListingGroupSettingsInput","dontChangePlaceholder","getDefaultFormValues","rankPremiums","BulkEditListingGroupSettingsDialog","BulkEditListingGroupSettingsDialogContent","LaunchBulkEditListingGroupSettings","onlyListingGroupsSelected","useBulkEditListingGroupSettings","eventCurrency","selectedListingGroups","selectedListingGroupIds","openBulkEditDialog","closeBulkEditDialog","listingGroupListingIds","payload","autoPricingInputs","AddSectionGroupDialog","setFormValues","zone","area","PosDropdownAnimated","PosDropdownAnimatedItem","useAutoCompMapSectionHandler","onLaunchingDialog","setSectionSelected","setSelectedSectionIds","onResetSections","updatedSectionIds","onCtrlSelect","mirrorIds","AddToGroupDialog","groupOptions","selectedGroupId","setSelectedGroupId","LaunchAddToGroup","openAddToGroupDialog","closeAddToGroupDialog","listingGroups","GroupListingsState","Review","ListingGroupType","SplitZoneByType","RankPremiumType","GroupSortByType","SectionAsc","SectionDesc","RowAsc","RowDesc","UnsoldQuantityAsc","UnsoldQuantityDesc","UngroupedListingGroupId","RowDragHandleCell","usePreviewTableColumns","isUngroupedGroup","removeListing","onMoveListing","rankPremium","premiumValue","available","sold","BroadcastMarketplace","GroupBroadcastSettings","availableMarketplaceSettings","onToggleAllBroadcast","setting","allSelected","GroupTypeToCID","SettingsTitle","subtitle","RowRangesPrefix","ranges","editing","getLabelFromRowRange","lastRange","lastEditing","InputRowRanges","onRowRangesChange","rowInput","setRowInput","setEditing","inputError","setInputError","lastRowRange","rowRangeInputErrorMsg","onLeaveInput","onCutomRowRangeKeyDown","blur","activePlaceholder","baseColors","getRandomColor","createGetColor","sectionSectionGroupLookup","fromEntries","sectionSectionGroup","sectionGroupColor","mapOverlay","setMapOverlay","toggleZoneMap","viewZoneMapText","hideZoneMapText","buttonText","venueZoneConfigs","getDefaultRanges","BucketGroupingTypes","GroupingMethods","rowRangesText","addAnotherSplitText","primaryGroupBy","onPrimaryGroupTypeUpdate","onUpdateZoneMapRowRange","newGroupBy","primaryGroupOptions","cloned","groupBySubtitle","canAddSecondaryThenBy","canAddThirdThenBy","commonStyles","inputStyle","ThenGroupBy","groupLevel","onUpdateGroupBys","hasGroupListingsWithRangedQuantityCostFeature","onUpdateGroupBy","onUpdateGroupRanges","showBucketOption","GroupListingsSetting","defaultToOpen","ListingGroupsGenerator","getListingGroups","generateBaseZoneGroups","rowIdToSectionId","sectionToSectionGroup","keyBy","sectId","sectionListings","ticketClassName","sectionGroupAreaType","sectionGroupAreaName","splitByRanges","groupNamePrefix","splitByRowRanges","splitByQuantityRanges","splitByUnitCostRanges","splitWithGroupBy","splitByZone","splitBySection","splitByRow","splitByBucket","speculativeRowIds","rowIdToIndex","sortedRows","rangedListings","postfixNameFromRange","rowIdToZone","getGroupName","rowIdToSection","rowIdToName","sameSizeDivider","kMeansDivider","bucketSize","sanitizedBuckets","getListingClusterValue","prevName","subPrefix","stringSortWrapper","parsedA","parsedB","sortGroupListings","groupSort","groupListingIds","orderFactor","useSetListingGroupValue","setListingGroupValue","useLoadListingGroups","loadFromZoneMap","rowRanges","generator","secondaryGroup","groupUndercutSettings","groupSortBy","loadFromGroupBys","sortedItems","useEventListings","useGroupListingsAction","setState","primaryGroupType","onFooterNav","back","withGroupUndercustSettings","MoveListingGroupDialog","onMoveListingToGroup","canAddNewGroup","targetListingGroupId","setTargetListingGroupId","groupMode","setGroupMode","setNewGroupName","setGroups","onConfirm","targetGroup","newListingGroupId","idToListing","contentOptions","actionButton","readyToSubmit","DraggableRow","Transform","GroupListingPreviewTable","targetListingId","setTargetListingId","moveListingGroupDialog","listingIdToItem","onRemoveListingFromGroup","targetListing","idToGroup","toGroup","newItems","fromGroup","targetListingGroupItem","targetGroupItems","handleDragEnd","oldIndex","updateGroupItems","MouseSensor","KeyboardSensor","closestCenter","colSpan","isPlaceholder","verticalListSortingStrategy","RelativeAbsoluteGroupOptions","GroupListingsPreview","setRankPremium","onRankPremiumChange","premium","onPremiumValueChange","onUpdateDeprioritizeQuantities","GroupsPreview","selectedGroup","setSelectedGroup","ungroupedText","groupedListingIds","ungroupedListingGroup","enrichedGroups","firstGroup","OrderingMethods","sortingOptions","rankPremiumType","setRankPremiumType","undercutPremium","onRankPremiumTypeChange","premiumType","rankPremiumTips","GroupListingsV2","rowGroupSetting","GroupListingV2Content","LaunchGroupingWizard","LaunchMoveToGroup","eventListingGroups","GroupActions","hasMoveToGroupFeature","hasBulkEditsToListingGroupsFeature","hasGroupingWizardFeature","useBulkPricingActionsPermissions","hasEditPricingPermission","hasUpdateListingPermission","PRICE_CHANGE_MODE_OPTIONS","PriceChangeMode","BulkEditListingPriceDialog","increasePrice","priceChangeMode","setPriceChangeMode","changeValue","setChangeValue","isInputValid","newMode","LaunchChangeListingPrice","useBulkChangeListingPriceAction","bulkUpdateListingsPricesUpdateKey","onSubmitChangePriceByPercent","priceChangePercentage","priceChangeAbsolute","onChangePriceByPercentClick","useDeliveryInfoChangeDialog","deliveryInfoChangeSuppressionTimestamp","useMarketplaceHandledByProcessor","isMarketplaceHandledByProcessor","isSyncHandledByProcessor","useAnyMarketplaceHandledByProcessor","TransferTicketmasterBarcodesBody","instructionsContentId","viewOnly","ViewTransferTickets","goBack","TrasnferProofBody","saleDetails","transDest","transSrc","transferProofDocs","transferUrls","transferProofId","transferBarcodes","yourTickets","app","transferFrom","yourBuyer","transferTo","contact","tts","ImageProofContent","UrlProofContent","TransferIdProofContent","onUploadBarcodes","UploadBarcodesFormContent","modalDetails","BackButton","UploadETicketFormContent","artifactType","TicketArtifacts","ix","userDoc","UploadExternalIds","onUploadExternalIds","UploadExternalIdsFormContent","ViewExternalIds","onUploadTicketUrls","UploadTicketUrlsFormContent","ViewTicketUrls","getViewActionConfig","ViewActionModal","ViewTickets","notAvailableContent","viewTickets","TicketTypePrioritySection","externalDisabled","hasAutoFulfillFeature","isAnyHandledByProcessor","hasUpdateSalesOfListingsFeature","hasAnySales","deliveryInfoChangeHookProps","predeliveryArtifactTypes","availArtTypes","canSetDeliveryStrategy","canViewFulfillmentArtifacts","confirmUpdateSales","predeliveryArtifactType","ListingPriceInputInner","fieldToOtherRatio","onEnter","dontChange","ListingPriceInput","EconomicsSection","canChangePricer","onUnbroadcast","marketplaceListingID","thirdPartyMPs","sellerAccountDefaultMarkup","marketplacePrices","priceByMarketplace","allListPrices","smallestListPrice","largestListPrice","manualPriceAdjustFloorProps","manualPriceAdjustCeilingProps","rowsCount","inputRefsArray","createRef","focusedInputIndex","setFocusedInputIndex","getFloorAlerts","getCeilingAlerts","getAutoPriceAlerts","onPriceChanged","onPriceEdit","newPrice","priceByMarketplaceEnabled","newMarkup","handleEnter","nextInput","mpListPrice","ErrorIconMessage","messageContainer","DuplicateSeatDialogEntry","lastUpdateDate","isHovered","setIsHovered","textPrimaryLight","DuplicateSeatsSelectionDialog","duplicateListingInfo","activeListingInfo","onDuplicateListingClick","paddingBlockEnd","duplicateListingId","duplicateListingLastUpdateDate","LaunchDuplicateSeatsSelectionDialog","onLaunch","DuplicateListingSection","allowBroadcast","duplicateSeatHeader","EnableNativeSyncSection","hasEnableNativeSyncFeature","stubHubHandledByProcessor","enableNativeSync","UploadDocumentInput","uploadInstruction","setIsSaveDisabled","fileInfo","setFileInfo","failedUpload","onUploadDocument","docLink","ProofOfPurchaseUploadDilaog","onUploadProofOfPurchase","uploadDocs","uploadProofDocuments","LaunchProofOfPurchaseUploadDilaog","ProofOfPurchaseSection","pendingProofText","PENDING_PROOF_STATE_TO_CID","pendProofState","proofOfPurchaseDocs","getActivityLogChangeDisplay","activity","emptyContentPlaceholder","detailed","normalizedMessage","normalizeActivityLogMessage","newValueNormalized","normalizeActivityLogValue","ACTIVITY_LOG_STATE_TO_CID","oldValue","emptyPlaceholder","strippedValue","StubHubApiErrorFormat","normalizeErrorMessage","StubHubApiPropertiesToPosProperties","number_of_tickets","display_number_of_tickets","split_type","listing_note_ids","ticket_location_address_id","in_hand_at","ticket_type","face_value","extractMessage","normalizeErrorObject","errorObj","entityTypeNumberToEntityTypeEnum","ViewSeatsListBody","seeAvailableSeats","seeWastedSeats","seatsElements","getSeatDisplay","seatsElement","ViewSeatsListModal","LaunchViewAllSeats","viewComps","MAX_SEATS_DISPLAY","getSaleDetailsRelativeUrl","TicketsSection","manualMaxDisplayQuantity","availableSeats","ticketsAvailable","ticketsElement","soldSeats","onShownQuantityChange","changeEvent","validatedValue","useGetSectionRowFromVenueMapConfig","SPLIT_TYPE_TO_CID","newSplitType","newHideSeats","BulkEditMarketplacePricesDialog","BulkEditMarketplacePricesDialogContent","isListingDetailsInputChanged","LaunchUpdateMarketplacePrices","useBulkUpdateMarketplacePrices","openBulkEditMarketplaceDialog","closeBulkEditMarketplaceDialog","listingUpdate","useUserHasAutopricingFeature","getSettingsInputChanged","initial","settingsInput","changedFields","netProceedsFloorAdjustmentAmount","netProceedsFloorAdjustmentType","netProceedsFloorAdjustmentRelative","hasConflict","includeExistingSelectedSections","rowCompOffset","venueZoneMapName","getAutoPricingSettingsUpdateInput","accountCurrency","hasBulkEditPricingSettingsUpdateFeature","generateDefaultSettings","multiEvents","compSectionSettings","isCompForSameZone","isCompSelectedSections","compExclDefects","isCompQtyScrAdj","cirBrMaxDiscVelocPercent","cirBrMaxDiscVelocTicksInHrs","cirBrRelCeil","cirBrRelFloor","outKthLowestLimRelSpc","toSettingInput","toSettingInputFromArray","isUnique","allEqual","santizedPricingSettingsUpdateInput","useAutoPricingSettings","onUpdateNetProceedsFloorAdjustment","adjustmentAmount","PricingSettingStatus","isHeader","AutoPricingEnabledSetting","useAutoPricingEnabled","onUpdateAutoPricingEnabled","changed","fromDisplay","toDisplay","SettingsSubheader","PricingAdvancedSettings","outlierModeHasChange","onResetOutlierMode","standardDeviationsHasChange","onResetStandardDeviations","kthLowestOutlierHasChange","onResetKthLowestOutlier","circuitBreakerHasChange","onResetCircuitBreaker","useGetVenueZoneMapConfigInfo","venueMapZoneInfoQuery","useGetVenueZoneMapInfoOverrides","venueMapZoneInfoOverrideQuery","RowComp","ROW_COMP_SETTING_TO_CID","canUseZoneMap","overrideLookup","setOverrideLookup","defaultLookup","setDefaultLookup","venueZoneMapConfigInfoQuery","venueZoneMapConfigOverrideInfoQuery","selectedOverrideId","defaultConfig","defaultVenueZoneConfigType","venueNameFromQuery","venueMapZoneConfigs","VENUE_ZONE_CONFIG_TYPE_TO_CID","currentVenueName","onResetCompListingMode","selectedSectionsHasChange","onResetSelectedSections","onResetZoneMapOption","quantitiesFilterHasChange","onResetQuantitiesFilter","undercutAmountHasChange","onResetUndercutAmount","existingSectionsText","editSections","inactive","RelativeAbsoluteOptions","AboveBelowGroupOptions","FloorAdjustmentInput","isAbove","setIsAbove","onRelativeChange","onAboveChange","updatedIsAbove","isAbsolute","setIsAbsolute","onPriceFloorChange","netProceedsValueNew","onPriceCeilingChange","netProceedsFloorWebsite","netProceedsCeilingWebsite","floorOrCeilingHasChange","onResetPricingProtection","onRelativeSwitch","PRICING_FLOOR_CEIL_ADJUSTMENT_TYPE_TO_CID","useConfirmDialog","openConfirmDialog","closeConfirmDialog","useAutoPricingStrategies","autoPricingStrategiesQuery","autoPricingStrategiesUpdateMutation","autoPricingStrategiesDeleteMutation","collectionId","SimplifiedAutopricingGuidedPrice","isMarketListingsView","autopricingSettingsAvailable","AutoPricingStrategySection","listingHasParent","openAutoPricingStrategyDialog","closeAutoPricingStrategyDialog","AutoPricingStrategyDialog","selectedAutoPricingStrategyId","setSelectedAutoPricingStrategyId","strategyName","autoPricingStrategy","applyAutoPricingStrategy","onAutoPricingStrategyChange","isStrategyApplied","defaultValuesForStrategy","sectionContent","placeContent","onStrategyUpdated","strategyId","SimplifiedAutopricingSection","showSections","setShowSections","showSave","ListingNoteBadge","styledIcon","ComparableListingDisplayTooltip","listingPriceCalc","pricingAgainst","underCutChosenListingId","hasRelative","udrRel","udrRelPrm","hasAbsolute","udrAbs","udrAbsPrm","ComparableListingDisplay","isCurrentListing","isYourListing","isOutlier","isAnchor","isSelectedWithListingGroup","validPurchaseQuantities","hasShowIdFeature","hasYourListingInComps","hasIntelligiblePricePreviewFeature","hasListingGroupIntelligiblePricePreviewFeature","hasCondensedTabsFeature","hasCompListingDisplayUpdateFeature","shouldGrayOut","displayQuantity","quantitySplits","splits","listingNoteDefects","listingNotePerks","ConnectedComparableListingDisplay","formatter","FloorCeilingBarDisplay","displayType","floorCeilingPrice","DisplayType","FloorDisplay","YourAutopriceResultsDisplay","currentListing","anchorListing","formatterCurrent","formatterAnchor","CeilingDisplay","AutopricerDisplay","ComparableDisplay","ComparableListingItem","itemProps","calculateDealScore","ComparableListings","currentListings","comparableListings","floorPrice","ceilingPrice","showAutoPriceResults","firstCurrentListing","currentListingIds","floorPriceUICurrency","addFloorCeilingLine","cmpRes","dealScoreA","dealScoreB","hasCurrentListingAndAnchor","showCurrentWithAnchor","listingItems","floorPriceShown","ceilingPriceShown","mapListingToComparableListing","availableTickets","vldPurQty","ConnectedComparableListings","currentListingFromListingGroup","hasCondensedInventory","activeItemIndex","onCurrentKeyDownHandler","marketplaceListingIdsSet","stubHubMkpListings","mkpListingId","comparableListingsLoaded","compListing","isWithoutOutlier","isSellerCompListing","cmpFlr","cmpCeil","useAutoPricingPreview","listingInput","setQueryKey","priceCalcQuery","useVenueMapHandlers","filterSections","pricingPreview","classedSectionIds","filteredSeciontIds","QuickFloorInput","newNetProceedFloor","inputboxRef","onHandleEnterKey","curRef","FloatingToolbar","onToggleCollapsed","isCollapsed","QuickAtionShieldIcon","quickFloorCollapsed","setQuickFloorCollapsed","setIsCollapsed","quickFloorForm","collapsed","MapWithCompListingsPreview","compListingsFromListgingGroup","showSimplifiedSettings","isInModal","colorBand","hasQuickFloorToolbarFeature","sessionView","populateListingWithSeatScore","compListingsWithSeatScore","compListingSectionIds","sectionNames","union","SimplifiedAutopricingSectionV2","ListingCompsSpectrum","ListingCompsRangeMin","ListingCompsRangeMax","ListingCompsNumberRange","STEPS_PER_HALF","MAX_RATIO","MAX_RATIO_INCREMENT","MIN_RATIO","MIN_RATIO_INCREMENT","ROUNDING_DECIMAL_PLACES","getCompListingSpectrumIndex","comparablePrice","relativeRatio","useComparableListingsVenueMapColor","defaultCompListings","compListingsBySection","compListingsByRowId","defaultCompListingsBySection","defaultCompListingsByRowId","sellerListingsBySection","sellerListingsByRowId","avgOverallPrice","meanBy","money","hasSellerListings","selectedComplistings","avgCompPrice","hasCompListing","useCompListingDisabledSections","sectionsSameZone","rowScore","rowScoreFloor","rowScoreCeiling","useGetCompListings","selectedListingGroupId","hasGroupCompsFeature","compListingsQuery","shouldQueryListingGroupsQuery","compListingsGroupQuery","updatedFields","getListingDetailsPricingUpdates","priceUpdates","ListingDetailsModalSidePanelContext","onCloseSidePanel","onShowContent","useListingDetailsModalSidePanelContext","autoPricingResultType","ListingTab","getListingDataFieldsForTab","isStrategyEdit","useRestrictSelection","matchingSectionRow","sectionIdFilterNew","restrictSelectionType","setRestrictSelectionType","updateToSameZone","updateToSameSection","onRestrictSelectionTypeChange","isParentListingMode","hasAnyActiveRestrictionApplied","applied","restirctSelectionTypes","onLaunchSectionSelection","marketPrice","dontChangeText","floorError","ceilingError","turnOffSkipSetting","priceProtectionDisabled","adjustListPriceToBeWithinFloorAndCeiling","priceFloorMode","setPriceFloorMode","newV","AutoPricingSection","onSwitchToTab","hasAutoPricingUiGateRemovalFeature","showDetailedSettings","setShowDetailedSettings","AutoPricingStrategyDialogContent","openConfirmDeleteDialog","closeConfirmDeleteDialog","strategyInput","onStrategyDelete","AutoPricingStrategySetting","createStrategyText","detailContent","headerContent","settingContent","useOverflowX","isOverflowX","setIsOverflowX","hasOverflowX","ListingsCarouselCard","listingsCount","IndividualListingCard","valueLabelClassName","MyListingsCard","attrLabelClassName","MY_LISTINGS_KEY","DIVIDER_LINE_KEY","ListingsCarousel","selectedListing","setSelectedListing","CompListingsPreview","listingPriceCalculations","sellerCompListings","listingPriceCalculationsByListingId","record","selectedListingPriceCalculation","isComparableToSelectedListing","cl","sellerCompStubHubListingIds","isComparableListing","compStubHubListingIds","isOutlierListing","outlierStubHubListingIds","mapCompListingToComparableListing","currentCompListings","currentComparableListings","listingPriceCalcWithComps","useGetActiveVenueZoneMapSectionGroups","activeVenueZoneMapSectionGroupsQuery","sectionGroupsBySectionId","useEventVenueMapSectionHandler","onSectionIdsIncludedOrExcluded","excludeUpdatedSectionIds","newSelectedSectionIds","useBulkGetListingPriceCalculationsInEvent","autoPricingSettingsUpdates","compListingSetting","selectedSectionSettings","includeExistingSelectedSectionSettings","onlyForSelectedSectionsEnabled","quantityFilters","excludeFanInventory","excludeDefects","underCutSetting","underCutAbsoluteAmount","underCutRelativeAmount","outlierSetting","standardDeviations","outlierLimit","absoluteOutlierSpacing","relativeOutlierSpacing","absoluteAmount","relativeAdjustmentType","relativeAmount","relativePercentage","listingCalculationsQuery","bulkListingPriceCalculationResult","useBulkEditAutoPricingSettingsSidePanelEventMapProps","compListingsVenueMapColor","BulkEditAutoPricingSettingsSidePanel","show","eventVenueMapProps","PricingSettingsPreviewColumnId","Setting","SettingFrom","SettingTo","PricingSettingsPreviewColumns","include","booleanToText","defaultText","usePricingSettingsPreviewTable","updates","updateChangedFields","conflictText","overrideText","naText","sameZoneOrBetter","sameZone","sectionIdToName","defaultSelectedSections","updatedSectionedSections","venueMapName","betterZonesValue","PricingSettingsPreview","BulkEditAutoPricingSettingsDialog","BulkEditAutoPricingSettingsDialogContent","defaultInput","setChangedFileds","onUpdateChangedFields","BulkEditAutoPricingSettingsModalOrDialog","delayLoaded","setDelayLoaded","hasBulkEditAutoPricingPreviewFeature","showSidePanel","usePricingConfigFromEventIds","refetchOnMount","refetchOnReconnect","LaunchEditAutoPricingSettings","useBulkEditAutoPricingSettings","hasPricingSectionSettingsAcrossEventsFeature","distinctEventIds","eventIdsFromSelectedListings","pricingConfigFromEvents","sanitizedEvent","sharedConfigId","openBulkEditAutoPricingSettingsDialog","closeBulkEditAutoPricingSettingsDialog","onSubmitAutoPricingRework","LanguagePreference","Above_Below","Increase_Decrease","getRelativeAbsoluteOptions","absoluteUnit","getAboveBelowOptions","languagePreference","aboveText","belowText","BulkEditNumber","initAmount","showAbsolute","showApplyToAll","setAmount","setIsRelative","updatedRelative","onApplyToAll","throttle","trailing","FloorCeiling","BulkEditListingPricingFloorCeilingDialog","floorCeiling","marketPriceText","relativeToTarget","setRelativeToTarget","PRICING_FLOOR_CEIL_ADJUSTMENT_TYPE_TO_WARNING_CID","useBulkChangeFloorCeilingActions","openBulkChangeFloorCeilingDialog","closeBulkChangeFloorCeilingDialog","onSubmitChangeFloorCeilingCallback","adjustment","onChangeFloorCeilingClick","PricingActions","bulkUpdateListingPrice","bulkEditAutoPricingSettingsV2","bulkChangeFloorCeilingActions","activeQuery","InfoMessage","INIT_TICKET_TYPE_RULES","BulkChangeTicketTypeRuleDialog","hasBackfillTicketTypeOverrideToSaleFeature","setDeliveryType","setTicketTypeRules","LaunchChangeTicketTypeRule","useBulkChangeTicketTypeRuleAction","openBulkChangeTicketTypeRuleDialog","closeBulkChangeTicketTypeRuleDialog","updateSalesOfListing","useUpdatePurchasesPermissions","hasPurchaseUpdateCommissionPermission","hasPurchaseUpdateDeliveryTypePermission","hasPurchaseUpdateSeatTraitsPermission","hasUpdatePurchasesPermission","LaunchBulkEditCommission","BulkEditCommissionDialog","useBulkEditCommissionAction","openBulkEditCommissionDialog","closeBulkEditCommissionDialog","onLaunchAction","seatingAttributes","SeatingAttribute","BulkEditMarketplaceSeatingDialog","BulkEditMarketplaceSeatingDialogContent","textContentMap","onInputChangeHandler","attribute","formEntries","LaunchUpdateMarketplaceSeating","useBulkEditMarketplaceSeatingAction","openBulkEditMarketplaceSeatingDialog","closeBulkEditMarketplaceSeatingDialog","BulkRemovePredeliveryDialog","setRemoveBarcodes","setRemovePdfs","LaunchRemovePredelivery","useBulkRemovePredelivery","openBulkRemovePredeliveryDialog","closeBulkRemovePredeliveryDialog","useBulkUpdateAutoFulfillPermissions","hasEditAutoFulfillPermissions","LaunchBulkUpdateAutoFulfill","BulkUpdateAutoFulfillDialog","setIsNoFulfill","useBulkUpdateAutoFulfillAction","openBulkUpdateAutoFulfillDialog","closeBulkUpdateAutofulfillDialog","BulkEditDeliveryTypeDialog","infoMessage","showUpdateAssociatedSalesOption","LaunchBulkUpdateDeliveryType","hasSeatSaverPermission","useBulkUpdateDeliveryType","openBulkEditDeliveryTypeDialog","closeBulkEditDeliveryTypeDialog","tickeTypePriorities","_updateSalesOfListings","useBulkUpdateInternalNotesPermissions","hasEditInternalNotesPermissions","LaunchBulkUpdateInternalNotes","hasBulkUpdateInternalNotesFeature","BulkUpdateInternalNotesDialog","updateMode","setUpdateMode","setSearchString","setReplaceString","alertDialog","useBulkUpdateInternalNotesAction","openBulkUpdateInternalNotesDialog","closeBulkUpdateInternalNotesDialog","radioInfoMessageStyle","BulkEditSeatTraitsDialog","setAppendSeatTraits","setSeatTraits","LaunchBulkUpdateSeatTraits","useBulkUpdateSeatTraits","openBulkEditSeatTraitsDialog","closeBulkEditSeatTraitsDialog","LaunchBulkWasteTickets","BulkWasteTicketsDialog","useBulkWasteTicketsAction","openBulkWasteTicketsDialog","closeBulkWasteTicketsDialog","BulkDeleteSeatSaversDialog","LaunchDeleteSeatSavers","useBulkDeleteSeatSavers","openBulkDeleteSeatSavers","closeBulkDeleteSeatSavers","onSubmitDeleteSeatSavers","SettingsActions","hasExportInventoryFeature","bulkEditGeneralSettings","useBulkUpdateListingSettings","bulkUpdateAutoFulfill","bulkEditDeliverType","bulkEditSeatTraits","bulkChangeTicketTypeRule","bulkEditMarketplaceSeating","bulkEditCommissionAction","bulkWasteTicketsAction","useBulkEditTagsPermissions","hasEditTagsPermission","existingTagsMetadata","hasEditTagsPermissions","BulkEditTagsActionPermissionsHandler","BulkEditTagAction","BulkEditTagDialog","selectedTag","setSelectedTag","setTagValue","LaunchBulkEditTags","useBulkEditTagsAction","openBulkEditTagDialog","closeBulkEditTagDialog","onSubmitEditTags","listingClient","onChangeTagClick","editTagAction","TagsActions","InventoryEventBulkActions","mapCompListingToListing","prependTicketClassColorColumnForFirstTime","setInventoryColumnOrderSetting","setInventoryColumnsEnabledSetting","getGroupingLabelForString","getGroupLabelForDates","getGroupLabelForNumber","trunc","fromLabel","getGroupLabelForPercentNumber","EventDisplayCell","isSinglePerformerView","forceDisplayEventName","displayVenueOnly","formattedEventConnector","formattedEventSubName","createInventoryEventUrl","includeAllSearchParams","useEventV2","queryParamOverride","queryParamsToRemove","param","EventActionsCell","hasInventoryEventPageV2Feature","eventUrl","eventUrlV2","LocationDisplayCell","doNotShowVenue","VenueDisplayCell","QUANTITY_COLUMN_MIN_SIZE","QUANTITY_COLUMN_MAX_SIZE","COST_COLUMN_MIN_SIZE","COST_COLUMN_MAX_SIZE","DATE_COLUMN_MIN_SIZE","DATE_COLUMN_MAX_SIZE","EVENTS_TABLE_COLUMNS_CONFIG","getGroupingValue","EVENTS_TABLE_COLUMN_ID_TO_CONTENT_ID","priceUpdatedOn","AccessorReturnType","STRING","SELLER_USER_ID","PURCHASE_BUYER_INFOS","LinkCell","openInNewTab","SHIMMERING_DIV_HEIGHT_REPORT","TableHeader","SALE_REPORT_TABLE_COLUMN_ID_TO_CONTENT_ID","LISTING_REPORT_TABLE_COLUMN_ID_TO_CONTENT_ID","TextCell","CustomNumericFooterCell","sumValue","setSumValue","summaryData","loadData","newSumValue","getFilteredRowModel","columnValues","allNull","targetCurrencyCode","valuesByCurrencyCodeToConvert","columnValue","eventTagColumnDef","eventTags","LISTING_REPORT_TABLE_COLUMNS_CONFIG","holds","holdIds","poInfos","pmtStatuses","pmtMethods","poIds","purchaseIds","purchaseId","stringValueType","buyers","buyerInfos","buyerUserInfos","bi","buyerUser","averageBuyerCommissionPercentage","averageBuyerCommissionPercent","bui","poDates","cancDates","purchaseInfos","vendOrdIds","vendorAccs","mkpPmtState","pmtState","pmtStates","SALE_PAYMENT_STATE_TO_CID","valuesDeduped","fulfillerFormatted","listId","pricer","createdBys","AutomatiqSquareLogo","AxsSquareLogo","FaxExchangeSquareLogo","GametimeSquareLogo","GoTicketsSquareLogo","LyteSquareLogo","SeatGeekSquareLogo","StubHubSquareLogo","TicketEvolutionSquareLogo","TicketmasterSquareLogo","TicketNetworkSquareLogo","mixBlendMode","TickPickSquareLogo","VividSeatsSquareLogo","getMarketplaceSquareLogo","MarketplaceSquareLogo","ConvertPaymentAmount","convertPaymentAmountActionsRef","isSavingConversionRate","setIsSavingConversionRate","canConvertMarketplacePaymentLines","convertMarketplacePaymentDialog","refetchType","currencyConversionPayment","convertedPmtAmt","pmtAmt","showConvertPaymentAmountDialog","MarketplacePaymentOptions","MarketplacePaymentsActions","getMarketplacePaymentDetailsModalConfigWithDeepLink","SHIMMERING_DIV_HEIGHT_PAYMENTS","useMarketplacePaymentsTableColumnsConfig","datesMap","pmtRefId","stateTitle","credit","charge","proceedsAmt","proceeds","useDefaultPaymentsColumnConfig","paymentColumnConfig","getEventsColumnConfigById","SHIMMERING_DIV_HEIGHT_SINGLE_PURCHASE","CommissionsCell","usersIds","isLoadingUsers","usersMap","PurchaseActionsCell","getPurchaseOrderDeepLinkUrl","PurchaseIdCell","vendOrdId","getSeating","purchaseOrderTicketGroup","ticketGroupToGetSeating","PURCHASE_TABLE_COLUMNS_CONFIG","startOfMonthDate","styleOverrides","PURCHASE_TABLE_COLUMN_ID_TO_CONTENT_ID","rowSupportsAccordion","rawIdOnly","tktGrpCnt","pmtMethod","totalCst","totalPmt","totalConvertedPmt","pmtConvRate","formatConversionRate","buyerId","ticketGroupNavId","predeliveryActions","vendorAccountEmail","insertByUserId","displayUserName","multipleText","displayTitle","isMultEv","isValidTicketGroups","getEventDisplayName","firstTgEvent","firstTgPerf","firstTgVenue","firstTgEventDisplayName","performerDisplayName","firstTgPerformerDisplayName","ticketGroupItemHasPerformer","performerName","performerFullName","eventFullName","displayFullName","allEventsSameName","tgEv","isMultipleEvents","venueFullName","allEventsSameVenue","adjustedSeating","SALE_REPORT_TABLE_COLUMNS_ACCESSOR","saleDate","commssionShr","ttlOutsBal","categ","mkpSaleId","stringValues","pmtRcv","cancelDate","tktGrId","lastPmtOn","fulfillDate","DAY_IN_SECONDS","TIME_BUCKET_TOTAL_COLUMN_ID","timeBucketToDayString","timeBucket","daysText","timeBucketToColumnId","storedColumnNumberPrecision","arTimeBucketColumnDef","timeBucketWithData","timeBucketsWithData","timeBkt","displayValue","SALE_REPORT_TABLE_COLUMNS_CONFIG","dateEndOfWeek","saleStatusContentId","getSaleStatusDisplayContentId","statusContent","SaleStatusIcon","getSaleStatusIcon","ticketTypeIcon","fulfiller","commissioner","MerchantDisplay","SaleMarketplaceIdDisplay","uniqueIdLabel","ProceedsCell","ProceedsWrapper","ProceedsMargin","SHIMMERING_DIV_HEIGHT_SINGLE_SALE","SalesActionsCell","getSaleDetailsDeepLinkUrl","getSaleDetailsModalConfigWithDeepLink","mainActionTypes","NON_MAIN_SALE_ACTIONS","getSaleActionButton","SALE_TABLE_COLUMNS_CONFIG","SALE_TABLE_COLUMN_ID_TO_CONTENT_ID","hasWasteSaleFeature","hasSaleHasMarketplaceProblemFeature","hasMarketplaceProblem","mkpContrState","isFulfillVerMis","mkpFulfState","isExternal","poInsertBys","poVendOrdId","externalPoID","origBy","totalConvertedAmount","qtyWasted","SALE_TABLE_FLATTENED_COLUMNS_CONFIG","isFlattenedMode","ColumnListItem","highlighted","getContentIdForColumn","LISTING_TABLE_FLATTENED_COLUMN_ID_TO_CONTENT_ID","SALE_TABLE_FLATTENED_COLUMN_ID_TO_CONTENT_ID","PAYMENTS_TABLE_COLUMN_ID_TO_CONTENT_ID","ON_SALE_EVENT_TABLE_COLUMN_ID_CONTENT_ID","isCustomColumn","useColumnDisplayName","columnIds","displayNamesWithContentId","columnIdDisplayNameMapping","access","customColumn","displayNames","ColumnsSection","renderActions","highlightIndex","shouldHideItem","OperatorsIcon","CustomColumnInstruction","TableCustomColumnModal","columnToEditId","showInfo","setShowInfo","showMetricSelector","setShowMetricSelector","nameColumnPlaceholder","invalidFormulaMsg","columnWithSameNameExistsMsg","allPresetColumnsMap","allPresetColumnCid","allPresetColumnNames","actionOutboxEntityType","fieldOptionsPreset","findDependentListingTableColumnIdsListing","validateFormulaListing","validateFormulaListingReport","validateFormulaEvents","EVENTS_FORMULA_FIELDS_TO_CID","filteredFormulaFields","FORMULA_FIELD_TO_COLUMN_ID_LISTING","FORMULA_FIELD_TO_COLUMN_ID_LISTING_REPORT","FORMULA_FIELD_TO_COLUMN_ID_SALE","FORMULA_FIELD_TO_COLUMN_ID_EVENT","fieldOptions","fieldOptionsDisplay","autoCompleteOptions","customEventsColumns","customSaleColumns","customPurchaseColumns","customPaymentsColumns","customOnSaleEventColumns","formulaTokens","setFormulaTokens","formulaCaretPosition","setFormulaCaretPosition","tokenRefs","validateNewCustomColumn","allColumnNames","newCustomColumn","dependency","formulaTokensWithCaret","keyUpHandler","newTokens","tokenToAdd","tokenRowRange","tokenItem","tokenElement","lastInRow","metricToken","newCaretPosition","TableColumnsInput","requiredColumns","userColumnSelection","onUserColumnSelectionChange","userColumnSorting","onUserColumnSortingChange","userEditableColumns","onUserEditableColumnsChange","onCustomColumnsChange","reportingTags","enableConfigureEditability","showTicketClassColor","isCustomColumnModalOpen","toggleCustomColumnModal","customColumnToEditId","setCustomColumnToEditId","customColumnToDeleteId","setCustomColumnToDeleteId","highlightedItemIndex","setHighlightedItemIndex","deleteCustomColumnConfirmDialog","columnNumberPrecisionSettingId","setNumberPrecisionSetting","updateNumberPrecisionSetting","isTagColumn","moveColumnUnderLastEnabled","currentPosition","lastEnabledPosition","findLastIndex","newPosition","addColumn","removeColumn","cId","deleteCustomColumn","remainingColumns","editCustomColumn","renderColumnRowActions","isCustom","toggleColumn","FormatOptionPill","renderToggleButton","openAddColumnModal","hiddenItemIds","newColumns","ColumnSettingsModal","storedEventsColumnOrderSetting","defaultEventsColumnsConfig","setEventsColumnOrderSetting","setInventoryFlattenedColumnOrderSetting","storedInventorySideTableColumnsOrderSetting","setInventorySideTableColumnsOrderSetting","storedSaleColumnOrderSetting","defaultSalesColumnsConfig","setSaleColumnOrderSetting","storedSaleFlattenedColumnOrderSetting","defaultSalesFlattenedColumnsConfig","setSaleFlattenedColumnOrderSetting","storedSaleSideTableColumnOrderSetting","setSaleSideTableColumnOrderSetting","storedPurchaseColumnOrderSetting","defaultPurchasesColumnsConfig","setPurchaseColumnOrderSetting","storedPurchaseEventColumnOrderSetting","defaultPurchaseEventEnabledColumnsConfig","setPurchaseEventColumnOrderSetting","storedPurchaseSideTableColumnOrderSetting","setPurchaseSideTableColumnOrderSetting","defaultMarketplaceColumnsConfig","defaultMarketplacePaymentsColumnsId","storedMarketplacePaymentsTableColumnOrderSetting","setMarketplacePaymentsTableColumnOrderSetting","storedOnSaleEventsTableColumnOrderSetting","defaultOnSaleEventsColumnsConfig","setOnSaleEventsTableColumnOrderSetting","setColumnOrderSetting","storedEventsColumnsEnabledSetting","setEventsColumnsEnabledSetting","storedInventoryFlattenedColumnsEnabledSetting","setInventoryFlattenedColumnsEnabledSetting","storedInventorySideTableColumnsEnabledSetting","setInventorySideTableColumnsEnabledSetting","storedSaleColumnsEnabledSetting","setSaleColumnsEnabledSetting","storedSaleFlattenedColumnsEnabledSetting","setSaleFlattenedColumnsEnabledSetting","storedSaleSideTableColumnsEnabledSetting","setSaleSideTableColumnsEnabledSetting","storedPurchaseColumnsEnabledSetting","setPurchaseColumnsEnabledSetting","storedPurchaseEventColumnsEnabledSetting","setPurchaseEventColumnsEnabledSetting","storedPurchaseSideTableColumnsEnabledSetting","setPurchaseSideTableColumnsEnabledSetting","storedMarketplacePaymentsTableColumnsEnabledSetting","setMarketplacePaymentsTableColumnsEnabledSetting","storedOnSaleEventsTableColumnsEnabledSetting","setOnSaleEventsTableColumnsEnabledSetting","setColumnsEnabledSetting","setCustomEventsColumns","setCustomListingColumns","setCustomSaleColumns","setCustomPurchaseColumns","customMarketplacePaymentsColumns","setCustomMarketplacePaymentsColumns","setCustomOnSaleEvemtsColumns","setCustomColumns","customColumnsFiltered","presetColumns","presetColumnIds","filterColumns","columnList","activeTagNames","customColumnIds","storedColumnsEnabledSetting","storedColumnOrderSetting","storedColumnOrderSettingFiltered","allColumnIdsAvailable","existingColumnsOrderSetting","storedColumnEnabledSettingFiltered","editabilityId","setEditableColumns","setUserColumnSelection","setUserColumnSorting","setUserEditableColumns","userColumnIsDirty","setUserColumnIsDirty","newEnabledColumns","userColumnSortingFiltered","newSelection","newEditableColumns","SelectAllHotkeys","MultiEditCheckboxChecked","MultiEditCheckboxUnchecked","MultiSelectionToggle","isToggled","tooltipText","isEscKeyPressed","isToggleOn","tooltipTextHighlighted","toggleButton","MultiSelectionToggleGroup","onToggle","enableHotkey","onSelectMultipleClick","_keyName","_event","EventListingHeader","hasInventoryTileMetricV2Feature","getInventoryListingMetricsFn","onToggleGroup","searchParam","translateEventToInventoryAccordionItem","isInventoryEventDetailsPage","multiSelectCollapsed","multiselectEventPageDetails","InventoryEventsAccordion","isColumnModalOpen","toggleColumnModal","onColumnSettingButtonClickHandler","disabledPaginationStyles","tableCellStyles","SalesTable","hasViewProceeds","salesText","saleSelection","customSaleColumnsFiltered","saleColumnOrder","salesTableColumnsConfig","getSaleColumnConfigById","checkbox","SaleEventTileWrapper","SaleTilesContainer","OtherDetailsDiv","SaleTile","SaleTiles","EventSaleBody","SalesBulkActionsPermissions","useUpdateSalesSettingsPermissions","hasUpdateSalesSettingsPermission","hasSaleViewPermission","SALES_BULK_UPDATE_GENERAL_SETTINGS_UPDATE_KEY","SALES_BULK_UPDATE_COMMISSION_UPDATE_KEY","SALES_BULK_UPDATE_TAGS_UPDATE_KEY","SALES_BULK_UPDATE_INTERNAL_NOTES_UPDATE_KEY","SALES_BULK_UPDATE_AUTOFULFILL_UPDATE_KEY","SALES_BULK_UPDATE_MARK_AS_FULFILLED_UPDATE_KEY","SALES_BULK_MARK_SALE_AS_PAID_UPDATE_KEY","BulkMarkSaleAsPaidDialog","BulkMarkSaleAsPaidDialogContent","paymentReference","LaunchBulkMarkSaleAsPaid","useBulkMarkSaleAsPaid","openBulkMarkSaleAsDialog","closeBulkMarkSaleAsPaidDialog","markSaleAsPaidForm","PaymentCurrencyConversionSection","paymentAmountReceived","paymentCurrency","ChargeReasonSelector","chargeReason","saleLineItemChargeReason","SALE_LINE_ITEM_CHARGE_REASON_TO_CID","CreditReasonSelector","creditReason","saleLineItemCreditReason","SALE_LINE_ITEM_CREDIT_REASON_TO_CID","useHasPaymentsSectionsV2Feature","ChargeOrCreditReasonSelector","isChargeType","isCreditType","SaleLineItemModal","costDate","dueDate","remainingBalance","SaleLineItemModalBody","hasPaymentsSectionsV2Feature","itemNameText","amountText","useHasWasteSaleFeature","useShouldHideForWastedSale","isWastedSale","isWastageSale","NUM_OF_COLUMNS","NUM_OF_COLUMNS_MOBILE","SectionContentGridFormat","SectionContentGridMobileFormat","useGetModalGridFormat","PaymentSection","lineItems","onLineItemChange","hasEditSaleLineItemsFeature","hasHideSalePaymentReceivedFilterFeature","hideForWastedSale","setCurItem","totalProfitAmount","li","curItem","userHasSaleCancellationReason","SALE_CANCELLATION_REASON_CID","selectedCancellationReason","ALLOWED_TICKET_TYPE_CHANGE_SALE_STATUSES","canEditSale","hasFufillmentMismatchDisplay","InHandInfo","HoldExpirationInfo","holdExpiredOn","holdExpirationDateAsDate","holdExpirationDateString","saleIsHandledByProcessor","canChangeTicketType","cantChangeTicketTypeTooltip","newTicketType","ticketsStyles","phoneNumber","modalSection","FulfillmentSection","canChangeFulfiller","hasFulfillmentProvidersFeature","BulkEditSalesSettingsDialog","getSaleDetailsUpdateInput","BulkEditSalesSettingsDialogContent","hidePaymentCurrencyConversion","LaunchUpdateSalesSettings","useBulkUpdateSalesSettings","openBulkEditSalesSettingsDialog","closeBulkEditSalesSettingsDialog","useSalesBulkActionsState","affectedVisibleSaleIds","isAllSalesSelected","bulkBulkMarkAsPaid","setEditTagAction","LaunchBulkMarkAsFulfilled","hasMarkedAsFulfilled","SalesGlobalActionDropdown","BulkMarkAsFulfilledDialog","useBulkMarkAsFulfilledAction","openBulkMarkAsFulfilledDialog","closeBulkMarkAsFulfilledDialog","FulfillmentActions","bulkMarkAsFulfilled","anyMkpHandledByProcessor","SalesMonthlyBulkActions","ItemsCountDiv","FullPageEventAction","hasFullPageEventViewFeature","createSaleEventPageUrl","EventSaleHeader","translateEventToSaleAccordionItem","noPadding","multiActionToolBarNoHorizontalPadding","SalesEventsAccordion","SaleEventsEmpty","EmptySectionContent.SolidIconContainer","EmptySectionContent.Label","EmptySectionContent.DetailMessage","MarketplacePaymentLinesTableColumnId","useGetRemainingBalance","remainingAmount","saleLineItemsAmount","saleLineItem","shouldCount","SaleLineItemModalWrapper","recvDate","useGetSaleLineItemsBySaleId","SaleChargesTable","saleLineItemIndexesToDisplay","shouldDisplay","SaleLineItemRow","reasonContentId","reasonMsg","LinkMarketplacePaymentToSaleDialog","existingSaleLineItems","saleLineItemsToLink","canSubmit","LinkMarketplacePaymentToSaleAmountDisplay","useLinkMarketplacePaymentLineToSale","reject","UnlinkMarketplacePaymentLineToSaleDialog","refActions","onUnlinkSuccess","useGetSaleByAmbiguousIdWithCatalogData","SaleEventBox","lookupId","onSearchSaleChanged","SALES_STATUS_TO_CID","LinkMarketplacePaymentLineToSaleDialog","onLinkSuccess","existsSaleId","setExistsSaleId","posSaleIdToLink","setPosSaleIdToLink","LinkMarketplacePaymentLineToSale","MarketplacePaymentLinesActionsCell","linkActionsRef","unlinkActionsRef","hasAddMarketplaceChargeCreditToSaleFeature","addedToSaleMsg","userHasLinkPaymentLineFeature","canLinkPaymentLine","canUnlinkMarketplaceLine","canManuallyAddToSale","isAddedToSale","openRemoveFromSaleDialog","closeRemoveFromSaleDialog","openAddToSaleDialog","closeAddToSaleDialog","onRemoveFromSale","onSubmitAddToSale","dropdownItems","useMarketplacePaymentLinesTableColumnsConfig","extLineId","paymentLineId","paymentType","paymentLine","extSaleId","MarketplacePaymentLinesTable","tableData","paymentsTableColumnConfig","MarketplacePaymentsDetailsModalBody","isLoadingTableData","marketplacePayment","isLoadingMarketplacePayment","hasData","MarketplacePaymentsDetailsModal","MarketplacePaymentsDetails","getMarketplacePaymentRelativeUrl","MarketplacePaymentLines","canManageMarketplacePayment","setMarketplaceChargeActions","marketplacePaymentLinesFormFieldDirty","dirtyFields","formatDateCell","allMkpLinesHaveSameCurrency","currencies","saleMkpLines","mkpLines","line","mkpLinesTotal","exampleUiMoney","totalDisplay","mkPayment","MarketplacePaymentSection","hasMarketplacePaymentLinesDisplayFeature","hasManageMarketplacePaymentFeature","canViewMarketplacePaymentLines","marketplacePaymentTerm","PaymentSectionTable","onEditSaleLineItem","onDeleteSaleLineItem","onPaymentReceivedToggleClicked","onSaleLineItemPaymentReceivedToggleClicked","hidePartsForWastedSale","lastPaymentDate","originalProceeds","mkpSaleTtlNetProcs","getMarketplacePaymentId","proceedsPaymentLine","isCharge","lineTypeContentId","costWithSign","PaymentSectionV2","launchRemovePaymentReceivedDialog","closeRemovePaymentReceivedDialog","addSalePaymentDialog","onSetSaleLineItem","setPaymentReceivedFields","onRemovePaymentReceivedFields","onCreateSalePayment","existingMarketplacePaymentProceedsLine","lineItem","PaymentSectionSelector","TagsSection","canCreateTage","SaleDetailsActionKey","Refresh","UnwasteSale","SaleDetailsFooter","refreshTagMetadata","updateSaleMutation","onReload","formIsDirty","canAttemptManualForceFulfill","refreshAction","mainActionsStartingIndex","saleActionType","resolvedAction","mutate","mainActions","subActions","disableAutoSourcing","allowDisableAutoSourcing","CopyToClipboard","copyIconColor","showingCheckmarkIcon","setShowingCheckmarkIcon","LinkAndCopy","valueToCopy","linkChildren","copyIconSize","renderListing","ListingLinksDetail","originatedFromListingId","distinctListingIds","hasOriginatedListing","ticketGroupInfos","canRender","buyerUserIds","tkgInfo","tkInfo","OriginalListing","mkpSeating","SaleTicketsSection","PurchaseInfoSection","qualityControlState","insertByUser","SaleCommissionOverrideFormWrapper","SaleCommissionOverrideDialog","initialCommissions","shimmerHeight","CommissionsOverridesTable","onEditAction","usersQuery","CommissionsTable","purchaseOrderCommissions","poc","users","tkg","CommissionsSection","resetOverride","hasCommissions","ActionIcon","YourSaleSection","displayDate","SaleDetailsModalV2","SaleDetailsModalForm","SaleDetailsModalBody","hasSaleSkyboxNotesSectionFeature","hasSaleSeatsSoldAs","isDelete","indexExisting","saleEventUrl","comNotes","SaleDetailsModalConfig","SeatingAllocationInput","setAllPossibleSeatings","ticketsForAllocationQuery","possibleSeatings","possibleSeatingsConsecutive","nonConsecSeats","possibleSeatingsNonConsecutive","getIndexOf","recAlloc","newSeating","PossibleSeatingTableRow","hasMoreAllocations","recommended","tktsForAlloc","purchasedByUsers","purchasedBy","vendorNames","vendorAccountNames","vendorAccEmail","vendorAccName","seatNumbersDisplay","allSeatsHaveListingOrdinal","listingOrd","ticketOrd","vn","van","SeatingAllocationInputV1","SeatingSingleTicketAllocationInput","selectedSeatings","setSelectedSeatings","hasRemoveListingRestrictionFeature","seatingTickets","filteredPossibleSeating","handleToggleSeating","prevSelected","handleSelection","SeatingAllocationInputTab","SeatingAllocationInputV2","ConfirmSaleModal","ConfirmSaleModalContent","hasAllocatedSingleTicketFeature","showSectionRowChangeWarning","setShowSectionRowChangeWarning","createSeatingFromSelectedTickets","selectedTickets","sectionCounts","rowCounts","mostFrequentSection","maxBy","mostFrequentRow","sortedTickets","saleForm","skipAllocation","getPosManagedMarketplaceSaleInputFromSale","seation","updateSeatingValueFromSingleTicketSelection","SeatingAllocationWarning","LaunchConfirmSale","buttonProps","confirmSale","DeallocateButton","LaunchDeallocateSale","shouldAdminHold","setShouldAdminHold","onToggleAdminHold","offlineSaleUpdate","useBuyerSelector","availableBuyers","BuyerSection","buyerEmail","selectedBuyer","setSelectedBuyer","isEdit","buyerEmailError","orderIdError","buyer","statusAllowedChangeable","MarketplaceSaleInfoSection","saleDateError","currencyCodeError","totalNetProceedsError","allowChangingSaleStatus","allowedSaleStatus","saleStatusOptions","newStatus","newNotes","TicketSection","maxQuantity","isEditingExisting","quantitySoldError","seatFromError","seatToError","deliveryTypeToTicketTypesMap","ticketTypeOptions","seatFromToOptions","setSeatFromToOptions","seatFromOptions","setSeatFromOptions","setSeatTo","seatToOrdinal","canAllocateToNonConsecutiveSeats","isSeatingGA","getConsecutiveSeatingsForQuantity","maxAvailableQuantity","newSeatFromToOptions","seatFromOrdinals","newSeatFromOptions","seatFromTicket","seatFromOrdinal","ticketFrom","newSeatOrdinal","fromTick","toTick","ManagedMarketplaceSaleBody","saleLinkedListingIds","saleLinkedListingQuantityQuery","linkedListingAvailableQuantities","ManagedMarketplaceSale","getPosManagedMarketplaceSaleInputFromListing","ManagedSaleContent","entityIsLoading","saleFormValue","buyerName","buyerPhone","inhandDateMustBeforeEventDate","LaunchEditOfflineSale","editOfflineSale","LaunchExpireHold","LaunchMarkAsFulfilled","RejectButton","LaunchRejectSale","setSaleCancellationReason","LaunchResetFulfillment","ResetFulfillmentDialog","resetArtifacts","setResetArtifacts","ResetFulfillmentDialogBody","SaveArtifactType","LaunchResetFulfillmentV2","openResetFulfillment","closeResetFulfillment","LaunchResetFulfillmentButton","TurnOnSaleAutoFulfillDialog","onTurnOnAutoFulfill","ImageProofBody","ProofTypeSelectionBody","supportTicketmasterBarcodeTransfer","watchTransferType","has1TicketApiFeature","hasTransferWithoutProof","hasTransferWithoutProofFeature","TransferIdProofBody","transferProofIdErrpr","TransferTicketsRecipientBody","onCopy","recipientNameReferenceId","recipientEmailReferenceId","URLInputField","canRemove","allFields","requiredUrlMsg","dupeUrlMsg","UrlProofBody","allUrlInputs","allUrlsError","acceptanceUrlInputs","TransferTickets","TransferTicketsContent","hasTicketmasterEnabled","indexOfTM","ti","appId","transferType","eTicketUrlOnly","acceptanceUrls","TransferTicketsModal","currentBody","setCurrentBody","TransferTicketBody","atleastOneUrlRequired","anUploadedDocumentIsRequired","onTransferClicked","getBody","LocalModalFooter","LaunchTransferTickets","isSaleNoFulfill","openTurnOnSaleAutoFulfillDialog","closeTurnOnSaleAutoFulfillDialog","transferTickets","useUnwasteSale","UnwasteTicketsButton","LaunchUploadBarcodes","dropdownItemMode","uploadBarcodes","actionContentId","UploadETicketsV2","UploadETicketsSelector","LaunchUploadETickets","launchConfirmDialog","uploadETickets","onAttemptLaunchDialog","CancelledHoldIcon","FulfilledIcon","FulfillmentFailedIcon","HoldIcon","PendingAllocationIcon","PendingFulfillmentIcon","PendingRejectionIcon","ProcessingFulfillmentIcon","SaleCancelledIcon","deepLinkId","doTrackView","openOnStubHubMyAccount","clientConfig","inhandTextString","utcDate","fromUtcDate","minutes","differenceInMinutes","shorthandDifference","getMarketplaceSaleInputFromListing","filteredTickets","nextOrd","isValidSequence","sequenceLength","currentSeat","nextSeat","curOrdinal","nexOrdinal","marketplaceContractState","getSiteMarketplacePaymentLineInput","mkpLine","posPmtId","isCred","pmtAmtRcv","pmtCurcy","disAutoSource","commissionOverride","lastPmtDate","SaleInfoDisplay","proposedVenue","proposedPerformer","mainText","connectText","subText","SummaryDateDisplay","MarketPlaceDetails","EventDetails","PurchaseTicketsFlowEventHeader","CostSection","unitCostField","taxPaidField","expectedValueField","websitePriceField","faceValueCostField","unitCostError","faceValueCostError","costSelected","setCostSelected","CostType","setTotalCost","setFaceValue","setUnitCost","newUnitCost","costPerTicket","newExpectedValue","newWebsitePrice","canEditDeliveryType","canEditCustomDeliveryType","canEditTicketTypePriority","deliveryOptionField","inHandAtField","deliveryCostField","daysBeforeEventField","ticketTypeOverrideField","defaultDelivType","delivCst","isNewTicketGroup","deliveryOptionError","inHandAtError","deliveryTypeHasChanged","NewListingSection","SeatTraitsSelectionInput","listingNotesField","canSetSeatTraits","initialTicketGroup","ticketCountField","sectionField","sectionIdField","rowField","rowIdField","allocateSeatsField","seatIncrementTypeField","ticketCountError","seatErrors","seatError","allocSeats","startingOrdinal","prevTicket","getOrSetDefaultAllocateSeats","allocateSeats","increaseNone","increaseBy1Format","increaseBy2Format","increaseByValues","getOrSetDefaultSeatIncrementType","seatIncementType","setSeatsIncrement","setSeatValue","TicketGroupInputForm","hideHeader","TicketGroupInputBody","onHidePredeliverAction","scrollToTopOnTicketGroupChange","getElementsByClassName","PurchaseTicketsFlow","PurchaseTicketsFlowBody","hasPurchaseDeliveryFeature","curTicketGroup","validateTicketGroup","groupOfTickets","formTicketGroup","ftg","Steps","PurchaseVendorInfoStep","PurchaseWizardMainStep","TicketGroupInputStep","TicketGroupBlankInputStep","AddActions","TicketGroupInputSteps","PurchaseWizardBody","purchaseHasMergedListings","initialTicketGroupEditContext","initialTicketGroupEditReason","purchaseDetails","debouncedOrderId","setDebouncedOrderId","orderIdUsedErrorMsg","inhandDateMustBeforeEventDateMsg","currentStep","setCurrentStep","canCreate","absoluteReadOnly","removeEventIdQueryIfExists","onCloseModal","force","setTicketGroupEditContext","editInfo","ticketGroupActionParams","setTicketGroupActionParams","secondaryVendorAccountDialog","updateMergedListingDialog","ticketGroupCancelConfirmDialog","hasPurchasePaymentConversionFeature","purchaseDetailsForm","savePurchaseOrderId","INTERNAL_SERVER_ERROR","reloadWizard","ticketGroupsChanged","costsChanged","paymentsChanged","dealChanged","privateNotes","tgIntentionsMap","tgi","purchaseOrderDetails","onNextFromVendorInfoStep","validateVendorInfo","launchInternationalComplianceDialog","closeInternationalComplianceDialog","internationalComplianceDialogProps","internationalComplianceHookProps","onNextFromPurchaseWizardMainStep","handleTicketGroupEdit","tgContext","ticketGroupIdToRemove","onTicketGroupIntentionDialogSave","cleanTicketGroupContextFromDeepLink","isDisabledAbsolutely","onPurchaseTicketsFlowSubmit","editedTicketGroup","onPurchaseMultiTicketsFlowSubmit","targetEventId","onPurchaseTicketsFlowCancel","getTicketGroupsForEditing","existingTicketGroup","existingTgs","newTGNav","cancelTicketGroupHookProps","onTicketGroupActionAttempt","showConfirmationDialog","PurchaseWizard","idParam","ticketGroupEditReason","splitOutTicketGroupId","isFromAutoPo","PurchaseOrderDetailsForm","poInput","setPoInput","createPurchaseInput","toPurchaseOrderDetailsInput","tgMissingEvents","missingViagVirtualIds","smallCatalog","createDefaultValues","toPartialPurchaseOrderToPurchaseOrderDetailsInput","hasMergedListings","PurchaseWizardModalConfig","accountUserId","accountCurrencyCode","secVendAcc","secVendor","ticketGroupCount","isAutoPo","toTicketGroupInput","toDealInput","expectedVal","isFaceValueCost","isFaceVal","faceVal","webPrice","isNewDeal","rate","fromCurrency","toCurrency","eventSearchText","seatIncrementType","seatValues","incr","purchaseOrderDate","purchasingIdsInUseResult","isMultiTgTableFeature","uniqueSeats","ticketsWithSeats","isAtSingleTicketGroupInputLevel","seatingByEvents","eventKey","newSeat","CombinedTicketGroupSeparator","purchaseIdDeepLinkValue","ticketGroupSeparatorIndex","dataStr","indexOfTgBracket","indexOfTgBracketEnd","ticketGroupIdStr","getCatalogData","PURCHASE_USER_SETTINGS","purchaseQueryValueTransformToUrl","purchaseQueryValueTransformFromUrl","getCatalogDataExpanded","allTicketGroups","emptyResults","getUrl","buildMessage","notification","resolveContent","ACTION_OUTBOX_ENTITY_TYPE_TO_CID","fireNativeNotification","Notification","requestPermission","permission","notif","NOTIFICATION_TYPE_TO_CID","notificationType","onclick","Debug","NotificationsContext","notifications","notificationsIsLoading","notificationsIsInitialLoading","setNotificationFilter","noResultsForNotificationFilter","useNotificationsContext","NotificationsContextProvider","loadActiveNotifications","hasActiveNotificationsFeature","dismissedNotifications","addDismissedNotification","useSet","notificationFilter","getActiveNotificationsQuery","undismissedNotifications","createDateTime","filteredNotifications","getNotificationById","getNotificationsQueryDebounced","signalR","messageList","NotificationId","notificationState","BulkEditHubContext","getBulkEditMethodName","BulkEditHubContextProvider","curJob","setProgressBeforeRetry","errorsBeforeRetry","setErrorsBeforeRetry","setRetryableEntities","updateProgress","successCount","warningCount","successPercent","warningPercent","failurePercent","handler","setSuccessPercent","setStageWrapper","newStage","setCurJobWrapper","job","BulkEditErrorList","BulkEditPreviewListingDetails","bulkEditCountPreview","useGetPurchasesTableColumns","hideActionOnCheckbox","customPurchaseColumnsFiltered","purchaseColumnOrder","getPurchasesColumnConfigById","visibleInCurrentViewMode","usePurchaseTableData","getCatalogDataFromVirtualId","dataWithEvent","tgItem","getRowIdForPurchase","getRowIdForTicketGroup","usePurchaseTableSelection","PurchaseOrderTable","virtuosoItemSize","purchasesText","BulkEditPreviewPurchaseDetails","purchases","SalesTableFlattened","nonNullSales","saleTableFlattenedColumnsConfig","saleTableColumnsConfig","BulkEditPreviewSaleDetails","BulkEditPreviewTicketGroupDetails","NUM_OF_ITEMS_TO_FLAG_AS_TOO_LARGE","BulkEditPreviewDisplay","entityUpdatesPreview","setActiveTabIndex","isTooMany","allItemsCount","CountsByEntityDisplay","countsByEntity","entityContentId","ttlCnt","succCnt","warnCnt","failCnt","BulkEditProgressDisplay","skippedItemCount","idsAffected","BulkEditWarningList","w","BulkEditStatus","progressCountIsMax","progressPercentIsMax","getTitleForMethod","getPrimaryAffectedIds","et","useGetListingAutoPricingSettings","listingPricingSettings","hasCompListingQuantityFiltersChanges","ListingAutoPricingSettingsFormContent","autoPricingStrategySection","PricingProtectionSettings","allInFloor","allInCeiling","onPriceValueChange","valueName","ListingAutoPricingSettingsFormContentWrapper","hasParents","GeneralSettings","BulkEditListingSettingsDialog","BulkEditListingSettingsDialogContent","bulkEditMode","hasPurchaseUpdate","LaunchUpdateListingSettings","CommandOptionType","CommandMenu","setSearch","setSelectedIndex","onToggleSelectionModeClick","onSelectAllClick","bulkEditAutoPricingSettings","filteredCommandOptions","COMMAND_OPTION_TYPE_TO_CID","filteredSettingOptions","combinedOptions","handleOptionSelect","prevIndex","handleClickOutside","SettingTab","UserManagement_Users","UserManagement_Roles","UserManagement_Teams","PurchaseOrder","VendorManagement_Vendors","VendorManagement_Payments","SettingsTree","AdCampaignsTableColumnId","AdGroupsTableColumnId","CommissionReportTableGroupingColumnId","EventDateLocal","EventStateName","IsCommissionEligible","CommissionReportTableValueColumnId","ReportFilterEditability","DEFAULT_REPORT_FILTER_EDITABILITY","ReportPerformerVenueFilterItemId","PerformerIds","VenueIds","EVENT_GROUPING_TO_CID","ON_SALE_EVENT_VIEW_MODE_TO_CID","INVENTORY_VIEW_MODE_TO_CID","SALES_VIEW_MODE_TO_CID","PURCHASE_VIEW_MODE_TO_CID","PURCHASE_SORT_TO_CID","TIME_PERIOD_TO_CID","CONVERSATION_SORT_TO_CID","SETTINGS_VIEWS_TO_CONTENT_ID_MAP","ROLE_TO_CID","PERMISSION_ACCESS_AREA_TO_CID","PERMISSION_TO_CID","EVENT_TIME_FRAME_FILTER_TO_CID","TOP_LEVEL_CATEGORY_TO_CID","PARENT_CATEGORY_TO_CID","EVENT_PRICED_STATUS_TO_CID","YES_ENUM_FILTER_TO_CID","YES_NO_INVERTED_ENUM_FILTER_TO_CID","borderSuccess","LISTING_STATUS_TO_CID","LISTING_STATUS_WITH_ACTION_TO_CID","LISTING_REPORT_TABLE_GROUPING_COLUMN_ID_TO_CONTENT_ID","LISTING_REPORT_TABLE_VALUE_COLUMN_ID_TO_CONTENT_ID","SALES_REPORT_TABLE_GROUPING_COLUMN_ID_TO_CONTENT_ID","SALES_REPORT_TABLE_VALUE_COLUMN_ID_TO_CONTENT_ID","COMMISSION_REPORT_TABLE_GROUPING_COLUMN_ID_TO_CONTENT_ID","COMMISSION_REPORT_TABLE_VALUE_COLUMN_ID_TO_CONTENT_ID","SITE_THEME_OPTION_TO_CID_MAP","ADGROUPS_TABLE_COLUMN_ID_TO_CONTENT_ID","ADCAMPAIGNS_TABLE_COLUMN_ID_TO_CONTENT_ID","AUTO_PO_INBOUND_EMAIL_CLASSIFICATION_TYPE_TO_CID","INVENTORY_REPORT_WIDGETS_TO_CID","REPORT_INVENTORY_GROUP_BY_TO_CID","REPORT_SALE_GROUP_BY_TO_CID","REPORT_IS_SORT_DESCENDING_TO_CID","false","true","BROADCAST_ERROR_CODE_TO_CID","PAYMENT_METHOD_NAME_REGEX_TO_CONTENT_ID","REPORT_FILTER_EDITABILITY_TO_CID","REPORT_FILTER_EDITABILITY_TO_DESC_CID","VENUE_ZONE_SECTION_GROUP_AREA_TYPE_TO_CID","useVenueZoneMapIntegration","zoneConfigType","EventMapContext","mapConfigOverridesQuery","normalizeConfigOverrideWithUiScore","populateScoreForDisplay","venueMapMaxScoreRaw","normalizeScores","scoreOverride","EventMapContextProvider","doNotGetScoreOverrides","hasScaledSeatScoreFeature","mapInfo","mapConfigOverridesQueryWithUIScore","activeConfig","rowIdToOrdinal","sanitizedScores","useListingCanBeWasted","SaleWasteInfo","canBeWasted","ticketsToWaste","isFirst","onWastedSuccess","canBeWastedQuery","LaunchWasteUnsoldTickets","launchWasteUnsoldTickets","LaunchDeleteSeatSaver","onDeleteSeatSaver","ViewCompsBody","ViewCompsModal","LaunchViewComps","ListingDetailsFooter","navigateToWastedSale","mainAction","getListingDetailsAutoPricingInput","quantityScoreOverrideJson","defaultQuantityScoreOverrideJson","defaultCompListingOnlyForSelectedSectionsEnabled","useAutoPricingForm","onSubmitStart","onSubmitDone","listingSettingLoaded","groupSettingLoaded","accountSettingLoaded","autoPricingSectionForm","AdminHoldNotesSection","marketplaceListing","formIndex","setListingStatus","noListingQty","marketplaceSeatOverrides","overrideRow","overrideSeats","brdcstStatus","hasBroadcastErrors","disabledDueToPendingQC","pendingProofErrorMessage","hasUseSelectedRowIdFeature","listingStatusCID","santitizedStatus","errMsgs","errorMessages","errCodes","MarketplaceTable","marketplaceFailures","marketplaceListingStatus","setMarketplaceListingStatus","marketplaceFailuresByMarketplace","newStatuses","onSetMarketplaceListingStatus","newStatues","marketPlace","marketPlaces","canBroadcast","statusChecking","newListing","newMarketplaceStatuses","newMkpListings","mpListingStatus","isDisabledWithPriceCheck","useGetMarketplaceFailures","activities","setActivities","getBroadcastErrorsForListings","failureMessages","broadcastErrorMessages","MarketplaceBroadcastSection","setLoading","setIgnoreDup","handleIgnoreDuplicateClick","ListingDetailsBroadcastForm","useListingDetailsContext","broadcast","getListingDetailsBroadcastInput","overrideRowId","overrideSectionId","useBroadcastForm","broadcastSectionForm","KnownVendors","TicketmasterCa","Axs","Eventbrite","Livenation","BroadwayDotCom","Telecharge","Ticketon","Seetickets","Etix","Tixr","Festicket","Insomniac","DiceImport","MgmResorts","Tickeri","SmithCenterImport","Stubwire","Computicket","MARKETPLACE_TO_BACKGROUND_COLOR","marketplaceBackgroundStubhub","marketplaceBackgroundAxs","marketplaceBackgroundSeatgeek","marketplaceBackgroundVivid","marketplaceBackgroundTicketMaster","marketplaceBackgroundTickPick","marketplaceBackgroundOffline","marketplaceBackgroundFanXchange","marketplaceBackgroundGametime","marketplaceBackgroundTicketEvolution","marketplaceBackgroundTicketNetwork","MARKETPLACE_TO_TEXT_COLOR","marketplaceTextSeatgeek","marketplaceTextFanXchange","marketplaceTextAutomatiq","KNOWNVENDOR_TO_BACKGROUND_COLOR","marketplaceBackgroundTicketmasterCa","marketplaceBackgroundEventbrite","marketplaceBackgroundLivenation","marketplaceBackgroundBroadwayDotCom","marketplaceBackgroundTelecharge","marketplaceBackgroundTicketon","marketplaceBackgroundSeetickets","marketplaceBackgroundEtix","marketplaceBackgroundTixr","marketplaceBackgroundFesticket","marketplaceBackgroundInsomniac","marketplaceBackgroundDiceImport","marketplaceBackgroundMgmResorts","marketplaceBackgroundTickeri","marketplaceBackgroundSmithCenterImport","marketplaceBackgroundStubwire","marketplaceBackgroundComputicket","KNOWNVENDOR_TO_TEXT_COLOR","marketplaceTextEventbrite","marketplaceTextLivenation","marketplaceTextTicketon","marketplaceTextEtix","marketplaceTextFesticket","marketplaceTextMgmResorts","marketplaceTextTickeri","marketplaceTextStubwire","mapBrandNameToBackgroundcolor","marketplaceValue","knownVendorValue","mapBrandNameToTextcolor","marketplaceTextDefault","HistoricalPricingGraph","historicalPricingText","priceText","historicalPricingResult","marketplacesBroadcasted","dataAsTuples","massagedData","priceDate","marketplaceColor","marker","lineColor","visible","chart","zooming","xAxis","yAxis","legend","plotOptions","lineWidth","threshold","series","animation","chartComponentRef","Highcharts","HistoricalPricingGraphSection","ListingDetailsPricingForm","pricing","getListingDetailPricingInput","listPriceMarkup","isPriceByMkp","usePricingForm","pricingSectionForm","ListingDetailsTagsForm","getListingDetailTagsInput","useTagsForm","tagsSectionForm","NotesSection","userHasWasteSaleFeature","wastedTickets","wastedTicketsElements","ListingDetailsTicketsForm","getListingDetailsTicketsInput","hideSeatsFromMarketplace","useTicketsForm","ticketsSectionForm","useListingDetailsMethods","broadcastHasChanges","broadcastMethods","onSubmitBroadcast","onResetBroadcast","ticketsHasChanges","ticketsMethods","onSubmitTickets","onResetTickets","tagsHasChanges","tagsMethods","onSubmitTags","onResetTags","pricingHasChanges","pricingMethods","onSubmitPricing","onResetPricing","autoPricingHasChanges","autoPricingMethods","onSubmitAutoPricing","onResetAutoPricing","autoPricing","onSubmits","onResets","SectionSelectorPanel","AutoPricingSidePanel","metadata","useAutoPricingSidePanelContext","showComparables","showSectionSelector","sanitizedListingInput","AutoPricingSidePanelContext","updateMetadata","AutoPricingSidePanelContextProvider","setContentType","setMetadata","newContentType","newOnSelectedSectionsChange","newRest","ListingDetailsAutoPricingForm","onTabChange","ListingAutoPricingSettingsFormWrapper","ListingDetailsPurchaseForm","SalesDetailsSection","ticketsBySalesId","saleInfos","stat","saleTickets","linkStyle","ListingDetailsSalesForm","ticketsWithSales","wastedSales","saleInfo","nonWastedSales","ListingDetailsModalContext","ListingDetailsModalContextProvider","onSaveCompleted","onSaveStart","spinner","listingTabs","loadDataForTab","tabIndex","ListingDetailsModalV2","listingIsLoading","ListingDetailsModalWrapper","ListingDetailsModalContent","inventoryEventPageUrl","ListingDetailsModalConfig","PendingQCIcon","LaunchBroadcastListing","forTable","isNotListed","MarketplaceSection","marketplaceOptionsContent","MarketplaceSaleBody","MarketplaceSale","SaleContent","LaunchCreateMarketplaceSale","createOfflineSale","LaunchCreateOfflineSale","SplitListQuickOptionsContainer","SoldTicketContainer","SplitListingBody","ticketsByListingNumber","allowManualSplitSoldTickets","setAllowManualSplitSoldTickets","regenerateListingTicketIds","newListingsTickets","listingNumber","assignListingNumberToTicket","newListingNum","newNum","newListingNumber","SplitListingModal","sourceListingId","alwaysUnbroadcastListing","useOriginalTicketGroupInfoForNewListings","SplitListingModalContent","needToSplitToTwoOrMoreListingsError","listingNumberUsedError","listingNumberMap","LaunchSplitListing","splitListing","getSplitListingToOriginalInput","SplitListingToOriginalDialog","isDataLoading","splitListingInput","setSplitListingInput","newInput","ticketListingNumber","LaunchSplitListingToOriginal","hasSplitListingToOriginalFeature","AddAdminHoldDialog","LaunchUpdateAdminHold","isAddHold","adminHoldDialog","onAddHold","onRemoveHold","LaunchUploadExternalIds","uploadExternalIds","LaunchUploadTicketUrls","uploadTicketUrls","gi2","getListingUploadDropdownItems","barcodeAction","ticketUrlAction","externalIdAction","createEticketDropdown","eticketAction","qrCodeAction","actionElements","hasNoBroadcastActions","BROADCAST_STATE_TO_ICON","PENDING_QC_ICON","isUndeliverable","broadcastStatus","pendingProofState","isPendingQc","fallbackFee","allInRatio","listRatio","accountMarketplaces","fieldPrice","otherFieldPrice","otherToFieldRatio","newOtherValue","newListPrice","oldListPrice","isSuspiciousPriceChangeHelper","oldPrice","jsonString","ExpandedCallbackStatus","refreshEventForItems","CatalogDataContextV1","CatalogDataContextV2","CatalogDataContextV2Provider","onCatalogDataExpanded","transformEventData","disableAutoRefresh","expandedCallbackStatus","setExpandedCallbackStatus","onExpandedCallbackStatusUpdate","stringQueryKey","serverSideFilterQuery","countFilterQuery","setCatalogResults","eventsFullyLoaded","allEvents","eventIdsNeedingData","eventCountsMissingDataIds","customEventIds","catalogCountQueryKey","catalogDataQueryKey","shouldQueryCounts","shouldQueryEventData","mergeCatalogCounts","newResults","pricedListCnt","entityCnts","cnts","combine","eventQuery","countsQuery","newCatalogResults","cloneDeep","refetchIntervalLong","catalogQueries","catalogResultsFromHook","eventIdsToGetItemsFor","eventsToGetItemsFor","evCount","isTooManyItems","idArray","posId","realExpandedDataItemsQueryKey","shouldQueryExpandedItems","refreshInterval","onCatalogDataExpandedCallbackCheck","queryResults","queryIds","expandedItemsQueryOptions","queryWithExpandedItems","setEventsTransformed","newExpandedData","merge","newExpandedEvents","transformed","updatedListingsByEvent","setQueriesData","oldData","oldListingsByIds","newListings","oldListing","newListingIdsFlattened","originalListing","shouldKeep","qk","updateExpandedSaleItems","oldSalesByIds","newSales","oldSale","newSaleIds","originalSale","updateExpandedTicketGroupItems","updatedTgsByEvent","oldTgsByIds","oldTg","newTgIds","originalTg","catalogIdKey","oldItem","groupListingIndex","subGroup","listingIndex","oldItemInGroup","CatalogDataContextV1Provider","realQueryKey","shouldBeCachedNormally","setQueryWithExpandedItems","queryWithExpandedItemsFromHook","expandedEventsWithData","updatedCatalaogResult","CatalogDataContextProvider","ExportInventoryButton","textOnly","isButtonDisabled","onExportButtonClicked","ExportPurchasesButton","isEventView","ExportSalesButton","ReloadButton","TransferButton","UploadButton","rawOnSaleDate","rawPreSaleDate","unitNetProceedsUsdMin","unitNetProceedsUsdP25","unitNetProceedsUsdP50","eventVisits","lastHour","lastDay","lastThreeDays","lastSevenDays","eventTransactions","OnSaleEventActionsCell","op","tableColumns","tableColumnsConfig","customColumnDefListing","tagColumnDefListing","customColumnDefListingReport","tagColumnDefListingReport","customColumnDefSaleReport","tagColumnDefSaleReport","customColumnDefEvent","definition","dependentColumns","GROUP_BY_TO_VISIBLE_COLUMN_IDS_SALES","GROUP_BY_TO_PRIMARY_COLUMN_ID_SALES","GROUP_BY_TO_VISIBLE_COLUMN_IDS_LISTINGS","GROUP_BY_TO_PRIMARY_COLUMN_ID_LISTING","getListingFlattenedColumnConfigById","getListingReportColumnConfigById","getSaleFlattenedColumnConfigById","getSaleReportColumnConfigById","getOnSaleEventsColumnConfigById","DEFAULT_LISTING_FLATTENED_COLUMNS_FROM_LISTING_COLUMNS","DEFAULT_SALES_FLATTENED_COLUMNS_FROM_SALES_COLUMNS","getMarketplacePaymentColumnConfigById","createColumnResizingContext","USER_SETTING_TO_SECTION_TYPE","ColumnResizingContextProvider","userSettingId","ColumnResizingContext","isInitializedRef","serverCustomColumnWidths","setServerCustomColumnWidths","customColumnWidths","setCustomColumnWidths","debouncedSetServerColumnWidths","newWidth","onColumnSizingChange","updaterOrValue","Function","currentSize","updatedSize","newWidths","serverCustomColumnWidthsWithoutZeroValues","itemSizeDefault","getCommonPinningStyles","isPinned","getIsPinned","getStart","getAfter","PinnedCellGradient","wrapper","gradient","gradientDark","gradientLight","TableTd","isGrouping","cellRef","paddingLeftLargeDesktop","PosGroupingTableTd","tableTd","pinnedCell","PosGroupedVirtuosoGroup","GroupedVirtuosoGroup","PosVirtuosoTableRow","tableRowStyle","rowWrapper","rowProps","toggleSelected","PosGroupedVirtuosoItem","GroupedVirtuosoItem","itemIndex","getIconClass","arrow","UP","DOWN","SortButton","sortStatus","upArrowClass","downArrowClass","TableSortingIcon","SortButtonV2","TableFilterIcon","ColumnFilterButton","setIsPressed","useColumnFilter","canColumnFilter","getCanFilter","canMultiSelect","tableFlatRows","flatRows","columnFilterOptionsContent","uniqueValues","getFilterValue","isColumnFilterActive","setFilterValueWrapper","setFilterValue","setColumnFilterValue","ColumnRangeFilterInput","hasFilterValue","minText","maxText","newMinValue","newMaxValue","ColumnHeaderFilter","getSortStatus","ColumnHeader","headerRef","isColumnSorted","hasTableColumnFilterFeature","showSortIcon","getIsGrouped","getState","grouping","resetGrouping","toggleGrouping","getCanResize","getResizeHandler","onTouchStart","getIsResizing","HeaderActionWrapper","resizerWidth","IconWrapperV2","ColumnHeaderTh","th","LabelWrapper","showFilterIcon","HeaderContentWrapper","PAGE_SIZE_OPTIONS","PaginationFooter","tableWrapperRef","showPageSizeOptions","paginationWrapperRef","isPageIndexEmpty","setIsPageIndexEmpty","previousPageSize","setPageSize","displayedPageCountOptions","footerHeight","setPageIndex","getCanPreviousPage","previousPage","getPageCount","nextPage","getCanNextPage","PosGroupedVirtuosoList","GroupedVirtuosoList","headerGroups","tableHeaderCmp","PosGroupedVirtuosoScroller","GroupedVirtuosoScroller","scrollerWrapper","useGetVirtuosoGroups","groupedTableRows","rowGroups","rowHeaderGroups","allSingleRows","groupingId","localRowGroups","groupedVirtuosoComponents","Scroller","PosGroupedVirtuosoTable","itemsRendered","groupedContext","groupContentRenderer","rowsGroup","isFirstCell","groupRow","cellNoWrapStyle","groupRowFirstCell","groupValue","itemContentRenderer","globalIndex","setScrollerRef","renderedRows","groupedVirtuosoWrapper","useColumnVirtualizer","renderColumnHeader","renderCell","visibleColumns","getVisibleFlatColumns","columnVirtualizer","horizontal","virtualColumns","virtualPaddingLeft","virtualPaddingRight","renderHeaderRow","vc","h","visibleCells","PosVirtuosoTable","tableLayout","PosVirtuosoTableFooter","PosTableFooterSticky","useStickyFooter","PosVirtuosoTableHead","useTableHotkeys","onRowSelection","selectRow","setRowSelection","onArrowUp","getSelectedRowModel","selectedRows","parent","getParentRow","sanitizedId","onArrowDown","keydown","depths","parentDepth","virtuosoTableOverscan","virtuosoTableStyle","MIN_COLUMN_COUNT_TO_USE_VIRTUOSO","tableHeadCellStyle","resizeDisabled","usePaginationFooter","useDataGrouping","onVirtuosoEndReached","footerEl","roundBorders","disableColumnVirtualization","autoResetPageIndex","enableColumnResizing","columnResizeMode","getGroupedRowModel","getPaginationRowModel","getFacetedRowModel","getFacetedUniqueValues","filterFromLeafRows","filterFns","groupedColumnMode","columnSizing","hasFooterDef","renderRowCell","renderHeader","renderRowContentVirtualized","useColumnVirtualization","getVisibleLeafColumns","TableFoot","customProps","rowContent","removedContent","activityAdditionalInfoList","activityAdditionalInfoItem","ActivityLogDateCellDiv","ActivityLogDateCell","ActivityLogDateRangeCell","dateFrom","dateTo","toDateString","ACTIVITY_LOG_GROUPED_TABLE_COLUMNS_CONFIG","activityLogs","actionDate","sortState","firstDate","lastDate","actionTypeDisplay","initiatedBy","ACTIVITY_LOG_TABLE_COLUMNS_CONFIG","initiatedByImpersonated","ActivityLogTable","groupedActivityLogs","hasGroupedActivityLog","flatActivityLogData","flatActivityLogOptions","activityLog","triggerStyles","FiltersDropdown","selectedDropdownItems","onFilterSelected","searchDeferredValue","useDeferredValue","updateSearchText","filteredFilters","lowercaseSearchText","clearSearch","AddFilterButtonPlain","searchDropdownItem","filtersToolbarGroup","postfixIcon","dropdownGroupContainer","dropdownItemParentLabel","notFoundOption","FILTER_ITEM_WIDTH","FiltersListEmbedded","performerVenueFilter","embeddedResetButton","filterItemsToShow","dropdownFilterIds","dropdownFilter","reportFilterEditability","FilterToolbarListItemEmbedded","filterItemWrapper","filterItemLabel","FilterToolBarButtonWrapper","lineBreak","ReportFilterEditabilityDropdown","onEditabilityChange","handleEditabilityChange","editability","FiltersList","embeddedDisplayOnly","listView","FiltersListListView","FiltersListDefault","FilterToolbarGroupListItem","itemsToShow","filterGroupHeader","FilterToolbarListItem","onFilterRemoved","canBeRemoved","showEditabilityDropdown","onRemoveFilterHandler","filterDropdownItem","RemoveFilterButton","FilterDialogV2","nonHiddenFilterIds","appliedFilterIdsWithNonHidden","setSelectedFilters","clearAll","cleanSelectedFilters","dropdownItem","removedFilterDropdownItem","filtersToRemove","filterIdsToRemove","filteredDropdownItems","updatedSelectedFilters","filterQueryKeysToRemove","filterDropdownItems","FilterDialogV2Wrapper","FilterDialogV2Header","FilterDialogV2Body","FilterDialogV2Footer","saveFiltersButton","ToolbarButton","CustomFilterButton","quickFilters","onToggleQuickFilter","onMoveQuickFilter","onCreateCustomQuickFilter","onDeleteCustomQuickFilter","onUpdateCustomQuickFilter","isShown","SortableCustomFilterItem","isCustomFilter","onEdit","CustomFilterDialog","headerTitle","filterName","validateIsFilterUnique","nameText","notUniqueMsg","MobileFilterToolbar","FilterToolbar","allContentId","showAllButton","showCustomFilterButton","filterAppliedIds","alwaysShowAllFilters","customFilterButtonProps","customFilterDialog","currQuickFilterId","setCurrQuickFilterId","currQuickFilter","allFilter","mergedFilters","ActivityLogFilter","onCurrentFilterUpdated","allActionTypes","allUsers","availableUsers","availableActionTypesWithAudit","auditActionType","actionType","defaultFilter","ActivityLog","setFilter","allow","groupedData","currentGroup","sortedFilteredData","MAX_ADDITIONAL_INFO_LINES","ActivityLogDisplay","actionDateStr","initiatedByUser","entityUrl","timeAgo","additionalInfoKeys","actionTypeIntent","MenuContext","isMenuOpened","toggleIsMenuOpened","MenuContextProvider","useMenuState","useFetchLoginContext","loginErrorMessage","fetchLoginContext","useMainAccessibleRoute","mainAccessibleRoutes","ListingNotificationContext","useListingNotificationContext","ListingNotificationContextProvider","hasHandlingListingSignalRFeature","useRefreshListingOnNotification","debouncedSetActivePosEntity","setItemsIdsToRefresh","debouncedSetItemsIdsToRefresh","messageHandler","EntityId","RowVersion","EntityType","existingRowVer","newIds","SearchResultPickerDialog","resultItems","onResultItemPicked","onResultItemSearched","textSearch","setTextSearch","ri","HAS_RELEASE_NOTES_UNREAD_QUERY_KEY","useHasReleaseNotesUnread","canViewReleaseNotes","hasReleaseNotesUnread","useGetReleaseNoteHtml","releaseNoteHtmlByReleaseNoteId","setReleaseNoteHtmlByReleaseNoteId","releaseNoteIdsSorted","releaseNoteHtmlQuery","descriptionHtml","useReleaseNotes","releaseNoteIdsRead","unreadQueryKey","releaseNotesQuery","setReleaseNoteIdsReadMutation","releaseNoteInfos","setReleaseNoteIdsRead","noteIds","whatsNewTitle","releaseNotesText","isReleaseNoteRead","releaseNoteId","markReleaseNoteAsRead","releaseNotesSortedByType","newFeatures","releaseNote","releaseNoteType","bugFixes","activeReleaseNote","setActiveReleaseNote","htmlIsLoading","reportsStyles","UnreadDot","ProLogo","onLogoClicked","isDevelopment","newCobrandId","StarburstLogo","objectFit","SellerAccountInfoContainer","isCurrent","SellerAccountNameContainer","AccountTypeDiv","AccountNameDiv","ImpersonatedAccountNameDiv","SellerAccountBasicInfo","account","UserInfoDisplayContainer","ActiveAccountDisplay","ActiveUserDisplay","UserInfoDisplay","showUserName","fullUserName","impersonatorDisplayName","NavTitle","HeaderWrapperDiv","HeaderLeftAreaDiv","loggedIn","DropdownLabel","strong","DropdownDivider","MainNavTopBar","signInText","myAccountText","menuText","sellerAccounts","setSellerAccounts","isSellerAccountLoading","setIsSellerAccountLoading","hasKBFeature","canViewStubhubPayments","allowedRoutes","onSwitchAccountClicked","onSellerAccountPicked","hasManyAccounts","MainNavTopBarEmpty","MenuItem","MainMenu","toggleClose","menuItems","UserMenu","MyAccountMenuItem","userDisplayName","menuItem","Dropdown","filteredSellerAccounts","setFilteredSellerAccounts","onFilterSellerAccount","filtered","sa","releaseNoteOptionContainer","OPEN_MENU_MOUSE_EVENT","CLOSE_MENU_MOUSE_EVENT","MainNavSideBar","toggleMenu","delayedOpen","mainSideBarRef","useRefExpanded","handleOnMouseEnter","handleOnMouseLeave","hasHideNavAndFilterBarsFeature","sideBar","MessagesItem","MobileTopBar","NavBarContainer","BottomNavBarContainer","UnauthorizedAccessMessageContainer","BackSection","activeEventIds1","tabEventIds1","activeEventIds2","tabEventIds2","LayoutContentHeader","routeTitle","centerContent","rightContent","OFFLINE_TIMEOUT_MS","LayoutContent","bottomNavbarRef","bottomNavbarHeight","hasAccess","routeTitleDefault","version","Helmet","ACTIVITY_LOG_ITEM_COUNT","EmptyPlaceholder","EmptySectionContent.Error","activityLogResult","AdGroupsDataContext","adGroupsDataQuery","adGroupsData","useAdGroupsDataContext","AdGroupsDataContextProvider","adCampaignId","useGetAdGroupsDataQuery","ADGROUP_DATA_QUERY_KEY","AdPlatformCatalogDataContext","useAdPlatformCatalogDataContext","AdPlatformCatalogDataContextProvider","adPlatformCatalogDataQuery","useGetAdPlatformCatalogDataQuery","ADPLATFORMCATALOG_DATA_QUERY_KEY","adPlatformCatalogData","AdPlatformReportingContext","reportData","AdPlatformReportingContextProvider","aggType","SHIMMERING_DIV_HEIGHT_SINGLE_ADGROUPS","getAdGroupListingsUrl","includeSearchParams","AdGroupActionsCell","ADGROUPS_TABLE_COLUMNS_CONFIG","baseBid","maxBid","dailyBudget","eventDisplayText","adSpend","salesProceeds","bidModifier","useGetAdGroupsTableColumns","AdGroupsTable","adGroupEntities","adGroupsText","TopLevelCategoryMap","getTopLevelCategoryId","category","getTopLevelCategoryName","EmptySelectionKey","getListingDisplaytext","rowText","seatText","seatsText","seatDisplayText","AdGroupsFlattenedView","reportingErrorInfo","catalogData","getListingById","listingsByExternalId","listingExternalIdLookup","venueMapLookup","venueMapByEventId","ticketClassInfoLookupForMap","ticketClassInfoLookup","sectionInfoLookupForMap","sectionInfoLookup","rowInfoLookupForMap","rowInfoLookup","populateBaseProperties","adGroup","reportDataByAdGroupId","processExternalIds","bidModifiers","baseProperties","processRowInfos","rowAndSectionInfo","processTicketClassInfos","processSectionInfos","venueMapTicketClass","cssPostFix","processEvents","processLeafCategories","leafCategoryId","processTopLevelCategories","topLevelCategoryId","resolveAndFlattenAdGroups","adGroups","accPromise","adGroupRows","setAdGroupRows","createAdCampaignIdContext","AdCampaignIdProvider","setCampaignId","setAdCampaignId","AdCampaignIdContext","AdCampaignsDataContext","adCampaignsDataQuery","allCampaignData","AdCampaignsDataContextProvider","campaignDataQuery","useGetCampaignDataQuery","CAMPAIGN_DATA_QUERY_KEY","queryIdSearchParam","INVENTORY_USER_SETTINGS","getDefaultReturnUrl","queryParams","AdGroupEventSelector","filterCallback","BodySectionBody","AdGroupSelectError","EventSection","onSelectEvent","genreId","addEventDialog","onAddEventSave","onAddEventCancel","onAddEvent","contentNA","AddEventDialog","addEventForm","handleEventFilter","isCategoryOverrideMappingKey","categoryOverrideMappings","isCategoryIconManifestKey","categoryIconManifest","getCategoryIconFilename","categoryId","PerformerCategoryIcon","iconFilename","iconFilepath","getTopLevelCategoryIconFilepath","topLevelCategory","AdGroupGenreSelector","GenreSection","onSelectGenre","addGenreDialog","onAddGenreSave","onAddGenreCancel","onAddGenre","AddGenreDialog","addGenreForm","setGenre","AdGroupListingSelector","listingsData","addListingDialog","onAddListingSave","onAddListingCancel","onAddListing","listingDisplayText","enableButton","AddListingDialog","addListingForm","getListingsForEvent","getSectionsForEvent","sectionsData","setListing","AdGroupPerformerSelector","allPerformers","PerformerSection","onSelectPerformer","addPerformerDialog","onAddPerformerSave","onAddPerformerCancel","onAddPerformer","performerRef","AddPerformerDialog","addPerformerForm","setPerformer","tlc","AdGroupSectionSelector","SelectionBody","onSelectSeating","addSeatingDialog","onAddSeatingSave","onAddSeatingCancel","onAddSeating","AddSeatingDialog","addSeatingForm","setSeating","seatingId","AdGroupTicketClassSelector","ticketClassesData","TicketClassSection","onSelectTicketClass","addTicketClassDialog","onAddTicketClassSave","onAddTicketClassCancel","onAddTicketClass","AddTicketClassDialog","addTicketClassForm","setTicketClass","AdGroupCreateForm","AdGroupCreateModal","AdGroupCreateFormContent","curFormValues","adCampaignEntity","adGroupCreateInput","createAdGroupClientRequest","bidModifierValue","isManaged","baseKey","maxBidLessThanBaseBidMsg","dailyBudgetLessThanMaxBidMsg","validateForm","AdGroupCreateFormBody","namePlaceholder","setName","setBaseBid","setMaxBid","setDailyBudget","AdGroupCreateFormHierarchy","clearChildren","performerForEvent","parentTicketClass","parentSeating","AdGroupsToolbarDiv","FilterBarLeftSide","FilterBarRightSide","AdGroupsToolbar","SPONSOREDLISTINGS_USER_SETTINGS","AdCampaign","AdGroupsContent","errorInfoAdGroups","errorInfoCatalog","ExpandCollapsableContentButton","collapsableButton","AdGroupListingsFlattenedView","resolveListings","listingsArray","listingPromises","ticketClassPromises","filteredListings","sectionPromises","explicitEvents","eventsForVenues","matchedEvents","eventsForPerformer","eventsForGenre","listingsMapForEvents","processedListings","setProcessedListings","collapsedRow","AdGroupListings","useGetInboundEmailSellerGuidIds","MessagesAddSourceModal","guidsQuery","showCopiedText","setShowCopiedText","AddMessageSourceIcon","Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Content","Badge","BadgeWithCounts","EMAIL_NAV_PAGE_NAME_MAP","inbox","uncategorized","recentlyCategorized","EmailNavToolbar","pageName","uncategorizedEmailsCount","AccountDisabledNotification","notificationContainer","MerchantColorBadge","directOfflineContent","ConversationDataContext","getPurchaseOrderDetails","getSaleDetails","ConversationDataContextProvider","purchaseLookup","saleLookup","ConversationType","EMAIL_CLASSIFICATION_TYPE_TO_CONVERSATION_TYPE","convertEmailClassificationTypeToConversationType","convertConversationTypeToEmailClassificationTypes","conversationTypes","ConversationListItem","merchantName","conversationType","unread","inboundEmail","sellerSupportCase","setSubtitle","setContent","setListingNotes","merchant","setMerchant","supportCaseIdContent","orderIdContent","seatsContent","ticketsContent","fetchDisplayContent","miniCatalog","ConversationListItemDisplay","dateFormatter","dateStyle","timeStyle","EmailThreadItem","subject","receiveDate","fromEmailAddress","attachment","attachmentFileName","downloadUri","EmailThread","threadQuery","SellerSupportCaseDataContext","getSellerUserDetails","SellerSupportCaseDataContextProvider","userDetailsLookup","userDetails","AttachmentDisplay","attachmentInfo","showDelete","onDeleteClicked","isDownloadable","handleDownloadFile","downloadedFiles","requests","attachmentId","fileToDownload","AttachmentsPanel","SupportCaseNoteDisplay","createdByUserId","noteDate","setUserDetails","attachmentsInfo","setAttachmentsInfo","getUserDetails","fetchAttachmentMetadata","content_type","attachmentsResult","CONTENT_MAX_SIZE","SupportCaseReplyInput","sellerSupportCaseNotesIsLoading","onReply","windowHeight","useWindowSize","sendReply","onDeleteAttachment","attachmentToDelete","newAttachments","onUploadFileClick","attachmentsContent","att","SupportCaseBody","sellerSupportCaseNoteQuery","supportNoteData","supportNote","createByUserId","createDate","useGetSaleWithCatalogData","SwiperButton","dir","swiperRef","swiper","useSwiper","expandButton","slidePrev","slideNext","HotkeyDisplay","SidePanelPage","SaleEvent","createResizablePanelContext","useSidePanelContext","defaultSidePanelState","getSidePanelKey","sidePanelId","SIDE_PANEL_STORAGE_KEY","persistSidePanelState","sidePanelState","isFlyoverPanel","panel","getSidePanelState","stringifiedSidePanelState","SidePanelProvider","initialOpened","panelType","sidePanelType","loadedState","sidePanelWidthsSetting","hasSidePanelWidthsFeature","stateRef","setCollapsed","setHidden","sidePanelWidths","onUpdateSidePanelWidth","updatedWidths","useGetNoSelectedItemsLabel","useEventsAccordionSelectedLegend","singleElementLabel","multipleElementsLabel","eventText","selectedFromText","noItemsSelected","isAllGroupsMode","eventsCount","singleSelectedItems","selectedEventsLabel","selectedListingsLabel","SetInventoryEventAccordionSelectionCountLabel","listingsText","selectedLegend","SetInventoryMetricsSelectionCountLabel","eventsMap","selectedLabel","selectedEventsIds","useBulkEditBroadcastGlobalSettingsAction","eventToggleState","CatchUpAction","hasPricingCatchupFeature","onCatchUp","tabEventIds","activeEventId","catchUpEventUrl","bulkEditListingSettings","InventoryGlobalBulkActions","EventsTable","usePagination","detailedMetrics","singlePerformer","setGrouping","eventsColumnOrder","onRowSelectionChanged","onGroupingChange","enableGrouping","posTableHeadStyle","EventsTableWithInnerGrouping","columnSettingButton","highlightEvent","InventoryDetailedEventView","scrollToEventId","dayOfWeek","weekday","MetricGroup","metricGroup","metricValuePlaceholder","AverageTicketPriceDisplay","formattedTotalMetrics","MetricTile.Root","MetricTile.Title","MetricTile.Metric","SalesAndMarginDisplay","MetricTile.CircleProgressBar","TicketsListedAndSoldDisplay","MetricTile.FractionMetricText","useGeSummaryMetricsQuery","mergeCatalogMetrics","getCatalogSummaryMetrics","eventIdsToGetSummaryMetricsFor","metricsToSummarize","normalMetrics","evId","evMetrics","summaryMetricsQuery","prototype","summaryMetrics","useGetActiveAccountClientConfig","requestName","getActiveAccountClientConfig","newLogin","EVENT_DETAILED_METRICS_QUERY_KEY","filterInvisibleGroups","deepOverrideListing","dataToOverride","override","mergeCatalogListings","overrideById","getCatalogSectionalDataExpanded","listingQuery","curListings","overrideListings","resultMetrics","decimalDigits","getEventDetailedMetrics","listingQueryValueTransformFromUrl","listingQueryValueTransformToUrl","PerformerVenueDisplayContainer","GROUPING_METRICS_PLACEHOLDER_DIMS","PerformerVenueDisplay","onPerformerVenueClicked","metricsData","hideMetrics","displayMetrics","hasCategory","PerformerVenueFilterBarDiv","PerformerVenueFilterBar","groupingQuery","onGroupingQueryChanged","performerFilterEditability","venueFilterEditability","debouncedOnSearchChange","onSelectorChange","activeReportFilterId","activeEditability","activeValueOptionsContent","SelectedPerformerVenueContainer","SelectedPerformerVenueListContainer","SelectedPerformerVenueList","selectedPerformerVenues","mg","SelectedPerformerVenuesDivider","isOpened","clickable","upIcon","PerformerVenueList","updateTempQuery","defaultGroupingQuery","setGroupingQuery","debouncedGroupingQuery","setDebouncedGroupingQuery","debounceWrapper","selectedPerformerVenuesWithType","setSelectedPerformerVenuesWithType","selectedDividerIsVisibleInList","setSelectedDividerIsVisibleInList","selectedDividerButtonShouldBeVisible","setSelectedDividerButtonShouldBeVisible","showSelectedList","setShowSelectedList","updateSelectedPerformerVenues","newSelectedPerformerVenues","selectedPerformerVenuesOtherType","newFilterQuery","performerGroupings","venueGroupings","filterPerformerVenues","groupings","filteredGroups","curSelectedIds","newAllIds","updateSelectedIds","mg2","isMatchingSearch","sg","selectedPerformerVenuesMap","getNonEmptyPerformersAndVenues","perfs","getItemsToDisplay","unselected","indexOfDivider","onItemsRenderedHandler","showSelectedPerformerVenuesList","NoMatchingContent","BulkEditStatusPopoverContent","BulkEditStatusPopover","isPopoverOpen","setIsPopoverOpen","showSpinner","setShowSpinner","isDone","onRefreshDoneData","MultiSelectionToggleGlobal","onMultiSelectListingClick","useFiltersHelpers","ignoredKeys","allVisualFiltersIds","EventDateSelector","eventTimeFrame","timeFrameLabelRecord","allEventsLabel","onEventTimeFrameChanged","timeRange","isCustomDateRangeSelected","useDiscoveryFilters","eventFilter","cleanCustomFilters","useQuickFilters","quickFiltersStateSetting","customQuickFiltersSetting","defaultQuickFilters","useUserSetting","defaultQuickFiltersState","quickFiltersState","setQuickFiltersState","defaultCustomQuickFilters","_customQuickFilters","setCustomQuickFilters","customQuickFilters","processFilter","filterSortKeys","filterMap","NEGATIVE_INFINITY","originalIndex","POSITIVE_INFINITY","toggleQuickFilter","draftState","moveQuickFilter","overId","movedIds","createCustomQuickFilter","cleanData","deleteCustomQuickFilter","updateCustomQuickFilter","updatedFilter","QUICK_FILTER_SEARCH_PARAM_KEY","useQuickFilterSearchParam","useFilterToolbarQuickFilters","currentQuery","useQuickFiltersOptions","selectedQuickFilterId","setQuickFilterParam","resetQuickFilterParam","MetricViewIcon","EventEntitySearchBox","onIdLookup","onEventSearch","clearSearchEntity","placeholderContentId","disableSearchMode","OnSaleEventSearchBox","onSaleEventQuery","useDefaultOnSaleEventFilter","next7DaysRange","next30DaysRange","DISCOVERY_VIEW_MODE_TO_ICON","OnSaleEventFilterBar","filterToolbarProps","filterToolbar","useMergedTagFilters","includeEventTags","tagFilters","useTagFilters","eventTagFilters","useEventTagFilters","tagsFilterGroup","useStandalonePurchaseVendorAccountSelector","purchaseVendorAccountsMap","setPurchaseVendorAccountsMap","purchaseVendorQuery","noVendorIds","onPurchaseVendorAccountsListChange","purchaseVendorAccounts","pvaMap","pva","purchaseVendorAccount","purchaseVendorAccountsList","multiSelectOptions","purchaseVendorAccountsQuery","purchaseVendorAccountsByVendorIds","StandalonePurchaseVendorAccountsSelector","selectedPurchaseVendorAccounts","setSelectedPurchaseVendorAccounts","purchaseVendorAccountsMapWithSelected","selectedPurchaseVendorAccountEmails","allPurchaseVendorAccounts","emailAccounts","purchaseVendorAccountId","cleanEmailAccounts","cleanPurchaseVendorAccounts","purchaseVendorAccountEmails","cleanPurchaseVendorAccountIds","adaptPurchaseVendorAccountsToPurchaseVendorAccountsMap","MetricsIcon","useVendorAccessControlProvidersSelector","availableAccessControlProviders","VendorAccessControlProvidersSelector","usePurchaseInfoFilters","showCommissionerFilter","showMetricsIndicationOnFilters","isReportPage","hasFilterByCommissionUserFeature","vendorAccountQuery","metricsIconNote","PosEnumMultiSelect","EventSelector","hasNoEvent","useEventStateFilters","isChanged","useCommonEventFilters","showCatalogFilters","additionalFilters","hasCatalogFilters","locationFilters","eventStateFilters","hideCatalogFilters","purchaseMandatoryFiltersToShow","usePurchaseFilters","showConsignmentFilter","hasFilterByCurrencyCodeMultiFeature","hasFilterByCurrencyCodeFeature","hasFilterByPaymentCurrencyCodeMultiFeature","hasFilterPOByPaymentMethodIdFeature","internalNotesFilter","purchaseInfoFilters","tagsFilter","costHandle","newPaymentCurrencyCodes","newPurchaseOrderState","low","high","newCurrencyCodes","PurchaseGlobalActionsPermissionsWrapper","useDefaultPurchaseFilters","purchaseVendors","ticketmasterVendorId","TileViewIcon","PURCHASE_VIEW_MODE_TO_ICON","PurchaseOrderBasicInfo","purchaseOrderIdLabel","vendorLabel","vendorAccountNameLabel","purchaseDateLabel","PurchaseSearchBox","hasFullPageEventViewEntitySelection","searchId","setSearchId","searchResults","setSearchResults","isLoadingSearch","setIsLoadingSearch","onLookupById","idText","idNum","idStr","matchedIds","poInfo","PurchaseFilterBar","isAddSourceModalOpen","setIsAddSourceModalOpen","hasBulkEditInPurchaseEventFeature","hasNewSearchFeature","onCloseAddSourceModal","onAddPurchase","purchaseFilters","fromPosEventId","useDefaultSaleFilters","saleQuery","last30DaysPreset","SALE_VIEW_MODE_TO_ICON","SaleIdContainer","AttrValue","SaleBasicInfo","saleIdLabel","marketplaceLabel","SaleSearchBox","saleQuerySearchText","activeDeepLinkSaleId","SaleFilterBar","isSearchOnly","saleFilters","useSaleFilters","saleMandatoryFiltersToShow","MainFilterBar","sharedProps","TagValueFilterInput","noTagsMsg","selectedTagMetadata","noTagsExist","useEventLastReviewedFilters","MAX_NUMBER_OF_TICKETS_HELD","listingsMandatoryFiltersToShow","useListingFilters","isReportsPage","eventLastReviewedFilters","hasAutoFulfillSetting","autoPricingFilter","adminHoldFilter","seatingFilters","additionalEventFilters","filterEnumValue","eventFilters","notesFilters","purchaseInfoFiltersBase","ViewModeSelector","viewModeSettingsId","viewModeCidMap","viewModeIconMap","setViewModeUserSetting","debouncedOnViewModeChange","selectedViewMode","effectiveViewMode","ContainerStyledDiv","isHorizontal","ContentStyledDiv","shouldAnimateContent","MIN_PANEL_SIZE","MAX_PANEL_SIZE","ResizeEdge","North","South","East","West","ResizablePanel","initialSize","sidePanelPage","autoHide","minPanelSize","maxPanelSize","minPanelPercent","maxPanelPercent","defaultRatio","showExpandButton","disableAnimation","setDisabledAnimation","lastHandleRect","getMaxSize","parentBound","parentSize","setSize","getMinSize","updateSize","actualSize","actualContent","bound","proposedSize","defaultSize","onDrag","handleRect","deltaX","deltaY","delta","divider","DraggableCore","isHandleInFront","only","SidePanelButton","useDefaultListingFilter","next2WeeksRange","INVENTORY_VIEW_MODE_TO_ICON","ListingBasicInfo","listingIdLabel","ListingSearchBox","listingInfo","ListingFilterBar","FlyoverPanel","componentDidInit","setComponentInit","ModalHeaderContent","ExplorerLayout","leftPanelContent","leftPanelFlyover","rightPanelContent","rightPanelFlyover","initialSlide","mainRef","SwiperComponent","snapOnRelease","subPanel","createPurchaseSearchPageUrl","searchResultId","createSaleSearchPageUrl","createInventorySearchPageUrl","InventoryEventsExplorer","onPerformerVenueRendered","onEventsRendered","onAdvancePurchaseSearch","searchUrl","hasSectionalLoadInListingTable","getCatalogDataExpandedCallback","onCatalogDataExpandedCallback","ListingRouteBody","getActClientCfg","curEntity","activeClientCf","listingDetail","isSidePanelFlyover","InventoryEventSummaryMetrics","hasBlockInventorySummaryStatsFeature","selectedEntity","selectedPerformersCount","selectedVenuesCount","hideMobile","SummaryTile.Root","SummaryTile.Body","SummaryTile.Title","SummaryTile.Description","SummaryTile.MetricGroup","SummaryTile.Metric","useEventFlattedViewSelectedLegend","isNoGroupSelection","SetInventoryFlattenedViewSelectionCountLabel","InventoryFlattenedView","doNotShowToolbar","bulkToolbarContainer","InventoryEventListing","onInventoryEventExpanded","returningFromViagogoEventId","setReturningFromViagogoEventId","fromViagogoEventId","eventIdFromHash","listingItem","SetSalesEventAccordionSelectionCountLabel","saleText","SetSalesFlattenedViewSelectionCountLabel","SalesGlobalBulkActions","SubfilterContainer","SubfilterGroupItem","SubfilterGroup","useQuickSubfilters","quickSubfilters","currentQuickFilterId","filteredQuickSubfilters","SalesFlattenedView","SalesEventListing","onSalesEventExpanded","quickSubfiltersInit","todayPreset","last7DaysPreset","recentlySold","Subfilters","salesItems","saleItem","EventListing","SalesEventsExplorer","SALE_USER_SETTINGS","allSales","salesQueryValueTransformToUrl","salesKey","salesQueryValueTransformFromUrl","SaleContextProvider","SalesRouteBody","saleDetail","SaleSearchAccordionListContext","SaleSearchAccordionList","onSelectSale","SaleAccordionItemHeader","SaleAccordionItemBody","getClassificationTypeToCid","ClassifyEmail","onEmailClassified","orderIdInUseMessage","orderIdInUseSameVendorMessage","orderIdDoesNotExistMessage","orderIdDoesNotExistForVendorMessage","classificationTypeToCid","defaultClassificationType","resetEmailPurchaseOrderContext","watchedClassificationType","watchedPurchaseOrderVendorId","orderIdInUseQuery","orderIdUsedByPurchaseOrderIdsResult","classifyNewOrderAsExistingOrder","createNewOrderForExistingOrder","getClassifyEmailModalConfig","HOTKEY_LETTER_MAP","transfer","private","junk","ConversationHeaderDisplay","conversationTitle","showClassifyOptions","isDropdownOpen","setIsDropdownOpen","setCanReprocessEmail","showReprocessConfirmDialog","setShowReprocessConfirmDialog","canReprocess","onClassifyPurchase","onClassifySale","onClassifyTransfer","onClassifyPrivate","onClassifyJunk","onReprocessEmail","onConfirmReprocessEmail","userAgent","UAParser","hotkeyPrefixText","getOS","hasEntityId","menuContent","DropdownMenu.Item","DropdownMenu.Root","DropdownMenu.Trigger","ConversationMainPanel","useParams","sellerSupportCaseQuery","isMostRecent","inboundEmailQuery","inboundEmailIds","EmailHeaderDisplay","setMerchantName","eventInfos","setEventInfos","eventInfoMap","messageSaleDataQuery","saleCatalog","SupportCaseHeaderDisplay","generalMessageContent","displayEmail","setDisplayEmail","ConversationMainDisplay","NUM_TAKE","useClassifiedInboundEmails","inboundEmailsClassifiedQuery","flattenedData","inboundEmailsClassified","inboundEmailsTotalCount","defaultConversationFilter","CONVERSATION_FILTER_TYPES_MAP","support","getCategoryConversationTypes","createConversationSearchParam","ConversationFilter","supportCaseOnly","relative","UnreadFilter","allCount","unreadCount","isUnread","float","sellerSupportCaseToConversationData","supportCase","lastNoteDate","unreadNoteCount","inboundEmailToConversationData","ConversationSidePanel","activeInboundEmailId","activeSellerSupportCaseId","sellerSupportCases","sellerSupportCasesIsLoading","sellerSupportCasesIsError","filteredConversationTypes","classifiedEmailIsLoading","classifiedEmailIsError","conversationData","supportCasesMapped","inboundEmailsMapped","filteredDataByType","conversation","cmpResult","onConversationClicked","conversationInfo","PurchaseEmailDisplay","emailDate","orderDate","PurchaseOrderDetail","usePartialPurchaseOrderInboundEmails","EmailList","classifiedInboundEmailIds","useMatches","includeUnclassified","partialPurchaseOrderInboundEmail","parentMatch","MessagesExplorer","addClassifiedInboundEmailId","SEARCH_DELAY_MS","DEFAULT_QUERY","subjectSearchText","textBodySearchText","classificationTypeUpdateDateFrom","classificationTypeUpdateDateTo","RECENTLY_CATEGORIZED_CLASSIFICATION_TYPES","isPageNameHandle","handle","messagesText","searchForMessagePlaceholderText","setQueryDebounced","uncategorizedEmailsCountQuery","DocumentTree","onNodeClick","renderNode","elementProps","useGetHelpData","shouldQueryAvailableData","allAvailableData","getDataContent","tutorialItemId","allAvailableKbs","helpCenterText","treeContent","setTreeContent","displayContentIsLoading","setDisplayContentIsLoading","setDisplayContent","extractTitle","recursiveSearch","treeData","allTreeNodes","sortVal","tutorialItemType","allTreeNodesMap","tree","parentTutorialItemId","onDocumentClick","tutorialNode","treeHook","useTree","expandAllNodes","collapseAllNodes","contentHtml","ReleaseNoteDisplayDialog","onReleaseNotesRead","setActiveIndex","totalSlides","NewFeatureDisplay","alignLeft","BugFixesDisplay","releaseNotes","GET_RECENT_ACTIVITY_LOG_KEY","ACTIVITY_LOG_POLLING_INTERVAL","useLiveActivityLog","refetchIntervalInBackground","ActivitySection","activityLogId","MetricsSection","quickFilterId","NotificationDisplay","notificationIntent","onGoToEntity","onDismiss","NOTIFICATION_INTENT_MAP","ConnectedNotificationDisplay","entityTypeContent","getNotificationTypeContent","parsedContent","NotificationsSection","recentNotifications","IconAlarmAdd","defaultRecentSalesColumns","RecentSalesTable","PREVIOUS_DAYS_TO_PULL","NEW_ROW_ACTIVE_DURATION","RecentSalesSection","salesFilterQuery","previousValues","setNewRows","hasUnprocessedOrdersHoldingPenFeature","handleTabChange","isUnprocessedOrdFromPro","isInitial","isNewRow","hasViewSalesPermission","hasViewListingsPermission","hasNotificationsAccess","releaseNotesUnread","releaseNotesDialog","formattedMetrics","hasHomePageActivityLogFeature","MetricTilesSection","rn","StubHubListingsManualPricingContext","onQuantityFilterChanged","onSectionZoneFilterChanged","onSectionFilterChanged","onRowFiltersChanged","resetFilters","sectionIdFilters","hasActiveFilters","useStubHubListingManualPricingContext","StubHubListingManualPricingContextProvider","setQuantityFilter","setRowIdFilters","setSectionRowIdFilters","clearGroupItems","prevSections","sectionMap","prevFilters","newFilters","rowIdFiltersNew","sectionRowIdFiltersNew","quantityFilterNew","useEventLastReviewedDateTime","eventLastReviewedQuery","onUpdateLastReviewedDateTime","eventLastReviewed","isCompleted","loadEventLastReviewed","EventLastReviewedContext","onSettingVirtualIds","useEventLastReviewedContext","EventLastReviewedContextProvider","setEventLastReviewedLookup","setViagogoEventIds","queryData","virtualViaIds","existingIds","viewedAt","FadeAnimationDuration","GracePeriod","LoadingButton","animationStyle","setAnimationStyle","clearAnimation","timeout","useSellerEventNote","notesQuery","addNoteMutation","newNote","previousNotes","old","addNote","InventoryEventCatchUpPrevButton","prevButtonDisabled","InventoryEventCatchUpNextButton","nextButtonDisabled","InventoryEventCatchUpCard","isReviewed","InventoryEventCatchUpDropdown","cardProps","InventoryEvehtCatchUpDrodownItem","InventoryEventCatchUpBar","cardPropsOld","accordionItemProps","cardPropsNew","viagVirtIds","childElements","useEventSupplyMetrics","isOnSaleEvent","setTimePeriod","supplyMetricsQuery","supplyMetrics","onUpdateTimePeriod","useSellerEventMetrics","sellerPerformanceMetrics","useCrossSellerEventMetrics","eventPerformanceMetrics","useEventWebsiteMetrics","websiteMetrics","EventMetricsContext","ticketCountSeries","ticketPricesSeries","updateTimePeriod","performanceMetrics","marketShares","ticketPricePercentiles","EventMetricsProvider","isLoadingSupply","supplyTimePeriod","onUpdateSupplyTimePeriod","isLoadingPerformance","performanceTimePeriod","onUpdatePeroformanceTimePeriod","isLoadingWebsite","websiteTimePeriod","onUpdateWebsiteTimePeriod","eventMetricsMap","formattedProfitAndLoss","ticketQuantity","supplyData","ticketCountEntries","minEntries","p25Entries","p50Entries","p25","p50","p75","ticketsOnPlatform","supplyMetricsData","websiteMetricsData","performanceMetricsData","mktShares","useEventMetrics","HeatMapColorSteps","HeatMapColors","HeatMapColorForNoScore","normalizedScore","useHeatMapColor","HeaderWidgetContainer","SectionClearingPricePercentile","percentileLabel","percentileDisplayValue","EventSectionClearingPriceSectionDisplay","sectionClearingPricesBySectionId","prices","p01","p99","EventSectionClearingPricesTableColumnId","SectionName","P01","P75","P99","getMoneyCell","EVENT_SECTION_CLEARING_PRICES_TABLE_COLUMNS_CONFIG","EventSectionClearingPricesTable","sectionClearingPrices","sectionsText","reversedHeatMapColorsForALeftToRightLegend","EventSectionClearingPricesWidgetsContainer","sectionClearingPricesText","eventSectionClearingPrices","sectionScoreOverrides","filteredEventSectionClearingPrices","TimeSeriesLineChartUnit","getXAxisRelativeLabel","unit","diffInMilli","TimeSeriesLineChart","labelUnit","unitType","hourText","hoursText","dayText","weekText","weeksText","seriesData","formatXAxisLabel","diff","formatYAxisLabel","formatTooltip","tooltip","headerFormat","pointFormatter","dateTimeLabelFormats","gridLineColor","DashboardWidgetTile","EventSupplyWidget","measureRef","EventSupplyWidgetsContainer","supplyText","hasLastDaySupplyMetricsFeature","lastNinetyDays","timePeriodValueOptionsContent","capitalize","EventWebsiteMetricWidget","MaybePercentageChangeMetric","numberFormatOptions","MetricTile.PercentChangeMetricText","EventWebsiteMetricWidgetsContainer","rightNowText","last1HourText","last24HoursText","eventVisitors","visitorsInCheckout","totalTicketPriceInCheckout","DistributionPieChartWidget","distributions","spacingBottom","spacingTop","spacingRight","spacingLeft","layout","itemHoverStyle","textStrongHover","squareSymbol","symbolWidth","symbolRadius","pie","dataLabels","borderWidth","allowPointSelect","pointFormat","showInLegend","innerSize","TicketsListedAndSoldWidget","progressBarValue","progressBarLabel","SalesAndLiftWidget","TempAverageTicketPriceWidget","ZERO_STUBHUB_MARKETPLACE_SHARE","mktPlc","share","MarketShareDistributionChart","marketplaceSharesToRender","shares","SellerEventPerformanceMetricWidgetsBody","SellerEventPerformanceMetricWidgetsContainer","yourStatsText","allTimeText","last7DaysText","dashboardStyles","DashboardSection","showYourStats","InventoryEventDashboardSection","ApplyHeatMapToAllEventsDialog","onApplyToAllEvents","NEGATIVE_BACKGROUND_COLOR","NEGATIVE_FOREGROUND_COLOR","POSITIVE_BACKGROUND_COLOR","POSITIVE_FOREGROUND_COLOR","NEGATIVE_TEXT_COLOR","POSITIVE_TEXT_COLOR","DARKMODE_NEGATIVE_BACKGROUND_COLOR","DARKMODE_POSITIVE_BACKGROUND_COLOR","DARKMODE_POSITIVE_FOREGROUND_COLOR","RowRelativeScoreDisplay","rowRelativeScoreInfo","graphWidthPercentage","percentage","isBase","rowOrdinalFormatText","TEXT_COLOR","AXIS_COLOR","PATH_COLOR","INVALID_COLOR","isHitResultType","BezierGraphManager","minLabel","maxLabel","midLabel","fixedSegmentAmount","hideAxes","hideActionLabel","horizontalGraph","pathColor","deltaTransform","canManageControlPoints","handleSize","labelHeight","hitTestOptions","segments","handles","tolerance","scope","localPlotBounds","actionLabel","verticalAxisLabel","axes","verticalIntersector","plot","PaperScope","setup","Tool","Color","Path","Point","PointText","Rectangle","Segment","project","tool","currentStyle","fontFamily","rotation","strokeColor","selectedColor","strokeScaling","applyMatrix","prevMouseMoveEv","hitType","segment","startMouseDownPoint","startSegmentPoint","startSegmentHandleIn","startSegmentHandleOut","modifiers","setActionLabel","hitResult","hitTest","point","shift","isLast","handleIn","handleOut","localEvPoint","globalToLocal","smooth","next","clone","onMouseDrag","localStartMouseDownPoint","localDelta","subtract","pointDelta","newPoint","minX","maxX","isPathValid","onMouseUp","_ev","draw","getViewSize","viewSize","getSegments","calcScreenCoordOutput","firstSegment","lastSegment","intersections","getIntersections","calcOutput","drawActionLabel","setLabels","drawLabels","setPath","inputSegments","removeSegments","fullySelected","exportPath","serializedSegment","hasHandles","addMouseUpEventListener","removeMouseUpEventListener","isInside","getPlotBounds","bounds","drawAxes","drawPlot","plotBounds","horizontalAxisLabelY","matrix","translate","scale","rotate","BezierGraph","calcOutputRef","exportPathRef","onPathSetFromSegments","onResized","managerRef","viewportHeight","viewportWidth","manager","customEv","canvasRef","observer","MutationObserver","setRef","currentViewSize","GRAPH_WIDTH_PERCENTAGE","DEFAULT_ROW_GAP_PX","ROW_GAP_RATIO","INITIAL_ROW_SCORE_SEGMENTS","calcCoordinateForRow","rowDataToEdit","gapHeight","totalDivHeight","calcBoundsForRow","xMin","xMax","findRowIndexForX","getUpdatedRowData","calcScoreOutput","baseRowSegmentX","baseRowIdx","ChangeRowScoreBody","rowList","initialSegments","calcScoreOutputRef","exportScorePathRef","onUpdateRowScores","rowScoreFilter","rowScoreOverrideFilter","ChangeRowScoreBodyMultiSection","setRowDataToEdit","configPayload","setConfigPayload","initialSegmentsFromConfig","singleRowRef","newRowDataToEdit","configObj","scoreSegmentsBySection","activeRowIdsBySection","baseRowIdBySection","baseRowOrdinal","baseRowId","initializedRef","ChangeRowScoreBodySingleSection","isNumRowsChanged","setIsNumRowsChanged","graphSegments","segmentsConfig","findScoreOverrideByRowId","sortRowData","rowDataArr","ordinalAvailable","nameAvailable","ChangeRowScoreDialog","newConfigPayload","setNewConfigPayload","sectionScoreOverride","rowToScore","medianRowId","baseRowScore","rowScores","isBaseRow","existingRowScore","newSectionScoreOverrides","baseRow","baseOrdinal","ordinals","sanitizedOrdinal","baseRowPercentage","rowScoreOverrideToEdit","ChangeRowScoreDialogMultiSection","confirmDialog","maxRowNumber","eligibleRows","allRowData","configPayloadObj","selectedScoreSegments","common","baseRowIndex","sanitizedIndex","sectionNameWithEllipsis","maxSectionsToShow","AddSectionRowsDialog","onAddRows","onSubmitChange","onRowInputChange","onAddRow","SortableCell","isNew","CellItem","inlineStyles","transformOrigin","indexFromCellId","ordinalWithSuffix","num","remaining","hundreds","getRowColumns","maxRowCount","getSectionColumns","rowCount","unordered","SectionRowTableRow","SectionRowTable","onSwapCell","onSelectSections","canCustomRows","setActiveId","handleDragStart","activeCell","overCell","activeRow","overRow","handleDragCancel","rectSortingStrategy","sortSectionName","useTableData","idToSection","sectionToZoneId","setOverrides","enrichedOverrides","sectionToOverrides","minRowId","newOverrides","onSwapOrdinals","SectionRowTableDialog","onSectionRowChange","hasCustomVenueRowsFeature","addRowsDialog","maxLength","ChangeMultiSectionsScoresDialog","onSubmitSectionScoreChange","existingScores","changeRowScoreDialog","setScores","selectedSectionsMap","onRowSeatScoreChanged","minNumRowsSelectedSections","sanitizedSections","scoredRows","onChangeSingleSectionScore","onBulkChangeSectionScore","onRelativeChangeAllScore","percentageChange","absoluteChange","validScore","sanitizedScore","ChangeSectionScoreDialog","existingScore","setScore","getSurroundingSections","flexBasis","useEventHeatMapSectionHandler","setSurroundingSections","EventVenueHeatMap","changeSectionScoreDialog","changeMultiSectionsScoresDialog","currencyDisplay","onLaunchingSingleSectionDialog","onSectionSeatScoreChanged","onMultiSectionsSeatScoresChanged","newScores","notFoundSections","SeatMapCard","isInteractive","isSmall","DeleteHeatMapTemplateConfirmDialog","ROW_HEIGHT","ROW_GAP_HEIGHT","RelativeScoreGraph","RelativeScoreGraphRow","showRemoveButton","negativeWidth","positiveWidth","RelativeScoreGraphBezier","setSegments","totalHeight","centerToCenterHeight","ROW_COUNT","INITIAL_SEGMENTS","firstPointX","SeatScoreQuantityMultiplerGraph","setValues","EventAutoPricingSettingsFormContent","allowAutoPriceFrequency","eventWideAutoPricing","eventAutoPricingNew","AutoPricingFrequencyInput","useEventAutoPricingSettings","hasEventPricingPermission","CompListingSameQualitySettings","EventAutoPricingSettings","hasAnyScore","hasAutoPriceFrequencyFeature","EventPricingSeatMapBody","hasScoreSectionRowTableFeature","hasEditMapInListingTabFeature","hasIntelligibleAutoPricingFeature","sanitizedScoreModel","modeledSectionScores","eventScoreOverride","newModelName","sectionRowDialog","newOverride","onSavingSeatMap","allSections","sectionWithRowsWithOrdinal","scoreName","EventPricingSeatMap","EventPricingSeatMapFormBody","EventPricingSeatMapContent","refreshAutoPricingSettings","applyToAllEventsForConfig","setApplyToAllEventsForConfig","promises","oldId","SeatScoreConfigCard","importance","showChildren","onIncrementImportance","onDecrementImportance","body3","UploadSeatScoreModal","onUploadedFileChange","onCsvFileUploaded","modalHeaderStyles","INITIAL_ANGLE_SEGMENTS","INITIAL_DISTANCE_SEGMENTS","INITIAL_HEIGHT_SEGMENTS","EventSeatMapConfigBody","nearText","farText","lowText","highText","isAdvancedMode","setIsAdvancedMode","getAngleImportance","setAngleImportance","useGetSet","getDistanceImportance","setDistanceImportance","getHeightImportance","setHeightImportance","calcAngleOutputRef","calcDistanceOutputRef","calcHeightOutputRef","exportAnglePathRef","exportDistancePathRef","exportHeightPathRef","graphVariables","hasAngle","angle","maxAngle","hasDistance","dist","maxDistance","hasHeight","angleImportance","distanceImportance","heightImportance","templateOverrideScores","onCalculateSeatScores","calcAngleOutput","calcDistanceOutput","calcHeightOutput","sectionWithScoreOverrides","angleSegments","distanceSegments","heightSegments","isUploadSeatScoreModalOpen","setIsUploadSeatScoreModalOpen","setUploadedFile","configNameError","hasAnyPhysicalMetadata","EventSeatMapConfig","onSaveConfigOverride","EventSeatMapConfigContent","newConfigOverride","modalDetailsMaxHeight","GlobalConfigPayloadCard","updateDate","createDateFormatted","updateDateFormatted","GlobalConfigPayloadSelection","onConfigPayloadSelection","eventConfigScoreOverridesForEvent","sellerConfigPayloadsFromOtherVenueConfigs","NewHeatmapAvailableNotification","EventSeatMapSelection","fromTabView","EventSeatMapSelectionContent","launchSelectDialog","closeSelectDialog","selectDialogProps","selectedMapIdToDelete","setSelectedMapIdToDelete","selectedRecommendedMap","setSelectedRecommendedMap","performerVenueSpecific","venueSpecific","setEventSeatMapScoreOverrideMutation","deleteEventSeatMapScoreOverrideMutation","initialEventConfigScoreOverrideId","selectedEventConfigScoreOverrideId","setSelectedEventConfigScoreOverrideId","selectedConfig","onEditSeatMap","disabledButtons","InventoryEventEditMapSection","InventoryEventEditMapSectionBody","InventoryEventEditMapSectionContent","applyToAllDialog","useSellerAccountEventSettings","updateSellerAccountEventSettings","isMutationLoading","AutoFulfillCell","subMinutes","TicketTypePriorityPill","ticketTypePriority","blockedTxt","TicketTypePriorityCell","VendorCell","allVendorsText","availableVendorOptions","isAllVendorsSelectedInOtherRows","EventSettingForm","onDeleteSetting","hasNoChangeOrIsDeleteOnly","formValuesettings","formValueSetting","matchingSetting","InventoryEventFulfillmentSection","inventoryAccordionItem","numVendors","canAddNew","onCreateNewSetting","newSetting","newSettings","sectionStyles","borderTop","DefaultRefreshFrequency","TimeDistance","frequency","includeSeconds","timeDistance","setTimeDistance","updateAgo","InteractiveButton","DateTimeRefreshFrequency","LastReviewedDisplay","onUpdateLastReviewed","InventoryEventInfoSection","setSelectedListingIds","hasEventListingTableHotkeysFeature","isSelectionModeOn","DEFAULT_TOP_N_TRANSACTIONS","useGetMarketTransactionsForEvent","transactionsQuery","MARKET_TRANSACTIONS_TABLE_COLUMNS_CONFIG","quantityPurchased","sellerCurrencyCode","MarketTransactionsTable","marketTransactions","transactionsText","marketTransaction","InventoryEventTransactionsSection","toExperimentName","experiment","formatedStartDate","formatedEndDate","discountPercentage","CreateExperimentDialog","CreateExperimentDialogContent","onCreateExperiment","onUpdateExperiment","discount","minDiscountText","hasFlashSaleDiscountRestriction","hasBadDiscountValue","listingGroupOptions","useListingExperiments","listingExperimentQuery","createExperimentMutation","updateExperimentMutation","stopExperimentMutation","restartExperimentMutation","onStopExperiment","onRestartExperiment","experiments","StatusIcon","ExperimentStatus","ActionCell","onResumeExperiment","getTableColumnDefinitions","ListingExperimentTable","experimentsText","InventoryPricingABTestSection","createExperimentDialog","selectedExperiment","setSelectedExperiment","availableListingGroups","usedListingGroupIds","listingGroupName","exp","onCloseDialog","filterListingItemsBySectionRow","listingSectionId","ManualPricingSection","ownListings","ticketClassIdColorMap","colorMap","filterListingItemsBySectionRowWrapper","ownListingsMapped","lgi","ownListingsStubHubListingIds","compListingsMapped","useEventTags","tagsQuery","updateTags","SortableZoneAreaItem","VenueZoneSectionGroupDraggableList","customSectionGroups","sectionGroupName","sectionGroupAreaContentId","sortabledSectionGroups","sortedSectionGroups","customGroupsWithId","csg","sectionGroupRank","areaRank","ro","updatedRankOverrides","ssgId","newSectionSectionGroupLookup","ssg","sgRank","newCustomSectionGroups","VenueZoneSectionGroupList","SectionGroupPanel","useCustomRank","setUseCustomRank","addSectionGroupDialog","onAddSectionGroup","newCustomSectionGroup","VenueZoneSectionGroupDropdownList","selectedSectionSectionGroup","setSelectedSectionSectionGroup","selectedSectionGroup","ChangeZoneMapSectionGroupDialog","sectionIdMapping","VenueZoneMap","changeSectionGroupDialog","onSectionZoneChanged","newSectionSectionGroup","newSectionGroupIdMap","VenueZoneMapFooter","setSelectedOverrideId","selectedConfigType","setSelectedConfigType","setVenueZoneConfigTypeOverrideMutation","onVenueZoneMapClick","useVenueSectionRow","useSanitizedScoreModel","useModeledSectionScores","venueMapData","VenueZoneMapSubmitButton","setLocalName","setIsDirty","handleNameChange","hasVenueRowChanges","sectionSectionGroupsJson","saveAsNewMap","overrideName","InventoryEventVenueZoneMapSection","InventoryEventVenueZoneMapSectionBody","customRank","InventoryEventZoneMapSectionContent","useGetEventSellThroughRates","sellThroughRatesQuery","SellThroughRateGraphBody","actualText","todayText","strTargets","containerWidth","todayDate","sellThroughRates","timelineDate","sellThroughRate","sellThroughRatePercentage","dataMapped","sellThroughRatesSorted","sellThroughRatesExtrapolated","strItem","valueSuffix","valueDecimals","strTargetItem","dashStyle","symbol","plotLines","tickColor","spline","useSellerEventSellThroughRateTargets","sellThroughRateTargetsQuery","sellThroughRateTargetsMutation","SellThroughRateTargetInput","setIsEditing","formValue","onRowRemove","newStrTargets","onRowAdd","SellThroughRateTargetInputRow","SellThroughRateSection","defaultStrTargets","SellThroughRateSectionBody","TABS_NONE","TabWithStarIcon","onIconClick","defaultTab","tabType","iconHovered","setIconHovered","InventoryEventPageContent","hasPricingV2DemandDashboard","hasRecentTransactionsAccess","hasEventDeliveryStrategyFeature","hasPricingABTestFeature","hasEditMapInListingTab","defaultInventoryTabUserSetting","setDefaultInventoryTabUserSetting","defaultInventoryTabLoading","setDefaultTab","InventoryEventTabs","onSetDefaultTabClick","ManualPricing","InventoryHeaderAction","InventoryEventPageHeaderCondense","eventVenue","metricValue","rootWrapper","scrollDownButton","eventDateWrapper","eventInfoWrapper","metricValueWrapper","MarketplaceEventEditDialog","mkpEventInfos","newMkpEventInfos","MarketplaceEventEditDialogBody","activeMarketPlaceName","setActiveMarketPlaceName","onSaveClick","stripTrailingSlash","isUrl","handleEventOverrideChange","sanitizedString","eventOverrideId","urlComponents","eventIdx","productionIdx","eventsIdx","isSearchingEvent","mainDialogProps","eventSearchDialogProps","eventsSearchResults","eventSearchResult","useEventMapConfigMetadata","eventMapConfigQuery","NewEventMapBanner","openEventMapView","hasEventMapRibbonYoloFeature","firstTimeFeaturesViewed","configTypeContentId","selectedVenueMapConfigType","configTypeString","configTypeFormatted","defaultConfigType","showBanner","useUnmount","EventVenueMapContent","CollapsibleSettting","altTitle","EventMapDetailSimpleActionGroup","subHeader","EventVenueMapDetailsPanelFooter","EventVenueMapSelector","EventVenueMapDetailsPanel","eventMapText","zoneMapText","venueRowDataText","venueRowDataDescText","setAsDefaultText","setAsDefaultDescText","EventVenueMapModal","EventVenueMapBody","EventVenueMapPopup","inCondensedView","iconOnly","buttonRef","isExiting","setIsExiting","popupPosition","setPopupPosition","scrollX","selectedOverrideName","selectedVenueMapConfig","visibleMarketPlaces","InventoryEventPageHeader","eventPerformer","hasEventsEditPermission","hasCondensedPreviewTabsAndSingleListingFeature","marketplaceEventInfoQuery","viagogoEntityId","onEventIdsEditClick","marketPlaceLogos","minfo","onMkpClick","multiSelectToggle","inventoryEventDropdown","marketplaceEventEditDialog","SummaryTile.DateDisplay","columnGap","SidePanelTab","LISTINGS","SALES","NOTES","PURCHASES","EventMarketListingTitle","MarketListingHeader","keyboard","InventoryEventDetailContext","selectedTab","onTabClick","recenterMap","shouldReset","setShouldReset","compQuantityFilters","setCompQuantityFilters","splitChoices","useInventoryEventDetailContext","InventoryEventDetailContextProvider","setShouldRepaint","setSelectedTab","compListingsFiltered","stringQuantity","CompListingPrices","useVerticalView","determinPriceText","movePriceText","thenText","adjustPriceText","compListingPriceTextFirst","compListingPriceTextThen","OutlierSettings","showOutlierSettings","setShowOutlierSettings","ignoreListingsText","belowTheText","cheapestText","lowestLimitOptions","CheckPrice","percentDifference","absolutePercentDifference","isWithinThreshold","isBelow","PricingSettingAutoPriceFloorSettings","setPriceFloorText","medianListingPrice","ticketPrices","priceComparisonResult","RANK_PREMIUM_TO_SYMBOL_MAP","RankPremiumMode","PricingSettingAutoPriceRankPremiumSettings","addRankPremiumText","premiumMode","setPremiumMode","handleValueChange","clampedValue","rankPremiumValueInputWrapper","PricingSettingAutoPriceBody","isListingGroupForm","resetText","PricingSettingAutoPriceGroup","StatLabel","PricingSettingGroupHeader","flattenedListingGroup","listedQty","queuedQty","ListingDetailListingGroupHeader","shouldDetailsSideBySide","PricingSettingAutoPrice","PricingSettingAutoPriceListing","PricingSettingHeader","sanitizedSeatDisplay","PricingSettingManualPrice","setPriceText","setListPrice","listPriceNew","ListingDetailListingHeader","hasGroupSelectionFeature","ListingDetailPanel","listingWithUpdatedPrice","detailsRef","NoteSectionV2","setNewNote","handleKeyPress","prevNote","messagesStartRef","scrollToBottom","localDateString","sellerEventNoteId","NotesDetailPanel","EventTicketGroupBody","PurchaseOrderTableEventAccordionWrapper","PurchasesBulkActionsPermissions","usePurchaseTileBulkActionsState","allPurchasesSelected","BulkCancelPurchaseDialog","LaunchBulkCancelPurchase","hasBulkCancelVoidPurchaseFeature","useBulkCancelPurchase","openBulkCancelDialog","closeBulkCancelDialog","BulkDeleteTicketGroupDialog","LaunchBulkDeleteTicketGroup","hasBulkDeleteTicketGroupFeature","useBulkDeleteTicketGroup","openBulkDeleteTicketGroupDialog","closeBulkDeleteTicketGroupDialog","updatePurchaseOrders","ticketTypeOverride","bulkEditClient","LaunchBulkUpdatePurchaseCurrencyCode","BulkUpdatePurchaseCurrencyCodeDialog","BulkUpdatePurchaseCurrencyCodeDialogContent","setCurrencyCode","useBulkUpdatePurchaseCurrencyCode","openBulkUpdatePurchaseCurrencyCode","closeBulkMarkPurchaseAsPaidDialog","BulkEditPurchaseSettingsDialog","BulkEditPurchaseSettingsDialogContent","LaunchUpdatePurchaseSettings","useBulkUpdatePurchaseSettings","openBulkEditPurchaseSettingsDialog","closeBulkEditPurchaseSettingsDialog","purchaseInput","hasExportPurchasesFeature","bulkCancelPurchaseAction","bulkDeleteTicketGroupAction","bulkUpdatePurchaseCurrencyCode","bulkEditTags","BulkConvertPurchasePaymentDialog","setFromCurrencyCode","setToCurrencyCode","setConversionRate","uiCurrencyFrom","uiCurrencyTo","LaunchBulkConvertPurchasePayments","hasBulkConvertPaymentLinesFeature","useBulkConvertPurchasePaymentsAction","LaunchBulkMarkPurchaseAsPaid","BulkMarkPurchaseAsPaidDialog","BulkMarkPurchaseAsPaidDialogContent","useBulkMarkPurchaseAsPaid","openBulkMarkPurchaseAsPaidDialog","BulkEditAccountingActionPermissionsHandler","AccountingActions","bulkConvertPayments","bulkMarkPurchaseAsPaidAction","PurchasesTileBulkActions","AddPurchaseAction","addPurchase","PurchaseTileActionDropdown","showShadow","hasScrollBar","TotalCostDiv","PurchaseItemHeaderDateDisplay","EventTicketGroupHeader","totalCostText","translateEventToTicketGroupAccordionItem","TicketGroupsEventsAccordion","itemsIds","useAccordionItem","SwitchIcon","getSidePanelSwitchToUrl","queryString","SwitchToButton","onSwitchSection","switchContentId","SidePanelToolbar","filterBar","noData","viagEventId","hasFullPageEventViewSideTableBulkEdit","hasFullPageEventViewSideTableFilters","getEntityType","ALL_FILTER_ID","SidePanelFilters","setSelectedQuickFilterId","finalQuickFilters","PurchaseSideTableFilterBar","queryInput","purchasesAccordionItem","tgIds","hasSelectedEntities","PurchasesSideTable","PurchaseDetailPanel","listingIdFilterQuery","SaleSideTableFilterBar","filteredEventSales","salesAccordionItem","SaleDetailPanel","DetailPanelBody","renderBody","CondensedVenueMapQtyFilter","MapBody","CompPricingSettings","showAdvancedSettings","setShowAdvancedSettings","watchValues","toggleShowAdvancedSettings","SelectedListingMapStats","listingQtyText","ticketQtyText","p25Text","p50Text","stats","ticketPriceMin","ticketPriceP25","ticketPriceAvg","formatPrice","MapFooter","MapHeader","marketListingsText","notesText","enterCompanionModeText","InventoryEventDetail","listingFormMethods","listingGroupFormMethods","InventoryEventDetailContent","shouldUseVertical","InventoryEventPageSeatMapV2","showColorBand","VenueMapRightNowStats","setQuantityFilters","showFilter","MarketListingsForm","MarketListingsWithAutoPricing","setionIds","filteredSections","selectedListingFromListingGroupWithSeatScore","compsWithScore","compSections","ManualSectionRowIdFilter","selectedSectionChange","QUANTITY_OPTIONS","StubHubListingsWithManualPricing","compListingData","filterNames","allFilterRowIds","formFilterRowIds","filterRowIds","InventoryEventPageRightPanel","InventoryEventPage","InventoryEventContent","quickFilterSearchParams","intialActiveTab","isEventReviewedLoading","isEventNoteLoading","markAsReviewed","markedAsReviewed","onMarkAsReviewed","onSetInventoryTab","oldPosEventId","eids","actAccountCfg","locationState","InventoryEventPageRedirect","eventIdParam","useOnSaleEvents","eventOnly","shouldQueryForSearch","shouldQueryOnSaleEvents","onSaleEventsQuery","onSaleEvents","eventIdGroups","chunk","onSaleEventMetrics","useInventoryDashboardEvent","onSaleEventId","shouldLoadOnSaleEvent","hasEventDiscoveryPageFeature","InventoryEventV2","EntitySearchConfigDialog","searchConfig","EntitySearchConfigDialogBody","ownerUserId","isNotOwned","handleClose","saveCopy","EntitySearchConfigActions","activeSearchConfig","onSaveSearchResult","onDeleteSearchResult","saveSearchResultDlg","deleteConfirmDlg","saveCopyText","saveText","EntitySearchConfigsToolbar","setDisabled","setActiveSearchConfig","saveActiveSearchConfig","deleteActiveSearchConfig","getSearchConfigs","getSearchResult","userSearchConfigsQuery","accountSearchConfigsQuery","onSearchConfigClick","searchResult","otherConfigs","otherConfig","AddFilterDropdown","hideLabel","hideIcon","triggerVariant","triggerShape","triggerClassName","filtersListHeader","resetButton","addFilterButton","viewerMode","filterToolbarListContainerVertical","FiltersListLayout","filterContainer","buttonsContainer","filterContainerHorizontal","buttonsContainerRow","filtersListDirection","filterDisabled","showReportFilterEditabilityDropdown","filterItemLabelVertical","filterItemValueVertical","FilterToolbarEmbedded","addFilterDropdownProps","newSelectedFilters","hasNonMandatorySelectedFilters","addedNewFilter","selectedFilter","EntitySearchFilterBar","onSubmitFilterHandler","EntitySearchRefetcher","onRequeryForTheResult","lastFetchDate","useEntitySearch","saveSearchResult","newEntityIds","onSetActiveSearchConfig","newSearchConfig","lastResultEntityIds","setLastResultEntityIds","idsChanged","refetchData","customRefreshItems","InventorySearchFilterBar","InventorySearchToolbar","InventorySearchPage","useReadOnlyDb","getCatalogDataCallback","InventorySearchContent","searchTitle","hasColumnFilterSearchViewFeature","isCatalogDataLoading","dataIsLoading","includeAllUser","borderLight","LoginPage","reactRouterLocation","handleLoginContext","authorizationUrl","onLoggingInUser","defaultLoginContext","jsonError","LoginCallbackPage","setReturnUrl","onLoginCallback","LoginFailurePage","LogoutPage","handleLoginContextForLogout","authUrl","onLoggingOut","existingContext","notificationTypeSetMap","failures","autopricing","cancellations","notificationsTitle","EventDiscoveryContext","useEventDiscoveryContext","EventDiscoveryContextProvider","mergedEvents","metricsById","onSaleEvent","OnSaleEventTable","eventSelection","viewedEventIdsRef","allEventMetricsLoaded","viewedEventIds","renderedEventIds","OnSaleEventView","OnSaleEventTableWithInnerGrouping","DISCOVERY_USER_SETTINGS","OnSaleEvent","useGetMarketplaceDefaultColumnsConfig","useGetDisplayMarketplacePaymentsTableColumns","storedMarketplacePaymentsColumnOrderSetting","storedMarketplacePaymentsColumnsEnabledSetting","marketplacePaymentColumnOrder","marketplacePaymentsTableColumnsConfig","GroupedPaymentsAccordionBody","queryDate","GroupedPaymentsAccordionHeader","monthContainingMarketplacePayment","formattedAmount","GroupedPaymentsAccordion","MarketplacePaymentsTabContent","monthPayments","MarketplacePaymentDeeplinkListener","modalRefProps","useMarketplacePaymentsFilters","hasMarketplacePaymentFilterUnlinkedFeature","hasPaymentLineUnmappedToSale","hasPaymentLineUnmappedToSaleLineItem","MarketplacePaymentsFilterBar","marketplacePaymentsQuery","onQuickFilterSelect","MarketplacePaymentsToolbar","hasMarketplacePaymentsFiltersFeature","EmptyMarketplacePaymentQuery","DefaultMarketplacePaymentQuery","PaymentTab","CommissionPayment","marketplacePaymentQueryValueTransformToUrl","marketplacePaymentValueTransformFromUrl","paymentsTitle","EventPageTabs","isVisible","ListingSideTableFilterBar","getCatalogDataForListing","INVENTORY","HeaderTabs","SidePanelHeader","pageType","selectedEntityIds","saleIdsQuery","purchaseOrderIdsQuery","usePurchaseEventOverrides","updatePurchaseEventOverrides","OverrideSettingForm","PurchaseEventFulfillmentSection","purchaseOrderAccordionItem","disableBackfill","PurchaseEventInfoSection","selectedPurchaseOrderIds","setSelectedPurchaseOrderIds","EventPageHeaderBase","eventAccordionItem","extraActions","CollapsedView","PurchaseEventPageHeader","uppercasedMetric","PurchaseEventPage","PurchaseEventContent","PurchaseEventTabs","defaultPurchasesTabUserSetting","setDefaultPurchasesTabUserSetting","defaultPurchasesTabLoading","tabContent","useSingleTimePeriodPurchasesQuery","firstOfTimePeriodPlainDateTime","lastOfTimePeriodPlainDateTime","timePeriodDateRange","singleTimePeriodPurchaseQuery","PurchaseDateItemBody","PurchaseDateItemHeader","dateDisplay","onToggleMultiSelect","PurchaseDateAccordionMonthGroupItem","eventStyles","PurchasesVirtuosoID","PurchaseDatesAccordion","PurchasesGlobalBulkActions","SetPurchasesAccordionSelectionCountLabel","ticketGroupText","ticketGroupsText","fromText","eventWithDataMap","ticketGroupsCount","ticketGroupIdsSet","tckGroupId","eventsLabel","ticketsGroupLabel","SetPurchasesFlattenedViewSelectionCountLabel","purchaseText","noSelectedItemsLabel","SetPurchasesTimeViewSelectionCountLabel","purchasesCount","useColumnServerUserSettings","storedInventorySideTableColumnOrderSetting","setInventorySideTableColumnOrderSetting","storedPurchaseSideTableOrderSetting","setPurchaseSideTableOrderSetting","defaultPaymentsColumnsConfig","storedPaymentsTableOrderSetting","setPaymentsTableOrderSetting","storedOnSaleEventTableOrderSetting","setOnSaleEventTableOrderSetting","setCustomPaymentsColumns","customDiscoveryColumns","setCustomDiscoveryColumns","storedPaymentsTableColumnsEnabledSetting","setPaymentsTableColumnsEnabledSetting","storedDiscoveryTableColumnsEnabledSetting","setDiscoveryTableColumnsEnabledSetting","DropGroupWrapper","animateLayoutChanges","isSorting","wasDragging","PlaceholderColumnGroupListItem","ColumnGroupListItem","adaptColumnToGroups","ticketGroupColumns","adaptedColumns","firstTicketGroupColumnIndex","useAdaptedColumns","COLUMN_GROUPS","flattenColumns","columnGroup","renderColumnListItem","updatedItems","activeGroupIndex","updatedGroup","flattenedColumns","flatIndex","activeGroup","overGroup","PurchaseColumnSettingsModal","PurchaseFlattenedView","PurchaseToolbarDiv","PurchaseToolbar","tp","PurchasePage","transformedFilterQuery","PurchasesContent","purchasesTitle","onTicketGroupsEventExpanded","PosNoResultsFound","detailMessage","PurchaseSearchFilterBar","hasPurchaseCommissionFilterInSearchViewFeature","hasConsignmentFilterPurchaseSearchViewFeature","PurchaseSearchToolbar","PurchaseSearchPage","_1","_2","PurchaseSearchContent","purchaseSearchTitle","hasPurchasesResults","borderBottom","RedirectToStubHubUk","curSecond","setCurSecond","isMetricConfigurableByGroupBy","GroupBySelector","metricsFiltered","setNewGroupBy","changeGroupByConfirmDialog","filterColumnByGroupBy","isListingMetricConfigurableByGroupBy","isSaleMetricConfigurableByGroupBy","updateGroupBy","primaryColumnId","onTileClick","newGrpType","presetColumnIdsUnfiltered","presetColumnIdsBeforeChange","presetColumnIdsAfterChange","onChangeGroupByConfirm","TableColumnsDisplay","tableType","tagsMetadataEvent","tagsMetadataPurchase","itemsFiltered","activeEventTagNames","activePurchaseTagNames","PermissionsRequiringFeatures","SellerRoleContext","allSellerRoles","allSellerRolesForSelection","allPermissions","allPermissionsForSelection","getSellerRole","refetchSellerRoleInfos","useSellerRoleContext","SellerRoleContextProvider","showAutoPricerRole","rolesQuery","prefinedRole","roleContentId","roleText","roleDetails","permissionsQuery","permContentId","permText","allPermissionsFiltered","hasAllFeatures","ShareReportBody","roleIds","onRoleIdsChange","onSellerUserIdsChange","addUserAndGroupContent","valuesAggregated","isRole","keyOptions","onSelectionUpdated","newRoleIds","newSellerUserIds","removeRole","removeSellerUser","SharedPeopleListItem","roleInfo","textDisplay","isUser","ShareReportDialog","roleIdsShared","sellerUserIdsShared","setNewRoleIds","setNewSellerUserIds","InventoryMetricsSelectionInputModal","headerContentId","sortedColumnSelection","SalesMetricsSelectionInputModal","getEditability","reportFilterId","updateFilterItemIds","reportFilterIds","isNotIncluded","newHiddenFilterItemIds","newViewableFilterItemIds","newEditableFilterItemIds","ReportBuilderFilterInput","hidePerformerVenueFilter","ListingFilterInput","SaleFilterInput","formFilter","appliedFiltersRelativeToEmpty","filtersWithEditability","filterIds","PerformerVenuePopover","WidgetsSelectionInput","newWidgets","AdvancedSettingsId","ReportBuilderDialogBody","existingReports","duplicateNameMsg","numberOfItemsPerPageError","widgetsError","filtersError","metricsError","groupByError","isMetricModalOpen","toggleMetricModal","advancedSettingsExpandedItem","setAdvancedSettingsExpandedItem","metricDisplayNames","groupByOptions","sortByOptions","onSortByChange","onIsSortDescendingChange","activeExpandedItem","ReportBuilderDialog","report","getCatalogDataForSales","REPORT_CONFIG_V2_SCHEMA_VERSION","addTimezoneOffsetToCommissionReportConfig","useReportConfigsV2","aggregations","rowGroupings","commissionMandatoryFiltersToShow","useCommissionFilters","commissionFilters","listingsReportMandatoryFiltersToShow","PurchaseInfoFilterIdsToShow","useListingReportFilters","supportedPurchaseInfoFilters","saleReportMandatoryFiltersToShow","useSaleReportFilters","FILTERS_FIELD","ReportBuilderFilterInputV2","filterInputProps","CommissionFilterInput","ReportBuilderDialogBodyV2","existingInventoryReports","existingSaleReports","existingReportNames","defaultRequest","columnGroupings","FilterInput","FilterInputContextWrapper","reportFilter","ReportBuilderDialogV2","getHistorySnapshotTableColumnsConfig","accessorKey","createdDate","onDownloadClick","ReportHistoryTable","reportSnapshotInfos","reportHistoryText","useFetchReportSnapshotsInfo","ReportHistoryDialog","mapReportMetrics","reportMetrics","createReportMetricsContext","useReportMetricsContext","ReportMetricsContextProvider","getReportMetrics","reportMetricsRequested","applyMaxRowLimitByDefault","ReportMetricsContext","reportConfigMaxSizeOverride","setReportConfigMaxSizeOverride","hasMaxRowLimitFeature","maxResultSize","reportMetricsQuery","overrideMax","isAllReportMetricsLoaded","hasTimeout","hasUnknownError","reportSummary","summary","ListingReportTableColumnDefContext","ListingReportTableColumnDefContextProvider","listingTagIsLoading","eventTagIsLoading","purchaseTagIsLoading","customColumnIsLoading","useListingReportTableColumnDef","ReportsInventoryContextProvider","globalReportTypeId","isUsingFilterOverride","listingReportMetricsRequested","sortReportMetrics","sortByColumnConfig","aVal","bVal","mapReportMetricToUserIds","reportMetric","resolveSellerUserId","stringValueList","resolvePurchaseBuyerInfos","mapReportMetricToTableString","stringValue","getPdfPageSize","columnCount","getReportExportFileBasename","exportReport","tableHeader","tableFoot","jsPDF","autoTable","foot","save","aoa","workbook","book_new","worksheet","aoa_to_sheet","book_append_sheet","bookType","ReportsInventoryExport","reportExportOptions","onReportExported","reportToExport","serverSideExport","ReportsListingServerSideExportInner","downloadReport","ReportsInventoryClientSideExportInner","columnDisplayNames","reportMetricsMapped","userIdsInRow","onDataLoaded","isArAgingReport","metricsMapped","metricsByMarketplace","mapReportMetricsSummary","existingIndex","SaleReportTableColumnDefContext","SaleReportTableColumnDefContextProvider","saleTagIsLoading","displayedColumns","arAgingTimeBuckets","bucket","useSaleReportTableColumnDef","ReportsSaleContextProvider","ReportsSaleExport","ReportsSaleServerSideExportInner","ReportsSaleClientSideExportInner","timeBuckets","REPORTS_TABLE_COLUMNS_CONFIG","reportV2","canCreateReport","canUpdateReport","canUpdateOwnReports","canViewHistory","setReportExportOptions","isOwner","visibleActions","onReportAction","reportIdRedirect","DropdownMenu.Group","ReportsTable","reports","reportsV2","isGlobalSection","reportText","ReportsTableContainer","reportsV2Default","reportsV2Custom","reportsDefault","rv2","reportsCustom","DEFAULT_GROUP_BY_INVENTORY","DEFAULT_GROUP_BY_SALE","emptyReport","allowReaderEditMetrics","useReportV1Actions","currentReport","setCurrentReport","reportBuilderDialogInventory","reportBuilderDialogSale","shareDialog","deleteDialog","reportHistoryDialog","onAddNewReport","defaultMetrics","deleteReportConfigInventory","upsertReportConfigInventory","getReportConfigNameForDuplicateInventory","deleteReportConfigSale","upsertReportConfigSale","getReportConfigNameForDuplicateSale","invokeUpsertReport","onReportShareSubmit","updatedReport","onReportSaveSubmit","navUrl","isFromV1Page","onReportDelete","useReportConfigActionsV2","orderByAsc","getReportNavUrl","useReportV2Actions","reportBuilderDialog","isNewReport","isCreateNewReport","reportsTitle","hasReportV2BuilderFeature","hasReportSinglePagedV1V2Feature","onReportActionV1","currentReportV2","setCurrentReportV2","onAddNewReportV2","onReportSaveSubmitV2","onReportActionV2","onReportShareSubmitV2","onReportDeleteV2","reportBuilderDialogV2","deleteDialogV2","shareDialogV2","reportConfigV2","ReportsPage","reportConfigsInventory","reportInventoryLoading","reportConfigsSale","reportSaleLoading","reportsInventoryWithType","reportsSaleWithType","reportConfigsV2Inventory","reportV2InventoryLoading","reportConfigsV2Sale","reportV2SaleLoading","reportConfigsV2Commission","reportV2SaleCommission","reportsV2InventoryWithType","reportsV2SaleWithType","reportsV2CommissionWithType","createReportMetricsContextV2","useReportMetricsContextV2","ReportMetricsContextProviderV2","getReportMetricsSummary","isReportConfigEmpty","reportMetricsData","reportMetricsSummaryQuery","reportValueTypes","valueTypes","ReportsInventoryContextProviderV2","isExport","ReportsInventoryExportV2","queryWithCatalog","ReportsSaleContextProviderV2","ReportsSaleExportV2","REPORTS_TABLE_COLUMNS_CONFIG_V2","ReportsTableV2","ReportsTableContainerV2","hasCreateReportsPermission","ReportsPageV2","reportConfigsCommission","reportCommissionLoading","reportsCommissionWithType","reportV2AccessorFn","defaultColumnHelperAccessor","valueAsArray","valueAsMoney","yesNoEnum","COMMISSION_REPORT_SPECIAL_TABLE_COLUMNS_CONFIG","commissionReportTableColumnDef","specialConfig","CommissionReportTableColumnDefContext","CommissionReportTableColumnDefContextV2","columnName","useCommissionReportTableColumnDefV2","CommissionReportTableV2","ReportTableInternal","shimmeringDivCount","useReportPermissions","hasUpdateReportPermission","hasReportingV2Feature","hasViewReportPermissions","hasUpdateOwnReportPermission","isGlobalReport","canViewReport","hasAccessToReportingV2","ReportsFilterToolbarV2","debouncedUpsertReportConfig","ReportEditTableIcon","ReportsPageToolbarV2","isEditTable","setIsEditTable","hasCreateReportFeature","reportConfigWithTempQuery","onReportDuplicateSubmit","newReport","newReportId","DragHandleIcon","SortableMetricsOptionsListItem","MetricsOptionsListItem","MetricsInputDroppable","selectedValues","MetricsOptionsList","availableValues","groupByOptionsContent","ReportsTableEditorForm","ROWS_INPUT_KEY","VALUES_INPUT_KEY","OPTIONS_LIST_KEY","ReportsTableEditorContent","groupbyField","sortByField","metricsField","groupingOptions","valueOptions","allOptions","groupingOptionsSortedByContent","valueOptionsSortedByContent","setItems","findContainerKey","moveOver","overContainerKey","activeContainerKey","activeItems","overItems","recalculateReportColumns","newSortBy","onDragOver","closestCorners","ReportsTableEditor","ReportsPageLayout","reportTable","ReportsCommissionPage","ReportsCommissionContextProviderV2","ReportsCommission","ReportsCommissionContentV2","PosFloatingSpinner","ReportsMaxSizeMessage","onBypassLimit","CircleIcon","styleOverride","ReportGroupIcon","TimeoutIcon","TableStateWrapper","TableErrorStateHeader","ListingReportTable","ListingReportTableInternal","metricsHasTimeout","metricsHasError","performerCount","venueCount","eventCount","tableColumnIsLoading","ReportsFilterToolbar","setColumnModalOpen","upsertReportOverrideInventory","upsertReportOverrideSale","hasUpdateReportFeature","hasUpdateOwnReportFeature","reportConfigNew","onMetrisSelectionModalClose","filterChangeMessageContentId","ReportsInventoryPage","initSorting","WidgetSection","WidgetSectionContent","ReportsPageToolbar","ReportsInventory","ReportsInventoryContent","LISTING_REPORT_SPECIAL_TABLE_COLUMNS_CONFIG","listingReportV2TableColumnDef","ListingReportTableColumnDefContextProviderV2","useListingReportTableColumnDefV2","ListingReportTableV2","ReportsInventoryPageV2","ReportsInventoryV2","ReportsInventoryContentV2","SaleReportTable","SaleReportTableInternal","ReportsSalePage","reportSummaryMapped","ReportsSale","ReportsSaleContent","SALE_REPORT_SPECIAL_TABLE_COLUMNS_CONFIG","saleReportV2TableColumnDef","SaleReportTableColumnDefContextProviderV2","useSaleReportTableColumnDefV2","SaleReportTableV2","ReportsSalePageV2","ReportsSaleV2","ReportsSaleContentV2","SaleSearchFilterBar","SaleSearchToolbar","SaleSearch","SaleSearchPage","SaleSearchContent","SaleEventInfoSection","saleAccordionItem","selectedSaleIds","setSelectedSaleIds","SaleEventPageHeader","SaleEventPage","SaleEventContent","SaleEventTabs","defaultSalesTabUserSetting","setDefaultSalesTabUserSetting","defaultSalesTabLoading","settingsText","hasSiteVersionFeature","hasPurchaseSettingsTabFeature","hasCurrencyConversionSettingsTabFeature","hasAdminPermission","hasVendorAccountV2","hasAutoPricingTabFeature","hasVendorManagementPermission","isAuthorized","isPathActive","matchPath","hasPermissionsForActiveView","activePath","NavLink","useAutoCurrencyConversionSettings","autoCurrencyConversionSettings","CurrencySection","onDefaultCurrencyChange","ignoredCurrencyCodes","onIgnoredCurrencyCodesChange","onEnabledToggle","availableCurrenciesOptionsWithoutDefault","useCurrencyConversionOverrides","hasOverrideDailyFxRateFeature","getAllQuery","createCurrencyConversionOverride","currencyConversionOverrides","CurrencyConversionOverrideDialog","currencyConversionOverride","otherExistingCurrencyConversionOverrides","duplicateText","sameCurrencyCodeText","conversionRateGreaterThanZeroText","allText","contentIdToPresetRegexIdMap","presetRegexId","paymentMethodSelectProps","validateInput","conversionRateDate","dateInput","dateExisting","paymentMethodNameKnownRegexId","paymentMethodSelectValue","paymentMethodSelectOnChange","VendorTableContainer","CURRENCY_CONVERSION_OVERRIDE_TABLE_COLUMNS_CONFIG","purchasePaymentMethodName","onCurrencyConversionOverrideAction","CurrencyConversionOverridesTable","currencyConversionOverridesText","EMPTY_CURRENCY_CONVERSION_OVERRIDE_INPUT","CurrencyConversionOverridesTableContainer","currentCurrencyConversionOverride","setCurrentCurrencyConversionOverride","onAddNewCurrencyConversionOverride","onSaveCurrencyConversionOverride","onCurrencyConversionOverrideCancel","onCurrencyConversionOverrideDelete","SellerAccountSettingCurrencyConversionOverrides","hasDailyFxRateOverrideFeature","TimezoneSection","selectOptions","labelStyle","timezones","allTimezones","parseTimezone","useTimezoneSelect","onTimezoneChange","timezoneValue","timezone","timezoneOptions","hasPOSTimezoneFeature","userInformation","onZoomChange","onThemeChange","zoomOptions","english","useAutoPoRestrictionSettings","countryQueryKey","vendorQueryKey","countryRestrictionQuery","countryRestrictionMutation","vendorRestrictionQuery","vendorRestrictionMutation","sortCountryRestrictions","sortVendorRestrictions","isIncluded","getIncludeExcludeOptions","includeText","excludeText","IncludeExcludeOptions","AutoPoRestictionForm","includeExclude","setIncludeExclude","vendorQuery","vendorSelectProps","knownCountriesOption","formDefaultValues","newIncludeExclude","vendorRestrictionsForSumbit","includedCountryCodes","includedVendorIds","excludedVendorIds","onIncludedVendorChange","newVendorRestrictions","onExcludedVendorChange","onIncludedCountryChange","newCountryRestrictions","onIncludeExcludeChange","PurchaseOrderGeneralSettingForm","PurchaseOrderSettingsContent","AccountingSetting","isAutoAddCancelledProceed","isAutoAddCancelledProceedsEnabled","useGetAccessiblePurchasePaymentMethodsQuery","PurchasePaymentMethodDialog","PAYMENT_METHOD_TABLE_COLUMNS_CONFIG","purchasePaymentMethod","purchasePaymentActions","editPurchasePayment","deletePurchasePayment","PurchasePaymentMethodsTable","purchasePaymentMethods","onEditPaymentMethod","onDeletePaymentMethod","hasPurchasePaymentEditFeature","purchasePaymentMethodsText","PurchasePaymentMethodsTableContainer","paymentMethodsQuery","purchasePaymentMethodsImperativeRef","useNewStyles","currentPaymentMethod","setCurrentPaymentMethod","onAddNewPaymentMethod","onSavePaymentMethod","onPaymentMethodCancel","SellerAccountSettingPaymentMethods","purchasePaymentMethodsQuery","GET_ACCESSIBLE_VENDOR_ACCOUNTS_KEY","useGetAccessibleVendorAccountsQuery","purchaseOrderVendorIds","vendorIdSelected","GET_ACCESSIBLE_VENDORS_QUERY_KEY","useGetAccessibleVendorsQuery","getOverride","EMPTY_INFO_PLACEHOLDER","SellerAccountSettingVendorAccounts","vendorAccounts","refetchVendorAccounts","venderAccountDialog","onVendorAccountDelete","InfoEntry","SellerAccountSettingVendors","vendorsText","vendorsQuery","vendorAccountsQuery","vendorDialog","vendorVenueOptionsContent","newText","vendorData","vendorsData","onVendorDelete","vendorAccountsByVendorId","SellerAccountSettingBody","HeaderSection","muted","VendorContainer","SellerAccountSettingHeader","sellerAccountName","sortTicketTypePriority","sortTicketTypeWithPriority","mapTicketTypeWithPriorityList","TicketTypeOverrideInputForm","hasDisplayTicketOrderedByPriorityFeature","selectedTicketType","priorities","deliveryTypeContentId","ticketTypesOrdered","aPriority","bPriority","TicketTypeOverrideInputFormSingleTicketType","ticketTypeRulesNew","getDraftTicketTypeRules","InstructionsList","InstructionsListItem","handleResponse","useTradeDeskSendResetPasswordCodeMutation","useTradeDeskResetPasswordMutation","oldPassword","newPassword","genPassword","sellerAccountClient","resp","TradeDeskApiResetInstructions","marketplaceUserName","enterResetCodeFromEmailText","sendResetPasswordCodeMutation","resetPasswordMutation","resetCode","setResetCode","syncCenterStyles","MutationStatus","SyncCenterContent","syncCenterTitle","SyncCenterForm","onSaved","hasMarketplaceTermFeature","hasMarketplaceEnableDisableFeature","hasMarketplacePreventInitialBroadcastFeature","marketplaceEnableDisableConfirmDlg","newDefaultValues","noneTxt","getMarketplaceEnableDisable","enable","mkps","tokenVersion","mapToSellerRoleInput","MAX_ROLE_DETAILS_LENGTH","SellerPermissionDisplay","toggleSelect","permissionInfo","part","permissionContent","SellerPermissionSelectionSection","permissionInfosOfArea","permissionsOfArea","pa","onEnableAllForArea","checkAll","permissionsNotInArea","onTogglePermissionSelect","permissionsExcluding","SellerUserDisplay","onRemoveUserFromRole","newUserIds","uid","SellerRoleUsersSection","usersOfRole","onUserIdsChange","SellerRoleDetails","requiredTxt","selectedRoleTemplate","setSelectedRoleTemplate","detailsError","onRoleTemplateSelected","copyPermissions","setTabIndex","PermissionsTabContent","permissionErrors","LaunchDeleteRole","userCount","roles","onDeleteRole","SellerRoleModalFooter","SellerRoleModalBody","usersHasChanged","permissionErrorText","visiblePermissions","SellerRoleModal","userIdsOfRoles","getSellerRoleModalConfig","SHIMMERING_DIV_HEIGHT_SINGLE_ROW","ROLES_TABLE_COLUMNS_CONFIG","permissionsByAreas","permInfo","RolesTable","SellerUserListItem","TeamInput","AddTeamModal","AddTeamModalContent","AddTeamModalHeader","AddTeamModalFooter","onCreateSubmit","onCreateSubmitHandler","EditTeamModal","EditTeamModalContent","EditTeamModalHeader","EditTeamModalFooter","onUpdateSubmit","onUpdateSubmitHandler","TEAMS_TABLE_COLUMNS_CONFIG","onDeleteUserGroup","TeamsTable","teamsText","searchEntityLabel","AddUserModalHeader","AddUserModalFooter","stubhubLoginMsg","AddUserModal","AddUserModalContent","Label.Root","useGetFilteredUsers","hasUserSearchBar","userOptionsContent","userIdsMap","filterdUserIds","filteredUsers","EditUserModalHeader","EditUserModalFooter","deactivateUserText","activateUserText","deactivated","isCurrentUser","onActivateSubmit","userGroupIds","EditUserModal","EditUserModalContent","inactiveBadge","activeBadge","SellerPermissionDisplayModalBody","SellerPermissionDisplayModal","roleInfos","getSellerPermissionDisplayModalConfig","USERS_TABLE_COLUMNS_CONFIG","roleNames","onViewPermissionClick","onEditClick","UsersTable","isAddUserModalOpen","toggleAddUserModalOpen","UsersManagement","purchasePaymentMethodsRef","paymentsWrapper","useGetVendorIdFromUrl","GET_VENDOR_QUERY_KEY","useGetVendor","defaultRequestPage","useGetFilteredAccessibleVendorAccountsQuery","allVendorAccounts","setAllVendorAccounts","requestPage","setRequestPage","cleanSearchText","getVendorAccountsQuery","mergedVendors","loadNextVendorAccountsPage","nextRequestPage","updateVendorAccount","vendorAccountIndex","allVendorVendorAccountsUpdated","refreshSearch","useInvalidateGetVendorQuery","FilterVendorAccountsInput","useInvalidateGetAccessibleVendorsQuery","useAddVendorAccount","onVendorAccountSaved","onEditVendorAccount","useAddVendorAccountActions","onVendorAccountSavedProp","invalidateGetAccessibleVendorsQuery","VendorAccountsActions","vendorAccountsActionsRef","editVendorAccount","VendorAccountsActionsCell","vendorAccountWithActions","vendorAccountActions","VendorsAccountsTableColumnId","VENDORS_ACCOUNTS_TABLE_COLUMNS_CONFIG","showPassword","setShowPassword","tableWrapperStyle","VendorAccountsTable","purchaseVendorAccountWithActions","AddVendorAccount","addVendorAccount","vendorAccountsSerchText","setVendorAccountsSerchText","invalidateGetVendorQuery","vendorsPageHeaderWrapper","useAddVendor","onVendorSaved","onEditVendor","useAddVendorActions","VendorSummary","onVendorDeleted","vendorSummaryStyles","VendorDeliveryOverrideForm","VendorDetailsBodyContent","VendorDetailsModalHeader","vendorDetailsStyles","VendorDetailsModalBody","VendorDetailsModalConfig","getVendorDetailsModalConfigWithDeepLink","useOpenVendorDetailsModal","activeVendorId","openVendorDetailsModal","openVendorDetailsModalFromUrl","VendorActions","vendorActionsRef","editVendor","viewVendorDetails","addNewVendorAccount","AddVendorButton","onVendorAdded","VendorsPageHeader","disableSearch","VendorsTableColumnId","TotalAccounts","AccountType","VendorActionsCell","vendorWithActions","vendorActions","VENDORS_TABLE_COLUMNS_CONFIG","systemText","customText","VendorsTable","useGetFilteredVendors","vendorOptionsContent","vendorIdsMap","filteredVendorIds","filteredVendors","allVendors","vendorsWithActions","purchaseVendorActions","useAccountAutoPricingSettings","getAccountAutoPricingSettingsQuery","mergeAccountAutoPricingSettingsMutation","onMergeAccountAutoPricingSettings","accountAutoPricingSettings","AutoPricingCircuitBreakerMaxDiscountVelocityInput","exactMatchPosListingQuantities","greaterThanOrEqualToPosListingQuantity","AutoPricingDefaultCompQuantitiesInput","posListingQuantity","AutoPricingDefaultCompQuantitiesPackSelector","quantityFilterFieldPath","packLabelText","innerControl","autoPricingInputsNew","AutoPricingMinCompListingsSlider","AccountAutoPricingSettingsForm","disabledProp","VelocityCircuitBreakerSettings","restrictVelocityOfPriceUpdates","restrictVelocityOfPriceUpdatesNew","AccountAutoPricingSettings","defaultSignUpContext","hasSignedUp","isSignupSubmitted","setIsSignupSubmitted","hasCheckedSignUpRedirect","setHasCheckedSignUpRedirect","SignUpContext","useSignUpContext","SignUpContextProvider","setHasSignedUp","debouncedSetHasSignedUp","handleSetIsSignupSubmitted","ArrowRight","SubmitButton","submitButton","EmailForm","byLogo","Titles","InviteOnlyBanner","inviteOnlyBannerWrapper","SignUpPathname","allowedHostnames","isReachProDomain","hostname","isAllowedToSignUp","SignUpRedirect","SignUpValidator","loginContextLoaded","setLoginContextLoaded","video","signupVideo","signupPage","signupContent","signUpFooter","SHIMMERING_DIV_HEIGHT_SINGLE_ADCAMPAIGNS","getAdCampaignUrl","AdCampaignActionsCell","AdCampaignsDateCell","ADCAMPAIGNS_TABLE_COLUMNS_CONFIG","useGetAdCampaignsTableColumns","AdCampaignsTable","adCampaignEntities","adCampaignsText","AdCampaignCreateForm","AdCampaignCreateFormContent","adCampaignCreateInput","AdCampaignCreateModal","AdCampaignCreateFormBody","setBudget","AdCampaignsToolbarDiv","AdCampaignsToolbar","SponsoredListingsContent","sponsoredListingsTitle","AdCampaignsFlattenedView","campaignEntitiesWithMetrics","reportDataByAdCampaignId","PaymentsIcon","DocumentInfo","isReachProDomainActive","reachPropIco","reachLightIcon","reachDarkIcon","getTabId","tabId","useMeasurement","performance","memory","usedJSHeapSize","totalJSHeapSize","jsHeapSizeLimit","useMemoryTelemetry","getMeasurement","timerId","AppLayout","experimental_createPersister","storage","buster","maxAge","serialize","deserialize","PERSISTER_KEY_PREFIX","storageKey","queryHash","matchesFilter","matchQuery","storedData","persistedQuery","dataUpdatedAt","expired","busted","errorUpdatedAt","queryFnResult","createClient","persister","predicate","defaultOptions","structuralSharing","MainQueryClient","touchBackendOptions","enableMouseEvents","AppContent","TouchBackend","Worker","ReactQueryDevtools","sentryCreateBrowserRouter","createBrowserRouter","router","errorElement","loader","redirect","SettingsViews.MyAccount","SettingsViews.CurrencyConversion","SettingsViews.FulfillmentProviders","SettingsViews.PurchaseOrderSetting","SettingsViews.AccountingSetting","SettingsViews.UsersManagement","SettingsViews.Users","SettingsViews.Roles","SettingsViews.Teams","SettingsViews.VendorManagement","SettingsViews.Payments","SettingsViews.Vendors","SettingsViews.SyncCenter","SettingsViews.SellerAccount","SettingsViews.AccountAutoPricingSettings","initSentry","dsn","environment","release","integrations","useNavigationType","createRoutesFromChildren","matchRoutes","browserProfilingIntegration","tracesSampleRate","profilesSampleRate","replaysSessionSampleRate","replaysOnErrorSampleRate","createRoot","render"],"mappings":"kyQAAYA,IAAAA,WAAAA,IACVC,EAAAA,OAAS,SACTC,EAAAA,MAAQ,QACRC,EAAAA,cAAgB,gBAChBC,EAAAA,OAAS,SACTC,EAAAA,aAAe,eACfC,EAAAA,KAAO,OACPC,EAAAA,UAAY,YACZC,EAAAA,gBAAkB,kBAClBC,EAAAA,MAAQ,QACRC,EAAAA,YAAc,cACdC,EAAAA,UAAY,YACZC,EAAAA,eAAiB,iBACjBC,EAAAA,aAAe,eACfC,EAAAA,qBAAuB,uBACvBC,EAAAA,SAAW,WACXC,EAAAA,cAAgB,gBAChBC,EAAAA,aAAe,eACfC,EAAAA,QAAU,UACVC,EAAAA,UAAY,YACZC,EAAAA,WAAa,aACbC,EAAAA,MAAQ,QACRC,EAAAA,SAAW,WACXC,EAAAA,kBAAoB,oBACpBC,EAAAA,SAAW,WACXC,EAAAA,UAAY,YACZC,EAAAA,WAAa,aACbC,EAAAA,eAAiB,iBACjBC,EAAAA,eAAiB,iBACjBC,EAAAA,WAAa,aA7BH7B,IAAAA,WAAAA,CAAAA,CAAAA,ECOL,MAAM8B,mBAAqBA,IAE9BC,UAAUC,WAAaD,UAAUC,UAAUC,OACvCF,UAAUC,UAAU,CAAC,EACrBD,UAAUG,SAKLC,oBAAsBA,IAC1BJ,UAAUC,WAAaD,UAAUC,UAAUC,OAC9CF,UAAUC,UACV,CAACD,UAAUG,QAAQ,EAGZE,uBAAyBA,IAC7BD,oBAAsBE,EAAAA,KAAK,GAAG,EAG1BC,sBAAyBJ,GAC7BK,iBAAiBL,EAASM,WAAW,IAAK,EAAE,CAA0B,EAGlEC,+BAAkCP,IAC7CA,EAAWA,GAAYJ,qBAChBQ,sBAAsBJ,CAAQ,GAG1BK,iBAAoBG,GACxBC,QAAQD,CAAM,GAAKC,KAGfC,wBAA0BA,CAACC,EAAWC,IAAc,CACzDC,MAAAA,EAAKF,GAAAA,YAAAA,EAAGG,oBACRC,EAAKH,GAAAA,YAAAA,EAAGE,oBACd,OAAOD,EAAKE,EAAK,GAAKF,IAAOE,EAAK,EAAI,CACxC,QChCaC,aAAc,CAGzBC,YAAYC,EAAgC,CAFpCA,GAAAA,sBAMRC,GAAAA,wBAAoBC,IAClBA,EAAQC,QAAU,CAChB,GAAID,EAAQC,SAAW,CAAA,EACvB,kBAAmBnB,uBACnB,EAAA,gBAAmB,KAAKgB,cAAcI,iBAAmB,EAC3D,EAEOC,QAAQC,QAAQJ,CAAO,IAV9B,KAAKF,cAAgBA,CACvB,CAWF,CAuBO,MAAMO,0BAA0BT,aAA4C,CAK/EC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAI,eAAeC,EAA8BC,EAAwE,CAC7GC,IAAAA,EAAO,KAAKP,QAAU,mCAC1B,GAAIK,IAAa,KACH,MAAA,IAAAG,MAAM,0CAA0C,EAG9D,GAFSH,IAAaI,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKL,CAAQ,EAAI,KAC1DC,IAAe,KACT,MAAA,IAAIE,MAAM,4CAA4C,EACvDF,IAAeG,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKJ,CAAU,EAAI,KAC3DC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKC,sBAAsBD,CAAS,CAC9C,CACL,CAEUC,sBAAsBC,EAA4C,CACxE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAW,CACrD,CAEAiC,uBAAuBC,EAAiD,CAChEzB,IAAAA,EAAO,KAAKP,QAAU,0CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACkB,8BAA8BlB,CAAS,CACtD,CACL,CAEUkB,8BAA8BhB,EAA4C,CAChF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,KAC1C,CAEAsC,gCAAgCJ,EAAiD,CACzEzB,IAAAA,EAAO,KAAKP,QAAU,mDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACoB,uCAAuCpB,CAAS,CAC/D,CACL,CAEUoB,uCAAuClB,EAA4C,CACzF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAY,CACtD,CAEAwC,iCAAiCjC,EAA8BC,EAAmE,CAC1HC,IAAAA,EAAO,KAAKP,QAAU,qDAC1B,GAAIK,IAAa,KACH,MAAA,IAAAG,MAAM,0CAA0C,EAG9D,GAFSH,IAAaI,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKL,CAAQ,EAAI,KAC1DC,IAAe,KACL,MAAA,IAAAE,MAAM,4CAA4C,EACvDF,IAAeG,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKJ,CAAU,EAAI,KAC3DC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACsB,wCAAwCtB,CAAS,CAChE,CACL,CAEUsB,wCAAwCpB,EAAuC,CACrF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAkB,IAAW,CAChD,CAEA0C,qBAAqBC,EAA2BC,EAA+D,CACvGnC,IAAAA,EAAO,KAAKP,QAAU,yCAC1B,GAAIyC,IAAU,eACAjC,MAAM,uCAAuC,EAG3D,GAFSiC,IAAUhC,SACfF,GAAQ,SAAWG,mBAAmB,GAAK+B,CAAK,EAAI,KACpDC,IAAqB,KACX,MAAA,IAAAlC,MAAM,kDAAkD,EAC7DkC,IAAqBjC,SAC1BF,GAAQ,oBAAsBG,mBAAmB,GAAKgC,CAAgB,EAAI,KACvEnC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK0B,4BAA4B1B,CAAS,CACpD,CACL,CAEU0B,4BAA4BxB,EAA4C,CAC9E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAW,CACrD,CAEA8C,gBAAgBvC,EAA8BC,EAAkE,CACxGC,IAAAA,EAAO,KAAKP,QAAU,oCAC1B,GAAIK,IAAa,KACP,MAAA,IAAIG,MAAM,0CAA0C,EAG9D,GAFSH,IAAaI,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKL,CAAQ,EAAI,KAC1DC,IAAe,KACL,MAAA,IAAAE,MAAM,4CAA4C,EACvDF,IAAeG,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKJ,CAAU,EAAI,KAC3DC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC4B,uBAAuB5B,CAAS,CAC/C,CACL,CAEU4B,uBAAuB1B,EAAsC,CACnE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAgD,sBAAsBC,EAAiD,CAC/DxC,IAAAA,EAAO,KAAKP,QAAU,0CAC1B,GAAI+C,IAAc,KACJ,MAAA,IAAAvC,MAAM,2CAA2C,EACtDuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KACzDxC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK+B,6BAA6B/B,CAAS,CACrD,CACL,CAEU+B,6BAA6B7B,EAAsC,CACzE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAmD,yBAAyBF,EAA+BG,EAAgCC,EAA0D,CAC1I5C,IAAAA,EAAO,KAAKP,QAAU,6CAC1B,GAAI+C,IAAc,KACJ,MAAA,IAAAvC,MAAM,2CAA2C,EAG/D,GAFSuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KAC5DG,IAAe,KACT,MAAA,IAAI1C,MAAM,4CAA4C,EAGhE,GAFS0C,IAAezC,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKwC,CAAU,EAAI,KAC9DC,IAAiB,KACX,MAAA,IAAI3C,MAAM,8CAA8C,EACzD2C,IAAiB1C,SACtBF,GAAQ,gBAAkBG,mBAAmB,GAAKyC,CAAY,EAAI,KAC/D5C,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACmC,gCAAgCnC,CAAS,CACxD,CACL,CAEUmC,gCAAgCjC,EAAsC,CAC5E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAuD,6BAA6BN,EAA+BG,EAAgCC,EAA0D,CAC9I5C,IAAAA,EAAO,KAAKP,QAAU,iDAC1B,GAAI+C,IAAc,KACR,MAAA,IAAIvC,MAAM,2CAA2C,EAG/D,GAFSuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KAC5DG,IAAe,KACT,MAAA,IAAI1C,MAAM,4CAA4C,EAGhE,GAFS0C,IAAezC,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKwC,CAAU,EAAI,KAC9DC,IAAiB,KACP,MAAA,IAAA3C,MAAM,8CAA8C,EACzD2C,IAAiB1C,SACtBF,GAAQ,gBAAkBG,mBAAmB,GAAKyC,CAAY,EAAI,KAC/D5C,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKqC,oCAAoCrC,CAAS,CAC5D,CACL,CAEUqC,oCAAoCnC,EAAsC,CAChF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CACJ,CAaa,MAAAyD,sBAAsBjE,aAAwC,CAKvEC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAwD,mBAAyD,CACjDjD,IAAAA,EAAO,KAAKP,QAAU,iCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACwC,yBAAyBxC,CAAS,CACjD,CACL,CAEUwC,yBAAyBtC,EAAyD,CACxF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,KACvD,CAEA4D,mBAAkE,CAC1DnD,IAAAA,EAAO,KAAKP,QAAU,iCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK0C,yBAAyB1C,CAAS,CACjD,CACL,CAEU0C,yBAAyBxC,EAAkE,CACjG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA6C,IAAW,CAC3E,CAEA8D,4BAAkE,CAC1DrD,IAAAA,EAAO,KAAKP,QAAU,0CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK4C,kCAAkC5C,CAAS,CAC1D,CACL,CAEU4C,kCAAkC1C,EAAyD,CACjG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAgE,+BAAqE,CAC7DvD,IAAAA,EAAO,KAAKP,QAAU,6CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8C,qCAAqC9C,CAAS,CAC7D,CACL,CAEU8C,qCAAqC5C,EAAyD,CACpG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAY,CACnE,CACJ,CAOa,MAAAkE,oBAAoB1E,aAAsC,CAKnEC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAiE,eAA0C,CAClC1D,IAAAA,EAAO,KAAKP,QAAU,2BACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKiD,qBAAqBjD,CAAS,CAC7C,CACL,CAEUiD,qBAAqB/C,EAA8C,CACzE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAyB,IAAY,CACxD,CACJ,CAOO,MAAMqE,gCAAgC7E,aAAkD,CAK3FC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAoE,qBAAyD,CACjD7D,IAAAA,EAAO,KAAKP,QAAU,6CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKoD,2BAA2BpD,CAAS,CACnD,CACL,CAEUoD,2BAA2BlD,EAAuD,CACxF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAkC,IAAY,CACjE,CACJ,CA6GO,MAAMwE,qBAAqBhF,aAAuC,CAKrEC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAuE,iBAAiBvC,EAAgCwC,EAAiCC,EAAgE,CAC1IlE,IAAAA,EAAO,KAAKP,QAAU,gCACAwE,GAAS,OAC/BjE,GAAQ,QAAUG,mBAAmB,GAAK8D,CAAI,EAAI,KAC5BC,GAAS,OAC/BlE,GAAQ,QAAUG,mBAAmB,GAAK+D,CAAI,EAAI,KAC/ClE,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOyD,wBAAwBzD,CAAS,CAChD,CACL,CAEUyD,wBAAwBvD,EAAmD,CACjF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA8B,IAAW,CAC5D,CAEA6E,2BAA2BC,EAA6DJ,EAAiCC,EAAiCI,EAA6E,CAC/NtE,IAAAA,EAAO,KAAKP,QAAU,0CACAwE,GAAS,OAC/BjE,GAAQ,QAAUG,mBAAmB,GAAK8D,CAAI,EAAI,KAC5BC,GAAS,OAC/BlE,GAAQ,QAAUG,mBAAmB,GAAK+D,CAAI,EAAI,KAChBI,GAAqB,OACvDtE,GAAQ,oBAAsBG,mBAAmB,GAAKmE,CAAgB,EAAI,KACvEtE,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU0C,CAAmB,EAI/C/D,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC6D,kCAAkC7D,CAAS,CAC1D,CACL,CAEU6D,kCAAkC3D,EAAmD,CAC3F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA8B,IAAY,CAC7D,CAEAiF,gCAAgCH,EAA8E,CACtGrE,IAAAA,EAAO,KAAKP,QAAU,8CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU0C,CAAmB,EAI/C/D,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK+D,uCAAuC/D,CAAS,CAC/D,CACL,CAEU+D,uCAAuC7D,EAAqC,CAClF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgB,IAAW,CAC9C,CAEAmF,qCAAqCjD,EAAoDwC,EAAiCC,EAAoF,CACtMlE,IAAAA,EAAO,KAAKP,QAAU,oDACAwE,GAAS,OAC/BjE,GAAQ,QAAUG,mBAAmB,GAAK8D,CAAI,EAAI,KAC5BC,GAAS,OAC/BlE,GAAQ,QAAUG,mBAAmB,GAAK+D,CAAI,EAAI,KAC/ClE,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACiE,4CAA4CjE,CAAS,CACpE,CACL,CAEUiE,4CAA4C/D,EAAuE,CACzH,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAkD,IAAY,CACjF,CAEAqF,0CAA0CnD,EAAqE,CACvGzB,IAAAA,EAAO,KAAKP,QAAU,wDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACmE,iDAAiDnE,CAAS,CACzE,CACL,CAEUmE,iDAAiDjE,EAAqC,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgB,IAAY,CAC/C,CAEAuF,wBAAwBC,EAAiF,CACjG/E,IAAAA,EAAO,KAAKP,QAAU,uCAC1B,GAAIsF,IAA2B,KACrB,MAAA,IAAI9E,MAAM,wDAAwD,EACnE8E,IAA2B7E,SAChCF,GAAQ,0BAA4BG,mBAAmB,GAAK4E,CAAsB,EAAI,KACnF/E,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACsE,+BAA+BtE,CAAS,CACvD,CACL,CAEUsE,+BAA+BpE,EAAyD,CAC9F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,KACvD,CAEA0F,4BAA4BC,EAA8E,CAClGlF,IAAAA,EAAO,KAAKP,QAAU,2CAC1B,GAAIyF,IAAmB,KACb,MAAA,IAAIjF,MAAM,gDAAgD,EAC3DiF,IAAmBhF,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK+E,CAAc,EAAI,KACnElF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKyE,mCAAmCzE,CAAS,CAC3D,CACL,CAEUyE,mCAAmCvE,EAA8D,CACvG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAyC,IAAY,CACxE,CAEA6F,8BAA8BC,EAAqCC,EAAoF,CAC/ItF,IAAAA,EAAO,KAAKP,QAAU,6CAC1B,GAAI4F,IAAoB,KACV,MAAA,IAAApF,MAAM,iDAAiD,EAC5DoF,IAAoBnF,SACzBF,GAAQ,mBAAqBG,mBAAmB,GAAKkF,CAAe,EAAI,KAC1CC,GAAiB,OAC/CtF,GAAQ,gBAAkBG,mBAAmB,GAAKmF,CAAY,EAAI,KAC/DtF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC6E,qCAAqC7E,CAAS,CAC7D,CACL,CAEU6E,qCAAqC3E,EAA8D,CACzG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAyC,IAAY,CACxE,CAEAiG,0BAA0BC,EAA4BH,EAAoF,CAClItF,IAAAA,EAAO,KAAKP,QAAU,yCAC1B,GAAIgG,IAAW,KACD,MAAA,IAAAxF,MAAM,wCAAwC,EACnDwF,IAAWvF,SAChBF,GAAQ,UAAYG,mBAAmB,GAAKsF,CAAM,EAAI,KACxBH,GAAiB,OAC/CtF,GAAQ,gBAAkBG,mBAAmB,GAAKmF,CAAY,EAAI,KAC/DtF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOgF,iCAAiChF,CAAS,CACzD,CACL,CAEUgF,iCAAiC9E,EAA8D,CACrG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAyC,IAAW,CACvE,CAEAoG,6BAA6BC,EAAoCC,EAAsEP,EAAoF,CACnNtF,IAAAA,EAAO,KAAKP,QAAU,4CAC1B,GAAImG,IAAmB,KACT,MAAA,IAAA3F,MAAM,gDAAgD,EAGpE,GAFS2F,IAAmB1F,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKyF,CAAc,EAAI,KACtEC,IAAuB,KACjB,MAAA,IAAI5F,MAAM,oDAAoD,EAC/D4F,IAAuB3F,SAC5BF,GAAQ,sBAAwBG,mBAAmB,GAAK0F,CAAkB,EAAI,KAChDP,GAAiB,OAC/CtF,GAAQ,gBAAkBG,mBAAmB,GAAKmF,CAAY,EAAI,KAC/DtF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACoF,oCAAoCpF,CAAS,CAC5D,CACL,CAEUoF,oCAAoClF,EAA8D,CACxG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAyC,IAAY,CACxE,CAEAwG,oBAAoBb,EAA0E,CACtFlF,IAAAA,EAAO,KAAKP,QAAU,mCAC1B,GAAIyF,IAAmB,KACT,MAAA,IAAAjF,MAAM,gDAAgD,EAC3DiF,IAAmBhF,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK+E,CAAc,EAAI,KACnElF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACsF,2BAA2BtF,CAAS,CACnD,CACL,CAEUsF,2BAA2BpF,EAA0D,CAC3F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAqC,IAAY,CACpE,CAEA0G,2CAA2CZ,EAA4CI,EAA2D,CAC1IzF,IAAAA,EAAO,KAAKP,QAAU,0DACW4F,GAAoB,OACrDrF,GAAQ,mBAAqBG,mBAAmB,GAAKkF,CAAe,EAAI,KAChDI,GAAW,OACnCzF,GAAQ,UAAYG,mBAAmB,GAAKsF,CAAM,EAAI,KACnDzF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKwF,kDAAkDxF,CAAS,CAC1E,CACL,CAEUwF,kDAAkDtF,EAA4C,CACpG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAW,CACrD,CAEA4G,qBAAqBjB,EAAoCW,EAAsER,EAA4CI,EAAkD,CACrNzF,IAAAA,EAAO,KAAKP,QAAU,oCAC1B,GAAIyF,IAAmB,KACT,MAAA,IAAAjF,MAAM,gDAAgD,EAGpE,GAFSiF,IAAmBhF,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK+E,CAAc,EAAI,KACtEW,IAAuB,KACb,MAAA,IAAA5F,MAAM,oDAAoD,EAC/D4F,IAAuB3F,SAC5BF,GAAQ,sBAAwBG,mBAAmB,GAAK0F,CAAkB,EAAI,KAC7CR,GAAoB,OACrDrF,GAAQ,mBAAqBG,mBAAmB,GAAKkF,CAAe,EAAI,KAChDI,GAAW,OACnCzF,GAAQ,UAAYG,mBAAmB,GAAKsF,CAAM,EAAI,KACnDzF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE/B,IAAIC,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CAEb,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK0F,4BAA4B1F,CAAS,CACpD,CACL,CAEU0F,4BAA4BxF,EAAmC,CACrE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,CACC,EACMN,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAc,KACjC,CAEA8G,uBAAuBnB,EAAoCG,EAA2D,CAC9GrF,IAAAA,EAAO,KAAKP,QAAU,sCAC1B,GAAIyF,IAAmB,KACb,MAAA,IAAIjF,MAAM,gDAAgD,EAC3DiF,IAAmBhF,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK+E,CAAc,EAAI,KACrCG,GAAoB,OACrDrF,GAAQ,mBAAqBG,mBAAmB,GAAKkF,CAAe,EAAI,KACrErF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE/B,IAAIC,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CAEb,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO4F,8BAA8B5F,CAAS,CACtD,CACL,CAEU4F,8BAA8B1F,EAAmC,CACvE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,CACC,EACMN,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAc,IAAY,CAC7C,CAEAgH,kBAAkBrB,EAAoCG,EAA8D,CAC5GrF,IAAAA,EAAO,KAAKP,QAAU,iCAC1B,GAAIyF,IAAmB,eACTjF,MAAM,gDAAgD,EAC3DiF,IAAmBhF,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK+E,CAAc,EAAI,KACrCG,GAAoB,OACrDrF,GAAQ,mBAAqBG,mBAAmB,GAAKkF,CAAe,EAAI,KACrErF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8F,yBAAyB9F,CAAS,CACjD,CACL,CAEU8F,yBAAyB5F,EAAsC,CACrE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAkH,8BAAkD,CAC1CzG,IAAAA,EAAO,KAAKP,QAAU,2CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACgG,oCAAoChG,CAAS,CAC5D,CACL,CAEUgG,oCAAoC9F,EAAuC,CACjF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAkB,IAAW,CAChD,CAEAoH,qCAAwF,CAChF3G,IAAAA,EAAO,KAAKP,QAAU,kDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKkG,2CAA2ClG,CAAS,CACnE,CACL,CAEUkG,2CAA2ChG,EAAsE,CACvH,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiD,IAAW,CAC/E,CAEAsH,oCAAsF,CAC9E7G,IAAAA,EAAO,KAAKP,QAAU,iDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKoG,0CAA0CpG,CAAS,CAClE,CACL,CAEUoG,0CAA0ClG,EAAqE,CACrH,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgD,KACnE,CAEAwH,uCAAuCC,EAAgF,CAC/GhH,IAAAA,EAAO,KAAKP,QAAU,qDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUqF,CAAmB,EAI/C1G,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOuG,8CAA8CvG,CAAS,CACtE,CACL,CAEUuG,8CAA8CrG,EAAsC,CAC1F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEA2H,sCAAsCC,EAA8E,CAC5GnH,IAAAA,EAAO,KAAKP,QAAU,oDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUwF,CAAkB,EAI9C7G,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK0G,6CAA6C1G,CAAS,CACrE,CACL,CAEU0G,6CAA6CxG,EAAsC,CACzF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CACJ,CA0Ga,MAAA8H,8BAA8BtI,aAAgD,CAKvFC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEA6H,qBAAqBC,EAAiD,CAC9DvH,IAAAA,EAAO,KAAKP,QAAU,6CAC1B,GAAI8H,IAAc,eACJtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACzDvH,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO8G,4BAA4B9G,CAAS,CACpD,CACL,CAEU8G,4BAA4B5G,EAAsC,CACxE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAkI,gCAAgChG,EAA0D,CAClFzB,IAAAA,EAAO,KAAKP,QAAU,uDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKgH,uCAAuChH,CAAS,CAC/D,CACL,CAEUgH,uCAAuC9G,EAAyD,CACtG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,KACvD,CAEAoI,kCAAkCC,EAA0BC,EAA6BN,EAA+BO,EAAkF,CAClM9H,IAAAA,EAAO,KAAKP,QAAU,0DAC1B,GAAIoI,IAAY,KACN,MAAA,IAAI5H,MAAM,yCAAyC,EAG7D,GAFS4H,IAAY3H,SACjBF,GAAQ,WAAaG,mBAAmB,GAAK0H,CAAO,EAAI,KACxDN,IAAc,eACJtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKqH,yCAAyCrH,CAAS,CACjE,CACL,CAEUqH,yCAAyCnH,EAA+C,CAC9F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEAyI,yBAAyBJ,EAA0BK,EAAiCV,EAA+BO,EAAkF,CAC7L9H,IAAAA,EAAO,KAAKP,QAAU,iDAC1B,GAAIwI,IAAgB,KACN,MAAA,IAAAhI,MAAM,6CAA6C,EAGjE,GAFSgI,IAAgB/H,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAK8H,CAAW,EAAI,KAChEV,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACwH,gCAAgCxH,CAAS,CACxD,CACL,CAEUwH,gCAAgCtH,EAA+C,CACrF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEA4I,mCAAmC1G,EAA0D,CACrFzB,IAAAA,EAAO,KAAKP,QAAU,0DACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC0H,0CAA0C1H,CAAS,CAClE,CACL,CAEU0H,0CAA0CxH,EAAyD,CACzG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAY,CACnE,CAEA8I,qBAAqBT,EAA0BU,EAA4Bf,EAA+BgB,EAAiCC,EAA+DV,EAAkF,CACpR9H,IAAAA,EAAO,KAAKP,QAAU,6CAC1B,GAAI6I,IAAW,eACDrI,MAAM,wCAAwC,EAG5D,GAFSqI,IAAWpI,SAChBF,GAAQ,UAAYG,mBAAmB,GAAKmI,CAAM,EAAI,KACtDf,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EAG/D,GAFSsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KAC5DgB,IAAe,eACLtI,MAAM,4CAA4C,EAGhE,GAFSsI,IAAerI,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKoI,CAAU,EAAI,KAC9DC,IAAmB,KACT,MAAA,IAAAvI,MAAM,gDAAgD,EAC3DuI,IAAmBtI,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKqI,CAAc,EAAI,KAC3BV,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO+H,4BAA4B/H,CAAS,CACpD,CACL,CAEU+H,4BAA4B7H,EAA+C,CACjF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,KAC7C,CAEAmJ,uBAAuBd,EAA0Be,EAAwCpB,EAA+BO,EAAkF,CAClM9H,IAAAA,EAAO,KAAKP,QAAU,+CAC1B,GAAIkJ,IAAuB,KACjB,MAAA,IAAI1I,MAAM,oDAAoD,EAGxE,GAFS0I,IAAuBzI,SAC5BF,GAAQ,sBAAwBG,mBAAmB,GAAKwI,CAAkB,EAAI,KAC9EpB,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKkI,8BAA8BlI,CAAS,CACtD,CACL,CAEUkI,8BAA8BhI,EAA+C,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEAsJ,2BAA2BpH,EAA0D,CAC7EzB,IAAAA,EAAO,KAAKP,QAAU,kDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKoI,kCAAkCpI,CAAS,CAC1D,CACL,CAEUoI,kCAAkClI,EAAyD,CACjG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,KACvD,CAEAwJ,oBAAoBnB,EAA0BL,EAA+BO,EAAkF,CACvJ9H,IAAAA,EAAO,KAAKP,QAAU,4CAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOsI,2BAA2BtI,CAAS,CACnD,CACL,CAEUsI,2BAA2BpI,EAA+C,CAChF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,KAC7C,CAEA0J,6BAA6BxH,EAA0D,CAC/EzB,IAAAA,EAAO,KAAKP,QAAU,oDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKwI,oCAAoCxI,CAAS,CAC5D,CACL,CAEUwI,oCAAoCtI,EAAyD,CACnG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,KACvD,CAEA4J,sBAAsBvB,EAA0BwB,EAAqCC,EAAiC9B,EAA+BO,EAAkF,CAC/N9H,IAAAA,EAAO,KAAKP,QAAU,8CAC1B,GAAI2J,IAAmB,KACb,MAAA,IAAInJ,MAAM,gDAAgD,EAGpE,GAFSmJ,IAAmBlJ,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKiJ,CAAc,EAAI,KACtEC,IAAe,KACL,MAAA,IAAApJ,MAAM,4CAA4C,EAGhE,GAFSoJ,IAAenJ,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKkJ,CAAU,EAAI,KAC9D9B,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO4I,6BAA6B5I,CAAS,CACrD,CACL,CAEU4I,6BAA6B1I,EAA+C,CAClF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,KAC7C,CAEAgK,6CAA6C9H,EAA0D,CAC/FzB,IAAAA,EAAO,KAAKP,QAAU,oEACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8I,oDAAoD9I,CAAS,CAC5E,CACL,CAEU8I,oDAAoD5I,EAAyD,CACnH,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,KACvD,CAEAkK,sCAAsCC,EAAgEnC,EAA+BO,EAAyE,CACtM9H,IAAAA,EAAO,KAAKP,QAAU,8DAC1B,GAAI8H,IAAc,eACJtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACiJ,6CAA6CjJ,CAAS,CACrE,CACL,CAEUiJ,6CAA6C/I,EAAsC,CACzF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,KACpC,CAEAqK,uBAAuBnI,EAA0D,CACzEzB,IAAAA,EAAO,KAAKP,QAAU,8CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKmJ,8BAA8BnJ,CAAS,CACtD,CACL,CAEUmJ,8BAA8BjJ,EAAyD,CAC7F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAuK,gBAAgBlC,EAA0BmC,EAAgCC,EAA2CC,EAA2CC,EAA6CC,EAAmC5C,EAA+BO,EAAkF,CACzV9H,IAAAA,EAAO,KAAKP,QAAU,wCAC1B,GAAIsK,IAAe,eACL9J,MAAM,4CAA4C,EAWhE,GAVS8J,IAAe7J,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAK4J,CAAU,EAAI,KAC9BC,GAAmB,OACnDhK,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACtCC,GAAmB,OACnDjK,GAAQ,kBAAoBG,mBAAmB,GAAK8J,CAAc,EAAI,KACrCC,GAAoB,OACrDlK,GAAQ,mBAAqBG,mBAAmB,GAAK+J,CAAe,EAAI,KAChDC,GAAW,OACnCnK,GAAQ,UAAYG,mBAAmB,GAAKgK,CAAM,EAAI,KACtD5C,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO0J,uBAAuB1J,CAAS,CAC/C,CACL,CAEU0J,uBAAuBxJ,EAA+C,CAC5E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,KAC7C,CAEA8K,qCAAqC5I,EAA0D,CACvFzB,IAAAA,EAAO,KAAKP,QAAU,4DACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO4J,4CAA4C5J,CAAS,CACpE,CACL,CAEU4J,4CAA4C1J,EAAyD,CAC3G,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,KACvD,CAEAgL,8BAA8Bb,EAAgEnC,EAA+BO,EAAkF,CACvM9H,IAAAA,EAAO,KAAKP,QAAU,sDAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8J,qCAAqC9J,CAAS,CAC7D,CACL,CAEU8J,qCAAqC5J,EAA+C,CAC1F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEAkL,gCAAgCf,EAAgFM,EAA2CzC,EAA+BO,EAAkF,CACpQ9H,IAAAA,EAAO,KAAKP,QAAU,wDAG1B,GAFoCuK,GAAmB,OACnDhK,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACtEzC,IAAc,eACJtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACgK,uCAAuChK,CAAS,CAC/D,CACL,CAEUgK,uCAAuC9J,EAA+C,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEAoL,uCAAuCX,EAAoCtI,EAA8G,CACjL1B,IAAAA,EAAO,KAAKP,QAAU,+DAC1B,GAAIuK,IAAmB,KACT,MAAA,IAAA/J,MAAM,gDAAgD,EAC3D+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACnEhK,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUD,CAAI,EAIhCpB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKkK,8CAA8ClK,CAAS,CACtE,CACL,CAEUkK,8CAA8ChK,EAAgE,CACpH,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2C,IAAW,CACzE,CAEAsL,iCAAiCpJ,EAAqBqJ,EAA8E,CAC5H9K,IAAAA,EAAO,KAAKP,QAAU,yDAC1B,GAAIqL,IAAuB,eACb7K,MAAM,oDAAoD,EAC/D6K,IAAuB5K,SAC5BF,GAAQ,sBAAwBG,mBAAmB,GAAK2K,CAAkB,EAAI,KAC3E9K,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOqK,wCAAwCrK,CAAS,CAChE,CACL,CAEUqK,wCAAwCnK,EAAyD,CACvG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,KACvD,CAEAyL,0BAA0BtB,EAAgEnC,EAA+BO,EAAkF,CACnM9H,IAAAA,EAAO,KAAKP,QAAU,kDAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACuK,iCAAiCvK,CAAS,CACzD,CACL,CAEUuK,iCAAiCrK,EAA+C,CACtF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEA2L,4BAA4BxB,EAA+DnC,EAA+BO,EAAkF,CACpM9H,IAAAA,EAAO,KAAKP,QAAU,oDAC1B,GAAI8H,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKyK,mCAAmCzK,CAAS,CAC3D,CACL,CAEUyK,mCAAmCvK,EAA+C,CACxF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEA6L,mCAAmC3J,EAA0D,CACrFzB,IAAAA,EAAO,KAAKP,QAAU,0DACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC2K,0CAA0C3K,CAAS,CAClE,CACL,CAEU2K,0CAA0CzK,EAAyD,CACzG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEA+L,6BAA6B7J,EAA0D,CAC/EzB,IAAAA,EAAO,KAAKP,QAAU,oDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK6K,oCAAoC7K,CAAS,CAC5D,CACL,CAEU6K,oCAAoC3K,EAAyD,CACnG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAiM,sBAAsB9B,EAA4EnC,EAA+BO,EAAkF,CAC3M9H,IAAAA,EAAO,KAAKP,QAAU,8CAC1B,GAAI8H,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK+K,6BAA6B/K,CAAS,CACrD,CACL,CAEU+K,6BAA6B7K,EAA+C,CAClF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEAmM,2BAA2BjK,EAA0D,CAC7EzB,IAAAA,EAAO,KAAKP,QAAU,kDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKiL,kCAAkCjL,CAAS,CAC1D,CACL,CAEUiL,kCAAkC/K,EAAyD,CACjG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAqM,oBAAoBhE,EAA0BiE,EAAoDC,EAA2CvE,EAA+BO,EAAkF,CACtP9H,IAAAA,EAAO,KAAKP,QAAU,4CAK1B,GAJ6CoM,GAA4B,OACrE7L,GAAQ,2BAA6BG,mBAAmB,GAAK0L,CAAuB,EAAI,KACxDC,GAAmB,OACnD9L,GAAQ,kBAAoBG,mBAAmB,GAAK2L,CAAc,EAAI,KACtEvE,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKqL,2BAA2BrL,CAAS,CACnD,CACL,CAEUqL,2BAA2BnL,EAA+C,CAChF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEAyM,iCAAiCvK,EAAqBwK,EAAiF,CAC/HjM,IAAAA,EAAO,KAAKP,QAAU,yDAC1B,GAAIwM,IAA0B,KACpB,MAAA,IAAIhM,MAAM,uDAAuD,EAClEgM,IAA0B/L,SAC/BF,GAAQ,yBAA2BG,mBAAmB,GAAK8L,CAAqB,EAAI,KACjFjM,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOwL,wCAAwCxL,CAAS,CAChE,CACL,CAEUwL,wCAAwCtL,EAAyD,CACvG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,KACvD,CAEA4M,0BAA0BzC,EAA+EnC,EAA+BO,EAAuDmE,EAAuE,CAC9PjM,IAAAA,EAAO,KAAKP,QAAU,kDAC1B,GAAI8H,IAAc,eACJtH,MAAM,2CAA2C,EAK/D,GAJSsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KAC5FmE,IAA0B,KACpB,MAAA,IAAIhM,MAAM,uDAAuD,EAClEgM,IAA0B/L,SAC/BF,GAAQ,yBAA2BG,mBAAmB,GAAK8L,CAAqB,EAAI,KACjFjM,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK0L,iCAAiC1L,CAAS,CACzD,CACL,CAEU0L,iCAAiCxL,EAA+C,CACtF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEA8M,sBAAsB5K,EAA0D,CACxEzB,IAAAA,EAAO,KAAKP,QAAU,6CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK4L,6BAA6B5L,CAAS,CACrD,CACL,CAEU4L,6BAA6B1L,EAAyD,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,KACvD,CAEAgN,eAAe3E,EAA0B4E,EAA6BC,EAA8BlF,EAA+BO,EAAkF,CAC7M9H,IAAAA,EAAO,KAAKP,QAAU,uCAC1B,GAAI+M,IAAY,KACF,MAAA,IAAAvM,MAAM,yCAAyC,EAG7D,GAFSuM,IAAYtM,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKqM,CAAO,EAAI,KACxDC,IAAa,eACHxM,MAAM,0CAA0C,EAG9D,GAFSwM,IAAavM,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKsM,CAAQ,EAAI,KAC1DlF,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKgM,sBAAsBhM,CAAS,CAC9C,CACL,CAEUgM,sBAAsB9L,EAA+C,CAC3E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEAoN,eAAe/E,EAA0B4E,EAA6BjF,EAA+BO,EAAkF,CAC/K9H,IAAAA,EAAO,KAAKP,QAAU,uCAC1B,GAAI+M,IAAY,KACN,MAAA,IAAIvM,MAAM,yCAAyC,EAG7D,GAFSuM,IAAYtM,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKqM,CAAO,EAAI,KACxDjF,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKkM,sBAAsBlM,CAAS,CAC9C,CACL,CAEUkM,sBAAsBhM,EAA+C,CAC3E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEAsN,wBAAwBnD,EAAmCnC,EAA+BO,EAAkF,CACpK9H,IAAAA,EAAO,KAAKP,QAAU,gDAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKoM,+BAA+BpM,CAAS,CACvD,CACL,CAEUoM,+BAA+BlM,EAA+C,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAOAwN,+BAA+BrD,EAAgCnC,EAA+BO,EAAkF,CACxK9H,IAAAA,EAAO,KAAKP,QAAU,uDAC1B,GAAI8H,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKsM,sCAAsCtM,CAAS,CAC9D,CACL,CAEUsM,sCAAsCpM,EAA+C,CAC3F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEA0N,qCAAqCxL,EAA0D,CACvFzB,IAAAA,EAAO,KAAKP,QAAU,4DACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACwM,4CAA4CxM,CAAS,CACpE,CACL,CAEUwM,4CAA4CtM,EAAyD,CAC3G,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEA4N,8BAA8BzD,EAAwDnC,EAA+BO,EAAkF,CAC/L9H,IAAAA,EAAO,KAAKP,QAAU,sDAC1B,GAAI8H,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK0M,qCAAqC1M,CAAS,CAC7D,CACL,CAEU0M,qCAAqCxM,EAA+C,CAC1F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEA8N,4BAA4B5L,EAA0D,CAC9EzB,IAAAA,EAAO,KAAKP,QAAU,mDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC4M,mCAAmC5M,CAAS,CAC3D,CACL,CAEU4M,mCAAmC1M,EAAyD,CAClG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAgO,qBAAqB3F,EAA0BL,EAA+BO,EAAkF,CACxJ9H,IAAAA,EAAO,KAAKP,QAAU,6CAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO8M,4BAA4B9M,CAAS,CACpD,CACL,CAEU8M,4BAA4B5M,EAA+C,CACjF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEAkO,+BAA+BhM,EAA0D,CACjFzB,IAAAA,EAAO,KAAKP,QAAU,sDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKgN,sCAAsChN,CAAS,CAC9D,CACL,CAEUgN,sCAAsC9M,EAAyD,CACrG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAoO,wBAAwB/F,EAA0BL,EAA+BqG,EAA+BC,EAAyCC,EAA0ChG,EAAkF,CAC7Q9H,IAAAA,EAAO,KAAKP,QAAU,gDAC1B,GAAI8H,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EAG/D,GAFSsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KAC5DqG,IAAa,KACP,MAAA,IAAI3N,MAAM,0CAA0C,EACrD2N,IAAa1N,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKyN,CAAQ,EAAI,KAC5BC,GAAiB,OAC/C7N,GAAQ,gBAAkBG,mBAAmB,GAAK0N,CAAY,EAAI,KACnCC,GAAkB,OACjD9N,GAAQ,iBAAmBG,mBAAmB,GAAK2N,CAAa,EAAI,KACzBhG,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACqN,+BAA+BrN,CAAS,CACvD,CACL,CAEUqN,+BAA+BnN,EAA+C,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEAyO,6BAA6BvM,EAAqBwK,EAAiF,CAC3HjM,IAAAA,EAAO,KAAKP,QAAU,qDAC1B,GAAIwM,IAA0B,KAChB,MAAA,IAAAhM,MAAM,uDAAuD,EAClEgM,IAA0B/L,SAC/BF,GAAQ,yBAA2BG,mBAAmB,GAAK8L,CAAqB,EAAI,KACjFjM,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACuN,oCAAoCvN,CAAS,CAC5D,CACL,CAEUuN,oCAAoCrN,EAAyD,CACnG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEA2O,sBAAsBtG,EAA0BL,EAA+B4G,EAAkClC,EAA4CnE,EAAkF,CACvO9H,IAAAA,EAAO,KAAKP,QAAU,8CAC1B,GAAI8H,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EAG/D,GAFSsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KAC5D4G,IAAgB,KACV,MAAA,IAAIlO,MAAM,6CAA6C,EAGjE,GAFSkO,IAAgBjO,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAKgO,CAAW,EAAI,KAChElC,IAA0B,KAChB,MAAA,IAAAhM,MAAM,uDAAuD,EAClEgM,IAA0B/L,SAC/BF,GAAQ,yBAA2BG,mBAAmB,GAAK8L,CAAqB,EAAI,KACzCnE,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO0N,6BAA6B1N,CAAS,CACrD,CACL,CAEU0N,6BAA6BxN,EAA+C,CAClF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEA8O,8BAA8B5M,EAA0D,CAChFzB,IAAAA,EAAO,KAAKP,QAAU,qDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK4N,qCAAqC5N,CAAS,CAC7D,CACL,CAEU4N,qCAAqC1N,EAAyD,CACpG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAY,CACnE,CAEAgP,uBAAuB7E,EAA+EnC,EAA+BO,EAAkF,CAC/M9H,IAAAA,EAAO,KAAKP,QAAU,+CAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8N,8BAA8B9N,CAAS,CACtD,CACL,CAEU8N,8BAA8B5N,EAA+C,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEAkP,4BAA4BhN,EAA0D,CAC9EzB,IAAAA,EAAO,KAAKP,QAAU,mDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACgO,mCAAmChO,CAAS,CAC3D,CACL,CAEUgO,mCAAmC9N,EAAyD,CAClG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAoP,qBAAqBjF,EAAyDnC,EAA+BO,EAAuD8G,EAAyE,CACrO5O,IAAAA,EAAO,KAAKP,QAAU,6CAC1B,GAAI8H,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KAC1D8G,GAAqB,OACvD5O,GAAQ,oBAAsBG,mBAAmB,GAAKyO,CAAgB,EAAI,KACvE5O,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACmO,4BAA4BnO,CAAS,CACpD,CACL,CAEUmO,4BAA4BjO,EAA+C,CACjF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEAuP,wBAAwBrN,EAA0D,CAC1EzB,IAAAA,EAAO,KAAKP,QAAU,+CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACqO,+BAA+BrO,CAAS,CACvD,CACL,CAEUqO,+BAA+BnO,EAAyD,CAC9F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAyP,iBAAiBpH,EAA0BL,EAA+BO,EAAkF,CACpJ9H,IAAAA,EAAO,KAAKP,QAAU,yCAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACuO,wBAAwBvO,CAAS,CAChD,CACL,CAEUuO,wBAAwBrO,EAA+C,CAC7E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CACJ,CAWa,MAAA2P,mCAAmCnQ,aAAqD,CAKjGC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEA6H,qBAAqBC,EAAiD,CAC9DvH,IAAAA,EAAO,KAAKP,QAAU,kDAC1B,GAAI8H,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACzDvH,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK8G,4BAA4B9G,CAAS,CACpD,CACL,CAEU8G,4BAA4B5G,EAAsC,CACxE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEA4P,qCAAqC1N,EAA0D,CACvFzB,IAAAA,EAAO,KAAKP,QAAU,iEACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC0O,4CAA4C1O,CAAS,CACpE,CACL,CAEU0O,4CAA4CxO,EAAyD,CAC3G,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAY,CACnE,CAEA8P,6BAA6B3F,EAA0CnC,EAA+BO,EAAkF,CAChL9H,IAAAA,EAAO,KAAKP,QAAU,0DAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC4O,oCAAoC5O,CAAS,CAC5D,CACL,CAEU4O,oCAAoC1O,EAA+C,CACzF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CACJ,CAoKa,MAAAgQ,+BAA+BxQ,aAAiD,CAKzFC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEA6H,qBAAqBC,EAAiD,CAC9DvH,IAAAA,EAAO,KAAKP,QAAU,8CAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACzDvH,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8G,4BAA4B9G,CAAS,CACpD,CACL,CAEU8G,4BAA4B5G,EAAsC,CACxE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAsL,iCAAiCpJ,EAAgE,CACzFzB,IAAAA,EAAO,KAAKP,QAAU,yDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACqK,wCAAwCrK,CAAS,CAChE,CACL,CAEUqK,wCAAwCnK,EAAyD,CACvG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAyL,0BAA0BtB,EAA6DnC,EAA+BO,EAAkF,CAChM9H,IAAAA,EAAO,KAAKP,QAAU,mDAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACuK,iCAAiCvK,CAAS,CACzD,CACL,CAEUuK,iCAAiCrK,EAA+C,CACtF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEAiQ,8BAA8B/N,EAAgE,CACtFzB,IAAAA,EAAO,KAAKP,QAAU,sDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK+O,qCAAqC/O,CAAS,CAC7D,CACL,CAEU+O,qCAAqC7O,EAAyD,CACpG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAY,CACnE,CAEAmQ,uBAAuBhG,EAA6CnC,EAA+BO,EAAkF,CAC7K9H,IAAAA,EAAO,KAAKP,QAAU,gDAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACiP,8BAA8BjP,CAAS,CACtD,CACL,CAEUiP,8BAA8B/O,EAA+C,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEAqQ,+BAA+BnO,EAAgE,CACvFzB,IAAAA,EAAO,KAAKP,QAAU,uDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACmP,sCAAsCnP,CAAS,CAC9D,CACL,CAEUmP,sCAAsCjP,EAAyD,CACrG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAuQ,sBAAsBlI,EAA0BL,EAA+BO,EAAkF,CACzJ9H,IAAAA,EAAO,KAAKP,QAAU,+CAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKqP,6BAA6BrP,CAAS,CACrD,CACL,CAEUqP,6BAA6BnP,EAA+C,CAClF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEAyQ,wBAAwBtG,EAAqEnC,EAA+BO,EAAuDmI,EAAmE,CAC9OjQ,IAAAA,EAAO,KAAKP,QAAU,iDAC1B,GAAI8H,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KAChEmI,GAAe,OAC3CjQ,GAAQ,cAAgBG,mBAAmB,GAAK8P,CAAU,EAAI,KAC3DjQ,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOwP,+BAA+BxP,CAAS,CACvD,CACL,CAEUwP,+BAA+BtP,EAA+C,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEA0N,qCAAqCxL,EAAgE,CAC7FzB,IAAAA,EAAO,KAAKP,QAAU,6DACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACwM,4CAA4CxM,CAAS,CACpE,CACL,CAEUwM,4CAA4CtM,EAAyD,CAC3G,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEA4N,8BAA8BzD,EAAwDnC,EAA+BO,EAAkF,CAC/L9H,IAAAA,EAAO,KAAKP,QAAU,uDAC1B,GAAI8H,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK0M,qCAAqC1M,CAAS,CAC7D,CACL,CAEU0M,qCAAqCxM,EAA+C,CAC1F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEA8M,sBAAsB5K,EAAgE,CAC9EzB,IAAAA,EAAO,KAAKP,QAAU,8CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC4L,6BAA6B5L,CAAS,CACrD,CACL,CAEU4L,6BAA6B1L,EAAyD,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAgN,eAAe3E,EAA0B4E,EAA6BC,EAA8BlF,EAA+BO,EAAkF,CAC7M9H,IAAAA,EAAO,KAAKP,QAAU,wCAC1B,GAAI+M,IAAY,KACN,MAAA,IAAIvM,MAAM,yCAAyC,EAG7D,GAFSuM,IAAYtM,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKqM,CAAO,EAAI,KACxDC,IAAa,KACH,MAAA,IAAAxM,MAAM,0CAA0C,EAG9D,GAFSwM,IAAavM,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKsM,CAAQ,EAAI,KAC1DlF,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACgM,sBAAsBhM,CAAS,CAC9C,CACL,CAEUgM,sBAAsB9L,EAA+C,CAC3E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEAoN,eAAe/E,EAA0B4E,EAA6BjF,EAA+BO,EAAkF,CAC/K9H,IAAAA,EAAO,KAAKP,QAAU,wCAC1B,GAAI+M,IAAY,KACF,MAAA,IAAAvM,MAAM,yCAAyC,EAG7D,GAFSuM,IAAYtM,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKqM,CAAO,EAAI,KACxDjF,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACkM,sBAAsBlM,CAAS,CAC9C,CACL,CAEUkM,sBAAsBhM,EAA+C,CAC3E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEAkO,+BAA+BhM,EAAgE,CACvFzB,IAAAA,EAAO,KAAKP,QAAU,uDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKgN,sCAAsChN,CAAS,CAC9D,CACL,CAEUgN,sCAAsC9M,EAAyD,CACrG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAoO,wBAAwB/F,EAA0BL,EAA+BqG,EAA+BC,EAAyCC,EAA0ChG,EAAkF,CAC7Q9H,IAAAA,EAAO,KAAKP,QAAU,iDAC1B,GAAI8H,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EAG/D,GAFSsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KAC5DqG,IAAa,KACP,MAAA,IAAI3N,MAAM,0CAA0C,EACrD2N,IAAa1N,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKyN,CAAQ,EAAI,KAC5BC,GAAiB,OAC/C7N,GAAQ,gBAAkBG,mBAAmB,GAAK0N,CAAY,EAAI,KACnCC,GAAkB,OACjD9N,GAAQ,iBAAmBG,mBAAmB,GAAK2N,CAAa,EAAI,KACzBhG,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACqN,+BAA+BrN,CAAS,CACvD,CACL,CAEUqN,+BAA+BnN,EAA+C,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEA4Q,kCAAkC1O,EAAgE,CAC1FzB,IAAAA,EAAO,KAAKP,QAAU,0DACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK0P,yCAAyC1P,CAAS,CACjE,CACL,CAEU0P,yCAAyCxP,EAAyD,CACxG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAY,CACnE,CAEA8Q,2BAA2BzI,EAA0BL,EAA+B+I,EAAsCC,EAAoCC,EAAoC1I,EAAkF,CAC5Q9H,IAAAA,EAAO,KAAKP,QAAU,oDAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EAG/D,GAFSsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KAC5D+I,IAAqB,KACX,MAAA,IAAArQ,MAAM,kDAAkD,EAGtE,GAFSqQ,IAAqBpQ,SAC1BF,GAAQ,oBAAsBG,mBAAmB,GAAKmQ,CAAgB,EAAI,KAC1EC,IAAmB,KACT,MAAA,IAAAtQ,MAAM,gDAAgD,EAGpE,GAFSsQ,IAAmBrQ,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKoQ,CAAc,EAAI,KACtEC,IAAmB,KACb,MAAA,IAAIvQ,MAAM,gDAAgD,EAC3DuQ,IAAmBtQ,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKqQ,CAAc,EAAI,KAC3B1I,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC+P,kCAAkC/P,CAAS,CAC1D,CACL,CAEU+P,kCAAkC7P,EAA+C,CACvF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEA8O,8BAA8B5M,EAA2BwK,EAAiF,CAClIjM,IAAAA,EAAO,KAAKP,QAAU,uDAC1B,GAAIwM,IAA0B,KAChB,MAAA,IAAAhM,MAAM,uDAAuD,EAClEgM,IAA0B/L,SAC/BF,GAAQ,yBAA2BG,mBAAmB,GAAK8L,CAAqB,EAAI,KACjFjM,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC4N,qCAAqC5N,CAAS,CAC7D,CACL,CAEU4N,qCAAqC1N,EAAyD,CACpG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAgP,uBAAuB7E,EAA+EuC,EAA4C1E,EAA+BO,EAAkF,CAC3P9H,IAAAA,EAAO,KAAKP,QAAU,gDAC1B,GAAIwM,IAA0B,KAChB,MAAA,IAAAhM,MAAM,uDAAuD,EAG3E,GAFSgM,IAA0B/L,SAC/BF,GAAQ,yBAA2BG,mBAAmB,GAAK8L,CAAqB,EAAI,KACpF1E,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8N,8BAA8B9N,CAAS,CACtD,CACL,CAEU8N,8BAA8B5N,EAA+C,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEAmR,oCAAoCjP,EAA2BwK,EAA4C0E,EAA4E,CAC/K3Q,IAAAA,EAAO,KAAKP,QAAU,6DAC1B,GAAIwM,IAA0B,KACpB,MAAA,IAAIhM,MAAM,uDAAuD,EAG3E,GAFSgM,IAA0B/L,SAC/BF,GAAQ,yBAA2BG,mBAAmB,GAAK8L,CAAqB,EAAI,KACpF0E,IAAqB,KACX,MAAA,IAAA1Q,MAAM,kDAAkD,EAC7D0Q,IAAqBzQ,SAC1BF,GAAQ,oBAAsBG,mBAAmB,GAAKwQ,CAAgB,EAAI,KACvE3Q,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACkQ,2CAA2ClQ,CAAS,CACnE,CACL,CAEUkQ,2CAA2ChQ,EAAyD,CAC1G,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAY,CACnE,CAEAsR,6BAA6BjJ,EAA0BqE,EAA4C1E,EAA+BO,EAAkF,CAC5M9H,IAAAA,EAAO,KAAKP,QAAU,sDAC1B,GAAIwM,IAA0B,KAChB,MAAA,IAAAhM,MAAM,uDAAuD,EAG3E,GAFSgM,IAA0B/L,SAC/BF,GAAQ,yBAA2BG,mBAAmB,GAAK8L,CAAqB,EAAI,KACpF1E,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKoQ,oCAAoCpQ,CAAS,CAC5D,CACL,CAEUoQ,oCAAoClQ,EAA+C,CACzF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEAwR,wCAAwCnJ,EAA0BqE,EAA4C1E,EAA+BO,EAAkF,CACvN9H,IAAAA,EAAO,KAAKP,QAAU,iEAC1B,GAAIwM,IAA0B,KAChB,MAAA,IAAAhM,MAAM,uDAAuD,EAG3E,GAFSgM,IAA0B/L,SAC/BF,GAAQ,yBAA2BG,mBAAmB,GAAK8L,CAAqB,EAAI,KACpF1E,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACsQ,+CAA+CtQ,CAAS,CACvE,CACL,CAEUsQ,+CAA+CpQ,EAA+C,CACpG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEAkP,4BAA4BhN,EAAgE,CACpFzB,IAAAA,EAAO,KAAKP,QAAU,oDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACgO,mCAAmChO,CAAS,CAC3D,CACL,CAEUgO,mCAAmC9N,EAAyD,CAClG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAoP,qBAAqBjF,EAAyDnC,EAA+BO,EAAuD8G,EAAyE,CACrO5O,IAAAA,EAAO,KAAKP,QAAU,8CAC1B,GAAI8H,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KAC1D8G,GAAqB,OACvD5O,GAAQ,oBAAsBG,mBAAmB,GAAKyO,CAAgB,EAAI,KACvE5O,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACmO,4BAA4BnO,CAAS,CACpD,CACL,CAEUmO,4BAA4BjO,EAA+C,CACjF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEA0R,uBAAuB1J,EAA+BO,EAAuDoJ,EAAmE,CACxKlR,IAAAA,EAAO,KAAKP,QAAU,gDAC1B,GAAI8H,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAEzB+Q,MAAAA,EAAW,IAAIC,SACjBF,GAAS,MACAG,EAAAA,OAAO,OAAQH,EAAKI,KAAMJ,EAAKK,SAAWL,EAAKK,SAAW,MAAM,EAEzElR,IAAAA,EAAwB,CACxBqB,KAAMyP,EACN7Q,OAAQ,OACRlB,QAAS,CACL,OAAU,kBAAA,GAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK8Q,8BAA8B9Q,CAAS,CACtD,CACL,CAEU8Q,8BAA8B5Q,EAA+C,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEAkS,8BAA8B/H,EAAgE,CACtF1J,IAAAA,EAAO,KAAKP,QAAU,sDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACgR,qCAAqChR,CAAS,CAC7D,CACL,CAEUgR,qCAAqC9Q,EAAyD,CACpG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAoS,uBAAuBjI,EAAwBnC,EAA+BO,EAAkF,CACxJ9H,IAAAA,EAAO,KAAKP,QAAU,gDAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKkR,8BAA8BlR,CAAS,CACtD,CACL,CAEUkR,8BAA8BhR,EAA+C,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CACJ,CA6CO,MAAMsS,2BAA2B9S,aAA6C,CAKjFC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEA6H,qBAAqBC,EAAiD,CAC9DvH,IAAAA,EAAO,KAAKP,QAAU,0CAC1B,GAAI8H,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACzDvH,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK8G,4BAA4B9G,CAAS,CACpD,CACL,CAEU8G,4BAA4B5G,EAAsC,CACxE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,KACpC,CAEAsL,iCAAiCpJ,EAAuD,CAChFzB,IAAAA,EAAO,KAAKP,QAAU,qDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACqK,wCAAwCrK,CAAS,CAChE,CACL,CAEUqK,wCAAwCnK,EAAyD,CACvG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAyL,0BAA0BtB,EAAgDnC,EAA+BO,EAAkF,CACnL9H,IAAAA,EAAO,KAAKP,QAAU,+CAC1B,GAAI8H,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKuK,iCAAiCvK,CAAS,CACzD,CACL,CAEUuK,iCAAiCrK,EAA+C,CACtF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEA0N,qCAAqCxL,EAAuD,CACpFzB,IAAAA,EAAO,KAAKP,QAAU,yDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACwM,4CAA4CxM,CAAS,CACpE,CACL,CAEUwM,4CAA4CtM,EAAyD,CAC3G,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAY,CACnE,CAEA4N,8BAA8BzD,EAAwDnC,EAA+BO,EAAkF,CAC/L9H,IAAAA,EAAO,KAAKP,QAAU,mDAC1B,GAAI8H,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC0M,qCAAqC1M,CAAS,CAC7D,CACL,CAEU0M,qCAAqCxM,EAA+C,CAC1F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEAuS,+BAA+BrQ,EAAuD,CAC9EzB,IAAAA,EAAO,KAAKP,QAAU,mDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACqR,sCAAsCrR,CAAS,CAC9D,CACL,CAEUqR,sCAAsCnR,EAAyD,CACrG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAyS,wBAAwBpK,EAA0BqK,EAA6CC,EAA+C3K,EAA+BO,EAAkF,CACvP9H,IAAAA,EAAO,KAAKP,QAAU,6CAK1B,GAJqCwS,GAAoB,OACrDjS,GAAQ,mBAAqBG,mBAAmB,GAAK8R,CAAe,EAAI,KACpCC,GAAuB,OAC3DlS,GAAQ,sBAAwBG,mBAAmB,GAAK+R,CAAkB,EAAI,KAC9E3K,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKyR,+BAA+BzR,CAAS,CACvD,CACL,CAEUyR,+BAA+BvR,EAA+C,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEA8M,sBAAsB5K,EAAuD,CACrEzB,IAAAA,EAAO,KAAKP,QAAU,0CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK4L,6BAA6B5L,CAAS,CACrD,CACL,CAEU4L,6BAA6B1L,EAAyD,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAY,CACnE,CAEAgN,eAAe3E,EAA0B4E,EAA6BC,EAA8BlF,EAA+BO,EAAkF,CAC7M9H,IAAAA,EAAO,KAAKP,QAAU,oCAC1B,GAAI+M,IAAY,KACN,MAAA,IAAIvM,MAAM,yCAAyC,EAG7D,GAFSuM,IAAYtM,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKqM,CAAO,EAAI,KACxDC,IAAa,KACH,MAAA,IAAAxM,MAAM,0CAA0C,EAG9D,GAFSwM,IAAavM,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKsM,CAAQ,EAAI,KAC1DlF,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACgM,sBAAsBhM,CAAS,CAC9C,CACL,CAEUgM,sBAAsB9L,EAA+C,CAC3E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEAoN,eAAe/E,EAA0B4E,EAA6BjF,EAA+BO,EAAkF,CAC/K9H,IAAAA,EAAO,KAAKP,QAAU,oCAC1B,GAAI+M,IAAY,KACF,MAAA,IAAAvM,MAAM,yCAAyC,EAG7D,GAFSuM,IAAYtM,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKqM,CAAO,EAAI,KACxDjF,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKkM,sBAAsBlM,CAAS,CAC9C,CACL,CAEUkM,sBAAsBhM,EAA+C,CAC3E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEAkO,+BAA+BhM,EAAuD,CAC9EzB,IAAAA,EAAO,KAAKP,QAAU,mDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACgN,sCAAsChN,CAAS,CAC9D,CACL,CAEUgN,sCAAsC9M,EAAyD,CACrG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAoO,wBAAwB/F,EAA0BL,EAA+BqG,EAA+BC,EAAyCC,EAA0ChG,EAAkF,CAC7Q9H,IAAAA,EAAO,KAAKP,QAAU,6CAC1B,GAAI8H,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EAG/D,GAFSsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KAC5DqG,IAAa,KACP,MAAA,IAAI3N,MAAM,0CAA0C,EACrD2N,IAAa1N,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKyN,CAAQ,EAAI,KAC5BC,GAAiB,OAC/C7N,GAAQ,gBAAkBG,mBAAmB,GAAK0N,CAAY,EAAI,KACnCC,GAAkB,OACjD9N,GAAQ,iBAAmBG,mBAAmB,GAAK2N,CAAa,EAAI,KACzBhG,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACqN,+BAA+BrN,CAAS,CACvD,CACL,CAEUqN,+BAA+BnN,EAA+C,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEAyO,6BAA6BvM,EAAuD,CAC5EzB,IAAAA,EAAO,KAAKP,QAAU,iDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACuN,oCAAoCvN,CAAS,CAC5D,CACL,CAEUuN,oCAAoCrN,EAAyD,CACnG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEA2O,sBAAsBtG,EAA0BL,EAA+B4G,EAAkCrG,EAAkF,CAC3L9H,IAAAA,EAAO,KAAKP,QAAU,2CAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EAG/D,GAFSsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KAC5D4G,IAAgB,eACNlO,MAAM,6CAA6C,EACxDkO,IAAgBjO,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAKgO,CAAW,EAAI,KACrBrG,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC0N,6BAA6B1N,CAAS,CACrD,CACL,CAEU0N,6BAA6BxN,EAA+C,CAClF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEA6S,iCAAiC3Q,EAAuD,CAChFzB,IAAAA,EAAO,KAAKP,QAAU,qDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK2R,wCAAwC3R,CAAS,CAChE,CACL,CAEU2R,wCAAwCzR,EAAyD,CACvG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEA+S,0BAA0B1K,EAA0BL,EAA+BO,EAAkF,CAC7J9H,IAAAA,EAAO,KAAKP,QAAU,+CAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC6R,iCAAiC7R,CAAS,CACzD,CACL,CAEU6R,iCAAiC3R,EAA+C,CACtF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEAiT,0BAA0B/Q,EAAuD,CACzEzB,IAAAA,EAAO,KAAKP,QAAU,8CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK+R,iCAAiC/R,CAAS,CACzD,CACL,CAEU+R,iCAAiC7R,EAAyD,CAChG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAY,CACnE,CAEAmT,mBAAmB9K,EAA0B+K,EAAkCC,EAAiCC,EAAsCtL,EAA+BO,EAAkF,CAC/P9H,IAAAA,EAAO,KAAKP,QAAU,wCAC1B,GAAIkT,IAAiB,KACX,MAAA,IAAI1S,MAAM,8CAA8C,EAGlE,GAFS0S,IAAiBzS,SACtBF,GAAQ,gBAAkBG,mBAAmB,GAAKwS,CAAY,EAAI,KAClEC,IAAgB,KACN,MAAA,IAAA3S,MAAM,6CAA6C,EAGjE,GAFS2S,IAAgB1S,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAKyS,CAAW,EAAI,KAChEC,IAAgB,KACV,MAAA,IAAI5S,MAAM,6CAA6C,EAGjE,GAFS4S,IAAgB3S,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAK0S,CAAW,EAAI,KAChEtL,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKoS,0BAA0BpS,CAAS,CAClD,CACL,CAEUoS,0BAA0BlS,EAA+C,CAC/E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEAwT,sBAAsBtR,EAAuD,CACrEzB,IAAAA,EAAO,KAAKP,QAAU,0CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKsS,6BAA6BtS,CAAS,CACrD,CACL,CAEUsS,6BAA6BpS,EAAyD,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,KACvD,CAEA0T,eAAevJ,EAAqEwJ,EAAkD3L,EAA+BO,EAAkF,CAC/O9H,IAAAA,EAAO,KAAKP,QAAU,oCAG1B,GAF0CyT,GAAyB,OAC/DlT,GAAQ,wBAA0BG,mBAAmB,GAAK+S,CAAoB,EAAI,KAClF3L,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKyS,sBAAsBzS,CAAS,CAC9C,CACL,CAEUyS,sBAAsBvS,EAA+C,CAC3E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CACJ,CAuBa,MAAA6T,kCAAkCrU,aAAoD,CAK/FC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEA6H,qBAAqBC,EAAiD,CAC9DvH,IAAAA,EAAO,KAAKP,QAAU,iDAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACzDvH,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8G,4BAA4B9G,CAAS,CACpD,CACL,CAEU8G,4BAA4B5G,EAAsC,CACxE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEA8T,6BAA6B5R,EAAgE,CACrFzB,IAAAA,EAAO,KAAKP,QAAU,wDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC4S,oCAAoC5S,CAAS,CAC5D,CACL,CAEU4S,oCAAoC1S,EAAyD,CACnG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAgU,sBAAsB3L,EAA0BL,EAA+BO,EAAkF,CACzJ9H,IAAAA,EAAO,KAAKP,QAAU,kDAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8S,6BAA6B9S,CAAS,CACrD,CACL,CAEU8S,6BAA6B5S,EAA+C,CAClF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEA8O,8BAA8B5M,EAA2BwK,EAAiF,CAClIjM,IAAAA,EAAO,KAAKP,QAAU,0DAC1B,GAAIwM,IAA0B,KACpB,MAAA,IAAIhM,MAAM,uDAAuD,EAClEgM,IAA0B/L,SAC/BF,GAAQ,yBAA2BG,mBAAmB,GAAK8L,CAAqB,EAAI,KACjFjM,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC4N,qCAAqC5N,CAAS,CAC7D,CACL,CAEU4N,qCAAqC1N,EAAyD,CACpG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEAgP,uBAAuB7E,EAA+EuC,EAA4C1E,EAA+BO,EAAkF,CAC3P9H,IAAAA,EAAO,KAAKP,QAAU,mDAC1B,GAAIwM,IAA0B,KACpB,MAAA,IAAIhM,MAAM,uDAAuD,EAG3E,GAFSgM,IAA0B/L,SAC/BF,GAAQ,yBAA2BG,mBAAmB,GAAK8L,CAAqB,EAAI,KACpF1E,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8N,8BAA8B9N,CAAS,CACtD,CACL,CAEU8N,8BAA8B5N,EAA+C,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEAkP,4BAA4BhN,EAAgE,CACpFzB,IAAAA,EAAO,KAAKP,QAAU,uDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKgO,mCAAmChO,CAAS,CAC3D,CACL,CAEUgO,mCAAmC9N,EAAyD,CAClG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,KACvD,CAEAoP,qBAAqBjF,EAAyDnC,EAA+BO,EAAuD8G,EAAyE,CACrO5O,IAAAA,EAAO,KAAKP,QAAU,iDAC1B,GAAI8H,IAAc,KACR,MAAA,IAAItH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KAC1D8G,GAAqB,OACvD5O,GAAQ,oBAAsBG,mBAAmB,GAAKyO,CAAgB,EAAI,KACvE5O,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKmO,4BAA4BnO,CAAS,CACpD,CACL,CAEUmO,4BAA4BjO,EAA+C,CACjF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEAqK,uBAAuBnI,EAAgE,CAC/EzB,IAAAA,EAAO,KAAKP,QAAU,kDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACmJ,8BAA8BnJ,CAAS,CACtD,CACL,CAEUmJ,8BAA8BjJ,EAAyD,CAC7F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAY,CACnE,CAEAuK,gBAAgBlC,EAA0BmC,EAAgCC,EAA2CC,EAA2CC,EAA6CC,EAAmC5C,EAA+BO,EAAkF,CACzV9H,IAAAA,EAAO,KAAKP,QAAU,4CAC1B,GAAIsK,IAAe,KACL,MAAA,IAAA9J,MAAM,4CAA4C,EAWhE,GAVS8J,IAAe7J,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAK4J,CAAU,EAAI,KAC9BC,GAAmB,OACnDhK,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACtCC,GAAmB,OACnDjK,GAAQ,kBAAoBG,mBAAmB,GAAK8J,CAAc,EAAI,KACrCC,GAAoB,OACrDlK,GAAQ,mBAAqBG,mBAAmB,GAAK+J,CAAe,EAAI,KAChDC,GAAW,OACnCnK,GAAQ,UAAYG,mBAAmB,GAAKgK,CAAM,EAAI,KACtD5C,IAAc,KACJ,MAAA,IAAAtH,MAAM,2CAA2C,EACtDsH,IAAcrH,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKoH,CAAS,EAAI,KACjBO,GAA8B,OACzE9H,GAAQ,6BAA+BG,mBAAmB,GAAK2H,CAAyB,EAAI,KACzF9H,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiG,CAAO,EAInCtH,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK0J,uBAAuB1J,CAAS,CAC/C,CACL,CAEU0J,uBAAuBxJ,EAA+C,CAC5E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CACJ,CAiBO,MAAMkU,8BAA8B1U,aAAgD,CAKvFC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAiU,eAAeC,EAA0BC,EAAoCC,EAAmBC,EAAmCC,EAAwCC,EAAyE,CAC5OhU,IAAAA,EAAO,KAAKP,QAAU,uCAC1B,GAAIkU,IAAS,KACC,MAAA,IAAA1T,MAAM,sCAAsC,EAG1D,GAFS0T,IAASzT,SACdF,GAAQ,QAAUG,mBAAmB,GAAKwT,CAAI,EAAI,KAClDC,IAAU,KACJ,MAAA,IAAI3T,MAAM,uCAAuC,EAG3D,GAFS2T,IAAU1T,SACfF,GAAQ,SAAWG,mBAAmB,GAAKyT,CAAK,EAAI,KACpDE,IAAkB,KACR,MAAA,IAAA7T,MAAM,+CAA+C,EAKnE,GAJS6T,IAAkB5T,SACvBF,GAAQ,iBAAmBG,mBAAmB,GAAK2T,CAAa,EAAI,KACvCC,GAAgB,OAC7C/T,GAAQ,eAAiBG,mBAAmB,GAAK4T,CAAW,EAAI,KAChEC,IAAiB,KACP,MAAA,IAAA/T,MAAM,8CAA8C,EACzD+T,IAAiB9T,SACtBF,GAAQ,gBAAkBG,mBAAmB,GAAK6T,CAAY,EAAI,KAC/DhU,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUkS,CAAM,EAIlCvT,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKuT,sBAAsBvT,CAAS,CAC9C,CACL,CAEUuT,sBAAsBrT,EAA2D,CACvF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsC,IAAY,CACrE,CAEA2U,cAAcC,EAAqE,CAC3EnU,IAAAA,EAAO,KAAKP,QAAU,qCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUwS,CAAO,EAInC7T,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC0T,qBAAqB1T,CAAS,CAC7C,CACL,CAEU0T,qBAAqBxT,EAA0D,CACrF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAqC,IAAW,CACnE,CAEA8U,gBAAgBC,EAAwE,CAChFtU,IAAAA,EAAO,KAAKP,QAAU,wCAC1B,GAAI6U,IAAe,KACT,MAAA,IAAIrU,MAAM,4CAA4C,EACvDqU,IAAepU,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKmU,CAAU,EAAI,KAC3DtU,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC6T,uBAAuB7T,CAAS,CAC/C,CACL,CAEU6T,uBAAuB3T,EAA4D,CACzF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuC,IAAW,CACrE,CAEAiV,eAAeC,EAAsE,CAC7EzU,IAAAA,EAAO,KAAKP,QAAU,uCAC1B,GAAIgV,IAAc,KACR,MAAA,IAAIxU,MAAM,2CAA2C,EACtDwU,IAAcvU,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKsU,CAAS,EAAI,KACzDzU,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKgU,sBAAsBhU,CAAS,CAC9C,CACL,CAEUgU,sBAAsB9T,EAA2D,CACvF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsC,IAAY,CACrE,CAEAoV,kBAAkBL,EAAoE,CAC9EtU,IAAAA,EAAO,KAAKP,QAAU,0CACM6U,GAAe,OAC3CtU,GAAQ,cAAgBG,mBAAmB,GAAKmU,CAAU,EAAI,KAC3DtU,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACkU,yBAAyBlU,CAAS,CACjD,CACL,CAEUkU,yBAAyBhU,EAAiD,CAChF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA4B,IAAY,CAC3D,CAEAsV,iBAAiBP,EAAgCG,EAA0D,CACnGzU,IAAAA,EAAO,KAAKP,QAAU,yCAC1B,GAAI6U,IAAe,KACL,MAAA,IAAArU,MAAM,4CAA4C,EACvDqU,IAAepU,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKmU,CAAU,EAAI,KACnCG,GAAc,OACzCzU,GAAQ,aAAeG,mBAAmB,GAAKsU,CAAS,EAAI,KACzDzU,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKoU,wBAAwBpU,CAAS,CAChD,CACL,CAEUoU,wBAAwBlU,EAAwC,CACtE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAmB,IAAW,CACjD,CACJ,CAgEO,MAAMwV,sBAAsBhW,aAAwC,CAKvEC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAuV,mBAAmBvT,EAAkBwT,EAA6D,CAC1FjV,IAAAA,EAAO,KAAKP,QAAU,mCAC1B,GAAIwV,IAAkB,eACRhV,MAAM,+CAA+C,EAC1DgV,IAAkB/U,SACvBF,GAAQ,iBAAmBG,mBAAmB,GAAK8U,CAAa,EAAI,KACjEjV,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACwU,0BAA0BxU,CAAS,CAClD,CACL,CAEUwU,0BAA0BtU,EAA6C,CAC7E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,IAAW,CACtD,CAEA4V,4BAA4B1T,EAA2BwT,EAA6D,CAC5GjV,IAAAA,EAAO,KAAKP,QAAU,4CAC1B,GAAIwV,IAAkB,KACZ,MAAA,IAAIhV,MAAM,+CAA+C,EAC1DgV,IAAkB/U,SACvBF,GAAQ,iBAAmBG,mBAAmB,GAAK8U,CAAa,EAAI,KACjEjV,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK0U,mCAAmC1U,CAAS,CAC3D,CACL,CAEU0U,mCAAmCxU,EAA6C,CACtF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,IAAW,CACtD,CAEA8V,0BAA0B5P,EAAyC,CAC3DzF,IAAAA,EAAO,KAAKP,QAAU,yCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU8D,CAAM,EAIlCnF,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC4U,iCAAiC5U,CAAS,CACzD,CACL,CAEU4U,iCAAiC1U,EAA6C,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,IAAY,CACvD,CAEAgW,oBAAoBC,EAA4C,CACxDxV,IAAAA,EAAO,KAAKP,QAAU,mCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU6T,CAAO,EAInClV,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO+U,2BAA2B/U,CAAS,CACnD,CACL,CAEU+U,2BAA2B7U,EAA6C,CAC9E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,IAAY,CACvD,CAEAmW,sBAAsBjU,EAAsD,CACpEzB,IAAAA,EAAO,KAAKP,QAAU,qCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACiV,6BAA6BjV,CAAS,CACrD,CACL,CAEUiV,6BAA6B/U,EAAwD,CAC3F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAmC,IAAW,CACjE,CAEAqW,6BAA6BnU,EAAsE,CAC3FzB,IAAAA,EAAO,KAAKP,QAAU,4CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKmV,oCAAoCnV,CAAS,CAC5D,CACL,CAEUmV,oCAAoCjV,EAA+D,CACzG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0C,IAAW,CACxE,CAKAuW,8BAA4D,CACpD9V,IAAAA,EAAO,KAAKP,QAAU,4CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKqV,oCAAoCrV,CAAS,CAC5D,CACL,CAEUqV,oCAAoCnV,EAAiD,CAC3F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA4B,IAAW,CAC1D,CAEAyW,aAAavU,EAAkD,CACvDzB,IAAAA,EAAO,KAAKP,QAAU,4BACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACuV,oBAAoBvV,CAAS,CAC5C,CACL,CAEUuV,oBAAoBrV,EAA6C,CACvE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,IAAY,CACvD,CAEA2W,kCAAkCC,EAAgCC,EAAqCC,EAAwD,CACvJrW,IAAAA,EAAO,KAAKP,QAAU,kDAC1B,GAAI0W,IAAe,KACT,MAAA,IAAIlW,MAAM,4CAA4C,EACvDkW,IAAejW,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKgW,CAAU,EAAI,KACpCC,GAAa,OACvCpW,GAAQ,YAAcG,mBAAmB,GAAKiW,CAAQ,EAAI,KACvDpW,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU0U,CAAS,EAIrC/V,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK4V,yCAAyC5V,CAAS,CACjE,CACL,CAEU4V,yCAAyC1V,EAA6C,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,IAAY,CACvD,CAEAgX,qBAAqB9U,EAAqBwT,EAA6D,CAC/FjV,IAAAA,EAAO,KAAKP,QAAU,qCAC1B,GAAIwV,IAAkB,eACRhV,MAAM,+CAA+C,EAC1DgV,IAAkB/U,SACvBF,GAAQ,iBAAmBG,mBAAmB,GAAK8U,CAAa,EAAI,KACjEjV,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8V,4BAA4B9V,CAAS,CACpD,CACL,CAEU8V,4BAA4B5V,EAA6C,CAC/E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,IAAY,CACvD,CAEAkX,gCAAgCjU,EAA4C,CACpExC,IAAAA,EAAO,KAAKP,QAAU,+CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUa,CAAS,EAIrClC,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACgW,uCAAuChW,CAAS,CAC/D,CACL,CAEUgW,uCAAuC9V,EAA6C,CAC1F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,IAAY,CACvD,CAEAoX,yBAAyBlV,EAA4D,CAC7EzB,IAAAA,EAAO,KAAKP,QAAU,wCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACkW,gCAAgClW,CAAS,CACxD,CACL,CAEUkW,gCAAgChW,EAA2D,CACjG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsC,IAAY,CACrE,CAEAsX,+BAA+BpV,EAA4D,CACnFzB,IAAAA,EAAO,KAAKP,QAAU,8CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACoW,sCAAsCpW,CAAS,CAC9D,CACL,CAEUoW,sCAAsClW,EAA2D,CACvG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsC,IAAW,CACpE,CAEAwX,6BAA6BC,EAA4D,CACjFhX,IAAAA,EAAO,KAAKP,QAAU,4CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUqV,CAAU,EAItC1W,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACuW,oCAAoCvW,CAAS,CAC5D,CACL,CAEUuW,oCAAoCrW,EAA6C,CACvF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,IAAY,CACvD,CAEA2X,uBAAiD,CACzClX,IAAAA,EAAO,KAAKP,QAAU,qCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKyW,6BAA6BzW,CAAS,CACrD,CACL,CAEUyW,6BAA6BvW,EAA6C,CAChF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,IAAW,CACtD,CAEA6X,oBAAoBjD,EAA8E,CAC1FnU,IAAAA,EAAO,KAAKP,QAAU,mCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUwS,CAAO,EAInC7T,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK2W,2BAA2B3W,CAAS,CACnD,CACL,CAEU2W,2BAA2BzW,EAAoE,CACrG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA+C,IAAW,CAC7E,CAEA+X,8BAA+D,CACvDtX,IAAAA,EAAO,KAAKP,QAAU,4CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC6W,oCAAoC7W,CAAS,CAC5D,CACL,CAEU6W,oCAAoC3W,EAAoD,CAC9F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA+B,IAAY,CAC9D,CAEAiY,0BAA0B/V,EAAkD,CACpEzB,IAAAA,EAAO,KAAKP,QAAU,yCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC+W,iCAAiC/W,CAAS,CACzD,CACL,CAEU+W,iCAAiC7W,EAA6C,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,IAAY,CACvD,CAEAmY,6BAA6BjW,EAAwD,CAC7EzB,IAAAA,EAAO,KAAKP,QAAU,4CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACiX,oCAAoCjX,CAAS,CAC5D,CACL,CAEUiX,oCAAoC/W,EAAmD,CAC7F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA8B,IAAY,CAC7D,CAEAqY,mBAAmBnW,EAAkD,CAC7DzB,IAAAA,EAAO,KAAKP,QAAU,kCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACmX,0BAA0BnX,CAAS,CAClD,CACL,CAEUmX,0BAA0BjX,EAA6C,CAC7E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,IAAY,CACvD,CAEAuY,WAAWC,EAAsD,CACzD/X,IAAAA,EAAO,KAAKP,QAAU,0BACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUoW,CAAiB,EAI7CzX,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACsX,kBAAkBtX,CAAS,CAC1C,CACL,CAEUsX,kBAAkBpX,EAA6C,CACrE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,IAAY,CACvD,CAEA0Y,wBAAwBxW,EAA0C,CAC1DzB,IAAAA,EAAO,KAAKP,QAAU,uCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACwX,+BAA+BxX,CAAS,CACvD,CACL,CAEUwX,+BAA+BtX,EAA4C,CACjF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAY,CACtD,CAEA4Y,iCAAiC1W,EAAmD,CAC5EzB,IAAAA,EAAO,KAAKP,QAAU,gDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK0X,wCAAwC1X,CAAS,CAChE,CACL,CAEU0X,wCAAwCxX,EAA4C,CAC1F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAY,CACtD,CAEA8Y,2BAA2B5W,EAA6C,CAChEzB,IAAAA,EAAO,KAAKP,QAAU,0CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO4X,kCAAkC5X,CAAS,CAC1D,CACL,CAEU4X,kCAAkC1X,EAA4C,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAW,CACrD,CAEAgZ,iCAAiC9W,EAA2B+W,EAAkF,CACtIxY,IAAAA,EAAO,KAAKP,QAAU,iDACM+Y,GAAe,OAC3CxY,GAAQ,cAAgBG,mBAAmB,GAAKqY,CAAU,EAAI,KAC3DxY,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK+X,wCAAwC/X,CAAS,CAChE,CACL,CAEU+X,wCAAwC7X,EAA+D,CAC7G,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0C,IAAW,CACxE,CAEAmZ,0BAA0BjX,EAAkB+W,EAA2E,CAC/GxY,IAAAA,EAAO,KAAKP,QAAU,0CACM+Y,GAAe,OAC3CxY,GAAQ,cAAgBG,mBAAmB,GAAKqY,CAAU,EAAI,KAC3DxY,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACiY,iCAAiCjY,CAAS,CACzD,CACL,CAEUiY,iCAAiC/X,EAAwD,CAC/F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAmC,IAAW,CACjE,CAEAqZ,6BAA6BnX,EAAqB+W,EAA8E,CACxHxY,IAAAA,EAAO,KAAKP,QAAU,6CACM+Y,GAAe,OAC3CxY,GAAQ,cAAgBG,mBAAmB,GAAKqY,CAAU,EAAI,KAC3DxY,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKmY,oCAAoCnY,CAAS,CAC5D,CACL,CAEUmY,oCAAoCjY,EAA2D,CACrG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsC,IAAW,CACpE,CAEAuZ,qCAAqCrX,EAAqB+W,EAA8E,CAChIxY,IAAAA,EAAO,KAAKP,QAAU,qDACM+Y,GAAe,OAC3CxY,GAAQ,cAAgBG,mBAAmB,GAAKqY,CAAU,EAAI,KAC3DxY,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKqY,4CAA4CrY,CAAS,CACpE,CACL,CAEUqY,4CAA4CnY,EAA2D,CAC7G,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsC,IAAY,CACrE,CACJ,CAOO,MAAMyZ,wBAAwBja,aAA0C,CAK3EC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAwZ,IAAIC,EAAgD,CAC5ClZ,IAAAA,EAAO,KAAKP,QAAU,qBACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUuX,CAAU,EAItC5Y,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKyY,WAAWzY,CAAS,CACnC,CACL,CAEUyY,WAAWvY,EAAsC,CACvD,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CACJ,CAOO,MAAM6Z,sBAAsBra,aAAwC,CAKvEC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEA4Z,mBAA8D,CACtDrZ,IAAAA,EAAO,KAAKP,QAAU,iCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK4Y,yBAAyB5Y,CAAS,CACjD,CACL,CAEU4Y,yBAAyB1Y,EAA8D,CAC7F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAyC,IAAY,CACxE,CACJ,CA6BO,MAAMga,gCAAgCxa,aAAkD,CAK3FC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEA+Z,sBAAsB1Z,EAA8B8C,EAAwC6W,EAA8D,CAClJzZ,IAAAA,EAAO,KAAKP,QAAU,gDAC1B,GAAIK,IAAa,KACP,MAAA,IAAIG,MAAM,0CAA0C,EAG9D,GAFSH,IAAaI,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKL,CAAQ,EAAI,KAC1D8C,IAAiB,KACX,MAAA,IAAI3C,MAAM,8CAA8C,EAGlE,GAFS2C,IAAiB1C,SACtBF,GAAQ,gBAAkBG,mBAAmB,GAAKyC,CAAY,EAAI,KAClE6W,IAAgB,eACNxZ,MAAM,6CAA6C,EACxDwZ,IAAgBvZ,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAKsZ,CAAW,EAAI,KAC7DzZ,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACgZ,6BAA6BhZ,CAAS,CACrD,CACL,CAEUgZ,6BAA6B9Y,EAAiD,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA4B,IAAY,CAC3D,CAEAoa,sBAAsB7Z,EAA8BC,EAAgD6C,EAAwCgX,EAA8BjX,EAAgC8W,EAAiCvI,EAAuD,CAC1RlR,IAAAA,EAAO,KAAKP,QAAU,gDAC1B,GAAIK,IAAa,KACP,MAAA,IAAIG,MAAM,0CAA0C,EAG9D,GAFSH,IAAaI,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKL,CAAQ,EAAI,KAC1DC,IAAe,KACT,MAAA,IAAIE,MAAM,4CAA4C,EAGhE,GAFSF,IAAeG,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKJ,CAAU,EAAI,KAC9D6C,IAAiB,KACX,MAAA,IAAI3C,MAAM,8CAA8C,EAGlE,GAFS2C,IAAiB1C,SACtBF,GAAQ,gBAAkBG,mBAAmB,GAAKyC,CAAY,EAAI,KAClEgX,IAAa,KACP,MAAA,IAAI3Z,MAAM,0CAA0C,EAG9D,GAFS2Z,IAAa1Z,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKyZ,CAAQ,EAAI,KAC1DjX,IAAe,KACT,MAAA,IAAI1C,MAAM,4CAA4C,EAGhE,GAFS0C,IAAezC,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKwC,CAAU,EAAI,KAC9D8W,IAAgB,KACV,MAAA,IAAIxZ,MAAM,6CAA6C,EACxDwZ,IAAgBvZ,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAKsZ,CAAW,EAAI,KAC7DzZ,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAEzB+Q,MAAAA,EAAW,IAAIC,SACjBF,GAAS,MACAG,EAAAA,OAAO,OAAQH,EAAKI,KAAMJ,EAAKK,SAAWL,EAAKK,SAAW,MAAM,EAEzElR,IAAAA,EAAwB,CACxBqB,KAAMyP,EACN7Q,OAAQ,OACRlB,QAAS,CAAA,GAIb,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACmZ,6BAA6BnZ,CAAS,CACrD,CACL,CAEUmZ,6BAA6BjZ,EAAmC,CACtE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,CACC,EACMN,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAc,IAAW,CAC5C,CAEAua,yBAAyBha,EAA8BC,EAAgD6C,EAAwCgX,EAA8BjX,EAAgC8W,EAAiCvI,EAAuD,CAC7RlR,IAAAA,EAAO,KAAKP,QAAU,mDAC1B,GAAIK,IAAa,KACP,MAAA,IAAIG,MAAM,0CAA0C,EAG9D,GAFSH,IAAaI,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKL,CAAQ,EAAI,KAC1DC,IAAe,KACT,MAAA,IAAIE,MAAM,4CAA4C,EAGhE,GAFSF,IAAeG,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKJ,CAAU,EAAI,KAC9D6C,IAAiB,KACX,MAAA,IAAI3C,MAAM,8CAA8C,EAGlE,GAFS2C,IAAiB1C,SACtBF,GAAQ,gBAAkBG,mBAAmB,GAAKyC,CAAY,EAAI,KAClEgX,IAAa,KACP,MAAA,IAAI3Z,MAAM,0CAA0C,EAG9D,GAFS2Z,IAAa1Z,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKyZ,CAAQ,EAAI,KAC1DjX,IAAe,KACT,MAAA,IAAI1C,MAAM,4CAA4C,EAGhE,GAFS0C,IAAezC,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKwC,CAAU,EAAI,KAC9D8W,IAAgB,eACNxZ,MAAM,6CAA6C,EACxDwZ,IAAgBvZ,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAKsZ,CAAW,EAAI,KAC7DzZ,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAEzB+Q,MAAAA,EAAW,IAAIC,SACjBF,GAAS,MACAG,EAAAA,OAAO,OAAQH,EAAKI,KAAMJ,EAAKK,SAAWL,EAAKK,SAAW,MAAM,EAEzElR,IAAAA,EAAwB,CACxBqB,KAAMyP,EACN7Q,OAAQ,OACRlB,QAAS,CAAA,GAIb,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKqZ,gCAAgCrZ,CAAS,CACxD,CACL,CAEUqZ,gCAAgCnZ,EAAmC,CACzE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,CACC,EACMN,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAc,IAAW,CAC5C,CAEAya,gCAAgCla,EAA8BC,EAAgD6C,EAAwCgX,EAA8BjX,EAAgC8W,EAAiCvI,EAA+F,CAC5UlR,IAAAA,EAAO,KAAKP,QAAU,0DAC1B,GAAIK,IAAa,KACH,MAAA,IAAAG,MAAM,0CAA0C,EAG9D,GAFSH,IAAaI,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKL,CAAQ,EAAI,KAC1DC,IAAe,KACL,MAAA,IAAAE,MAAM,4CAA4C,EAGhE,GAFSF,IAAeG,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKJ,CAAU,EAAI,KAC9D6C,IAAiB,KACP,MAAA,IAAA3C,MAAM,8CAA8C,EAGlE,GAFS2C,IAAiB1C,SACtBF,GAAQ,gBAAkBG,mBAAmB,GAAKyC,CAAY,EAAI,KAClEgX,IAAa,KACP,MAAA,IAAI3Z,MAAM,0CAA0C,EAG9D,GAFS2Z,IAAa1Z,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKyZ,CAAQ,EAAI,KAC1DjX,IAAe,KACT,MAAA,IAAI1C,MAAM,4CAA4C,EAGhE,GAFS0C,IAAezC,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKwC,CAAU,EAAI,KAC9D8W,IAAgB,KACV,MAAA,IAAIxZ,MAAM,6CAA6C,EACxDwZ,IAAgBvZ,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAKsZ,CAAW,EAAI,KAC7DzZ,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAEzB+Q,MAAAA,EAAW,IAAIC,SACjBF,GAAS,MACAG,EAAAA,OAAO,OAAQH,EAAKI,KAAMJ,EAAKK,SAAWL,EAAKK,SAAW,MAAM,EAEzElR,IAAAA,EAAwB,CACxBqB,KAAMyP,EACN7Q,OAAQ,OACRlB,QAAS,CACL,OAAU,kBAAA,GAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKuZ,uCAAuCvZ,CAAS,CAC/D,CACL,CAEUuZ,uCAAuCrZ,EAA2E,CACxH,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsD,IAAW,CACpF,CAgBA2a,iBAAiBpa,EAA8BC,EAAgD6C,EAAwCgX,EAA8BjX,EAAgC8W,EAA0D,CACvPzZ,IAAAA,EAAO,KAAKP,QAAU,2CAC1B,GAAIK,IAAa,KACH,MAAA,IAAAG,MAAM,0CAA0C,EAG9D,GAFSH,IAAaI,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKL,CAAQ,EAAI,KAC1DC,IAAe,KACL,MAAA,IAAAE,MAAM,4CAA4C,EAGhE,GAFSF,IAAeG,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKJ,CAAU,EAAI,KAC9D6C,IAAiB,eACP3C,MAAM,8CAA8C,EAGlE,GAFS2C,IAAiB1C,SACtBF,GAAQ,gBAAkBG,mBAAmB,GAAKyC,CAAY,EAAI,KAClEgX,IAAa,KACH,MAAA,IAAA3Z,MAAM,0CAA0C,EAG9D,GAFS2Z,IAAa1Z,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKyZ,CAAQ,EAAI,KAC1DjX,IAAe,KACL,MAAA,IAAA1C,MAAM,4CAA4C,EAGhE,GAFS0C,IAAezC,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKwC,CAAU,EAAI,KAC9D8W,IAAgB,eACNxZ,MAAM,6CAA6C,EACxDwZ,IAAgBvZ,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAKsZ,CAAW,EAAI,KAC7DzZ,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACyZ,wBAAwBzZ,CAAS,CAChD,CACL,CAEUyZ,wBAAwBvZ,EAA6C,CAC3E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIiZ,EAAiB,KACrBA,OAAAA,EAAYjZ,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFya,CAAAA,CACN,EACMvZ,IAAW,IACXD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIkZ,EAAiB,KACrBA,OAAAA,EAAYlZ,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClF0a,CAAAA,CACN,EACMxZ,IAAW,IACXD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,IACXD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,gCAAiCV,EAAQM,EAAeL,CAAQ,CACrF,EACMD,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,IAAW,CACtD,CACJ,CAuCa,MAAA+a,0BAA0Bvb,aAA4C,CAK/EC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEA8a,oBAAoBC,EAAoD,CAChExa,IAAAA,EAAO,KAAKP,QAAU,wCAC1B,GAAI+a,IAAY,KACN,MAAA,IAAIva,MAAM,yCAAyC,EACpDua,IAAYta,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKqa,CAAO,EAAI,KACrDxa,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO+Z,2BAA2B/Z,CAAS,CACnD,CACL,CAEU+Z,2BAA2B7Z,EAA2C,CAC5E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsB,IAAY,CACrD,CAEAmb,iCAAiCF,EAA4F,CACrHxa,IAAAA,EAAO,KAAKP,QAAU,qDAC1B,GAAI+a,IAAY,KACN,MAAA,IAAIva,MAAM,yCAAyC,EACpDua,IAAYta,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKqa,CAAO,EAAI,KACrDxa,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACia,wCAAwCja,CAAS,CAChE,CACL,CAEUia,wCAAwC/Z,EAAmF,CACjI,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA8D,IAAW,CAC5F,CAEAqb,+BAA+BC,EAAwD,CAC/E7a,IAAAA,EAAO,KAAKP,QAAU,kDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUkZ,CAAQ,EAIpCva,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACoa,sCAAsCpa,CAAS,CAC9D,CACL,CAEUoa,sCAAsCla,EAAwD,CACpG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAmC,IAAW,CACjE,CAEAwb,mCAAmC/Q,EAA2CC,EAAuF,CAC7JjK,IAAAA,EAAO,KAAKP,QAAU,uDACUuK,GAAmB,OACnDhK,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACtCC,GAAmB,OACnDjK,GAAQ,kBAAoBG,mBAAmB,GAAK8J,CAAc,EAAI,KACnEjK,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOsa,0CAA0Cta,CAAS,CAClE,CACL,CAEUsa,0CAA0Cpa,EAAgE,CAChH,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2C,IAAY,CAC1E,CAEA0b,uCAAuCC,EAA4E,CAC3Glb,IAAAA,EAAO,KAAKP,QAAU,0DACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUuZ,CAAqB,EAIjD5a,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKya,8CAA8Cza,CAAS,CACtE,CACL,CAEUya,8CAA8Cva,EAAsC,CAC1F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEA6b,gBAAgBC,EAAsD,CAC9Drb,IAAAA,EAAO,KAAKP,QAAU,oCAC1B,GAAI4b,IAAqB,KACf,MAAA,IAAIpb,MAAM,kDAAkD,EAC7Dob,IAAqBnb,SAC1BF,GAAQ,oBAAsBG,mBAAmB,GAAKkb,CAAgB,EAAI,KACvErb,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC4a,uBAAuB5a,CAAS,CAC/C,CACL,CAEU4a,uBAAuB1a,EAAoC,CACjE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAe,IAAW,CAC7C,CAEAgc,8BAA8BvR,EAAoCwR,EAAwD,CAClHxb,IAAAA,EAAO,KAAKP,QAAU,kDAC1B,GAAIuK,IAAmB,KACT,MAAA,IAAA/J,MAAM,gDAAgD,EAGpE,GAFS+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACtEwR,IAAS,KACC,MAAA,IAAAvb,MAAM,sCAAsC,EACjDub,IAAStb,SACdF,GAAQ,QAAUG,mBAAmB,GAAKqb,CAAI,EAAI,KAC/Cxb,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC+a,qCAAqC/a,CAAS,CAC7D,CACL,CAEU+a,qCAAqC7a,EAAkD,CAC7F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA6B,IAAY,CAC5D,CAEAmc,mBAAmBL,EAAsCM,EAA+B,CAChF3b,IAAAA,EAAO,KAAKP,QAAU,uCAC1B,GAAI4b,IAAqB,KACf,MAAA,IAAIpb,MAAM,kDAAkD,EAC7Dob,IAAqBnb,SAC1BF,GAAQ,oBAAsBG,mBAAmB,GAAKkb,CAAgB,EAAI,KACvErb,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUga,CAAI,EAIhCrb,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACkb,0BAA0Blb,CAAS,CAClD,CACL,CAEUkb,0BAA0Bhb,EAAsC,CACtE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAsc,yBAAyBR,EAAuD,CACxErb,IAAAA,EAAO,KAAKP,QAAU,6CAC1B,GAAI4b,IAAqB,eACXpb,MAAM,kDAAkD,EAC7Dob,IAAqBnb,SAC1BF,GAAQ,oBAAsBG,mBAAmB,GAAKkb,CAAgB,EAAI,KACvErb,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACob,gCAAgCpb,CAAS,CACxD,CACL,CAEUob,gCAAgClb,EAAqC,CAC3E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgB,IAAW,CAC9C,CAEAwc,4BAA4BV,EAAsCW,EAAwC,CAClGhc,IAAAA,EAAO,KAAKP,QAAU,gDAC1B,GAAI4b,IAAqB,KACX,MAAA,IAAApb,MAAM,kDAAkD,EAC7Dob,IAAqBnb,SAC1BF,GAAQ,oBAAsBG,mBAAmB,GAAKkb,CAAgB,EAAI,KACvErb,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUqa,CAAY,EAIxC1b,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKub,mCAAmCvb,CAAS,CAC3D,CACL,CAEUub,mCAAmCrb,EAAsC,CAC/E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEA2c,iCAAiCnE,EAAkE,CAC3F/X,IAAAA,EAAO,KAAKP,QAAU,oDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUoW,CAAiB,EAI7CzX,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOyb,wCAAwCzb,CAAS,CAChE,CACL,CAEUyb,wCAAwCvb,EAAyD,CACvG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAY,CACnE,CAEA6c,mCAAmCf,EAAsCgB,EAA4D,CAC7Hrc,IAAAA,EAAO,KAAKP,QAAU,uDAC1B,GAAI4b,IAAqB,KACX,MAAA,IAAApb,MAAM,kDAAkD,EAGtE,GAFSob,IAAqBnb,SAC1BF,GAAQ,oBAAsBG,mBAAmB,GAAKkb,CAAgB,EAAI,KAC1EgB,IAAyB,KACf,MAAA,IAAApc,MAAM,sDAAsD,EACjEoc,IAAyBnc,SAC9BF,GAAQ,wBAA0BG,mBAAmB,GAAKkc,CAAoB,EAAI,KAC/Erc,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC4b,0CAA0C5b,CAAS,CAClE,CACL,CAEU4b,0CAA0C1b,EAAsC,CACtF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAgd,oCAAoCvS,EAAsE,CAClGhK,IAAAA,EAAO,KAAKP,QAAU,wDAC1B,GAAIuK,IAAmB,KACT,MAAA,IAAA/J,MAAM,gDAAgD,EAC3D+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACnEhK,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK8b,2CAA2C9b,CAAS,CACnE,CACL,CAEU8b,2CAA2C5b,EAAsD,CACvG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiC,KACpD,CAEAkd,uBAAuBzS,EAAoC0S,EAA6D,CAChH1c,IAAAA,EAAO,KAAKP,QAAU,2CAC1B,GAAIuK,IAAmB,KACb,MAAA,IAAI/J,MAAM,gDAAgD,EAGpE,GAFS+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACtE0S,IAAY,KACF,MAAA,IAAAzc,MAAM,yCAAyC,EACpDyc,IAAYxc,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKuc,CAAO,EAAI,KACrD1c,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKic,8BAA8Bjc,CAAS,CACtD,CACL,CAEUic,8BAA8B/b,EAAoD,CACxF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA+B,IAAY,CAC9D,CAEAqd,iCAAiCvB,EAAsCwB,EAA2D,CAC1H7c,IAAAA,EAAO,KAAKP,QAAU,qDAC1B,GAAI4b,IAAqB,KACX,MAAA,IAAApb,MAAM,kDAAkD,EAC7Dob,IAAqBnb,SAC1BF,GAAQ,oBAAsBG,mBAAmB,GAAKkb,CAAgB,EAAI,KACvErb,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUkb,CAAe,EAI3Cvc,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOoc,wCAAwCpc,CAAS,CAChE,CACL,CAEUoc,wCAAwClc,EAAsC,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAwd,2CAA2CC,EAAyDhT,EAAsD,CAClJhK,IAAAA,EAAO,KAAKP,QAAU,oBAC1B,GAAIuK,IAAmB,KACb,MAAA,IAAI/J,MAAM,gDAAgD,EAC3D+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACnEhK,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUqb,CAA0B,EAItD1c,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACuc,kDAAkDvc,CAAS,CAC1E,CACL,CAEUuc,kDAAkDrc,EAAsC,CAC9F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEA2d,8BAA8BlT,EAA0E,CAChGhK,IAAAA,EAAO,KAAKP,QAAU,kDAC1B,GAAIuK,IAAmB,eACT/J,MAAM,gDAAgD,EAC3D+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACnEhK,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKyc,qCAAqCzc,CAAS,CAC7D,CACL,CAEUyc,qCAAqCvc,EAA0D,CACrG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAqC,KACxD,CACJ,CASO,MAAM6d,kCAAkCre,aAAoD,CAK/FC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEA4d,gCAAiE,CACzDrd,IAAAA,EAAO,KAAKP,QAAU,0DACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC4c,sCAAsC5c,CAAS,CAC9D,CACL,CAEU4c,sCAAsC1c,EAAoD,CAChG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA+B,IAAY,CAC9D,CAEAge,iCAAiCC,EAAqDC,EAAiD,CAC/Hzd,IAAAA,EAAO,KAAKP,QAAU,6DAC1B,GAAI+d,IAAoC,eAC1Bvd,MAAM,iEAAiE,EAGrF,GAFSud,IAAoCtd,SACzCF,GAAQ,mCAAqCG,mBAAmB,GAAKqd,CAA+B,EAAI,KACxGC,IAAa,KACH,MAAA,IAAAxd,MAAM,0CAA0C,EACrDwd,IAAavd,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKsd,CAAQ,EAAI,KACvDzd,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKgd,wCAAwChd,CAAS,CAChE,CACL,CAEUgd,wCAAwC9c,EAAsC,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CACJ,OAiBaoe,sCAAsC5e,aAAwD,CAKvGC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAme,uBAAuBC,EAAkCC,EAAuG,CACxJ9d,IAAAA,EAAO,KAAKP,QAAU,uDACMqe,GAAe,OAC3C9d,GAAQ,cAAgBG,mBAAmB,GAAK2d,CAAU,EAAI,KAC3D9d,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUkc,CAAO,EAInCvd,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACqd,8BAA8Brd,CAAS,CACtD,CACL,CAEUqd,8BAA8Bnd,EAA6D,CACjG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwC,IAAW,CACtE,CAEAye,sBAAsBH,EAAgE,CAC9E7d,IAAAA,EAAO,KAAKP,QAAU,qDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUkc,CAAO,EAInCvd,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACud,6BAA6Bvd,CAAS,CACrD,CACL,CAEUud,6BAA6Brd,EAAkD,CACrF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA6B,IAAY,CAC5D,CAEA2e,+BAA+BL,EAAkCC,EAA+G,CACxK9d,IAAAA,EAAO,KAAKP,QAAU,+DACMqe,GAAe,OAC3C9d,GAAQ,cAAgBG,mBAAmB,GAAK2d,CAAU,EAAI,KAC3D9d,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUkc,CAAO,EAInCvd,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKyd,sCAAsCzd,CAAS,CAC9D,CACL,CAEUyd,sCAAsCvd,EAA6D,CACzG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwC,IAAW,CACtE,CAEA6e,8BAA8BP,EAA2E,CACjG7d,IAAAA,EAAO,KAAKP,QAAU,6DACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUkc,CAAO,EAInCvd,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC2d,qCAAqC3d,CAAS,CAC7D,CACL,CAEU2d,qCAAqCzd,EAA6D,CACxG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwC,IAAW,CACtE,CAEA+e,8BAA8BT,EAAyE,CAC/F7d,IAAAA,EAAO,KAAKP,QAAU,6DACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUkc,CAAO,EAInCvd,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO6d,qCAAqC7d,CAAS,CAC7D,CACL,CAEU6d,qCAAqC3d,EAA2D,CACtG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsC,IAAW,CACpE,CAEAif,sBAAsBX,EAAkCC,EAA4F,CAC5I9d,IAAAA,EAAO,KAAKP,QAAU,sDACMqe,GAAe,OAC3C9d,GAAQ,cAAgBG,mBAAmB,GAAK2d,CAAU,EAAI,KAC3D9d,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUkc,CAAO,EAInCvd,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK+d,6BAA6B/d,CAAS,CACrD,CACL,CAEU+d,6BAA6B7d,EAAmD,CACtF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA8B,IAAY,CAC7D,CACJ,CAiGa,MAAAmf,sBAAsB3f,aAAwC,CAKvEC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAkf,sBAAsBC,EAAiCC,EAAqCC,EAAqF,CACzK9e,IAAAA,EAAO,KAAKP,QAAU,sCAC1B,GAAImf,IAAgB,eACN3e,MAAM,6CAA6C,EACxD2e,IAAgB1e,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAKye,CAAW,EAAI,KACjCE,GAAkB,MAChCA,GAAAA,EAAc/d,QAAgBge,GAAA,CAAE/e,GAAQ,iBAAmBG,mBAAmB,GAAK4e,CAAI,EAAI,GAAA,CAAM,EAC/G/e,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUkd,CAAO,EAInCve,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKse,6BAA6Bte,CAAS,CACrD,CACL,CAEUse,6BAA6Bpe,EAA6C,CAChF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,IAAY,CACvD,CAEA0f,0CAA0CC,EAAyC,CAC3Elf,IAAAA,EAAO,KAAKP,QAAU,yDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUud,CAAY,EAIxC5e,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKye,iDAAiDze,CAAS,CACzE,CACL,CAEUye,iDAAiDve,EAAqC,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgB,IAAW,CAC9C,CAEA6f,iCAAiCC,EAA8D,CACvFrf,IAAAA,EAAO,KAAKP,QAAU,iDAC1B,GAAI4f,IAAyB,eACfpf,MAAM,sDAAsD,EACjEof,IAAyBnf,SAC9BF,GAAQ,wBAA0BG,mBAAmB,GAAKkf,CAAoB,EAAI,KAC/Erf,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC4e,wCAAwC5e,CAAS,CAChE,CACL,CAEU4e,wCAAwC1e,EAAwC,CACtF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAmB,KACtC,CAEAggB,qBAAqB9d,EAAqB+d,EAAoCC,EAAwF,CAC9Jzf,IAAAA,EAAO,KAAKP,QAAU,qCAC1B,GAAI+f,IAAkB,KACR,MAAA,IAAAvf,MAAM,+CAA+C,EAGnE,GAFSuf,IAAkBtf,SACvBF,GAAQ,iBAAmBG,mBAAmB,GAAKqf,CAAa,EAAI,KACpEC,IAA8B,KACxB,MAAA,IAAIxf,MAAM,2DAA2D,EACtEwf,IAA8Bvf,SACnCF,GAAQ,6BAA+BG,mBAAmB,GAAKsf,CAAyB,EAAI,KACzFzf,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOgf,4BAA4Bhf,CAAS,CACpD,CACL,CAEUgf,4BAA4B9e,EAA4D,CAC9F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuC,KAC1D,CAEAogB,kCAAkCjW,EAAwCoV,EAAqDc,EAAyF,CAChN5f,IAAAA,EAAO,KAAKP,QAAU,kDAC1B,GAAIqf,IAAkB,eACR7e,MAAM,+CAA+C,EAC1D6e,IAAkB5e,QACN4e,GAAAA,EAAc/d,QAAgBge,GAAA,CAAE/e,GAAQ,iBAAmBG,mBAAmB,GAAK4e,CAAI,EAAI,GAAA,CAAM,EAC7Ea,GAAwB,OAC7D5f,GAAQ,uBAAyBG,mBAAmB,GAAKyf,CAAmB,EAAI,KAC7E5f,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACmf,yCAAyCnf,CAAS,CACjE,CACL,CAEUmf,yCAAyCjf,EAA4D,CAC3G,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuC,IAAY,CACtE,CAEAugB,uBAAuBlB,EAA+E,CAC9F5e,IAAAA,EAAO,KAAKP,QAAU,uCAC1B,GAAImf,IAAgB,KACN,MAAA,IAAA3e,MAAM,6CAA6C,EACxD2e,IAAgB1e,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAKye,CAAW,EAAI,KAC7D5e,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOqf,8BAA8Brf,CAAS,CACtD,CACL,CAEUqf,8BAA8Bnf,EAAkE,CACtG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA6C,IAAY,CAC5E,CAEAygB,iCAAiCpB,EAAqE,CAC9F5e,IAAAA,EAAO,KAAKP,QAAU,iDAC1B,GAAImf,IAAgB,KACV,MAAA,IAAI3e,MAAM,6CAA6C,EACxD2e,IAAgB1e,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAKye,CAAW,EAAI,KAC7D5e,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACuf,wCAAwCvf,CAAS,CAChE,CACL,CAEUuf,wCAAwCrf,EAAwD,CACtG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAmC,KACtD,CAEA2gB,gCAAgCC,EAAyC,CACjEngB,IAAAA,EAAO,KAAKP,QAAU,+CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUwe,CAAW,EAIvC7f,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC0f,uCAAuC1f,CAAS,CAC/D,CACL,CAEU0f,uCAAuCxf,EAAsC,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEA8gB,iCAAiCF,EAAuBG,EAAyD,CACzGtgB,IAAAA,EAAO,KAAKP,QAAU,iDAC1B,GAAI6gB,IAAqB,eACXrgB,MAAM,kDAAkD,EAC7DqgB,IAAqBpgB,SAC1BF,GAAQ,oBAAsBG,mBAAmB,GAAKmgB,CAAgB,EAAI,KACvEtgB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUwe,CAAW,EAIvC7f,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC6f,wCAAwC7f,CAAS,CAChE,CACL,CAEU6f,wCAAwC3f,EAAsC,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAihB,0BAA0Bhe,EAA+Bie,EAA2D,CAC5GzgB,IAAAA,EAAO,KAAKP,QAAU,0CAC1B,GAAI+C,IAAc,KACR,MAAA,IAAIvC,MAAM,2CAA2C,EACtDuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KACzDxC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU8e,CAAY,EAIxCngB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACggB,iCAAiChgB,CAAS,CACzD,CACL,CAEUggB,iCAAiC9f,EAAsC,CAC7E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAohB,0BAA0Bne,EAA+Bie,EAA2D,CAC5GzgB,IAAAA,EAAO,KAAKP,QAAU,0CAC1B,GAAI+C,IAAc,KACR,MAAA,IAAIvC,MAAM,2CAA2C,EACtDuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KACzDxC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU8e,CAAY,EAIxCngB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACkgB,iCAAiClgB,CAAS,CACzD,CACL,CAEUkgB,iCAAiChgB,EAAsC,CAC7E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAshB,uBAAuBre,EAA+BqJ,EAAoDC,EAAuE,CACzK9L,IAAAA,EAAO,KAAKP,QAAU,uCAC1B,GAAI+C,IAAc,eACJvC,MAAM,2CAA2C,EACtDuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KACnBqJ,GAA4B,OACrE7L,GAAQ,2BAA6BG,mBAAmB,GAAK0L,CAAuB,EAAI,KACxDC,GAAmB,OACnD9L,GAAQ,kBAAoBG,mBAAmB,GAAK2L,CAAc,EAAI,KACnE9L,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACogB,8BAA8BpgB,CAAS,CACtD,CACL,CAEUogB,8BAA8BlgB,EAAgD,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAEAwhB,6BAA6Bve,EAA+Bwe,EAAwD,CAC5GhhB,IAAAA,EAAO,KAAKP,QAAU,6CAC1B,GAAI+C,IAAc,KACR,MAAA,IAAIvC,MAAM,2CAA2C,EAG/D,GAFSuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KAC5Dwe,IAAoB,KACV,MAAA,IAAA/gB,MAAM,iDAAiD,EAC5D+gB,IAAoB9gB,SACzBF,GAAQ,mBAAqBG,mBAAmB,GAAK6gB,CAAe,EAAI,KACrEhhB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOugB,oCAAoCvgB,CAAS,CAC5D,CACL,CAEUugB,oCAAoCrgB,EAAsC,CAChF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,KACpC,CAEA2hB,cAAcxX,EAA8D,CACpE1J,IAAAA,EAAO,KAAKP,QAAU,6BACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACygB,qBAAqBzgB,CAAS,CAC7C,CACL,CAEUygB,qBAAqBvgB,EAAgD,CAC3E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,KAC9C,CAEA6hB,oBAAoB5e,EAA+B6e,EAA+BC,EAAwD,CAClIthB,IAAAA,EAAO,KAAKP,QAAU,oCAC1B,GAAI+C,IAAc,eACJvC,MAAM,2CAA2C,EAG/D,GAFSuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KAC5D6e,IAAc,KACJ,MAAA,IAAAphB,MAAM,2CAA2C,EAG/D,GAFSohB,IAAcnhB,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKkhB,CAAS,EAAI,KAC5DC,IAAqB,KACf,MAAA,IAAIrhB,MAAM,kDAAkD,EAC7DqhB,IAAqBphB,SAC1BF,GAAQ,oBAAsBG,mBAAmB,GAAKmhB,CAAgB,EAAI,KACvEthB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC6gB,2BAA2B7gB,CAAS,CACnD,CACL,CAEU6gB,2BAA2B3gB,EAAsC,CACvE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,KACpC,CAEAiiB,8BAA8B9X,EAAuE,CAC7F1J,IAAAA,EAAO,KAAKP,QAAU,6CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO+gB,qCAAqC/gB,CAAS,CAC7D,CACL,CAEU+gB,qCAAqC7gB,EAAsC,CACjF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAmiB,cAAchY,EAAuD,CAC7D1J,IAAAA,EAAO,KAAKP,QAAU,6BACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKihB,qBAAqBjhB,CAAS,CAC7C,CACL,CAEUihB,qBAAqB/gB,EAAgD,CAC3E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,KAC9C,CAEAqiB,kBAAkBlY,EAAiD,CAC3D1J,IAAAA,EAAO,KAAKP,QAAU,iCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACmhB,yBAAyBnhB,CAAS,CACjD,CACL,CAEUmhB,yBAAyBjhB,EAAsC,CACrE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAuiB,kCAAkC9X,EAAoC+X,EAAoF,CAClJ/hB,IAAAA,EAAO,KAAKP,QAAU,kDAC1B,GAAIuK,IAAmB,KACT,MAAA,IAAA/J,MAAM,gDAAgD,EAC3D+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACjC+X,GAAwB,OAC7D/hB,GAAQ,uBAAyBG,mBAAmB,GAAK4hB,CAAmB,EAAI,KAC7E/hB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOshB,yCAAyCthB,CAAS,CACjE,CACL,CAEUshB,yCAAyCphB,EAAuD,CACtG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAkC,IAAW,CAChE,CAEA0iB,2BAA2BF,EAAoF,CACvG/hB,IAAAA,EAAO,KAAKP,QAAU,2CACesiB,GAAwB,OAC7D/hB,GAAQ,uBAAyBG,mBAAmB,GAAK4hB,CAAmB,EAAI,KAC7E/hB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKwhB,kCAAkCxhB,CAAS,CAC1D,CACL,CAEUwhB,kCAAkCthB,EAAuD,CAC/F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAkC,IAAY,CACjE,CAEA4iB,cAAczY,EAAsD,CAC5D1J,IAAAA,EAAO,KAAKP,QAAU,6BACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO0hB,qBAAqB1hB,CAAS,CAC7C,CACL,CAEU0hB,qBAAqBxhB,EAAgD,CAC3E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAEA8iB,yBAAyB7f,EAA+B8f,EAAuD,CACvGtiB,IAAAA,EAAO,KAAKP,QAAU,yCAC1B,GAAI+C,IAAc,KACJ,MAAA,IAAAvC,MAAM,2CAA2C,EACtDuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KACzDxC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU2gB,CAAQ,EAIpChiB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK6hB,gCAAgC7hB,CAAS,CACxD,CACL,CAEU6hB,gCAAgC3hB,EAAgD,CACtF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAY,CAC1D,CAEAijB,yBAAyBhgB,EAA+BigB,EAAsD,CACtGziB,IAAAA,EAAO,KAAKP,QAAU,yCAC1B,GAAI+C,IAAc,KACR,MAAA,IAAIvC,MAAM,2CAA2C,EACtDuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KACzDxC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU8gB,CAAQ,EAIpCniB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACgiB,gCAAgChiB,CAAS,CACxD,CACL,CAEUgiB,gCAAgC9hB,EAAgD,CACtF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAEAojB,8BAA8BngB,EAA+BogB,EAA2D,CAChH5iB,IAAAA,EAAO,KAAKP,QAAU,8CAC1B,GAAI+C,IAAc,KACJ,MAAA,IAAAvC,MAAM,2CAA2C,EACtDuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KACzDxC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUihB,CAAa,EAIzCtiB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOmiB,qCAAqCniB,CAAS,CAC7D,CACL,CAEUmiB,qCAAqCjiB,EAAgD,CAC3F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAY,CAC1D,CAEAujB,4BAA4BtgB,EAA+BugB,EAA6D,CAChH/iB,IAAAA,EAAO,KAAKP,QAAU,4CAC1B,GAAI+C,IAAc,eACJvC,MAAM,2CAA2C,EACtDuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KACzDxC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUohB,CAAW,EAIvCziB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACsiB,mCAAmCtiB,CAAS,CAC3D,CACL,CAEUsiB,mCAAmCpiB,EAAgD,CACzF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,KAC9C,CAEA0jB,2BAA2BzgB,EAA+B0gB,EAAqD,CACvGljB,IAAAA,EAAO,KAAKP,QAAU,2CAC1B,GAAI+C,IAAc,KACR,MAAA,IAAIvC,MAAM,2CAA2C,EACtDuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KACzDxC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUuhB,CAAU,EAItC5iB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOyiB,kCAAkCziB,CAAS,CAC1D,CACL,CAEUyiB,kCAAkCviB,EAAgD,CACxF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAEA6jB,gCAAgC5gB,EAA+B6gB,EAAuD,CAC9GrjB,IAAAA,EAAO,KAAKP,QAAU,gDAC1B,GAAI+C,IAAc,eACJvC,MAAM,2CAA2C,EACtDuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KACzDxC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU0hB,CAAS,EAIrC/iB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK4iB,uCAAuC5iB,CAAS,CAC/D,CACL,CAEU4iB,uCAAuC1iB,EAAgD,CAC7F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAY,CAC1D,CAEAgkB,2BAA2B7Z,EAA2E,CAC9F1J,IAAAA,EAAO,KAAKP,QAAU,0CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8iB,kCAAkC9iB,CAAS,CAC1D,CACL,CAEU8iB,kCAAkC5iB,EAAoD,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA+B,KAClD,CAEAkkB,yBAAyBzZ,EAAoCxH,EAAsCkhB,EAA6D,CACxJ1jB,IAAAA,EAAO,KAAKP,QAAU,yCAC1B,GAAIuK,IAAmB,KACT,MAAA,IAAA/J,MAAM,gDAAgD,EAC3D+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KAC3CxH,GAAc,OACzCxC,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KAClCkhB,GAAa,OACvC1jB,GAAQ,YAAcG,mBAAmB,GAAKujB,CAAQ,EAAI,KACvD1jB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACijB,gCAAgCjjB,CAAS,CACxD,CACL,CAEUijB,gCAAgC/iB,EAA4C,CAClF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,KAC1C,CAEAqkB,2BAA2B5Z,EAAoCxH,EAA+BkH,EAAuE,CAC7J1J,IAAAA,EAAO,KAAKP,QAAU,2CAC1B,GAAIuK,IAAmB,KACT,MAAA,IAAA/J,MAAM,gDAAgD,EAGpE,GAFS+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACtExH,IAAc,eACJvC,MAAM,2CAA2C,EACtDuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KACzDxC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACmjB,kCAAkCnjB,CAAS,CAC1D,CACL,CAEUmjB,kCAAkCjjB,EAAsD,CAC9F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiC,KACpD,CAEAukB,eAAepa,EAA0F,CACjG1J,IAAAA,EAAO,KAAKP,QAAU,8BACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,0BAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKqjB,sBAAsBrjB,CAAS,CAC9C,CACL,CAEUqjB,sBAAsBnjB,EAA2C,CACvE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EAChBD,GADwBD,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAMmjB,EAAqBpjB,EAASxB,QAAUwB,EAASxB,QAAQ6kB,IAAI,qBAAqB,EAAI/jB,OAC5F,IAAIgkB,EAAgBF,EAAqB,6DAA6DG,KAAKH,CAAkB,EAAI9jB,OAC7HqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,GAAKA,EAAc,CAAC,EAAIhkB,OAClG,OAAIqR,EACAA,EAAW6S,mBAAmB7S,CAAQ,GAEtC2S,EAAgBF,EAAqB,8BAA8BG,KAAKH,CAAkB,EAAI9jB,OAC9FqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,EAAIhkB,QAEvEU,EAASyjB,KAAAA,EAAO9jB,KAAa8jB,IAAS,CAAE9S,SAAAA,EAAoBD,KAAM+S,EAAMxjB,OAAAA,EAAgBzB,QAAS0B,GAAa,CAC9GD,SAAAA,IAAW,KAAOA,IAAW,IACpC,OAAOD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,OAAAA,QAAQC,QAAsB,IAAY,CACrD,CAEA+kB,gBAAgBC,EAAoE,CAC5EvkB,IAAAA,EAAO,KAAKP,QAAU,+BACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU4iB,CAAM,EAIlCjkB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK8jB,uBAAuB9jB,CAAS,CAC/C,CACL,CAEU8jB,uBAAuB5jB,EAAgD,CAC7E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAY,CAC1D,CAEAklB,gBAAgBjiB,EAA2D,CACnExC,IAAAA,EAAO,KAAKP,QAAU,gCAC1B,GAAI+C,IAAc,KACJ,MAAA,IAAAvC,MAAM,2CAA2C,EACtDuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KACzDxC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKgkB,uBAAuBhkB,CAAS,CAC/C,CACL,CAEUgkB,uBAAuB9jB,EAAgD,CAC7E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAKAolB,sBAAsBjb,EAA2E,CACzF1J,IAAAA,EAAO,KAAKP,QAAU,qCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKkkB,6BAA6BlkB,CAAS,CACrD,CACL,CAEUkkB,6BAA6BhkB,EAA4D,CAC/F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuC,IAAW,CACrE,CAKAslB,sBAAsBnb,EAA2E,CACzF1J,IAAAA,EAAO,KAAKP,QAAU,qCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKokB,6BAA6BpkB,CAAS,CACrD,CACL,CAEUokB,6BAA6BlkB,EAA4D,CAC/F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuC,IAAW,CACrE,CAEAwlB,8BAA8Brb,EAA0E,CAChG1J,IAAAA,EAAO,KAAKP,QAAU,6CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKskB,qCAAqCtkB,CAAS,CAC7D,CACL,CAEUskB,qCAAqCpkB,EAAgD,CAC3F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAEA0lB,2BAA2Bvb,EAAuE,CAC1F1J,IAAAA,EAAO,KAAKP,QAAU,0CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACwkB,kCAAkCxkB,CAAS,CAC1D,CACL,CAEUwkB,kCAAkCtkB,EAAgD,CACxF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAEA4lB,4BAA4Bzb,EAAwE,CAC5F1J,IAAAA,EAAO,KAAKP,QAAU,2CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK0kB,mCAAmC1kB,CAAS,CAC3D,CACL,CAEU0kB,mCAAmCxkB,EAAgD,CACzF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,KAC9C,CAEA8lB,gCAAgC3b,EAA4E,CACpG1J,IAAAA,EAAO,KAAKP,QAAU,+CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC4kB,uCAAuC5kB,CAAS,CAC/D,CACL,CAEU4kB,uCAAuC1kB,EAAgD,CAC7F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAEAgmB,kCAAkC7b,EAA8E,CACxG1J,IAAAA,EAAO,KAAKP,QAAU,iDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK8kB,yCAAyC9kB,CAAS,CACjE,CACL,CAEU8kB,yCAAyC5kB,EAAgD,CAC/F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAY,CAC1D,CAEAkmB,wBAAwB/b,EAAqE,CACrF1J,IAAAA,EAAO,KAAKP,QAAU,uCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACglB,+BAA+BhlB,CAAS,CACvD,CACL,CAEUglB,+BAA+B9kB,EAAgD,CACrF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAY,CAC1D,CAEAomB,+BAA+BnjB,EAAsD,CAC7ExC,IAAAA,EAAO,KAAKP,QAAU,+CAC1B,GAAI+C,IAAc,KACR,MAAA,IAAIvC,MAAM,2CAA2C,EACtDuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KACzDxC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,6BAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKklB,sCAAsCllB,CAAS,CAC9D,CACL,CAEUklB,sCAAsChlB,EAA2C,CACvF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EAChBD,GADwBD,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAMmjB,EAAqBpjB,EAASxB,QAAUwB,EAASxB,QAAQ6kB,IAAI,qBAAqB,EAAI/jB,OAC5F,IAAIgkB,EAAgBF,EAAqB,6DAA6DG,KAAKH,CAAkB,EAAI9jB,OAC7HqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,GAAKA,EAAc,CAAC,EAAIhkB,OAClG,OAAIqR,EACAA,EAAW6S,mBAAmB7S,CAAQ,GAEtC2S,EAAgBF,EAAqB,8BAA8BG,KAAKH,CAAkB,EAAI9jB,OAC9FqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,EAAIhkB,QAEvEU,EAASyjB,KAAAA,EAAO9jB,KAAa8jB,IAAS,CAAE9S,SAAAA,EAAoBD,KAAM+S,EAAMxjB,OAAAA,EAAgBzB,QAAS0B,GAAa,CAC9GD,SAAAA,IAAW,KAAOA,IAAW,IACpC,OAAOD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,OAAAA,QAAQC,QAAsB,KACzC,CAEAsmB,4BAA4BjH,EAA6D,CACjF5e,IAAAA,EAAO,KAAKP,QAAU,4CAC1B,GAAImf,IAAgB,KACN,MAAA,IAAA3e,MAAM,6CAA6C,EACxD2e,IAAgB1e,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAKye,CAAW,EAAI,KAC7D5e,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAColB,mCAAmCplB,CAAS,CAC3D,CACL,CAEUolB,mCAAmCllB,EAAgD,CACzF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CACJ,CAeO,MAAMwmB,gCAAgChnB,aAAkD,CAK3FC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAumB,sCAAsChc,EAAkE,CAChGhK,IAAAA,EAAO,KAAKP,QAAU,gEAC1B,GAAIuK,IAAmB,KACb,MAAA,IAAI/J,MAAM,gDAAgD,EAC3D+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACnEhK,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACulB,6CAA6CvlB,CAAS,CACrE,CACL,CAEUulB,6CAA6CrlB,EAAkD,CACrG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA6B,IAAW,CAC3D,CAEA2mB,wBAAwBC,EAAwD,CACxEnmB,IAAAA,EAAO,KAAKP,QAAU,iDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUwkB,CAAiB,EAI7C7lB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO0lB,+BAA+B1lB,CAAS,CACvD,CACL,CAEU0lB,+BAA+BxlB,EAAsC,CAC3E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEA8mB,wBAAwBF,EAAwD,CACxEnmB,IAAAA,EAAO,KAAKP,QAAU,iDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUwkB,CAAiB,EAI7C7lB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC4lB,+BAA+B5lB,CAAS,CACvD,CACL,CAEU4lB,+BAA+B1lB,EAAsC,CAC3E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAgnB,yBAAyBJ,EAAwD,CACzEnmB,IAAAA,EAAO,KAAKP,QAAU,kDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUwkB,CAAiB,EAI7C7lB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8lB,gCAAgC9lB,CAAS,CACxD,CACL,CAEU8lB,gCAAgC5lB,EAAsC,CAC5E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAknB,sBAAsBzc,EAAoC0c,EAA6D,CAC/G1mB,IAAAA,EAAO,KAAKP,QAAU,gDAC1B,GAAIuK,IAAmB,KACT,MAAA,IAAA/J,MAAM,gDAAgD,EAC3D+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACtC0c,GAAmB,OACnD1mB,GAAQ,kBAAoBG,mBAAmB,GAAKumB,CAAc,EAAI,KACnE1mB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOimB,6BAA6BjmB,CAAS,CACrD,CACL,CAEUimB,6BAA6B/lB,EAAsC,CACzE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CACJ,CAqCa,MAAAqnB,2BAA2B7nB,aAA6C,CAKjFC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAonB,gBAAgBH,EAA4E,CACpF1mB,IAAAA,EAAO,KAAKP,QAAU,qCAC1B,GAAIinB,IAAmB,KACT,MAAA,IAAAzmB,MAAM,gDAAgD,EAC3DymB,IAAmBxmB,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKumB,CAAc,EAAI,KACnE1mB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAComB,uBAAuBpmB,CAAS,CAC/C,CACL,CAEUomB,uBAAuBlmB,EAA4D,CACzF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuC,IAAW,CACrE,CAEAwnB,wBAAwBL,EAAoClkB,EAA+BwkB,EAAiD,CACpIhnB,IAAAA,EAAO,KAAKP,QAAU,6CAC1B,GAAIinB,IAAmB,KACb,MAAA,IAAIzmB,MAAM,gDAAgD,EAGpE,GAFSymB,IAAmBxmB,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKumB,CAAc,EAAI,KACtElkB,IAAc,KACR,MAAA,IAAIvC,MAAM,2CAA2C,EAG/D,GAFSuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KAC5DwkB,IAAa,KACH,MAAA,IAAA/mB,MAAM,0CAA0C,EACrD+mB,IAAa9mB,SAClBF,GAAQ,YAAcG,mBAAmB,GAAK6mB,CAAQ,EAAI,KACvDhnB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACumB,+BAA+BvmB,CAAS,CACvD,CACL,CAEUumB,+BAA+BrmB,EAAsC,CAC3E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEA2nB,mBAAmBxd,EAAuE,CAClF1J,IAAAA,EAAO,KAAKP,QAAU,uCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKymB,0BAA0BzmB,CAAS,CAClD,CACL,CAEUymB,0BAA0BvmB,EAA4D,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuC,IAAW,CACrE,CAEA6nB,mBAAmBV,EAAoChd,EAAuE,CACtH1J,IAAAA,EAAO,KAAKP,QAAU,wCAC1B,GAAIinB,IAAmB,KACb,MAAA,IAAIzmB,MAAM,gDAAgD,EAC3DymB,IAAmBxmB,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKumB,CAAc,EAAI,KACnE1mB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC2mB,0BAA0B3mB,CAAS,CAClD,CACL,CAEU2mB,0BAA0BzmB,EAA4D,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuC,IAAY,CACtE,CAEA+nB,sBAA8C,CACtCtnB,IAAAA,EAAO,KAAKP,QAAU,oBACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK6mB,4BAA4B7mB,CAAS,CACpD,CACL,CAEU6mB,4BAA4B3mB,EAA2C,CAC7E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsB,IAAY,CACrD,CAKAioB,wBAAwB9d,EAAkG,CAClH1J,IAAAA,EAAO,KAAKP,QAAU,4CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO+mB,+BAA+B/mB,CAAS,CACvD,CACL,CAEU+mB,+BAA+B7mB,EAAiF,CACtH,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA4D,IAAW,CAC1F,CAKAmoB,yBAAyBhe,EAAoG,CACrH1J,IAAAA,EAAO,KAAKP,QAAU,6CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOinB,gCAAgCjnB,CAAS,CACxD,CACL,CAEUinB,gCAAgC/mB,EAAkF,CACxH,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA6D,IAAW,CAC3F,CAKAqoB,2BAA2Ble,EAA+G,CAClI1J,IAAAA,EAAO,KAAKP,QAAU,+CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOmnB,kCAAkCnnB,CAAS,CAC1D,CACL,CAEUmnB,kCAAkCjnB,EAA6F,CACrI,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwE,IAAW,CACtG,CAKAuoB,0BAA0Bpe,EAAmE,CACrF1J,IAAAA,EAAO,KAAKP,QAAU,8CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACqnB,iCAAiCrnB,CAAS,CACzD,CACL,CAEUqnB,iCAAiCnnB,EAAgD,CACvF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAEAyoB,wBAAwBhe,EAAoC0c,EAAmE,CACvH1mB,IAAAA,EAAO,KAAKP,QAAU,6CAC1B,GAAIuK,IAAmB,KACb,MAAA,IAAI/J,MAAM,gDAAgD,EAGpE,GAFS+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACtE0c,IAAmB,eACTzmB,MAAM,gDAAgD,EAC3DymB,IAAmBxmB,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKumB,CAAc,EAAI,KACnE1mB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACunB,+BAA+BvnB,CAAS,CACvD,CACL,CAEUunB,+BAA+BrnB,EAAmD,CACxF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA8B,IAAW,CAC5D,CACJ,CAOa,MAAA2oB,0BAA0BnpB,aAA4C,CAK/EC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEA0oB,2BAAoD,CAC5CnoB,IAAAA,EAAO,KAAKP,QAAU,6CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC0nB,iCAAiC1nB,CAAS,CACzD,CACL,CAEU0nB,iCAAiCxnB,EAA4C,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAY,CACtD,CACJ,OAaa8oB,oBAAoBtpB,aAAsC,CAKnEC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEA6oB,gBAAgBC,EAA6D,CACrEvoB,IAAAA,EAAO,KAAKP,QAAU,8BACK8oB,GAAc,OACzCvoB,GAAQ,aAAeG,mBAAmB,GAAKooB,CAAS,EAAI,KACzDvoB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK8nB,uBAAuB9nB,CAAS,CAC/C,CACL,CAEU8nB,uBAAuB5nB,EAA2C,CACxE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsB,IAAW,CACpD,CAEAkpB,kCAAkCtU,EAA8C,CACxEnU,IAAAA,EAAO,KAAKP,QAAU,+CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUwS,CAAO,EAInC7T,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACgoB,yCAAyChoB,CAAS,CACjE,CACL,CAEUgoB,yCAAyC9nB,EAA2C,CAC1F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsB,KACzC,CAEAopB,iBAAiBC,EAA+BC,EAAsE,CAC9G7oB,IAAAA,EAAO,KAAKP,QAAU,+BAC1B,GAAImpB,IAAc,KACJ,MAAA,IAAA3oB,MAAM,2CAA2C,EACtD2oB,IAAc1oB,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKyoB,CAAS,EAAI,KACxBC,GAAuB,OAC3D7oB,GAAQ,sBAAwBG,mBAAmB,GAAK0oB,CAAkB,EAAI,KAC3E7oB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACooB,wBAAwBpoB,CAAS,CAChD,CACL,CAEUooB,wBAAwBloB,EAA2C,CACzE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsB,IAAW,CACpD,CAEAwpB,QAAgC,CACxB/oB,IAAAA,EAAO,KAAKP,QAAU,oBACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKsoB,cAActoB,CAAS,CACtC,CACL,CAEUsoB,cAAcpoB,EAA2C,CAC/D,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsB,IAAY,CACrD,CACJ,CAuBO,MAAM0pB,iCAAiClqB,aAAmD,CAK7FC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAypB,uBAAuBznB,EAAmE,CAClFzB,IAAAA,EAAO,KAAKP,QAAU,iDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOyoB,8BAA8BzoB,CAAS,CACtD,CACL,CAEUyoB,8BAA8BvoB,EAAuD,CAC3F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAkC,KACrD,CAEA6pB,0BAA0BC,EAA+D,CACjFrpB,IAAAA,EAAO,KAAKP,QAAU,oDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU0nB,CAAoB,EAIhD/oB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK4oB,iCAAiC5oB,CAAS,CACzD,CACL,CAEU4oB,iCAAiC1oB,EAAqD,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgC,IAAY,CAC/D,CAEAgqB,sCAAsC9nB,EAAqF,CACnHzB,IAAAA,EAAO,KAAKP,QAAU,gEACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8oB,6CAA6C9oB,CAAS,CACrE,CACL,CAEU8oB,6CAA6C5oB,EAAyE,CAC5H,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoD,IAAW,CAClF,CAEAkqB,yBAAyBJ,EAAyF,CAC1GrpB,IAAAA,EAAO,KAAKP,QAAU,oDAC1B,GAAI4pB,IAAyB,KACnB,MAAA,IAAIppB,MAAM,sDAAsD,EACjEopB,IAAyBnpB,SAC9BF,GAAQ,wBAA0BG,mBAAmB,GAAKkpB,CAAoB,EAAI,KAC/ErpB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACgpB,gCAAgChpB,CAAS,CACxD,CACL,CAEUgpB,gCAAgC9oB,EAAmE,CACzG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA8C,IAAY,CAC7E,CAEAoqB,gCAAgCN,EAA0CO,EAAmDC,EAA2E,CAChM7pB,IAAAA,EAAO,KAAKP,QAAU,2DAC1B,GAAI4pB,IAAyB,eACfppB,MAAM,sDAAsD,EACjEopB,IAAyBnpB,SAC9BF,GAAQ,wBAA0BG,mBAAmB,GAAKkpB,CAAoB,EAAI,KAC1CO,GAA2B,OACnE5pB,GAAQ,0BAA4BG,mBAAmB,GAAKypB,CAAsB,EAAI,KACxCC,GAAiC,OAC/E7pB,GAAQ,gCAAkCG,mBAAmB,GAAK0pB,CAA4B,EAAI,KAC/F7pB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACopB,uCAAuCppB,CAAS,CAC/D,CACL,CAEUopB,uCAAuClpB,EAAsC,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAwqB,yCAAyCC,EAA8CC,EAAiD,CAChIjqB,IAAAA,EAAO,KAAKP,QAAU,oEAC1B,GAAIuqB,IAA6B,KACvB,MAAA,IAAI/pB,MAAM,0DAA0D,EACrE+pB,IAA6B9pB,SAClCF,GAAQ,4BAA8BG,mBAAmB,GAAK6pB,CAAwB,EAAI,KACvFhqB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUsoB,CAAa,EAIzC3pB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKwpB,gDAAgDxpB,CAAS,CACxE,CACL,CAEUwpB,gDAAgDtpB,EAAsC,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,KACpC,CAEA4qB,8CAA8CH,EAAgE,CACtGhqB,IAAAA,EAAO,KAAKP,QAAU,yEAC1B,GAAIuqB,IAA6B,KACvB,MAAA,IAAI/pB,MAAM,0DAA0D,EACrE+pB,IAA6B9pB,SAClCF,GAAQ,4BAA8BG,mBAAmB,GAAK6pB,CAAwB,EAAI,KACvFhqB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC0pB,qDAAqD1pB,CAAS,CAC7E,CACL,CAEU0pB,qDAAqDxpB,EAAsC,CACjG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEA8qB,2BAA2B5kB,EAA4BukB,EAAgE,CAC/GhqB,IAAAA,EAAO,KAAKP,QAAU,sDAC1B,GAAIgG,IAAW,KACD,MAAA,IAAAxF,MAAM,wCAAwC,EAG5D,GAFSwF,IAAWvF,SAChBF,GAAQ,UAAYG,mBAAmB,GAAKsF,CAAM,EAAI,KACtDukB,IAA6B,KACvB,MAAA,IAAI/pB,MAAM,0DAA0D,EACrE+pB,IAA6B9pB,SAClCF,GAAQ,4BAA8BG,mBAAmB,GAAK6pB,CAAwB,EAAI,KACvFhqB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK4pB,kCAAkC5pB,CAAS,CAC1D,CACL,CAEU4pB,kCAAkC1pB,EAAsC,CAC9E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAgrB,6BAA6BP,EAAgE,CACrFhqB,IAAAA,EAAO,KAAKP,QAAU,wDAC1B,GAAIuqB,IAA6B,KACnB,MAAA,IAAA/pB,MAAM,0DAA0D,EACrE+pB,IAA6B9pB,SAClCF,GAAQ,4BAA8BG,mBAAmB,GAAK6pB,CAAwB,EAAI,KACvFhqB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8pB,oCAAoC9pB,CAAS,CAC5D,CACL,CAEU8pB,oCAAoC5pB,EAAsC,CAChF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CACJ,CASO,MAAMkrB,oBAAoB1rB,aAAsC,CAKnEC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAirB,wBAAwBC,EAA6Cpa,EAAqD,CAClHvQ,IAAAA,EAAO,KAAKP,QAAU,sCAC1B,GAAI8Q,IAAmB,KACb,MAAA,IAAItQ,MAAM,gDAAgD,EAC3DsQ,IAAmBrQ,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKoQ,CAAc,EAAI,KACnEvQ,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUgpB,CAAe,EAI3CrqB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKkqB,+BAA+BlqB,CAAS,CACvD,CACL,CAEUkqB,+BAA+BhqB,EAAqC,CAC1E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgB,KACnC,CAEAsrB,wBAAgD,CACxC7qB,IAAAA,EAAO,KAAKP,QAAU,oCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKoqB,8BAA8BpqB,CAAS,CACtD,CACL,CAEUoqB,8BAA8BlqB,EAA2C,CAC/E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsB,IAAW,CACpD,CACJ,CAWa,MAAAwrB,2BAA2BhsB,aAA6C,CAKjFC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAurB,wBAAkD,CAC1ChrB,IAAAA,EAAO,KAAKP,QAAU,2CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOuqB,8BAA8BvqB,CAAS,CACtD,CACL,CAEUuqB,8BAA8BrqB,EAA6C,CACjF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,IAAY,CACvD,CAEA2rB,gBAAgBC,EAA2D,CACnEnrB,IAAAA,EAAO,KAAKP,QAAU,qCAC1B,GAAI0rB,IAAmB,eACTlrB,MAAM,gDAAgD,EAC3DkrB,IAAmBjrB,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKgrB,CAAc,EAAI,KACnEnrB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO0qB,uBAAuB1qB,CAAS,CAC/C,CACL,CAEU0qB,uBAAuBxqB,EAA2C,CACxE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsB,IAAW,CACpD,CAEA8rB,oBAAoBF,EAAmD,CAC/DnrB,IAAAA,EAAO,KAAKP,QAAU,yCAC1B,GAAI0rB,IAAmB,KACb,MAAA,IAAIlrB,MAAM,gDAAgD,EAC3DkrB,IAAmBjrB,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKgrB,CAAc,EAAI,KACnEnrB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE/B,IAAIC,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CAEb,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK4qB,2BAA2B5qB,CAAS,CACnD,CACL,CAEU4qB,2BAA2B1qB,EAAmC,CACpE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,CACC,EACMN,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAc,IAAY,CAC7C,CACJ,CAmEO,MAAMgsB,sBAAsBxsB,aAAwC,CAKvEC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEA+rB,iCAAiC9E,EAAoChd,EAA4C,CACzG1J,IAAAA,EAAO,KAAKP,QAAU,iDAC1B,GAAIinB,IAAmB,KACT,MAAA,IAAAzmB,MAAM,gDAAgD,EAC3DymB,IAAmBxmB,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKumB,CAAc,EAAI,KACnE1mB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC+qB,wCAAwC/qB,CAAS,CAChE,CACL,CAEU+qB,wCAAwC7qB,EAAsC,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAmsB,kCAAkChF,EAAoChd,EAAkE,CAChI1J,IAAAA,EAAO,KAAKP,QAAU,kDAC1B,GAAIinB,IAAmB,KACT,MAAA,IAAAzmB,MAAM,gDAAgD,EAC3DymB,IAAmBxmB,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKumB,CAAc,EAAI,KACnE1mB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKirB,yCAAyCjrB,CAAS,CACjE,CACL,CAEUirB,yCAAyC/qB,EAAgD,CAC/F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,KAC9C,CAEAqsB,mCAAmClF,EAAoClM,EAAyD,CACxHxa,IAAAA,EAAO,KAAKP,QAAU,mDAC1B,GAAIinB,IAAmB,KACb,MAAA,IAAIzmB,MAAM,gDAAgD,EAGpE,GAFSymB,IAAmBxmB,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKumB,CAAc,EAAI,KACtElM,IAAY,KACF,MAAA,IAAAva,MAAM,yCAAyC,EACpDua,IAAYta,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKqa,CAAO,EAAI,KACrDxa,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACmrB,0CAA0CnrB,CAAS,CAClE,CACL,CAEUmrB,0CAA0CjrB,EAAgD,CAChG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAY,CAC1D,CAEAusB,0BAA0BtR,EAA6B9Q,EAA4C,CAC3F1J,IAAAA,EAAO,KAAKP,QAAU,0CAC1B,GAAI+a,IAAY,KACN,MAAA,IAAIva,MAAM,yCAAyC,EACpDua,IAAYta,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKqa,CAAO,EAAI,KACrDxa,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACqrB,iCAAiCrrB,CAAS,CACzD,CACL,CAEUqrB,iCAAiCnrB,EAAsC,CAC7E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAysB,4BAA4BxR,EAAyD,CAC7Exa,IAAAA,EAAO,KAAKP,QAAU,4CAC1B,GAAI+a,IAAY,eACFva,MAAM,yCAAyC,EACpDua,IAAYta,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKqa,CAAO,EAAI,KACrDxa,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOurB,mCAAmCvrB,CAAS,CAC3D,CACL,CAEUurB,mCAAmCrrB,EAAgD,CACzF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAEA2sB,+BAA4D,CACpDlsB,IAAAA,EAAO,KAAKP,QAAU,6CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACyrB,qCAAqCzrB,CAAS,CAC7D,CACL,CAEUyrB,qCAAqCvrB,EAAgD,CAC3F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAEA6sB,8BAA8B5R,EAA6B6R,EAAwE,CAC3HrsB,IAAAA,EAAO,KAAKP,QAAU,8CAC1B,GAAI+a,IAAY,KACN,MAAA,IAAIva,MAAM,yCAAyC,EAG7D,GAFSua,IAAYta,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKqa,CAAO,EAAI,KACxD6R,IAAkB,KACR,MAAA,IAAApsB,MAAM,+CAA+C,EAC1DosB,IAAkBnsB,SACvBF,GAAQ,iBAAmBG,mBAAmB,GAAKksB,CAAa,EAAI,KACjErsB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC4rB,qCAAqC5rB,CAAS,CAC7D,CACL,CAEU4rB,qCAAqC1rB,EAAyD,CACpG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAY,CACnE,CAEAgtB,+CAAmG,CAC3FvsB,IAAAA,EAAO,KAAKP,QAAU,6DACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8rB,qDAAqD9rB,CAAS,CAC7E,CACL,CAEU8rB,qDAAqD5rB,EAAuE,CAClI,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAkD,IAAY,CACjF,CAEAktB,yBAAyBjS,EAAgE,CACjFxa,IAAAA,EAAO,KAAKP,QAAU,yCAC1B,GAAI+a,IAAY,KACN,MAAA,IAAIva,MAAM,yCAAyC,EACpDua,IAAYta,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKqa,CAAO,EAAI,KACrDxa,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKgsB,gCAAgChsB,CAAS,CACxD,CACL,CAEUgsB,gCAAgC9rB,EAAuD,CAC7F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAkC,IAAW,CAChE,CAEAotB,gCAAgCjG,EAAuE,CAC/F1mB,IAAAA,EAAO,KAAKP,QAAU,gDAC1B,GAAIinB,IAAmB,KACT,MAAA,IAAAzmB,MAAM,gDAAgD,EAC3DymB,IAAmBxmB,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKumB,CAAc,EAAI,KACnE1mB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACksB,uCAAuClsB,CAAS,CAC/D,CACL,CAEUksB,uCAAuChsB,EAAuD,CACpG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAkC,KACrD,CAEAstB,+BAA+B7iB,EAA2CC,EAA8E,CAChJjK,IAAAA,EAAO,KAAKP,QAAU,+CACUuK,GAAmB,OACnDhK,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACtCC,GAAmB,OACnDjK,GAAQ,kBAAoBG,mBAAmB,GAAK8J,CAAc,EAAI,KACnEjK,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOosB,sCAAsCpsB,CAAS,CAC9D,CACL,CAEUosB,sCAAsClsB,EAAuD,CACnG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAkC,IAAY,CACjE,CAEAwtB,+BAA+B/iB,EAA2CC,EAA2C+iB,EAAoE,CACjLhtB,IAAAA,EAAO,KAAKP,QAAU,+CACUuK,GAAmB,OACnDhK,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACtCC,GAAmB,OACnDjK,GAAQ,kBAAoBG,mBAAmB,GAAK8J,CAAc,EAAI,KACnEjK,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUqrB,CAAsB,EAIlD1sB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOusB,sCAAsCvsB,CAAS,CAC9D,CACL,CAEUusB,sCAAsCrsB,EAAsC,CAClF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEA2tB,0BAAqE,CAC7DltB,IAAAA,EAAO,KAAKP,QAAU,wCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACysB,gCAAgCzsB,CAAS,CACxD,CACL,CAEUysB,gCAAgCvsB,EAA8D,CACpG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAyC,IAAW,CACvE,CAEA6tB,0BAA0B1jB,EAA8D,CAChF1J,IAAAA,EAAO,KAAKP,QAAU,yCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK2sB,iCAAiC3sB,CAAS,CACzD,CACL,CAEU2sB,iCAAiCzsB,EAA4C,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAW,CACrD,CAEA+tB,0BAA0BC,EAAuE,CACzFvtB,IAAAA,EAAO,KAAKP,QAAU,0CAC1B,GAAI8tB,IAAoC,KAC9B,MAAA,IAAIttB,MAAM,iEAAiE,EAC5EstB,IAAoCrtB,SACzCF,GAAQ,mCAAqCG,mBAAmB,GAAKotB,CAA+B,EAAI,KACrGvtB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK8sB,iCAAiC9sB,CAAS,CACzD,CACL,CAEU8sB,iCAAiC5sB,EAAsC,CAC7E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,KACpC,CAEAkuB,6BAA6BjT,EAA6BkT,EAAuDC,EAA0D,CACnK3tB,IAAAA,EAAO,KAAKP,QAAU,6CAC1B,GAAI+a,IAAY,KACN,MAAA,IAAIva,MAAM,yCAAyC,EACpDua,IAAYta,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKqa,CAAO,EAAI,KACZkT,GAA+B,OAC3E1tB,GAAQ,8BAAgCG,mBAAmB,GAAKutB,CAA0B,EAAI,KAClEC,GAAe,OAC3C3tB,GAAQ,cAAgBG,mBAAmB,GAAKwtB,CAAU,EAAI,KAC3D3tB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE/B,IAAIC,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CAEb,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACktB,oCAAoCltB,CAAS,CAC5D,CACL,CAEUktB,oCAAoChtB,EAAmC,CAC7E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,CACC,EACMN,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAc,IAAW,CAC5C,CAEAsuB,gCAAgCnkB,EAAkD,CAC1E1J,IAAAA,EAAO,KAAKP,QAAU,+CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKotB,uCAAuCptB,CAAS,CAC/D,CACL,CAEUotB,uCAAuCltB,EAAqC,CAClF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgB,IAAW,CAC9C,CAEAwuB,gCAAgCL,EAA+D,CACvF1tB,IAAAA,EAAO,KAAKP,QAAU,gDAC1B,GAAIiuB,IAA+B,KACrB,MAAA,IAAAztB,MAAM,4DAA4D,EACvEytB,IAA+BxtB,SACpCF,GAAQ,8BAAgCG,mBAAmB,GAAKutB,CAA0B,EAAI,KAC3F1tB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE/B,IAAIC,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CAEb,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOstB,uCAAuCttB,CAAS,CAC/D,CACL,CAEUstB,uCAAuCptB,EAAmC,CAChF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,CACC,EACMN,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAc,IAAY,CAC7C,CAEA0uB,sBAAsBzT,EAAoD,CAClExa,IAAAA,EAAO,KAAKP,QAAU,sCAC1B,GAAI+a,IAAY,KACF,MAAA,IAAAva,MAAM,yCAAyC,EACpDua,IAAYta,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKqa,CAAO,EAAI,KACrDxa,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,6BAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKwtB,6BAA6BxtB,CAAS,CACrD,CACL,CAEUwtB,6BAA6BttB,EAA2C,CAC9E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EAChBD,GADwBD,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAMmjB,EAAqBpjB,EAASxB,QAAUwB,EAASxB,QAAQ6kB,IAAI,qBAAqB,EAAI/jB,OAC5F,IAAIgkB,EAAgBF,EAAqB,6DAA6DG,KAAKH,CAAkB,EAAI9jB,OAC7HqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,GAAKA,EAAc,CAAC,EAAIhkB,OAClG,OAAIqR,EACAA,EAAW6S,mBAAmB7S,CAAQ,GAEtC2S,EAAgBF,EAAqB,8BAA8BG,KAAKH,CAAkB,EAAI9jB,OAC9FqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,EAAIhkB,QAEvEU,EAASyjB,KAAAA,EAAO9jB,KAAa8jB,IAAS,CAAE9S,SAAAA,EAAoBD,KAAM+S,EAAMxjB,OAAAA,EAAgBzB,QAAS0B,GAAa,CAC9GD,SAAAA,IAAW,KAAOA,IAAW,IACpC,OAAOD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,OAAAA,QAAQC,QAAsB,IAAW,CACpD,CAEA4uB,oBAAoB3T,EAA6B6R,EAAmCqB,EAAuD/Z,EAAiCzC,EAA2E,CAC/OlR,IAAAA,EAAO,KAAKP,QAAU,mCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAEzB+Q,MAAAA,EAAW,IAAIC,SACjBoJ,GAAAA,GAAY,KACN,MAAA,IAAIva,MAAM,yCAAyC,EAGzDosB,GADAlb,EAASE,OAAO,UAAWmJ,EAAQ4T,SAAU,CAAA,EAC7C/B,GAAkB,eACRpsB,MAAM,+CAA+C,EAE/DkR,EAASE,OAAO,gBAAiBgb,EAAc+B,SAAU,CAAA,EACzDV,GAA+B,MAC/Bvc,EAASE,OAAO,6BAA8Bqc,EAA2BU,SAAU,CAAA,EACnFza,GAAS,MACTxC,EAASE,OAAO,OAAQsC,EAAKya,SAAU,CAAA,EACvCld,GAAS,MACAG,EAAAA,OAAO,OAAQH,EAAKI,KAAMJ,EAAKK,SAAWL,EAAKK,SAAW,MAAM,EAEzElR,IAAAA,EAAwB,CACxBqB,KAAMyP,EACN7Q,OAAQ,OACRlB,QAAS,CACL,OAAU,kBAAA,GAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC2tB,2BAA2B3tB,CAAS,CACnD,CACL,CAEU2tB,2BAA2BztB,EAAuD,CACxF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAkC,KACrD,CAEA+uB,uCAAuC5H,EAAsD,CACrF1mB,IAAAA,EAAO,KAAKP,QAAU,uDAC1B,GAAIinB,IAAmB,KACb,MAAA,IAAIzmB,MAAM,gDAAgD,EAC3DymB,IAAmBxmB,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKumB,CAAc,EAAI,KACnE1mB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK6tB,8CAA8C7tB,CAAS,CACtE,CACL,CAEU6tB,8CAA8C3tB,EAAsC,CAC1F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAivB,uBAAuBra,EAAwD,CACvEnU,IAAAA,EAAO,KAAKP,QAAU,sCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUwS,CAAO,EAInC7T,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK+tB,8BAA8B/tB,CAAS,CACtD,CACL,CAEU+tB,8BAA8B7tB,EAAsC,CAC1E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAmvB,oBAAoB1kB,EAAqE,CACjFhK,IAAAA,EAAO,KAAKP,QAAU,oCAC1B,GAAIuK,IAAmB,eACT/J,MAAM,gDAAgD,EAC3D+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACnEhK,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACiuB,2BAA2BjuB,CAAS,CACnD,CACL,CAEUiuB,2BAA2B/tB,EAAqD,CACtF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgC,IAAW,CAC9D,CAEAqvB,8BAA8BpsB,EAA+BwH,EAAsF,CAC3IhK,IAAAA,EAAO,KAAKP,QAAU,8CAC1B,GAAI+C,IAAc,KACR,MAAA,IAAIvC,MAAM,2CAA2C,EAG/D,GAFSuC,IAActC,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKqC,CAAS,EAAI,KAC5DwH,IAAmB,KACT,MAAA,IAAA/J,MAAM,gDAAgD,EAC3D+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACnEhK,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACmuB,qCAAqCnuB,CAAS,CAC7D,CACL,CAEUmuB,qCAAqCjuB,EAAsE,CACjH,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiD,KACpE,CAEAuvB,0BAA0B9kB,EAAoC+kB,EAA+D,CACrH/uB,IAAAA,EAAO,KAAKP,QAAU,oEAC1B,GAAIuK,IAAmB,KACT,MAAA,IAAA/J,MAAM,gDAAgD,EAGpE,GAFS+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACtE+kB,IAAa,KACH,MAAA,IAAA9uB,MAAM,0CAA0C,EACrD8uB,IAAa7uB,SAClBF,GAAQ,YAAcG,mBAAmB,GAAK4uB,CAAQ,EAAI,KACvD/uB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACsuB,iCAAiCtuB,CAAS,CACzD,CACL,CAEUsuB,iCAAiCpuB,EAAqD,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgC,IAAY,CAC/D,CAEA0vB,6BAA6BpU,EAAkD,CACvE7a,IAAAA,EAAO,KAAKP,QAAU,4CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUkZ,CAAQ,EAIpCva,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACwuB,oCAAoCxuB,CAAS,CAC5D,CACL,CAEUwuB,oCAAoCtuB,EAAkD,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA6B,KAChD,CAEA4vB,+BAA+BnlB,EAAoColB,EAAgDC,EAA6DC,EAA4D,CACpOtvB,IAAAA,EAAO,KAAKP,QAAU,+CAC1B,GAAIuK,IAAmB,eACT/J,MAAM,gDAAgD,EAC3D+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACjColB,GAAwB,OAC7DpvB,GAAQ,uBAAyBG,mBAAmB,GAAKivB,CAAmB,EAAI,KAC3CC,GAAwB,OAC7DrvB,GAAQ,uBAAyBG,mBAAmB,GAAKkvB,CAAmB,EAAI,KAC/CC,GAAoB,OACrDtvB,GAAQ,mBAAqBG,mBAAmB,GAAKmvB,CAAe,EAAI,KACrEtvB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE/B,IAAIC,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CAEb,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC6uB,sCAAsC7uB,CAAS,CAC9D,CACL,CAEU6uB,sCAAsC3uB,EAAmC,CAC/E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,CACC,EACMN,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAc,IAAW,CAC5C,CAEAiwB,6BAA6BxlB,EAAoC+kB,EAAoF,CAC7I/uB,IAAAA,EAAO,KAAKP,QAAU,6CAC1B,GAAIuK,IAAmB,KACT,MAAA,IAAA/J,MAAM,gDAAgD,EAGpE,GAFS+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACtE+kB,IAAa,eACH9uB,MAAM,0CAA0C,EACrD8uB,IAAa7uB,SAClBF,GAAQ,YAAcG,mBAAmB,GAAK4uB,CAAQ,EAAI,KACvD/uB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO+uB,oCAAoC/uB,CAAS,CAC5D,CACL,CAEU+uB,oCAAoC7uB,EAA0E,CACpH,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAqD,KACxE,CAEAmwB,mCAAmC1lB,EAAsF,CACjHhK,IAAAA,EAAO,KAAKP,QAAU,mDAC1B,GAAIuK,IAAmB,KACb,MAAA,IAAI/J,MAAM,gDAAgD,EAC3D+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACnEhK,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKivB,0CAA0CjvB,CAAS,CAClE,CACL,CAEUivB,0CAA0C/uB,EAAsE,CACtH,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiD,IAAY,CAChF,CAEAqwB,qCAAqCzb,EAA4E,CACzGnU,IAAAA,EAAO,KAAKP,QAAU,oDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUwS,CAAO,EAInC7T,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACmvB,4CAA4CnvB,CAAS,CACpE,CACL,CAEUmvB,4CAA4CjvB,EAA4C,CAC9F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,KAC1C,CAEAuwB,0BAA0B9lB,EAAqE,CACvFhK,IAAAA,EAAO,KAAKP,QAAU,0CAC1B,GAAIuK,IAAmB,KACT,MAAA,IAAA/J,MAAM,gDAAgD,EAC3D+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACnEhK,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACqvB,iCAAiCrvB,CAAS,CACzD,CACL,CAEUqvB,iCAAiCnvB,EAAqD,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgC,IAAY,CAC/D,CACJ,CAmFO,MAAMywB,uBAAuBjxB,aAAyC,CAKzEC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAwwB,kCAAkC5qB,EAAqCyS,EAAgE,CAC/H9X,IAAAA,EAAO,KAAKP,QAAU,mDAC1B,GAAI4F,IAAoB,eACVpF,MAAM,iDAAiD,EAGrE,GAFSoF,IAAoBnF,SACzBF,GAAQ,mBAAqBG,mBAAmB,GAAKkF,CAAe,EAAI,KACxEyS,IAAe,KACT,MAAA,IAAI7X,MAAM,4CAA4C,EACvD6X,IAAe5X,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAK2X,CAAU,EAAI,KAC3D9X,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKwvB,yCAAyCxvB,CAAS,CACjE,CACL,CAEUwvB,yCAAyCtvB,EAAmD,CAClG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA8B,IAAY,CAC7D,CAEA4wB,iCAAiCC,EAA8D,CACvFpwB,IAAAA,EAAO,KAAKP,QAAU,kDAC1B,GAAI2wB,IAAY,KACN,MAAA,IAAInwB,MAAM,yCAAyC,EACpDmwB,IAAYlwB,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKiwB,CAAO,EAAI,KACrDpwB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK2vB,wCAAwC3vB,CAAS,CAChE,CACL,CAEU2vB,wCAAwCzvB,EAAqD,CACnG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgC,IAAY,CAC/D,CAEA+wB,kBAAkB7uB,EAA2B+d,EAA8D,CACnGxf,IAAAA,EAAO,KAAKP,QAAU,mCAC1B,GAAI+f,IAAkB,KACR,MAAA,IAAAvf,MAAM,+CAA+C,EAC1Duf,IAAkBtf,SACvBF,GAAQ,iBAAmBG,mBAAmB,GAAKqf,CAAa,EAAI,KACjExf,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK6vB,yBAAyB7vB,CAAS,CACjD,CACL,CAEU6vB,yBAAyB3vB,EAA8C,CAC7E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAyB,IAAY,CACxD,CAEAixB,kCAAkC/uB,EAAgE,CAC1FzB,IAAAA,EAAO,KAAKP,QAAU,kDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK+vB,yCAAyC/vB,CAAS,CACjE,CACL,CAEU+vB,yCAAyC7vB,EAAyD,CACxG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAY,CACnE,CAEAmxB,yBAAyBjvB,EAAoF,CACrGzB,IAAAA,EAAO,KAAKP,QAAU,yCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKiwB,gCAAgCjwB,CAAS,CACxD,CACL,CAEUiwB,gCAAgC/vB,EAA6E,CACnH,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwD,IAAY,CACvF,CAEAqxB,qBAAqBC,EAA0CC,EAAwE,CAC/H9wB,IAAAA,EAAO,KAAKP,QAAU,sCAC1B,GAAIoxB,IAAwB,KACd,MAAA,IAAA5wB,MAAM,qDAAqD,EAGzE,GAFS4wB,IAAwB3wB,SAC7BF,GAAQ,uBAAyBG,mBAAmB,GAAK0wB,CAAmB,EAAI,KAChFC,IAA2B,KACjB,MAAA,IAAA7wB,MAAM,wDAAwD,EACnE6wB,IAA2B5wB,SAChCF,GAAQ,0BAA4BG,mBAAmB,GAAK2wB,CAAsB,EAAI,KACnF9wB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACqwB,4BAA4BrwB,CAAS,CACpD,CACL,CAEUqwB,4BAA4BnwB,EAA+C,CACjF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEAyxB,qCAAwE,CAChEhxB,IAAAA,EAAO,KAAKP,QAAU,oDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOuwB,2CAA2CvwB,CAAS,CACnE,CACL,CAEUuwB,2CAA2CrwB,EAAsD,CACvG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiC,IAAW,CAC/D,CAEA2xB,4BAA4BxnB,EAA+CyM,EAAuClS,EAAiCC,EAAmE,CAC9MlE,IAAAA,EAAO,KAAKP,QAAU,6CACM0W,GAAe,OAC3CnW,GAAQ,cAAgBG,mBAAmB,GAAKgW,CAAU,EAAI,KACxClS,GAAS,OAC/BjE,GAAQ,QAAUG,mBAAmB,GAAK8D,CAAI,EAAI,KAC5BC,GAAS,OAC/BlE,GAAQ,QAAUG,mBAAmB,GAAK+D,CAAI,EAAI,KAC/ClE,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACywB,mCAAmCzwB,CAAS,CAC3D,CACL,CAEUywB,mCAAmCvwB,EAAsD,CAC/F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiC,IAAW,CAC/D,CAEA6xB,wBAAwBC,EAAyF,CACzGrxB,IAAAA,EAAO,KAAKP,QAAU,yCAC1B,GAAI4xB,IAAiC,KACvB,MAAA,IAAApxB,MAAM,8DAA8D,EACzEoxB,IAAiCnxB,SACtCF,GAAQ,gCAAkCG,mBAAmB,GAAKkxB,CAA4B,EAAI,KAC/FrxB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC4wB,+BAA+B5wB,CAAS,CACvD,CACL,CAEU4wB,+BAA+B1wB,EAA2D,CAChG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsC,IAAY,CACrE,CAEAgyB,gCAAgCnB,EAAgD,CACxEpwB,IAAAA,EAAO,KAAKP,QAAU,iDAC1B,GAAI2wB,IAAY,KACN,MAAA,IAAInwB,MAAM,yCAAyC,EACpDmwB,IAAYlwB,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKiwB,CAAO,EAAI,KACrDpwB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO8wB,uCAAuC9wB,CAAS,CAC/D,CACL,CAEU8wB,uCAAuC5wB,EAAuC,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAkB,IAAY,CACjD,CAEAkyB,wBAAwBrB,EAA6BsB,EAAwF,CACrI1xB,IAAAA,EAAO,KAAKP,QAAU,yCAC1B,GAAI2wB,IAAY,KACF,MAAA,IAAAnwB,MAAM,yCAAyC,EACpDmwB,IAAYlwB,SACjBF,GAAQ,WAAaG,mBAAmB,GAAKiwB,CAAO,EAAI,KACjBsB,GAA0B,OACjE1xB,GAAQ,yBAA2BG,mBAAmB,GAAKuxB,CAAqB,EAAI,KACjF1xB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACixB,+BAA+BjxB,CAAS,CACvD,CACL,CAEUixB,+BAA+B/wB,EAA0D,CAC/F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAqC,IAAY,CACpE,CAEAqyB,iCAAiCnwB,EAA2E,CACpGzB,IAAAA,EAAO,KAAKP,QAAU,iDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACmxB,wCAAwCnxB,CAAS,CAChE,CACL,CAEUmxB,wCAAwCjxB,EAAoE,CAClH,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA+C,IAAY,CAC9E,CAEAuyB,qCAAqCrwB,EAA2BswB,EAAgG,CACxJ/xB,IAAAA,EAAO,KAAKP,QAAU,sDAC1B,GAAIsyB,IAAmB,KACT,MAAA,IAAA9xB,MAAM,gDAAgD,EAC3D8xB,IAAmB7xB,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK4xB,CAAc,EAAI,KACnE/xB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKsxB,4CAA4CtxB,CAAS,CACpE,CACL,CAEUsxB,4CAA4CpxB,EAAwE,CAC1H,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAmD,IAAY,CAClF,CAEA0yB,oBAAoBvoB,EAAkCwoB,EAA2D,CACzGlyB,IAAAA,EAAO,KAAKP,QAAU,qCAC1B,GAAIyyB,IAAa,KACH,MAAA,IAAAjyB,MAAM,0CAA0C,EACrDiyB,IAAahyB,SAClBF,GAAQ,YAAcG,mBAAmB,GAAK+xB,CAAQ,EAAI,KACvDlyB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACyxB,2BAA2BzxB,CAAS,CACnD,CACL,CAEUyxB,2BAA2BvxB,EAAgD,CACjF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAY,CAC1D,CAEA6yB,6BAA6BC,EAAkE,CACvFryB,IAAAA,EAAO,KAAKP,QAAU,8CAC1B,GAAI4yB,IAAyB,KACf,MAAA,IAAApyB,MAAM,sDAAsD,EACjEoyB,IAAyBnyB,SAC9BF,GAAQ,wBAA0BG,mBAAmB,GAAKkyB,CAAoB,EAAI,KAC/EryB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,6BAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK4xB,oCAAoC5xB,CAAS,CAC5D,CACL,CAEU4xB,oCAAoC1xB,EAA2C,CACrF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EAChBD,GADwBD,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAMmjB,EAAqBpjB,EAASxB,QAAUwB,EAASxB,QAAQ6kB,IAAI,qBAAqB,EAAI/jB,OAC5F,IAAIgkB,EAAgBF,EAAqB,6DAA6DG,KAAKH,CAAkB,EAAI9jB,OAC7HqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,GAAKA,EAAc,CAAC,EAAIhkB,OAClG,OAAIqR,EACAA,EAAW6S,mBAAmB7S,CAAQ,GAEtC2S,EAAgBF,EAAqB,8BAA8BG,KAAKH,CAAkB,EAAI9jB,OAC9FqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,EAAIhkB,QAEvEU,EAASyjB,KAAAA,EAAO9jB,KAAa8jB,IAAS,CAAE9S,SAAAA,EAAoBD,KAAM+S,EAAMxjB,OAAAA,EAAgBzB,QAAS0B,GAAa,CAC9GD,SAAAA,IAAW,KAAOA,IAAW,IACpC,OAAOD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,OAAAA,QAAQC,QAAsB,IAAY,CACrD,CAEAgzB,oBAAoB7oB,EAA8D,CAC1E1J,IAAAA,EAAO,KAAKP,QAAU,oCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8xB,2BAA2B9xB,CAAS,CACnD,CACL,CAEU8xB,2BAA2B5xB,EAAgD,CACjF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAEAkzB,mCAAmClO,EAA0F,CACrHvkB,IAAAA,EAAO,KAAKP,QAAU,mDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU4iB,CAAM,EAIlCjkB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKgyB,0CAA0ChyB,CAAS,CAClE,CACL,CAEUgyB,0CAA0C9xB,EAAsC,CACtF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAozB,UAAUC,EAAuD,CACzD5yB,IAAAA,EAAO,KAAKP,QAAU,2BAC1B,GAAImzB,IAAa,KACH,MAAA,IAAA3yB,MAAM,0CAA0C,EACrD2yB,IAAa1yB,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKyyB,CAAQ,EAAI,KACvD5yB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACmyB,iBAAiBnyB,CAAS,CACzC,CACL,CAEUmyB,iBAAiBjyB,EAA6C,CACpE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,KAC3C,CAEAuzB,YAAYC,EAAgD,CACpD/yB,IAAAA,EAAO,KAAKP,QAAU,4BACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUoxB,CAAM,EAIlCzyB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACsyB,mBAAmBtyB,CAAS,CAC3C,CACL,CAEUsyB,mBAAmBpyB,EAA4C,CACrE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAW,CACrD,CAEA0zB,aAAaL,EAAgD,CACrD5yB,IAAAA,EAAO,KAAKP,QAAU,8BAC1B,GAAImzB,IAAa,KACH,MAAA,IAAA3yB,MAAM,0CAA0C,EACrD2yB,IAAa1yB,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKyyB,CAAQ,EAAI,KACvD5yB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACwyB,oBAAoBxyB,CAAS,CAC5C,CACL,CAEUwyB,oBAAoBtyB,EAAsC,CAChE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEA4zB,mBAAmBC,EAAqE,CAChFpzB,IAAAA,EAAO,KAAKP,QAAU,mCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUyxB,CAAa,EAIzC9yB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC2yB,0BAA0B3yB,CAAS,CAClD,CACL,CAEU2yB,0BAA0BzyB,EAA4C,CAC5E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAW,CACrD,CAEA+zB,oBAAoBC,EAAuD,CACnEvzB,IAAAA,EAAO,KAAKP,QAAU,qCAC1B,GAAI8zB,IAAoB,KACV,MAAA,IAAAtzB,MAAM,iDAAiD,EAC5DszB,IAAoBrzB,SACzBF,GAAQ,mBAAqBG,mBAAmB,GAAKozB,CAAe,EAAI,KACrEvzB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK8yB,2BAA2B9yB,CAAS,CACnD,CACL,CAEU8yB,2BAA2B5yB,EAAsC,CACvE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAk0B,kCAA0E,CAClEzzB,IAAAA,EAAO,KAAKP,QAAU,iDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACgzB,wCAAwChzB,CAAS,CAChE,CACL,CAEUgzB,wCAAwC9yB,EAA2D,CACzG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsC,IAAW,CACpE,CAEAo0B,iCAAiCC,EAAsF,CAC/G5zB,IAAAA,EAAO,KAAKP,QAAU,iDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiyB,CAAyB,EAIrDtzB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACmzB,wCAAwCnzB,CAAS,CAChE,CACL,CAEUmzB,wCAAwCjzB,EAA4C,CAC1F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAY,CACtD,CAEAu0B,iCAAiCF,EAAgF,CACzG5zB,IAAAA,EAAO,KAAKP,QAAU,iDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUiyB,CAAyB,EAIrDtzB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKqzB,wCAAwCrzB,CAAS,CAChE,CACL,CAEUqzB,wCAAwCnzB,EAAsC,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAy0B,iCAAiCC,EAAoE,CAC7Fj0B,IAAAA,EAAO,KAAKP,QAAU,kDAC1B,GAAIw0B,IAAiC,KACvB,MAAA,IAAAh0B,MAAM,8DAA8D,EACzEg0B,IAAiC/zB,SACtCF,GAAQ,gCAAkCG,mBAAmB,GAAK8zB,CAA4B,EAAI,KAC/Fj0B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKwzB,wCAAwCxzB,CAAS,CAChE,CACL,CAEUwzB,wCAAwCtzB,EAAsC,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEA40B,qCAAwE,CAChEn0B,IAAAA,EAAO,KAAKP,QAAU,oDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC0zB,2CAA2C1zB,CAAS,CACnE,CACL,CAEU0zB,2CAA2CxzB,EAAsD,CACvG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiC,IAAY,CAChE,CAEA80B,gCAAgCC,EAAyE,CACjGt0B,IAAAA,EAAO,KAAKP,QAAU,iDAC1B,GAAI60B,IAAsB,KAChB,MAAA,IAAIr0B,MAAM,mDAAmD,EAC9Dq0B,IAAsBp0B,SAC3BF,GAAQ,qBAAuBG,mBAAmB,GAAKm0B,CAAiB,EAAI,KACzEt0B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC6zB,uCAAuC7zB,CAAS,CAC/D,CACL,CAEU6zB,uCAAuC3zB,EAAsD,CACnG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiC,IAAW,CAC/D,CAEAi1B,4BAA4B9qB,EAA+C,CACnE1J,IAAAA,EAAO,KAAKP,QAAU,4CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK+zB,mCAAmC/zB,CAAS,CAC3D,CACL,CAEU+zB,mCAAmC7zB,EAAqC,CAC9E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgB,IAAW,CAC9C,CAEAm1B,4BAA4BhrB,EAAgD,CACpE1J,IAAAA,EAAO,KAAKP,QAAU,4CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKi0B,mCAAmCj0B,CAAS,CAC3D,CACL,CAEUi0B,mCAAmC/zB,EAAsC,CAC/E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAq1B,4BAA4BC,EAAmD,CACvE70B,IAAAA,EAAO,KAAKP,QAAU,4CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUkzB,CAAuB,EAInDv0B,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACo0B,mCAAmCp0B,CAAS,CAC3D,CACL,CAEUo0B,mCAAmCl0B,EAAsC,CAC/E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAw1B,oBAAoB1vB,EAAqC4K,EAAwC+kB,EAAqF,CAC9Kh1B,IAAAA,EAAO,KAAKP,QAAU,qCAC1B,GAAI4F,IAAoB,KACV,MAAA,IAAApF,MAAM,iDAAiD,EAC5DoF,IAAoBnF,SACzBF,GAAQ,mBAAqBG,mBAAmB,GAAKkF,CAAe,EAAI,KAC5C4K,GAAe,OAC3CjQ,GAAQ,cAAgBG,mBAAmB,GAAK8P,CAAU,EAAI,KACtB+kB,GAA2B,OACnEh1B,GAAQ,0BAA4BG,mBAAmB,GAAK60B,CAAsB,EAAI,KACnFh1B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACu0B,2BAA2Bv0B,CAAS,CACnD,CACL,CAEUu0B,2BAA2Br0B,EAAsC,CACvE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEA21B,kBAAkB7vB,EAAuD,CACjErF,IAAAA,EAAO,KAAKP,QAAU,mCAC1B,GAAI4F,IAAoB,KACd,MAAA,IAAIpF,MAAM,iDAAiD,EAC5DoF,IAAoBnF,SACzBF,GAAQ,mBAAqBG,mBAAmB,GAAKkF,CAAe,EAAI,KACrErF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKy0B,yBAAyBz0B,CAAS,CACjD,CACL,CAEUy0B,yBAAyBv0B,EAAsC,CACrE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEA61B,qBAAqB/vB,EAAuD,CACpErF,IAAAA,EAAO,KAAKP,QAAU,sCAC1B,GAAI4F,IAAoB,KACd,MAAA,IAAIpF,MAAM,iDAAiD,EAC5DoF,IAAoBnF,SACzBF,GAAQ,mBAAqBG,mBAAmB,GAAKkF,CAAe,EAAI,KACrErF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK20B,4BAA4B30B,CAAS,CACpD,CACL,CAEU20B,4BAA4Bz0B,EAAsC,CACxE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEA+1B,qCAAqC5rB,EAAiH,CAC9I1J,IAAAA,EAAO,KAAKP,QAAU,qDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK60B,4CAA4C70B,CAAS,CACpE,CACL,CAEU60B,4CAA4C30B,EAAsD,CACxG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiC,IAAY,CAChE,CAEAi2B,4BAA4BC,EAAiDzrB,EAAsD,CAC3HhK,IAAAA,EAAO,KAAKP,QAAU,iBAC1B,GAAIuK,IAAmB,KACT,MAAA,IAAA/J,MAAM,gDAAgD,EAC3D+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACnEhK,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU8zB,CAAsB,EAIlDn1B,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKg1B,mCAAmCh1B,CAAS,CAC3D,CACL,CAEUg1B,mCAAmC90B,EAAsC,CAC/E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAo2B,0BAA0B3rB,EAAsE,CACxFhK,IAAAA,EAAO,KAAKP,QAAU,2CAC1B,GAAIuK,IAAmB,KACT,MAAA,IAAA/J,MAAM,gDAAgD,EAC3D+J,IAAmB9J,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAK6J,CAAc,EAAI,KACnEhK,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACk1B,iCAAiCl1B,CAAS,CACzD,CACL,CAEUk1B,iCAAiCh1B,EAAsD,CAC7F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiC,IAAY,CAChE,CAEAs2B,gBAAgBp0B,EAA2Bq0B,EAAsE,CACzG91B,IAAAA,EAAO,KAAKP,QAAU,iCAC1B,GAAIq2B,IAA6B,eACnB71B,MAAM,0DAA0D,EACrE61B,IAA6B51B,SAClCF,GAAQ,4BAA8BG,mBAAmB,GAAK21B,CAAwB,EAAI,KACvF91B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,0BAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACq1B,uBAAuBr1B,CAAS,CAC/C,CACL,CAEUq1B,uBAAuBn1B,EAA2C,CACxE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EAChBD,GADwBD,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAMmjB,EAAqBpjB,EAASxB,QAAUwB,EAASxB,QAAQ6kB,IAAI,qBAAqB,EAAI/jB,OAC5F,IAAIgkB,EAAgBF,EAAqB,6DAA6DG,KAAKH,CAAkB,EAAI9jB,OAC7HqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,GAAKA,EAAc,CAAC,EAAIhkB,OAClG,OAAIqR,EACAA,EAAW6S,mBAAmB7S,CAAQ,GAEtC2S,EAAgBF,EAAqB,8BAA8BG,KAAKH,CAAkB,EAAI9jB,OAC9FqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,EAAIhkB,QAEvEU,EAASyjB,KAAAA,EAAO9jB,KAAa8jB,IAAS,CAAE9S,SAAAA,EAAoBD,KAAM+S,EAAMxjB,OAAAA,EAAgBzB,QAAS0B,GAAa,CAC9GD,SAAAA,IAAW,KAAOA,IAAW,IACpC,OAAOD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,OAAAA,QAAQC,QAAsB,KACzC,CAEAomB,+BAA+BqQ,EAA0D,CACjFh2B,IAAAA,EAAO,KAAKP,QAAU,gDAC1B,GAAIu2B,IAAkB,KACR,MAAA,IAAA/1B,MAAM,+CAA+C,EAC1D+1B,IAAkB91B,SACvBF,GAAQ,iBAAmBG,mBAAmB,GAAK61B,CAAa,EAAI,KACjEh2B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,6BAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACklB,sCAAsCllB,CAAS,CAC9D,CACL,CAEUklB,sCAAsChlB,EAA2C,CACvF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EAChBD,GADwBD,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAMmjB,EAAqBpjB,EAASxB,QAAUwB,EAASxB,QAAQ6kB,IAAI,qBAAqB,EAAI/jB,OAC5F,IAAIgkB,EAAgBF,EAAqB,6DAA6DG,KAAKH,CAAkB,EAAI9jB,OAC7HqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,GAAKA,EAAc,CAAC,EAAIhkB,OAClG,OAAIqR,EACAA,EAAW6S,mBAAmB7S,CAAQ,GAEtC2S,EAAgBF,EAAqB,8BAA8BG,KAAKH,CAAkB,EAAI9jB,OAC9FqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,EAAIhkB,QAEvEU,EAASyjB,KAAAA,EAAO9jB,KAAa8jB,IAAS,CAAE9S,SAAAA,EAAoBD,KAAM+S,EAAMxjB,OAAAA,EAAgBzB,QAAS0B,GAAa,CAC9GD,SAAAA,IAAW,KAAOA,IAAW,IACpC,OAAOD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,OAAAA,QAAQC,QAAsB,IAAY,CACrD,CACJ,CA6BO,MAAM02B,qBAAqBl3B,aAAuC,CAKrEC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAy2B,mCAAwG,CAChGl2B,IAAAA,EAAO,KAAKP,QAAU,gDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACy1B,yCAAyCz1B,CAAS,CACjE,CACL,CAEUy1B,yCAAyCv1B,EAAwF,CACvI,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAmE,IAAW,CACjG,CAEA62B,4BAA4BC,EAA+F,CACnHr2B,IAAAA,EAAO,KAAKP,QAAU,0CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU00B,CAAY,EAIxC/1B,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC41B,mCAAmC51B,CAAS,CAC3D,CACL,CAEU41B,mCAAmC11B,EAA4C,CACrF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAY,CACtD,CAEAg3B,oCAAoCC,EAAoCC,EAA4E,CAC5Iz2B,IAAAA,EAAO,KAAKP,QAAU,mDAC1B,GAAI+2B,IAAmB,KACb,MAAA,IAAIv2B,MAAM,gDAAgD,EAC3Du2B,IAAmBt2B,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKq2B,CAAc,EAAI,KACnEx2B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU80B,CAAoB,EAIhDn2B,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACg2B,2CAA2Ch2B,CAAS,CACnE,CACL,CAEUg2B,2CAA2C91B,EAAsC,CACvF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAo3B,8BAA2F,CACnF32B,IAAAA,EAAO,KAAKP,QAAU,2CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOk2B,oCAAoCl2B,CAAS,CAC5D,CACL,CAEUk2B,oCAAoCh2B,EAAgF,CAC1H,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2D,IAAY,CAC1F,CAEAs3B,uBAAuBR,EAAuF,CACtGr2B,IAAAA,EAAO,KAAKP,QAAU,qCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU00B,CAAY,EAIxC/1B,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACo2B,8BAA8Bp2B,CAAS,CACtD,CACL,CAEUo2B,8BAA8Bl2B,EAA4C,CAChF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAW,CACrD,CAEAw3B,+BAA+BP,EAAoCC,EAAyE,CACpIz2B,IAAAA,EAAO,KAAKP,QAAU,8CAC1B,GAAI+2B,IAAmB,KACb,MAAA,IAAIv2B,MAAM,gDAAgD,EAC3Du2B,IAAmBt2B,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKq2B,CAAc,EAAI,KACnEx2B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU80B,CAAoB,EAIhDn2B,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKs2B,sCAAsCt2B,CAAS,CAC9D,CACL,CAEUs2B,sCAAsCp2B,EAAsC,CAClF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEA03B,mBAAmBT,EAAsD,CACjEx2B,IAAAA,EAAO,KAAKP,QAAU,kCAC1B,GAAI+2B,IAAmB,KACT,MAAA,IAAAv2B,MAAM,gDAAgD,EAC3Du2B,IAAmBt2B,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKq2B,CAAc,EAAI,KACnEx2B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACw2B,0BAA0Bx2B,CAAS,CAClD,CACL,CAEUw2B,0BAA0Bt2B,EAAsC,CACtE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEA43B,wBAAwBztB,EAAoC0tB,EAAiF,CACrIp3B,IAAAA,EAAO,KAAKP,QAAU,uCACS23B,GAAkB,OACjDp3B,GAAQ,iBAAmBG,mBAAmB,GAAKi3B,CAAa,EAAI,KACjEp3B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC22B,+BAA+B32B,CAAS,CACvD,CACL,CAEU22B,+BAA+Bz2B,EAA2D,CAChG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsC,IAAW,CACpE,CAEA+3B,qBAAqB5tB,EAAiC0tB,EAA8E,CAC5Hp3B,IAAAA,EAAO,KAAKP,QAAU,oCACS23B,GAAkB,OACjDp3B,GAAQ,iBAAmBG,mBAAmB,GAAKi3B,CAAa,EAAI,KACjEp3B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC62B,4BAA4B72B,CAAS,CACpD,CACL,CAEU62B,4BAA4B32B,EAAwD,CAC1F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAmC,IAAY,CAClE,CAEAi4B,uBAAuBhB,EAAmE,CAClFx2B,IAAAA,EAAO,KAAKP,QAAU,sCAC1B,GAAI+2B,IAAmB,KACT,MAAA,IAAAv2B,MAAM,gDAAgD,EAC3Du2B,IAAmBt2B,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKq2B,CAAc,EAAI,KACnEx2B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC+2B,8BAA8B/2B,CAAS,CACtD,CACL,CAEU+2B,8BAA8B72B,EAAmD,CACvF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA8B,IAAW,CAC5D,CAEAm4B,0BAA0BhuB,EAAgE,CAClF1J,IAAAA,EAAO,KAAKP,QAAU,wCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,0BAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACi3B,iCAAiCj3B,CAAS,CACzD,CACL,CAEUi3B,iCAAiC/2B,EAA2C,CAClF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EAChBD,GADwBD,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAMmjB,EAAqBpjB,EAASxB,QAAUwB,EAASxB,QAAQ6kB,IAAI,qBAAqB,EAAI/jB,OAC5F,IAAIgkB,EAAgBF,EAAqB,6DAA6DG,KAAKH,CAAkB,EAAI9jB,OAC7HqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,GAAKA,EAAc,CAAC,EAAIhkB,OAClG,OAAIqR,EACAA,EAAW6S,mBAAmB7S,CAAQ,GAEtC2S,EAAgBF,EAAqB,8BAA8BG,KAAKH,CAAkB,EAAI9jB,OAC9FqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,EAAIhkB,QAEvEU,EAASyjB,KAAAA,EAAO9jB,KAAa8jB,IAAS,CAAE9S,SAAAA,EAAoBD,KAAM+S,EAAMxjB,OAAAA,EAAgBzB,QAAS0B,GAAa,CAC9GD,SAAAA,IAAW,KAAOA,IAAW,IACpC,OAAOD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,OAAAA,QAAQC,QAAsB,IAAY,CACrD,CAEAq4B,6BAA6BluB,EAAmE,CACxF1J,IAAAA,EAAO,KAAKP,QAAU,2CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,0BAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACm3B,oCAAoCn3B,CAAS,CAC5D,CACL,CAEUm3B,oCAAoCj3B,EAA2C,CACrF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EAChBD,GADwBD,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAMmjB,EAAqBpjB,EAASxB,QAAUwB,EAASxB,QAAQ6kB,IAAI,qBAAqB,EAAI/jB,OAC5F,IAAIgkB,EAAgBF,EAAqB,6DAA6DG,KAAKH,CAAkB,EAAI9jB,OAC7HqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,GAAKA,EAAc,CAAC,EAAIhkB,OAClG,OAAIqR,EACAA,EAAW6S,mBAAmB7S,CAAQ,GAEtC2S,EAAgBF,EAAqB,8BAA8BG,KAAKH,CAAkB,EAAI9jB,OAC9FqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,EAAIhkB,QAEvEU,EAASyjB,KAAAA,EAAO9jB,KAAa8jB,IAAS,CAAE9S,SAAAA,EAAoBD,KAAM+S,EAAMxjB,OAAAA,EAAgBzB,QAAS0B,GAAa,CAC9GD,SAAAA,IAAW,KAAOA,IAAW,IACpC,OAAOD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,OAAAA,QAAQC,QAAsB,IAAW,CACpD,CACJ,OAmBau4B,6BAA6B/4B,aAA+C,CAKrFC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAy2B,mCAAsH,CAC9Gl2B,IAAAA,EAAO,KAAKP,QAAU,wDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKy1B,yCAAyCz1B,CAAS,CACjE,CACL,CAEUy1B,yCAAyCv1B,EAAsG,CACrJ,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiF,IAAW,CAC/G,CAEA62B,4BAA4BC,EAA6G,CACjIr2B,IAAAA,EAAO,KAAKP,QAAU,kDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU00B,CAAY,EAIxC/1B,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK41B,mCAAmC51B,CAAS,CAC3D,CACL,CAEU41B,mCAAmC11B,EAA4C,CACrF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAY,CACtD,CAEAo3B,8BAAwG,CAChG32B,IAAAA,EAAO,KAAKP,QAAU,mDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOk2B,oCAAoCl2B,CAAS,CAC5D,CACL,CAEUk2B,oCAAoCh2B,EAA6F,CACvI,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwE,KAC3F,CAEAs3B,uBAAuBR,EAAoG,CACnHr2B,IAAAA,EAAO,KAAKP,QAAU,6CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU00B,CAAY,EAIxC/1B,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKo2B,8BAA8Bp2B,CAAS,CACtD,CACL,CAEUo2B,8BAA8Bl2B,EAA4C,CAChF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAY,CACtD,CAEA03B,mBAAmBT,EAAsD,CACjEx2B,IAAAA,EAAO,KAAKP,QAAU,0CAC1B,GAAI+2B,IAAmB,KACb,MAAA,IAAIv2B,MAAM,gDAAgD,EAC3Du2B,IAAmBt2B,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKq2B,CAAc,EAAI,KACnEx2B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKw2B,0BAA0Bx2B,CAAS,CAClD,CACL,CAEUw2B,0BAA0Bt2B,EAAsC,CACtE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAw4B,oCAAyH,CACjH/3B,IAAAA,EAAO,KAAKP,QAAU,yDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKs3B,0CAA0Ct3B,CAAS,CAClE,CACL,CAEUs3B,0CAA0Cp3B,EAAwG,CACxJ,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAmF,IAAW,CACjH,CAEA04B,2BAA2BzB,EAAoCC,EAAgE,CACvHz2B,IAAAA,EAAO,KAAKP,QAAU,kDAC1B,GAAI+2B,IAAmB,KACb,MAAA,IAAIv2B,MAAM,gDAAgD,EAC3Du2B,IAAmBt2B,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKq2B,CAAc,EAAI,KACnEx2B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU80B,CAAoB,EAIhDn2B,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOw3B,kCAAkCx3B,CAAS,CAC1D,CACL,CAEUw3B,kCAAkCt3B,EAAsC,CAC9E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CACJ,CAuBO,MAAM44B,uBAAuBp5B,aAAyC,CAKzEC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEA24B,0BAA0B32B,EAA2D,CAC7EzB,IAAAA,EAAO,KAAKP,QAAU,0CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK23B,iCAAiC33B,CAAS,CACzD,CACL,CAEU23B,iCAAiCz3B,EAA8C,CACrF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAyB,IAAY,CACxD,CAEA+4B,0BAA0B72B,EAAkE,CACpFzB,IAAAA,EAAO,KAAKP,QAAU,0CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC63B,iCAAiC73B,CAAS,CACzD,CACL,CAEU63B,iCAAiC33B,EAAqD,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgC,IAAW,CAC9D,CAEA+3B,qBAAqB71B,EAAuD,CACpEzB,IAAAA,EAAO,KAAKP,QAAU,qCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK62B,4BAA4B72B,CAAS,CACpD,CACL,CAEU62B,4BAA4B32B,EAA8C,CAChF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAyB,IAAY,CACxD,CAEAi5B,qBAAqB/2B,EAA8D,CAC3EzB,IAAAA,EAAO,KAAKP,QAAU,qCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC+3B,4BAA4B/3B,CAAS,CACpD,CACL,CAEU+3B,4BAA4B73B,EAAqD,CACvF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgC,IAAW,CAC9D,CAEAm5B,2BAA2Bj3B,EAA4D,CAC/EzB,IAAAA,EAAO,KAAKP,QAAU,2CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKi4B,kCAAkCj4B,CAAS,CAC1D,CACL,CAEUi4B,kCAAkC/3B,EAA8C,CACtF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAyB,IAAY,CACxD,CAEAq5B,2BAA2Bn3B,EAAmE,CACtFzB,IAAAA,EAAO,KAAKP,QAAU,2CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACm4B,kCAAkCn4B,CAAS,CAC1D,CACL,CAEUm4B,kCAAkCj4B,EAAqD,CAC7F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgC,IAAW,CAC9D,CAEAq4B,6BAA6Bn2B,EAAiCq3B,EAA6D,CACnH94B,IAAAA,EAAO,KAAKP,QAAU,8CAC1B,GAAIq5B,IAAa,KACP,MAAA,IAAI74B,MAAM,0CAA0C,EACrD64B,IAAa54B,SAClBF,GAAQ,YAAcG,mBAAmB,GAAK24B,CAAQ,EAAI,KACvD94B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,0BAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOm3B,oCAAoCn3B,CAAS,CAC5D,CACL,CAEUm3B,oCAAoCj3B,EAA2C,CACrF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EAChBD,GADwBD,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAMmjB,EAAqBpjB,EAASxB,QAAUwB,EAASxB,QAAQ6kB,IAAI,qBAAqB,EAAI/jB,OAC5F,IAAIgkB,EAAgBF,EAAqB,6DAA6DG,KAAKH,CAAkB,EAAI9jB,OAC7HqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,GAAKA,EAAc,CAAC,EAAIhkB,OAClG,OAAIqR,EACAA,EAAW6S,mBAAmB7S,CAAQ,GAEtC2S,EAAgBF,EAAqB,8BAA8BG,KAAKH,CAAkB,EAAI9jB,OAC9FqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,EAAIhkB,QAEvEU,EAASyjB,KAAAA,EAAO9jB,KAAa8jB,IAAS,CAAE9S,SAAAA,EAAoBD,KAAM+S,EAAMxjB,OAAAA,EAAgBzB,QAAS0B,GAAa,CAC9GD,SAAAA,IAAW,KAAOA,IAAW,IACpC,OAAOD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,OAAAA,QAAQC,QAAsB,KACzC,CAEAm4B,0BAA0Bj2B,EAA6Bq3B,EAA6D,CAC5G94B,IAAAA,EAAO,KAAKP,QAAU,2CAC1B,GAAIq5B,IAAa,KACP,MAAA,IAAI74B,MAAM,0CAA0C,EACrD64B,IAAa54B,SAClBF,GAAQ,YAAcG,mBAAmB,GAAK24B,CAAQ,EAAI,KACvD94B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,0BAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOi3B,iCAAiCj3B,CAAS,CACzD,CACL,CAEUi3B,iCAAiC/2B,EAA2C,CAClF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EAChBD,GADwBD,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAMmjB,EAAqBpjB,EAASxB,QAAUwB,EAASxB,QAAQ6kB,IAAI,qBAAqB,EAAI/jB,OAC5F,IAAIgkB,EAAgBF,EAAqB,6DAA6DG,KAAKH,CAAkB,EAAI9jB,OAC7HqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,GAAKA,EAAc,CAAC,EAAIhkB,OAClG,OAAIqR,EACAA,EAAW6S,mBAAmB7S,CAAQ,GAEtC2S,EAAgBF,EAAqB,8BAA8BG,KAAKH,CAAkB,EAAI9jB,OAC9FqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,EAAIhkB,QAEvEU,EAASyjB,KAAAA,EAAO9jB,KAAa8jB,IAAS,CAAE9S,SAAAA,EAAoBD,KAAM+S,EAAMxjB,OAAAA,EAAgBzB,QAAS0B,GAAa,CAC9GD,SAAAA,IAAW,KAAOA,IAAW,IACpC,OAAOD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,OAAAA,QAAQC,QAAsB,KACzC,CAEAw5B,gCAAgCt3B,EAAkCq3B,EAA6D,CACvH94B,IAAAA,EAAO,KAAKP,QAAU,iDAC1B,GAAIq5B,IAAa,KACP,MAAA,IAAI74B,MAAM,0CAA0C,EACrD64B,IAAa54B,SAClBF,GAAQ,YAAcG,mBAAmB,GAAK24B,CAAQ,EAAI,KACvD94B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,0BAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOs4B,uCAAuCt4B,CAAS,CAC/D,CACL,CAEUs4B,uCAAuCp4B,EAA2C,CACxF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EAChBD,GADwBD,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAMmjB,EAAqBpjB,EAASxB,QAAUwB,EAASxB,QAAQ6kB,IAAI,qBAAqB,EAAI/jB,OAC5F,IAAIgkB,EAAgBF,EAAqB,6DAA6DG,KAAKH,CAAkB,EAAI9jB,OAC7HqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,GAAKA,EAAc,CAAC,EAAIhkB,OAClG,OAAIqR,EACAA,EAAW6S,mBAAmB7S,CAAQ,GAEtC2S,EAAgBF,EAAqB,8BAA8BG,KAAKH,CAAkB,EAAI9jB,OAC9FqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,EAAIhkB,QAEvEU,EAASyjB,KAAAA,EAAO9jB,KAAa8jB,IAAS,CAAE9S,SAAAA,EAAoBD,KAAM+S,EAAMxjB,OAAAA,EAAgBzB,QAAS0B,GAAa,CAC9GD,SAAAA,IAAW,KAAOA,IAAW,IACpC,OAAOD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,OAAAA,QAAQC,QAAsB,IAAW,CACpD,CACJ,CA6Da,MAAA05B,mBAAmBl6B,aAAqC,CAKjEC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAy5B,kBAAkBz3B,EAAkB03B,EAAsC3Z,EAAyE,CAC3Ixf,IAAAA,EAAO,KAAKP,QAAU,+BAC1B,GAAI05B,IAAoB,KACV,MAAA,IAAAl5B,MAAM,iDAAiD,EAGrE,GAFSk5B,IAAoBj5B,SACzBF,GAAQ,mBAAqBG,mBAAmB,GAAKg5B,CAAe,EAAI,KACxE3Z,IAAkB,eACRvf,MAAM,+CAA+C,EAC1Duf,IAAkBtf,SACvBF,GAAQ,iBAAmBG,mBAAmB,GAAKqf,CAAa,EAAI,KACjExf,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO04B,yBAAyB14B,CAAS,CACjD,CACL,CAEU04B,yBAAyBx4B,EAAyD,CACxF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAW,CAClE,CAEA85B,yBAA+D,CACvDr5B,IAAAA,EAAO,KAAKP,QAAU,oCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO44B,+BAA+B54B,CAAS,CACvD,CACL,CAEU44B,+BAA+B14B,EAAyD,CAC9F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoC,IAAY,CACnE,CAEAg6B,4BAA4BC,EAAwD,CAC5Ex5B,IAAAA,EAAO,KAAKP,QAAU,yCAC1B,GAAI+5B,IAAsB,KAChB,MAAA,IAAIv5B,MAAM,mDAAmD,EAC9Du5B,IAAsBt5B,SAC3BF,GAAQ,qBAAuBG,mBAAmB,GAAKq5B,CAAiB,EAAI,KACzEx5B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK+4B,mCAAmC/4B,CAAS,CAC3D,CACL,CAEU+4B,mCAAmC74B,EAAqC,CAC9E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgB,IAAW,CAC9C,CAEAm6B,gBAAgBj0B,EAAkD,CAC1DzF,IAAAA,EAAO,KAAKP,QAAU,6BAC1B,GAAIgG,IAAW,KACL,MAAA,IAAIxF,MAAM,wCAAwC,EACnDwF,IAAWvF,SAChBF,GAAQ,UAAYG,mBAAmB,GAAKsF,CAAM,EAAI,KACnDzF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOi5B,uBAAuBj5B,CAAS,CAC/C,CACL,CAEUi5B,uBAAuB/4B,EAA0C,CACvE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAqB,IAAY,CACpD,CAEAq6B,sBAAsBn0B,EAA4Bo0B,EAAwCC,EAAkF,CACpK95B,IAAAA,EAAO,KAAKP,QAAU,mCAC1B,GAAIgG,IAAW,KACL,MAAA,IAAIxF,MAAM,wCAAwC,EACnDwF,IAAWvF,SAChBF,GAAQ,UAAYG,mBAAmB,GAAKsF,CAAM,EAAI,KACZq0B,GAA6B,OACvE95B,GAAQ,4BAA8BG,mBAAmB,GAAK25B,CAAwB,EAAI,KACvF95B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUk4B,CAAiB,EAI7Cv5B,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACq5B,6BAA6Br5B,CAAS,CACrD,CACL,CAEUq5B,6BAA6Bn5B,EAAgD,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAEA0Q,WAAWxK,EAA4ByN,EAAkD8mB,EAA2F,CAC5Kh6B,IAAAA,EAAO,KAAKP,QAAU,wBAC1B,GAAIgG,IAAW,eACDxF,MAAM,wCAAwC,EACnDwF,IAAWvF,SAChBF,GAAQ,UAAYG,mBAAmB,GAAKsF,CAAM,EAAI,KAChByN,GAAyB,OAC/DlT,GAAQ,wBAA0BG,mBAAmB,GAAK+S,CAAoB,EAAI,KAC9C8mB,GAAuB,OAC3Dh6B,GAAQ,sBAAwBG,mBAAmB,GAAK65B,CAAkB,EAAI,KAC3Eh6B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKu5B,kBAAkBv5B,CAAS,CAC1C,CACL,CAEUu5B,kBAAkBr5B,EAAgD,CACxE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAY,CAC1D,CAEA26B,eAAez0B,EAA4B00B,EAA4D,CAC/Fn6B,IAAAA,EAAO,KAAKP,QAAU,4BAC1B,GAAIgG,IAAW,eACDxF,MAAM,wCAAwC,EAG5D,GAFSwF,IAAWvF,SAChBF,GAAQ,UAAYG,mBAAmB,GAAKsF,CAAM,EAAI,KACtD00B,IAAc,KACR,MAAA,IAAIl6B,MAAM,2CAA2C,EACtDk6B,IAAcj6B,SACnBF,GAAQ,aAAeG,mBAAmB,GAAKg6B,CAAS,EAAI,KACzDn6B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK05B,sBAAsB15B,CAAS,CAC9C,CACL,CAEU05B,sBAAsBx5B,EAAgD,CAC5E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAY,CAC1D,CAEA86B,uBAAuB50B,EAA4B60B,EAA2D,CACtGt6B,IAAAA,EAAO,KAAKP,QAAU,oCAC1B,GAAIgG,IAAW,KACD,MAAA,IAAAxF,MAAM,wCAAwC,EACnDwF,IAAWvF,SAChBF,GAAQ,UAAYG,mBAAmB,GAAKsF,CAAM,EAAI,KACnDzF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU24B,CAAa,EAIzCh6B,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK65B,8BAA8B75B,CAAS,CACtD,CACL,CAEU65B,8BAA8B35B,EAAgD,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAY,CAC1D,CAEAi7B,sBAAsB/0B,EAA4Bg1B,EAAqD,CAC/Fz6B,IAAAA,EAAO,KAAKP,QAAU,mCAC1B,GAAIgG,IAAW,KACL,MAAA,IAAIxF,MAAM,wCAAwC,EACnDwF,IAAWvF,SAChBF,GAAQ,UAAYG,mBAAmB,GAAKsF,CAAM,EAAI,KACnDzF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU84B,CAAO,EAInCn6B,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKg6B,6BAA6Bh6B,CAAS,CACrD,CACL,CAEUg6B,6BAA6B95B,EAAgD,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAY,CAC1D,CAEAo7B,sBAAsBl1B,EAA4Bm1B,EAA6D,CACvG56B,IAAAA,EAAO,KAAKP,QAAU,mCAC1B,GAAIgG,IAAW,KACD,MAAA,IAAAxF,MAAM,wCAAwC,EACnDwF,IAAWvF,SAChBF,GAAQ,UAAYG,mBAAmB,GAAKsF,CAAM,EAAI,KACnDzF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUi5B,CAAc,EAI1Ct6B,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKm6B,6BAA6Bn6B,CAAS,CACrD,CACL,CAEUm6B,6BAA6Bj6B,EAAgD,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAY,CAC1D,CAEAu7B,uBAAuB3mB,EAA4D,CAC3EnU,IAAAA,EAAO,KAAKP,QAAU,mCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUwS,CAAO,EAInC7T,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACq6B,8BAA8Br6B,CAAS,CACtD,CACL,CAEUq6B,8BAA8Bn6B,EAAgD,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAEAy7B,iBAAiBv1B,EAA4Bw1B,EAAsCC,EAA0F,CACrKl7B,IAAAA,EAAO,KAAKP,QAAU,8BAC1B,GAAIgG,IAAW,KACD,MAAA,IAAAxF,MAAM,wCAAwC,EAG5D,GAFSwF,IAAWvF,SAChBF,GAAQ,UAAYG,mBAAmB,GAAKsF,CAAM,EAAI,KACtDw1B,IAAoB,KACd,MAAA,IAAIh7B,MAAM,iDAAiD,EAGrE,GAFSg7B,IAAoB/6B,SACzBF,GAAQ,mBAAqBG,mBAAmB,GAAK86B,CAAe,EAAI,KACxEC,IAA4C,KAClC,MAAA,IAAAj7B,MAAM,yEAAyE,EACpFi7B,IAA4Ch7B,SACjDF,GAAQ,2CAA6CG,mBAAmB,GAAK+6B,CAAuC,EAAI,KACrHl7B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACy6B,wBAAwBz6B,CAAS,CAChD,CACL,CAEUy6B,wBAAwBv6B,EAAgD,CAC9E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAY,CAC1D,CAEA67B,gBAAgB31B,EAAwD,CAChEzF,IAAAA,EAAO,KAAKP,QAAU,6BAC1B,GAAIgG,IAAW,KACD,MAAA,IAAAxF,MAAM,wCAAwC,EACnDwF,IAAWvF,SAChBF,GAAQ,UAAYG,mBAAmB,GAAKsF,CAAM,EAAI,KACnDzF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC26B,uBAAuB36B,CAAS,CAC/C,CACL,CAEU26B,uBAAuBz6B,EAAgD,CAC7E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,KAC9C,CAEA+7B,wBAAwBjgB,EAAsCuf,EAA2D,CACjH56B,IAAAA,EAAO,KAAKP,QAAU,qCAC1B,GAAI4b,IAAqB,KACX,MAAA,IAAApb,MAAM,kDAAkD,EAC7Dob,IAAqBnb,SAC1BF,GAAQ,oBAAsBG,mBAAmB,GAAKkb,CAAgB,EAAI,KACvErb,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUi5B,CAAc,EAI1Ct6B,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK66B,+BAA+B76B,CAAS,CACvD,CACL,CAEU66B,+BAA+B36B,EAA8C,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAyB,IAAW,CACvD,CAEAi8B,iCAAiCngB,EAAsC0H,EAA8D,CAC7H/iB,IAAAA,EAAO,KAAKP,QAAU,8CAC1B,GAAI4b,IAAqB,KACf,MAAA,IAAIpb,MAAM,kDAAkD,EAC7Dob,IAAqBnb,SAC1BF,GAAQ,oBAAsBG,mBAAmB,GAAKkb,CAAgB,EAAI,KACvErb,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUohB,CAAW,EAIvCziB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK+6B,wCAAwC/6B,CAAS,CAChE,CACL,CAEU+6B,wCAAwC76B,EAAiD,CAC/F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA4B,IAAW,CAC1D,CAEAm8B,0BAA0BrgB,EAAsCsgB,EAAyC,CACjG37B,IAAAA,EAAO,KAAKP,QAAU,uCAC1B,GAAI4b,IAAqB,KACX,MAAA,IAAApb,MAAM,kDAAkD,EAC7Dob,IAAqBnb,SAC1BF,GAAQ,oBAAsBG,mBAAmB,GAAKkb,CAAgB,EAAI,KACvErb,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUg6B,CAAI,EAIhCr7B,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKk7B,iCAAiCl7B,CAAS,CACzD,CACL,CAEUk7B,iCAAiCh7B,EAA0C,CACjF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAqB,IAAW,CACnD,CAEAs8B,WAAWp2B,EAAwD,CAC3DzF,IAAAA,EAAO,KAAKP,QAAU,wBAC1B,GAAIgG,IAAW,KACL,MAAA,IAAIxF,MAAM,wCAAwC,EACnDwF,IAAWvF,SAChBF,GAAQ,UAAYG,mBAAmB,GAAKsF,CAAM,EAAI,KACnDzF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,SACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKo7B,kBAAkBp7B,CAAS,CAC1C,CACL,CAEUo7B,kBAAkBl7B,EAAgD,CACxE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAEAw8B,6BAA6Bt2B,EAA4Bu2B,EAA0CC,EAA8E,CACzKj8B,IAAAA,EAAO,KAAKP,QAAU,0CAC1B,GAAIgG,IAAW,KACL,MAAA,IAAIxF,MAAM,wCAAwC,EAG5D,GAFSwF,IAAWvF,SAChBF,GAAQ,UAAYG,mBAAmB,GAAKsF,CAAM,EAAI,KACtDu2B,IAAwB,KACd,MAAA,IAAA/7B,MAAM,qDAAqD,EAGzE,GAFS+7B,IAAwB97B,SAC7BF,GAAQ,uBAAyBG,mBAAmB,GAAK67B,CAAmB,EAAI,KAChFC,IAA4B,eAClBh8B,MAAM,yDAAyD,EACpEg8B,IAA4B/7B,SACjCF,GAAQ,2BAA6BG,mBAAmB,GAAK87B,CAAuB,EAAI,KACrFj8B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACw7B,oCAAoCx7B,CAAS,CAC5D,CACL,CAEUw7B,oCAAoCt7B,EAAoD,CAC9F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA+B,IAAW,CAC7D,CAEA48B,YAAY16B,EAAyC,CAC7CzB,IAAAA,EAAO,KAAKP,QAAU,wBACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,0BAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK07B,mBAAmB17B,CAAS,CAC3C,CACL,CAEU07B,mBAAmBx7B,EAA2C,CACpE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EAChBD,GADwBD,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAMmjB,EAAqBpjB,EAASxB,QAAUwB,EAASxB,QAAQ6kB,IAAI,qBAAqB,EAAI/jB,OAC5F,IAAIgkB,EAAgBF,EAAqB,6DAA6DG,KAAKH,CAAkB,EAAI9jB,OAC7HqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,GAAKA,EAAc,CAAC,EAAIhkB,OAClG,OAAIqR,EACAA,EAAW6S,mBAAmB7S,CAAQ,GAEtC2S,EAAgBF,EAAqB,8BAA8BG,KAAKH,CAAkB,EAAI9jB,OAC9FqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,EAAIhkB,QAEvEU,EAASyjB,KAAAA,EAAO9jB,KAAa8jB,IAAS,CAAE9S,SAAAA,EAAoBD,KAAM+S,EAAMxjB,OAAAA,EAAgBzB,QAAS0B,GAAa,CAC9GD,SAAAA,IAAW,KAAOA,IAAW,IACpC,OAAOD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,OAAAA,QAAQC,QAAsB,IAAY,CACrD,CAEA88B,WAAWC,EAAkD,CACrDt8B,IAAAA,EAAO,KAAKP,QAAU,uBACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU26B,CAAS,EAIrCh8B,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC67B,kBAAkB77B,CAAS,CAC1C,CACL,CAEU67B,kBAAkB37B,EAAgD,CACxE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAEAi9B,sBAAsB9yB,EAAuE,CACrF1J,IAAAA,EAAO,KAAKP,QAAU,kCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK+7B,6BAA6B/7B,CAAS,CACrD,CACL,CAEU+7B,6BAA6B77B,EAAgD,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAY,CAC1D,CAEAm9B,+BAA+BhzB,EAAmE,CAC1F1J,IAAAA,EAAO,KAAKP,QAAU,2CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACi8B,sCAAsCj8B,CAAS,CAC9D,CACL,CAEUi8B,sCAAsC/7B,EAAgD,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAEAq9B,sBAAsBlzB,EAAyD,CACvE1J,IAAAA,EAAO,KAAKP,QAAU,kCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKm8B,6BAA6Bn8B,CAAS,CACrD,CACL,CAEUm8B,6BAA6Bj8B,EAAgD,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,KAC9C,CAEAu9B,uBAA8C,CACtC98B,IAAAA,EAAO,KAAKP,QAAU,kCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACq8B,6BAA6Br8B,CAAS,CACrD,CACL,CAEUq8B,6BAA6Bn8B,EAA0C,CAC7E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAqB,IAAW,CACnD,CAEAomB,+BAA+BlgB,EAAmD,CAC1EzF,IAAAA,EAAO,KAAKP,QAAU,4CAC1B,GAAIgG,IAAW,KACD,MAAA,IAAAxF,MAAM,wCAAwC,EACnDwF,IAAWvF,SAChBF,GAAQ,UAAYG,mBAAmB,GAAKsF,CAAM,EAAI,KACnDzF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,6BAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACklB,sCAAsCllB,CAAS,CAC9D,CACL,CAEUklB,sCAAsChlB,EAA2C,CACvF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EAChBD,GADwBD,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,KAAOA,IAAW,IAAK,CAClC,MAAMmjB,EAAqBpjB,EAASxB,QAAUwB,EAASxB,QAAQ6kB,IAAI,qBAAqB,EAAI/jB,OAC5F,IAAIgkB,EAAgBF,EAAqB,6DAA6DG,KAAKH,CAAkB,EAAI9jB,OAC7HqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,GAAKA,EAAc,CAAC,EAAIhkB,OAClG,OAAIqR,EACAA,EAAW6S,mBAAmB7S,CAAQ,GAEtC2S,EAAgBF,EAAqB,8BAA8BG,KAAKH,CAAkB,EAAI9jB,OAC9FqR,EAAW2S,GAAiBA,EAAcpmB,OAAS,EAAIomB,EAAc,CAAC,EAAIhkB,QAEvEU,EAASyjB,KAAAA,EAAO9jB,KAAa8jB,IAAS,CAAE9S,SAAAA,EAAoBD,KAAM+S,EAAMxjB,OAAAA,EAAgBzB,QAAS0B,GAAa,CAC9GD,SAAAA,IAAW,KAAOA,IAAW,IACpC,OAAOD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,OAAAA,QAAQC,QAAsB,IAAY,CACrD,CAEAy9B,oBAAoBtzB,EAA6D,CACzE1J,IAAAA,EAAO,KAAKP,QAAU,gCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKu8B,2BAA2Bv8B,CAAS,CACnD,CACL,CAEUu8B,2BAA2Br8B,EAAgD,CACjF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAEA29B,YAAYxzB,EAAqD,CACzD1J,IAAAA,EAAO,KAAKP,QAAU,wBACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACy8B,mBAAmBz8B,CAAS,CAC3C,CACL,CAEUy8B,mBAAmBv8B,EAAgD,CACzE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,KAC9C,CAEA69B,yBAAyB33B,EAAqD,CACtEzF,IAAAA,EAAO,KAAKP,QAAU,sCAC1B,GAAIgG,IAAW,KACD,MAAA,IAAAxF,MAAM,wCAAwC,EACnDwF,IAAWvF,SAChBF,GAAQ,UAAYG,mBAAmB,GAAKsF,CAAM,EAAI,KACnDzF,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC28B,gCAAgC38B,CAAS,CACxD,CACL,CAEU28B,gCAAgCz8B,EAA6C,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,IAAY,CACvD,CACJ,CAyBa,MAAA+9B,qBAAqBv+B,aAAuC,CAKrEC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEA89B,yBAAyBC,EAAuE,CACxFx9B,IAAAA,EAAO,KAAKP,QAAU,wCAC1B,GAAI+9B,IAAoB,KACd,MAAA,IAAIv9B,MAAM,iDAAiD,EAC5Du9B,IAAoBt9B,SACzBF,GAAQ,mBAAqBG,mBAAmB,GAAKq9B,CAAe,EAAI,KACrEx9B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK+8B,gCAAgC/8B,CAAS,CACxD,CACL,CAEU+8B,gCAAgC78B,EAAqD,CAC3F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgC,IAAW,CAC9D,CAEAm+B,wBAAwBC,EAAmE,CACnF39B,IAAAA,EAAO,KAAKP,QAAU,uCAC1B,GAAIk+B,IAAmB,KACb,MAAA,IAAI19B,MAAM,gDAAgD,EAC3D09B,IAAmBz9B,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKw9B,CAAc,EAAI,KACnE39B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKk9B,+BAA+Bl9B,CAAS,CACvD,CACL,CAEUk9B,+BAA+Bh9B,EAAmD,CACxF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA8B,KACjD,CAEAs+B,yBAAyBC,EAA+D,CAChF99B,IAAAA,EAAO,KAAKP,QAAU,uCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUm8B,CAAC,EAI7Bx9B,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKq9B,gCAAgCr9B,CAAS,CACxD,CACL,CAEUq9B,gCAAgCn9B,EAA0D,CAChG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAqC,IAAY,CACpE,CAEAy+B,qBAAqBR,EAAmE,CAChFx9B,IAAAA,EAAO,KAAKP,QAAU,oCAC1B,GAAI+9B,IAAoB,KACd,MAAA,IAAIv9B,MAAM,iDAAiD,EAC5Du9B,IAAoBt9B,SACzBF,GAAQ,mBAAqBG,mBAAmB,GAAKq9B,CAAe,EAAI,KACrEx9B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKu9B,4BAA4Bv9B,CAAS,CACpD,CACL,CAEUu9B,4BAA4Br9B,EAAiD,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA4B,IAAW,CAC1D,CAEA2+B,oBAAoBP,EAA+D,CAC3E39B,IAAAA,EAAO,KAAKP,QAAU,mCAC1B,GAAIk+B,IAAmB,KACb,MAAA,IAAI19B,MAAM,gDAAgD,EAC3D09B,IAAmBz9B,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKw9B,CAAc,EAAI,KACnE39B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKy9B,2BAA2Bz9B,CAAS,CACnD,CACL,CAEUy9B,2BAA2Bv9B,EAA+C,CAChF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAW,CACxD,CAEA6+B,qBAAqBN,EAAuD,CACpE99B,IAAAA,EAAO,KAAKP,QAAU,mCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUm8B,CAAC,EAI7Bx9B,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC29B,4BAA4B39B,CAAS,CACpD,CACL,CAEU29B,4BAA4Bz9B,EAAsD,CACxF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiC,IAAW,CAC/D,CAEA++B,0BAA0Bd,EAAwE,CAC1Fx9B,IAAAA,EAAO,KAAKP,QAAU,yCAC1B,GAAI+9B,IAAoB,eACVv9B,MAAM,iDAAiD,EAC5Du9B,IAAoBt9B,SACzBF,GAAQ,mBAAqBG,mBAAmB,GAAKq9B,CAAe,EAAI,KACrEx9B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO69B,iCAAiC79B,CAAS,CACzD,CACL,CAEU69B,iCAAiC39B,EAAsD,CAC7F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiC,KACpD,CAEAi/B,yBAAyBb,EAAoE,CACrF39B,IAAAA,EAAO,KAAKP,QAAU,wCAC1B,GAAIk+B,IAAmB,eACT19B,MAAM,gDAAgD,EAC3D09B,IAAmBz9B,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKw9B,CAAc,EAAI,KACnE39B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC+9B,gCAAgC/9B,CAAS,CACxD,CACL,CAEU+9B,gCAAgC79B,EAAoD,CAC1F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA+B,IAAW,CAC7D,CAEAm/B,0BAA0BZ,EAAiE,CACnF99B,IAAAA,EAAO,KAAKP,QAAU,wCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUm8B,CAAC,EAI7Bx9B,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKi+B,iCAAiCj+B,CAAS,CACzD,CACL,CAEUi+B,iCAAiC/9B,EAA2D,CAClG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsC,IAAW,CACpE,CAEAq/B,mBAAmBjB,EAAmD,CAC9D39B,IAAAA,EAAO,KAAKP,QAAU,kCAC1B,GAAIk+B,IAAmB,eACT19B,MAAM,gDAAgD,EAC3D09B,IAAmBz9B,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKw9B,CAAc,EAAI,KACnE39B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE/B,IAAIC,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CAEb,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKm+B,0BAA0Bn+B,CAAS,CAClD,CACL,CAEUm+B,0BAA0Bj+B,EAAmC,CACnE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,CACC,EACMN,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAc,IAAY,CAC7C,CACJ,CAqDO,MAAMu/B,4BAA4B//B,aAA8C,CAKnFC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAs/B,8BAAyD,CACjD/+B,IAAAA,EAAO,KAAKP,QAAU,kDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKs+B,oCAAoCt+B,CAAS,CAC5D,CACL,CAEUs+B,oCAAoCp+B,EAA8C,CACxF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAyB,IAAY,CACxD,CAEA0/B,gCAAmE,CAC3Dj/B,IAAAA,EAAO,KAAKP,QAAU,oDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACw+B,sCAAsCx+B,CAAS,CAC9D,CACL,CAEUw+B,sCAAsCt+B,EAAsD,CAClG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiC,IAAY,CAChE,CAEA4/B,+BAA2D,CACnDn/B,IAAAA,EAAO,KAAKP,QAAU,mDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK0+B,qCAAqC1+B,CAAS,CAC7D,CACL,CAEU0+B,qCAAqCx+B,EAA+C,CAC1F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0B,IAAY,CACzD,CAEA8/B,yBAA2D,CACnDr/B,IAAAA,EAAO,KAAKP,QAAU,6CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK4+B,+BAA+B5+B,CAAS,CACvD,CACL,CAEU4+B,+BAA+B1+B,EAAqD,CAC1F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAgC,KACnD,CAEAggC,iBAAiB71B,EAA0C,CACnD1J,IAAAA,EAAO,KAAKP,QAAU,sCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK8+B,wBAAwB9+B,CAAS,CAChD,CACL,CAEU8+B,wBAAwB5+B,EAAsC,CACpE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,KACpC,CAEAkgC,cAAcC,EAAyD,CAC/D1/B,IAAAA,EAAO,KAAKP,QAAU,oCAC1B,GAAIigC,IAAmB,KACb,MAAA,IAAIz/B,MAAM,gDAAgD,EAC3Dy/B,IAAmBx/B,SACxBF,GAAQ,kBAAoBG,mBAAmB,GAAKu/B,CAAc,EAAI,KACnE1/B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKi/B,qBAAqBj/B,CAAS,CAC7C,CACL,CAEUi/B,qBAAqB/+B,EAAyC,CACpE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoB,IAAY,CACnD,CAEAqgC,uBAAuBl2B,EAA+C,CAC9D1J,IAAAA,EAAO,KAAKP,QAAU,4CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKm/B,8BAA8Bn/B,CAAS,CACtD,CACL,CAEUm/B,8BAA8Bj/B,EAAsC,CAC1E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAugC,oCAAoCC,EAA6C,CACzE//B,IAAAA,EAAO,KAAKP,QAAU,0DAC1B,GAAIsgC,IAAU,KACJ,MAAA,IAAI9/B,MAAM,uCAAuC,EAClD8/B,IAAU7/B,SACfF,GAAQ,SAAWG,mBAAmB,GAAK4/B,CAAK,EAAI,KACjD//B,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACs/B,2CAA2Ct/B,CAAS,CACnE,CACL,CAEUs/B,2CAA2Cp/B,EAAsC,CACvF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEA0gC,6BAA6Bv2B,EAAiD,CACtE1J,IAAAA,EAAO,KAAKP,QAAU,kDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACw/B,oCAAoCx/B,CAAS,CAC5D,CACL,CAEUw/B,oCAAoCt/B,EAAsC,CAChF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEA4gC,+BAA+Bz2B,EAAiD,CACxE1J,IAAAA,EAAO,KAAKP,QAAU,oDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC0/B,sCAAsC1/B,CAAS,CAC9D,CACL,CAEU0/B,sCAAsCx/B,EAAsC,CAClF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEA8gC,uBAAqD,CAC7CrgC,IAAAA,EAAO,KAAKP,QAAU,2CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK4/B,6BAA6B5/B,CAAS,CACrD,CACL,CAEU4/B,6BAA6B1/B,EAAiD,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA4B,IAAY,CAC3D,CAEAghC,wBAAwBC,EAAgD,CAChExgC,IAAAA,EAAO,KAAKP,QAAU,6CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU6+B,CAAQ,EAIpClgC,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO+/B,+BAA+B//B,CAAS,CACvD,CACL,CAEU+/B,+BAA+B7/B,EAAsC,CAC3E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEA2sB,+BAA2E,CACnElsB,IAAAA,EAAO,KAAKP,QAAU,mDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKyrB,qCAAqCzrB,CAAS,CAC7D,CACL,CAEUyrB,qCAAqCvrB,EAA+D,CAC1G,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0C,IAAW,CACxE,CAEAmhC,gCAAgCh3B,EAA2D,CACnF1J,IAAAA,EAAO,KAAKP,QAAU,qDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACigC,uCAAuCjgC,CAAS,CAC/D,CACL,CAEUigC,uCAAuC//B,EAAsC,CACnF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAqhC,mCAA6E,CACrE5gC,IAAAA,EAAO,KAAKP,QAAU,uDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOmgC,yCAAyCngC,CAAS,CACjE,CACL,CAEUmgC,yCAAyCjgC,EAA6D,CAC5G,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwC,IAAY,CACvE,CAEAuhC,oCAAoCN,EAA4D,CACxFxgC,IAAAA,EAAO,KAAKP,QAAU,yDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU6+B,CAAQ,EAIpClgC,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACqgC,2CAA2CrgC,CAAS,CACnE,CACL,CAEUqgC,2CAA2CngC,EAAsC,CACvF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAyhC,2BAAmD,CAC3ChhC,IAAAA,EAAO,KAAKP,QAAU,+CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKugC,iCAAiCvgC,CAAS,CACzD,CACL,CAEUugC,iCAAiCrgC,EAA2C,CAClF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAsB,IAAW,CACpD,CAEA2hC,4BAA4BV,EAAsD,CAC1ExgC,IAAAA,EAAO,KAAKP,QAAU,iDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU6+B,CAAQ,EAIpClgC,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACygC,mCAAmCzgC,CAAS,CAC3D,CACL,CAEUygC,mCAAmCvgC,EAAsC,CAC/E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEA6hC,uCAAuCvuB,EAAsCwuB,EAAgD,CACrHrhC,IAAAA,EAAO,KAAKP,QAAU,6DAC1B,GAAIoT,IAAgB,KACN,MAAA,IAAA5S,MAAM,6CAA6C,EAGjE,GAFS4S,IAAgB3S,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAK0S,CAAW,EAAI,KAChEwuB,IAAa,KACP,MAAA,IAAIphC,MAAM,0CAA0C,EACrDohC,IAAanhC,SAClBF,GAAQ,YAAcG,mBAAmB,GAAKkhC,CAAQ,EAAI,KACvDrhC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK4gC,8CAA8C5gC,CAAS,CACtE,CACL,CAEU4gC,8CAA8C1gC,EAAsC,CAC1F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAgiC,iBAAiB73B,EAAoD,CAC7D1J,IAAAA,EAAO,KAAKP,QAAU,sCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK8gC,wBAAwB9gC,CAAS,CAChD,CACL,CAEU8gC,wBAAwB5gC,EAAgD,CAC9E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAW,CACzD,CAEAkiC,iBAAiB/3B,EAAoD,CAC7D1J,IAAAA,EAAO,KAAKP,QAAU,sCACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACghC,wBAAwBhhC,CAAS,CAChD,CACL,CAEUghC,wBAAwB9gC,EAAgD,CAC9E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,KAC9C,CAEAoiC,iBAAiBC,EAAwD,CACjE5hC,IAAAA,EAAO,KAAKP,QAAU,uCAC1B,GAAImiC,IAAW,eACD3hC,MAAM,wCAAwC,EACnD2hC,IAAW1hC,SAChBF,GAAQ,UAAYG,mBAAmB,GAAKyhC,CAAM,EAAI,KACnD5hC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOmhC,wBAAwBnhC,CAAS,CAChD,CACL,CAEUmhC,wBAAwBjhC,EAAgD,CAC9E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAY,CAC1D,CAEAuiC,uBAAuBC,EAA0D,CACzE/hC,IAAAA,EAAO,KAAKP,QAAU,6CAC1B,GAAIsiC,IAAa,KACH,MAAA,IAAA9hC,MAAM,0CAA0C,EACrD8hC,IAAa7hC,SAClBF,GAAQ,YAAcG,mBAAmB,GAAK4hC,CAAQ,EAAI,KACvD/hC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,OACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKshC,8BAA8BthC,CAAS,CACtD,CACL,CAEUshC,8BAA8BphC,EAAgD,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,KAC9C,CAEA0iC,uBAAuBv4B,EAAgE,CAC/E1J,IAAAA,EAAO,KAAKP,QAAU,4CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOwhC,8BAA8BxhC,CAAS,CACtD,CACL,CAEUwhC,8BAA8BthC,EAAgD,CACpF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAY,CAC1D,CACJ,CAiBa,MAAA4iC,gCAAgCpjC,aAAkD,CAK3FC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEA2iC,kCAAkCC,EAAyCp+B,EAAiCC,EAAiCo+B,EAA0E,CAC/MtiC,IAAAA,EAAO,KAAKP,QAAU,4DAC1B,GAAI4iC,IAAwB,eACdpiC,MAAM,qDAAqD,EAChEoiC,IAAwBniC,SAC7BF,GAAQ,uBAAyBG,mBAAmB,GAAKkiC,CAAmB,EAAI,KAC1Dp+B,GAAS,OAC/BjE,GAAQ,QAAUG,mBAAmB,GAAK8D,CAAI,EAAI,KAC5BC,GAAS,OAC/BlE,GAAQ,QAAUG,mBAAmB,GAAK+D,CAAI,EAAI,KACtBo+B,GAAe,OAC3CtiC,GAAQ,cAAgBG,mBAAmB,GAAKmiC,CAAU,EAAI,KAC3DtiC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC6hC,yCAAyC7hC,CAAS,CACjE,CACL,CAEU6hC,yCAAyC3hC,EAAsD,CACrG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiC,IAAY,CAChE,CAEAijC,sBAAsB/gC,EAA+BwC,EAAiCC,EAA+D,CAC7IlE,IAAAA,EAAO,KAAKP,QAAU,gDACAwE,GAAS,OAC/BjE,GAAQ,QAAUG,mBAAmB,GAAK8D,CAAI,EAAI,KAC5BC,GAAS,OAC/BlE,GAAQ,QAAUG,mBAAmB,GAAK+D,CAAI,EAAI,KAC/ClE,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUF,CAAK,EAIjCnB,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACO+hC,6BAA6B/hC,CAAS,CACrD,CACL,CAEU+hC,6BAA6B7hC,EAAkD,CACrF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA6B,KAChD,CAEAmjC,wBAAwBvuB,EAA2D,CAC3EnU,IAAAA,EAAO,KAAKP,QAAU,iDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUwS,CAAO,EAInC7T,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACiiC,+BAA+BjiC,CAAS,CACvD,CACL,CAEUiiC,+BAA+B/hC,EAA4C,CACjF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAW,CACrD,CAEAqjC,6BAA6BP,EAAyCQ,EAAwChwB,EAAwCiwB,EAAyE,CACvN9iC,IAAAA,EAAO,KAAKP,QAAU,uDAC1B,GAAI4iC,IAAwB,eACdpiC,MAAM,qDAAqD,EAChEoiC,IAAwBniC,SAC7BF,GAAQ,uBAAyBG,mBAAmB,GAAKkiC,CAAmB,EAAI,KAC7EriC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAEzB+Q,MAAAA,EAAW,IAAIC,SACjByxB,GAAgB,MAChB1xB,EAASE,OAAO,cAAewxB,EAAYzU,SAAU,CAAA,EACrDvb,GAAgB,MAChB1B,EAASE,OAAO,cAAewB,EAAYub,SAAU,CAAA,EACrD0U,GAAgB,MAChBA,EAAY/hC,QAAQgiC,GAAS5xB,EAASE,OAAO,cAAe0xB,EAAMzxB,KAAMyxB,EAAMxxB,SAAWwxB,EAAMxxB,SAAW,aAAa,CAAE,EAEzHlR,IAAAA,EAAwB,CACxBqB,KAAMyP,EACN7Q,OAAQ,OACRlB,QAAS,CACL,OAAU,kBAAA,GAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKsiC,oCAAoCtiC,CAAS,CAC5D,CACL,CAEUsiC,oCAAoCpiC,EAA4C,CACtF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAW,CACrD,CAEA0jC,iCAAiCC,EAAgCC,EAAoD,CAC7GnjC,IAAAA,EAAO,KAAKP,QAAU,2DACI0jC,GAAa,OACvCnjC,GAAQ,YAAcG,mBAAmB,GAAKgjC,CAAQ,EAAI,KACvDnjC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI3BC,IAAAA,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUuhC,CAAoB,EAIhD5iC,OAAQ,MACRlB,QAAS,CACL,eAAgB,kBAAA,GAIxB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK0iC,wCAAwC1iC,CAAS,CAChE,CACL,CAEU0iC,wCAAwCxiC,EAAmC,CACjF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,CACC,EACMN,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAc,IAAY,CAC7C,CAEA8jC,yCAAyCC,EAA0DC,EAAmE,CAC9JvjC,IAAAA,EAAO,KAAKP,QAAU,mEAC1B,GAAI8jC,IAAoB,KACV,MAAA,IAAAtjC,MAAM,iDAAiD,EAC5DsjC,IAAoBrjC,SACzBF,GAAQ,mBAAqBG,mBAAmB,GAAKojC,CAAe,EAAI,KACrEvjC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU2hC,CAAkB,EAI9ChjC,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8iC,gDAAgD9iC,CAAS,CACxE,CACL,CAEU8iC,gDAAgD5iC,EAAiD,CACvG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA4B,IAAY,CAC3D,CACJ,OAyCakkC,yBAAyB1kC,aAA2C,CAK7EC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAikC,qBAAqBC,EAAsCC,EAAuE,CAC1H5jC,IAAAA,EAAO,KAAKP,QAAU,wCAC1B,GAAIkkC,IAAgB,KACV,MAAA,IAAI1jC,MAAM,6CAA6C,EAGjE,GAFS0jC,IAAgBzjC,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAKwjC,CAAW,EAAI,KAChEC,IAAyB,KACnB,MAAA,IAAI3jC,MAAM,sDAAsD,EACjE2jC,IAAyB1jC,SAC9BF,GAAQ,wBAA0BG,mBAAmB,GAAKyjC,CAAoB,EAAI,KAC/E5jC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKmjC,4BAA4BnjC,CAAS,CACpD,CACL,CAEUmjC,4BAA4BjjC,EAAgD,CAClF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA2B,IAAY,CAC1D,CAEAukC,sBAAsBC,EAAyCH,EAAqG,CAC5J5jC,IAAAA,EAAO,KAAKP,QAAU,yCAC1B,GAAIskC,IAAiB,KACP,MAAA,IAAA9jC,MAAM,8CAA8C,EAGlE,GAFS8jC,IAAiB7jC,QACN6jC,GAAAA,EAAahjC,QAAgBge,GAAA,CAAE/e,GAAQ,gBAAkBG,mBAAmB,GAAK4e,CAAI,EAAI,GAAA,CAAM,EAC/G6kB,IAAyB,KACf,MAAA,IAAA3jC,MAAM,sDAAsD,EACjE2jC,IAAyB1jC,SAC9BF,GAAQ,wBAA0BG,mBAAmB,GAAKyjC,CAAoB,EAAI,KAC/E5jC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACsjC,6BAA6BtjC,CAAS,CACrD,CACL,CAEUsjC,6BAA6BpjC,EAA8E,CACjH,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAyD,IAAW,CACvF,CAEA0kC,qBAAqBN,EAAsCO,EAA0BN,EAA6D,CAC1I5jC,IAAAA,EAAO,KAAKP,QAAU,wCAC1B,GAAIkkC,IAAgB,KACV,MAAA,IAAI1jC,MAAM,6CAA6C,EAGjE,GAFS0jC,IAAgBzjC,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAKwjC,CAAW,EAAI,KAChEC,IAAyB,KACnB,MAAA,IAAI3jC,MAAM,sDAAsD,EACjE2jC,IAAyB1jC,SAC9BF,GAAQ,wBAA0BG,mBAAmB,GAAKyjC,CAAoB,EAAI,KAC/E5jC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUuiC,CAAgB,EAI5C5jC,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKyjC,4BAA4BzjC,CAAS,CACpD,CACL,CAEUyjC,4BAA4BvjC,EAAsC,CACxE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,KACpC,CAEA6kC,uCAA6F,CACrFpkC,IAAAA,EAAO,KAAKP,QAAU,wDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC2jC,6CAA6C3jC,CAAS,CACrE,CACL,CAEU2jC,6CAA6CzjC,EAAyE,CAC5H,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAoD,IAAW,CAClF,CAEA+kC,sCAAsCC,EAA4D,CAC1FvkC,IAAAA,EAAO,KAAKP,QAAU,wDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU4iC,CAAK,EAIjCjkC,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK8jC,6CAA6C9jC,CAAS,CACrE,CACL,CAEU8jC,6CAA6C5jC,EAAsC,CACzF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,KACpC,CAEAklC,yCAAmG,CAC3FzkC,IAAAA,EAAO,KAAKP,QAAU,0DACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACgkC,+CAA+ChkC,CAAS,CACvE,CACL,CAEUgkC,+CAA+C9jC,EAA6E,CAClI,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwD,IAAY,CACvF,CAEAolC,wCAAwCJ,EAAgE,CAChGvkC,IAAAA,EAAO,KAAKP,QAAU,0DACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU4iC,CAAK,EAIjCjkC,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACkkC,+CAA+ClkC,CAAS,CACvE,CACL,CAEUkkC,+CAA+ChkC,EAAsC,CAC3F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEAslC,mCAAsF,CAC9E7kC,IAAAA,EAAO,KAAKP,QAAU,oDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,QACOokC,yCAAyCpkC,CAAS,CACjE,CACL,CAEUokC,yCAAyClkC,EAAsE,CACrH,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiD,IAAW,CAC/E,CAEAwlC,kCAAkCR,EAAyD,CACnFvkC,IAAAA,EAAO,KAAKP,QAAU,oDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU4iC,CAAK,EAIjCjkC,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKskC,yCAAyCtkC,CAAS,CACjE,CACL,CAEUskC,yCAAyCpkC,EAAsC,CACrF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEA0lC,uCAAmG,CAC3FjlC,IAAAA,EAAO,KAAKP,QAAU,wDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKwkC,6CAA6CxkC,CAAS,CACrE,CACL,CAEUwkC,6CAA6CtkC,EAA+E,CAClI,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA0D,IAAY,CACzF,CAEA4lC,sCAAsCZ,EAAkE,CAChGvkC,IAAAA,EAAO,KAAKP,QAAU,wDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU4iC,CAAK,EAIjCjkC,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC0kC,6CAA6C1kC,CAAS,CACrE,CACL,CAEU0kC,6CAA6CxkC,EAAsC,CACzF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEA8lC,iDAAkH,CAC1GrlC,IAAAA,EAAO,KAAKP,QAAU,kEACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC4kC,uDAAuD5kC,CAAS,CAC/E,CACL,CAEU4kC,uDAAuD1kC,EAAoF,CACjJ,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA+D,IAAW,CAC7F,CAEAgmC,gDAAgDhB,EAAuE,CAC/GvkC,IAAAA,EAAO,KAAKP,QAAU,kEACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU4iC,CAAK,EAIjCjkC,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK8kC,uDAAuD9kC,CAAS,CAC/E,CACL,CAEU8kC,uDAAuD5kC,EAAsC,CACnG,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAkmC,6BAA6B7B,EAA2C8B,EAA4D,CAC5H1lC,IAAAA,EAAO,KAAKP,QAAU,gDAC1B,GAAImkC,IAAyB,KACf,MAAA,IAAA3jC,MAAM,sDAAsD,EAG1E,GAFS2jC,IAAyB1jC,SAC9BF,GAAQ,wBAA0BG,mBAAmB,GAAKyjC,CAAoB,EAAI,KAClF8B,IAAkB,KACZ,MAAA,IAAIzlC,MAAM,+CAA+C,EAC1DylC,IAAkBxlC,SACvBF,GAAQ,iBAAmBG,mBAAmB,GAAKulC,CAAa,EAAI,KACjE1lC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKilC,oCAAoCjlC,CAAS,CAC5D,CACL,CAEUilC,oCAAoC/kC,EAA4C,CACtF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAW,CACrD,CAEAqmC,yBAAyBhC,EAA6D,CAC9E5jC,IAAAA,EAAO,KAAKP,QAAU,4CAC1B,GAAImkC,IAAyB,KACnB,MAAA,IAAI3jC,MAAM,sDAAsD,EACjE2jC,IAAyB1jC,SAC9BF,GAAQ,wBAA0BG,mBAAmB,GAAKyjC,CAAoB,EAAI,KAC/E5jC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKmlC,gCAAgCnlC,CAAS,CACxD,CACL,CAEUmlC,gCAAgCjlC,EAAsC,CAC5E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAumC,mCAAmClC,EAA2CmC,EAAkD,CACxH/lC,IAAAA,EAAO,KAAKP,QAAU,sDAC1B,GAAImkC,IAAyB,KACnB,MAAA,IAAI3jC,MAAM,sDAAsD,EACjE2jC,IAAyB1jC,SAC9BF,GAAQ,wBAA0BG,mBAAmB,GAAKyjC,CAAoB,EAAI,KAC/E5jC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUokC,CAAc,EAI1CzlC,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACslC,0CAA0CtlC,CAAS,CAClE,CACL,CAEUslC,0CAA0CplC,EAA4C,CAC5F,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,KAC1C,CAEA0mC,oBAAoBrC,EAAoE,CAChF5jC,IAAAA,EAAO,KAAKP,QAAU,uCAC1B,GAAImkC,IAAyB,KACnB,MAAA,IAAI3jC,MAAM,sDAAsD,EACjE2jC,IAAyB1jC,SAC9BF,GAAQ,wBAA0BG,mBAAmB,GAAKyjC,CAAoB,EAAI,KAC/E5jC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKwlC,2BAA2BxlC,CAAS,CACnD,CACL,CAEUwlC,2BAA2BtlC,EAA6C,CAC9E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAwB,IAAY,CACvD,CAEA4mC,wBAAwBC,EAA2D,CAC3EpmC,IAAAA,EAAO,KAAKP,QAAU,0CACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUykC,CAAe,EAI3C9lC,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC2lC,+BAA+B3lC,CAAS,CACvD,CACL,CAEU2lC,+BAA+BzlC,EAAoD,CACzF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAA+B,IAAY,CAC9D,CACJ,CAaa,MAAA+mC,kBAAkBvnC,aAAoC,CAK/DC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEA8mC,sBAAsBxmC,EAAgDymC,EAA6D,CAC3HxmC,IAAAA,EAAO,KAAKP,QAAU,kCAC1B,GAAIM,IAAe,KACL,MAAA,IAAAE,MAAM,4CAA4C,EACvDF,IAAeG,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKJ,CAAU,EAAI,KAC7BymC,GAAoB,OACrDxmC,GAAQ,mBAAqBG,mBAAmB,GAAKqmC,CAAe,EAAI,KACrExmC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC+lC,6BAA6B/lC,CAAS,CACrD,CACL,CAEU+lC,6BAA6B7lC,EAAoC,CACvE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAe,KAClC,CAEAmnC,+BAA+B3mC,EAAgE,CACvFC,IAAAA,EAAO,KAAKP,QAAU,2CAC1B,GAAIM,IAAe,KACT,MAAA,IAAIE,MAAM,4CAA4C,EACvDF,IAAeG,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKJ,CAAU,EAAI,KAC3DC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKimC,sCAAsCjmC,CAAS,CAC9D,CACL,CAEUimC,sCAAsC/lC,EAAoC,CAChF,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAe,IAAY,CAC9C,CAEAqnC,yBAAyB7mC,EAAgD4b,EAA+B,CAChG3b,IAAAA,EAAO,KAAKP,QAAU,qCAC1B,GAAIM,IAAe,KACT,MAAA,IAAIE,MAAM,4CAA4C,EACvDF,IAAeG,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKJ,CAAU,EAAI,KAC3DC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUga,CAAI,EAIhCrb,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKmmC,gCAAgCnmC,CAAS,CACxD,CACL,CAEUmmC,gCAAgCjmC,EAAsC,CAC5E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CAEAunC,yBAAyB/mC,EAAgDgnC,EAAsC,CACvG/mC,IAAAA,EAAO,KAAKP,QAAU,qCAC1B,GAAIM,IAAe,KACL,MAAA,IAAAE,MAAM,4CAA4C,EACvDF,IAAeG,SACpBF,GAAQ,cAAgBG,mBAAmB,GAAKJ,CAAU,EAAI,KAC3DC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUolC,CAAQ,EAIpCzmC,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,QACnDd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKsmC,gCAAgCtmC,CAAS,CACxD,CACL,CAEUsmC,gCAAgCpmC,EAAsC,CAC5E,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CACJ,CASa,MAAA0nC,qBAAqBloC,aAAuC,CAKrEC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEAynC,sCAAiF,CACzElnC,IAAAA,EAAO,KAAKP,QAAU,mDACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACymC,4CAA4CzmC,CAAS,CACpE,CACL,CAEUymC,4CAA4CvmC,EAA8D,CAChH,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAyC,IAAW,CACvE,CAEA6nC,kBAAkB19B,EAA8BwoB,EAAiD,CACzFlyB,IAAAA,EAAO,KAAKP,QAAU,iCAC1B,GAAIyyB,IAAa,KACP,MAAA,IAAIjyB,MAAM,0CAA0C,EACrDiyB,IAAahyB,SAClBF,GAAQ,YAAcG,mBAAmB,GAAK+xB,CAAQ,EAAI,KACvDlyB,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAU+H,CAAK,EAIjCpJ,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAK2mC,yBAAyB3mC,CAAS,CACjD,CACL,CAEU2mC,yBAAyBzmC,EAAsC,CACrE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CACJ,CAaa,MAAA+nC,wBAAwBvoC,aAA0C,CAK3EC,YAAYC,EAAgCQ,EAAkBC,EAA2E,CACrI,MAAMT,CAAa,EALfS,GAAAA,aACAD,GAAAA,gBACEE,GAAAA,yBAIDD,KAAAA,KAAOA,GAAcE,OAC1B,KAAKH,QAAmCA,GAA6B,EACzE,CAEA8nC,eAAsC,CAC9BvnC,IAAAA,EAAO,KAAKP,QAAU,+BACnBO,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,MACRlB,QAAS,CACL,OAAU,qBAIlB,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAAC8mC,qBAAqB9mC,CAAS,CAC7C,CACL,CAEU8mC,qBAAqB5mC,EAA0C,CACrE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAqB,IAAY,CACpD,CAEAkoC,gBAAgBC,EAAmCC,EAAiDC,EAAiD,CAC7I5nC,IAAAA,EAAO,KAAKP,QAAU,kCAC1B,GAAIioC,IAAkB,KACZ,MAAA,IAAIznC,MAAM,+CAA+C,EAC1DynC,IAAkBxnC,SACvBF,GAAQ,iBAAmBG,mBAAmB,GAAKunC,CAAa,EAAI,KAC9BC,GAAyB,OAC/D3nC,GAAQ,wBAA0BG,mBAAmB,GAAKwnC,CAAoB,EAAI,KAC/E3nC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUimC,CAAa,EAIzCtnC,OAAQ,OACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,YAAYF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACmnC,uBAAuBnnC,CAAS,CAC/C,CACL,CAEUmnC,uBAAuBjnC,EAA4C,CACzE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAuB,IAAY,CACtD,CAEAuoC,gBAAgBC,EAAiCL,EAAmCC,EAAiDC,EAA2C,CACxK5nC,IAAAA,EAAO,KAAKP,QAAU,kCAC1B,GAAIsoC,IAAgB,KACN,MAAA,IAAA9nC,MAAM,6CAA6C,EAGjE,GAFS8nC,IAAgB7nC,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAK4nC,CAAW,EAAI,KAChEL,IAAkB,KACR,MAAA,IAAAznC,MAAM,+CAA+C,EAC1DynC,IAAkBxnC,SACvBF,GAAQ,iBAAmBG,mBAAmB,GAAKunC,CAAa,EAAI,KAC9BC,GAAyB,OAC/D3nC,GAAQ,wBAA0BG,mBAAmB,GAAKwnC,CAAoB,EAAI,KAC/E3nC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAI/B,IAAIC,EAAwB,CACxBqB,KAHaL,KAAKM,UAAUimC,CAAa,EAIzCtnC,OAAQ,MACRlB,QAAS,CACL,eAAgB,mBAChB,OAAU,kBAElB,CAAA,EAEA,OAAW,KAACF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACxD,KAAKd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACE,KAAKsnC,uBAAuBtnC,CAAS,CAC/C,CACL,CAEUsnC,uBAAuBpnC,EAAsC,CACnE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAW,CAC/C,CAEA0oC,gBAAgBF,EAAmD,CAC3D/nC,IAAAA,EAAO,KAAKP,QAAU,kCAC1B,GAAIsoC,IAAgB,KACV,MAAA,IAAI9nC,MAAM,6CAA6C,EACxD8nC,IAAgB7nC,SACrBF,GAAQ,eAAiBG,mBAAmB,GAAK4nC,CAAW,EAAI,KAC7D/nC,EAAAA,EAAKI,QAAQ,QAAS,EAAE,EAE3BC,IAAAA,EAAwB,CACxBC,OAAQ,SACRlB,QAAS,CACL,OAAU,qBAIlB,OAAO,KAAKF,iBAAiBmB,CAAQ,EAAEE,KAA4BC,GACpD,KAACd,KAAKe,MAAMT,EAAMQ,CAAmB,CACnD,EAAED,KAAMG,GACM,KAACwnC,uBAAuBxnC,CAAS,CAC/C,CACL,CAEUwnC,uBAAuBtnC,EAAsC,CACnE,MAAMC,EAASD,EAASC,OACxB,IAAIC,EAAgB,CAAA,EACpB,OAD4BF,EAASxB,SAAWwB,EAASxB,QAAQ2B,SAAoB3B,EAAAA,QAAQ2B,QAAQ,CAACC,EAAQC,IAAWH,EAASG,CAAC,EAAID,CAAC,EACpIH,IAAW,IACJD,EAASM,KAAAA,EAAOX,KAAwBY,GAAA,CAC/C,IAAIC,EAAiB,KACrBA,OAAAA,EAAYD,IAAkB,GAAK,KAAOE,KAAKC,MAAMH,EAAe,KAAKxB,gBAAgB,EAClFyB,CAAAA,CACN,EACMP,IAAW,KAAOA,IAAW,IAC7BD,EAASM,KAAAA,EAAOX,KAAwBY,GACxCI,eAAe,uCAAwCV,EAAQM,EAAeL,CAAQ,CAC5F,EAEExB,QAAQC,QAAiB,IAAY,CAChD,CACJ,CAmBY4oC,IAAAA,wBAAAA,IACRC,EAAAA,KAAO,OACPC,EAAAA,QAAU,UACVC,EAAAA,SAAW,WACXC,EAAAA,kBAAoB,oBACpBC,EAAAA,SAAW,WACXC,EAAAA,YAAc,cACdC,EAAAA,aAAe,eACfC,EAAAA,YAAc,cARNR,IAAAA,wBAAAA,CAAAA,CAAAA,EAgBAS,YAAAA,IACRC,EAAAA,YAAc,cACdC,EAAAA,WAAa,aACbC,EAAAA,mBAAqB,qBACrBC,EAAAA,qBAAuB,uBACvBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,mBAAqB,qBACrBC,EAAAA,sBAAwB,wBACxBC,EAAAA,sBAAwB,wBACxBC,EAAAA,yBAA2B,2BAC3BC,EAAAA,wBAA0B,0BAC1BC,EAAAA,4BAA8B,8BAC9BC,EAAAA,4BAA8B,8BAC9BC,EAAAA,iCAAmC,mCACnCC,EAAAA,gCAAkC,kCAClCC,EAAAA,WAAa,aACbC,EAAAA,eAAiB,iBACjBC,EAAAA,gCAAkC,kCAClCC,EAAAA,gBAAkB,kBAClBC,EAAAA,eAAiB,iBACjBC,EAAAA,eAAiB,iBACjBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,mCAAqC,qCACrCC,EAAAA,qBAAuB,uBACvBC,EAAAA,gCAAkC,kCAClCC,EAAAA,eAAiB,iBACjBC,EAAAA,eAAiB,iBACjBC,EAAAA,eAAiB,iBACjBC,EAAAA,8BAAgC,gCAChCC,EAAAA,gCAAkC,kCAClCC,EAAAA,qBAAuB,uBACvBC,EAAAA,wBAA0B,0BAC1BC,EAAAA,2BAA6B,6BAC7BC,EAAAA,4BAA8B,8BAC9BC,EAAAA,oBAAsB,sBACtBC,EAAAA,2BAA6B,6BAC7BC,EAAAA,sBAAwB,wBACxBC,EAAAA,8BAAgC,gCAChCC,EAAAA,uBAAyB,yBACzBC,EAAAA,cAAgB,gBAChBC,EAAAA,6BAA+B,+BAC/BC,EAAAA,wBAA0B,0BAC1BC,EAAAA,0BAA4B,4BAC5BC,EAAAA,uBAAyB,yBACzBC,EAAAA,wBAA0B,0BAC1BC,EAAAA,uBAAyB,yBACzBC,EAAAA,aAAe,eACfC,EAAAA,aAAe,eACfC,EAAAA,iBAAmB,mBACnBC,EAAAA,mBAAqB,qBACrBC,EAAAA,yBAA2B,2BAC3BC,EAAAA,yBAA2B,2BAC3BC,EAAAA,yBAA2B,2BAC3BC,EAAAA,0BAA4B,4BAC5BC,EAAAA,4BAA8B,8BAC9BC,EAAAA,8BAAgC,gCAChCC,EAAAA,6BAA+B,+BAC/BC,EAAAA,6BAA+B,+BAC/BC,EAAAA,iCAAmC,mCACnCC,EAAAA,iCAAmC,mCACnCC,EAAAA,sCAAwC,wCACxCC,EAAAA,gCAAkC,kCAClCC,EAAAA,mCAAqC,qCACrCC,EAAAA,cAAgB,gBAChBC,EAAAA,cAAgB,gBAChBC,EAAAA,sBAAwB,wBACxBC,EAAAA,+BAAiC,iCACjCC,EAAAA,0BAA4B,4BAC5BC,EAAAA,mCAAqC,qCACrCC,EAAAA,qBAAuB,uBACvBC,EAAAA,8BAAgC,gCAChCC,EAAAA,0BAA4B,4BAC5BC,EAAAA,0BAA4B,4BAC5BC,EAAAA,mBAAqB,qBACrBC,EAAAA,kBAAoB,oBACpBC,EAAAA,8BAAgC,gCAChCC,EAAAA,yBAA2B,2BAC3BC,EAAAA,+BAAiC,iCACjCC,EAAAA,mCAAqC,qCACrCC,EAAAA,4BAA8B,8BAC9BC,EAAAA,wCAA0C,0CAC1CC,EAAAA,4BAA8B,8BAC9BC,EAAAA,iCAAmC,mCACnCC,EAAAA,wCAA0C,0CAC1CC,EAAAA,mBAAqB,qBACrBC,EAAAA,wBAA0B,0BAC1BC,EAAAA,sBAAwB,wBACxBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,2CAA6C,6CAC7CC,EAAAA,gCAAkC,kCAClCC,EAAAA,8BAAgC,gCAChCC,EAAAA,sBAAwB,wBACxBC,EAAAA,2BAA6B,6BAC7BC,EAAAA,uBAAyB,yBACzBC,EAAAA,uBAAyB,yBACzBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,mBAAqB,qBACrBC,EAAAA,sBAAwB,wBACxBC,EAAAA,6BAA+B,+BAC/BC,EAAAA,2BAA6B,6BAC7BC,EAAAA,gCAAkC,kCAClCC,EAAAA,wBAA0B,0BAC1BC,EAAAA,uBAAyB,yBACzBC,EAAAA,eAAiB,iBACjBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,sBAAwB,wBACxBC,EAAAA,mBAAqB,qBACrBC,EAAAA,eAAiB,iBACjBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,0BAA4B,4BAC5BC,EAAAA,0BAA4B,4BAC5BC,EAAAA,sBAAwB,wBACxBC,EAAAA,sBAAwB,wBACxBC,EAAAA,sBAAwB,wBACxBC,EAAAA,mBAAqB,qBACrBC,EAAAA,mBAAqB,qBACrBC,EAAAA,mBAAqB,qBACrBC,EAAAA,eAAiB,iBACjBC,EAAAA,aAAe,eACfC,EAAAA,sBAAwB,wBACxBC,EAAAA,gCAAkC,kCAClCC,EAAAA,mBAAqB,qBACrBC,EAAAA,sBAAwB,wBACxBC,EAAAA,sBAAwB,wBA3HhB3H,IAAAA,YAAAA,CAAAA,CAAAA,EA8HA4H,iBAAAA,IACRC,EAAAA,UAAY,YACZC,EAAAA,UAAY,YACZC,EAAAA,UAAY,YACZC,EAAAA,cAAgB,gBAChBC,EAAAA,cAAgB,gBAChBC,EAAAA,wBAA0B,0BAC1BC,EAAAA,wBAA0B,0BAC1BC,EAAAA,yBAA2B,2BAC3BC,EAAAA,yBAA2B,2BAC3BC,EAAAA,yBAA2B,2BAC3BC,EAAAA,4BAA8B,8BAC9BC,EAAAA,4BAA8B,8BAZtBZ,IAAAA,iBAAAA,CAAAA,CAAAA,EAgCAa,iCAAAA,IACRC,EAAAA,UAAY,YACZC,EAAAA,yBAA2B,2BAC3BC,EAAAA,4BAA8B,8BAC9BC,EAAAA,8BAAgC,gCAChCC,EAAAA,eAAiB,iBACjBC,EAAAA,QAAU,UANFN,IAAAA,iCAAAA,CAAAA,CAAAA,EA8CAO,gBAAAA,IACRC,EAAAA,OAAS,SACTC,EAAAA,UAAY,YACZC,EAAAA,UAAY,YACZC,EAAAA,YAAc,cACdC,EAAAA,UAAY,YACZC,EAAAA,wBAA0B,0BAC1BC,EAAAA,MAAQ,QACRC,EAAAA,QAAU,UACVC,EAAAA,WAAa,aATLT,IAAAA,gBAAAA,CAAAA,CAAAA,EAYAU,kBAAAA,IACRC,EAAAA,QAAU,UACVC,EAAAA,OAAS,SACTC,EAAAA,QAAU,UACVC,EAAAA,SAAW,WAJHJ,IAAAA,kBAAAA,CAAAA,CAAAA,EA+CAK,cAAAA,IACRC,EAAAA,QAAU,UACVC,EAAAA,eAAiB,iBACjBC,EAAAA,QAAU,UACVC,EAAAA,OAAS,SACTC,EAAAA,aAAe,eACfC,EAAAA,oBAAsB,sBACtBC,EAAAA,OAAS,SAPDP,IAAAA,cAAAA,CAAAA,CAAAA,EAoCAQ,WAAAA,IACRC,EAAAA,QAAU,UACVC,EAAAA,WAAa,aACbC,EAAAA,UAAY,YACZC,EAAAA,QAAU,UAJFJ,IAAAA,WAAAA,CAAAA,CAAAA,EAYAK,SAAAA,IACRC,EAAAA,YAAc,cACdC,EAAAA,oBAAsB,sBACtBC,EAAAA,qBAAuB,uBACvBC,EAAAA,wBAA0B,0BAC1BC,EAAAA,8BAAgC,gCAChCC,EAAAA,gBAAkB,kBAClBC,EAAAA,yBAA2B,2BAC3BC,EAAAA,iCAAmC,mCACnCC,EAAAA,gBAAkB,kBAClBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,UAAY,YACZC,EAAAA,wBAA0B,0BAC1BC,EAAAA,wBAA0B,0BAC1BC,EAAAA,4BAA8B,8BAC9BC,EAAAA,eAAiB,iBACjBC,EAAAA,gCAAkC,kCAClCC,EAAAA,2BAA6B,6BAC7BC,EAAAA,sBAAwB,wBACxBC,EAAAA,eAAiB,iBACjBC,EAAAA,6BAA+B,+BAC/BC,EAAAA,oBAAsB,sBACtBC,EAAAA,oBAAsB,sBACtBC,EAAAA,mBAAqB,qBACrBC,EAAAA,YAAc,cACdC,EAAAA,eAAiB,iBACjBC,EAAAA,oBAAsB,sBACtBC,EAAAA,sBAAwB,wBACxBC,EAAAA,oBAAsB,sBACtBC,EAAAA,oBAAsB,sBACtBC,EAAAA,8BAAgC,gCAChCC,EAAAA,iBAAmB,mBACnBC,EAAAA,wBAA0B,0BAC1BC,EAAAA,mBAAqB,qBACrBC,EAAAA,kBAAoB,oBACpBC,EAAAA,oBAAsB,sBACtBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,cAAgB,gBAChBC,EAAAA,+BAAiC,iCACjCC,EAAAA,qBAAuB,uBACvBC,EAAAA,oBAAsB,sBACtBC,EAAAA,aAAe,eACfC,EAAAA,yBAA2B,2BAC3BC,EAAAA,kBAAoB,oBACpBC,EAAAA,uBAAyB,yBACzBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,sBAAwB,wBACxBC,EAAAA,iBAAmB,mBACnBC,EAAAA,wBAA0B,0BAC1BC,EAAAA,YAAc,cACdC,EAAAA,mBAAqB,qBACrBC,EAAAA,uBAAyB,yBACzBC,EAAAA,oBAAsB,sBACtBC,EAAAA,uBAAyB,yBACzBz5C,EAAAA,kBAAoB,oBACpB05C,EAAAA,kBAAoB,oBACpBC,EAAAA,qBAAuB,uBACvBC,EAAAA,wBAA0B,0BAC1BC,EAAAA,uBAAyB,yBACzBC,EAAAA,kCAAoC,oCACpCC,EAAAA,mBAAqB,qBACrBC,EAAAA,2BAA6B,6BAC7BC,EAAAA,sBAAwB,wBACxBC,EAAAA,qBAAuB,uBACvBC,EAAAA,sBAAwB,wBACxBC,EAAAA,yBAA2B,2BAC3BC,EAAAA,mBAAqB,qBACrBC,EAAAA,uBAAyB,yBACzBC,EAAAA,gBAAkB,kBAClBC,EAAAA,kBAAoB,oBACpBC,EAAAA,yBAA2B,2BAC3BC,EAAAA,qBAAuB,uBACvBC,EAAAA,sBAAwB,wBACxBC,EAAAA,gBAAkB,kBAClBC,EAAAA,mBAAqB,qBACrBC,EAAAA,wBAA0B,0BAC1BC,EAAAA,oCAAsC,sCACtCC,EAAAA,cAAgB,gBAChBC,EAAAA,uBAAyB,yBACzBC,EAAAA,gCAAkC,kCAClCC,EAAAA,sBAAwB,wBACxBC,EAAAA,gBAAkB,kBAClBC,EAAAA,yBAA2B,2BAC3BC,EAAAA,kBAAoB,oBACpBC,EAAAA,gBAAkB,kBAClBC,EAAAA,oBAAsB,sBACtBC,EAAAA,oBAAsB,sBACtBC,EAAAA,8BAAgC,gCAChCC,EAAAA,oBAAsB,sBACtBC,EAAAA,sBAAwB,wBACxBC,EAAAA,oBAAsB,sBACtBC,EAAAA,uCAAyC,yCACzCC,EAAAA,sCAAwC,wCACxCC,EAAAA,sCAAwC,wCACxCC,EAAAA,8CAAgD,gDAChDC,EAAAA,6CAA+C,+CAC/CC,EAAAA,6CAA+C,+CAC/CC,EAAAA,iCAAmC,mCACnCC,EAAAA,qBAAuB,uBACvBC,EAAAA,mCAAqC,qCACrCC,EAAAA,8BAAgC,gCAChCC,EAAAA,mBAAqB,qBACrBC,EAAAA,2BAA6B,6BAC7BC,EAAAA,sBAAwB,wBACxBC,EAAAA,kCAAoC,oCACpCC,EAAAA,yBAA2B,2BAC3BC,EAAAA,uBAAyB,yBACzBC,EAAAA,gBAAkB,kBAClBC,EAAAA,mBAAqB,qBACrBC,EAAAA,eAAiB,iBACjBC,EAAAA,iBAAmB,mBACnBC,EAAAA,sBAAwB,wBACxBC,EAAAA,iBAAmB,mBACnBC,EAAAA,8BAAgC,gCAChCC,EAAAA,0BAA4B,4BAC5BC,EAAAA,+BAAiC,iCACjCC,EAAAA,qBAAuB,uBACvBC,EAAAA,iBAAmB,mBACnBC,EAAAA,kBAAoB,oBACpBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,uBAAyB,yBACzBC,EAAAA,8CAAgD,gDAChDC,EAAAA,kCAAoC,oCACpCC,EAAAA,mBAAqB,qBACrBC,EAAAA,oBAAsB,sBACtBC,EAAAA,oCAAsC,sCACtCC,EAAAA,wBAA0B,0BAC1BC,EAAAA,mBAAqB,qBACrBC,EAAAA,gBAAkB,kBAClBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,iCAAmC,mCACnCC,EAAAA,gCAAkC,kCAClCC,EAAAA,wBAA0B,0BAC1BC,EAAAA,sCAAwC,wCACxCC,EAAAA,oBAAsB,sBACtBC,EAAAA,2BAA6B,6BAC7BC,EAAAA,gCAAkC,kCAClCC,EAAAA,gCAAkC,kCAClCC,EAAAA,yBAA2B,2BAC3BC,EAAAA,uBAAyB,yBACzBC,EAAAA,+BAAiC,iCACjCC,EAAAA,mBAAqB,qBACrBC,EAAAA,aAAe,eACfC,EAAAA,uBAAyB,yBACzBC,EAAAA,8BAAgC,gCAChCC,EAAAA,yBAA2B,2BAC3BC,EAAAA,+BAAiC,iCACjCC,EAAAA,gCAAkC,kCAClCC,EAAAA,cAAgB,gBAChBC,EAAAA,eAAiB,iBACjBC,EAAAA,wCAA0C,0CAC1CC,EAAAA,0BAA4B,4BAC5BC,EAAAA,YAAc,cACdC,EAAAA,gBAAkB,kBAClBC,EAAAA,kBAAoB,oBACpBC,EAAAA,2BAA6B,6BAC7BC,EAAAA,iBAAmB,mBACnBC,EAAAA,2BAA6B,6BAC7BC,EAAAA,qBAAuB,uBACvBC,EAAAA,uCAAyC,yCACzCC,EAAAA,0BAA4B,4BAC5BC,EAAAA,sBAAwB,wBACxBC,EAAAA,oBAAsB,sBACtBC,EAAAA,uBAAyB,yBACzBC,EAAAA,cAAgB,gBAChBC,EAAAA,oBAAsB,sBACtBC,EAAAA,oBAAsB,sBACtBC,EAAAA,qBAAuB,uBACvBC,EAAAA,gBAAkB,kBAClBC,EAAAA,oBAAsB,sBACtBC,EAAAA,6BAA+B,+BAC/BC,EAAAA,4BAA8B,8BAC9BC,EAAAA,4BAA8B,8BAC9BC,EAAAA,cAAgB,gBAChBC,EAAAA,kBAAoB,oBACpBC,EAAAA,iCAAmC,mCACnCC,EAAAA,gBAAkB,kBAClBC,EAAAA,mCAAqC,qCACrCC,EAAAA,qCAAuC,uCACvCC,EAAAA,uBAAyB,yBACzBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,8BAAgC,gCAChCC,EAAAA,qCAAuC,uCACvCC,EAAAA,iCAAmC,mCACnCC,EAAAA,oBAAsB,sBACtBC,EAAAA,uBAAyB,yBACzBC,EAAAA,sBAAwB,wBACxBC,EAAAA,kBAAoB,oBACpBC,EAAAA,mBAAqB,qBACrBC,EAAAA,iBAAmB,mBACnBC,EAAAA,oBAAsB,sBACtBC,EAAAA,wBAA0B,0BAC1BC,EAAAA,yBAA2B,2BAC3BC,EAAAA,uBAAyB,yBACzBC,EAAAA,4BAA8B,8BAC9BC,EAAAA,uBAAyB,yBACzBC,EAAAA,yBAA2B,2BAC3BC,EAAAA,iBAAmB,mBACnBC,EAAAA,iCAAmC,mCACnCC,EAAAA,6BAA+B,+BAC/BC,EAAAA,mBAAqB,qBACrBC,EAAAA,gBAAkB,kBAClBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,oBAAsB,sBACtBC,EAAAA,4BAA8B,8BAC9BC,EAAAA,sBAAwB,wBACxBC,EAAAA,8BAAgC,gCAChCC,EAAAA,sBAAwB,wBACxBC,EAAAA,2BAA6B,6BAC7BC,EAAAA,yBAA2B,2BAC3BC,EAAAA,2BAA6B,6BAC7BC,EAAAA,oCAAsC,sCACtCC,EAAAA,8CAAgD,gDAChDC,EAAAA,oCAAsC,sCACtCC,EAAAA,oCAAsC,sCACtCC,EAAAA,qBAAuB,uBACvBC,EAAAA,sBAAwB,wBACxBC,EAAAA,wCAA0C,0CAC1CC,EAAAA,qCAAuC,uCACvCC,EAAAA,2CAA6C,6CAC7CC,EAAAA,+BAAiC,iCACjCC,EAAAA,0BAA4B,4BAC5BC,EAAAA,+BAAiC,iCACjCC,EAAAA,6BAA+B,+BAC/BC,EAAAA,UAAY,YACZC,EAAAA,cAAgB,gBAChBC,EAAAA,gCAAkC,kCAClCC,EAAAA,gCAAkC,kCAClCC,EAAAA,4BAA8B,8BAC9BC,EAAAA,0CAA4C,4CAC5CC,EAAAA,gCAAkC,kCAClCC,EAAAA,yBAA2B,2BAC3BC,EAAAA,yBAA2B,2BAxOnBvO,IAAAA,SAAAA,CAAAA,CAAAA,EA2OAwO,cAAAA,IACRC,EAAAA,SAAW,WACXC,EAAAA,WAAa,aACbC,EAAAA,oBAAsB,sBACtBC,EAAAA,oBAAsB,sBACtBC,EAAAA,cAAgB,gBALRL,IAAAA,cAAAA,CAAAA,CAAAA,EAoNAM,wBAAAA,IACRC,EAAAA,MAAQ,QACRC,EAAAA,QAAU,UACVC,EAAAA,QAAU,UACVhP,EAAAA,YAAc,cACdn3C,EAAAA,MAAQ,QACRgsC,EAAAA,SAAW,WACXoa,EAAAA,KAAO,OAPCJ,IAAAA,wBAAAA,CAAAA,CAAAA,EAiBAK,eAAAA,IACRV,EAAAA,SAAW,WACXW,EAAAA,UAAY,aACZC,EAAAA,iBAAmB,oBACnBC,EAAAA,gBAAkB,gBAClBC,EAAAA,SAAW,WACXC,EAAAA,eAAiB,kBACjBC,EAAAA,cAAgB,cAChBC,EAAAA,OAAS,SARDP,IAAAA,eAAAA,CAAAA,CAAAA,EAWAQ,wBAAAA,IACRC,EAAAA,QAAU,UACVC,EAAAA,UAAY,YACZC,EAAAA,gBAAkB,kBAClBC,EAAAA,mBAAqB,qBACrBC,EAAAA,YAAc,cACdC,EAAAA,kBAAoB,oBACpBC,EAAAA,qBAAuB,uBAPfP,IAAAA,wBAAAA,CAAAA,CAAAA,EAUAQ,kBAAAA,IACRC,EAAAA,gBAAkB,KAClBC,EAAAA,aAAe,MAFPF,IAAAA,kBAAAA,CAAAA,CAAAA,EAKAG,cAAAA,IACRC,EAAAA,MAAQ,SACRC,EAAAA,IAAM,MACNC,EAAAA,MAAQ,QACRC,EAAAA,WAAa,cACbC,EAAAA,OAAS,SACTC,EAAAA,OAAS,SANDN,IAAAA,cAAAA,CAAAA,CAAAA,EASAO,YAAAA,IACRD,EAAAA,OAAS,SACTH,EAAAA,MAAQ,QACRrR,EAAAA,QAAU,UACV0R,EAAAA,WAAa,aACbC,EAAAA,SAAW,WACXC,EAAAA,QAAU,UACVC,EAAAA,OAAS,SACTvR,EAAAA,OAAS,SACTwR,EAAAA,UAAY,YATJL,IAAAA,YAAAA,CAAAA,CAAAA,EAYAM,mBAAAA,IACRtB,EAAAA,UAAY,YACZG,EAAAA,YAAc,cACdoB,EAAAA,MAAQ,QACRC,EAAAA,gBAAkB,kBAClBC,EAAAA,eAAiB,iBACjBC,EAAAA,mBAAqB,qBACrBC,EAAAA,mBAAqB,qBACrBC,EAAAA,mBAAqB,qBACrBC,EAAAA,iBAAmB,mBACnBC,EAAAA,sBAAwB,wBACxBC,EAAAA,qBAAuB,uBACvBC,EAAAA,kBAAoB,oBACpBC,EAAAA,kBAAoB,oBACpBC,EAAAA,gBAAkB,kBAClBC,EAAAA,qBAAuB,uBACvBC,EAAAA,oBAAsB,sBACtBC,EAAAA,sBAAwB,wBACxBC,EAAAA,kBAAoB,oBACpBC,EAAAA,aAAe,eACfC,EAAAA,gBAAkB,kBAClBC,EAAAA,MAAQ,QArBAnB,IAAAA,mBAAAA,CAAAA,CAAAA,EAgDAoB,aAAAA,IACRxS,EAAAA,QAAU,UACVyS,EAAAA,WAAa,aACbC,EAAAA,SAAW,WACXC,EAAAA,SAAW,WACXC,EAAAA,aAAe,eACfC,EAAAA,QAAU,UACVC,EAAAA,IAAM,MACNC,EAAAA,WAAa,aACbC,EAAAA,SAAW,WACXC,EAAAA,gBAAkB,kBAClBC,EAAAA,cAAgB,gBAChBC,EAAAA,UAAY,YACZC,EAAAA,KAAO,OACPC,EAAAA,UAAY,YACZC,EAAAA,SAAW,WACXC,EAAAA,qBAAuB,uBAhBff,IAAAA,aAAAA,CAAAA,CAAAA,EAmBAgB,oBAAAA,IACR3D,EAAAA,QAAU,UACV4D,EAAAA,YAAc,cACdC,EAAAA,iBAAmB,mBACnBC,EAAAA,gBAAkB,kBAClBC,EAAAA,iBAAmB,mBACnBC,EAAAA,aAAe,eACfC,EAAAA,aAAe,eACfC,EAAAA,iBAAmB,mBACnBC,EAAAA,mBAAqB,qBACrBC,EAAAA,eAAiB,iBACjBC,EAAAA,UAAY,YACZC,EAAAA,mBAAqB,qBACrBC,EAAAA,cAAgB,gBAChBC,EAAAA,4BAA8B,8BAC9BC,EAAAA,4BAA8B,8BAC9BC,EAAAA,2BAA6B,6BAhBrBf,IAAAA,oBAAAA,CAAAA,CAAAA,EAmBAgB,mBAAAA,IACRC,EAAAA,aAAe,eACfC,EAAAA,cAAgB,gBAChBC,EAAAA,SAAW,WAHHH,IAAAA,mBAAAA,CAAAA,CAAAA,EAMAI,qBAAAA,IACRC,EAAAA,QAAU,UACVF,EAAAA,SAAW,WACXG,EAAAA,SAAW,WAHHF,IAAAA,qBAAAA,CAAAA,CAAAA,EAMAG,qBAAAA,IACRC,EAAAA,UAAY,YACZC,EAAAA,YAAc,cACdC,EAAAA,MAAQ,QACRC,EAAAA,iBAAmB,mBACnBC,EAAAA,WAAa,aACbC,EAAAA,iBAAmB,mBACnBC,EAAAA,eAAiB,iBACjBC,EAAAA,gCAAkC,kCAClCC,EAAAA,yBAA2B,2BAC3BC,EAAAA,wBAA0B,0BAVlBV,IAAAA,qBAAAA,CAAAA,CAAAA,EAmCAW,eAAAA,IACRC,EAAAA,OAAS,SACTC,EAAAA,QAAU,UACVC,EAAAA,IAAM,MACNC,EAAAA,QAAU,UACVC,EAAAA,KAAO,OACPC,EAAAA,IAAM,MACNxD,EAAAA,YAAc,cACdyD,EAAAA,KAAO,OACPC,EAAAA,QAAU,UACVC,EAAAA,OAAS,SACTC,EAAAA,UAAY,YAXJV,IAAAA,eAAAA,CAAAA,CAAAA,EAcAW,WAAAA,IACRC,EAAAA,IAAM,MACNC,EAAAA,KAAO,OACPC,EAAAA,SAAW,YACXC,EAAAA,iBAAmB,sBACnBC,EAAAA,MAAQ,QALAL,IAAAA,WAAAA,CAAAA,CAAAA,EAQAM,yBAAAA,IACRC,EAAAA,OAAS,SACTC,EAAAA,iBAAmB,mBACnBC,EAAAA,KAAO,OAHCH,IAAAA,yBAAAA,CAAAA,CAAAA,EAMAI,4BAAAA,IACRC,EAAAA,aAAe,eACfC,EAAAA,YAAc,cACdC,EAAAA,SAAW,WACXC,EAAAA,UAAY,YACZC,EAAAA,cAAgB,gBALRL,IAAAA,4BAAAA,CAAAA,CAAAA,EAiBAM,wBAAAA,IACRC,EAAAA,mBAAqB,qBACrBC,EAAAA,UAAY,YACZC,EAAAA,UAAY,YAHJH,IAAAA,wBAAAA,CAAAA,CAAAA,EAMAI,uBAAAA,IACRlB,EAAAA,KAAO,OACPmB,EAAAA,aAAe,eACfC,EAAAA,gBAAkB,kBAClBC,EAAAA,wBAA0B,0BAC1BC,EAAAA,yBAA2B,2BAC3BC,EAAAA,kBAAoB,oBACpBC,EAAAA,gBAAkB,kBAClBC,EAAAA,iBAAmB,mBACnBC,EAAAA,YAAc,cACdC,EAAAA,wBAA0B,0BAC1BC,EAAAA,2BAA6B,6BAC7BC,EAAAA,kBAAoB,oBACpBC,EAAAA,sBAAwB,wBACxBC,EAAAA,uBAAyB,yBACzBC,EAAAA,iBAAmB,mBACnBC,EAAAA,gBAAkB,kBAhBVf,IAAAA,uBAAAA,CAAAA,CAAAA,EAsDAgB,iBAAAA,IACRC,EAAAA,OAAS,SACTC,EAAAA,iBAAmB,qBACnBC,EAAAA,KAAO,OACPC,EAAAA,YAAc,cACdC,EAAAA,gBAAkB,kBAClBC,EAAAA,oBAAsB,sBANdN,IAAAA,iBAAAA,CAAAA,CAAAA,EA8EAO,yBAAAA,IACRC,EAAAA,OAAS,SACTC,EAAAA,OAAS,SACTC,EAAAA,KAAO,OACPC,EAAAA,cAAgB,gBAChBC,EAAAA,gBAAkB,kBAClBC,EAAAA,SAAW,WANHN,IAAAA,yBAAAA,CAAAA,CAAAA,EASAO,yBAAAA,IACRC,EAAAA,WAAa,aACbP,EAAAA,OAAS,SACTC,EAAAA,OAAS,SACTC,EAAAA,KAAO,OACPC,EAAAA,cAAgB,gBAChBC,EAAAA,gBAAkB,kBAClBC,EAAAA,SAAW,WAPHC,IAAAA,yBAAAA,CAAAA,CAAAA,EAUAE,6BAAAA,IACRD,EAAAA,WAAa,aACb3E,EAAAA,QAAU,UACV6E,EAAAA,WAAa,aACbC,EAAAA,cAAgB,gBAChBC,EAAAA,UAAY,YACZC,EAAAA,UAAY,YACZC,EAAAA,OAAS,SACTC,EAAAA,kBAAoB,oBARZN,IAAAA,6BAAAA,CAAAA,CAAAA,EAWAO,6BAAAA,IACRR,EAAAA,WAAa,aACb3E,EAAAA,QAAU,UACV6E,EAAAA,WAAa,aACbC,EAAAA,cAAgB,gBAChBC,EAAAA,UAAY,YACZC,EAAAA,UAAY,YACZC,EAAAA,OAAS,SACTG,EAAAA,SAAW,WARHD,IAAAA,6BAAAA,CAAAA,CAAAA,EAWAE,gBAAAA,IACRC,EAAAA,QAAU,UACVC,EAAAA,QAAU,UACVC,EAAAA,OAAS,SACTC,EAAAA,WAAa,aACbC,EAAAA,WAAa,aACbC,EAAAA,UAAY,YACZC,EAAAA,YAAc,cACdC,EAAAA,SAAW,WACXC,EAAAA,iBAAmB,mBACnBC,EAAAA,iBAAmB,mBACnBC,EAAAA,kBAAoB,oBACpBC,EAAAA,gBAAkB,kBAClB3I,EAAAA,sBAAwB,wBACxB4I,EAAAA,QAAU,UAdFb,IAAAA,gBAAAA,CAAAA,CAAAA,EAiBAc,uBAAAA,IACRC,EAAAA,oBAAsB,sBACtBC,EAAAA,mBAAqB,qBACrBC,EAAAA,sBAAwB,wBACxBtB,EAAAA,UAAY,YACZuB,EAAAA,kBAAoB,oBACpBC,EAAAA,iBAAmB,mBACnBvG,EAAAA,SAAW,WACXwG,EAAAA,KAAO,OACPC,EAAAA,cAAgB,gBAChBC,EAAAA,kBAAoB,oBACpBC,EAAAA,sBAAwB,wBACxB1B,EAAAA,kBAAoB,oBACpB2B,EAAAA,OAAS,SAbDV,IAAAA,uBAAAA,CAAAA,CAAAA,EAgBAW,0BAAAA,IACRC,EAAAA,YAAc,cACdC,EAAAA,qBAAuB,uBACvBC,EAAAA,WAAa,aACbC,EAAAA,mBAAqB,qBACrBC,EAAAA,SAAW,WACXC,EAAAA,sBAAwB,wBACxBC,EAAAA,qBAAuB,uBACvBC,EAAAA,gBAAkB,kBAClBC,EAAAA,0BAA4B,4BATpBT,IAAAA,0BAAAA,CAAAA,CAAAA,EA0BAxQ,0BAAAA,IACRkR,EAAAA,kBAAoB,oBACpBC,EAAAA,YAAc,cACdC,EAAAA,iBAAmB,mBACnBC,EAAAA,QAAU,UACVC,EAAAA,MAAQ,QALAtR,IAAAA,0BAAAA,CAAAA,CAAAA,EAoJAuR,oBAAAA,IACRC,EAAAA,OAAS,SACTne,EAAAA,UAAY,YACZoe,EAAAA,KAAO,OACPC,EAAAA,QAAU,UAJFH,IAAAA,oBAAAA,CAAAA,CAAAA,EAOAI,uBAAAA,IACR7D,EAAAA,OAAS,SACTG,EAAAA,cAAgB,iBAChBD,EAAAA,KAAO,OACPW,EAAAA,OAAS,SACTiD,EAAAA,aAAe,eACfC,EAAAA,SAAW,WACXC,EAAAA,kBAAoB,oBAPZH,IAAAA,uBAAAA,CAAAA,CAAAA,EAUAI,2BAAAA,IACRC,EAAAA,OAAS,SACTC,EAAAA,OAAS,SACTC,EAAAA,MAAQ,QACRC,EAAAA,WAAa,cACbC,EAAAA,KAAO,cACPC,EAAAA,KAAO,OACPC,EAAAA,OAAS,SACTC,EAAAA,IAAM,MACNC,EAAAA,aAAe,gBACfC,EAAAA,UAAY,aACZC,EAAAA,WAAa,iBACbC,EAAAA,UAAY,aACZrB,EAAAA,MAAQ,QAbAS,IAAAA,2BAAAA,CAAAA,CAAAA,EAqGAa,oBAAAA,IACRxH,EAAAA,KAAO,OACPyH,EAAAA,SAAW,WACXC,EAAAA,WAAa,aACbC,EAAAA,UAAY,YAJJH,IAAAA,oBAAAA,CAAAA,CAAAA,EAqBAI,sCAAAA,IACRC,EAAAA,iBAAmB,mBACnBC,EAAAA,sBAAwB,wBACxBC,EAAAA,KAAO,OACPC,EAAAA,YAAc,cACdC,EAAAA,SAAW,WACXC,EAAAA,iBAAmB,mBACnBC,EAAAA,kBAAoB,oBACpBC,EAAAA,eAAiB,iBACjBC,EAAAA,eAAiB,iBACjBC,EAAAA,cAAgB,gBAChBC,EAAAA,aAAe,eACfC,EAAAA,iBAAmB,mBACnBC,EAAAA,gBAAkB,kBAClBC,EAAAA,QAAU,UACVC,EAAAA,qBAAuB,uBACvBC,EAAAA,iBAAmB,mBACnBC,EAAAA,cAAgB,gBAChBC,EAAAA,wBAA0B,0BAlBlBlB,IAAAA,sCAAAA,CAAAA,CAAAA,EAmOAmB,0BAAAA,IACRC,EAAAA,IAAM,MACNC,EAAAA,KAAO,OACPC,EAAAA,MAAQ,QACRC,EAAAA,KAAO,OAJCJ,IAAAA,0BAAAA,CAAAA,CAAAA,EAOAK,mBAAAA,IACRC,EAAAA,SAAW,YACXC,EAAAA,WAAa,cACbC,EAAAA,cAAgB,iBAHRH,IAAAA,mBAAAA,CAAAA,CAAAA,EAMAI,qBAAAA,IACRC,EAAAA,YAAc,MACdC,EAAAA,aAAe,OACfC,EAAAA,YAAc,MAHNH,IAAAA,qBAAAA,CAAAA,CAAAA,EAMAI,sBAAAA,IACRC,EAAAA,OAAS,gBACTC,EAAAA,KAAO,cAFCF,IAAAA,sBAAAA,CAAAA,CAAAA,EAKAG,WAAAA,IACRrK,EAAAA,KAAO,eACPsK,EAAAA,YAAc,gBAFND,IAAAA,WAAAA,CAAAA,CAAAA,EA4BAE,cAAAA,IACR9R,EAAAA,SAAW,WACX+R,EAAAA,aAAe,eACfC,EAAAA,WAAa,aACbC,EAAAA,KAAO,OACPniB,EAAAA,UAAY,YACZoiB,EAAAA,0BAA4B,4BANpBJ,IAAAA,cAAAA,CAAAA,CAAAA,EAqBAK,mCAAAA,IACRC,EAAAA,YAAc,cACdC,EAAAA,SAAW,WACXC,EAAAA,aAAe,eAHPH,IAAAA,mCAAAA,CAAAA,CAAAA,EAsXAI,cAAAA,IACR1K,EAAAA,KAAO,OACP2K,EAAAA,KAAO,OACPC,EAAAA,QAAU,UACVC,EAAAA,IAAM,MACNC,EAAAA,UAAY,YACZC,EAAAA,SAAW,WACXP,EAAAA,SAAW,WACXlQ,EAAAA,OAAS,SARDoQ,IAAAA,cAAAA,CAAAA,CAAAA,EAWAM,YAAAA,IACRhL,EAAAA,KAAO,OACPiL,EAAAA,SAAW,WACXC,EAAAA,SAAW,WAHHF,IAAAA,YAAAA,CAAAA,CAAAA,EA4BAG,iBAAAA,IACRC,EAAAA,uBAAyB,yBACzBC,EAAAA,iBAAmB,mBACnBC,EAAAA,mBAAqB,qBACrBC,EAAAA,QAAU,UACVC,EAAAA,oCAAsC,sCAL9BL,IAAAA,iBAAAA,CAAAA,CAAAA,EAQAM,qBAAAA,IACRC,EAAAA,aAAe,eACfC,EAAAA,4BAA8B,8BAC9BC,EAAAA,wBAA0B,0BAHlBH,IAAAA,qBAAAA,CAAAA,CAAAA,EAgEAI,YAAAA,IACRC,EAAAA,OAAS,SACTC,EAAAA,OAAS,SACTC,EAAAA,OAAS,SACTC,EAAAA,OAAS,SACTC,EAAAA,cAAgB,gBAChBC,EAAAA,oBAAsB,sBACtBC,EAAAA,OAAS,SACTC,EAAAA,sBAAwB,wBACxBC,EAAAA,gBAAkB,kBAClBC,EAAAA,cAAgB,gBAVRV,IAAAA,YAAAA,CAAAA,CAAAA,EAwBAW,gBAAAA,IACRC,EAAAA,cAAgB,gBAChBC,EAAAA,YAAc,cACdC,EAAAA,UAAY,YACZpI,EAAAA,gBAAkB,kBAClBqI,EAAAA,eAAiB,iBACjBC,EAAAA,kBAAoB,oBACpBC,EAAAA,mBAAqB,qBACrBC,EAAAA,yBAA2B,2BAC3BC,EAAAA,uBAAyB,yBACzBC,EAAAA,aAAe,eACfC,EAAAA,wBAA0B,0BAC1BC,EAAAA,aAAe,eACfC,EAAAA,gBAAkB,kBAClBC,EAAAA,wBAA0B,0BAC1BC,EAAAA,0BAA4B,4BAC5BC,EAAAA,sBAAwB,wBACxBC,EAAAA,yBAA2B,2BAC3BC,EAAAA,sBAAwB,wBACxBC,EAAAA,uBAAyB,yBACzBC,EAAAA,oBAAsB,sBACtBC,EAAAA,kBAAoB,oBACpBC,EAAAA,mBAAqB,qBACrBC,EAAAA,iBAAmB,mBACnBC,EAAAA,wBAA0B,0BAC1BC,EAAAA,uBAAyB,yBACzBC,EAAAA,iBAAmB,mBACnBC,EAAAA,kBAAoB,oBACpBC,EAAAA,gBAAkB,kBAClBC,EAAAA,wBAA0B,0BAC1BC,EAAAA,mBAAqB,qBACrBC,EAAAA,eAAiB,iBACjBC,EAAAA,WAAa,aAhCL/B,IAAAA,gBAAAA,CAAAA,CAAAA,EAoFAgC,kBAAAA,IACRnF,EAAAA,SAAW,YACXE,EAAAA,cAAgB,iBAChBkF,EAAAA,cAAgB,kBAHRD,IAAAA,kBAAAA,CAAAA,CAAAA,EAyDAE,eAAAA,IACRrF,EAAAA,SAAW,YACXE,EAAAA,cAAgB,iBAFRmF,IAAAA,eAAAA,CAAAA,CAAAA,EA+DAC,oBAAAA,IACR/L,EAAAA,KAAO,OACPF,EAAAA,OAAS,SAFDiM,IAAAA,oBAAAA,CAAAA,CAAAA,EAKAC,cAAAA,IACRC,EAAAA,OAAS,SACT3H,EAAAA,OAAS,SACT4H,EAAAA,SAAW,WACXC,EAAAA,MAAQ,QAJAH,IAAAA,cAAAA,CAAAA,CAAAA,EAOAI,0BAAAA,IACRC,EAAAA,kBAAoB,oBACpBC,EAAAA,oBAAsB,sBACtBC,EAAAA,aAAe,eACfjJ,EAAAA,MAAQ,QAJA8I,IAAAA,0BAAAA,CAAAA,CAAAA,EAOAI,0BAAAA,IACRC,EAAAA,gBAAkB,kBAClBC,EAAAA,eAAiB,iBACjBC,EAAAA,iBAAmB,mBACnBrJ,EAAAA,MAAQ,QAJAkJ,IAAAA,0BAAAA,CAAAA,CAAAA,EA6BAI,4BAAAA,IACRtI,EAAAA,OAAS,SACT4H,EAAAA,SAAW,WACXW,EAAAA,UAAY,YACZC,EAAAA,UAAY,YACZC,EAAAA,QAAU,UACVC,EAAAA,mBAAqB,qBACrBC,EAAAA,kBAAoB,oBACpBC,EAAAA,eAAiB,iBACjBC,EAAAA,aAAe,eACfC,EAAAA,4BAA8B,8BAC9BC,EAAAA,qBAAuB,uBACvBC,EAAAA,qBAAuB,uBACvBC,EAAAA,iBAAmB,mBACnBC,EAAAA,+BAAiC,iCACjCC,EAAAA,6BAA+B,+BAC/BC,EAAAA,oBAAsB,sBACtBC,EAAAA,qBAAuB,uBACvBC,EAAAA,YAAc,cACdC,EAAAA,oCAAsC,sCACtCC,EAAAA,yBAA2B,2BAC3BC,EAAAA,kBAAoB,oBACpBC,EAAAA,eAAiB,iBACjBC,EAAAA,mBAAqB,qBACrBC,EAAAA,mBAAqB,qBACrBC,EAAAA,QAAU,UACVC,EAAAA,SAAW,WACXC,EAAAA,UAAY,YACZ/K,EAAAA,MAAQ,QACR2I,EAAAA,OAAS,SA7BDW,IAAAA,4BAAAA,CAAAA,CAAAA,EAqDA0B,iBAAAA,IACR9K,EAAAA,OAAS,SACT+K,EAAAA,OAAS,SACTC,EAAAA,SAAW,WAHHF,IAAAA,iBAAAA,CAAAA,CAAAA,EA0BAG,cAAAA,IACRjL,EAAAA,OAAS,SACT+K,EAAAA,OAAS,SACTC,EAAAA,SAAW,WAHHC,IAAAA,cAAAA,CAAAA,CAAAA,EA0HAC,mBAAAA,IACRC,EAAAA,UAAY,aACZC,EAAAA,MAAQ,SAFAF,IAAAA,mBAAAA,CAAAA,CAAAA,EAKAG,qBAAAA,IACRC,EAAAA,KAAO,OADCD,IAAAA,qBAAAA,CAAAA,CAAAA,EAmIAE,qBAAAA,IACRrI,EAAAA,WAAa,cADLqI,IAAAA,qBAAAA,CAAAA,CAAAA,EAwCAC,UAAAA,IACRC,EAAAA,MAAQ,QACRC,EAAAA,QAAU,UACVxP,EAAAA,YAAc,cACdyP,EAAAA,QAAU,UACV57D,EAAAA,MAAQ,QACR67D,EAAAA,SAAW,WACXhS,EAAAA,KAAO,OAPC4R,IAAAA,UAAAA,CAAAA,CAAAA,EAkHAK,+BAAAA,IACRC,EAAAA,QAAU,UACVC,EAAAA,OAAS,SAFDF,IAAAA,+BAAAA,CAAAA,CAAAA,EAUAG,uBAAAA,IACRC,EAAAA,SAAW,WACXC,EAAAA,QAAU,UACVC,EAAAA,SAAW,WACXC,EAAAA,OAAS,SACTC,EAAAA,kBAAoB,oBACpBC,EAAAA,aAAe,eANPN,IAAAA,uBAAAA,CAAAA,CAAAA,EAsCAO,uCAAAA,IACRC,EAAAA,UAAY,YACZC,EAAAA,QAAU,UAFFF,IAAAA,uCAAAA,CAAAA,CAAAA,EA2BAG,8BAAAA,IACRC,EAAAA,QAAU,UACVC,EAAAA,cAAgB,gBAChBC,EAAAA,eAAiB,iBAHTH,IAAAA,8BAAAA,CAAAA,CAAAA,EAuCAI,cAAAA,IACRC,EAAAA,UAAY,YACZC,EAAAA,WAAa,aACbtqB,EAAAA,QAAU,UACV0R,EAAAA,WAAa,aACb6Y,EAAAA,cAAgB,gBAChB3Y,EAAAA,QAAU,UACVtR,EAAAA,OAAS,SAPD8pB,IAAAA,cAAAA,CAAAA,CAAAA,EAyRAI,WAAAA,IACRC,EAAAA,UAAY,YACZza,EAAAA,UAAY,YACZ0a,EAAAA,SAAW,WACXpN,EAAAA,OAAS,SACTqN,EAAAA,OAAS,SALDH,IAAAA,WAAAA,CAAAA,CAAAA,EAgMAI,YAAAA,IACRC,EAAAA,cAAgB,gBAChBC,EAAAA,iBAAmB,mBACnBC,EAAAA,wCAA0C,0CAC1CC,EAAAA,oBAAsB,sBACtBC,EAAAA,cAAgB,gBAChBC,EAAAA,oCAAsC,sCACtCC,EAAAA,mBAAqB,qBACrBC,EAAAA,yBAA2B,2BAC3BC,EAAAA,wBAA0B,0BAC1BC,EAAAA,uBAAyB,yBACzBC,EAAAA,+BAAiC,iCACjCC,EAAAA,iBAAmB,mBACnBC,EAAAA,iBAAmB,mBACnBC,EAAAA,iBAAmB,mBACnBC,EAAAA,4BAA8B,8BAC9BC,EAAAA,sBAAwB,wBACxBC,EAAAA,kCAAoC,oCACpCC,EAAAA,qCAAuC,uCACvCC,EAAAA,6BAA+B,+BAC/BC,EAAAA,6BAA+B,+BAC/BC,EAAAA,8BAAgC,gCAChCC,EAAAA,2BAA6B,6BAC7BC,EAAAA,wBAA0B,0BAC1BC,EAAAA,8BAAgC,gCAChCC,EAAAA,6BAA+B,+BAC/BC,EAAAA,gCAAkC,kCAClCC,EAAAA,gCAAkC,kCAClCC,EAAAA,iCAAmC,mCACnCC,EAAAA,4CAA8C,8CAC9CC,EAAAA,2CAA6C,6CAC7CC,EAAAA,mCAAqC,qCACrCC,EAAAA,+BAAiC,iCACjCC,EAAAA,8CAAgD,gDAChDC,EAAAA,wBAA0B,0BAC1BC,EAAAA,wBAA0B,0BAC1BC,EAAAA,iCAAmC,mCACnCC,EAAAA,kCAAoC,oCACpCC,EAAAA,uBAAyB,yBACzBC,EAAAA,kBAAoB,oBACpBC,EAAAA,qBAAuB,uBACvBC,EAAAA,4CAA8C,8CAC9CC,EAAAA,uCAAyC,yCACzCC,EAAAA,4CAA8C,8CAC9CC,EAAAA,mCAAqC,qCACrCC,EAAAA,mBAAqB,qBACrBC,EAAAA,gCAAkC,kCAClCC,EAAAA,+BAAiC,iCACjCC,EAAAA,sBAAwB,wBACxBC,EAAAA,+BAAiC,iCACjCC,EAAAA,4CAA8C,8CAC9CC,EAAAA,sBAAwB,wBACxBC,EAAAA,4BAA8B,8BAC9BC,EAAAA,yCAA2C,2CAC3CC,EAAAA,qBAAuB,uBACvBC,EAAAA,qBAAuB,uBACvBC,EAAAA,kCAAoC,oCACpCC,EAAAA,kCAAoC,oCACpCC,EAAAA,wCAA0C,0CAC1CC,EAAAA,iCAAmC,mCACnCC,EAAAA,mCAAqC,qCACrCC,EAAAA,kCAAoC,oCACpCC,EAAAA,oCAAsC,sCACtCC,EAAAA,gDAAkD,kDAClDC,EAAAA,+CAAiD,iDACjDC,EAAAA,2CAA6C,6CAC7CC,EAAAA,uBAAyB,yBACzBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,mCAAqC,qCACrCC,EAAAA,iCAAmC,mCACnCC,EAAAA,6CAA+C,+CAC/CC,EAAAA,8CAAgD,gDAChDC,EAAAA,oBAAsB,sBACtBC,EAAAA,yBAA2B,2BAC3BC,EAAAA,uBAAyB,yBACzBC,EAAAA,kBAAoB,oBACpBC,EAAAA,qBAAuB,uBACvBC,EAAAA,eAAiB,iBACjBC,EAAAA,oBAAsB,sBACtBC,EAAAA,iBAAmB,mBACnBC,EAAAA,qBAAuB,uBACvBC,EAAAA,qBAAuB,uBACvBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,oBAAsB,sBACtBC,EAAAA,gCAAkC,kCAClCC,EAAAA,qCAAuC,uCACvCC,EAAAA,6BAA+B,+BAC/BC,EAAAA,kCAAoC,oCACpCC,EAAAA,mCAAqC,qCACrCC,EAAAA,wCAA0C,0CAC1CC,EAAAA,2BAA6B,6BAC7BC,EAAAA,gCAAkC,kCAClCC,EAAAA,+BAAiC,iCACjCC,EAAAA,oCAAsC,sCACtCC,EAAAA,qBAAuB,uBACvBC,EAAAA,eAAiB,iBACjBC,EAAAA,kBAAoB,oBACpBC,EAAAA,kBAAoB,oBACpBC,EAAAA,gBAAkB,kBAClBC,EAAAA,YAAc,cACdC,EAAAA,iBAAmB,mBACnBC,EAAAA,iBAAmB,mBACnBC,EAAAA,qBAAuB,uBACvBC,EAAAA,aAAe,eACfC,EAAAA,eAAiB,iBACjBC,EAAAA,aAAe,eACfC,EAAAA,iBAAmB,mBACnBC,EAAAA,mBAAqB,qBACrBC,EAAAA,iBAAmB,mBACnBC,EAAAA,sBAAwB,wBACxBC,EAAAA,sBAAwB,wBACxBC,EAAAA,2BAA6B,6BAC7BC,EAAAA,6BAA+B,+BAC/BC,EAAAA,yBAA2B,2BAC3BC,EAAAA,gBAAkB,kBAClBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,mBAAqB,qBACrBC,EAAAA,8BAAgC,gCAChCC,EAAAA,+BAAiC,iCACjCC,EAAAA,gBAAkB,kBAClBC,EAAAA,yBAA2B,2BAC3BC,EAAAA,0BAA4B,4BAzHpBzH,IAAAA,YAAAA,CAAAA,CAAAA,EAuJA0H,wBAAAA,IACRC,EAAAA,4BAA8B,8BAC9BC,EAAAA,oBAAsB,sBACtBC,EAAAA,iBAAmB,mBAHXH,IAAAA,wBAAAA,CAAAA,CAAAA,EAwFAI,kBAAAA,IACRC,EAAAA,QAAU,UACVC,EAAAA,qBAAuB,uBACvBC,EAAAA,yBAA2B,2BAC3BC,EAAAA,uBAAyB,yBACzBC,EAAAA,8BAAgC,gCAChCC,EAAAA,8BAAgC,gCAChCC,EAAAA,6BAA+B,+BAC/BC,EAAAA,gCAAkC,kCAClCC,EAAAA,mCAAqC,qCACrCC,EAAAA,uBAAyB,yBACzBC,EAAAA,yBAA2B,2BAC3BC,EAAAA,mBAAqB,qBACrBC,EAAAA,mBAAqB,qBACrBC,EAAAA,mBAAqB,qBACrBC,EAAAA,oBAAsB,sBACtBC,EAAAA,kCAAoC,oCACpCC,EAAAA,mBAAqB,qBACrBC,EAAAA,0BAA4B,4BAlBpBlB,IAAAA,kBAAAA,CAAAA,CAAAA,EAqBAmB,mBAAAA,IACRvW,EAAAA,OAAS,SACToN,EAAAA,SAAW,WAFHmJ,IAAAA,mBAAAA,CAAAA,CAAAA,EAuFAC,sBAAAA,IACRtjB,EAAAA,QAAU,UACVujB,EAAAA,OAAS,SACTC,EAAAA,UAAY,YACZC,EAAAA,gBAAkB,kBAClBC,EAAAA,MAAQ,QACRC,EAAAA,MAAQ,QACRC,EAAAA,OAAS,SACTC,EAAAA,OAAS,SACTC,EAAAA,KAAO,OACPC,EAAAA,KAAO,OACPC,EAAAA,QAAU,UAXFV,IAAAA,sBAAAA,CAAAA,CAAAA,EAiEAW,uBAAAA,IACRC,EAAAA,IAAM,MACNC,EAAAA,SAAW,WACXC,EAAAA,cAAgB,kBAChBC,EAAAA,aAAe,gBAJPJ,IAAAA,uBAAAA,CAAAA,CAAAA,EAyDAK,UAAAA,IACRC,EAAAA,IAAM,MACNC,EAAAA,WAAa,aAFLF,IAAAA,UAAAA,CAAAA,CAAAA,EAeAG,eAAAA,IACRhT,EAAAA,SAAW,WACXv4D,EAAAA,MAAQ,QACRwtD,EAAAA,KAAO,OAHC+d,IAAAA,eAAAA,CAAAA,CAAAA,EAeAC,6BAAAA,IACRC,EAAAA,MAAQ,QACRC,EAAAA,MAAQ,QAFAF,IAAAA,6BAAAA,CAAAA,CAAAA,EA0BAG,6BAAAA,IACRC,EAAAA,aAAe,eACfC,EAAAA,YAAc,cACdC,EAAAA,uBAAyB,yBAHjBH,IAAAA,6BAAAA,CAAAA,CAAAA,EAoBAI,gBAAAA,IACRC,EAAAA,MAAQ,QACRC,EAAAA,OAAS,SACTC,EAAAA,QAAU,UAHFH,IAAAA,gBAAAA,CAAAA,CAAAA,EAkKAI,6BAAAA,IACRC,EAAAA,IAAM,MACNC,EAAAA,QAAU,UACVC,EAAAA,QAAU,UACVC,EAAAA,cAAgB,gBAJRJ,IAAAA,6BAAAA,CAAAA,CAAAA,EAgEAK,eAAAA,IACRzN,EAAAA,UAAY,YACZ0N,EAAAA,MAAQ,QACRzN,EAAAA,MAAQ,QACR0N,EAAAA,WAAa,aACbC,EAAAA,aAAe,eACfC,EAAAA,UAAY,YACZC,EAAAA,eAAiB,iBACjBC,EAAAA,WAAa,aACbC,EAAAA,gBAAkB,kBAClBC,EAAAA,UAAY,YACZC,EAAAA,SAAW,WACXC,EAAAA,QAAU,UACVC,EAAAA,OAAS,SACTC,EAAAA,UAAY,YACZC,EAAAA,WAAa,aACbC,EAAAA,YAAc,cACdC,EAAAA,SAAW,WACXC,EAAAA,YAAc,cACdpgB,EAAAA,OAAS,SACTqgB,EAAAA,6BAA+B,+BAC/BC,EAAAA,mBAAqB,qBArBblB,IAAAA,eAAAA,CAAAA,CAAAA,EAyBAmB,4BAAAA,IACRC,EAAAA,qBAAuB,uBACvBC,EAAAA,eAAiB,iBACjBC,EAAAA,mBAAqB,qBAHbH,IAAAA,4BAAAA,CAAAA,CAAAA,EAmLAI,2BAAAA,IACR5V,EAAAA,KAAO,OADC4V,IAAAA,2BAAAA,CAAAA,CAAAA,EA2FAC,gBAAAA,IACRC,EAAAA,IAAM,MACNC,EAAAA,KAAO,OACPxmB,EAAAA,IAAM,MAHEsmB,IAAAA,gBAAAA,CAAAA,CAAAA,EA8OAG,iBAAAA,IACR3gB,EAAAA,KAAO,OACP4gB,EAAAA,KAAO,OACPC,EAAAA,QAAU,UACVC,EAAAA,MAAQ,QACRC,EAAAA,SAAW,WACX3hB,EAAAA,OAAS,SACT4hB,EAAAA,KAAO,OACP3hB,EAAAA,QAAU,UACVE,EAAAA,QAAU,UACV0hB,EAAAA,aAAe,eACfC,EAAAA,YAAc,cACdC,EAAAA,SAAW,WACXC,EAAAA,SAAW,WACXC,EAAAA,WAAa,aACbC,EAAAA,YAAc,cAfNX,IAAAA,iBAAAA,CAAAA,CAAAA,EA8GAY,oBAAAA,IACRvhB,EAAAA,KAAO,OACPwhB,EAAAA,WAAa,aACbC,EAAAA,IAAM,MACNC,EAAAA,QAAU,UACVC,EAAAA,wBAA0B,0BAC1BC,EAAAA,mBAAqB,qBANbL,IAAAA,oBAAAA,CAAAA,CAAAA,EAmKAM,MAAAA,IACRC,EAAAA,MAAQ,QACRC,EAAAA,MAAQ,QACRC,EAAAA,WAAa,aACbC,EAAAA,YAAc,cACdC,EAAAA,OAAS,SACTC,EAAAA,UAAY,YACZC,EAAAA,OAAS,SACTC,EAAAA,YAAc,cACdC,EAAAA,WAAa,aACbC,EAAAA,SAAW,WACXC,EAAAA,QAAU,UAXFX,IAAAA,MAAAA,CAAAA,CAAAA,EAqBAY,sBAAAA,IACRC,EAAAA,QAAU,UACVpwE,EAAAA,UAAY,YACZE,EAAAA,MAAQ,QACRE,EAAAA,UAAY,YACZiwE,EAAAA,OAAS,SACTC,EAAAA,QAAU,UACVC,EAAAA,UAAY,YACZC,EAAAA,SAAW,WACXC,EAAAA,WAAa,aACbC,EAAAA,WAAa,aAVLP,IAAAA,sBAAAA,CAAAA,CAAAA,EA0LAQ,aAAAA,IACRC,EAAAA,2BAA6B,6BAC7BC,EAAAA,4BAA8B,8BAC9BC,EAAAA,uBAAyB,yBACzBC,EAAAA,wBAA0B,0BAC1BC,EAAAA,2BAA6B,6BAC7BC,EAAAA,4BAA8B,8BAC9BC,EAAAA,kBAAoB,oBACpBC,EAAAA,sBAAwB,wBACxBC,EAAAA,wBAA0B,0BAC1BC,EAAAA,sBAAwB,wBACxBC,EAAAA,qBAAuB,uBACvBC,EAAAA,+BAAiC,iCACjCC,EAAAA,sBAAwB,wBACxBC,EAAAA,uBAAyB,yBACzBC,EAAAA,2BAA6B,6BAC7BC,EAAAA,gBAAkB,kBAClBC,EAAAA,kBAAoB,oBACpBC,EAAAA,sBAAwB,wBACxBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,sBAAwB,wBACxBC,EAAAA,iBAAmB,mBACnBC,EAAAA,kBAAoB,oBACpBC,EAAAA,oBAAsB,sBACtBC,EAAAA,wBAA0B,0BAC1BC,EAAAA,4BAA8B,8BAC9BC,EAAAA,UAAY,YACZC,EAAAA,qBAAuB,uBACvBC,EAAAA,sBAAwB,wBACxBC,EAAAA,mBAAqB,qBACrBC,EAAAA,qBAAuB,uBACvBC,EAAAA,wBAA0B,0BAC1BC,EAAAA,mBAAqB,qBACrBC,EAAAA,SAAW,WACXC,EAAAA,oBAAsB,sBACtBC,EAAAA,oBAAsB,sBACtBC,EAAAA,sBAAwB,wBACxBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,8BAAgC,gCAChCC,EAAAA,uBAAyB,yBACzBC,EAAAA,8BAAgC,gCAChCC,EAAAA,iCAAmC,mCACnCC,EAAAA,oCAAsC,sCACtCC,EAAAA,wCAA0C,0CAC1CC,EAAAA,yBAA2B,2BAC3BC,EAAAA,4BAA8B,8BAC9BC,EAAAA,+BAAiC,iCACjCC,EAAAA,mCAAqC,qCACrCC,EAAAA,iBAAmB,mBACnBC,EAAAA,qBAAuB,uBACvBC,EAAAA,sBAAwB,wBACxBC,EAAAA,iBAAmB,mBACnBC,EAAAA,qBAAuB,uBACvBC,EAAAA,4BAA8B,8BAC9BC,EAAAA,uBAAyB,yBACzBC,EAAAA,mBAAqB,qBACrBC,EAAAA,yBAA2B,2BAC3BC,EAAAA,4BAA8B,8BAC9BC,EAAAA,+BAAiC,iCACjCC,EAAAA,mCAAqC,qCACrCC,EAAAA,0BAA4B,4BAC5Bh5B,EAAAA,gBAAkB,kBAClBi5B,EAAAA,gBAAkB,kBAClBC,EAAAA,oBAAsB,sBACtBC,EAAAA,0BAA4B,4BAC5BC,EAAAA,6BAA+B,+BAC/BC,EAAAA,gCAAkC,kCAClCC,EAAAA,oCAAsC,sCACtCC,EAAAA,6BAA+B,+BAC/BC,EAAAA,gCAAkC,kCAClCC,EAAAA,mCAAqC,qCACrCC,EAAAA,uCAAyC,yCACzCC,EAAAA,8BAAgC,gCAChCC,EAAAA,iCAAmC,mCACnCC,EAAAA,oCAAsC,sCACtCC,EAAAA,wCAA0C,0CAC1CC,EAAAA,oCAAsC,sCACtCC,EAAAA,iCAAmC,mCACnCC,EAAAA,uCAAyC,yCACzCC,EAAAA,yCAA2C,2CAC3CC,EAAAA,qCAAuC,uCACvCC,EAAAA,gCAAkC,kCAClCC,EAAAA,0BAA4B,4BAC5BC,EAAAA,sCAAwC,wCACxCC,EAAAA,qCAAuC,uCACvCC,EAAAA,6BAA+B,+BAC/BC,EAAAA,8BAAgC,gCAChCC,EAAAA,wBAA0B,0BAC1BC,EAAAA,yBAA2B,2BAC3BC,EAAAA,iCAAmC,mCACnCC,EAAAA,yBAA2B,2BAC3BC,EAAAA,6BAA+B,+BAC/BC,EAAAA,0BAA4B,4BAC5BC,EAAAA,wBAA0B,0BA7FlB5F,IAAAA,aAAAA,CAAAA,CAAAA,EAmJA6F,iBAAAA,IACRC,EAAAA,WAAa,aACbC,EAAAA,OAAS,SAFDF,IAAAA,iBAAAA,CAAAA,CAAAA,EAaAG,kBAAAA,IACRC,EAAAA,OAAS,SACTxqC,EAAAA,SAAW,WAFHuqC,IAAAA,kBAAAA,CAAAA,CAAAA,EA+BAE,uBAAAA,IACRC,EAAAA,aAAe,gBACfC,EAAAA,cAAgB,iBAChBC,EAAAA,WAAa,cACbC,EAAAA,gBAAkB,mBAClBC,EAAAA,UAAY,aALJL,IAAAA,uBAAAA,CAAAA,CAAAA,EA2BC,MAAAM,qBAAqBtzE,KAAM,CAOpCjB,YAAYw0E,EAAiB3yE,EAAgBD,EAAkBxB,EAAkCq0E,EAAa,CACpG,QAPDD,GAAAA,gBACT3yE,GAAAA,eACAD,GAAAA,iBACAxB,GAAAA,gBACAq0E,GAAAA,eAYUC,GAAAA,sBAAiB,IAPvB,KAAKF,QAAUA,EACf,KAAK3yE,OAASA,EACd,KAAKD,SAAWA,EAChB,KAAKxB,QAAUA,EACf,KAAKq0E,OAASA,CAClB,CAIA,OAAOC,eAAeC,EAA+B,CACjD,OAAOA,EAAID,iBAAmB,EAClC,CACJ,CAEA,SAASnyE,eAAeiyE,EAAiB3yE,EAAgBD,EAAkBxB,EAAkCq0E,EAAmB,CACxHA,MAAAA,GAGU,IAAAF,aAAaC,EAAS3yE,EAAQD,EAAUxB,EAAS,IAAI,CACvE,CChq1BYw0E,IAAAA,WAAAA,IACV7L,EAAAA,MAAQ,uDACR8L,EAAAA,eAAiB,uDACjBC,EAAAA,oBAAsB,uDACtBC,EAAAA,oBAAsB,uDACtBC,EAAAA,OAAS,uDACTC,EAAAA,OAAS,uDACTC,EAAAA,yBAA2B,uDAC3BC,EAAAA,gBAAkB,uDAClBzH,EAAAA,QAAU,uDACV0H,EAAAA,yBAA2B,uDAC3BC,EAAAA,aAAe,uDACfC,EAAAA,mBAAqB,uDACrBzH,EAAAA,WAAa,uDACb0H,EAAAA,2BAA6B,uDAC7BC,EAAAA,sCAAwC,uDACxCC,EAAAA,uCAAyC,mDACzCC,EAAAA,YAAc,uDACdC,EAAAA,iCAAmC,uDACnCC,EAAAA,SAAW,uDACXC,EAAAA,yBAA2B,uDAC3BC,EAAAA,QAAU,uDACVC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACf9kB,EAAAA,OAAS,uDACT+kB,EAAAA,qBAAuB,uDACvBC,EAAAA,0BAA4B,uDAC5Bt4E,EAAAA,SAAW,uDACXu4E,EAAAA,sBAAwB,uDACxBC,EAAAA,0BAA4B,uDAC5BC,EAAAA,gBAAkB,uDAClBC,EAAAA,uBAAyB,uDACzBC,EAAAA,4BAA8B,uDAC9BC,EAAAA,OAAS,uDACTC,EAAAA,sBAAwB,uDACxBC,EAAAA,UAAY,uDACZC,EAAAA,YAAc,uDACdC,EAAAA,UAAY,uDACZC,EAAAA,gBAAkB,uDAClBC,EAAAA,YAAc,wBACdC,EAAAA,sBAAwB,kCACxBC,EAAAA,UAAY,uDACZC,EAAAA,qBAAuB,uDACvBC,EAAAA,WAAa,uDACbC,EAAAA,cAAgB,uDAChBC,EAAAA,YAAc,uDACdC,EAAAA,OAAS,uDACTC,EAAAA,QAAU,uDACVC,EAAAA,SAAW,uDACXC,EAAAA,WAAa,uDACbC,EAAAA,UAAY,sBACZC,EAAAA,UAAY,sBACZC,EAAAA,SAAW,uDACXC,EAAAA,IAAM,uDACNC,EAAAA,iBAAmB,uDACnBC,EAAAA,kBAAoB,uDACpBC,EAAAA,WAAa,uDACbC,EAAAA,cAAgB,uDAChBC,EAAAA,cAAgB,uDAChBC,EAAAA,cAAgB,uDAChBC,EAAAA,gBAAkB,uDAClBC,EAAAA,UAAY,uDACZC,EAAAA,SAAW,uDACXC,EAAAA,mBAAqB,uDACrBC,EAAAA,YAAc,uDACdxyB,EAAAA,mBAAqB,uDACrByyB,EAAAA,qBAAuB,uDACvBC,EAAAA,mBAAqB,uDACrBC,EAAAA,8BAAgC,uDAChCC,EAAAA,wBAA0B,uDAC1BC,EAAAA,wBAA0B,uDAC1BC,EAAAA,wBAA0B,uDAC1BC,EAAAA,YAAc,uDACdC,EAAAA,qBAAuB,uDACvBC,EAAAA,WAAa,uDACbC,EAAAA,QAAU,uDACVnzB,EAAAA,eAAiB,uDACjBozB,EAAAA,6BAA+B,uDAC/BC,EAAAA,kBAAoB,uDACpBC,EAAAA,WAAa,uDACbC,EAAAA,uBAAyB,uDACzBC,EAAAA,eAAiB,uDACjBC,EAAAA,oCAAsC,uDACtCC,EAAAA,YAAc,uDACdC,EAAAA,yBAA2B,uDAC3BC,EAAAA,kBAAoB,uDACpBC,EAAAA,yBAA2B,uDAC3BC,EAAAA,UAAY,uDACZC,EAAAA,eAAiB,uDACjBC,EAAAA,aAAe,uDACfC,EAAAA,8BAAgC,uDAChCC,EAAAA,kCAAoC,uDACpCC,EAAAA,WAAa,uDACbC,EAAAA,UAAY,uDACZC,EAAAA,OAAS,uDACTC,EAAAA,aAAe,uDACfC,EAAAA,qBAAuB,uDACvBC,EAAAA,uBAAyB,uDACzBC,EAAAA,UAAY,uDACZnG,EAAAA,WAAa,uDACboG,EAAAA,0BAA4B,uDAC5BC,EAAAA,uBAAyB,uDACzBC,EAAAA,OAAS,uDACTC,EAAAA,QAAU,uDACVC,EAAAA,kBAAoB,uDACpBC,EAAAA,cAAgB,uDAChBC,EAAAA,SAAW,uDACXC,EAAAA,gBAAkB,uDAClBC,EAAAA,wBAA0B,uDAC1BC,EAAAA,YAAc,uDACdC,EAAAA,cAAgB,0BAChBC,EAAAA,YAAc,wBACdC,EAAAA,eAAiB,uDACjBC,EAAAA,+BAAiC,uDACjCC,EAAAA,6BAA+B,uDAC/BC,EAAAA,2BAA6B,uDAC7BC,EAAAA,6BAA+B,uDAC/BC,EAAAA,mBAAqB,uDACrBC,EAAAA,qBAAuB,uDACvBC,EAAAA,oBAAsB,uDACtBC,EAAAA,sBAAwB,uDACxBC,EAAAA,SAAW,qBACXC,EAAAA,wBAA0B,oCAC1BC,EAAAA,4BAA8B,uDAC9BC,EAAAA,eAAiB,2BACjBC,EAAAA,iBAAmB,uDACnBC,EAAAA,iBAAmB,uDACnBC,EAAAA,IAAM,uDACNC,EAAAA,aAAe,uDACf1S,EAAAA,IAAM,uDACNC,EAAAA,QAAU,uDACV0S,EAAAA,mBAAqB,uDACrBC,EAAAA,mBAAqB,uDACrBC,EAAAA,UAAY,uDACZC,EAAAA,qBAAuB,uDACvBC,EAAAA,UAAY,uDACZC,EAAAA,MAAQ,uDAIRC,EAAAA,8BAAgC,uDAChCC,EAAAA,YAAc,uDACdC,EAAAA,gBAAkB,uDAClBhT,EAAAA,cAAgB,uDAChBiT,EAAAA,aAAe,uDACfC,EAAAA,YAAc,uDACdC,EAAAA,iBAAmB,uDACnBC,EAAAA,4BAA8B,uDAC9BC,EAAAA,WAAa,uDACbC,EAAAA,eAAiB,uDACjBC,EAAAA,mBAAqB,uDACrBC,EAAAA,kBAAoB,uDACpBC,EAAAA,YAAc,uDACdC,EAAAA,iBAAmB,uDACnBC,EAAAA,gBAAkB,uDAClBC,EAAAA,gBAAkB,uDAClBC,EAAAA,aAAe,uDACfC,EAAAA,eAAiB,uDACjBhgB,EAAAA,QAAU,uDACVigB,EAAAA,kBAAoB,uDACpBC,EAAAA,WAAa,uDACb5uB,EAAAA,SAAW,uDACX6uB,EAAAA,gBAAkB,uDAClBC,EAAAA,2BAA6B,uDAC7BC,EAAAA,yBAA2B,uDAC3BC,EAAAA,eAAiB,uDACjBrU,EAAAA,QAAU,uDACVsU,EAAAA,cAAgB,uDAChBxjB,EAAAA,mBAAqB,uDACrBa,EAAAA,oCAAsC,uDACtC2Y,EAAAA,aAAe,uDACfiK,EAAAA,OAAS,uDACTC,EAAAA,WAAa,uDACbC,EAAAA,WAAa,uDACb7nB,EAAAA,aAAe,uDACf8nB,EAAAA,YAAc,uDACdC,EAAAA,IAAM,uDACNC,EAAAA,MAAQ,uDACRC,EAAAA,6BAA+B,uDAC/B5zB,EAAAA,IAAM,uDACN6zB,EAAAA,IAAM,uDACNC,EAAAA,iBAAmB,uDACnBC,EAAAA,oBAAsB,uDACtBC,EAAAA,MAAQ,uDACRC,EAAAA,yBAA2B,uDAC3BC,EAAAA,6BAA+B,uDAC/BC,EAAAA,YAAc,uDACdC,EAAAA,wCAA0C,uDAC1CC,EAAAA,yBAA2B,uDAC3BC,EAAAA,+BAAiC,uDACjCC,EAAAA,WAAa,uDACbC,EAAAA,iBAAmB,uDACnBC,EAAAA,sBAAwB,uDACxBp2B,EAAAA,SAAW,uDACXq2B,EAAAA,0BAA4B,uDAC5BC,EAAAA,WAAa,uDACbC,EAAAA,KAAO,uDACPC,EAAAA,WAAa,uDACbC,EAAAA,mCAAqC,uDACrCC,EAAAA,uCAAyC,uDACzCC,EAAAA,qBAAuB,uDACvBC,EAAAA,gBAAkB,uDAClBC,EAAAA,kBAAoB,uDACpBC,EAAAA,SAAW,qBACXC,EAAAA,kBAAoB,uDACpBC,EAAAA,YAAc,wBACdC,EAAAA,+BAAiC,uDACjCC,EAAAA,uBAAyB,uDACzBC,EAAAA,6BAA+B,uDAC/BC,EAAAA,oCAAsC,uDACtCC,EAAAA,oCAAsC,uDACtCC,EAAAA,oCAAsC,uDACtCC,EAAAA,SAAW,uDACXC,EAAAA,qBAAuB,uDACvBC,EAAAA,UAAY,uDACZC,EAAAA,oCAAsC,uDACtCC,EAAAA,4BAA8B,uDAC9BC,EAAAA,sCAAwC,uDACxCC,EAAAA,uBAAyB,uDACzBC,EAAAA,8BAAgC,uDAChCC,EAAAA,8BAAgC,uDAChCC,EAAAA,2CAA6C,uDAC7CC,EAAAA,8BAAgC,uDAChCjjC,EAAAA,2BAA6B,uDAC7BkjC,EAAAA,qCAAuC,uDACvCC,EAAAA,mCAAqC,uDACrCC,EAAAA,+BAAiC,uDACjCC,EAAAA,6BAA+B,uDAC/BC,EAAAA,aAAe,uDACfC,EAAAA,cAAgB,uDAChBC,EAAAA,6BAA+B,uDAC/BC,EAAAA,0BAA4B,uDAC5BC,EAAAA,mBAAqB,+BACrBC,EAAAA,gBAAkB,4BAClB9nB,EAAAA,kBAAoB,8BACpB+nB,EAAAA,oCAAsC,gDACtCC,EAAAA,+BAAiC,2CACjCC,EAAAA,gBAAkB,uDAClBC,EAAAA,+BAAiC,uDACjCC,EAAAA,0BAA4B,uDAC5BC,EAAAA,uBAAyB,uDACzBC,EAAAA,8BAAgC,0CAChCC,EAAAA,MAAQ,uDACRC,EAAAA,QAAU,uDACV3a,EAAAA,OAAS,uDACT4a,EAAAA,aAAe,uDACfC,EAAAA,cAAgB,0BAChBC,EAAAA,QAAU,uDACVC,EAAAA,cAAgB,uDAChBC,EAAAA,uBAAyB,uDACzBC,EAAAA,cAAgB,uDAChBC,EAAAA,MAAQ,uDACRC,EAAAA,sBAAwB,uDACxBC,EAAAA,SAAW,uDACXC,EAAAA,0BAA4B,sCAC5BC,EAAAA,mBAAqB,+BACrBC,EAAAA,4BAA8B,wCAC9BC,EAAAA,+BAAiC,2CACjCC,EAAAA,0BAA4B,sCAC5BC,EAAAA,YAAc,uDACdppB,EAAAA,aAAe,yBACfqpB,EAAAA,YAAc,wBACdC,EAAAA,8BAAgC,0CAChCC,EAAAA,qBAAuB,uDACvBC,EAAAA,iCAAmC,6CACnCC,EAAAA,gCAAkC,4CAClCC,EAAAA,aAAe,uDACfC,EAAAA,SAAW,uDACXC,EAAAA,mBAAqB,uDACrBx2B,EAAAA,gBAAkB,uDAClBy2B,EAAAA,YAAc,wBACdC,EAAAA,UAAY,uDACZC,EAAAA,wBAA0B,uDAC1BC,EAAAA,eAAiB,uDACjBnsB,EAAAA,uBAAyB,uDACzBosB,EAAAA,gBAAkB,uDAClBC,EAAAA,iBAAmB,uDACnBC,EAAAA,4CAA8C,uDAC9CC,EAAAA,YAAc,uDACdC,EAAAA,WAAa,uDACblc,EAAAA,QAAU,uDACVmc,EAAAA,eAAiB,uDACjBC,EAAAA,aAAe,uDACfC,EAAAA,cAAgB,0BAChBC,EAAAA,YAAc,uDACdC,EAAAA,UAAY,uDACZC,EAAAA,UAAY,uDACZC,EAAAA,wCAA0C,uDAC1CC,EAAAA,YAAc,uDACdC,EAAAA,WAAa,uDACbC,EAAAA,eAAiB,uDACjBC,EAAAA,oBAAsB,uDACtBC,EAAAA,uBAAyB,uDACzBC,EAAAA,0BAA4B,uDAC5BC,EAAAA,gBAAkB,uDAClBn4B,EAAAA,OAAS,uDACTo4B,EAAAA,8BAAgC,uDAChCC,EAAAA,yCAA2C,uDAC3CC,EAAAA,mCAAqC,uDACrCC,EAAAA,mBAAqB,uDACrBC,EAAAA,0BAA4B,sCAC5BC,EAAAA,+CAAiD,uDACjDC,EAAAA,0DAA4D,sEAC5DC,EAAAA,qBAAuB,uDACvBC,EAAAA,iBAAmB,uDACnBC,EAAAA,oBAAsB,uDACtBC,EAAAA,aAAe,uDACfC,EAAAA,6BAA+B,uDAC/BC,EAAAA,kCAAoC,uDACpCC,EAAAA,sBAAwB,uDACxBC,EAAAA,QAAU,uDACVC,EAAAA,cAAgB,0BAChBC,EAAAA,eAAiB,2BACjBC,EAAAA,gBAAkB,uDAClBC,EAAAA,kBAAoB,uDACpBC,EAAAA,2BAA6B,uDAC7BC,EAAAA,kCAAoC,uDACpCprC,EAAAA,iBAAmB,uDACnB+V,EAAAA,QAAU,uDACVs1B,EAAAA,sCAAwC,uDACxC1sB,EAAAA,oBAAsB,gCACtB2sB,EAAAA,6BAA+B,uDAC/BC,EAAAA,OAAS,uDACTC,EAAAA,kBAAoB,8BACpBC,EAAAA,QAAU,uDACVC,EAAAA,UAAY,sBACZC,EAAAA,SAAW,uDACXC,EAAAA,yBAA2B,uDAC3BC,EAAAA,+BAAiC,2CACjCC,EAAAA,0BAA4B,uDAC5BC,EAAAA,uBAAyB,uDACzBC,EAAAA,sBAAwB,uDACxBC,EAAAA,4BAA8B,uDAC9Bpf,EAAAA,KAAO,uDACPqf,EAAAA,mBAAqB,uDACrB32B,EAAAA,kBAAoB,8BACpB42B,EAAAA,2BAA6B,uDAC7BC,EAAAA,yBAA2B,uDAC3BC,EAAAA,yBAA2B,uDAC3BC,EAAAA,eAAiB,2BACjBC,EAAAA,SAAW,uDACXC,EAAAA,sBAAwB,uDACxBC,EAAAA,WAAa,uDACbC,EAAAA,wBAA0B,oCAC1BC,EAAAA,mBAAqB,+BACrBC,EAAAA,iBAAmB,uDACnBC,EAAAA,kBAAoB,uDACpBC,EAAAA,eAAiB,uDACjBC,EAAAA,YAAc,uDACdltC,EAAAA,gBAAkB,uDAClBmtC,EAAAA,kBAAoB,uDACpBC,EAAAA,8BAAgC,uDAChCC,EAAAA,cAAgB,uDAChBC,EAAAA,kBAAoB,uDACpBC,EAAAA,mBAAqB,uDACrBC,EAAAA,OAAS,uDACTC,EAAAA,UAAY,sBACZC,EAAAA,qBAAuB,iCACvB9b,EAAAA,WAAa,uBACb+b,EAAAA,WAAa,uBACbC,EAAAA,UAAY,sBACZhhB,EAAAA,MAAQ,uDACRihB,EAAAA,eAAiB,uDACjBC,EAAAA,GAAK,uDACLC,EAAAA,OAAS,uDACTC,EAAAA,kCAAoC,8CACpCC,EAAAA,iCAAmC,6CACnCC,EAAAA,kBAAoB,uDACpBC,EAAAA,eAAiB,uDACjBC,EAAAA,gCAAkC,uDAClCC,EAAAA,iCAAmC,uDACnCC,EAAAA,iCAAmC,uDACnCC,EAAAA,iBAAmB,6BACnBC,EAAAA,0BAA4B,sCAC5BC,EAAAA,oBAAsB,uDACtBC,EAAAA,IAAM,uDACNC,EAAAA,KAAO,iBACPtrF,EAAAA,WAAa,uBACburF,EAAAA,YAAc,uDACdC,EAAAA,KAAO,uDACPC,EAAAA,MAAQ,uDACRC,EAAAA,wBAA0B,uDAC1BC,EAAAA,mBAAqB,uDACrBC,EAAAA,eAAiB,uDACjBC,EAAAA,oBAAsB,uDACtBC,EAAAA,wBAA0B,uDAC1BC,EAAAA,SAAW,uDACXC,EAAAA,yCAA2C,uDAC3CC,EAAAA,qDAAuD,uDACvDC,EAAAA,sDAAwD,uDACxDr9B,EAAAA,YAAc,uDACdE,EAAAA,oBAAsB,uDACtBo9B,EAAAA,2BAA6B,uCAC7BC,EAAAA,gBAAkB,uDAClBC,EAAAA,+BAAiC,uDACjCC,EAAAA,0BAA4B,uDAC5BC,EAAAA,qBAAuB,iCACvBC,EAAAA,UAAY,uDACZC,EAAAA,WAAa,uDACbC,EAAAA,aAAe,uDACfC,EAAAA,SAAW,qBACXC,EAAAA,yBAA2B,uDAC3BC,EAAAA,wBAA0B,uDAC1BC,EAAAA,qBAAuB,uDACvBC,EAAAA,WAAa,uBACbC,EAAAA,gBAAkB,uDAClBC,EAAAA,qBAAuB,uDACvBC,EAAAA,+BAAiC,uDACjCC,EAAAA,0BAA4B,uDAC5BC,EAAAA,uBAAyB,uDACzBC,EAAAA,eAAiB,uDACjBC,EAAAA,aAAe,uDACfC,EAAAA,SAAW,uDACXC,EAAAA,WAAa,uBACbC,EAAAA,aAAe,yBACfC,EAAAA,iBAAmB,uDACnBC,EAAAA,oBAAsB,uDACtBp7B,EAAAA,iBAAmB,6BACnBq7B,EAAAA,qBAAuB,uDACvBC,EAAAA,oBAAsB,uDACtBlmB,EAAAA,uBAAyB,mCACzBmmB,EAAAA,iBAAmB,6BACnBC,EAAAA,YAAc,uDACdC,EAAAA,uBAAyB,uDACzBC,EAAAA,iCAAmC,6CACnCC,EAAAA,iCAAmC,6CACnCC,EAAAA,gBAAkB,4BAClBC,EAAAA,0BAA4B,uDAC5BC,EAAAA,yBAA2B,uDAC3BC,EAAAA,mBAAqB,+BACrBC,EAAAA,oBAAsB,uDACtBC,EAAAA,cAAgB,uDAChBC,EAAAA,UAAY,sBACZC,EAAAA,OAAS,uDACTC,EAAAA,oBAAsB,uDACtBC,EAAAA,SAAW,uDACXC,EAAAA,MAAQ,uDACRC,EAAAA,kBAAoB,8BACpBC,EAAAA,0BAA4B,sCAC5BC,EAAAA,IAAM,gBACNC,EAAAA,gBAAkB,4BAClBC,EAAAA,aAAe,yBACfC,EAAAA,WAAa,uDACb38B,EAAAA,QAAU,oBACV48B,EAAAA,SAAW,uDACXC,EAAAA,6BAA+B,uDAC/BC,EAAAA,UAAY,uDACZh7C,EAAAA,OAAS,uDACTM,EAAAA,MAAQ,uDACRE,EAAAA,WAAa,uDACby6C,EAAAA,iBAAmB,6BACnBC,EAAAA,mCAAqC,uDACrCC,EAAAA,UAAY,uDACZC,EAAAA,GAAK,eACLC,EAAAA,WAAa,uBACbC,EAAAA,6BAA+B,uDAC/BC,EAAAA,iBAAmB,6BACnBC,EAAAA,gBAAkB,uDAClBC,EAAAA,kBAAoB,uDACpBC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,8BAAgC,0CAChCC,EAAAA,eAAiB,uDACjBC,EAAAA,IAAM,uDACNC,EAAAA,IAAM,uDACNp9B,EAAAA,kBAAoB,uDACpBq9B,EAAAA,KAAO,uDACPC,EAAAA,aAAe,uDACfC,EAAAA,cAAgB,uDAChBC,EAAAA,eAAiB,uDACjBC,EAAAA,YAAc,uDACdC,EAAAA,cAAgB,uDAChBC,EAAAA,mBAAqB,uDACrBC,EAAAA,eAAiB,uDACjBC,EAAAA,OAAS,uDACTC,EAAAA,OAAS,uDACTC,EAAAA,SAAW,uDACXjhC,EAAAA,kBAAoB,uDACpBV,EAAAA,gBAAkB,uDAClB4hC,EAAAA,uBAAyB,uDACzBC,EAAAA,kBAAoB,uDACpBC,EAAAA,iBAAmB,uDACnBC,EAAAA,yBAA2B,uDAC3BC,EAAAA,GAAK,uDACLC,EAAAA,sBAAwB,uDACxBC,EAAAA,KAAO,uDACPC,EAAAA,UAAY,uDACZC,EAAAA,IAAM,uDACNC,EAAAA,WAAa,uDACbC,EAAAA,wBAA0B,uDAC1BC,EAAAA,+BAAiC,uDACjCC,EAAAA,yBAA2B,uDAC3BC,EAAAA,eAAiB,uDACjBC,EAAAA,uBAAyB,uDACzBnjB,EAAAA,YAAc,uDACdojB,EAAAA,YAAc,uDACdrjB,EAAAA,OAAS,uDACTsjB,EAAAA,oBAAsB,uDACtBC,EAAAA,+BAAiC,uDACjCC,EAAAA,qCAAuC,uDACvCj6C,EAAAA,mBAAqB,uDACrBk6C,EAAAA,iBAAmB,uDACnBC,EAAAA,yBAA2B,uDAC3BxjB,EAAAA,WAAa,uDACbyjB,EAAAA,YAAc,uDACdC,EAAAA,+BAAiC,uDACjCC,EAAAA,+BAAiC,uDACjCC,EAAAA,sBAAwB,uDACxBC,EAAAA,mBAAqB,uDACrBC,EAAAA,6BAA+B,uDAC/BC,EAAAA,kCAAoC,uDACpCC,EAAAA,uCAAyC,uDACzCC,EAAAA,gCAAkC,uDAClCrlC,EAAAA,sBAAwB,uDACxBslC,EAAAA,oBAAsB,uDACtBC,EAAAA,uBAAyB,uDACzBC,EAAAA,8BAAgC,uDAChCC,EAAAA,4BAA8B,uDAC9BC,EAAAA,oBAAsB,uDACtBC,EAAAA,UAAY,uDACZC,EAAAA,kBAAoB,uDACpBC,EAAAA,UAAY,uDACZC,EAAAA,qBAAuB,uDACvBC,EAAAA,eAAiB,uDACjB3mB,EAAAA,mBAAqB,uDACrBrgB,EAAAA,SAAW,uDACXC,EAAAA,iBAAmB,uDACnBgnC,EAAAA,KAAO,uDACP9/B,EAAAA,aAAe,uDACf1M,EAAAA,QAAU,uDACVysC,EAAAA,qBAAuB,uDACvBC,EAAAA,gBAAkB,uDAClBlpB,EAAAA,MAAQ,uDACRmpB,EAAAA,qBAAuB,uDACvBC,EAAAA,qBAAuB,uDACvBC,EAAAA,cAAgB,uDAChBC,EAAAA,QAAU,uDACVC,EAAAA,OAAS,uDACTC,EAAAA,oBAAsB,uDACtBC,EAAAA,QAAU,uDACVpoC,EAAAA,QAAU,uDACVhG,EAAAA,UAAY,uDACZquC,EAAAA,aAAe,uDACfC,EAAAA,oBAAsB,uDACtBC,EAAAA,mBAAqB,uDACrBC,EAAAA,kBAAoB,uDACpBC,EAAAA,YAAc,uDACdC,EAAAA,eAAiB,uDACjBC,EAAAA,oCAAsC,uDACtCC,EAAAA,2BAA6B,uDAC7BC,EAAAA,+BAAiC,uDACjCC,EAAAA,oCAAsC,uDACtCC,EAAAA,mCAAqC,uDACrCC,EAAAA,oCAAsC,uDACtCC,EAAAA,gCAAkC,uDAClCC,EAAAA,gCAAkC,uDAClCC,EAAAA,sCAAwC,uDACxCC,EAAAA,kCAAoC,uDACpCC,EAAAA,6BAA+B,uDAC/BC,EAAAA,sCAAwC,uDACxCC,EAAAA,iCAAmC,uDACnCC,EAAAA,+CAAiD,uDACjDC,EAAAA,+CAAiD,uDACjDC,EAAAA,8CAAgD,uDAChDC,EAAAA,kBAAoB,uDACpBC,EAAAA,kBAAoB,uDACpBC,EAAAA,4BAA8B,uDAC9BC,EAAAA,wBAA0B,uDAC1BC,EAAAA,6BAA+B,uDAC/BC,EAAAA,WAAa,uDACbC,EAAAA,YAAc,uDACdC,EAAAA,cAAgB,uDAChBC,EAAAA,OAAS,uDACTC,EAAAA,SAAW,uDACXC,EAAAA,iBAAmB,uDACnBC,EAAAA,YAAc,uDACdC,EAAAA,qCAAuC,uDACvCnsB,EAAAA,aAAe,uDACfosB,EAAAA,kBAAoB,uDACpBC,EAAAA,aAAe,uDACfC,EAAAA,eAAiB,uDACjBC,EAAAA,wCAA0C,uDAC1CC,EAAAA,oCAAsC,uDACtCC,EAAAA,4BAA8B,uDAC9BC,EAAAA,mBAAqB,uDACrBC,EAAAA,8CAAgD,uDAChDC,EAAAA,uBAAyB,uDACzBC,EAAAA,iCAAmC,uDACnCC,EAAAA,sBAAwB,uDACxBC,EAAAA,iBAAmB,uDACnBC,EAAAA,gBAAkB,uDAClBC,EAAAA,UAAY,uDACZC,EAAAA,WAAa,uDACb9oB,EAAAA,MAAQ,uDACR+oB,EAAAA,cAAgB,uDAChBC,EAAAA,gBAAkB,uDAClB56B,EAAAA,iBAAmB,uDACnB66B,EAAAA,GAAK,uDACLC,EAAAA,YAAc,uDACdC,EAAAA,eAAiB,uDACjBC,EAAAA,iBAAmB,uDACnBC,EAAAA,cAAgB,uDAChBnjD,EAAAA,UAAY,uDACZ6nB,EAAAA,eAAiB,uDACjB9K,EAAAA,cAAgB,uDAChBqmC,EAAAA,2BAA6B,uDAC7BC,EAAAA,qBAAuB,uDACvB3pC,EAAAA,wBAA0B,uDAC1B4pC,EAAAA,QAAU,uDACVC,EAAAA,SAAW,uDACXC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,cAAgB,uDAChBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,kBAAoB,uDACpBC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,cAAgB,uDAChBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,kBAAoB,uDACpBC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,aAAe,uDACfC,EAAAA,cAAgB,uDAChBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uDACjBC,EAAAA,eAAiB,uD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CAlB,EACE,yBACA8hF,sBACE4hF,GACAL,EAAiBliK,sBACnB,CACF,EACAnB,EACE,yBACA8hF,sBACE6hF,GACAN,EAAiBjiK,sBACnB,CACF,EACF,EAEF,CACEpB,EACAqjK,EAAiBliK,uBACjBkiK,EAAiBniK,aACjBmiK,EAAiBjiK,sBAAsB,CAE3C,EAEMwiK,EAAsB/yN,yBACzBpuJ,IAWK,CACE,KAAA,CACJohX,mBAAAA,GACAC,oBAAAA,GACAC,sBAAAA,GACAC,qCAAAA,GACAC,6CAAAA,GACAC,6CAAAA,GACAC,kCAAAA,GACAC,6BAAAA,GACAC,kDAAAA,GACAC,sCAAAA,EACE7hX,EAAAA,GAEJ,GACEohX,KAAuB5qX,QACvB6qX,KAAwB7qX,QACxB8qX,KAA0B9qX,QAC1B+qX,KAAyC/qX,QACzCgrX,KAAiDhrX,QACjDirX,KAAiDjrX,QACjDkrX,KAAsClrX,QACtCmrX,KAAiCnrX,QACjCorX,KAAsDprX,QACtDqrX,KAA0CrrX,OAC1C,CACMsrX,MAAAA,GACJN,GACI,GACAD,GACAQ,GACJR,GACI,GACAC,GAENjkK,EACE,kBACA8hF,sBACE+hF,GACAP,EAAoB/iK,eACtB,CACF,EACAP,EACE,mBACA8hF,sBACEgiF,GACAR,EAAoB9iK,gBACtB,CACF,EACAR,EACE,qBACA8hF,sBACEiiF,GACAT,EAAoB7iK,kBACtB,CACF,EACAT,EACE,oCACA8hF,sBACEyiF,GACAjB,EAAoB/Y,iCACtB,CACF,EACAvqJ,EACE,4CACA8hF,sBACEmiF,GACAX,EAAoB5iK,yCACtB,CACF,EACAV,EACE,4CACA8hF,sBACE0iF,GACAlB,EAAoBjZ,yCACtB,CACF,EACArqJ,EACE,iCACA8hF,sBACEqiF,GACAb,EAAoB9Y,8BACtB,CACF,EACAxqJ,EACE,4BACA8hF,sBACEsiF,GACAd,EAAoBT,yBACtB,CACF,EACA7iK,EACE,iDACA8hF,sBACEuiF,GACAf,EAAoBhZ,8CACtB,CACF,EACAtqJ,EACE,qCACA8hF,sBACEkgF,6BAA6BsC,EAAqC,EAClEhB,EAAoB3iK,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"}